summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGriffinR <griffin.richards@comcast.net>2019-09-26 15:02:38 -0400
committerGitHub <noreply@github.com>2019-09-26 15:02:38 -0400
commit1016b239186097361ea20f2f91adf3932026f40c (patch)
tree840a0f28046d3c66fcaf1c2bb8ab3228386a3a8a /src
parentbb236b490d99fef02ed172e7ca86f6c70ef09527 (diff)
parent208e1c968959c781562f0b94c03368385ce7012c (diff)
Merge branch 'master' into rename-tablecmds
Diffstat (limited to 'src')
-rw-r--r--src/apprentice.c12
-rw-r--r--src/battle_ai_script_commands.c20
-rw-r--r--src/battle_ai_switch_items.c2
-rw-r--r--src/battle_anim.c2
-rw-r--r--src/battle_anim_effects_1.c20
-rwxr-xr-xsrc/battle_anim_effects_2.c8
-rwxr-xr-xsrc/battle_anim_effects_3.c8
-rw-r--r--src/battle_controller_player.c2
-rw-r--r--src/battle_controllers.c22
-rw-r--r--src/battle_factory.c4
-rw-r--r--src/battle_gfx_sfx_util.c2
-rw-r--r--src/battle_interface.c2
-rw-r--r--src/battle_main.c22
-rw-r--r--src/battle_pike.c2
-rw-r--r--src/battle_pyramid.c2
-rw-r--r--src/battle_script_commands.c150
-rw-r--r--src/battle_setup.c163
-rw-r--r--src/battle_tower.c10
-rw-r--r--src/battle_transition.c5
-rw-r--r--src/battle_util.c22
-rw-r--r--src/berry.c1
-rw-r--r--src/berry_blender.c1
-rw-r--r--src/berry_tag_screen.c5
-rw-r--r--src/bg.c69
-rw-r--r--src/clock.c2
-rw-r--r--src/contest.c8
-rw-r--r--src/contest_painting.c2
-rw-r--r--src/credits.c475
-rw-r--r--src/crt0.s199
-rw-r--r--src/data/battle_frontier/battle_frontier_exchange_corner.h99
-rw-r--r--src/data/battle_frontier/trainer_hill.h9750
-rw-r--r--src/data/decoration/icon.h245
-rwxr-xr-xsrc/data/field_event_obj/event_object_graphics_info_pointers.h478
-rw-r--r--src/data/graphics/decorations.h168
-rw-r--r--src/data/lilycove_lady.h470
-rw-r--r--src/data/pokemon/tutor_learnsets.h11456
-rw-r--r--src/data/script_menu.h1006
-rwxr-xr-xsrc/data/wild_encounters.json26
-rwxr-xr-xsrc/data/wild_encounters.json.txt11
-rw-r--r--src/daycare.c282
-rw-r--r--src/decoration.c4
-rw-r--r--src/diploma.c2
-rw-r--r--src/easy_chat.c30
-rw-r--r--src/egg_hatch.c40
-rw-r--r--src/electric.c4
-rwxr-xr-xsrc/ereader_helpers.c416
-rwxr-xr-xsrc/ereader_screen.c6
-rw-r--r--src/event_obj_lock.c4
-rw-r--r--src/field_specials.c1669
-rw-r--r--src/fight.c4
-rw-r--r--src/fire.c6
-rw-r--r--src/flying.c2
-rw-r--r--src/frontier_util.c8
-rw-r--r--src/ghost.c2
-rw-r--r--src/hall_of_fame.c2
-rw-r--r--src/hof_pc.c2
-rw-r--r--src/ice.c6
-rw-r--r--src/international_string_util.c4
-rwxr-xr-xsrc/item_menu.c24
-rw-r--r--src/libagbsyscall.s116
-rw-r--r--src/libgcnmultiboot.s550
-rw-r--r--src/lilycove_lady.c947
-rw-r--r--src/m4a_1.s1934
-rw-r--r--src/match_call.c2
-rw-r--r--src/mauville_old_man.c2
-rw-r--r--src/mon_markings.c8
-rw-r--r--src/mossdeep_gym.c2
-rw-r--r--src/move_relearner.c2
-rw-r--r--src/naming_screen.c8
-rw-r--r--src/new_game.c4
-rw-r--r--src/option_menu.c53
-rw-r--r--src/overworld.c6
-rwxr-xr-xsrc/party_menu.c2
-rw-r--r--src/pokeblock.c2
-rw-r--r--src/pokedex.c54
-rw-r--r--src/pokemon.c68
-rw-r--r--src/pokemon_storage_system.c13
-rw-r--r--src/pokemon_summary_screen.c44
-rw-r--r--src/pokenav_match_call_data.c116
-rwxr-xr-xsrc/pokenav_unk_3.c14
-rw-r--r--src/record_mixing.c4
-rw-r--r--src/recorded_battle.c14
-rw-r--r--src/region_map.c11
-rw-r--r--src/roamer.c2
-rw-r--r--src/rock.c2
-rw-r--r--src/scrcmd.c33
-rw-r--r--src/script_menu.c1284
-rw-r--r--src/script_movement.c174
-rwxr-xr-xsrc/script_pokemon_util_80F87D8.c16
-rw-r--r--src/secret_base.c6
-rw-r--r--src/string_util.c28
-rw-r--r--src/strings.c301
-rw-r--r--src/trade.c14
-rw-r--r--src/trader.c2
-rw-r--r--src/trainer_hill.c96
-rw-r--r--src/tv.c56
-rw-r--r--src/wild_encounter.c60
97 files changed, 18732 insertions, 14786 deletions
diff --git a/src/apprentice.c b/src/apprentice.c
index 4ad295e1a..113b22f6e 100644
--- a/src/apprentice.c
+++ b/src/apprentice.c
@@ -1100,7 +1100,7 @@ void ResetAllApprenticeData(void)
gSaveBlock2Ptr->apprentices[i].lvlMode = 0;
gSaveBlock2Ptr->apprentices[i].number = 0;
gSaveBlock2Ptr->apprentices[i].field_1 = 0;
- for (j = 0; j < 4; j++)
+ for (j = 0; j < TRAINER_ID_LENGTH; j++)
gSaveBlock2Ptr->apprentices[i].playerId[j] = 0;
gSaveBlock2Ptr->apprentices[i].language = gGameLanguage;
gSaveBlock2Ptr->apprentices[i].checksum = 0;
@@ -1410,7 +1410,7 @@ static void GetLatestLearnedMoves(u16 species, u16 *moves)
static u16 sub_81A0284(u8 arg0, u8 speciesTableId, u8 arg2)
{
- u16 moves[4];
+ u16 moves[MAX_MON_MOVES];
u8 i, count;
if (PLAYER_APPRENTICE.field_B1_1 < 3)
@@ -1559,8 +1559,8 @@ static void CreateMenuWithAnswers(u8 arg0)
pixelWidth = width;
}
- width = convert_pixel_width_to_tile_width(pixelWidth);
- left = sub_80E2D5C(left, width);
+ width = ConvertPixelWidthToTileWidth(pixelWidth);
+ left = ScriptMenu_AdjustLeftCoordFromWidth(left, width);
windowId = CreateAndShowWindow(left, top, width, count * 2);
SetStandardWindowBorderStyle(windowId, 0);
@@ -2063,7 +2063,7 @@ static void sub_81A1370(void)
r10 = 0xFFFF;
r9 = -1;
- for (i = 1; i < 4; i++)
+ for (i = 1; i < TRAINER_ID_LENGTH; i++)
{
if (GetTrainerId(gSaveBlock2Ptr->apprentices[i].playerId) == GetTrainerId(gSaveBlock2Ptr->playerTrainerId)
&& gSaveBlock2Ptr->apprentices[i].number < r10)
@@ -2092,7 +2092,7 @@ static void sub_81A1438(void)
gSaveBlock2Ptr->apprentices[0].number++;
sub_81A0390(gSaveBlock2Ptr->apprentices[0].field_1);
- for (i = 0; i < 4; i++)
+ for (i = 0; i < TRAINER_ID_LENGTH; i++)
gSaveBlock2Ptr->apprentices[0].playerId[i] = gSaveBlock2Ptr->playerTrainerId[i];
StringCopy(gSaveBlock2Ptr->apprentices[0].playerName, gSaveBlock2Ptr->playerName);
diff --git a/src/battle_ai_script_commands.c b/src/battle_ai_script_commands.c
index 6e438878b..c9a6a6606 100644
--- a/src/battle_ai_script_commands.c
+++ b/src/battle_ai_script_commands.c
@@ -298,7 +298,7 @@ void BattleAI_HandleItemUseBeforeAISetup(u8 defaultScoreMoves)
)
)
{
- for (i = 0; i < 4; i++)
+ for (i = 0; i < MAX_TRAINER_ITEMS; i++)
{
if (gTrainers[gTrainerBattleOpponent_A].items[i] != 0)
{
@@ -397,8 +397,8 @@ u8 BattleAI_ChooseMoveOrAction(void)
static u8 ChooseMoveOrAction_Singles(void)
{
- u8 currentMoveArray[4];
- u8 consideredMoveArray[4];
+ u8 currentMoveArray[MAX_MON_MOVES];
+ u8 consideredMoveArray[MAX_MON_MOVES];
u8 numOfBestMoves;
s32 i;
@@ -452,11 +452,11 @@ static u8 ChooseMoveOrAction_Doubles(void)
s32 i;
s32 j;
s32 scriptsToRun;
- s16 bestMovePointsForTarget[4];
- s8 mostViableTargetsArray[4];
- u8 actionOrMoveIndex[4];
- u8 mostViableMovesScores[4];
- u8 mostViableMovesIndices[4];
+ s16 bestMovePointsForTarget[MAX_BATTLERS_COUNT];
+ s8 mostViableTargetsArray[MAX_BATTLERS_COUNT];
+ u8 actionOrMoveIndex[MAX_BATTLERS_COUNT];
+ u8 mostViableMovesScores[MAX_MON_MOVES];
+ u8 mostViableMovesIndices[MAX_MON_MOVES];
s32 mostViableTargetsNo;
s32 mostViableMovesNo;
s16 mostMovePoints;
@@ -543,7 +543,7 @@ static u8 ChooseMoveOrAction_Doubles(void)
mostViableTargetsArray[0] = 0;
mostViableTargetsNo = 1;
- for (i = 1; i < MAX_MON_MOVES; i++)
+ for (i = 1; i < MAX_BATTLERS_COUNT; i++)
{
if (mostMovePoints == bestMovePointsForTarget[i])
{
@@ -1167,7 +1167,7 @@ static void Cmd_get_considered_move_power(void)
static void Cmd_get_how_powerful_move_is(void)
{
s32 i, checkedMove;
- s32 moveDmgs[4];
+ s32 moveDmgs[MAX_MON_MOVES];
for (i = 0; sDiscouragedPowerfulMoveEffects[i] != 0xFFFF; i++)
{
diff --git a/src/battle_ai_switch_items.c b/src/battle_ai_switch_items.c
index cd31293f8..6ef359150 100644
--- a/src/battle_ai_switch_items.c
+++ b/src/battle_ai_switch_items.c
@@ -820,7 +820,7 @@ static bool8 ShouldUseItem(void)
}
}
- for (i = 0; i < 4; i++)
+ for (i = 0; i < MAX_TRAINER_ITEMS; i++)
{
u16 item;
const u8 *itemEffects;
diff --git a/src/battle_anim.c b/src/battle_anim.c
index 3cac9f33e..ab1e5ed6a 100644
--- a/src/battle_anim.c
+++ b/src/battle_anim.c
@@ -1841,7 +1841,7 @@ void LaunchBattleAnimation(const u8 *const animsTable[], u16 tableId, bool8 isMo
UpdateOamPriorityInAllHealthboxes(0);
for (i = 0; i < MAX_BATTLERS_COUNT; i++)
{
- if (GetBattlerSide(i) != 0)
+ if (GetBattlerSide(i) != B_SIDE_PLAYER)
gAnimBattlerSpecies[i] = GetMonData(&gEnemyParty[gBattlerPartyIndexes[i]], MON_DATA_SPECIES);
else
gAnimBattlerSpecies[i] = GetMonData(&gPlayerParty[gBattlerPartyIndexes[i]], MON_DATA_SPECIES);
diff --git a/src/battle_anim_effects_1.c b/src/battle_anim_effects_1.c
index b3a67a509..db9057cb4 100644
--- a/src/battle_anim_effects_1.c
+++ b/src/battle_anim_effects_1.c
@@ -2547,7 +2547,7 @@ static void AnimPetalDanceSmallFlowerStep(struct Sprite* sprite)
{
sprite->pos2.x += Sin(sprite->data[5], 8);
if ((u16)(sprite->data[5] - 59) < 5 || (u16)(sprite->data[5] - 187) < 5)
- sprite->oam.matrixNum ^= 0x8; // horizontal flip
+ sprite->oam.matrixNum ^= ST_OAM_HFLIP;
sprite->data[5] += 5;
sprite->data[5] &= 0xFF;
@@ -3560,7 +3560,7 @@ void sub_8100640(struct Sprite* sprite)
else
battler = gBattleAnimTarget;
- if (GetBattlerSide(battler) != 0)
+ if (GetBattlerSide(battler) != B_SIDE_PLAYER)
{
sprite->data[4] = 0;
sprite->data[2] = gBattleAnimArgs[3];
@@ -3731,7 +3731,7 @@ static void sub_81009DC(struct Sprite* sprite)
void sub_81009F8(struct Sprite* sprite)
{
- if (GetBattlerSide(gBattleAnimAttacker) != 0)
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
{
sprite->pos1.x -= gBattleAnimArgs[0];
sprite->pos1.y += gBattleAnimArgs[1];
@@ -3828,7 +3828,7 @@ void sub_8100B88(struct Sprite* sprite)
sprite->pos1.x = a;
sprite->pos1.y = b;
- if (GetBattlerSide(gBattleAnimTarget) == 0)
+ if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER)
sprite->pos1.y += 8;
sprite->callback = AnimSliceStep;
@@ -4380,19 +4380,19 @@ void sub_8101898(struct Sprite* sprite)
{
sprite->pos1.x -= 0x18;
sprite->pos1.y += 0x18;
- sprite->oam.matrixNum = 16;
+ sprite->oam.matrixNum = ST_OAM_VFLIP;
}
else if ((s16)sprite->oam.affineParam == 3)
{
sprite->pos1.x += 0x18;
sprite->pos1.y -= 0x18;
- sprite->oam.matrixNum = 8;
+ sprite->oam.matrixNum = ST_OAM_HFLIP;
}
else
{
sprite->pos1.x += 0x18;
sprite->pos1.y += 0x18;
- sprite->oam.matrixNum = 24;
+ sprite->oam.matrixNum = ST_OAM_HFLIP | ST_OAM_VFLIP;
}
sprite->oam.tileNum = (sprite->oam.tileNum + 16);
@@ -5105,7 +5105,7 @@ void sub_8102844(struct Sprite* sprite)
sprite->data[7] = sprite->pos1.y;
if (IsContest())
{
- sprite->oam.matrixNum = 8;
+ sprite->oam.matrixNum = ST_OAM_HFLIP;
sprite->pos1.x += 40;
sprite->pos1.y += 20;
sprite->data[2] = sprite->pos1.x << 7;
@@ -5130,7 +5130,7 @@ void sub_8102844(struct Sprite* sprite)
sprite->data[3] = -0x1400 / sprite->data[1];
sprite->data[4] = sprite->pos1.y << 7;
sprite->data[5] = 0xA00 / sprite->data[1];
- sprite->oam.matrixNum = 24;
+ sprite->oam.matrixNum = (ST_OAM_HFLIP | ST_OAM_VFLIP);
}
sprite->callback = sub_810296C;
@@ -5387,7 +5387,7 @@ void sub_8102FB8(struct Sprite* sprite)
s16 a;
if (gBattleAnimArgs[0] == 1)
{
- sprite->oam.matrixNum = 8;
+ sprite->oam.matrixNum = ST_OAM_HFLIP;
a = 16;
}
else
diff --git a/src/battle_anim_effects_2.c b/src/battle_anim_effects_2.c
index 65cc55604..1add76bf3 100755
--- a/src/battle_anim_effects_2.c
+++ b/src/battle_anim_effects_2.c
@@ -1479,7 +1479,7 @@ void AnimSonicBoomProjectile(struct Sprite *sprite)
{
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
}
- else if (GetBattlerSide(gBattleAnimAttacker) != 0)
+ else if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
{
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
gBattleAnimArgs[1] = -gBattleAnimArgs[1];
@@ -1609,10 +1609,10 @@ static void sub_8103C0C(u8 taskId)
switch (gTasks[taskId].data[4])
{
case 1:
- sprite->oam.matrixNum |= 24;
+ sprite->oam.matrixNum |= (ST_OAM_HFLIP | ST_OAM_VFLIP);
break;
case 2:
- sprite->oam.matrixNum = 8;
+ sprite->oam.matrixNum = ST_OAM_HFLIP;
break;
}
@@ -1646,7 +1646,7 @@ void sub_8103CF0(u8 taskId)
}
else
{
- if ((gBattlerPositions[gBattleAnimTarget] & 1) == 0)
+ if ((gBattlerPositions[gBattleAnimTarget] & BIT_SIDE) == B_SIDE_PLAYER)
{
gTasks[taskId].data[4] = 1;
gBattleAnimArgs[0] = -gBattleAnimArgs[0];
diff --git a/src/battle_anim_effects_3.c b/src/battle_anim_effects_3.c
index 5d79a9e6b..79b728e61 100755
--- a/src/battle_anim_effects_3.c
+++ b/src/battle_anim_effects_3.c
@@ -1618,7 +1618,7 @@ void sub_815AAA4(struct Sprite *sprite)
if (gBattleAnimArgs[2] == 0)
{
- sprite->oam.matrixNum = 8;
+ sprite->oam.matrixNum = ST_OAM_HFLIP;
sprite->pos2.x = -12;
sprite->data[1] = 2;
}
@@ -4167,7 +4167,7 @@ void AnimSmellingSaltsHand(struct Sprite *sprite)
sprite->pos1.y = GetBattlerSpriteCoord(battler, 3);
if (gBattleAnimArgs[1] == 0)
{
- sprite->oam.matrixNum |= 0x8;
+ sprite->oam.matrixNum |= ST_OAM_HFLIP;
sprite->pos1.x = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_LEFT) - 8;
}
else
@@ -4317,7 +4317,7 @@ void AnimHelpingHandClap(struct Sprite *sprite)
{
if (gBattleAnimArgs[0] == 0)
{
- sprite->oam.matrixNum |= 0x8; // horizontal flip
+ sprite->oam.matrixNum |= ST_OAM_HFLIP;
sprite->pos1.x = 100;
sprite->data[7] = 1;
}
@@ -4545,7 +4545,7 @@ void AnimForesightMagnifyingGlass(struct Sprite *sprite)
}
if (GetBattlerSide(sprite->data[7]) == B_SIDE_OPPONENT)
- sprite->oam.matrixNum = 8; // horizontal flip
+ sprite->oam.matrixNum = ST_OAM_HFLIP;
sprite->oam.priority = GetBattlerSpriteBGPriority(sprite->data[7]);
sprite->oam.objMode = ST_OAM_OBJ_BLEND;
diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c
index b73bfc36f..1be5def47 100644
--- a/src/battle_controller_player.c
+++ b/src/battle_controller_player.c
@@ -664,7 +664,7 @@ u32 sub_8057FBC(void) // unused
static void HandleMoveSwitching(void)
{
- u8 perMovePPBonuses[4];
+ u8 perMovePPBonuses[MAX_MON_MOVES];
struct ChooseMoveStruct moveStruct;
u8 totalPPBonuses;
diff --git a/src/battle_controllers.c b/src/battle_controllers.c
index 4b5bb7a8a..17db0b868 100644
--- a/src/battle_controllers.c
+++ b/src/battle_controllers.c
@@ -64,7 +64,7 @@ void SetUpBattleVarsAndBirchZigzagoon(void)
if (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE)
{
ZeroEnemyPartyMons();
- CreateMon(&gEnemyParty[0], SPECIES_ZIGZAGOON, 2, 32, 0, 0, 0, 0);
+ CreateMon(&gEnemyParty[0], SPECIES_ZIGZAGOON, 2, 32, 0, 0, OT_ID_PLAYER_ID, 0);
i = 0;
SetMonData(&gEnemyParty[0], MON_DATA_HELD_ITEM, &i);
}
@@ -234,16 +234,16 @@ static void InitSinglePlayerBtlControllers(void)
gBattleMainFunc = BeginBattleIntro;
gBattlerControllerFuncs[0] = SetControllerToRecordedPlayer;
- gBattlerPositions[0] = 0;
+ gBattlerPositions[0] = B_POSITION_PLAYER_LEFT;
gBattlerControllerFuncs[1] = SetControllerToOpponent;
- gBattlerPositions[1] = 1;
+ gBattlerPositions[1] = B_POSITION_OPPONENT_LEFT;
gBattlerControllerFuncs[2] = SetControllerToRecordedPlayer;
- gBattlerPositions[2] = 2;
+ gBattlerPositions[2] = B_POSITION_PLAYER_RIGHT;
gBattlerControllerFuncs[3] = SetControllerToOpponent;
- gBattlerPositions[3] = 3;
+ gBattlerPositions[3] = B_POSITION_OPPONENT_RIGHT;
gBattlersCount = MAX_BATTLERS_COUNT;
@@ -524,12 +524,12 @@ static void InitLinkBtlControllers(void)
{
case 0:
case 3:
- gBattlerPositions[gLinkPlayers[i].id] = 0;
+ gBattlerPositions[gLinkPlayers[i].id] = B_POSITION_PLAYER_LEFT;
gBattlerPartyIndexes[gLinkPlayers[i].id] = 0;
break;
case 1:
case 2:
- gBattlerPositions[gLinkPlayers[i].id] = 2;
+ gBattlerPositions[gLinkPlayers[i].id] = B_POSITION_PLAYER_RIGHT;
gBattlerPartyIndexes[gLinkPlayers[i].id] = 3;
break;
}
@@ -544,12 +544,12 @@ static void InitLinkBtlControllers(void)
{
case 0:
case 3:
- gBattlerPositions[gLinkPlayers[i].id] = 0;
+ gBattlerPositions[gLinkPlayers[i].id] = B_POSITION_PLAYER_LEFT;
gBattlerPartyIndexes[gLinkPlayers[i].id] = 0;
break;
case 1:
case 2:
- gBattlerPositions[gLinkPlayers[i].id] = 2;
+ gBattlerPositions[gLinkPlayers[i].id] = B_POSITION_PLAYER_RIGHT;
gBattlerPartyIndexes[gLinkPlayers[i].id] = 3;
break;
}
@@ -561,12 +561,12 @@ static void InitLinkBtlControllers(void)
{
case 0:
case 3:
- gBattlerPositions[gLinkPlayers[i].id] = 1;
+ gBattlerPositions[gLinkPlayers[i].id] = B_POSITION_OPPONENT_LEFT;
gBattlerPartyIndexes[gLinkPlayers[i].id] = 0;
break;
case 1:
case 2:
- gBattlerPositions[gLinkPlayers[i].id] = 3;
+ gBattlerPositions[gLinkPlayers[i].id] = B_POSITION_OPPONENT_RIGHT;
gBattlerPartyIndexes[gLinkPlayers[i].id] = 3;
break;
}
diff --git a/src/battle_factory.c b/src/battle_factory.c
index 6c249bccc..bc47b1fda 100644
--- a/src/battle_factory.c
+++ b/src/battle_factory.c
@@ -415,7 +415,7 @@ static void SetPlayerAndOpponentParties(void)
monLevel,
ivs,
TRUE, gSaveBlock2Ptr->frontier.rentalMons[i].personality,
- 0, 0);
+ OT_ID_PLAYER_ID, 0);
count = 0;
bits = gFacilityTrainerMons[monSetId].evSpread;
@@ -456,7 +456,7 @@ static void SetPlayerAndOpponentParties(void)
monLevel,
ivs,
TRUE, gSaveBlock2Ptr->frontier.rentalMons[i + 3].personality,
- 0, 0);
+ OT_ID_PLAYER_ID, 0);
count = 0;
bits = gFacilityTrainerMons[monSetId].evSpread;
diff --git a/src/battle_gfx_sfx_util.c b/src/battle_gfx_sfx_util.c
index cdd7e8158..de403aec7 100644
--- a/src/battle_gfx_sfx_util.c
+++ b/src/battle_gfx_sfx_util.c
@@ -779,7 +779,7 @@ bool8 BattleInitAllSprites(u8 *state1, u8 *battlerId)
break;
case 4:
InitBattlerHealthboxCoords(*battlerId);
- if (gBattlerPositions[*battlerId] <= 1)
+ if (gBattlerPositions[*battlerId] <= B_POSITION_OPPONENT_LEFT)
DummyBattleInterfaceFunc(gHealthboxSpriteIds[*battlerId], FALSE);
else
DummyBattleInterfaceFunc(gHealthboxSpriteIds[*battlerId], TRUE);
diff --git a/src/battle_interface.c b/src/battle_interface.c
index 922437597..8fabfed68 100644
--- a/src/battle_interface.c
+++ b/src/battle_interface.c
@@ -1536,7 +1536,7 @@ u8 CreatePartyStatusSummarySprites(u8 battlerId, struct HpAndStatus *partyInfo,
if (isOpponent)
{
gSprites[summaryBarSpriteId].pos1.x -= 96;
- gSprites[summaryBarSpriteId].oam.matrixNum = 8;
+ gSprites[summaryBarSpriteId].oam.matrixNum = ST_OAM_HFLIP;
}
else
{
diff --git a/src/battle_main.c b/src/battle_main.c
index 498837e10..e623865f7 100644
--- a/src/battle_main.c
+++ b/src/battle_main.c
@@ -1790,9 +1790,9 @@ static void CB2_HandleStartMultiBattle(void)
gBattleCommunication[SPRITES_INIT_STATE2] = 0;
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
{
- for (id = 0; id < 4 && (gLinkPlayers[id].version & 0xFF) == 3; id++);
+ for (id = 0; id < MAX_LINK_PLAYERS && (gLinkPlayers[id].version & 0xFF) == VERSION_EMERALD; id++);
- if (id == 4)
+ if (id == MAX_LINK_PLAYERS)
gBattleCommunication[MULTIUSE_STATE] = 8;
else
gBattleCommunication[MULTIUSE_STATE] = 10;
@@ -2004,7 +2004,7 @@ static u8 CreateNPCTrainerParty(struct Pokemon *party, u16 trainerNum, bool8 fir
personalityValue += nameHash << 8;
fixedIV = partyData[i].iv * 31 / 255;
- CreateMon(&party[i], partyData[i].species, partyData[i].lvl, fixedIV, TRUE, personalityValue, 2, 0);
+ CreateMon(&party[i], partyData[i].species, partyData[i].lvl, fixedIV, TRUE, personalityValue, OT_ID_RANDOM_NO_SHINY, 0);
for (j = 0; j < MAX_MON_MOVES; j++)
{
@@ -2022,7 +2022,7 @@ static u8 CreateNPCTrainerParty(struct Pokemon *party, u16 trainerNum, bool8 fir
personalityValue += nameHash << 8;
fixedIV = partyData[i].iv * 31 / 255;
- CreateMon(&party[i], partyData[i].species, partyData[i].lvl, fixedIV, TRUE, personalityValue, 2, 0);
+ CreateMon(&party[i], partyData[i].species, partyData[i].lvl, fixedIV, TRUE, personalityValue, OT_ID_RANDOM_NO_SHINY, 0);
SetMonData(&party[i], MON_DATA_HELD_ITEM, &partyData[i].heldItem);
break;
@@ -2036,7 +2036,7 @@ static u8 CreateNPCTrainerParty(struct Pokemon *party, u16 trainerNum, bool8 fir
personalityValue += nameHash << 8;
fixedIV = partyData[i].iv * 31 / 255;
- CreateMon(&party[i], partyData[i].species, partyData[i].lvl, fixedIV, TRUE, personalityValue, 2, 0);
+ CreateMon(&party[i], partyData[i].species, partyData[i].lvl, fixedIV, TRUE, personalityValue, OT_ID_RANDOM_NO_SHINY, 0);
SetMonData(&party[i], MON_DATA_HELD_ITEM, &partyData[i].heldItem);
@@ -4025,7 +4025,7 @@ void BattleTurnPassed(void)
if (gBattleOutcome != 0)
{
- gCurrentActionFuncId = 12;
+ gCurrentActionFuncId = B_ACTION_FINISHED;
gBattleMainFunc = RunTurnActionsFunctions;
return;
}
@@ -4244,7 +4244,7 @@ static void HandleTurnActionSelectionState(void)
moveInfo.monType1 = gBattleMons[gActiveBattler].type1;
moveInfo.monType2 = gBattleMons[gActiveBattler].type2;
- for (i = 0; i < 4; i++)
+ for (i = 0; i < MAX_MON_MOVES; i++)
{
moveInfo.moves[i] = gBattleMons[gActiveBattler].moves[i];
moveInfo.currentPp[i] = gBattleMons[gActiveBattler].pp[i];
@@ -4979,7 +4979,7 @@ static void CheckFocusPunch_ClearVarsBeforeTurnStarts(void)
static void RunTurnActionsFunctions(void)
{
if (gBattleOutcome != 0)
- gCurrentActionFuncId = 12;
+ gCurrentActionFuncId = B_ACTION_FINISHED;
*(&gBattleStruct->savedTurnActionNumber) = gCurrentTurnActionNumber;
sTurnActionsFuncsTable[gCurrentActionFuncId]();
@@ -5139,7 +5139,7 @@ static void HandleEndTurn_MonFled(void)
static void HandleEndTurn_FinishBattle(void)
{
- if (gCurrentActionFuncId == 0xB || gCurrentActionFuncId == 0xC)
+ if (gCurrentActionFuncId == B_ACTION_TRY_FINISH || gCurrentActionFuncId == B_ACTION_FINISHED)
{
if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK
| BATTLE_TYPE_x2000000
@@ -5284,7 +5284,7 @@ static void ReturnFromBattleToOverworld(void)
void RunBattleScriptCommands_PopCallbacksStack(void)
{
- if (gCurrentActionFuncId == 0xB || gCurrentActionFuncId == 0xC)
+ if (gCurrentActionFuncId == B_ACTION_TRY_FINISH || gCurrentActionFuncId == B_ACTION_FINISHED)
{
if (gBattleResources->battleCallbackStack->size != 0)
gBattleResources->battleCallbackStack->size--;
@@ -5592,7 +5592,7 @@ static void HandleAction_UseItem(void)
else
{
PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_ATK)
- PREPARE_STRING_BUFFER(gBattleTextBuff2, 0xD2)
+ PREPARE_STRING_BUFFER(gBattleTextBuff2, CHAR_X)
while (!((*(gBattleStruct->AI_itemFlags + (gBattlerAttacker >> 1))) & 1))
{
diff --git a/src/battle_pike.c b/src/battle_pike.c
index 8846e2d1a..4e2be23e4 100644
--- a/src/battle_pike.c
+++ b/src/battle_pike.c
@@ -49,7 +49,7 @@ struct PikeWildMon
{
u16 species;
u8 levelDelta;
- u16 moves[4];
+ u16 moves[MAX_MON_MOVES];
};
// IWRAM bss
diff --git a/src/battle_pyramid.c b/src/battle_pyramid.c
index cc722da8d..4d35f4244 100644
--- a/src/battle_pyramid.c
+++ b/src/battle_pyramid.c
@@ -77,7 +77,7 @@ struct PyramidWildMon
u16 species;
u8 lvl;
u8 abilityNum;
- u16 moves[4];
+ u16 moves[MAX_MON_MOVES];
};
struct PyramidFloorTemplate
diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c
index 49b30ee6f..85ca4e167 100644
--- a/src/battle_script_commands.c
+++ b/src/battle_script_commands.c
@@ -1681,29 +1681,22 @@ static void Cmd_adjustnormaldamage(void)
RecordItemEffectBattle(gBattlerTarget, holdEffect);
gSpecialStatuses[gBattlerTarget].focusBanded = 1;
}
- if (gBattleMons[gBattlerTarget].status2 & STATUS2_SUBSTITUTE)
- goto END;
- if (gBattleMoves[gCurrentMove].effect != EFFECT_FALSE_SWIPE && !gProtectStructs[gBattlerTarget].endured
- && !gSpecialStatuses[gBattlerTarget].focusBanded)
- goto END;
-
- if (gBattleMons[gBattlerTarget].hp > gBattleMoveDamage)
- goto END;
-
- gBattleMoveDamage = gBattleMons[gBattlerTarget].hp - 1;
-
- if (gProtectStructs[gBattlerTarget].endured)
+ if (!(gBattleMons[gBattlerTarget].status2 & STATUS2_SUBSTITUTE)
+ && (gBattleMoves[gCurrentMove].effect == EFFECT_FALSE_SWIPE || gProtectStructs[gBattlerTarget].endured || gSpecialStatuses[gBattlerTarget].focusBanded)
+ && gBattleMons[gBattlerTarget].hp <= gBattleMoveDamage)
{
- gMoveResultFlags |= MOVE_RESULT_FOE_ENDURED;
- }
- else if (gSpecialStatuses[gBattlerTarget].focusBanded)
- {
- gMoveResultFlags |= MOVE_RESULT_FOE_HUNG_ON;
- gLastUsedItem = gBattleMons[gBattlerTarget].item;
+ gBattleMoveDamage = gBattleMons[gBattlerTarget].hp - 1;
+ if (gProtectStructs[gBattlerTarget].endured)
+ {
+ gMoveResultFlags |= MOVE_RESULT_FOE_ENDURED;
+ }
+ else if (gSpecialStatuses[gBattlerTarget].focusBanded)
+ {
+ gMoveResultFlags |= MOVE_RESULT_FOE_HUNG_ON;
+ gLastUsedItem = gBattleMons[gBattlerTarget].item;
+ }
}
-
- END:
- gBattlescriptCurrInstr++;
+ gBattlescriptCurrInstr++;
}
static void Cmd_adjustnormaldamage2(void) // The same as adjustnormaldamage except it doesn't check for false swipe move effect.
@@ -1730,27 +1723,22 @@ static void Cmd_adjustnormaldamage2(void) // The same as adjustnormaldamage exce
RecordItemEffectBattle(gBattlerTarget, holdEffect);
gSpecialStatuses[gBattlerTarget].focusBanded = 1;
}
- if (gBattleMons[gBattlerTarget].status2 & STATUS2_SUBSTITUTE)
- goto END;
- if (!gProtectStructs[gBattlerTarget].endured && !gSpecialStatuses[gBattlerTarget].focusBanded)
- goto END;
- if (gBattleMons[gBattlerTarget].hp > gBattleMoveDamage)
- goto END;
-
- gBattleMoveDamage = gBattleMons[gBattlerTarget].hp - 1;
-
- if (gProtectStructs[gBattlerTarget].endured)
- {
- gMoveResultFlags |= MOVE_RESULT_FOE_ENDURED;
- }
- else if (gSpecialStatuses[gBattlerTarget].focusBanded)
+ if (!(gBattleMons[gBattlerTarget].status2 & STATUS2_SUBSTITUTE)
+ && (gProtectStructs[gBattlerTarget].endured || gSpecialStatuses[gBattlerTarget].focusBanded)
+ && gBattleMons[gBattlerTarget].hp <= gBattleMoveDamage)
{
- gMoveResultFlags |= MOVE_RESULT_FOE_HUNG_ON;
- gLastUsedItem = gBattleMons[gBattlerTarget].item;
+ gBattleMoveDamage = gBattleMons[gBattlerTarget].hp - 1;
+ if (gProtectStructs[gBattlerTarget].endured)
+ {
+ gMoveResultFlags |= MOVE_RESULT_FOE_ENDURED;
+ }
+ else if (gSpecialStatuses[gBattlerTarget].focusBanded)
+ {
+ gMoveResultFlags |= MOVE_RESULT_FOE_HUNG_ON;
+ gLastUsedItem = gBattleMons[gBattlerTarget].item;
+ }
}
-
- END:
- gBattlescriptCurrInstr++;
+ gBattlescriptCurrInstr++;
}
static void Cmd_attackanimation(void)
@@ -4564,27 +4552,26 @@ static void Cmd_moveend(void)
gBattleScripting.moveendState++;
break;
case MOVEEND_CHOICE_MOVE: // update choice band move
- if (!(gHitMarker & HITMARKER_OBEYS) || holdEffectAtk != HOLD_EFFECT_CHOICE_BAND
- || gChosenMove == MOVE_STRUGGLE || (*choicedMoveAtk != 0 && *choicedMoveAtk != 0xFFFF))
- goto LOOP;
- if (gChosenMove == MOVE_BATON_PASS && !(gMoveResultFlags & MOVE_RESULT_FAILED))
+ if (gHitMarker & HITMARKER_OBEYS
+ && holdEffectAtk == HOLD_EFFECT_CHOICE_BAND
+ && gChosenMove != MOVE_STRUGGLE
+ && (*choicedMoveAtk == 0 || *choicedMoveAtk == 0xFFFF))
{
- gBattleScripting.moveendState++;
- break;
- }
- *choicedMoveAtk = gChosenMove;
- LOOP:
- {
- for (i = 0; i < MAX_MON_MOVES; i++)
+ if (gChosenMove == MOVE_BATON_PASS && !(gMoveResultFlags & MOVE_RESULT_FAILED))
{
- if (gBattleMons[gBattlerAttacker].moves[i] == *choicedMoveAtk)
- break;
+ ++gBattleScripting.moveendState;
+ break;
}
- if (i == MAX_MON_MOVES)
- *choicedMoveAtk = 0;
-
- gBattleScripting.moveendState++;
+ *choicedMoveAtk = gChosenMove;
+ }
+ for (i = 0; i < MAX_MON_MOVES; ++i)
+ {
+ if (gBattleMons[gBattlerAttacker].moves[i] == *choicedMoveAtk)
+ break;
}
+ if (i == MAX_MON_MOVES)
+ *choicedMoveAtk = 0;
+ ++gBattleScripting.moveendState;
break;
case MOVEEND_CHANGED_ITEMS: // changed held items
for (i = 0; i < gBattlersCount; i++)
@@ -6152,29 +6139,22 @@ static void Cmd_adjustsetdamage(void) // The same as adjustnormaldamage, except
RecordItemEffectBattle(gBattlerTarget, holdEffect);
gSpecialStatuses[gBattlerTarget].focusBanded = 1;
}
- if (gBattleMons[gBattlerTarget].status2 & STATUS2_SUBSTITUTE)
- goto END;
- if (gBattleMoves[gCurrentMove].effect != EFFECT_FALSE_SWIPE && !gProtectStructs[gBattlerTarget].endured
- && !gSpecialStatuses[gBattlerTarget].focusBanded)
- goto END;
-
- if (gBattleMons[gBattlerTarget].hp > gBattleMoveDamage)
- goto END;
-
- gBattleMoveDamage = gBattleMons[gBattlerTarget].hp - 1;
-
- if (gProtectStructs[gBattlerTarget].endured)
- {
- gMoveResultFlags |= MOVE_RESULT_FOE_ENDURED;
- }
- else if (gSpecialStatuses[gBattlerTarget].focusBanded)
+ if (!(gBattleMons[gBattlerTarget].status2 & STATUS2_SUBSTITUTE)
+ && (gBattleMoves[gCurrentMove].effect == EFFECT_FALSE_SWIPE || gProtectStructs[gBattlerTarget].endured || gSpecialStatuses[gBattlerTarget].focusBanded)
+ && gBattleMons[gBattlerTarget].hp <= gBattleMoveDamage)
{
- gMoveResultFlags |= MOVE_RESULT_FOE_HUNG_ON;
- gLastUsedItem = gBattleMons[gBattlerTarget].item;
+ gBattleMoveDamage = gBattleMons[gBattlerTarget].hp - 1;
+ if (gProtectStructs[gBattlerTarget].endured)
+ {
+ gMoveResultFlags |= MOVE_RESULT_FOE_ENDURED;
+ }
+ else if (gSpecialStatuses[gBattlerTarget].focusBanded)
+ {
+ gMoveResultFlags |= MOVE_RESULT_FOE_HUNG_ON;
+ gLastUsedItem = gBattleMons[gBattlerTarget].item;
+ }
}
-
- END:
- gBattlescriptCurrInstr++;
+ gBattlescriptCurrInstr++;
}
static void Cmd_removeitem(void)
@@ -10184,7 +10164,7 @@ static void Cmd_handleballthrow(void)
gBattlescriptCurrInstr = BattleScript_SuccessBallThrow;
SetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerTarget]], MON_DATA_POKEBALL, &gLastUsedItem);
- if (CalculatePlayerPartyCount() == 6)
+ if (CalculatePlayerPartyCount() == PARTY_SIZE)
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
else
gBattleCommunication[MULTISTRING_CHOOSER] = 1;
@@ -10196,7 +10176,7 @@ static void Cmd_handleballthrow(void)
odds = Sqrt(Sqrt(16711680 / odds));
odds = 1048560 / odds;
- for (shakes = 0; shakes < 4 && Random() < odds; shakes++);
+ for (shakes = 0; shakes < BALL_3_SHAKES_SUCCESS && Random() < odds; shakes++);
if (gLastUsedItem == ITEM_MASTER_BALL)
shakes = BALL_3_SHAKES_SUCCESS; // why calculate the shakes before that check?
@@ -10209,7 +10189,7 @@ static void Cmd_handleballthrow(void)
gBattlescriptCurrInstr = BattleScript_SuccessBallThrow;
SetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerTarget]], MON_DATA_POKEBALL, &gLastUsedItem);
- if (CalculatePlayerPartyCount() == 6)
+ if (CalculatePlayerPartyCount() == PARTY_SIZE)
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
else
gBattleCommunication[MULTISTRING_CHOOSER] = 1;
@@ -10227,17 +10207,17 @@ static void Cmd_givecaughtmon(void)
{
if (GiveMonToPlayer(&gEnemyParty[gBattlerPartyIndexes[gBattlerAttacker ^ BIT_SIDE]]) != MON_GIVEN_TO_PARTY)
{
- if (!sub_813B21C())
+ if (!ShouldShowBoxWasFullMessage())
{
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
- StringCopy(gStringVar1, GetBoxNamePtr(VarGet(VAR_STORAGE_UNKNOWN)));
+ StringCopy(gStringVar1, GetBoxNamePtr(VarGet(VAR_PC_BOX_TO_SEND_MON)));
GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerAttacker ^ BIT_SIDE]], MON_DATA_NICKNAME, gStringVar2);
}
else
{
- StringCopy(gStringVar1, GetBoxNamePtr(VarGet(VAR_STORAGE_UNKNOWN)));
+ StringCopy(gStringVar1, GetBoxNamePtr(VarGet(VAR_PC_BOX_TO_SEND_MON))); // box the mon was sent to
GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerAttacker ^ BIT_SIDE]], MON_DATA_NICKNAME, gStringVar2);
- StringCopy(gStringVar3, GetBoxNamePtr(get_unknown_box_id()));
+ StringCopy(gStringVar3, GetBoxNamePtr(GetPCBoxToSendMon())); //box the mon was going to be sent to
gBattleCommunication[MULTISTRING_CHOOSER] = 2;
}
diff --git a/src/battle_setup.c b/src/battle_setup.c
index 288fdb3e9..c2d7cb6c6 100644
--- a/src/battle_setup.c
+++ b/src/battle_setup.c
@@ -231,86 +231,93 @@ static const struct TrainerBattleParameter sTrainerBContinueScriptBattleParams[]
{&sTrainerBattleEndScript, TRAINER_PARAM_LOAD_SCRIPT_RET_ADDR},
};
+#define REMATCH(trainer1, trainer2, trainer3, trainer4, trainer5, map) \
+{ \
+ .trainerIds = {trainer1, trainer2, trainer3, trainer4, trainer5}, \
+ .mapGroup = MAP_GROUP(map), \
+ .mapNum = MAP_NUM(map), \
+}
+
const struct RematchTrainer gRematchTable[REMATCH_TABLE_ENTRIES] =
{
- [REMATCH_ROSE] = {{TRAINER_ROSE_1, TRAINER_ROSE_2, TRAINER_ROSE_3, TRAINER_ROSE_4, TRAINER_ROSE_5}, 0x0, 0x21},
- [REMATCH_ANDRES] = {{TRAINER_ANDRES_1, TRAINER_ANDRES_2, TRAINER_ANDRES_3, TRAINER_ANDRES_4, TRAINER_ANDRES_5}, 0x0, 0x14},
- [REMATCH_DUSTY] = {{TRAINER_DUSTY_1, TRAINER_DUSTY_2, TRAINER_DUSTY_3, TRAINER_DUSTY_4, TRAINER_DUSTY_5}, 0x0, 0x1a},
- [REMATCH_LOLA] = {{TRAINER_LOLA_1, TRAINER_LOLA_2, TRAINER_LOLA_3, TRAINER_LOLA_4, TRAINER_LOLA_5}, 0x0, 0x18},
- [REMATCH_RICKY] = {{TRAINER_RICKY_1, TRAINER_RICKY_2, TRAINER_RICKY_3, TRAINER_RICKY_4, TRAINER_RICKY_5}, 0x0, 0x18},
- [REMATCH_LILA_AND_ROY] = {{TRAINER_LILA_AND_ROY_1, TRAINER_LILA_AND_ROY_2, TRAINER_LILA_AND_ROY_3, TRAINER_LILA_AND_ROY_4, TRAINER_LILA_AND_ROY_5}, 0x0, 0x27},
- [REMATCH_CRISTIN] = {{TRAINER_CRISTIN_1, TRAINER_CRISTIN_2, TRAINER_CRISTIN_3, TRAINER_CRISTIN_4, TRAINER_CRISTIN_5}, 0x0, 0x24},
- [REMATCH_BROOKE] = {{TRAINER_BROOKE_1, TRAINER_BROOKE_2, TRAINER_BROOKE_3, TRAINER_BROOKE_4, TRAINER_BROOKE_5}, 0x0, 0x1a},
- [REMATCH_WILTON] = {{TRAINER_WILTON_1, TRAINER_WILTON_2, TRAINER_WILTON_3, TRAINER_WILTON_4, TRAINER_WILTON_5}, 0x0, 0x1a},
- [REMATCH_VALERIE] = {{TRAINER_VALERIE_1, TRAINER_VALERIE_2, TRAINER_VALERIE_3, TRAINER_VALERIE_4, TRAINER_VALERIE_5}, 0x18, 0x14},
- [REMATCH_CINDY] = {{TRAINER_CINDY_1, TRAINER_CINDY_3, TRAINER_CINDY_4, TRAINER_CINDY_5, TRAINER_CINDY_6}, 0x0, 0x13},
- [REMATCH_THALIA] = {{TRAINER_THALIA_1, TRAINER_THALIA_2, TRAINER_THALIA_3, TRAINER_THALIA_4, TRAINER_THALIA_5}, 0x18, 0x38},
- [REMATCH_JESSICA] = {{TRAINER_JESSICA_1, TRAINER_JESSICA_2, TRAINER_JESSICA_3, TRAINER_JESSICA_4, TRAINER_JESSICA_5}, 0x0, 0x24},
- [REMATCH_WINSTON] = {{TRAINER_WINSTON_1, TRAINER_WINSTON_2, TRAINER_WINSTON_3, TRAINER_WINSTON_4, TRAINER_WINSTON_5}, 0x0, 0x13},
- [REMATCH_STEVE] = {{TRAINER_STEVE_1, TRAINER_STEVE_2, TRAINER_STEVE_3, TRAINER_STEVE_4, TRAINER_STEVE_5}, 0x0, 0x1d},
- [REMATCH_TONY] = {{TRAINER_TONY_1, TRAINER_TONY_2, TRAINER_TONY_3, TRAINER_TONY_4, TRAINER_TONY_5}, 0x0, 0x16},
- [REMATCH_NOB] = {{TRAINER_NOB_1, TRAINER_NOB_2, TRAINER_NOB_3, TRAINER_NOB_4, TRAINER_NOB_5}, 0x0, 0x1e},
- [REMATCH_KOJI] = {{TRAINER_KOJI_1, TRAINER_KOJI_2, TRAINER_KOJI_3, TRAINER_KOJI_4, TRAINER_KOJI_5}, 0x0, 0x2a},
- [REMATCH_FERNANDO] = {{TRAINER_FERNANDO_1, TRAINER_FERNANDO_2, TRAINER_FERNANDO_3, TRAINER_FERNANDO_4, TRAINER_FERNANDO_5}, 0x0, 0x26},
- [REMATCH_DALTON] = {{TRAINER_DALTON_1, TRAINER_DALTON_2, TRAINER_DALTON_3, TRAINER_DALTON_4, TRAINER_DALTON_5}, 0x0, 0x21},
- [REMATCH_BERNIE] = {{TRAINER_BERNIE_1, TRAINER_BERNIE_2, TRAINER_BERNIE_3, TRAINER_BERNIE_4, TRAINER_BERNIE_5}, 0x0, 0x1d},
- [REMATCH_ETHAN] = {{TRAINER_ETHAN_1, TRAINER_ETHAN_2, TRAINER_ETHAN_3, TRAINER_ETHAN_4, TRAINER_ETHAN_5}, 0x18, 0xd},
- [REMATCH_JOHN_AND_JAY] = {{TRAINER_JOHN_AND_JAY_1, TRAINER_JOHN_AND_JAY_2, TRAINER_JOHN_AND_JAY_3, TRAINER_JOHN_AND_JAY_4, TRAINER_JOHN_AND_JAY_5}, 0x18, 0x1},
- [REMATCH_JEFFREY] = {{TRAINER_JEFFREY_1, TRAINER_JEFFREY_2, TRAINER_JEFFREY_3, TRAINER_JEFFREY_4, TRAINER_JEFFREY_5}, 0x0, 0x23},
- [REMATCH_CAMERON] = {{TRAINER_CAMERON_1, TRAINER_CAMERON_2, TRAINER_CAMERON_3, TRAINER_CAMERON_4, TRAINER_CAMERON_5}, 0x0, 0x26},
- [REMATCH_JACKI] = {{TRAINER_JACKI_1, TRAINER_JACKI_2, TRAINER_JACKI_3, TRAINER_JACKI_4, TRAINER_JACKI_5}, 0x0, 0x26},
- [REMATCH_WALTER] = {{TRAINER_WALTER_1, TRAINER_WALTER_2, TRAINER_WALTER_3, TRAINER_WALTER_4, TRAINER_WALTER_5}, 0x0, 0x24},
- [REMATCH_KAREN] = {{TRAINER_KAREN_1, TRAINER_KAREN_2, TRAINER_KAREN_3, TRAINER_KAREN_4, TRAINER_KAREN_5}, 0x0, 0x1f},
- [REMATCH_JERRY] = {{TRAINER_JERRY_1, TRAINER_JERRY_2, TRAINER_JERRY_3, TRAINER_JERRY_4, TRAINER_JERRY_5}, 0x0, 0x1f},
- [REMATCH_ANNA_AND_MEG] = {{TRAINER_ANNA_AND_MEG_1, TRAINER_ANNA_AND_MEG_2, TRAINER_ANNA_AND_MEG_3, TRAINER_ANNA_AND_MEG_4, TRAINER_ANNA_AND_MEG_5}, 0x0, 0x20},
- [REMATCH_ISABEL] = {{TRAINER_ISABEL_1, TRAINER_ISABEL_2, TRAINER_ISABEL_3, TRAINER_ISABEL_4, TRAINER_ISABEL_5}, 0x0, 0x19},
- [REMATCH_MIGUEL] = {{TRAINER_MIGUEL_1, TRAINER_MIGUEL_2, TRAINER_MIGUEL_3, TRAINER_MIGUEL_4, TRAINER_MIGUEL_5}, 0x0, 0x12},
- [REMATCH_TIMOTHY] = {{TRAINER_TIMOTHY_1, TRAINER_TIMOTHY_2, TRAINER_TIMOTHY_3, TRAINER_TIMOTHY_4, TRAINER_TIMOTHY_5}, 0x0, 0x1e},
- [REMATCH_SHELBY] = {{TRAINER_SHELBY_1, TRAINER_SHELBY_2, TRAINER_SHELBY_3, TRAINER_SHELBY_4, TRAINER_SHELBY_5}, 0x18, 0xc},
- [REMATCH_CALVIN] = {{TRAINER_CALVIN_1, TRAINER_CALVIN_2, TRAINER_CALVIN_3, TRAINER_CALVIN_4, TRAINER_CALVIN_5}, 0x0, 0x11},
- [REMATCH_ELLIOT] = {{TRAINER_ELLIOT_1, TRAINER_ELLIOT_2, TRAINER_ELLIOT_3, TRAINER_ELLIOT_4, TRAINER_ELLIOT_5}, 0x0, 0x15},
- [REMATCH_ISAIAH] = {{TRAINER_ISAIAH_1, TRAINER_ISAIAH_2, TRAINER_ISAIAH_3, TRAINER_ISAIAH_4, TRAINER_ISAIAH_5}, 0x0, 0x2b},
- [REMATCH_MARIA] = {{TRAINER_MARIA_1, TRAINER_MARIA_2, TRAINER_MARIA_3, TRAINER_MARIA_4, TRAINER_MARIA_5}, 0x0, 0x20},
- [REMATCH_ABIGAIL] = {{TRAINER_ABIGAIL_1, TRAINER_ABIGAIL_2, TRAINER_ABIGAIL_3, TRAINER_ABIGAIL_4, TRAINER_ABIGAIL_5}, 0x0, 0x19},
- [REMATCH_DYLAN] = {{TRAINER_DYLAN_1, TRAINER_DYLAN_2, TRAINER_DYLAN_3, TRAINER_DYLAN_4, TRAINER_DYLAN_5}, 0x0, 0x20},
- [REMATCH_KATELYN] = {{TRAINER_KATELYN_1, TRAINER_KATELYN_2, TRAINER_KATELYN_3, TRAINER_KATELYN_4, TRAINER_KATELYN_5}, 0x0, 0x2b},
- [REMATCH_BENJAMIN] = {{TRAINER_BENJAMIN_1, TRAINER_BENJAMIN_2, TRAINER_BENJAMIN_3, TRAINER_BENJAMIN_4, TRAINER_BENJAMIN_5}, 0x0, 0x19},
- [REMATCH_PABLO] = {{TRAINER_PABLO_1, TRAINER_PABLO_2, TRAINER_PABLO_3, TRAINER_PABLO_4, TRAINER_PABLO_5}, 0x0, 0x29},
- [REMATCH_NICOLAS] = {{TRAINER_NICOLAS_1, TRAINER_NICOLAS_2, TRAINER_NICOLAS_3, TRAINER_NICOLAS_4, TRAINER_NICOLAS_5}, 0x18, 0x1},
- [REMATCH_ROBERT] = {{TRAINER_ROBERT_1, TRAINER_ROBERT_2, TRAINER_ROBERT_3, TRAINER_ROBERT_4, TRAINER_ROBERT_5}, 0x0, 0x23},
- [REMATCH_LAO] = {{TRAINER_LAO_1, TRAINER_LAO_2, TRAINER_LAO_3, TRAINER_LAO_4, TRAINER_LAO_5}, 0x0, 0x1c},
- [REMATCH_CYNDY] = {{TRAINER_CYNDY_1, TRAINER_CYNDY_2, TRAINER_CYNDY_3, TRAINER_CYNDY_4, TRAINER_CYNDY_5}, 0x0, 0x1e},
- [REMATCH_MADELINE] = {{TRAINER_MADELINE_1, TRAINER_MADELINE_2, TRAINER_MADELINE_3, TRAINER_MADELINE_4, TRAINER_MADELINE_5}, 0x0, 0x1c},
- [REMATCH_JENNY] = {{TRAINER_JENNY_1, TRAINER_JENNY_2, TRAINER_JENNY_3, TRAINER_JENNY_4, TRAINER_JENNY_5}, 0x0, 0x27},
- [REMATCH_DIANA] = {{TRAINER_DIANA_1, TRAINER_DIANA_2, TRAINER_DIANA_3, TRAINER_DIANA_4, TRAINER_DIANA_5}, 0x18, 0xd},
- [REMATCH_AMY_AND_LIV] = {{TRAINER_AMY_AND_LIV_1, TRAINER_AMY_AND_LIV_2, TRAINER_AMY_AND_LIV_4, TRAINER_AMY_AND_LIV_5, TRAINER_AMY_AND_LIV_6}, 0x0, 0x12},
- [REMATCH_ERNEST] = {{TRAINER_ERNEST_1, TRAINER_ERNEST_2, TRAINER_ERNEST_3, TRAINER_ERNEST_4, TRAINER_ERNEST_5}, 0x0, 0x28},
- [REMATCH_CORY] = {{TRAINER_CORY_1, TRAINER_CORY_2, TRAINER_CORY_3, TRAINER_CORY_4, TRAINER_CORY_5}, 0x0, 0x17},
- [REMATCH_EDWIN] = {{TRAINER_EDWIN_1, TRAINER_EDWIN_2, TRAINER_EDWIN_3, TRAINER_EDWIN_4, TRAINER_EDWIN_5}, 0x0, 0x19},
- [REMATCH_LYDIA] = {{TRAINER_LYDIA_1, TRAINER_LYDIA_2, TRAINER_LYDIA_3, TRAINER_LYDIA_4, TRAINER_LYDIA_5}, 0x0, 0x20},
- [REMATCH_ISAAC] = {{TRAINER_ISAAC_1, TRAINER_ISAAC_2, TRAINER_ISAAC_3, TRAINER_ISAAC_4, TRAINER_ISAAC_5}, 0x0, 0x20},
- [REMATCH_GABRIELLE] = {{TRAINER_GABRIELLE_1, TRAINER_GABRIELLE_2, TRAINER_GABRIELLE_3, TRAINER_GABRIELLE_4, TRAINER_GABRIELLE_5}, 0x18, 0x11},
- [REMATCH_CATHERINE] = {{TRAINER_CATHERINE_1, TRAINER_CATHERINE_2, TRAINER_CATHERINE_3, TRAINER_CATHERINE_4, TRAINER_CATHERINE_5}, 0x0, 0x22},
- [REMATCH_JACKSON] = {{TRAINER_JACKSON_1, TRAINER_JACKSON_2, TRAINER_JACKSON_3, TRAINER_JACKSON_4, TRAINER_JACKSON_5}, 0x0, 0x22},
- [REMATCH_HALEY] = {{TRAINER_HALEY_1, TRAINER_HALEY_2, TRAINER_HALEY_3, TRAINER_HALEY_4, TRAINER_HALEY_5}, 0x0, 0x13},
- [REMATCH_JAMES] = {{TRAINER_JAMES_1, TRAINER_JAMES_2, TRAINER_JAMES_3, TRAINER_JAMES_4, TRAINER_JAMES_5}, 0x18, 0xb},
- [REMATCH_TRENT] = {{TRAINER_TRENT_1, TRAINER_TRENT_2, TRAINER_TRENT_3, TRAINER_TRENT_4, TRAINER_TRENT_5}, 0x0, 0x1b},
- [REMATCH_SAWYER] = {{TRAINER_SAWYER_1, TRAINER_SAWYER_2, TRAINER_SAWYER_3, TRAINER_SAWYER_4, TRAINER_SAWYER_5}, 0x18, 0xc},
- [REMATCH_KIRA_AND_DAN] = {{TRAINER_KIRA_AND_DAN_1, TRAINER_KIRA_AND_DAN_2, TRAINER_KIRA_AND_DAN_3, TRAINER_KIRA_AND_DAN_4, TRAINER_KIRA_AND_DAN_5}, 0x18, 0x3e},
- [REMATCH_WALLY_3] = {{TRAINER_WALLY_3, TRAINER_WALLY_4, TRAINER_WALLY_5, TRAINER_WALLY_6, TRAINER_WALLY_6}, 0x18, 0x2b},
- [REMATCH_ROXANNE] = {{TRAINER_ROXANNE_1, TRAINER_ROXANNE_2, TRAINER_ROXANNE_3, TRAINER_ROXANNE_4, TRAINER_ROXANNE_5}, 0x0, 0x3},
- [REMATCH_BRAWLY] = {{TRAINER_BRAWLY_1, TRAINER_BRAWLY_2, TRAINER_BRAWLY_3, TRAINER_BRAWLY_4, TRAINER_BRAWLY_5}, 0x0, 0xb},
- [REMATCH_WATTSON] = {{TRAINER_WATTSON_1, TRAINER_WATTSON_2, TRAINER_WATTSON_3, TRAINER_WATTSON_4, TRAINER_WATTSON_5}, 0x0, 0x2},
- [REMATCH_FLANNERY] = {{TRAINER_FLANNERY_1, TRAINER_FLANNERY_2, TRAINER_FLANNERY_3, TRAINER_FLANNERY_4, TRAINER_FLANNERY_5}, 0x0, 0xc},
- [REMATCH_NORMAN] = {{TRAINER_NORMAN_1, TRAINER_NORMAN_2, TRAINER_NORMAN_3, TRAINER_NORMAN_4, TRAINER_NORMAN_5}, 0x0, 0x0},
- [REMATCH_WINONA] = {{TRAINER_WINONA_1, TRAINER_WINONA_2, TRAINER_WINONA_3, TRAINER_WINONA_4, TRAINER_WINONA_5}, 0x0, 0x4},
- [REMATCH_TATE_AND_LIZA] = {{TRAINER_TATE_AND_LIZA_1, TRAINER_TATE_AND_LIZA_2, TRAINER_TATE_AND_LIZA_3, TRAINER_TATE_AND_LIZA_4, TRAINER_TATE_AND_LIZA_5}, 0x0, 0x6},
- [REMATCH_JUAN] = {{TRAINER_JUAN_1, TRAINER_JUAN_2, TRAINER_JUAN_3, TRAINER_JUAN_4, TRAINER_JUAN_5}, 0x0, 0x7},
- [REMATCH_SIDNEY] = {{TRAINER_SIDNEY, TRAINER_SIDNEY, TRAINER_SIDNEY, TRAINER_SIDNEY, TRAINER_SIDNEY}, 0x0, 0x8},
- [REMATCH_PHOEBE] = {{TRAINER_PHOEBE, TRAINER_PHOEBE, TRAINER_PHOEBE, TRAINER_PHOEBE, TRAINER_PHOEBE}, 0x0, 0x8},
- [REMATCH_GLACIA] = {{TRAINER_GLACIA, TRAINER_GLACIA, TRAINER_GLACIA, TRAINER_GLACIA, TRAINER_GLACIA}, 0x0, 0x8},
- [REMATCH_DRAKE] = {{TRAINER_DRAKE, TRAINER_DRAKE, TRAINER_DRAKE, TRAINER_DRAKE, TRAINER_DRAKE}, 0x0, 0x8},
- [REMATCH_WALLACE] = {{TRAINER_WALLACE, TRAINER_WALLACE, TRAINER_WALLACE, TRAINER_WALLACE, TRAINER_WALLACE}, 0x0, 0x8},
+ [REMATCH_ROSE] = REMATCH(TRAINER_ROSE_1, TRAINER_ROSE_2, TRAINER_ROSE_3, TRAINER_ROSE_4, TRAINER_ROSE_5, ROUTE118),
+ [REMATCH_ANDRES] = REMATCH(TRAINER_ANDRES_1, TRAINER_ANDRES_2, TRAINER_ANDRES_3, TRAINER_ANDRES_4, TRAINER_ANDRES_5, ROUTE105),
+ [REMATCH_DUSTY] = REMATCH(TRAINER_DUSTY_1, TRAINER_DUSTY_2, TRAINER_DUSTY_3, TRAINER_DUSTY_4, TRAINER_DUSTY_5, ROUTE111),
+ [REMATCH_LOLA] = REMATCH(TRAINER_LOLA_1, TRAINER_LOLA_2, TRAINER_LOLA_3, TRAINER_LOLA_4, TRAINER_LOLA_5, ROUTE109),
+ [REMATCH_RICKY] = REMATCH(TRAINER_RICKY_1, TRAINER_RICKY_2, TRAINER_RICKY_3, TRAINER_RICKY_4, TRAINER_RICKY_5, ROUTE109),
+ [REMATCH_LILA_AND_ROY] = REMATCH(TRAINER_LILA_AND_ROY_1, TRAINER_LILA_AND_ROY_2, TRAINER_LILA_AND_ROY_3, TRAINER_LILA_AND_ROY_4, TRAINER_LILA_AND_ROY_5, ROUTE124),
+ [REMATCH_CRISTIN] = REMATCH(TRAINER_CRISTIN_1, TRAINER_CRISTIN_2, TRAINER_CRISTIN_3, TRAINER_CRISTIN_4, TRAINER_CRISTIN_5, ROUTE121),
+ [REMATCH_BROOKE] = REMATCH(TRAINER_BROOKE_1, TRAINER_BROOKE_2, TRAINER_BROOKE_3, TRAINER_BROOKE_4, TRAINER_BROOKE_5, ROUTE111),
+ [REMATCH_WILTON] = REMATCH(TRAINER_WILTON_1, TRAINER_WILTON_2, TRAINER_WILTON_3, TRAINER_WILTON_4, TRAINER_WILTON_5, ROUTE111),
+ [REMATCH_VALERIE] = REMATCH(TRAINER_VALERIE_1, TRAINER_VALERIE_2, TRAINER_VALERIE_3, TRAINER_VALERIE_4, TRAINER_VALERIE_5, MT_PYRE_6F),
+ [REMATCH_CINDY] = REMATCH(TRAINER_CINDY_1, TRAINER_CINDY_3, TRAINER_CINDY_4, TRAINER_CINDY_5, TRAINER_CINDY_6, ROUTE104),
+ [REMATCH_THALIA] = REMATCH(TRAINER_THALIA_1, TRAINER_THALIA_2, TRAINER_THALIA_3, TRAINER_THALIA_4, TRAINER_THALIA_5, ABANDONED_SHIP_ROOMS_1F),
+ [REMATCH_JESSICA] = REMATCH(TRAINER_JESSICA_1, TRAINER_JESSICA_2, TRAINER_JESSICA_3, TRAINER_JESSICA_4, TRAINER_JESSICA_5, ROUTE121),
+ [REMATCH_WINSTON] = REMATCH(TRAINER_WINSTON_1, TRAINER_WINSTON_2, TRAINER_WINSTON_3, TRAINER_WINSTON_4, TRAINER_WINSTON_5, ROUTE104),
+ [REMATCH_STEVE] = REMATCH(TRAINER_STEVE_1, TRAINER_STEVE_2, TRAINER_STEVE_3, TRAINER_STEVE_4, TRAINER_STEVE_5, ROUTE114),
+ [REMATCH_TONY] = REMATCH(TRAINER_TONY_1, TRAINER_TONY_2, TRAINER_TONY_3, TRAINER_TONY_4, TRAINER_TONY_5, ROUTE107),
+ [REMATCH_NOB] = REMATCH(TRAINER_NOB_1, TRAINER_NOB_2, TRAINER_NOB_3, TRAINER_NOB_4, TRAINER_NOB_5, ROUTE115),
+ [REMATCH_KOJI] = REMATCH(TRAINER_KOJI_1, TRAINER_KOJI_2, TRAINER_KOJI_3, TRAINER_KOJI_4, TRAINER_KOJI_5, ROUTE127),
+ [REMATCH_FERNANDO] = REMATCH(TRAINER_FERNANDO_1, TRAINER_FERNANDO_2, TRAINER_FERNANDO_3, TRAINER_FERNANDO_4, TRAINER_FERNANDO_5, ROUTE123),
+ [REMATCH_DALTON] = REMATCH(TRAINER_DALTON_1, TRAINER_DALTON_2, TRAINER_DALTON_3, TRAINER_DALTON_4, TRAINER_DALTON_5, ROUTE118),
+ [REMATCH_BERNIE] = REMATCH(TRAINER_BERNIE_1, TRAINER_BERNIE_2, TRAINER_BERNIE_3, TRAINER_BERNIE_4, TRAINER_BERNIE_5, ROUTE114),
+ [REMATCH_ETHAN] = REMATCH(TRAINER_ETHAN_1, TRAINER_ETHAN_2, TRAINER_ETHAN_3, TRAINER_ETHAN_4, TRAINER_ETHAN_5, JAGGED_PASS),
+ [REMATCH_JOHN_AND_JAY] = REMATCH(TRAINER_JOHN_AND_JAY_1, TRAINER_JOHN_AND_JAY_2, TRAINER_JOHN_AND_JAY_3, TRAINER_JOHN_AND_JAY_4, TRAINER_JOHN_AND_JAY_5, METEOR_FALLS_1F_2R),
+ [REMATCH_JEFFREY] = REMATCH(TRAINER_JEFFREY_1, TRAINER_JEFFREY_2, TRAINER_JEFFREY_3, TRAINER_JEFFREY_4, TRAINER_JEFFREY_5, ROUTE120),
+ [REMATCH_CAMERON] = REMATCH(TRAINER_CAMERON_1, TRAINER_CAMERON_2, TRAINER_CAMERON_3, TRAINER_CAMERON_4, TRAINER_CAMERON_5, ROUTE123),
+ [REMATCH_JACKI] = REMATCH(TRAINER_JACKI_1, TRAINER_JACKI_2, TRAINER_JACKI_3, TRAINER_JACKI_4, TRAINER_JACKI_5, ROUTE123),
+ [REMATCH_WALTER] = REMATCH(TRAINER_WALTER_1, TRAINER_WALTER_2, TRAINER_WALTER_3, TRAINER_WALTER_4, TRAINER_WALTER_5, ROUTE121),
+ [REMATCH_KAREN] = REMATCH(TRAINER_KAREN_1, TRAINER_KAREN_2, TRAINER_KAREN_3, TRAINER_KAREN_4, TRAINER_KAREN_5, ROUTE116),
+ [REMATCH_JERRY] = REMATCH(TRAINER_JERRY_1, TRAINER_JERRY_2, TRAINER_JERRY_3, TRAINER_JERRY_4, TRAINER_JERRY_5, ROUTE116),
+ [REMATCH_ANNA_AND_MEG] = REMATCH(TRAINER_ANNA_AND_MEG_1, TRAINER_ANNA_AND_MEG_2, TRAINER_ANNA_AND_MEG_3, TRAINER_ANNA_AND_MEG_4, TRAINER_ANNA_AND_MEG_5, ROUTE117),
+ [REMATCH_ISABEL] = REMATCH(TRAINER_ISABEL_1, TRAINER_ISABEL_2, TRAINER_ISABEL_3, TRAINER_ISABEL_4, TRAINER_ISABEL_5, ROUTE110),
+ [REMATCH_MIGUEL] = REMATCH(TRAINER_MIGUEL_1, TRAINER_MIGUEL_2, TRAINER_MIGUEL_3, TRAINER_MIGUEL_4, TRAINER_MIGUEL_5, ROUTE103),
+ [REMATCH_TIMOTHY] = REMATCH(TRAINER_TIMOTHY_1, TRAINER_TIMOTHY_2, TRAINER_TIMOTHY_3, TRAINER_TIMOTHY_4, TRAINER_TIMOTHY_5, ROUTE115),
+ [REMATCH_SHELBY] = REMATCH(TRAINER_SHELBY_1, TRAINER_SHELBY_2, TRAINER_SHELBY_3, TRAINER_SHELBY_4, TRAINER_SHELBY_5, MT_CHIMNEY),
+ [REMATCH_CALVIN] = REMATCH(TRAINER_CALVIN_1, TRAINER_CALVIN_2, TRAINER_CALVIN_3, TRAINER_CALVIN_4, TRAINER_CALVIN_5, ROUTE102),
+ [REMATCH_ELLIOT] = REMATCH(TRAINER_ELLIOT_1, TRAINER_ELLIOT_2, TRAINER_ELLIOT_3, TRAINER_ELLIOT_4, TRAINER_ELLIOT_5, ROUTE106),
+ [REMATCH_ISAIAH] = REMATCH(TRAINER_ISAIAH_1, TRAINER_ISAIAH_2, TRAINER_ISAIAH_3, TRAINER_ISAIAH_4, TRAINER_ISAIAH_5, ROUTE128),
+ [REMATCH_MARIA] = REMATCH(TRAINER_MARIA_1, TRAINER_MARIA_2, TRAINER_MARIA_3, TRAINER_MARIA_4, TRAINER_MARIA_5, ROUTE117),
+ [REMATCH_ABIGAIL] = REMATCH(TRAINER_ABIGAIL_1, TRAINER_ABIGAIL_2, TRAINER_ABIGAIL_3, TRAINER_ABIGAIL_4, TRAINER_ABIGAIL_5, ROUTE110),
+ [REMATCH_DYLAN] = REMATCH(TRAINER_DYLAN_1, TRAINER_DYLAN_2, TRAINER_DYLAN_3, TRAINER_DYLAN_4, TRAINER_DYLAN_5, ROUTE117),
+ [REMATCH_KATELYN] = REMATCH(TRAINER_KATELYN_1, TRAINER_KATELYN_2, TRAINER_KATELYN_3, TRAINER_KATELYN_4, TRAINER_KATELYN_5, ROUTE128),
+ [REMATCH_BENJAMIN] = REMATCH(TRAINER_BENJAMIN_1, TRAINER_BENJAMIN_2, TRAINER_BENJAMIN_3, TRAINER_BENJAMIN_4, TRAINER_BENJAMIN_5, ROUTE110),
+ [REMATCH_PABLO] = REMATCH(TRAINER_PABLO_1, TRAINER_PABLO_2, TRAINER_PABLO_3, TRAINER_PABLO_4, TRAINER_PABLO_5, ROUTE126),
+ [REMATCH_NICOLAS] = REMATCH(TRAINER_NICOLAS_1, TRAINER_NICOLAS_2, TRAINER_NICOLAS_3, TRAINER_NICOLAS_4, TRAINER_NICOLAS_5, METEOR_FALLS_1F_2R),
+ [REMATCH_ROBERT] = REMATCH(TRAINER_ROBERT_1, TRAINER_ROBERT_2, TRAINER_ROBERT_3, TRAINER_ROBERT_4, TRAINER_ROBERT_5, ROUTE120),
+ [REMATCH_LAO] = REMATCH(TRAINER_LAO_1, TRAINER_LAO_2, TRAINER_LAO_3, TRAINER_LAO_4, TRAINER_LAO_5, ROUTE113),
+ [REMATCH_CYNDY] = REMATCH(TRAINER_CYNDY_1, TRAINER_CYNDY_2, TRAINER_CYNDY_3, TRAINER_CYNDY_4, TRAINER_CYNDY_5, ROUTE115),
+ [REMATCH_MADELINE] = REMATCH(TRAINER_MADELINE_1, TRAINER_MADELINE_2, TRAINER_MADELINE_3, TRAINER_MADELINE_4, TRAINER_MADELINE_5, ROUTE113),
+ [REMATCH_JENNY] = REMATCH(TRAINER_JENNY_1, TRAINER_JENNY_2, TRAINER_JENNY_3, TRAINER_JENNY_4, TRAINER_JENNY_5, ROUTE124),
+ [REMATCH_DIANA] = REMATCH(TRAINER_DIANA_1, TRAINER_DIANA_2, TRAINER_DIANA_3, TRAINER_DIANA_4, TRAINER_DIANA_5, JAGGED_PASS),
+ [REMATCH_AMY_AND_LIV] = REMATCH(TRAINER_AMY_AND_LIV_1, TRAINER_AMY_AND_LIV_2, TRAINER_AMY_AND_LIV_4, TRAINER_AMY_AND_LIV_5, TRAINER_AMY_AND_LIV_6, ROUTE103),
+ [REMATCH_ERNEST] = REMATCH(TRAINER_ERNEST_1, TRAINER_ERNEST_2, TRAINER_ERNEST_3, TRAINER_ERNEST_4, TRAINER_ERNEST_5, ROUTE125),
+ [REMATCH_CORY] = REMATCH(TRAINER_CORY_1, TRAINER_CORY_2, TRAINER_CORY_3, TRAINER_CORY_4, TRAINER_CORY_5, ROUTE108),
+ [REMATCH_EDWIN] = REMATCH(TRAINER_EDWIN_1, TRAINER_EDWIN_2, TRAINER_EDWIN_3, TRAINER_EDWIN_4, TRAINER_EDWIN_5, ROUTE110),
+ [REMATCH_LYDIA] = REMATCH(TRAINER_LYDIA_1, TRAINER_LYDIA_2, TRAINER_LYDIA_3, TRAINER_LYDIA_4, TRAINER_LYDIA_5, ROUTE117),
+ [REMATCH_ISAAC] = REMATCH(TRAINER_ISAAC_1, TRAINER_ISAAC_2, TRAINER_ISAAC_3, TRAINER_ISAAC_4, TRAINER_ISAAC_5, ROUTE117),
+ [REMATCH_GABRIELLE] = REMATCH(TRAINER_GABRIELLE_1, TRAINER_GABRIELLE_2, TRAINER_GABRIELLE_3, TRAINER_GABRIELLE_4, TRAINER_GABRIELLE_5, MT_PYRE_3F),
+ [REMATCH_CATHERINE] = REMATCH(TRAINER_CATHERINE_1, TRAINER_CATHERINE_2, TRAINER_CATHERINE_3, TRAINER_CATHERINE_4, TRAINER_CATHERINE_5, ROUTE119),
+ [REMATCH_JACKSON] = REMATCH(TRAINER_JACKSON_1, TRAINER_JACKSON_2, TRAINER_JACKSON_3, TRAINER_JACKSON_4, TRAINER_JACKSON_5, ROUTE119),
+ [REMATCH_HALEY] = REMATCH(TRAINER_HALEY_1, TRAINER_HALEY_2, TRAINER_HALEY_3, TRAINER_HALEY_4, TRAINER_HALEY_5, ROUTE104),
+ [REMATCH_JAMES] = REMATCH(TRAINER_JAMES_1, TRAINER_JAMES_2, TRAINER_JAMES_3, TRAINER_JAMES_4, TRAINER_JAMES_5, PETALBURG_WOODS),
+ [REMATCH_TRENT] = REMATCH(TRAINER_TRENT_1, TRAINER_TRENT_2, TRAINER_TRENT_3, TRAINER_TRENT_4, TRAINER_TRENT_5, ROUTE112),
+ [REMATCH_SAWYER] = REMATCH(TRAINER_SAWYER_1, TRAINER_SAWYER_2, TRAINER_SAWYER_3, TRAINER_SAWYER_4, TRAINER_SAWYER_5, MT_CHIMNEY),
+ [REMATCH_KIRA_AND_DAN] = REMATCH(TRAINER_KIRA_AND_DAN_1, TRAINER_KIRA_AND_DAN_2, TRAINER_KIRA_AND_DAN_3, TRAINER_KIRA_AND_DAN_4, TRAINER_KIRA_AND_DAN_5, ABANDONED_SHIP_ROOMS2_1F),
+ [REMATCH_WALLY_3] = REMATCH(TRAINER_WALLY_3, TRAINER_WALLY_4, TRAINER_WALLY_5, TRAINER_WALLY_6, TRAINER_WALLY_6, VICTORY_ROAD_1F),
+ [REMATCH_ROXANNE] = REMATCH(TRAINER_ROXANNE_1, TRAINER_ROXANNE_2, TRAINER_ROXANNE_3, TRAINER_ROXANNE_4, TRAINER_ROXANNE_5, RUSTBORO_CITY),
+ [REMATCH_BRAWLY] = REMATCH(TRAINER_BRAWLY_1, TRAINER_BRAWLY_2, TRAINER_BRAWLY_3, TRAINER_BRAWLY_4, TRAINER_BRAWLY_5, DEWFORD_TOWN),
+ [REMATCH_WATTSON] = REMATCH(TRAINER_WATTSON_1, TRAINER_WATTSON_2, TRAINER_WATTSON_3, TRAINER_WATTSON_4, TRAINER_WATTSON_5, MAUVILLE_CITY),
+ [REMATCH_FLANNERY] = REMATCH(TRAINER_FLANNERY_1, TRAINER_FLANNERY_2, TRAINER_FLANNERY_3, TRAINER_FLANNERY_4, TRAINER_FLANNERY_5, LAVARIDGE_TOWN),
+ [REMATCH_NORMAN] = REMATCH(TRAINER_NORMAN_1, TRAINER_NORMAN_2, TRAINER_NORMAN_3, TRAINER_NORMAN_4, TRAINER_NORMAN_5, PETALBURG_CITY),
+ [REMATCH_WINONA] = REMATCH(TRAINER_WINONA_1, TRAINER_WINONA_2, TRAINER_WINONA_3, TRAINER_WINONA_4, TRAINER_WINONA_5, FORTREE_CITY),
+ [REMATCH_TATE_AND_LIZA] = REMATCH(TRAINER_TATE_AND_LIZA_1, TRAINER_TATE_AND_LIZA_2, TRAINER_TATE_AND_LIZA_3, TRAINER_TATE_AND_LIZA_4, TRAINER_TATE_AND_LIZA_5, MOSSDEEP_CITY),
+ [REMATCH_JUAN] = REMATCH(TRAINER_JUAN_1, TRAINER_JUAN_2, TRAINER_JUAN_3, TRAINER_JUAN_4, TRAINER_JUAN_5, SOOTOPOLIS_CITY),
+ [REMATCH_SIDNEY] = REMATCH(TRAINER_SIDNEY, TRAINER_SIDNEY, TRAINER_SIDNEY, TRAINER_SIDNEY, TRAINER_SIDNEY, EVER_GRANDE_CITY),
+ [REMATCH_PHOEBE] = REMATCH(TRAINER_PHOEBE, TRAINER_PHOEBE, TRAINER_PHOEBE, TRAINER_PHOEBE, TRAINER_PHOEBE, EVER_GRANDE_CITY),
+ [REMATCH_GLACIA] = REMATCH(TRAINER_GLACIA, TRAINER_GLACIA, TRAINER_GLACIA, TRAINER_GLACIA, TRAINER_GLACIA, EVER_GRANDE_CITY),
+ [REMATCH_DRAKE] = REMATCH(TRAINER_DRAKE, TRAINER_DRAKE, TRAINER_DRAKE, TRAINER_DRAKE, TRAINER_DRAKE, EVER_GRANDE_CITY),
+ [REMATCH_WALLACE] = REMATCH(TRAINER_WALLACE, TRAINER_WALLACE, TRAINER_WALLACE, TRAINER_WALLACE, TRAINER_WALLACE, EVER_GRANDE_CITY),
};
static const u16 sBadgeFlags[8] =
diff --git a/src/battle_tower.c b/src/battle_tower.c
index 6f8e3e25f..c55180965 100644
--- a/src/battle_tower.c
+++ b/src/battle_tower.c
@@ -1019,7 +1019,7 @@ struct
u8 level;
u8 nature;
u8 evs[6];
- u16 moves[4];
+ u16 moves[MAX_MON_MOVES];
} const sStevenMons[3] =
{
{
@@ -1561,7 +1561,7 @@ void PutNewBattleTowerRecord(struct EmeraldBattleTowerRecord *newRecordEm)
for (i = 0; i < 5; i++)
{
k = 0;
- for (j = 0; j < 4; j++)
+ for (j = 0; j < TRAINER_ID_LENGTH; j++)
{
if (gSaveBlock2Ptr->frontier.towerRecords[i].trainerId[j] != newRecord->trainerId[j])
break;
@@ -3190,7 +3190,7 @@ static void FillPartnerParty(u16 trainerId)
sStevenMons[i].level,
sStevenMons[i].fixedIV,
TRUE, i, // BUG: personality was stored in the 'j' variable. As a result, Steven's pokemon do not have the intended natures.
- TRUE, STEVEN_OTID);
+ OT_ID_PRESET, STEVEN_OTID);
for (j = 0; j < 6; j++)
SetMonData(&gPlayerParty[3 + i], MON_DATA_HP_EV + j, &sStevenMons[i].evs[j]);
for (j = 0; j < MAX_MON_MOVES; j++)
@@ -3308,7 +3308,7 @@ bool32 RubyBattleTowerRecordToEmerald(struct RSBattleTowerRecord *src, struct Em
for (i = 0; i < PLAYER_NAME_LENGTH + 1; i++)
dst->name[i] = src->name[i];
- for (i = 0; i < 4; i++)
+ for (i = 0; i < TRAINER_ID_LENGTH; i++)
dst->trainerId[i] = src->trainerId[i];
for (i = 0; i < 6; i++)
dst->greeting[i] = src->greeting[i];
@@ -3357,7 +3357,7 @@ bool32 EmeraldBattleTowerRecordToRuby(struct EmeraldBattleTowerRecord *src, stru
for (i = 0; i < PLAYER_NAME_LENGTH + 1; i++)
dst->name[i] = src->name[i];
- for (i = 0; i < 4; i++)
+ for (i = 0; i < TRAINER_ID_LENGTH; i++)
dst->trainerId[i] = src->trainerId[i];
for (i = 0; i < 6; i++)
dst->greeting[i] = src->greeting[i];
diff --git a/src/battle_transition.c b/src/battle_transition.c
index 3e86fcf51..fb7fd0c2f 100644
--- a/src/battle_transition.c
+++ b/src/battle_transition.c
@@ -1961,9 +1961,10 @@ static bool8 Phase2_Ripple_Func2(struct Task *task)
for (i = 0; i < 160; i++, r4 += r8)
{
- // todo: fix the asm
s16 var = r4 >> 8;
- asm("");
+
+ var++;
+ var--;
gScanlineEffectRegBuffers[0][i] = sTransitionStructPtr->field_16 + Sin(var, r3);
}
diff --git a/src/battle_util.c b/src/battle_util.c
index 6ef51bfd2..2d9693766 100644
--- a/src/battle_util.c
+++ b/src/battle_util.c
@@ -1,30 +1,30 @@
#include "global.h"
#include "battle.h"
#include "battle_anim.h"
-#include "constants/battle_script_commands.h"
-#include "constants/abilities.h"
-#include "constants/moves.h"
-#include "constants/hold_effects.h"
-#include "constants/battle_anim.h"
#include "pokemon.h"
-#include "constants/species.h"
#include "item.h"
-#include "constants/items.h"
#include "util.h"
-#include "constants/battle_move_effects.h"
#include "battle_scripts.h"
#include "random.h"
#include "text.h"
#include "string_util.h"
#include "battle_message.h"
-#include "constants/battle_string_ids.h"
-#include "constants/weather.h"
#include "battle_ai_script_commands.h"
#include "battle_controllers.h"
#include "event_data.h"
#include "link.h"
-#include "berry.h"
#include "field_weather.h"
+#include "constants/abilities.h"
+#include "constants/battle_anim.h"
+#include "constants/battle_move_effects.h"
+#include "constants/battle_script_commands.h"
+#include "constants/battle_string_ids.h"
+#include "constants/berry.h"
+#include "constants/hold_effects.h"
+#include "constants/items.h"
+#include "constants/moves.h"
+#include "constants/species.h"
+#include "constants/weather.h"
// rom const data
static const u16 sSoundMovesTable[] =
diff --git a/src/berry.c b/src/berry.c
index 49acb7d10..bbaa2b03b 100644
--- a/src/berry.c
+++ b/src/berry.c
@@ -11,6 +11,7 @@
#include "random.h"
#include "string_util.h"
#include "text.h"
+#include "constants/berry.h"
#include "constants/event_object_movement_constants.h"
#include "constants/items.h"
diff --git a/src/berry_blender.c b/src/berry_blender.c
index 03764b2f8..911c3e545 100644
--- a/src/berry_blender.c
+++ b/src/berry_blender.c
@@ -36,6 +36,7 @@
#include "new_game.h"
#include "save.h"
#include "link.h"
+#include "constants/berry.h"
#include "constants/rgb.h"
#define BLENDER_SCORE_BEST 0
diff --git a/src/berry_tag_screen.c b/src/berry_tag_screen.c
index c3eac783d..10a45dc65 100644
--- a/src/berry_tag_screen.c
+++ b/src/berry_tag_screen.c
@@ -4,7 +4,6 @@
#include "decompress.h"
#include "event_object_movement.h"
#include "item_menu.h"
-#include "constants/items.h"
#include "item.h"
#include "item_use.h"
#include "main.h"
@@ -15,7 +14,6 @@
#include "menu_helpers.h"
#include "palette.h"
#include "overworld.h"
-#include "constants/songs.h"
#include "sound.h"
#include "sprite.h"
#include "string_util.h"
@@ -28,7 +26,10 @@
#include "item_menu_icons.h"
#include "decompress.h"
#include "international_string_util.h"
+#include "constants/berry.h"
+#include "constants/items.h"
#include "constants/rgb.h"
+#include "constants/songs.h"
// There are 4 windows used in berry tag screen.
enum
diff --git a/src/bg.c b/src/bg.c
index 1678f4023..ab4e8b60d 100644
--- a/src/bg.c
+++ b/src/bg.c
@@ -1174,78 +1174,29 @@ u32 GetTileMapIndexFromCoords(s32 x, s32 y, s32 screenSize, u32 screenWidth, u32
return (y * 0x20) + x;
}
-#ifdef NONMATCHING // This one has some weird switch statement cases that refuse to cooperate
void CopyTileMapEntry(const u16 *src, u16 *dest, s32 palette1, s32 tileOffset, s32 palette2)
{
u16 var;
+
+ if (palette1 == 16)
+ goto CASE_16;
switch (palette1)
{
case 0 ... 16:
- if (palette1 != 16)
- var = ((*src + tileOffset) & 0xFFF) + ((palette1 + palette2) << 12);
- else
- var = ((*dest & 0xFC00) + (palette2 << 12)) | ((*src + tileOffset) & 0x3FF);
+ var = ((*src + tileOffset) & 0xFFF) + ((palette1 + palette2) << 12);
+ break;
+ CASE_16:
+ var = *dest;
+ var &= 0xFC00;
+ var += palette2 << 12;
+ var |= (*src + tileOffset) & 0x3FF;
break;
default:
var = *src + tileOffset + (palette2 << 12);
break;
}
-
*dest = var;
}
-#else
-NAKED
-void CopyTileMapEntry(const u16 *src, u16 *dest, s32 palette1, s32 tileOffset, s32 palette2)
-{
- asm("push {r4-r6,lr}\n\
- add r4, r0, #0\n\
- add r6, r1, #0\n\
- ldr r5, [sp, #0x10]\n\
- cmp r2, #0x10\n\
- beq _08002B14\n\
- cmp r2, #0x10\n\
- bgt _08002B34\n\
- cmp r2, #0\n\
- blt _08002B34\n\
- ldrh r0, [r4]\n\
- add r0, r3\n\
- ldr r3, =0x00000fff\n\
- add r1, r3, #0\n\
- and r0, r1\n\
- add r1, r2, r5\n\
- lsl r1, #12\n\
- b _08002B3A\n\
- .pool\n\
-_08002B14:\n\
- ldrh r1, [r6]\n\
- mov r0, #0xFC\n\
- lsl r0, #8\n\
- and r1, r0\n\
- lsl r2, r5, #12\n\
- add r2, r1, r2\n\
- ldrh r0, [r4]\n\
- add r0, r3\n\
- ldr r3, =0x000003ff\n\
- add r1, r3, #0\n\
- and r0, r1\n\
- orr r0, r2\n\
- b _08002B3C\n\
- .pool\n\
-_08002B34:\n\
- ldrh r0, [r4]\n\
- add r0, r3\n\
- lsl r1, r5, #12\n\
-_08002B3A:\n\
- add r0, r1\n\
-_08002B3C:\n\
- lsl r0, #16\n\
- lsr r1, r0, #16\n\
- strh r1, [r6]\n\
- pop {r4-r6}\n\
- pop {r0}\n\
- bx r0\n");
-}
-#endif // NONMATCHING
u32 GetBgType(u8 bg)
{
diff --git a/src/clock.c b/src/clock.c
index 1e7c5f83e..125d403bb 100644
--- a/src/clock.c
+++ b/src/clock.c
@@ -25,7 +25,7 @@ static void InitTimeBasedEvents(void)
void DoTimeBasedEvents(void)
{
- if (FlagGet(FLAG_SYS_CLOCK_SET) && !sub_813B9C0())
+ if (FlagGet(FLAG_SYS_CLOCK_SET) && !InPokemonCenter())
{
RtcCalcLocalTime();
UpdatePerDay(&gLocalTime);
diff --git a/src/contest.c b/src/contest.c
index 662a27060..79c1616c2 100644
--- a/src/contest.c
+++ b/src/contest.c
@@ -1217,10 +1217,10 @@ static bool8 SetupContestGraphics(u8 *stateVar)
CreateApplauseMeterSprite();
sub_80DC5E8();
sub_80DC7EC();
- gBattlerPositions[0] = 0;
- gBattlerPositions[1] = 1;
- gBattlerPositions[2] = 3;
- gBattlerPositions[3] = 2;
+ gBattlerPositions[0] = B_POSITION_PLAYER_LEFT;
+ gBattlerPositions[1] = B_POSITION_OPPONENT_LEFT;
+ gBattlerPositions[2] = B_POSITION_OPPONENT_RIGHT;
+ gBattlerPositions[3] = B_POSITION_PLAYER_RIGHT;
gBattleTypeFlags = 0;
gBattlerAttacker = 2;
gBattlerTarget = 3;
diff --git a/src/contest_painting.c b/src/contest_painting.c
index 66127cbbc..1b95e1ed9 100644
--- a/src/contest_painting.c
+++ b/src/contest_painting.c
@@ -292,7 +292,7 @@ static void PrintContestPaintingCaption(u8 contestType, u8 arg1)
category = gUnknown_030061C0->contestCategory;
if (contestType < 8)
{
- sub_818E868(gStringVar1, category);
+ BufferContestName(gStringVar1, category);
StringAppend(gStringVar1, gText_Space);
StringAppend(gStringVar1, gContestRankTextPointers[gUnknown_030061C0->contestRank]);
StringCopy(gStringVar2, gUnknown_030061C0->trainerName);
diff --git a/src/credits.c b/src/credits.c
index 1e96514b1..44fa2002c 100644
--- a/src/credits.c
+++ b/src/credits.c
@@ -143,7 +143,7 @@ struct Unk201C000
struct CreditsEntry
{
u8 var_0;
- u8 var_1;
+ bool8 isTitle;
const u8 *text;
};
@@ -165,7 +165,7 @@ static const u32 gCreditsCopyrightEnd_Gfx[] = INCBIN_U32("graphics/credits/the_e
static void sub_81772B8(struct Sprite *sprite);
-static const u8 gUnknown_085E5BAC[] =
+static const u8 sTheEnd_LetterTMap[] =
{
0, 1, 0,
0xFF, 1, 0xFF,
@@ -174,7 +174,7 @@ static const u8 gUnknown_085E5BAC[] =
0xFF, 1, 0xFF,
};
-static const u8 gUnknown_085E5BBB[] =
+static const u8 sTheEnd_LetterHMap[] =
{
1, 0xFF, 1,
1, 0xFF, 1,
@@ -183,7 +183,7 @@ static const u8 gUnknown_085E5BBB[] =
1, 0xFF, 1,
};
-static const u8 gUnknown_085E5BCA[] =
+static const u8 sTheEnd_LetterEMap[] =
{
1, 0, 0,
1, 0xFF, 0xFF,
@@ -192,7 +192,7 @@ static const u8 gUnknown_085E5BCA[] =
1, 0x80, 0x80,
};
-static const u8 gUnknown_085E5BD9[] =
+static const u8 sTheEnd_LetterNMap[] =
{
1, 3, 1,
1, 4, 1,
@@ -201,7 +201,7 @@ static const u8 gUnknown_085E5BD9[] =
1, 0xC3, 1,
};
-static const u8 gUnknown_085E5BE8[] =
+static const u8 sTheEnd_LetterDMap[] =
{
1, 6, 7,
1, 8, 9,
@@ -369,165 +369,165 @@ static const u8 gCreditsText_MotoyasuTojima[] = _("Motoyasu Tojima");
static const u8 gCreditsText_NicolaPrattBarlow[] = _("Nicola Pratt-Barlow");
static const u8 gCreditsText_ShellieDow[] = _("Shellie Dow");
static const u8 gCreditsText_ErikJohnson[] = _("Erik Johnson");
-static const struct CreditsEntry gCreditsEntry_EmptyString[] = {0, 0, gCreditsText_EmptyString};
-static const struct CreditsEntry gCreditsEntry_PkmnEmeraldVersion[] = {7, 1, gCreditsText_PkmnEmeraldVersion};
-static const struct CreditsEntry gCreditsEntry_Credits[] = {11, 1, gCreditsText_Credits};
-static const struct CreditsEntry gCreditsEntry_ExecutiveDirector[] = {8, 1, gCreditsText_ExecutiveDirector};
-static const struct CreditsEntry gCreditsEntry_Director[] = {12, 1, gCreditsText_Director};
-static const struct CreditsEntry gCreditsEntry_ArtDirector[] = {10, 1, gCreditsText_ArtDirector};
-static const struct CreditsEntry gCreditsEntry_BattleDirector[] = {10, 1, gCreditsText_BattleDirector};
-static const struct CreditsEntry gCreditsEntry_MainProgrammer[] = {10, 1, gCreditsText_MainProgrammer};
-static const struct CreditsEntry gCreditsEntry_BattleSystemPgrms[] = {8, 1, gCreditsText_BattleSystemPgrms};
-static const struct CreditsEntry gCreditsEntry_FieldSystemPgrms[] = {7, 1, gCreditsText_FieldSystemPgrms};
-static const struct CreditsEntry gCreditsEntry_Programmers[] = {12, 1, gCreditsText_Programmers};
-static const struct CreditsEntry gCreditsEntry_MainGraphicDesigner[] = {7, 1, gCreditsText_MainGraphicDesigner};
-static const struct CreditsEntry gCreditsEntry_GraphicDesigners[] = {9, 1, gCreditsText_GraphicDesigners};
-static const struct CreditsEntry gCreditsEntry_PkmnDesigners[] = {10, 1, gCreditsText_PkmnDesigners};
-static const struct CreditsEntry gCreditsEntry_MusicComposition[] = {13, 1, gCreditsText_MusicComposition};
-static const struct CreditsEntry gCreditsEntry_SoundEffectsAndPkmnVoices[] = {4, 1, gCreditsText_SoundEffectsAndPkmnVoices};
-static const struct CreditsEntry gCreditsEntry_GameDesigners[] = {11, 1, gCreditsText_GameDesigners};
-static const struct CreditsEntry gCreditsEntry_ScenarioPlot[] = {11, 1, gCreditsText_ScenarioPlot};
-static const struct CreditsEntry gCreditsEntry_Scenario[] = {13, 1, gCreditsText_Scenario};
-static const struct CreditsEntry gCreditsEntry_ScriptDesigners[] = {10, 1, gCreditsText_ScriptDesigners};
-static const struct CreditsEntry gCreditsEntry_MapDesigners[] = {11, 1, gCreditsText_MapDesigners};
-static const struct CreditsEntry gCreditsEntry_MapDataDesigners[] = {9, 1, gCreditsText_MapDataDesigners};
-static const struct CreditsEntry gCreditsEntry_ParametricDesigners[] = {9, 1, gCreditsText_ParametricDesigners};
-static const struct CreditsEntry gCreditsEntry_PokedexText[] = {11, 1, gCreditsText_PokedexText};
-static const struct CreditsEntry gCreditsEntry_EnvAndToolPgrms[] = {6, 1, gCreditsText_EnvAndToolPgrms};
-static const struct CreditsEntry gCreditsEntry_NCLProductTesting[] = {11, 1, gCreditsText_NCLProductTesting};
-static const struct CreditsEntry gCreditsEntry_SpecialThanks[] = {10, 1, gCreditsText_SpecialThanks};
-static const struct CreditsEntry gCreditsEntry_Coordinators[] = {11, 1, gCreditsText_Coordinators};
-static const struct CreditsEntry gCreditsEntry_Producers[] = {11, 1, gCreditsText_Producers};
-static const struct CreditsEntry gCreditsEntry_ExecProducers[] = {7, 1, gCreditsText_ExecProducers};
-static const struct CreditsEntry gCreditsEntry_InfoSupervisors[] = {10, 1, gCreditsText_InfoSupervisors};
-static const struct CreditsEntry gCreditsEntry_TaskManagers[] = {8, 1, gCreditsText_TaskManagers};
-static const struct CreditsEntry gCreditsEntry_BrailleCodeCheck[] = {10, 1, gCreditsText_BrailleCodeCheck};
-static const struct CreditsEntry gCreditsEntry_WorldDirector[] = {10, 1, gCreditsText_WorldDirector};
-static const struct CreditsEntry gCreditsEntry_BattleFrontierData[] = {8, 1, gCreditsText_BattleFrontierData};
-static const struct CreditsEntry gCreditsEntry_SupportProgrammers[] = {10, 1, gCreditsText_SupportProgrammers};
-static const struct CreditsEntry gCreditsEntry_Artwork[] = {12, 1, gCreditsText_Artwork};
-static const struct CreditsEntry gCreditsEntry_LeadProgrammer[] = {10, 1, gCreditsText_LeadProgrammer};
-static const struct CreditsEntry gCreditsEntry_LeadGraphicArtist[] = {9, 1, gCreditsText_LeadGraphicArtist};
-static const struct CreditsEntry gCreditsEntry_SatoshiTajiri[] = {11, 0, gCreditsText_SatoshiTajiri};
-static const struct CreditsEntry gCreditsEntry_JunichiMasuda[] = {11, 0, gCreditsText_JunichiMasuda};
-static const struct CreditsEntry gCreditsEntry_KenSugimori[] = {11, 0, gCreditsText_KenSugimori};
-static const struct CreditsEntry gCreditsEntry_ShigekiMorimoto[] = {11, 0, gCreditsText_ShigekiMorimoto};
-static const struct CreditsEntry gCreditsEntry_TetsuyaWatanabe[] = {11, 0, gCreditsText_TetsuyaWatanabe};
-static const struct CreditsEntry gCreditsEntry_HisashiSogabe[] = {11, 0, gCreditsText_HisashiSogabe};
-static const struct CreditsEntry gCreditsEntry_SosukeTamada[] = {11, 0, gCreditsText_SosukeTamada};
-static const struct CreditsEntry gCreditsEntry_AkitoMori[] = {11, 0, gCreditsText_AkitoMori};
-static const struct CreditsEntry gCreditsEntry_KeitaKagaya[] = {11, 0, gCreditsText_KeitaKagaya};
-static const struct CreditsEntry gCreditsEntry_YoshinoriMatsuda[] = {11, 0, gCreditsText_YoshinoriMatsuda};
-static const struct CreditsEntry gCreditsEntry_HiroyukiNakamura[] = {11, 0, gCreditsText_HiroyukiNakamura};
-static const struct CreditsEntry gCreditsEntry_MasaoTaya[] = {11, 0, gCreditsText_MasaoTaya};
-static const struct CreditsEntry gCreditsEntry_SatoshiNohara[] = {11, 0, gCreditsText_SatoshiNohara};
-static const struct CreditsEntry gCreditsEntry_TomomichiOhta[] = {11, 0, gCreditsText_TomomichiOhta};
-static const struct CreditsEntry gCreditsEntry_MiyukiIwasawa[] = {11, 0, gCreditsText_MiyukiIwasawa};
-static const struct CreditsEntry gCreditsEntry_TakenoriOhta[] = {11, 0, gCreditsText_TakenoriOhta};
-static const struct CreditsEntry gCreditsEntry_HironobuYoshida[] = {11, 0, gCreditsText_HironobuYoshida};
-static const struct CreditsEntry gCreditsEntry_MotofumiFujiwara[] = {11, 0, gCreditsText_MotofumiFujiwara};
-static const struct CreditsEntry gCreditsEntry_SatoshiOhta[] = {11, 0, gCreditsText_SatoshiOhta};
-static const struct CreditsEntry gCreditsEntry_AsukaIwashita[] = {11, 0, gCreditsText_AsukaIwashita};
-static const struct CreditsEntry gCreditsEntry_AimiTomita[] = {11, 0, gCreditsText_AimiTomita};
-static const struct CreditsEntry gCreditsEntry_TakaoUnno[] = {11, 0, gCreditsText_TakaoUnno};
-static const struct CreditsEntry gCreditsEntry_KanakoEo[] = {11, 0, gCreditsText_KanakoEo};
-static const struct CreditsEntry gCreditsEntry_JunOkutani[] = {11, 0, gCreditsText_JunOkutani};
-static const struct CreditsEntry gCreditsEntry_AtsukoNishida[] = {11, 0, gCreditsText_AtsukoNishida};
-static const struct CreditsEntry gCreditsEntry_MuneoSaito[] = {11, 0, gCreditsText_MuneoSaito};
-static const struct CreditsEntry gCreditsEntry_RenaYoshikawa[] = {11, 0, gCreditsText_RenaYoshikawa};
-static const struct CreditsEntry gCreditsEntry_GoIchinose[] = {11, 0, gCreditsText_GoIchinose};
-static const struct CreditsEntry gCreditsEntry_MorikazuAoki[] = {11, 0, gCreditsText_MorikazuAoki};
-static const struct CreditsEntry gCreditsEntry_KojiNishino[] = {11, 0, gCreditsText_KojiNishino};
-static const struct CreditsEntry gCreditsEntry_KenjiMatsushima[] = {11, 0, gCreditsText_KenjiMatsushima};
-static const struct CreditsEntry gCreditsEntry_TetsujiOhta[] = {11, 0, gCreditsText_TetsujiOhta};
-static const struct CreditsEntry gCreditsEntry_HitomiSato[] = {11, 0, gCreditsText_HitomiSato};
-static const struct CreditsEntry gCreditsEntry_TakeshiKawachimaru[] = {11, 0, gCreditsText_TakeshiKawachimaru};
-static const struct CreditsEntry gCreditsEntry_TeruyukiShimoyamada[] = {11, 0, gCreditsText_TeruyukiShimoyamada};
-static const struct CreditsEntry gCreditsEntry_ShigeruOhmori[] = {11, 0, gCreditsText_ShigeruOhmori};
-static const struct CreditsEntry gCreditsEntry_TadashiTakahashi[] = {11, 0, gCreditsText_TadashiTakahashi};
-static const struct CreditsEntry gCreditsEntry_ToshinobuMatsumiya[] = {11, 0, gCreditsText_ToshinobuMatsumiya};
-static const struct CreditsEntry gCreditsEntry_AkihitoTomisawa[] = {11, 0, gCreditsText_AkihitoTomisawa};
-static const struct CreditsEntry gCreditsEntry_HirokiEnomoto[] = {11, 0, gCreditsText_HirokiEnomoto};
-static const struct CreditsEntry gCreditsEntry_KazuyukiTerada[] = {11, 0, gCreditsText_KazuyukiTerada};
-static const struct CreditsEntry gCreditsEntry_YuriSakurai[] = {11, 0, gCreditsText_YuriSakurai};
-static const struct CreditsEntry gCreditsEntry_HiromiSagawa[] = {11, 0, gCreditsText_HiromiSagawa};
-static const struct CreditsEntry gCreditsEntry_KenjiTominaga[] = {11, 0, gCreditsText_KenjiTominaga};
-static const struct CreditsEntry gCreditsEntry_YoshioTajiri[] = {11, 0, gCreditsText_YoshioTajiri};
-static const struct CreditsEntry gCreditsEntry_TeikoSasaki[] = {11, 0, gCreditsText_TeikoSasaki};
-static const struct CreditsEntry gCreditsEntry_SachikoHamano[] = {11, 0, gCreditsText_SachikoHamano};
-static const struct CreditsEntry gCreditsEntry_ChieMatsumiya[] = {11, 0, gCreditsText_ChieMatsumiya};
-static const struct CreditsEntry gCreditsEntry_AkikoShinozaki[] = {11, 0, gCreditsText_AkikoShinozaki};
-static const struct CreditsEntry gCreditsEntry_AstukoFujii[] = {11, 0, gCreditsText_AstukoFujii};
-static const struct CreditsEntry gCreditsEntry_NozomuSaito[] = {11, 0, gCreditsText_NozomuSaito};
-static const struct CreditsEntry gCreditsEntry_KenkichiToyama[] = {11, 0, gCreditsText_KenkichiToyama};
-static const struct CreditsEntry gCreditsEntry_SuguruNakatsui[] = {11, 0, gCreditsText_SuguruNakatsui};
-static const struct CreditsEntry gCreditsEntry_YumiFunasaka[] = {11, 0, gCreditsText_YumiFunasaka};
-static const struct CreditsEntry gCreditsEntry_NaokoYanase[] = {11, 0, gCreditsText_NaokoYanase};
-static const struct CreditsEntry gCreditsEntry_NCLSuperMarioClub[] = {11, 0, gCreditsText_NCLSuperMarioClub};
-static const struct CreditsEntry gCreditsEntry_AtsushiTada[] = {11, 0, gCreditsText_AtsushiTada};
-static const struct CreditsEntry gCreditsEntry_TakahiroOhnishi[] = {11, 0, gCreditsText_TakahiroOhnishi};
-static const struct CreditsEntry gCreditsEntry_NorihideOkamura[] = {11, 0, gCreditsText_NorihideOkamura};
-static const struct CreditsEntry gCreditsEntry_HiroNakamura[] = {11, 0, gCreditsText_HiroNakamura};
-static const struct CreditsEntry gCreditsEntry_HiroyukiUesugi[] = {11, 0, gCreditsText_HiroyukiUesugi};
-static const struct CreditsEntry gCreditsEntry_TerukiMurakawa[] = {11, 0, gCreditsText_TerukiMurakawa};
-static const struct CreditsEntry gCreditsEntry_AkiraKinashi[] = {11, 0, gCreditsText_AkiraKinashi};
-static const struct CreditsEntry gCreditsEntry_MichikoTakizawa[] = {11, 0, gCreditsText_MichikoTakizawa};
-static const struct CreditsEntry gCreditsEntry_MakikoTakada[] = {11, 0, gCreditsText_MakikoTakada};
-static const struct CreditsEntry gCreditsEntry_TakanaoKondo[] = {11, 0, gCreditsText_TakanaoKondo};
-static const struct CreditsEntry gCreditsEntry_AiMashima[] = {11, 0, gCreditsText_AiMashima};
-static const struct CreditsEntry gCreditsEntry_GakujiNomoto[] = {11, 0, gCreditsText_GakujiNomoto};
-static const struct CreditsEntry gCreditsEntry_TakehiroIzushi[] = {11, 0, gCreditsText_TakehiroIzushi};
-static const struct CreditsEntry gCreditsEntry_HitoshiYamagami[] = {11, 0, gCreditsText_HitoshiYamagami};
-static const struct CreditsEntry gCreditsEntry_KyokoWatanabe[] = {11, 0, gCreditsText_KyokoWatanabe};
-static const struct CreditsEntry gCreditsEntry_TakaoNakano[] = {11, 0, gCreditsText_TakaoNakano};
-static const struct CreditsEntry gCreditsEntry_HiroyukiJinnai[] = {11, 0, gCreditsText_HiroyukiJinnai};
-static const struct CreditsEntry gCreditsEntry_HiroakiTsuru[] = {11, 0, gCreditsText_HiroakiTsuru};
-static const struct CreditsEntry gCreditsEntry_TsunekazIshihara[] = {11, 0, gCreditsText_TsunekazIshihara};
-static const struct CreditsEntry gCreditsEntry_SatoruIwata[] = {11, 0, gCreditsText_SatoruIwata};
-static const struct CreditsEntry gCreditsEntry_KazuyaSuyama[] = {11, 0, gCreditsText_KazuyaSuyama};
-static const struct CreditsEntry gCreditsEntry_SatoshiMitsuhara[] = {11, 0, gCreditsText_SatoshiMitsuhara};
-static const struct CreditsEntry gCreditsEntry_JapanBrailleLibrary[] = {9, 0, gCreditsText_JapanBrailleLibrary};
-static const struct CreditsEntry gCreditsEntry_TomotakaKomura[] = {11, 0, gCreditsText_TomotakaKomura};
-static const struct CreditsEntry gCreditsEntry_MikikoOhhashi[] = {11, 0, gCreditsText_MikikoOhhashi};
-static const struct CreditsEntry gCreditsEntry_DaisukeHoshino[] = {11, 0, gCreditsText_DaisukeHoshino};
-static const struct CreditsEntry gCreditsEntry_KenjiroIto[] = {11, 0, gCreditsText_KenjiroIto};
-static const struct CreditsEntry gCreditsEntry_RuiKawaguchi[] = {11, 0, gCreditsText_RuiKawaguchi};
-static const struct CreditsEntry gCreditsEntry_ShunsukeKohori[] = {11, 0, gCreditsText_ShunsukeKohori};
-static const struct CreditsEntry gCreditsEntry_SachikoNakamichi[] = {11, 0, gCreditsText_SachikoNakamichi};
-static const struct CreditsEntry gCreditsEntry_FujikoNomura[] = {11, 0, gCreditsText_FujikoNomura};
-static const struct CreditsEntry gCreditsEntry_KazukiYoshihara[] = {11, 0, gCreditsText_KazukiYoshihara};
-static const struct CreditsEntry gCreditsEntry_RetsujiNomoto[] = {11, 0, gCreditsText_RetsujiNomoto};
-static const struct CreditsEntry gCreditsEntry_AzusaTajima[] = {11, 0, gCreditsText_AzusaTajima};
-static const struct CreditsEntry gCreditsEntry_ShusakuEgami[] = {11, 0, gCreditsText_ShusakuEgami};
-static const struct CreditsEntry gCreditsEntry_PackageAndManual[] = {0, 1, gCreditsText_PackageAndManual};
-static const struct CreditsEntry gCreditsEntry_EnglishVersion[] = {0, 1, gCreditsText_EnglishVersion};
-static const struct CreditsEntry gCreditsEntry_Translator[] = {0, 1, gCreditsText_Translator};
-static const struct CreditsEntry gCreditsEntry_TextEditor[] = {0, 1, gCreditsText_TextEditor};
-static const struct CreditsEntry gCreditsEntry_NCLCoordinator[] = {0, 1, gCreditsText_NCLCoordinator};
-static const struct CreditsEntry gCreditsEntry_GraphicDesigner[] = {0, 1, gCreditsText_GraphicDesigner};
-static const struct CreditsEntry gCreditsEntry_NOAProductTesting[] = {0, 1, gCreditsText_NOAProductTesting};
-static const struct CreditsEntry gCreditsEntry_HideyukiNakajima[] = {0, 0, gCreditsText_HideyukiNakajima};
-static const struct CreditsEntry gCreditsEntry_HidenoriSaeki[] = {0, 0, gCreditsText_HidenoriSaeki};
-static const struct CreditsEntry gCreditsEntry_YokoWatanabe[] = {0, 0, gCreditsText_YokoWatanabe};
-static const struct CreditsEntry gCreditsEntry_SakaeKimura[] = {0, 0, gCreditsText_SakaeKimura};
-static const struct CreditsEntry gCreditsEntry_ChiakiShinkai[] = {0, 0, gCreditsText_ChiakiShinkai};
-static const struct CreditsEntry gCreditsEntry_SethMcMahill[] = {0, 0, gCreditsText_SethMcMahill};
-static const struct CreditsEntry gCreditsEntry_NobOgasawara[] = {0, 0, gCreditsText_NobOgasawara};
-static const struct CreditsEntry gCreditsEntry_TeresaLillygren[] = {0, 0, gCreditsText_TeresaLillygren};
-static const struct CreditsEntry gCreditsEntry_KimikoNakamichi[] = {0, 0, gCreditsText_KimikoNakamichi};
-static const struct CreditsEntry gCreditsEntry_SouichiYamamoto[] = {0, 0, gCreditsText_SouichiYamamoto};
-static const struct CreditsEntry gCreditsEntry_YuichiroIto[] = {0, 0, gCreditsText_YuichiroIto};
-static const struct CreditsEntry gCreditsEntry_ThomasHertzog[] = {0, 0, gCreditsText_ThomasHertzog};
-static const struct CreditsEntry gCreditsEntry_MikaKurosawa[] = {0, 0, gCreditsText_MikaKurosawa};
-static const struct CreditsEntry gCreditsEntry_NationalFederationBlind[] = {0, 0, gCreditsText_NationalFederationBlind};
-static const struct CreditsEntry gCreditsEntry_PatriciaAMaurer[] = {0, 0, gCreditsText_PatriciaAMaurer};
-static const struct CreditsEntry gCreditsEntry_EuropeanBlindUnion[] = {0, 0, gCreditsText_EuropeanBlindUnion};
-static const struct CreditsEntry gCreditsEntry_AustralianBrailleAuthority[] = {0, 0, gCreditsText_AustralianBrailleAuthority};
-static const struct CreditsEntry gCreditsEntry_RoyalNewZealandFederationBlind[] = {0, 0, gCreditsText_RoyalNewZealandFederationBlind};
-static const struct CreditsEntry gCreditsEntry_MotoyasuTojima[] = {0, 0, gCreditsText_MotoyasuTojima};
-static const struct CreditsEntry gCreditsEntry_NicolaPrattBarlow[] = {0, 0, gCreditsText_NicolaPrattBarlow};
-static const struct CreditsEntry gCreditsEntry_ShellieDow[] = {0, 0, gCreditsText_ShellieDow};
-static const struct CreditsEntry gCreditsEntry_ErikJohnson[] = {0, 0, gCreditsText_ErikJohnson};
+static const struct CreditsEntry gCreditsEntry_EmptyString[] = {0, FALSE, gCreditsText_EmptyString};
+static const struct CreditsEntry gCreditsEntry_PkmnEmeraldVersion[] = {7, TRUE, gCreditsText_PkmnEmeraldVersion};
+static const struct CreditsEntry gCreditsEntry_Credits[] = {11, TRUE, gCreditsText_Credits};
+static const struct CreditsEntry gCreditsEntry_ExecutiveDirector[] = {8, TRUE, gCreditsText_ExecutiveDirector};
+static const struct CreditsEntry gCreditsEntry_Director[] = {12, TRUE, gCreditsText_Director};
+static const struct CreditsEntry gCreditsEntry_ArtDirector[] = {10, TRUE, gCreditsText_ArtDirector};
+static const struct CreditsEntry gCreditsEntry_BattleDirector[] = {10, TRUE, gCreditsText_BattleDirector};
+static const struct CreditsEntry gCreditsEntry_MainProgrammer[] = {10, TRUE, gCreditsText_MainProgrammer};
+static const struct CreditsEntry gCreditsEntry_BattleSystemPgrms[] = {8, TRUE, gCreditsText_BattleSystemPgrms};
+static const struct CreditsEntry gCreditsEntry_FieldSystemPgrms[] = {7, TRUE, gCreditsText_FieldSystemPgrms};
+static const struct CreditsEntry gCreditsEntry_Programmers[] = {12, TRUE, gCreditsText_Programmers};
+static const struct CreditsEntry gCreditsEntry_MainGraphicDesigner[] = {7, TRUE, gCreditsText_MainGraphicDesigner};
+static const struct CreditsEntry gCreditsEntry_GraphicDesigners[] = {9, TRUE, gCreditsText_GraphicDesigners};
+static const struct CreditsEntry gCreditsEntry_PkmnDesigners[] = {10, TRUE, gCreditsText_PkmnDesigners};
+static const struct CreditsEntry gCreditsEntry_MusicComposition[] = {13, TRUE, gCreditsText_MusicComposition};
+static const struct CreditsEntry gCreditsEntry_SoundEffectsAndPkmnVoices[] = {4, TRUE, gCreditsText_SoundEffectsAndPkmnVoices};
+static const struct CreditsEntry gCreditsEntry_GameDesigners[] = {11, TRUE, gCreditsText_GameDesigners};
+static const struct CreditsEntry gCreditsEntry_ScenarioPlot[] = {11, TRUE, gCreditsText_ScenarioPlot};
+static const struct CreditsEntry gCreditsEntry_Scenario[] = {13, TRUE, gCreditsText_Scenario};
+static const struct CreditsEntry gCreditsEntry_ScriptDesigners[] = {10, TRUE, gCreditsText_ScriptDesigners};
+static const struct CreditsEntry gCreditsEntry_MapDesigners[] = {11, TRUE, gCreditsText_MapDesigners};
+static const struct CreditsEntry gCreditsEntry_MapDataDesigners[] = {9, TRUE, gCreditsText_MapDataDesigners};
+static const struct CreditsEntry gCreditsEntry_ParametricDesigners[] = {9, TRUE, gCreditsText_ParametricDesigners};
+static const struct CreditsEntry gCreditsEntry_PokedexText[] = {11, TRUE, gCreditsText_PokedexText};
+static const struct CreditsEntry gCreditsEntry_EnvAndToolPgrms[] = {6, TRUE, gCreditsText_EnvAndToolPgrms};
+static const struct CreditsEntry gCreditsEntry_NCLProductTesting[] = {11, TRUE, gCreditsText_NCLProductTesting};
+static const struct CreditsEntry gCreditsEntry_SpecialThanks[] = {10, TRUE, gCreditsText_SpecialThanks};
+static const struct CreditsEntry gCreditsEntry_Coordinators[] = {11, TRUE, gCreditsText_Coordinators};
+static const struct CreditsEntry gCreditsEntry_Producers[] = {11, TRUE, gCreditsText_Producers};
+static const struct CreditsEntry gCreditsEntry_ExecProducers[] = {7, TRUE, gCreditsText_ExecProducers};
+static const struct CreditsEntry gCreditsEntry_InfoSupervisors[] = {10, TRUE, gCreditsText_InfoSupervisors};
+static const struct CreditsEntry gCreditsEntry_TaskManagers[] = {8, TRUE, gCreditsText_TaskManagers};
+static const struct CreditsEntry gCreditsEntry_BrailleCodeCheck[] = {10, TRUE, gCreditsText_BrailleCodeCheck};
+static const struct CreditsEntry gCreditsEntry_WorldDirector[] = {10, TRUE, gCreditsText_WorldDirector};
+static const struct CreditsEntry gCreditsEntry_BattleFrontierData[] = {8, TRUE, gCreditsText_BattleFrontierData};
+static const struct CreditsEntry gCreditsEntry_SupportProgrammers[] = {10, TRUE, gCreditsText_SupportProgrammers};
+static const struct CreditsEntry gCreditsEntry_Artwork[] = {12, TRUE, gCreditsText_Artwork};
+static const struct CreditsEntry gCreditsEntry_LeadProgrammer[] = {10, TRUE, gCreditsText_LeadProgrammer};
+static const struct CreditsEntry gCreditsEntry_LeadGraphicArtist[] = {9, TRUE, gCreditsText_LeadGraphicArtist};
+static const struct CreditsEntry gCreditsEntry_SatoshiTajiri[] = {11, FALSE, gCreditsText_SatoshiTajiri};
+static const struct CreditsEntry gCreditsEntry_JunichiMasuda[] = {11, FALSE, gCreditsText_JunichiMasuda};
+static const struct CreditsEntry gCreditsEntry_KenSugimori[] = {11, FALSE, gCreditsText_KenSugimori};
+static const struct CreditsEntry gCreditsEntry_ShigekiMorimoto[] = {11, FALSE, gCreditsText_ShigekiMorimoto};
+static const struct CreditsEntry gCreditsEntry_TetsuyaWatanabe[] = {11, FALSE, gCreditsText_TetsuyaWatanabe};
+static const struct CreditsEntry gCreditsEntry_HisashiSogabe[] = {11, FALSE, gCreditsText_HisashiSogabe};
+static const struct CreditsEntry gCreditsEntry_SosukeTamada[] = {11, FALSE, gCreditsText_SosukeTamada};
+static const struct CreditsEntry gCreditsEntry_AkitoMori[] = {11, FALSE, gCreditsText_AkitoMori};
+static const struct CreditsEntry gCreditsEntry_KeitaKagaya[] = {11, FALSE, gCreditsText_KeitaKagaya};
+static const struct CreditsEntry gCreditsEntry_YoshinoriMatsuda[] = {11, FALSE, gCreditsText_YoshinoriMatsuda};
+static const struct CreditsEntry gCreditsEntry_HiroyukiNakamura[] = {11, FALSE, gCreditsText_HiroyukiNakamura};
+static const struct CreditsEntry gCreditsEntry_MasaoTaya[] = {11, FALSE, gCreditsText_MasaoTaya};
+static const struct CreditsEntry gCreditsEntry_SatoshiNohara[] = {11, FALSE, gCreditsText_SatoshiNohara};
+static const struct CreditsEntry gCreditsEntry_TomomichiOhta[] = {11, FALSE, gCreditsText_TomomichiOhta};
+static const struct CreditsEntry gCreditsEntry_MiyukiIwasawa[] = {11, FALSE, gCreditsText_MiyukiIwasawa};
+static const struct CreditsEntry gCreditsEntry_TakenoriOhta[] = {11, FALSE, gCreditsText_TakenoriOhta};
+static const struct CreditsEntry gCreditsEntry_HironobuYoshida[] = {11, FALSE, gCreditsText_HironobuYoshida};
+static const struct CreditsEntry gCreditsEntry_MotofumiFujiwara[] = {11, FALSE, gCreditsText_MotofumiFujiwara};
+static const struct CreditsEntry gCreditsEntry_SatoshiOhta[] = {11, FALSE, gCreditsText_SatoshiOhta};
+static const struct CreditsEntry gCreditsEntry_AsukaIwashita[] = {11, FALSE, gCreditsText_AsukaIwashita};
+static const struct CreditsEntry gCreditsEntry_AimiTomita[] = {11, FALSE, gCreditsText_AimiTomita};
+static const struct CreditsEntry gCreditsEntry_TakaoUnno[] = {11, FALSE, gCreditsText_TakaoUnno};
+static const struct CreditsEntry gCreditsEntry_KanakoEo[] = {11, FALSE, gCreditsText_KanakoEo};
+static const struct CreditsEntry gCreditsEntry_JunOkutani[] = {11, FALSE, gCreditsText_JunOkutani};
+static const struct CreditsEntry gCreditsEntry_AtsukoNishida[] = {11, FALSE, gCreditsText_AtsukoNishida};
+static const struct CreditsEntry gCreditsEntry_MuneoSaito[] = {11, FALSE, gCreditsText_MuneoSaito};
+static const struct CreditsEntry gCreditsEntry_RenaYoshikawa[] = {11, FALSE, gCreditsText_RenaYoshikawa};
+static const struct CreditsEntry gCreditsEntry_GoIchinose[] = {11, FALSE, gCreditsText_GoIchinose};
+static const struct CreditsEntry gCreditsEntry_MorikazuAoki[] = {11, FALSE, gCreditsText_MorikazuAoki};
+static const struct CreditsEntry gCreditsEntry_KojiNishino[] = {11, FALSE, gCreditsText_KojiNishino};
+static const struct CreditsEntry gCreditsEntry_KenjiMatsushima[] = {11, FALSE, gCreditsText_KenjiMatsushima};
+static const struct CreditsEntry gCreditsEntry_TetsujiOhta[] = {11, FALSE, gCreditsText_TetsujiOhta};
+static const struct CreditsEntry gCreditsEntry_HitomiSato[] = {11, FALSE, gCreditsText_HitomiSato};
+static const struct CreditsEntry gCreditsEntry_TakeshiKawachimaru[] = {11, FALSE, gCreditsText_TakeshiKawachimaru};
+static const struct CreditsEntry gCreditsEntry_TeruyukiShimoyamada[] = {11, FALSE, gCreditsText_TeruyukiShimoyamada};
+static const struct CreditsEntry gCreditsEntry_ShigeruOhmori[] = {11, FALSE, gCreditsText_ShigeruOhmori};
+static const struct CreditsEntry gCreditsEntry_TadashiTakahashi[] = {11, FALSE, gCreditsText_TadashiTakahashi};
+static const struct CreditsEntry gCreditsEntry_ToshinobuMatsumiya[] = {11, FALSE, gCreditsText_ToshinobuMatsumiya};
+static const struct CreditsEntry gCreditsEntry_AkihitoTomisawa[] = {11, FALSE, gCreditsText_AkihitoTomisawa};
+static const struct CreditsEntry gCreditsEntry_HirokiEnomoto[] = {11, FALSE, gCreditsText_HirokiEnomoto};
+static const struct CreditsEntry gCreditsEntry_KazuyukiTerada[] = {11, FALSE, gCreditsText_KazuyukiTerada};
+static const struct CreditsEntry gCreditsEntry_YuriSakurai[] = {11, FALSE, gCreditsText_YuriSakurai};
+static const struct CreditsEntry gCreditsEntry_HiromiSagawa[] = {11, FALSE, gCreditsText_HiromiSagawa};
+static const struct CreditsEntry gCreditsEntry_KenjiTominaga[] = {11, FALSE, gCreditsText_KenjiTominaga};
+static const struct CreditsEntry gCreditsEntry_YoshioTajiri[] = {11, FALSE, gCreditsText_YoshioTajiri};
+static const struct CreditsEntry gCreditsEntry_TeikoSasaki[] = {11, FALSE, gCreditsText_TeikoSasaki};
+static const struct CreditsEntry gCreditsEntry_SachikoHamano[] = {11, FALSE, gCreditsText_SachikoHamano};
+static const struct CreditsEntry gCreditsEntry_ChieMatsumiya[] = {11, FALSE, gCreditsText_ChieMatsumiya};
+static const struct CreditsEntry gCreditsEntry_AkikoShinozaki[] = {11, FALSE, gCreditsText_AkikoShinozaki};
+static const struct CreditsEntry gCreditsEntry_AstukoFujii[] = {11, FALSE, gCreditsText_AstukoFujii};
+static const struct CreditsEntry gCreditsEntry_NozomuSaito[] = {11, FALSE, gCreditsText_NozomuSaito};
+static const struct CreditsEntry gCreditsEntry_KenkichiToyama[] = {11, FALSE, gCreditsText_KenkichiToyama};
+static const struct CreditsEntry gCreditsEntry_SuguruNakatsui[] = {11, FALSE, gCreditsText_SuguruNakatsui};
+static const struct CreditsEntry gCreditsEntry_YumiFunasaka[] = {11, FALSE, gCreditsText_YumiFunasaka};
+static const struct CreditsEntry gCreditsEntry_NaokoYanase[] = {11, FALSE, gCreditsText_NaokoYanase};
+static const struct CreditsEntry gCreditsEntry_NCLSuperMarioClub[] = {11, FALSE, gCreditsText_NCLSuperMarioClub};
+static const struct CreditsEntry gCreditsEntry_AtsushiTada[] = {11, FALSE, gCreditsText_AtsushiTada};
+static const struct CreditsEntry gCreditsEntry_TakahiroOhnishi[] = {11, FALSE, gCreditsText_TakahiroOhnishi};
+static const struct CreditsEntry gCreditsEntry_NorihideOkamura[] = {11, FALSE, gCreditsText_NorihideOkamura};
+static const struct CreditsEntry gCreditsEntry_HiroNakamura[] = {11, FALSE, gCreditsText_HiroNakamura};
+static const struct CreditsEntry gCreditsEntry_HiroyukiUesugi[] = {11, FALSE, gCreditsText_HiroyukiUesugi};
+static const struct CreditsEntry gCreditsEntry_TerukiMurakawa[] = {11, FALSE, gCreditsText_TerukiMurakawa};
+static const struct CreditsEntry gCreditsEntry_AkiraKinashi[] = {11, FALSE, gCreditsText_AkiraKinashi};
+static const struct CreditsEntry gCreditsEntry_MichikoTakizawa[] = {11, FALSE, gCreditsText_MichikoTakizawa};
+static const struct CreditsEntry gCreditsEntry_MakikoTakada[] = {11, FALSE, gCreditsText_MakikoTakada};
+static const struct CreditsEntry gCreditsEntry_TakanaoKondo[] = {11, FALSE, gCreditsText_TakanaoKondo};
+static const struct CreditsEntry gCreditsEntry_AiMashima[] = {11, FALSE, gCreditsText_AiMashima};
+static const struct CreditsEntry gCreditsEntry_GakujiNomoto[] = {11, FALSE, gCreditsText_GakujiNomoto};
+static const struct CreditsEntry gCreditsEntry_TakehiroIzushi[] = {11, FALSE, gCreditsText_TakehiroIzushi};
+static const struct CreditsEntry gCreditsEntry_HitoshiYamagami[] = {11, FALSE, gCreditsText_HitoshiYamagami};
+static const struct CreditsEntry gCreditsEntry_KyokoWatanabe[] = {11, FALSE, gCreditsText_KyokoWatanabe};
+static const struct CreditsEntry gCreditsEntry_TakaoNakano[] = {11, FALSE, gCreditsText_TakaoNakano};
+static const struct CreditsEntry gCreditsEntry_HiroyukiJinnai[] = {11, FALSE, gCreditsText_HiroyukiJinnai};
+static const struct CreditsEntry gCreditsEntry_HiroakiTsuru[] = {11, FALSE, gCreditsText_HiroakiTsuru};
+static const struct CreditsEntry gCreditsEntry_TsunekazIshihara[] = {11, FALSE, gCreditsText_TsunekazIshihara};
+static const struct CreditsEntry gCreditsEntry_SatoruIwata[] = {11, FALSE, gCreditsText_SatoruIwata};
+static const struct CreditsEntry gCreditsEntry_KazuyaSuyama[] = {11, FALSE, gCreditsText_KazuyaSuyama};
+static const struct CreditsEntry gCreditsEntry_SatoshiMitsuhara[] = {11, FALSE, gCreditsText_SatoshiMitsuhara};
+static const struct CreditsEntry gCreditsEntry_JapanBrailleLibrary[] = {9, FALSE, gCreditsText_JapanBrailleLibrary};
+static const struct CreditsEntry gCreditsEntry_TomotakaKomura[] = {11, FALSE, gCreditsText_TomotakaKomura};
+static const struct CreditsEntry gCreditsEntry_MikikoOhhashi[] = {11, FALSE, gCreditsText_MikikoOhhashi};
+static const struct CreditsEntry gCreditsEntry_DaisukeHoshino[] = {11, FALSE, gCreditsText_DaisukeHoshino};
+static const struct CreditsEntry gCreditsEntry_KenjiroIto[] = {11, FALSE, gCreditsText_KenjiroIto};
+static const struct CreditsEntry gCreditsEntry_RuiKawaguchi[] = {11, FALSE, gCreditsText_RuiKawaguchi};
+static const struct CreditsEntry gCreditsEntry_ShunsukeKohori[] = {11, FALSE, gCreditsText_ShunsukeKohori};
+static const struct CreditsEntry gCreditsEntry_SachikoNakamichi[] = {11, FALSE, gCreditsText_SachikoNakamichi};
+static const struct CreditsEntry gCreditsEntry_FujikoNomura[] = {11, FALSE, gCreditsText_FujikoNomura};
+static const struct CreditsEntry gCreditsEntry_KazukiYoshihara[] = {11, FALSE, gCreditsText_KazukiYoshihara};
+static const struct CreditsEntry gCreditsEntry_RetsujiNomoto[] = {11, FALSE, gCreditsText_RetsujiNomoto};
+static const struct CreditsEntry gCreditsEntry_AzusaTajima[] = {11, FALSE, gCreditsText_AzusaTajima};
+static const struct CreditsEntry gCreditsEntry_ShusakuEgami[] = {11, FALSE, gCreditsText_ShusakuEgami};
+static const struct CreditsEntry gCreditsEntry_PackageAndManual[] = {0, TRUE, gCreditsText_PackageAndManual};
+static const struct CreditsEntry gCreditsEntry_EnglishVersion[] = {0, TRUE, gCreditsText_EnglishVersion};
+static const struct CreditsEntry gCreditsEntry_Translator[] = {0, TRUE, gCreditsText_Translator};
+static const struct CreditsEntry gCreditsEntry_TextEditor[] = {0, TRUE, gCreditsText_TextEditor};
+static const struct CreditsEntry gCreditsEntry_NCLCoordinator[] = {0, TRUE, gCreditsText_NCLCoordinator};
+static const struct CreditsEntry gCreditsEntry_GraphicDesigner[] = {0, TRUE, gCreditsText_GraphicDesigner};
+static const struct CreditsEntry gCreditsEntry_NOAProductTesting[] = {0, TRUE, gCreditsText_NOAProductTesting};
+static const struct CreditsEntry gCreditsEntry_HideyukiNakajima[] = {0, FALSE, gCreditsText_HideyukiNakajima};
+static const struct CreditsEntry gCreditsEntry_HidenoriSaeki[] = {0, FALSE, gCreditsText_HidenoriSaeki};
+static const struct CreditsEntry gCreditsEntry_YokoWatanabe[] = {0, FALSE, gCreditsText_YokoWatanabe};
+static const struct CreditsEntry gCreditsEntry_SakaeKimura[] = {0, FALSE, gCreditsText_SakaeKimura};
+static const struct CreditsEntry gCreditsEntry_ChiakiShinkai[] = {0, FALSE, gCreditsText_ChiakiShinkai};
+static const struct CreditsEntry gCreditsEntry_SethMcMahill[] = {0, FALSE, gCreditsText_SethMcMahill};
+static const struct CreditsEntry gCreditsEntry_NobOgasawara[] = {0, FALSE, gCreditsText_NobOgasawara};
+static const struct CreditsEntry gCreditsEntry_TeresaLillygren[] = {0, FALSE, gCreditsText_TeresaLillygren};
+static const struct CreditsEntry gCreditsEntry_KimikoNakamichi[] = {0, FALSE, gCreditsText_KimikoNakamichi};
+static const struct CreditsEntry gCreditsEntry_SouichiYamamoto[] = {0, FALSE, gCreditsText_SouichiYamamoto};
+static const struct CreditsEntry gCreditsEntry_YuichiroIto[] = {0, FALSE, gCreditsText_YuichiroIto};
+static const struct CreditsEntry gCreditsEntry_ThomasHertzog[] = {0, FALSE, gCreditsText_ThomasHertzog};
+static const struct CreditsEntry gCreditsEntry_MikaKurosawa[] = {0, FALSE, gCreditsText_MikaKurosawa};
+static const struct CreditsEntry gCreditsEntry_NationalFederationBlind[] = {0, FALSE, gCreditsText_NationalFederationBlind};
+static const struct CreditsEntry gCreditsEntry_PatriciaAMaurer[] = {0, FALSE, gCreditsText_PatriciaAMaurer};
+static const struct CreditsEntry gCreditsEntry_EuropeanBlindUnion[] = {0, FALSE, gCreditsText_EuropeanBlindUnion};
+static const struct CreditsEntry gCreditsEntry_AustralianBrailleAuthority[] = {0, FALSE, gCreditsText_AustralianBrailleAuthority};
+static const struct CreditsEntry gCreditsEntry_RoyalNewZealandFederationBlind[] = {0, FALSE, gCreditsText_RoyalNewZealandFederationBlind};
+static const struct CreditsEntry gCreditsEntry_MotoyasuTojima[] = {0, FALSE, gCreditsText_MotoyasuTojima};
+static const struct CreditsEntry gCreditsEntry_NicolaPrattBarlow[] = {0, FALSE, gCreditsText_NicolaPrattBarlow};
+static const struct CreditsEntry gCreditsEntry_ShellieDow[] = {0, FALSE, gCreditsText_ShellieDow};
+static const struct CreditsEntry gCreditsEntry_ErikJohnson[] = {0, FALSE, gCreditsText_ErikJohnson};
#define _ gCreditsEntry_EmptyString
static const struct CreditsEntry *const gCreditsEntryPointerTable[][5] =
@@ -934,7 +934,7 @@ static const struct CreditsEntry *const gCreditsEntryPointerTable[][5] =
};
#undef _
-static const struct BgTemplate gUnknown_085E6F68[] =
+static const struct BgTemplate sBackgroundTemplates[] =
{
{
.bg = 0,
@@ -946,7 +946,7 @@ static const struct BgTemplate gUnknown_085E6F68[] =
.baseTile = 0
},
};
-static const struct WindowTemplate gUnknown_085E6F6C[] =
+static const struct WindowTemplate sWindowTemplates[] =
{
{
.bg = 0,
@@ -1102,51 +1102,51 @@ static const struct SpriteTemplate gUnknown_085E7068 =
.callback = sub_81772B8,
};
-static void sub_8175744(u8 taskIdA);
-static void sub_8175774(u8 taskIdA);
+static void Task_WaitPaletteFade(u8 taskIdA);
+static void Task_ProgressCreditTasks(u8 taskIdA);
static void sub_8175808(u8 taskIdA);
static void c2_080C9BFC(u8 taskIdA);
-static void sub_81758E4(u8 taskIdA);
+static void Task_CreditsLoadGrassScene(u8 taskIdA);
static void sub_81758A4(u8 taskIdA);
-static void sub_8175A9C(u8 taskIdA);
-static void sub_8175AE4(u8 taskIdA);
-static void sub_8175B1C(u8 taskIdA);
-static void sub_8175B90(u8 taskIdA);
-static void sub_8175BD8(u8 taskIdA);
-static void sub_8175C34(u8 taskIdA);
-static void sub_8175CC8(u8 taskIdA);
-static void sub_8175CE4(void);
+static void Task_CreditsTheEnd1(u8 taskIdA);
+static void Task_CreditsTheEnd2(u8 taskIdA);
+static void Task_CreditsTheEnd3(u8 taskIdA);
+static void Task_CreditsTheEnd4(u8 taskIdA);
+static void Task_CreditsTheEnd5(u8 taskIdA);
+static void Task_CreditsTheEnd6(u8 taskIdA);
+static void Task_CreditsSoftReset(u8 taskIdA);
+static void ResetGpuAndVram(void);
static void sub_8175DA0(u8 taskIdB);
-static u8 sub_817603C(u8 page, u8 taskIdA);
+static u8 CheckChangeScene(u8 page, u8 taskIdA);
static void sub_81760FC(u8 taskIdA);
static void sub_817651C(u8 taskIdA);
static void sub_817624C(u8 taskIdA);
static bool8 sub_8176AB0(u8 data, u8 taskIdA);
-static void sub_8176CA0(u8 taskIdA);
-static void sub_8176D1C(u16, u16, u16);
+static void ResetCreditsTasks(u8 taskIdA);
+static void LoadTheEndScreen(u16, u16, u16);
static void sub_8176E40(u16 arg0, u16 palette);
static void sub_8176EE8(struct Sprite *sprite);
static void sub_8176F90(struct Sprite *sprite);
static u8 sub_8177224(u16 species, s16 x, s16 y, u16 position);
static void sub_8177388(void);
-static void sub_81754C8(void)
+static void CreditsVBlankCallback(void)
{
LoadOam();
ProcessSpriteCopyRequests();
TransferPlttBuffer();
}
-static void sub_81754DC(void)
+static void CB2_RunCreditsSequence(void)
{
RunTasks();
AnimateSprites();
if ((gMain.heldKeys & B_BUTTON)
&& gHasHallOfFameRecords != 0
- && gTasks[gUnknown_0203BCE2].func == sub_8175774)
+ && gTasks[gUnknown_0203BCE2].func == Task_ProgressCreditTasks)
{
- sub_81754C8();
+ CreditsVBlankCallback();
RunTasks();
AnimateSprites();
gUnknown_0203BCE5 = 1;
@@ -1158,10 +1158,10 @@ static void sub_81754DC(void)
static void sub_8175548(void)
{
ResetBgsAndClearDma3BusyFlags(0);
- InitBgsFromTemplates(0, gUnknown_085E6F68, 1);
+ InitBgsFromTemplates(0, sBackgroundTemplates, 1);
SetBgTilemapBuffer(0, AllocZeroed(0x800));
LoadPalette(gUnknown_085E56F0, 0x80, 0x40);
- InitWindows(gUnknown_085E6F6C);
+ InitWindows(sWindowTemplates);
DeactivateAllTextPrinters();
PutWindowTilemap(0);
CopyWindowToVram(0, 3);
@@ -1177,14 +1177,14 @@ static void sub_81755A4(void)
Free(ptr);
}
-static void sub_81755BC(const u8 *string, u8 y, u8 a2)
+static void PrintCreditsText(const u8 *string, u8 y, bool8 isTitle)
{
u8 x;
u8 color[3];
color[0] = 0;
- if (a2 == 1)
+ if (isTitle == TRUE)
{
color[1] = 3;
color[2] = 4;
@@ -1199,20 +1199,20 @@ static void sub_81755BC(const u8 *string, u8 y, u8 a2)
AddTextPrinterParameterized4(0, 1, x, y, 1, 0, color, -1, string);
}
-void sub_8175620(void)
+void CB2_StartCreditsSequence(void)
{
u8 taskIdA;
s16 taskIdC;
u8 taskIdB;
- sub_8175CE4();
+ ResetGpuAndVram();
SetVBlankCallback(NULL);
InitHeap(gHeap, HEAP_SIZE);
ResetPaletteFade();
ResetTasks();
sub_8175548();
- taskIdA = CreateTask(sub_8175744, 0);
+ taskIdA = CreateTask(Task_WaitPaletteFade, 0);
gTasks[taskIdA].data[TDA_4] = 0;
gTasks[taskIdA].data[TDA_7] = 0;
@@ -1237,9 +1237,9 @@ void sub_8175620(void)
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
EnableInterrupts(INTR_FLAG_VBLANK);
- SetVBlankCallback(sub_81754C8);
+ SetVBlankCallback(CreditsVBlankCallback);
m4aSongNumStart(MUS_THANKFOR);
- SetMainCallback2(sub_81754DC);
+ SetMainCallback2(CB2_RunCreditsSequence);
gUnknown_0203BCE5 = 0;
gUnknown_0203BCE8 = AllocZeroed(sizeof(struct Unk201C000));
@@ -1252,13 +1252,13 @@ void sub_8175620(void)
gUnknown_0203BCE2 = taskIdA;
}
-static void sub_8175744(u8 taskIdA)
+static void Task_WaitPaletteFade(u8 taskIdA)
{
if (!gPaletteFade.active)
- gTasks[taskIdA].func = sub_8175774;
+ gTasks[taskIdA].func = Task_ProgressCreditTasks;
}
-static void sub_8175774(u8 taskIdA)
+static void Task_ProgressCreditTasks(u8 taskIdA)
{
u16 data1;
@@ -1270,7 +1270,7 @@ static void sub_8175774(u8 taskIdA)
gTasks[taskIdC].data[TDC_0] = 30;
gTasks[taskIdA].data[TDA_12] = 0x100;
- gTasks[taskIdA].func = sub_8175A9C;
+ gTasks[taskIdA].func = Task_CreditsTheEnd1;
return;
}
@@ -1298,7 +1298,7 @@ static void sub_8175808(u8 taskIdA)
if (!gPaletteFade.active)
{
SetGpuReg(REG_OFFSET_DISPCNT, 0);
- sub_8176CA0(taskIdA);
+ ResetCreditsTasks(taskIdA);
gTasks[taskIdA].func = c2_080C9BFC;
}
}
@@ -1313,8 +1313,8 @@ static void c2_080C9BFC(u8 taskIdA)
{
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
EnableInterrupts(INTR_FLAG_VBLANK);
- SetVBlankCallback(sub_81754C8);
- gTasks[taskIdA].func = sub_8175744;
+ SetVBlankCallback(CreditsVBlankCallback);
+ gTasks[taskIdA].func = Task_WaitPaletteFade;
}
}
@@ -1323,12 +1323,12 @@ static void sub_81758A4(u8 taskIdA)
if (!gPaletteFade.active)
{
SetGpuReg(REG_OFFSET_DISPCNT, 0);
- sub_8176CA0(taskIdA);
- gTasks[taskIdA].func = sub_81758E4;
+ ResetCreditsTasks(taskIdA);
+ gTasks[taskIdA].func = Task_CreditsLoadGrassScene;
}
}
-static void sub_81758E4(u8 taskIdA)
+static void Task_CreditsLoadGrassScene(u8 taskIdA)
{
switch (gMain.state)
{
@@ -1387,12 +1387,12 @@ static void sub_81758E4(u8 taskIdA)
gMain.state = 0;
gUnknown_0203BD28 = 0;
- gTasks[taskIdA].func = sub_8175744;
+ gTasks[taskIdA].func = Task_WaitPaletteFade;
break;
}
}
-static void sub_8175A9C(u8 taskIdA)
+static void Task_CreditsTheEnd1(u8 taskIdA)
{
if (gTasks[taskIdA].data[TDA_12])
{
@@ -1401,23 +1401,23 @@ static void sub_8175A9C(u8 taskIdA)
}
BeginNormalPaletteFade(0xFFFFFFFF, 12, 0, 16, RGB_BLACK);
- gTasks[taskIdA].func = sub_8175AE4;
+ gTasks[taskIdA].func = Task_CreditsTheEnd2;
}
-static void sub_8175AE4(u8 taskIdA)
+static void Task_CreditsTheEnd2(u8 taskIdA)
{
if (!gPaletteFade.active)
{
- sub_8176CA0(taskIdA);
- gTasks[taskIdA].func = sub_8175B1C;
+ ResetCreditsTasks(taskIdA);
+ gTasks[taskIdA].func = Task_CreditsTheEnd3;
}
}
-static void sub_8175B1C(u8 taskIdA)
+static void Task_CreditsTheEnd3(u8 taskIdA)
{
- sub_8175CE4();
+ ResetGpuAndVram();
ResetPaletteFade();
- sub_8176D1C(0, 0x3800, 0);
+ LoadTheEndScreen(0, 0x3800, 0);
ResetSpriteData();
FreeAllSpritePalettes();
BeginNormalPaletteFade(0xFFFFFFFF, 8, 16, 0, RGB_BLACK);
@@ -1432,11 +1432,11 @@ static void sub_8175B1C(u8 taskIdA)
| DISPCNT_OBJ_1D_MAP
| DISPCNT_BG0_ON);
- gTasks[taskIdA].data[TDA_0] = 0xEB;
- gTasks[taskIdA].func = sub_8175B90;
+ gTasks[taskIdA].data[TDA_0] = 235; //set this to 215 to actually show "THE END" in time to the last song beat
+ gTasks[taskIdA].func = Task_CreditsTheEnd4;
}
-static void sub_8175B90(u8 taskIdA)
+static void Task_CreditsTheEnd4(u8 taskIdA)
{
if (gTasks[taskIdA].data[TDA_0])
{
@@ -1445,10 +1445,10 @@ static void sub_8175B90(u8 taskIdA)
}
BeginNormalPaletteFade(0xFFFFFFFF, 6, 0, 16, RGB_BLACK);
- gTasks[taskIdA].func = sub_8175BD8;
+ gTasks[taskIdA].func = Task_CreditsTheEnd5;
}
-static void sub_8175BD8(u8 taskIdA)
+static void Task_CreditsTheEnd5(u8 taskIdA)
{
if (!gPaletteFade.active)
{
@@ -1456,11 +1456,11 @@ static void sub_8175BD8(u8 taskIdA)
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0, RGB_BLACK);
gTasks[taskIdA].data[TDA_0] = 7200;
- gTasks[taskIdA].func = sub_8175C34;
+ gTasks[taskIdA].func = Task_CreditsTheEnd6;
}
}
-static void sub_8175C34(u8 taskIdA)
+static void Task_CreditsTheEnd6(u8 taskIdA)
{
if (!gPaletteFade.active)
{
@@ -1468,7 +1468,7 @@ static void sub_8175C34(u8 taskIdA)
{
FadeOutBGM(4);
BeginNormalPaletteFade(0xFFFFFFFF, 8, 0, 16, RGB_WHITEALPHA);
- gTasks[taskIdA].func = sub_8175CC8;
+ gTasks[taskIdA].func = Task_CreditsSoftReset;
return;
}
@@ -1482,13 +1482,13 @@ static void sub_8175C34(u8 taskIdA)
}
}
-static void sub_8175CC8(u8 taskIdA)
+static void Task_CreditsSoftReset(u8 taskIdA)
{
if (!gPaletteFade.active)
SoftReset(0xFF);
}
-static void sub_8175CE4(void)
+static void ResetGpuAndVram(void)
{
SetGpuReg(REG_OFFSET_DISPCNT, 0);
@@ -1539,12 +1539,15 @@ static void sub_8175DA0(u8 taskIdB)
gTasks[taskIdB].data[TDB_0] += 1;
return;
case 2:
- if (gTasks[gTasks[taskIdB].data[TDB_TASK_A_ID]].func == sub_8175774)
+ if (gTasks[gTasks[taskIdB].data[TDB_TASK_A_ID]].func == Task_ProgressCreditTasks)
{
if (gTasks[taskIdB].data[TDB_CURRENT_PAGE] < PAGE_COUNT)
{
for (i = 0; i < 5; i++)
- sub_81755BC(gCreditsEntryPointerTable[gTasks[taskIdB].data[TDB_CURRENT_PAGE]][i]->text, 5 + i * 16, gCreditsEntryPointerTable[gTasks[taskIdB].data[TDB_CURRENT_PAGE]][i]->var_1);
+ PrintCreditsText(
+ gCreditsEntryPointerTable[gTasks[taskIdB].data[TDB_CURRENT_PAGE]][i]->text,
+ 5 + i * 16,
+ gCreditsEntryPointerTable[gTasks[taskIdB].data[TDB_CURRENT_PAGE]][i]->isTitle);
CopyWindowToVram(0, 2);
@@ -1578,7 +1581,7 @@ static void sub_8175DA0(u8 taskIdB)
return;
}
- if (sub_817603C((u8)gTasks[taskIdB].data[TDB_CURRENT_PAGE], (u8)gTasks[taskIdB].data[TDB_TASK_A_ID]))
+ if (CheckChangeScene((u8)gTasks[taskIdB].data[TDB_CURRENT_PAGE], (u8)gTasks[taskIdB].data[TDB_TASK_A_ID]))
{
gTasks[taskIdB].data[TDB_0] += 1;
return;
@@ -1606,7 +1609,7 @@ static void sub_8175DA0(u8 taskIdB)
}
}
-static u8 sub_817603C(u8 page, u8 taskIdA)
+static u8 CheckChangeScene(u8 page, u8 taskIdA)
{
// Starts with bike + ocean + morning
@@ -1685,7 +1688,7 @@ static void sub_81760FC(u8 taskIdD)
gTasks[taskIdD].data[TDD_STATE]++;
break;
case 2:
- if (gUnknown_0203BCE8->unk8E == 71 || gTasks[gTasks[taskIdD].data[TDD_TASK_A_ID]].func != sub_8175774)
+ if (gUnknown_0203BCE8->unk8E == 71 || gTasks[gTasks[taskIdD].data[TDD_TASK_A_ID]].func != Task_ProgressCreditTasks)
break;
r2 = sub_8177224(gUnknown_0203BCE8->unk0[gUnknown_0203BCE8->unk92], gUnknown_085E6F7C[gUnknown_0203BCE8->unk90][0], gUnknown_085E6F7C[gUnknown_0203BCE8->unk90][1], gUnknown_0203BCE8->unk90);
if (gUnknown_0203BCE8->unk92 < gUnknown_0203BCE8->unk94 - 1)
@@ -2006,7 +2009,7 @@ static bool8 sub_8176AB0(u8 data, u8 taskIdA)
return FALSE;
}
-static void sub_8176CA0(u8 taskIdA)
+static void ResetCreditsTasks(u8 taskIdA)
{
if (gTasks[taskIdA].data[TDA_0] != 0)
{
@@ -2035,7 +2038,7 @@ static void sub_8176CA0(u8 taskIdA)
gUnknown_0203BD28 = 1;
}
-static void sub_8176D1C(u16 arg0, u16 arg1, u16 arg2)
+static void LoadTheEndScreen(u16 arg0, u16 arg1, u16 arg2)
{
u16 baseTile;
u16 i;
@@ -2084,12 +2087,12 @@ static void sub_8176E40(u16 arg0, u16 palette)
for (pos = 0; pos < 32 * 32; pos++)
((u16 *) (VRAM + arg0))[pos] = baseTile + 1;
- sub_8176DBC(gUnknown_085E5BAC, 3, 7, arg0, palette);
- sub_8176DBC(gUnknown_085E5BBB, 7, 7, arg0, palette);
- sub_8176DBC(gUnknown_085E5BCA, 11, 7, arg0, palette);
- sub_8176DBC(gUnknown_085E5BCA, 16, 7, arg0, palette);
- sub_8176DBC(gUnknown_085E5BD9, 20, 7, arg0, palette);
- sub_8176DBC(gUnknown_085E5BE8, 24, 7, arg0, palette);
+ sub_8176DBC(sTheEnd_LetterTMap, 3, 7, arg0, palette);
+ sub_8176DBC(sTheEnd_LetterHMap, 7, 7, arg0, palette);
+ sub_8176DBC(sTheEnd_LetterEMap, 11, 7, arg0, palette);
+ sub_8176DBC(sTheEnd_LetterEMap, 16, 7, arg0, palette);
+ sub_8176DBC(sTheEnd_LetterNMap, 20, 7, arg0, palette);
+ sub_8176DBC(sTheEnd_LetterDMap, 24, 7, arg0, palette);
}
static void sub_8176EE8(struct Sprite *sprite)
diff --git a/src/crt0.s b/src/crt0.s
new file mode 100644
index 000000000..9ed678968
--- /dev/null
+++ b/src/crt0.s
@@ -0,0 +1,199 @@
+ .include "constants/gba_constants.inc"
+
+ .syntax unified
+
+ .global Start
+
+ .text
+
+ .arm
+
+Start: @ 8000000
+ b Init
+
+ .include "asm/rom_header.inc"
+
+@ 80000C0
+ .word 0
+
+ .global GPIOPortData
+GPIOPortData: @ 80000C4
+ .2byte 0
+
+ .global GPIOPortDirection
+GPIOPortDirection: @ 80000C6
+ .2byte 0
+
+ .global GPIOPortReadEnable
+GPIOPortReadEnable: @ 80000C8
+ .2byte 0
+
+@ 80000CA
+ .2byte 0
+
+@ 80000CC
+ .space 0x34
+
+ .4byte 3
+ .4byte 2
+
+ .ascii "pokemon emerald version"
+ .space 9
+
+ .4byte gMonFrontPicTable
+ .4byte gMonBackPicTable
+ .4byte gMonPaletteTable
+ .4byte gMonShinyPaletteTable
+ .4byte gMonIconTable
+ .4byte gMonIconPaletteIndices
+ .4byte gMonIconPaletteTable
+ .4byte gSpeciesNames
+ .4byte gMoveNames
+ .4byte gDecorations
+
+ .4byte 0x00001270, 0x0000139c, 0x00000018, 0x00000988
+ .4byte 0x00003b24, 0x00000046, 0x000008e4, 0x000008ac
+ .4byte 0x00000182
+
+ .byte 0x07, 0x0a, 0x0a, 0x0a, 0x0c, 0x0c, 0x06, 0x0c
+ .byte 0x06, 0x10, 0x12, 0x0c, 0x0f, 0x0b, 0x01, 0x08
+
+ .4byte 0x0000000c, 0x00000f2c, 0x00003d88, 0x00000234
+ .4byte 0x00000238, 0x00000009, 0x0000000a, 0x00000000
+ .4byte 0x00000008, 0x00000ca8, 0x00000ca8, 0x000031c7
+ .4byte 0x000031b3, 0x00000000
+
+ .4byte gBaseStats
+ .4byte gAbilityNames
+ .4byte gAbilityDescriptionPointers
+ .4byte gItems
+ .4byte gBattleMoves
+ .4byte gBallSpriteSheets
+ .4byte gBallSpritePalettes
+
+ .4byte 0x000000a8, 0x00000864, 0x0000089b
+
+ .byte 0x1e, 0x1e, 0x10, 0x40
+
+ .4byte 0x0000322e, 0x00000498, 0x000031a8, 0x000031f8
+ .4byte 0x00000034, 0x00000000, 0x00000000
+
+ .arm
+ .align 2, 0
+ .global Init
+Init: @ 8000204
+ mov r0, PSR_IRQ_MODE
+ msr cpsr_cf, r0
+ ldr sp, sp_irq
+ mov r0, PSR_SYS_MODE
+ msr cpsr_cf, r0
+ ldr sp, sp_sys
+ ldr r1, =INTR_VECTOR
+ adr r0, IntrMain
+ str r0, [r1]
+ ldr r1, =AgbMain + 1
+ mov lr, pc
+ bx r1
+ b Init
+
+ .align 2, 0
+sp_sys: .word IWRAM_END - 0x1c0
+sp_irq: .word IWRAM_END - 0x60
+
+ .pool
+
+ .arm
+ .align 2, 0
+ .global IntrMain
+IntrMain: @ 8000248
+ mov r3, REG_BASE
+ add r3, r3, 0x200
+ ldr r2, [r3, OFFSET_REG_IE - 0x200]
+ ldrh r1, [r3, OFFSET_REG_IME - 0x200]
+ mrs r0, spsr
+ stmdb sp!, {r0-r3,lr}
+ mov r0, 0
+ strh r0, [r3, OFFSET_REG_IME - 0x200]
+ and r1, r2, r2, lsr 16
+ mov r12, 0
+ ands r0, r1, INTR_FLAG_VCOUNT
+ bne IntrMain_FoundIntr
+ add r12, r12, 0x4
+ mov r0, 0x1
+ strh r0, [r3, OFFSET_REG_IME - 0x200]
+ ands r0, r1, INTR_FLAG_SERIAL
+ bne IntrMain_FoundIntr
+ add r12, r12, 0x4
+ ands r0, r1, INTR_FLAG_TIMER3
+ bne IntrMain_FoundIntr
+ add r12, r12, 0x4
+ ands r0, r1, INTR_FLAG_HBLANK
+ bne IntrMain_FoundIntr
+ add r12, r12, 0x4
+ ands r0, r1, INTR_FLAG_VBLANK
+ bne IntrMain_FoundIntr
+ add r12, r12, 0x4
+ ands r0, r1, INTR_FLAG_TIMER0
+ bne IntrMain_FoundIntr
+ add r12, r12, 0x4
+ ands r0, r1, INTR_FLAG_TIMER1
+ bne IntrMain_FoundIntr
+ add r12, r12, 0x4
+ ands r0, r1, INTR_FLAG_TIMER2
+ bne IntrMain_FoundIntr
+ add r12, r12, 0x4
+ ands r0, r1, INTR_FLAG_DMA0
+ bne IntrMain_FoundIntr
+ add r12, r12, 0x4
+ ands r0, r1, INTR_FLAG_DMA1
+ bne IntrMain_FoundIntr
+ add r12, r12, 0x4
+ ands r0, r1, INTR_FLAG_DMA2
+ bne IntrMain_FoundIntr
+ add r12, r12, 0x4
+ ands r0, r1, INTR_FLAG_DMA3
+ bne IntrMain_FoundIntr
+ add r12, r12, 0x4
+ ands r0, r1, INTR_FLAG_KEYPAD
+ bne IntrMain_FoundIntr
+ add r12, r12, 0x4
+ ands r0, r1, INTR_FLAG_GAMEPAK
+ strbne r0, [r3, OFFSET_REG_SOUNDCNT_X - 0x200]
+ bne . @ spin
+IntrMain_FoundIntr:
+ strh r0, [r3, OFFSET_REG_IF - 0x200]
+ bic r2, r2, r0
+ ldr r0, =gRfuState
+ ldr r0, [r0]
+ ldrb r0, [r0, 0xA]
+ mov r1, 0x8
+ mov r0, r1, lsl r0
+ orr r0, r0, INTR_FLAG_GAMEPAK
+ orr r1, r0, INTR_FLAG_SERIAL | INTR_FLAG_TIMER3 | INTR_FLAG_VCOUNT | INTR_FLAG_HBLANK
+ and r1, r1, r2
+ strh r1, [r3, OFFSET_REG_IE - 0x200]
+ mrs r3, cpsr
+ bic r3, r3, PSR_I_BIT | PSR_F_BIT | PSR_MODE_MASK
+ orr r3, r3, PSR_SYS_MODE
+ msr cpsr_cf, r3
+ ldr r1, =gIntrTable
+ add r1, r1, r12
+ ldr r0, [r1]
+ stmdb sp!, {lr}
+ adr lr, IntrMain_RetAddr
+ bx r0
+IntrMain_RetAddr:
+ ldmia sp!, {lr}
+ mrs r3, cpsr
+ bic r3, r3, PSR_I_BIT | PSR_F_BIT | PSR_MODE_MASK
+ orr r3, r3, PSR_I_BIT | PSR_IRQ_MODE
+ msr cpsr_cf, r3
+ ldmia sp!, {r0-r3,lr}
+ strh r2, [r3, OFFSET_REG_IE - 0x200]
+ strh r1, [r3, OFFSET_REG_IME - 0x200]
+ msr spsr_cf, r0
+ bx lr
+
+ .pool
+
+ .align 2, 0 @ Don't pad with nop.
diff --git a/src/data/battle_frontier/battle_frontier_exchange_corner.h b/src/data/battle_frontier/battle_frontier_exchange_corner.h
new file mode 100644
index 000000000..bcb3cdd62
--- /dev/null
+++ b/src/data/battle_frontier/battle_frontier_exchange_corner.h
@@ -0,0 +1,99 @@
+static const u16 sFrontierExchangeCorner_Decor1[] =
+{
+ DECOR_KISS_POSTER,
+ DECOR_KISS_CUSHION,
+ DECOR_SMOOCHUM_DOLL,
+ DECOR_TOGEPI_DOLL,
+ DECOR_MEOWTH_DOLL,
+ DECOR_CLEFAIRY_DOLL,
+ DECOR_DITTO_DOLL,
+ DECOR_CYNDAQUIL_DOLL,
+ DECOR_CHIKORITA_DOLL,
+ DECOR_TOTODILE_DOLL,
+ 0xFFFF
+};
+
+static const u16 sFrontierExchangeCorner_Decor2[] =
+{
+ DECOR_LAPRAS_DOLL,
+ DECOR_SNORLAX_DOLL,
+ DECOR_VENUSAUR_DOLL,
+ DECOR_CHARIZARD_DOLL,
+ DECOR_BLASTOISE_DOLL,
+ 0xFFFF
+};
+
+static const u16 sFrontierExchangeCorner_Vitamins[] =
+{
+ ITEM_PROTEIN,
+ ITEM_CALCIUM,
+ ITEM_IRON,
+ ITEM_ZINC,
+ ITEM_CARBOS,
+ ITEM_HP_UP,
+ 0xFFFF
+};
+
+static const u16 sFrontierExchangeCorner_HoldItems[] =
+{
+ ITEM_LEFTOVERS,
+ ITEM_WHITE_HERB,
+ ITEM_QUICK_CLAW,
+ ITEM_MENTAL_HERB,
+ ITEM_BRIGHT_POWDER,
+ ITEM_CHOICE_BAND,
+ ITEM_KINGS_ROCK,
+ ITEM_FOCUS_BAND,
+ ITEM_SCOPE_LENS,
+ 0xFFFF
+};
+
+static const u8 *const sFrontierExchangeCorner_Decor1Descriptions[] =
+{
+ BattleFrontier_BattlePointExchangeServiceCorner_Text_2601AA,
+ BattleFrontier_BattlePointExchangeServiceCorner_Text_2601D0,
+ BattleFrontier_BattlePointExchangeServiceCorner_Text_260201,
+ BattleFrontier_BattlePointExchangeServiceCorner_Text_26022F,
+ BattleFrontier_BattlePointExchangeServiceCorner_Text_26025B,
+ BattleFrontier_BattlePointExchangeServiceCorner_Text_260287,
+ BattleFrontier_BattlePointExchangeServiceCorner_Text_2602B5,
+ BattleFrontier_BattlePointExchangeServiceCorner_Text_2602E0,
+ BattleFrontier_BattlePointExchangeServiceCorner_Text_26030F,
+ BattleFrontier_BattlePointExchangeServiceCorner_Text_26033E,
+ gText_Exit,
+};
+
+static const u8 *const sFrontierExchangeCorner_Decor2Descriptions[] =
+{
+ BattleFrontier_BattlePointExchangeServiceCorner_Text_26036C,
+ BattleFrontier_BattlePointExchangeServiceCorner_Text_26036C,
+ BattleFrontier_BattlePointExchangeServiceCorner_Text_26036C,
+ BattleFrontier_BattlePointExchangeServiceCorner_Text_26036C,
+ BattleFrontier_BattlePointExchangeServiceCorner_Text_26036C,
+ gText_Exit
+};
+
+static const u8 *const sFrontierExchangeCorner_VitaminsDescriptions[] =
+{
+ BattleFrontier_BattlePointExchangeServiceCorner_Text_260397,
+ BattleFrontier_BattlePointExchangeServiceCorner_Text_2603BE,
+ BattleFrontier_BattlePointExchangeServiceCorner_Text_2603E6,
+ BattleFrontier_BattlePointExchangeServiceCorner_Text_26040E,
+ BattleFrontier_BattlePointExchangeServiceCorner_Text_260436,
+ BattleFrontier_BattlePointExchangeServiceCorner_Text_26045C,
+ gText_Exit
+};
+
+static const u8 *const sFrontierExchangeCorner_HoldItemsDescriptions[] =
+{
+ BattleFrontier_BattlePointExchangeServiceCorner_Text_26047A,
+ BattleFrontier_BattlePointExchangeServiceCorner_Text_2604AC,
+ BattleFrontier_BattlePointExchangeServiceCorner_Text_2604D8,
+ BattleFrontier_BattlePointExchangeServiceCorner_Text_26050F,
+ BattleFrontier_BattlePointExchangeServiceCorner_Text_260542,
+ BattleFrontier_BattlePointExchangeServiceCorner_Text_260575,
+ BattleFrontier_BattlePointExchangeServiceCorner_Text_2605A8,
+ BattleFrontier_BattlePointExchangeServiceCorner_Text_2605E2,
+ BattleFrontier_BattlePointExchangeServiceCorner_Text_260613,
+ gText_Exit
+};
diff --git a/src/data/battle_frontier/trainer_hill.h b/src/data/battle_frontier/trainer_hill.h
index 64d216e4b..54d49422a 100644
--- a/src/data/battle_frontier/trainer_hill.h
+++ b/src/data/battle_frontier/trainer_hill.h
@@ -1,4857 +1,5261 @@
#define TRAINER_HILL_OTID 0x10000000
+static const struct TrHillTag gUnknown_0862609C = {
+ .unkField_0 = 4,
+ .unused1 = 1,
+ .numFloors = 2,
+ .checksum = 0x0
+};
+
+static const struct TrHillFloor gUnknown_0862609C_floors[] = {
+ [0] = {
+ .unk0 = 0,
+ .unk1 = 0,
+ .trainers = {
+ [0] = {
+ .name = __("シゲノブ$$$$ "),
+ .facilityClass = FACILITY_CLASS_YOUNGSTER,
+ .unused = 0x1,
+ .speechBefore = { EC_WORD_TRAINER, EC_WORD_MRS, EC_WORD_EXCL, EC_WORD_THEY_WERE, EC_WORD_OPPONENT, EC_WORD_CAN },
+ .speechWin = { EC_WORD_TRAINER, EC_WORD_MRS, EC_WORD_WEAK, EC_WORD_OF, EC_WORD_WERE, EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS },
+ .speechLose = { EC_WORD_TRAINER, EC_WORD_MRS, EC_WORD_STRONG, EC_WORD_HEY_QUES, EC_WORD_EXCL, EC_WORD_EXCL },
+ .speechAfter = { EC_WORD_FABULOUS, EC_WORD_CAN_T, EC_WORD_TRAINER, EC_WORD_MRS, EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, EC_WORD_EXCITING },
+ .mons = {
+ [0] = {
+ .species = SPECIES_ZIGZAGOON,
+ .heldItem = ITEM_SITRUS_BERRY,
+ .moves = { MOVE_HEADBUTT, MOVE_PIN_MISSILE, MOVE_GROWL, MOVE_TAIL_WHIP },
+ .level = 0,
+ .ppBonuses = 0x0,
+ .hpEV = 110,
+ .attackEV = 100,
+ .defenseEV = 100,
+ .speedEV = 100,
+ .spAttackEV = 0,
+ .spDefenseEV = 100,
+ .otId = 0x10000000,
+ .hpIV = 5,
+ .attackIV = 5,
+ .defenseIV = 5,
+ .speedIV = 5,
+ .spAttackIV = 5,
+ .spDefenseIV = 5,
+ .abilityNum = 0,
+ .personality = 0x80,
+ .nickname = __("ジグザグマ$$$$$$"),
+ .friendship = 255
+ },
+ [1] = {
+ .species = SPECIES_SHROOMISH,
+ .heldItem = ITEM_PECHA_BERRY,
+ .moves = { MOVE_MEGA_DRAIN, MOVE_LEECH_SEED, MOVE_POISON_POWDER, MOVE_GROWTH },
+ .level = 0,
+ .ppBonuses = 0x0,
+ .hpEV = 120,
+ .attackEV = 0,
+ .defenseEV = 120,
+ .speedEV = 0,
+ .spAttackEV = 150,
+ .spDefenseEV = 120,
+ .otId = 0x10000000,
+ .hpIV = 5,
+ .attackIV = 5,
+ .defenseIV = 5,
+ .speedIV = 5,
+ .spAttackIV = 5,
+ .spDefenseIV = 5,
+ .abilityNum = 0,
+ .personality = 0x0,
+ .nickname = __("キノココ$$$$$$$"),
+ .friendship = 255
+ },
+ [2] = {
+ .species = SPECIES_SANDSHREW,
+ .heldItem = ITEM_QUICK_CLAW,
+ .moves = { MOVE_SCRATCH, MOVE_POISON_STING, MOVE_SAND_ATTACK, MOVE_SWIFT },
+ .level = 0,
+ .ppBonuses = 0x0,
+ .hpEV = 110,
+ .attackEV = 100,
+ .defenseEV = 100,
+ .speedEV = 0,
+ .spAttackEV = 0,
+ .spDefenseEV = 200,
+ .otId = 0x10000000,
+ .hpIV = 5,
+ .attackIV = 5,
+ .defenseIV = 5,
+ .speedIV = 5,
+ .spAttackIV = 5,
+ .spDefenseIV = 5,
+ .abilityNum = 0,
+ .personality = 0x80,
+ .nickname = __("サンド$$$$$$$$"),
+ .friendship = 255
+ },
+ [3] = NULL_BATTLE_TOWER_POKEMON,
+ [4] = NULL_BATTLE_TOWER_POKEMON,
+ [5] = NULL_BATTLE_TOWER_POKEMON
+ }
+ },
+ [1] = {
+ .name = __("アカリ$$$$$ "),
+ .facilityClass = FACILITY_CLASS_PARASOL_LADY,
+ .unused = 0x1,
+ .speechBefore = { EC_WORD_SHE, EC_WORD_EVERY, EC_WORD_TYPE, EC_WORD_ADORE, EC_WORD_FOR, EC_WORD_EXCL },
+ .speechWin = { EC_WORD_SURPRISE, EC_WORD_THESE, EC_WORD_WONDER, EC_WORD_GIGGLE, EC_WORD_ELLIPSIS, EC_WORD_EXCL },
+ .speechLose = { EC_WORD_OH_QUES, EC_MOVE(EARTHQUAKE), EC_WORD_EXISTS, EC_WORD_OF, EC_WORD_WITHOUT, EC_WORD_EXCL },
+ .speechAfter = { EC_WORD_YOU_RE, EC_WORD_PROBABLY, EC_WORD_END, EC_WORD_UNTIL, EC_WORD_GOING, EC_WORD_ANYWHERE },
+ .mons = {
+ [0] = NULL_BATTLE_TOWER_POKEMON,
+ [1] = NULL_BATTLE_TOWER_POKEMON,
+ [2] = NULL_BATTLE_TOWER_POKEMON,
+ [3] = {
+ .species = SPECIES_WINGULL,
+ .heldItem = ITEM_CHERI_BERRY,
+ .moves = { MOVE_WATER_GUN, MOVE_WING_ATTACK, MOVE_GROWL, MOVE_SUPERSONIC },
+ .level = 0,
+ .ppBonuses = 0x0,
+ .hpEV = 110,
+ .attackEV = 100,
+ .defenseEV = 100,
+ .speedEV = 0,
+ .spAttackEV = 100,
+ .spDefenseEV = 100,
+ .otId = 0x10000000,
+ .hpIV = 5,
+ .attackIV = 5,
+ .defenseIV = 5,
+ .speedIV = 5,
+ .spAttackIV = 5,
+ .spDefenseIV = 5,
+ .abilityNum = 0,
+ .personality = 0x0,
+ .nickname = __("キャモメ$$$$$$$"),
+ .friendship = 255
+ },
+ [4] = {
+ .species = SPECIES_NUMEL,
+ .heldItem = ITEM_FOCUS_BAND,
+ .moves = { MOVE_EMBER, MOVE_DIG, MOVE_TACKLE, MOVE_FOCUS_ENERGY },
+ .level = 0,
+ .ppBonuses = 0x0,
+ .hpEV = 110,
+ .attackEV = 100,
+ .defenseEV = 100,
+ .speedEV = 0,
+ .spAttackEV = 100,
+ .spDefenseEV = 100,
+ .otId = 0x10000000,
+ .hpIV = 5,
+ .attackIV = 5,
+ .defenseIV = 5,
+ .speedIV = 5,
+ .spAttackIV = 5,
+ .spDefenseIV = 5,
+ .abilityNum = 0,
+ .personality = 0x96,
+ .nickname = __("ドンメル$$$$$$$"),
+ .friendship = 255
+ },
+ [5] = {
+ .species = SPECIES_SURSKIT,
+ .heldItem = ITEM_PERSIM_BERRY,
+ .moves = { MOVE_BUBBLE_BEAM, MOVE_MUD_SHOT, MOVE_QUICK_ATTACK, MOVE_AGILITY },
+ .level = 0,
+ .ppBonuses = 0x0,
+ .hpEV = 100,
+ .attackEV = 100,
+ .defenseEV = 100,
+ .speedEV = 0,
+ .spAttackEV = 100,
+ .spDefenseEV = 100,
+ .otId = 0x10000000,
+ .hpIV = 5,
+ .attackIV = 5,
+ .defenseIV = 5,
+ .speedIV = 5,
+ .spAttackIV = 5,
+ .spDefenseIV = 5,
+ .abilityNum = 0,
+ .personality = 0x0,
+ .nickname = __("アメタマ$$$$$$$"),
+ .friendship = 255
+ },
+ }
+ },
+ },
+ .display = {
+ .data = { 0x31, 0x35, 0x35, 0x3b, 0x26, 0x26, 0x1b, 0x1c, 0x1d, 0x25, 0x39, 0x3a, 0x3b, 0x3b, 0x3b, 0x8, 0x31, 0x2b, 0x2b, 0x3b, 0x34, 0x34, 0x2b, 0x2b, 0x34, 0x33, 0x3f, 0x3f, 0x3f, 0x3f, 0x3b, 0x8, 0x31, 0x2b, 0x2b, 0x3b, 0x3b, 0x3b, 0x34, 0x34, 0x3b, 0x33, 0x3f, 0x3f, 0x3f, 0x3b, 0x3b, 0x8, 0x31, 0x2b, 0x2b, 0x35, 0x35, 0x35, 0x35, 0x35, 0x3b, 0x33, 0x3f, 0x3f, 0x3f, 0x3b, 0x3f, 0x8, 0x31, 0x2b, 0x34, 0x34, 0x34, 0x2b, 0x34, 0x34, 0x3b, 0x2c, 0x3f, 0x3f, 0x3f, 0x3b, 0x3b, 0x8, 0x31, 0x2b, 0x3b, 0x35, 0x3b, 0x2b, 0x3b, 0x35, 0x3b, 0x35, 0x3b, 0x3f, 0x3f, 0x3f, 0x3b, 0x8, 0x31, 0x2b, 0x3b, 0x2b, 0x3b, 0x2b, 0x3b, 0x2b, 0x3b, 0x2b, 0x3b, 0x3f, 0x3f, 0x3f, 0x3b, 0x8, 0x31, 0x34, 0x3b, 0x2b, 0x3b, 0x34, 0x3b, 0x2b, 0x35, 0x2b, 0x3b, 0x3b, 0x3f, 0x3b, 0x3b, 0x8, 0x31, 0x3b, 0x3b, 0x34, 0x3b, 0x3b, 0x3b, 0x34, 0x34, 0x34, 0x3f, 0x3b, 0x3b, 0x3b, 0x3f, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8 },
+ .unk3A0 = { 0x381, 0x6fc1, 0x6341, 0x6041, 0x7f41, 0x4401, 0x5541, 0x5541, 0x11c1, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff },
+ .coords = { 0x28, 0x78 },
+ .direction = 0x1,
+ .range = 0x23
+ }
+ },
+ [1] = {
+ .unk0 = 0,
+ .unk1 = 0,
+ .trainers = {
+ [0] = {
+ .name = __("シゲゾウ$$$$ "),
+ .facilityClass = FACILITY_CLASS_NINJA_BOY,
+ .unused = 0x1,
+ .speechBefore = { EC_WORD_WIN, EC_WORD_UNTIL, EC_WORD_DAUGHTER, EC_MOVE(CONSTRICT), EC_WORD_OF, EC_WORD_WERE },
+ .speechWin = { EC_MOVE(CONSTRICT), EC_WORD_UNTIL, EC_WORD_LESS, EC_WORD_NONE, EC_WORD_HEY_QUES, EC_WORD_EXCL },
+ .speechLose = { EC_WORD_YET, EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, EC_WORD_URGH, EC_WORD_ALMOST, EC_WORD_POWER, EC_WORD_NONE },
+ .speechAfter = { EC_WORD_HUH_QUES, EC_WORD_TOMORROW, EC_WORD_SMELL, EC_WORD_ABSOLUTELY, EC_WORD_THOSE, EC_WORD_EXCL_EXCL },
+ .mons = {
+ [0] = {
+ .species = SPECIES_ELECTRIKE,
+ .heldItem = ITEM_CHERI_BERRY,
+ .moves = { MOVE_SPARK, MOVE_THUNDER_WAVE, MOVE_QUICK_ATTACK, MOVE_ROAR },
+ .level = 0,
+ .ppBonuses = 0x0,
+ .hpEV = 120,
+ .attackEV = 120,
+ .defenseEV = 0,
+ .speedEV = 120,
+ .spAttackEV = 150,
+ .spDefenseEV = 0,
+ .otId = 0x10000000,
+ .hpIV = 5,
+ .attackIV = 5,
+ .defenseIV = 5,
+ .speedIV = 5,
+ .spAttackIV = 5,
+ .spDefenseIV = 5,
+ .abilityNum = 1,
+ .personality = 0x0,
+ .nickname = __("ラクライ$$$$$$$"),
+ .friendship = 255
+ },
+ [1] = {
+ .species = SPECIES_CORPHISH,
+ .heldItem = ITEM_QUICK_CLAW,
+ .moves = { MOVE_KNOCK_OFF, MOVE_CRABHAMMER, MOVE_TAUNT, MOVE_PROTECT },
+ .level = 0,
+ .ppBonuses = 0x0,
+ .hpEV = 100,
+ .attackEV = 110,
+ .defenseEV = 100,
+ .speedEV = 0,
+ .spAttackEV = 100,
+ .spDefenseEV = 100,
+ .otId = 0x10000000,
+ .hpIV = 5,
+ .attackIV = 5,
+ .defenseIV = 5,
+ .speedIV = 5,
+ .spAttackIV = 5,
+ .spDefenseIV = 5,
+ .abilityNum = 1,
+ .personality = 0x96,
+ .nickname = __("ヘイガニ$$$$$$$"),
+ .friendship = 255
+ },
+ [2] = {
+ .species = SPECIES_BALTOY,
+ .heldItem = ITEM_PERSIM_BERRY,
+ .moves = { MOVE_PSYBEAM, MOVE_ROCK_TOMB, MOVE_MUD_SLAP, MOVE_HARDEN },
+ .level = 0,
+ .ppBonuses = 0x0,
+ .hpEV = 100,
+ .attackEV = 100,
+ .defenseEV = 100,
+ .speedEV = 0,
+ .spAttackEV = 110,
+ .spDefenseEV = 100,
+ .otId = 0x10000000,
+ .hpIV = 5,
+ .attackIV = 5,
+ .defenseIV = 5,
+ .speedIV = 5,
+ .spAttackIV = 5,
+ .spDefenseIV = 5,
+ .abilityNum = 0,
+ .personality = 0x96,
+ .nickname = __("ヤジロン$$$$$$$"),
+ .friendship = 255
+ },
+ [3] = NULL_BATTLE_TOWER_POKEMON,
+ [4] = NULL_BATTLE_TOWER_POKEMON,
+ [5] = NULL_BATTLE_TOWER_POKEMON,
+ }
+ },
+ [1] = {
+ .name = __("ナミコ$$$$$ "),
+ .facilityClass = FACILITY_CLASS_BEAUTY,
+ .unused = 0x1,
+ .speechBefore = { EC_WORD_SISTER, EC_WORD_ALTHOUGH, EC_WORD_KIND, EC_WORD_MATCH, EC_WORD_PLEASE, EC_WORD_WITHOUT },
+ .speechWin = { EC_WORD_KIND, EC_WORD_ELLIPSIS, EC_WORD_INSTEAD, EC_WORD_DEEP, EC_WORD_WEAK, EC_WORD_QUES },
+ .speechLose = { EC_WORD_AWFUL, EC_WORD_GWAH, EC_WORD_HOPELESS, EC_WORD_CAN_T_WIN, EC_WORD_IS, EC_WORD_NONE },
+ .speechAfter = { EC_WORD_AWW, 0xFFFF, 0xFFFF, EC_WORD_ALMOST, EC_WORD_GOOD, EC_WORD_ANYWHERE },
+ .mons = {
+ [0] = NULL_BATTLE_TOWER_POKEMON,
+ [1] = NULL_BATTLE_TOWER_POKEMON,
+ [2] = NULL_BATTLE_TOWER_POKEMON,
+ [3] = {
+ .species = SPECIES_SPHEAL,
+ .heldItem = ITEM_FOCUS_BAND,
+ .moves = { MOVE_ICE_BALL, MOVE_BODY_SLAM, MOVE_WATER_GUN, MOVE_ENCORE },
+ .level = 0,
+ .ppBonuses = 0x0,
+ .hpEV = 100,
+ .attackEV = 100,
+ .defenseEV = 100,
+ .speedEV = 0,
+ .spAttackEV = 110,
+ .spDefenseEV = 100,
+ .otId = 0x10000000,
+ .hpIV = 5,
+ .attackIV = 5,
+ .defenseIV = 5,
+ .speedIV = 5,
+ .spAttackIV = 5,
+ .spDefenseIV = 5,
+ .abilityNum = 0,
+ .personality = 0x80,
+ .nickname = __("タマザラシ$$$$$$"),
+ .friendship = 255
+ },
+ [4] = {
+ .species = SPECIES_SPOINK,
+ .heldItem = ITEM_PERSIM_BERRY,
+ .moves = { MOVE_PSYWAVE, MOVE_FUTURE_SIGHT, MOVE_CONFUSE_RAY, MOVE_MAGIC_COAT },
+ .level = 0,
+ .ppBonuses = 0x0,
+ .hpEV = 100,
+ .attackEV = 0,
+ .defenseEV = 100,
+ .speedEV = 100,
+ .spAttackEV = 110,
+ .spDefenseEV = 100,
+ .otId = 0x10000000,
+ .hpIV = 5,
+ .attackIV = 5,
+ .defenseIV = 5,
+ .speedIV = 5,
+ .spAttackIV = 5,
+ .spDefenseIV = 5,
+ .abilityNum = 1,
+ .personality = 0xf,
+ .nickname = __("バネブー$$$$$$$"),
+ .friendship = 255
+ },
+ [5] = {
+ .species = SPECIES_POOCHYENA,
+ .heldItem = ITEM_PECHA_BERRY,
+ .moves = { MOVE_BITE, MOVE_POISON_FANG, MOVE_SWAGGER, MOVE_SCARY_FACE },
+ .level = 0,
+ .ppBonuses = 0x0,
+ .hpEV = 70,
+ .attackEV = 80,
+ .defenseEV = 80,
+ .speedEV = 80,
+ .spAttackEV = 80,
+ .spDefenseEV = 80,
+ .otId = 0x10000000,
+ .hpIV = 5,
+ .attackIV = 5,
+ .defenseIV = 5,
+ .speedIV = 5,
+ .spAttackIV = 5,
+ .spDefenseIV = 5,
+ .abilityNum = 0,
+ .personality = 0x96,
+ .nickname = __("ポチエナ$$$$$$$"),
+ .friendship = 255
+ },
+ }
+ },
+ },
+ .display = {
+ .data = { 0x31, 0x3b, 0x35, 0x3b, 0x39, 0x26, 0x1b, 0x1c, 0x1d, 0x25, 0x39, 0x3a, 0x3b, 0x35, 0x3b, 0x8, 0x31, 0x3b, 0x2b, 0x3b, 0x3b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x3b, 0x3b, 0x3b, 0x2b, 0x3b, 0x8, 0x31, 0x3b, 0x2b, 0x3b, 0x3b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x3e, 0x3e, 0x3b, 0x2b, 0x3b, 0x8, 0x31, 0x3b, 0x2b, 0x3b, 0x3b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x3b, 0x3b, 0x3b, 0x2b, 0x3b, 0x8, 0x3f, 0x3b, 0x2b, 0x3b, 0x3b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x3b, 0x3e, 0x3e, 0x2b, 0x3b, 0x8, 0x31, 0x3b, 0x2b, 0x3b, 0x3b, 0x2b, 0x2b, 0x2c, 0x2b, 0x2b, 0x3b, 0x3b, 0x3b, 0x2b, 0x3b, 0x8, 0x31, 0x3f, 0x2b, 0x3b, 0x3b, 0x2c, 0x2c, 0x3b, 0x2c, 0x2c, 0x3e, 0x3e, 0x3b, 0x2b, 0x3b, 0x8, 0x31, 0x3b, 0x2b, 0x35, 0x35, 0x35, 0x35, 0x3b, 0x35, 0x35, 0x35, 0x35, 0x35, 0x2b, 0x3b, 0x8, 0x3f, 0x3b, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x3b, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x3b, 0x8, 0x31, 0x3b, 0x3f, 0x3f, 0x3b, 0x35, 0x35, 0x3b, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x8, 0x31, 0x3f, 0x3f, 0x3f, 0x3b, 0x2b, 0x2b, 0x35, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x8, 0x31, 0x3f, 0x3f, 0x3b, 0x3b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x8, 0x31, 0x3b, 0x3b, 0x3b, 0x3f, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8 },
+ .unk3A0 = { 0x381, 0x27c5, 0x27c5, 0x27c5, 0x27c5, 0x27c5, 0x26c5, 0x2005, 0x3efd, 0x1, 0x6ff, 0x7ff, 0x7ff, 0xffff, 0xffff, 0xffff },
+ .coords = { 0x67, 0xa7 },
+ .direction = 0x1,
+ .range = 0x33
+ }
+ },
+};
+
static const struct TrHillTag sDataTagNormal =
{
.unkField_0 = 8,
.unused1 = 2,
- .unkField_2 = 4,
- .unused3 = 0,
- .unused4 = 5,
- .unused5 = 30,
- .unused6 = 5,
- .floors =
+ .numFloors = 4,
+ .checksum = 0x00051E05
+};
+
+static const struct TrHillFloor sDataTagNormal_floors[] =
+{
+ [0] =
{
- [0] =
+ .unk0 = 0x11,
+ .unk1 = 0x12,
+ .trainers =
{
- .unk0 = 0x11,
- .unk1 = 0x12,
- .trainers =
+ [0] =
{
- [0] =
+ .name = _("ALAINA"),
+ .facilityClass = FACILITY_CLASS_HEX_MANIAC,
+ .unused = 0,
+ .speechBefore = {EC_WORD_YOU, EC_WORD_CAN, EC_WORD_CHOOSE, EC_WORD_NOT, EC_WORD_TO, EC_WORD_BELIEVE},
+ .speechWin = {EC_WORD_A, EC_WORD_SUPER, EC_WORD_NATURAL, EC_WORD_POWER, EC_WORD_HAS, EC_WORD_COME},
+ .speechLose = {EC_WORD_THIS, EC_WORD_MUST_BE, EC_WORD_A, EC_MOVE(NIGHTMARE), EC_WORD_EXCL, 0xFFFF},
+ .speechAfter = {EC_WORD_I, EC_WORD_WILL, EC_WORD_DISAPPEAR, EC_WORD_IN, EC_WORD_THE, EC_WORD_DARK},
+ .mons =
{
- .name = _("ALAINA"),
- .facilityClass = FACILITY_CLASS_HEX_MANIAC,
- .unused = 0,
- .speechBefore = {EC_WORD_YOU, EC_WORD_CAN, EC_WORD_CHOOSE, EC_WORD_NOT, EC_WORD_TO, EC_WORD_BELIEVE},
- .speechWin = {EC_WORD_A, EC_WORD_SUPER, EC_WORD_NATURAL, EC_WORD_POWER, EC_WORD_HAS, EC_WORD_COME},
- .speechLose = {EC_WORD_THIS, EC_WORD_MUST_BE, EC_WORD_A, EC_MOVE(NIGHTMARE), EC_WORD_EXCL, 0xFFFF},
- .speechAfter = {EC_WORD_I, EC_WORD_WILL, EC_WORD_DISAPPEAR, EC_WORD_IN, EC_WORD_THE, EC_WORD_DARK},
- .mons =
+ [0] =
{
- [0] =
- {
- .species = SPECIES_MISDREAVUS,
- .heldItem = ITEM_BRIGHT_POWDER,
- .moves = {MOVE_SHADOW_BALL, MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_CONFUSE_RAY},
- .level = 0,
- .ppBonuses = 0,
- .attackEV = 155,
- .speedEV = 255,
- .spAttackEV = 100,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 24,
- .attackIV = 24,
- .defenseIV = 24,
- .speedIV = 24,
- .spAttackIV = 24,
- .spDefenseIV = 24,
- .abilityNum = 0,
- .personality = 0x0,
- .nickname = _("MISDREAVUS"),
- .friendship = 255,
- },
- [1] =
- {
- .species = SPECIES_SOLROCK,
- .heldItem = ITEM_FOCUS_BAND,
- .moves = {MOVE_PSYCHIC, MOVE_FLAMETHROWER, MOVE_ROCK_SLIDE, MOVE_CALM_MIND},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 200,
- .defenseEV = 100,
- .spAttackEV = 110,
- .spDefenseEV = 100,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 24,
- .attackIV = 24,
- .defenseIV = 24,
- .speedIV = 24,
- .spAttackIV = 24,
- .spDefenseIV = 24,
- .abilityNum = 0,
- .personality = 0xF,
- .nickname = _("SOLROCK"),
- .friendship = 255,
- },
- [2] =
- {
- .species = SPECIES_CLAYDOL,
- .heldItem = ITEM_SHELL_BELL,
- .moves = {MOVE_EARTHQUAKE, MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_ICE_BEAM},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 255,
- .defenseEV = 135,
- .spDefenseEV = 120,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 24,
- .attackIV = 24,
- .defenseIV = 24,
- .speedIV = 24,
- .spAttackIV = 24,
- .spDefenseIV = 24,
- .abilityNum = 0,
- .personality = 0xC,
- .nickname = _("CLAYDOL"),
- .friendship = 255,
- },
- [3] =
- {
- .species = SPECIES_WEEZING,
- .heldItem = ITEM_SALAC_BERRY,
- .moves = {MOVE_SLUDGE_BOMB, MOVE_SHADOW_BALL, MOVE_FRUSTRATION, MOVE_DESTINY_BOND},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 110,
- .attackEV = 200,
- .spDefenseEV = 200,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 24,
- .attackIV = 24,
- .defenseIV = 24,
- .speedIV = 24,
- .spAttackIV = 24,
- .spDefenseIV = 24,
- .abilityNum = 0,
- .personality = 0x80,
- .nickname = _("WEEZING"),
- .friendship = 0,
- },
- [4] =
- {
- .species = SPECIES_LUNATONE,
- .heldItem = ITEM_FOCUS_BAND,
- .moves = {MOVE_PSYCHIC, MOVE_ICE_BEAM, MOVE_ROCK_SLIDE, MOVE_CALM_MIND},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 200,
- .defenseEV = 100,
- .spAttackEV = 110,
- .spDefenseEV = 100,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 24,
- .attackIV = 24,
- .defenseIV = 24,
- .speedIV = 24,
- .spAttackIV = 24,
- .spDefenseIV = 24,
- .abilityNum = 0,
- .personality = 0xF,
- .nickname = _("LUNATONE"),
- .friendship = 255,
- },
- [5] =
- {
- .species = SPECIES_FLYGON,
- .heldItem = ITEM_CHOICE_BAND,
- .moves = {MOVE_EARTHQUAKE, MOVE_DRAGON_CLAW, MOVE_CRUNCH, MOVE_FLAMETHROWER},
- .level = 0,
- .ppBonuses = 0,
- .attackEV = 155,
- .speedEV = 255,
- .spAttackEV = 100,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 24,
- .attackIV = 24,
- .defenseIV = 24,
- .speedIV = 24,
- .spAttackIV = 24,
- .spDefenseIV = 24,
- .abilityNum = 0,
- .personality = 0x83,
- .nickname = _("FLYGON"),
- .friendship = 255,
- },
+ .species = SPECIES_MISDREAVUS,
+ .heldItem = ITEM_BRIGHT_POWDER,
+ .moves = {MOVE_SHADOW_BALL, MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_CONFUSE_RAY},
+ .level = 0,
+ .ppBonuses = 0,
+ .attackEV = 155,
+ .speedEV = 255,
+ .spAttackEV = 100,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 24,
+ .attackIV = 24,
+ .defenseIV = 24,
+ .speedIV = 24,
+ .spAttackIV = 24,
+ .spDefenseIV = 24,
+ .abilityNum = 0,
+ .personality = 0x0,
+ .nickname = _("MISDREAVUS"),
+ .friendship = 255,
+ },
+ [1] =
+ {
+ .species = SPECIES_SOLROCK,
+ .heldItem = ITEM_FOCUS_BAND,
+ .moves = {MOVE_PSYCHIC, MOVE_FLAMETHROWER, MOVE_ROCK_SLIDE, MOVE_CALM_MIND},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 200,
+ .defenseEV = 100,
+ .spAttackEV = 110,
+ .spDefenseEV = 100,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 24,
+ .attackIV = 24,
+ .defenseIV = 24,
+ .speedIV = 24,
+ .spAttackIV = 24,
+ .spDefenseIV = 24,
+ .abilityNum = 0,
+ .personality = 0xF,
+ .nickname = _("SOLROCK"),
+ .friendship = 255,
+ },
+ [2] =
+ {
+ .species = SPECIES_CLAYDOL,
+ .heldItem = ITEM_SHELL_BELL,
+ .moves = {MOVE_EARTHQUAKE, MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_ICE_BEAM},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 255,
+ .defenseEV = 135,
+ .spDefenseEV = 120,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 24,
+ .attackIV = 24,
+ .defenseIV = 24,
+ .speedIV = 24,
+ .spAttackIV = 24,
+ .spDefenseIV = 24,
+ .abilityNum = 0,
+ .personality = 0xC,
+ .nickname = _("CLAYDOL"),
+ .friendship = 255,
+ },
+ [3] =
+ {
+ .species = SPECIES_WEEZING,
+ .heldItem = ITEM_SALAC_BERRY,
+ .moves = {MOVE_SLUDGE_BOMB, MOVE_SHADOW_BALL, MOVE_FRUSTRATION, MOVE_DESTINY_BOND},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 110,
+ .attackEV = 200,
+ .spDefenseEV = 200,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 24,
+ .attackIV = 24,
+ .defenseIV = 24,
+ .speedIV = 24,
+ .spAttackIV = 24,
+ .spDefenseIV = 24,
+ .abilityNum = 0,
+ .personality = 0x80,
+ .nickname = _("WEEZING"),
+ .friendship = 0,
+ },
+ [4] =
+ {
+ .species = SPECIES_LUNATONE,
+ .heldItem = ITEM_FOCUS_BAND,
+ .moves = {MOVE_PSYCHIC, MOVE_ICE_BEAM, MOVE_ROCK_SLIDE, MOVE_CALM_MIND},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 200,
+ .defenseEV = 100,
+ .spAttackEV = 110,
+ .spDefenseEV = 100,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 24,
+ .attackIV = 24,
+ .defenseIV = 24,
+ .speedIV = 24,
+ .spAttackIV = 24,
+ .spDefenseIV = 24,
+ .abilityNum = 0,
+ .personality = 0xF,
+ .nickname = _("LUNATONE"),
+ .friendship = 255,
+ },
+ [5] =
+ {
+ .species = SPECIES_FLYGON,
+ .heldItem = ITEM_CHOICE_BAND,
+ .moves = {MOVE_EARTHQUAKE, MOVE_DRAGON_CLAW, MOVE_CRUNCH, MOVE_FLAMETHROWER},
+ .level = 0,
+ .ppBonuses = 0,
+ .attackEV = 155,
+ .speedEV = 255,
+ .spAttackEV = 100,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 24,
+ .attackIV = 24,
+ .defenseIV = 24,
+ .speedIV = 24,
+ .spAttackIV = 24,
+ .spDefenseIV = 24,
+ .abilityNum = 0,
+ .personality = 0x83,
+ .nickname = _("FLYGON"),
+ .friendship = 255,
},
},
- [1] =
+ },
+ [1] =
+ {
+ .name = _("ALFONSO"),
+ .facilityClass = FACILITY_CLASS_CYCLING_TRIATHLETE_M,
+ .unused = 0,
+ .speechBefore = {EC_WORD_I, EC_WORD_NEVER, EC_WORD_TAKE, EC_WORD_A, EC_WORD_TRAIN, 0xFFFF},
+ .speechWin = {EC_WORD_I_AM, EC_WORD_FEELING, EC_MOVE2(SUPERSONIC), EC_WORD_ON, EC_WORD_MY, EC_WORD_BIKE},
+ .speechLose = {EC_WORD_MY, EC_WORD_BIKE, EC_WORD_EXCL, EC_WORD_YOU_VE, EC_WORD_DESTROYED, EC_WORD_IT},
+ .speechAfter = {EC_WORD_A, EC_WORD_BIKE, EC_WORD_OVER, EC_WORD_ANY, EC_WORD_TRAIN, EC_WORD_EXCL},
+ .mons =
{
- .name = _("ALFONSO"),
- .facilityClass = FACILITY_CLASS_CYCLING_TRIATHLETE_M,
- .unused = 0,
- .speechBefore = {EC_WORD_I, EC_WORD_NEVER, EC_WORD_TAKE, EC_WORD_A, EC_WORD_TRAIN, 0xFFFF},
- .speechWin = {EC_WORD_I_AM, EC_WORD_FEELING, EC_MOVE2(SUPERSONIC), EC_WORD_ON, EC_WORD_MY, EC_WORD_BIKE},
- .speechLose = {EC_WORD_MY, EC_WORD_BIKE, EC_WORD_EXCL, EC_WORD_YOU_VE, EC_WORD_DESTROYED, EC_WORD_IT},
- .speechAfter = {EC_WORD_A, EC_WORD_BIKE, EC_WORD_OVER, EC_WORD_ANY, EC_WORD_TRAIN, EC_WORD_EXCL},
- .mons =
+ [0] =
{
- [0] =
- {
- .species = SPECIES_SEALEO,
- .heldItem = ITEM_NEVER_MELT_ICE,
- .moves = {MOVE_BLIZZARD, MOVE_ICE_BALL, MOVE_ENCORE, MOVE_HAIL},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 255,
- .spAttackEV = 255,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 15,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 0,
- .personality = 0xF,
- .nickname = _("SEALEO"),
- .friendship = 255,
- },
- [1] =
- {
- .species = SPECIES_AMPHAROS,
- .heldItem = ITEM_MAGNET,
- .moves = {MOVE_THUNDER, MOVE_THUNDER_WAVE, MOVE_COTTON_SPORE, MOVE_LIGHT_SCREEN},
- .level = 0,
- .ppBonuses = 0,
- .speedEV = 255,
- .spAttackEV = 255,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 15,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 0,
- .personality = 0xF,
- .nickname = _("AMPHAROS"),
- .friendship = 255,
- },
- [2] =
- {
- .species = SPECIES_MACHOKE,
- .heldItem = ITEM_BLACK_BELT,
- .moves = {MOVE_DYNAMIC_PUNCH, MOVE_MUD_SLAP, MOVE_COUNTER, MOVE_SCARY_FACE},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 255,
- .attackEV = 255,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 15,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 0,
- .personality = 0x4E,
- .nickname = _("MACHOKE"),
- .friendship = 255,
- },
- [3] =
- {
- .species = SPECIES_FLAREON,
- .heldItem = ITEM_CHARCOAL,
- .moves = {MOVE_FIRE_BLAST, MOVE_BITE, MOVE_QUICK_ATTACK, MOVE_SAND_ATTACK},
- .level = 0,
- .ppBonuses = 0,
- .speedEV = 255,
- .spAttackEV = 255,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 15,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 0,
- .personality = 0x28,
- .nickname = _("FLAREON"),
- .friendship = 255,
- },
- [4] =
- {
- .species = SPECIES_MAGNETON,
- .heldItem = ITEM_MAGNET,
- .moves = {MOVE_ZAP_CANNON, MOVE_THUNDER_WAVE, MOVE_SCREECH, MOVE_METAL_SOUND},
- .level = 0,
- .ppBonuses = 0,
- .speedEV = 255,
- .spAttackEV = 255,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 15,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 0,
- .personality = 0x0,
- .nickname = _("MAGNETON"),
- .friendship = 255,
- },
- [5] =
- {
- .species = SPECIES_PINSIR,
- .heldItem = ITEM_QUICK_CLAW,
- .moves = {MOVE_GUILLOTINE, MOVE_BRICK_BREAK, MOVE_SWAGGER, MOVE_FAINT_ATTACK},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 200,
- .defenseEV = 155,
- .spDefenseEV = 155,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 15,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 0,
- .personality = 0x85,
- .nickname = _("PINSIR"),
- .friendship = 255,
- },
+ .species = SPECIES_SEALEO,
+ .heldItem = ITEM_NEVER_MELT_ICE,
+ .moves = {MOVE_BLIZZARD, MOVE_ICE_BALL, MOVE_ENCORE, MOVE_HAIL},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 255,
+ .spAttackEV = 255,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 15,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 0,
+ .personality = 0xF,
+ .nickname = _("SEALEO"),
+ .friendship = 255,
+ },
+ [1] =
+ {
+ .species = SPECIES_AMPHAROS,
+ .heldItem = ITEM_MAGNET,
+ .moves = {MOVE_THUNDER, MOVE_THUNDER_WAVE, MOVE_COTTON_SPORE, MOVE_LIGHT_SCREEN},
+ .level = 0,
+ .ppBonuses = 0,
+ .speedEV = 255,
+ .spAttackEV = 255,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 15,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 0,
+ .personality = 0xF,
+ .nickname = _("AMPHAROS"),
+ .friendship = 255,
+ },
+ [2] =
+ {
+ .species = SPECIES_MACHOKE,
+ .heldItem = ITEM_BLACK_BELT,
+ .moves = {MOVE_DYNAMIC_PUNCH, MOVE_MUD_SLAP, MOVE_COUNTER, MOVE_SCARY_FACE},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 255,
+ .attackEV = 255,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 15,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 0,
+ .personality = 0x4E,
+ .nickname = _("MACHOKE"),
+ .friendship = 255,
+ },
+ [3] =
+ {
+ .species = SPECIES_FLAREON,
+ .heldItem = ITEM_CHARCOAL,
+ .moves = {MOVE_FIRE_BLAST, MOVE_BITE, MOVE_QUICK_ATTACK, MOVE_SAND_ATTACK},
+ .level = 0,
+ .ppBonuses = 0,
+ .speedEV = 255,
+ .spAttackEV = 255,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 15,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 0,
+ .personality = 0x28,
+ .nickname = _("FLAREON"),
+ .friendship = 255,
+ },
+ [4] =
+ {
+ .species = SPECIES_MAGNETON,
+ .heldItem = ITEM_MAGNET,
+ .moves = {MOVE_ZAP_CANNON, MOVE_THUNDER_WAVE, MOVE_SCREECH, MOVE_METAL_SOUND},
+ .level = 0,
+ .ppBonuses = 0,
+ .speedEV = 255,
+ .spAttackEV = 255,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 15,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 0,
+ .personality = 0x0,
+ .nickname = _("MAGNETON"),
+ .friendship = 255,
+ },
+ [5] =
+ {
+ .species = SPECIES_PINSIR,
+ .heldItem = ITEM_QUICK_CLAW,
+ .moves = {MOVE_GUILLOTINE, MOVE_BRICK_BREAK, MOVE_SWAGGER, MOVE_FAINT_ATTACK},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 200,
+ .defenseEV = 155,
+ .spDefenseEV = 155,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 15,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 0,
+ .personality = 0x85,
+ .nickname = _("PINSIR"),
+ .friendship = 255,
},
},
},
+ },
+ .display = {
.data = {0x31, 0x3B, 0x35, 0x35, 0x26, 0x26, 0x1B, 0x1C, 0x1D, 0x25, 0x26, 0x3A, 0x3B, 0x35, 0x3B, 0x8, 0x31, 0x3B, 0x2C, 0x2C, 0x2C, 0x2B, 0x24, 0x24, 0x24, 0x24, 0x2C, 0x3B, 0x3B, 0x2C, 0x3B, 0x8, 0x2D, 0x3B, 0x3B, 0x3B, 0x3B, 0x2B, 0x3B, 0x3B, 0x3B, 0x3B, 0x35, 0x3B, 0x35, 0x35, 0x3B, 0x8, 0x33, 0x3B, 0x32, 0x21, 0x30, 0x2B, 0x3B, 0x32, 0x21, 0x30, 0x2B, 0x3B, 0x2C, 0x2B, 0x3B, 0x8, 0x33, 0x35, 0x3B, 0x3B, 0x3B, 0x2C, 0x35, 0x3B, 0x3B, 0x3B, 0x2B, 0x3B, 0x3B, 0x2B, 0x3B, 0x8, 0x34, 0x2C, 0x3B, 0x32, 0x21, 0x30, 0x2B, 0x32, 0x30, 0x3B, 0x2B, 0x32, 0x30, 0x2C, 0x3B, 0x8, 0x31, 0x35, 0x3B, 0x3B, 0x35, 0x3B, 0x2C, 0x3B, 0x3B, 0x35, 0x2C, 0x3B, 0x3B, 0x35, 0x35, 0x8, 0x31, 0x2C, 0x32, 0x30, 0x2B, 0x32, 0x30, 0x35, 0x3B, 0x2B, 0x32, 0x21, 0x30, 0x2C, 0x2C, 0x8, 0x31, 0x35, 0x3B, 0x3B, 0x2B, 0x3B, 0x3B, 0x2B, 0x3B, 0x2C, 0x3B, 0x35, 0x3B, 0x3B, 0x3B, 0x8, 0x31, 0x2C, 0x32, 0x30, 0x2B, 0x32, 0x30, 0x2B, 0x3B, 0x32, 0x30, 0x2B, 0x32, 0x30, 0x3B, 0x8, 0x31, 0x35, 0x35, 0x35, 0x2B, 0x3B, 0x3B, 0x2B, 0x3B, 0x3B, 0x35, 0x2B, 0x3B, 0x35, 0x35, 0x8, 0x31, 0x2B, 0x2C, 0x2C, 0x2C, 0x32, 0x30, 0x2B, 0x32, 0x30, 0x2C, 0x2C, 0x3B, 0x2C, 0x2C, 0x8, 0x31, 0x2B, 0x3B, 0x3B, 0x35, 0x3B, 0x3B, 0x2B, 0x3B, 0x3B, 0x35, 0x3B, 0x3B, 0x3B, 0x3B, 0x8, 0x31, 0x2C, 0x32, 0x30, 0x2B, 0x3B, 0x3B, 0x2C, 0x32, 0x30, 0x2C, 0x32, 0x30, 0x3B, 0x35, 0x8, 0x31, 0x3B, 0x3B, 0x3B, 0x2C, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x2C, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8},
.unk3A0 = {0x381, 0x3FE5, 0x401, 0xBDED, 0x8425, 0xDFBD, 0x221, 0x7E7F, 0x941, 0x7F7D, 0x911, 0x7FF7, 0x4101, 0x79F9, 0x803, 0xFFFF},
.coords = {27, 45},
.direction = 0x21,
.range = 0x21,
- },
- [1] =
+ }
+ },
+ [1] =
+ {
+ .unk0 = 0x13,
+ .unk1 = 0x14,
+ .trainers =
{
- .unk0 = 0x13,
- .unk1 = 0x14,
- .trainers =
+ [0] =
{
- [0] =
+ .name = _("THEODORE"),
+ .facilityClass = FACILITY_CLASS_BLACK_BELT,
+ .unused = 0,
+ .speechBefore = {EC_WORD_MY, EC_WORD_POWER, EC_WORD_WILL, EC_MOVE2(STOMP), EC_WORD_YOU, EC_WORD_EXCL},
+ .speechWin = {EC_WORD_WAAAH, EC_WORD_HAHAHA, EC_WORD_EXCL, EC_WORD_WAAAH, EC_WORD_HAHAHA, EC_WORD_EXCL_EXCL},
+ .speechLose = {EC_WORD_I, EC_WORD_WENT, EC_WORD_AT, EC_WORD_IT, EC_WORD_TOO, EC_WORD_HARD},
+ .speechAfter = {EC_WORD_YES_SIR_EXCL, EC_WORD_YOU, EC_WORD_LOOK, EC_WORD_NICE, EC_WORD_AND, EC_WORD_GUTSY},
+ .mons =
{
- .name = _("THEODORE"),
- .facilityClass = FACILITY_CLASS_BLACK_BELT,
- .unused = 0,
- .speechBefore = {EC_WORD_MY, EC_WORD_POWER, EC_WORD_WILL, EC_MOVE2(STOMP), EC_WORD_YOU, EC_WORD_EXCL},
- .speechWin = {EC_WORD_WAAAH, EC_WORD_HAHAHA, EC_WORD_EXCL, EC_WORD_WAAAH, EC_WORD_HAHAHA, EC_WORD_EXCL_EXCL},
- .speechLose = {EC_WORD_I, EC_WORD_WENT, EC_WORD_AT, EC_WORD_IT, EC_WORD_TOO, EC_WORD_HARD},
- .speechAfter = {EC_WORD_YES_SIR_EXCL, EC_WORD_YOU, EC_WORD_LOOK, EC_WORD_NICE, EC_WORD_AND, EC_WORD_GUTSY},
- .mons =
+ [0] =
{
- [0] =
- {
- .species = SPECIES_MEDITITE,
- .heldItem = ITEM_FOCUS_BAND,
- .moves = {MOVE_FOCUS_PUNCH, MOVE_PROTECT, MOVE_NONE, MOVE_NONE},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 252,
- .attackEV = 252,
- .spDefenseEV = 6,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 20,
- .attackIV = 20,
- .defenseIV = 20,
- .speedIV = 20,
- .spAttackIV = 20,
- .spDefenseIV = 20,
- .abilityNum = 0,
- .personality = 0x80,
- .nickname = _("MEDITITE"),
- .friendship = 255,
- },
- [1] =
- {
- .species = SPECIES_HERACROSS,
- .heldItem = ITEM_FOCUS_BAND,
- .moves = {MOVE_FOCUS_PUNCH, MOVE_PROTECT, MOVE_NONE, MOVE_NONE},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 252,
- .attackEV = 252,
- .spDefenseEV = 6,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 20,
- .attackIV = 20,
- .defenseIV = 20,
- .speedIV = 20,
- .spAttackIV = 20,
- .spDefenseIV = 20,
- .abilityNum = 1,
- .personality = 0x80,
- .nickname = _("HERACROSS"),
- .friendship = 255,
- },
- [2] =
- {
- .species = SPECIES_HITMONTOP,
- .heldItem = ITEM_SHELL_BELL,
- .moves = {MOVE_FOCUS_PUNCH, MOVE_PROTECT, MOVE_NONE, MOVE_NONE},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 252,
- .attackEV = 252,
- .spDefenseEV = 6,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 20,
- .attackIV = 20,
- .defenseIV = 20,
- .speedIV = 20,
- .spAttackIV = 20,
- .spDefenseIV = 20,
- .abilityNum = 0,
- .personality = 0x3,
- .nickname = _("HITMONTOP"),
- .friendship = 255,
- },
- [3] =
- {
- .species = SPECIES_MACHOP,
- .heldItem = ITEM_SALAC_BERRY,
- .moves = {MOVE_FOCUS_PUNCH, MOVE_REVENGE, MOVE_NONE, MOVE_NONE},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 252,
- .attackEV = 252,
- .spDefenseEV = 6,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 20,
- .attackIV = 20,
- .defenseIV = 20,
- .speedIV = 20,
- .spAttackIV = 20,
- .spDefenseIV = 20,
- .abilityNum = 0,
- .personality = 0x4E,
- .nickname = _("MACHOP"),
- .friendship = 255,
- },
- [4] =
- {
- .species = SPECIES_PINSIR,
- .heldItem = ITEM_SALAC_BERRY,
- .moves = {MOVE_FOCUS_PUNCH, MOVE_REVENGE, MOVE_NONE, MOVE_NONE},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 252,
- .attackEV = 252,
- .spDefenseEV = 6,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 20,
- .attackIV = 20,
- .defenseIV = 20,
- .speedIV = 20,
- .spAttackIV = 20,
- .spDefenseIV = 20,
- .abilityNum = 0,
- .personality = 0x80,
- .nickname = _("PINSIR"),
- .friendship = 255,
- },
- [5] =
- {
- .species = SPECIES_HITMONCHAN,
- .heldItem = ITEM_FOCUS_BAND,
- .moves = {MOVE_FOCUS_PUNCH, MOVE_REVENGE, MOVE_NONE, MOVE_NONE},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 252,
- .attackEV = 252,
- .spDefenseEV = 6,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 20,
- .attackIV = 20,
- .defenseIV = 20,
- .speedIV = 20,
- .spAttackIV = 20,
- .spDefenseIV = 20,
- .abilityNum = 0,
- .personality = 0x3,
- .nickname = _("HITMONCHAN"),
- .friendship = 255,
- },
+ .species = SPECIES_MEDITITE,
+ .heldItem = ITEM_FOCUS_BAND,
+ .moves = {MOVE_FOCUS_PUNCH, MOVE_PROTECT, MOVE_NONE, MOVE_NONE},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 252,
+ .attackEV = 252,
+ .spDefenseEV = 6,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 20,
+ .attackIV = 20,
+ .defenseIV = 20,
+ .speedIV = 20,
+ .spAttackIV = 20,
+ .spDefenseIV = 20,
+ .abilityNum = 0,
+ .personality = 0x80,
+ .nickname = _("MEDITITE"),
+ .friendship = 255,
+ },
+ [1] =
+ {
+ .species = SPECIES_HERACROSS,
+ .heldItem = ITEM_FOCUS_BAND,
+ .moves = {MOVE_FOCUS_PUNCH, MOVE_PROTECT, MOVE_NONE, MOVE_NONE},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 252,
+ .attackEV = 252,
+ .spDefenseEV = 6,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 20,
+ .attackIV = 20,
+ .defenseIV = 20,
+ .speedIV = 20,
+ .spAttackIV = 20,
+ .spDefenseIV = 20,
+ .abilityNum = 1,
+ .personality = 0x80,
+ .nickname = _("HERACROSS"),
+ .friendship = 255,
+ },
+ [2] =
+ {
+ .species = SPECIES_HITMONTOP,
+ .heldItem = ITEM_SHELL_BELL,
+ .moves = {MOVE_FOCUS_PUNCH, MOVE_PROTECT, MOVE_NONE, MOVE_NONE},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 252,
+ .attackEV = 252,
+ .spDefenseEV = 6,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 20,
+ .attackIV = 20,
+ .defenseIV = 20,
+ .speedIV = 20,
+ .spAttackIV = 20,
+ .spDefenseIV = 20,
+ .abilityNum = 0,
+ .personality = 0x3,
+ .nickname = _("HITMONTOP"),
+ .friendship = 255,
+ },
+ [3] =
+ {
+ .species = SPECIES_MACHOP,
+ .heldItem = ITEM_SALAC_BERRY,
+ .moves = {MOVE_FOCUS_PUNCH, MOVE_REVENGE, MOVE_NONE, MOVE_NONE},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 252,
+ .attackEV = 252,
+ .spDefenseEV = 6,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 20,
+ .attackIV = 20,
+ .defenseIV = 20,
+ .speedIV = 20,
+ .spAttackIV = 20,
+ .spDefenseIV = 20,
+ .abilityNum = 0,
+ .personality = 0x4E,
+ .nickname = _("MACHOP"),
+ .friendship = 255,
+ },
+ [4] =
+ {
+ .species = SPECIES_PINSIR,
+ .heldItem = ITEM_SALAC_BERRY,
+ .moves = {MOVE_FOCUS_PUNCH, MOVE_REVENGE, MOVE_NONE, MOVE_NONE},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 252,
+ .attackEV = 252,
+ .spDefenseEV = 6,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 20,
+ .attackIV = 20,
+ .defenseIV = 20,
+ .speedIV = 20,
+ .spAttackIV = 20,
+ .spDefenseIV = 20,
+ .abilityNum = 0,
+ .personality = 0x80,
+ .nickname = _("PINSIR"),
+ .friendship = 255,
+ },
+ [5] =
+ {
+ .species = SPECIES_HITMONCHAN,
+ .heldItem = ITEM_FOCUS_BAND,
+ .moves = {MOVE_FOCUS_PUNCH, MOVE_REVENGE, MOVE_NONE, MOVE_NONE},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 252,
+ .attackEV = 252,
+ .spDefenseEV = 6,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 20,
+ .attackIV = 20,
+ .defenseIV = 20,
+ .speedIV = 20,
+ .spAttackIV = 20,
+ .spDefenseIV = 20,
+ .abilityNum = 0,
+ .personality = 0x3,
+ .nickname = _("HITMONCHAN"),
+ .friendship = 255,
},
},
- [1] =
+ },
+ [1] =
+ {
+ .name = _("JAYDEN"),
+ .facilityClass = FACILITY_CLASS_POKEMON_BREEDER_F,
+ .unused = 0,
+ .speechBefore = {EC_WORD_SOME, EC_WORD_THINGS, EC_WORD_YOU, EC_WORD_CAN_T, EC_WORD_DO, EC_WORD_ALONE},
+ .speechWin = {EC_WORD_YOU, EC_WORD_WIN, EC_WORD_AS, EC_WORD_A, EC_WORD_GROUP, 0xFFFF},
+ .speechLose = {EC_WORD_WE, EC_WORD_COULDN_T, EC_WORD_WIN, EC_WORD_TOGETHER, EC_WORD_QUES, 0xFFFF},
+ .speechAfter = {EC_WORD_MAYBE, EC_WORD_I, EC_WORD_NEED, EC_WORD_A, EC_WORD_BOY, EC_WORD_FRIEND},
+ .mons =
{
- .name = _("JAYDEN"),
- .facilityClass = FACILITY_CLASS_POKEMON_BREEDER_F,
- .unused = 0,
- .speechBefore = {EC_WORD_SOME, EC_WORD_THINGS, EC_WORD_YOU, EC_WORD_CAN_T, EC_WORD_DO, EC_WORD_ALONE},
- .speechWin = {EC_WORD_YOU, EC_WORD_WIN, EC_WORD_AS, EC_WORD_A, EC_WORD_GROUP, 0xFFFF},
- .speechLose = {EC_WORD_WE, EC_WORD_COULDN_T, EC_WORD_WIN, EC_WORD_TOGETHER, EC_WORD_QUES, 0xFFFF},
- .speechAfter = {EC_WORD_MAYBE, EC_WORD_I, EC_WORD_NEED, EC_WORD_A, EC_WORD_BOY, EC_WORD_FRIEND},
- .mons =
+ [0] =
{
- [0] =
- {
- .species = SPECIES_VULPIX,
- .heldItem = ITEM_LUM_BERRY,
- .moves = {MOVE_WILL_O_WISP, MOVE_CONFUSE_RAY, MOVE_TAIL_WHIP, MOVE_OVERHEAT},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 252,
- .defenseEV = 252,
- .spDefenseEV = 6,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 15,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 0,
- .personality = 0xF,
- .nickname = _("VULPIX"),
- .friendship = 255,
- },
- [1] =
- {
- .species = SPECIES_MINUN,
- .heldItem = ITEM_FOCUS_BAND,
- .moves = {MOVE_THUNDER_WAVE, MOVE_CHARM, MOVE_ENCORE, MOVE_SPARK},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 252,
- .defenseEV = 252,
- .spAttackEV = 6,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 15,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 0,
- .personality = 0x8C,
- .nickname = _("MINUN"),
- .friendship = 255,
- },
- [2] =
- {
- .species = SPECIES_ROSELIA,
- .heldItem = ITEM_LUM_BERRY,
- .moves = {MOVE_TOXIC, MOVE_LEECH_SEED, MOVE_SWEET_SCENT, MOVE_GIGA_DRAIN},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 252,
- .defenseEV = 252,
- .spAttackEV = 6,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 15,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 1,
- .personality = 0xF,
- .nickname = _("ROSELIA"),
- .friendship = 255,
- },
- [3] =
- {
- .species = SPECIES_MR_MIME,
- .heldItem = ITEM_SITRUS_BERRY,
- .moves = {MOVE_SAFEGUARD, MOVE_REFLECT, MOVE_LIGHT_SCREEN, MOVE_PSYCHIC},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 252,
- .defenseEV = 252,
- .spDefenseEV = 6,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 15,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 0,
- .personality = 0x82,
- .nickname = _("MR. MIME"),
- .friendship = 255,
- },
- [4] =
- {
- .species = SPECIES_PLUSLE,
- .heldItem = ITEM_SITRUS_BERRY,
- .moves = {MOVE_RAIN_DANCE, MOVE_LIGHT_SCREEN, MOVE_HELPING_HAND, MOVE_THUNDER},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 252,
- .defenseEV = 252,
- .spDefenseEV = 6,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 15,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 0,
- .personality = 0x5,
- .nickname = _("PLUSLE"),
- .friendship = 255,
- },
- [5] =
- {
- .species = SPECIES_TOGEPI,
- .heldItem = ITEM_SITRUS_BERRY,
- .moves = {MOVE_LIGHT_SCREEN, MOVE_REFLECT, MOVE_FOLLOW_ME, MOVE_METRONOME},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 252,
- .defenseEV = 252,
- .spDefenseEV = 6,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 15,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 1,
- .personality = 0x37,
- .nickname = _("TOGEPI"),
- .friendship = 255,
- },
+ .species = SPECIES_VULPIX,
+ .heldItem = ITEM_LUM_BERRY,
+ .moves = {MOVE_WILL_O_WISP, MOVE_CONFUSE_RAY, MOVE_TAIL_WHIP, MOVE_OVERHEAT},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 252,
+ .defenseEV = 252,
+ .spDefenseEV = 6,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 15,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 0,
+ .personality = 0xF,
+ .nickname = _("VULPIX"),
+ .friendship = 255,
+ },
+ [1] =
+ {
+ .species = SPECIES_MINUN,
+ .heldItem = ITEM_FOCUS_BAND,
+ .moves = {MOVE_THUNDER_WAVE, MOVE_CHARM, MOVE_ENCORE, MOVE_SPARK},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 252,
+ .defenseEV = 252,
+ .spAttackEV = 6,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 15,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 0,
+ .personality = 0x8C,
+ .nickname = _("MINUN"),
+ .friendship = 255,
+ },
+ [2] =
+ {
+ .species = SPECIES_ROSELIA,
+ .heldItem = ITEM_LUM_BERRY,
+ .moves = {MOVE_TOXIC, MOVE_LEECH_SEED, MOVE_SWEET_SCENT, MOVE_GIGA_DRAIN},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 252,
+ .defenseEV = 252,
+ .spAttackEV = 6,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 15,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 1,
+ .personality = 0xF,
+ .nickname = _("ROSELIA"),
+ .friendship = 255,
+ },
+ [3] =
+ {
+ .species = SPECIES_MR_MIME,
+ .heldItem = ITEM_SITRUS_BERRY,
+ .moves = {MOVE_SAFEGUARD, MOVE_REFLECT, MOVE_LIGHT_SCREEN, MOVE_PSYCHIC},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 252,
+ .defenseEV = 252,
+ .spDefenseEV = 6,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 15,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 0,
+ .personality = 0x82,
+ .nickname = _("MR. MIME"),
+ .friendship = 255,
+ },
+ [4] =
+ {
+ .species = SPECIES_PLUSLE,
+ .heldItem = ITEM_SITRUS_BERRY,
+ .moves = {MOVE_RAIN_DANCE, MOVE_LIGHT_SCREEN, MOVE_HELPING_HAND, MOVE_THUNDER},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 252,
+ .defenseEV = 252,
+ .spDefenseEV = 6,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 15,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 0,
+ .personality = 0x5,
+ .nickname = _("PLUSLE"),
+ .friendship = 255,
+ },
+ [5] =
+ {
+ .species = SPECIES_TOGEPI,
+ .heldItem = ITEM_SITRUS_BERRY,
+ .moves = {MOVE_LIGHT_SCREEN, MOVE_REFLECT, MOVE_FOLLOW_ME, MOVE_METRONOME},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 252,
+ .defenseEV = 252,
+ .spDefenseEV = 6,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 15,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 1,
+ .personality = 0x37,
+ .nickname = _("TOGEPI"),
+ .friendship = 255,
},
},
},
+ },
+ .display = {
.data = {0xD1, 0xD5, 0xD5, 0xD5, 0xD9, 0xD9, 0x1B, 0x1C, 0x1D, 0xC5, 0xC6, 0xCE, 0xD5, 0xDB, 0xD5, 0x8, 0xD1, 0xCB, 0xC4, 0xC4, 0xDB, 0xDB, 0xC4, 0xC4, 0xC4, 0xCC, 0xCC, 0xCC, 0xCB, 0xDB, 0xCB, 0x8, 0xD1, 0xCB, 0xDB, 0xDB, 0x17, 0x17, 0x17, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xCB, 0xDB, 0xCB, 0x8, 0xD1, 0xCB, 0xDB, 0xD5, 0x17, 0x17, 0x17, 0xD5, 0xD5, 0xD5, 0xD5, 0xDF, 0xCB, 0xDB, 0xCB, 0x8, 0xD1, 0xCB, 0xDB, 0xCB, 0x17, 0x17, 0x1F, 0xCB, 0xCB, 0xC4, 0xC4, 0xDB, 0xCB, 0xDB, 0xCB, 0x8, 0xD1, 0xCB, 0xDB, 0xCB, 0xDB, 0xDB, 0xC4, 0xCB, 0xCB, 0xDF, 0xD5, 0xD5, 0xCB, 0xDB, 0xCB, 0x8, 0xD1, 0xCB, 0xDB, 0xCB, 0xDB, 0xDB, 0xDB, 0xCB, 0xCB, 0xDB, 0xC4, 0xC4, 0xCB, 0xDB, 0xCB, 0x8, 0xD1, 0xCB, 0xDB, 0xCB, 0xDB, 0xDB, 0xDB, 0xCB, 0xCB, 0xD5, 0xD5, 0xDF, 0xCB, 0xDB, 0xCB, 0x8, 0xD1, 0xCB, 0xDB, 0xCB, 0xDB, 0xDB, 0xDB, 0xCB, 0xCB, 0xC4, 0xC4, 0xDB, 0xCB, 0xDB, 0xCB, 0x8, 0xD1, 0xCB, 0xDB, 0xCB, 0xDB, 0xDB, 0xDB, 0xCB, 0xCB, 0xDF, 0xD5, 0xD5, 0xCB, 0xDB, 0xCB, 0x8, 0xD1, 0xCB, 0xDB, 0xCB, 0xDB, 0xDB, 0xDB, 0xC4, 0xC4, 0xDB, 0xC4, 0xC4, 0xC4, 0xDB, 0xCB, 0x8, 0xD1, 0xCB, 0xDB, 0xCB, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0xDB, 0xD5, 0xD5, 0xD5, 0xCB, 0x8, 0xD1, 0xC4, 0xDB, 0xCB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0x9B, 0xDB, 0xCB, 0xCB, 0xCB, 0xCB, 0x8, 0xD1, 0xDB, 0xDB, 0xCB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0x9B, 0xDB, 0xCB, 0xCB, 0xCB, 0xCB, 0x8, 0xD1, 0xDB, 0xDB, 0xC4, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0x9B, 0xDB, 0xC4, 0xC4, 0xC4, 0xC4, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8},
.unk3A0 = {0x381, 0x73FB, 0x400B, 0x400B, 0x51EB, 0x538B, 0x51BB, 0x518B, 0x51EB, 0x518B, 0x51BB, 0x5003, 0x501F, 0x101F, 0x101F, 0xFFFF},
.coords = {180, 233},
.direction = 0x3,
.range = 0x35,
- },
- [2] =
+ }
+ },
+ [2] =
+ {
+ .unk0 = 0x15,
+ .unk1 = 0x16,
+ .trainers =
{
- .unk0 = 0x15,
- .unk1 = 0x16,
- .trainers =
+ [0] =
{
- [0] =
+ .name = _("SALVADORE"),
+ .facilityClass = FACILITY_CLASS_PKMN_BREEDER_M,
+ .unused = 0,
+ .speechBefore = {EC_WORD_LET_S, EC_MOVE2(WRAP), EC_WORD_THINGS, EC_WORD_UP, EC_WORD_HERE, EC_WORD_HEY_QUES},
+ .speechWin = {EC_WORD_WOULD, EC_WORD_YOU, EC_WORD_LIKE, EC_WORD_TO, EC_WORD_GO_HOME, EC_WORD_QUES},
+ .speechLose = {EC_WORD_I, EC_WORD_WILL, EC_WORD_MAKE, EC_WORD_YOU, EC_WORD_SORRY, EC_WORD_FRIEND},
+ .speechAfter = {EC_WORD_HAVEN_T, EC_WORD_YOU, EC_WORD_DONE, EC_WORD_ENOUGH, EC_WORD_QUES, 0xFFFF},
+ .mons =
{
- .name = _("SALVADORE"),
- .facilityClass = FACILITY_CLASS_PKMN_BREEDER_M,
- .unused = 0,
- .speechBefore = {EC_WORD_LET_S, EC_MOVE2(WRAP), EC_WORD_THINGS, EC_WORD_UP, EC_WORD_HERE, EC_WORD_HEY_QUES},
- .speechWin = {EC_WORD_WOULD, EC_WORD_YOU, EC_WORD_LIKE, EC_WORD_TO, EC_WORD_GO_HOME, EC_WORD_QUES},
- .speechLose = {EC_WORD_I, EC_WORD_WILL, EC_WORD_MAKE, EC_WORD_YOU, EC_WORD_SORRY, EC_WORD_FRIEND},
- .speechAfter = {EC_WORD_HAVEN_T, EC_WORD_YOU, EC_WORD_DONE, EC_WORD_ENOUGH, EC_WORD_QUES, 0xFFFF},
- .mons =
+ [0] =
{
- [0] =
- {
- .species = SPECIES_VAPOREON,
- .heldItem = ITEM_FOCUS_BAND,
- .moves = {MOVE_HAZE, MOVE_HELPING_HAND, MOVE_TICKLE, MOVE_WATER_PULSE},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 250,
- .defenseEV = 130,
- .spDefenseEV = 130,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 20,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 0,
- .personality = 0x37,
- .nickname = _("VAPOREON"),
- .friendship = 0,
- },
- [1] =
- {
- .species = SPECIES_DODRIO,
- .heldItem = ITEM_KINGS_ROCK,
- .moves = {MOVE_HAZE, MOVE_TRI_ATTACK, MOVE_TAUNT, MOVE_TORMENT},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 252,
- .speedEV = 252,
- .spDefenseEV = 6,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 20,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 1,
- .personality = 0x8A,
- .nickname = _("DODRIO"),
- .friendship = 0,
- },
- [2] =
- {
- .species = SPECIES_OMASTAR,
- .heldItem = ITEM_QUICK_CLAW,
- .moves = {MOVE_HAZE, MOVE_HYDRO_PUMP, MOVE_TICKLE, MOVE_ATTRACT},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 250,
- .defenseEV = 130,
- .spDefenseEV = 130,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 20,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 0,
- .personality = 0x14,
- .nickname = _("OMASTAR"),
- .friendship = 255,
- },
- [3] =
- {
- .species = SPECIES_LICKITUNG,
- .heldItem = ITEM_CHESTO_BERRY,
- .moves = {MOVE_BELLY_DRUM, MOVE_REST, MOVE_MUD_SLAP, MOVE_SWAGGER},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 250,
- .defenseEV = 130,
- .spDefenseEV = 130,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 15,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 0,
- .personality = 0x8,
- .nickname = _("LICKITUNG"),
- .friendship = 255,
- },
- [4] =
- {
- .species = SPECIES_SLOWBRO,
- .heldItem = ITEM_LEFTOVERS,
- .moves = {MOVE_BELLY_DRUM, MOVE_MUD_SLAP, MOVE_SWAGGER, MOVE_AMNESIA},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 250,
- .defenseEV = 130,
- .spDefenseEV = 130,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 15,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 1,
- .personality = 0x94,
- .nickname = _("SLOWBRO"),
- .friendship = 0,
- },
- [5] =
- {
- .species = SPECIES_LINOONE,
- .heldItem = ITEM_LUM_BERRY,
- .moves = {MOVE_BELLY_DRUM, MOVE_REST, MOVE_MUD_SLAP, MOVE_SWAGGER},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 250,
- .defenseEV = 130,
- .spDefenseEV = 130,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 20,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 0,
- .personality = 0x8,
- .nickname = _("LINOONE"),
- .friendship = 255,
- },
+ .species = SPECIES_VAPOREON,
+ .heldItem = ITEM_FOCUS_BAND,
+ .moves = {MOVE_HAZE, MOVE_HELPING_HAND, MOVE_TICKLE, MOVE_WATER_PULSE},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 250,
+ .defenseEV = 130,
+ .spDefenseEV = 130,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 20,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 0,
+ .personality = 0x37,
+ .nickname = _("VAPOREON"),
+ .friendship = 0,
+ },
+ [1] =
+ {
+ .species = SPECIES_DODRIO,
+ .heldItem = ITEM_KINGS_ROCK,
+ .moves = {MOVE_HAZE, MOVE_TRI_ATTACK, MOVE_TAUNT, MOVE_TORMENT},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 252,
+ .speedEV = 252,
+ .spDefenseEV = 6,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 20,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 1,
+ .personality = 0x8A,
+ .nickname = _("DODRIO"),
+ .friendship = 0,
+ },
+ [2] =
+ {
+ .species = SPECIES_OMASTAR,
+ .heldItem = ITEM_QUICK_CLAW,
+ .moves = {MOVE_HAZE, MOVE_HYDRO_PUMP, MOVE_TICKLE, MOVE_ATTRACT},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 250,
+ .defenseEV = 130,
+ .spDefenseEV = 130,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 20,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 0,
+ .personality = 0x14,
+ .nickname = _("OMASTAR"),
+ .friendship = 255,
+ },
+ [3] =
+ {
+ .species = SPECIES_LICKITUNG,
+ .heldItem = ITEM_CHESTO_BERRY,
+ .moves = {MOVE_BELLY_DRUM, MOVE_REST, MOVE_MUD_SLAP, MOVE_SWAGGER},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 250,
+ .defenseEV = 130,
+ .spDefenseEV = 130,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 15,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 0,
+ .personality = 0x8,
+ .nickname = _("LICKITUNG"),
+ .friendship = 255,
+ },
+ [4] =
+ {
+ .species = SPECIES_SLOWBRO,
+ .heldItem = ITEM_LEFTOVERS,
+ .moves = {MOVE_BELLY_DRUM, MOVE_MUD_SLAP, MOVE_SWAGGER, MOVE_AMNESIA},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 250,
+ .defenseEV = 130,
+ .spDefenseEV = 130,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 15,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 1,
+ .personality = 0x94,
+ .nickname = _("SLOWBRO"),
+ .friendship = 0,
+ },
+ [5] =
+ {
+ .species = SPECIES_LINOONE,
+ .heldItem = ITEM_LUM_BERRY,
+ .moves = {MOVE_BELLY_DRUM, MOVE_REST, MOVE_MUD_SLAP, MOVE_SWAGGER},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 250,
+ .defenseEV = 130,
+ .spDefenseEV = 130,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 20,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 0,
+ .personality = 0x8,
+ .nickname = _("LINOONE"),
+ .friendship = 255,
},
},
- [1] =
+ },
+ [1] =
+ {
+ .name = _("VERONICA"),
+ .facilityClass = FACILITY_CLASS_POKEMON_BREEDER_F,
+ .unused = 0,
+ .speechBefore = {EC_WORD_I_AM, EC_WORD_THE, EC_WORD_STRONG, EC_WORD_BEAUTY, EC_WORD_AROUND, EC_WORD_HERE},
+ .speechWin = {EC_WORD_I_AM, EC_WORD_STRONG, EC_WORD_THAT_S, EC_WORD_WHY, EC_WORD_EXCL, 0xFFFF},
+ .speechLose = {EC_WORD_I_AM, EC_WORD_TIRED, EC_WORD_TODAY, EC_WORD_THAT_S, EC_WORD_WHY, EC_WORD_EXCL},
+ .speechAfter = {EC_WORD_WHY, EC_WORD_YES, EC_WORD_I_AM, EC_WORD_ANGRY, EC_WORD_THANK_YOU, EC_WORD_EXCL},
+ .mons =
{
- .name = _("VERONICA"),
- .facilityClass = FACILITY_CLASS_POKEMON_BREEDER_F,
- .unused = 0,
- .speechBefore = {EC_WORD_I_AM, EC_WORD_THE, EC_WORD_STRONG, EC_WORD_BEAUTY, EC_WORD_AROUND, EC_WORD_HERE},
- .speechWin = {EC_WORD_I_AM, EC_WORD_STRONG, EC_WORD_THAT_S, EC_WORD_WHY, EC_WORD_EXCL, 0xFFFF},
- .speechLose = {EC_WORD_I_AM, EC_WORD_TIRED, EC_WORD_TODAY, EC_WORD_THAT_S, EC_WORD_WHY, EC_WORD_EXCL},
- .speechAfter = {EC_WORD_WHY, EC_WORD_YES, EC_WORD_I_AM, EC_WORD_ANGRY, EC_WORD_THANK_YOU, EC_WORD_EXCL},
- .mons =
+ [0] =
{
- [0] =
- {
- .species = SPECIES_SKITTY,
- .heldItem = ITEM_FOCUS_BAND,
- .moves = {MOVE_PSYCH_UP, MOVE_DOUBLE_EDGE, MOVE_SHADOW_BALL, MOVE_IRON_TAIL},
- .level = 0,
- .ppBonuses = 0,
- .attackEV = 252,
- .speedEV = 252,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
- .abilityNum = 0,
- .personality = 0xCB,
- .nickname = _("SKITTY"),
- .friendship = 255,
- },
- [1] =
- {
- .species = SPECIES_MEDICHAM,
- .heldItem = ITEM_QUICK_CLAW,
- .moves = {MOVE_PSYCH_UP, MOVE_HI_JUMP_KICK, MOVE_MEGA_KICK, MOVE_ROCK_SLIDE},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 252,
- .attackEV = 6,
- .speedEV = 252,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 15,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 0,
- .personality = 0xD,
- .nickname = _("MEDICHAM"),
- .friendship = 0,
- },
- [2] =
- {
- .species = SPECIES_STANTLER,
- .heldItem = ITEM_SHELL_BELL,
- .moves = {MOVE_PSYCH_UP, MOVE_RETURN, MOVE_EARTHQUAKE, MOVE_SHADOW_BALL},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 252,
- .attackEV = 252,
- .speedEV = 6,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 15,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 0,
- .personality = 0x3,
- .nickname = _("STANTLER"),
- .friendship = 0,
- },
- [3] =
- {
- .species = SPECIES_NIDOQUEEN,
- .heldItem = ITEM_SALAC_BERRY,
- .moves = {MOVE_SUPERPOWER, MOVE_BITE, MOVE_CHARM, MOVE_FLATTER},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 252,
- .attackEV = 252,
- .spDefenseEV = 6,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 15,
- .attackIV = 20,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 0,
- .personality = 0x3,
- .nickname = _("NIDOQUEEN"),
- .friendship = 0,
- },
- [4] =
- {
- .species = SPECIES_NINETALES,
- .heldItem = ITEM_SALAC_BERRY,
- .moves = {MOVE_OVERHEAT, MOVE_QUICK_ATTACK, MOVE_SPITE, MOVE_TAIL_WHIP},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 6,
- .speedEV = 252,
- .spAttackEV = 252,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 15,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 0,
- .personality = 0xD7,
- .nickname = _("NINETALES"),
- .friendship = 255,
- },
- [5] =
- {
- .species = SPECIES_CHARIZARD,
- .heldItem = ITEM_SALAC_BERRY,
- .moves = {MOVE_OVERHEAT, MOVE_BEAT_UP, MOVE_SCARY_FACE, MOVE_GROWL},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 6,
- .speedEV = 252,
- .spAttackEV = 252,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 15,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 0,
- .personality = 0x28,
- .nickname = _("CHARIZARD"),
- .friendship = 255,
- },
+ .species = SPECIES_SKITTY,
+ .heldItem = ITEM_FOCUS_BAND,
+ .moves = {MOVE_PSYCH_UP, MOVE_DOUBLE_EDGE, MOVE_SHADOW_BALL, MOVE_IRON_TAIL},
+ .level = 0,
+ .ppBonuses = 0,
+ .attackEV = 252,
+ .speedEV = 252,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 31,
+ .attackIV = 31,
+ .defenseIV = 31,
+ .speedIV = 31,
+ .spAttackIV = 31,
+ .spDefenseIV = 31,
+ .abilityNum = 0,
+ .personality = 0xCB,
+ .nickname = _("SKITTY"),
+ .friendship = 255,
+ },
+ [1] =
+ {
+ .species = SPECIES_MEDICHAM,
+ .heldItem = ITEM_QUICK_CLAW,
+ .moves = {MOVE_PSYCH_UP, MOVE_HI_JUMP_KICK, MOVE_MEGA_KICK, MOVE_ROCK_SLIDE},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 252,
+ .attackEV = 6,
+ .speedEV = 252,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 15,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 0,
+ .personality = 0xD,
+ .nickname = _("MEDICHAM"),
+ .friendship = 0,
+ },
+ [2] =
+ {
+ .species = SPECIES_STANTLER,
+ .heldItem = ITEM_SHELL_BELL,
+ .moves = {MOVE_PSYCH_UP, MOVE_RETURN, MOVE_EARTHQUAKE, MOVE_SHADOW_BALL},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 252,
+ .attackEV = 252,
+ .speedEV = 6,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 15,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 0,
+ .personality = 0x3,
+ .nickname = _("STANTLER"),
+ .friendship = 0,
+ },
+ [3] =
+ {
+ .species = SPECIES_NIDOQUEEN,
+ .heldItem = ITEM_SALAC_BERRY,
+ .moves = {MOVE_SUPERPOWER, MOVE_BITE, MOVE_CHARM, MOVE_FLATTER},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 252,
+ .attackEV = 252,
+ .spDefenseEV = 6,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 15,
+ .attackIV = 20,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 0,
+ .personality = 0x3,
+ .nickname = _("NIDOQUEEN"),
+ .friendship = 0,
+ },
+ [4] =
+ {
+ .species = SPECIES_NINETALES,
+ .heldItem = ITEM_SALAC_BERRY,
+ .moves = {MOVE_OVERHEAT, MOVE_QUICK_ATTACK, MOVE_SPITE, MOVE_TAIL_WHIP},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 6,
+ .speedEV = 252,
+ .spAttackEV = 252,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 15,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 0,
+ .personality = 0xD7,
+ .nickname = _("NINETALES"),
+ .friendship = 255,
+ },
+ [5] =
+ {
+ .species = SPECIES_CHARIZARD,
+ .heldItem = ITEM_SALAC_BERRY,
+ .moves = {MOVE_OVERHEAT, MOVE_BEAT_UP, MOVE_SCARY_FACE, MOVE_GROWL},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 6,
+ .speedEV = 252,
+ .spAttackEV = 252,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 15,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 0,
+ .personality = 0x28,
+ .nickname = _("CHARIZARD"),
+ .friendship = 255,
},
},
},
+ },
+ .display = {
.data = {0x31, 0x35, 0x35, 0x35, 0x26, 0x26, 0x13, 0x14, 0x15, 0x38, 0x26, 0x2E, 0x35, 0x35, 0x3B, 0x8, 0x69, 0x63, 0x64, 0x64, 0x64, 0x64, 0x71, 0x71, 0x71, 0x72, 0x64, 0x64, 0x64, 0x63, 0x73, 0x8, 0x69, 0x63, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x63, 0x73, 0x8, 0x69, 0x63, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x63, 0x73, 0x8, 0x69, 0x63, 0x43, 0x41, 0x40, 0x41, 0x42, 0x41, 0x41, 0x4A, 0x42, 0x41, 0x41, 0x63, 0x73, 0x8, 0x69, 0x63, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x64, 0x73, 0x73, 0x73, 0x63, 0x73, 0x8, 0x69, 0x63, 0x41, 0x43, 0x4B, 0x43, 0x43, 0x41, 0x42, 0x42, 0x40, 0x41, 0x40, 0x63, 0x73, 0x8, 0x69, 0x63, 0x73, 0x73, 0x64, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x63, 0x73, 0x8, 0x69, 0x63, 0x41, 0x40, 0x42, 0x42, 0x41, 0x41, 0x42, 0x4A, 0x42, 0x41, 0x42, 0x63, 0x73, 0x8, 0x69, 0x63, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x64, 0x73, 0x73, 0x73, 0x63, 0x73, 0x8, 0x69, 0x63, 0x41, 0x42, 0x41, 0x43, 0x4B, 0x41, 0x41, 0x41, 0x40, 0x43, 0x41, 0x63, 0x73, 0x8, 0x69, 0x63, 0x73, 0x73, 0x73, 0x73, 0x64, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x63, 0x73, 0x8, 0x69, 0x63, 0x41, 0x40, 0x43, 0x41, 0x42, 0x42, 0x41, 0x4A, 0x42, 0x41, 0x42, 0x63, 0x73, 0x8, 0x69, 0x64, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x64, 0x73, 0x73, 0x73, 0x64, 0x73, 0x8, 0x69, 0x43, 0x43, 0x41, 0x42, 0x42, 0x41, 0x43, 0x41, 0x41, 0x40, 0x42, 0x41, 0x42, 0x73, 0x8, 0x69, 0x42, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x42, 0x73, 0x8},
.unk3A0 = {0x381, 0x7C3D, 0x4005, 0x4005, 0x4005, 0x4045, 0x4005, 0x4805, 0x4005, 0x4045, 0x4005, 0x4205, 0x4005, 0x4045, 0x1, 0x1},
.coords = {37, 41},
.direction = 0x23,
.range = 0x33,
- },
- [3] =
+ }
+ },
+ [3] =
+ {
+ .unk0 = 0x17,
+ .unk1 = 0x18,
+ .trainers =
{
- .unk0 = 0x17,
- .unk1 = 0x18,
- .trainers =
+ [0] =
{
- [0] =
+ .name = _("KEENAN"),
+ .facilityClass = FACILITY_CLASS_PSYCHIC_M,
+ .unused = 0,
+ .speechBefore = {EC_WORD_YOU, EC_WORD_LOOK, EC_WORD_SO, EC_WORD_HURRIED, 0xFFFF, 0xFFFF},
+ .speechWin = {EC_WORD_TOO, EC_WORD_BAD, 0xFFFF, EC_WORD_TIME, EC_WORD_IS, EC_WORD_UP},
+ .speechLose = {EC_WORD_DOES, EC_WORD_THE, EC_WORD_TIME, EC_WORD_WORRY, EC_WORD_YOU, EC_WORD_QUES},
+ .speechAfter = {EC_WORD_YOU, EC_WORD_DON_T, EC_WORD_HAVE, EC_WORD_TIME, EC_WORD_TO, EC_WORD_CHAT},
+ .mons =
{
- .name = _("KEENAN"),
- .facilityClass = FACILITY_CLASS_PSYCHIC_M,
- .unused = 0,
- .speechBefore = {EC_WORD_YOU, EC_WORD_LOOK, EC_WORD_SO, EC_WORD_HURRIED, 0xFFFF, 0xFFFF},
- .speechWin = {EC_WORD_TOO, EC_WORD_BAD, 0xFFFF, EC_WORD_TIME, EC_WORD_IS, EC_WORD_UP},
- .speechLose = {EC_WORD_DOES, EC_WORD_THE, EC_WORD_TIME, EC_WORD_WORRY, EC_WORD_YOU, EC_WORD_QUES},
- .speechAfter = {EC_WORD_YOU, EC_WORD_DON_T, EC_WORD_HAVE, EC_WORD_TIME, EC_WORD_TO, EC_WORD_CHAT},
- .mons =
+ [0] =
{
- [0] =
- {
- .species = SPECIES_ALAKAZAM,
- .heldItem = ITEM_PETAYA_BERRY,
- .moves = {MOVE_SKILL_SWAP, MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, MOVE_REFLECT},
- .level = 0,
- .ppBonuses = 0,
- .speedEV = 255,
- .spAttackEV = 255,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 5,
- .attackIV = 5,
- .defenseIV = 5,
- .speedIV = 5,
- .spAttackIV = 5,
- .spDefenseIV = 5,
- .abilityNum = 0,
- .personality = 0x41,
- .nickname = _("ALAKAZAM"),
- .friendship = 255,
- },
- [1] =
- {
- .species = SPECIES_BLISSEY,
- .heldItem = ITEM_LEFTOVERS,
- .moves = {MOVE_SKILL_SWAP, MOVE_EGG_BOMB, MOVE_THUNDERBOLT, MOVE_SING},
- .level = 0,
- .ppBonuses = 0,
- .defenseEV = 255,
- .spAttackEV = 155,
- .spDefenseEV = 100,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 5,
- .attackIV = 5,
- .defenseIV = 5,
- .speedIV = 5,
- .spAttackIV = 5,
- .spDefenseIV = 5,
- .abilityNum = 1,
- .personality = 0xF,
- .nickname = _("BLISSEY"),
- .friendship = 255,
- },
- [2] =
- {
- .species = SPECIES_GRUMPIG,
- .heldItem = ITEM_TWISTED_SPOON,
- .moves = {MOVE_SKILL_SWAP, MOVE_PSYCHIC, MOVE_CONFUSE_RAY, MOVE_REST},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 110,
- .defenseEV = 200,
- .spAttackEV = 200,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 5,
- .attackIV = 5,
- .defenseIV = 5,
- .speedIV = 5,
- .spAttackIV = 5,
- .spDefenseIV = 5,
- .abilityNum = 0,
- .personality = 0x8C,
- .nickname = _("GRUMPIG"),
- .friendship = 255,
- },
- [3] =
- {
- .species = SPECIES_GARDEVOIR,
- .heldItem = ITEM_SALAC_BERRY,
- .moves = {MOVE_SKILL_SWAP, MOVE_DREAM_EATER, MOVE_HYPNOSIS, MOVE_PROTECT},
- .level = 0,
- .ppBonuses = 0,
- .speedEV = 255,
- .spAttackEV = 255,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 5,
- .attackIV = 5,
- .defenseIV = 5,
- .speedIV = 5,
- .spAttackIV = 5,
- .spDefenseIV = 5,
- .abilityNum = 1,
- .personality = 0xF,
- .nickname = _("GARDEVOIR"),
- .friendship = 255,
- },
- [4] =
- {
- .species = SPECIES_VENOMOTH,
- .heldItem = ITEM_BRIGHT_POWDER,
- .moves = {MOVE_SKILL_SWAP, MOVE_SIGNAL_BEAM, MOVE_SLEEP_POWDER, MOVE_TOXIC},
- .level = 0,
- .ppBonuses = 0,
- .attackEV = 255,
- .speedEV = 255,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 5,
- .attackIV = 5,
- .defenseIV = 5,
- .speedIV = 5,
- .spAttackIV = 5,
- .spDefenseIV = 5,
- .abilityNum = 0,
- .personality = 0x80,
- .nickname = _("VENOMOTH"),
- .friendship = 255,
- },
- [5] =
- {
- .species = SPECIES_ESPEON,
- .heldItem = ITEM_LUM_BERRY,
- .moves = {MOVE_SKILL_SWAP, MOVE_PSYBEAM, MOVE_SWIFT, MOVE_ATTRACT},
- .level = 0,
- .ppBonuses = 0,
- .speedEV = 255,
- .spAttackEV = 255,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 5,
- .attackIV = 5,
- .defenseIV = 5,
- .speedIV = 5,
- .spAttackIV = 5,
- .spDefenseIV = 5,
- .abilityNum = 0,
- .personality = 0xF,
- .nickname = _("ESPEON"),
- .friendship = 255,
- },
+ .species = SPECIES_ALAKAZAM,
+ .heldItem = ITEM_PETAYA_BERRY,
+ .moves = {MOVE_SKILL_SWAP, MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, MOVE_REFLECT},
+ .level = 0,
+ .ppBonuses = 0,
+ .speedEV = 255,
+ .spAttackEV = 255,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 5,
+ .attackIV = 5,
+ .defenseIV = 5,
+ .speedIV = 5,
+ .spAttackIV = 5,
+ .spDefenseIV = 5,
+ .abilityNum = 0,
+ .personality = 0x41,
+ .nickname = _("ALAKAZAM"),
+ .friendship = 255,
+ },
+ [1] =
+ {
+ .species = SPECIES_BLISSEY,
+ .heldItem = ITEM_LEFTOVERS,
+ .moves = {MOVE_SKILL_SWAP, MOVE_EGG_BOMB, MOVE_THUNDERBOLT, MOVE_SING},
+ .level = 0,
+ .ppBonuses = 0,
+ .defenseEV = 255,
+ .spAttackEV = 155,
+ .spDefenseEV = 100,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 5,
+ .attackIV = 5,
+ .defenseIV = 5,
+ .speedIV = 5,
+ .spAttackIV = 5,
+ .spDefenseIV = 5,
+ .abilityNum = 1,
+ .personality = 0xF,
+ .nickname = _("BLISSEY"),
+ .friendship = 255,
+ },
+ [2] =
+ {
+ .species = SPECIES_GRUMPIG,
+ .heldItem = ITEM_TWISTED_SPOON,
+ .moves = {MOVE_SKILL_SWAP, MOVE_PSYCHIC, MOVE_CONFUSE_RAY, MOVE_REST},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 110,
+ .defenseEV = 200,
+ .spAttackEV = 200,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 5,
+ .attackIV = 5,
+ .defenseIV = 5,
+ .speedIV = 5,
+ .spAttackIV = 5,
+ .spDefenseIV = 5,
+ .abilityNum = 0,
+ .personality = 0x8C,
+ .nickname = _("GRUMPIG"),
+ .friendship = 255,
+ },
+ [3] =
+ {
+ .species = SPECIES_GARDEVOIR,
+ .heldItem = ITEM_SALAC_BERRY,
+ .moves = {MOVE_SKILL_SWAP, MOVE_DREAM_EATER, MOVE_HYPNOSIS, MOVE_PROTECT},
+ .level = 0,
+ .ppBonuses = 0,
+ .speedEV = 255,
+ .spAttackEV = 255,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 5,
+ .attackIV = 5,
+ .defenseIV = 5,
+ .speedIV = 5,
+ .spAttackIV = 5,
+ .spDefenseIV = 5,
+ .abilityNum = 1,
+ .personality = 0xF,
+ .nickname = _("GARDEVOIR"),
+ .friendship = 255,
+ },
+ [4] =
+ {
+ .species = SPECIES_VENOMOTH,
+ .heldItem = ITEM_BRIGHT_POWDER,
+ .moves = {MOVE_SKILL_SWAP, MOVE_SIGNAL_BEAM, MOVE_SLEEP_POWDER, MOVE_TOXIC},
+ .level = 0,
+ .ppBonuses = 0,
+ .attackEV = 255,
+ .speedEV = 255,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 5,
+ .attackIV = 5,
+ .defenseIV = 5,
+ .speedIV = 5,
+ .spAttackIV = 5,
+ .spDefenseIV = 5,
+ .abilityNum = 0,
+ .personality = 0x80,
+ .nickname = _("VENOMOTH"),
+ .friendship = 255,
+ },
+ [5] =
+ {
+ .species = SPECIES_ESPEON,
+ .heldItem = ITEM_LUM_BERRY,
+ .moves = {MOVE_SKILL_SWAP, MOVE_PSYBEAM, MOVE_SWIFT, MOVE_ATTRACT},
+ .level = 0,
+ .ppBonuses = 0,
+ .speedEV = 255,
+ .spAttackEV = 255,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 5,
+ .attackIV = 5,
+ .defenseIV = 5,
+ .speedIV = 5,
+ .spAttackIV = 5,
+ .spDefenseIV = 5,
+ .abilityNum = 0,
+ .personality = 0xF,
+ .nickname = _("ESPEON"),
+ .friendship = 255,
},
},
- [1] =
+ },
+ [1] =
+ {
+ .name = _("KRISTINA"),
+ .facilityClass = FACILITY_CLASS_AROMA_LADY,
+ .unused = 0,
+ .speechBefore = {EC_WORD_IT_S, EC_WORD_HOT, EC_WORD_ELLIPSIS, EC_WORD_WHAT, EC_WORD_A, EC_WORD_STENCH},
+ .speechWin = {EC_WORD_I, EC_WORD_REALLY, EC_WORD_LIKE, EC_WORD_AN, EC_WORD_OFFENSIVE, EC_WORD_STENCH},
+ .speechLose = {EC_WORD_I, EC_MOVE2(COVET), EC_WORD_ANY, EC_WORD_STRONG, EC_WORD_STENCH, 0xFFFF},
+ .speechAfter = {EC_WORD_MY, EC_WORD_SENSE, EC_WORD_OF, EC_WORD_SMELL, EC_WORD_ISN_T, EC_WORD_NORMAL},
+ .mons =
{
- .name = _("KRISTINA"),
- .facilityClass = FACILITY_CLASS_AROMA_LADY,
- .unused = 0,
- .speechBefore = {EC_WORD_IT_S, EC_WORD_HOT, EC_WORD_ELLIPSIS, EC_WORD_WHAT, EC_WORD_A, EC_WORD_STENCH},
- .speechWin = {EC_WORD_I, EC_WORD_REALLY, EC_WORD_LIKE, EC_WORD_AN, EC_WORD_OFFENSIVE, EC_WORD_STENCH},
- .speechLose = {EC_WORD_I, EC_MOVE2(COVET), EC_WORD_ANY, EC_WORD_STRONG, EC_WORD_STENCH, 0xFFFF},
- .speechAfter = {EC_WORD_MY, EC_WORD_SENSE, EC_WORD_OF, EC_WORD_SMELL, EC_WORD_ISN_T, EC_WORD_NORMAL},
- .mons =
+ [0] =
{
- [0] =
- {
- .species = SPECIES_WEEZING,
- .heldItem = ITEM_POISON_BARB,
- .moves = {MOVE_TOXIC, MOVE_SLUDGE_BOMB, MOVE_SMOKESCREEN, MOVE_HAZE},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 255,
- .attackEV = 255,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 15,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 0,
- .personality = 0x3,
- .nickname = _("WEEZING"),
- .friendship = 255,
- },
- [1] =
- {
- .species = SPECIES_GLOOM,
- .heldItem = ITEM_MIRACLE_SEED,
- .moves = {MOVE_PETAL_DANCE, MOVE_SYNTHESIS, MOVE_SUNNY_DAY, MOVE_SOLAR_BEAM},
- .level = 0,
- .ppBonuses = 0,
- .speedEV = 255,
- .spAttackEV = 255,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 15,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 0,
- .personality = 0x8C,
- .nickname = _("GLOOM"),
- .friendship = 255,
- },
- [2] =
- {
- .species = SPECIES_MUK,
- .heldItem = ITEM_BRIGHT_POWDER,
- .moves = {MOVE_SCREECH, MOVE_DISABLE, MOVE_SLUDGE_BOMB, MOVE_ACID_ARMOR},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 255,
- .attackEV = 255,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 15,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 0,
- .personality = 0x3,
- .nickname = _("MUK"),
- .friendship = 255,
- },
- [3] =
- {
- .species = SPECIES_TROPIUS,
- .heldItem = ITEM_WHITE_HERB,
- .moves = {MOVE_SUNNY_DAY, MOVE_SOLAR_BEAM, MOVE_SWEET_SCENT, MOVE_AERIAL_ACE},
- .level = 0,
- .ppBonuses = 0,
- .attackEV = 120,
- .speedEV = 255,
- .spAttackEV = 135,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 15,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 0,
- .personality = 0x83,
- .nickname = _("TROPIUS"),
- .friendship = 255,
- },
- [4] =
- {
- .species = SPECIES_BELLOSSOM,
- .heldItem = ITEM_MENTAL_HERB,
- .moves = {MOVE_SWEET_SCENT, MOVE_PETAL_DANCE, MOVE_STUN_SPORE, MOVE_SLUDGE_BOMB},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 255,
- .speedEV = 255,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 15,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 0,
- .personality = 0x6,
- .nickname = _("BELLOSSOM"),
- .friendship = 255,
- },
- [5] =
- {
- .species = SPECIES_MEGANIUM,
- .heldItem = ITEM_MIRACLE_SEED,
- .moves = {MOVE_RAZOR_LEAF, MOVE_BODY_SLAM, MOVE_LEECH_SEED, MOVE_SYNTHESIS},
- .level = 0,
- .ppBonuses = 0,
- .attackEV = 200,
- .speedEV = 110,
- .spAttackEV = 200,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 15,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 0,
- .personality = 0x1F,
- .nickname = _("MEGANIUM"),
- .friendship = 255,
- },
+ .species = SPECIES_WEEZING,
+ .heldItem = ITEM_POISON_BARB,
+ .moves = {MOVE_TOXIC, MOVE_SLUDGE_BOMB, MOVE_SMOKESCREEN, MOVE_HAZE},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 255,
+ .attackEV = 255,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 15,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 0,
+ .personality = 0x3,
+ .nickname = _("WEEZING"),
+ .friendship = 255,
+ },
+ [1] =
+ {
+ .species = SPECIES_GLOOM,
+ .heldItem = ITEM_MIRACLE_SEED,
+ .moves = {MOVE_PETAL_DANCE, MOVE_SYNTHESIS, MOVE_SUNNY_DAY, MOVE_SOLAR_BEAM},
+ .level = 0,
+ .ppBonuses = 0,
+ .speedEV = 255,
+ .spAttackEV = 255,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 15,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 0,
+ .personality = 0x8C,
+ .nickname = _("GLOOM"),
+ .friendship = 255,
+ },
+ [2] =
+ {
+ .species = SPECIES_MUK,
+ .heldItem = ITEM_BRIGHT_POWDER,
+ .moves = {MOVE_SCREECH, MOVE_DISABLE, MOVE_SLUDGE_BOMB, MOVE_ACID_ARMOR},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 255,
+ .attackEV = 255,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 15,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 0,
+ .personality = 0x3,
+ .nickname = _("MUK"),
+ .friendship = 255,
+ },
+ [3] =
+ {
+ .species = SPECIES_TROPIUS,
+ .heldItem = ITEM_WHITE_HERB,
+ .moves = {MOVE_SUNNY_DAY, MOVE_SOLAR_BEAM, MOVE_SWEET_SCENT, MOVE_AERIAL_ACE},
+ .level = 0,
+ .ppBonuses = 0,
+ .attackEV = 120,
+ .speedEV = 255,
+ .spAttackEV = 135,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 15,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 0,
+ .personality = 0x83,
+ .nickname = _("TROPIUS"),
+ .friendship = 255,
+ },
+ [4] =
+ {
+ .species = SPECIES_BELLOSSOM,
+ .heldItem = ITEM_MENTAL_HERB,
+ .moves = {MOVE_SWEET_SCENT, MOVE_PETAL_DANCE, MOVE_STUN_SPORE, MOVE_SLUDGE_BOMB},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 255,
+ .speedEV = 255,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 15,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 0,
+ .personality = 0x6,
+ .nickname = _("BELLOSSOM"),
+ .friendship = 255,
+ },
+ [5] =
+ {
+ .species = SPECIES_MEGANIUM,
+ .heldItem = ITEM_MIRACLE_SEED,
+ .moves = {MOVE_RAZOR_LEAF, MOVE_BODY_SLAM, MOVE_LEECH_SEED, MOVE_SYNTHESIS},
+ .level = 0,
+ .ppBonuses = 0,
+ .attackEV = 200,
+ .speedEV = 110,
+ .spAttackEV = 200,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 15,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 0,
+ .personality = 0x1F,
+ .nickname = _("MEGANIUM"),
+ .friendship = 255,
},
},
},
+ },
+ .display = {
.data = {0x31, 0x3B, 0x3B, 0x3B, 0x39, 0x26, 0x1B, 0x1C, 0x1D, 0x25, 0x39, 0x3A, 0x3B, 0x3B, 0x3B, 0x8, 0x1F, 0x17, 0x17, 0x17, 0x17, 0x2B, 0x24, 0x24, 0x24, 0x2B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x8, 0x33, 0x17, 0x17, 0x17, 0x17, 0x2B, 0x3B, 0x3B, 0x3B, 0x2B, 0x35, 0x35, 0x3B, 0x35, 0x35, 0x8, 0x33, 0x17, 0x17, 0x17, 0x17, 0x2B, 0x3B, 0x3B, 0x3B, 0x2B, 0x2C, 0x2C, 0x3B, 0x2C, 0x2C, 0x8, 0x33, 0x17, 0x1F, 0x17, 0x17, 0x2B, 0x3B, 0x3B, 0x3B, 0x2B, 0x17, 0x17, 0x17, 0x17, 0x17, 0x8, 0x34, 0x17, 0x2C, 0x17, 0x17, 0x2B, 0x3B, 0x3B, 0x3B, 0x2C, 0x17, 0x17, 0x17, 0x17, 0x17, 0x8, 0x17, 0x17, 0x17, 0x17, 0x17, 0x2C, 0x3B, 0x3B, 0x3B, 0x3B, 0x17, 0x17, 0x17, 0x17, 0x17, 0x8, 0x1F, 0x17, 0x17, 0x17, 0x17, 0x1F, 0x17, 0x3B, 0x3B, 0x3B, 0x17, 0x17, 0x17, 0x17, 0x17, 0x8, 0x33, 0x17, 0x17, 0x17, 0x17, 0x2B, 0x3B, 0x3B, 0x3B, 0x35, 0x1F, 0x17, 0x17, 0x1F, 0x17, 0x8, 0x34, 0x17, 0x17, 0x17, 0x17, 0x2B, 0x3B, 0x3B, 0x3B, 0x2B, 0x2C, 0x3B, 0x3B, 0x2B, 0x17, 0x8, 0x17, 0x17, 0x17, 0x1F, 0x17, 0x2B, 0x3B, 0x3B, 0x3B, 0x2B, 0x17, 0x17, 0x17, 0x2C, 0x17, 0x8, 0x1F, 0x17, 0x17, 0x2C, 0x17, 0x2B, 0x3B, 0x3B, 0x3B, 0x2B, 0x17, 0x3B, 0x1F, 0x3B, 0x17, 0x8, 0x33, 0x17, 0x17, 0x17, 0x17, 0x2B, 0x3B, 0x3B, 0x3B, 0x2B, 0x17, 0x3B, 0x2B, 0x3B, 0x17, 0x8, 0x33, 0x17, 0x17, 0x17, 0x17, 0x2B, 0x35, 0x35, 0x35, 0x2B, 0x17, 0x3B, 0x2C, 0x3B, 0x17, 0x8, 0x34, 0x17, 0x17, 0x17, 0x17, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x17, 0x17, 0x17, 0x17, 0x17, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8},
.unk3A0 = {0x381, 0x7C1, 0x8441, 0x8477, 0x8441, 0xA441, 0x401, 0x1, 0x8401, 0x8465, 0x445, 0x1441, 0x8449, 0x8449, 0x87C1, 0xFFFF},
.coords = {71, 167},
.direction = 0x1,
.range = 0x33,
- },
+ }
},
};
+
static const struct TrHillTag sDataTagVariety =
{
.unkField_0 = 8,
.unused1 = 1,
- .unkField_2 = 4,
- .unused3 = 0,
- .unused4 = 21,
- .unused5 = 76,
- .unused6 = 5,
- .floors =
- {
- [0] =
+ .numFloors = 4,
+ .checksum = 0x00054C15
+};
+
+static const struct TrHillFloor sDataTagVariety_floors[] = {
+ [0] =
{
.unk0 = 0x29,
.unk1 = 0x2A,
.trainers =
- {
- [0] =
{
- .name = _("TERRANCE"),
- .facilityClass = FACILITY_CLASS_GENTLEMAN,
- .unused = 0,
- .speechBefore = {EC_WORD_GOOD, EC_WORD_CHILDREN, EC_WORD_WILL, EC_WORD_GET, EC_WORD_A, EC_MOVE2(PRESENT)},
- .speechWin = {EC_WORD_THANK_YOU, EC_WORD_MY, EC_WORD_VICTORY, EC_WORD_IS, EC_WORD_YOUR, EC_MOVE2(PRESENT)},
- .speechLose = {EC_WORD_THAT_WAS, EC_WORD_MY, EC_MOVE2(PRESENT), EC_WORD_TO, EC_WORD_YOU, 0xFFFF},
- .speechAfter = {EC_WORD_WELL_THEN, EC_WORD_CONGRATS, EC_WORD_MY, EC_WORD_FRIEND, 0xFFFF, 0xFFFF},
- .mons =
- {
- [0] =
- {
- .species = SPECIES_DELIBIRD,
- .heldItem = ITEM_SITRUS_BERRY,
- .moves = {MOVE_PRESENT, MOVE_SPLASH, MOVE_HAIL, MOVE_PROTECT},
- .level = 0,
- .ppBonuses = 0,
- .attackEV = 255,
- .speedEV = 255,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 15,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 1,
- .personality = 0x8A,
- .nickname = _("DELIBIRD"),
- .friendship = 255,
+ [0] =
+ {
+ .name = _("TERRANCE"),
+ .facilityClass = FACILITY_CLASS_GENTLEMAN,
+ .unused = 0,
+ .speechBefore = {EC_WORD_GOOD, EC_WORD_CHILDREN, EC_WORD_WILL, EC_WORD_GET, EC_WORD_A, EC_MOVE2(PRESENT)},
+ .speechWin = {EC_WORD_THANK_YOU, EC_WORD_MY, EC_WORD_VICTORY, EC_WORD_IS, EC_WORD_YOUR, EC_MOVE2(PRESENT)},
+ .speechLose = {EC_WORD_THAT_WAS, EC_WORD_MY, EC_MOVE2(PRESENT), EC_WORD_TO, EC_WORD_YOU, 0xFFFF},
+ .speechAfter = {EC_WORD_WELL_THEN, EC_WORD_CONGRATS, EC_WORD_MY, EC_WORD_FRIEND, 0xFFFF, 0xFFFF},
+ .mons =
+ {
+ [0] =
+ {
+ .species = SPECIES_DELIBIRD,
+ .heldItem = ITEM_SITRUS_BERRY,
+ .moves = {MOVE_PRESENT, MOVE_SPLASH, MOVE_HAIL, MOVE_PROTECT},
+ .level = 0,
+ .ppBonuses = 0,
+ .attackEV = 255,
+ .speedEV = 255,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 15,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 1,
+ .personality = 0x8A,
+ .nickname = _("DELIBIRD"),
+ .friendship = 255,
+ },
+ [1] =
+ {
+ .species = SPECIES_CLEFAIRY,
+ .heldItem = ITEM_SITRUS_BERRY,
+ .moves = {MOVE_PRESENT, MOVE_COSMIC_POWER, MOVE_LIGHT_SCREEN, MOVE_MOONLIGHT},
+ .level = 0,
+ .ppBonuses = 0,
+ .attackEV = 255,
+ .speedEV = 255,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 15,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 0,
+ .personality = 0xD,
+ .nickname = _("CLEFAIRY"),
+ .friendship = 255,
+ },
+ [2] =
+ {
+ .species = SPECIES_PIKACHU,
+ .heldItem = ITEM_SITRUS_BERRY,
+ .moves = {MOVE_PRESENT, MOVE_GROWL, MOVE_TAIL_WHIP, MOVE_AGILITY},
+ .level = 0,
+ .ppBonuses = 0,
+ .attackEV = 255,
+ .speedEV = 255,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 15,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 0,
+ .personality = 0xD,
+ .nickname = _("PIKACHU"),
+ .friendship = 255,
+ },
+ [3] =
+ {
+ .species = SPECIES_MARILL,
+ .heldItem = ITEM_SITRUS_BERRY,
+ .moves = {MOVE_PRESENT, MOVE_DEFENSE_CURL, MOVE_TAIL_WHIP, MOVE_ENDURE},
+ .level = 0,
+ .ppBonuses = 0,
+ .attackEV = 255,
+ .speedEV = 255,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 15,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 1,
+ .personality = 0x8A,
+ .nickname = _("MARILL"),
+ .friendship = 255,
+ },
+ [4] =
+ {
+ .species = SPECIES_JIGGLYPUFF,
+ .heldItem = ITEM_SITRUS_BERRY,
+ .moves = {MOVE_PRESENT, MOVE_SING, MOVE_DISABLE, MOVE_REST},
+ .level = 0,
+ .ppBonuses = 0,
+ .attackEV = 255,
+ .speedEV = 255,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 15,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 0,
+ .personality = 0xD,
+ .nickname = _("JIGGLYPUFF"),
+ .friendship = 255,
+ },
+ [5] =
+ {
+ .species = SPECIES_TOGETIC,
+ .heldItem = ITEM_SITRUS_BERRY,
+ .moves = {MOVE_PRESENT, MOVE_CHARM, MOVE_SWEET_KISS, MOVE_WISH},
+ .level = 0,
+ .ppBonuses = 0,
+ .attackEV = 255,
+ .speedEV = 255,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 15,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 1,
+ .personality = 0x26,
+ .nickname = _("TOGETIC"),
+ .friendship = 255,
+ },
+ },
+ },
+ [1] =
+ {
+ .name = _("ELIZABETH"),
+ .facilityClass = FACILITY_CLASS_LADY,
+ .unused = 0,
+ .speechBefore = {EC_WORD_CAN, EC_WORD_YOU, EC_WORD_SENSE, EC_WORD_ME, EC_MOVE(FOCUS_ENERGY), EC_WORD_QUES},
+ .speechWin = {EC_WORD_THAT_S, EC_WORD_ABOUT, EC_WORD_RIGHT, EC_WORD_I, EC_WORD_WOULD, EC_WORD_THINK},
+ .speechLose = {EC_WORD_THINGS, EC_WORD_DON_T, EC_WORD_ALWAYS, EC_WORD_WORK, EC_WORD_OUT, 0xFFFF},
+ .speechAfter = {EC_WORD_I_AM, EC_WORD_FEELING, EC_WORD_LONESOME, EC_WORD_AND, EC_WORD_SAD, EC_WORD_NOW},
+ .mons =
+ {
+ [0] =
+ {
+ .species = SPECIES_WIGGLYTUFF,
+ .heldItem = ITEM_SILK_SCARF,
+ .moves = {MOVE_ROLLOUT, MOVE_DEFENSE_CURL, MOVE_SING, MOVE_DREAM_EATER},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 255,
+ .speedEV = 255,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 5,
+ .attackIV = 5,
+ .defenseIV = 5,
+ .speedIV = 5,
+ .spAttackIV = 5,
+ .spDefenseIV = 5,
+ .abilityNum = 0,
+ .personality = 0xC1,
+ .nickname = _("WIGGLYTUFF"),
+ .friendship = 255,
+ },
+ [1] =
+ {
+ .species = SPECIES_SABLEYE,
+ .heldItem = ITEM_SILK_SCARF,
+ .moves = {MOVE_ASTONISH, MOVE_FAINT_ATTACK, MOVE_DETECT, MOVE_CONFUSE_RAY},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 255,
+ .speedEV = 255,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 5,
+ .attackIV = 5,
+ .defenseIV = 5,
+ .speedIV = 5,
+ .spAttackIV = 5,
+ .spDefenseIV = 5,
+ .abilityNum = 0,
+ .personality = 0x87,
+ .nickname = _("SABLEYE"),
+ .friendship = 255,
+ },
+ [2] =
+ {
+ .species = SPECIES_GRUMPIG,
+ .heldItem = ITEM_SILK_SCARF,
+ .moves = {MOVE_PSYBEAM, MOVE_MAGIC_COAT, MOVE_BOUNCE, MOVE_FUTURE_SIGHT},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 255,
+ .speedEV = 255,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 5,
+ .attackIV = 5,
+ .defenseIV = 5,
+ .speedIV = 5,
+ .spAttackIV = 5,
+ .spDefenseIV = 5,
+ .abilityNum = 0,
+ .personality = 0xA,
+ .nickname = _("GRUMPIG"),
+ .friendship = 255,
+ },
+ [3] =
+ {
+ .species = SPECIES_CORSOLA,
+ .heldItem = ITEM_SILK_SCARF,
+ .moves = {MOVE_BUBBLE_BEAM, MOVE_ROCK_BLAST, MOVE_REFLECT, MOVE_LIGHT_SCREEN},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 255,
+ .speedEV = 255,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 5,
+ .attackIV = 5,
+ .defenseIV = 5,
+ .speedIV = 5,
+ .spAttackIV = 5,
+ .spDefenseIV = 5,
+ .abilityNum = 0,
+ .personality = 0x12,
+ .nickname = _("CORSOLA"),
+ .friendship = 255,
+ },
+ [4] =
+ {
+ .species = SPECIES_CLAMPERL,
+ .heldItem = ITEM_SILK_SCARF,
+ .moves = {MOVE_WHIRLPOOL, MOVE_IRON_DEFENSE, MOVE_ENDURE, MOVE_CONFUSE_RAY},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 255,
+ .speedEV = 255,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 5,
+ .attackIV = 5,
+ .defenseIV = 5,
+ .speedIV = 5,
+ .spAttackIV = 5,
+ .spDefenseIV = 5,
+ .abilityNum = 0,
+ .personality = 0xA,
+ .nickname = _("CLAMPERL"),
+ .friendship = 255,
+ },
+ [5] =
+ {
+ .species = SPECIES_STARMIE,
+ .heldItem = ITEM_SILK_SCARF,
+ .moves = {MOVE_DIVE, MOVE_ICY_WIND, MOVE_SWIFT, MOVE_SKILL_SWAP},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 255,
+ .speedEV = 255,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 5,
+ .attackIV = 5,
+ .defenseIV = 5,
+ .speedIV = 5,
+ .spAttackIV = 5,
+ .spDefenseIV = 5,
+ .abilityNum = 0,
+ .personality = 0xA,
+ .nickname = _("STARMIE"),
+ .friendship = 255,
+ },
+ },
},
- [1] =
- {
- .species = SPECIES_CLEFAIRY,
- .heldItem = ITEM_SITRUS_BERRY,
- .moves = {MOVE_PRESENT, MOVE_COSMIC_POWER, MOVE_LIGHT_SCREEN, MOVE_MOONLIGHT},
- .level = 0,
- .ppBonuses = 0,
- .attackEV = 255,
- .speedEV = 255,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 15,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 0,
- .personality = 0xD,
- .nickname = _("CLEFAIRY"),
- .friendship = 255,
- },
- [2] =
- {
- .species = SPECIES_PIKACHU,
- .heldItem = ITEM_SITRUS_BERRY,
- .moves = {MOVE_PRESENT, MOVE_GROWL, MOVE_TAIL_WHIP, MOVE_AGILITY},
- .level = 0,
- .ppBonuses = 0,
- .attackEV = 255,
- .speedEV = 255,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 15,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 0,
- .personality = 0xD,
- .nickname = _("PIKACHU"),
- .friendship = 255,
- },
- [3] =
- {
- .species = SPECIES_MARILL,
- .heldItem = ITEM_SITRUS_BERRY,
- .moves = {MOVE_PRESENT, MOVE_DEFENSE_CURL, MOVE_TAIL_WHIP, MOVE_ENDURE},
- .level = 0,
- .ppBonuses = 0,
- .attackEV = 255,
- .speedEV = 255,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 15,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 1,
- .personality = 0x8A,
- .nickname = _("MARILL"),
- .friendship = 255,
- },
- [4] =
- {
- .species = SPECIES_JIGGLYPUFF,
- .heldItem = ITEM_SITRUS_BERRY,
- .moves = {MOVE_PRESENT, MOVE_SING, MOVE_DISABLE, MOVE_REST},
- .level = 0,
- .ppBonuses = 0,
- .attackEV = 255,
- .speedEV = 255,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 15,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 0,
- .personality = 0xD,
- .nickname = _("JIGGLYPUFF"),
- .friendship = 255,
- },
- [5] =
- {
- .species = SPECIES_TOGETIC,
- .heldItem = ITEM_SITRUS_BERRY,
- .moves = {MOVE_PRESENT, MOVE_CHARM, MOVE_SWEET_KISS, MOVE_WISH},
- .level = 0,
- .ppBonuses = 0,
- .attackEV = 255,
- .speedEV = 255,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 15,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 1,
- .personality = 0x26,
- .nickname = _("TOGETIC"),
- .friendship = 255,
- },
- },
- },
- [1] =
- {
- .name = _("ELIZABETH"),
- .facilityClass = FACILITY_CLASS_LADY,
- .unused = 0,
- .speechBefore = {EC_WORD_CAN, EC_WORD_YOU, EC_WORD_SENSE, EC_WORD_ME, EC_MOVE(FOCUS_ENERGY), EC_WORD_QUES},
- .speechWin = {EC_WORD_THAT_S, EC_WORD_ABOUT, EC_WORD_RIGHT, EC_WORD_I, EC_WORD_WOULD, EC_WORD_THINK},
- .speechLose = {EC_WORD_THINGS, EC_WORD_DON_T, EC_WORD_ALWAYS, EC_WORD_WORK, EC_WORD_OUT, 0xFFFF},
- .speechAfter = {EC_WORD_I_AM, EC_WORD_FEELING, EC_WORD_LONESOME, EC_WORD_AND, EC_WORD_SAD, EC_WORD_NOW},
- .mons =
- {
- [0] =
- {
- .species = SPECIES_WIGGLYTUFF,
- .heldItem = ITEM_SILK_SCARF,
- .moves = {MOVE_ROLLOUT, MOVE_DEFENSE_CURL, MOVE_SING, MOVE_DREAM_EATER},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 255,
- .speedEV = 255,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 5,
- .attackIV = 5,
- .defenseIV = 5,
- .speedIV = 5,
- .spAttackIV = 5,
- .spDefenseIV = 5,
- .abilityNum = 0,
- .personality = 0xC1,
- .nickname = _("WIGGLYTUFF"),
- .friendship = 255,
- },
- [1] =
- {
- .species = SPECIES_SABLEYE,
- .heldItem = ITEM_SILK_SCARF,
- .moves = {MOVE_ASTONISH, MOVE_FAINT_ATTACK, MOVE_DETECT, MOVE_CONFUSE_RAY},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 255,
- .speedEV = 255,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 5,
- .attackIV = 5,
- .defenseIV = 5,
- .speedIV = 5,
- .spAttackIV = 5,
- .spDefenseIV = 5,
- .abilityNum = 0,
- .personality = 0x87,
- .nickname = _("SABLEYE"),
- .friendship = 255,
- },
- [2] =
- {
- .species = SPECIES_GRUMPIG,
- .heldItem = ITEM_SILK_SCARF,
- .moves = {MOVE_PSYBEAM, MOVE_MAGIC_COAT, MOVE_BOUNCE, MOVE_FUTURE_SIGHT},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 255,
- .speedEV = 255,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 5,
- .attackIV = 5,
- .defenseIV = 5,
- .speedIV = 5,
- .spAttackIV = 5,
- .spDefenseIV = 5,
- .abilityNum = 0,
- .personality = 0xA,
- .nickname = _("GRUMPIG"),
- .friendship = 255,
- },
- [3] =
- {
- .species = SPECIES_CORSOLA,
- .heldItem = ITEM_SILK_SCARF,
- .moves = {MOVE_BUBBLE_BEAM, MOVE_ROCK_BLAST, MOVE_REFLECT, MOVE_LIGHT_SCREEN},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 255,
- .speedEV = 255,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 5,
- .attackIV = 5,
- .defenseIV = 5,
- .speedIV = 5,
- .spAttackIV = 5,
- .spDefenseIV = 5,
- .abilityNum = 0,
- .personality = 0x12,
- .nickname = _("CORSOLA"),
- .friendship = 255,
- },
- [4] =
- {
- .species = SPECIES_CLAMPERL,
- .heldItem = ITEM_SILK_SCARF,
- .moves = {MOVE_WHIRLPOOL, MOVE_IRON_DEFENSE, MOVE_ENDURE, MOVE_CONFUSE_RAY},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 255,
- .speedEV = 255,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 5,
- .attackIV = 5,
- .defenseIV = 5,
- .speedIV = 5,
- .spAttackIV = 5,
- .spDefenseIV = 5,
- .abilityNum = 0,
- .personality = 0xA,
- .nickname = _("CLAMPERL"),
- .friendship = 255,
- },
- [5] =
- {
- .species = SPECIES_STARMIE,
- .heldItem = ITEM_SILK_SCARF,
- .moves = {MOVE_DIVE, MOVE_ICY_WIND, MOVE_SWIFT, MOVE_SKILL_SWAP},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 255,
- .speedEV = 255,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 5,
- .attackIV = 5,
- .defenseIV = 5,
- .speedIV = 5,
- .spAttackIV = 5,
- .spDefenseIV = 5,
- .abilityNum = 0,
- .personality = 0xA,
- .nickname = _("STARMIE"),
- .friendship = 255,
- },
- },
},
- },
- .data = {0x31, 0x3B, 0x3B, 0x3B, 0x39, 0x39, 0x13, 0x14, 0x15, 0x38, 0x39, 0x3A, 0x3B, 0x3B, 0x3B, 0x8, 0x40, 0x41, 0x41, 0x41, 0x41, 0x41, 0x42, 0x43, 0x43, 0x43, 0x43, 0x43, 0x40, 0x41, 0x41, 0x8, 0x40, 0xFB, 0x43, 0x41, 0x41, 0x41, 0x42, 0x40, 0x43, 0x41, 0x42, 0x42, 0x42, 0xFB, 0x41, 0x8, 0x40, 0x41, 0xFB, 0x41, 0x41, 0x41, 0x42, 0x40, 0x43, 0x41, 0x43, 0x43, 0xFB, 0x40, 0x41, 0x8, 0x40, 0x41, 0x41, 0xFB, 0x43, 0x41, 0x42, 0x40, 0x43, 0x43, 0x43, 0xFB, 0x41, 0x40, 0x41, 0x8, 0x40, 0x41, 0x41, 0x41, 0x42, 0x42, 0x42, 0x40, 0x43, 0x43, 0x43, 0x41, 0x41, 0x40, 0x41, 0x8, 0x40, 0x41, 0x41, 0x41, 0xFE, 0xFE, 0xFE, 0xFB, 0xFE, 0xFE, 0xFE, 0x41, 0x41, 0x40, 0x41, 0x8, 0x40, 0x41, 0x41, 0x41, 0xFE, 0xFE, 0xFE, 0xFB, 0xFE, 0xFE, 0xFE, 0x41, 0x41, 0x40, 0x41, 0x8, 0x40, 0x41, 0x42, 0x41, 0xFE, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFE, 0x41, 0x41, 0x40, 0x41, 0x8, 0x40, 0x41, 0x41, 0x41, 0xFE, 0xFE, 0xFE, 0xFB, 0xFE, 0xFE, 0xFE, 0x41, 0x41, 0x40, 0x41, 0x8, 0x40, 0x41, 0x41, 0x41, 0xFE, 0xFE, 0xFE, 0xFB, 0xFE, 0xFE, 0xFE, 0x41, 0x41, 0x40, 0x41, 0x8, 0x40, 0x42, 0x41, 0x43, 0x43, 0x43, 0x41, 0x40, 0x42, 0x42, 0x42, 0x42, 0x41, 0x40, 0x41, 0x8, 0x40, 0x40, 0x41, 0xFB, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0xFB, 0x41, 0x40, 0x41, 0x8, 0x40, 0x40, 0xFB, 0x43, 0x43, 0x41, 0x41, 0x41, 0x42, 0x42, 0x42, 0x42, 0xFB, 0x40, 0x41, 0x8, 0x40, 0xFB, 0x43, 0x43, 0x41, 0x41, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0xFB, 0x41, 0x8, 0x40, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x8},
- .unk3A0 = {0x381, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1},
- .coords = {133, 137},
- .direction = 0x23,
- .range = 0x33,
+ .display = {
+ .data = {0x31, 0x3B, 0x3B, 0x3B, 0x39, 0x39, 0x13, 0x14, 0x15, 0x38, 0x39, 0x3A, 0x3B, 0x3B, 0x3B, 0x8, 0x40, 0x41, 0x41, 0x41, 0x41, 0x41, 0x42, 0x43, 0x43, 0x43, 0x43, 0x43, 0x40, 0x41, 0x41, 0x8, 0x40, 0xFB, 0x43, 0x41, 0x41, 0x41, 0x42, 0x40, 0x43, 0x41, 0x42, 0x42, 0x42, 0xFB, 0x41, 0x8, 0x40, 0x41, 0xFB, 0x41, 0x41, 0x41, 0x42, 0x40, 0x43, 0x41, 0x43, 0x43, 0xFB, 0x40, 0x41, 0x8, 0x40, 0x41, 0x41, 0xFB, 0x43, 0x41, 0x42, 0x40, 0x43, 0x43, 0x43, 0xFB, 0x41, 0x40, 0x41, 0x8, 0x40, 0x41, 0x41, 0x41, 0x42, 0x42, 0x42, 0x40, 0x43, 0x43, 0x43, 0x41, 0x41, 0x40, 0x41, 0x8, 0x40, 0x41, 0x41, 0x41, 0xFE, 0xFE, 0xFE, 0xFB, 0xFE, 0xFE, 0xFE, 0x41, 0x41, 0x40, 0x41, 0x8, 0x40, 0x41, 0x41, 0x41, 0xFE, 0xFE, 0xFE, 0xFB, 0xFE, 0xFE, 0xFE, 0x41, 0x41, 0x40, 0x41, 0x8, 0x40, 0x41, 0x42, 0x41, 0xFE, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFE, 0x41, 0x41, 0x40, 0x41, 0x8, 0x40, 0x41, 0x41, 0x41, 0xFE, 0xFE, 0xFE, 0xFB, 0xFE, 0xFE, 0xFE, 0x41, 0x41, 0x40, 0x41, 0x8, 0x40, 0x41, 0x41, 0x41, 0xFE, 0xFE, 0xFE, 0xFB, 0xFE, 0xFE, 0xFE, 0x41, 0x41, 0x40, 0x41, 0x8, 0x40, 0x42, 0x41, 0x43, 0x43, 0x43, 0x41, 0x40, 0x42, 0x42, 0x42, 0x42, 0x41, 0x40, 0x41, 0x8, 0x40, 0x40, 0x41, 0xFB, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0xFB, 0x41, 0x40, 0x41, 0x8, 0x40, 0x40, 0xFB, 0x43, 0x43, 0x41, 0x41, 0x41, 0x42, 0x42, 0x42, 0x42, 0xFB, 0x40, 0x41, 0x8, 0x40, 0xFB, 0x43, 0x43, 0x41, 0x41, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0xFB, 0x41, 0x8, 0x40, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x8},
+ .unk3A0 = {0x381, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1},
+ .coords = {133, 137},
+ .direction = 0x23,
+ .range = 0x33,
+ }
},
- [1] =
+ [1] =
{
.unk0 = 0x2B,
.unk1 = 0x2C,
.trainers =
- {
- [0] =
{
- .name = _("ANNABELL"),
- .facilityClass = FACILITY_CLASS_PARASOL_LADY,
- .unused = 0,
- .speechBefore = {EC_WORD_HI, EC_WORD_ARE, EC_WORD_YOU, EC_WORD_FEELING, EC_WORD_UPBEAT, EC_WORD_QUES},
- .speechWin = {EC_WORD_AREN_T, EC_WORD_YOU, EC_WORD_FEELING, EC_WORD_WELL, EC_WORD_QUES, 0xFFFF},
- .speechLose = {EC_WORD_I, EC_WORD_CAN, EC_WORD_SEE, EC_WORD_YOU_RE, EC_WORD_FEELING, EC_WORD_GREAT},
- .speechAfter = {EC_WORD_YOUR, EC_WORD_POKEMON, EC_WORD_LOOK, EC_WORD_READY, EC_WORD_TO, EC_WORD_HUSTLE},
- .mons =
- {
- [0] =
- {
- .species = SPECIES_JIGGLYPUFF,
- .heldItem = ITEM_BRIGHT_POWDER,
- .moves = {MOVE_SING, MOVE_HYPER_VOICE, MOVE_ATTRACT, MOVE_NONE},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 85,
- .attackEV = 85,
- .defenseEV = 85,
- .speedEV = 85,
- .spAttackEV = 85,
- .spDefenseEV = 85,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 5,
- .attackIV = 5,
- .defenseIV = 5,
- .speedIV = 5,
- .spAttackIV = 5,
- .spDefenseIV = 5,
- .abilityNum = 0,
- .personality = 0x0,
- .nickname = _("JIGGLYPUFF"),
- .friendship = 255,
- },
- [1] =
- {
- .species = SPECIES_JYNX,
- .heldItem = ITEM_BRIGHT_POWDER,
- .moves = {MOVE_PERISH_SONG, MOVE_FAKE_TEARS, MOVE_ATTRACT, MOVE_NONE},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 85,
- .attackEV = 85,
- .defenseEV = 85,
- .speedEV = 85,
- .spAttackEV = 85,
- .spDefenseEV = 85,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 5,
- .attackIV = 5,
- .defenseIV = 5,
- .speedIV = 5,
- .spAttackIV = 5,
- .spDefenseIV = 5,
- .abilityNum = 0,
- .personality = 0x0,
- .nickname = _("JYNX"),
- .friendship = 255,
- },
- [2] =
- {
- .species = SPECIES_EXPLOUD,
- .heldItem = ITEM_BRIGHT_POWDER,
- .moves = {MOVE_HOWL, MOVE_HYPER_VOICE, MOVE_ATTRACT, MOVE_NONE},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 85,
- .attackEV = 85,
- .defenseEV = 85,
- .speedEV = 85,
- .spAttackEV = 85,
- .spDefenseEV = 85,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 5,
- .attackIV = 5,
- .defenseIV = 5,
- .speedIV = 5,
- .spAttackIV = 5,
- .spDefenseIV = 5,
- .abilityNum = 0,
- .personality = 0x96,
- .nickname = _("EXPLOUD"),
- .friendship = 255,
- },
- [3] =
- {
- .species = SPECIES_ABSOL,
- .heldItem = ITEM_BRIGHT_POWDER,
- .moves = {MOVE_SWORDS_DANCE, MOVE_SLASH, MOVE_ATTRACT, MOVE_NONE},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 85,
- .attackEV = 85,
- .defenseEV = 85,
- .speedEV = 85,
- .spAttackEV = 85,
- .spDefenseEV = 85,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 5,
- .attackIV = 5,
- .defenseIV = 5,
- .speedIV = 5,
- .spAttackIV = 5,
- .spDefenseIV = 5,
- .abilityNum = 0,
- .personality = 0x96,
- .nickname = _("ABSOL"),
- .friendship = 255,
- },
- [4] =
- {
- .species = SPECIES_PIDGEOTTO,
- .heldItem = ITEM_BRIGHT_POWDER,
- .moves = {MOVE_FEATHER_DANCE, MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_NONE},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 85,
- .attackEV = 85,
- .defenseEV = 85,
- .speedEV = 85,
- .spAttackEV = 85,
- .spDefenseEV = 85,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 5,
- .attackIV = 5,
- .defenseIV = 5,
- .speedIV = 5,
- .spAttackIV = 5,
- .spDefenseIV = 5,
- .abilityNum = 0,
- .personality = 0x96,
- .nickname = _("PIDGEOTTO"),
- .friendship = 255,
+ [0] =
+ {
+ .name = _("ANNABELL"),
+ .facilityClass = FACILITY_CLASS_PARASOL_LADY,
+ .unused = 0,
+ .speechBefore = {EC_WORD_HI, EC_WORD_ARE, EC_WORD_YOU, EC_WORD_FEELING, EC_WORD_UPBEAT, EC_WORD_QUES},
+ .speechWin = {EC_WORD_AREN_T, EC_WORD_YOU, EC_WORD_FEELING, EC_WORD_WELL, EC_WORD_QUES, 0xFFFF},
+ .speechLose = {EC_WORD_I, EC_WORD_CAN, EC_WORD_SEE, EC_WORD_YOU_RE, EC_WORD_FEELING, EC_WORD_GREAT},
+ .speechAfter = {EC_WORD_YOUR, EC_WORD_POKEMON, EC_WORD_LOOK, EC_WORD_READY, EC_WORD_TO, EC_WORD_HUSTLE},
+ .mons =
+ {
+ [0] =
+ {
+ .species = SPECIES_JIGGLYPUFF,
+ .heldItem = ITEM_BRIGHT_POWDER,
+ .moves = {MOVE_SING, MOVE_HYPER_VOICE, MOVE_ATTRACT, MOVE_NONE},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 85,
+ .attackEV = 85,
+ .defenseEV = 85,
+ .speedEV = 85,
+ .spAttackEV = 85,
+ .spDefenseEV = 85,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 5,
+ .attackIV = 5,
+ .defenseIV = 5,
+ .speedIV = 5,
+ .spAttackIV = 5,
+ .spDefenseIV = 5,
+ .abilityNum = 0,
+ .personality = 0x0,
+ .nickname = _("JIGGLYPUFF"),
+ .friendship = 255,
+ },
+ [1] =
+ {
+ .species = SPECIES_JYNX,
+ .heldItem = ITEM_BRIGHT_POWDER,
+ .moves = {MOVE_PERISH_SONG, MOVE_FAKE_TEARS, MOVE_ATTRACT, MOVE_NONE},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 85,
+ .attackEV = 85,
+ .defenseEV = 85,
+ .speedEV = 85,
+ .spAttackEV = 85,
+ .spDefenseEV = 85,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 5,
+ .attackIV = 5,
+ .defenseIV = 5,
+ .speedIV = 5,
+ .spAttackIV = 5,
+ .spDefenseIV = 5,
+ .abilityNum = 0,
+ .personality = 0x0,
+ .nickname = _("JYNX"),
+ .friendship = 255,
+ },
+ [2] =
+ {
+ .species = SPECIES_EXPLOUD,
+ .heldItem = ITEM_BRIGHT_POWDER,
+ .moves = {MOVE_HOWL, MOVE_HYPER_VOICE, MOVE_ATTRACT, MOVE_NONE},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 85,
+ .attackEV = 85,
+ .defenseEV = 85,
+ .speedEV = 85,
+ .spAttackEV = 85,
+ .spDefenseEV = 85,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 5,
+ .attackIV = 5,
+ .defenseIV = 5,
+ .speedIV = 5,
+ .spAttackIV = 5,
+ .spDefenseIV = 5,
+ .abilityNum = 0,
+ .personality = 0x96,
+ .nickname = _("EXPLOUD"),
+ .friendship = 255,
+ },
+ [3] =
+ {
+ .species = SPECIES_ABSOL,
+ .heldItem = ITEM_BRIGHT_POWDER,
+ .moves = {MOVE_SWORDS_DANCE, MOVE_SLASH, MOVE_ATTRACT, MOVE_NONE},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 85,
+ .attackEV = 85,
+ .defenseEV = 85,
+ .speedEV = 85,
+ .spAttackEV = 85,
+ .spDefenseEV = 85,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 5,
+ .attackIV = 5,
+ .defenseIV = 5,
+ .speedIV = 5,
+ .spAttackIV = 5,
+ .spDefenseIV = 5,
+ .abilityNum = 0,
+ .personality = 0x96,
+ .nickname = _("ABSOL"),
+ .friendship = 255,
+ },
+ [4] =
+ {
+ .species = SPECIES_PIDGEOTTO,
+ .heldItem = ITEM_BRIGHT_POWDER,
+ .moves = {MOVE_FEATHER_DANCE, MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_NONE},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 85,
+ .attackEV = 85,
+ .defenseEV = 85,
+ .speedEV = 85,
+ .spAttackEV = 85,
+ .spDefenseEV = 85,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 5,
+ .attackIV = 5,
+ .defenseIV = 5,
+ .speedIV = 5,
+ .spAttackIV = 5,
+ .spDefenseIV = 5,
+ .abilityNum = 0,
+ .personality = 0x96,
+ .nickname = _("PIDGEOTTO"),
+ .friendship = 255,
+ },
+ [5] =
+ {
+ .species = SPECIES_ALTARIA,
+ .heldItem = ITEM_BRIGHT_POWDER,
+ .moves = {MOVE_DRAGON_DANCE, MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_NONE},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 85,
+ .attackEV = 85,
+ .defenseEV = 85,
+ .speedEV = 85,
+ .spAttackEV = 85,
+ .spDefenseEV = 85,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 5,
+ .attackIV = 5,
+ .defenseIV = 5,
+ .speedIV = 5,
+ .spAttackIV = 5,
+ .spDefenseIV = 5,
+ .abilityNum = 0,
+ .personality = 0x0,
+ .nickname = _("ALTARIA"),
+ .friendship = 255,
+ },
+ },
+ },
+ [1] =
+ {
+ .name = _("COLEMAN"),
+ .facilityClass = FACILITY_CLASS_COLLECTOR,
+ .unused = 0,
+ .speechBefore = {EC_WORD_I, EC_WORD_SEEK, EC_WORD_SOMEONE, EC_WORD_AS, EC_WORD_MY, EC_WORD_IDOL},
+ .speechWin = {EC_WORD_DID, EC_WORD_MY, EC_WORD_IDOL, EC_WORD_SEE, EC_WORD_THAT, EC_WORD_QUES},
+ .speechLose = {EC_WORD_YOU_RE, EC_WORD_LIKE, EC_WORD_A, EC_MOVE(HEAL_BELL), EC_WORD_TO_ME, EC_WORD_EXCL},
+ .speechAfter = {EC_WORD_I_VE, EC_WORD_DECIDED, EC_WORD_I_CHOOSE_YOU, EC_WORD_AS, EC_WORD_MY, EC_WORD_IDOL},
+ .mons =
+ {
+ [0] =
+ {
+ .species = SPECIES_CHIMECHO,
+ .heldItem = ITEM_FOCUS_BAND,
+ .moves = {MOVE_UPROAR, MOVE_ATTRACT, MOVE_NONE, MOVE_NONE},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 6,
+ .attackEV = 252,
+ .speedEV = 252,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 5,
+ .attackIV = 5,
+ .defenseIV = 5,
+ .speedIV = 5,
+ .spAttackIV = 5,
+ .spDefenseIV = 5,
+ .abilityNum = 0,
+ .personality = 0xD,
+ .nickname = _("CHIMECHO"),
+ .friendship = 255,
+ },
+ [1] =
+ {
+ .species = SPECIES_WHISMUR,
+ .heldItem = ITEM_FOCUS_BAND,
+ .moves = {MOVE_UPROAR, MOVE_ATTRACT, MOVE_NONE, MOVE_NONE},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 6,
+ .attackEV = 252,
+ .speedEV = 252,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 5,
+ .attackIV = 5,
+ .defenseIV = 5,
+ .speedIV = 5,
+ .spAttackIV = 5,
+ .spDefenseIV = 5,
+ .abilityNum = 0,
+ .personality = 0xD,
+ .nickname = _("WHISMUR"),
+ .friendship = 255,
+ },
+ [2] =
+ {
+ .species = SPECIES_YANMA,
+ .heldItem = ITEM_FOCUS_BAND,
+ .moves = {MOVE_UPROAR, MOVE_ATTRACT, MOVE_NONE, MOVE_NONE},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 6,
+ .attackEV = 252,
+ .speedEV = 252,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 5,
+ .attackIV = 5,
+ .defenseIV = 5,
+ .speedIV = 5,
+ .spAttackIV = 5,
+ .spDefenseIV = 5,
+ .abilityNum = 0,
+ .personality = 0x8A,
+ .nickname = _("YANMA"),
+ .friendship = 255,
+ },
+ [3] =
+ {
+ .species = SPECIES_ILLUMISE,
+ .heldItem = ITEM_BRIGHT_POWDER,
+ .moves = {MOVE_ENCORE, MOVE_ATTRACT, MOVE_NONE, MOVE_NONE},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 252,
+ .defenseEV = 6,
+ .speedEV = 252,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 5,
+ .attackIV = 5,
+ .defenseIV = 5,
+ .speedIV = 5,
+ .spAttackIV = 5,
+ .spDefenseIV = 5,
+ .abilityNum = 0,
+ .personality = 0xA,
+ .nickname = _("ILLUMISE"),
+ .friendship = 255,
+ },
+ [4] =
+ {
+ .species = SPECIES_SPHEAL,
+ .heldItem = ITEM_FOCUS_BAND,
+ .moves = {MOVE_ENCORE, MOVE_ATTRACT, MOVE_NONE, MOVE_NONE},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 252,
+ .speedEV = 252,
+ .spDefenseEV = 6,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 5,
+ .attackIV = 5,
+ .defenseIV = 5,
+ .speedIV = 5,
+ .spAttackIV = 5,
+ .spDefenseIV = 5,
+ .abilityNum = 0,
+ .personality = 0xA,
+ .nickname = _("SPHEAL"),
+ .friendship = 255,
+ },
+ [5] =
+ {
+ .species = SPECIES_VIGOROTH,
+ .heldItem = ITEM_FOCUS_BAND,
+ .moves = {MOVE_ENCORE, MOVE_ATTRACT, MOVE_NONE, MOVE_NONE},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 252,
+ .defenseEV = 6,
+ .speedEV = 252,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 5,
+ .attackIV = 5,
+ .defenseIV = 5,
+ .speedIV = 5,
+ .spAttackIV = 5,
+ .spDefenseIV = 5,
+ .abilityNum = 0,
+ .personality = 0x87,
+ .nickname = _("VIGOROTH"),
+ .friendship = 255,
+ },
+ },
},
- [5] =
- {
- .species = SPECIES_ALTARIA,
- .heldItem = ITEM_BRIGHT_POWDER,
- .moves = {MOVE_DRAGON_DANCE, MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_NONE},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 85,
- .attackEV = 85,
- .defenseEV = 85,
- .speedEV = 85,
- .spAttackEV = 85,
- .spDefenseEV = 85,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 5,
- .attackIV = 5,
- .defenseIV = 5,
- .speedIV = 5,
- .spAttackIV = 5,
- .spDefenseIV = 5,
- .abilityNum = 0,
- .personality = 0x0,
- .nickname = _("ALTARIA"),
- .friendship = 255,
- },
- },
- },
- [1] =
- {
- .name = _("COLEMAN"),
- .facilityClass = FACILITY_CLASS_COLLECTOR,
- .unused = 0,
- .speechBefore = {EC_WORD_I, EC_WORD_SEEK, EC_WORD_SOMEONE, EC_WORD_AS, EC_WORD_MY, EC_WORD_IDOL},
- .speechWin = {EC_WORD_DID, EC_WORD_MY, EC_WORD_IDOL, EC_WORD_SEE, EC_WORD_THAT, EC_WORD_QUES},
- .speechLose = {EC_WORD_YOU_RE, EC_WORD_LIKE, EC_WORD_A, EC_MOVE(HEAL_BELL), EC_WORD_TO_ME, EC_WORD_EXCL},
- .speechAfter = {EC_WORD_I_VE, EC_WORD_DECIDED, EC_WORD_I_CHOOSE_YOU, EC_WORD_AS, EC_WORD_MY, EC_WORD_IDOL},
- .mons =
- {
- [0] =
- {
- .species = SPECIES_CHIMECHO,
- .heldItem = ITEM_FOCUS_BAND,
- .moves = {MOVE_UPROAR, MOVE_ATTRACT, MOVE_NONE, MOVE_NONE},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 6,
- .attackEV = 252,
- .speedEV = 252,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 5,
- .attackIV = 5,
- .defenseIV = 5,
- .speedIV = 5,
- .spAttackIV = 5,
- .spDefenseIV = 5,
- .abilityNum = 0,
- .personality = 0xD,
- .nickname = _("CHIMECHO"),
- .friendship = 255,
- },
- [1] =
- {
- .species = SPECIES_WHISMUR,
- .heldItem = ITEM_FOCUS_BAND,
- .moves = {MOVE_UPROAR, MOVE_ATTRACT, MOVE_NONE, MOVE_NONE},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 6,
- .attackEV = 252,
- .speedEV = 252,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 5,
- .attackIV = 5,
- .defenseIV = 5,
- .speedIV = 5,
- .spAttackIV = 5,
- .spDefenseIV = 5,
- .abilityNum = 0,
- .personality = 0xD,
- .nickname = _("WHISMUR"),
- .friendship = 255,
- },
- [2] =
- {
- .species = SPECIES_YANMA,
- .heldItem = ITEM_FOCUS_BAND,
- .moves = {MOVE_UPROAR, MOVE_ATTRACT, MOVE_NONE, MOVE_NONE},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 6,
- .attackEV = 252,
- .speedEV = 252,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 5,
- .attackIV = 5,
- .defenseIV = 5,
- .speedIV = 5,
- .spAttackIV = 5,
- .spDefenseIV = 5,
- .abilityNum = 0,
- .personality = 0x8A,
- .nickname = _("YANMA"),
- .friendship = 255,
- },
- [3] =
- {
- .species = SPECIES_ILLUMISE,
- .heldItem = ITEM_BRIGHT_POWDER,
- .moves = {MOVE_ENCORE, MOVE_ATTRACT, MOVE_NONE, MOVE_NONE},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 252,
- .defenseEV = 6,
- .speedEV = 252,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 5,
- .attackIV = 5,
- .defenseIV = 5,
- .speedIV = 5,
- .spAttackIV = 5,
- .spDefenseIV = 5,
- .abilityNum = 0,
- .personality = 0xA,
- .nickname = _("ILLUMISE"),
- .friendship = 255,
- },
- [4] =
- {
- .species = SPECIES_SPHEAL,
- .heldItem = ITEM_FOCUS_BAND,
- .moves = {MOVE_ENCORE, MOVE_ATTRACT, MOVE_NONE, MOVE_NONE},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 252,
- .speedEV = 252,
- .spDefenseEV = 6,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 5,
- .attackIV = 5,
- .defenseIV = 5,
- .speedIV = 5,
- .spAttackIV = 5,
- .spDefenseIV = 5,
- .abilityNum = 0,
- .personality = 0xA,
- .nickname = _("SPHEAL"),
- .friendship = 255,
- },
- [5] =
- {
- .species = SPECIES_VIGOROTH,
- .heldItem = ITEM_FOCUS_BAND,
- .moves = {MOVE_ENCORE, MOVE_ATTRACT, MOVE_NONE, MOVE_NONE},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 252,
- .defenseEV = 6,
- .speedEV = 252,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 5,
- .attackIV = 5,
- .defenseIV = 5,
- .speedIV = 5,
- .spAttackIV = 5,
- .spDefenseIV = 5,
- .abilityNum = 0,
- .personality = 0x87,
- .nickname = _("VIGOROTH"),
- .friendship = 255,
- },
- },
},
- },
- .data = {0x31, 0x3B, 0x3B, 0x3B, 0x39, 0x39, 0x13, 0x14, 0x15, 0x38, 0x39, 0x3A, 0x3B, 0x3B, 0x3B, 0x8, 0x91, 0x9B, 0x9C, 0x96, 0x40, 0x40, 0x96, 0x9B, 0x96, 0x40, 0x40, 0x96, 0x9B, 0x9C, 0x9B, 0x8, 0x9C, 0x9B, 0x96, 0x40, 0xDB, 0xDB, 0x40, 0x96, 0x40, 0xDB, 0xDB, 0x42, 0x96, 0x9B, 0x9B, 0x8, 0x91, 0x96, 0x40, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0x42, 0x96, 0x9C, 0x8, 0x91, 0x42, 0xDB, 0xDB, 0xD6, 0xD6, 0xD6, 0xDB, 0xD6, 0xD6, 0xD6, 0xDB, 0xDB, 0x42, 0x9B, 0x8, 0x96, 0x42, 0xDB, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xDB, 0x42, 0x96, 0x8, 0x96, 0x42, 0xDB, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xDB, 0x42, 0x96, 0x8, 0x96, 0x42, 0xDB, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xDB, 0x42, 0x96, 0x8, 0x96, 0x42, 0xDB, 0xDB, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xDB, 0xDB, 0x42, 0x96, 0x8, 0x91, 0x96, 0x42, 0xDB, 0xDB, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xDB, 0xDB, 0x42, 0x96, 0x9B, 0x8, 0x91, 0x9B, 0x96, 0x42, 0xDB, 0xDB, 0xD6, 0xD6, 0xD6, 0xDB, 0xDB, 0x42, 0x96, 0x9B, 0x9C, 0x8, 0x9C, 0x9B, 0x9B, 0x96, 0x42, 0xDB, 0xDB, 0xD6, 0xDB, 0xDB, 0x42, 0x96, 0x9B, 0x9B, 0x9B, 0x8, 0x96, 0x9B, 0x9B, 0x9B, 0x96, 0x41, 0xDB, 0xDB, 0xDB, 0x42, 0x96, 0x9B, 0x9B, 0x9C, 0x96, 0x8, 0xD6, 0x96, 0x9C, 0x9B, 0x9B, 0x96, 0x41, 0xDB, 0x42, 0x96, 0x9B, 0x9B, 0x9B, 0x96, 0xD6, 0x8, 0x9C, 0xD6, 0x96, 0x9B, 0x9C, 0x9B, 0x96, 0x40, 0x96, 0x9B, 0x9C, 0x9B, 0x96, 0xD6, 0x9C, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8},
- .unk3A0 = {0x381, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0xFFFF},
- .coords = {131, 139},
- .direction = 0x23,
- .range = 0x77,
+ .display = {
+ .data = {0x31, 0x3B, 0x3B, 0x3B, 0x39, 0x39, 0x13, 0x14, 0x15, 0x38, 0x39, 0x3A, 0x3B, 0x3B, 0x3B, 0x8, 0x91, 0x9B, 0x9C, 0x96, 0x40, 0x40, 0x96, 0x9B, 0x96, 0x40, 0x40, 0x96, 0x9B, 0x9C, 0x9B, 0x8, 0x9C, 0x9B, 0x96, 0x40, 0xDB, 0xDB, 0x40, 0x96, 0x40, 0xDB, 0xDB, 0x42, 0x96, 0x9B, 0x9B, 0x8, 0x91, 0x96, 0x40, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0x42, 0x96, 0x9C, 0x8, 0x91, 0x42, 0xDB, 0xDB, 0xD6, 0xD6, 0xD6, 0xDB, 0xD6, 0xD6, 0xD6, 0xDB, 0xDB, 0x42, 0x9B, 0x8, 0x96, 0x42, 0xDB, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xDB, 0x42, 0x96, 0x8, 0x96, 0x42, 0xDB, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xDB, 0x42, 0x96, 0x8, 0x96, 0x42, 0xDB, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xDB, 0x42, 0x96, 0x8, 0x96, 0x42, 0xDB, 0xDB, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xDB, 0xDB, 0x42, 0x96, 0x8, 0x91, 0x96, 0x42, 0xDB, 0xDB, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xDB, 0xDB, 0x42, 0x96, 0x9B, 0x8, 0x91, 0x9B, 0x96, 0x42, 0xDB, 0xDB, 0xD6, 0xD6, 0xD6, 0xDB, 0xDB, 0x42, 0x96, 0x9B, 0x9C, 0x8, 0x9C, 0x9B, 0x9B, 0x96, 0x42, 0xDB, 0xDB, 0xD6, 0xDB, 0xDB, 0x42, 0x96, 0x9B, 0x9B, 0x9B, 0x8, 0x96, 0x9B, 0x9B, 0x9B, 0x96, 0x41, 0xDB, 0xDB, 0xDB, 0x42, 0x96, 0x9B, 0x9B, 0x9C, 0x96, 0x8, 0xD6, 0x96, 0x9C, 0x9B, 0x9B, 0x96, 0x41, 0xDB, 0x42, 0x96, 0x9B, 0x9B, 0x9B, 0x96, 0xD6, 0x8, 0x9C, 0xD6, 0x96, 0x9B, 0x9C, 0x9B, 0x96, 0x40, 0x96, 0x9B, 0x9C, 0x9B, 0x96, 0xD6, 0x9C, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8},
+ .unk3A0 = {0x381, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0xFFFF},
+ .coords = {131, 139},
+ .direction = 0x23,
+ .range = 0x77,
+ }
},
- [2] =
+ [2] =
{
.unk0 = 0x2D,
.unk1 = 0x2E,
.trainers =
- {
- [0] =
{
- .name = _("ENRIQUE"),
- .facilityClass = FACILITY_CLASS_RICH_BOY,
- .unused = 0,
- .speechBefore = {EC_WORD_GET, EC_WORD_READY, EC_WORD_FOR, EC_WORD_AN, EC_WORD_AWESOME, EC_WORD_TIME},
- .speechWin = {EC_WORD_HEY, EC_WORD_HEY, EC_WORD_EXCL, EC_WORD_WHAT_S_UP_QUES, 0xFFFF, 0xFFFF},
- .speechLose = {EC_WORD_AWW, EC_WORD_COULDN_T, EC_WORD_YOU, EC_WORD_LET_ME_WIN, EC_WORD_QUES, 0xFFFF},
- .speechAfter = {EC_WORD_DID, EC_WORD_YOU, EC_WORD_SEE, EC_WORD_MY, EC_WORD_SKILL, EC_WORD_QUES},
- .mons =
- {
- [0] =
- {
- .species = SPECIES_WOOPER,
- .heldItem = ITEM_FIGY_BERRY,
- .moves = {MOVE_RAIN_DANCE, MOVE_YAWN, MOVE_SURF, MOVE_HAZE},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 252,
- .speedEV = 6,
- .spAttackEV = 252,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 15,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 0,
- .personality = 0x8C,
- .nickname = _("WOOPER"),
- .friendship = 255,
- },
- [1] =
- {
- .species = SPECIES_POLIWAG,
- .heldItem = ITEM_WIKI_BERRY,
- .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_MIST, MOVE_HYPNOSIS},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 252,
- .speedEV = 6,
- .spAttackEV = 252,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 15,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 1,
- .personality = 0x3,
- .nickname = _("POLIWAG"),
- .friendship = 255,
- },
- [2] =
- {
- .species = SPECIES_PSYDUCK,
- .heldItem = ITEM_AGUAV_BERRY,
- .moves = {MOVE_HYPNOSIS, MOVE_SURF, MOVE_DISABLE, MOVE_SEISMIC_TOSS},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 250,
- .defenseEV = 130,
- .spDefenseEV = 130,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 15,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 0,
- .personality = 0x3,
- .nickname = _("PSYDUCK"),
- .friendship = 255,
- },
- [3] =
- {
- .species = SPECIES_RHYDON,
- .heldItem = ITEM_SOFT_SAND,
- .moves = {MOVE_EARTHQUAKE, MOVE_MAGNITUDE, MOVE_NONE, MOVE_NONE},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 252,
- .attackEV = 252,
- .speedEV = 6,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 15,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 0,
- .personality = 0x96,
- .nickname = _("RHYDON"),
- .friendship = 0,
- },
- [4] =
- {
- .species = SPECIES_RHYHORN,
- .heldItem = ITEM_SOFT_SAND,
- .moves = {MOVE_EARTHQUAKE, MOVE_MAGNITUDE, MOVE_NONE, MOVE_NONE},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 6,
- .attackEV = 252,
- .speedEV = 252,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 15,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 0,
- .personality = 0x3,
- .nickname = _("RHYHORN"),
- .friendship = 0,
- },
- [5] =
- {
- .species = SPECIES_CUBONE,
- .heldItem = ITEM_SOFT_SAND,
- .moves = {MOVE_EARTHQUAKE, MOVE_NONE, MOVE_NONE, MOVE_NONE},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 6,
- .attackEV = 252,
- .speedEV = 252,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 15,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 1,
- .personality = 0x80,
- .nickname = _("CUBONE"),
- .friendship = 0,
- },
- },
- },
- [1] =
- {
- .name = _("COLLEEN"),
- .facilityClass = FACILITY_CLASS_LADY,
- .unused = 0,
- .speechBefore = {EC_WORD_I, EC_WORD_WOULD, EC_WORD_LIKE, EC_WORD_TO, EC_WORD_ROCK, EC_WORD_OUT},
- .speechWin = {EC_WORD_I, EC_WORD_LIKE, EC_WORD_THIS, EC_WORD_ROCK, EC_WORD_THING, EC_WORD_EXCL},
- .speechLose = {EC_WORD_GO_AHEAD, EC_WORD_AND, EC_WORD_CRUSH, EC_WORD_MY, EC_WORD_DREAM, EC_WORD_ELLIPSIS},
- .speechAfter = {EC_WORD_I, EC_WORD_WANT, EC_WORD_TO, EC_WORD_GO, EC_WORD_WILD, EC_WORD_SOMETIME},
- .mons =
- {
- [0] =
- {
- .species = SPECIES_MAGNEMITE,
- .heldItem = ITEM_MAGNET,
- .moves = {MOVE_THUNDER, MOVE_ZAP_CANNON, MOVE_SPARK, MOVE_THUNDER_SHOCK},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 6,
- .speedEV = 252,
- .spAttackEV = 252,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 15,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 0,
- .personality = 0x8C,
- .nickname = _("MAGNEMITE"),
- .friendship = 255,
- },
- [1] =
- {
- .species = SPECIES_ELECTABUZZ,
- .heldItem = ITEM_MAGNET,
- .moves = {MOVE_THUNDER, MOVE_THUNDERBOLT, MOVE_THUNDER_PUNCH, MOVE_SHOCK_WAVE},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 6,
- .speedEV = 252,
- .spAttackEV = 252,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 15,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 0,
- .personality = 0x41,
- .nickname = _("ELECTABUZZ"),
- .friendship = 255,
- },
- [2] =
- {
- .species = SPECIES_FLAAFFY,
- .heldItem = ITEM_MAGNET,
- .moves = {MOVE_THUNDER, MOVE_THUNDERBOLT, MOVE_SHOCK_WAVE, MOVE_THUNDER_SHOCK},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 250,
- .spAttackEV = 130,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 15,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 0,
- .personality = 0x0,
- .nickname = _("FLAAFFY"),
- .friendship = 255,
- },
- [3] =
- {
- .species = SPECIES_BALTOY,
- .heldItem = ITEM_SILK_SCARF,
- .moves = {MOVE_EXPLOSION, MOVE_SELF_DESTRUCT, MOVE_NONE, MOVE_NONE},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 6,
- .attackEV = 252,
- .speedEV = 252,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 15,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 0,
- .personality = 0x3,
- .nickname = _("BALTOY"),
- .friendship = 0,
- },
- [4] =
- {
- .species = SPECIES_PINECO,
- .heldItem = ITEM_SILK_SCARF,
- .moves = {MOVE_EXPLOSION, MOVE_SELF_DESTRUCT, MOVE_NONE, MOVE_NONE},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 252,
- .attackEV = 252,
- .speedEV = 6,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 15,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 0,
- .personality = 0x3,
- .nickname = _("PINECO"),
- .friendship = 0,
- },
- [5] =
- {
- .species = SPECIES_VOLTORB,
- .heldItem = ITEM_SILK_SCARF,
- .moves = {MOVE_EXPLOSION, MOVE_SELF_DESTRUCT, MOVE_NONE, MOVE_NONE},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 6,
- .attackEV = 252,
- .speedEV = 252,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 15,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 0,
- .personality = 0x80,
- .nickname = _("VOLTORB"),
- .friendship = 0,
+ [0] =
+ {
+ .name = _("ENRIQUE"),
+ .facilityClass = FACILITY_CLASS_RICH_BOY,
+ .unused = 0,
+ .speechBefore = {EC_WORD_GET, EC_WORD_READY, EC_WORD_FOR, EC_WORD_AN, EC_WORD_AWESOME, EC_WORD_TIME},
+ .speechWin = {EC_WORD_HEY, EC_WORD_HEY, EC_WORD_EXCL, EC_WORD_WHAT_S_UP_QUES, 0xFFFF, 0xFFFF},
+ .speechLose = {EC_WORD_AWW, EC_WORD_COULDN_T, EC_WORD_YOU, EC_WORD_LET_ME_WIN, EC_WORD_QUES, 0xFFFF},
+ .speechAfter = {EC_WORD_DID, EC_WORD_YOU, EC_WORD_SEE, EC_WORD_MY, EC_WORD_SKILL, EC_WORD_QUES},
+ .mons =
+ {
+ [0] =
+ {
+ .species = SPECIES_WOOPER,
+ .heldItem = ITEM_FIGY_BERRY,
+ .moves = {MOVE_RAIN_DANCE, MOVE_YAWN, MOVE_SURF, MOVE_HAZE},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 252,
+ .speedEV = 6,
+ .spAttackEV = 252,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 15,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 0,
+ .personality = 0x8C,
+ .nickname = _("WOOPER"),
+ .friendship = 255,
+ },
+ [1] =
+ {
+ .species = SPECIES_POLIWAG,
+ .heldItem = ITEM_WIKI_BERRY,
+ .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_MIST, MOVE_HYPNOSIS},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 252,
+ .speedEV = 6,
+ .spAttackEV = 252,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 15,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 1,
+ .personality = 0x3,
+ .nickname = _("POLIWAG"),
+ .friendship = 255,
+ },
+ [2] =
+ {
+ .species = SPECIES_PSYDUCK,
+ .heldItem = ITEM_AGUAV_BERRY,
+ .moves = {MOVE_HYPNOSIS, MOVE_SURF, MOVE_DISABLE, MOVE_SEISMIC_TOSS},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 250,
+ .defenseEV = 130,
+ .spDefenseEV = 130,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 15,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 0,
+ .personality = 0x3,
+ .nickname = _("PSYDUCK"),
+ .friendship = 255,
+ },
+ [3] =
+ {
+ .species = SPECIES_RHYDON,
+ .heldItem = ITEM_SOFT_SAND,
+ .moves = {MOVE_EARTHQUAKE, MOVE_MAGNITUDE, MOVE_NONE, MOVE_NONE},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 252,
+ .attackEV = 252,
+ .speedEV = 6,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 15,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 0,
+ .personality = 0x96,
+ .nickname = _("RHYDON"),
+ .friendship = 0,
+ },
+ [4] =
+ {
+ .species = SPECIES_RHYHORN,
+ .heldItem = ITEM_SOFT_SAND,
+ .moves = {MOVE_EARTHQUAKE, MOVE_MAGNITUDE, MOVE_NONE, MOVE_NONE},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 6,
+ .attackEV = 252,
+ .speedEV = 252,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 15,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 0,
+ .personality = 0x3,
+ .nickname = _("RHYHORN"),
+ .friendship = 0,
+ },
+ [5] =
+ {
+ .species = SPECIES_CUBONE,
+ .heldItem = ITEM_SOFT_SAND,
+ .moves = {MOVE_EARTHQUAKE, MOVE_NONE, MOVE_NONE, MOVE_NONE},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 6,
+ .attackEV = 252,
+ .speedEV = 252,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 15,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 1,
+ .personality = 0x80,
+ .nickname = _("CUBONE"),
+ .friendship = 0,
+ },
+ },
+ },
+ [1] =
+ {
+ .name = _("COLLEEN"),
+ .facilityClass = FACILITY_CLASS_LADY,
+ .unused = 0,
+ .speechBefore = {EC_WORD_I, EC_WORD_WOULD, EC_WORD_LIKE, EC_WORD_TO, EC_WORD_ROCK, EC_WORD_OUT},
+ .speechWin = {EC_WORD_I, EC_WORD_LIKE, EC_WORD_THIS, EC_WORD_ROCK, EC_WORD_THING, EC_WORD_EXCL},
+ .speechLose = {EC_WORD_GO_AHEAD, EC_WORD_AND, EC_WORD_CRUSH, EC_WORD_MY, EC_WORD_DREAM, EC_WORD_ELLIPSIS},
+ .speechAfter = {EC_WORD_I, EC_WORD_WANT, EC_WORD_TO, EC_WORD_GO, EC_WORD_WILD, EC_WORD_SOMETIME},
+ .mons =
+ {
+ [0] =
+ {
+ .species = SPECIES_MAGNEMITE,
+ .heldItem = ITEM_MAGNET,
+ .moves = {MOVE_THUNDER, MOVE_ZAP_CANNON, MOVE_SPARK, MOVE_THUNDER_SHOCK},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 6,
+ .speedEV = 252,
+ .spAttackEV = 252,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 15,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 0,
+ .personality = 0x8C,
+ .nickname = _("MAGNEMITE"),
+ .friendship = 255,
+ },
+ [1] =
+ {
+ .species = SPECIES_ELECTABUZZ,
+ .heldItem = ITEM_MAGNET,
+ .moves = {MOVE_THUNDER, MOVE_THUNDERBOLT, MOVE_THUNDER_PUNCH, MOVE_SHOCK_WAVE},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 6,
+ .speedEV = 252,
+ .spAttackEV = 252,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 15,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 0,
+ .personality = 0x41,
+ .nickname = _("ELECTABUZZ"),
+ .friendship = 255,
+ },
+ [2] =
+ {
+ .species = SPECIES_FLAAFFY,
+ .heldItem = ITEM_MAGNET,
+ .moves = {MOVE_THUNDER, MOVE_THUNDERBOLT, MOVE_SHOCK_WAVE, MOVE_THUNDER_SHOCK},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 250,
+ .spAttackEV = 130,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 15,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 0,
+ .personality = 0x0,
+ .nickname = _("FLAAFFY"),
+ .friendship = 255,
+ },
+ [3] =
+ {
+ .species = SPECIES_BALTOY,
+ .heldItem = ITEM_SILK_SCARF,
+ .moves = {MOVE_EXPLOSION, MOVE_SELF_DESTRUCT, MOVE_NONE, MOVE_NONE},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 6,
+ .attackEV = 252,
+ .speedEV = 252,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 15,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 0,
+ .personality = 0x3,
+ .nickname = _("BALTOY"),
+ .friendship = 0,
+ },
+ [4] =
+ {
+ .species = SPECIES_PINECO,
+ .heldItem = ITEM_SILK_SCARF,
+ .moves = {MOVE_EXPLOSION, MOVE_SELF_DESTRUCT, MOVE_NONE, MOVE_NONE},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 252,
+ .attackEV = 252,
+ .speedEV = 6,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 15,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 0,
+ .personality = 0x3,
+ .nickname = _("PINECO"),
+ .friendship = 0,
+ },
+ [5] =
+ {
+ .species = SPECIES_VOLTORB,
+ .heldItem = ITEM_SILK_SCARF,
+ .moves = {MOVE_EXPLOSION, MOVE_SELF_DESTRUCT, MOVE_NONE, MOVE_NONE},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 6,
+ .attackEV = 252,
+ .speedEV = 252,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 15,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 0,
+ .personality = 0x80,
+ .nickname = _("VOLTORB"),
+ .friendship = 0,
+ },
+ },
},
- },
},
- },
- .data = {0x31, 0x3B, 0x3B, 0x3B, 0x39, 0x39, 0x1B, 0x1C, 0x1D, 0x38, 0x39, 0x3A, 0x3B, 0x3B, 0x3B, 0x8, 0x91, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x84, 0x84, 0x84, 0x9A, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x8, 0x17, 0xB2, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xB0, 0x17, 0xB2, 0xA1, 0x8, 0x17, 0xBB, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0xBB, 0x17, 0x17, 0x17, 0x8, 0x17, 0xB2, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xB0, 0x17, 0xB2, 0xA1, 0x8, 0x17, 0x17, 0x17, 0xBB, 0x17, 0x17, 0x17, 0x17, 0x17, 0xBB, 0x17, 0x17, 0x17, 0x17, 0x17, 0x8, 0x17, 0xB2, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xB0, 0x17, 0xB2, 0xA1, 0x8, 0x17, 0x17, 0xBB, 0x17, 0x17, 0x17, 0x17, 0xBB, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x8, 0x17, 0xB2, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xB0, 0x17, 0xB2, 0xA1, 0x8, 0x17, 0x17, 0x17, 0x17, 0x17, 0xBB, 0x17, 0x17, 0x17, 0x17, 0xBB, 0x17, 0x17, 0x17, 0x17, 0x8, 0x17, 0xB2, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xB0, 0x17, 0xB2, 0xA1, 0x8, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0xBB, 0x17, 0x17, 0xBB, 0x17, 0x17, 0x8, 0x17, 0xB2, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xB0, 0x17, 0xB2, 0xA1, 0x8, 0x17, 0x17, 0x17, 0x17, 0xBB, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x8, 0x17, 0xB2, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xB0, 0x17, 0xB2, 0xA1, 0x8, 0x17, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0x17, 0xBB, 0xBB, 0x8},
- .unk3A0 = {0x381, 0x381, 0x7FF7, 0x1, 0x7FF7, 0x1, 0x7FF7, 0x1, 0x7FF7, 0x1, 0x7FF7, 0x1, 0x7FF7, 0x1, 0x7FF7, 0x1},
- .coords = {25, 30},
- .direction = 0x23,
- .range = 0x44,
+ .display = {
+ .data = {0x31, 0x3B, 0x3B, 0x3B, 0x39, 0x39, 0x1B, 0x1C, 0x1D, 0x38, 0x39, 0x3A, 0x3B, 0x3B, 0x3B, 0x8, 0x91, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x84, 0x84, 0x84, 0x9A, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x8, 0x17, 0xB2, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xB0, 0x17, 0xB2, 0xA1, 0x8, 0x17, 0xBB, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0xBB, 0x17, 0x17, 0x17, 0x8, 0x17, 0xB2, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xB0, 0x17, 0xB2, 0xA1, 0x8, 0x17, 0x17, 0x17, 0xBB, 0x17, 0x17, 0x17, 0x17, 0x17, 0xBB, 0x17, 0x17, 0x17, 0x17, 0x17, 0x8, 0x17, 0xB2, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xB0, 0x17, 0xB2, 0xA1, 0x8, 0x17, 0x17, 0xBB, 0x17, 0x17, 0x17, 0x17, 0xBB, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x8, 0x17, 0xB2, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xB0, 0x17, 0xB2, 0xA1, 0x8, 0x17, 0x17, 0x17, 0x17, 0x17, 0xBB, 0x17, 0x17, 0x17, 0x17, 0xBB, 0x17, 0x17, 0x17, 0x17, 0x8, 0x17, 0xB2, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xB0, 0x17, 0xB2, 0xA1, 0x8, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0xBB, 0x17, 0x17, 0xBB, 0x17, 0x17, 0x8, 0x17, 0xB2, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xB0, 0x17, 0xB2, 0xA1, 0x8, 0x17, 0x17, 0x17, 0x17, 0xBB, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x8, 0x17, 0xB2, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xB0, 0x17, 0xB2, 0xA1, 0x8, 0x17, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0x17, 0xBB, 0xBB, 0x8},
+ .unk3A0 = {0x381, 0x381, 0x7FF7, 0x1, 0x7FF7, 0x1, 0x7FF7, 0x1, 0x7FF7, 0x1, 0x7FF7, 0x1, 0x7FF7, 0x1, 0x7FF7, 0x1},
+ .coords = {25, 30},
+ .direction = 0x23,
+ .range = 0x44,
+ }
},
- [3] =
+ [3] =
{
.unk0 = 0x2F,
.unk1 = 0x30,
.trainers =
- {
- [0] =
- {
- .name = _("KIMBERLY"),
- .facilityClass = FACILITY_CLASS_POKEFAN_F,
- .unused = 0,
- .speechBefore = {EC_WORD_I, EC_WORD_LIKE, EC_WORD_WORKING, EC_WORD_AT, EC_WORD_MY, EC_WORD_OWN_TEMPO},
- .speechWin = {EC_WORD_I_AM, EC_WORD_NOT, EC_WORD_BAD, EC_WORD_YOU, EC_WORD_THINK, EC_WORD_QUES},
- .speechLose = {EC_WORD_YOU_RE, EC_WORD_A, EC_WORD_MEAN, EC_WORD_KID, EC_WORD_IT, EC_WORD_SEEMS},
- .speechAfter = {EC_WORD_MY, EC_WORD_OWN_TEMPO, EC_WORD_IS, EC_WORD_RIGHT, EC_WORD_FOR, EC_WORD_ME},
- .mons =
- {
- [0] =
- {
- .species = SPECIES_UNOWN,
- .heldItem = ITEM_MIRACLE_SEED,
- .moves = {MOVE_HIDDEN_POWER, MOVE_NONE, MOVE_NONE, MOVE_NONE},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 255,
- .spAttackEV = 255,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 30,
- .attackIV = 31,
- .defenseIV = 30,
- .speedIV = 31,
- .spAttackIV = 30,
- .spDefenseIV = 31,
- .abilityNum = 0,
- .personality = 0x202,
- .nickname = _("UNOWN"),
- .friendship = 255,
- },
- [1] =
- {
- .species = SPECIES_UNOWN,
- .heldItem = ITEM_MYSTIC_WATER,
- .moves = {MOVE_HIDDEN_POWER, MOVE_NONE, MOVE_NONE, MOVE_NONE},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 255,
- .spAttackEV = 255,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 30,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 30,
- .spAttackIV = 30,
- .spDefenseIV = 31,
- .abilityNum = 0,
- .personality = 0x10001,
- .nickname = _("UNOWN"),
- .friendship = 255,
- },
- [2] =
- {
- .species = SPECIES_UNOWN,
- .heldItem = ITEM_BLACK_BELT,
- .moves = {MOVE_HIDDEN_POWER, MOVE_NONE, MOVE_NONE, MOVE_NONE},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 255,
- .spAttackEV = 255,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 30,
- .attackIV = 30,
- .defenseIV = 30,
- .speedIV = 30,
- .spAttackIV = 30,
- .spDefenseIV = 30,
- .abilityNum = 0,
- .personality = 0x102,
- .nickname = _("UNOWN"),
- .friendship = 255,
- },
- [3] =
- {
- .species = SPECIES_SPINDA,
- .heldItem = ITEM_LUM_BERRY,
- .moves = {MOVE_TEETER_DANCE, MOVE_DIZZY_PUNCH, MOVE_CALM_MIND, MOVE_BATON_PASS},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 110,
- .defenseEV = 200,
- .spDefenseEV = 200,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 15,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 0,
- .personality = 0x88FE980F,
- .nickname = _("SPINDA"),
- .friendship = 255,
- },
- [4] =
- {
- .species = SPECIES_PLUSLE,
- .heldItem = ITEM_BRIGHT_POWDER,
- .moves = {MOVE_HELPING_HAND, MOVE_THUNDERBOLT, MOVE_AGILITY, MOVE_BATON_PASS},
- .level = 0,
- .ppBonuses = 0,
- .speedEV = 255,
- .spAttackEV = 255,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 15,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 0,
- .personality = 0xF,
- .nickname = _("PLUSLE"),
- .friendship = 255,
- },
- [5] =
- {
- .species = SPECIES_VOLBEAT,
- .heldItem = ITEM_SITRUS_BERRY,
- .moves = {MOVE_HELPING_HAND, MOVE_SIGNAL_BEAM, MOVE_SOLAR_BEAM, MOVE_MOONLIGHT},
- .level = 0,
- .ppBonuses = 0,
- .speedEV = 255,
- .spAttackEV = 255,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 15,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 1,
- .personality = 0xF,
- .nickname = _("VOLBEAT"),
- .friendship = 255,
- },
- },
- },
- [1] =
{
- .name = _("FRANCISCO"),
- .facilityClass = FACILITY_CLASS_POKEFAN_M,
- .unused = 0,
- .speechBefore = {EC_WORD_I, EC_WORD_STUDY, EC_WORD_EVERY, EC_WORD_DAY, EC_WORD_TOO, 0xFFFF},
- .speechWin = {EC_WORD_SO, EC_WORD_THAT_S, EC_WORD_HOW, EC_WORD_YOU, EC_WORD_LOSE, 0xFFFF},
- .speechLose = {EC_WORD_NO, EC_WORD_WONDER, EC_WORD_I, EC_WORD_COULDN_T, EC_WORD_BEAT, EC_WORD_YOU},
- .speechAfter = {EC_WORD_YES, EC_WORD_ELLIPSIS, 0xFFFF, EC_WORD_THANK_YOU, 0xFFFF, 0xFFFF},
- .mons =
- {
- [0] =
- {
- .species = SPECIES_SPINDA,
- .heldItem = ITEM_LUM_BERRY,
- .moves = {MOVE_TEETER_DANCE, MOVE_DIZZY_PUNCH, MOVE_CALM_MIND, MOVE_BATON_PASS},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 110,
- .defenseEV = 200,
- .spDefenseEV = 200,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 15,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 0,
- .personality = 0xE2880098,
- .nickname = _("SPINDA"),
- .friendship = 255,
- },
- [1] =
- {
- .species = SPECIES_MINUN,
- .heldItem = ITEM_BRIGHT_POWDER,
- .moves = {MOVE_HELPING_HAND, MOVE_THUNDERBOLT, MOVE_AGILITY, MOVE_BATON_PASS},
- .level = 0,
- .ppBonuses = 0,
- .speedEV = 255,
- .spAttackEV = 255,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 15,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 0,
- .personality = 0x8C,
- .nickname = _("MINUN"),
- .friendship = 255,
- },
- [2] =
- {
- .species = SPECIES_ILLUMISE,
- .heldItem = ITEM_SITRUS_BERRY,
- .moves = {MOVE_HELPING_HAND, MOVE_WISH, MOVE_THUNDERBOLT, MOVE_MOONLIGHT},
- .level = 0,
- .ppBonuses = 0,
- .speedEV = 255,
- .spAttackEV = 255,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 15,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 0,
- .personality = 0xF,
- .nickname = _("ILLUMISE"),
- .friendship = 255,
- },
- [3] =
- {
- .species = SPECIES_UNOWN,
- .heldItem = ITEM_CHARCOAL,
- .moves = {MOVE_HIDDEN_POWER, MOVE_NONE, MOVE_NONE, MOVE_NONE},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 255,
- .spAttackEV = 255,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 30,
- .attackIV = 31,
- .defenseIV = 30,
- .speedIV = 30,
- .spAttackIV = 30,
- .spDefenseIV = 31,
- .abilityNum = 0,
- .personality = 0x302,
- .nickname = _("UNOWN"),
- .friendship = 255,
- },
- [4] =
- {
- .species = SPECIES_UNOWN,
- .heldItem = ITEM_SOFT_SAND,
- .moves = {MOVE_HIDDEN_POWER, MOVE_NONE, MOVE_NONE, MOVE_NONE},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 255,
- .attackEV = 255,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 30,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 30,
- .spDefenseIV = 30,
- .abilityNum = 0,
- .personality = 0x203,
- .nickname = _("UNOWN"),
- .friendship = 255,
- },
- [5] =
- {
- .species = SPECIES_UNOWN,
- .heldItem = ITEM_TWISTED_SPOON,
- .moves = {MOVE_HIDDEN_POWER, MOVE_NONE, MOVE_NONE, MOVE_NONE},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 255,
- .spAttackEV = 255,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 30,
- .speedIV = 30,
- .spAttackIV = 31,
- .spDefenseIV = 31,
- .abilityNum = 0,
- .personality = 0x301,
- .nickname = _("UNOWN"),
- .friendship = 255,
+ [0] =
+ {
+ .name = _("KIMBERLY"),
+ .facilityClass = FACILITY_CLASS_POKEFAN_F,
+ .unused = 0,
+ .speechBefore = {EC_WORD_I, EC_WORD_LIKE, EC_WORD_WORKING, EC_WORD_AT, EC_WORD_MY, EC_WORD_OWN_TEMPO},
+ .speechWin = {EC_WORD_I_AM, EC_WORD_NOT, EC_WORD_BAD, EC_WORD_YOU, EC_WORD_THINK, EC_WORD_QUES},
+ .speechLose = {EC_WORD_YOU_RE, EC_WORD_A, EC_WORD_MEAN, EC_WORD_KID, EC_WORD_IT, EC_WORD_SEEMS},
+ .speechAfter = {EC_WORD_MY, EC_WORD_OWN_TEMPO, EC_WORD_IS, EC_WORD_RIGHT, EC_WORD_FOR, EC_WORD_ME},
+ .mons =
+ {
+ [0] =
+ {
+ .species = SPECIES_UNOWN,
+ .heldItem = ITEM_MIRACLE_SEED,
+ .moves = {MOVE_HIDDEN_POWER, MOVE_NONE, MOVE_NONE, MOVE_NONE},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 255,
+ .spAttackEV = 255,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 30,
+ .attackIV = 31,
+ .defenseIV = 30,
+ .speedIV = 31,
+ .spAttackIV = 30,
+ .spDefenseIV = 31,
+ .abilityNum = 0,
+ .personality = 0x202,
+ .nickname = _("UNOWN"),
+ .friendship = 255,
+ },
+ [1] =
+ {
+ .species = SPECIES_UNOWN,
+ .heldItem = ITEM_MYSTIC_WATER,
+ .moves = {MOVE_HIDDEN_POWER, MOVE_NONE, MOVE_NONE, MOVE_NONE},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 255,
+ .spAttackEV = 255,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 30,
+ .attackIV = 31,
+ .defenseIV = 31,
+ .speedIV = 30,
+ .spAttackIV = 30,
+ .spDefenseIV = 31,
+ .abilityNum = 0,
+ .personality = 0x10001,
+ .nickname = _("UNOWN"),
+ .friendship = 255,
+ },
+ [2] =
+ {
+ .species = SPECIES_UNOWN,
+ .heldItem = ITEM_BLACK_BELT,
+ .moves = {MOVE_HIDDEN_POWER, MOVE_NONE, MOVE_NONE, MOVE_NONE},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 255,
+ .spAttackEV = 255,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 30,
+ .attackIV = 30,
+ .defenseIV = 30,
+ .speedIV = 30,
+ .spAttackIV = 30,
+ .spDefenseIV = 30,
+ .abilityNum = 0,
+ .personality = 0x102,
+ .nickname = _("UNOWN"),
+ .friendship = 255,
+ },
+ [3] =
+ {
+ .species = SPECIES_SPINDA,
+ .heldItem = ITEM_LUM_BERRY,
+ .moves = {MOVE_TEETER_DANCE, MOVE_DIZZY_PUNCH, MOVE_CALM_MIND, MOVE_BATON_PASS},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 110,
+ .defenseEV = 200,
+ .spDefenseEV = 200,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 15,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 0,
+ .personality = 0x88FE980F,
+ .nickname = _("SPINDA"),
+ .friendship = 255,
+ },
+ [4] =
+ {
+ .species = SPECIES_PLUSLE,
+ .heldItem = ITEM_BRIGHT_POWDER,
+ .moves = {MOVE_HELPING_HAND, MOVE_THUNDERBOLT, MOVE_AGILITY, MOVE_BATON_PASS},
+ .level = 0,
+ .ppBonuses = 0,
+ .speedEV = 255,
+ .spAttackEV = 255,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 15,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 0,
+ .personality = 0xF,
+ .nickname = _("PLUSLE"),
+ .friendship = 255,
+ },
+ [5] =
+ {
+ .species = SPECIES_VOLBEAT,
+ .heldItem = ITEM_SITRUS_BERRY,
+ .moves = {MOVE_HELPING_HAND, MOVE_SIGNAL_BEAM, MOVE_SOLAR_BEAM, MOVE_MOONLIGHT},
+ .level = 0,
+ .ppBonuses = 0,
+ .speedEV = 255,
+ .spAttackEV = 255,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 15,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 1,
+ .personality = 0xF,
+ .nickname = _("VOLBEAT"),
+ .friendship = 255,
+ },
+ },
+ },
+ [1] =
+ {
+ .name = _("FRANCISCO"),
+ .facilityClass = FACILITY_CLASS_POKEFAN_M,
+ .unused = 0,
+ .speechBefore = {EC_WORD_I, EC_WORD_STUDY, EC_WORD_EVERY, EC_WORD_DAY, EC_WORD_TOO, 0xFFFF},
+ .speechWin = {EC_WORD_SO, EC_WORD_THAT_S, EC_WORD_HOW, EC_WORD_YOU, EC_WORD_LOSE, 0xFFFF},
+ .speechLose = {EC_WORD_NO, EC_WORD_WONDER, EC_WORD_I, EC_WORD_COULDN_T, EC_WORD_BEAT, EC_WORD_YOU},
+ .speechAfter = {EC_WORD_YES, EC_WORD_ELLIPSIS, 0xFFFF, EC_WORD_THANK_YOU, 0xFFFF, 0xFFFF},
+ .mons =
+ {
+ [0] =
+ {
+ .species = SPECIES_SPINDA,
+ .heldItem = ITEM_LUM_BERRY,
+ .moves = {MOVE_TEETER_DANCE, MOVE_DIZZY_PUNCH, MOVE_CALM_MIND, MOVE_BATON_PASS},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 110,
+ .defenseEV = 200,
+ .spDefenseEV = 200,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 15,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 0,
+ .personality = 0xE2880098,
+ .nickname = _("SPINDA"),
+ .friendship = 255,
+ },
+ [1] =
+ {
+ .species = SPECIES_MINUN,
+ .heldItem = ITEM_BRIGHT_POWDER,
+ .moves = {MOVE_HELPING_HAND, MOVE_THUNDERBOLT, MOVE_AGILITY, MOVE_BATON_PASS},
+ .level = 0,
+ .ppBonuses = 0,
+ .speedEV = 255,
+ .spAttackEV = 255,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 15,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 0,
+ .personality = 0x8C,
+ .nickname = _("MINUN"),
+ .friendship = 255,
+ },
+ [2] =
+ {
+ .species = SPECIES_ILLUMISE,
+ .heldItem = ITEM_SITRUS_BERRY,
+ .moves = {MOVE_HELPING_HAND, MOVE_WISH, MOVE_THUNDERBOLT, MOVE_MOONLIGHT},
+ .level = 0,
+ .ppBonuses = 0,
+ .speedEV = 255,
+ .spAttackEV = 255,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 15,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 0,
+ .personality = 0xF,
+ .nickname = _("ILLUMISE"),
+ .friendship = 255,
+ },
+ [3] =
+ {
+ .species = SPECIES_UNOWN,
+ .heldItem = ITEM_CHARCOAL,
+ .moves = {MOVE_HIDDEN_POWER, MOVE_NONE, MOVE_NONE, MOVE_NONE},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 255,
+ .spAttackEV = 255,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 30,
+ .attackIV = 31,
+ .defenseIV = 30,
+ .speedIV = 30,
+ .spAttackIV = 30,
+ .spDefenseIV = 31,
+ .abilityNum = 0,
+ .personality = 0x302,
+ .nickname = _("UNOWN"),
+ .friendship = 255,
+ },
+ [4] =
+ {
+ .species = SPECIES_UNOWN,
+ .heldItem = ITEM_SOFT_SAND,
+ .moves = {MOVE_HIDDEN_POWER, MOVE_NONE, MOVE_NONE, MOVE_NONE},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 255,
+ .attackEV = 255,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 31,
+ .attackIV = 30,
+ .defenseIV = 31,
+ .speedIV = 31,
+ .spAttackIV = 30,
+ .spDefenseIV = 30,
+ .abilityNum = 0,
+ .personality = 0x203,
+ .nickname = _("UNOWN"),
+ .friendship = 255,
+ },
+ [5] =
+ {
+ .species = SPECIES_UNOWN,
+ .heldItem = ITEM_TWISTED_SPOON,
+ .moves = {MOVE_HIDDEN_POWER, MOVE_NONE, MOVE_NONE, MOVE_NONE},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 255,
+ .spAttackEV = 255,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 31,
+ .attackIV = 31,
+ .defenseIV = 30,
+ .speedIV = 30,
+ .spAttackIV = 31,
+ .spDefenseIV = 31,
+ .abilityNum = 0,
+ .personality = 0x301,
+ .nickname = _("UNOWN"),
+ .friendship = 255,
+ },
+ },
},
- },
},
- },
- .data = {0x31, 0x3B, 0x3B, 0x3B, 0x39, 0x39, 0x13, 0x14, 0x15, 0x38, 0x39, 0x3A, 0x3B, 0x3B, 0x3B, 0x8, 0x69, 0x40, 0x6D, 0x41, 0x73, 0x41, 0x5E, 0x41, 0x71, 0x42, 0x45, 0x45, 0x45, 0x45, 0x45, 0x8, 0x43, 0x73, 0x64, 0x73, 0x43, 0x73, 0x64, 0x73, 0x41, 0x73, 0x45, 0x45, 0x45, 0x45, 0x45, 0x8, 0x65, 0x40, 0x73, 0x42, 0x6D, 0x42, 0x73, 0x42, 0x6D, 0x42, 0x45, 0x45, 0x45, 0x45, 0x45, 0x8, 0x6C, 0x73, 0x41, 0x73, 0x64, 0x73, 0x40, 0x73, 0x64, 0x73, 0x40, 0x73, 0x42, 0x73, 0x41, 0x8, 0x69, 0x40, 0x6D, 0x41, 0x73, 0x40, 0x6D, 0x43, 0x73, 0x43, 0x6D, 0x42, 0x73, 0x42, 0x6D, 0x8, 0x40, 0x73, 0x64, 0x73, 0x43, 0x73, 0x64, 0x73, 0x41, 0x73, 0x64, 0x73, 0x41, 0x73, 0x64, 0x8, 0x65, 0x42, 0x73, 0x42, 0x6D, 0x41, 0x73, 0x40, 0x6D, 0x42, 0x73, 0x41, 0x6D, 0x42, 0x73, 0x8, 0x6C, 0x73, 0x41, 0x73, 0x64, 0x73, 0x42, 0x73, 0x64, 0x73, 0x42, 0x73, 0x64, 0x73, 0x42, 0x8, 0x69, 0x40, 0x6D, 0x41, 0x73, 0x41, 0x6D, 0x42, 0x73, 0x43, 0x6D, 0x41, 0x73, 0x43, 0x6D, 0x8, 0x40, 0x73, 0x64, 0x73, 0x43, 0x73, 0x64, 0x73, 0x43, 0x73, 0x64, 0x73, 0x42, 0x73, 0x64, 0x8, 0x65, 0x42, 0x73, 0x42, 0x6D, 0x43, 0x73, 0x42, 0x6D, 0x42, 0x73, 0x41, 0x6D, 0x40, 0x73, 0x8, 0x6C, 0x73, 0x40, 0x73, 0x64, 0x73, 0x41, 0x73, 0x64, 0x73, 0x42, 0x73, 0x64, 0x73, 0x42, 0x8, 0x69, 0x40, 0x6D, 0x42, 0x73, 0x42, 0x6D, 0x43, 0x73, 0x40, 0x6D, 0x41, 0x73, 0x40, 0x6D, 0x8, 0x40, 0x73, 0x64, 0x73, 0x40, 0x73, 0x64, 0x73, 0x40, 0x73, 0x64, 0x73, 0x43, 0x73, 0x64, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8},
- .unk3A0 = {0x381, 0x1, 0x2201, 0x1, 0x8881, 0x1, 0x2223, 0x1, 0x8889, 0x1, 0x2223, 0x1, 0x8889, 0x1, 0x2223, 0xFFFF},
- .coords = {42, 46},
- .direction = 0x23,
- .range = 0x33,
+ .display = {
+ .data = {0x31, 0x3B, 0x3B, 0x3B, 0x39, 0x39, 0x13, 0x14, 0x15, 0x38, 0x39, 0x3A, 0x3B, 0x3B, 0x3B, 0x8, 0x69, 0x40, 0x6D, 0x41, 0x73, 0x41, 0x5E, 0x41, 0x71, 0x42, 0x45, 0x45, 0x45, 0x45, 0x45, 0x8, 0x43, 0x73, 0x64, 0x73, 0x43, 0x73, 0x64, 0x73, 0x41, 0x73, 0x45, 0x45, 0x45, 0x45, 0x45, 0x8, 0x65, 0x40, 0x73, 0x42, 0x6D, 0x42, 0x73, 0x42, 0x6D, 0x42, 0x45, 0x45, 0x45, 0x45, 0x45, 0x8, 0x6C, 0x73, 0x41, 0x73, 0x64, 0x73, 0x40, 0x73, 0x64, 0x73, 0x40, 0x73, 0x42, 0x73, 0x41, 0x8, 0x69, 0x40, 0x6D, 0x41, 0x73, 0x40, 0x6D, 0x43, 0x73, 0x43, 0x6D, 0x42, 0x73, 0x42, 0x6D, 0x8, 0x40, 0x73, 0x64, 0x73, 0x43, 0x73, 0x64, 0x73, 0x41, 0x73, 0x64, 0x73, 0x41, 0x73, 0x64, 0x8, 0x65, 0x42, 0x73, 0x42, 0x6D, 0x41, 0x73, 0x40, 0x6D, 0x42, 0x73, 0x41, 0x6D, 0x42, 0x73, 0x8, 0x6C, 0x73, 0x41, 0x73, 0x64, 0x73, 0x42, 0x73, 0x64, 0x73, 0x42, 0x73, 0x64, 0x73, 0x42, 0x8, 0x69, 0x40, 0x6D, 0x41, 0x73, 0x41, 0x6D, 0x42, 0x73, 0x43, 0x6D, 0x41, 0x73, 0x43, 0x6D, 0x8, 0x40, 0x73, 0x64, 0x73, 0x43, 0x73, 0x64, 0x73, 0x43, 0x73, 0x64, 0x73, 0x42, 0x73, 0x64, 0x8, 0x65, 0x42, 0x73, 0x42, 0x6D, 0x43, 0x73, 0x42, 0x6D, 0x42, 0x73, 0x41, 0x6D, 0x40, 0x73, 0x8, 0x6C, 0x73, 0x40, 0x73, 0x64, 0x73, 0x41, 0x73, 0x64, 0x73, 0x42, 0x73, 0x64, 0x73, 0x42, 0x8, 0x69, 0x40, 0x6D, 0x42, 0x73, 0x42, 0x6D, 0x43, 0x73, 0x40, 0x6D, 0x41, 0x73, 0x40, 0x6D, 0x8, 0x40, 0x73, 0x64, 0x73, 0x40, 0x73, 0x64, 0x73, 0x40, 0x73, 0x64, 0x73, 0x43, 0x73, 0x64, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8},
+ .unk3A0 = {0x381, 0x1, 0x2201, 0x1, 0x8881, 0x1, 0x2223, 0x1, 0x8889, 0x1, 0x2223, 0x1, 0x8889, 0x1, 0x2223, 0xFFFF},
+ .coords = {42, 46},
+ .direction = 0x23,
+ .range = 0x33,
+ }
},
- },
};
+
static const struct TrHillTag sDataTagUnique =
{
.unkField_0 = 8,
.unused1 = 3,
- .unkField_2 = 4,
- .unused3 = 0,
- .unused4 = 243,
- .unused5 = 82,
- .unused6 = 6,
- .floors =
- {
- [0] =
+ .numFloors = 4,
+ .checksum = 0x000652F3
+};
+
+static const struct TrHillFloor sDataTagUnique_floors[] = {
+ [0] =
{
.unk0 = 0x31,
.unk1 = 0x32,
.trainers =
- {
- [0] =
- {
- .name = _("MEREDITH"),
- .facilityClass = FACILITY_CLASS_PKMN_RANGER_F,
- .unused = 0,
- .speechBefore = {EC_WORD_UM, EC_WORD_ELLIPSIS, 0xFFFF, EC_WORD_I, EC_WORD_ELLIPSIS, 0xFFFF},
- .speechWin = {EC_WORD_OH, EC_WORD_EXCL, 0xFFFF, EC_WORD_UM, EC_WORD_ELLIPSIS, EC_WORD_YAY},
- .speechLose = {EC_WORD_UM, EC_WORD_ELLIPSIS, 0xFFFF, EC_WORD_WAAAH, EC_WORD_ELLIPSIS, 0xFFFF},
- .speechAfter = {EC_WORD_UM, EC_WORD_ELLIPSIS, 0xFFFF, EC_WORD_I_AM, EC_WORD_SAD, EC_WORD_ELLIPSIS},
- .mons =
- {
- [0] =
- {
- .species = SPECIES_SUNFLORA,
- .heldItem = ITEM_PERSIM_BERRY,
- .moves = {MOVE_PETAL_DANCE, MOVE_GRASS_WHISTLE, MOVE_LIGHT_SCREEN, MOVE_SUNNY_DAY},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 255,
- .defenseEV = 155,
- .spDefenseEV = 100,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 15,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 0,
- .personality = 0x0,
- .nickname = _("SUNFLORA"),
- .friendship = 255,
- },
- [1] =
- {
- .species = SPECIES_TANGELA,
- .heldItem = ITEM_QUICK_CLAW,
- .moves = {MOVE_GIGA_DRAIN, MOVE_SLEEP_POWDER, MOVE_AMNESIA, MOVE_SUNNY_DAY},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 255,
- .spDefenseEV = 255,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 15,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 0,
- .personality = 0x91,
- .nickname = _("TANGELA"),
- .friendship = 255,
- },
- [2] =
- {
- .species = SPECIES_VENUSAUR,
- .heldItem = ITEM_LEFTOVERS,
- .moves = {MOVE_SOLAR_BEAM, MOVE_EARTHQUAKE, MOVE_SYNTHESIS, MOVE_SUNNY_DAY},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 100,
- .attackEV = 110,
- .defenseEV = 100,
- .spAttackEV = 100,
- .spDefenseEV = 100,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 15,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 0,
- .personality = 0x1F,
- .nickname = _("VENUSAUR"),
- .friendship = 255,
- },
- [3] =
- {
- .species = SPECIES_LANTURN,
- .heldItem = ITEM_PERSIM_BERRY,
- .moves = {MOVE_SPARK, MOVE_WATER_PULSE, MOVE_CONFUSE_RAY, MOVE_RAIN_DANCE},
- .level = 0,
- .ppBonuses = 0,
- .speedEV = 255,
- .spAttackEV = 255,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 15,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 0,
- .personality = 0xF,
- .nickname = _("LANTURN"),
- .friendship = 255,
- },
- [4] =
- {
- .species = SPECIES_MANECTRIC,
- .heldItem = ITEM_FOCUS_BAND,
- .moves = {MOVE_THUNDERBOLT, MOVE_HEADBUTT, MOVE_BITE, MOVE_RAIN_DANCE},
- .level = 0,
- .ppBonuses = 0,
- .speedEV = 255,
- .spAttackEV = 255,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 15,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 1,
- .personality = 0xF,
- .nickname = _("MANECTRIC"),
- .friendship = 255,
- },
- [5] =
- {
- .species = SPECIES_RAIKOU,
- .heldItem = ITEM_BRIGHT_POWDER,
- .moves = {MOVE_THUNDER, MOVE_CRUNCH, MOVE_ROAR, MOVE_RAIN_DANCE},
- .level = 0,
- .ppBonuses = 0,
- .speedEV = 255,
- .spAttackEV = 255,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 15,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 0,
- .personality = 0xF,
- .nickname = _("RAIKOU"),
- .friendship = 255,
- },
- },
- },
- [1] =
{
- .name = _("BERNARD"),
- .facilityClass = FACILITY_CLASS_KINDLER,
- .unused = 0,
- .speechBefore = {EC_WORD_I, EC_WORD_CAN_T, EC_WORD_LOSE, EC_WORD_THIS, EC_WORD_HOT, EC_WORD_BATTLE},
- .speechWin = {EC_WORD_DID, EC_WORD_I, EC_WORD_COOL, EC_WORD_YOU, EC_WORD_DOWN, EC_WORD_QUES},
- .speechLose = {EC_WORD_AIYEEH, EC_WORD_EXCL, EC_WORD_YOU_RE, EC_WORD_A, EC_WORD_TERRIBLE, EC_WORD_PERSON},
- .speechAfter = {EC_WORD_YOUR, EC_WORD_HEART, EC_WORD_MUST_BE, EC_WORD_ICE, EC_WORD_COLD, EC_WORD_ELLIPSIS},
- .mons =
- {
- [0] =
- {
- .species = SPECIES_RELICANTH,
- .heldItem = ITEM_QUICK_CLAW,
- .moves = {MOVE_ANCIENT_POWER, MOVE_WATER_PULSE, MOVE_MUD_SPORT, MOVE_RAIN_DANCE},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 155,
- .defenseEV = 100,
- .spDefenseEV = 255,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 15,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 0,
- .personality = 0x2F,
- .nickname = _("RELICANTH"),
- .friendship = 255,
- },
- [1] =
- {
- .species = SPECIES_GOLDUCK,
- .heldItem = ITEM_LAX_INCENSE,
- .moves = {MOVE_SURF, MOVE_PSYBEAM, MOVE_BRICK_BREAK, MOVE_RAIN_DANCE},
- .level = 0,
- .ppBonuses = 0,
- .speedEV = 255,
- .spAttackEV = 255,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 15,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 0,
- .personality = 0xF,
- .nickname = _("GOLDUCK"),
- .friendship = 255,
- },
- [2] =
- {
- .species = SPECIES_BLASTOISE,
- .heldItem = ITEM_SHELL_BELL,
- .moves = {MOVE_HYDRO_PUMP, MOVE_BITE, MOVE_MIRROR_COAT, MOVE_RAIN_DANCE},
- .level = 0,
- .ppBonuses = 0,
- .speedEV = 255,
- .spAttackEV = 255,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 15,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 0,
- .personality = 0x28,
- .nickname = _("BLASTOISE"),
- .friendship = 255,
- },
- [3] =
- {
- .species = SPECIES_MAGCARGO,
- .heldItem = ITEM_QUICK_CLAW,
- .moves = {MOVE_HEAT_WAVE, MOVE_ROCK_SLIDE, MOVE_PROTECT, MOVE_SUNNY_DAY},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 255,
- .spDefenseEV = 255,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 15,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 1,
- .personality = 0x93,
- .nickname = _("MAGCARGO"),
- .friendship = 255,
- },
- [4] =
- {
- .species = SPECIES_RAPIDASH,
- .heldItem = ITEM_KINGS_ROCK,
- .moves = {MOVE_FIRE_BLAST, MOVE_BOUNCE, MOVE_QUICK_ATTACK, MOVE_SUNNY_DAY},
- .level = 0,
- .ppBonuses = 0,
- .speedEV = 255,
- .spAttackEV = 255,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 15,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 1,
- .personality = 0xF,
- .nickname = _("RAPIDASH"),
- .friendship = 255,
- },
- [5] =
- {
- .species = SPECIES_MOLTRES,
- .heldItem = ITEM_BRIGHT_POWDER,
- .moves = {MOVE_SKY_ATTACK, MOVE_AERIAL_ACE, MOVE_ROAR, MOVE_SUNNY_DAY},
- .level = 0,
- .ppBonuses = 0,
- .speedEV = 255,
- .spAttackEV = 255,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 15,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 0,
- .personality = 0xF,
- .nickname = _("MOLTRES"),
- .friendship = 255,
+ [0] =
+ {
+ .name = _("MEREDITH"),
+ .facilityClass = FACILITY_CLASS_PKMN_RANGER_F,
+ .unused = 0,
+ .speechBefore = {EC_WORD_UM, EC_WORD_ELLIPSIS, 0xFFFF, EC_WORD_I, EC_WORD_ELLIPSIS, 0xFFFF},
+ .speechWin = {EC_WORD_OH, EC_WORD_EXCL, 0xFFFF, EC_WORD_UM, EC_WORD_ELLIPSIS, EC_WORD_YAY},
+ .speechLose = {EC_WORD_UM, EC_WORD_ELLIPSIS, 0xFFFF, EC_WORD_WAAAH, EC_WORD_ELLIPSIS, 0xFFFF},
+ .speechAfter = {EC_WORD_UM, EC_WORD_ELLIPSIS, 0xFFFF, EC_WORD_I_AM, EC_WORD_SAD, EC_WORD_ELLIPSIS},
+ .mons =
+ {
+ [0] =
+ {
+ .species = SPECIES_SUNFLORA,
+ .heldItem = ITEM_PERSIM_BERRY,
+ .moves = {MOVE_PETAL_DANCE, MOVE_GRASS_WHISTLE, MOVE_LIGHT_SCREEN, MOVE_SUNNY_DAY},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 255,
+ .defenseEV = 155,
+ .spDefenseEV = 100,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 15,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 0,
+ .personality = 0x0,
+ .nickname = _("SUNFLORA"),
+ .friendship = 255,
+ },
+ [1] =
+ {
+ .species = SPECIES_TANGELA,
+ .heldItem = ITEM_QUICK_CLAW,
+ .moves = {MOVE_GIGA_DRAIN, MOVE_SLEEP_POWDER, MOVE_AMNESIA, MOVE_SUNNY_DAY},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 255,
+ .spDefenseEV = 255,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 15,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 0,
+ .personality = 0x91,
+ .nickname = _("TANGELA"),
+ .friendship = 255,
+ },
+ [2] =
+ {
+ .species = SPECIES_VENUSAUR,
+ .heldItem = ITEM_LEFTOVERS,
+ .moves = {MOVE_SOLAR_BEAM, MOVE_EARTHQUAKE, MOVE_SYNTHESIS, MOVE_SUNNY_DAY},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 100,
+ .attackEV = 110,
+ .defenseEV = 100,
+ .spAttackEV = 100,
+ .spDefenseEV = 100,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 15,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 0,
+ .personality = 0x1F,
+ .nickname = _("VENUSAUR"),
+ .friendship = 255,
+ },
+ [3] =
+ {
+ .species = SPECIES_LANTURN,
+ .heldItem = ITEM_PERSIM_BERRY,
+ .moves = {MOVE_SPARK, MOVE_WATER_PULSE, MOVE_CONFUSE_RAY, MOVE_RAIN_DANCE},
+ .level = 0,
+ .ppBonuses = 0,
+ .speedEV = 255,
+ .spAttackEV = 255,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 15,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 0,
+ .personality = 0xF,
+ .nickname = _("LANTURN"),
+ .friendship = 255,
+ },
+ [4] =
+ {
+ .species = SPECIES_MANECTRIC,
+ .heldItem = ITEM_FOCUS_BAND,
+ .moves = {MOVE_THUNDERBOLT, MOVE_HEADBUTT, MOVE_BITE, MOVE_RAIN_DANCE},
+ .level = 0,
+ .ppBonuses = 0,
+ .speedEV = 255,
+ .spAttackEV = 255,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 15,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 1,
+ .personality = 0xF,
+ .nickname = _("MANECTRIC"),
+ .friendship = 255,
+ },
+ [5] =
+ {
+ .species = SPECIES_RAIKOU,
+ .heldItem = ITEM_BRIGHT_POWDER,
+ .moves = {MOVE_THUNDER, MOVE_CRUNCH, MOVE_ROAR, MOVE_RAIN_DANCE},
+ .level = 0,
+ .ppBonuses = 0,
+ .speedEV = 255,
+ .spAttackEV = 255,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 15,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 0,
+ .personality = 0xF,
+ .nickname = _("RAIKOU"),
+ .friendship = 255,
+ },
+ },
+ },
+ [1] =
+ {
+ .name = _("BERNARD"),
+ .facilityClass = FACILITY_CLASS_KINDLER,
+ .unused = 0,
+ .speechBefore = {EC_WORD_I, EC_WORD_CAN_T, EC_WORD_LOSE, EC_WORD_THIS, EC_WORD_HOT, EC_WORD_BATTLE},
+ .speechWin = {EC_WORD_DID, EC_WORD_I, EC_WORD_COOL, EC_WORD_YOU, EC_WORD_DOWN, EC_WORD_QUES},
+ .speechLose = {EC_WORD_AIYEEH, EC_WORD_EXCL, EC_WORD_YOU_RE, EC_WORD_A, EC_WORD_TERRIBLE, EC_WORD_PERSON},
+ .speechAfter = {EC_WORD_YOUR, EC_WORD_HEART, EC_WORD_MUST_BE, EC_WORD_ICE, EC_WORD_COLD, EC_WORD_ELLIPSIS},
+ .mons =
+ {
+ [0] =
+ {
+ .species = SPECIES_RELICANTH,
+ .heldItem = ITEM_QUICK_CLAW,
+ .moves = {MOVE_ANCIENT_POWER, MOVE_WATER_PULSE, MOVE_MUD_SPORT, MOVE_RAIN_DANCE},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 155,
+ .defenseEV = 100,
+ .spDefenseEV = 255,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 15,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 0,
+ .personality = 0x2F,
+ .nickname = _("RELICANTH"),
+ .friendship = 255,
+ },
+ [1] =
+ {
+ .species = SPECIES_GOLDUCK,
+ .heldItem = ITEM_LAX_INCENSE,
+ .moves = {MOVE_SURF, MOVE_PSYBEAM, MOVE_BRICK_BREAK, MOVE_RAIN_DANCE},
+ .level = 0,
+ .ppBonuses = 0,
+ .speedEV = 255,
+ .spAttackEV = 255,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 15,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 0,
+ .personality = 0xF,
+ .nickname = _("GOLDUCK"),
+ .friendship = 255,
+ },
+ [2] =
+ {
+ .species = SPECIES_BLASTOISE,
+ .heldItem = ITEM_SHELL_BELL,
+ .moves = {MOVE_HYDRO_PUMP, MOVE_BITE, MOVE_MIRROR_COAT, MOVE_RAIN_DANCE},
+ .level = 0,
+ .ppBonuses = 0,
+ .speedEV = 255,
+ .spAttackEV = 255,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 15,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 0,
+ .personality = 0x28,
+ .nickname = _("BLASTOISE"),
+ .friendship = 255,
+ },
+ [3] =
+ {
+ .species = SPECIES_MAGCARGO,
+ .heldItem = ITEM_QUICK_CLAW,
+ .moves = {MOVE_HEAT_WAVE, MOVE_ROCK_SLIDE, MOVE_PROTECT, MOVE_SUNNY_DAY},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 255,
+ .spDefenseEV = 255,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 15,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 1,
+ .personality = 0x93,
+ .nickname = _("MAGCARGO"),
+ .friendship = 255,
+ },
+ [4] =
+ {
+ .species = SPECIES_RAPIDASH,
+ .heldItem = ITEM_KINGS_ROCK,
+ .moves = {MOVE_FIRE_BLAST, MOVE_BOUNCE, MOVE_QUICK_ATTACK, MOVE_SUNNY_DAY},
+ .level = 0,
+ .ppBonuses = 0,
+ .speedEV = 255,
+ .spAttackEV = 255,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 15,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 1,
+ .personality = 0xF,
+ .nickname = _("RAPIDASH"),
+ .friendship = 255,
+ },
+ [5] =
+ {
+ .species = SPECIES_MOLTRES,
+ .heldItem = ITEM_BRIGHT_POWDER,
+ .moves = {MOVE_SKY_ATTACK, MOVE_AERIAL_ACE, MOVE_ROAR, MOVE_SUNNY_DAY},
+ .level = 0,
+ .ppBonuses = 0,
+ .speedEV = 255,
+ .spAttackEV = 255,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 15,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 0,
+ .personality = 0xF,
+ .nickname = _("MOLTRES"),
+ .friendship = 255,
+ },
+ },
},
- },
},
- },
- .data = {0xF1, 0xF5, 0xFB, 0xF5, 0xE6, 0xE6, 0x1B, 0x14, 0x15, 0xF8, 0xF9, 0xFA, 0xFB, 0xFB, 0xFB, 0x8, 0xF1, 0xEB, 0xFB, 0xEB, 0xEC, 0xEC, 0xEC, 0xF9, 0xE6, 0xEE, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0x8, 0xF1, 0xEB, 0xFB, 0xEB, 0xFB, 0x9B, 0x9B, 0xFB, 0xEB, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEB, 0x8, 0xF1, 0xEB, 0xFB, 0xEB, 0x9B, 0xDB, 0xDB, 0x9B, 0xEC, 0xFB, 0xF5, 0xF5, 0xF5, 0xFB, 0xEB, 0x8, 0xF1, 0xEB, 0xFB, 0xEB, 0xF5, 0x95, 0x95, 0xF5, 0xF5, 0xF5, 0xEB, 0xEC, 0xEB, 0xFB, 0xEB, 0x8, 0xED, 0xEB, 0xFB, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0x8, 0xF4, 0xEB, 0xFB, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0x8, 0xF1, 0xEB, 0xFB, 0xEB, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xFB, 0xEB, 0xFB, 0xEC, 0x8, 0xF1, 0xEB, 0xFB, 0xEB, 0xFB, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xEB, 0xF5, 0xFB, 0x8, 0xF1, 0xEC, 0xFB, 0xEB, 0xFB, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEB, 0xFB, 0x8, 0xF1, 0xF5, 0xF5, 0xEB, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xFB, 0xEB, 0xFB, 0x8, 0xF1, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEB, 0xFB, 0xEB, 0xFB, 0x8, 0xF1, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xEB, 0xFB, 0xEB, 0xFB, 0x8, 0xF1, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xFB, 0xEC, 0xFB, 0x8, 0xF1, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8},
- .unk3A0 = {0x381, 0x5E01, 0x50FF, 0x5083, 0x503B, 0x5FEB, 0xC02B, 0x5FEB, 0x5009, 0x57FD, 0x1005, 0x7FF5, 0x15, 0x7FF5, 0x1, 0xFFFF},
- .coords = {52, 55},
- .direction = 0x23,
- .range = 0x22,
+ .display = {
+ .data = {0xF1, 0xF5, 0xFB, 0xF5, 0xE6, 0xE6, 0x1B, 0x14, 0x15, 0xF8, 0xF9, 0xFA, 0xFB, 0xFB, 0xFB, 0x8, 0xF1, 0xEB, 0xFB, 0xEB, 0xEC, 0xEC, 0xEC, 0xF9, 0xE6, 0xEE, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0x8, 0xF1, 0xEB, 0xFB, 0xEB, 0xFB, 0x9B, 0x9B, 0xFB, 0xEB, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEB, 0x8, 0xF1, 0xEB, 0xFB, 0xEB, 0x9B, 0xDB, 0xDB, 0x9B, 0xEC, 0xFB, 0xF5, 0xF5, 0xF5, 0xFB, 0xEB, 0x8, 0xF1, 0xEB, 0xFB, 0xEB, 0xF5, 0x95, 0x95, 0xF5, 0xF5, 0xF5, 0xEB, 0xEC, 0xEB, 0xFB, 0xEB, 0x8, 0xED, 0xEB, 0xFB, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0x8, 0xF4, 0xEB, 0xFB, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0x8, 0xF1, 0xEB, 0xFB, 0xEB, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xFB, 0xEB, 0xFB, 0xEC, 0x8, 0xF1, 0xEB, 0xFB, 0xEB, 0xFB, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xEB, 0xF5, 0xFB, 0x8, 0xF1, 0xEC, 0xFB, 0xEB, 0xFB, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEB, 0xFB, 0x8, 0xF1, 0xF5, 0xF5, 0xEB, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xFB, 0xEB, 0xFB, 0x8, 0xF1, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEB, 0xFB, 0xEB, 0xFB, 0x8, 0xF1, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xEB, 0xFB, 0xEB, 0xFB, 0x8, 0xF1, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xFB, 0xEC, 0xFB, 0x8, 0xF1, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8},
+ .unk3A0 = {0x381, 0x5E01, 0x50FF, 0x5083, 0x503B, 0x5FEB, 0xC02B, 0x5FEB, 0x5009, 0x57FD, 0x1005, 0x7FF5, 0x15, 0x7FF5, 0x1, 0xFFFF},
+ .coords = {52, 55},
+ .direction = 0x23,
+ .range = 0x22,
+ }
},
- [1] =
+ [1] =
{
.unk0 = 0x33,
.unk1 = 0x34,
.trainers =
- {
- [0] =
- {
- .name = _("ABRAHAM"),
- .facilityClass = FACILITY_CLASS_RUIN_MANIAC,
- .unused = 0,
- .speechBefore = {EC_WORD_I, EC_WORD_LIKE, EC_WORD_THIS, EC_WORD_POKEMON, EC_WORD_THE, EC_WORD_BEST},
- .speechWin = {EC_WORD_WHAT, EC_WORD_A, EC_WORD_GREAT, EC_WORD_POKEMON, EC_WORD_IT, EC_WORD_IS},
- .speechLose = {EC_WORD_I, EC_WORD_CONFUSED, EC_WORD_A, EC_WORD_MOVE, EC_WORD_WITH, EC_WORD_ANOTHER},
- .speechAfter = {EC_WORD_I, EC_WORD_WANT, EC_WORD_A, EC_MOVE(SKETCH), EC_WORD_OF, EC_WORD_YOU},
- .mons =
- {
- [0] =
- {
- .species = SPECIES_SMEARGLE,
- .heldItem = ITEM_SCOPE_LENS,
- .moves = {MOVE_EARTHQUAKE, MOVE_SHADOW_BALL, MOVE_AERIAL_ACE, MOVE_IMPRISON},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 252,
- .attackEV = 6,
- .speedEV = 252,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 15,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 0,
- .personality = 0x8A,
- .nickname = _("SMEARGLE"),
- .friendship = 255,
- },
- [1] =
- {
- .species = SPECIES_SMEARGLE,
- .heldItem = ITEM_CHESTO_BERRY,
- .moves = {MOVE_REST, MOVE_THUNDER_WAVE, MOVE_FLAMETHROWER, MOVE_IMPRISON},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 252,
- .speedEV = 252,
- .spAttackEV = 6,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 15,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 0,
- .personality = 0x87,
- .nickname = _("SMEARGLE"),
- .friendship = 255,
- },
- [2] =
- {
- .species = SPECIES_SMEARGLE,
- .heldItem = ITEM_QUICK_CLAW,
- .moves = {MOVE_TEETER_DANCE, MOVE_LOCK_ON, MOVE_SHEER_COLD, MOVE_EXPLOSION},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 252,
- .attackEV = 6,
- .speedEV = 252,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 15,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 0,
- .personality = 0xD,
- .nickname = _("SMEARGLE"),
- .friendship = 255,
- },
- [3] =
- {
- .species = SPECIES_SMEARGLE,
- .heldItem = ITEM_SCOPE_LENS,
- .moves = {MOVE_PSYCHIC, MOVE_SURF, MOVE_THUNDERBOLT, MOVE_IMPRISON},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 252,
- .speedEV = 252,
- .spAttackEV = 6,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 15,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 0,
- .personality = 0xA,
- .nickname = _("SMEARGLE"),
- .friendship = 255,
- },
- [4] =
- {
- .species = SPECIES_SMEARGLE,
- .heldItem = ITEM_LEFTOVERS,
- .moves = {MOVE_TOXIC, MOVE_PROTECT, MOVE_WILL_O_WISP, MOVE_IMPRISON},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 252,
- .defenseEV = 6,
- .speedEV = 252,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 15,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 0,
- .personality = 0xA,
- .nickname = _("SMEARGLE"),
- .friendship = 255,
- },
- [5] =
- {
- .species = SPECIES_SMEARGLE,
- .heldItem = ITEM_QUICK_CLAW,
- .moves = {MOVE_TEETER_DANCE, MOVE_LOCK_ON, MOVE_SHEER_COLD, MOVE_DESTINY_BOND},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 252,
- .defenseEV = 6,
- .speedEV = 252,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 15,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 0,
- .personality = 0x8A,
- .nickname = _("SMEARGLE"),
- .friendship = 255,
- },
- },
- },
- [1] =
{
- .name = _("LUC"),
- .facilityClass = FACILITY_CLASS_TUBER_M,
- .unused = 0,
- .speechBefore = {EC_WORD_I, EC_WORD_HAVE, EC_WORD_A, EC_WORD_COOL, EC_WORD_RARE, EC_WORD_MOVE},
- .speechWin = {EC_WORD_MY, EC_WORD_RARE, EC_WORD_MOVE, EC_WORD_IS, EC_WORD_COOL, EC_WORD_ISN_T_IT_QUES},
- .speechLose = {EC_WORD_DIDN_T, EC_WORD_YOU, EC_WORD_SEE, EC_WORD_MY, EC_WORD_MOVE, EC_WORD_QUES},
- .speechAfter = {EC_WORD_I_AM, EC_WORD_SMART, EC_WORD_BUT, EC_WORD_ALSO, EC_WORD_WEAK, EC_WORD_ELLIPSIS},
- .mons =
- {
- [0] =
- {
- .species = SPECIES_STARYU,
- .heldItem = ITEM_LEFTOVERS,
- .moves = {MOVE_CAMOUFLAGE, MOVE_NONE, MOVE_NONE, MOVE_NONE},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 252,
- .speedEV = 252,
- .spAttackEV = 6,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 5,
- .attackIV = 5,
- .defenseIV = 5,
- .speedIV = 5,
- .spAttackIV = 5,
- .spDefenseIV = 5,
- .abilityNum = 1,
- .personality = 0xA,
- .nickname = _("STARYU"),
- .friendship = 255,
- },
- [1] =
- {
- .species = SPECIES_MEOWTH,
- .heldItem = ITEM_QUICK_CLAW,
- .moves = {MOVE_PAY_DAY, MOVE_NONE, MOVE_NONE, MOVE_NONE},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 252,
- .speedEV = 252,
- .spAttackEV = 6,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 5,
- .attackIV = 5,
- .defenseIV = 5,
- .speedIV = 5,
- .spAttackIV = 5,
- .spDefenseIV = 5,
- .abilityNum = 0,
- .personality = 0xD,
- .nickname = _("MEOWTH"),
- .friendship = 255,
- },
- [2] =
- {
- .species = SPECIES_BLAZIKEN,
- .heldItem = ITEM_BRIGHT_POWDER,
- .moves = {MOVE_BLAZE_KICK, MOVE_NONE, MOVE_NONE, MOVE_NONE},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 252,
- .speedEV = 252,
- .spDefenseEV = 6,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 5,
- .attackIV = 5,
- .defenseIV = 5,
- .speedIV = 5,
- .spAttackIV = 5,
- .spDefenseIV = 5,
- .abilityNum = 0,
- .personality = 0x28,
- .nickname = _("BLAZIKEN"),
- .friendship = 255,
- },
- [3] =
- {
- .species = SPECIES_CUBONE,
- .heldItem = ITEM_THICK_CLUB,
- .moves = {MOVE_BONEMERANG, MOVE_NONE, MOVE_NONE, MOVE_NONE},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 252,
- .defenseEV = 6,
- .spDefenseEV = 252,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 5,
- .attackIV = 5,
- .defenseIV = 5,
- .speedIV = 5,
- .spAttackIV = 5,
- .spDefenseIV = 5,
- .abilityNum = 1,
- .personality = 0x16,
- .nickname = _("CUBONE"),
- .friendship = 255,
- },
- [4] =
- {
- .species = SPECIES_BEEDRILL,
- .heldItem = ITEM_SHELL_BELL,
- .moves = {MOVE_TWINEEDLE, MOVE_NONE, MOVE_NONE, MOVE_NONE},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 252,
- .speedEV = 252,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 5,
- .attackIV = 5,
- .defenseIV = 5,
- .speedIV = 5,
- .spAttackIV = 5,
- .spDefenseIV = 5,
- .abilityNum = 0,
- .personality = 0x8A,
- .nickname = _("BEEDRILL"),
- .friendship = 255,
- },
- [5] =
- {
- .species = SPECIES_RATICATE,
- .heldItem = ITEM_FOCUS_BAND,
- .moves = {MOVE_SUPER_FANG, MOVE_NONE, MOVE_NONE, MOVE_NONE},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 252,
- .defenseEV = 6,
- .speedEV = 252,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 5,
- .attackIV = 5,
- .defenseIV = 5,
- .speedIV = 5,
- .spAttackIV = 5,
- .spDefenseIV = 5,
- .abilityNum = 1,
- .personality = 0xD,
- .nickname = _("RATICATE"),
- .friendship = 255,
+ [0] =
+ {
+ .name = _("ABRAHAM"),
+ .facilityClass = FACILITY_CLASS_RUIN_MANIAC,
+ .unused = 0,
+ .speechBefore = {EC_WORD_I, EC_WORD_LIKE, EC_WORD_THIS, EC_WORD_POKEMON, EC_WORD_THE, EC_WORD_BEST},
+ .speechWin = {EC_WORD_WHAT, EC_WORD_A, EC_WORD_GREAT, EC_WORD_POKEMON, EC_WORD_IT, EC_WORD_IS},
+ .speechLose = {EC_WORD_I, EC_WORD_CONFUSED, EC_WORD_A, EC_WORD_MOVE, EC_WORD_WITH, EC_WORD_ANOTHER},
+ .speechAfter = {EC_WORD_I, EC_WORD_WANT, EC_WORD_A, EC_MOVE(SKETCH), EC_WORD_OF, EC_WORD_YOU},
+ .mons =
+ {
+ [0] =
+ {
+ .species = SPECIES_SMEARGLE,
+ .heldItem = ITEM_SCOPE_LENS,
+ .moves = {MOVE_EARTHQUAKE, MOVE_SHADOW_BALL, MOVE_AERIAL_ACE, MOVE_IMPRISON},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 252,
+ .attackEV = 6,
+ .speedEV = 252,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 15,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 0,
+ .personality = 0x8A,
+ .nickname = _("SMEARGLE"),
+ .friendship = 255,
+ },
+ [1] =
+ {
+ .species = SPECIES_SMEARGLE,
+ .heldItem = ITEM_CHESTO_BERRY,
+ .moves = {MOVE_REST, MOVE_THUNDER_WAVE, MOVE_FLAMETHROWER, MOVE_IMPRISON},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 252,
+ .speedEV = 252,
+ .spAttackEV = 6,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 15,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 0,
+ .personality = 0x87,
+ .nickname = _("SMEARGLE"),
+ .friendship = 255,
+ },
+ [2] =
+ {
+ .species = SPECIES_SMEARGLE,
+ .heldItem = ITEM_QUICK_CLAW,
+ .moves = {MOVE_TEETER_DANCE, MOVE_LOCK_ON, MOVE_SHEER_COLD, MOVE_EXPLOSION},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 252,
+ .attackEV = 6,
+ .speedEV = 252,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 15,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 0,
+ .personality = 0xD,
+ .nickname = _("SMEARGLE"),
+ .friendship = 255,
+ },
+ [3] =
+ {
+ .species = SPECIES_SMEARGLE,
+ .heldItem = ITEM_SCOPE_LENS,
+ .moves = {MOVE_PSYCHIC, MOVE_SURF, MOVE_THUNDERBOLT, MOVE_IMPRISON},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 252,
+ .speedEV = 252,
+ .spAttackEV = 6,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 15,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 0,
+ .personality = 0xA,
+ .nickname = _("SMEARGLE"),
+ .friendship = 255,
+ },
+ [4] =
+ {
+ .species = SPECIES_SMEARGLE,
+ .heldItem = ITEM_LEFTOVERS,
+ .moves = {MOVE_TOXIC, MOVE_PROTECT, MOVE_WILL_O_WISP, MOVE_IMPRISON},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 252,
+ .defenseEV = 6,
+ .speedEV = 252,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 15,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 0,
+ .personality = 0xA,
+ .nickname = _("SMEARGLE"),
+ .friendship = 255,
+ },
+ [5] =
+ {
+ .species = SPECIES_SMEARGLE,
+ .heldItem = ITEM_QUICK_CLAW,
+ .moves = {MOVE_TEETER_DANCE, MOVE_LOCK_ON, MOVE_SHEER_COLD, MOVE_DESTINY_BOND},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 252,
+ .defenseEV = 6,
+ .speedEV = 252,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 15,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 0,
+ .personality = 0x8A,
+ .nickname = _("SMEARGLE"),
+ .friendship = 255,
+ },
+ },
+ },
+ [1] =
+ {
+ .name = _("LUC"),
+ .facilityClass = FACILITY_CLASS_TUBER_M,
+ .unused = 0,
+ .speechBefore = {EC_WORD_I, EC_WORD_HAVE, EC_WORD_A, EC_WORD_COOL, EC_WORD_RARE, EC_WORD_MOVE},
+ .speechWin = {EC_WORD_MY, EC_WORD_RARE, EC_WORD_MOVE, EC_WORD_IS, EC_WORD_COOL, EC_WORD_ISN_T_IT_QUES},
+ .speechLose = {EC_WORD_DIDN_T, EC_WORD_YOU, EC_WORD_SEE, EC_WORD_MY, EC_WORD_MOVE, EC_WORD_QUES},
+ .speechAfter = {EC_WORD_I_AM, EC_WORD_SMART, EC_WORD_BUT, EC_WORD_ALSO, EC_WORD_WEAK, EC_WORD_ELLIPSIS},
+ .mons =
+ {
+ [0] =
+ {
+ .species = SPECIES_STARYU,
+ .heldItem = ITEM_LEFTOVERS,
+ .moves = {MOVE_CAMOUFLAGE, MOVE_NONE, MOVE_NONE, MOVE_NONE},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 252,
+ .speedEV = 252,
+ .spAttackEV = 6,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 5,
+ .attackIV = 5,
+ .defenseIV = 5,
+ .speedIV = 5,
+ .spAttackIV = 5,
+ .spDefenseIV = 5,
+ .abilityNum = 1,
+ .personality = 0xA,
+ .nickname = _("STARYU"),
+ .friendship = 255,
+ },
+ [1] =
+ {
+ .species = SPECIES_MEOWTH,
+ .heldItem = ITEM_QUICK_CLAW,
+ .moves = {MOVE_PAY_DAY, MOVE_NONE, MOVE_NONE, MOVE_NONE},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 252,
+ .speedEV = 252,
+ .spAttackEV = 6,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 5,
+ .attackIV = 5,
+ .defenseIV = 5,
+ .speedIV = 5,
+ .spAttackIV = 5,
+ .spDefenseIV = 5,
+ .abilityNum = 0,
+ .personality = 0xD,
+ .nickname = _("MEOWTH"),
+ .friendship = 255,
+ },
+ [2] =
+ {
+ .species = SPECIES_BLAZIKEN,
+ .heldItem = ITEM_BRIGHT_POWDER,
+ .moves = {MOVE_BLAZE_KICK, MOVE_NONE, MOVE_NONE, MOVE_NONE},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 252,
+ .speedEV = 252,
+ .spDefenseEV = 6,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 5,
+ .attackIV = 5,
+ .defenseIV = 5,
+ .speedIV = 5,
+ .spAttackIV = 5,
+ .spDefenseIV = 5,
+ .abilityNum = 0,
+ .personality = 0x28,
+ .nickname = _("BLAZIKEN"),
+ .friendship = 255,
+ },
+ [3] =
+ {
+ .species = SPECIES_CUBONE,
+ .heldItem = ITEM_THICK_CLUB,
+ .moves = {MOVE_BONEMERANG, MOVE_NONE, MOVE_NONE, MOVE_NONE},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 252,
+ .defenseEV = 6,
+ .spDefenseEV = 252,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 5,
+ .attackIV = 5,
+ .defenseIV = 5,
+ .speedIV = 5,
+ .spAttackIV = 5,
+ .spDefenseIV = 5,
+ .abilityNum = 1,
+ .personality = 0x16,
+ .nickname = _("CUBONE"),
+ .friendship = 255,
+ },
+ [4] =
+ {
+ .species = SPECIES_BEEDRILL,
+ .heldItem = ITEM_SHELL_BELL,
+ .moves = {MOVE_TWINEEDLE, MOVE_NONE, MOVE_NONE, MOVE_NONE},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 252,
+ .speedEV = 252,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 5,
+ .attackIV = 5,
+ .defenseIV = 5,
+ .speedIV = 5,
+ .spAttackIV = 5,
+ .spDefenseIV = 5,
+ .abilityNum = 0,
+ .personality = 0x8A,
+ .nickname = _("BEEDRILL"),
+ .friendship = 255,
+ },
+ [5] =
+ {
+ .species = SPECIES_RATICATE,
+ .heldItem = ITEM_FOCUS_BAND,
+ .moves = {MOVE_SUPER_FANG, MOVE_NONE, MOVE_NONE, MOVE_NONE},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 252,
+ .defenseEV = 6,
+ .speedEV = 252,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 5,
+ .attackIV = 5,
+ .defenseIV = 5,
+ .speedIV = 5,
+ .spAttackIV = 5,
+ .spDefenseIV = 5,
+ .abilityNum = 1,
+ .personality = 0xD,
+ .nickname = _("RATICATE"),
+ .friendship = 255,
+ },
+ },
},
- },
},
- },
- .data = {0x31, 0x3B, 0x3B, 0x3B, 0x39, 0x26, 0x1B, 0x1C, 0x1D, 0x25, 0x39, 0x3A, 0x3B, 0x3B, 0x3B, 0x8, 0x2D, 0x3B, 0x3B, 0x3B, 0x35, 0x2C, 0x23, 0x24, 0x23, 0x2C, 0x35, 0x3B, 0x3B, 0x3B, 0x3B, 0x8, 0x94, 0x87, 0x9B, 0x87, 0x8C, 0x87, 0x8B, 0x87, 0x8C, 0x87, 0x8C, 0x87, 0x95, 0x87, 0x9B, 0x8, 0x91, 0x8F, 0x9B, 0x8F, 0x9B, 0x8F, 0x8C, 0x8F, 0x9B, 0x8F, 0x9B, 0x8F, 0x8C, 0x8F, 0x95, 0x8, 0x8D, 0x97, 0x95, 0x97, 0x9B, 0x97, 0x95, 0x97, 0x95, 0x97, 0x9B, 0x97, 0x9B, 0x97, 0x8C, 0x8, 0x94, 0x87, 0x8C, 0x87, 0x9B, 0x87, 0x8C, 0x87, 0x8B, 0x87, 0x9B, 0x9B, 0x9B, 0x87, 0x9B, 0x8, 0x91, 0x8F, 0x9B, 0x8F, 0x95, 0x8F, 0x9B, 0x8F, 0x8C, 0x8F, 0x95, 0x9B, 0x95, 0x8F, 0x9B, 0x8, 0x91, 0x97, 0x95, 0x97, 0x8C, 0x97, 0x95, 0x97, 0x95, 0x97, 0x8C, 0x9B, 0x8C, 0x97, 0x95, 0x8, 0x91, 0x87, 0x8C, 0x87, 0x9B, 0x87, 0x8C, 0x87, 0x8B, 0x87, 0x9B, 0x87, 0x95, 0x87, 0x8C, 0x8, 0x8D, 0x8F, 0x9B, 0x8F, 0x95, 0x8F, 0x9B, 0x8F, 0x8C, 0x8F, 0x9B, 0x8F, 0x8C, 0x8F, 0x9B, 0x8, 0x94, 0x97, 0x95, 0x97, 0x8C, 0x97, 0x9B, 0x97, 0x95, 0x97, 0x95, 0x97, 0x9B, 0x97, 0x9B, 0x8, 0x91, 0x87, 0x8C, 0x87, 0x95, 0x87, 0x95, 0x87, 0x8B, 0x87, 0x8C, 0x87, 0x9B, 0x87, 0x9B, 0x8, 0x91, 0x8F, 0x95, 0x8F, 0x8B, 0x8F, 0x8C, 0x8F, 0x8C, 0x8F, 0x9B, 0x8F, 0x95, 0x8F, 0x9B, 0x8, 0x91, 0x97, 0x8C, 0x97, 0x8C, 0x97, 0x9B, 0x97, 0x9B, 0x97, 0x9B, 0x97, 0x8B, 0x97, 0x9B, 0x8, 0x91, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x8C, 0x9B, 0x9B, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8},
- .unk3A0 = {0x381, 0x7C1, 0x8AA1, 0x209, 0x5557, 0xA281, 0x81, 0x5D6D, 0x2283, 0x89, 0xDD55, 0x20A1, 0xA81, 0x7D5D, 0x9, 0xFFFF},
- .coords = {105, 109},
- .direction = 0x23,
- .range = 0x33,
+ .display = {
+ .data = {0x31, 0x3B, 0x3B, 0x3B, 0x39, 0x26, 0x1B, 0x1C, 0x1D, 0x25, 0x39, 0x3A, 0x3B, 0x3B, 0x3B, 0x8, 0x2D, 0x3B, 0x3B, 0x3B, 0x35, 0x2C, 0x23, 0x24, 0x23, 0x2C, 0x35, 0x3B, 0x3B, 0x3B, 0x3B, 0x8, 0x94, 0x87, 0x9B, 0x87, 0x8C, 0x87, 0x8B, 0x87, 0x8C, 0x87, 0x8C, 0x87, 0x95, 0x87, 0x9B, 0x8, 0x91, 0x8F, 0x9B, 0x8F, 0x9B, 0x8F, 0x8C, 0x8F, 0x9B, 0x8F, 0x9B, 0x8F, 0x8C, 0x8F, 0x95, 0x8, 0x8D, 0x97, 0x95, 0x97, 0x9B, 0x97, 0x95, 0x97, 0x95, 0x97, 0x9B, 0x97, 0x9B, 0x97, 0x8C, 0x8, 0x94, 0x87, 0x8C, 0x87, 0x9B, 0x87, 0x8C, 0x87, 0x8B, 0x87, 0x9B, 0x9B, 0x9B, 0x87, 0x9B, 0x8, 0x91, 0x8F, 0x9B, 0x8F, 0x95, 0x8F, 0x9B, 0x8F, 0x8C, 0x8F, 0x95, 0x9B, 0x95, 0x8F, 0x9B, 0x8, 0x91, 0x97, 0x95, 0x97, 0x8C, 0x97, 0x95, 0x97, 0x95, 0x97, 0x8C, 0x9B, 0x8C, 0x97, 0x95, 0x8, 0x91, 0x87, 0x8C, 0x87, 0x9B, 0x87, 0x8C, 0x87, 0x8B, 0x87, 0x9B, 0x87, 0x95, 0x87, 0x8C, 0x8, 0x8D, 0x8F, 0x9B, 0x8F, 0x95, 0x8F, 0x9B, 0x8F, 0x8C, 0x8F, 0x9B, 0x8F, 0x8C, 0x8F, 0x9B, 0x8, 0x94, 0x97, 0x95, 0x97, 0x8C, 0x97, 0x9B, 0x97, 0x95, 0x97, 0x95, 0x97, 0x9B, 0x97, 0x9B, 0x8, 0x91, 0x87, 0x8C, 0x87, 0x95, 0x87, 0x95, 0x87, 0x8B, 0x87, 0x8C, 0x87, 0x9B, 0x87, 0x9B, 0x8, 0x91, 0x8F, 0x95, 0x8F, 0x8B, 0x8F, 0x8C, 0x8F, 0x8C, 0x8F, 0x9B, 0x8F, 0x95, 0x8F, 0x9B, 0x8, 0x91, 0x97, 0x8C, 0x97, 0x8C, 0x97, 0x9B, 0x97, 0x9B, 0x97, 0x9B, 0x97, 0x8B, 0x97, 0x9B, 0x8, 0x91, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x8C, 0x9B, 0x9B, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8},
+ .unk3A0 = {0x381, 0x7C1, 0x8AA1, 0x209, 0x5557, 0xA281, 0x81, 0x5D6D, 0x2283, 0x89, 0xDD55, 0x20A1, 0xA81, 0x7D5D, 0x9, 0xFFFF},
+ .coords = {105, 109},
+ .direction = 0x23,
+ .range = 0x33,
+ }
},
- [2] =
+ [2] =
{
.unk0 = 0x35,
.unk1 = 0x36,
.trainers =
- {
- [0] =
- {
- .name = _("BREYDEN"),
- .facilityClass = FACILITY_CLASS_YOUNGSTER,
- .unused = 0,
- .speechBefore = {EC_WORD_I, EC_WORD_CARE, EC_WORD_FOR, EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_A_LOT},
- .speechWin = {EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_CAN, EC_WORD_DO, EC_WORD_IT, EC_WORD_ALL},
- .speechLose = {EC_WORD_IT_S, EC_WORD_NOT, EC_WORD_LIKE, EC_WORD_WE, EC_WORD_ALWAYS, EC_WORD_WIN},
- .speechAfter = {EC_WORD_I, EC_WORD_LIKE, EC_WORD_THE, EC_WORD_BEGINNING, EC_WORD_POKEMON, EC_WORD_BEST},
- .mons =
- {
- [0] =
- {
- .species = SPECIES_CHARMELEON,
- .heldItem = ITEM_CHARCOAL,
- .moves = {MOVE_FIRE_SPIN, MOVE_DRAGON_RAGE, MOVE_FLAMETHROWER, MOVE_SLASH},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 252,
- .speedEV = 252,
- .spAttackEV = 6,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 25,
- .attackIV = 25,
- .defenseIV = 25,
- .speedIV = 25,
- .spAttackIV = 25,
- .spDefenseIV = 25,
- .abilityNum = 0,
- .personality = 0x32,
- .nickname = _("CHARMELEON"),
- .friendship = 100,
- },
- [1] =
- {
- .species = SPECIES_WARTORTLE,
- .heldItem = ITEM_MYSTIC_WATER,
- .moves = {MOVE_HYDRO_PUMP, MOVE_SKULL_BASH, MOVE_RAIN_DANCE, MOVE_PROTECT},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 250,
- .defenseEV = 130,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 25,
- .attackIV = 25,
- .defenseIV = 25,
- .speedIV = 25,
- .spAttackIV = 25,
- .spDefenseIV = 25,
- .abilityNum = 0,
- .personality = 0x0,
- .nickname = _("WARTORTLE"),
- .friendship = 100,
- },
- [2] =
- {
- .species = SPECIES_IVYSAUR,
- .heldItem = ITEM_MIRACLE_SEED,
- .moves = {MOVE_SOLAR_BEAM, MOVE_SYNTHESIS, MOVE_GROWTH, MOVE_SWEET_SCENT},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 252,
- .speedEV = 6,
- .spAttackEV = 252,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 25,
- .attackIV = 25,
- .defenseIV = 25,
- .speedIV = 25,
- .spAttackIV = 25,
- .spDefenseIV = 25,
- .abilityNum = 0,
- .personality = 0x0,
- .nickname = _("IVYSAUR"),
- .friendship = 100,
- },
- [3] =
- {
- .species = SPECIES_BAYLEEF,
- .heldItem = ITEM_MIRACLE_SEED,
- .moves = {MOVE_SOLAR_BEAM, MOVE_SAFEGUARD, MOVE_LIGHT_SCREEN, MOVE_BODY_SLAM},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 250,
- .attackEV = 130,
- .spAttackEV = 130,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 25,
- .attackIV = 25,
- .defenseIV = 25,
- .speedIV = 25,
- .spAttackIV = 25,
- .spDefenseIV = 25,
- .abilityNum = 0,
- .personality = 0x32,
- .nickname = _("BAYLEEF"),
- .friendship = 100,
- },
- [4] =
- {
- .species = SPECIES_CROCONAW,
- .heldItem = ITEM_MYSTIC_WATER,
- .moves = {MOVE_SCARY_FACE, MOVE_SLASH, MOVE_HYDRO_PUMP, MOVE_SCREECH},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 252,
- .attackEV = 252,
- .speedEV = 6,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 25,
- .attackIV = 25,
- .defenseIV = 25,
- .speedIV = 25,
- .spAttackIV = 25,
- .spDefenseIV = 25,
- .abilityNum = 0,
- .personality = 0x3,
- .nickname = _("CROCONAW"),
- .friendship = 100,
- },
- [5] =
- {
- .species = SPECIES_QUILAVA,
- .heldItem = ITEM_CHARCOAL,
- .moves = {MOVE_QUICK_ATTACK, MOVE_FLAMETHROWER, MOVE_FLAME_WHEEL, MOVE_SWIFT},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 6,
- .speedEV = 252,
- .spAttackEV = 252,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 15,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 0,
- .personality = 0x28,
- .nickname = _("QUILAVA"),
- .friendship = 100,
- },
- },
- },
- [1] =
{
- .name = _("ANIYA"),
- .facilityClass = FACILITY_CLASS_TUBER_F,
- .unused = 0,
- .speechBefore = {EC_WORD_SOMEONE, EC_WORD_GOT, EC_WORD_ME, EC_WORD_A_LITTLE, EC_WORD_POKEMON, EC_WORD_EGG},
- .speechWin = {EC_WORD_I_AM, EC_WORD_NOT, EC_WORD_NEW, EC_WORD_AT, EC_WORD_THIS, EC_WORD_EXCL},
- .speechLose = {EC_WORD_OH, EC_WORD_BUT, EC_WORD_ELLIPSIS, EC_WORD_WHY, EC_WORD_WHY, EC_WORD_QUES_EXCL},
- .speechAfter = {EC_WORD_YOU_RE, EC_WORD_BUSY, EC_WORD_QUES, EC_WORD_DON_T, EC_WORD_GIVE_UP, EC_WORD_EXCL},
- .mons =
- {
- [0] =
- {
- .species = SPECIES_SMOOCHUM,
- .heldItem = ITEM_PETAYA_BERRY,
- .moves = {MOVE_ICE_BEAM, MOVE_PSYCHIC, MOVE_SWEET_KISS, MOVE_FAKE_TEARS},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 6,
- .speedEV = 252,
- .spAttackEV = 252,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
- .abilityNum = 0,
- .personality = 0x32,
- .nickname = _("SMOOCHUM"),
- .friendship = 50,
- },
- [1] =
- {
- .species = SPECIES_AZURILL,
- .heldItem = ITEM_FOCUS_BAND,
- .moves = {MOVE_SURF, MOVE_SING, MOVE_RAIN_DANCE, MOVE_BLIZZARD},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 6,
- .speedEV = 252,
- .spAttackEV = 252,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
- .abilityNum = 0,
- .personality = 0xC8,
- .nickname = _("AZURILL"),
- .friendship = 50,
- },
- [2] =
- {
- .species = SPECIES_ELEKID,
- .heldItem = ITEM_KINGS_ROCK,
- .moves = {MOVE_FIRE_PUNCH, MOVE_THUNDER, MOVE_ICE_PUNCH, MOVE_THUNDER_WAVE},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 6,
- .speedEV = 252,
- .spAttackEV = 252,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
- .abilityNum = 0,
- .personality = 0x0,
- .nickname = _("ELEKID"),
- .friendship = 50,
+ [0] =
+ {
+ .name = _("BREYDEN"),
+ .facilityClass = FACILITY_CLASS_YOUNGSTER,
+ .unused = 0,
+ .speechBefore = {EC_WORD_I, EC_WORD_CARE, EC_WORD_FOR, EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_A_LOT},
+ .speechWin = {EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_CAN, EC_WORD_DO, EC_WORD_IT, EC_WORD_ALL},
+ .speechLose = {EC_WORD_IT_S, EC_WORD_NOT, EC_WORD_LIKE, EC_WORD_WE, EC_WORD_ALWAYS, EC_WORD_WIN},
+ .speechAfter = {EC_WORD_I, EC_WORD_LIKE, EC_WORD_THE, EC_WORD_BEGINNING, EC_WORD_POKEMON, EC_WORD_BEST},
+ .mons =
+ {
+ [0] =
+ {
+ .species = SPECIES_CHARMELEON,
+ .heldItem = ITEM_CHARCOAL,
+ .moves = {MOVE_FIRE_SPIN, MOVE_DRAGON_RAGE, MOVE_FLAMETHROWER, MOVE_SLASH},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 252,
+ .speedEV = 252,
+ .spAttackEV = 6,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 25,
+ .attackIV = 25,
+ .defenseIV = 25,
+ .speedIV = 25,
+ .spAttackIV = 25,
+ .spDefenseIV = 25,
+ .abilityNum = 0,
+ .personality = 0x32,
+ .nickname = _("CHARMELEON"),
+ .friendship = 100,
+ },
+ [1] =
+ {
+ .species = SPECIES_WARTORTLE,
+ .heldItem = ITEM_MYSTIC_WATER,
+ .moves = {MOVE_HYDRO_PUMP, MOVE_SKULL_BASH, MOVE_RAIN_DANCE, MOVE_PROTECT},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 250,
+ .defenseEV = 130,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 25,
+ .attackIV = 25,
+ .defenseIV = 25,
+ .speedIV = 25,
+ .spAttackIV = 25,
+ .spDefenseIV = 25,
+ .abilityNum = 0,
+ .personality = 0x0,
+ .nickname = _("WARTORTLE"),
+ .friendship = 100,
+ },
+ [2] =
+ {
+ .species = SPECIES_IVYSAUR,
+ .heldItem = ITEM_MIRACLE_SEED,
+ .moves = {MOVE_SOLAR_BEAM, MOVE_SYNTHESIS, MOVE_GROWTH, MOVE_SWEET_SCENT},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 252,
+ .speedEV = 6,
+ .spAttackEV = 252,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 25,
+ .attackIV = 25,
+ .defenseIV = 25,
+ .speedIV = 25,
+ .spAttackIV = 25,
+ .spDefenseIV = 25,
+ .abilityNum = 0,
+ .personality = 0x0,
+ .nickname = _("IVYSAUR"),
+ .friendship = 100,
+ },
+ [3] =
+ {
+ .species = SPECIES_BAYLEEF,
+ .heldItem = ITEM_MIRACLE_SEED,
+ .moves = {MOVE_SOLAR_BEAM, MOVE_SAFEGUARD, MOVE_LIGHT_SCREEN, MOVE_BODY_SLAM},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 250,
+ .attackEV = 130,
+ .spAttackEV = 130,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 25,
+ .attackIV = 25,
+ .defenseIV = 25,
+ .speedIV = 25,
+ .spAttackIV = 25,
+ .spDefenseIV = 25,
+ .abilityNum = 0,
+ .personality = 0x32,
+ .nickname = _("BAYLEEF"),
+ .friendship = 100,
+ },
+ [4] =
+ {
+ .species = SPECIES_CROCONAW,
+ .heldItem = ITEM_MYSTIC_WATER,
+ .moves = {MOVE_SCARY_FACE, MOVE_SLASH, MOVE_HYDRO_PUMP, MOVE_SCREECH},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 252,
+ .attackEV = 252,
+ .speedEV = 6,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 25,
+ .attackIV = 25,
+ .defenseIV = 25,
+ .speedIV = 25,
+ .spAttackIV = 25,
+ .spDefenseIV = 25,
+ .abilityNum = 0,
+ .personality = 0x3,
+ .nickname = _("CROCONAW"),
+ .friendship = 100,
+ },
+ [5] =
+ {
+ .species = SPECIES_QUILAVA,
+ .heldItem = ITEM_CHARCOAL,
+ .moves = {MOVE_QUICK_ATTACK, MOVE_FLAMETHROWER, MOVE_FLAME_WHEEL, MOVE_SWIFT},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 6,
+ .speedEV = 252,
+ .spAttackEV = 252,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 15,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 0,
+ .personality = 0x28,
+ .nickname = _("QUILAVA"),
+ .friendship = 100,
+ },
+ },
+ },
+ [1] =
+ {
+ .name = _("ANIYA"),
+ .facilityClass = FACILITY_CLASS_TUBER_F,
+ .unused = 0,
+ .speechBefore = {EC_WORD_SOMEONE, EC_WORD_GOT, EC_WORD_ME, EC_WORD_A_LITTLE, EC_WORD_POKEMON, EC_WORD_EGG},
+ .speechWin = {EC_WORD_I_AM, EC_WORD_NOT, EC_WORD_NEW, EC_WORD_AT, EC_WORD_THIS, EC_WORD_EXCL},
+ .speechLose = {EC_WORD_OH, EC_WORD_BUT, EC_WORD_ELLIPSIS, EC_WORD_WHY, EC_WORD_WHY, EC_WORD_QUES_EXCL},
+ .speechAfter = {EC_WORD_YOU_RE, EC_WORD_BUSY, EC_WORD_QUES, EC_WORD_DON_T, EC_WORD_GIVE_UP, EC_WORD_EXCL},
+ .mons =
+ {
+ [0] =
+ {
+ .species = SPECIES_SMOOCHUM,
+ .heldItem = ITEM_PETAYA_BERRY,
+ .moves = {MOVE_ICE_BEAM, MOVE_PSYCHIC, MOVE_SWEET_KISS, MOVE_FAKE_TEARS},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 6,
+ .speedEV = 252,
+ .spAttackEV = 252,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 31,
+ .attackIV = 31,
+ .defenseIV = 31,
+ .speedIV = 31,
+ .spAttackIV = 31,
+ .spDefenseIV = 31,
+ .abilityNum = 0,
+ .personality = 0x32,
+ .nickname = _("SMOOCHUM"),
+ .friendship = 50,
+ },
+ [1] =
+ {
+ .species = SPECIES_AZURILL,
+ .heldItem = ITEM_FOCUS_BAND,
+ .moves = {MOVE_SURF, MOVE_SING, MOVE_RAIN_DANCE, MOVE_BLIZZARD},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 6,
+ .speedEV = 252,
+ .spAttackEV = 252,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 31,
+ .attackIV = 31,
+ .defenseIV = 31,
+ .speedIV = 31,
+ .spAttackIV = 31,
+ .spDefenseIV = 31,
+ .abilityNum = 0,
+ .personality = 0xC8,
+ .nickname = _("AZURILL"),
+ .friendship = 50,
+ },
+ [2] =
+ {
+ .species = SPECIES_ELEKID,
+ .heldItem = ITEM_KINGS_ROCK,
+ .moves = {MOVE_FIRE_PUNCH, MOVE_THUNDER, MOVE_ICE_PUNCH, MOVE_THUNDER_WAVE},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 6,
+ .speedEV = 252,
+ .spAttackEV = 252,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 31,
+ .attackIV = 31,
+ .defenseIV = 31,
+ .speedIV = 31,
+ .spAttackIV = 31,
+ .spDefenseIV = 31,
+ .abilityNum = 0,
+ .personality = 0x0,
+ .nickname = _("ELEKID"),
+ .friendship = 50,
+ },
+ [3] =
+ {
+ .species = SPECIES_CLEFFA,
+ .heldItem = ITEM_QUICK_CLAW,
+ .moves = {MOVE_MEGA_KICK, MOVE_SWEET_KISS, MOVE_SING, MOVE_METRONOME},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 6,
+ .attackEV = 252,
+ .speedEV = 252,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 31,
+ .attackIV = 31,
+ .defenseIV = 31,
+ .speedIV = 31,
+ .spAttackIV = 31,
+ .spDefenseIV = 31,
+ .abilityNum = 0,
+ .personality = 0x0,
+ .nickname = _("CLEFFA"),
+ .friendship = 50,
+ },
+ [4] =
+ {
+ .species = SPECIES_WYNAUT,
+ .heldItem = ITEM_LEFTOVERS,
+ .moves = {MOVE_ENCORE, MOVE_COUNTER, MOVE_MIRROR_COAT, MOVE_DESTINY_BOND},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 250,
+ .defenseEV = 130,
+ .spDefenseEV = 130,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 31,
+ .attackIV = 31,
+ .defenseIV = 31,
+ .speedIV = 31,
+ .spAttackIV = 31,
+ .spDefenseIV = 31,
+ .abilityNum = 0,
+ .personality = 0x84,
+ .nickname = _("WYNAUT"),
+ .friendship = 50,
+ },
+ [5] =
+ {
+ .species = SPECIES_MAGBY,
+ .heldItem = ITEM_SCOPE_LENS,
+ .moves = {MOVE_FIRE_BLAST, MOVE_CONFUSE_RAY, MOVE_THUNDER_PUNCH, MOVE_BARRIER},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 6,
+ .speedEV = 252,
+ .spAttackEV = 252,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 31,
+ .attackIV = 31,
+ .defenseIV = 31,
+ .speedIV = 31,
+ .spAttackIV = 31,
+ .spDefenseIV = 31,
+ .abilityNum = 0,
+ .personality = 0xF,
+ .nickname = _("MAGBY"),
+ .friendship = 50,
+ },
+ },
},
- [3] =
- {
- .species = SPECIES_CLEFFA,
- .heldItem = ITEM_QUICK_CLAW,
- .moves = {MOVE_MEGA_KICK, MOVE_SWEET_KISS, MOVE_SING, MOVE_METRONOME},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 6,
- .attackEV = 252,
- .speedEV = 252,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
- .abilityNum = 0,
- .personality = 0x0,
- .nickname = _("CLEFFA"),
- .friendship = 50,
- },
- [4] =
- {
- .species = SPECIES_WYNAUT,
- .heldItem = ITEM_LEFTOVERS,
- .moves = {MOVE_ENCORE, MOVE_COUNTER, MOVE_MIRROR_COAT, MOVE_DESTINY_BOND},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 250,
- .defenseEV = 130,
- .spDefenseEV = 130,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
- .abilityNum = 0,
- .personality = 0x84,
- .nickname = _("WYNAUT"),
- .friendship = 50,
- },
- [5] =
- {
- .species = SPECIES_MAGBY,
- .heldItem = ITEM_SCOPE_LENS,
- .moves = {MOVE_FIRE_BLAST, MOVE_CONFUSE_RAY, MOVE_THUNDER_PUNCH, MOVE_BARRIER},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 6,
- .speedEV = 252,
- .spAttackEV = 252,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
- .abilityNum = 0,
- .personality = 0xF,
- .nickname = _("MAGBY"),
- .friendship = 50,
- },
- },
},
- },
- .data = {0x31, 0x3B, 0x3B, 0x3B, 0x39, 0x39, 0x13, 0x14, 0x15, 0x38, 0x39, 0x3A, 0x3B, 0x3B, 0x3B, 0x8, 0x69, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x7C, 0x46, 0x8, 0x69, 0x46, 0x7A, 0x73, 0x73, 0x73, 0x79, 0x73, 0x73, 0x73, 0x7D, 0x73, 0x73, 0x73, 0x46, 0x8, 0x69, 0x46, 0x73, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x8, 0x69, 0x46, 0x73, 0x73, 0x7B, 0x73, 0x7C, 0x73, 0x7B, 0x73, 0x7A, 0x73, 0x73, 0x73, 0x46, 0x8, 0x69, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x7A, 0x46, 0x8, 0x69, 0x46, 0x73, 0x73, 0x73, 0x73, 0x73, 0x7D, 0x7C, 0x73, 0x7C, 0x73, 0x7B, 0x73, 0x46, 0x8, 0x69, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x7C, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x8, 0x91, 0x46, 0x9B, 0x9B, 0x9B, 0x46, 0x3B, 0x3B, 0x3B, 0x46, 0x9B, 0x9B, 0x9B, 0x9B, 0x46, 0x8, 0x91, 0x46, 0x9B, 0x9B, 0x9B, 0x46, 0x3B, 0x3B, 0x3B, 0x46, 0x9B, 0x9B, 0x9B, 0x9B, 0x46, 0x8, 0x91, 0x46, 0x9B, 0x9B, 0x9B, 0x46, 0x3B, 0x3B, 0x3B, 0x46, 0x9B, 0x9B, 0x9B, 0x9B, 0x46, 0x8, 0xF1, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x78, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x8, 0xF1, 0x46, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0x7A, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0x7C, 0x8, 0xF1, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0xFB, 0x8, 0x7C, 0xFB, 0x7B, 0xFB, 0x7A, 0xFB, 0x79, 0xFB, 0xB3, 0xFB, 0x7D, 0xFB, 0x7E, 0xFB, 0x7D, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8},
- .unk3A0 = {0x381, 0x7FFB, 0x4003, 0x5FFF, 0x4003, 0x7FFB, 0x4003, 0x7EFF, 0x4443, 0x4443, 0x4443, 0x7EFF, 0x4001, 0x7FFD, 0x1, 0xFFFF},
- .coords = {150, 152},
- .direction = 0x23,
- .range = 0x11,
+ .display = {
+ .data = {0x31, 0x3B, 0x3B, 0x3B, 0x39, 0x39, 0x13, 0x14, 0x15, 0x38, 0x39, 0x3A, 0x3B, 0x3B, 0x3B, 0x8, 0x69, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x7C, 0x46, 0x8, 0x69, 0x46, 0x7A, 0x73, 0x73, 0x73, 0x79, 0x73, 0x73, 0x73, 0x7D, 0x73, 0x73, 0x73, 0x46, 0x8, 0x69, 0x46, 0x73, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x8, 0x69, 0x46, 0x73, 0x73, 0x7B, 0x73, 0x7C, 0x73, 0x7B, 0x73, 0x7A, 0x73, 0x73, 0x73, 0x46, 0x8, 0x69, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x7A, 0x46, 0x8, 0x69, 0x46, 0x73, 0x73, 0x73, 0x73, 0x73, 0x7D, 0x7C, 0x73, 0x7C, 0x73, 0x7B, 0x73, 0x46, 0x8, 0x69, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x7C, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x8, 0x91, 0x46, 0x9B, 0x9B, 0x9B, 0x46, 0x3B, 0x3B, 0x3B, 0x46, 0x9B, 0x9B, 0x9B, 0x9B, 0x46, 0x8, 0x91, 0x46, 0x9B, 0x9B, 0x9B, 0x46, 0x3B, 0x3B, 0x3B, 0x46, 0x9B, 0x9B, 0x9B, 0x9B, 0x46, 0x8, 0x91, 0x46, 0x9B, 0x9B, 0x9B, 0x46, 0x3B, 0x3B, 0x3B, 0x46, 0x9B, 0x9B, 0x9B, 0x9B, 0x46, 0x8, 0xF1, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x78, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x8, 0xF1, 0x46, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0x7A, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0x7C, 0x8, 0xF1, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0xFB, 0x8, 0x7C, 0xFB, 0x7B, 0xFB, 0x7A, 0xFB, 0x79, 0xFB, 0xB3, 0xFB, 0x7D, 0xFB, 0x7E, 0xFB, 0x7D, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8},
+ .unk3A0 = {0x381, 0x7FFB, 0x4003, 0x5FFF, 0x4003, 0x7FFB, 0x4003, 0x7EFF, 0x4443, 0x4443, 0x4443, 0x7EFF, 0x4001, 0x7FFD, 0x1, 0xFFFF},
+ .coords = {150, 152},
+ .direction = 0x23,
+ .range = 0x11,
+ }
},
- [3] =
+ [3] =
{
.unk0 = 0x38,
.unk1 = 0x37,
.trainers =
- {
- [0] =
{
- .name = _("DANE"),
- .facilityClass = FACILITY_CLASS_BIRD_KEEPER,
- .unused = 0,
- .speechBefore = {EC_WORD_I, EC_WORD_GOT, EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_ON, EC_WORD_VACATION},
- .speechWin = {EC_WORD_IT_S, EC_WORD_GREAT, EC_WORD_TO, EC_WORD_TRAVEL, EC_WORD_AND, EC_WORD_BATTLE},
- .speechLose = {EC_WORD_WAAAH, EC_WORD_EXCL, EC_WORD_MY, EC_WORD_RARE, EC_WORD_POKEMON, EC_WORD_EXCL},
- .speechAfter = {EC_WORD_OFF, EC_WORD_ON, EC_WORD_ANOTHER, EC_WORD_VACATION, EC_WORD_I, EC_WORD_GO},
- .mons =
- {
- [0] =
- {
- .species = SPECIES_SUDOWOODO,
- .heldItem = ITEM_SITRUS_BERRY,
- .moves = {MOVE_ROCK_SLIDE, MOVE_BLOCK, MOVE_TOXIC, MOVE_EXPLOSION},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 100,
- .attackEV = 255,
- .spDefenseEV = 155,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 15,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 0,
- .personality = 0x80,
- .nickname = _("SUDOWOODO"),
- .friendship = 255,
- },
- [1] =
- {
- .species = SPECIES_SLOWKING,
- .heldItem = ITEM_SCOPE_LENS,
- .moves = {MOVE_SURF, MOVE_PSYCHIC, MOVE_BLIZZARD, MOVE_DISABLE},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 255,
- .defenseEV = 255,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 15,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 1,
- .personality = 0x8C,
- .nickname = _("SLOWKING"),
- .friendship = 255,
- },
- [2] =
- {
- .species = SPECIES_ENTEI,
- .heldItem = ITEM_PETAYA_BERRY,
- .moves = {MOVE_FLAMETHROWER, MOVE_CALM_MIND, MOVE_FIRE_SPIN, MOVE_ROAR},
- .level = 0,
- .ppBonuses = 0,
- .speedEV = 255,
- .spAttackEV = 255,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 15,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 0,
- .personality = 0xF,
- .nickname = _("ENTEI"),
- .friendship = 255,
- },
- [3] =
- {
- .species = SPECIES_HITMONCHAN,
- .heldItem = ITEM_FOCUS_BAND,
- .moves = {MOVE_MEGA_PUNCH, MOVE_DETECT, MOVE_COUNTER, MOVE_SKY_UPPERCUT},
- .level = 0,
- .ppBonuses = 0,
- .attackEV = 255,
- .speedEV = 255,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 15,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 0,
- .personality = 0x3,
- .nickname = _("HITMONCHAN"),
- .friendship = 255,
- },
- [4] =
- {
- .species = SPECIES_MANTINE,
- .heldItem = ITEM_LEFTOVERS,
- .moves = {MOVE_SURF, MOVE_CONFUSE_RAY, MOVE_ATTRACT, MOVE_AERIAL_ACE},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 255,
- .defenseEV = 255,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 15,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 1,
- .personality = 0x6,
- .nickname = _("MANTINE"),
- .friendship = 255,
+ [0] =
+ {
+ .name = _("DANE"),
+ .facilityClass = FACILITY_CLASS_BIRD_KEEPER,
+ .unused = 0,
+ .speechBefore = {EC_WORD_I, EC_WORD_GOT, EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_ON, EC_WORD_VACATION},
+ .speechWin = {EC_WORD_IT_S, EC_WORD_GREAT, EC_WORD_TO, EC_WORD_TRAVEL, EC_WORD_AND, EC_WORD_BATTLE},
+ .speechLose = {EC_WORD_WAAAH, EC_WORD_EXCL, EC_WORD_MY, EC_WORD_RARE, EC_WORD_POKEMON, EC_WORD_EXCL},
+ .speechAfter = {EC_WORD_OFF, EC_WORD_ON, EC_WORD_ANOTHER, EC_WORD_VACATION, EC_WORD_I, EC_WORD_GO},
+ .mons =
+ {
+ [0] =
+ {
+ .species = SPECIES_SUDOWOODO,
+ .heldItem = ITEM_SITRUS_BERRY,
+ .moves = {MOVE_ROCK_SLIDE, MOVE_BLOCK, MOVE_TOXIC, MOVE_EXPLOSION},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 100,
+ .attackEV = 255,
+ .spDefenseEV = 155,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 15,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 0,
+ .personality = 0x80,
+ .nickname = _("SUDOWOODO"),
+ .friendship = 255,
+ },
+ [1] =
+ {
+ .species = SPECIES_SLOWKING,
+ .heldItem = ITEM_SCOPE_LENS,
+ .moves = {MOVE_SURF, MOVE_PSYCHIC, MOVE_BLIZZARD, MOVE_DISABLE},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 255,
+ .defenseEV = 255,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 15,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 1,
+ .personality = 0x8C,
+ .nickname = _("SLOWKING"),
+ .friendship = 255,
+ },
+ [2] =
+ {
+ .species = SPECIES_ENTEI,
+ .heldItem = ITEM_PETAYA_BERRY,
+ .moves = {MOVE_FLAMETHROWER, MOVE_CALM_MIND, MOVE_FIRE_SPIN, MOVE_ROAR},
+ .level = 0,
+ .ppBonuses = 0,
+ .speedEV = 255,
+ .spAttackEV = 255,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 15,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 0,
+ .personality = 0xF,
+ .nickname = _("ENTEI"),
+ .friendship = 255,
+ },
+ [3] =
+ {
+ .species = SPECIES_HITMONCHAN,
+ .heldItem = ITEM_FOCUS_BAND,
+ .moves = {MOVE_MEGA_PUNCH, MOVE_DETECT, MOVE_COUNTER, MOVE_SKY_UPPERCUT},
+ .level = 0,
+ .ppBonuses = 0,
+ .attackEV = 255,
+ .speedEV = 255,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 15,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 0,
+ .personality = 0x3,
+ .nickname = _("HITMONCHAN"),
+ .friendship = 255,
+ },
+ [4] =
+ {
+ .species = SPECIES_MANTINE,
+ .heldItem = ITEM_LEFTOVERS,
+ .moves = {MOVE_SURF, MOVE_CONFUSE_RAY, MOVE_ATTRACT, MOVE_AERIAL_ACE},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 255,
+ .defenseEV = 255,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 15,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 1,
+ .personality = 0x6,
+ .nickname = _("MANTINE"),
+ .friendship = 255,
+ },
+ [5] =
+ {
+ .species = SPECIES_ZAPDOS,
+ .heldItem = ITEM_BRIGHT_POWDER,
+ .moves = {MOVE_THUNDERBOLT, MOVE_DRILL_PECK, MOVE_THUNDER_WAVE, MOVE_AGILITY},
+ .level = 0,
+ .ppBonuses = 0,
+ .speedEV = 255,
+ .spAttackEV = 255,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 15,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 0,
+ .personality = 0x18,
+ .nickname = _("ZAPDOS"),
+ .friendship = 255,
+ },
+ },
+ },
+ [1] =
+ {
+ .name = _("STEPHANIE"),
+ .facilityClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_F,
+ .unused = 0,
+ .speechBefore = {EC_WORD_THIS, EC_WORD_IS, EC_WORD_HOW, EC_WORD_YOU, EC_WORD_WIN, EC_WORD_EXCL},
+ .speechWin = {EC_WORD_DO, EC_WORD_YOU, EC_WORD_UNDERSTAND, EC_WORD_HOW, EC_WORD_NOW, EC_WORD_QUES},
+ .speechLose = {EC_WORD_YES, EC_WORD_THAT_S, EC_WORD_HOW, EC_WORD_YOU, EC_WORD_DO, EC_WORD_IT},
+ .speechAfter = {EC_WORD_YOU, EC_WORD_BEAT, EC_WORD_ME, EC_WORD_GOOD, EC_WORD_FOR, EC_WORD_YOU},
+ .mons =
+ {
+ [0] =
+ {
+ .species = SPECIES_HITMONLEE,
+ .heldItem = ITEM_FOCUS_BAND,
+ .moves = {MOVE_MEGA_KICK, MOVE_MIND_READER, MOVE_FOCUS_ENERGY, MOVE_HI_JUMP_KICK},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 255,
+ .attackEV = 255,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 15,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 0,
+ .personality = 0x3,
+ .nickname = _("HITMONLEE"),
+ .friendship = 255,
+ },
+ [1] =
+ {
+ .species = SPECIES_PORYGON2,
+ .heldItem = ITEM_SCOPE_LENS,
+ .moves = {MOVE_LOCK_ON, MOVE_BLIZZARD, MOVE_CONVERSION_2, MOVE_PSYCHIC},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 255,
+ .spAttackEV = 255,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 15,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 0,
+ .personality = 0xF,
+ .nickname = _("PORYGON2"),
+ .friendship = 255,
+ },
+ [2] =
+ {
+ .species = SPECIES_SUICUNE,
+ .heldItem = ITEM_PETAYA_BERRY,
+ .moves = {MOVE_SURF, MOVE_CALM_MIND, MOVE_MIRROR_COAT, MOVE_MIST},
+ .level = 0,
+ .ppBonuses = 0,
+ .speedEV = 255,
+ .spAttackEV = 255,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 15,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 0,
+ .personality = 0xF,
+ .nickname = _("SUICUNE"),
+ .friendship = 255,
+ },
+ [3] =
+ {
+ .species = SPECIES_HOUNDOOM,
+ .heldItem = ITEM_QUICK_CLAW,
+ .moves = {MOVE_FLAMETHROWER, MOVE_CRUNCH, MOVE_ROAR, MOVE_WILL_O_WISP},
+ .level = 0,
+ .ppBonuses = 0,
+ .speedEV = 255,
+ .spAttackEV = 255,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 15,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 1,
+ .personality = 0xF,
+ .nickname = _("HOUNDOOM"),
+ .friendship = 255,
+ },
+ [4] =
+ {
+ .species = SPECIES_STANTLER,
+ .heldItem = ITEM_LEFTOVERS,
+ .moves = {MOVE_CONFUSE_RAY, MOVE_SWAGGER, MOVE_PSYCH_UP, MOVE_TAKE_DOWN},
+ .level = 0,
+ .ppBonuses = 0,
+ .attackEV = 255,
+ .speedEV = 255,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 15,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 0,
+ .personality = 0x3,
+ .nickname = _("STANTLER"),
+ .friendship = 255,
+ },
+ [5] =
+ {
+ .species = SPECIES_ARTICUNO,
+ .heldItem = ITEM_NEVER_MELT_ICE,
+ .moves = {MOVE_BLIZZARD, MOVE_SHEER_COLD, MOVE_MIST, MOVE_AERIAL_ACE},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 255,
+ .spAttackEV = 255,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 15,
+ .attackIV = 15,
+ .defenseIV = 15,
+ .speedIV = 15,
+ .spAttackIV = 15,
+ .spDefenseIV = 15,
+ .abilityNum = 0,
+ .personality = 0xF,
+ .nickname = _("ARTICUNO"),
+ .friendship = 255,
+ },
+ },
},
- [5] =
- {
- .species = SPECIES_ZAPDOS,
- .heldItem = ITEM_BRIGHT_POWDER,
- .moves = {MOVE_THUNDERBOLT, MOVE_DRILL_PECK, MOVE_THUNDER_WAVE, MOVE_AGILITY},
- .level = 0,
- .ppBonuses = 0,
- .speedEV = 255,
- .spAttackEV = 255,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 15,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 0,
- .personality = 0x18,
- .nickname = _("ZAPDOS"),
- .friendship = 255,
- },
- },
- },
- [1] =
- {
- .name = _("STEPHANIE"),
- .facilityClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_F,
- .unused = 0,
- .speechBefore = {EC_WORD_THIS, EC_WORD_IS, EC_WORD_HOW, EC_WORD_YOU, EC_WORD_WIN, EC_WORD_EXCL},
- .speechWin = {EC_WORD_DO, EC_WORD_YOU, EC_WORD_UNDERSTAND, EC_WORD_HOW, EC_WORD_NOW, EC_WORD_QUES},
- .speechLose = {EC_WORD_YES, EC_WORD_THAT_S, EC_WORD_HOW, EC_WORD_YOU, EC_WORD_DO, EC_WORD_IT},
- .speechAfter = {EC_WORD_YOU, EC_WORD_BEAT, EC_WORD_ME, EC_WORD_GOOD, EC_WORD_FOR, EC_WORD_YOU},
- .mons =
- {
- [0] =
- {
- .species = SPECIES_HITMONLEE,
- .heldItem = ITEM_FOCUS_BAND,
- .moves = {MOVE_MEGA_KICK, MOVE_MIND_READER, MOVE_FOCUS_ENERGY, MOVE_HI_JUMP_KICK},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 255,
- .attackEV = 255,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 15,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 0,
- .personality = 0x3,
- .nickname = _("HITMONLEE"),
- .friendship = 255,
- },
- [1] =
- {
- .species = SPECIES_PORYGON2,
- .heldItem = ITEM_SCOPE_LENS,
- .moves = {MOVE_LOCK_ON, MOVE_BLIZZARD, MOVE_CONVERSION_2, MOVE_PSYCHIC},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 255,
- .spAttackEV = 255,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 15,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 0,
- .personality = 0xF,
- .nickname = _("PORYGON2"),
- .friendship = 255,
- },
- [2] =
- {
- .species = SPECIES_SUICUNE,
- .heldItem = ITEM_PETAYA_BERRY,
- .moves = {MOVE_SURF, MOVE_CALM_MIND, MOVE_MIRROR_COAT, MOVE_MIST},
- .level = 0,
- .ppBonuses = 0,
- .speedEV = 255,
- .spAttackEV = 255,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 15,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 0,
- .personality = 0xF,
- .nickname = _("SUICUNE"),
- .friendship = 255,
- },
- [3] =
- {
- .species = SPECIES_HOUNDOOM,
- .heldItem = ITEM_QUICK_CLAW,
- .moves = {MOVE_FLAMETHROWER, MOVE_CRUNCH, MOVE_ROAR, MOVE_WILL_O_WISP},
- .level = 0,
- .ppBonuses = 0,
- .speedEV = 255,
- .spAttackEV = 255,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 15,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 1,
- .personality = 0xF,
- .nickname = _("HOUNDOOM"),
- .friendship = 255,
- },
- [4] =
- {
- .species = SPECIES_STANTLER,
- .heldItem = ITEM_LEFTOVERS,
- .moves = {MOVE_CONFUSE_RAY, MOVE_SWAGGER, MOVE_PSYCH_UP, MOVE_TAKE_DOWN},
- .level = 0,
- .ppBonuses = 0,
- .attackEV = 255,
- .speedEV = 255,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 15,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 0,
- .personality = 0x3,
- .nickname = _("STANTLER"),
- .friendship = 255,
- },
- [5] =
- {
- .species = SPECIES_ARTICUNO,
- .heldItem = ITEM_NEVER_MELT_ICE,
- .moves = {MOVE_BLIZZARD, MOVE_SHEER_COLD, MOVE_MIST, MOVE_AERIAL_ACE},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 255,
- .spAttackEV = 255,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 15,
- .attackIV = 15,
- .defenseIV = 15,
- .speedIV = 15,
- .spAttackIV = 15,
- .spDefenseIV = 15,
- .abilityNum = 0,
- .personality = 0xF,
- .nickname = _("ARTICUNO"),
- .friendship = 255,
- },
- },
},
- },
- .data = {0xF1, 0xFB, 0xFB, 0xFB, 0xF9, 0xF9, 0x1B, 0x1C, 0x1D, 0xE5, 0xE6, 0xEE, 0xF5, 0xFB, 0xFB, 0x8, 0xED, 0xF5, 0xF5, 0xF5, 0xFB, 0xFB, 0xEC, 0xEC, 0xEC, 0xEB, 0xEC, 0xEC, 0xEC, 0xFB, 0xFB, 0x8, 0xF4, 0xEC, 0xEC, 0xEC, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xEB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0x8, 0xF1, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xFB, 0xEB, 0xFB, 0xF5, 0xF5, 0xF5, 0xF5, 0x8, 0xF1, 0xEB, 0xEC, 0xEC, 0xEC, 0xEB, 0xEC, 0xEC, 0xFB, 0xEC, 0xFB, 0xEC, 0xEC, 0xEC, 0xEC, 0x8, 0xF1, 0xEB, 0xFB, 0xFB, 0xFB, 0xEB, 0xFB, 0xF5, 0xFB, 0xF5, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0x8, 0xF1, 0xEB, 0xFB, 0xF5, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xF5, 0xF5, 0xF5, 0xFB, 0xFB, 0x8, 0xF1, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xEC, 0xEC, 0xEC, 0xFB, 0xFB, 0x8, 0xF1, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xF5, 0xF5, 0xF5, 0xF5, 0x8, 0xF1, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEC, 0xEC, 0xEC, 0xEC, 0x8, 0xF1, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0x8, 0xF1, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xF5, 0xF5, 0xF5, 0xF5, 0xFB, 0x8, 0xF1, 0xEC, 0xFB, 0xEB, 0xFB, 0xEC, 0xFB, 0xEB, 0xFB, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xFB, 0x8, 0xF1, 0xFB, 0xFB, 0xEB, 0xFB, 0xFB, 0xFB, 0xEB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0x8, 0xF1, 0xFB, 0xFB, 0xEC, 0xFB, 0xFB, 0xFB, 0xEC, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8},
- .unk3A0 = {0x381, 0x3F9, 0xF041, 0x41, 0x7F5F, 0x4401, 0x4541, 0x5579, 0x5541, 0x555F, 0x5541, 0x5541, 0x557D, 0x1101, 0x1101, 0xFFFF},
- .coords = {40, 91},
- .direction = 0x21,
- .range = 0x33,
+ .display = {
+ .data = {0xF1, 0xFB, 0xFB, 0xFB, 0xF9, 0xF9, 0x1B, 0x1C, 0x1D, 0xE5, 0xE6, 0xEE, 0xF5, 0xFB, 0xFB, 0x8, 0xED, 0xF5, 0xF5, 0xF5, 0xFB, 0xFB, 0xEC, 0xEC, 0xEC, 0xEB, 0xEC, 0xEC, 0xEC, 0xFB, 0xFB, 0x8, 0xF4, 0xEC, 0xEC, 0xEC, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xEB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0x8, 0xF1, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xFB, 0xEB, 0xFB, 0xF5, 0xF5, 0xF5, 0xF5, 0x8, 0xF1, 0xEB, 0xEC, 0xEC, 0xEC, 0xEB, 0xEC, 0xEC, 0xFB, 0xEC, 0xFB, 0xEC, 0xEC, 0xEC, 0xEC, 0x8, 0xF1, 0xEB, 0xFB, 0xFB, 0xFB, 0xEB, 0xFB, 0xF5, 0xFB, 0xF5, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0x8, 0xF1, 0xEB, 0xFB, 0xF5, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xF5, 0xF5, 0xF5, 0xFB, 0xFB, 0x8, 0xF1, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xEC, 0xEC, 0xEC, 0xFB, 0xFB, 0x8, 0xF1, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xF5, 0xF5, 0xF5, 0xF5, 0x8, 0xF1, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEC, 0xEC, 0xEC, 0xEC, 0x8, 0xF1, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0x8, 0xF1, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xF5, 0xF5, 0xF5, 0xF5, 0xFB, 0x8, 0xF1, 0xEC, 0xFB, 0xEB, 0xFB, 0xEC, 0xFB, 0xEB, 0xFB, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xFB, 0x8, 0xF1, 0xFB, 0xFB, 0xEB, 0xFB, 0xFB, 0xFB, 0xEB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0x8, 0xF1, 0xFB, 0xFB, 0xEC, 0xFB, 0xFB, 0xFB, 0xEC, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8},
+ .unk3A0 = {0x381, 0x3F9, 0xF041, 0x41, 0x7F5F, 0x4401, 0x4541, 0x5579, 0x5541, 0x555F, 0x5541, 0x5541, 0x557D, 0x1101, 0x1101, 0xFFFF},
+ .coords = {40, 91},
+ .direction = 0x21,
+ .range = 0x33,
+ }
},
- },
};
+
static const struct TrHillTag sDataTagExpert =
{
.unkField_0 = 8,
.unused1 = 1,
- .unkField_2 = 4,
- .unused3 = 0,
- .unused4 = 63,
- .unused5 = 31,
- .unused6 = 6,
- .floors =
- {
- [0] =
+ .numFloors = 4,
+ .checksum = 0x00061F3F
+};
+
+static const struct TrHillFloor sDataTagExpert_floors[] = {
+ [0] =
{
.unk0 = 0x39,
.unk1 = 0x3A,
.trainers =
- {
- [0] =
- {
- .name = _("ALFRED"),
- .facilityClass = FACILITY_CLASS_COOLTRAINER_M,
- .unused = 0,
- .speechBefore = {EC_WORD_WE, EC_WORD_CAN, EC_WORD_TAKE, EC_WORD_ON, EC_WORD_ANY, EC_WORD_TYPE},
- .speechWin = {EC_WORD_WE, EC_WORD_DID, EC_WORD_BETTER, EC_WORD_THAN, EC_WORD_OKAY, EC_WORD_EXCL},
- .speechLose = {EC_WORD_OUR, EC_WORD_STRATEGY, EC_WORD_ISN_T, EC_WORD_ANY, EC_WORD_GOOD, EC_WORD_ELLIPSIS},
- .speechAfter = {EC_WORD_WE, EC_WORD_NEED, EC_WORD_TO, EC_WORD_TRAIN, EC_WORD_A_LOT, EC_WORD_MORE},
- .mons =
- {
- [0] =
- {
- .species = SPECIES_SNORLAX,
- .heldItem = ITEM_QUICK_CLAW,
- .moves = {MOVE_MEGA_KICK, MOVE_SHADOW_BALL, MOVE_BRICK_BREAK, MOVE_EARTHQUAKE},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 6,
- .attackEV = 252,
- .defenseEV = 252,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
- .abilityNum = 0,
- .personality = 0x35,
- .nickname = _("SNORLAX"),
- .friendship = 255,
- },
- [1] =
- {
- .species = SPECIES_MILTANK,
- .heldItem = ITEM_LEFTOVERS,
- .moves = {MOVE_DOUBLE_EDGE, MOVE_SHADOW_BALL, MOVE_ATTRACT, MOVE_MILK_DRINK},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 6,
- .attackEV = 252,
- .speedEV = 252,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
- .abilityNum = 0,
- .personality = 0x3,
- .nickname = _("MILTANK"),
- .friendship = 255,
- },
- [2] =
- {
- .species = SPECIES_URSARING,
- .heldItem = ITEM_QUICK_CLAW,
- .moves = {MOVE_DOUBLE_EDGE, MOVE_CRUNCH, MOVE_BRICK_BREAK, MOVE_AERIAL_ACE},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 252,
- .attackEV = 252,
- .spAttackEV = 6,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
- .abilityNum = 0,
- .personality = 0x7F,
- .nickname = _("URSARING"),
- .friendship = 255,
- },
- [3] =
- {
- .species = SPECIES_SLAKING,
- .heldItem = ITEM_CHESTO_BERRY,
- .moves = {MOVE_HYPER_BEAM, MOVE_SHADOW_BALL, MOVE_BRICK_BREAK, MOVE_REST},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 6,
- .attackEV = 252,
- .spDefenseEV = 252,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
- .abilityNum = 0,
- .personality = 0x80,
- .nickname = _("SLAKING"),
- .friendship = 255,
- },
- [4] =
- {
- .species = SPECIES_KANGASKHAN,
- .heldItem = ITEM_LEFTOVERS,
- .moves = {MOVE_MEGA_KICK, MOVE_SHADOW_BALL, MOVE_ATTRACT, MOVE_FAKE_OUT},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 6,
- .attackEV = 252,
- .speedEV = 252,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
- .abilityNum = 0,
- .personality = 0x3,
- .nickname = _("KANGASKHAN"),
- .friendship = 255,
- },
- [5] =
- {
- .species = SPECIES_ZANGOOSE,
- .heldItem = ITEM_SCOPE_LENS,
- .moves = {MOVE_CRUSH_CLAW, MOVE_SHADOW_BALL, MOVE_BRICK_BREAK, MOVE_ROAR},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 6,
- .attackEV = 252,
- .speedEV = 252,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
- .abilityNum = 0,
- .personality = 0x80,
- .nickname = _("ZANGOOSE"),
- .friendship = 255,
- },
- },
- },
- [1] =
{
- .name = _("EDIE"),
- .facilityClass = FACILITY_CLASS_PSYCHIC_F,
- .unused = 0,
- .speechBefore = {EC_WORD_WE, EC_WORD_WILL_BE_HERE, EC_WORD_FOR, EC_WORD_ANY, EC_WORD_TRAINER, EC_WORD_CHALLENGE},
- .speechWin = {EC_WORD_MY, EC_WORD_STRATEGY, EC_WORD_WORKS, EC_WORD_TO, EC_WORD_PERFECTION, EC_WORD_EXCL},
- .speechLose = {EC_WORD_NO, EC_WORD_NO, EC_WORD_ELLIPSIS, EC_WORD_THAT, EC_WORD_WON_T, EC_WORD_DO},
- .speechAfter = {EC_WORD_THERE, EC_WORD_SHOULD, EC_WORD_BE, EC_WORD_A, EC_WORD_TRAINER, EC_WORD_SCHOOL},
- .mons =
- {
- [0] =
- {
- .species = SPECIES_SLOWKING,
- .heldItem = ITEM_LEFTOVERS,
- .moves = {MOVE_PSYCHIC, MOVE_SURF, MOVE_ICE_BEAM, MOVE_SKILL_SWAP},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 200,
- .defenseEV = 110,
- .spAttackEV = 200,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
- .abilityNum = 1,
- .personality = 0xF,
- .nickname = _("SLOWKING"),
- .friendship = 255,
- },
- [1] =
- {
- .species = SPECIES_ESPEON,
- .heldItem = ITEM_LUM_BERRY,
- .moves = {MOVE_PSYCHIC, MOVE_BITE, MOVE_CALM_MIND, MOVE_REFLECT},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 6,
- .speedEV = 252,
- .spAttackEV = 252,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
- .abilityNum = 0,
- .personality = 0x28,
- .nickname = _("ESPEON"),
- .friendship = 255,
- },
- [2] =
- {
- .species = SPECIES_STARMIE,
- .heldItem = ITEM_SHELL_BELL,
- .moves = {MOVE_PSYCHIC, MOVE_SURF, MOVE_THUNDERBOLT, MOVE_ICE_BEAM},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 6,
- .speedEV = 252,
- .spAttackEV = 252,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
- .abilityNum = 1,
- .personality = 0xF,
- .nickname = _("STARMIE"),
- .friendship = 255,
+ [0] =
+ {
+ .name = _("ALFRED"),
+ .facilityClass = FACILITY_CLASS_COOLTRAINER_M,
+ .unused = 0,
+ .speechBefore = {EC_WORD_WE, EC_WORD_CAN, EC_WORD_TAKE, EC_WORD_ON, EC_WORD_ANY, EC_WORD_TYPE},
+ .speechWin = {EC_WORD_WE, EC_WORD_DID, EC_WORD_BETTER, EC_WORD_THAN, EC_WORD_OKAY, EC_WORD_EXCL},
+ .speechLose = {EC_WORD_OUR, EC_WORD_STRATEGY, EC_WORD_ISN_T, EC_WORD_ANY, EC_WORD_GOOD, EC_WORD_ELLIPSIS},
+ .speechAfter = {EC_WORD_WE, EC_WORD_NEED, EC_WORD_TO, EC_WORD_TRAIN, EC_WORD_A_LOT, EC_WORD_MORE},
+ .mons =
+ {
+ [0] =
+ {
+ .species = SPECIES_SNORLAX,
+ .heldItem = ITEM_QUICK_CLAW,
+ .moves = {MOVE_MEGA_KICK, MOVE_SHADOW_BALL, MOVE_BRICK_BREAK, MOVE_EARTHQUAKE},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 6,
+ .attackEV = 252,
+ .defenseEV = 252,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 31,
+ .attackIV = 31,
+ .defenseIV = 31,
+ .speedIV = 31,
+ .spAttackIV = 31,
+ .spDefenseIV = 31,
+ .abilityNum = 0,
+ .personality = 0x35,
+ .nickname = _("SNORLAX"),
+ .friendship = 255,
+ },
+ [1] =
+ {
+ .species = SPECIES_MILTANK,
+ .heldItem = ITEM_LEFTOVERS,
+ .moves = {MOVE_DOUBLE_EDGE, MOVE_SHADOW_BALL, MOVE_ATTRACT, MOVE_MILK_DRINK},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 6,
+ .attackEV = 252,
+ .speedEV = 252,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 31,
+ .attackIV = 31,
+ .defenseIV = 31,
+ .speedIV = 31,
+ .spAttackIV = 31,
+ .spDefenseIV = 31,
+ .abilityNum = 0,
+ .personality = 0x3,
+ .nickname = _("MILTANK"),
+ .friendship = 255,
+ },
+ [2] =
+ {
+ .species = SPECIES_URSARING,
+ .heldItem = ITEM_QUICK_CLAW,
+ .moves = {MOVE_DOUBLE_EDGE, MOVE_CRUNCH, MOVE_BRICK_BREAK, MOVE_AERIAL_ACE},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 252,
+ .attackEV = 252,
+ .spAttackEV = 6,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 31,
+ .attackIV = 31,
+ .defenseIV = 31,
+ .speedIV = 31,
+ .spAttackIV = 31,
+ .spDefenseIV = 31,
+ .abilityNum = 0,
+ .personality = 0x7F,
+ .nickname = _("URSARING"),
+ .friendship = 255,
+ },
+ [3] =
+ {
+ .species = SPECIES_SLAKING,
+ .heldItem = ITEM_CHESTO_BERRY,
+ .moves = {MOVE_HYPER_BEAM, MOVE_SHADOW_BALL, MOVE_BRICK_BREAK, MOVE_REST},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 6,
+ .attackEV = 252,
+ .spDefenseEV = 252,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 31,
+ .attackIV = 31,
+ .defenseIV = 31,
+ .speedIV = 31,
+ .spAttackIV = 31,
+ .spDefenseIV = 31,
+ .abilityNum = 0,
+ .personality = 0x80,
+ .nickname = _("SLAKING"),
+ .friendship = 255,
+ },
+ [4] =
+ {
+ .species = SPECIES_KANGASKHAN,
+ .heldItem = ITEM_LEFTOVERS,
+ .moves = {MOVE_MEGA_KICK, MOVE_SHADOW_BALL, MOVE_ATTRACT, MOVE_FAKE_OUT},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 6,
+ .attackEV = 252,
+ .speedEV = 252,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 31,
+ .attackIV = 31,
+ .defenseIV = 31,
+ .speedIV = 31,
+ .spAttackIV = 31,
+ .spDefenseIV = 31,
+ .abilityNum = 0,
+ .personality = 0x3,
+ .nickname = _("KANGASKHAN"),
+ .friendship = 255,
+ },
+ [5] =
+ {
+ .species = SPECIES_ZANGOOSE,
+ .heldItem = ITEM_SCOPE_LENS,
+ .moves = {MOVE_CRUSH_CLAW, MOVE_SHADOW_BALL, MOVE_BRICK_BREAK, MOVE_ROAR},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 6,
+ .attackEV = 252,
+ .speedEV = 252,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 31,
+ .attackIV = 31,
+ .defenseIV = 31,
+ .speedIV = 31,
+ .spAttackIV = 31,
+ .spDefenseIV = 31,
+ .abilityNum = 0,
+ .personality = 0x80,
+ .nickname = _("ZANGOOSE"),
+ .friendship = 255,
+ },
+ },
+ },
+ [1] =
+ {
+ .name = _("EDIE"),
+ .facilityClass = FACILITY_CLASS_PSYCHIC_F,
+ .unused = 0,
+ .speechBefore = {EC_WORD_WE, EC_WORD_WILL_BE_HERE, EC_WORD_FOR, EC_WORD_ANY, EC_WORD_TRAINER, EC_WORD_CHALLENGE},
+ .speechWin = {EC_WORD_MY, EC_WORD_STRATEGY, EC_WORD_WORKS, EC_WORD_TO, EC_WORD_PERFECTION, EC_WORD_EXCL},
+ .speechLose = {EC_WORD_NO, EC_WORD_NO, EC_WORD_ELLIPSIS, EC_WORD_THAT, EC_WORD_WON_T, EC_WORD_DO},
+ .speechAfter = {EC_WORD_THERE, EC_WORD_SHOULD, EC_WORD_BE, EC_WORD_A, EC_WORD_TRAINER, EC_WORD_SCHOOL},
+ .mons =
+ {
+ [0] =
+ {
+ .species = SPECIES_SLOWKING,
+ .heldItem = ITEM_LEFTOVERS,
+ .moves = {MOVE_PSYCHIC, MOVE_SURF, MOVE_ICE_BEAM, MOVE_SKILL_SWAP},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 200,
+ .defenseEV = 110,
+ .spAttackEV = 200,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 31,
+ .attackIV = 31,
+ .defenseIV = 31,
+ .speedIV = 31,
+ .spAttackIV = 31,
+ .spDefenseIV = 31,
+ .abilityNum = 1,
+ .personality = 0xF,
+ .nickname = _("SLOWKING"),
+ .friendship = 255,
+ },
+ [1] =
+ {
+ .species = SPECIES_ESPEON,
+ .heldItem = ITEM_LUM_BERRY,
+ .moves = {MOVE_PSYCHIC, MOVE_BITE, MOVE_CALM_MIND, MOVE_REFLECT},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 6,
+ .speedEV = 252,
+ .spAttackEV = 252,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 31,
+ .attackIV = 31,
+ .defenseIV = 31,
+ .speedIV = 31,
+ .spAttackIV = 31,
+ .spDefenseIV = 31,
+ .abilityNum = 0,
+ .personality = 0x28,
+ .nickname = _("ESPEON"),
+ .friendship = 255,
+ },
+ [2] =
+ {
+ .species = SPECIES_STARMIE,
+ .heldItem = ITEM_SHELL_BELL,
+ .moves = {MOVE_PSYCHIC, MOVE_SURF, MOVE_THUNDERBOLT, MOVE_ICE_BEAM},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 6,
+ .speedEV = 252,
+ .spAttackEV = 252,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 31,
+ .attackIV = 31,
+ .defenseIV = 31,
+ .speedIV = 31,
+ .spAttackIV = 31,
+ .spDefenseIV = 31,
+ .abilityNum = 1,
+ .personality = 0xF,
+ .nickname = _("STARMIE"),
+ .friendship = 255,
+ },
+ [3] =
+ {
+ .species = SPECIES_GENGAR,
+ .heldItem = ITEM_LUM_BERRY,
+ .moves = {MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 6,
+ .speedEV = 252,
+ .spAttackEV = 252,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 31,
+ .attackIV = 31,
+ .defenseIV = 31,
+ .speedIV = 31,
+ .spAttackIV = 31,
+ .spDefenseIV = 31,
+ .abilityNum = 0,
+ .personality = 0xF,
+ .nickname = _("GENGAR"),
+ .friendship = 255,
+ },
+ [4] =
+ {
+ .species = SPECIES_GARDEVOIR,
+ .heldItem = ITEM_SALAC_BERRY,
+ .moves = {MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_MAGICAL_LEAF, MOVE_DESTINY_BOND},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 6,
+ .speedEV = 252,
+ .spAttackEV = 252,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 31,
+ .attackIV = 31,
+ .defenseIV = 31,
+ .speedIV = 31,
+ .spAttackIV = 31,
+ .spDefenseIV = 31,
+ .abilityNum = 0,
+ .personality = 0xF,
+ .nickname = _("GARDEVOIR"),
+ .friendship = 255,
+ },
+ [5] =
+ {
+ .species = SPECIES_ALAKAZAM,
+ .heldItem = ITEM_LUM_BERRY,
+ .moves = {MOVE_PSYCHIC, MOVE_RECOVER, MOVE_THUNDER_WAVE, MOVE_ATTRACT},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 6,
+ .speedEV = 252,
+ .spAttackEV = 252,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 31,
+ .attackIV = 31,
+ .defenseIV = 31,
+ .speedIV = 31,
+ .spAttackIV = 31,
+ .spDefenseIV = 31,
+ .abilityNum = 0,
+ .personality = 0xF,
+ .nickname = _("ALAKAZAM"),
+ .friendship = 255,
+ },
+ },
},
- [3] =
- {
- .species = SPECIES_GENGAR,
- .heldItem = ITEM_LUM_BERRY,
- .moves = {MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 6,
- .speedEV = 252,
- .spAttackEV = 252,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
- .abilityNum = 0,
- .personality = 0xF,
- .nickname = _("GENGAR"),
- .friendship = 255,
- },
- [4] =
- {
- .species = SPECIES_GARDEVOIR,
- .heldItem = ITEM_SALAC_BERRY,
- .moves = {MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_MAGICAL_LEAF, MOVE_DESTINY_BOND},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 6,
- .speedEV = 252,
- .spAttackEV = 252,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
- .abilityNum = 0,
- .personality = 0xF,
- .nickname = _("GARDEVOIR"),
- .friendship = 255,
- },
- [5] =
- {
- .species = SPECIES_ALAKAZAM,
- .heldItem = ITEM_LUM_BERRY,
- .moves = {MOVE_PSYCHIC, MOVE_RECOVER, MOVE_THUNDER_WAVE, MOVE_ATTRACT},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 6,
- .speedEV = 252,
- .spAttackEV = 252,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
- .abilityNum = 0,
- .personality = 0xF,
- .nickname = _("ALAKAZAM"),
- .friendship = 255,
- },
- },
},
- },
- .data = {0x31, 0x3B, 0x3B, 0x3B, 0x39, 0x39, 0x1B, 0x14, 0x15, 0x38, 0x39, 0x3A, 0x3B, 0x3B, 0x3B, 0x8, 0x31, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x2C, 0x39, 0x39, 0x3A, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x8, 0x31, 0x3B, 0x8, 0x8, 0x8, 0x8, 0x8, 0x3B, 0x8, 0x8, 0x8, 0x8, 0x8, 0x3B, 0x3B, 0x8, 0x69, 0x73, 0x8, 0x4D, 0x4D, 0x4D, 0x4D, 0xD1, 0x4D, 0x4D, 0x4D, 0x4D, 0x8, 0x69, 0x73, 0x8, 0x40, 0x3B, 0x8, 0x55, 0x55, 0x55, 0x55, 0xD1, 0x55, 0x55, 0x55, 0x55, 0x8, 0x31, 0x41, 0x8, 0x69, 0x41, 0x8, 0xC5, 0xD9, 0xD9, 0xD9, 0x9A, 0xD9, 0xD9, 0xD9, 0xC6, 0x8, 0x41, 0x73, 0x8, 0x69, 0x3B, 0x8, 0xD4, 0xDB, 0x9B, 0x73, 0x73, 0x73, 0x9B, 0xDB, 0xCC, 0x8, 0x31, 0x73, 0x8, 0x69, 0x3B, 0x8, 0xCD, 0x9B, 0x73, 0x73, 0x44, 0x73, 0x73, 0x9B, 0xD5, 0x8, 0x31, 0x73, 0x8, 0x69, 0x3B, 0x8, 0xD4, 0xDB, 0x9B, 0x73, 0x73, 0x73, 0x9B, 0xDB, 0xCC, 0x8, 0x31, 0x73, 0x8, 0x69, 0x41, 0x8, 0xD1, 0xDB, 0xDB, 0xDB, 0x9B, 0xDB, 0xDB, 0xDB, 0xDB, 0x8, 0x41, 0x73, 0x8, 0x40, 0x3B, 0x8, 0x8, 0xC7, 0xC7, 0xDB, 0xDB, 0xDB, 0xC7, 0xC7, 0x8, 0x8, 0x31, 0x41, 0x8, 0x69, 0x3B, 0x4D, 0x4D, 0x67, 0x67, 0xDB, 0xDB, 0xDB, 0x67, 0x67, 0x4D, 0x4D, 0x31, 0x73, 0x8, 0x69, 0x3B, 0x55, 0x55, 0xD7, 0xD7, 0xD1, 0xDB, 0xDB, 0xD7, 0xD7, 0x55, 0x55, 0x31, 0x73, 0x8, 0x69, 0x3B, 0x39, 0x39, 0x39, 0x39, 0x3A, 0x3B, 0x3B, 0x39, 0x39, 0x39, 0x39, 0x3A, 0x73, 0x8, 0x69, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8},
- .unk3A0 = {0x381, 0x201, 0x3EF9, 0x3EF9, 0x3EF9, 0x2009, 0x3019, 0x2009, 0x3019, 0x2009, 0x3019, 0x3019, 0x3C79, 0x1, 0x1, 0xFFFF},
- .coords = {116, 122},
- .direction = 0x23,
- .range = 0x55,
+ .display = {
+ .data = {0x31, 0x3B, 0x3B, 0x3B, 0x39, 0x39, 0x1B, 0x14, 0x15, 0x38, 0x39, 0x3A, 0x3B, 0x3B, 0x3B, 0x8, 0x31, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x2C, 0x39, 0x39, 0x3A, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x8, 0x31, 0x3B, 0x8, 0x8, 0x8, 0x8, 0x8, 0x3B, 0x8, 0x8, 0x8, 0x8, 0x8, 0x3B, 0x3B, 0x8, 0x69, 0x73, 0x8, 0x4D, 0x4D, 0x4D, 0x4D, 0xD1, 0x4D, 0x4D, 0x4D, 0x4D, 0x8, 0x69, 0x73, 0x8, 0x40, 0x3B, 0x8, 0x55, 0x55, 0x55, 0x55, 0xD1, 0x55, 0x55, 0x55, 0x55, 0x8, 0x31, 0x41, 0x8, 0x69, 0x41, 0x8, 0xC5, 0xD9, 0xD9, 0xD9, 0x9A, 0xD9, 0xD9, 0xD9, 0xC6, 0x8, 0x41, 0x73, 0x8, 0x69, 0x3B, 0x8, 0xD4, 0xDB, 0x9B, 0x73, 0x73, 0x73, 0x9B, 0xDB, 0xCC, 0x8, 0x31, 0x73, 0x8, 0x69, 0x3B, 0x8, 0xCD, 0x9B, 0x73, 0x73, 0x44, 0x73, 0x73, 0x9B, 0xD5, 0x8, 0x31, 0x73, 0x8, 0x69, 0x3B, 0x8, 0xD4, 0xDB, 0x9B, 0x73, 0x73, 0x73, 0x9B, 0xDB, 0xCC, 0x8, 0x31, 0x73, 0x8, 0x69, 0x41, 0x8, 0xD1, 0xDB, 0xDB, 0xDB, 0x9B, 0xDB, 0xDB, 0xDB, 0xDB, 0x8, 0x41, 0x73, 0x8, 0x40, 0x3B, 0x8, 0x8, 0xC7, 0xC7, 0xDB, 0xDB, 0xDB, 0xC7, 0xC7, 0x8, 0x8, 0x31, 0x41, 0x8, 0x69, 0x3B, 0x4D, 0x4D, 0x67, 0x67, 0xDB, 0xDB, 0xDB, 0x67, 0x67, 0x4D, 0x4D, 0x31, 0x73, 0x8, 0x69, 0x3B, 0x55, 0x55, 0xD7, 0xD7, 0xD1, 0xDB, 0xDB, 0xD7, 0xD7, 0x55, 0x55, 0x31, 0x73, 0x8, 0x69, 0x3B, 0x39, 0x39, 0x39, 0x39, 0x3A, 0x3B, 0x3B, 0x39, 0x39, 0x39, 0x39, 0x3A, 0x73, 0x8, 0x69, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8},
+ .unk3A0 = {0x381, 0x201, 0x3EF9, 0x3EF9, 0x3EF9, 0x2009, 0x3019, 0x2009, 0x3019, 0x2009, 0x3019, 0x3019, 0x3C79, 0x1, 0x1, 0xFFFF},
+ .coords = {116, 122},
+ .direction = 0x23,
+ .range = 0x55,
+ }
},
- [1] =
+ [1] =
{
.unk0 = 0x3B,
.unk1 = 0x3C,
.trainers =
- {
- [0] =
{
- .name = _("RODERICK"),
- .facilityClass = FACILITY_CLASS_COOLTRAINER_M,
- .unused = 0,
- .speechBefore = {EC_WORD_I, EC_WORD_CAN, EC_WORD_WIN, EC_WORD_WITHOUT, EC_WORD_A, EC_MOVE2(HELPING_HAND)},
- .speechWin = {EC_WORD_IT_S, EC_WORD_ONLY, EC_WORD_NATURAL, EC_WORD_THAT, EC_WORD_I, EC_WORD_WIN},
- .speechLose = {EC_WORD_LOSING, EC_WORD_HAS, EC_WORD_ME, EC_WORD_FEELING, EC_WORD_SMALL, EC_WORD_ELLIPSIS},
- .speechAfter = {EC_WORD_YOU, EC_WORD_HAVE, EC_WORD_A, EC_WORD_GOOD, EC_WORD_TEACHER, EC_WORD_QUES},
- .mons =
- {
- [0] =
- {
- .species = SPECIES_SWELLOW,
- .heldItem = ITEM_LEFTOVERS,
- .moves = {MOVE_AERIAL_ACE, MOVE_AGILITY, MOVE_FACADE, MOVE_ATTRACT},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 252,
- .attackEV = 252,
- .spDefenseEV = 6,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
- .abilityNum = 0,
- .personality = 0x3,
- .nickname = _("SWELLOW"),
- .friendship = 255,
- },
- [1] =
- {
- .species = SPECIES_MACHAMP,
- .heldItem = ITEM_LEFTOVERS,
- .moves = {MOVE_LOW_KICK, MOVE_ROCK_SLIDE, MOVE_FACADE, MOVE_ATTRACT},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 252,
- .attackEV = 252,
- .spDefenseEV = 6,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
- .abilityNum = 0,
- .personality = 0x3,
- .nickname = _("MACHAMP"),
- .friendship = 255,
- },
- [2] =
- {
- .species = SPECIES_URSARING,
- .heldItem = ITEM_LEFTOVERS,
- .moves = {MOVE_PROTECT, MOVE_ROCK_SLIDE, MOVE_FACADE, MOVE_ATTRACT},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 252,
- .attackEV = 252,
- .spDefenseEV = 6,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
- .abilityNum = 0,
- .personality = 0x3,
- .nickname = _("URSARING"),
- .friendship = 255,
- },
- [3] =
- {
- .species = SPECIES_KINGLER,
- .heldItem = ITEM_PERSIM_BERRY,
- .moves = {MOVE_RETURN, MOVE_PROTECT, MOVE_CRABHAMMER, MOVE_ATTRACT},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 252,
- .attackEV = 252,
- .spDefenseEV = 6,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
- .abilityNum = 0,
- .personality = 0x80,
- .nickname = _("KINGLER"),
- .friendship = 255,
- },
- [4] =
- {
- .species = SPECIES_TYRANITAR,
- .heldItem = ITEM_PERSIM_BERRY,
- .moves = {MOVE_ROCK_SLIDE, MOVE_CRUNCH, MOVE_EARTHQUAKE, MOVE_ATTRACT},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 252,
- .attackEV = 252,
- .defenseEV = 6,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
- .abilityNum = 0,
- .personality = 0x80,
- .nickname = _("TYRANITAR"),
- .friendship = 255,
+ [0] =
+ {
+ .name = _("RODERICK"),
+ .facilityClass = FACILITY_CLASS_COOLTRAINER_M,
+ .unused = 0,
+ .speechBefore = {EC_WORD_I, EC_WORD_CAN, EC_WORD_WIN, EC_WORD_WITHOUT, EC_WORD_A, EC_MOVE2(HELPING_HAND)},
+ .speechWin = {EC_WORD_IT_S, EC_WORD_ONLY, EC_WORD_NATURAL, EC_WORD_THAT, EC_WORD_I, EC_WORD_WIN},
+ .speechLose = {EC_WORD_LOSING, EC_WORD_HAS, EC_WORD_ME, EC_WORD_FEELING, EC_WORD_SMALL, EC_WORD_ELLIPSIS},
+ .speechAfter = {EC_WORD_YOU, EC_WORD_HAVE, EC_WORD_A, EC_WORD_GOOD, EC_WORD_TEACHER, EC_WORD_QUES},
+ .mons =
+ {
+ [0] =
+ {
+ .species = SPECIES_SWELLOW,
+ .heldItem = ITEM_LEFTOVERS,
+ .moves = {MOVE_AERIAL_ACE, MOVE_AGILITY, MOVE_FACADE, MOVE_ATTRACT},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 252,
+ .attackEV = 252,
+ .spDefenseEV = 6,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 31,
+ .attackIV = 31,
+ .defenseIV = 31,
+ .speedIV = 31,
+ .spAttackIV = 31,
+ .spDefenseIV = 31,
+ .abilityNum = 0,
+ .personality = 0x3,
+ .nickname = _("SWELLOW"),
+ .friendship = 255,
+ },
+ [1] =
+ {
+ .species = SPECIES_MACHAMP,
+ .heldItem = ITEM_LEFTOVERS,
+ .moves = {MOVE_LOW_KICK, MOVE_ROCK_SLIDE, MOVE_FACADE, MOVE_ATTRACT},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 252,
+ .attackEV = 252,
+ .spDefenseEV = 6,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 31,
+ .attackIV = 31,
+ .defenseIV = 31,
+ .speedIV = 31,
+ .spAttackIV = 31,
+ .spDefenseIV = 31,
+ .abilityNum = 0,
+ .personality = 0x3,
+ .nickname = _("MACHAMP"),
+ .friendship = 255,
+ },
+ [2] =
+ {
+ .species = SPECIES_URSARING,
+ .heldItem = ITEM_LEFTOVERS,
+ .moves = {MOVE_PROTECT, MOVE_ROCK_SLIDE, MOVE_FACADE, MOVE_ATTRACT},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 252,
+ .attackEV = 252,
+ .spDefenseEV = 6,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 31,
+ .attackIV = 31,
+ .defenseIV = 31,
+ .speedIV = 31,
+ .spAttackIV = 31,
+ .spDefenseIV = 31,
+ .abilityNum = 0,
+ .personality = 0x3,
+ .nickname = _("URSARING"),
+ .friendship = 255,
+ },
+ [3] =
+ {
+ .species = SPECIES_KINGLER,
+ .heldItem = ITEM_PERSIM_BERRY,
+ .moves = {MOVE_RETURN, MOVE_PROTECT, MOVE_CRABHAMMER, MOVE_ATTRACT},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 252,
+ .attackEV = 252,
+ .spDefenseEV = 6,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 31,
+ .attackIV = 31,
+ .defenseIV = 31,
+ .speedIV = 31,
+ .spAttackIV = 31,
+ .spDefenseIV = 31,
+ .abilityNum = 0,
+ .personality = 0x80,
+ .nickname = _("KINGLER"),
+ .friendship = 255,
+ },
+ [4] =
+ {
+ .species = SPECIES_TYRANITAR,
+ .heldItem = ITEM_PERSIM_BERRY,
+ .moves = {MOVE_ROCK_SLIDE, MOVE_CRUNCH, MOVE_EARTHQUAKE, MOVE_ATTRACT},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 252,
+ .attackEV = 252,
+ .defenseEV = 6,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 31,
+ .attackIV = 31,
+ .defenseIV = 31,
+ .speedIV = 31,
+ .spAttackIV = 31,
+ .spDefenseIV = 31,
+ .abilityNum = 0,
+ .personality = 0x80,
+ .nickname = _("TYRANITAR"),
+ .friendship = 255,
+ },
+ [5] =
+ {
+ .species = SPECIES_DRAGONITE,
+ .heldItem = ITEM_PERSIM_BERRY,
+ .moves = {MOVE_BODY_SLAM, MOVE_THUNDER_WAVE, MOVE_EARTHQUAKE, MOVE_ATTRACT},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 252,
+ .attackEV = 252,
+ .spDefenseEV = 6,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 31,
+ .attackIV = 31,
+ .defenseIV = 31,
+ .speedIV = 31,
+ .spAttackIV = 31,
+ .spDefenseIV = 31,
+ .abilityNum = 0,
+ .personality = 0x80,
+ .nickname = _("DRAGONITE"),
+ .friendship = 255,
+ },
+ },
+ },
+ [1] =
+ {
+ .name = _("ALICIA"),
+ .facilityClass = FACILITY_CLASS_COOLTRAINER_F,
+ .unused = 0,
+ .speechBefore = {EC_WORD_I, EC_WORD_DON_T, EC_WORD_NEED, EC_WORD_A, EC_MOVE2(HELPING_HAND), EC_WORD_EXCL},
+ .speechWin = {EC_WORD_SORRY, EC_WORD_EXCL, EC_WORD_TOO, EC_WORD_BAD, EC_WORD_FOR, EC_WORD_YOU},
+ .speechLose = {EC_WORD_WHAT, EC_WORD_AN, EC_WORD_UNBELIEVABLE, EC_MOVE2(STRUGGLE), EC_WORD_THAT_WAS, EC_WORD_EXCL},
+ .speechAfter = {EC_WORD_I, EC_WORD_CAN, EC_WORD_BE, EC_WORD_YOUR, EC_WORD_POKEMON, EC_WORD_TEACHER},
+ .mons =
+ {
+ [0] =
+ {
+ .species = SPECIES_JOLTEON,
+ .heldItem = ITEM_BRIGHT_POWDER,
+ .moves = {MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_ATTRACT, MOVE_SWAGGER},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 6,
+ .speedEV = 252,
+ .spAttackEV = 252,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 31,
+ .attackIV = 31,
+ .defenseIV = 31,
+ .speedIV = 31,
+ .spAttackIV = 31,
+ .spDefenseIV = 31,
+ .abilityNum = 0,
+ .personality = 0xA,
+ .nickname = _("JOLTEON"),
+ .friendship = 255,
+ },
+ [1] =
+ {
+ .species = SPECIES_ALAKAZAM,
+ .heldItem = ITEM_KINGS_ROCK,
+ .moves = {MOVE_PSYCHIC, MOVE_ICE_PUNCH, MOVE_ATTRACT, MOVE_SWAGGER},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 6,
+ .speedEV = 252,
+ .spAttackEV = 252,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 31,
+ .attackIV = 31,
+ .defenseIV = 31,
+ .speedIV = 31,
+ .spAttackIV = 31,
+ .spDefenseIV = 31,
+ .abilityNum = 0,
+ .personality = 0xA,
+ .nickname = _("ALAKAZAM"),
+ .friendship = 255,
+ },
+ [2] =
+ {
+ .species = SPECIES_STARMIE,
+ .heldItem = ITEM_SCOPE_LENS,
+ .moves = {MOVE_SURF, MOVE_PSYCHIC, MOVE_CONFUSE_RAY, MOVE_SWAGGER},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 6,
+ .speedEV = 252,
+ .spAttackEV = 252,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 31,
+ .attackIV = 31,
+ .defenseIV = 31,
+ .speedIV = 31,
+ .spAttackIV = 31,
+ .spDefenseIV = 31,
+ .abilityNum = 1,
+ .personality = 0xA,
+ .nickname = _("STARMIE"),
+ .friendship = 255,
+ },
+ [3] =
+ {
+ .species = SPECIES_DUSCLOPS,
+ .heldItem = ITEM_LEFTOVERS,
+ .moves = {MOVE_PURSUIT, MOVE_PROTECT, MOVE_ATTRACT, MOVE_WILL_O_WISP},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 252,
+ .defenseEV = 252,
+ .spDefenseEV = 6,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 31,
+ .attackIV = 31,
+ .defenseIV = 31,
+ .speedIV = 31,
+ .spAttackIV = 31,
+ .spDefenseIV = 31,
+ .abilityNum = 0,
+ .personality = 0x82,
+ .nickname = _("DUSCLOPS"),
+ .friendship = 255,
+ },
+ [4] =
+ {
+ .species = SPECIES_NINETALES,
+ .heldItem = ITEM_WHITE_HERB,
+ .moves = {MOVE_OVERHEAT, MOVE_CONFUSE_RAY, MOVE_WILL_O_WISP, MOVE_ATTRACT},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 6,
+ .speedEV = 252,
+ .spAttackEV = 252,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 31,
+ .attackIV = 31,
+ .defenseIV = 31,
+ .speedIV = 31,
+ .spAttackIV = 31,
+ .spDefenseIV = 31,
+ .abilityNum = 0,
+ .personality = 0xD2,
+ .nickname = _("NINETALES"),
+ .friendship = 255,
+ },
+ [5] =
+ {
+ .species = SPECIES_BANETTE,
+ .heldItem = ITEM_FOCUS_BAND,
+ .moves = {MOVE_SHADOW_BALL, MOVE_FAINT_ATTACK, MOVE_ATTRACT, MOVE_WILL_O_WISP},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 252,
+ .defenseEV = 252,
+ .spDefenseEV = 6,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 31,
+ .attackIV = 31,
+ .defenseIV = 31,
+ .speedIV = 31,
+ .spAttackIV = 31,
+ .spDefenseIV = 31,
+ .abilityNum = 0,
+ .personality = 0x85,
+ .nickname = _("BANETTE"),
+ .friendship = 255,
+ },
+ },
},
- [5] =
- {
- .species = SPECIES_DRAGONITE,
- .heldItem = ITEM_PERSIM_BERRY,
- .moves = {MOVE_BODY_SLAM, MOVE_THUNDER_WAVE, MOVE_EARTHQUAKE, MOVE_ATTRACT},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 252,
- .attackEV = 252,
- .spDefenseEV = 6,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
- .abilityNum = 0,
- .personality = 0x80,
- .nickname = _("DRAGONITE"),
- .friendship = 255,
- },
- },
},
- [1] =
- {
- .name = _("ALICIA"),
- .facilityClass = FACILITY_CLASS_COOLTRAINER_F,
- .unused = 0,
- .speechBefore = {EC_WORD_I, EC_WORD_DON_T, EC_WORD_NEED, EC_WORD_A, EC_MOVE2(HELPING_HAND), EC_WORD_EXCL},
- .speechWin = {EC_WORD_SORRY, EC_WORD_EXCL, EC_WORD_TOO, EC_WORD_BAD, EC_WORD_FOR, EC_WORD_YOU},
- .speechLose = {EC_WORD_WHAT, EC_WORD_AN, EC_WORD_UNBELIEVABLE, EC_MOVE2(STRUGGLE), EC_WORD_THAT_WAS, EC_WORD_EXCL},
- .speechAfter = {EC_WORD_I, EC_WORD_CAN, EC_WORD_BE, EC_WORD_YOUR, EC_WORD_POKEMON, EC_WORD_TEACHER},
- .mons =
- {
- [0] =
- {
- .species = SPECIES_JOLTEON,
- .heldItem = ITEM_BRIGHT_POWDER,
- .moves = {MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_ATTRACT, MOVE_SWAGGER},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 6,
- .speedEV = 252,
- .spAttackEV = 252,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
- .abilityNum = 0,
- .personality = 0xA,
- .nickname = _("JOLTEON"),
- .friendship = 255,
- },
- [1] =
- {
- .species = SPECIES_ALAKAZAM,
- .heldItem = ITEM_KINGS_ROCK,
- .moves = {MOVE_PSYCHIC, MOVE_ICE_PUNCH, MOVE_ATTRACT, MOVE_SWAGGER},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 6,
- .speedEV = 252,
- .spAttackEV = 252,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
- .abilityNum = 0,
- .personality = 0xA,
- .nickname = _("ALAKAZAM"),
- .friendship = 255,
- },
- [2] =
- {
- .species = SPECIES_STARMIE,
- .heldItem = ITEM_SCOPE_LENS,
- .moves = {MOVE_SURF, MOVE_PSYCHIC, MOVE_CONFUSE_RAY, MOVE_SWAGGER},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 6,
- .speedEV = 252,
- .spAttackEV = 252,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
- .abilityNum = 1,
- .personality = 0xA,
- .nickname = _("STARMIE"),
- .friendship = 255,
- },
- [3] =
- {
- .species = SPECIES_DUSCLOPS,
- .heldItem = ITEM_LEFTOVERS,
- .moves = {MOVE_PURSUIT, MOVE_PROTECT, MOVE_ATTRACT, MOVE_WILL_O_WISP},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 252,
- .defenseEV = 252,
- .spDefenseEV = 6,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
- .abilityNum = 0,
- .personality = 0x82,
- .nickname = _("DUSCLOPS"),
- .friendship = 255,
- },
- [4] =
- {
- .species = SPECIES_NINETALES,
- .heldItem = ITEM_WHITE_HERB,
- .moves = {MOVE_OVERHEAT, MOVE_CONFUSE_RAY, MOVE_WILL_O_WISP, MOVE_ATTRACT},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 6,
- .speedEV = 252,
- .spAttackEV = 252,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
- .abilityNum = 0,
- .personality = 0xD2,
- .nickname = _("NINETALES"),
- .friendship = 255,
- },
- [5] =
- {
- .species = SPECIES_BANETTE,
- .heldItem = ITEM_FOCUS_BAND,
- .moves = {MOVE_SHADOW_BALL, MOVE_FAINT_ATTACK, MOVE_ATTRACT, MOVE_WILL_O_WISP},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 252,
- .defenseEV = 252,
- .spDefenseEV = 6,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
- .abilityNum = 0,
- .personality = 0x85,
- .nickname = _("BANETTE"),
- .friendship = 255,
- },
- },
- },
- },
- .data = {0x31, 0x3B, 0x3B, 0x3B, 0x39, 0x39, 0x13, 0x14, 0x15, 0x38, 0x39, 0x3A, 0x3B, 0x3B, 0x3B, 0x8, 0x91, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x78, 0x8, 0x91, 0x46, 0x9B, 0x7C, 0x9B, 0x9B, 0x9B, 0x7D, 0x9B, 0x7C, 0x9B, 0x7B, 0x9B, 0x7A, 0x9B, 0x8, 0x91, 0x46, 0x7D, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x8, 0x91, 0x46, 0x9B, 0x7E, 0x9B, 0x9B, 0x9B, 0x7D, 0x9B, 0x7E, 0x9B, 0xB3, 0x9B, 0x9B, 0x9B, 0x8, 0x91, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x9B, 0x8, 0x91, 0x46, 0x9B, 0x7D, 0x9B, 0x7C, 0x9B, 0x7B, 0x9B, 0x7A, 0x9B, 0x7C, 0x9B, 0x9B, 0x9B, 0x8, 0x91, 0x46, 0x9B, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x8, 0x91, 0x46, 0x9B, 0x7C, 0x9B, 0x7D, 0x9B, 0x7E, 0x9B, 0x9B, 0x9B, 0x7D, 0x9B, 0x7E, 0x9B, 0x8, 0x91, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0xB3, 0x8, 0x91, 0xD6, 0x96, 0x9B, 0x9B, 0x96, 0xD6, 0xDB, 0xD6, 0x96, 0x9B, 0x9B, 0x96, 0xD6, 0x9B, 0x8, 0xD6, 0x96, 0x9B, 0x9B, 0x96, 0xD6, 0xDB, 0xDB, 0xDB, 0xD6, 0x96, 0x9B, 0x9B, 0x96, 0xD6, 0x8, 0x96, 0x9B, 0x9B, 0x96, 0xD6, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xD6, 0x96, 0x9B, 0x9B, 0x96, 0x8, 0xD6, 0x96, 0x9B, 0x9B, 0x96, 0xD6, 0xDB, 0xDB, 0xDB, 0xD6, 0x96, 0x9B, 0x9B, 0x96, 0xD6, 0x8, 0x91, 0xD6, 0x96, 0x9B, 0x9B, 0x96, 0xD6, 0xDB, 0xD6, 0x96, 0x9B, 0x9B, 0x96, 0xD6, 0x9B, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8},
- .unk3A0 = {0x381, 0x7FFD, 0x4001, 0x5FFF, 0x4001, 0x7FFD, 0x4001, 0x5FFF, 0x4001, 0x7FFD, 0x1, 0x1, 0x1, 0x1, 0x1, 0xFFFF},
- .coords = {167, 231},
- .direction = 0x1,
- .range = 0x33,
+ .display = {
+ .data = {0x31, 0x3B, 0x3B, 0x3B, 0x39, 0x39, 0x13, 0x14, 0x15, 0x38, 0x39, 0x3A, 0x3B, 0x3B, 0x3B, 0x8, 0x91, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x78, 0x8, 0x91, 0x46, 0x9B, 0x7C, 0x9B, 0x9B, 0x9B, 0x7D, 0x9B, 0x7C, 0x9B, 0x7B, 0x9B, 0x7A, 0x9B, 0x8, 0x91, 0x46, 0x7D, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x8, 0x91, 0x46, 0x9B, 0x7E, 0x9B, 0x9B, 0x9B, 0x7D, 0x9B, 0x7E, 0x9B, 0xB3, 0x9B, 0x9B, 0x9B, 0x8, 0x91, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x9B, 0x8, 0x91, 0x46, 0x9B, 0x7D, 0x9B, 0x7C, 0x9B, 0x7B, 0x9B, 0x7A, 0x9B, 0x7C, 0x9B, 0x9B, 0x9B, 0x8, 0x91, 0x46, 0x9B, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x8, 0x91, 0x46, 0x9B, 0x7C, 0x9B, 0x7D, 0x9B, 0x7E, 0x9B, 0x9B, 0x9B, 0x7D, 0x9B, 0x7E, 0x9B, 0x8, 0x91, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0xB3, 0x8, 0x91, 0xD6, 0x96, 0x9B, 0x9B, 0x96, 0xD6, 0xDB, 0xD6, 0x96, 0x9B, 0x9B, 0x96, 0xD6, 0x9B, 0x8, 0xD6, 0x96, 0x9B, 0x9B, 0x96, 0xD6, 0xDB, 0xDB, 0xDB, 0xD6, 0x96, 0x9B, 0x9B, 0x96, 0xD6, 0x8, 0x96, 0x9B, 0x9B, 0x96, 0xD6, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xD6, 0x96, 0x9B, 0x9B, 0x96, 0x8, 0xD6, 0x96, 0x9B, 0x9B, 0x96, 0xD6, 0xDB, 0xDB, 0xDB, 0xD6, 0x96, 0x9B, 0x9B, 0x96, 0xD6, 0x8, 0x91, 0xD6, 0x96, 0x9B, 0x9B, 0x96, 0xD6, 0xDB, 0xD6, 0x96, 0x9B, 0x9B, 0x96, 0xD6, 0x9B, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8},
+ .unk3A0 = {0x381, 0x7FFD, 0x4001, 0x5FFF, 0x4001, 0x7FFD, 0x4001, 0x5FFF, 0x4001, 0x7FFD, 0x1, 0x1, 0x1, 0x1, 0x1, 0xFFFF},
+ .coords = {167, 231},
+ .direction = 0x1,
+ .range = 0x33,
+ }
},
- [2] =
+ [2] =
{
.unk0 = 0x3D,
.unk1 = 0x3E,
.trainers =
- {
- [0] =
{
- .name = _("TERRENCE"),
- .facilityClass = FACILITY_CLASS_EXPERT_M,
- .unused = 0,
- .speechBefore = {EC_WORD_OH_DEAR, EC_WORD_THIS, EC_WORD_MATCH, EC_WORD_IS, EC_WORD_FOR, EC_WORD_YOU},
- .speechWin = {EC_WORD_OH_DEAR, EC_WORD_DID, EC_WORD_YOU, EC_WORD_SEE, EC_WORD_THAT, EC_WORD_QUES},
- .speechLose = {EC_WORD_OH_DEAR, EC_WORD_I_AM, EC_WORD_SO, EC_WORD_SORRY, 0xFFFF, 0xFFFF},
- .speechAfter = {EC_WORD_IS, EC_WORD_YOUR, EC_WORD_GRANDMOTHER, EC_WORD_STRONG, EC_WORD_QUES, 0xFFFF},
- .mons =
- {
- [0] =
- {
- .species = SPECIES_WOBBUFFET,
- .heldItem = ITEM_LEFTOVERS,
- .moves = {MOVE_MIRROR_COAT, MOVE_COUNTER, MOVE_SAFEGUARD, MOVE_ENCORE},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 250,
- .defenseEV = 130,
- .spDefenseEV = 130,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
- .abilityNum = 0,
- .personality = 0x94,
- .nickname = _("WOBBUFFET"),
- .friendship = 255,
- },
- [1] =
- {
- .species = SPECIES_EXPLOUD,
- .heldItem = ITEM_CHESTO_BERRY,
- .moves = {MOVE_HYPER_VOICE, MOVE_COUNTER, MOVE_REST, MOVE_ROCK_SLIDE},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 250,
- .defenseEV = 130,
- .spDefenseEV = 130,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
- .abilityNum = 0,
- .personality = 0x85,
- .nickname = _("EXPLOUD"),
- .friendship = 0,
- },
- [2] =
- {
- .species = SPECIES_CROBAT,
- .heldItem = ITEM_KINGS_ROCK,
- .moves = {MOVE_MEAN_LOOK, MOVE_CONFUSE_RAY, MOVE_AERIAL_ACE, MOVE_TOXIC},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 250,
- .defenseEV = 130,
- .spDefenseEV = 130,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
- .abilityNum = 0,
- .personality = 0x0,
- .nickname = _("CROBAT"),
- .friendship = 255,
- },
- [3] =
- {
- .species = SPECIES_DUGTRIO,
- .heldItem = ITEM_BRIGHT_POWDER,
- .moves = {MOVE_DOUBLE_TEAM, MOVE_PROTECT, MOVE_RETURN, MOVE_SLUDGE_BOMB},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 6,
- .attackEV = 252,
- .speedEV = 252,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
- .abilityNum = 1,
- .personality = 0xD,
- .nickname = _("DUGTRIO"),
- .friendship = 255,
- },
- [4] =
- {
- .species = SPECIES_ELECTRODE,
- .heldItem = ITEM_PETAYA_BERRY,
- .moves = {MOVE_TORMENT, MOVE_MIRROR_COAT, MOVE_THUNDERBOLT, MOVE_LIGHT_SCREEN},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 252,
- .defenseEV = 252,
- .spAttackEV = 6,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
- .abilityNum = 0,
- .personality = 0x5,
- .nickname = _("ELECTRODE"),
- .friendship = 0,
- },
- [5] =
- {
- .species = SPECIES_GENGAR,
- .heldItem = ITEM_FOCUS_BAND,
- .moves = {MOVE_CONFUSE_RAY, MOVE_MEAN_LOOK, MOVE_GIGA_DRAIN, MOVE_WILL_O_WISP},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 252,
- .speedEV = 252,
- .spDefenseEV = 6,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
- .abilityNum = 0,
- .personality = 0x14,
- .nickname = _("GENGAR"),
- .friendship = 255,
+ [0] =
+ {
+ .name = _("TERRENCE"),
+ .facilityClass = FACILITY_CLASS_EXPERT_M,
+ .unused = 0,
+ .speechBefore = {EC_WORD_OH_DEAR, EC_WORD_THIS, EC_WORD_MATCH, EC_WORD_IS, EC_WORD_FOR, EC_WORD_YOU},
+ .speechWin = {EC_WORD_OH_DEAR, EC_WORD_DID, EC_WORD_YOU, EC_WORD_SEE, EC_WORD_THAT, EC_WORD_QUES},
+ .speechLose = {EC_WORD_OH_DEAR, EC_WORD_I_AM, EC_WORD_SO, EC_WORD_SORRY, 0xFFFF, 0xFFFF},
+ .speechAfter = {EC_WORD_IS, EC_WORD_YOUR, EC_WORD_GRANDMOTHER, EC_WORD_STRONG, EC_WORD_QUES, 0xFFFF},
+ .mons =
+ {
+ [0] =
+ {
+ .species = SPECIES_WOBBUFFET,
+ .heldItem = ITEM_LEFTOVERS,
+ .moves = {MOVE_MIRROR_COAT, MOVE_COUNTER, MOVE_SAFEGUARD, MOVE_ENCORE},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 250,
+ .defenseEV = 130,
+ .spDefenseEV = 130,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 31,
+ .attackIV = 31,
+ .defenseIV = 31,
+ .speedIV = 31,
+ .spAttackIV = 31,
+ .spDefenseIV = 31,
+ .abilityNum = 0,
+ .personality = 0x94,
+ .nickname = _("WOBBUFFET"),
+ .friendship = 255,
+ },
+ [1] =
+ {
+ .species = SPECIES_EXPLOUD,
+ .heldItem = ITEM_CHESTO_BERRY,
+ .moves = {MOVE_HYPER_VOICE, MOVE_COUNTER, MOVE_REST, MOVE_ROCK_SLIDE},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 250,
+ .defenseEV = 130,
+ .spDefenseEV = 130,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 31,
+ .attackIV = 31,
+ .defenseIV = 31,
+ .speedIV = 31,
+ .spAttackIV = 31,
+ .spDefenseIV = 31,
+ .abilityNum = 0,
+ .personality = 0x85,
+ .nickname = _("EXPLOUD"),
+ .friendship = 0,
+ },
+ [2] =
+ {
+ .species = SPECIES_CROBAT,
+ .heldItem = ITEM_KINGS_ROCK,
+ .moves = {MOVE_MEAN_LOOK, MOVE_CONFUSE_RAY, MOVE_AERIAL_ACE, MOVE_TOXIC},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 250,
+ .defenseEV = 130,
+ .spDefenseEV = 130,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 31,
+ .attackIV = 31,
+ .defenseIV = 31,
+ .speedIV = 31,
+ .spAttackIV = 31,
+ .spDefenseIV = 31,
+ .abilityNum = 0,
+ .personality = 0x0,
+ .nickname = _("CROBAT"),
+ .friendship = 255,
+ },
+ [3] =
+ {
+ .species = SPECIES_DUGTRIO,
+ .heldItem = ITEM_BRIGHT_POWDER,
+ .moves = {MOVE_DOUBLE_TEAM, MOVE_PROTECT, MOVE_RETURN, MOVE_SLUDGE_BOMB},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 6,
+ .attackEV = 252,
+ .speedEV = 252,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 31,
+ .attackIV = 31,
+ .defenseIV = 31,
+ .speedIV = 31,
+ .spAttackIV = 31,
+ .spDefenseIV = 31,
+ .abilityNum = 1,
+ .personality = 0xD,
+ .nickname = _("DUGTRIO"),
+ .friendship = 255,
+ },
+ [4] =
+ {
+ .species = SPECIES_ELECTRODE,
+ .heldItem = ITEM_PETAYA_BERRY,
+ .moves = {MOVE_TORMENT, MOVE_MIRROR_COAT, MOVE_THUNDERBOLT, MOVE_LIGHT_SCREEN},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 252,
+ .defenseEV = 252,
+ .spAttackEV = 6,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 31,
+ .attackIV = 31,
+ .defenseIV = 31,
+ .speedIV = 31,
+ .spAttackIV = 31,
+ .spDefenseIV = 31,
+ .abilityNum = 0,
+ .personality = 0x5,
+ .nickname = _("ELECTRODE"),
+ .friendship = 0,
+ },
+ [5] =
+ {
+ .species = SPECIES_GENGAR,
+ .heldItem = ITEM_FOCUS_BAND,
+ .moves = {MOVE_CONFUSE_RAY, MOVE_MEAN_LOOK, MOVE_GIGA_DRAIN, MOVE_WILL_O_WISP},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 252,
+ .speedEV = 252,
+ .spDefenseEV = 6,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 31,
+ .attackIV = 31,
+ .defenseIV = 31,
+ .speedIV = 31,
+ .spAttackIV = 31,
+ .spDefenseIV = 31,
+ .abilityNum = 0,
+ .personality = 0x14,
+ .nickname = _("GENGAR"),
+ .friendship = 255,
+ },
+ },
+ },
+ [1] =
+ {
+ .name = _("CARLOTTA"),
+ .facilityClass = FACILITY_CLASS_EXPERT_F,
+ .unused = 0,
+ .speechBefore = {EC_WORD_OH_DEAR, EC_WORD_I, EC_WORD_WILL, EC_WORD_WIN, EC_WORD_FOR, EC_WORD_YOU},
+ .speechWin = {EC_WORD_OH_DEAR, EC_WORD_WE, EC_WORD_HAVE, EC_WORD_A, EC_WORD_PARTY, EC_WORD_LATER},
+ .speechLose = {EC_WORD_OH_DEAR, EC_WORD_I_AM, EC_WORD_SORRY, EC_WORD_TO, EC_WORD_DISAPPOINT, EC_WORD_YOU},
+ .speechAfter = {EC_WORD_IS, EC_WORD_YOUR, EC_WORD_GRANDFATHER, EC_WORD_COOL, EC_WORD_QUES, 0xFFFF},
+ .mons =
+ {
+ [0] =
+ {
+ .species = SPECIES_LAPRAS,
+ .heldItem = ITEM_QUICK_CLAW,
+ .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_PERISH_SONG, MOVE_SING},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 250,
+ .defenseEV = 130,
+ .spDefenseEV = 130,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 31,
+ .attackIV = 31,
+ .defenseIV = 31,
+ .speedIV = 31,
+ .spAttackIV = 31,
+ .spDefenseIV = 31,
+ .abilityNum = 0,
+ .personality = 0x82,
+ .nickname = _("LAPRAS"),
+ .friendship = 0,
+ },
+ [1] =
+ {
+ .species = SPECIES_ABSOL,
+ .heldItem = ITEM_FOCUS_BAND,
+ .moves = {MOVE_PERISH_SONG, MOVE_DOUBLE_EDGE, MOVE_PROTECT, MOVE_TORMENT},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 252,
+ .defenseEV = 6,
+ .speedEV = 252,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 31,
+ .attackIV = 31,
+ .defenseIV = 31,
+ .speedIV = 31,
+ .spAttackIV = 31,
+ .spDefenseIV = 31,
+ .abilityNum = 0,
+ .personality = 0x8A,
+ .nickname = _("ABSOL"),
+ .friendship = 0,
+ },
+ [2] =
+ {
+ .species = SPECIES_ALTARIA,
+ .heldItem = ITEM_KINGS_ROCK,
+ .moves = {MOVE_PERISH_SONG, MOVE_PROTECT, MOVE_DRAGON_CLAW, MOVE_FIRE_BLAST},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 252,
+ .spAttackEV = 6,
+ .spDefenseEV = 252,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 31,
+ .attackIV = 31,
+ .defenseIV = 31,
+ .speedIV = 31,
+ .spAttackIV = 31,
+ .spDefenseIV = 31,
+ .abilityNum = 0,
+ .personality = 0x0,
+ .nickname = _("ALTARIA"),
+ .friendship = 0,
+ },
+ [3] =
+ {
+ .species = SPECIES_DEWGONG,
+ .heldItem = ITEM_CHESTO_BERRY,
+ .moves = {MOVE_ICE_BEAM, MOVE_SIGNAL_BEAM, MOVE_REST, MOVE_PERISH_SONG},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 252,
+ .speedEV = 252,
+ .spAttackEV = 6,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 31,
+ .attackIV = 31,
+ .defenseIV = 31,
+ .speedIV = 31,
+ .spAttackIV = 31,
+ .spDefenseIV = 31,
+ .abilityNum = 0,
+ .personality = 0x14,
+ .nickname = _("DEWGONG"),
+ .friendship = 0,
+ },
+ [4] =
+ {
+ .species = SPECIES_POLITOED,
+ .heldItem = ITEM_BRIGHT_POWDER,
+ .moves = {MOVE_HYDRO_PUMP, MOVE_BLIZZARD, MOVE_MIND_READER, MOVE_PERISH_SONG},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 252,
+ .spAttackEV = 6,
+ .spDefenseEV = 252,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 31,
+ .attackIV = 31,
+ .defenseIV = 31,
+ .speedIV = 31,
+ .spAttackIV = 31,
+ .spDefenseIV = 31,
+ .abilityNum = 1,
+ .personality = 0x14,
+ .nickname = _("POLITOED"),
+ .friendship = 0,
+ },
+ [5] =
+ {
+ .species = SPECIES_MAROWAK,
+ .heldItem = ITEM_QUICK_CLAW,
+ .moves = {MOVE_PERISH_SONG, MOVE_EARTHQUAKE, MOVE_COUNTER, MOVE_PROTECT},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 252,
+ .speedEV = 6,
+ .spDefenseEV = 252,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 31,
+ .attackIV = 31,
+ .defenseIV = 31,
+ .speedIV = 31,
+ .spAttackIV = 31,
+ .spDefenseIV = 31,
+ .abilityNum = 1,
+ .personality = 0x17,
+ .nickname = _("MAROWAK"),
+ .friendship = 0,
+ },
+ },
},
- },
},
- [1] =
- {
- .name = _("CARLOTTA"),
- .facilityClass = FACILITY_CLASS_EXPERT_F,
- .unused = 0,
- .speechBefore = {EC_WORD_OH_DEAR, EC_WORD_I, EC_WORD_WILL, EC_WORD_WIN, EC_WORD_FOR, EC_WORD_YOU},
- .speechWin = {EC_WORD_OH_DEAR, EC_WORD_WE, EC_WORD_HAVE, EC_WORD_A, EC_WORD_PARTY, EC_WORD_LATER},
- .speechLose = {EC_WORD_OH_DEAR, EC_WORD_I_AM, EC_WORD_SORRY, EC_WORD_TO, EC_WORD_DISAPPOINT, EC_WORD_YOU},
- .speechAfter = {EC_WORD_IS, EC_WORD_YOUR, EC_WORD_GRANDFATHER, EC_WORD_COOL, EC_WORD_QUES, 0xFFFF},
- .mons =
- {
- [0] =
- {
- .species = SPECIES_LAPRAS,
- .heldItem = ITEM_QUICK_CLAW,
- .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_PERISH_SONG, MOVE_SING},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 250,
- .defenseEV = 130,
- .spDefenseEV = 130,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
- .abilityNum = 0,
- .personality = 0x82,
- .nickname = _("LAPRAS"),
- .friendship = 0,
- },
- [1] =
- {
- .species = SPECIES_ABSOL,
- .heldItem = ITEM_FOCUS_BAND,
- .moves = {MOVE_PERISH_SONG, MOVE_DOUBLE_EDGE, MOVE_PROTECT, MOVE_TORMENT},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 252,
- .defenseEV = 6,
- .speedEV = 252,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
- .abilityNum = 0,
- .personality = 0x8A,
- .nickname = _("ABSOL"),
- .friendship = 0,
- },
- [2] =
- {
- .species = SPECIES_ALTARIA,
- .heldItem = ITEM_KINGS_ROCK,
- .moves = {MOVE_PERISH_SONG, MOVE_PROTECT, MOVE_DRAGON_CLAW, MOVE_FIRE_BLAST},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 252,
- .spAttackEV = 6,
- .spDefenseEV = 252,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
- .abilityNum = 0,
- .personality = 0x0,
- .nickname = _("ALTARIA"),
- .friendship = 0,
- },
- [3] =
- {
- .species = SPECIES_DEWGONG,
- .heldItem = ITEM_CHESTO_BERRY,
- .moves = {MOVE_ICE_BEAM, MOVE_SIGNAL_BEAM, MOVE_REST, MOVE_PERISH_SONG},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 252,
- .speedEV = 252,
- .spAttackEV = 6,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
- .abilityNum = 0,
- .personality = 0x14,
- .nickname = _("DEWGONG"),
- .friendship = 0,
- },
- [4] =
- {
- .species = SPECIES_POLITOED,
- .heldItem = ITEM_BRIGHT_POWDER,
- .moves = {MOVE_HYDRO_PUMP, MOVE_BLIZZARD, MOVE_MIND_READER, MOVE_PERISH_SONG},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 252,
- .spAttackEV = 6,
- .spDefenseEV = 252,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
- .abilityNum = 1,
- .personality = 0x14,
- .nickname = _("POLITOED"),
- .friendship = 0,
- },
- [5] =
- {
- .species = SPECIES_MAROWAK,
- .heldItem = ITEM_QUICK_CLAW,
- .moves = {MOVE_PERISH_SONG, MOVE_EARTHQUAKE, MOVE_COUNTER, MOVE_PROTECT},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 252,
- .speedEV = 6,
- .spDefenseEV = 252,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
- .abilityNum = 1,
- .personality = 0x17,
- .nickname = _("MAROWAK"),
- .friendship = 0,
- },
- },
- },
- },
- .data = {0xD1, 0xDB, 0xDB, 0xDB, 0xD9, 0xD9, 0x1B, 0x14, 0x15, 0x98, 0x99, 0x9A, 0x9B, 0x9B, 0x9B, 0x8, 0xD1, 0xDB, 0xDB, 0xDB, 0xD5, 0xD5, 0xC3, 0xF9, 0x86, 0x8E, 0x95, 0x9B, 0x9B, 0x9B, 0x9B, 0x8, 0xD1, 0xDB, 0xDB, 0xD5, 0xCB, 0xCB, 0xCB, 0xFB, 0x8B, 0x8B, 0x8B, 0x95, 0x9B, 0x9B, 0x9B, 0x8, 0xD1, 0xDB, 0xD5, 0xCB, 0xCB, 0xCB, 0xCB, 0xFB, 0x8B, 0x8B, 0x8B, 0x8B, 0x95, 0x9B, 0x9B, 0x8, 0xD1, 0xDB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xFB, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x9B, 0x9B, 0x8, 0xD1, 0xD5, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xFB, 0x8C, 0x8B, 0x8B, 0x8B, 0x8B, 0x95, 0x9B, 0x8, 0xD1, 0xCB, 0xCB, 0xCB, 0xCB, 0xCC, 0xCC, 0xFB, 0xFB, 0x8C, 0x8B, 0x8B, 0x8B, 0x8B, 0x9B, 0x8, 0xD1, 0xCC, 0xCC, 0xCC, 0xCC, 0xFB, 0xF5, 0xFB, 0xF5, 0xFB, 0x8B, 0x8B, 0x8B, 0x8B, 0x9B, 0x8, 0xD1, 0xD5, 0xD5, 0xD5, 0xD5, 0xFB, 0xEC, 0xFB, 0xEC, 0xFB, 0x8B, 0x8B, 0x8B, 0x8B, 0x9B, 0x8, 0xD1, 0xCB, 0xCB, 0xCB, 0xCB, 0xF5, 0xF5, 0xFB, 0xFB, 0xF5, 0x8B, 0x8B, 0x8B, 0x8B, 0x9B, 0x8, 0xD1, 0xCC, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xFB, 0xFB, 0x8B, 0x8B, 0x8B, 0x8B, 0x8C, 0x9B, 0x8, 0xD1, 0xDB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xFB, 0xF5, 0x8B, 0x8B, 0x8B, 0x8B, 0x9B, 0x9B, 0x8, 0xD1, 0xDB, 0xCC, 0xCB, 0xCB, 0xCB, 0xCB, 0xFB, 0x8B, 0x8B, 0x8B, 0x8B, 0x8C, 0x9B, 0x9B, 0x8, 0xD1, 0xDB, 0xDB, 0xCC, 0xCB, 0xCB, 0xCB, 0xFB, 0x8B, 0x8B, 0x8B, 0x8C, 0x9B, 0x9B, 0x9B, 0x8, 0xD1, 0xDB, 0xDB, 0xDB, 0xCC, 0xCC, 0xCB, 0xFB, 0x8C, 0x8C, 0x8C, 0x9B, 0x9B, 0x9B, 0x9B, 0x8, 0xD1, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xCC, 0xFB, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x8},
- .unk3A0 = {0x381, 0x201, 0xEE1, 0x1EF1, 0x3EF9, 0x3EF9, 0x7E7D, 0x783D, 0x2BD, 0x783D, 0x7E7D, 0x3E79, 0x3EF9, 0x1EF1, 0xEE1, 0x201},
- .coords = {103, 167},
- .direction = 0x1,
- .range = 0x33,
+ .display = {
+ .data = {0xD1, 0xDB, 0xDB, 0xDB, 0xD9, 0xD9, 0x1B, 0x14, 0x15, 0x98, 0x99, 0x9A, 0x9B, 0x9B, 0x9B, 0x8, 0xD1, 0xDB, 0xDB, 0xDB, 0xD5, 0xD5, 0xC3, 0xF9, 0x86, 0x8E, 0x95, 0x9B, 0x9B, 0x9B, 0x9B, 0x8, 0xD1, 0xDB, 0xDB, 0xD5, 0xCB, 0xCB, 0xCB, 0xFB, 0x8B, 0x8B, 0x8B, 0x95, 0x9B, 0x9B, 0x9B, 0x8, 0xD1, 0xDB, 0xD5, 0xCB, 0xCB, 0xCB, 0xCB, 0xFB, 0x8B, 0x8B, 0x8B, 0x8B, 0x95, 0x9B, 0x9B, 0x8, 0xD1, 0xDB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xFB, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x9B, 0x9B, 0x8, 0xD1, 0xD5, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xFB, 0x8C, 0x8B, 0x8B, 0x8B, 0x8B, 0x95, 0x9B, 0x8, 0xD1, 0xCB, 0xCB, 0xCB, 0xCB, 0xCC, 0xCC, 0xFB, 0xFB, 0x8C, 0x8B, 0x8B, 0x8B, 0x8B, 0x9B, 0x8, 0xD1, 0xCC, 0xCC, 0xCC, 0xCC, 0xFB, 0xF5, 0xFB, 0xF5, 0xFB, 0x8B, 0x8B, 0x8B, 0x8B, 0x9B, 0x8, 0xD1, 0xD5, 0xD5, 0xD5, 0xD5, 0xFB, 0xEC, 0xFB, 0xEC, 0xFB, 0x8B, 0x8B, 0x8B, 0x8B, 0x9B, 0x8, 0xD1, 0xCB, 0xCB, 0xCB, 0xCB, 0xF5, 0xF5, 0xFB, 0xFB, 0xF5, 0x8B, 0x8B, 0x8B, 0x8B, 0x9B, 0x8, 0xD1, 0xCC, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xFB, 0xFB, 0x8B, 0x8B, 0x8B, 0x8B, 0x8C, 0x9B, 0x8, 0xD1, 0xDB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xFB, 0xF5, 0x8B, 0x8B, 0x8B, 0x8B, 0x9B, 0x9B, 0x8, 0xD1, 0xDB, 0xCC, 0xCB, 0xCB, 0xCB, 0xCB, 0xFB, 0x8B, 0x8B, 0x8B, 0x8B, 0x8C, 0x9B, 0x9B, 0x8, 0xD1, 0xDB, 0xDB, 0xCC, 0xCB, 0xCB, 0xCB, 0xFB, 0x8B, 0x8B, 0x8B, 0x8C, 0x9B, 0x9B, 0x9B, 0x8, 0xD1, 0xDB, 0xDB, 0xDB, 0xCC, 0xCC, 0xCB, 0xFB, 0x8C, 0x8C, 0x8C, 0x9B, 0x9B, 0x9B, 0x9B, 0x8, 0xD1, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xCC, 0xFB, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x8},
+ .unk3A0 = {0x381, 0x201, 0xEE1, 0x1EF1, 0x3EF9, 0x3EF9, 0x7E7D, 0x783D, 0x2BD, 0x783D, 0x7E7D, 0x3E79, 0x3EF9, 0x1EF1, 0xEE1, 0x201},
+ .coords = {103, 167},
+ .direction = 0x1,
+ .range = 0x33,
+ }
},
- [3] =
+ [3] =
{
.unk0 = 0x3F,
.unk1 = 0x40,
.trainers =
- {
- [0] =
{
- .name = _("NORA"),
- .facilityClass = FACILITY_CLASS_PKMN_RANGER_F,
- .unused = 0,
- .speechBefore = {EC_WORD_WAAAH, EC_WORD_THIS, EC_WORD_IS, EC_WORD_SO, EC_WORD_EXCITING, EC_WORD_EXCL},
- .speechWin = {EC_WORD_WAAAH, EC_WORD_I_AM, EC_WORD_SO, EC_WORD_HAPPY, EC_WORD_I, EC_WORD_WON},
- .speechLose = {EC_WORD_WAAAH, EC_WORD_I_AM, EC_WORD_SO, EC_WORD_SAD, EC_WORD_I, EC_WORD_LOST},
- .speechAfter = {EC_WORD_WAAAH, EC_WORD_EXCL, 0xFFFF, EC_WORD_GO, EC_WORD_AWAY, EC_WORD_EXCL},
- .mons =
- {
- [0] =
- {
- .species = SPECIES_FORRETRESS,
- .heldItem = ITEM_QUICK_CLAW,
- .moves = {MOVE_EXPLOSION, MOVE_EARTHQUAKE, MOVE_ATTRACT, MOVE_SPIKES},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 110,
- .attackEV = 200,
- .spDefenseEV = 200,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
- .abilityNum = 0,
- .personality = 0x3,
- .nickname = _("FORRETRESS"),
- .friendship = 255,
- },
- [1] =
- {
- .species = SPECIES_ELECTRODE,
- .heldItem = ITEM_SALAC_BERRY,
- .moves = {MOVE_EXPLOSION, MOVE_THUNDERBOLT, MOVE_SWIFT, MOVE_LIGHT_SCREEN},
- .level = 0,
- .ppBonuses = 0,
- .attackEV = 255,
- .spAttackEV = 255,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
- .abilityNum = 1,
- .personality = 0xC,
- .nickname = _("ELECTRODE"),
- .friendship = 255,
+ [0] =
+ {
+ .name = _("NORA"),
+ .facilityClass = FACILITY_CLASS_PKMN_RANGER_F,
+ .unused = 0,
+ .speechBefore = {EC_WORD_WAAAH, EC_WORD_THIS, EC_WORD_IS, EC_WORD_SO, EC_WORD_EXCITING, EC_WORD_EXCL},
+ .speechWin = {EC_WORD_WAAAH, EC_WORD_I_AM, EC_WORD_SO, EC_WORD_HAPPY, EC_WORD_I, EC_WORD_WON},
+ .speechLose = {EC_WORD_WAAAH, EC_WORD_I_AM, EC_WORD_SO, EC_WORD_SAD, EC_WORD_I, EC_WORD_LOST},
+ .speechAfter = {EC_WORD_WAAAH, EC_WORD_EXCL, 0xFFFF, EC_WORD_GO, EC_WORD_AWAY, EC_WORD_EXCL},
+ .mons =
+ {
+ [0] =
+ {
+ .species = SPECIES_FORRETRESS,
+ .heldItem = ITEM_QUICK_CLAW,
+ .moves = {MOVE_EXPLOSION, MOVE_EARTHQUAKE, MOVE_ATTRACT, MOVE_SPIKES},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 110,
+ .attackEV = 200,
+ .spDefenseEV = 200,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 31,
+ .attackIV = 31,
+ .defenseIV = 31,
+ .speedIV = 31,
+ .spAttackIV = 31,
+ .spDefenseIV = 31,
+ .abilityNum = 0,
+ .personality = 0x3,
+ .nickname = _("FORRETRESS"),
+ .friendship = 255,
+ },
+ [1] =
+ {
+ .species = SPECIES_ELECTRODE,
+ .heldItem = ITEM_SALAC_BERRY,
+ .moves = {MOVE_EXPLOSION, MOVE_THUNDERBOLT, MOVE_SWIFT, MOVE_LIGHT_SCREEN},
+ .level = 0,
+ .ppBonuses = 0,
+ .attackEV = 255,
+ .spAttackEV = 255,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 31,
+ .attackIV = 31,
+ .defenseIV = 31,
+ .speedIV = 31,
+ .spAttackIV = 31,
+ .spDefenseIV = 31,
+ .abilityNum = 1,
+ .personality = 0xC,
+ .nickname = _("ELECTRODE"),
+ .friendship = 255,
+ },
+ [2] =
+ {
+ .species = SPECIES_EXEGGUTOR,
+ .heldItem = ITEM_SHELL_BELL,
+ .moves = {MOVE_EXPLOSION, MOVE_HYPNOSIS, MOVE_PSYCHIC, MOVE_SOLAR_BEAM},
+ .level = 0,
+ .ppBonuses = 0,
+ .attackEV = 255,
+ .spAttackEV = 255,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 31,
+ .attackIV = 31,
+ .defenseIV = 31,
+ .speedIV = 31,
+ .spAttackIV = 31,
+ .spDefenseIV = 31,
+ .abilityNum = 0,
+ .personality = 0x7F,
+ .nickname = _("EXEGGUTOR"),
+ .friendship = 255,
+ },
+ [3] =
+ {
+ .species = SPECIES_DUSCLOPS,
+ .heldItem = ITEM_LEFTOVERS,
+ .moves = {MOVE_IMPRISON, MOVE_PROTECT, MOVE_ICE_BEAM, MOVE_EARTHQUAKE},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 110,
+ .defenseEV = 200,
+ .spDefenseEV = 200,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 31,
+ .attackIV = 31,
+ .defenseIV = 31,
+ .speedIV = 31,
+ .spAttackIV = 31,
+ .spDefenseIV = 31,
+ .abilityNum = 0,
+ .personality = 0x93,
+ .nickname = _("DUSCLOPS"),
+ .friendship = 255,
+ },
+ [4] =
+ {
+ .species = SPECIES_NINETALES,
+ .heldItem = ITEM_WHITE_HERB,
+ .moves = {MOVE_IMPRISON, MOVE_PROTECT, MOVE_OVERHEAT, MOVE_CONFUSE_RAY},
+ .level = 0,
+ .ppBonuses = 0,
+ .speedEV = 255,
+ .spAttackEV = 255,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 31,
+ .attackIV = 31,
+ .defenseIV = 31,
+ .speedIV = 31,
+ .spAttackIV = 31,
+ .spDefenseIV = 31,
+ .abilityNum = 0,
+ .personality = 0xF,
+ .nickname = _("NINETALES"),
+ .friendship = 255,
+ },
+ [5] =
+ {
+ .species = SPECIES_BANETTE,
+ .heldItem = ITEM_BRIGHT_POWDER,
+ .moves = {MOVE_IMPRISON, MOVE_PROTECT, MOVE_THUNDERBOLT, MOVE_THUNDER},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 255,
+ .spAttackEV = 255,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 31,
+ .attackIV = 31,
+ .defenseIV = 31,
+ .speedIV = 31,
+ .spAttackIV = 31,
+ .spDefenseIV = 31,
+ .abilityNum = 0,
+ .personality = 0x96,
+ .nickname = _("BANETTE"),
+ .friendship = 255,
+ },
+ },
+ },
+ [1] =
+ {
+ .name = _("GAV"),
+ .facilityClass = FACILITY_CLASS_PKMN_RANGER_M,
+ .unused = 0,
+ .speechBefore = {EC_WORD_WAHAHAHA, EC_WORD_YOU, EC_WORD_CAN_T, EC_WORD_STOP, EC_WORD_ME, EC_WORD_EXCL},
+ .speechWin = {EC_WORD_WOWEE, EC_WORD_EXCL, 0xFFFF, EC_WORD_I_AM, EC_WORD_AWESOME, EC_WORD_COOL},
+ .speechLose = {EC_WORD_I_AM, EC_WORD_NOT, EC_WORD_COOL, EC_WORD_AT, EC_WORD_ALL, EC_WORD_EXCL},
+ .speechAfter = {EC_WORD_HEHEHE, EC_WORD_THAT_WAS, EC_WORD_AN, EC_WORD_AWESOME, EC_WORD_BATTLE, EC_WORD_EXCL},
+ .mons =
+ {
+ [0] =
+ {
+ .species = SPECIES_SALAMENCE,
+ .heldItem = ITEM_SHELL_BELL,
+ .moves = {MOVE_ROCK_SLIDE, MOVE_FLAMETHROWER, MOVE_DRAGON_CLAW, MOVE_AERIAL_ACE},
+ .level = 0,
+ .ppBonuses = 0,
+ .attackEV = 255,
+ .spAttackEV = 255,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 31,
+ .attackIV = 31,
+ .defenseIV = 31,
+ .speedIV = 31,
+ .spAttackIV = 31,
+ .spDefenseIV = 31,
+ .abilityNum = 0,
+ .personality = 0x95,
+ .nickname = _("SALAMENCE"),
+ .friendship = 255,
+ },
+ [1] =
+ {
+ .species = SPECIES_GENGAR,
+ .heldItem = ITEM_LUM_BERRY,
+ .moves = {MOVE_PSYCHIC, MOVE_GIGA_DRAIN, MOVE_WILL_O_WISP, MOVE_DESTINY_BOND},
+ .level = 0,
+ .ppBonuses = 0,
+ .speedEV = 255,
+ .spAttackEV = 255,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 31,
+ .attackIV = 31,
+ .defenseIV = 31,
+ .speedIV = 31,
+ .spAttackIV = 31,
+ .spDefenseIV = 31,
+ .abilityNum = 0,
+ .personality = 0x8C,
+ .nickname = _("GENGAR"),
+ .friendship = 255,
+ },
+ [2] =
+ {
+ .species = SPECIES_GYARADOS,
+ .heldItem = ITEM_BRIGHT_POWDER,
+ .moves = {MOVE_DRAGON_DANCE, MOVE_HYPER_BEAM, MOVE_BITE, MOVE_EARTHQUAKE},
+ .level = 0,
+ .ppBonuses = 0,
+ .attackEV = 255,
+ .speedEV = 255,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 31,
+ .attackIV = 31,
+ .defenseIV = 31,
+ .speedIV = 31,
+ .spAttackIV = 31,
+ .spDefenseIV = 31,
+ .abilityNum = 0,
+ .personality = 0x3,
+ .nickname = _("GYARADOS"),
+ .friendship = 255,
+ },
+ [3] =
+ {
+ .species = SPECIES_GENGAR,
+ .heldItem = ITEM_SALAC_BERRY,
+ .moves = {MOVE_EXPLOSION, MOVE_MEAN_LOOK, MOVE_SHADOW_BALL, MOVE_CONFUSE_RAY},
+ .level = 0,
+ .ppBonuses = 0,
+ .attackEV = 255,
+ .speedEV = 255,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 31,
+ .attackIV = 31,
+ .defenseIV = 31,
+ .speedIV = 31,
+ .spAttackIV = 31,
+ .spDefenseIV = 31,
+ .abilityNum = 0,
+ .personality = 0x3,
+ .nickname = _("GENGAR"),
+ .friendship = 255,
+ },
+ [4] =
+ {
+ .species = SPECIES_DUSCLOPS,
+ .heldItem = ITEM_LEFTOVERS,
+ .moves = {MOVE_MEAN_LOOK, MOVE_CONFUSE_RAY, MOVE_WILL_O_WISP, MOVE_SHADOW_BALL},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 110,
+ .defenseEV = 200,
+ .spDefenseEV = 200,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 31,
+ .attackIV = 31,
+ .defenseIV = 31,
+ .speedIV = 31,
+ .spAttackIV = 31,
+ .spDefenseIV = 31,
+ .abilityNum = 0,
+ .personality = 0x14,
+ .nickname = _("DUSCLOPS"),
+ .friendship = 255,
+ },
+ [5] =
+ {
+ .species = SPECIES_MISDREAVUS,
+ .heldItem = ITEM_FOCUS_BAND,
+ .moves = {MOVE_MEAN_LOOK, MOVE_CONFUSE_RAY, MOVE_PERISH_SONG, MOVE_SHADOW_BALL},
+ .level = 0,
+ .ppBonuses = 0,
+ .hpEV = 180,
+ .defenseEV = 180,
+ .spDefenseEV = 150,
+ .otId = TRAINER_HILL_OTID,
+ .hpIV = 31,
+ .attackIV = 31,
+ .defenseIV = 31,
+ .speedIV = 31,
+ .spAttackIV = 31,
+ .spDefenseIV = 31,
+ .abilityNum = 0,
+ .personality = 0x85,
+ .nickname = _("MISDREAVUS"),
+ .friendship = 255,
+ },
+ },
},
- [2] =
- {
- .species = SPECIES_EXEGGUTOR,
- .heldItem = ITEM_SHELL_BELL,
- .moves = {MOVE_EXPLOSION, MOVE_HYPNOSIS, MOVE_PSYCHIC, MOVE_SOLAR_BEAM},
- .level = 0,
- .ppBonuses = 0,
- .attackEV = 255,
- .spAttackEV = 255,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
- .abilityNum = 0,
- .personality = 0x7F,
- .nickname = _("EXEGGUTOR"),
- .friendship = 255,
- },
- [3] =
- {
- .species = SPECIES_DUSCLOPS,
- .heldItem = ITEM_LEFTOVERS,
- .moves = {MOVE_IMPRISON, MOVE_PROTECT, MOVE_ICE_BEAM, MOVE_EARTHQUAKE},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 110,
- .defenseEV = 200,
- .spDefenseEV = 200,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
- .abilityNum = 0,
- .personality = 0x93,
- .nickname = _("DUSCLOPS"),
- .friendship = 255,
- },
- [4] =
- {
- .species = SPECIES_NINETALES,
- .heldItem = ITEM_WHITE_HERB,
- .moves = {MOVE_IMPRISON, MOVE_PROTECT, MOVE_OVERHEAT, MOVE_CONFUSE_RAY},
- .level = 0,
- .ppBonuses = 0,
- .speedEV = 255,
- .spAttackEV = 255,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
- .abilityNum = 0,
- .personality = 0xF,
- .nickname = _("NINETALES"),
- .friendship = 255,
- },
- [5] =
- {
- .species = SPECIES_BANETTE,
- .heldItem = ITEM_BRIGHT_POWDER,
- .moves = {MOVE_IMPRISON, MOVE_PROTECT, MOVE_THUNDERBOLT, MOVE_THUNDER},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 255,
- .spAttackEV = 255,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
- .abilityNum = 0,
- .personality = 0x96,
- .nickname = _("BANETTE"),
- .friendship = 255,
- },
- },
},
- [1] =
- {
- .name = _("GAV"),
- .facilityClass = FACILITY_CLASS_PKMN_RANGER_M,
- .unused = 0,
- .speechBefore = {EC_WORD_WAHAHAHA, EC_WORD_YOU, EC_WORD_CAN_T, EC_WORD_STOP, EC_WORD_ME, EC_WORD_EXCL},
- .speechWin = {EC_WORD_WOWEE, EC_WORD_EXCL, 0xFFFF, EC_WORD_I_AM, EC_WORD_AWESOME, EC_WORD_COOL},
- .speechLose = {EC_WORD_I_AM, EC_WORD_NOT, EC_WORD_COOL, EC_WORD_AT, EC_WORD_ALL, EC_WORD_EXCL},
- .speechAfter = {EC_WORD_HEHEHE, EC_WORD_THAT_WAS, EC_WORD_AN, EC_WORD_AWESOME, EC_WORD_BATTLE, EC_WORD_EXCL},
- .mons =
- {
- [0] =
- {
- .species = SPECIES_SALAMENCE,
- .heldItem = ITEM_SHELL_BELL,
- .moves = {MOVE_ROCK_SLIDE, MOVE_FLAMETHROWER, MOVE_DRAGON_CLAW, MOVE_AERIAL_ACE},
- .level = 0,
- .ppBonuses = 0,
- .attackEV = 255,
- .spAttackEV = 255,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
- .abilityNum = 0,
- .personality = 0x95,
- .nickname = _("SALAMENCE"),
- .friendship = 255,
- },
- [1] =
- {
- .species = SPECIES_GENGAR,
- .heldItem = ITEM_LUM_BERRY,
- .moves = {MOVE_PSYCHIC, MOVE_GIGA_DRAIN, MOVE_WILL_O_WISP, MOVE_DESTINY_BOND},
- .level = 0,
- .ppBonuses = 0,
- .speedEV = 255,
- .spAttackEV = 255,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
- .abilityNum = 0,
- .personality = 0x8C,
- .nickname = _("GENGAR"),
- .friendship = 255,
- },
- [2] =
- {
- .species = SPECIES_GYARADOS,
- .heldItem = ITEM_BRIGHT_POWDER,
- .moves = {MOVE_DRAGON_DANCE, MOVE_HYPER_BEAM, MOVE_BITE, MOVE_EARTHQUAKE},
- .level = 0,
- .ppBonuses = 0,
- .attackEV = 255,
- .speedEV = 255,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
- .abilityNum = 0,
- .personality = 0x3,
- .nickname = _("GYARADOS"),
- .friendship = 255,
- },
- [3] =
- {
- .species = SPECIES_GENGAR,
- .heldItem = ITEM_SALAC_BERRY,
- .moves = {MOVE_EXPLOSION, MOVE_MEAN_LOOK, MOVE_SHADOW_BALL, MOVE_CONFUSE_RAY},
- .level = 0,
- .ppBonuses = 0,
- .attackEV = 255,
- .speedEV = 255,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
- .abilityNum = 0,
- .personality = 0x3,
- .nickname = _("GENGAR"),
- .friendship = 255,
- },
- [4] =
- {
- .species = SPECIES_DUSCLOPS,
- .heldItem = ITEM_LEFTOVERS,
- .moves = {MOVE_MEAN_LOOK, MOVE_CONFUSE_RAY, MOVE_WILL_O_WISP, MOVE_SHADOW_BALL},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 110,
- .defenseEV = 200,
- .spDefenseEV = 200,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
- .abilityNum = 0,
- .personality = 0x14,
- .nickname = _("DUSCLOPS"),
- .friendship = 255,
- },
- [5] =
- {
- .species = SPECIES_MISDREAVUS,
- .heldItem = ITEM_FOCUS_BAND,
- .moves = {MOVE_MEAN_LOOK, MOVE_CONFUSE_RAY, MOVE_PERISH_SONG, MOVE_SHADOW_BALL},
- .level = 0,
- .ppBonuses = 0,
- .hpEV = 180,
- .defenseEV = 180,
- .spDefenseEV = 150,
- .otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
- .abilityNum = 0,
- .personality = 0x85,
- .nickname = _("MISDREAVUS"),
- .friendship = 255,
- },
- },
- },
- },
- .data = {0x31, 0x3B, 0x3B, 0x3B, 0x39, 0x39, 0x13, 0x14, 0x15, 0x39, 0x39, 0x3A, 0x3B, 0x3B, 0x3B, 0x8, 0x96, 0xFB, 0xF6, 0xFD, 0xF6, 0xF6, 0xFB, 0x46, 0xFB, 0xF6, 0xF6, 0xFD, 0xF6, 0xFB, 0x9B, 0x8, 0xFB, 0x9B, 0xFB, 0xF6, 0xFB, 0xFB, 0xFB, 0x46, 0xFB, 0xFB, 0xFB, 0xF6, 0xFB, 0x9B, 0xFB, 0x8, 0xF6, 0xFB, 0x9B, 0xFB, 0xFB, 0x46, 0x46, 0x9B, 0x46, 0x46, 0xFB, 0xFB, 0x9B, 0xFB, 0xF6, 0x8, 0xFD, 0xF6, 0xFB, 0x9B, 0x46, 0x36, 0x36, 0x9B, 0x36, 0x36, 0x46, 0x9B, 0xFB, 0xF6, 0xFD, 0x8, 0xF6, 0xFB, 0xFB, 0x46, 0x9B, 0x46, 0x46, 0xDB, 0x46, 0x46, 0x9B, 0x46, 0xFB, 0xFB, 0xF6, 0x8, 0xF6, 0xFB, 0x46, 0x36, 0x46, 0x9B, 0xDB, 0xD6, 0xDB, 0x9B, 0x46, 0x36, 0x46, 0xFB, 0xF6, 0x8, 0xFB, 0xFB, 0x46, 0x36, 0x9B, 0xDB, 0xD6, 0xD6, 0xD6, 0xDB, 0x9B, 0x36, 0x46, 0xFB, 0xFB, 0x8, 0x96, 0x9B, 0x9B, 0x9B, 0x9B, 0xD6, 0xD6, 0x96, 0xD6, 0xD6, 0xDB, 0x9B, 0x9B, 0x9B, 0x96, 0x8, 0xFB, 0xFB, 0x46, 0x36, 0x9B, 0xDB, 0xD6, 0xD6, 0xD6, 0xDB, 0x9B, 0x36, 0x46, 0xFB, 0xFB, 0x8, 0xF6, 0xFB, 0x46, 0x36, 0x46, 0x9B, 0xDB, 0xD6, 0xDB, 0x9B, 0x46, 0x36, 0x46, 0xFB, 0xF6, 0x8, 0xF6, 0xFB, 0xFB, 0x46, 0x9B, 0x46, 0x46, 0xDB, 0x46, 0x46, 0x9B, 0x46, 0xFB, 0xFB, 0xF6, 0x8, 0xFD, 0xF6, 0xFB, 0x9B, 0x46, 0x36, 0x36, 0x9B, 0x36, 0x36, 0x46, 0x9B, 0xFB, 0xF6, 0xFD, 0x8, 0xF6, 0xFB, 0x9B, 0xFB, 0xFB, 0x46, 0x46, 0x9B, 0x46, 0x46, 0xFB, 0xFB, 0x9B, 0xFB, 0xF6, 0x8, 0xFB, 0x9B, 0xFB, 0xF6, 0xFB, 0xFB, 0xFB, 0x46, 0xFB, 0xFB, 0xFB, 0xF6, 0xFB, 0x9B, 0xFB, 0x8, 0x96, 0xFB, 0xF6, 0xFD, 0xF6, 0xF6, 0xFB, 0x46, 0xFB, 0xF6, 0xF6, 0xFD, 0xF6, 0xFB, 0x9B, 0x8},
- .unk3A0 = {0x381, 0x101, 0x101, 0x6C1, 0x821, 0x16D1, 0x2829, 0x2009, 0x1, 0x2009, 0x2829, 0x16D1, 0x821, 0x6C1, 0x101, 0x101},
- .coords = {103, 167},
- .direction = 0x1,
- .range = 0x33,
+ .display = {
+ .data = {0x31, 0x3B, 0x3B, 0x3B, 0x39, 0x39, 0x13, 0x14, 0x15, 0x39, 0x39, 0x3A, 0x3B, 0x3B, 0x3B, 0x8, 0x96, 0xFB, 0xF6, 0xFD, 0xF6, 0xF6, 0xFB, 0x46, 0xFB, 0xF6, 0xF6, 0xFD, 0xF6, 0xFB, 0x9B, 0x8, 0xFB, 0x9B, 0xFB, 0xF6, 0xFB, 0xFB, 0xFB, 0x46, 0xFB, 0xFB, 0xFB, 0xF6, 0xFB, 0x9B, 0xFB, 0x8, 0xF6, 0xFB, 0x9B, 0xFB, 0xFB, 0x46, 0x46, 0x9B, 0x46, 0x46, 0xFB, 0xFB, 0x9B, 0xFB, 0xF6, 0x8, 0xFD, 0xF6, 0xFB, 0x9B, 0x46, 0x36, 0x36, 0x9B, 0x36, 0x36, 0x46, 0x9B, 0xFB, 0xF6, 0xFD, 0x8, 0xF6, 0xFB, 0xFB, 0x46, 0x9B, 0x46, 0x46, 0xDB, 0x46, 0x46, 0x9B, 0x46, 0xFB, 0xFB, 0xF6, 0x8, 0xF6, 0xFB, 0x46, 0x36, 0x46, 0x9B, 0xDB, 0xD6, 0xDB, 0x9B, 0x46, 0x36, 0x46, 0xFB, 0xF6, 0x8, 0xFB, 0xFB, 0x46, 0x36, 0x9B, 0xDB, 0xD6, 0xD6, 0xD6, 0xDB, 0x9B, 0x36, 0x46, 0xFB, 0xFB, 0x8, 0x96, 0x9B, 0x9B, 0x9B, 0x9B, 0xD6, 0xD6, 0x96, 0xD6, 0xD6, 0xDB, 0x9B, 0x9B, 0x9B, 0x96, 0x8, 0xFB, 0xFB, 0x46, 0x36, 0x9B, 0xDB, 0xD6, 0xD6, 0xD6, 0xDB, 0x9B, 0x36, 0x46, 0xFB, 0xFB, 0x8, 0xF6, 0xFB, 0x46, 0x36, 0x46, 0x9B, 0xDB, 0xD6, 0xDB, 0x9B, 0x46, 0x36, 0x46, 0xFB, 0xF6, 0x8, 0xF6, 0xFB, 0xFB, 0x46, 0x9B, 0x46, 0x46, 0xDB, 0x46, 0x46, 0x9B, 0x46, 0xFB, 0xFB, 0xF6, 0x8, 0xFD, 0xF6, 0xFB, 0x9B, 0x46, 0x36, 0x36, 0x9B, 0x36, 0x36, 0x46, 0x9B, 0xFB, 0xF6, 0xFD, 0x8, 0xF6, 0xFB, 0x9B, 0xFB, 0xFB, 0x46, 0x46, 0x9B, 0x46, 0x46, 0xFB, 0xFB, 0x9B, 0xFB, 0xF6, 0x8, 0xFB, 0x9B, 0xFB, 0xF6, 0xFB, 0xFB, 0xFB, 0x46, 0xFB, 0xFB, 0xFB, 0xF6, 0xFB, 0x9B, 0xFB, 0x8, 0x96, 0xFB, 0xF6, 0xFD, 0xF6, 0xF6, 0xFB, 0x46, 0xFB, 0xF6, 0xF6, 0xFD, 0xF6, 0xFB, 0x9B, 0x8},
+ .unk3A0 = {0x381, 0x101, 0x101, 0x6C1, 0x821, 0x16D1, 0x2829, 0x2009, 0x1, 0x2009, 0x2829, 0x16D1, 0x821, 0x6C1, 0x101, 0x101},
+ .coords = {103, 167},
+ .direction = 0x1,
+ .range = 0x33,
+ }
},
- },
};
diff --git a/src/data/decoration/icon.h b/src/data/decoration/icon.h
index 58d9cea7b..b29dab20f 100644
--- a/src/data/decoration/icon.h
+++ b/src/data/decoration/icon.h
@@ -1,123 +1,124 @@
-const u32 *const gUnknown_085A6BE8[][2] = {
- {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
- {NULL, NULL},
- {NULL, NULL},
- {gUnknown_08DB7AA0, gUnknown_08DB7B34},
- {gUnknown_08DB7B5C, gUnknown_08DB7BEC},
- {gUnknown_08DB7C08, gUnknown_08DB7CE8},
- {gUnknown_08DB7D08, gUnknown_08DB7DCC},
- {gUnknown_08DB7DF4, gUnknown_08DB7EA0},
- {gUnknown_08DB7EC4, gUnknown_08DB7F60},
- {gUnknown_08DB7F7C, gUnknown_08DB8070},
- {NULL, NULL},
- {NULL, NULL},
- {NULL, NULL},
- {NULL, NULL},
- {NULL, NULL},
- {NULL, NULL},
- {NULL, NULL},
- {NULL, NULL},
- {NULL, NULL},
- {gUnknown_08DB808C, gUnknown_08DB8138},
- {gUnknown_08DB8160, gUnknown_08DB8218},
- {gUnknown_08DB823C, gUnknown_08DB8300},
- {gUnknown_08DB8328, gUnknown_08DB8430},
- {gUnknown_08DB8458, gUnknown_08DB8528},
- {gUnknown_08DB854C, gUnknown_08DB862C},
- {gUnknown_08DB8654, gUnknown_08DB86C4},
- {gUnknown_08DB86E0, gUnknown_08DB8750},
- {gUnknown_08DB876C, gUnknown_08DB87DC},
- {NULL, NULL},
- {NULL, NULL},
- {NULL, NULL},
- {gUnknown_08DB87F8, gUnknown_08DB88D8},
- {gUnknown_08DB8900, gUnknown_08DB89E0},
- {gUnknown_08DB8A08, gUnknown_08DB8A68},
- {gUnknown_08DB8A84, gUnknown_08DB8B40},
- {NULL, NULL},
- {NULL, NULL},
- {gUnknown_08DB8B68, gUnknown_08DB8C40},
- {gUnknown_08DB8C5C, gUnknown_08DB8CF4},
- {NULL, NULL},
- {gUnknown_08DB8D18, gUnknown_08DB8DB0},
- {gUnknown_08DB8DD4, gUnknown_08DB8E80},
- {NULL, NULL},
- {NULL, NULL},
- {gUnknown_08DB8EA0, gUnknown_08DB8F58},
- {NULL, NULL},
- {NULL, NULL},
- {NULL, NULL},
- {NULL, NULL},
- {NULL, NULL},
- {NULL, NULL},
- {NULL, NULL},
- {NULL, NULL},
- {NULL, NULL},
- {NULL, NULL},
- {NULL, NULL},
- {NULL, NULL},
- {NULL, NULL},
- {NULL, NULL},
- {gUnknown_08DB8F7C, gUnknown_08DB9038},
- {gUnknown_08DB9058, gUnknown_08DB9130},
- {gUnknown_08DB9154, gUnknown_08DB9218},
- {gUnknown_08DB9234, gUnknown_08DB92FC},
- {gUnknown_08DB931C, gUnknown_08DB93E8},
- {gUnknown_08DB940C, gUnknown_08DB94CC},
- {gUnknown_08DB94E8, gUnknown_08DB95AC},
- {NULL, NULL},
- {NULL, NULL},
- {NULL, NULL},
- {NULL, NULL},
- {NULL, NULL},
- {NULL, NULL},
- {NULL, NULL},
- {NULL, NULL},
- {NULL, NULL},
- {NULL, NULL},
- {NULL, NULL},
- {NULL, NULL},
- {NULL, NULL},
- {NULL, NULL},
- {NULL, NULL},
- {NULL, NULL},
- {NULL, NULL},
- {NULL, NULL},
- {NULL, NULL},
- {NULL, NULL},
- {NULL, NULL},
- {NULL, NULL},
- {NULL, NULL},
- {NULL, NULL},
- {NULL, NULL},
- {NULL, NULL},
- {NULL, NULL},
- {NULL, NULL},
- {NULL, NULL},
- {NULL, NULL},
- {NULL, NULL},
- {NULL, NULL},
- {NULL, NULL},
- {NULL, NULL},
- {NULL, NULL},
- {NULL, NULL},
- {NULL, NULL},
- {NULL, NULL},
- {NULL, NULL},
- {NULL, NULL},
- {NULL, NULL},
- {NULL, NULL},
- {NULL, NULL},
- {NULL, NULL},
- {NULL, NULL},
- {gUnknown_08DB95D0, gUnknown_08DB96C4},
- {gUnknown_08DB96EC, gUnknown_08DB97F4},
- {gUnknown_08DB981C, gUnknown_08DB9908},
- {gUnknown_08DB9930, gUnknown_08DB9A54},
- {gUnknown_08DB9A7C, gUnknown_08DB9B7C},
- {gUnknown_08DB9BA4, gUnknown_08DB9CB0},
- {gUnknown_08DB9CD8, gUnknown_08DB9DAC},
- {gUnknown_08DB9F08, gUnknown_08DB9FFC},
- {gUnknown_08DB9DD4, gUnknown_08DB9EE4},
- {gUnknown_08DBA020, gUnknown_08DBA12C}
+const u32 *const gDecorIconTable[][2] =
+{
+ [DECOR_NONE] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
+ [DECOR_SMALL_DESK] = {NULL, NULL},
+ [DECOR_POKEMON_DESK] = {NULL, NULL},
+ [DECOR_HEAVY_DESK] = {gDecorIcon_HeavyDesk, gDecorIconPalette_HeavyDesk},
+ [DECOR_RAGGED_DESK] = {gDecorIcon_RaggedDesk, gDecorIconPalette_RaggedDesk},
+ [DECOR_COMFORT_DESK] = {gDecorIcon_ComfortDesk, gDecorIconPalette_ComfortDesk},
+ [DECOR_PRETTY_DESK] = {gDecorIcon_PrettyDesk, gDecorIconPalette_PrettyDesk},
+ [DECOR_BRICK_DESK] = {gDecorIcon_BrickDesk, gDecorIconPalette_BrickDesk},
+ [DECOR_CAMP_DESK] = {gDecorIcon_CampDesk, gDecorIconPalette_CampDesk},
+ [DECOR_HARD_DESK] = {gDecorIcon_HardDesk, gDecorIconPalette_HardDesk},
+ [DECOR_SMALL_CHAIR] = {NULL, NULL},
+ [DECOR_POKEMON_CHAIR] = {NULL, NULL},
+ [DECOR_HEAVY_CHAIR] = {NULL, NULL},
+ [DECOR_PRETTY_CHAIR] = {NULL, NULL},
+ [DECOR_COMFORT_CHAIR] = {NULL, NULL},
+ [DECOR_RAGGED_CHAIR] = {NULL, NULL},
+ [DECOR_BRICK_CHAIR] = {NULL, NULL},
+ [DECOR_CAMP_CHAIR] = {NULL, NULL},
+ [DECOR_HARD_CHAIR] = {NULL, NULL},
+ [DECOR_RED_PLANT] = {gDecorIcon_RedPlant, gDecorIconPalette_RedPlant},
+ [DECOR_TROPICAL_PLANT] = {gDecorIcon_TropicalPlant, gDecorIconPalette_TropicalPlant},
+ [DECOR_PRETTY_FLOWERS] = {gDecorIcon_PrettyFlowers, gDecorIconPalette_PrettyFlowers},
+ [DECOR_COLORFUL_PLANT] = {gDecorIcon_ColorfulPlant, gDecorIconPalette_ColorfulPlant},
+ [DECOR_BIG_PLANT] = {gDecorIcon_BigPlant, gDecorIconPalette_BigPlant},
+ [DECOR_GORGEOUS_PLANT] = {gDecorIcon_GorgeousPlant, gDecorIconPalette_GorgeousPlant},
+ [DECOR_RED_BRICK] = {gDecorIcon_RedBrick, gDecorIconPalette_RedBrick},
+ [DECOR_YELLOW_BRICK] = {gDecorIcon_YellowBrick, gDecorIconPalette_YellowBrick},
+ [DECOR_BLUE_BRICK] = {gDecorIcon_BlueBrick, gDecorIconPalette_BlueBrick},
+ [DECOR_RED_BALLOON] = {NULL, NULL},
+ [DECOR_BLUE_BALLOON] = {NULL, NULL},
+ [DECOR_YELLOW_BALLOON] = {NULL, NULL},
+ [DECOR_RED_TENT] = {gDecorIcon_RedTent, gDecorIconPalette_RedTent},
+ [DECOR_BLUE_TENT] = {gDecorIcon_BlueTent, gDecorIconPalette_BlueTent},
+ [DECOR_SOLID_BOARD] = {gDecorIcon_SolidBoard, gDecorIconPalette_SolidBoard},
+ [DECOR_SLIDE] = {gDecorIcon_Slide, gDecorIconPalette_Slide},
+ [DECOR_FENCE_LENGTH] = {NULL, NULL},
+ [DECOR_FENCE_WIDTH] = {NULL, NULL},
+ [DECOR_TIRE] = {gDecorIcon_Tire, gDecorIconPalette_Tire},
+ [DECOR_STAND] = {gDecorIcon_Stand, gDecorIconPalette_Stand},
+ [DECOR_MUD_BALL] = {NULL, NULL},
+ [DECOR_BREAKABLE_DOOR] = {gDecorIcon_BreakableDoor, gDecorIconPalette_BreakableDoor},
+ [DECOR_SAND_ORNAMENT] = {gDecorIcon_SandOrnament, gDecorIconPalette_SandOrnament},
+ [DECOR_SILVER_SHIELD] = {NULL, NULL},
+ [DECOR_GOLD_SHIELD] = {NULL, NULL},
+ [DECOR_GLASS_ORNAMENT] = {gDecorIcon_GlassOrnament, gDecorIconPalette_GlassOrnament},
+ [DECOR_TV] = {NULL, NULL},
+ [DECOR_ROUND_TV] = {NULL, NULL},
+ [DECOR_CUTE_TV] = {NULL, NULL},
+ [DECOR_GLITTER_MAT] = {NULL, NULL},
+ [DECOR_JUMP_MAT] = {NULL, NULL},
+ [DECOR_SPIN_MAT] = {NULL, NULL},
+ [DECOR_C_LOW_NOTE_MAT] = {NULL, NULL},
+ [DECOR_D_NOTE_MAT] = {NULL, NULL},
+ [DECOR_E_NOTE_MAT] = {NULL, NULL},
+ [DECOR_F_NOTE_MAT] = {NULL, NULL},
+ [DECOR_G_NOTE_MAT] = {NULL, NULL},
+ [DECOR_A_NOTE_MAT] = {NULL, NULL},
+ [DECOR_B_NOTE_MAT] = {NULL, NULL},
+ [DECOR_C_HIGH_NOTE_MAT] = {NULL, NULL},
+ [DECOR_SURF_MAT] = {gDecorIcon_SurfMat, gDecorIconPalette_SurfMat},
+ [DECOR_THUNDER_MAT] = {gDecorIcon_ThunderMat, gDecorIconPalette_ThunderMat},
+ [DECOR_FIRE_BLAST_MAT] = {gDecorIcon_FireBlastMat, gDecorIconPalette_FireBlastMat},
+ [DECOR_POWDER_SNOW_MAT] = {gDecorIcon_PowderSnowMat, gDecorIconPalette_PowderSnowMat},
+ [DECOR_ATTRACT_MAT] = {gDecorIcon_AttractMat, gDecorIconPalette_AttractMat},
+ [DECOR_FISSURE_MAT] = {gDecorIcon_FissureMat, gDecorIconPalette_FissureMat},
+ [DECOR_SPIKES_MAT] = {gDecorIcon_SpikesMat, gDecorIconPalette_SpikesMat},
+ [DECOR_BALL_POSTER] = {NULL, NULL},
+ [DECOR_GREEN_POSTER] = {NULL, NULL},
+ [DECOR_RED_POSTER] = {NULL, NULL},
+ [DECOR_BLUE_POSTER] = {NULL, NULL},
+ [DECOR_CUTE_POSTER] = {NULL, NULL},
+ [DECOR_PIKA_POSTER] = {NULL, NULL},
+ [DECOR_LONG_POSTER] = {NULL, NULL},
+ [DECOR_SEA_POSTER] = {NULL, NULL},
+ [DECOR_SKY_POSTER] = {NULL, NULL},
+ [DECOR_KISS_POSTER] = {NULL, NULL},
+ [DECOR_PICHU_DOLL] = {NULL, NULL},
+ [DECOR_PIKACHU_DOLL] = {NULL, NULL},
+ [DECOR_MARILL_DOLL] = {NULL, NULL},
+ [DECOR_TOGEPI_DOLL] = {NULL, NULL},
+ [DECOR_CYNDAQUIL_DOLL] = {NULL, NULL},
+ [DECOR_CHIKORITA_DOLL] = {NULL, NULL},
+ [DECOR_TOTODILE_DOLL] = {NULL, NULL},
+ [DECOR_JIGGLYPUFF_DOLL] = {NULL, NULL},
+ [DECOR_MEOWTH_DOLL] = {NULL, NULL},
+ [DECOR_CLEFAIRY_DOLL] = {NULL, NULL},
+ [DECOR_DITTO_DOLL] = {NULL, NULL},
+ [DECOR_SMOOCHUM_DOLL] = {NULL, NULL},
+ [DECOR_TREECKO_DOLL] = {NULL, NULL},
+ [DECOR_TORCHIC_DOLL] = {NULL, NULL},
+ [DECOR_MUDKIP_DOLL] = {NULL, NULL},
+ [DECOR_DUSKULL_DOLL] = {NULL, NULL},
+ [DECOR_WYNAUT_DOLL] = {NULL, NULL},
+ [DECOR_BALTOY_DOLL] = {NULL, NULL},
+ [DECOR_KECLEON_DOLL] = {NULL, NULL},
+ [DECOR_AZURILL_DOLL] = {NULL, NULL},
+ [DECOR_SKITTY_DOLL] = {NULL, NULL},
+ [DECOR_SWABLU_DOLL] = {NULL, NULL},
+ [DECOR_GULPIN_DOLL] = {NULL, NULL},
+ [DECOR_LOTAD_DOLL] = {NULL, NULL},
+ [DECOR_SEEDOT_DOLL] = {NULL, NULL},
+ [DECOR_PIKA_CUSHION] = {NULL, NULL},
+ [DECOR_ROUND_CUSHION] = {NULL, NULL},
+ [DECOR_KISS_CUSHION] = {NULL, NULL},
+ [DECOR_ZIGZAG_CUSHION] = {NULL, NULL},
+ [DECOR_SPIN_CUSHION] = {NULL, NULL},
+ [DECOR_DIAMOND_CUSHION] = {NULL, NULL},
+ [DECOR_BALL_CUSHION] = {NULL, NULL},
+ [DECOR_GRASS_CUSHION] = {NULL, NULL},
+ [DECOR_FIRE_CUSHION] = {NULL, NULL},
+ [DECOR_WATER_CUSHION] = {NULL, NULL},
+ [DECOR_SNORLAX_DOLL] = {gDecorIcon_SnorlaxDoll, gDecorIconPalette_SnorlaxDoll},
+ [DECOR_RHYDON_DOLL] = {gDecorIcon_RhydonDoll, gDecorIconPalette_RhydonDoll},
+ [DECOR_LAPRAS_DOLL] = {gDecorIcon_LaprasDoll, gDecorIconPalette_LaprasDoll},
+ [DECOR_VENUSAUR_DOLL] = {gDecorIcon_VenusaurDoll, gDecorIconPalette_VenusaurDoll},
+ [DECOR_CHARIZARD_DOLL] = {gDecorIcon_CharizardDoll, gDecorIconPalette_CharizardDoll},
+ [DECOR_BLASTOISE_DOLL] = {gDecorIcon_BlastoiseDoll, gDecorIconPalette_BlastoiseDoll},
+ [DECOR_WAILMER_DOLL] = {gDecorIcon_WailmerDoll, gDecorIconPalette_WailmerDoll},
+ [DECOR_REGIROCK_DOLL] = {gDecorIcon_RegirockDoll, gDecorIconPalette_RegirockDoll},
+ [DECOR_REGICE_DOLL] = {gDecorIcon_RegiceDoll, gDecorIconPalette_RegiceDoll},
+ [DECOR_REGISTEEL_DOLL] = {gDecorIcon_RegisteelDoll, gDecorIconPalette_RegisteelDoll}
};
diff --git a/src/data/field_event_obj/event_object_graphics_info_pointers.h b/src/data/field_event_obj/event_object_graphics_info_pointers.h
index 2f504737a..0b8aa79b2 100755
--- a/src/data/field_event_obj/event_object_graphics_info_pointers.h
+++ b/src/data/field_event_obj/event_object_graphics_info_pointers.h
@@ -247,245 +247,245 @@ const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_UnusedMauvilleOldM
const struct EventObjectGraphicsInfo *const gEventObjectGraphicsInfoPointers[] = {
- &gEventObjectGraphicsInfo_BrendanNormal,
- &gEventObjectGraphicsInfo_BrendanMachBike,
- &gEventObjectGraphicsInfo_BrendanSurfing,
- &gEventObjectGraphicsInfo_BrendanFieldMove,
- &gEventObjectGraphicsInfo_QuintyPlump,
- &gEventObjectGraphicsInfo_NinjaBoy,
- &gEventObjectGraphicsInfo_Twin,
- &gEventObjectGraphicsInfo_Boy1,
- &gEventObjectGraphicsInfo_Girl1,
- &gEventObjectGraphicsInfo_Boy2,
- &gEventObjectGraphicsInfo_Girl2,
- &gEventObjectGraphicsInfo_LittleBoy,
- &gEventObjectGraphicsInfo_LittleGirl,
- &gEventObjectGraphicsInfo_Boy3,
- &gEventObjectGraphicsInfo_Girl3,
- &gEventObjectGraphicsInfo_RichBoy,
- &gEventObjectGraphicsInfo_Woman1,
- &gEventObjectGraphicsInfo_FatMan,
- &gEventObjectGraphicsInfo_PokefanF,
- &gEventObjectGraphicsInfo_Man1,
- &gEventObjectGraphicsInfo_Woman2,
- &gEventObjectGraphicsInfo_ExpertM,
- &gEventObjectGraphicsInfo_ExpertF,
- &gEventObjectGraphicsInfo_Man2,
- &gEventObjectGraphicsInfo_Woman3,
- &gEventObjectGraphicsInfo_PokefanM,
- &gEventObjectGraphicsInfo_Woman4,
- &gEventObjectGraphicsInfo_Cook,
- &gEventObjectGraphicsInfo_LinkReceptionist,
- &gEventObjectGraphicsInfo_OldMan,
- &gEventObjectGraphicsInfo_OldWoman,
- &gEventObjectGraphicsInfo_Camper,
- &gEventObjectGraphicsInfo_Picnicker,
- &gEventObjectGraphicsInfo_Man3,
- &gEventObjectGraphicsInfo_Woman5,
- &gEventObjectGraphicsInfo_Youngster,
- &gEventObjectGraphicsInfo_BugCatcher,
- &gEventObjectGraphicsInfo_PsychicM,
- &gEventObjectGraphicsInfo_SchoolKidM,
- &gEventObjectGraphicsInfo_Maniac,
- &gEventObjectGraphicsInfo_HexManiac,
- &gEventObjectGraphicsInfo_Rayquaza1,
- &gEventObjectGraphicsInfo_SwimmerM,
- &gEventObjectGraphicsInfo_SwimmerF,
- &gEventObjectGraphicsInfo_BlackBelt,
- &gEventObjectGraphicsInfo_Beauty,
- &gEventObjectGraphicsInfo_Scientist1,
- &gEventObjectGraphicsInfo_Lass,
- &gEventObjectGraphicsInfo_Gentleman,
- &gEventObjectGraphicsInfo_Sailor,
- &gEventObjectGraphicsInfo_Fisherman,
- &gEventObjectGraphicsInfo_RunningTriathleteM,
- &gEventObjectGraphicsInfo_RunningTriathleteF,
- &gEventObjectGraphicsInfo_TuberF,
- &gEventObjectGraphicsInfo_TuberM,
- &gEventObjectGraphicsInfo_Hiker,
- &gEventObjectGraphicsInfo_CyclingTriathleteM,
- &gEventObjectGraphicsInfo_CyclingTriathleteF,
- &gEventObjectGraphicsInfo_Nurse,
- &gEventObjectGraphicsInfo_ItemBall,
- &gEventObjectGraphicsInfo_BerryTree,
- &gEventObjectGraphicsInfo_BerryTreeEarlyStages,
- &gEventObjectGraphicsInfo_BerryTreeLateStages,
- &gEventObjectGraphicsInfo_BrendanAcroBike,
- &gEventObjectGraphicsInfo_ProfBirch,
- &gEventObjectGraphicsInfo_Man4,
- &gEventObjectGraphicsInfo_Man5,
- &gEventObjectGraphicsInfo_ReporterM,
- &gEventObjectGraphicsInfo_ReporterF,
- &gEventObjectGraphicsInfo_Bard,
- &gEventObjectGraphicsInfo_Anabel,
- &gEventObjectGraphicsInfo_Tucker,
- &gEventObjectGraphicsInfo_Greta,
- &gEventObjectGraphicsInfo_Spenser,
- &gEventObjectGraphicsInfo_Noland,
- &gEventObjectGraphicsInfo_Lucy,
- &gEventObjectGraphicsInfo_UnusedNatuDoll,
- &gEventObjectGraphicsInfo_UnusedMagnemiteDoll,
- &gEventObjectGraphicsInfo_UnusedSquirtleDoll,
- &gEventObjectGraphicsInfo_UnusedWooperDoll,
- &gEventObjectGraphicsInfo_UnusedPikachuDoll,
- &gEventObjectGraphicsInfo_UnusedPorygon2Doll,
- &gEventObjectGraphicsInfo_CuttableTree,
- &gEventObjectGraphicsInfo_MartEmployee,
- &gEventObjectGraphicsInfo_RooftopSaleWoman,
- &gEventObjectGraphicsInfo_Teala,
- &gEventObjectGraphicsInfo_BreakableRock,
- &gEventObjectGraphicsInfo_PushableBoulder,
- &gEventObjectGraphicsInfo_MrBrineysBoat,
- &gEventObjectGraphicsInfo_MayNormal,
- &gEventObjectGraphicsInfo_MayMachBike,
- &gEventObjectGraphicsInfo_MayAcroBike,
- &gEventObjectGraphicsInfo_MaySurfing,
- &gEventObjectGraphicsInfo_MayFieldMove,
- &gEventObjectGraphicsInfo_Truck,
- &gEventObjectGraphicsInfo_VigorothCarryingBox,
- &gEventObjectGraphicsInfo_VigorothFacingAway,
- &gEventObjectGraphicsInfo_BirchsBag,
- &gEventObjectGraphicsInfo_EnemyZigzagoon,
- &gEventObjectGraphicsInfo_Artist,
- &gEventObjectGraphicsInfo_RivalBrendanNormal,
- &gEventObjectGraphicsInfo_RivalBrendanMachBike,
- &gEventObjectGraphicsInfo_RivalBrendanAcroBike,
- &gEventObjectGraphicsInfo_RivalBrendanSurfing,
- &gEventObjectGraphicsInfo_RivalBrendanFieldMove,
- &gEventObjectGraphicsInfo_RivalMayNormal,
- &gEventObjectGraphicsInfo_RivalMayMachBike,
- &gEventObjectGraphicsInfo_RivalMayAcroBike,
- &gEventObjectGraphicsInfo_RivalMaySurfing,
- &gEventObjectGraphicsInfo_RivalMayFieldMove,
- &gEventObjectGraphicsInfo_Cameraman,
- &gEventObjectGraphicsInfo_BrendanUnderwater,
- &gEventObjectGraphicsInfo_MayUnderwater,
- &gEventObjectGraphicsInfo_MovingBox,
- &gEventObjectGraphicsInfo_CableCar,
- &gEventObjectGraphicsInfo_Scientist2,
- &gEventObjectGraphicsInfo_DevonEmployee,
- &gEventObjectGraphicsInfo_AquaMemberM,
- &gEventObjectGraphicsInfo_AquaMemberF,
- &gEventObjectGraphicsInfo_MagmaMemberM,
- &gEventObjectGraphicsInfo_MagmaMemberF,
- &gEventObjectGraphicsInfo_Sidney,
- &gEventObjectGraphicsInfo_Phoebe,
- &gEventObjectGraphicsInfo_Glacia,
- &gEventObjectGraphicsInfo_Drake,
- &gEventObjectGraphicsInfo_Roxanne,
- &gEventObjectGraphicsInfo_Brawly,
- &gEventObjectGraphicsInfo_Wattson,
- &gEventObjectGraphicsInfo_Flannery,
- &gEventObjectGraphicsInfo_Norman,
- &gEventObjectGraphicsInfo_Winona,
- &gEventObjectGraphicsInfo_Liza,
- &gEventObjectGraphicsInfo_Tate,
- &gEventObjectGraphicsInfo_Wallace,
- &gEventObjectGraphicsInfo_Steven,
- &gEventObjectGraphicsInfo_Wally,
- &gEventObjectGraphicsInfo_RubySapphireLittleBoy,
- &gEventObjectGraphicsInfo_BrendanFishing,
- &gEventObjectGraphicsInfo_MayFishing,
- &gEventObjectGraphicsInfo_HotSpringsOldWoman,
- &gEventObjectGraphicsInfo_SSTidal,
- &gEventObjectGraphicsInfo_SubmarineShadow,
- &gEventObjectGraphicsInfo_PichuDoll,
- &gEventObjectGraphicsInfo_PikachuDoll,
- &gEventObjectGraphicsInfo_MarillDoll,
- &gEventObjectGraphicsInfo_TogepiDoll,
- &gEventObjectGraphicsInfo_CyndaquilDoll,
- &gEventObjectGraphicsInfo_ChikoritaDoll,
- &gEventObjectGraphicsInfo_TotodileDoll,
- &gEventObjectGraphicsInfo_JigglypuffDoll,
- &gEventObjectGraphicsInfo_MeowthDoll,
- &gEventObjectGraphicsInfo_ClefairyDoll,
- &gEventObjectGraphicsInfo_DittoDoll,
- &gEventObjectGraphicsInfo_SmoochumDoll,
- &gEventObjectGraphicsInfo_TreeckoDoll,
- &gEventObjectGraphicsInfo_TorchicDoll,
- &gEventObjectGraphicsInfo_MudkipDoll,
- &gEventObjectGraphicsInfo_DuskullDoll,
- &gEventObjectGraphicsInfo_WynautDoll,
- &gEventObjectGraphicsInfo_BaltoyDoll,
- &gEventObjectGraphicsInfo_KecleonDoll,
- &gEventObjectGraphicsInfo_AzurillDoll,
- &gEventObjectGraphicsInfo_SkittyDoll,
- &gEventObjectGraphicsInfo_SwabluDoll,
- &gEventObjectGraphicsInfo_GulpinDoll,
- &gEventObjectGraphicsInfo_LotadDoll,
- &gEventObjectGraphicsInfo_SeedotDoll,
- &gEventObjectGraphicsInfo_PikaCushion,
- &gEventObjectGraphicsInfo_RoundCushion,
- &gEventObjectGraphicsInfo_KissCushion,
- &gEventObjectGraphicsInfo_ZigzagCushion,
- &gEventObjectGraphicsInfo_SpinCushion,
- &gEventObjectGraphicsInfo_DiamondCushion,
- &gEventObjectGraphicsInfo_BallCushion,
- &gEventObjectGraphicsInfo_GrassCushion,
- &gEventObjectGraphicsInfo_FireCushion,
- &gEventObjectGraphicsInfo_WaterCushion,
- &gEventObjectGraphicsInfo_BigSnorlaxDoll,
- &gEventObjectGraphicsInfo_BigRhydonDoll,
- &gEventObjectGraphicsInfo_BigLaprasDoll,
- &gEventObjectGraphicsInfo_BigVenusaurDoll,
- &gEventObjectGraphicsInfo_BigCharizardDoll,
- &gEventObjectGraphicsInfo_BigBlastoiseDoll,
- &gEventObjectGraphicsInfo_BigWailmerDoll,
- &gEventObjectGraphicsInfo_BigRegirockDoll,
- &gEventObjectGraphicsInfo_BigRegiceDoll,
- &gEventObjectGraphicsInfo_BigRegisteelDoll,
- &gEventObjectGraphicsInfo_Latias,
- &gEventObjectGraphicsInfo_Latios,
- &gEventObjectGraphicsInfo_GameboyKid,
- &gEventObjectGraphicsInfo_ContestJudge,
- &gEventObjectGraphicsInfo_BrendanWatering,
- &gEventObjectGraphicsInfo_MayWatering,
- &gEventObjectGraphicsInfo_BrendanDecorating,
- &gEventObjectGraphicsInfo_MayDecorating,
- &gEventObjectGraphicsInfo_Archie,
- &gEventObjectGraphicsInfo_Maxie,
- &gEventObjectGraphicsInfo_Kyogre1,
- &gEventObjectGraphicsInfo_Groudon1,
- &gEventObjectGraphicsInfo_Fossil,
- &gEventObjectGraphicsInfo_Regirock,
- &gEventObjectGraphicsInfo_Regice,
- &gEventObjectGraphicsInfo_Registeel,
- &gEventObjectGraphicsInfo_Skitty,
- &gEventObjectGraphicsInfo_Kecleon1,
- &gEventObjectGraphicsInfo_Kyogre2,
- &gEventObjectGraphicsInfo_Groudon2,
- &gEventObjectGraphicsInfo_Rayquaza2,
- &gEventObjectGraphicsInfo_Zigzagoon,
- &gEventObjectGraphicsInfo_Pikachu,
- &gEventObjectGraphicsInfo_Azumarill,
- &gEventObjectGraphicsInfo_Wingull,
- &gEventObjectGraphicsInfo_Kecleon2,
- &gEventObjectGraphicsInfo_TuberMSwimming,
- &gEventObjectGraphicsInfo_Azurill,
- &gEventObjectGraphicsInfo_Mom,
- &gEventObjectGraphicsInfo_LinkBrendan,
- &gEventObjectGraphicsInfo_LinkMay,
- &gEventObjectGraphicsInfo_Juan,
- &gEventObjectGraphicsInfo_Scott,
- &gEventObjectGraphicsInfo_Poochyena,
- &gEventObjectGraphicsInfo_Kyogre3,
- &gEventObjectGraphicsInfo_Groudon3,
- &gEventObjectGraphicsInfo_MysteryEventDeliveryman,
- &gEventObjectGraphicsInfo_Statue,
- &gEventObjectGraphicsInfo_Kirlia,
- &gEventObjectGraphicsInfo_Dusclops,
- &gEventObjectGraphicsInfo_UnionRoomAttendant,
- &gEventObjectGraphicsInfo_Sudowoodo,
- &gEventObjectGraphicsInfo_Mew,
- &gEventObjectGraphicsInfo_Red,
- &gEventObjectGraphicsInfo_Leaf,
- &gEventObjectGraphicsInfo_Deoxys,
- &gEventObjectGraphicsInfo_BirthIslandStone,
- &gEventObjectGraphicsInfo_Brandon,
- &gEventObjectGraphicsInfo_RubySapphireBrendan,
- &gEventObjectGraphicsInfo_RubySapphireMay,
- &gEventObjectGraphicsInfo_Lugia,
- &gEventObjectGraphicsInfo_HoOh,
+ [EVENT_OBJ_GFX_BRENDAN_NORMAL] = &gEventObjectGraphicsInfo_BrendanNormal,
+ [EVENT_OBJ_GFX_BRENDAN_MACH_BIKE] = &gEventObjectGraphicsInfo_BrendanMachBike,
+ [EVENT_OBJ_GFX_BRENDAN_SURFING] = &gEventObjectGraphicsInfo_BrendanSurfing,
+ [EVENT_OBJ_GFX_BRENDAN_FIELD_MOVE] = &gEventObjectGraphicsInfo_BrendanFieldMove,
+ [EVENT_OBJ_GFX_QUINTY_PLUMP] = &gEventObjectGraphicsInfo_QuintyPlump,
+ [EVENT_OBJ_GFX_NINJA_BOY] = &gEventObjectGraphicsInfo_NinjaBoy,
+ [EVENT_OBJ_GFX_TWIN] = &gEventObjectGraphicsInfo_Twin,
+ [EVENT_OBJ_GFX_BOY_1] = &gEventObjectGraphicsInfo_Boy1,
+ [EVENT_OBJ_GFX_GIRL_1] = &gEventObjectGraphicsInfo_Girl1,
+ [EVENT_OBJ_GFX_BOY_2] = &gEventObjectGraphicsInfo_Boy2,
+ [EVENT_OBJ_GFX_GIRL_2] = &gEventObjectGraphicsInfo_Girl2,
+ [EVENT_OBJ_GFX_LITTLE_BOY] = &gEventObjectGraphicsInfo_LittleBoy,
+ [EVENT_OBJ_GFX_LITTLE_GIRL] = &gEventObjectGraphicsInfo_LittleGirl,
+ [EVENT_OBJ_GFX_BOY_3] = &gEventObjectGraphicsInfo_Boy3,
+ [EVENT_OBJ_GFX_GIRL_3] = &gEventObjectGraphicsInfo_Girl3,
+ [EVENT_OBJ_GFX_RICH_BOY] = &gEventObjectGraphicsInfo_RichBoy,
+ [EVENT_OBJ_GFX_WOMAN_1] = &gEventObjectGraphicsInfo_Woman1,
+ [EVENT_OBJ_GFX_FAT_MAN] = &gEventObjectGraphicsInfo_FatMan,
+ [EVENT_OBJ_GFX_POKEFAN_F] = &gEventObjectGraphicsInfo_PokefanF,
+ [EVENT_OBJ_GFX_MAN_1] = &gEventObjectGraphicsInfo_Man1,
+ [EVENT_OBJ_GFX_WOMAN_2] = &gEventObjectGraphicsInfo_Woman2,
+ [EVENT_OBJ_GFX_EXPERT_M] = &gEventObjectGraphicsInfo_ExpertM,
+ [EVENT_OBJ_GFX_EXPERT_F] = &gEventObjectGraphicsInfo_ExpertF,
+ [EVENT_OBJ_GFX_MAN_2] = &gEventObjectGraphicsInfo_Man2,
+ [EVENT_OBJ_GFX_WOMAN_3] = &gEventObjectGraphicsInfo_Woman3,
+ [EVENT_OBJ_GFX_POKEFAN_M] = &gEventObjectGraphicsInfo_PokefanM,
+ [EVENT_OBJ_GFX_WOMAN_4] = &gEventObjectGraphicsInfo_Woman4,
+ [EVENT_OBJ_GFX_COOK] = &gEventObjectGraphicsInfo_Cook,
+ [EVENT_OBJ_GFX_LINK_RECEPTIONIST] = &gEventObjectGraphicsInfo_LinkReceptionist,
+ [EVENT_OBJ_GFX_OLD_MAN] = &gEventObjectGraphicsInfo_OldMan,
+ [EVENT_OBJ_GFX_OLD_WOMAN] = &gEventObjectGraphicsInfo_OldWoman,
+ [EVENT_OBJ_GFX_CAMPER] = &gEventObjectGraphicsInfo_Camper,
+ [EVENT_OBJ_GFX_PICNICKER] = &gEventObjectGraphicsInfo_Picnicker,
+ [EVENT_OBJ_GFX_MAN_3] = &gEventObjectGraphicsInfo_Man3,
+ [EVENT_OBJ_GFX_WOMAN_5] = &gEventObjectGraphicsInfo_Woman5,
+ [EVENT_OBJ_GFX_YOUNGSTER] = &gEventObjectGraphicsInfo_Youngster,
+ [EVENT_OBJ_GFX_BUG_CATCHER] = &gEventObjectGraphicsInfo_BugCatcher,
+ [EVENT_OBJ_GFX_PSYCHIC_M] = &gEventObjectGraphicsInfo_PsychicM,
+ [EVENT_OBJ_GFX_SCHOOL_KID_M] = &gEventObjectGraphicsInfo_SchoolKidM,
+ [EVENT_OBJ_GFX_MANIAC] = &gEventObjectGraphicsInfo_Maniac,
+ [EVENT_OBJ_GFX_HEX_MANIAC] = &gEventObjectGraphicsInfo_HexManiac,
+ [EVENT_OBJ_GFX_RAYQUAZA_1] = &gEventObjectGraphicsInfo_Rayquaza1,
+ [EVENT_OBJ_GFX_SWIMMER_M] = &gEventObjectGraphicsInfo_SwimmerM,
+ [EVENT_OBJ_GFX_SWIMMER_F] = &gEventObjectGraphicsInfo_SwimmerF,
+ [EVENT_OBJ_GFX_BLACK_BELT] = &gEventObjectGraphicsInfo_BlackBelt,
+ [EVENT_OBJ_GFX_BEAUTY] = &gEventObjectGraphicsInfo_Beauty,
+ [EVENT_OBJ_GFX_SCIENTIST_1] = &gEventObjectGraphicsInfo_Scientist1,
+ [EVENT_OBJ_GFX_LASS] = &gEventObjectGraphicsInfo_Lass,
+ [EVENT_OBJ_GFX_GENTLEMAN] = &gEventObjectGraphicsInfo_Gentleman,
+ [EVENT_OBJ_GFX_SAILOR] = &gEventObjectGraphicsInfo_Sailor,
+ [EVENT_OBJ_GFX_FISHERMAN] = &gEventObjectGraphicsInfo_Fisherman,
+ [EVENT_OBJ_GFX_RUNNING_TRIATHLETE_M] = &gEventObjectGraphicsInfo_RunningTriathleteM,
+ [EVENT_OBJ_GFX_RUNNING_TRIATHLETE_F] = &gEventObjectGraphicsInfo_RunningTriathleteF,
+ [EVENT_OBJ_GFX_TUBER_F] = &gEventObjectGraphicsInfo_TuberF,
+ [EVENT_OBJ_GFX_TUBER_M] = &gEventObjectGraphicsInfo_TuberM,
+ [EVENT_OBJ_GFX_HIKER] = &gEventObjectGraphicsInfo_Hiker,
+ [EVENT_OBJ_GFX_CYCLING_TRIATHLETE_M] = &gEventObjectGraphicsInfo_CyclingTriathleteM,
+ [EVENT_OBJ_GFX_CYCLING_TRIATHLETE_F] = &gEventObjectGraphicsInfo_CyclingTriathleteF,
+ [EVENT_OBJ_GFX_NURSE] = &gEventObjectGraphicsInfo_Nurse,
+ [EVENT_OBJ_GFX_ITEM_BALL] = &gEventObjectGraphicsInfo_ItemBall,
+ [EVENT_OBJ_GFX_BERRY_TREE] = &gEventObjectGraphicsInfo_BerryTree,
+ [EVENT_OBJ_GFX_BERRY_TREE_EARLY_STAGES] = &gEventObjectGraphicsInfo_BerryTreeEarlyStages,
+ [EVENT_OBJ_GFX_BERRY_TREE_LATE_STAGES] = &gEventObjectGraphicsInfo_BerryTreeLateStages,
+ [EVENT_OBJ_GFX_BRENDAN_ACRO_BIKE] = &gEventObjectGraphicsInfo_BrendanAcroBike,
+ [EVENT_OBJ_GFX_PROF_BIRCH] = &gEventObjectGraphicsInfo_ProfBirch,
+ [EVENT_OBJ_GFX_MAN_4] = &gEventObjectGraphicsInfo_Man4,
+ [EVENT_OBJ_GFX_MAN_5] = &gEventObjectGraphicsInfo_Man5,
+ [EVENT_OBJ_GFX_REPORTER_M] = &gEventObjectGraphicsInfo_ReporterM,
+ [EVENT_OBJ_GFX_REPORTER_F] = &gEventObjectGraphicsInfo_ReporterF,
+ [EVENT_OBJ_GFX_BARD] = &gEventObjectGraphicsInfo_Bard,
+ [EVENT_OBJ_GFX_ANABEL] = &gEventObjectGraphicsInfo_Anabel,
+ [EVENT_OBJ_GFX_TUCKER] = &gEventObjectGraphicsInfo_Tucker,
+ [EVENT_OBJ_GFX_GRETA] = &gEventObjectGraphicsInfo_Greta,
+ [EVENT_OBJ_GFX_SPENSER] = &gEventObjectGraphicsInfo_Spenser,
+ [EVENT_OBJ_GFX_NOLAND] = &gEventObjectGraphicsInfo_Noland,
+ [EVENT_OBJ_GFX_LUCY] = &gEventObjectGraphicsInfo_Lucy,
+ [EVENT_OBJ_GFX_UNUSED_NATU_DOLL] = &gEventObjectGraphicsInfo_UnusedNatuDoll,
+ [EVENT_OBJ_GFX_UNUSED_MAGNEMITE_DOLL] = &gEventObjectGraphicsInfo_UnusedMagnemiteDoll,
+ [EVENT_OBJ_GFX_UNUSED_SQUIRTLE_DOLL] = &gEventObjectGraphicsInfo_UnusedSquirtleDoll,
+ [EVENT_OBJ_GFX_UNUSED_WOOPER_DOLL] = &gEventObjectGraphicsInfo_UnusedWooperDoll,
+ [EVENT_OBJ_GFX_UNUSED_PIKACHU_DOLL] = &gEventObjectGraphicsInfo_UnusedPikachuDoll,
+ [EVENT_OBJ_GFX_UNUSED_PORYGON2_DOLL] = &gEventObjectGraphicsInfo_UnusedPorygon2Doll,
+ [EVENT_OBJ_GFX_CUTTABLE_TREE] = &gEventObjectGraphicsInfo_CuttableTree,
+ [EVENT_OBJ_GFX_MART_EMPLOYEE] = &gEventObjectGraphicsInfo_MartEmployee,
+ [EVENT_OBJ_GFX_ROOFTOP_SALE_WOMAN] = &gEventObjectGraphicsInfo_RooftopSaleWoman,
+ [EVENT_OBJ_GFX_TEALA] = &gEventObjectGraphicsInfo_Teala,
+ [EVENT_OBJ_GFX_BREAKABLE_ROCK] = &gEventObjectGraphicsInfo_BreakableRock,
+ [EVENT_OBJ_GFX_PUSHABLE_BOULDER] = &gEventObjectGraphicsInfo_PushableBoulder,
+ [EVENT_OBJ_GFX_MR_BRINEYS_BOAT] = &gEventObjectGraphicsInfo_MrBrineysBoat,
+ [EVENT_OBJ_GFX_MAY_NORMAL] = &gEventObjectGraphicsInfo_MayNormal,
+ [EVENT_OBJ_GFX_MAY_MACH_BIKE] = &gEventObjectGraphicsInfo_MayMachBike,
+ [EVENT_OBJ_GFX_MAY_ACRO_BIKE] = &gEventObjectGraphicsInfo_MayAcroBike,
+ [EVENT_OBJ_GFX_MAY_SURFING] = &gEventObjectGraphicsInfo_MaySurfing,
+ [EVENT_OBJ_GFX_MAY_FIELD_MOVE] = &gEventObjectGraphicsInfo_MayFieldMove,
+ [EVENT_OBJ_GFX_TRUCK] = &gEventObjectGraphicsInfo_Truck,
+ [EVENT_OBJ_GFX_VIGOROTH_CARRYING_BOX] = &gEventObjectGraphicsInfo_VigorothCarryingBox,
+ [EVENT_OBJ_GFX_VIGOROTH_FACING_AWAY] = &gEventObjectGraphicsInfo_VigorothFacingAway,
+ [EVENT_OBJ_GFX_BIRCHS_BAG] = &gEventObjectGraphicsInfo_BirchsBag,
+ [EVENT_OBJ_GFX_ZIGZAGOON_1] = &gEventObjectGraphicsInfo_EnemyZigzagoon,
+ [EVENT_OBJ_GFX_ARTIST] = &gEventObjectGraphicsInfo_Artist,
+ [EVENT_OBJ_GFX_RIVAL_BRENDAN_NORMAL] = &gEventObjectGraphicsInfo_RivalBrendanNormal,
+ [EVENT_OBJ_GFX_RIVAL_BRENDAN_MACH_BIKE] = &gEventObjectGraphicsInfo_RivalBrendanMachBike,
+ [EVENT_OBJ_GFX_RIVAL_BRENDAN_ACRO_BIKE] = &gEventObjectGraphicsInfo_RivalBrendanAcroBike,
+ [EVENT_OBJ_GFX_RIVAL_BRENDAN_SURFING] = &gEventObjectGraphicsInfo_RivalBrendanSurfing,
+ [EVENT_OBJ_GFX_RIVAL_BRENDAN_FIELD_MOVE] = &gEventObjectGraphicsInfo_RivalBrendanFieldMove,
+ [EVENT_OBJ_GFX_RIVAL_MAY_NORMAL] = &gEventObjectGraphicsInfo_RivalMayNormal,
+ [EVENT_OBJ_GFX_RIVAL_MAY_MACH_BIKE] = &gEventObjectGraphicsInfo_RivalMayMachBike,
+ [EVENT_OBJ_GFX_RIVAL_MAY_ACRO_BIKE] = &gEventObjectGraphicsInfo_RivalMayAcroBike,
+ [EVENT_OBJ_GFX_RIVAL_MAY_SURFING] = &gEventObjectGraphicsInfo_RivalMaySurfing,
+ [EVENT_OBJ_GFX_RIVAL_MAY_FIELD_MOVE] = &gEventObjectGraphicsInfo_RivalMayFieldMove,
+ [EVENT_OBJ_GFX_CAMERAMAN] = &gEventObjectGraphicsInfo_Cameraman,
+ [EVENT_OBJ_GFX_BRENDAN_UNDERWATER] = &gEventObjectGraphicsInfo_BrendanUnderwater,
+ [EVENT_OBJ_GFX_MAY_UNDERWATER] = &gEventObjectGraphicsInfo_MayUnderwater,
+ [EVENT_OBJ_GFX_MOVING_BOX] = &gEventObjectGraphicsInfo_MovingBox,
+ [EVENT_OBJ_GFX_CABLE_CAR] = &gEventObjectGraphicsInfo_CableCar,
+ [EVENT_OBJ_GFX_SCIENTIST_2] = &gEventObjectGraphicsInfo_Scientist2,
+ [EVENT_OBJ_GFX_DEVON_EMPLOYEE] = &gEventObjectGraphicsInfo_DevonEmployee,
+ [EVENT_OBJ_GFX_AQUA_MEMBER_M] = &gEventObjectGraphicsInfo_AquaMemberM,
+ [EVENT_OBJ_GFX_AQUA_MEMBER_F] = &gEventObjectGraphicsInfo_AquaMemberF,
+ [EVENT_OBJ_GFX_MAGMA_MEMBER_M] = &gEventObjectGraphicsInfo_MagmaMemberM,
+ [EVENT_OBJ_GFX_MAGMA_MEMBER_F] = &gEventObjectGraphicsInfo_MagmaMemberF,
+ [EVENT_OBJ_GFX_SIDNEY] = &gEventObjectGraphicsInfo_Sidney,
+ [EVENT_OBJ_GFX_PHOEBE] = &gEventObjectGraphicsInfo_Phoebe,
+ [EVENT_OBJ_GFX_GLACIA] = &gEventObjectGraphicsInfo_Glacia,
+ [EVENT_OBJ_GFX_DRAKE] = &gEventObjectGraphicsInfo_Drake,
+ [EVENT_OBJ_GFX_ROXANNE] = &gEventObjectGraphicsInfo_Roxanne,
+ [EVENT_OBJ_GFX_BRAWLY] = &gEventObjectGraphicsInfo_Brawly,
+ [EVENT_OBJ_GFX_WATTSON] = &gEventObjectGraphicsInfo_Wattson,
+ [EVENT_OBJ_GFX_FLANNERY] = &gEventObjectGraphicsInfo_Flannery,
+ [EVENT_OBJ_GFX_NORMAN] = &gEventObjectGraphicsInfo_Norman,
+ [EVENT_OBJ_GFX_WINONA] = &gEventObjectGraphicsInfo_Winona,
+ [EVENT_OBJ_GFX_LIZA] = &gEventObjectGraphicsInfo_Liza,
+ [EVENT_OBJ_GFX_TATE] = &gEventObjectGraphicsInfo_Tate,
+ [EVENT_OBJ_GFX_WALLACE] = &gEventObjectGraphicsInfo_Wallace,
+ [EVENT_OBJ_GFX_STEVEN] = &gEventObjectGraphicsInfo_Steven,
+ [EVENT_OBJ_GFX_WALLY] = &gEventObjectGraphicsInfo_Wally,
+ [EVENT_OBJ_GFX_LITTLE_BOY_3] = &gEventObjectGraphicsInfo_RubySapphireLittleBoy,
+ [EVENT_OBJ_GFX_BRENDAN_FISHING] = &gEventObjectGraphicsInfo_BrendanFishing,
+ [EVENT_OBJ_GFX_MAY_FISHING] = &gEventObjectGraphicsInfo_MayFishing,
+ [EVENT_OBJ_GFX_HOT_SPRINGS_OLD_WOMAN] = &gEventObjectGraphicsInfo_HotSpringsOldWoman,
+ [EVENT_OBJ_GFX_SS_TIDAL] = &gEventObjectGraphicsInfo_SSTidal,
+ [EVENT_OBJ_GFX_SUBMARINE_SHADOW] = &gEventObjectGraphicsInfo_SubmarineShadow,
+ [EVENT_OBJ_GFX_PICHU_DOLL] = &gEventObjectGraphicsInfo_PichuDoll,
+ [EVENT_OBJ_GFX_PIKACHU_DOLL] = &gEventObjectGraphicsInfo_PikachuDoll,
+ [EVENT_OBJ_GFX_MARILL_DOLL] = &gEventObjectGraphicsInfo_MarillDoll,
+ [EVENT_OBJ_GFX_TOGEPI_DOLL] = &gEventObjectGraphicsInfo_TogepiDoll,
+ [EVENT_OBJ_GFX_CYNDAQUIL_DOLL] = &gEventObjectGraphicsInfo_CyndaquilDoll,
+ [EVENT_OBJ_GFX_CHIKORITA_DOLL] = &gEventObjectGraphicsInfo_ChikoritaDoll,
+ [EVENT_OBJ_GFX_TOTODILE_DOLL] = &gEventObjectGraphicsInfo_TotodileDoll,
+ [EVENT_OBJ_GFX_JIGGLYPUFF_DOLL] = &gEventObjectGraphicsInfo_JigglypuffDoll,
+ [EVENT_OBJ_GFX_MEOWTH_DOLL] = &gEventObjectGraphicsInfo_MeowthDoll,
+ [EVENT_OBJ_GFX_CLEFAIRY_DOLL] = &gEventObjectGraphicsInfo_ClefairyDoll,
+ [EVENT_OBJ_GFX_DITTO_DOLL] = &gEventObjectGraphicsInfo_DittoDoll,
+ [EVENT_OBJ_GFX_SMOOCHUM_DOLL] = &gEventObjectGraphicsInfo_SmoochumDoll,
+ [EVENT_OBJ_GFX_TREECKO_DOLL] = &gEventObjectGraphicsInfo_TreeckoDoll,
+ [EVENT_OBJ_GFX_TORCHIC_DOLL] = &gEventObjectGraphicsInfo_TorchicDoll,
+ [EVENT_OBJ_GFX_MUDKIP_DOLL] = &gEventObjectGraphicsInfo_MudkipDoll,
+ [EVENT_OBJ_GFX_DUSKULL_DOLL] = &gEventObjectGraphicsInfo_DuskullDoll,
+ [EVENT_OBJ_GFX_WYNAUT_DOLL] = &gEventObjectGraphicsInfo_WynautDoll,
+ [EVENT_OBJ_GFX_BALTOY_DOLL] = &gEventObjectGraphicsInfo_BaltoyDoll,
+ [EVENT_OBJ_GFX_KECLEON_DOLL] = &gEventObjectGraphicsInfo_KecleonDoll,
+ [EVENT_OBJ_GFX_AZURILL_DOLL] = &gEventObjectGraphicsInfo_AzurillDoll,
+ [EVENT_OBJ_GFX_SKITTY_DOLL] = &gEventObjectGraphicsInfo_SkittyDoll,
+ [EVENT_OBJ_GFX_SWABLU_DOLL] = &gEventObjectGraphicsInfo_SwabluDoll,
+ [EVENT_OBJ_GFX_GULPIN_DOLL] = &gEventObjectGraphicsInfo_GulpinDoll,
+ [EVENT_OBJ_GFX_LOTAD_DOLL] = &gEventObjectGraphicsInfo_LotadDoll,
+ [EVENT_OBJ_GFX_SEEDOT_DOLL] = &gEventObjectGraphicsInfo_SeedotDoll,
+ [EVENT_OBJ_GFX_PIKA_CUSHION] = &gEventObjectGraphicsInfo_PikaCushion,
+ [EVENT_OBJ_GFX_ROUND_CUSHION] = &gEventObjectGraphicsInfo_RoundCushion,
+ [EVENT_OBJ_GFX_KISS_CUSHION] = &gEventObjectGraphicsInfo_KissCushion,
+ [EVENT_OBJ_GFX_ZIGZAG_CUSHION] = &gEventObjectGraphicsInfo_ZigzagCushion,
+ [EVENT_OBJ_GFX_SPIN_CUSHION] = &gEventObjectGraphicsInfo_SpinCushion,
+ [EVENT_OBJ_GFX_DIAMOND_CUSHION] = &gEventObjectGraphicsInfo_DiamondCushion,
+ [EVENT_OBJ_GFX_BALL_CUSHION] = &gEventObjectGraphicsInfo_BallCushion,
+ [EVENT_OBJ_GFX_GRASS_CUSHION] = &gEventObjectGraphicsInfo_GrassCushion,
+ [EVENT_OBJ_GFX_FIRE_CUSHION] = &gEventObjectGraphicsInfo_FireCushion,
+ [EVENT_OBJ_GFX_WATER_CUSHION] = &gEventObjectGraphicsInfo_WaterCushion,
+ [EVENT_OBJ_GFX_BIG_SNORLAX_DOLL] = &gEventObjectGraphicsInfo_BigSnorlaxDoll,
+ [EVENT_OBJ_GFX_BIG_RHYDON_DOLL] = &gEventObjectGraphicsInfo_BigRhydonDoll,
+ [EVENT_OBJ_GFX_BIG_LAPRAS_DOLL] = &gEventObjectGraphicsInfo_BigLaprasDoll,
+ [EVENT_OBJ_GFX_BIG_VENUSAUR_DOLL] = &gEventObjectGraphicsInfo_BigVenusaurDoll,
+ [EVENT_OBJ_GFX_BIG_CHARIZARD_DOLL] = &gEventObjectGraphicsInfo_BigCharizardDoll,
+ [EVENT_OBJ_GFX_BIG_BLASTOISE_DOLL] = &gEventObjectGraphicsInfo_BigBlastoiseDoll,
+ [EVENT_OBJ_GFX_BIG_WAILMER_DOLL] = &gEventObjectGraphicsInfo_BigWailmerDoll,
+ [EVENT_OBJ_GFX_BIG_REGIROCK_DOLL] = &gEventObjectGraphicsInfo_BigRegirockDoll,
+ [EVENT_OBJ_GFX_BIG_REGICE_DOLL] = &gEventObjectGraphicsInfo_BigRegiceDoll,
+ [EVENT_OBJ_GFX_BIG_REGISTEEL_DOLL] = &gEventObjectGraphicsInfo_BigRegisteelDoll,
+ [EVENT_OBJ_GFX_LATIAS] = &gEventObjectGraphicsInfo_Latias,
+ [EVENT_OBJ_GFX_LATIOS] = &gEventObjectGraphicsInfo_Latios,
+ [EVENT_OBJ_GFX_GAMEBOY_KID] = &gEventObjectGraphicsInfo_GameboyKid,
+ [EVENT_OBJ_GFX_CONTEST_JUDGE] = &gEventObjectGraphicsInfo_ContestJudge,
+ [EVENT_OBJ_GFX_BRENDAN_WATERING] = &gEventObjectGraphicsInfo_BrendanWatering,
+ [EVENT_OBJ_GFX_MAY_WATERING] = &gEventObjectGraphicsInfo_MayWatering,
+ [EVENT_OBJ_GFX_BRENDAN_DECORATING] = &gEventObjectGraphicsInfo_BrendanDecorating,
+ [EVENT_OBJ_GFX_MAY_DECORATING] = &gEventObjectGraphicsInfo_MayDecorating,
+ [EVENT_OBJ_GFX_ARCHIE] = &gEventObjectGraphicsInfo_Archie,
+ [EVENT_OBJ_GFX_MAXIE] = &gEventObjectGraphicsInfo_Maxie,
+ [EVENT_OBJ_GFX_KYOGRE_1] = &gEventObjectGraphicsInfo_Kyogre1,
+ [EVENT_OBJ_GFX_GROUDON_1] = &gEventObjectGraphicsInfo_Groudon1,
+ [EVENT_OBJ_GFX_FOSSIL] = &gEventObjectGraphicsInfo_Fossil,
+ [EVENT_OBJ_GFX_REGIROCK] = &gEventObjectGraphicsInfo_Regirock,
+ [EVENT_OBJ_GFX_REGICE] = &gEventObjectGraphicsInfo_Regice,
+ [EVENT_OBJ_GFX_REGISTEEL] = &gEventObjectGraphicsInfo_Registeel,
+ [EVENT_OBJ_GFX_SKITTY] = &gEventObjectGraphicsInfo_Skitty,
+ [EVENT_OBJ_GFX_KECLEON_1] = &gEventObjectGraphicsInfo_Kecleon1,
+ [EVENT_OBJ_GFX_KYOGRE_2] = &gEventObjectGraphicsInfo_Kyogre2,
+ [EVENT_OBJ_GFX_GROUDON_2] = &gEventObjectGraphicsInfo_Groudon2,
+ [EVENT_OBJ_GFX_RAYQUAZA_2] = &gEventObjectGraphicsInfo_Rayquaza2,
+ [EVENT_OBJ_GFX_ZIGZAGOON_2] = &gEventObjectGraphicsInfo_Zigzagoon,
+ [EVENT_OBJ_GFX_PIKACHU] = &gEventObjectGraphicsInfo_Pikachu,
+ [EVENT_OBJ_GFX_AZUMARILL] = &gEventObjectGraphicsInfo_Azumarill,
+ [EVENT_OBJ_GFX_WINGULL] = &gEventObjectGraphicsInfo_Wingull,
+ [EVENT_OBJ_GFX_KECLEON_2] = &gEventObjectGraphicsInfo_Kecleon2,
+ [EVENT_OBJ_GFX_TUBER_M_SWIMMING] = &gEventObjectGraphicsInfo_TuberMSwimming,
+ [EVENT_OBJ_GFX_AZURILL] = &gEventObjectGraphicsInfo_Azurill,
+ [EVENT_OBJ_GFX_MOM] = &gEventObjectGraphicsInfo_Mom,
+ [EVENT_OBJ_GFX_LINK_BRENDAN] = &gEventObjectGraphicsInfo_LinkBrendan,
+ [EVENT_OBJ_GFX_LINK_MAY] = &gEventObjectGraphicsInfo_LinkMay,
+ [EVENT_OBJ_GFX_JUAN] = &gEventObjectGraphicsInfo_Juan,
+ [EVENT_OBJ_GFX_SCOTT] = &gEventObjectGraphicsInfo_Scott,
+ [EVENT_OBJ_GFX_POOCHYENA] = &gEventObjectGraphicsInfo_Poochyena,
+ [EVENT_OBJ_GFX_KYOGRE_3] = &gEventObjectGraphicsInfo_Kyogre3,
+ [EVENT_OBJ_GFX_GROUDON_3] = &gEventObjectGraphicsInfo_Groudon3,
+ [EVENT_OBJ_GFX_MYSTERY_GIFT_MAN] = &gEventObjectGraphicsInfo_MysteryEventDeliveryman,
+ [EVENT_OBJ_GFX_TRICK_HOUSE_STATUE] = &gEventObjectGraphicsInfo_Statue,
+ [EVENT_OBJ_GFX_KIRLIA] = &gEventObjectGraphicsInfo_Kirlia,
+ [EVENT_OBJ_GFX_DUSCLOPS] = &gEventObjectGraphicsInfo_Dusclops,
+ [EVENT_OBJ_GFX_UNION_ROOM_NURSE] = &gEventObjectGraphicsInfo_UnionRoomAttendant,
+ [EVENT_OBJ_GFX_SUDOWOODO] = &gEventObjectGraphicsInfo_Sudowoodo,
+ [EVENT_OBJ_GFX_MEW] = &gEventObjectGraphicsInfo_Mew,
+ [EVENT_OBJ_GFX_RED] = &gEventObjectGraphicsInfo_Red,
+ [EVENT_OBJ_GFX_LEAF] = &gEventObjectGraphicsInfo_Leaf,
+ [EVENT_OBJ_GFX_DEOXYS] = &gEventObjectGraphicsInfo_Deoxys,
+ [EVENT_OBJ_GFX_DEOXYS_TRIANGLE] = &gEventObjectGraphicsInfo_BirthIslandStone,
+ [EVENT_OBJ_GFX_BRANDON] = &gEventObjectGraphicsInfo_Brandon,
+ [EVENT_OBJ_GFX_LINK_RS_BRENDAN] = &gEventObjectGraphicsInfo_RubySapphireBrendan,
+ [EVENT_OBJ_GFX_LINK_RS_MAY] = &gEventObjectGraphicsInfo_RubySapphireMay,
+ [EVENT_OBJ_GFX_LUGIA] = &gEventObjectGraphicsInfo_Lugia,
+ [EVENT_OBJ_GFX_HOOH] = &gEventObjectGraphicsInfo_HoOh,
};
const struct EventObjectGraphicsInfo *const gMauvilleOldManGraphicsInfoPointers[] = {
diff --git a/src/data/graphics/decorations.h b/src/data/graphics/decorations.h
index 62d86d48e..d8b865fcf 100644
--- a/src/data/graphics/decorations.h
+++ b/src/data/graphics/decorations.h
@@ -1,125 +1,125 @@
-const u32 gUnknown_08DB7AA0[] = INCBIN_U32("graphics/decorations/decor_heavy_desk.4bpp.lz");
-const u32 gUnknown_08DB7B34[] = INCBIN_U32("graphics/decorations/decor_heavy_desk.gbapal.lz");
+const u32 gDecorIcon_HeavyDesk[] = INCBIN_U32("graphics/decorations/decor_heavy_desk.4bpp.lz");
+const u32 gDecorIconPalette_HeavyDesk[] = INCBIN_U32("graphics/decorations/decor_heavy_desk.gbapal.lz");
-const u32 gUnknown_08DB7B5C[] = INCBIN_U32("graphics/decorations/decor_ragged_desk.4bpp.lz");
-const u32 gUnknown_08DB7BEC[] = INCBIN_U32("graphics/decorations/decor_ragged_desk.gbapal.lz");
+const u32 gDecorIcon_RaggedDesk[] = INCBIN_U32("graphics/decorations/decor_ragged_desk.4bpp.lz");
+const u32 gDecorIconPalette_RaggedDesk[] = INCBIN_U32("graphics/decorations/decor_ragged_desk.gbapal.lz");
-const u32 gUnknown_08DB7C08[] = INCBIN_U32("graphics/decorations/decor_comfort_desk.4bpp.lz");
-const u32 gUnknown_08DB7CE8[] = INCBIN_U32("graphics/decorations/decor_comfort_desk.gbapal.lz");
+const u32 gDecorIcon_ComfortDesk[] = INCBIN_U32("graphics/decorations/decor_comfort_desk.4bpp.lz");
+const u32 gDecorIconPalette_ComfortDesk[] = INCBIN_U32("graphics/decorations/decor_comfort_desk.gbapal.lz");
-const u32 gUnknown_08DB7D08[] = INCBIN_U32("graphics/decorations/decor_pretty_desk.4bpp.lz");
-const u32 gUnknown_08DB7DCC[] = INCBIN_U32("graphics/decorations/decor_pretty_desk.gbapal.lz");
+const u32 gDecorIcon_PrettyDesk[] = INCBIN_U32("graphics/decorations/decor_pretty_desk.4bpp.lz");
+const u32 gDecorIconPalette_PrettyDesk[] = INCBIN_U32("graphics/decorations/decor_pretty_desk.gbapal.lz");
-const u32 gUnknown_08DB7DF4[] = INCBIN_U32("graphics/decorations/decor_brick_desk.4bpp.lz");
-const u32 gUnknown_08DB7EA0[] = INCBIN_U32("graphics/decorations/decor_brick_desk.gbapal.lz");
+const u32 gDecorIcon_BrickDesk[] = INCBIN_U32("graphics/decorations/decor_brick_desk.4bpp.lz");
+const u32 gDecorIconPalette_BrickDesk[] = INCBIN_U32("graphics/decorations/decor_brick_desk.gbapal.lz");
-const u32 gUnknown_08DB7EC4[] = INCBIN_U32("graphics/decorations/decor_camp_desk.4bpp.lz");
-const u32 gUnknown_08DB7F60[] = INCBIN_U32("graphics/decorations/decor_camp_desk.gbapal.lz");
+const u32 gDecorIcon_CampDesk[] = INCBIN_U32("graphics/decorations/decor_camp_desk.4bpp.lz");
+const u32 gDecorIconPalette_CampDesk[] = INCBIN_U32("graphics/decorations/decor_camp_desk.gbapal.lz");
-const u32 gUnknown_08DB7F7C[] = INCBIN_U32("graphics/decorations/decor_hard_desk.4bpp.lz");
-const u32 gUnknown_08DB8070[] = INCBIN_U32("graphics/decorations/decor_hard_desk.gbapal.lz");
+const u32 gDecorIcon_HardDesk[] = INCBIN_U32("graphics/decorations/decor_hard_desk.4bpp.lz");
+const u32 gDecorIconPalette_HardDesk[] = INCBIN_U32("graphics/decorations/decor_hard_desk.gbapal.lz");
-const u32 gUnknown_08DB808C[] = INCBIN_U32("graphics/decorations/decor_red_plant.4bpp.lz");
-const u32 gUnknown_08DB8138[] = INCBIN_U32("graphics/decorations/decor_red_plant.gbapal.lz");
+const u32 gDecorIcon_RedPlant[] = INCBIN_U32("graphics/decorations/decor_red_plant.4bpp.lz");
+const u32 gDecorIconPalette_RedPlant[] = INCBIN_U32("graphics/decorations/decor_red_plant.gbapal.lz");
-const u32 gUnknown_08DB8160[] = INCBIN_U32("graphics/decorations/decor_tropical_plant.4bpp.lz");
-const u32 gUnknown_08DB8218[] = INCBIN_U32("graphics/decorations/decor_tropical_plant.gbapal.lz");
+const u32 gDecorIcon_TropicalPlant[] = INCBIN_U32("graphics/decorations/decor_tropical_plant.4bpp.lz");
+const u32 gDecorIconPalette_TropicalPlant[] = INCBIN_U32("graphics/decorations/decor_tropical_plant.gbapal.lz");
-const u32 gUnknown_08DB823C[] = INCBIN_U32("graphics/decorations/decor_pretty_flowers.4bpp.lz");
-const u32 gUnknown_08DB8300[] = INCBIN_U32("graphics/decorations/decor_pretty_flowers.gbapal.lz");
+const u32 gDecorIcon_PrettyFlowers[] = INCBIN_U32("graphics/decorations/decor_pretty_flowers.4bpp.lz");
+const u32 gDecorIconPalette_PrettyFlowers[] = INCBIN_U32("graphics/decorations/decor_pretty_flowers.gbapal.lz");
-const u32 gUnknown_08DB8328[] = INCBIN_U32("graphics/decorations/decor_colorful_plant.4bpp.lz");
-const u32 gUnknown_08DB8430[] = INCBIN_U32("graphics/decorations/decor_colorful_plant.gbapal.lz");
+const u32 gDecorIcon_ColorfulPlant[] = INCBIN_U32("graphics/decorations/decor_colorful_plant.4bpp.lz");
+const u32 gDecorIconPalette_ColorfulPlant[] = INCBIN_U32("graphics/decorations/decor_colorful_plant.gbapal.lz");
-const u32 gUnknown_08DB8458[] = INCBIN_U32("graphics/decorations/decor_big_plant.4bpp.lz");
-const u32 gUnknown_08DB8528[] = INCBIN_U32("graphics/decorations/decor_big_plant.gbapal.lz");
+const u32 gDecorIcon_BigPlant[] = INCBIN_U32("graphics/decorations/decor_big_plant.4bpp.lz");
+const u32 gDecorIconPalette_BigPlant[] = INCBIN_U32("graphics/decorations/decor_big_plant.gbapal.lz");
-const u32 gUnknown_08DB854C[] = INCBIN_U32("graphics/decorations/decor_gorgeous_plant.4bpp.lz");
-const u32 gUnknown_08DB862C[] = INCBIN_U32("graphics/decorations/decor_gorgeous_plant.gbapal.lz");
+const u32 gDecorIcon_GorgeousPlant[] = INCBIN_U32("graphics/decorations/decor_gorgeous_plant.4bpp.lz");
+const u32 gDecorIconPalette_GorgeousPlant[] = INCBIN_U32("graphics/decorations/decor_gorgeous_plant.gbapal.lz");
-const u32 gUnknown_08DB8654[] = INCBIN_U32("graphics/decorations/decor_red_brick.4bpp.lz");
-const u32 gUnknown_08DB86C4[] = INCBIN_U32("graphics/decorations/decor_red_brick.gbapal.lz");
+const u32 gDecorIcon_RedBrick[] = INCBIN_U32("graphics/decorations/decor_red_brick.4bpp.lz");
+const u32 gDecorIconPalette_RedBrick[] = INCBIN_U32("graphics/decorations/decor_red_brick.gbapal.lz");
-const u32 gUnknown_08DB86E0[] = INCBIN_U32("graphics/decorations/decor_yellow_brick.4bpp.lz");
-const u32 gUnknown_08DB8750[] = INCBIN_U32("graphics/decorations/decor_yellow_brick.gbapal.lz");
+const u32 gDecorIcon_YellowBrick[] = INCBIN_U32("graphics/decorations/decor_yellow_brick.4bpp.lz");
+const u32 gDecorIconPalette_YellowBrick[] = INCBIN_U32("graphics/decorations/decor_yellow_brick.gbapal.lz");
-const u32 gUnknown_08DB876C[] = INCBIN_U32("graphics/decorations/decor_blue_brick.4bpp.lz");
-const u32 gUnknown_08DB87DC[] = INCBIN_U32("graphics/decorations/decor_blue_brick.gbapal.lz");
+const u32 gDecorIcon_BlueBrick[] = INCBIN_U32("graphics/decorations/decor_blue_brick.4bpp.lz");
+const u32 gDecorIconPalette_BlueBrick[] = INCBIN_U32("graphics/decorations/decor_blue_brick.gbapal.lz");
-const u32 gUnknown_08DB87F8[] = INCBIN_U32("graphics/decorations/decor_red_tent.4bpp.lz");
-const u32 gUnknown_08DB88D8[] = INCBIN_U32("graphics/decorations/decor_red_tent.gbapal.lz");
+const u32 gDecorIcon_RedTent[] = INCBIN_U32("graphics/decorations/decor_red_tent.4bpp.lz");
+const u32 gDecorIconPalette_RedTent[] = INCBIN_U32("graphics/decorations/decor_red_tent.gbapal.lz");
-const u32 gUnknown_08DB8900[] = INCBIN_U32("graphics/decorations/decor_blue_tent.4bpp.lz");
-const u32 gUnknown_08DB89E0[] = INCBIN_U32("graphics/decorations/decor_blue_tent.gbapal.lz");
+const u32 gDecorIcon_BlueTent[] = INCBIN_U32("graphics/decorations/decor_blue_tent.4bpp.lz");
+const u32 gDecorIconPalette_BlueTent[] = INCBIN_U32("graphics/decorations/decor_blue_tent.gbapal.lz");
-const u32 gUnknown_08DB8A08[] = INCBIN_U32("graphics/decorations/decor_solid_board.4bpp.lz");
-const u32 gUnknown_08DB8A68[] = INCBIN_U32("graphics/decorations/decor_solid_board.gbapal.lz");
+const u32 gDecorIcon_SolidBoard[] = INCBIN_U32("graphics/decorations/decor_solid_board.4bpp.lz");
+const u32 gDecorIconPalette_SolidBoard[] = INCBIN_U32("graphics/decorations/decor_solid_board.gbapal.lz");
-const u32 gUnknown_08DB8A84[] = INCBIN_U32("graphics/decorations/decor_slide.4bpp.lz");
-const u32 gUnknown_08DB8B40[] = INCBIN_U32("graphics/decorations/decor_slide.gbapal.lz");
+const u32 gDecorIcon_Slide[] = INCBIN_U32("graphics/decorations/decor_slide.4bpp.lz");
+const u32 gDecorIconPalette_Slide[] = INCBIN_U32("graphics/decorations/decor_slide.gbapal.lz");
-const u32 gUnknown_08DB8B68[] = INCBIN_U32("graphics/decorations/decor_tire.4bpp.lz");
-const u32 gUnknown_08DB8C40[] = INCBIN_U32("graphics/decorations/decor_tire.gbapal.lz");
+const u32 gDecorIcon_Tire[] = INCBIN_U32("graphics/decorations/decor_tire.4bpp.lz");
+const u32 gDecorIconPalette_Tire[] = INCBIN_U32("graphics/decorations/decor_tire.gbapal.lz");
-const u32 gUnknown_08DB8C5C[] = INCBIN_U32("graphics/decorations/decor_stand.4bpp.lz");
-const u32 gUnknown_08DB8CF4[] = INCBIN_U32("graphics/decorations/decor_stand.gbapal.lz");
+const u32 gDecorIcon_Stand[] = INCBIN_U32("graphics/decorations/decor_stand.4bpp.lz");
+const u32 gDecorIconPalette_Stand[] = INCBIN_U32("graphics/decorations/decor_stand.gbapal.lz");
-const u32 gUnknown_08DB8D18[] = INCBIN_U32("graphics/decorations/decor_breakable_door.4bpp.lz");
-const u32 gUnknown_08DB8DB0[] = INCBIN_U32("graphics/decorations/decor_breakable_door.gbapal.lz");
+const u32 gDecorIcon_BreakableDoor[] = INCBIN_U32("graphics/decorations/decor_breakable_door.4bpp.lz");
+const u32 gDecorIconPalette_BreakableDoor[] = INCBIN_U32("graphics/decorations/decor_breakable_door.gbapal.lz");
-const u32 gUnknown_08DB8DD4[] = INCBIN_U32("graphics/decorations/decor_sand_ornament.4bpp.lz");
-const u32 gUnknown_08DB8E80[] = INCBIN_U32("graphics/decorations/decor_sand_ornament.gbapal.lz");
+const u32 gDecorIcon_SandOrnament[] = INCBIN_U32("graphics/decorations/decor_sand_ornament.4bpp.lz");
+const u32 gDecorIconPalette_SandOrnament[] = INCBIN_U32("graphics/decorations/decor_sand_ornament.gbapal.lz");
-const u32 gUnknown_08DB8EA0[] = INCBIN_U32("graphics/decorations/decor_glass_ornament.4bpp.lz");
-const u32 gUnknown_08DB8F58[] = INCBIN_U32("graphics/decorations/decor_glass_ornament.gbapal.lz");
+const u32 gDecorIcon_GlassOrnament[] = INCBIN_U32("graphics/decorations/decor_glass_ornament.4bpp.lz");
+const u32 gDecorIconPalette_GlassOrnament[] = INCBIN_U32("graphics/decorations/decor_glass_ornament.gbapal.lz");
-const u32 gUnknown_08DB8F7C[] = INCBIN_U32("graphics/decorations/decor_surf_mat.4bpp.lz");
-const u32 gUnknown_08DB9038[] = INCBIN_U32("graphics/decorations/decor_surf_mat.gbapal.lz");
+const u32 gDecorIcon_SurfMat[] = INCBIN_U32("graphics/decorations/decor_surf_mat.4bpp.lz");
+const u32 gDecorIconPalette_SurfMat[] = INCBIN_U32("graphics/decorations/decor_surf_mat.gbapal.lz");
-const u32 gUnknown_08DB9058[] = INCBIN_U32("graphics/decorations/decor_thunder_mat.4bpp.lz");
-const u32 gUnknown_08DB9130[] = INCBIN_U32("graphics/decorations/decor_thunder_mat.gbapal.lz");
+const u32 gDecorIcon_ThunderMat[] = INCBIN_U32("graphics/decorations/decor_thunder_mat.4bpp.lz");
+const u32 gDecorIconPalette_ThunderMat[] = INCBIN_U32("graphics/decorations/decor_thunder_mat.gbapal.lz");
-const u32 gUnknown_08DB9154[] = INCBIN_U32("graphics/decorations/decor_fire_blast_mat.4bpp.lz");
-const u32 gUnknown_08DB9218[] = INCBIN_U32("graphics/decorations/decor_fire_blast_mat.gbapal.lz");
+const u32 gDecorIcon_FireBlastMat[] = INCBIN_U32("graphics/decorations/decor_fire_blast_mat.4bpp.lz");
+const u32 gDecorIconPalette_FireBlastMat[] = INCBIN_U32("graphics/decorations/decor_fire_blast_mat.gbapal.lz");
-const u32 gUnknown_08DB9234[] = INCBIN_U32("graphics/decorations/decor_powder_snow_mat.4bpp.lz");
-const u32 gUnknown_08DB92FC[] = INCBIN_U32("graphics/decorations/decor_powder_snow_mat.gbapal.lz");
+const u32 gDecorIcon_PowderSnowMat[] = INCBIN_U32("graphics/decorations/decor_powder_snow_mat.4bpp.lz");
+const u32 gDecorIconPalette_PowderSnowMat[] = INCBIN_U32("graphics/decorations/decor_powder_snow_mat.gbapal.lz");
-const u32 gUnknown_08DB931C[] = INCBIN_U32("graphics/decorations/decor_attract_mat.4bpp.lz");
-const u32 gUnknown_08DB93E8[] = INCBIN_U32("graphics/decorations/decor_attract_mat.gbapal.lz");
+const u32 gDecorIcon_AttractMat[] = INCBIN_U32("graphics/decorations/decor_attract_mat.4bpp.lz");
+const u32 gDecorIconPalette_AttractMat[] = INCBIN_U32("graphics/decorations/decor_attract_mat.gbapal.lz");
-const u32 gUnknown_08DB940C[] = INCBIN_U32("graphics/decorations/decor_fissure_mat.4bpp.lz");
-const u32 gUnknown_08DB94CC[] = INCBIN_U32("graphics/decorations/decor_fissure_mat.gbapal.lz");
+const u32 gDecorIcon_FissureMat[] = INCBIN_U32("graphics/decorations/decor_fissure_mat.4bpp.lz");
+const u32 gDecorIconPalette_FissureMat[] = INCBIN_U32("graphics/decorations/decor_fissure_mat.gbapal.lz");
-const u32 gUnknown_08DB94E8[] = INCBIN_U32("graphics/decorations/decor_spikes_mat.4bpp.lz");
-const u32 gUnknown_08DB95AC[] = INCBIN_U32("graphics/decorations/decor_spikes_mat.gbapal.lz");
+const u32 gDecorIcon_SpikesMat[] = INCBIN_U32("graphics/decorations/decor_spikes_mat.4bpp.lz");
+const u32 gDecorIconPalette_SpikesMat[] = INCBIN_U32("graphics/decorations/decor_spikes_mat.gbapal.lz");
-const u32 gUnknown_08DB95D0[] = INCBIN_U32("graphics/decorations/decor_snorlax_doll.4bpp.lz");
-const u32 gUnknown_08DB96C4[] = INCBIN_U32("graphics/decorations/decor_snorlax_doll.gbapal.lz");
+const u32 gDecorIcon_SnorlaxDoll[] = INCBIN_U32("graphics/decorations/decor_snorlax_doll.4bpp.lz");
+const u32 gDecorIconPalette_SnorlaxDoll[] = INCBIN_U32("graphics/decorations/decor_snorlax_doll.gbapal.lz");
-const u32 gUnknown_08DB96EC[] = INCBIN_U32("graphics/decorations/decor_rhydon_doll.4bpp.lz");
-const u32 gUnknown_08DB97F4[] = INCBIN_U32("graphics/decorations/decor_rhydon_doll.gbapal.lz");
+const u32 gDecorIcon_RhydonDoll[] = INCBIN_U32("graphics/decorations/decor_rhydon_doll.4bpp.lz");
+const u32 gDecorIconPalette_RhydonDoll[] = INCBIN_U32("graphics/decorations/decor_rhydon_doll.gbapal.lz");
-const u32 gUnknown_08DB981C[] = INCBIN_U32("graphics/decorations/decor_lapras_doll.4bpp.lz");
-const u32 gUnknown_08DB9908[] = INCBIN_U32("graphics/decorations/decor_lapras_doll.gbapal.lz");
+const u32 gDecorIcon_LaprasDoll[] = INCBIN_U32("graphics/decorations/decor_lapras_doll.4bpp.lz");
+const u32 gDecorIconPalette_LaprasDoll[] = INCBIN_U32("graphics/decorations/decor_lapras_doll.gbapal.lz");
-const u32 gUnknown_08DB9930[] = INCBIN_U32("graphics/decorations/decor_venusaur_doll.4bpp.lz");
-const u32 gUnknown_08DB9A54[] = INCBIN_U32("graphics/decorations/decor_venusaur_doll.gbapal.lz");
+const u32 gDecorIcon_VenusaurDoll[] = INCBIN_U32("graphics/decorations/decor_venusaur_doll.4bpp.lz");
+const u32 gDecorIconPalette_VenusaurDoll[] = INCBIN_U32("graphics/decorations/decor_venusaur_doll.gbapal.lz");
-const u32 gUnknown_08DB9A7C[] = INCBIN_U32("graphics/decorations/decor_charizard_doll.4bpp.lz");
-const u32 gUnknown_08DB9B7C[] = INCBIN_U32("graphics/decorations/decor_charizard_doll.gbapal.lz");
+const u32 gDecorIcon_CharizardDoll[] = INCBIN_U32("graphics/decorations/decor_charizard_doll.4bpp.lz");
+const u32 gDecorIconPalette_CharizardDoll[] = INCBIN_U32("graphics/decorations/decor_charizard_doll.gbapal.lz");
-const u32 gUnknown_08DB9BA4[] = INCBIN_U32("graphics/decorations/decor_blastoise_doll.4bpp.lz");
-const u32 gUnknown_08DB9CB0[] = INCBIN_U32("graphics/decorations/decor_blastoise_doll.gbapal.lz");
+const u32 gDecorIcon_BlastoiseDoll[] = INCBIN_U32("graphics/decorations/decor_blastoise_doll.4bpp.lz");
+const u32 gDecorIconPalette_BlastoiseDoll[] = INCBIN_U32("graphics/decorations/decor_blastoise_doll.gbapal.lz");
-const u32 gUnknown_08DB9CD8[] = INCBIN_U32("graphics/decorations/decor_wailmer_doll.4bpp.lz");
-const u32 gUnknown_08DB9DAC[] = INCBIN_U32("graphics/decorations/decor_wailmer_doll.gbapal.lz");
+const u32 gDecorIcon_WailmerDoll[] = INCBIN_U32("graphics/decorations/decor_wailmer_doll.4bpp.lz");
+const u32 gDecorIconPalette_WailmerDoll[] = INCBIN_U32("graphics/decorations/decor_wailmer_doll.gbapal.lz");
-const u32 gUnknown_08DB9DD4[] = INCBIN_U32("graphics/decorations/decor_regice_doll.4bpp.lz");
-const u32 gUnknown_08DB9EE4[] = INCBIN_U32("graphics/decorations/decor_regice_doll.gbapal.lz");
+const u32 gDecorIcon_RegiceDoll[] = INCBIN_U32("graphics/decorations/decor_regice_doll.4bpp.lz");
+const u32 gDecorIconPalette_RegiceDoll[] = INCBIN_U32("graphics/decorations/decor_regice_doll.gbapal.lz");
-const u32 gUnknown_08DB9F08[] = INCBIN_U32("graphics/decorations/decor_regirock_doll.4bpp.lz");
-const u32 gUnknown_08DB9FFC[] = INCBIN_U32("graphics/decorations/decor_regirock_doll.gbapal.lz");
+const u32 gDecorIcon_RegirockDoll[] = INCBIN_U32("graphics/decorations/decor_regirock_doll.4bpp.lz");
+const u32 gDecorIconPalette_RegirockDoll[] = INCBIN_U32("graphics/decorations/decor_regirock_doll.gbapal.lz");
-const u32 gUnknown_08DBA020[] = INCBIN_U32("graphics/decorations/decor_registeel_doll.4bpp.lz");
-const u32 gUnknown_08DBA12C[] = INCBIN_U32("graphics/decorations/decor_registeel_doll.gbapal.lz");
+const u32 gDecorIcon_RegisteelDoll[] = INCBIN_U32("graphics/decorations/decor_registeel_doll.4bpp.lz");
+const u32 gDecorIconPalette_RegisteelDoll[] = INCBIN_U32("graphics/decorations/decor_registeel_doll.gbapal.lz");
diff --git a/src/data/lilycove_lady.h b/src/data/lilycove_lady.h
new file mode 100644
index 000000000..f60e527a5
--- /dev/null
+++ b/src/data/lilycove_lady.h
@@ -0,0 +1,470 @@
+#include "constants/easy_chat.h"
+#include "constants/event_objects.h"
+#include "constants/items.h"
+#include "constants/species.h"
+#include "constants/moves.h"
+
+static const u16 sContestLadyMonGfxId[] =
+{
+ EVENT_OBJ_GFX_ZIGZAGOON_1,
+ EVENT_OBJ_GFX_SKITTY,
+ EVENT_OBJ_GFX_POOCHYENA,
+ EVENT_OBJ_GFX_KECLEON_1,
+ EVENT_OBJ_GFX_PIKACHU
+};
+
+static const u16 sLilycoveLadyGfxId[] =
+{
+ EVENT_OBJ_GFX_WOMAN_4,
+ EVENT_OBJ_GFX_WOMAN_2,
+ EVENT_OBJ_GFX_GIRL_2
+};
+
+// Quiz Lady data
+static const u16 sQuizLadyQuestion1[] =
+{
+ EC_WORD_WHICH,
+ EC_WORD_STORES,
+ EC_WORD_INFORMATION,
+ EC_WORD_ON,
+ EC_WORD_POKEMON,
+ EC_WORD_QUES,
+ EC_WORD_CAMERA,
+ EC_WORD_POKEDEX,
+ EC_WORD_POKENAV
+};
+
+static const u16 sQuizLadyQuestion2[] =
+{
+ EC_WORD_WHICH,
+ EC_WORD_ISN_T,
+ EC_WORD_A,
+ EC_WORD_GAME,
+ EC_WORD_VERSION,
+ EC_WORD_QUES,
+ EC_WORD_RUBY,
+ EC_WORD_SAPPHIRE,
+ EC_WORD_DARK
+};
+
+static const u16 sQuizLadyQuestion3[] =
+{
+ EC_WORD_HOW,
+ EC_WORD_DO,
+ EC_WORD_POKEMON,
+ EC_WORD_EVOLVE,
+ EC_WORD_QUES,
+ 0xFFFF,
+ EC_WORD_LEVEL,
+ EC_WORD_INSOMNIA,
+ EC_WORD_CUTE_CHARM
+};
+
+static const u16 sQuizLadyQuestion4[] =
+{
+ EC_WORD_WHICH,
+ EC_WORD_IS,
+ EC_WORD_THE,
+ EC_WORD_PRETTY,
+ EC_WORD_ITEM,
+ EC_WORD_QUES,
+ EC_WORD_COLD,
+ EC_WORD_FLOWERS,
+ EC_WORD_MACHINE
+};
+
+static const u16 sQuizLadyQuestion5[] =
+{
+ EC_WORD_WHICH,
+ EC_WORD_ITEM,
+ EC_WORD_DO,
+ EC_WORD_YOU,
+ EC_WORD_BREAK,
+ EC_WORD_QUES,
+ EC_WORD_EGG,
+ EC_WORD_MAIL,
+ EC_WORD_PHONE
+};
+
+static const u16 sQuizLadyQuestion6[] =
+{
+ EC_WORD_WHICH,
+ EC_WORD_WILL,
+ EC_WORD_STOP,
+ EC_MOVE2(CONFUSION),
+ EC_WORD_QUES,
+ 0xFFFF,
+ EC_WORD_ILLUMINATE,
+ EC_WORD_OWN_TEMPO,
+ EC_WORD_SWIFT_SWIM
+};
+
+static const u16 sQuizLadyQuestion7[] =
+{
+ EC_WORD_WHICH,
+ EC_WORD_OF,
+ EC_WORD_THESE,
+ EC_WORD_IS,
+ EC_WORD_MUSIC,
+ EC_WORD_QUES,
+ EC_WORD_FLYING,
+ EC_WORD_STEEL,
+ EC_WORD_ROCK
+};
+
+static const u16 sQuizLadyQuestion8[] =
+{
+ EC_WORD_WHICH,
+ EC_WORD_WILL,
+ EC_MOVE2(BLOCK),
+ EC_WORD_ESCAPE,
+ EC_WORD_QUES,
+ 0xFFFF,
+ EC_WORD_RUN_AWAY,
+ EC_WORD_SHADOW_TAG,
+ EC_WORD_WONDER_GUARD
+};
+
+static const u16 sQuizLadyQuestion9[] =
+{
+ EC_WORD_WHICH,
+ EC_WORD_WILL,
+ EC_WORD_STOP,
+ EC_WORD_POISON,
+ EC_WORD_QUES,
+ 0xFFFF,
+ EC_WORD_GUTS,
+ EC_WORD_IMMUNITY,
+ EC_WORD_SHED_SKIN
+};
+
+static const u16 sQuizLadyQuestion10[] =
+{
+ EC_WORD_WHICH,
+ EC_WORD_GOES,
+ EC_WORD_WITH,
+ EC_WORD_CENTER,
+ EC_WORD_QUES,
+ 0xFFFF,
+ EC_WORD_POKEDEX,
+ EC_WORD_POKEMON,
+ EC_WORD_POKENAV
+};
+
+static const u16 sQuizLadyQuestion11[] =
+{
+ EC_WORD_WHICH,
+ EC_WORD_STORES,
+ EC_WORD_YOUR,
+ EC_WORD_POKEMON,
+ EC_WORD_QUES,
+ 0xFFFF,
+ EC_WORD_PC,
+ EC_WORD_DEPT_STORE,
+ EC_WORD_TELEVISION
+};
+
+static const u16 sQuizLadyQuestion12[] =
+{
+ EC_WORD_WHICH,
+ EC_WORD_MACHINE,
+ EC_WORD_GIVES,
+ EC_WORD_YOU,
+ EC_WORD_INFORMATION,
+ EC_WORD_QUES,
+ EC_WORD_BIKE,
+ EC_WORD_LOCOMOTIVE,
+ EC_WORD_TELEVISION
+};
+
+static const u16 sQuizLadyQuestion13[] =
+{
+ EC_WORD_A,
+ EC_WORD_POKEMON,
+ EC_WORD_WAS,
+ EC_WORD_ONCE,
+ EC_WORD_THIS,
+ EC_WORD_QUES,
+ EC_WORD_PHONE,
+ EC_WORD_PLUSH_DOLL,
+ EC_WORD_LETTER
+};
+
+static const u16 sQuizLadyQuestion14[] =
+{
+ EC_WORD_STEEL,
+ EC_WORD_IS,
+ EC_WORD_STRONG,
+ EC_WORD_VERSUS,
+ EC_WORD_WHICH,
+ EC_WORD_QUES,
+ EC_WORD_ICE,
+ EC_WORD_GROUND,
+ 0xFFFF
+};
+
+static const u16 sQuizLadyQuestion15[] =
+{
+ EC_WORD_DARK,
+ EC_WORD_IS,
+ EC_WORD_WEAK,
+ EC_WORD_VERSUS,
+ EC_WORD_WHICH,
+ EC_WORD_QUES,
+ EC_WORD_PSYCHIC,
+ EC_WORD_FIGHTING,
+ 0xFFFF
+};
+
+static const u16 sQuizLadyQuestion16[] =
+{
+ EC_WORD_GHOST,
+ EC_WORD_IS,
+ EC_WORD_WEAK,
+ EC_WORD_VERSUS,
+ EC_WORD_WHICH,
+ EC_WORD_QUES,
+ EC_WORD_NORMAL,
+ EC_WORD_DARK,
+ 0xFFFF
+};
+
+static const u16 *const sQuizLadyQuizQuestions[] =
+{
+ sQuizLadyQuestion1,
+ sQuizLadyQuestion2,
+ sQuizLadyQuestion3,
+ sQuizLadyQuestion4,
+ sQuizLadyQuestion5,
+ sQuizLadyQuestion6,
+ sQuizLadyQuestion7,
+ sQuizLadyQuestion8,
+ sQuizLadyQuestion9,
+ sQuizLadyQuestion10,
+ sQuizLadyQuestion11,
+ sQuizLadyQuestion12,
+ sQuizLadyQuestion13,
+ sQuizLadyQuestion14,
+ sQuizLadyQuestion15,
+ sQuizLadyQuestion16
+};
+
+static const u16 sQuizLadyQuizAnswers[] =
+{
+ EC_WORD_POKEDEX,
+ EC_WORD_DARK,
+ EC_WORD_LEVEL,
+ EC_WORD_FLOWERS,
+ EC_WORD_EGG,
+ EC_WORD_OWN_TEMPO,
+ EC_WORD_ROCK,
+ EC_WORD_SHADOW_TAG,
+ EC_WORD_IMMUNITY,
+ EC_WORD_POKEMON,
+ EC_WORD_PC,
+ EC_WORD_TELEVISION,
+ EC_WORD_PLUSH_DOLL,
+ EC_WORD_ICE,
+ EC_WORD_FIGHTING,
+ EC_WORD_DARK
+};
+
+static const u16 sQuizLadyPrizes[] =
+{
+ ITEM_GLITTER_MAIL,
+ ITEM_BEAD_MAIL,
+ ITEM_TROPIC_MAIL,
+ ITEM_MAX_ETHER,
+ ITEM_MAX_ETHER,
+ ITEM_MAX_ETHER,
+ ITEM_WATMEL_BERRY,
+ ITEM_BELUE_BERRY,
+ ITEM_DURIN_BERRY,
+ ITEM_LUXURY_BALL,
+ ITEM_TM15_HYPER_BEAM,
+ ITEM_BIG_PEARL,
+ ITEM_STAR_PIECE,
+ ITEM_RARE_CANDY,
+ ITEM_RARE_CANDY,
+ ITEM_PREMIER_BALL
+};
+
+// Favor Lady data
+static const u8 *const sFavorLadyRequests[] =
+{
+ gText_FavorLady_Slippery,
+ gText_FavorLady_Roundish,
+ gText_FavorLady_Whamish,
+ gText_FavorLady_Shiny,
+ gText_FavorLady_Sticky,
+ gText_FavorLady_Pointy
+};
+
+static const u16 sFavorLadyAcceptedItems_Slippery[] =
+{
+ ITEM_REPEL,
+ ITEM_SUPER_REPEL,
+ ITEM_MAX_REPEL,
+ ITEM_ANTIDOTE,
+ ITEM_PARALYZE_HEAL,
+ ITEM_BURN_HEAL,
+ ITEM_BELUE_BERRY,
+ ITEM_AWAKENING,
+ ITEM_ICE_HEAL,
+ ITEM_REVIVE,
+ ITEM_MAX_REVIVE,
+ ITEM_ENERGY_POWDER,
+ ITEM_NONE
+};
+
+static const u16 sFavorLadyAcceptedItems_Roundish[] =
+{
+ ITEM_FLUFFY_TAIL,
+ ITEM_PEARL,
+ ITEM_BIG_PEARL,
+ ITEM_HARD_STONE,
+ ITEM_SMOKE_BALL,
+ ITEM_SHOAL_SHELL,
+ ITEM_TINY_MUSHROOM,
+ ITEM_BIG_MUSHROOM,
+ ITEM_PECHA_BERRY,
+ ITEM_ASPEAR_BERRY,
+ ITEM_ORAN_BERRY,
+ ITEM_GREPA_BERRY,
+ ITEM_MAGOST_BERRY,
+ ITEM_WATMEL_BERRY,
+ ITEM_POKE_BALL,
+ ITEM_ULTRA_BALL,
+ ITEM_NONE
+};
+
+static const u16 sFavorLadyAcceptedItems_Whamish[] =
+{
+ ITEM_REVIVAL_HERB,
+ ITEM_POTION,
+ ITEM_FRESH_WATER,
+ ITEM_SODA_POP,
+ ITEM_LEMONADE,
+ ITEM_HARD_STONE,
+ ITEM_LIGHT_BALL,
+ ITEM_LAVA_COOKIE,
+ ITEM_CHESTO_BERRY,
+ ITEM_NANAB_BERRY,
+ ITEM_WEPEAR_BERRY,
+ ITEM_KELPSY_BERRY,
+ ITEM_NOMEL_BERRY,
+ ITEM_DURIN_BERRY,
+ ITEM_NONE
+};
+
+static const u16 sFavorLadyAcceptedItems_Shiny[] =
+{
+ ITEM_HEAL_POWDER,
+ ITEM_X_SPEED,
+ ITEM_X_ATTACK,
+ ITEM_X_DEFEND,
+ ITEM_BLUE_FLUTE,
+ ITEM_YELLOW_FLUTE,
+ ITEM_RED_FLUTE,
+ ITEM_BLACK_FLUTE,
+ ITEM_WHITE_FLUTE,
+ ITEM_NUGGET,
+ ITEM_SUN_STONE,
+ ITEM_STARDUST,
+ ITEM_STAR_PIECE,
+ ITEM_PEARL,
+ ITEM_BIG_PEARL,
+ ITEM_TWISTED_SPOON,
+ ITEM_SILVER_POWDER,
+ ITEM_BRIGHT_POWDER,
+ ITEM_LUXURY_BALL,
+ ITEM_PREMIER_BALL,
+ ITEM_NONE
+};
+
+static const u16 sFavorLadyAcceptedItems_Sticky[] =
+{
+ ITEM_ENERGY_ROOT,
+ ITEM_FULL_RESTORE,
+ ITEM_MAX_POTION,
+ ITEM_DIRE_HIT,
+ ITEM_X_ACCURACY,
+ ITEM_GUARD_SPEC,
+ ITEM_WATMEL_BERRY,
+ ITEM_LEFTOVERS,
+ ITEM_TINY_MUSHROOM,
+ ITEM_HEART_SCALE,
+ ITEM_NONE
+};
+
+static const u16 sFavorLadyAcceptedItems_Pointy[] =
+{
+ ITEM_QUICK_CLAW,
+ ITEM_POISON_BARB,
+ ITEM_SHARP_BEAK,
+ ITEM_DRAGON_FANG,
+ ITEM_TAMATO_BERRY,
+ ITEM_DURIN_BERRY,
+ ITEM_PETAYA_BERRY,
+ ITEM_SALAC_BERRY,
+ ITEM_STARDUST,
+ ITEM_STAR_PIECE,
+ ITEM_NONE
+};
+
+static const u16 *const sFavorLadyAcceptedItemLists[] =
+{
+ sFavorLadyAcceptedItems_Slippery,
+ sFavorLadyAcceptedItems_Roundish,
+ sFavorLadyAcceptedItems_Whamish,
+ sFavorLadyAcceptedItems_Shiny,
+ sFavorLadyAcceptedItems_Sticky,
+ sFavorLadyAcceptedItems_Pointy
+};
+
+static const u16 sFavorLadyPrizes[] =
+{
+ ITEM_LUXURY_BALL,
+ ITEM_NUGGET,
+ ITEM_PROTEIN,
+ ITEM_HEART_SCALE,
+ ITEM_RARE_CANDY,
+ ITEM_PP_MAX
+};
+
+
+static const u8 *const sContestLadyMonNames[] =
+{
+ gText_ContestLady_Handsome,
+ gText_ContestLady_Vinny,
+ gText_ContestLady_Moreme,
+ gText_ContestLady_Ironhard,
+ gText_ContestLady_Muscle
+};
+
+static const u8 *const sContestLadyCategoryNames[] =
+{
+ gText_ContestLady_Coolness,
+ gText_ContestLady_Beauty,
+ gText_ContestLady_Cuteness,
+ gText_ContestLady_Smartness,
+ gText_ContestLady_Toughness
+};
+
+static const u8 *const sContestNames[] =
+{
+ gText_CoolnessContest,
+ gText_BeautyContest,
+ gText_CutenessContest,
+ gText_SmartnessContest,
+ gText_ToughnessContest
+};
+
+static const u16 sContestLadyMonSpecies[] =
+{
+ SPECIES_ZIGZAGOON,
+ SPECIES_SKITTY,
+ SPECIES_POOCHYENA,
+ SPECIES_KECLEON,
+ SPECIES_PIKACHU
+};
diff --git a/src/data/pokemon/tutor_learnsets.h b/src/data/pokemon/tutor_learnsets.h
index 27fb40621..2c8c3b362 100644
--- a/src/data/pokemon/tutor_learnsets.h
+++ b/src/data/pokemon/tutor_learnsets.h
@@ -1,35 +1,4 @@
-#define TUTOR_MOVE_MEGA_PUNCH 0
-#define TUTOR_MOVE_SWORDS_DANCE 1
-#define TUTOR_MOVE_MEGA_KICK 2
-#define TUTOR_MOVE_BODY_SLAM 3
-#define TUTOR_MOVE_DOUBLE_EDGE 4
-#define TUTOR_MOVE_COUNTER 5
-#define TUTOR_MOVE_SEISMIC_TOSS 6
-#define TUTOR_MOVE_MIMIC 7
-#define TUTOR_MOVE_METRONOME 8
-#define TUTOR_MOVE_SOFT_BOILED 9
-#define TUTOR_MOVE_DREAM_EATER 10
-#define TUTOR_MOVE_THUNDER_WAVE 11
-#define TUTOR_MOVE_EXPLOSION 12
-#define TUTOR_MOVE_ROCK_SLIDE 13
-#define TUTOR_MOVE_SUBSTITUTE 14
-#define TUTOR_MOVE_DYNAMIC_PUNCH 15
-#define TUTOR_MOVE_ROLLOUT 16
-#define TUTOR_MOVE_PSYCH_UP 17
-#define TUTOR_MOVE_SNORE 18
-#define TUTOR_MOVE_ICY_WIND 19
-#define TUTOR_MOVE_ENDURE 20
-#define TUTOR_MOVE_MUD_SLAP 21
-#define TUTOR_MOVE_ICE_PUNCH 22
-#define TUTOR_MOVE_SWAGGER 23
-#define TUTOR_MOVE_SLEEP_TALK 24
-#define TUTOR_MOVE_SWIFT 25
-#define TUTOR_MOVE_DEFENSE_CURL 26
-#define TUTOR_MOVE_THUNDER_PUNCH 27
-#define TUTOR_MOVE_FIRE_PUNCH 28
-#define TUTOR_MOVE_FURY_CUTTER 29
-
-const u16 gTutorMoves[] =
+const u16 gTutorMoves[TUTOR_MOVE_COUNT] =
{
[TUTOR_MOVE_MEGA_PUNCH] = MOVE_MEGA_PUNCH,
[TUTOR_MOVE_SWORDS_DANCE] = MOVE_SWORDS_DANCE,
@@ -63,5721 +32,5720 @@ const u16 gTutorMoves[] =
[TUTOR_MOVE_FURY_CUTTER] = MOVE_FURY_CUTTER,
};
-#define TUTOR_LEARNSET(moves) ((u32)(moves))
-#define TUTOR(move) ((u64)1 << (TUTOR_##move))
+#define TUTOR(move) (1u << (TUTOR_##move))
static const u32 sTutorLearnsets[] =
{
- [SPECIES_NONE] = TUTOR_LEARNSET(0),
-
- [SPECIES_BULBASAUR] = TUTOR_LEARNSET(TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_DEFENSE_CURL)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_IVYSAUR] = TUTOR_LEARNSET(TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_DEFENSE_CURL)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_VENUSAUR] = TUTOR_LEARNSET(TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_DEFENSE_CURL)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_CHARMANDER] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_DEFENSE_CURL)
- | TUTOR(MOVE_FIRE_PUNCH)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_CHARMELEON] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_DEFENSE_CURL)
- | TUTOR(MOVE_FIRE_PUNCH)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_CHARIZARD] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_DEFENSE_CURL)
- | TUTOR(MOVE_FIRE_PUNCH)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_SQUIRTLE] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_DEFENSE_CURL)),
-
- [SPECIES_WARTORTLE] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_DEFENSE_CURL)),
-
- [SPECIES_BLASTOISE] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_DEFENSE_CURL)),
-
- [SPECIES_CATERPIE] = TUTOR_LEARNSET(0),
-
- [SPECIES_METAPOD] = TUTOR_LEARNSET(0),
-
- [SPECIES_BUTTERFREE] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_WEEDLE] = TUTOR_LEARNSET(0),
-
- [SPECIES_KAKUNA] = TUTOR_LEARNSET(0),
-
- [SPECIES_BEEDRILL] = TUTOR_LEARNSET(TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_PIDGEY] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_PIDGEOTTO] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_PIDGEOT] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_RATTATA] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_DEFENSE_CURL)),
-
- [SPECIES_RATICATE] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_DEFENSE_CURL)),
-
- [SPECIES_SPEAROW] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_FEAROW] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_EKANS] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)),
-
- [SPECIES_ARBOK] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)),
-
- [SPECIES_PIKACHU] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_DEFENSE_CURL)
- | TUTOR(MOVE_THUNDER_PUNCH)),
-
- [SPECIES_RAICHU] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_DEFENSE_CURL)
- | TUTOR(MOVE_THUNDER_PUNCH)),
-
- [SPECIES_SANDSHREW] = TUTOR_LEARNSET(TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_DEFENSE_CURL)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_SANDSLASH] = TUTOR_LEARNSET(TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_DEFENSE_CURL)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_NIDORAN_F] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_DEFENSE_CURL)),
-
- [SPECIES_NIDORINA] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_DEFENSE_CURL)),
-
- [SPECIES_NIDOQUEEN] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_DEFENSE_CURL)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FIRE_PUNCH)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_NIDORAN_M] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_DEFENSE_CURL)),
-
- [SPECIES_NIDORINO] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_DEFENSE_CURL)),
-
- [SPECIES_NIDOKING] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_DEFENSE_CURL)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FIRE_PUNCH)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_CLEFAIRY] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_METRONOME)
- | TUTOR(MOVE_SOFT_BOILED)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_DEFENSE_CURL)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FIRE_PUNCH)),
-
- [SPECIES_CLEFABLE] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_METRONOME)
- | TUTOR(MOVE_SOFT_BOILED)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_DEFENSE_CURL)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FIRE_PUNCH)),
-
- [SPECIES_VULPIX] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_NINETALES] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_JIGGLYPUFF] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_DEFENSE_CURL)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FIRE_PUNCH)),
-
- [SPECIES_WIGGLYTUFF] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_DEFENSE_CURL)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FIRE_PUNCH)),
-
- [SPECIES_ZUBAT] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_GOLBAT] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_ODDISH] = TUTOR_LEARNSET(TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)),
-
- [SPECIES_GLOOM] = TUTOR_LEARNSET(TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)),
-
- [SPECIES_VILEPLUME] = TUTOR_LEARNSET(TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)),
-
- [SPECIES_PARAS] = TUTOR_LEARNSET(TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_PARASECT] = TUTOR_LEARNSET(TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_VENONAT] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_VENOMOTH] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_DIGLETT] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)),
-
- [SPECIES_DUGTRIO] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)),
-
- [SPECIES_MEOWTH] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_DEFENSE_CURL)),
-
- [SPECIES_PERSIAN] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_DEFENSE_CURL)),
-
- [SPECIES_PSYDUCK] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_GOLDUCK] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_MANKEY] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_METRONOME)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_DEFENSE_CURL)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FIRE_PUNCH)),
-
- [SPECIES_PRIMEAPE] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_METRONOME)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_DEFENSE_CURL)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FIRE_PUNCH)),
-
- [SPECIES_GROWLITHE] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_ARCANINE] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_POLIWAG] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_DEFENSE_CURL)),
-
- [SPECIES_POLIWHIRL] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_METRONOME)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_DEFENSE_CURL)),
-
- [SPECIES_POLIWRATH] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_METRONOME)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_DEFENSE_CURL)),
-
- [SPECIES_ABRA] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_METRONOME)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FIRE_PUNCH)),
-
- [SPECIES_KADABRA] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_METRONOME)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FIRE_PUNCH)),
-
- [SPECIES_ALAKAZAM] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_METRONOME)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FIRE_PUNCH)),
-
- [SPECIES_MACHOP] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_METRONOME)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FIRE_PUNCH)),
-
- [SPECIES_MACHOKE] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_METRONOME)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FIRE_PUNCH)),
-
- [SPECIES_MACHAMP] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_METRONOME)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FIRE_PUNCH)),
-
- [SPECIES_BELLSPROUT] = TUTOR_LEARNSET(TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)),
-
- [SPECIES_WEEPINBELL] = TUTOR_LEARNSET(TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)),
-
- [SPECIES_VICTREEBEL] = TUTOR_LEARNSET(TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)),
-
- [SPECIES_TENTACOOL] = TUTOR_LEARNSET(TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)),
-
- [SPECIES_TENTACRUEL] = TUTOR_LEARNSET(TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)),
-
- [SPECIES_GEODUDE] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_METRONOME)
- | TUTOR(MOVE_EXPLOSION)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_DEFENSE_CURL)
- | TUTOR(MOVE_FIRE_PUNCH)),
-
- [SPECIES_GRAVELER] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_METRONOME)
- | TUTOR(MOVE_EXPLOSION)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_DEFENSE_CURL)
- | TUTOR(MOVE_FIRE_PUNCH)),
-
- [SPECIES_GOLEM] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_METRONOME)
- | TUTOR(MOVE_EXPLOSION)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_DEFENSE_CURL)
- | TUTOR(MOVE_FIRE_PUNCH)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_PONYTA] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_RAPIDASH] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_SLOWPOKE] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_SLOWBRO] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_MAGNEMITE] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_MAGNETON] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_FARFETCHD] = TUTOR_LEARNSET(TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_DODUO] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_DODRIO] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_SEEL] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)),
-
- [SPECIES_DEWGONG] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)),
-
- [SPECIES_GRIMER] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_EXPLOSION)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FIRE_PUNCH)),
-
- [SPECIES_MUK] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_EXPLOSION)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FIRE_PUNCH)),
-
- [SPECIES_SHELLDER] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_EXPLOSION)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_CLOYSTER] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_EXPLOSION)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_GASTLY] = TUTOR_LEARNSET(TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_EXPLOSION)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)),
-
- [SPECIES_HAUNTER] = TUTOR_LEARNSET(TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_EXPLOSION)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)),
-
- [SPECIES_GENGAR] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_METRONOME)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_EXPLOSION)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FIRE_PUNCH)),
-
- [SPECIES_ONIX] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_EXPLOSION)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)),
-
- [SPECIES_DROWZEE] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_METRONOME)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FIRE_PUNCH)),
-
- [SPECIES_HYPNO] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_METRONOME)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FIRE_PUNCH)),
-
- [SPECIES_KRABBY] = TUTOR_LEARNSET(TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_KINGLER] = TUTOR_LEARNSET(TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_VOLTORB] = TUTOR_LEARNSET(TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_EXPLOSION)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_ELECTRODE] = TUTOR_LEARNSET(TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_EXPLOSION)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_EXEGGCUTE] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_EXPLOSION)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)),
-
- [SPECIES_EXEGGUTOR] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_EXPLOSION)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)),
-
- [SPECIES_CUBONE] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FIRE_PUNCH)),
-
- [SPECIES_MAROWAK] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FIRE_PUNCH)),
-
- [SPECIES_HITMONLEE] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_METRONOME)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_HITMONCHAN] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_METRONOME)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FIRE_PUNCH)),
-
- [SPECIES_LICKITUNG] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_DEFENSE_CURL)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FIRE_PUNCH)),
-
- [SPECIES_KOFFING] = TUTOR_LEARNSET(TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_EXPLOSION)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)),
-
- [SPECIES_WEEZING] = TUTOR_LEARNSET(TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_EXPLOSION)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)),
-
- [SPECIES_RHYHORN] = TUTOR_LEARNSET(TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)),
-
- [SPECIES_RHYDON] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FIRE_PUNCH)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_CHANSEY] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_METRONOME)
- | TUTOR(MOVE_SOFT_BOILED)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_DEFENSE_CURL)),
-
- [SPECIES_TANGELA] = TUTOR_LEARNSET(TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)),
-
- [SPECIES_KANGASKHAN] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FIRE_PUNCH)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_HORSEA] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_SEADRA] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_GOLDEEN] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_SEAKING] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_STARYU] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_STARMIE] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_MR_MIME] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_METRONOME)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FIRE_PUNCH)),
-
- [SPECIES_SCYTHER] = TUTOR_LEARNSET(TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_JYNX] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_METRONOME)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)),
-
- [SPECIES_ELECTABUZZ] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FIRE_PUNCH)),
-
- [SPECIES_MAGMAR] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FIRE_PUNCH)),
-
- [SPECIES_PINSIR] = TUTOR_LEARNSET(TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_TAUROS] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)),
-
- [SPECIES_MAGIKARP] = TUTOR_LEARNSET(0),
-
- [SPECIES_GYARADOS] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)),
-
- [SPECIES_LAPRAS] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)),
-
- [SPECIES_DITTO] = TUTOR_LEARNSET(0),
-
- [SPECIES_EEVEE] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_VAPOREON] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_JOLTEON] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_FLAREON] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_PORYGON] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_OMANYTE] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)),
-
- [SPECIES_OMASTAR] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)),
-
- [SPECIES_KABUTO] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)),
-
- [SPECIES_KABUTOPS] = TUTOR_LEARNSET(TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_AERODACTYL] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_SNORLAX] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_METRONOME)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_DEFENSE_CURL)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FIRE_PUNCH)),
-
- [SPECIES_ARTICUNO] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_ZAPDOS] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_MOLTRES] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_DRATINI] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_DRAGONAIR] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_DRAGONITE] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FIRE_PUNCH)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_MEWTWO] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_METRONOME)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FIRE_PUNCH)),
-
- [SPECIES_MEW] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_METRONOME)
- | TUTOR(MOVE_SOFT_BOILED)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_EXPLOSION)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_DEFENSE_CURL)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FIRE_PUNCH)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_CHIKORITA] = TUTOR_LEARNSET(TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)),
-
- [SPECIES_BAYLEEF] = TUTOR_LEARNSET(TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_MEGANIUM] = TUTOR_LEARNSET(TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_CYNDAQUIL] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_DEFENSE_CURL)),
-
- [SPECIES_QUILAVA] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_DEFENSE_CURL)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_TYPHLOSION] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_DEFENSE_CURL)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FIRE_PUNCH)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_TOTODILE] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)),
-
- [SPECIES_CROCONAW] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_FERALIGATR] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_SENTRET] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_DEFENSE_CURL)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FIRE_PUNCH)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_FURRET] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_DEFENSE_CURL)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FIRE_PUNCH)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_HOOTHOOT] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_NOCTOWL] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_LEDYBA] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_THUNDER_PUNCH)),
-
- [SPECIES_LEDIAN] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_THUNDER_PUNCH)),
-
- [SPECIES_SPINARAK] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)),
-
- [SPECIES_ARIADOS] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)),
-
- [SPECIES_CROBAT] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_CHINCHOU] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)),
-
- [SPECIES_LANTURN] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)),
-
- [SPECIES_PICHU] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_DEFENSE_CURL)),
-
- [SPECIES_CLEFFA] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_METRONOME)
- | TUTOR(MOVE_SOFT_BOILED)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_DEFENSE_CURL)),
-
- [SPECIES_IGGLYBUFF] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_DEFENSE_CURL)),
-
- [SPECIES_TOGEPI] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_METRONOME)
- | TUTOR(MOVE_SOFT_BOILED)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_DEFENSE_CURL)),
-
- [SPECIES_TOGETIC] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_METRONOME)
- | TUTOR(MOVE_SOFT_BOILED)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_DEFENSE_CURL)),
-
- [SPECIES_NATU] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_XATU] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_MAREEP] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_DEFENSE_CURL)),
-
- [SPECIES_FLAAFFY] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_DEFENSE_CURL)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FIRE_PUNCH)),
-
- [SPECIES_AMPHAROS] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_DEFENSE_CURL)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FIRE_PUNCH)),
-
- [SPECIES_BELLOSSOM] = TUTOR_LEARNSET(TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)),
-
- [SPECIES_MARILL] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_DEFENSE_CURL)),
-
- [SPECIES_AZUMARILL] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_DEFENSE_CURL)),
-
- [SPECIES_SUDOWOODO] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_EXPLOSION)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_DEFENSE_CURL)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FIRE_PUNCH)),
-
- [SPECIES_POLITOED] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_METRONOME)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_DEFENSE_CURL)),
-
- [SPECIES_HOPPIP] = TUTOR_LEARNSET(TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_DEFENSE_CURL)),
-
- [SPECIES_SKIPLOOM] = TUTOR_LEARNSET(TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_DEFENSE_CURL)),
-
- [SPECIES_JUMPLUFF] = TUTOR_LEARNSET(TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_DEFENSE_CURL)),
-
- [SPECIES_AIPOM] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_METRONOME)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_DEFENSE_CURL)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FIRE_PUNCH)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_SUNKERN] = TUTOR_LEARNSET(TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)),
-
- [SPECIES_SUNFLORA] = TUTOR_LEARNSET(TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)),
-
- [SPECIES_YANMA] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_WOOPER] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_DEFENSE_CURL)),
-
- [SPECIES_QUAGSIRE] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_DEFENSE_CURL)),
-
- [SPECIES_ESPEON] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_UMBREON] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_MURKROW] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_SLOWKING] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_MISDREAVUS] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_DEFENSE_CURL)),
-
- [SPECIES_UNOWN] = TUTOR_LEARNSET(0),
-
- [SPECIES_WOBBUFFET] = TUTOR_LEARNSET(0),
-
- [SPECIES_GIRAFARIG] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_PINECO] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_EXPLOSION)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_DEFENSE_CURL)),
-
- [SPECIES_FORRETRESS] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_EXPLOSION)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_DEFENSE_CURL)),
-
- [SPECIES_DUNSPARCE] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_DEFENSE_CURL)),
-
- [SPECIES_GLIGAR] = TUTOR_LEARNSET(TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_STEELIX] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_EXPLOSION)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_DEFENSE_CURL)),
-
- [SPECIES_SNUBBULL] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_METRONOME)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_DEFENSE_CURL)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FIRE_PUNCH)),
-
- [SPECIES_GRANBULL] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_METRONOME)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_DEFENSE_CURL)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FIRE_PUNCH)),
-
- [SPECIES_QWILFISH] = TUTOR_LEARNSET(TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_DEFENSE_CURL)),
-
- [SPECIES_SCIZOR] = TUTOR_LEARNSET(TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_SHUCKLE] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_DEFENSE_CURL)),
-
- [SPECIES_HERACROSS] = TUTOR_LEARNSET(TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_SNEASEL] = TUTOR_LEARNSET(TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_DEFENSE_CURL)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_TEDDIURSA] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_METRONOME)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_DEFENSE_CURL)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FIRE_PUNCH)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_URSARING] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_METRONOME)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_DEFENSE_CURL)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FIRE_PUNCH)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_SLUGMA] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_DEFENSE_CURL)),
-
- [SPECIES_MAGCARGO] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_DEFENSE_CURL)),
-
- [SPECIES_SWINUB] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_DEFENSE_CURL)),
-
- [SPECIES_PILOSWINE] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_DEFENSE_CURL)),
-
- [SPECIES_CORSOLA] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_EXPLOSION)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_DEFENSE_CURL)),
-
- [SPECIES_REMORAID] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_DEFENSE_CURL)),
-
- [SPECIES_OCTILLERY] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_DEFENSE_CURL)),
-
- [SPECIES_DELIBIRD] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_MANTINE] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_SKARMORY] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_HOUNDOUR] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_HOUNDOOM] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_KINGDRA] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_PHANPY] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_DEFENSE_CURL)),
-
- [SPECIES_DONPHAN] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_DEFENSE_CURL)),
-
- [SPECIES_PORYGON2] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_DEFENSE_CURL)),
-
- [SPECIES_STANTLER] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_SMEARGLE] = TUTOR_LEARNSET(0),
-
- [SPECIES_TYROGUE] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_HITMONTOP] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_SMOOCHUM] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_METRONOME)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)),
-
- [SPECIES_ELEKID] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FIRE_PUNCH)),
-
- [SPECIES_MAGBY] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FIRE_PUNCH)),
-
- [SPECIES_MILTANK] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_METRONOME)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_DEFENSE_CURL)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FIRE_PUNCH)),
-
- [SPECIES_BLISSEY] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_METRONOME)
- | TUTOR(MOVE_SOFT_BOILED)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_DEFENSE_CURL)),
-
- [SPECIES_RAIKOU] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_ENTEI] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_SUICUNE] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_LARVITAR] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)),
-
- [SPECIES_PUPITAR] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)),
-
- [SPECIES_TYRANITAR] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_FIRE_PUNCH)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_LUGIA] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_HO_OH] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_CELEBI] = TUTOR_LEARNSET(TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_METRONOME)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_DEFENSE_CURL)),
-
- [SPECIES_TREECKO] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_GROVYLE] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_SCEPTILE] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_TORCHIC] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_COMBUSKEN] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FIRE_PUNCH)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_BLAZIKEN] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FIRE_PUNCH)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_MUDKIP] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_DEFENSE_CURL)),
-
- [SPECIES_MARSHTOMP] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_DEFENSE_CURL)),
-
- [SPECIES_SWAMPERT] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_DEFENSE_CURL)),
-
- [SPECIES_POOCHYENA] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)),
-
- [SPECIES_MIGHTYENA] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)),
-
- [SPECIES_ZIGZAGOON] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_DEFENSE_CURL)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_LINOONE] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_DEFENSE_CURL)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_WURMPLE] = TUTOR_LEARNSET(0),
-
- [SPECIES_SILCOON] = TUTOR_LEARNSET(0),
-
- [SPECIES_BEAUTIFLY] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_CASCOON] = TUTOR_LEARNSET(0),
-
- [SPECIES_DUSTOX] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_LOTAD] = TUTOR_LEARNSET(TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)),
-
- [SPECIES_LOMBRE] = TUTOR_LEARNSET(TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FIRE_PUNCH)),
-
- [SPECIES_LUDICOLO] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_METRONOME)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FIRE_PUNCH)),
-
- [SPECIES_SEEDOT] = TUTOR_LEARNSET(TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_EXPLOSION)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_DEFENSE_CURL)),
-
- [SPECIES_NUZLEAF] = TUTOR_LEARNSET(TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_EXPLOSION)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_DEFENSE_CURL)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_SHIFTRY] = TUTOR_LEARNSET(TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_EXPLOSION)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_DEFENSE_CURL)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_NINCADA] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_NINJASK] = TUTOR_LEARNSET(TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_SHEDINJA] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_TAILLOW] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_SWELLOW] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_SHROOMISH] = TUTOR_LEARNSET(TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)),
-
- [SPECIES_BRELOOM] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_SPINDA] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_METRONOME)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_DEFENSE_CURL)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FIRE_PUNCH)),
-
- [SPECIES_WINGULL] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_PELIPPER] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_SURSKIT] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_MASQUERAIN] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_WAILMER] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_DEFENSE_CURL)),
-
- [SPECIES_WAILORD] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_DEFENSE_CURL)),
-
- [SPECIES_SKITTY] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_DEFENSE_CURL)),
-
- [SPECIES_DELCATTY] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_DEFENSE_CURL)),
-
- [SPECIES_KECLEON] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_METRONOME)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_DEFENSE_CURL)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FIRE_PUNCH)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_BALTOY] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_EXPLOSION)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)),
-
- [SPECIES_CLAYDOL] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_EXPLOSION)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)),
-
- [SPECIES_NOSEPASS] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_EXPLOSION)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_DEFENSE_CURL)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FIRE_PUNCH)),
-
- [SPECIES_TORKOAL] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_EXPLOSION)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)),
-
- [SPECIES_SABLEYE] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_METRONOME)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FIRE_PUNCH)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_BARBOACH] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)),
-
- [SPECIES_WHISCASH] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)),
-
- [SPECIES_LUVDISC] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_CORPHISH] = TUTOR_LEARNSET(TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_CRAWDAUNT] = TUTOR_LEARNSET(TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_FEEBAS] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_MILOTIC] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_CARVANHA] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_SHARPEDO] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_TRAPINCH] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)),
-
- [SPECIES_VIBRAVA] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_FLYGON] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_FIRE_PUNCH)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_MAKUHITA] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_METRONOME)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FIRE_PUNCH)),
-
- [SPECIES_HARIYAMA] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_METRONOME)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FIRE_PUNCH)),
-
- [SPECIES_ELECTRIKE] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_MANECTRIC] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_NUMEL] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_DEFENSE_CURL)),
-
- [SPECIES_CAMERUPT] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_EXPLOSION)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_DEFENSE_CURL)),
-
- [SPECIES_SPHEAL] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_DEFENSE_CURL)),
-
- [SPECIES_SEALEO] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_DEFENSE_CURL)),
-
- [SPECIES_WALREIN] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_DEFENSE_CURL)),
-
- [SPECIES_CACNEA] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_CACTURNE] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_SNORUNT] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)),
-
- [SPECIES_GLALIE] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_EXPLOSION)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_DEFENSE_CURL)),
-
- [SPECIES_LUNATONE] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_EXPLOSION)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_DEFENSE_CURL)),
-
- [SPECIES_SOLROCK] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_EXPLOSION)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_DEFENSE_CURL)),
-
- [SPECIES_AZURILL] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_DEFENSE_CURL)),
-
- [SPECIES_SPOINK] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_GRUMPIG] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FIRE_PUNCH)),
-
- [SPECIES_PLUSLE] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_METRONOME)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_DEFENSE_CURL)
- | TUTOR(MOVE_THUNDER_PUNCH)),
-
- [SPECIES_MINUN] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_METRONOME)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_DEFENSE_CURL)
- | TUTOR(MOVE_THUNDER_PUNCH)),
-
- [SPECIES_MAWILE] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_THUNDER_PUNCH)),
-
- [SPECIES_MEDITITE] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_METRONOME)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FIRE_PUNCH)),
-
- [SPECIES_MEDICHAM] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_METRONOME)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FIRE_PUNCH)),
-
- [SPECIES_SWABLU] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_ALTARIA] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_WYNAUT] = TUTOR_LEARNSET(0),
-
- [SPECIES_DUSKULL] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)),
-
- [SPECIES_DUSCLOPS] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_METRONOME)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FIRE_PUNCH)),
-
- [SPECIES_ROSELIA] = TUTOR_LEARNSET(TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_SLAKOTH] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FIRE_PUNCH)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_VIGOROTH] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FIRE_PUNCH)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_SLAKING] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FIRE_PUNCH)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_GULPIN] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_EXPLOSION)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_DEFENSE_CURL)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FIRE_PUNCH)),
-
- [SPECIES_SWALOT] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_EXPLOSION)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_DEFENSE_CURL)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FIRE_PUNCH)),
-
- [SPECIES_TROPIUS] = TUTOR_LEARNSET(TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_WHISMUR] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_DEFENSE_CURL)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FIRE_PUNCH)),
-
- [SPECIES_LOUDRED] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_DEFENSE_CURL)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FIRE_PUNCH)),
-
- [SPECIES_EXPLOUD] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_DEFENSE_CURL)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FIRE_PUNCH)),
-
- [SPECIES_CLAMPERL] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)),
-
- [SPECIES_HUNTAIL] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_GOREBYSS] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)),
-
- [SPECIES_ABSOL] = TUTOR_LEARNSET(TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_SHUPPET] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)),
-
- [SPECIES_BANETTE] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_METRONOME)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)),
-
- [SPECIES_SEVIPER] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_ZANGOOSE] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_DEFENSE_CURL)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FIRE_PUNCH)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_RELICANTH] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)),
-
- [SPECIES_ARON] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_DEFENSE_CURL)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_LAIRON] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_DEFENSE_CURL)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_AGGRON] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_DEFENSE_CURL)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FIRE_PUNCH)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_CASTFORM] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_DEFENSE_CURL)),
-
- [SPECIES_VOLBEAT] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_METRONOME)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_THUNDER_PUNCH)),
-
- [SPECIES_ILLUMISE] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_METRONOME)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_THUNDER_PUNCH)),
-
- [SPECIES_LILEEP] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)),
-
- [SPECIES_CRADILY] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)),
-
- [SPECIES_ANORITH] = TUTOR_LEARNSET(TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_ARMALDO] = TUTOR_LEARNSET(TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_RALTS] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_DEFENSE_CURL)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FIRE_PUNCH)),
-
- [SPECIES_KIRLIA] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_DEFENSE_CURL)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FIRE_PUNCH)),
-
- [SPECIES_GARDEVOIR] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_DEFENSE_CURL)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FIRE_PUNCH)),
-
- [SPECIES_BAGON] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_SHELGON] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_DEFENSE_CURL)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_SALAMENCE] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_DEFENSE_CURL)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_BELDUM] = TUTOR_LEARNSET(0),
-
- [SPECIES_METANG] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_EXPLOSION)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_DEFENSE_CURL)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_METAGROSS] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_EXPLOSION)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_DEFENSE_CURL)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_REGIROCK] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_EXPLOSION)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_DEFENSE_CURL)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FIRE_PUNCH)),
-
- [SPECIES_REGICE] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_EXPLOSION)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_DEFENSE_CURL)
- | TUTOR(MOVE_THUNDER_PUNCH)),
-
- [SPECIES_REGISTEEL] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_EXPLOSION)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_DEFENSE_CURL)
- | TUTOR(MOVE_THUNDER_PUNCH)),
-
- [SPECIES_KYOGRE] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_DEFENSE_CURL)),
-
- [SPECIES_GROUDON] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_SWORDS_DANCE)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_DEFENSE_CURL)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FIRE_PUNCH)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_RAYQUAZA] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_LATIAS] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_LATIOS] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_FURY_CUTTER)),
-
- [SPECIES_JIRACHI] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_METRONOME)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_DEFENSE_CURL)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FIRE_PUNCH)),
-
- [SPECIES_DEOXYS] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
- | TUTOR(MOVE_MEGA_KICK)
- | TUTOR(MOVE_BODY_SLAM)
- | TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_COUNTER)
- | TUTOR(MOVE_SEISMIC_TOSS)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_THUNDER_WAVE)
- | TUTOR(MOVE_ROCK_SLIDE)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_DYNAMIC_PUNCH)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_MUD_SLAP)
- | TUTOR(MOVE_ICE_PUNCH)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_SWIFT)
- | TUTOR(MOVE_THUNDER_PUNCH)
- | TUTOR(MOVE_FIRE_PUNCH)),
-
- [SPECIES_CHIMECHO] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE)
- | TUTOR(MOVE_MIMIC)
- | TUTOR(MOVE_DREAM_EATER)
- | TUTOR(MOVE_SUBSTITUTE)
- | TUTOR(MOVE_ROLLOUT)
- | TUTOR(MOVE_PSYCH_UP)
- | TUTOR(MOVE_SNORE)
- | TUTOR(MOVE_ICY_WIND)
- | TUTOR(MOVE_ENDURE)
- | TUTOR(MOVE_SWAGGER)
- | TUTOR(MOVE_SLEEP_TALK)
- | TUTOR(MOVE_DEFENSE_CURL)),
+ [SPECIES_NONE] = (0),
+
+ [SPECIES_BULBASAUR] = (TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_DEFENSE_CURL)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_IVYSAUR] = (TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_DEFENSE_CURL)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_VENUSAUR] = (TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_DEFENSE_CURL)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_CHARMANDER] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_DEFENSE_CURL)
+ | TUTOR(MOVE_FIRE_PUNCH)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_CHARMELEON] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_DEFENSE_CURL)
+ | TUTOR(MOVE_FIRE_PUNCH)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_CHARIZARD] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_DEFENSE_CURL)
+ | TUTOR(MOVE_FIRE_PUNCH)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_SQUIRTLE] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_DEFENSE_CURL)),
+
+ [SPECIES_WARTORTLE] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_DEFENSE_CURL)),
+
+ [SPECIES_BLASTOISE] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_DEFENSE_CURL)),
+
+ [SPECIES_CATERPIE] = (0),
+
+ [SPECIES_METAPOD] = (0),
+
+ [SPECIES_BUTTERFREE] = (TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_WEEDLE] = (0),
+
+ [SPECIES_KAKUNA] = (0),
+
+ [SPECIES_BEEDRILL] = (TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_PIDGEY] = (TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_PIDGEOTTO] = (TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_PIDGEOT] = (TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_RATTATA] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_DEFENSE_CURL)),
+
+ [SPECIES_RATICATE] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_DEFENSE_CURL)),
+
+ [SPECIES_SPEAROW] = (TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_FEAROW] = (TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_EKANS] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)),
+
+ [SPECIES_ARBOK] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)),
+
+ [SPECIES_PIKACHU] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_DEFENSE_CURL)
+ | TUTOR(MOVE_THUNDER_PUNCH)),
+
+ [SPECIES_RAICHU] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_DEFENSE_CURL)
+ | TUTOR(MOVE_THUNDER_PUNCH)),
+
+ [SPECIES_SANDSHREW] = (TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_DEFENSE_CURL)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_SANDSLASH] = (TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_DEFENSE_CURL)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_NIDORAN_F] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_DEFENSE_CURL)),
+
+ [SPECIES_NIDORINA] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_DEFENSE_CURL)),
+
+ [SPECIES_NIDOQUEEN] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_DEFENSE_CURL)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FIRE_PUNCH)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_NIDORAN_M] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_DEFENSE_CURL)),
+
+ [SPECIES_NIDORINO] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_DEFENSE_CURL)),
+
+ [SPECIES_NIDOKING] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_DEFENSE_CURL)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FIRE_PUNCH)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_CLEFAIRY] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_METRONOME)
+ | TUTOR(MOVE_SOFT_BOILED)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_DEFENSE_CURL)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FIRE_PUNCH)),
+
+ [SPECIES_CLEFABLE] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_METRONOME)
+ | TUTOR(MOVE_SOFT_BOILED)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_DEFENSE_CURL)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FIRE_PUNCH)),
+
+ [SPECIES_VULPIX] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_NINETALES] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_JIGGLYPUFF] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_DEFENSE_CURL)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FIRE_PUNCH)),
+
+ [SPECIES_WIGGLYTUFF] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_DEFENSE_CURL)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FIRE_PUNCH)),
+
+ [SPECIES_ZUBAT] = (TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_GOLBAT] = (TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_ODDISH] = (TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)),
+
+ [SPECIES_GLOOM] = (TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)),
+
+ [SPECIES_VILEPLUME] = (TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)),
+
+ [SPECIES_PARAS] = (TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_PARASECT] = (TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_VENONAT] = (TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_VENOMOTH] = (TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_DIGLETT] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)),
+
+ [SPECIES_DUGTRIO] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)),
+
+ [SPECIES_MEOWTH] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_DEFENSE_CURL)),
+
+ [SPECIES_PERSIAN] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_DEFENSE_CURL)),
+
+ [SPECIES_PSYDUCK] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_GOLDUCK] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_MANKEY] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_METRONOME)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_DEFENSE_CURL)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FIRE_PUNCH)),
+
+ [SPECIES_PRIMEAPE] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_METRONOME)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_DEFENSE_CURL)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FIRE_PUNCH)),
+
+ [SPECIES_GROWLITHE] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_ARCANINE] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_POLIWAG] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_DEFENSE_CURL)),
+
+ [SPECIES_POLIWHIRL] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_METRONOME)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_DEFENSE_CURL)),
+
+ [SPECIES_POLIWRATH] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_METRONOME)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_DEFENSE_CURL)),
+
+ [SPECIES_ABRA] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_METRONOME)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FIRE_PUNCH)),
+
+ [SPECIES_KADABRA] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_METRONOME)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FIRE_PUNCH)),
+
+ [SPECIES_ALAKAZAM] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_METRONOME)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FIRE_PUNCH)),
+
+ [SPECIES_MACHOP] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_METRONOME)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FIRE_PUNCH)),
+
+ [SPECIES_MACHOKE] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_METRONOME)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FIRE_PUNCH)),
+
+ [SPECIES_MACHAMP] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_METRONOME)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FIRE_PUNCH)),
+
+ [SPECIES_BELLSPROUT] = (TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)),
+
+ [SPECIES_WEEPINBELL] = (TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)),
+
+ [SPECIES_VICTREEBEL] = (TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)),
+
+ [SPECIES_TENTACOOL] = (TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)),
+
+ [SPECIES_TENTACRUEL] = (TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)),
+
+ [SPECIES_GEODUDE] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_METRONOME)
+ | TUTOR(MOVE_EXPLOSION)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_DEFENSE_CURL)
+ | TUTOR(MOVE_FIRE_PUNCH)),
+
+ [SPECIES_GRAVELER] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_METRONOME)
+ | TUTOR(MOVE_EXPLOSION)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_DEFENSE_CURL)
+ | TUTOR(MOVE_FIRE_PUNCH)),
+
+ [SPECIES_GOLEM] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_METRONOME)
+ | TUTOR(MOVE_EXPLOSION)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_DEFENSE_CURL)
+ | TUTOR(MOVE_FIRE_PUNCH)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_PONYTA] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_RAPIDASH] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_SLOWPOKE] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_SLOWBRO] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_MAGNEMITE] = (TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_MAGNETON] = (TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_FARFETCHD] = (TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_DODUO] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_DODRIO] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_SEEL] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)),
+
+ [SPECIES_DEWGONG] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)),
+
+ [SPECIES_GRIMER] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_EXPLOSION)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FIRE_PUNCH)),
+
+ [SPECIES_MUK] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_EXPLOSION)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FIRE_PUNCH)),
+
+ [SPECIES_SHELLDER] = (TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_EXPLOSION)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_CLOYSTER] = (TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_EXPLOSION)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_GASTLY] = (TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_EXPLOSION)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)),
+
+ [SPECIES_HAUNTER] = (TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_EXPLOSION)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)),
+
+ [SPECIES_GENGAR] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_METRONOME)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_EXPLOSION)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FIRE_PUNCH)),
+
+ [SPECIES_ONIX] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_EXPLOSION)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)),
+
+ [SPECIES_DROWZEE] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_METRONOME)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FIRE_PUNCH)),
+
+ [SPECIES_HYPNO] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_METRONOME)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FIRE_PUNCH)),
+
+ [SPECIES_KRABBY] = (TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_KINGLER] = (TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_VOLTORB] = (TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_EXPLOSION)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_ELECTRODE] = (TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_EXPLOSION)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_EXEGGCUTE] = (TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_EXPLOSION)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)),
+
+ [SPECIES_EXEGGUTOR] = (TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_EXPLOSION)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)),
+
+ [SPECIES_CUBONE] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FIRE_PUNCH)),
+
+ [SPECIES_MAROWAK] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FIRE_PUNCH)),
+
+ [SPECIES_HITMONLEE] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_METRONOME)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_HITMONCHAN] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_METRONOME)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FIRE_PUNCH)),
+
+ [SPECIES_LICKITUNG] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_DEFENSE_CURL)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FIRE_PUNCH)),
+
+ [SPECIES_KOFFING] = (TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_EXPLOSION)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)),
+
+ [SPECIES_WEEZING] = (TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_EXPLOSION)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)),
+
+ [SPECIES_RHYHORN] = (TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)),
+
+ [SPECIES_RHYDON] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FIRE_PUNCH)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_CHANSEY] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_METRONOME)
+ | TUTOR(MOVE_SOFT_BOILED)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_DEFENSE_CURL)),
+
+ [SPECIES_TANGELA] = (TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)),
+
+ [SPECIES_KANGASKHAN] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FIRE_PUNCH)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_HORSEA] = (TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_SEADRA] = (TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_GOLDEEN] = (TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_SEAKING] = (TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_STARYU] = (TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_STARMIE] = (TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_MR_MIME] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_METRONOME)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FIRE_PUNCH)),
+
+ [SPECIES_SCYTHER] = (TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_JYNX] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_METRONOME)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)),
+
+ [SPECIES_ELECTABUZZ] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FIRE_PUNCH)),
+
+ [SPECIES_MAGMAR] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FIRE_PUNCH)),
+
+ [SPECIES_PINSIR] = (TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_TAUROS] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)),
+
+ [SPECIES_MAGIKARP] = (0),
+
+ [SPECIES_GYARADOS] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)),
+
+ [SPECIES_LAPRAS] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)),
+
+ [SPECIES_DITTO] = (0),
+
+ [SPECIES_EEVEE] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_VAPOREON] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_JOLTEON] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_FLAREON] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_PORYGON] = (TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_OMANYTE] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)),
+
+ [SPECIES_OMASTAR] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)),
+
+ [SPECIES_KABUTO] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)),
+
+ [SPECIES_KABUTOPS] = (TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_AERODACTYL] = (TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_SNORLAX] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_METRONOME)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_DEFENSE_CURL)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FIRE_PUNCH)),
+
+ [SPECIES_ARTICUNO] = (TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_ZAPDOS] = (TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_MOLTRES] = (TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_DRATINI] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_DRAGONAIR] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_DRAGONITE] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FIRE_PUNCH)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_MEWTWO] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_METRONOME)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FIRE_PUNCH)),
+
+ [SPECIES_MEW] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_METRONOME)
+ | TUTOR(MOVE_SOFT_BOILED)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_EXPLOSION)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_DEFENSE_CURL)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FIRE_PUNCH)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_CHIKORITA] = (TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)),
+
+ [SPECIES_BAYLEEF] = (TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_MEGANIUM] = (TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_CYNDAQUIL] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_DEFENSE_CURL)),
+
+ [SPECIES_QUILAVA] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_DEFENSE_CURL)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_TYPHLOSION] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_DEFENSE_CURL)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FIRE_PUNCH)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_TOTODILE] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)),
+
+ [SPECIES_CROCONAW] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_FERALIGATR] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_SENTRET] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_DEFENSE_CURL)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FIRE_PUNCH)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_FURRET] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_DEFENSE_CURL)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FIRE_PUNCH)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_HOOTHOOT] = (TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_NOCTOWL] = (TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_LEDYBA] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_THUNDER_PUNCH)),
+
+ [SPECIES_LEDIAN] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_THUNDER_PUNCH)),
+
+ [SPECIES_SPINARAK] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)),
+
+ [SPECIES_ARIADOS] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)),
+
+ [SPECIES_CROBAT] = (TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_CHINCHOU] = (TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)),
+
+ [SPECIES_LANTURN] = (TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)),
+
+ [SPECIES_PICHU] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_DEFENSE_CURL)),
+
+ [SPECIES_CLEFFA] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_METRONOME)
+ | TUTOR(MOVE_SOFT_BOILED)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_DEFENSE_CURL)),
+
+ [SPECIES_IGGLYBUFF] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_DEFENSE_CURL)),
+
+ [SPECIES_TOGEPI] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_METRONOME)
+ | TUTOR(MOVE_SOFT_BOILED)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_DEFENSE_CURL)),
+
+ [SPECIES_TOGETIC] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_METRONOME)
+ | TUTOR(MOVE_SOFT_BOILED)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_DEFENSE_CURL)),
+
+ [SPECIES_NATU] = (TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_XATU] = (TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_MAREEP] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_DEFENSE_CURL)),
+
+ [SPECIES_FLAAFFY] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_DEFENSE_CURL)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FIRE_PUNCH)),
+
+ [SPECIES_AMPHAROS] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_DEFENSE_CURL)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FIRE_PUNCH)),
+
+ [SPECIES_BELLOSSOM] = (TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)),
+
+ [SPECIES_MARILL] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_DEFENSE_CURL)),
+
+ [SPECIES_AZUMARILL] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_DEFENSE_CURL)),
+
+ [SPECIES_SUDOWOODO] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_EXPLOSION)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_DEFENSE_CURL)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FIRE_PUNCH)),
+
+ [SPECIES_POLITOED] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_METRONOME)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_DEFENSE_CURL)),
+
+ [SPECIES_HOPPIP] = (TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_DEFENSE_CURL)),
+
+ [SPECIES_SKIPLOOM] = (TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_DEFENSE_CURL)),
+
+ [SPECIES_JUMPLUFF] = (TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_DEFENSE_CURL)),
+
+ [SPECIES_AIPOM] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_METRONOME)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_DEFENSE_CURL)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FIRE_PUNCH)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_SUNKERN] = (TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)),
+
+ [SPECIES_SUNFLORA] = (TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)),
+
+ [SPECIES_YANMA] = (TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_WOOPER] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_DEFENSE_CURL)),
+
+ [SPECIES_QUAGSIRE] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_DEFENSE_CURL)),
+
+ [SPECIES_ESPEON] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_UMBREON] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_MURKROW] = (TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_SLOWKING] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_MISDREAVUS] = (TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_DEFENSE_CURL)),
+
+ [SPECIES_UNOWN] = (0),
+
+ [SPECIES_WOBBUFFET] = (0),
+
+ [SPECIES_GIRAFARIG] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_PINECO] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_EXPLOSION)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_DEFENSE_CURL)),
+
+ [SPECIES_FORRETRESS] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_EXPLOSION)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_DEFENSE_CURL)),
+
+ [SPECIES_DUNSPARCE] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_DEFENSE_CURL)),
+
+ [SPECIES_GLIGAR] = (TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_STEELIX] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_EXPLOSION)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_DEFENSE_CURL)),
+
+ [SPECIES_SNUBBULL] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_METRONOME)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_DEFENSE_CURL)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FIRE_PUNCH)),
+
+ [SPECIES_GRANBULL] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_METRONOME)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_DEFENSE_CURL)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FIRE_PUNCH)),
+
+ [SPECIES_QWILFISH] = (TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_DEFENSE_CURL)),
+
+ [SPECIES_SCIZOR] = (TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_SHUCKLE] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_DEFENSE_CURL)),
+
+ [SPECIES_HERACROSS] = (TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_SNEASEL] = (TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_DEFENSE_CURL)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_TEDDIURSA] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_METRONOME)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_DEFENSE_CURL)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FIRE_PUNCH)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_URSARING] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_METRONOME)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_DEFENSE_CURL)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FIRE_PUNCH)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_SLUGMA] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_DEFENSE_CURL)),
+
+ [SPECIES_MAGCARGO] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_DEFENSE_CURL)),
+
+ [SPECIES_SWINUB] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_DEFENSE_CURL)),
+
+ [SPECIES_PILOSWINE] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_DEFENSE_CURL)),
+
+ [SPECIES_CORSOLA] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_EXPLOSION)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_DEFENSE_CURL)),
+
+ [SPECIES_REMORAID] = (TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_DEFENSE_CURL)),
+
+ [SPECIES_OCTILLERY] = (TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_DEFENSE_CURL)),
+
+ [SPECIES_DELIBIRD] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_MANTINE] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_SKARMORY] = (TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_HOUNDOUR] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_HOUNDOOM] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_KINGDRA] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_PHANPY] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_DEFENSE_CURL)),
+
+ [SPECIES_DONPHAN] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_DEFENSE_CURL)),
+
+ [SPECIES_PORYGON2] = (TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_DEFENSE_CURL)),
+
+ [SPECIES_STANTLER] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_SMEARGLE] = (0),
+
+ [SPECIES_TYROGUE] = (TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_HITMONTOP] = (TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_SMOOCHUM] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_METRONOME)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)),
+
+ [SPECIES_ELEKID] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FIRE_PUNCH)),
+
+ [SPECIES_MAGBY] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FIRE_PUNCH)),
+
+ [SPECIES_MILTANK] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_METRONOME)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_DEFENSE_CURL)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FIRE_PUNCH)),
+
+ [SPECIES_BLISSEY] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_METRONOME)
+ | TUTOR(MOVE_SOFT_BOILED)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_DEFENSE_CURL)),
+
+ [SPECIES_RAIKOU] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_ENTEI] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_SUICUNE] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_LARVITAR] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)),
+
+ [SPECIES_PUPITAR] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)),
+
+ [SPECIES_TYRANITAR] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_FIRE_PUNCH)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_LUGIA] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_HO_OH] = (TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_CELEBI] = (TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_METRONOME)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_DEFENSE_CURL)),
+
+ [SPECIES_TREECKO] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_GROVYLE] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_SCEPTILE] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_TORCHIC] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_COMBUSKEN] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FIRE_PUNCH)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_BLAZIKEN] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FIRE_PUNCH)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_MUDKIP] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_DEFENSE_CURL)),
+
+ [SPECIES_MARSHTOMP] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_DEFENSE_CURL)),
+
+ [SPECIES_SWAMPERT] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_DEFENSE_CURL)),
+
+ [SPECIES_POOCHYENA] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)),
+
+ [SPECIES_MIGHTYENA] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)),
+
+ [SPECIES_ZIGZAGOON] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_DEFENSE_CURL)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_LINOONE] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_DEFENSE_CURL)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_WURMPLE] = (0),
+
+ [SPECIES_SILCOON] = (0),
+
+ [SPECIES_BEAUTIFLY] = (TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_CASCOON] = (0),
+
+ [SPECIES_DUSTOX] = (TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_LOTAD] = (TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)),
+
+ [SPECIES_LOMBRE] = (TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FIRE_PUNCH)),
+
+ [SPECIES_LUDICOLO] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_METRONOME)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FIRE_PUNCH)),
+
+ [SPECIES_SEEDOT] = (TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_EXPLOSION)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_DEFENSE_CURL)),
+
+ [SPECIES_NUZLEAF] = (TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_EXPLOSION)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_DEFENSE_CURL)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_SHIFTRY] = (TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_EXPLOSION)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_DEFENSE_CURL)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_NINCADA] = (TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_NINJASK] = (TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_SHEDINJA] = (TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_TAILLOW] = (TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_SWELLOW] = (TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_SHROOMISH] = (TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)),
+
+ [SPECIES_BRELOOM] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_SPINDA] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_METRONOME)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_DEFENSE_CURL)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FIRE_PUNCH)),
+
+ [SPECIES_WINGULL] = (TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_PELIPPER] = (TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_SURSKIT] = (TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_MASQUERAIN] = (TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_WAILMER] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_DEFENSE_CURL)),
+
+ [SPECIES_WAILORD] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_DEFENSE_CURL)),
+
+ [SPECIES_SKITTY] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_DEFENSE_CURL)),
+
+ [SPECIES_DELCATTY] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_DEFENSE_CURL)),
+
+ [SPECIES_KECLEON] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_METRONOME)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_DEFENSE_CURL)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FIRE_PUNCH)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_BALTOY] = (TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_EXPLOSION)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)),
+
+ [SPECIES_CLAYDOL] = (TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_EXPLOSION)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)),
+
+ [SPECIES_NOSEPASS] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_EXPLOSION)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_DEFENSE_CURL)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FIRE_PUNCH)),
+
+ [SPECIES_TORKOAL] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_EXPLOSION)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)),
+
+ [SPECIES_SABLEYE] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_METRONOME)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FIRE_PUNCH)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_BARBOACH] = (TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)),
+
+ [SPECIES_WHISCASH] = (TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)),
+
+ [SPECIES_LUVDISC] = (TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_CORPHISH] = (TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_CRAWDAUNT] = (TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_FEEBAS] = (TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_MILOTIC] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_CARVANHA] = (TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_SHARPEDO] = (TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_TRAPINCH] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)),
+
+ [SPECIES_VIBRAVA] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_FLYGON] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_FIRE_PUNCH)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_MAKUHITA] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_METRONOME)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FIRE_PUNCH)),
+
+ [SPECIES_HARIYAMA] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_METRONOME)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FIRE_PUNCH)),
+
+ [SPECIES_ELECTRIKE] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_MANECTRIC] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_NUMEL] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_DEFENSE_CURL)),
+
+ [SPECIES_CAMERUPT] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_EXPLOSION)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_DEFENSE_CURL)),
+
+ [SPECIES_SPHEAL] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_DEFENSE_CURL)),
+
+ [SPECIES_SEALEO] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_DEFENSE_CURL)),
+
+ [SPECIES_WALREIN] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_DEFENSE_CURL)),
+
+ [SPECIES_CACNEA] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_CACTURNE] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_SNORUNT] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)),
+
+ [SPECIES_GLALIE] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_EXPLOSION)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_DEFENSE_CURL)),
+
+ [SPECIES_LUNATONE] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_EXPLOSION)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_DEFENSE_CURL)),
+
+ [SPECIES_SOLROCK] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_EXPLOSION)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_DEFENSE_CURL)),
+
+ [SPECIES_AZURILL] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_DEFENSE_CURL)),
+
+ [SPECIES_SPOINK] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_GRUMPIG] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FIRE_PUNCH)),
+
+ [SPECIES_PLUSLE] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_METRONOME)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_DEFENSE_CURL)
+ | TUTOR(MOVE_THUNDER_PUNCH)),
+
+ [SPECIES_MINUN] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_METRONOME)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_DEFENSE_CURL)
+ | TUTOR(MOVE_THUNDER_PUNCH)),
+
+ [SPECIES_MAWILE] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_THUNDER_PUNCH)),
+
+ [SPECIES_MEDITITE] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_METRONOME)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FIRE_PUNCH)),
+
+ [SPECIES_MEDICHAM] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_METRONOME)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FIRE_PUNCH)),
+
+ [SPECIES_SWABLU] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_ALTARIA] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_WYNAUT] = (0),
+
+ [SPECIES_DUSKULL] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)),
+
+ [SPECIES_DUSCLOPS] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_METRONOME)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FIRE_PUNCH)),
+
+ [SPECIES_ROSELIA] = (TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_SLAKOTH] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FIRE_PUNCH)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_VIGOROTH] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FIRE_PUNCH)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_SLAKING] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FIRE_PUNCH)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_GULPIN] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_EXPLOSION)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_DEFENSE_CURL)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FIRE_PUNCH)),
+
+ [SPECIES_SWALOT] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_EXPLOSION)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_DEFENSE_CURL)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FIRE_PUNCH)),
+
+ [SPECIES_TROPIUS] = (TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_WHISMUR] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_DEFENSE_CURL)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FIRE_PUNCH)),
+
+ [SPECIES_LOUDRED] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_DEFENSE_CURL)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FIRE_PUNCH)),
+
+ [SPECIES_EXPLOUD] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_DEFENSE_CURL)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FIRE_PUNCH)),
+
+ [SPECIES_CLAMPERL] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)),
+
+ [SPECIES_HUNTAIL] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_GOREBYSS] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)),
+
+ [SPECIES_ABSOL] = (TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_SHUPPET] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)),
+
+ [SPECIES_BANETTE] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_METRONOME)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)),
+
+ [SPECIES_SEVIPER] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_ZANGOOSE] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_DEFENSE_CURL)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FIRE_PUNCH)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_RELICANTH] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)),
+
+ [SPECIES_ARON] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_DEFENSE_CURL)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_LAIRON] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_DEFENSE_CURL)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_AGGRON] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_DEFENSE_CURL)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FIRE_PUNCH)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_CASTFORM] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_DEFENSE_CURL)),
+
+ [SPECIES_VOLBEAT] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_METRONOME)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_THUNDER_PUNCH)),
+
+ [SPECIES_ILLUMISE] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_METRONOME)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_THUNDER_PUNCH)),
+
+ [SPECIES_LILEEP] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)),
+
+ [SPECIES_CRADILY] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)),
+
+ [SPECIES_ANORITH] = (TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_ARMALDO] = (TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_RALTS] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_DEFENSE_CURL)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FIRE_PUNCH)),
+
+ [SPECIES_KIRLIA] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_DEFENSE_CURL)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FIRE_PUNCH)),
+
+ [SPECIES_GARDEVOIR] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_DEFENSE_CURL)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FIRE_PUNCH)),
+
+ [SPECIES_BAGON] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_SHELGON] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_DEFENSE_CURL)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_SALAMENCE] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_DEFENSE_CURL)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_BELDUM] = (0),
+
+ [SPECIES_METANG] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_EXPLOSION)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_DEFENSE_CURL)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_METAGROSS] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_EXPLOSION)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_DEFENSE_CURL)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_REGIROCK] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_EXPLOSION)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_DEFENSE_CURL)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FIRE_PUNCH)),
+
+ [SPECIES_REGICE] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_EXPLOSION)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_DEFENSE_CURL)
+ | TUTOR(MOVE_THUNDER_PUNCH)),
+
+ [SPECIES_REGISTEEL] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_EXPLOSION)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_DEFENSE_CURL)
+ | TUTOR(MOVE_THUNDER_PUNCH)),
+
+ [SPECIES_KYOGRE] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_DEFENSE_CURL)),
+
+ [SPECIES_GROUDON] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_SWORDS_DANCE)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_DEFENSE_CURL)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FIRE_PUNCH)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_RAYQUAZA] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_LATIAS] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_LATIOS] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_FURY_CUTTER)),
+
+ [SPECIES_JIRACHI] = (TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_METRONOME)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_DEFENSE_CURL)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FIRE_PUNCH)),
+
+ [SPECIES_DEOXYS] = (TUTOR(MOVE_MEGA_PUNCH)
+ | TUTOR(MOVE_MEGA_KICK)
+ | TUTOR(MOVE_BODY_SLAM)
+ | TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_COUNTER)
+ | TUTOR(MOVE_SEISMIC_TOSS)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_THUNDER_WAVE)
+ | TUTOR(MOVE_ROCK_SLIDE)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_DYNAMIC_PUNCH)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_MUD_SLAP)
+ | TUTOR(MOVE_ICE_PUNCH)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_SWIFT)
+ | TUTOR(MOVE_THUNDER_PUNCH)
+ | TUTOR(MOVE_FIRE_PUNCH)),
+
+ [SPECIES_CHIMECHO] = (TUTOR(MOVE_DOUBLE_EDGE)
+ | TUTOR(MOVE_MIMIC)
+ | TUTOR(MOVE_DREAM_EATER)
+ | TUTOR(MOVE_SUBSTITUTE)
+ | TUTOR(MOVE_ROLLOUT)
+ | TUTOR(MOVE_PSYCH_UP)
+ | TUTOR(MOVE_SNORE)
+ | TUTOR(MOVE_ICY_WIND)
+ | TUTOR(MOVE_ENDURE)
+ | TUTOR(MOVE_SWAGGER)
+ | TUTOR(MOVE_SLEEP_TALK)
+ | TUTOR(MOVE_DEFENSE_CURL)),
};
diff --git a/src/data/script_menu.h b/src/data/script_menu.h
new file mode 100644
index 000000000..b64146a5d
--- /dev/null
+++ b/src/data/script_menu.h
@@ -0,0 +1,1006 @@
+// multichoice lists
+static const struct MenuAction MultichoiceList_BrineyOnDewford[] =
+{
+ {gText_Petalburg},
+ {gText_Slateport},
+ {gText_Exit},
+};
+
+static const struct MenuAction MultichoiceList_EnterInfo[] =
+{
+ {gText_Enter2},
+ {gText_Info2},
+ {gText_Exit},
+};
+
+static const struct MenuAction MultichoiceList_ContestInfo[] =
+{
+ {gText_WhatsAContest},
+ {gText_TypesOfContests},
+ {gText_Ranks},
+ {gText_Cancel2},
+};
+
+static const struct MenuAction MultichoiceList_ContestType[] =
+{
+ {gText_CoolnessContest},
+ {gText_BeautyContest},
+ {gText_CutenessContest},
+ {gText_SmartnessContest},
+ {gText_ToughnessContest},
+ {gText_Exit},
+};
+
+static const struct MenuAction MultichoiceList_DecorRegistry[] =
+{
+ {gText_Decoration2},
+ {gText_PackUp},
+ {gText_Registry},
+ {gText_Exit},
+};
+
+static const struct MenuAction MultichoiceList_DecorNoRegistry[] =
+{
+ {gText_Decoration2},
+ {gText_PackUp},
+ {gText_Exit},
+};
+
+static const struct MenuAction MultichoiceList_RegisterMenu[] =
+{
+ {gMenuText_Register},
+ {gText_Registry},
+ {gText_Information},
+ {gText_Cancel2},
+};
+
+static const struct MenuAction MultichoiceList_Bike[] =
+{
+ {gText_Mach},
+ {gText_Acro},
+};
+
+static const struct MenuAction MultichoiceList_StatusInfo[] =
+{
+ {gText_Psn},
+ {gText_Par},
+ {gText_Slp},
+ {gText_Brn},
+ {gText_Frz},
+ {gText_Exit},
+};
+
+static const struct MenuAction MultichoiceList_BrineyOffDewford[] =
+{
+ {gText_Dewford},
+ {gText_Exit},
+};
+
+static const struct MenuAction MultichoiceList_ViewedPaintings[] =
+{
+ {gText_SawIt},
+ {gText_NotYet},
+};
+
+static const struct MenuAction MultichoiceList_YesNoInfo2[] =
+{
+ {gText_Yes},
+ {gText_No},
+ {gText_Info2},
+};
+
+static const struct MenuAction MultichoiceList_ChallengeInfo[] =
+{
+ {gText_Challenge},
+ {gText_Info3},
+ {gText_Exit},
+};
+
+static const struct MenuAction MultichoiceList_LevelMode[] =
+{
+ {gText_Lv50},
+ {gText_OpenLevel},
+ {gText_Exit},
+};
+
+static const struct MenuAction MultichoiceList_Mechadoll1_Q1[] =
+{
+ {gTrickHouse_Mechadoll_Oddish},
+ {gTrickHouse_Mechadoll_Poochyena},
+ {gTrickHouse_Mechadoll_Taillow},
+};
+
+static const struct MenuAction MultichoiceList_Mechadoll1_Q2[] =
+{
+ {gTrickHouse_Mechadoll_Azurill},
+ {gTrickHouse_Mechadoll_Lotad},
+ {gTrickHouse_Mechadoll_Wingull},
+};
+
+static const struct MenuAction MultichoiceList_Mechadoll1_Q3[] =
+{
+ {gTrickHouse_Mechadoll_Dustox},
+ {gTrickHouse_Mechadoll_Zubat},
+ {gTrickHouse_Mechadoll_Nincada},
+};
+
+static const struct MenuAction MultichoiceList_Mechadoll2_Q1[] =
+{
+ {gTrickHouse_Mechadoll_Ralts},
+ {gTrickHouse_Mechadoll_Zigzagoon},
+ {gTrickHouse_Mechadoll_Slakoth},
+};
+
+static const struct MenuAction MultichoiceList_Mechadoll2_Q2[] =
+{
+ {gTrickHouse_Mechadoll_Poochyena2},
+ {gTrickHouse_Mechadoll_Shroomish},
+ {gTrickHouse_Mechadoll_Zigzagoon2},
+};
+
+static const struct MenuAction MultichoiceList_Mechadoll2_Q3[] =
+{
+ {gTrickHouse_Mechadoll_Poochyena3},
+ {gTrickHouse_Mechadoll_Zubat2},
+ {gTrickHouse_Mechadoll_Carvanha},
+};
+
+static const struct MenuAction MultichoiceList_Mechadoll3_Q1[] =
+{
+ {gTrickHouse_Mechadoll_BurnHeal},
+ {gTrickHouse_Mechadoll_HarborMail},
+ {gTrickHouse_Mechadoll_SamePrice},
+};
+
+static const struct MenuAction MultichoiceList_Mechadoll3_Q2[] =
+{
+ {gTrickHouse_Mechadoll_60Yen},
+ {gTrickHouse_Mechadoll_55Yen},
+ {gTrickHouse_Mechadoll_Nothing},
+};
+
+static const struct MenuAction MultichoiceList_Mechadoll3_Q3[] =
+{
+ {gTrickHouse_Mechadoll_CostMore},
+ {gTrickHouse_Mechadoll_CostLess},
+ {gTrickHouse_Mechadoll_SamePrice2},
+};
+
+static const struct MenuAction MultichoiceList_Mechadoll4_Q1[] =
+{
+ {gTrickHouse_Mechadoll_Male},
+ {gTrickHouse_Mechadoll_Female},
+ {gTrickHouse_Mechadoll_Neither},
+};
+
+static const struct MenuAction MultichoiceList_Mechadoll4_Q2[] =
+{
+ {gTrickHouse_Mechadoll_ElderlyMen},
+ {gTrickHouse_Mechadoll_ElderlyLadies},
+ {gTrickHouse_Mechadoll_SameNumber},
+};
+
+static const struct MenuAction MultichoiceList_Mechadoll4_Q3[] =
+{
+ {gTrickHouse_Mechadoll_None},
+ {gTrickHouse_Mechadoll_One},
+ {gTrickHouse_Mechadoll_Two},
+};
+
+static const struct MenuAction MultichoiceList_Mechadoll5_Q1[] =
+{
+ {gTrickHouse_Mechadoll_Two2},
+ {gTrickHouse_Mechadoll_Three},
+ {gTrickHouse_Mechadoll_Four},
+};
+
+static const struct MenuAction MultichoiceList_Mechadoll5_Q2[] =
+{
+ {gTrickHouse_Mechadoll_Six},
+ {gTrickHouse_Mechadoll_Seven},
+ {gTrickHouse_Mechadoll_Eight},
+};
+
+static const struct MenuAction MultichoiceList_Mechadoll5_Q3[] =
+{
+ {gTrickHouse_Mechadoll_Six2},
+ {gTrickHouse_Mechadoll_Seven2},
+ {gTrickHouse_Mechadoll_Eight2},
+};
+
+static const struct MenuAction MultichoiceList_VendingMachine[] =
+{
+ {gText_FreshWaterAndPrice},
+ {gText_SodaPopAndPrice},
+ {gText_LemonadeAndPrice},
+ {gText_Exit},
+};
+
+static const struct MenuAction MultichoiceList_MachBikeInfo[] =
+{
+ {gText_HowToRide},
+ {gText_HowToTurn},
+ {gText_SandySlopes},
+ {gText_Exit},
+};
+
+static const struct MenuAction MultichoiceList_AcroBikeInfo[] =
+{
+ {gText_Wheelies},
+ {gText_BunnyHops},
+ {gText_Jump},
+ {gText_Exit},
+};
+
+static const struct MenuAction MultichoiceList_Satisfaction[] =
+{
+ {gText_Satisfied},
+ {gText_Dissatisfied},
+};
+
+static const struct MenuAction MultichoiceList_SternDeepSea[] =
+{
+ {gText_DeepSeaTooth},
+ {gText_DeepSeaScale},
+ {gText_Exit},
+};
+
+static const struct MenuAction MultichoiceList_UnusedAshVendor[] =
+{
+ {gText_BlueFlute2},
+ {gText_YellowFlute2},
+ {gText_RedFlute2},
+ {gText_WhiteFlute2},
+ {gText_BlackFlute2},
+ {gText_GlassChair},
+ {gText_GlassDesk},
+ {gText_Cancel2},
+};
+
+static const struct MenuAction MultichoiceList_GameCornerDolls[] =
+{
+ {gText_TreeckoDollAndPrice},
+ {gText_TorchicDollAndPrice},
+ {gText_MudkipDollAndPrice},
+ {gText_Exit},
+};
+
+static const struct MenuAction MultichoiceList_GameCornerTMs[] =
+{
+ {gText_TM32AndPrice},
+ {gText_TM29AndPrice},
+ {gText_TM35AndPrice},
+ {gText_TM24AndPrice},
+ {gText_TM13AndPrice},
+ {gText_Exit},
+};
+
+static const struct MenuAction MultichoiceList_GameCornerCoins[] =
+{
+ {gText_50CoinsAndPrice},
+ {gText_500CoinsAndPrice},
+ {gText_Exit},
+};
+
+static const struct MenuAction MultichoiceList_HowsFishing[] =
+{
+ {gText_Excellent2},
+ {gText_NotSoGood},
+};
+
+static const struct MenuAction MultichoiceList_SSTidalSlateportWithBF[] =
+{
+ {gText_LilycoveCity},
+ {gText_BattleFrontier},
+ {gText_Exit},
+};
+
+static const struct MenuAction MultichoiceList_SSTidalBattleFrontier[] =
+{
+ {gText_SlateportCity},
+ {gText_LilycoveCity},
+ {gText_Exit},
+};
+
+static const struct MenuAction MultichoiceList_RightLeft[] =
+{
+ {gText_Right},
+ {gText_Left},
+};
+
+static const struct MenuAction MultichoiceList_SSTidalSlateportNoBF[] =
+{
+ {gText_LilycoveCity},
+ {gText_Exit},
+};
+
+static const struct MenuAction MultichoiceList_Floors[] =
+{
+ {gText_5F},
+ {gText_4F},
+ {gText_3F},
+ {gText_2F},
+ {gText_1F},
+ {gText_Exit},
+};
+
+static const struct MenuAction MultichoiceList_ShardsR[] =
+{
+ {gText_RedShard},
+ {gText_Exit},
+};
+
+static const struct MenuAction MultichoiceList_ShardsY[] =
+{
+ {gText_YellowShard},
+ {gText_Exit},
+};
+
+static const struct MenuAction MultichoiceList_ShardsRY[] =
+{
+ {gText_RedShard},
+ {gText_YellowShard},
+ {gText_Exit},
+};
+
+static const struct MenuAction MultichoiceList_ShardsB[] =
+{
+ {gText_BlueShard},
+ {gText_Exit},
+};
+
+static const struct MenuAction MultichoiceList_ShardsRB[] =
+{
+ {gText_RedShard},
+ {gText_BlueShard},
+ {gText_Exit},
+};
+
+static const struct MenuAction MultichoiceList_ShardsYB[] =
+{
+ {gText_YellowShard},
+ {gText_BlueShard},
+ {gText_Exit},
+};
+
+static const struct MenuAction MultichoiceList_ShardsRYB[] =
+{
+ {gText_RedShard},
+ {gText_YellowShard},
+ {gText_BlueShard},
+ {gText_Exit},
+};
+
+static const struct MenuAction MultichoiceList_ShardsG[] =
+{
+ {gText_GreenShard},
+ {gText_Exit},
+};
+
+static const struct MenuAction MultichoiceList_ShardsRG[] =
+{
+ {gText_RedShard},
+ {gText_GreenShard},
+ {gText_Exit},
+};
+
+static const struct MenuAction MultichoiceList_ShardsYG[] =
+{
+ {gText_YellowShard},
+ {gText_GreenShard},
+ {gText_Exit},
+};
+
+static const struct MenuAction MultichoiceList_ShardsRYG[] =
+{
+ {gText_RedShard},
+ {gText_YellowShard},
+ {gText_GreenShard},
+ {gText_Exit},
+};
+
+static const struct MenuAction MultichoiceList_ShardsBG[] =
+{
+ {gText_BlueShard},
+ {gText_GreenShard},
+ {gText_Exit},
+};
+
+static const struct MenuAction MultichoiceList_ShardsRBG[] =
+{
+ {gText_RedShard},
+ {gText_BlueShard},
+ {gText_GreenShard},
+ {gText_Exit},
+};
+
+static const struct MenuAction MultichoiceList_ShardsYBG[] =
+{
+ {gText_YellowShard},
+ {gText_BlueShard},
+ {gText_GreenShard},
+ {gText_Exit},
+};
+
+static const struct MenuAction MultichoiceList_ShardsRYBG[] =
+{
+ {gText_RedShard},
+ {gText_YellowShard},
+ {gText_BlueShard},
+ {gText_GreenShard},
+ {gText_Exit},
+};
+
+static const struct MenuAction MultichoiceList_TourneyWithRecord[] =
+{
+ {gText_Opponent},
+ {gText_Tourney_Tree},
+ {gText_ReadyToStart},
+ {gText_Record2},
+ {gText_Rest},
+ {gText_Retire},
+};
+
+static const struct MenuAction MultichoiceList_TourneyNoRecord[] =
+{
+ {gText_Opponent},
+ {gText_Tourney_Tree},
+ {gText_ReadyToStart},
+ {gText_Rest},
+ {gText_Retire},
+};
+
+static const struct MenuAction MultichoiceList_Tent[] =
+{
+ {gText_RedTent},
+ {gText_BlueTent},
+};
+
+static const struct MenuAction MultichoiceList_LinkServicesNoBerry[] =
+{
+ {gText_TradeCenter},
+ {gText_Colosseum},
+ {gText_RecordCorner},
+ {gText_Exit},
+};
+
+static const struct MenuAction MultichoiceList_YesNoInfo[] =
+{
+ {gText_Yes},
+ {gText_No},
+ {gText_Info2},
+};
+
+static const struct MenuAction MultichoiceList_BattleMode[] =
+{
+ {gText_SingleBattle},
+ {gText_DoubleBattle},
+ {gText_MultiBattle},
+ {gText_Info2},
+ {gText_Exit},
+};
+
+static const struct MenuAction MultichoiceList_LinkServicesNoRecord[] =
+{
+ {gText_TradeCenter},
+ {gText_Colosseum},
+ {gText_BerryCrush3},
+ {gText_Exit},
+};
+
+static const struct MenuAction MultichoiceList_LinkServicesAll[] =
+{
+ {gText_TradeCenter},
+ {gText_Colosseum},
+ {gText_RecordCorner},
+ {gText_BerryCrush3},
+ {gText_Exit},
+};
+
+static const struct MenuAction MultichoiceList_LinkServicesNoRecordBerry[] =
+{
+ {gText_TradeCenter},
+ {gText_Colosseum},
+ {gText_Exit},
+};
+
+static const struct MenuAction MultichoiceList_WirelessMinigame[] =
+{
+ {gText_PokemonJump},
+ {gText_DodrioBerryPicking},
+ {gText_Exit},
+};
+
+static const struct MenuAction MultichoiceList_LinkLeader[] =
+{
+ {gText_JoinGroup},
+ {gText_BecomeLeader},
+ {gText_Exit},
+};
+
+static const struct MenuAction MultichoiceList_ContestRank[] =
+{
+ {gText_NormalRank},
+ {gText_SuperRank},
+ {gText_HyperRank},
+ {gText_MasterRank},
+ {gText_Exit},
+};
+
+static const struct MenuAction MultichoiceList_FrontierItemChoose[] =
+{
+ {gText_BattleBag},
+ {gText_HeldItem},
+ {gText_Exit},
+};
+
+static const struct MenuAction MultichoiceList_LinkContestInfo[] =
+{
+ {gText_LinkContest},
+ {gText_AboutE_Mode},
+ {gText_AboutG_Mode},
+ {gText_Cancel2},
+};
+
+static const struct MenuAction MultichoiceList_LinkContestMode[] =
+{
+ {gText_E_Mode},
+ {gText_G_Mode},
+ {gText_Exit},
+};
+
+static const struct MenuAction MultichoiceList_ForcedStartMenu[] =
+{
+ {gText_MenuOptionPokedex},
+ {gText_MenuOptionPokemon},
+ {gText_MenuOptionBag},
+ {gText_MenuOptionPokenav},
+ {gText_Blank}, // blank because it's filled by the player's name
+ {gText_MenuOptionSave},
+ {gText_MenuOptionOption},
+ {gText_MenuOptionExit},
+};
+
+static const struct MenuAction MultichoiceList_FrontierGamblerBet[] =
+{
+ {gText_5BP},
+ {gText_10BP},
+ {gText_15BP},
+ {gText_Exit},
+};
+
+static const struct MenuAction MultichoiceList_UnusedSSTidal1[] =
+{
+ {gText_SouthernIsland},
+ {gText_BirthIsland},
+ {gText_Exit},
+};
+
+static const struct MenuAction MultichoiceList_UnusedSSTidal2[] =
+{
+ {gText_SouthernIsland},
+ {gText_FarawayIsland},
+ {gText_Exit},
+};
+
+static const struct MenuAction MultichoiceList_UnusedSSTidal3[] =
+{
+ {gText_BirthIsland},
+ {gText_FarawayIsland},
+ {gText_Exit},
+};
+
+static const struct MenuAction MultichoiceList_UnusedSSTidal4[] =
+{
+ {gText_SouthernIsland},
+ {gText_BirthIsland},
+ {gText_FarawayIsland},
+ {gText_Exit},
+};
+
+static const struct MenuAction MultichoiceList_Fossil[] =
+{
+ {gText_ClawFossil},
+ {gText_RootFossil},
+ {gText_Exit},
+};
+
+static const struct MenuAction MultichoiceList_YesNo[] =
+{
+ {gText_Yes},
+ {gText_No4},
+};
+
+static const struct MenuAction MultichoiceList_FrontierRules[] =
+{
+ {gText_TwoStyles},
+ {gText_Lv50_3},
+ {gText_OpenLevel2},
+ {gText_MonTypeAndNo},
+ {gText_HoldItems},
+ {gText_Exit},
+};
+
+static const struct MenuAction MultichoiceList_FrontierPassInfo[] =
+{
+ {gText_Symbols2},
+ {gText_Record3},
+ {gText_BattlePts},
+ {gText_Exit},
+};
+
+static const struct MenuAction MultichoiceList_BattleArenaRules[] =
+{
+ {gText_BattleRules},
+ {gText_JudgeMind},
+ {gText_JudgeSkill},
+ {gText_JudgeBody},
+ {gText_Exit},
+};
+
+static const struct MenuAction MultichoiceList_BattleTowerRules[] =
+{
+ {gText_TowerInfo},
+ {gText_BattleMon},
+ {gText_BattleSalon},
+ {gText_MultiLink2},
+ {gText_Exit},
+};
+
+static const struct MenuAction MultichoiceList_BattleDomeRules[] =
+{
+ {gText_Matchup},
+ {gText_TourneyTree},
+ {gText_DoubleKO},
+ {gText_Exit},
+};
+
+static const struct MenuAction MultichoiceList_BattleFactoryRules[] =
+{
+ {gText_BasicRules},
+ {gText_SwapPartners},
+ {gText_SwapNumber},
+ {gText_SwapNotes},
+ {gText_OpenLevel3},
+ {gText_Exit},
+};
+
+static const struct MenuAction MultichoiceList_BattlePalaceRules[] =
+{
+ {gText_BattleBasics},
+ {gText_PokemonNature},
+ {gText_PokemonMoves},
+ {gText_Underpowered},
+ {gText_WhenInDanger},
+ {gText_Exit},
+};
+
+static const struct MenuAction MultichoiceList_BattlePyramidRules[] =
+{
+ {gText_PyramidPokemon},
+ {gText_PyramidTrainers},
+ {gText_PyramidMaze},
+ {gText_BattleBag2},
+ {gText_Exit},
+};
+
+static const struct MenuAction MultichoiceList_BattlePikeRules[] =
+{
+ {gText_PokenavAndBag},
+ {gText_HeldItems},
+ {gText_PokemonOrder},
+ {gText_Exit},
+};
+
+static const struct MenuAction MultichoiceList_GoOnRecordRestRetire[] =
+{
+ {gText_GoOn},
+ {gText_Record2},
+ {gText_Rest},
+ {gText_Retire},
+};
+
+static const struct MenuAction MultichoiceList_GoOnRestRetire[] =
+{
+ {gText_GoOn},
+ {gText_Rest},
+ {gText_Retire},
+};
+
+static const struct MenuAction MultichoiceList_GoOnRecordRetire[] =
+{
+ {gText_GoOn},
+ {gText_Record2},
+ {gText_Retire},
+};
+
+static const struct MenuAction MultichoiceList_GoOnRetire[] =
+{
+ {gText_GoOn},
+ {gText_Retire},
+};
+
+static const struct MenuAction MultichoiceList_TVLati[] =
+{
+ {gText_Red},
+ {gText_Blue},
+};
+
+static const struct MenuAction MultichoiceList_BattleTowerFeelings[] =
+{
+ {gText_IllBattleNow},
+ {gText_IWon},
+ {gText_ILost},
+ {gText_IWontTell},
+};
+
+static const struct MenuAction MultichoiceList_WheresRayquaza[] =
+{
+ {gText_CaveOfOrigin},
+ {gText_MtPyre},
+ {gText_SkyPillar},
+ {gText_DontRemember},
+};
+
+static const struct MenuAction MultichoiceList_SlateportTentRules[] =
+{
+ {gText_BasicRules},
+ {gText_SwapPartners},
+ {gText_SwapNumber},
+ {gText_SwapNotes},
+ {gText_BattlePokemon},
+ {gText_Exit},
+};
+
+static const struct MenuAction MultichoiceList_FallarborTentRules[] =
+{
+ {gText_BattleTrainers},
+ {gText_BattleRules},
+ {gText_JudgeMind},
+ {gText_JudgeSkill},
+ {gText_JudgeBody},
+ {gText_Exit},
+};
+
+static const struct MenuAction MultichoiceList_TagMatchType[] =
+{
+ {gText_NormalTagMatch},
+ {gText_VarietyTagMatch},
+ {gText_UniqueTagMatch},
+ {gText_ExpertTagMatch},
+ {gText_Exit},
+};
+
+static const struct MenuAction MultichoiceList_Exit[] =
+{
+ {gText_Exit},
+};
+
+struct MultichoiceListStruct
+{
+ const struct MenuAction *list;
+ u8 count;
+};
+
+static const struct MultichoiceListStruct sMultichoiceLists[] =
+{
+ [MULTI_BRINEY_ON_DEWFORD] = MULTICHOICE(MultichoiceList_BrineyOnDewford),
+ [MULTI_PC] = MULTICHOICE(MultichoiceList_Exit),
+ [MULTI_ENTERINFO] = MULTICHOICE(MultichoiceList_EnterInfo),
+ [MULTI_CONTEST_INFO] = MULTICHOICE(MultichoiceList_ContestInfo),
+ [MULTI_CONTEST_TYPE] = MULTICHOICE(MultichoiceList_ContestType),
+ [MULTI_DECOR_NOREGISTRY] = MULTICHOICE(MultichoiceList_DecorNoRegistry),
+ [MULTI_DECOR_REGISTRY] = MULTICHOICE(MultichoiceList_DecorRegistry),
+ [MULTI_REGISTER_MENU] = MULTICHOICE(MultichoiceList_RegisterMenu),
+ [MULTI_SSTIDAL_LILYCOVE] = MULTICHOICE(MultichoiceList_Exit),
+ [MULTI_UNUSED_9] = MULTICHOICE(MultichoiceList_Exit),
+ [MULTI_UNUSED_10] = MULTICHOICE(MultichoiceList_Exit),
+ [MULTI_FRONTIER_PASS_INFO] = MULTICHOICE(MultichoiceList_FrontierPassInfo),
+ [MULTI_BIKE] = MULTICHOICE(MultichoiceList_Bike),
+ [MULTI_STATUS_INFO] = MULTICHOICE(MultichoiceList_StatusInfo),
+ [MULTI_BRINEY_OFF_DEWFORD] = MULTICHOICE(MultichoiceList_BrineyOffDewford),
+ [MULTI_UNUSED_15] = MULTICHOICE(MultichoiceList_Exit),
+ [MULTI_VIEWED_PAINTINGS] = MULTICHOICE(MultichoiceList_ViewedPaintings),
+ [MULTI_YESNOINFO] = MULTICHOICE(MultichoiceList_YesNoInfo),
+ [MULTI_BATTLE_MODE] = MULTICHOICE(MultichoiceList_BattleMode),
+ [MULTI_UNUSED_19] = MULTICHOICE(MultichoiceList_Exit),
+ [MULTI_YESNOINFO_2] = MULTICHOICE(MultichoiceList_YesNoInfo2),
+ [MULTI_UNUSED_21] = MULTICHOICE(MultichoiceList_Exit),
+ [MULTI_UNUSED_22] = MULTICHOICE(MultichoiceList_Exit),
+ [MULTI_CHALLENGEINFO] = MULTICHOICE(MultichoiceList_ChallengeInfo),
+ [MULTI_LEVEL_MODE] = MULTICHOICE(MultichoiceList_LevelMode),
+ [MULTI_MECHADOLL1_Q1] = MULTICHOICE(MultichoiceList_Mechadoll1_Q1),
+ [MULTI_MECHADOLL1_Q2] = MULTICHOICE(MultichoiceList_Mechadoll1_Q2),
+ [MULTI_MECHADOLL1_Q3] = MULTICHOICE(MultichoiceList_Mechadoll1_Q3),
+ [MULTI_MECHADOLL2_Q1] = MULTICHOICE(MultichoiceList_Mechadoll2_Q1),
+ [MULTI_MECHADOLL2_Q2] = MULTICHOICE(MultichoiceList_Mechadoll2_Q2),
+ [MULTI_MECHADOLL2_Q3] = MULTICHOICE(MultichoiceList_Mechadoll2_Q3),
+ [MULTI_MECHADOLL3_Q1] = MULTICHOICE(MultichoiceList_Mechadoll3_Q1),
+ [MULTI_MECHADOLL3_Q2] = MULTICHOICE(MultichoiceList_Mechadoll3_Q2),
+ [MULTI_MECHADOLL3_Q3] = MULTICHOICE(MultichoiceList_Mechadoll3_Q3),
+ [MULTI_MECHADOLL4_Q1] = MULTICHOICE(MultichoiceList_Mechadoll4_Q1),
+ [MULTI_MECHADOLL4_Q2] = MULTICHOICE(MultichoiceList_Mechadoll4_Q2),
+ [MULTI_MECHADOLL4_Q3] = MULTICHOICE(MultichoiceList_Mechadoll4_Q3),
+ [MULTI_MECHADOLL5_Q1] = MULTICHOICE(MultichoiceList_Mechadoll5_Q1),
+ [MULTI_MECHADOLL5_Q2] = MULTICHOICE(MultichoiceList_Mechadoll5_Q2),
+ [MULTI_MECHADOLL5_Q3] = MULTICHOICE(MultichoiceList_Mechadoll5_Q3),
+ [MULTI_UNUSED_40] = MULTICHOICE(MultichoiceList_Exit),
+ [MULTI_UNUSED_41] = MULTICHOICE(MultichoiceList_Exit),
+ [MULTI_VENDING_MACHINE] = MULTICHOICE(MultichoiceList_VendingMachine),
+ [MULTI_MACH_BIKE_INFO] = MULTICHOICE(MultichoiceList_MachBikeInfo),
+ [MULTI_ACRO_BIKE_INFO] = MULTICHOICE(MultichoiceList_AcroBikeInfo),
+ [MULTI_SATISFACTION] = MULTICHOICE(MultichoiceList_Satisfaction),
+ [MULTI_STERN_DEEPSEA] = MULTICHOICE(MultichoiceList_SternDeepSea),
+ [MULTI_UNUSED_ASH_VENDOR] = MULTICHOICE(MultichoiceList_UnusedAshVendor),
+ [MULTI_GAME_CORNER_DOLLS] = MULTICHOICE(MultichoiceList_GameCornerDolls),
+ [MULTI_GAME_CORNER_COINS] = MULTICHOICE(MultichoiceList_GameCornerCoins),
+ [MULTI_HOWS_FISHING] = MULTICHOICE(MultichoiceList_HowsFishing),
+ [MULTI_UNUSED_51] = MULTICHOICE(MultichoiceList_Exit),
+ [MULTI_SSTIDAL_SLATEPORT_WITH_BF] = MULTICHOICE(MultichoiceList_SSTidalSlateportWithBF),
+ [MULTI_SSTIDAL_BATTLE_FRONTIER] = MULTICHOICE(MultichoiceList_SSTidalBattleFrontier),
+ [MULTI_RIGHTLEFT] = MULTICHOICE(MultichoiceList_RightLeft),
+ [MULTI_GAME_CORNER_TMS] = MULTICHOICE(MultichoiceList_GameCornerTMs),
+ [MULTI_SSTIDAL_SLATEPORT_NO_BF] = MULTICHOICE(MultichoiceList_SSTidalSlateportNoBF),
+ [MULTI_FLOORS] = MULTICHOICE(MultichoiceList_Floors),
+ [MULTI_SHARDS_R] = MULTICHOICE(MultichoiceList_ShardsR),
+ [MULTI_SHARDS_Y] = MULTICHOICE(MultichoiceList_ShardsY),
+ [MULTI_SHARDS_RY] = MULTICHOICE(MultichoiceList_ShardsRY),
+ [MULTI_SHARDS_B] = MULTICHOICE(MultichoiceList_ShardsB),
+ [MULTI_SHARDS_RB] = MULTICHOICE(MultichoiceList_ShardsRB),
+ [MULTI_SHARDS_YB] = MULTICHOICE(MultichoiceList_ShardsYB),
+ [MULTI_SHARDS_RYB] = MULTICHOICE(MultichoiceList_ShardsRYB),
+ [MULTI_SHARDS_G] = MULTICHOICE(MultichoiceList_ShardsG),
+ [MULTI_SHARDS_RG] = MULTICHOICE(MultichoiceList_ShardsRG),
+ [MULTI_SHARDS_YG] = MULTICHOICE(MultichoiceList_ShardsYG),
+ [MULTI_SHARDS_RYG] = MULTICHOICE(MultichoiceList_ShardsRYG),
+ [MULTI_SHARDS_BG] = MULTICHOICE(MultichoiceList_ShardsBG),
+ [MULTI_SHARDS_RBG] = MULTICHOICE(MultichoiceList_ShardsRBG),
+ [MULTI_SHARDS_YBG] = MULTICHOICE(MultichoiceList_ShardsYBG),
+ [MULTI_SHARDS_RYBG] = MULTICHOICE(MultichoiceList_ShardsRYBG),
+ [MULTI_TOURNEY_WITH_RECORD] = MULTICHOICE(MultichoiceList_TourneyWithRecord),
+ [MULTI_CABLE_CLUB_NO_RECORD_MIX] = MULTICHOICE(MultichoiceList_LinkServicesNoRecordBerry),
+ [MULTI_WIRELESS_NO_RECORD_BERRY] = MULTICHOICE(MultichoiceList_LinkServicesNoRecordBerry),
+ [MULTI_CABLE_CLUB_WITH_RECORD_MIX] = MULTICHOICE(MultichoiceList_LinkServicesNoBerry),
+ [MULTI_WIRELESS_NO_BERRY] = MULTICHOICE(MultichoiceList_LinkServicesNoBerry),
+ [MULTI_WIRELESS_NO_RECORD] = MULTICHOICE(MultichoiceList_LinkServicesNoRecord),
+ [MULTI_WIRELESS_ALL_SERVICES] = MULTICHOICE(MultichoiceList_LinkServicesAll),
+ [MULTI_WIRELESS_MINIGAME] = MULTICHOICE(MultichoiceList_WirelessMinigame),
+ [MULTI_LINK_LEADER] = MULTICHOICE(MultichoiceList_LinkLeader),
+ [MULTI_CONTEST_RANK] = MULTICHOICE(MultichoiceList_ContestRank),
+ [MULTI_FRONTIER_ITEM_CHOOSE] = MULTICHOICE(MultichoiceList_FrontierItemChoose),
+ [MULTI_LINK_CONTEST_INFO] = MULTICHOICE(MultichoiceList_LinkContestInfo),
+ [MULTI_LINK_CONTEST_MODE] = MULTICHOICE(MultichoiceList_LinkContestMode),
+ [MULTI_FORCED_START_MENU] = MULTICHOICE(MultichoiceList_ForcedStartMenu),
+ [MULTI_FRONTIER_GAMBLER_BET] = MULTICHOICE(MultichoiceList_FrontierGamblerBet),
+ [MULTI_TENT] = MULTICHOICE(MultichoiceList_Tent),
+ [MULTI_UNUSED_SSTIDAL_1] = MULTICHOICE(MultichoiceList_UnusedSSTidal1),
+ [MULTI_UNUSED_SSTIDAL_2] = MULTICHOICE(MultichoiceList_UnusedSSTidal2),
+ [MULTI_UNUSED_SSTIDAL_3] = MULTICHOICE(MultichoiceList_UnusedSSTidal3),
+ [MULTI_UNUSED_SSTIDAL_4] = MULTICHOICE(MultichoiceList_UnusedSSTidal4),
+ [MULTI_FOSSIL] = MULTICHOICE(MultichoiceList_Fossil),
+ [MULTI_YESNO] = MULTICHOICE(MultichoiceList_YesNo),
+ [MULTI_FRONTIER_RULES] = MULTICHOICE(MultichoiceList_FrontierRules),
+ [MULTI_BATTLE_ARENA_RULES] = MULTICHOICE(MultichoiceList_BattleArenaRules),
+ [MULTI_BATTLE_TOWER_RULES] = MULTICHOICE(MultichoiceList_BattleTowerRules),
+ [MULTI_BATTLE_DOME_RULES] = MULTICHOICE(MultichoiceList_BattleDomeRules),
+ [MULTI_BATTLE_FACTORY_RULES] = MULTICHOICE(MultichoiceList_BattleFactoryRules),
+ [MULTI_BATTLE_PALACE_RULES] = MULTICHOICE(MultichoiceList_BattlePalaceRules),
+ [MULTI_BATTLE_PYRAMID_RULES] = MULTICHOICE(MultichoiceList_BattlePyramidRules),
+ [MULTI_BATTLE_PIKE_RULES] = MULTICHOICE(MultichoiceList_BattlePikeRules),
+ [MULTI_GO_ON_RECORD_REST_RETIRE] = MULTICHOICE(MultichoiceList_GoOnRecordRestRetire),
+ [MULTI_GO_ON_REST_RETIRE] = MULTICHOICE(MultichoiceList_GoOnRestRetire),
+ [MULTI_GO_ON_RECORD_RETIRE] = MULTICHOICE(MultichoiceList_GoOnRecordRetire),
+ [MULTI_GO_ON_RETIRE] = MULTICHOICE(MultichoiceList_GoOnRetire),
+ [MULTI_TOURNEY_NO_RECORD] = MULTICHOICE(MultichoiceList_TourneyNoRecord),
+ [MULTI_TV_LATI] = MULTICHOICE(MultichoiceList_TVLati),
+ [MULTI_BATTLE_TOWER_FEELINGS] = MULTICHOICE(MultichoiceList_BattleTowerFeelings),
+ [MULTI_WHERES_RAYQUAZA] = MULTICHOICE(MultichoiceList_WheresRayquaza),
+ [MULTI_SLATEPORT_TENT_RULES] = MULTICHOICE(MultichoiceList_SlateportTentRules),
+ [MULTI_FALLARBOR_TENT_RULES] = MULTICHOICE(MultichoiceList_FallarborTentRules),
+ [MULTI_TAG_MATCH_TYPE] = MULTICHOICE(MultichoiceList_TagMatchType),
+};
+
+const u8 *const gStdStrings[] =
+{
+ [STDSTRING_COOL] = gText_Cool,
+ [STDSTRING_BEAUTY] = gText_Beauty,
+ [STDSTRING_CUTE] = gText_Cute,
+ [STDSTRING_SMART] = gText_Smart,
+ [STDSTRING_TOUGH] = gText_Tough,
+ [STDSTRING_NORMAL] = gText_Normal,
+ [STDSTRING_SUPER] = gText_Super,
+ [STDSTRING_HYPER] = gText_Hyper,
+ [STDSTRING_MASTER] = gText_Master,
+ [STDSTRING_COOL2] = gText_Cool2,
+ [STDSTRING_BEAUTY2] = gText_Beauty2,
+ [STDSTRING_CUTE2] = gText_Cute2,
+ [STDSTRING_SMART2] = gText_Smart2,
+ [STDSTRING_TOUGH2] = gText_Tough2,
+ [STDSTRING_ITEMS] = gText_Items,
+ [STDSTRING_KEYITEMS] = gText_Key_Items,
+ [STDSTRING_POKEBALLS] = gText_Poke_Balls,
+ [STDSTRING_TMHMS] = gText_TMs_Hms,
+ [STDSTRING_BERRIES] = gText_Berries2,
+ [STDSTRING_SINGLE] = gText_Single2,
+ [STDSTRING_DOUBLE] = gText_Double2,
+ [STDSTRING_MULTI] = gText_Multi,
+ [STDSTRING_MULTI_LINK] = gText_MultiLink,
+ [STDSTRING_BATTLE_TOWER] = gText_BattleTower2,
+ [STDSTRING_BATTLE_DOME] = gText_BattleDome,
+ [STDSTRING_BATTLE_FACTORY] = gText_BattleFactory,
+ [STDSTRING_BATTLE_PALACE] = gText_BattlePalace,
+ [STDSTRING_BATTLE_ARENA] = gText_BattleArena,
+ [STDSTRING_BATTLE_PIKE] = gText_BattlePike,
+ [STDSTRING_BATTLE_PYRAMID] = gText_BattlePyramid,
+};
+
+static const u8 sLinkServicesMultichoiceIds[] =
+{
+ MULTI_CABLE_CLUB_NO_RECORD_MIX,
+ MULTI_WIRELESS_NO_RECORD_BERRY,
+ MULTI_CABLE_CLUB_WITH_RECORD_MIX,
+ MULTI_WIRELESS_NO_BERRY,
+ MULTI_WIRELESS_NO_RECORD,
+ MULTI_WIRELESS_ALL_SERVICES
+};
+
+static const u8 *const sPCNameStrings[] =
+{
+ gText_SomeonesPC,
+ gText_LanettesPC,
+ gText_PlayersPC,
+ gText_LogOff,
+};
+
+static const u8 *const sLilycoveSSTidalDestinations[SSTIDAL_SELECTION_COUNT] =
+{
+ [SSTIDAL_SELECTION_SLATEPORT] = gText_SlateportCity,
+ [SSTIDAL_SELECTION_BATTLE_FRONTIER] = gText_BattleFrontier,
+ [SSTIDAL_SELECTION_SOUTHERN_ISLAND] = gText_SouthernIsland,
+ [SSTIDAL_SELECTION_NAVEL_ROCK] = gText_NavelRock,
+ [SSTIDAL_SELECTION_BIRTH_ISLAND] = gText_BirthIsland,
+ [SSTIDAL_SELECTION_FARAWAY_ISLAND] = gText_FarawayIsland,
+ [SSTIDAL_SELECTION_EXIT] = gText_Exit,
+};
+
+static const u8 *const sCableClubOptions_WithRecordMix[] =
+{
+ CableClub_Text_TradeUsingLinkCable,
+ CableClub_Text_BattleUsingLinkCable,
+ CableClub_Text_RecordCornerUsingLinkCable,
+ CableClub_Text_CancelSelectedItem,
+};
+static const u8 *const sWirelessOptionsNoBerryCrush[] =
+{
+ CableClub_Text_YouMayTradeHere,
+ CableClub_Text_YouMayBattleHere,
+ CableClub_Text_CanMixRecords,
+ CableClub_Text_CancelSelectedItem,
+};
+static const u8 *const sWirelessOptions_NoRecordMix[] =
+{
+ CableClub_Text_YouMayTradeHere,
+ CableClub_Text_YouMayBattleHere,
+ CableClub_Text_CanMakeBerryPowder,
+ CableClub_Text_CancelSelectedItem,
+};
+static const u8 *const sWirelessOptions_AllServices[] =
+{
+ CableClub_Text_YouMayTradeHere,
+ CableClub_Text_YouMayBattleHere,
+ CableClub_Text_CanMixRecords,
+ CableClub_Text_CanMakeBerryPowder,
+ CableClub_Text_CancelSelectedItem,
+};
+static const u8 *const sCableClubOptions_NoRecordMix[] =
+{
+ CableClub_Text_TradeUsingLinkCable,
+ CableClub_Text_BattleUsingLinkCable,
+ CableClub_Text_CancelSelectedItem,
+};
+static const u8 *const sWirelessOptions_NoRecordMixBerryCrush[] =
+{
+ CableClub_Text_YouMayTradeHere,
+ CableClub_Text_YouMayBattleHere,
+ CableClub_Text_CancelSelectedItem,
+};
diff --git a/src/data/wild_encounters.json b/src/data/wild_encounters.json
index 6dd24bfed..ea555bd32 100755
--- a/src/data/wild_encounters.json
+++ b/src/data/wild_encounters.json
@@ -3,6 +3,32 @@
{
"label": "gWildMonHeaders",
"for_maps": true,
+ "fields": [
+ {
+ "type": "land_mons",
+ "encounter_rates": [
+ 20, 20, 10, 10, 10, 10, 5, 5, 4, 4, 1, 1
+ ]
+ },
+ {
+ "type": "water_mons",
+ "encounter_rates": [
+ 60, 30, 5, 4, 1
+ ]
+ },
+ {
+ "type": "rock_smash_mons",
+ "encounter_rates": [
+ 60, 30, 5, 4, 1
+ ]
+ },
+ {
+ "type": "fishing_mons",
+ "encounter_rates": [
+ 70, 30, 60, 20, 20, 40, 40, 15, 4, 1
+ ]
+ }
+ ],
"encounters": [
{
"map": "MAP_ROUTE101",
diff --git a/src/data/wild_encounters.json.txt b/src/data/wild_encounters.json.txt
index 8f88cc587..85755ddec 100755
--- a/src/data/wild_encounters.json.txt
+++ b/src/data/wild_encounters.json.txt
@@ -1,5 +1,16 @@
{{ doNotModifyHeader }}
+
## for wild_encounter_group in wild_encounter_groups
+{% if wild_encounter_group.for_maps %}
+## for wild_encounter_field in wild_encounter_group.fields
+## for encounter_rate in wild_encounter_field.encounter_rates
+{% if trackVar(encounter_rate, 100) %}
+#define ENCOUNTER_CHANCE_{{ upper(wild_encounter_field.type) }}_SLOT_{{ loop.index }} {{ encounter_rate }} {% else %}#define ENCOUNTER_CHANCE_{{ upper(wild_encounter_field.type) }}_SLOT_{{ loop.index }} ENCOUNTER_CHANCE_{{ upper(wild_encounter_field.type) }}_SLOT_{{ subtract(loop.index, 1) }} + {{ encounter_rate }}{% endif %} {{ setVarInt(wild_encounter_field.type, loop.index) }}
+## endfor
+#define ENCOUNTER_CHANCE_{{ upper(wild_encounter_field.type) }}_TOTAL (ENCOUNTER_CHANCE_{{ upper(wild_encounter_field.type) }}_SLOT_{{ getVar(wild_encounter_field.type) }})
+## endfor
+{% endif %}
+
## for encounter in wild_encounter_group.encounters
{% if existsIn(encounter, "land_mons") %}
const struct WildPokemon {{ encounter.base_label }}_LandMons[] =
diff --git a/src/daycare.c b/src/daycare.c
index 885ac31a1..e5445ee21 100644
--- a/src/daycare.c
+++ b/src/daycare.c
@@ -3,14 +3,11 @@
#include "battle.h"
#include "daycare.h"
#include "string_util.h"
-#include "constants/species.h"
-#include "constants/items.h"
#include "mail.h"
#include "pokemon_storage_system.h"
#include "event_data.h"
#include "random.h"
#include "main.h"
-#include "constants/moves.h"
#include "egg_hatch.h"
#include "text.h"
#include "menu.h"
@@ -22,9 +19,10 @@
#include "party_menu.h"
#include "list_menu.h"
#include "overworld.h"
-
-#define EGG_MOVES_ARRAY_COUNT 10
-#define EGG_LVL_UP_MOVES_ARRAY_COUNT 50
+#include "constants/items.h"
+#include "constants/moves.h"
+#include "constants/region_map_sections.h"
+#include "constants/species.h"
// this file's functions
static void ClearDaycareMonMail(struct DayCareMail *mail);
@@ -34,10 +32,10 @@ static void DaycarePrintMonInfo(u8 windowId, s32 daycareSlotId, u8 y);
// RAM buffers used to assist with BuildEggMoveset()
EWRAM_DATA static u16 sHatchedEggLevelUpMoves[EGG_LVL_UP_MOVES_ARRAY_COUNT] = {0};
-EWRAM_DATA static u16 sHatchedEggFatherMoves[4] = {0};
-EWRAM_DATA static u16 sHatchedEggFinalMoves[4] = {0};
+EWRAM_DATA static u16 sHatchedEggFatherMoves[MAX_MON_MOVES] = {0};
+EWRAM_DATA static u16 sHatchedEggFinalMoves[MAX_MON_MOVES] = {0};
EWRAM_DATA static u16 sHatchedEggEggMoves[EGG_MOVES_ARRAY_COUNT] = {0};
-EWRAM_DATA static u16 sHatchedEggMotherMoves[4] = {0};
+EWRAM_DATA static u16 sHatchedEggMotherMoves[MAX_MON_MOVES] = {0};
#include "data/pokemon/egg_moves.h"
@@ -52,11 +50,13 @@ static const struct WindowTemplate sDaycareLevelMenuWindowTemplate =
.baseBlock = 8
};
+// Indices here are assigned by Task_HandleDaycareLevelMenuInput to VAR_RESULT,
+// which is copied to VAR_0x8004 and used as an index for GetDaycareCost
static const struct ListMenuItem sLevelMenuItems[] =
{
{gExpandedPlaceholder_Empty, 0},
{gExpandedPlaceholder_Empty, 1},
- {gText_Exit, 5}
+ {gText_Exit, DAYCARE_LEVEL_MENU_EXIT}
};
static const struct ListMenuTemplate sDaycareListMenuLevelTemplate =
@@ -91,7 +91,7 @@ static const u8 *const sCompatibilityMessages[] =
static const u8 sJapaneseEggNickname[] = _("タマゴ"); // "tamago" ("egg" in Japanese)
-u8 *GetMonNick(struct Pokemon *mon, u8 *dest)
+u8 *GetMonNickname2(struct Pokemon *mon, u8 *dest)
{
u8 nickname[POKEMON_NAME_LENGTH * 2];
@@ -99,7 +99,7 @@ u8 *GetMonNick(struct Pokemon *mon, u8 *dest)
return StringCopy10(dest, nickname);
}
-u8 *GetBoxMonNick(struct BoxPokemon *mon, u8 *dest)
+u8 *GetBoxMonNickname(struct BoxPokemon *mon, u8 *dest)
{
u8 nickname[POKEMON_NAME_LENGTH * 2];
@@ -169,7 +169,7 @@ static void StorePokemonInDaycare(struct Pokemon *mon, struct DaycareMon *daycar
u8 mailId;
StringCopy(daycareMon->mail.OT_name, gSaveBlock2Ptr->playerName);
- GetMonNick(mon, daycareMon->mail.monName);
+ GetMonNickname2(mon, daycareMon->mail.monName);
StripExtCtrlCodes(daycareMon->mail.monName);
daycareMon->mail.gameLanguage = LANGUAGE_ENGLISH;
daycareMon->mail.monLanguage = GetMonData(mon, MON_DATA_LANGUAGE);
@@ -202,8 +202,8 @@ void StoreSelectedPokemonInDaycare(void)
static void ShiftDaycareSlots(struct DayCare *daycare)
{
// This condition is only satisfied when the player takes out the first pokemon from the daycare.
- if (GetBoxMonData(&daycare->mons[1].mon, MON_DATA_SPECIES) != 0
- && GetBoxMonData(&daycare->mons[0].mon, MON_DATA_SPECIES) == 0)
+ if (GetBoxMonData(&daycare->mons[1].mon, MON_DATA_SPECIES) != SPECIES_NONE
+ && GetBoxMonData(&daycare->mons[0].mon, MON_DATA_SPECIES) == SPECIES_NONE)
{
daycare->mons[0].mon = daycare->mons[1].mon;
ZeroBoxMonData(&daycare->mons[1].mon);
@@ -254,7 +254,7 @@ static u16 TakeSelectedPokemonFromDaycare(struct DaycareMon *daycareMon)
u32 experience;
struct Pokemon pokemon;
- GetBoxMonNick(&daycareMon->mon, gStringVar1);
+ GetBoxMonNickname(&daycareMon->mon, gStringVar1);
species = GetBoxMonData(&daycareMon->mon, MON_DATA_SPECIES);
BoxMonToMon(&daycareMon->mon, &pokemon);
@@ -314,7 +314,7 @@ static u8 GetNumLevelsGainedForDaycareMon(struct DaycareMon *daycareMon)
{
u8 numLevelsGained = GetNumLevelsGainedFromSteps(daycareMon);
ConvertIntToDecimalStringN(gStringVar2, numLevelsGained, STR_CONV_MODE_LEFT_ALIGN, 2);
- GetBoxMonNick(&daycareMon->mon, gStringVar1);
+ GetBoxMonNickname(&daycareMon->mon, gStringVar1);
return numLevelsGained;
}
@@ -323,7 +323,7 @@ static u32 GetDaycareCostForSelectedMon(struct DaycareMon *daycareMon)
u32 cost;
u8 numLevelsGained = GetNumLevelsGainedFromSteps(daycareMon);
- GetBoxMonNick(&daycareMon->mon, gStringVar1);
+ GetBoxMonNickname(&daycareMon->mon, gStringVar1);
cost = 100 + 100 * numLevelsGained;
ConvertIntToDecimalStringN(gStringVar2, cost, STR_CONV_MODE_LEFT_ALIGN, 5);
return cost;
@@ -419,18 +419,18 @@ static u16 GetEggSpecies(u16 species)
return species;
}
-static s32 GetSlotToInheritNature(struct DayCare *daycare)
+static s32 GetParentToInheritNature(struct DayCare *daycare)
{
u32 species[DAYCARE_MON_COUNT];
s32 i;
s32 dittoCount;
- s32 slot = -1;
+ s32 parent = -1;
// search for female gender
for (i = 0; i < DAYCARE_MON_COUNT; i++)
{
if (GetBoxMonGender(&daycare->mons[i].mon) == MON_FEMALE)
- slot = i;
+ parent = i;
}
// search for ditto
@@ -438,50 +438,52 @@ static s32 GetSlotToInheritNature(struct DayCare *daycare)
{
species[i] = GetBoxMonData(&daycare->mons[i].mon, MON_DATA_SPECIES);
if (species[i] == SPECIES_DITTO)
- dittoCount++, slot = i;
+ dittoCount++, parent = i;
}
// coin flip on ...two Dittos
- if (dittoCount == 2)
+ if (dittoCount == DAYCARE_MON_COUNT)
{
if (Random() >= USHRT_MAX / 2)
- slot = 0;
+ parent = 0;
else
- slot = 1;
+ parent = 1;
}
- // nature inheritance only if holds everstone
- if (GetBoxMonData(&daycare->mons[slot].mon, MON_DATA_HELD_ITEM) != ITEM_EVERSTONE
+ // Don't inherit nature if not holding Everstone
+ if (GetBoxMonData(&daycare->mons[parent].mon, MON_DATA_HELD_ITEM) != ITEM_EVERSTONE
|| Random() >= USHRT_MAX / 2)
{
return -1;
}
- return slot;
+ return parent;
}
static void _TriggerPendingDaycareEgg(struct DayCare *daycare)
{
- s32 natureSlot;
+ s32 parent;
s32 natureTries = 0;
SeedRng2(gMain.vblankCounter2);
- natureSlot = GetSlotToInheritNature(daycare);
+ parent = GetParentToInheritNature(daycare);
- if (natureSlot < 0)
+ // don't inherit nature
+ if (parent < 0)
{
- daycare->offspringPersonality = (Random2() << 0x10) | ((Random() % 0xfffe) + 1);
+ daycare->offspringPersonality = (Random2() << 16) | ((Random() % 0xfffe) + 1);
}
+ // inherit nature
else
{
- u8 wantedNature = GetNatureFromPersonality(GetBoxMonData(&daycare->mons[natureSlot].mon, MON_DATA_PERSONALITY, NULL));
+ u8 wantedNature = GetNatureFromPersonality(GetBoxMonData(&daycare->mons[parent].mon, MON_DATA_PERSONALITY, NULL));
u32 personality;
do
{
- personality = (Random2() << 0x10) | (Random());
+ personality = (Random2() << 16) | (Random());
if (wantedNature == GetNatureFromPersonality(personality) && personality != 0)
- break; // we found a personality with the same nature
+ break; // found a personality with the same nature
natureTries++;
} while (natureTries <= 2400);
@@ -492,9 +494,10 @@ static void _TriggerPendingDaycareEgg(struct DayCare *daycare)
FlagSet(FLAG_PENDING_DAYCARE_EGG);
}
+// Functionally unused
static void _TriggerPendingDaycareMaleEgg(struct DayCare *daycare)
{
- daycare->offspringPersonality = (Random()) | (0x8000);
+ daycare->offspringPersonality = (Random()) | (EGG_GENDER_MALE);
FlagSet(FLAG_PENDING_DAYCARE_EGG);
}
@@ -503,6 +506,7 @@ void TriggerPendingDaycareEgg(void)
_TriggerPendingDaycareEgg(&gSaveBlock1Ptr->daycare);
}
+// Unused
static void TriggerPendingDaycareMaleEgg(void)
{
_TriggerPendingDaycareMaleEgg(&gSaveBlock1Ptr->daycare);
@@ -532,9 +536,9 @@ static void RemoveIVIndexFromList(u8 *ivs, u8 selectedIv)
static void InheritIVs(struct Pokemon *egg, struct DayCare *daycare)
{
u8 i;
- u8 selectedIvs[3];
+ u8 selectedIvs[INHERITED_IV_COUNT];
u8 availableIVs[NUM_STATS];
- u8 whichParent[ARRAY_COUNT(selectedIvs)];
+ u8 whichParents[INHERITED_IV_COUNT];
u8 iv;
// Initialize a list of IV indices.
@@ -544,48 +548,46 @@ static void InheritIVs(struct Pokemon *egg, struct DayCare *daycare)
}
// Select the 3 IVs that will be inherited.
- for (i = 0; i < ARRAY_COUNT(selectedIvs); i++)
+ for (i = 0; i < INHERITED_IV_COUNT; i++)
{
- // Randomly pick an IV from the available list.
+ // Randomly pick an IV from the available list and stop from being chosen again.
selectedIvs[i] = availableIVs[Random() % (NUM_STATS - i)];
-
- // Remove the selected IV index from the available IV indices.
RemoveIVIndexFromList(availableIVs, i);
}
// Determine which parent each of the selected IVs should inherit from.
- for (i = 0; i < ARRAY_COUNT(selectedIvs); i++)
+ for (i = 0; i < INHERITED_IV_COUNT; i++)
{
- whichParent[i] = Random() % 2;
+ whichParents[i] = Random() % DAYCARE_MON_COUNT;
}
// Set each of inherited IVs on the egg mon.
- for (i = 0; i < ARRAY_COUNT(selectedIvs); i++)
+ for (i = 0; i < INHERITED_IV_COUNT; i++)
{
switch (selectedIvs[i])
{
case 0:
- iv = GetBoxMonData(&daycare->mons[whichParent[i]].mon, MON_DATA_HP_IV);
+ iv = GetBoxMonData(&daycare->mons[whichParents[i]].mon, MON_DATA_HP_IV);
SetMonData(egg, MON_DATA_HP_IV, &iv);
break;
case 1:
- iv = GetBoxMonData(&daycare->mons[whichParent[i]].mon, MON_DATA_ATK_IV);
+ iv = GetBoxMonData(&daycare->mons[whichParents[i]].mon, MON_DATA_ATK_IV);
SetMonData(egg, MON_DATA_ATK_IV, &iv);
break;
case 2:
- iv = GetBoxMonData(&daycare->mons[whichParent[i]].mon, MON_DATA_DEF_IV);
+ iv = GetBoxMonData(&daycare->mons[whichParents[i]].mon, MON_DATA_DEF_IV);
SetMonData(egg, MON_DATA_DEF_IV, &iv);
break;
case 3:
- iv = GetBoxMonData(&daycare->mons[whichParent[i]].mon, MON_DATA_SPEED_IV);
+ iv = GetBoxMonData(&daycare->mons[whichParents[i]].mon, MON_DATA_SPEED_IV);
SetMonData(egg, MON_DATA_SPEED_IV, &iv);
break;
case 4:
- iv = GetBoxMonData(&daycare->mons[whichParent[i]].mon, MON_DATA_SPATK_IV);
+ iv = GetBoxMonData(&daycare->mons[whichParents[i]].mon, MON_DATA_SPATK_IV);
SetMonData(egg, MON_DATA_SPATK_IV, &iv);
break;
case 5:
- iv = GetBoxMonData(&daycare->mons[whichParent[i]].mon, MON_DATA_SPDEF_IV);
+ iv = GetBoxMonData(&daycare->mons[whichParents[i]].mon, MON_DATA_SPDEF_IV);
SetMonData(egg, MON_DATA_SPDEF_IV, &iv);
break;
}
@@ -638,14 +640,14 @@ static void BuildEggMoveset(struct Pokemon *egg, struct BoxPokemon *father, stru
numSharedParentMoves = 0;
for (i = 0; i < MAX_MON_MOVES; i++)
{
- sHatchedEggMotherMoves[i] = 0;
- sHatchedEggFatherMoves[i] = 0;
- sHatchedEggFinalMoves[i] = 0;
+ sHatchedEggMotherMoves[i] = MOVE_NONE;
+ sHatchedEggFatherMoves[i] = MOVE_NONE;
+ sHatchedEggFinalMoves[i] = MOVE_NONE;
}
for (i = 0; i < EGG_MOVES_ARRAY_COUNT; i++)
- sHatchedEggEggMoves[i] = 0;
+ sHatchedEggEggMoves[i] = MOVE_NONE;
for (i = 0; i < EGG_LVL_UP_MOVES_ARRAY_COUNT; i++)
- sHatchedEggLevelUpMoves[i] = 0;
+ sHatchedEggLevelUpMoves[i] = MOVE_NONE;
numLevelUpMoves = GetLevelUpMovesBySpecies(GetMonData(egg, MON_DATA_SPECIES), sHatchedEggLevelUpMoves);
for (i = 0; i < MAX_MON_MOVES; i++)
@@ -761,13 +763,10 @@ static void GiveVoltTackleIfLightBall(struct Pokemon *mon, struct DayCare *dayca
static u16 DetermineEggSpeciesAndParentSlots(struct DayCare *daycare, u8 *parentSlots)
{
u16 i;
- u16 species[2];
+ u16 species[DAYCARE_MON_COUNT];
u16 eggSpecies;
- // Determine which of the daycare mons is the mother and father of the egg.
- // The 0th index of the parentSlots array is considered the mother slot, and the
- // 1st index is the father slot.
- for (i = 0; i < 2; i++)
+ for (i = 0; i < DAYCARE_MON_COUNT; i++)
{
species[i] = GetBoxMonData(&daycare->mons[i].mon, MON_DATA_SPECIES);
if (species[i] == SPECIES_DITTO)
@@ -783,11 +782,11 @@ static u16 DetermineEggSpeciesAndParentSlots(struct DayCare *daycare, u8 *parent
}
eggSpecies = GetEggSpecies(species[parentSlots[0]]);
- if (eggSpecies == SPECIES_NIDORAN_F && daycare->offspringPersonality & 0x8000)
+ if (eggSpecies == SPECIES_NIDORAN_F && daycare->offspringPersonality & EGG_GENDER_MALE)
{
eggSpecies = SPECIES_NIDORAN_M;
}
- if (eggSpecies == SPECIES_ILLUMISE && daycare->offspringPersonality & 0x8000)
+ if (eggSpecies == SPECIES_ILLUMISE && daycare->offspringPersonality & EGG_GENDER_MALE)
{
eggSpecies = SPECIES_VOLBEAT;
}
@@ -795,19 +794,19 @@ static u16 DetermineEggSpeciesAndParentSlots(struct DayCare *daycare, u8 *parent
// Make Ditto the "mother" slot if the other daycare mon is male.
if (species[parentSlots[1]] == SPECIES_DITTO && GetBoxMonGender(&daycare->mons[parentSlots[0]].mon) != MON_FEMALE)
{
- u8 temp = parentSlots[1];
+ u8 ditto = parentSlots[1];
parentSlots[1] = parentSlots[0];
- parentSlots[0] = temp;
+ parentSlots[0] = ditto;
}
return eggSpecies;
}
-static void _GiveEggFromDaycare(struct DayCare *daycare) // give_egg
+static void _GiveEggFromDaycare(struct DayCare *daycare)
{
struct Pokemon egg;
u16 species;
- u8 parentSlots[2]; // 0th index is "mother" daycare slot, 1st is "father"
+ u8 parentSlots[DAYCARE_MON_COUNT];
bool8 isEgg;
species = DetermineEggSpeciesAndParentSlots(daycare, parentSlots);
@@ -835,7 +834,7 @@ void CreateEgg(struct Pokemon *mon, u16 species, bool8 setHotSpringsLocation)
u8 metLocation;
u8 isEgg;
- CreateMon(mon, species, EGG_HATCH_LEVEL, 0x20, FALSE, 0, FALSE, 0);
+ CreateMon(mon, species, EGG_HATCH_LEVEL, 32, FALSE, 0, OT_ID_PLAYER_ID, 0);
metLevel = 0;
ball = ITEM_POKE_BALL;
language = LANGUAGE_JAPANESE;
@@ -846,7 +845,7 @@ void CreateEgg(struct Pokemon *mon, u16 species, bool8 setHotSpringsLocation)
SetMonData(mon, MON_DATA_LANGUAGE, &language);
if (setHotSpringsLocation)
{
- metLocation = 253; // hot springs; see PokemonSummaryScreen_PrintEggTrainerMemo
+ metLocation = METLOC_SPECIAL_EGG;
SetMonData(mon, MON_DATA_MET_LOCATION, &metLocation);
}
@@ -862,7 +861,7 @@ static void SetInitialEggData(struct Pokemon *mon, u16 species, struct DayCare *
u8 language;
personality = daycare->offspringPersonality;
- CreateMon(mon, species, EGG_HATCH_LEVEL, 0x20, TRUE, personality, FALSE, 0);
+ CreateMon(mon, species, EGG_HATCH_LEVEL, 32, TRUE, personality, OT_ID_PLAYER_ID, 0);
metLevel = 0;
ball = ITEM_POKE_BALL;
language = LANGUAGE_JAPANESE;
@@ -878,7 +877,7 @@ void GiveEggFromDaycare(void)
_GiveEggFromDaycare(&gSaveBlock1Ptr->daycare);
}
-static bool8 _DoEggActions_CheckHatch(struct DayCare *daycare)
+static bool8 TryProduceOrHatchEgg(struct DayCare *daycare)
{
u32 i, validEggs = 0;
@@ -888,15 +887,16 @@ static bool8 _DoEggActions_CheckHatch(struct DayCare *daycare)
daycare->mons[i].steps++, validEggs++;
}
- // try to trigger poke sex
- if (daycare->offspringPersonality == 0 && validEggs == 2 && (daycare->mons[1].steps & 0xFF) == 0xFF)
+ // Check if an egg should be produced
+ if (daycare->offspringPersonality == 0 && validEggs == DAYCARE_MON_COUNT && (daycare->mons[1].steps & 0xFF) == 0xFF)
{
- u8 loveScore = GetDaycareCompatibilityScore(daycare);
- if (loveScore > (Random() * 100u) / USHRT_MAX)
+ u8 compatability = GetDaycareCompatibilityScore(daycare);
+ if (compatability > (Random() * 100u) / USHRT_MAX)
TriggerPendingDaycareEgg();
}
- if (++daycare->stepCounter == 255) // hatch an egg
+ // Hatch Egg
+ if (++daycare->stepCounter == 255)
{
u32 steps;
u8 toSub = GetEggStepsToSubtract();
@@ -909,7 +909,7 @@ static bool8 _DoEggActions_CheckHatch(struct DayCare *daycare)
continue;
steps = GetMonData(&gPlayerParty[i], MON_DATA_FRIENDSHIP);
- if (steps != 0) // subtract needed steps
+ if (steps != 0)
{
if (steps >= toSub)
steps -= toSub;
@@ -918,7 +918,7 @@ static bool8 _DoEggActions_CheckHatch(struct DayCare *daycare)
SetMonData(&gPlayerParty[i], MON_DATA_FRIENDSHIP, &steps);
}
- else // hatch the egg
+ else
{
gSpecialVar_0x8004 = i;
return TRUE;
@@ -926,12 +926,12 @@ static bool8 _DoEggActions_CheckHatch(struct DayCare *daycare)
}
}
- return FALSE; // no hatching
+ return FALSE;
}
bool8 ShouldEggHatch(void)
{
- return _DoEggActions_CheckHatch(&gSaveBlock1Ptr->daycare);
+ return TryProduceOrHatchEgg(&gSaveBlock1Ptr->daycare);
}
static bool8 IsEggPending(struct DayCare *daycare)
@@ -947,20 +947,20 @@ static void _GetDaycareMonNicknames(struct DayCare *daycare)
u8 text[12];
if (GetBoxMonData(&daycare->mons[0].mon, MON_DATA_SPECIES) != 0)
{
- GetBoxMonNick(&daycare->mons[0].mon, gStringVar1);
+ GetBoxMonNickname(&daycare->mons[0].mon, gStringVar1);
GetBoxMonData(&daycare->mons[0].mon, MON_DATA_OT_NAME, text);
StringCopy(gStringVar3, text);
}
if (GetBoxMonData(&daycare->mons[1].mon, MON_DATA_SPECIES) != 0)
{
- GetBoxMonNick(&daycare->mons[1].mon, gStringVar2);
+ GetBoxMonNickname(&daycare->mons[1].mon, gStringVar2);
}
}
-u16 GetSelectedMonNickAndSpecies(void)
+u16 GetSelectedMonNicknameAndSpecies(void)
{
- GetBoxMonNick(&gPlayerParty[GetCursorSelectionMonId()].box, gStringVar1);
+ GetBoxMonNickname(&gPlayerParty[GetCursorSelectionMonId()].box, gStringVar1);
return GetBoxMonData(&gPlayerParty[GetCursorSelectionMonId()].box, MON_DATA_SPECIES);
}
@@ -971,26 +971,19 @@ void GetDaycareMonNicknames(void)
u8 GetDaycareState(void)
{
- // The daycare can be in 4 possible states:
- // 0: default state--no deposited mons, no egg
- // 1: there is an egg waiting for the player to pick it up
- // 2: there is a single pokemon in the daycare
- // 3: there are two pokemon in the daycare, no egg
-
u8 numMons;
if (IsEggPending(&gSaveBlock1Ptr->daycare))
{
- // There is an Egg waiting for the player.
- return 1;
+ return DAYCARE_EGG_WAITING;
}
numMons = CountPokemonInDaycare(&gSaveBlock1Ptr->daycare);
if (numMons != 0)
{
- return numMons + 1;
+ return numMons + 1; // DAYCARE_ONE_MON or DAYCARE_TWO_MONS
}
- return 0;
+ return DAYCARE_NO_MONS;
}
static u8 GetDaycarePokemonCount(void)
@@ -1002,15 +995,15 @@ static u8 GetDaycarePokemonCount(void)
return 0;
}
+// Determine if the two given egg group lists contain any of the
+// same egg groups.
static bool8 EggGroupsOverlap(u16 *eggGroups1, u16 *eggGroups2)
{
- // Determine if the two given egg group lists contain any of the
- // same egg groups.
s32 i, j;
- for (i = 0; i < 2; i++)
+ for (i = 0; i < EGG_GROUPS_PER_MON; i++)
{
- for (j = 0; j < 2; j++)
+ for (j = 0; j < EGG_GROUPS_PER_MON; j++)
{
if (eggGroups1[i] == eggGroups2[j])
return TRUE;
@@ -1023,12 +1016,12 @@ static bool8 EggGroupsOverlap(u16 *eggGroups1, u16 *eggGroups2)
static u8 GetDaycareCompatibilityScore(struct DayCare *daycare)
{
u32 i;
- u16 eggGroups[2][2];
- u16 species[2];
- u32 trainerIds[2];
- u32 genders[2];
+ u16 eggGroups[DAYCARE_MON_COUNT][EGG_GROUPS_PER_MON];
+ u16 species[DAYCARE_MON_COUNT];
+ u32 trainerIds[DAYCARE_MON_COUNT];
+ u32 genders[DAYCARE_MON_COUNT];
- for (i = 0; i < 2; i++)
+ for (i = 0; i < DAYCARE_MON_COUNT; i++)
{
u32 personality;
@@ -1042,41 +1035,42 @@ static u8 GetDaycareCompatibilityScore(struct DayCare *daycare)
// check unbreedable egg group
if (eggGroups[0][0] == EGG_GROUP_UNDISCOVERED || eggGroups[1][0] == EGG_GROUP_UNDISCOVERED)
- return 0;
+ return PARENTS_INCOMPATIBLE;
// two Ditto can't breed
if (eggGroups[0][0] == EGG_GROUP_DITTO && eggGroups[1][0] == EGG_GROUP_DITTO)
- return 0;
+ return PARENTS_INCOMPATIBLE;
- // now that we checked, one ditto can breed with any other mon
+ // one parent is Ditto
if (eggGroups[0][0] == EGG_GROUP_DITTO || eggGroups[1][0] == EGG_GROUP_DITTO)
{
- if (trainerIds[0] == trainerIds[1]) // same trainer
- return 20;
+ if (trainerIds[0] == trainerIds[1])
+ return PARENTS_LOW_COMPATIBILITY;
- return 50; // different trainers, more chance of poke sex
+ return PARENTS_MED_COMPATABILITY;
}
+ // neither parent is Ditto
else
{
- if (genders[0] == genders[1]) // no homo
- return 0;
+ if (genders[0] == genders[1])
+ return PARENTS_INCOMPATIBLE;
if (genders[0] == MON_GENDERLESS || genders[1] == MON_GENDERLESS)
- return 0;
- if (!EggGroupsOverlap(eggGroups[0], eggGroups[1])) // not compatible with each other
- return 0;
+ return PARENTS_INCOMPATIBLE;
+ if (!EggGroupsOverlap(eggGroups[0], eggGroups[1]))
+ return PARENTS_INCOMPATIBLE;
- if (species[0] == species[1]) // same species
+ if (species[0] == species[1])
{
- if (trainerIds[0] == trainerIds[1]) // same species and trainer
- return 50;
+ if (trainerIds[0] == trainerIds[1])
+ return PARENTS_MED_COMPATABILITY; // same species, same trainer
- return 70; // different trainers, same species
+ return PARENTS_MAX_COMPATABILITY; // same species, different trainers
}
else
{
- if (trainerIds[0] != trainerIds[1]) // different trainers, different species
- return 50;
+ if (trainerIds[0] != trainerIds[1])
+ return PARENTS_MED_COMPATABILITY; // different species, different trainers
- return 20; // different species, same trainer
+ return PARENTS_LOW_COMPATIBILITY; // different species, same trainer
}
}
}
@@ -1093,13 +1087,13 @@ void SetDaycareCompatibilityString(void)
relationshipScore = GetDaycareCompatibilityScoreFromSave();
whichString = 0;
- if (relationshipScore == 0)
+ if (relationshipScore == PARENTS_INCOMPATIBLE)
whichString = 3;
- if (relationshipScore == 20)
+ if (relationshipScore == PARENTS_LOW_COMPATIBILITY)
whichString = 2;
- if (relationshipScore == 50)
+ if (relationshipScore == PARENTS_MED_COMPATABILITY)
whichString = 1;
- if (relationshipScore == 70)
+ if (relationshipScore == PARENTS_MAX_COMPATABILITY)
whichString = 0;
StringCopy(gStringVar4, sCompatibilityMessages[whichString]);
@@ -1108,20 +1102,20 @@ void SetDaycareCompatibilityString(void)
bool8 NameHasGenderSymbol(const u8 *name, u8 genderRatio)
{
u8 i;
- u8 symbolsCount[2]; // male, female
- symbolsCount[0] = symbolsCount[1] = 0;
+ u8 symbolsCount[GENDER_COUNT];
+ symbolsCount[MALE] = symbolsCount[FEMALE] = 0;
for (i = 0; name[i] != EOS; i++)
{
if (name[i] == CHAR_MALE)
- symbolsCount[0]++;
+ symbolsCount[MALE]++;
if (name[i] == CHAR_FEMALE)
- symbolsCount[1]++;
+ symbolsCount[FEMALE]++;
}
- if (genderRatio == MON_MALE && symbolsCount[0] != 0 && symbolsCount[1] == 0)
+ if (genderRatio == MON_MALE && symbolsCount[MALE] != 0 && symbolsCount[FEMALE] == 0)
return TRUE;
- if (genderRatio == MON_FEMALE && symbolsCount[1] != 0 && symbolsCount[0] == 0)
+ if (genderRatio == MON_FEMALE && symbolsCount[FEMALE] != 0 && symbolsCount[MALE] == 0)
return TRUE;
return FALSE;
@@ -1150,13 +1144,13 @@ static u8 *AppendMonGenderSymbol(u8 *name, struct BoxPokemon *boxMon)
static void GetDaycareLevelMenuText(struct DayCare *daycare, u8 *dest)
{
- u8 monNames[2][20];
+ u8 monNames[DAYCARE_MON_COUNT][20];
u8 i;
*dest = EOS;
- for (i = 0; i < 2; i++)
+ for (i = 0; i < DAYCARE_MON_COUNT; i++)
{
- GetBoxMonNick(&daycare->mons[i].mon, monNames[i]);
+ GetBoxMonNickname(&daycare->mons[i].mon, monNames[i]);
AppendMonGenderSymbol(monNames[i], &daycare->mons[i].mon);
}
@@ -1174,7 +1168,7 @@ static void GetDaycareLevelMenuLevelText(struct DayCare *daycare, u8 *dest)
u8 text[20];
*dest = EOS;
- for (i = 0; i < 2; i++)
+ for (i = 0; i < DAYCARE_MON_COUNT; i++)
{
StringAppend(dest, gText_Lv);
level = GetLevelAfterDaycareSteps(&daycare->mons[i].mon, daycare->mons[i].steps);
@@ -1206,13 +1200,13 @@ static void DaycareAddTextPrinter(u8 windowId, const u8 *text, u32 x, u32 y)
AddTextPrinter(&printer, 0xFF, NULL);
}
-static void DaycarePrintMonNick(struct DayCare *daycare, u8 windowId, u32 daycareSlotId, u32 y)
+static void DaycarePrintMonNickname(struct DayCare *daycare, u8 windowId, u32 daycareSlotId, u32 y)
{
- u8 nick[POKEMON_NAME_LENGTH * 2];
+ u8 nickname[POKEMON_NAME_LENGTH * 2];
- GetBoxMonNick(&daycare->mons[daycareSlotId].mon, nick);
- AppendMonGenderSymbol(nick, &daycare->mons[daycareSlotId].mon);
- DaycareAddTextPrinter(windowId, nick, 8, y);
+ GetBoxMonNickname(&daycare->mons[daycareSlotId].mon, nickname);
+ AppendMonGenderSymbol(nickname, &daycare->mons[daycareSlotId].mon);
+ DaycareAddTextPrinter(windowId, nickname, 8, y);
}
static void DaycarePrintMonLvl(struct DayCare *daycare, u8 windowId, u32 daycareSlotId, u32 y)
@@ -1234,7 +1228,7 @@ static void DaycarePrintMonInfo(u8 windowId, s32 daycareSlotId, u8 y)
{
if (daycareSlotId < (unsigned) DAYCARE_MON_COUNT)
{
- DaycarePrintMonNick(&gSaveBlock1Ptr->daycare, windowId, daycareSlotId, y);
+ DaycarePrintMonNickname(&gSaveBlock1Ptr->daycare, windowId, daycareSlotId, y);
DaycarePrintMonLvl(&gSaveBlock1Ptr->daycare, windowId, daycareSlotId, y);
}
}
@@ -1254,8 +1248,8 @@ static void Task_HandleDaycareLevelMenuInput(u8 taskId)
case 1:
gSpecialVar_Result = input;
break;
- case 5:
- gSpecialVar_Result = 2;
+ case DAYCARE_LEVEL_MENU_EXIT:
+ gSpecialVar_Result = DAYCARE_EXITED_LEVEL_MENU;
break;
}
DestroyListMenuTask(gTasks[taskId].tMenuListTaskId, NULL, NULL);
@@ -1266,7 +1260,7 @@ static void Task_HandleDaycareLevelMenuInput(u8 taskId)
}
else if (gMain.newKeys & B_BUTTON)
{
- gSpecialVar_Result = 2;
+ gSpecialVar_Result = DAYCARE_EXITED_LEVEL_MENU;
DestroyListMenuTask(gTasks[taskId].tMenuListTaskId, NULL, NULL);
ClearStdWindowAndFrame(gTasks[taskId].tWindowId, TRUE);
RemoveWindow(gTasks[taskId].tWindowId);
diff --git a/src/decoration.c b/src/decoration.c
index 974859c88..4efeb19b1 100644
--- a/src/decoration.c
+++ b/src/decoration.c
@@ -2043,7 +2043,7 @@ const u32 *GetDecorationIconPicOrPalette(u16 decor, u8 mode)
if (decor > NUM_DECORATIONS)
decor = DECOR_NONE;
- return gUnknown_085A6BE8[decor][mode];
+ return gDecorIconTable[decor][mode];
}
u8 AddDecorationIconObjectFromEventObject(u16 tilesTag, u16 paletteTag, u8 decor)
@@ -2095,7 +2095,7 @@ u8 AddDecorationIconObject(u8 decor, s16 x, s16 y, u8 priority, u16 tilesTag, u1
gSprites[spriteId].pos2.x = x + 4;
gSprites[spriteId].pos2.y = y + 4;
}
- else if (gUnknown_085A6BE8[decor][0] == NULL)
+ else if (gDecorIconTable[decor][0] == NULL)
{
spriteId = AddDecorationIconObjectFromEventObject(tilesTag, paletteTag, decor);
if (spriteId == MAX_SPRITES)
diff --git a/src/diploma.c b/src/diploma.c
index 92c7df703..8e0901fa8 100644
--- a/src/diploma.c
+++ b/src/diploma.c
@@ -127,7 +127,7 @@ static void Task_DiplomaFadeOut(u8 taskId)
static void DisplayDiplomaText(void)
{
- if (sub_80C0944())
+ if (HasAllMons())
{
SetGpuReg(REG_OFFSET_BG1HOFS, DISPCNT_BG0_ON);
StringCopy(gStringVar1, gText_DexNational);
diff --git a/src/easy_chat.c b/src/easy_chat.c
index 93456631a..ba54de783 100644
--- a/src/easy_chat.c
+++ b/src/easy_chat.c
@@ -30,6 +30,7 @@
#include "constants/easy_chat.h"
#include "constants/event_objects.h"
#include "constants/flags.h"
+#include "constants/lilycove_lady.h"
#include "constants/songs.h"
#include "constants/species.h"
#include "constants/rgb.h"
@@ -240,6 +241,7 @@ struct Unk8597530
MainCallback callback;
};
+// Lilycove Quiz Lady
static const struct Unk8597530 sUnknown_08597530[] = {
{
.word = 26,
@@ -1305,15 +1307,15 @@ void ShowEasyChatScreen(void)
displayedPersonType = EASY_CHAT_PERSON_BOY;
break;
case EASY_CHAT_TYPE_QUIZ_ANSWER:
- words = &gSaveBlock1Ptr->lilycoveLady.quiz.unk_016;
+ words = &gSaveBlock1Ptr->lilycoveLady.quiz.playerAnswer;
break;
case EASY_CHAT_TYPE_QUIZ_QUESTION:
return;
case EASY_CHAT_TYPE_QUIZ_SET_QUESTION:
- words = gSaveBlock1Ptr->lilycoveLady.quiz.unk_002;
+ words = gSaveBlock1Ptr->lilycoveLady.quiz.question;
break;
case EASY_CHAT_TYPE_QUIZ_SET_ANSWER:
- words = &gSaveBlock1Ptr->lilycoveLady.quiz.unk_014;
+ words = &gSaveBlock1Ptr->lilycoveLady.quiz.correctAnswer;
break;
case EASY_CHAT_TYPE_APPRENTICE:
words = gSaveBlock2Ptr->apprentices[0].easyChatWords;
@@ -1329,7 +1331,7 @@ void ShowEasyChatScreen(void)
DoEasyChatScreen(gSpecialVar_0x8004, words, CB2_ReturnToFieldContinueScript, displayedPersonType);
}
-static void sub_811A7E4(void)
+static void CB2_QuizLadyQuestion(void)
{
LilycoveLady *lilycoveLady;
@@ -1343,7 +1345,7 @@ static void sub_811A7E4(void)
if (!gPaletteFade.active)
{
lilycoveLady = &gSaveBlock1Ptr->lilycoveLady;
- lilycoveLady->quiz.unk_016 = -1;
+ lilycoveLady->quiz.playerAnswer = -1;
CleanupOverworldWindowsAndTilemaps();
DoQuizQuestionEasyChatScreen();
}
@@ -1352,9 +1354,9 @@ static void sub_811A7E4(void)
gMain.state ++;
}
-void sub_811A858(void)
+void QuizLadyShowQuizQuestion(void)
{
- SetMainCallback2(sub_811A7E4);
+ SetMainCallback2(CB2_QuizLadyQuestion);
}
static int sub_811A868(u16 word)
@@ -1387,7 +1389,7 @@ static void DoQuizAnswerEasyChatScreen(void)
{
DoEasyChatScreen(
EASY_CHAT_TYPE_QUIZ_ANSWER,
- &gSaveBlock1Ptr->lilycoveLady.quiz.unk_016,
+ &gSaveBlock1Ptr->lilycoveLady.quiz.playerAnswer,
CB2_ReturnToFieldContinueScript,
EASY_CHAT_PERSON_DISPLAY_NONE);
}
@@ -1395,7 +1397,7 @@ static void DoQuizAnswerEasyChatScreen(void)
static void DoQuizQuestionEasyChatScreen(void)
{
DoEasyChatScreen(EASY_CHAT_TYPE_QUIZ_QUESTION,
- gSaveBlock1Ptr->lilycoveLady.quiz.unk_002,
+ gSaveBlock1Ptr->lilycoveLady.quiz.question,
CB2_ReturnToFieldContinueScript,
EASY_CHAT_PERSON_DISPLAY_NONE);
}
@@ -1403,7 +1405,7 @@ static void DoQuizQuestionEasyChatScreen(void)
static void DoQuizSetAnswerEasyChatScreen(void)
{
DoEasyChatScreen(EASY_CHAT_TYPE_QUIZ_SET_ANSWER,
- &gSaveBlock1Ptr->lilycoveLady.quiz.unk_014,
+ &gSaveBlock1Ptr->lilycoveLady.quiz.correctAnswer,
CB2_ReturnToFieldContinueScript,
EASY_CHAT_PERSON_DISPLAY_NONE);
}
@@ -1411,7 +1413,7 @@ static void DoQuizSetAnswerEasyChatScreen(void)
static void DoQuizSetQuestionEasyChatScreen(void)
{
DoEasyChatScreen(EASY_CHAT_TYPE_QUIZ_SET_QUESTION,
- gSaveBlock1Ptr->lilycoveLady.quiz.unk_002,
+ gSaveBlock1Ptr->lilycoveLady.quiz.question,
CB2_ReturnToFieldContinueScript,
EASY_CHAT_PERSON_DISPLAY_NONE);
}
@@ -2660,9 +2662,9 @@ static int sub_811BD64(void)
return sub_811BCF4();
saveBlock1 = gSaveBlock1Ptr;
- for (i = 0; i < 9; i++)
+ for (i = 0; i < QUIZ_QUESTION_LEN; i++)
{
- if (saveBlock1->lilycoveLady.quiz.unk_002[i] != 0xFFFF)
+ if (saveBlock1->lilycoveLady.quiz.question[i] != 0xFFFF)
return 0;
}
@@ -2676,7 +2678,7 @@ static int sub_811BDB0(void)
return sub_811BCF4();
quiz = &gSaveBlock1Ptr->lilycoveLady.quiz;
- return quiz->unk_014 == 0xFFFF ? 1 : 0;
+ return quiz->correctAnswer == 0xFFFF ? 1 : 0;
}
static void sub_811BDF0(u8 *arg0)
diff --git a/src/egg_hatch.c b/src/egg_hatch.c
index 835141ef2..1eaf4e4a1 100644
--- a/src/egg_hatch.c
+++ b/src/egg_hatch.c
@@ -56,7 +56,7 @@ struct EggHatchData
extern const u32 gUnknown_08331F60[]; // tilemap gameboy circle
extern const u8 gText_HatchedFromEgg[];
-extern const u8 gText_NickHatchPrompt[];
+extern const u8 gText_NicknameHatchPrompt[];
static void Task_EggHatch(u8 taskID);
static void CB2_EggHatch_0(void);
@@ -298,13 +298,13 @@ static void CreatedHatchedMon(struct Pokemon *egg, struct Pokemon *temp)
u16 species;
u32 personality, pokerus;
u8 i, friendship, language, gameMet, markings, obedience;
- u16 moves[4];
+ u16 moves[MAX_MON_MOVES];
u32 ivs[NUM_STATS];
species = GetMonData(egg, MON_DATA_SPECIES);
- for (i = 0; i < 4; i++)
+ for (i = 0; i < MAX_MON_MOVES; i++)
{
moves[i] = GetMonData(egg, MON_DATA_MOVE1 + i);
}
@@ -322,9 +322,9 @@ static void CreatedHatchedMon(struct Pokemon *egg, struct Pokemon *temp)
pokerus = GetMonData(egg, MON_DATA_POKERUS);
obedience = GetMonData(egg, MON_DATA_OBEDIENCE);
- CreateMon(temp, species, EGG_HATCH_LEVEL, 32, TRUE, personality, 0, 0);
+ CreateMon(temp, species, EGG_HATCH_LEVEL, 32, TRUE, personality, OT_ID_PLAYER_ID, 0);
- for (i = 0; i < 4; i++)
+ for (i = 0; i < MAX_MON_MOVES; i++)
{
SetMonData(temp, MON_DATA_MOVE1 + i, &moves[i]);
}
@@ -368,7 +368,7 @@ static void AddHatchedMonToParty(u8 id)
GetSetPokedexFlag(pokeNum, FLAG_SET_SEEN);
GetSetPokedexFlag(pokeNum, FLAG_SET_CAUGHT);
- GetMonNick(mon, gStringVar1);
+ GetMonNickname2(mon, gStringVar1);
ball = ITEM_POKE_BALL;
SetMonData(mon, MON_DATA_POKEBALL, &ball);
@@ -388,17 +388,17 @@ void ScriptHatchMon(void)
AddHatchedMonToParty(gSpecialVar_0x8004);
}
-static bool8 sub_807158C(struct DayCare *daycare, u8 daycareId)
+static bool8 _CheckDaycareMonReceivedMail(struct DayCare *daycare, u8 daycareId)
{
- u8 nick[0x20];
+ u8 nickname[32];
struct DaycareMon *daycareMon = &daycare->mons[daycareId];
- GetBoxMonNick(&daycareMon->mon, nick);
- if (daycareMon->mail.message.itemId != 0
- && (StringCompareWithoutExtCtrlCodes(nick, daycareMon->mail.monName) != 0
+ GetBoxMonNickname(&daycareMon->mon, nickname);
+ if (daycareMon->mail.message.itemId != ITEM_NONE
+ && (StringCompareWithoutExtCtrlCodes(nickname, daycareMon->mail.monName) != 0
|| StringCompareWithoutExtCtrlCodes(gSaveBlock2Ptr->playerName, daycareMon->mail.OT_name) != 0))
{
- StringCopy(gStringVar1, nick);
+ StringCopy(gStringVar1, nickname);
TVShowConvertInternationalString(gStringVar2, daycareMon->mail.OT_name, daycareMon->mail.gameLanguage);
TVShowConvertInternationalString(gStringVar3, daycareMon->mail.monName, daycareMon->mail.monLanguage);
return TRUE;
@@ -406,9 +406,9 @@ static bool8 sub_807158C(struct DayCare *daycare, u8 daycareId)
return FALSE;
}
-bool8 sub_8071614(void)
+bool8 CheckDaycareMonReceivedMail(void)
{
- return sub_807158C(&gSaveBlock1Ptr->daycare, gSpecialVar_0x8004);
+ return _CheckDaycareMonReceivedMail(&gSaveBlock1Ptr->daycare, gSpecialVar_0x8004);
}
static u8 EggHatchCreateMonSprite(u8 a0, u8 switchID, u8 pokeID, u16* speciesLoc)
@@ -634,7 +634,7 @@ static void CB2_EggHatch_1(void)
}
break;
case 5:
- GetMonNick(&gPlayerParty[sEggHatchData->eggPartyID], gStringVar1);
+ GetMonNickname2(&gPlayerParty[sEggHatchData->eggPartyID], gStringVar1);
StringExpandPlaceholders(gStringVar4, gText_HatchedFromEgg);
EggHatchPrintMessage(sEggHatchData->windowId, gStringVar4, 0, 3, 0xFF);
PlayFanfare(MUS_FANFA5);
@@ -651,8 +651,8 @@ static void CB2_EggHatch_1(void)
sEggHatchData->CB2_state++;
break;
case 8:
- GetMonNick(&gPlayerParty[sEggHatchData->eggPartyID], gStringVar1);
- StringExpandPlaceholders(gStringVar4, gText_NickHatchPrompt);
+ GetMonNickname2(&gPlayerParty[sEggHatchData->eggPartyID], gStringVar1);
+ StringExpandPlaceholders(gStringVar4, gText_NicknameHatchPrompt);
EggHatchPrintMessage(sEggHatchData->windowId, gStringVar4, 0, 2, 1);
sEggHatchData->CB2_state++;
break;
@@ -668,7 +668,7 @@ static void CB2_EggHatch_1(void)
switch (Menu_ProcessInputNoWrapClearOnChoose())
{
case 0:
- GetMonNick(&gPlayerParty[sEggHatchData->eggPartyID], gStringVar3);
+ GetMonNickname2(&gPlayerParty[sEggHatchData->eggPartyID], gStringVar3);
species = GetMonData(&gPlayerParty[sEggHatchData->eggPartyID], MON_DATA_SPECIES);
gender = GetMonGender(&gPlayerParty[sEggHatchData->eggPartyID]);
personality = GetMonData(&gPlayerParty[sEggHatchData->eggPartyID], MON_DATA_PERSONALITY, 0);
@@ -880,9 +880,9 @@ u8 GetEggStepsToSubtract(void)
return 1;
}
-u16 sub_80722E0(void)
+u16 CountPartyAliveNonEggMons(void)
{
u16 aliveNonEggMonsCount = CountStorageNonEggMons();
- aliveNonEggMonsCount += CountPartyAliveNonEggMonsExcept(6);
+ aliveNonEggMonsCount += CountPartyAliveNonEggMonsExcept(PARTY_SIZE);
return aliveNonEggMonsCount;
}
diff --git a/src/electric.c b/src/electric.c
index 5e7729842..4b93119dc 100644
--- a/src/electric.c
+++ b/src/electric.c
@@ -667,9 +667,9 @@ static void sub_810A75C(struct Sprite *sprite)
sprite->oam.tileNum += gBattleAnimArgs[3] * 4;
if (gBattleAnimArgs[3] == 1)
- sprite->oam.matrixNum = 8;
+ sprite->oam.matrixNum = ST_OAM_HFLIP;
else if (gBattleAnimArgs[3] == 2)
- sprite->oam.matrixNum = 16;
+ sprite->oam.matrixNum = ST_OAM_VFLIP;
sprite->data[0] = gBattleAnimArgs[2];
sprite->callback = WaitAnimForDuration;
diff --git a/src/ereader_helpers.c b/src/ereader_helpers.c
index 11aaaafe7..f184dea82 100755
--- a/src/ereader_helpers.c
+++ b/src/ereader_helpers.c
@@ -9,6 +9,12 @@
#include "sprite.h"
#include "task.h"
#include "util.h"
+#include "trainer_hill.h"
+#include "constants/easy_chat.h"
+#include "constants/trainers.h"
+#include "constants/species.h"
+#include "constants/moves.h"
+#include "constants/items.h"
struct Unknown030012C8
{
@@ -38,14 +44,359 @@ static u16 gUnknown_030012F0;
static u16 gUnknown_030012F2;
static u16 gUnknown_030012F4;
-extern const u8 gUnknown_08625B6C[][0x148];
+static const struct TrainerHillTrainer sTrainerHillTrainerTemplates_JP[] = {
+ [0] = {
+ .name = __("マキエ$$$$$ "),
+ .facilityClass = FACILITY_CLASS_HEX_MANIAC,
+ .unused = 0x1,
+ .speechBefore = { EC_WORD_PREPOSTEROUS, EC_WORD_CASE, EC_WORD_THERE, EC_WORD_TO_HER, EC_WORD_CHALLENGE, EC_WORD_JOKING },
+ .speechWin = { EC_WORD_HERS, EC_WORD_TRUMP_CARD, EC_MOVE2(SECRET_POWER), EC_WORD_USING, EC_WORD_WON, EC_WORD_EXCL_EXCL },
+ .speechLose = { EC_WORD_TO_HER, EC_WORD_WIN, EC_WORD_JOKING, EC_WORD_HIGHS, EC_WORD_SCARY, EC_WORD_ELLIPSIS_EXCL },
+ .speechAfter = { EC_WORD_IGNORANT, EC_WORD_SO, EC_WORD_TODAY, EC_WORD_NIGHTTIME, EC_WORD_YOU_RE, EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS },
+ .mons = {
+ [0] = NULL_BATTLE_TOWER_POKEMON,
+ [1] = NULL_BATTLE_TOWER_POKEMON,
+ [2] = NULL_BATTLE_TOWER_POKEMON,
+ [3] = {
+ .species = SPECIES_SWALOT,
+ .heldItem = ITEM_SHELL_BELL,
+ .moves = { MOVE_SLUDGE_BOMB, MOVE_SHADOW_BALL, MOVE_PAIN_SPLIT, MOVE_YAWN },
+ .level = 0,
+ .ppBonuses = 0x0,
+ .hpEV = 55,
+ .attackEV = 255,
+ .defenseEV = 100,
+ .speedEV = 0,
+ .spAttackEV = 0,
+ .spDefenseEV = 100,
+ .otId = 0x10000000,
+ .hpIV = 5,
+ .attackIV = 5,
+ .defenseIV = 5,
+ .speedIV = 5,
+ .spAttackIV = 5,
+ .spDefenseIV = 5,
+ .abilityNum = 1,
+ .personality = 0x80,
+ .nickname = __("マルノーム$$$$$$"),
+ .friendship = 255
+ },
+ [4] = {
+ .species = SPECIES_DUSTOX,
+ .heldItem = ITEM_BRIGHT_POWDER,
+ .moves = { MOVE_SILVER_WIND, MOVE_SLUDGE_BOMB, MOVE_SHADOW_BALL, MOVE_GIGA_DRAIN },
+ .level = 0,
+ .ppBonuses = 0x0,
+ .hpEV = 0,
+ .attackEV = 255,
+ .defenseEV = 0,
+ .speedEV = 0,
+ .spAttackEV = 255,
+ .spDefenseEV = 0,
+ .otId = 0x10000000,
+ .hpIV = 5,
+ .attackIV = 5,
+ .defenseIV = 5,
+ .speedIV = 5,
+ .spAttackIV = 5,
+ .spDefenseIV = 5,
+ .abilityNum = 0,
+ .personality = 0x6,
+ .nickname = __("ドクケイル$$$$$$"),
+ .friendship = 255
+ },
+ [5] = {
+ .species = SPECIES_RELICANTH,
+ .heldItem = ITEM_QUICK_CLAW,
+ .moves = { MOVE_ANCIENT_POWER, MOVE_SURF, MOVE_EARTHQUAKE, MOVE_AMNESIA },
+ .level = 0,
+ .ppBonuses = 0x0,
+ .hpEV = 100,
+ .attackEV = 0,
+ .defenseEV = 0,
+ .speedEV = 0,
+ .spAttackEV = 155,
+ .spDefenseEV = 255,
+ .otId = 0x10000000,
+ .hpIV = 5,
+ .attackIV = 5,
+ .defenseIV = 5,
+ .speedIV = 5,
+ .spAttackIV = 5,
+ .spDefenseIV = 5,
+ .abilityNum = 0,
+ .personality = 0x2f,
+ .nickname = __("ジーランス$$$$$$"),
+ .friendship = 255
+ },
+ }
+ },
+ [1] = {
+ .name = __("ハルヒト$$$$ "),
+ .facilityClass = FACILITY_CLASS_CAMPER,
+ .unused = 0x1,
+ .speechBefore = { EC_MOVE2(BOUNCE), EC_WORD_AS_MUCH_AS, 0xFFFF, EC_WORD_THEY_RE, EC_WORD_STRONG, EC_WORD_EXCL },
+ .speechWin = { EC_MOVE(FLY), EC_WORD_AS_MUCH_AS, 0xFFFF, EC_WORD_THEY_RE, EC_WORD_HAPPY, EC_WORD_EXCL },
+ .speechLose = { EC_MOVE2(MINIMIZE), EC_WORD_AS_MUCH_AS, 0xFFFF, EC_WORD_THEY_RE, EC_WORD_SAD, EC_WORD_EXCL },
+ .speechAfter = { EC_MOVE(BITE), EC_WORD_AS_MUCH_AS, 0xFFFF, EC_WORD_THEY_RE, EC_WORD_ANGRY, EC_WORD_EXCL },
+ .mons = {
+ [0] = NULL_BATTLE_TOWER_POKEMON,
+ [1] = NULL_BATTLE_TOWER_POKEMON,
+ [2] = NULL_BATTLE_TOWER_POKEMON,
+ [3] = {
+ .species = SPECIES_CACTURNE,
+ .heldItem = ITEM_QUICK_CLAW,
+ .moves = { MOVE_GIGA_DRAIN, MOVE_FAINT_ATTACK, MOVE_THUNDER_PUNCH, MOVE_GROWTH },
+ .level = 0,
+ .ppBonuses = 0x0,
+ .hpEV = 55,
+ .attackEV = 0,
+ .defenseEV = 100,
+ .speedEV = 0,
+ .spAttackEV = 255,
+ .spDefenseEV = 100,
+ .otId = 0x10000000,
+ .hpIV = 5,
+ .attackIV = 5,
+ .defenseIV = 5,
+ .speedIV = 5,
+ .spAttackIV = 5,
+ .spDefenseIV = 5,
+ .abilityNum = 0,
+ .personality = 0x8c,
+ .nickname = __("ノクタス$$$$$$$"),
+ .friendship = 255
+ },
+ [4] = {
+ .species = SPECIES_SWELLOW,
+ .heldItem = ITEM_BRIGHT_POWDER,
+ .moves = { MOVE_FACADE, MOVE_AERIAL_ACE, MOVE_QUICK_ATTACK, MOVE_DOUBLE_TEAM },
+ .level = 0,
+ .ppBonuses = 0x0,
+ .hpEV = 255,
+ .attackEV = 255,
+ .defenseEV = 0,
+ .speedEV = 0,
+ .spAttackEV = 0,
+ .spDefenseEV = 0,
+ .otId = 0x10000000,
+ .hpIV = 5,
+ .attackIV = 5,
+ .defenseIV = 5,
+ .speedIV = 5,
+ .spAttackIV = 5,
+ .spDefenseIV = 5,
+ .abilityNum = 0,
+ .personality = 0x80,
+ .nickname = __("オオスバメ$$$$$$"),
+ .friendship = 255
+ },
+ [5] = {
+ .species = SPECIES_WHISCASH,
+ .heldItem = ITEM_CHESTO_BERRY,
+ .moves = { MOVE_SURF, MOVE_EARTHQUAKE, MOVE_AMNESIA, MOVE_REST },
+ .level = 0,
+ .ppBonuses = 0x0,
+ .hpEV = 0,
+ .attackEV = 255,
+ .defenseEV = 0,
+ .speedEV = 0,
+ .spAttackEV = 255,
+ .spDefenseEV = 0,
+ .otId = 0x10000000,
+ .hpIV = 5,
+ .attackIV = 5,
+ .defenseIV = 5,
+ .speedIV = 5,
+ .spAttackIV = 5,
+ .spDefenseIV = 5,
+ .abilityNum = 0,
+ .personality = 0x0,
+ .nickname = __("ナマズン$$$$$$$"),
+ .friendship = 255
+ },
+ }
+ },
+ [2] = {
+ .name = __("メイコ$$$$$ "),
+ .facilityClass = FACILITY_CLASS_SCHOOL_KID_F,
+ .unused = 0x1,
+ .speechBefore = { EC_WORD_SHINE, EC_WORD_POKEMON, EC_WORD_RELEASE, EC_WORD_WAS, EC_MOVE2(FRUSTRATION), EC_WORD_WITHOUT },
+ .speechWin = { EC_WORD_SHINE, EC_WORD_POKEMON, EC_WORD_TO_HER, EC_MOVE2(PRESENT), EC_WORD_KNOWS, EC_WORD_WITHOUT },
+ .speechLose = { EC_WORD_THAT, EC_WORD_ABOVE, EC_WORD_LOST, EC_WORD_STORES, EC_WORD_JOKING, EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS },
+ .speechAfter = { EC_WORD_ENTERTAINING, EC_WORD_NONE, EC_WORD_HEY_QUES, EC_WORD_ALMOST, EC_WORD_EXCL, 0xFFFF },
+ .mons = {
+ [0] = NULL_BATTLE_TOWER_POKEMON,
+ [1] = NULL_BATTLE_TOWER_POKEMON,
+ [2] = NULL_BATTLE_TOWER_POKEMON,
+ [3] = {
+ .species = SPECIES_DELCATTY,
+ .heldItem = ITEM_LUM_BERRY,
+ .moves = { MOVE_SING, MOVE_BODY_SLAM, MOVE_SHADOW_BALL, MOVE_IRON_TAIL },
+ .level = 0,
+ .ppBonuses = 0x0,
+ .hpEV = 0,
+ .attackEV = 255,
+ .defenseEV = 0,
+ .speedEV = 255,
+ .spAttackEV = 0,
+ .spDefenseEV = 0,
+ .otId = 0x10000000,
+ .hpIV = 5,
+ .attackIV = 5,
+ .defenseIV = 5,
+ .speedIV = 5,
+ .spAttackIV = 5,
+ .spDefenseIV = 5,
+ .abilityNum = 0,
+ .personality = 0x3,
+ .nickname = __("エネコロロ$$$$$$"),
+ .friendship = 255
+ },
+ [4] = {
+ .species = SPECIES_ROSELIA,
+ .heldItem = ITEM_LEFTOVERS,
+ .moves = { MOVE_GIGA_DRAIN, MOVE_GRASS_WHISTLE, MOVE_TOXIC, MOVE_LEECH_SEED },
+ .level = 0,
+ .ppBonuses = 0x0,
+ .hpEV = 255,
+ .attackEV = 0,
+ .defenseEV = 0,
+ .speedEV = 0,
+ .spAttackEV = 255,
+ .spDefenseEV = 0,
+ .otId = 0x10000000,
+ .hpIV = 5,
+ .attackIV = 5,
+ .defenseIV = 5,
+ .speedIV = 5,
+ .spAttackIV = 5,
+ .spDefenseIV = 5,
+ .abilityNum = 1,
+ .personality = 0x6,
+ .nickname = __("ロゼリア$$$$$$$"),
+ .friendship = 255
+ },
+ [5] = {
+ .species = SPECIES_BEAUTIFLY,
+ .heldItem = ITEM_BRIGHT_POWDER,
+ .moves = { MOVE_SILVER_WIND, MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_PSYCHIC },
+ .level = 0,
+ .ppBonuses = 0x0,
+ .hpEV = 100,
+ .attackEV = 200,
+ .defenseEV = 0,
+ .speedEV = 0,
+ .spAttackEV = 200,
+ .spDefenseEV = 0,
+ .otId = 0x10000000,
+ .hpIV = 5,
+ .attackIV = 5,
+ .defenseIV = 5,
+ .speedIV = 5,
+ .spAttackIV = 5,
+ .spDefenseIV = 5,
+ .abilityNum = 0,
+ .personality = 0x6,
+ .nickname = __("アゲハント$$$$$$"),
+ .friendship = 255
+ },
+ }
+ },
+ [3] = {
+ .name = __("ピエール$$$$ "),
+ .facilityClass = FACILITY_CLASS_GENTLEMAN,
+ .unused = 0x1,
+ .speechBefore = { EC_WORD_SHE_WAS, EC_WORD_NO_1, EC_WORD_STRONG, EC_WORD_UNCLE, EC_WORD_THERE, EC_WORD_EXCL },
+ .speechWin = { EC_WORD_HAHAHA, EC_WORD_TEACHER, EC_WORD_BECOMES, EC_WORD_GIVE, EC_WORD_IS_IT_QUES, 0xFFFF },
+ .speechLose = { EC_WORD_OUTSIDE, EC_WORD_UNCLE, EC_WORD_SURPRISE, EC_WORD_THESE, EC_WORD_HEY_QUES, EC_WORD_ELLIPSIS_EXCL },
+ .speechAfter = { EC_WORD_HE_S, EC_WORD_NO_1, EC_WORD_STRONG, EC_WORD_CHILDREN, EC_WORD_CAN_T, EC_WORD_EXCL_EXCL },
+ .mons = {
+ [0] = NULL_BATTLE_TOWER_POKEMON,
+ [1] = NULL_BATTLE_TOWER_POKEMON,
+ [2] = NULL_BATTLE_TOWER_POKEMON,
+ [3] = {
+ .species = SPECIES_MAWILE,
+ .heldItem = ITEM_BRIGHT_POWDER,
+ .moves = { MOVE_CRUNCH, MOVE_FLAMETHROWER, MOVE_THUNDER_PUNCH, MOVE_COMET_PUNCH },
+ .level = 0,
+ .ppBonuses = 0x0,
+ .hpEV = 0,
+ .attackEV = 0,
+ .defenseEV = 100,
+ .speedEV = 0,
+ .spAttackEV = 255,
+ .spDefenseEV = 155,
+ .otId = 0x10000000,
+ .hpIV = 5,
+ .attackIV = 5,
+ .defenseIV = 5,
+ .speedIV = 5,
+ .spAttackIV = 5,
+ .spDefenseIV = 5,
+ .abilityNum = 1,
+ .personality = 0x0,
+ .nickname = __("クチート$$$$$$$"),
+ .friendship = 255
+ },
+ [4] = {
+ .species = SPECIES_SHARPEDO,
+ .heldItem = ITEM_SCOPE_LENS,
+ .moves = { MOVE_SURF, MOVE_CRUNCH, MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE },
+ .level = 0,
+ .ppBonuses = 0x0,
+ .hpEV = 255,
+ .attackEV = 0,
+ .defenseEV = 0,
+ .speedEV = 0,
+ .spAttackEV = 255,
+ .spDefenseEV = 0,
+ .otId = 0x10000000,
+ .hpIV = 5,
+ .attackIV = 5,
+ .defenseIV = 5,
+ .speedIV = 5,
+ .spAttackIV = 5,
+ .spDefenseIV = 5,
+ .abilityNum = 0,
+ .personality = 0x96,
+ .nickname = __("サメハダー$$$$$$"),
+ .friendship = 255
+ },
+ [5] = {
+ .species = SPECIES_BANETTE,
+ .heldItem = ITEM_LUM_BERRY,
+ .moves = { MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_THUNDERBOLT, MOVE_WILL_O_WISP },
+ .level = 0,
+ .ppBonuses = 0x0,
+ .hpEV = 255,
+ .attackEV = 0,
+ .defenseEV = 0,
+ .speedEV = 0,
+ .spAttackEV = 255,
+ .spDefenseEV = 0,
+ .otId = 0x10000000,
+ .hpIV = 5,
+ .attackIV = 5,
+ .defenseIV = 5,
+ .speedIV = 5,
+ .spAttackIV = 5,
+ .spDefenseIV = 5,
+ .abilityNum = 0,
+ .personality = 0x96,
+ .nickname = __("ジュペッタ$$$$$$"),
+ .friendship = 255
+ },
+ }
+ },
+};
static u8 sub_81D38D4(void)
{
return (gSaveBlock1Ptr->trainerHill.unused + 1) % 256;
}
-static bool32 Struct_Unk81D38FC_ValidateChecksum(struct Unk81D38FC *arg0)
+static bool32 Struct_EReaderTrainerHillTrainer_ValidateChecksum(struct EReaderTrainerHillTrainer *arg0)
{
int checksum = CalcByteArraySum((u8 *)arg0, 0x270);
if (checksum != arg0->checksum)
@@ -58,17 +409,17 @@ bool8 EReader_IsReceivedDataValid(struct EReaderTrainerHillSet *buffer)
{
u32 i;
u32 checksum;
- int var0 = buffer->unk_0;
+ int var0 = buffer->count;
if (var0 < 1 || var0 > 8)
return FALSE;
for (i = 0; i < var0; i++)
{
- if (!Struct_Unk81D38FC_ValidateChecksum(&buffer->unk_8[i]))
+ if (!Struct_EReaderTrainerHillTrainer_ValidateChecksum(&buffer->unk_8[i]))
return FALSE;
}
- checksum = CalcByteArraySum((u8 *)buffer->unk_8, var0 * sizeof(struct Unk81D38FC));
+ checksum = CalcByteArraySum((u8 *)buffer->unk_8, var0 * sizeof(struct EReaderTrainerHillTrainer));
if (checksum != buffer->checksum)
return FALSE;
@@ -78,7 +429,7 @@ bool8 EReader_IsReceivedDataValid(struct EReaderTrainerHillSet *buffer)
static bool32 TrainerHill_VerifyChecksum(struct EReaderTrainerHillSet *buffer)
{
u32 checksum;
- int var0 = buffer->unk_0;
+ int var0 = buffer->count;
if (var0 < 1 || var0 > 8)
return FALSE;
@@ -89,38 +440,39 @@ static bool32 TrainerHill_VerifyChecksum(struct EReaderTrainerHillSet *buffer)
return TRUE;
}
-static bool32 TryWriteTrainerHill_r(struct EReaderTrainerHillSet *arg0, struct Unk81D3998 *buffer2)
+static bool32 TryWriteTrainerHill_r(struct EReaderTrainerHillSet *ttdata, struct TrHillTag *buffer2)
{
int i;
+ AGB_ASSERT_EX(ttdata->dummy == 0, "cereader_tool.c", 450);
+ AGB_ASSERT_EX(ttdata->id == 0, "cereader_tool.c", 452);
+
memset(buffer2, 0, 0x1000);
- buffer2->unk_000 = arg0->unk_0;
- buffer2->unk_001 = sub_81D38D4();
- buffer2->unk_002 = (arg0->unk_0 + 1) / 2;
+ buffer2->unkField_0 = ttdata->count;
+ buffer2->unused1 = sub_81D38D4();
+ buffer2->numFloors = (ttdata->count + 1) / 2;
- for (i = 0; i < arg0->unk_0; i++)
+ for (i = 0; i < ttdata->count; i++)
{
if (!(i & 1))
{
- buffer2->unk_008[i / 2].unk_000[0] = arg0->unk_8[i].unk0;
- memcpy(buffer2->unk_008[i / 2].unk_294, arg0->unk_8[i].unk14C, 0x124);
- memcpy(buffer2->unk_008[i / 2].unk_004, arg0->unk_8[i].unk4, 0x148);
+ buffer2->floors[i / 2].unk0 = ttdata->unk_8[i].unk0;
+ buffer2->floors[i / 2].display = ttdata->unk_8[i].unk14C;
+ buffer2->floors[i / 2].trainers[0] = ttdata->unk_8[i].unk4;
}
else
{
- buffer2->unk_008[i / 2].unk_000[1] = arg0->unk_8[i].unk0;
- memcpy(buffer2->unk_008[i / 2].unk_14C, arg0->unk_8[i].unk4, 0x148);
+ buffer2->floors[i / 2].unk1 = ttdata->unk_8[i].unk0;
+ buffer2->floors[i / 2].trainers[1] = ttdata->unk_8[i].unk4;
}
}
if (i & 1)
{
- u8 * dest = buffer2->unk_008[i / 2].unk_14C;
- const u8 (* src)[0x148] = gUnknown_08625B6C;
- memcpy(dest, src[i / 2], 0x148);
+ buffer2->floors[i / 2].trainers[1] = sTrainerHillTrainerTemplates_JP[i / 2];
}
- buffer2->checksum = CalcByteArraySum((u8 *)buffer2->unk_008, sizeof(struct Unk81D3998) - offsetof(struct Unk81D3998, unk_008));
+ buffer2->checksum = CalcByteArraySum((u8 *)buffer2->floors, 4 * sizeof(struct TrHillFloor));
if (TryWriteSpecialSaveSection(SECTOR_ID_TRAINER_HILL, (u8 *)buffer2) != 1)
return FALSE;
@@ -129,7 +481,7 @@ static bool32 TryWriteTrainerHill_r(struct EReaderTrainerHillSet *arg0, struct U
bool32 TryWriteTrainerHill(struct EReaderTrainerHillSet *arg0)
{
- struct Unk81D3998 *var0 = AllocZeroed(0x1000);
+ void *var0 = AllocZeroed(0x1000);
bool32 result = TryWriteTrainerHill_r(arg0, var0);
Free(var0);
return result;
@@ -163,20 +515,20 @@ bool32 ReadTrainerHillAndValidate(void)
return result;
}
-static int unref_sub_81D3B54(int arg0, u32 *arg1)
+int EReader_Send(int arg0, u32 *arg1)
{
int result;
u16 var0;
int var1;
- sub_81D41A0();
+ EReaderHelper_SaveRegsState();
while (1)
{
sub_81D4170();
if (gUnknown_030012E2 & 2)
gShouldAdvanceLinkState = 2;
- var1 = sub_81D3D70(1, arg0, arg1, NULL);
+ var1 = EReaderHandleTransfer(1, arg0, arg1, NULL);
gUnknown_030012E4 = var1;
if ((gUnknown_030012E4 & 0x13) == 0x10)
{
@@ -202,24 +554,24 @@ static int unref_sub_81D3B54(int arg0, u32 *arg1)
}
CpuFill32(0, &gUnknown_030012C8, sizeof(struct Unknown030012C8));
- sub_81D41F4();
+ EReaderHelper_RestoreRegsState();
return result;
}
-static int unref_sub_81D3BE8(u32 *arg0)
+int EReader_Recv(u32 *arg0)
{
int result;
u16 var0;
int var1;
- sub_81D41A0();
+ EReaderHelper_SaveRegsState();
while (1)
{
sub_81D4170();
if (gUnknown_030012E2 & 2)
gShouldAdvanceLinkState = 2;
- var1 = sub_81D3D70(0, 0, NULL, arg0);
+ var1 = EReaderHandleTransfer(0, 0, NULL, arg0);
gUnknown_030012E4 = var1;
if ((gUnknown_030012E4 & 0x13) == 0x10)
{
@@ -245,7 +597,7 @@ static int unref_sub_81D3BE8(u32 *arg0)
}
CpuFill32(0, &gUnknown_030012C8, sizeof(struct Unknown030012C8));
- sub_81D41F4();
+ EReaderHelper_RestoreRegsState();
return result;
}
@@ -285,7 +637,7 @@ static void sub_81D3D34(void)
gUnknown_030012E8 = 0;
}
-int sub_81D3D70(u8 arg0, u32 arg1, u32 *arg2, u32 *arg3)
+int EReaderHandleTransfer(u8 arg0, u32 arg1, u32 *arg2, u32 *arg3)
{
switch (gUnknown_030012C8.unk0[1])
{
@@ -519,7 +871,7 @@ static void sub_81D4170(void)
gUnknown_030012E0 = keysMask;
}
-void sub_81D41A0(void)
+void EReaderHelper_SaveRegsState(void)
{
gUnknown_030012EC = REG_IME;
gUnknown_030012EE = REG_IE;
@@ -528,7 +880,7 @@ void sub_81D41A0(void)
gUnknown_030012F4 = REG_RCNT;
}
-void sub_81D41F4(void)
+void EReaderHelper_RestoreRegsState(void)
{
REG_IME = gUnknown_030012EC;
REG_IE = gUnknown_030012EE;
diff --git a/src/ereader_screen.c b/src/ereader_screen.c
index 98f0d9b8c..13e964224 100755
--- a/src/ereader_screen.c
+++ b/src/ereader_screen.c
@@ -49,7 +49,7 @@ static void sub_81D4D50(struct Unk03006370 *arg0, int arg1, u32 *arg2)
REG_IME = 0;
gIntrTable[1] = sub_81D3FAC;
gIntrTable[2] = sub_81D3F9C;
- sub_81D41A0();
+ EReaderHelper_SaveRegsState();
sub_81D4238();
REG_IE |= INTR_FLAG_VCOUNT;
REG_IME = backupIME;
@@ -63,7 +63,7 @@ static void sub_81D4DB8(struct Unk03006370 *arg0)
volatile u16 backupIME = REG_IME;
REG_IME = 0;
sub_81D4238();
- sub_81D41F4();
+ EReaderHelper_RestoreRegsState();
RestoreSerialTimer3IntrHandlers();
REG_IME = backupIME;
}
@@ -71,7 +71,7 @@ static void sub_81D4DB8(struct Unk03006370 *arg0)
static u8 sub_81D4DE8(struct Unk03006370 *arg0)
{
u8 var0 = 0;
- arg0->unk0 = sub_81D3D70(1, arg0->unk4, arg0->unk8, NULL);
+ arg0->unk0 = EReaderHandleTransfer(1, arg0->unk4, arg0->unk8, NULL);
if ((arg0->unk0 & 0x13) == 0x10)
var0 = 1;
diff --git a/src/event_obj_lock.c b/src/event_obj_lock.c
index 566b4931d..22a29fd5d 100644
--- a/src/event_obj_lock.c
+++ b/src/event_obj_lock.c
@@ -92,7 +92,7 @@ void ScriptUnfreezeEventObjects(void)
{
u8 playerObjectId = GetEventObjectIdByLocalIdAndMap(EVENT_OBJ_ID_PLAYER, 0, 0);
EventObjectClearHeldMovementIfFinished(&gEventObjects[playerObjectId]);
- sub_80D338C();
+ ScriptMovement_UnfreezeEventObjects();
UnfreezeEventObjects();
}
@@ -104,7 +104,7 @@ void sub_8098524(void)
EventObjectClearHeldMovementIfFinished(&gEventObjects[gSelectedEventObject]);
playerObjectId = GetEventObjectIdByLocalIdAndMap(EVENT_OBJ_ID_PLAYER, 0, 0);
EventObjectClearHeldMovementIfFinished(&gEventObjects[playerObjectId]);
- sub_80D338C();
+ ScriptMovement_UnfreezeEventObjects();
UnfreezeEventObjects();
}
diff --git a/src/field_specials.c b/src/field_specials.c
index efe77bd70..f20e38c8b 100644
--- a/src/field_specials.c
+++ b/src/field_specials.c
@@ -35,6 +35,7 @@
#include "rtc.h"
#include "script.h"
#include "script_menu.h"
+#include "slot_machine.h"
#include "sound.h"
#include "starter_choose.h"
#include "string_util.h"
@@ -44,11 +45,17 @@
#include "tv.h"
#include "wallclock.h"
#include "window.h"
+#include "constants/battle_frontier.h"
+#include "constants/decorations.h"
#include "constants/event_objects.h"
+#include "constants/event_object_movement_constants.h"
#include "constants/field_effects.h"
+#include "constants/field_specials.h"
#include "constants/items.h"
+#include "constants/heal_locations.h"
#include "constants/map_types.h"
#include "constants/maps.h"
+#include "constants/script_menu.h"
#include "constants/songs.h"
#include "constants/species.h"
#include "constants/moves.h"
@@ -60,29 +67,28 @@
EWRAM_DATA bool8 gBikeCyclingChallenge = FALSE;
EWRAM_DATA u8 gBikeCollisions = 0;
-static EWRAM_DATA u32 gBikeCyclingTimer = 0;
-static EWRAM_DATA u8 gUnknown_0203AB5C = 0;
+static EWRAM_DATA u32 sBikeCyclingTimer = 0;
+static EWRAM_DATA u8 sUnknown_0203AB5C = 0;
static EWRAM_DATA u8 sPetalburgGymSlidingDoorFrameCounter = 0;
-static EWRAM_DATA u8 gUnknown_0203AB5E = 0;
-static EWRAM_DATA u16 gUnknown_0203AB60 = 0;
-static EWRAM_DATA u16 gUnknown_0203AB62 = 0;
-static EWRAM_DATA struct ListMenuItem *gUnknown_0203AB64 = NULL;
-static EWRAM_DATA u16 gUnknown_0203AB68 = 0;
-static EWRAM_DATA u16 gUnknown_0203AB6A = 0;
-static EWRAM_DATA u8 gUnknown_0203AB6C = 0;
-static EWRAM_DATA u8 gUnknown_0203AB6D = 0;
-static EWRAM_DATA u8 gUnknown_0203AB6E = 0;
-static EWRAM_DATA u8 gUnknown_0203AB6F = 0;
-static EWRAM_DATA u32 gUnknown_0203AB70 = 0;
-
-struct ListMenuTemplate gUnknown_030061D0;
+static EWRAM_DATA u8 sTutorMoveAndElevatorWindowId = 0;
+static EWRAM_DATA u16 sLilycoveDeptStore_NeverRead = 0;
+static EWRAM_DATA u16 sLilycoveDeptStore_DefaultFloorChoice = 0;
+static EWRAM_DATA struct ListMenuItem *sScrollableMultichoice_ListMenuItem = NULL;
+static EWRAM_DATA u16 sScrollableMultichoice_ScrollOffset = 0;
+static EWRAM_DATA u16 sFrontierExchangeCorner_NeverRead = 0;
+static EWRAM_DATA u8 sScrollableMultichoice_ItemSpriteId = 0;
+static EWRAM_DATA u8 sBattlePointsWindowId = 0;
+static EWRAM_DATA u8 sFrontierExchangeCorner_ItemIconWindowId = 0;
+static EWRAM_DATA u8 sPCBoxToSendMon = 0;
+static EWRAM_DATA u32 sUnknown_0203AB70 = 0;
+
+struct ListMenuTemplate gScrollableMultichoice_ListMenuTemplate;
extern const u16 gEventObjectPalette8[];
extern const u16 gEventObjectPalette17[];
extern const u16 gEventObjectPalette33[];
extern const u16 gEventObjectPalette34[];
-
void UpdateMovedLilycoveFanClubMembers(void);
void sub_813BF60(void);
u16 GetNumMovedLilycoveFanClubMembers(void);
@@ -99,23 +105,23 @@ static void Task_LotteryCornerComputerEffect(u8);
static void LotteryCornerComputerEffect(struct Task *);
static void sub_81395BC(u8 taskId);
static void sub_8139620(u8 taskId);
-static void sub_8139AF4(u8 taskId);
-static void sub_8139C2C(u16 a1, u8 a2);
-static void MoveElevatorWindowLights(u8 taskId);
-static void sub_813A2DC(u8 taskId);
-static void sub_813AA60(u16 a0, u16 a1);
-static void sub_813ACE8(u8 a0, u16 a1);
-static void sub_813A42C(void);
-static void sub_813A4EC(u8 taskId);
-static void sub_813A694(u8 taskId);
-static void sub_813A46C(s32 itemIndex, bool8 onInit, struct ListMenu *list);
-static void sub_813AC44(u16 a0, u16 a1);
-static void sub_813AD34(u8 a0, u16 a1);
-static void sub_813A570(u8 taskId);
-static void sub_813A738(u8 taskId);
+static void Task_MoveElevator(u8 taskId);
+static void MoveElevatorWindowLights(u16 floorDelta, bool8 descending);
+static void Task_MoveElevatorWindowLights(u8 taskId);
+static void Task_ShowScrollableMultichoice(u8 taskId);
+static void FillFrontierExchangeCornerWindowAndItemIcon(u16 menu, u16 selection);
+static void ShowBattleFrontierTutorWindow(u8 menu, u16 selection);
+static void InitScrollableMultichoice(void);
+static void ScrollableMultichoice_ProcessInput(u8 taskId);
+static void ScrollableMultichoice_UpdateScrollArrows(u8 taskId);
+static void ScrollableMultichoice_MoveCursor(s32 itemIndex, bool8 onInit, struct ListMenu *list);
+static void HideFrontierExchangeCornerItemIcon(u16 menu, u16 unused);
+static void ShowBattleFrontierTutorMoveDescription(u8 menu, u16 selection);
+static void CloseScrollableMultichoice(u8 taskId);
+static void ScrollableMultichoice_RemoveScrollArrows(u8 taskId);
static void sub_813A600(u8 taskId);
static void sub_813A664(u8 taskId);
-static void sub_813ABD4(u16 a0);
+static void ShowFrontierExchangeCornerItemIcon(u16 item);
static void Task_DeoxysRockInteraction(u8 taskId);
static void ChangeDeoxysRockLevel(u8 a0);
static void WaitForDeoxysRockMovement(u8 taskId);
@@ -144,14 +150,14 @@ void ResetCyclingRoadChallengeData(void)
{
gBikeCyclingChallenge = FALSE;
gBikeCollisions = 0;
- gBikeCyclingTimer = 0;
+ sBikeCyclingTimer = 0;
}
void Special_BeginCyclingRoadChallenge(void)
{
gBikeCyclingChallenge = TRUE;
gBikeCollisions = 0;
- gBikeCyclingTimer = gMain.vblankCounter1;
+ sBikeCyclingTimer = gMain.vblankCounter1;
}
u16 GetPlayerAvatarBike(void)
@@ -237,7 +243,7 @@ static void DetermineCyclingRoadResults(u32 numFrames, u8 numBikeCollisions)
}
void FinishCyclingRoadChallenge(void) {
- const u32 numFrames = gMain.vblankCounter1 - gBikeCyclingTimer;
+ const u32 numFrames = gMain.vblankCounter1 - sBikeCyclingTimer;
DetermineCyclingRoadResults(numFrames, gBikeCollisions);
RecordCyclingRoadResults(numFrames, gBikeCollisions);
@@ -310,16 +316,16 @@ u8 GetSSTidalLocation(s8 *mapGroup, s8 *mapNum, s16 *x, s16 *y)
{
case 1:
case 8:
- return 1;
+ return SS_TIDAL_LOCATION_SLATEPORT;
case 3:
case 9:
- return 4;
+ return SS_TIDAL_LOCATION_ROUTE131;
case 4:
case 5:
- return 2;
+ return SS_TIDAL_LOCATION_LILYCOVE;
case 6:
case 10:
- return 3;
+ return SS_TIDAL_LOCATION_ROUTE124;
case 2:
if (*varCruiseStepCount < 60)
{
@@ -356,7 +362,7 @@ u8 GetSSTidalLocation(s8 *mapGroup, s8 *mapNum, s16 *x, s16 *y)
}
*mapGroup = MAP_GROUP(ROUTE132);
*y = 20;
- return 0;
+ return SS_TIDAL_LOCATION_OTHER;
}
bool32 ShouldDoWallyCall(void)
@@ -419,10 +425,10 @@ bool32 ShouldDoScottCall(void)
{
switch (gMapHeader.mapType)
{
- case 1:
- case 2:
- case 3:
- case 6:
+ case MAP_TYPE_TOWN:
+ case MAP_TYPE_CITY:
+ case MAP_TYPE_ROUTE:
+ case MAP_TYPE_OCEAN_ROUTE:
if (++(*GetVarPointer(VAR_SCOTT_CALL_STEP_COUNTER)) < 10)
{
return FALSE;
@@ -446,10 +452,10 @@ bool32 ShouldDoRoxanneCall(void)
{
switch (gMapHeader.mapType)
{
- case 1:
- case 2:
- case 3:
- case 6:
+ case MAP_TYPE_TOWN:
+ case MAP_TYPE_CITY:
+ case MAP_TYPE_ROUTE:
+ case MAP_TYPE_OCEAN_ROUTE:
if (++(*GetVarPointer(VAR_ROXANNE_CALL_STEP_COUNTER)) < 250)
{
return FALSE;
@@ -473,10 +479,10 @@ bool32 ShouldDoRivalRayquazaCall(void)
{
switch (gMapHeader.mapType)
{
- case 1:
- case 2:
- case 3:
- case 6:
+ case MAP_TYPE_TOWN:
+ case MAP_TYPE_CITY:
+ case MAP_TYPE_ROUTE:
+ case MAP_TYPE_OCEAN_ROUTE:
if (++(*GetVarPointer(VAR_RIVAL_RAYQUAZA_CALL_STEP_COUNTER)) < 250)
{
return FALSE;
@@ -516,8 +522,13 @@ void SpawnLinkPartnerEventObject(void)
u8 j = 0;
s16 x = 0;
s16 y = 0;
- u8 gUnknown_085B2B5C[] = {7, 9, 8, 10};
- s8 gUnknown_085B2B60[][2] = {
+ u8 movementTypes[] = {
+ MOVEMENT_TYPE_FACE_UP,
+ MOVEMENT_TYPE_FACE_LEFT,
+ MOVEMENT_TYPE_FACE_DOWN,
+ MOVEMENT_TYPE_FACE_RIGHT
+ };
+ s8 coordOffsets[][2] = {
{ 0, 1},
{ 1, 0},
{ 0, -1},
@@ -577,10 +588,10 @@ void SpawnLinkPartnerEventObject(void)
linkSpriteId = EVENT_OBJ_GFX_RIVAL_MAY_NORMAL;
break;
}
- SpawnSpecialEventObjectParameterized(linkSpriteId, gUnknown_085B2B5C[j], 0xf0 - i, gUnknown_085B2B60[j][0] + x + 7, gUnknown_085B2B60[j][1] + y + 7, 0);
- LoadLinkPartnerEventObjectSpritePalette(linkSpriteId, 0xf0 - i, i);
+ SpawnSpecialEventObjectParameterized(linkSpriteId, movementTypes[j], 240 - i, coordOffsets[j][0] + x + 7, coordOffsets[j][1] + y + 7, 0);
+ LoadLinkPartnerEventObjectSpritePalette(linkSpriteId, 240 - i, i);
j++;
- if (j == 4)
+ if (j == MAX_LINK_PLAYERS)
{
j = 0;
}
@@ -624,7 +635,8 @@ static void LoadLinkPartnerEventObjectSpritePalette(u8 graphicsId, u8 localEvent
}
}
-static const struct UCoords8 sMauvilleGymSwitchCoords[] = {
+static const struct UCoords8 sMauvilleGymSwitchCoords[] =
+{
{ 7, 22},
{11, 19},
{10, 16},
@@ -814,7 +826,7 @@ static const u16 sPetalburgGymSlidingDoorMetatiles[] = {
void PetalburgGymSpecial1(void)
{
- gUnknown_0203AB5C = 0;
+ sUnknown_0203AB5C = 0;
sPetalburgGymSlidingDoorFrameCounter = 0;
PlaySE(SE_KI_GASYAN);
CreateTask(Task_PetalburgGym, 8);
@@ -822,10 +834,10 @@ void PetalburgGymSpecial1(void)
static void Task_PetalburgGym(u8 taskId)
{
- if (gUnknown_085B2B78[sPetalburgGymSlidingDoorFrameCounter] == gUnknown_0203AB5C)
+ if (gUnknown_085B2B78[sPetalburgGymSlidingDoorFrameCounter] == sUnknown_0203AB5C)
{
PetalburgGymFunc(gSpecialVar_0x8004, sPetalburgGymSlidingDoorMetatiles[sPetalburgGymSlidingDoorFrameCounter]);
- gUnknown_0203AB5C = 0;
+ sUnknown_0203AB5C = 0;
if ((++sPetalburgGymSlidingDoorFrameCounter) == ARRAY_COUNT(sPetalburgGymSlidingDoorMetatiles))
{
DestroyTask(taskId);
@@ -834,7 +846,7 @@ static void Task_PetalburgGym(u8 taskId)
}
else
{
- gUnknown_0203AB5C++;
+ sUnknown_0203AB5C++;
}
}
@@ -1077,36 +1089,35 @@ static void PCTurnOnEffect_0(struct Task *task)
task->data[3]++;
}
-// enum pc location,
-static void PCTurnOnEffect_1(s16 flag, s8 dx, s8 dy)
+static void PCTurnOnEffect_1(s16 isPcTurnedOn, s8 dx, s8 dy)
{
u16 tileId = 0;
- if (flag != 0)
+ if (isPcTurnedOn)
{
- if (gSpecialVar_0x8004 == 0)
+ if (gSpecialVar_0x8004 == PC_LOCATION_OTHER)
{
tileId = METATILE_ID(Building, PC_Off);
}
- else if (gSpecialVar_0x8004 == 1)
+ else if (gSpecialVar_0x8004 == PC_LOCATION_BRENDANS_HOUSE)
{
tileId = METATILE_ID(BrendansMaysHouse, BrendanPC_Off);
}
- else if (gSpecialVar_0x8004 == 2)
+ else if (gSpecialVar_0x8004 == PC_LOCATION_MAYS_HOUSE)
{
tileId = METATILE_ID(BrendansMaysHouse, MayPC_Off);
}
}
else
{
- if (gSpecialVar_0x8004 == 0)
+ if (gSpecialVar_0x8004 == PC_LOCATION_OTHER)
{
tileId = METATILE_ID(Building, PC_On);
}
- else if (gSpecialVar_0x8004 == 1)
+ else if (gSpecialVar_0x8004 == PC_LOCATION_BRENDANS_HOUSE)
{
tileId = METATILE_ID(BrendansMaysHouse, BrendanPC_On);
}
- else if (gSpecialVar_0x8004 == 2)
+ else if (gSpecialVar_0x8004 == PC_LOCATION_MAYS_HOUSE)
{
tileId = METATILE_ID(BrendansMaysHouse, MayPC_On);
}
@@ -1294,7 +1305,7 @@ void IsGrassTypeInParty(void)
void SpawnCameraObject(void)
{
- u8 obj = SpawnSpecialEventObjectParameterized(EVENT_OBJ_GFX_BOY_1, 8, EVENT_OBJ_ID_CAMERA, gSaveBlock1Ptr->pos.x + 7, gSaveBlock1Ptr->pos.y + 7, 3);
+ u8 obj = SpawnSpecialEventObjectParameterized(EVENT_OBJ_GFX_BOY_1, MOVEMENT_TYPE_FACE_DOWN, EVENT_OBJ_ID_CAMERA, gSaveBlock1Ptr->pos.x + 7, gSaveBlock1Ptr->pos.y + 7, 3);
gEventObjects[obj].invisible = TRUE;
CameraObjectSetFollowedObjectId(gEventObjects[obj].spriteId);
}
@@ -1327,16 +1338,16 @@ void BufferEReaderTrainerName(void)
u16 GetSlotMachineId(void)
{
- static const u8 gUnknown_085B2B88[] = {12, 2, 4, 5, 1, 8, 7, 11, 3, 10, 9, 6};
- static const u8 gUnknown_085B2B94[] = {0, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 5};
- static const u8 gUnknown_085B2BA0[] = {3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5};
+ static const u8 sSlotMachineRandomSeeds[] = {12, 2, 4, 5, 1, 8, 7, 11, 3, 10, 9, 6};
+ static const u8 sSlotMachineIds[] = {0, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 5};
+ static const u8 sSlotMachineServiceDayIds[] = {3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5};
- u32 v0 = gSaveBlock1Ptr->easyChatPairs[0].unk0_0 + gSaveBlock1Ptr->easyChatPairs[0].unk2 + gUnknown_085B2B88[gSpecialVar_0x8004];
- if (GetPriceReduction(2))
+ u32 rnd = gSaveBlock1Ptr->easyChatPairs[0].unk0_0 + gSaveBlock1Ptr->easyChatPairs[0].unk2 + sSlotMachineRandomSeeds[gSpecialVar_0x8004];
+ if (GetPriceReduction(POKENEWS_GAME_CORNER))
{
- return gUnknown_085B2BA0[v0 % 12];
+ return sSlotMachineServiceDayIds[rnd % SLOT_MACHINE_COUNT];
}
- return gUnknown_085B2B94[v0 % 12];
+ return sSlotMachineIds[rnd % SLOT_MACHINE_COUNT];
}
bool8 FoundAbandonedShipRoom1Key(void)
@@ -1434,7 +1445,7 @@ u8 TryUpdateRusturfTunnelState(void)
return FALSE;
}
-void SetShoalItemFlag(u16 v0)
+void SetShoalItemFlag(u16 unused)
{
FlagSet(FLAG_SYS_SHOAL_ITEM);
}
@@ -1442,7 +1453,7 @@ void SetShoalItemFlag(u16 v0)
void PutZigzagoonInPlayerParty(void)
{
u16 monData;
- CreateMon(&gPlayerParty[0], SPECIES_ZIGZAGOON, 7, 0x20, FALSE, 0, FALSE, 0);
+ CreateMon(&gPlayerParty[0], SPECIES_ZIGZAGOON, 7, 32, FALSE, 0, OT_ID_PLAYER_ID, 0);
monData = TRUE;
SetMonData(&gPlayerParty[0], MON_DATA_ABILITY_NUM, &monData);
monData = MOVE_TACKLE;
@@ -1529,7 +1540,7 @@ void SetRoute119Weather(void)
{
if (IsMapTypeOutdoors(GetLastUsedWarpMapType()) != TRUE)
{
- SetSav1Weather(20);
+ SetSav1Weather(WEATHER_ROUTE119_CYCLE);
}
}
@@ -1537,7 +1548,7 @@ void SetRoute123Weather(void)
{
if (IsMapTypeOutdoors(GetLastUsedWarpMapType()) != TRUE)
{
- SetSav1Weather(21);
+ SetSav1Weather(WEATHER_ROUTE123_CYCLE);
}
}
@@ -1560,9 +1571,10 @@ u16 ScriptGetPartyMonSpecies(void)
return GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_SPECIES2, NULL);
}
-void nullsub_54(void)
+// Removed for Emerald
+void TryInitBattleTowerAwardManEventObject(void)
{
-
+ //TryInitLocalEventObject(6);
}
u16 GetDaysUntilPacifidlogTMAvailable(void)
@@ -1653,7 +1665,7 @@ u16 sub_813986C(void)
}
}
-bool8 sub_81398C0(void)
+bool8 BufferTMHMMoveName(void)
{
if (gSpecialVar_0x8004 >= ITEM_TM01 && gSpecialVar_0x8004 <= ITEM_HM08)
{
@@ -1664,14 +1676,14 @@ bool8 sub_81398C0(void)
return FALSE;
}
-bool8 sub_813990C(void)
+bool8 IsBadEggInParty(void)
{
u8 partyCount = CalculatePlayerPartyCount();
u8 i;
for (i = 0; i < partyCount; i++)
{
- if (GetMonData(&gPlayerParty[i], MON_DATA_SANITY_IS_BAD_EGG) == 1)
+ if (GetMonData(&gPlayerParty[i], MON_DATA_SANITY_IS_BAD_EGG) == TRUE)
return TRUE;
}
@@ -1693,7 +1705,8 @@ void sub_8139980(void)
SetCameraPanning(8, 0);
}
-const struct WindowTemplate gUnknown_085B2BAC = {
+const struct WindowTemplate gElevatorFloor_WindowTemplate =
+{
.bg = 0,
.tilemapLeft = 21,
.tilemapTop = 1,
@@ -1703,23 +1716,24 @@ const struct WindowTemplate gUnknown_085B2BAC = {
.baseBlock = 8,
};
-const u8 *const gElevatorFloorsTable[] = {
- gText_B4F,
- gText_B3F,
- gText_B2F,
- gText_B1F,
- gText_1F,
- gText_2F,
- gText_3F,
- gText_4F,
- gText_5F,
- gText_6F,
- gText_7F,
- gText_8F,
- gText_9F,
- gText_10F,
- gText_11F,
- gText_Rooftop
+const u8 *const gDeptStoreFloorNames[] =
+{
+ [DEPT_STORE_FLOORNUM_B4F] = gText_B4F,
+ [DEPT_STORE_FLOORNUM_B3F] = gText_B3F,
+ [DEPT_STORE_FLOORNUM_B2F] = gText_B2F,
+ [DEPT_STORE_FLOORNUM_B1F] = gText_B1F,
+ [DEPT_STORE_FLOORNUM_1F] = gText_1F,
+ [DEPT_STORE_FLOORNUM_2F] = gText_2F,
+ [DEPT_STORE_FLOORNUM_3F] = gText_3F,
+ [DEPT_STORE_FLOORNUM_4F] = gText_4F,
+ [DEPT_STORE_FLOORNUM_5F] = gText_5F,
+ [DEPT_STORE_FLOORNUM_6F] = gText_6F,
+ [DEPT_STORE_FLOORNUM_7F] = gText_7F,
+ [DEPT_STORE_FLOORNUM_8F] = gText_8F,
+ [DEPT_STORE_FLOORNUM_9F] = gText_9F,
+ [DEPT_STORE_FLOORNUM_10F] = gText_10F,
+ [DEPT_STORE_FLOORNUM_11F] = gText_11F,
+ [DEPT_STORE_FLOORNUM_ROOFTOP] = gText_Rooftop
};
static const u16 sElevatorWindowTiles_Ascending[][3] =
@@ -1760,104 +1774,105 @@ static const u16 sElevatorWindowTiles_Descending[][3] =
},
};
-void SetDepartmentStoreFloorVar(void)
+void SetDeptStoreFloor(void)
{
u8 deptStoreFloor;
switch (gSaveBlock1Ptr->dynamicWarp.mapNum)
{
case MAP_NUM(LILYCOVE_CITY_DEPARTMENT_STORE_1F):
- deptStoreFloor = 4;
+ deptStoreFloor = DEPT_STORE_FLOORNUM_1F;
break;
case MAP_NUM(LILYCOVE_CITY_DEPARTMENT_STORE_2F):
- deptStoreFloor = 5;
+ deptStoreFloor = DEPT_STORE_FLOORNUM_2F;
break;
case MAP_NUM(LILYCOVE_CITY_DEPARTMENT_STORE_3F):
- deptStoreFloor = 6;
+ deptStoreFloor = DEPT_STORE_FLOORNUM_3F;
break;
case MAP_NUM(LILYCOVE_CITY_DEPARTMENT_STORE_4F):
- deptStoreFloor = 7;
+ deptStoreFloor = DEPT_STORE_FLOORNUM_4F;
break;
case MAP_NUM(LILYCOVE_CITY_DEPARTMENT_STORE_5F):
- deptStoreFloor = 8;
+ deptStoreFloor = DEPT_STORE_FLOORNUM_5F;
break;
case MAP_NUM(LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP):
- deptStoreFloor = 15;
+ deptStoreFloor = DEPT_STORE_FLOORNUM_ROOFTOP;
break;
default:
- deptStoreFloor = 4;
+ deptStoreFloor = DEPT_STORE_FLOORNUM_1F;
break;
}
VarSet(VAR_DEPT_STORE_FLOOR, deptStoreFloor);
}
-u16 sub_81399F4(void)
+u16 GetDeptStoreDefaultFloorChoice(void)
{
- gUnknown_0203AB60 = 0;
- gUnknown_0203AB62 = 0;
+ sLilycoveDeptStore_NeverRead = 0;
+ sLilycoveDeptStore_DefaultFloorChoice = 0;
if (gSaveBlock1Ptr->dynamicWarp.mapGroup == MAP_GROUP(LILYCOVE_CITY_DEPARTMENT_STORE_1F))
{
switch (gSaveBlock1Ptr->dynamicWarp.mapNum)
{
case MAP_NUM(LILYCOVE_CITY_DEPARTMENT_STORE_5F):
- gUnknown_0203AB60 = 0;
- gUnknown_0203AB62 = 0;
+ sLilycoveDeptStore_NeverRead = 0;
+ sLilycoveDeptStore_DefaultFloorChoice = 0;
break;
case MAP_NUM(LILYCOVE_CITY_DEPARTMENT_STORE_4F):
- gUnknown_0203AB60 = 0;
- gUnknown_0203AB62 = 1;
+ sLilycoveDeptStore_NeverRead = 0;
+ sLilycoveDeptStore_DefaultFloorChoice = 1;
break;
case MAP_NUM(LILYCOVE_CITY_DEPARTMENT_STORE_3F):
- gUnknown_0203AB60 = 0;
- gUnknown_0203AB62 = 2;
+ sLilycoveDeptStore_NeverRead = 0;
+ sLilycoveDeptStore_DefaultFloorChoice = 2;
break;
case MAP_NUM(LILYCOVE_CITY_DEPARTMENT_STORE_2F):
- gUnknown_0203AB60 = 0;
- gUnknown_0203AB62 = 3;
+ sLilycoveDeptStore_NeverRead = 0;
+ sLilycoveDeptStore_DefaultFloorChoice = 3;
break;
case MAP_NUM(LILYCOVE_CITY_DEPARTMENT_STORE_1F):
- gUnknown_0203AB60 = 0;
- gUnknown_0203AB62 = 4;
+ sLilycoveDeptStore_NeverRead = 0;
+ sLilycoveDeptStore_DefaultFloorChoice = 4;
break;
}
}
- return gUnknown_0203AB62;
+ return sLilycoveDeptStore_DefaultFloorChoice;
}
-void ShakeScreenInElevator(void)
+void MoveElevator(void)
{
- static const u8 gUnknown_085B2C18[] = { 0x08, 0x10, 0x18, 0x20, 0x26, 0x2e, 0x34, 0x38, 0x39 };
+ static const u8 sElevatorTripLength[] = { 8, 16, 24, 32, 38, 46, 52, 56, 57 };
- s16 *data = gTasks[CreateTask(sub_8139AF4, 9)].data;
+ s16 *data = gTasks[CreateTask(Task_MoveElevator, 9)].data;
u16 floorDelta;
data[1] = 0;
data[2] = 0;
data[4] = 1;
+ // descending
if (gSpecialVar_0x8005 > gSpecialVar_0x8006)
{
floorDelta = gSpecialVar_0x8005 - gSpecialVar_0x8006;
- data[6] = 1;
+ data[6] = TRUE;
}
else
{
floorDelta = gSpecialVar_0x8006 - gSpecialVar_0x8005;
- data[6] = 0;
+ data[6] = FALSE;
}
if (floorDelta > 8)
floorDelta = 8;
- data[5] = gUnknown_085B2C18[floorDelta];
+ data[5] = sElevatorTripLength[floorDelta];
SetCameraPanningCallback(NULL);
- sub_8139C2C(floorDelta, data[6]);
+ MoveElevatorWindowLights(floorDelta, data[6]);
PlaySE(SE_ELEBETA);
}
-static void sub_8139AF4(u8 taskId)
+static void Task_MoveElevator(u8 taskId)
{
s16 *data = gTasks[taskId].data;
data[1]++;
@@ -1867,6 +1882,8 @@ static void sub_8139AF4(u8 taskId)
data[2]++;
data[4] = -data[4];
SetCameraPanning(0, data[4]);
+
+ // arrived at floor
if (data[2] == data[5])
{
PlaySE(SE_PINPON);
@@ -1877,44 +1894,44 @@ static void sub_8139AF4(u8 taskId)
}
}
-void sub_8139B60(void)
+void ShowDeptStoreElevatorFloorSelect(void)
{
int xPos;
- gUnknown_0203AB5E = AddWindow(&gUnknown_085B2BAC);
- SetStandardWindowBorderStyle(gUnknown_0203AB5E, 0);
+ sTutorMoveAndElevatorWindowId = AddWindow(&gElevatorFloor_WindowTemplate);
+ SetStandardWindowBorderStyle(sTutorMoveAndElevatorWindowId, 0);
xPos = GetStringCenterAlignXOffset(1, gText_ElevatorNowOn, 64);
- AddTextPrinterParameterized(gUnknown_0203AB5E, 1, gText_ElevatorNowOn, xPos, 1, TEXT_SPEED_FF, NULL);
+ AddTextPrinterParameterized(sTutorMoveAndElevatorWindowId, 1, gText_ElevatorNowOn, xPos, 1, TEXT_SPEED_FF, NULL);
- xPos = GetStringCenterAlignXOffset(1, gElevatorFloorsTable[gSpecialVar_0x8005], 64);
- AddTextPrinterParameterized(gUnknown_0203AB5E, 1, gElevatorFloorsTable[gSpecialVar_0x8005], xPos, 17, TEXT_SPEED_FF, NULL);
+ xPos = GetStringCenterAlignXOffset(1, gDeptStoreFloorNames[gSpecialVar_0x8005], 64);
+ AddTextPrinterParameterized(sTutorMoveAndElevatorWindowId, 1, gDeptStoreFloorNames[gSpecialVar_0x8005], xPos, 17, TEXT_SPEED_FF, NULL);
- PutWindowTilemap(gUnknown_0203AB5E);
- CopyWindowToVram(gUnknown_0203AB5E, 3);
+ PutWindowTilemap(sTutorMoveAndElevatorWindowId);
+ CopyWindowToVram(sTutorMoveAndElevatorWindowId, 3);
}
-void sub_8139C10(void)
+void CloseDeptStoreElevatorWindow(void)
{
- ClearStdWindowAndFrameToTransparent(gUnknown_0203AB5E, TRUE);
- RemoveWindow(gUnknown_0203AB5E);
+ ClearStdWindowAndFrameToTransparent(sTutorMoveAndElevatorWindowId, TRUE);
+ RemoveWindow(sTutorMoveAndElevatorWindowId);
}
-static void sub_8139C2C(u16 a1, bool8 descending)
+static void MoveElevatorWindowLights(u16 floorDelta, bool8 descending)
{
- static const u8 gUnknown_085B2C21[] = { 0x03, 0x06, 0x09, 0x0c, 0x0f, 0x12, 0x15, 0x18, 0x1b };
+ static const u8 sElevatorLightCycles[] = { 3, 6, 9, 12, 15, 18, 21, 24, 27 };
- if (FuncIsActiveTask(MoveElevatorWindowLights) != TRUE)
+ if (FuncIsActiveTask(Task_MoveElevatorWindowLights) != TRUE)
{
- u8 taskId = CreateTask(MoveElevatorWindowLights, 8);
+ u8 taskId = CreateTask(Task_MoveElevatorWindowLights, 8);
gTasks[taskId].data[0] = 0;
gTasks[taskId].data[1] = 0;
gTasks[taskId].data[2] = descending;
- gTasks[taskId].data[3] = gUnknown_085B2C21[a1];
+ gTasks[taskId].data[3] = sElevatorLightCycles[floorDelta];
}
}
-static void MoveElevatorWindowLights(u8 taskId)
+static void Task_MoveElevatorWindowLights(u8 taskId)
{
u8 x, y;
s16 *data = gTasks[taskId].data;
@@ -1922,6 +1939,8 @@ static void MoveElevatorWindowLights(u8 taskId)
if (data[1] == 6)
{
data[0]++;
+
+ // ascending
if (data[2] == FALSE)
{
for (y = 0; y < 3; y++)
@@ -1932,6 +1951,7 @@ static void MoveElevatorWindowLights(u8 taskId)
}
}
}
+ // descending
else
{
for (y = 0; y < 3; y++)
@@ -1952,7 +1972,7 @@ static void MoveElevatorWindowLights(u8 taskId)
data[1]++;
}
-void sub_8139D98(void)
+void BufferVarsForIVRater(void)
{
u8 i;
u32 ivStorage[NUM_STATS];
@@ -1993,16 +2013,37 @@ void sub_8139D98(void)
}
}
-bool8 warp0_in_pokecenter(void)
-{
- static const u16 gUnknown_085B2C2A[] = { 0x0202, 0x0301, 0x0405, 0x0504, 0x0604, 0x0700, 0x0804, 0x090b, 0x0a05, 0x0b05, 0x0c02, 0x0d06, 0x0e03, 0x0f02, 0x100c, 0x100a, 0x1a35, 0x193c, 0xFFFF };
+bool8 UsedPokemonCenterWarp(void)
+{
+ static const u16 sPokemonCenters[] =
+ {
+ MAP_OLDALE_TOWN_POKEMON_CENTER_1F,
+ MAP_DEWFORD_TOWN_POKEMON_CENTER_1F,
+ MAP_LAVARIDGE_TOWN_POKEMON_CENTER_1F,
+ MAP_FALLARBOR_TOWN_POKEMON_CENTER_1F,
+ MAP_VERDANTURF_TOWN_POKEMON_CENTER_1F,
+ MAP_PACIFIDLOG_TOWN_POKEMON_CENTER_1F,
+ MAP_PETALBURG_CITY_POKEMON_CENTER_1F,
+ MAP_SLATEPORT_CITY_POKEMON_CENTER_1F,
+ MAP_MAUVILLE_CITY_POKEMON_CENTER_1F,
+ MAP_RUSTBORO_CITY_POKEMON_CENTER_1F,
+ MAP_FORTREE_CITY_POKEMON_CENTER_1F,
+ MAP_LILYCOVE_CITY_POKEMON_CENTER_1F,
+ MAP_MOSSDEEP_CITY_POKEMON_CENTER_1F,
+ MAP_SOOTOPOLIS_CITY_POKEMON_CENTER_1F,
+ MAP_EVER_GRANDE_CITY_POKEMON_CENTER_1F,
+ MAP_EVER_GRANDE_CITY_POKEMON_LEAGUE_1F,
+ MAP_BATTLE_FRONTIER_POKEMON_CENTER_1F,
+ MAP_UNION_ROOM,
+ 0xFFFF
+ };
int i;
u16 map = (gLastUsedWarp.mapGroup << 8) + gLastUsedWarp.mapNum;
- for (i = 0; gUnknown_085B2C2A[i] != 0xFFFF; i++)
+ for (i = 0; sPokemonCenters[i] != 0xFFFF; i++)
{
- if (gUnknown_085B2C2A[i] == map)
+ if (sPokemonCenters[i] == map)
return TRUE;
}
@@ -2018,130 +2059,191 @@ bool32 sub_8139ED0(void)
return TRUE;
}
-void UpdateFrontierManiac(u16 a0)
+void UpdateFrontierManiac(u16 daysSince)
{
u16 *var = GetVarPointer(VAR_FRONTIER_MANIAC_FACILITY);
- *var += a0;
- *var %= 10;
-}
-
-void sub_8139F20(void)
-{
- static const u8 *const gUnknown_085B2C50[][3] = {
- { BattleFrontier_Lounge2_Text_260971, BattleFrontier_Lounge2_Text_260A1E, BattleFrontier_Lounge2_Text_260AE7 },
- { BattleFrontier_Lounge2_Text_2619AC, BattleFrontier_Lounge2_Text_261A91, BattleFrontier_Lounge2_Text_261B0C },
- { BattleFrontier_Lounge2_Text_261B95, BattleFrontier_Lounge2_Text_261B95, BattleFrontier_Lounge2_Text_261B95 },
- { BattleFrontier_Lounge2_Text_261C1A, BattleFrontier_Lounge2_Text_261C1A, BattleFrontier_Lounge2_Text_261C1A },
- { BattleFrontier_Lounge2_Text_260BC4, BattleFrontier_Lounge2_Text_260C6D, BattleFrontier_Lounge2_Text_260D3A },
- { BattleFrontier_Lounge2_Text_260E1E, BattleFrontier_Lounge2_Text_260EC7, BattleFrontier_Lounge2_Text_260F74 },
- { BattleFrontier_Lounge2_Text_2614E6, BattleFrontier_Lounge2_Text_261591, BattleFrontier_Lounge2_Text_26166F },
- { BattleFrontier_Lounge2_Text_261282, BattleFrontier_Lounge2_Text_261329, BattleFrontier_Lounge2_Text_261403 },
- { BattleFrontier_Lounge2_Text_261026, BattleFrontier_Lounge2_Text_2610CC, BattleFrontier_Lounge2_Text_261194 },
- { BattleFrontier_Lounge2_Text_26174D, BattleFrontier_Lounge2_Text_2617F9, BattleFrontier_Lounge2_Text_2618C4 },
+ *var += daysSince;
+ *var %= FRONTIER_MANIAC_FACILITY_COUNT;
+}
+
+void ShowFrontierManiacMessage(void)
+{
+ static const u8 *const sFrontierManiacMessages[][FRONTIER_MANIAC_MESSAGE_COUNT] =
+ {
+ [FRONTIER_MANIAC_BATTLE_TOWER_SINGLES] =
+ {
+ BattleFrontier_Lounge2_Text_260971,
+ BattleFrontier_Lounge2_Text_260A1E,
+ BattleFrontier_Lounge2_Text_260AE7
+ },
+ [FRONTIER_MANIAC_BATTLE_TOWER_DOUBLES] =
+ {
+ BattleFrontier_Lounge2_Text_2619AC,
+ BattleFrontier_Lounge2_Text_261A91,
+ BattleFrontier_Lounge2_Text_261B0C
+ },
+ [FRONTIER_MANIAC_BATTLE_TOWER_MULTIS] =
+ {
+ BattleFrontier_Lounge2_Text_261B95,
+ BattleFrontier_Lounge2_Text_261B95,
+ BattleFrontier_Lounge2_Text_261B95
+ },
+ [FRONTIER_MANIAC_BATTLE_TOWER_LINK_MULTIS] =
+ {
+ BattleFrontier_Lounge2_Text_261C1A,
+ BattleFrontier_Lounge2_Text_261C1A,
+ BattleFrontier_Lounge2_Text_261C1A
+ },
+ [FRONTIER_MANIAC_BATTLE_DOME] =
+ {
+ BattleFrontier_Lounge2_Text_260BC4,
+ BattleFrontier_Lounge2_Text_260C6D,
+ BattleFrontier_Lounge2_Text_260D3A
+ },
+ [FRONTIER_MANIAC_BATTLE_FACTORY] =
+ {
+ BattleFrontier_Lounge2_Text_260E1E,
+ BattleFrontier_Lounge2_Text_260EC7,
+ BattleFrontier_Lounge2_Text_260F74
+ },
+ [FRONTIER_MANIAC_BATTLE_PALACE] =
+ {
+ BattleFrontier_Lounge2_Text_2614E6,
+ BattleFrontier_Lounge2_Text_261591,
+ BattleFrontier_Lounge2_Text_26166F
+ },
+ [FRONTIER_MANIAC_BATTLE_ARENA] =
+ {
+ BattleFrontier_Lounge2_Text_261282,
+ BattleFrontier_Lounge2_Text_261329,
+ BattleFrontier_Lounge2_Text_261403
+ },
+ [FRONTIER_MANIAC_BATTLE_PIKE] =
+ {
+ BattleFrontier_Lounge2_Text_261026,
+ BattleFrontier_Lounge2_Text_2610CC,
+ BattleFrontier_Lounge2_Text_261194
+ },
+ [FRONTIER_MANIAC_BATTLE_PYRAMID] =
+ {
+ BattleFrontier_Lounge2_Text_26174D,
+ BattleFrontier_Lounge2_Text_2617F9,
+ BattleFrontier_Lounge2_Text_2618C4
+ },
};
- static const u8 gUnknown_085B2CC8[][2] = {
- { 0x15, 0x38 },
- { 0x15, 0x23 },
- { 0xff, 0xff },
- { 0xff, 0xff },
- { 0x02, 0x04 },
- { 0x07, 0x15 },
- { 0x07, 0x15 },
- { 0x0e, 0x1c },
- { 0x0d, 0x70 },
- { 0x07, 0x38 }
+ static const u8 sFrontierManiacStreakThresholds[][FRONTIER_MANIAC_MESSAGE_COUNT - 1] =
+ {
+ [FRONTIER_MANIAC_BATTLE_TOWER_SINGLES] = { 21, 56 },
+ [FRONTIER_MANIAC_BATTLE_TOWER_DOUBLES] = { 21, 35 },
+ [FRONTIER_MANIAC_BATTLE_TOWER_MULTIS] = { 255, 255 },
+ [FRONTIER_MANIAC_BATTLE_TOWER_LINK_MULTIS] = { 255, 255 },
+ [FRONTIER_MANIAC_BATTLE_DOME] = { 2, 4 },
+ [FRONTIER_MANIAC_BATTLE_FACTORY] = { 7, 21 },
+ [FRONTIER_MANIAC_BATTLE_PALACE] = { 7, 21 },
+ [FRONTIER_MANIAC_BATTLE_ARENA] = { 14, 28 },
+ [FRONTIER_MANIAC_BATTLE_PIKE] = { 13, 112 }, //BUG: 112 (0x70) is probably a mistake; the Pike Queen is battled twice well before that
+ [FRONTIER_MANIAC_BATTLE_PYRAMID] = { 7, 56 }
};
u8 i;
- u16 unk = 0;
- u16 var = VarGet(VAR_FRONTIER_MANIAC_FACILITY);
- switch (var)
+ u16 winStreak = 0;
+ u16 facility = VarGet(VAR_FRONTIER_MANIAC_FACILITY);
+
+ switch (facility)
{
- case 0:
- case 1:
- case 2:
- case 3:
- if (gSaveBlock2Ptr->frontier.towerWinStreaks[var][0] >= gSaveBlock2Ptr->frontier.towerWinStreaks[var][1])
+ case FRONTIER_MANIAC_BATTLE_TOWER_SINGLES:
+ case FRONTIER_MANIAC_BATTLE_TOWER_DOUBLES:
+ case FRONTIER_MANIAC_BATTLE_TOWER_MULTIS:
+ case FRONTIER_MANIAC_BATTLE_TOWER_LINK_MULTIS:
+ if (gSaveBlock2Ptr->frontier.towerWinStreaks[facility][FRONTIER_LVL_50]
+ >= gSaveBlock2Ptr->frontier.towerWinStreaks[facility][FRONTIER_LVL_OPEN])
{
- unk = gSaveBlock2Ptr->frontier.towerWinStreaks[var][0];
+ winStreak = gSaveBlock2Ptr->frontier.towerWinStreaks[facility][FRONTIER_LVL_50];
}
else
{
- unk = gSaveBlock2Ptr->frontier.towerWinStreaks[var][1];
+ winStreak = gSaveBlock2Ptr->frontier.towerWinStreaks[facility][FRONTIER_LVL_OPEN];
}
break;
- case 4:
- if (gSaveBlock2Ptr->frontier.domeWinStreaks[0][0] >= gSaveBlock2Ptr->frontier.domeWinStreaks[0][1])
+ case FRONTIER_MANIAC_BATTLE_DOME:
+ if (gSaveBlock2Ptr->frontier.domeWinStreaks[FRONTIER_MODE_SINGLES][FRONTIER_LVL_50]
+ >= gSaveBlock2Ptr->frontier.domeWinStreaks[FRONTIER_MODE_SINGLES][FRONTIER_LVL_OPEN])
{
- unk = gSaveBlock2Ptr->frontier.domeWinStreaks[0][0];
+ winStreak = gSaveBlock2Ptr->frontier.domeWinStreaks[FRONTIER_MODE_SINGLES][FRONTIER_LVL_50];
}
else
{
- unk = gSaveBlock2Ptr->frontier.domeWinStreaks[0][1];
+ winStreak = gSaveBlock2Ptr->frontier.domeWinStreaks[FRONTIER_MODE_SINGLES][FRONTIER_LVL_OPEN];
}
break;
- case 5:
- if (gSaveBlock2Ptr->frontier.factoryWinStreaks[0][0] >= gSaveBlock2Ptr->frontier.factoryWinStreaks[0][1])
+ case FRONTIER_MANIAC_BATTLE_FACTORY:
+ if (gSaveBlock2Ptr->frontier.factoryWinStreaks[FRONTIER_MODE_SINGLES][FRONTIER_LVL_50]
+ >= gSaveBlock2Ptr->frontier.factoryWinStreaks[FRONTIER_MODE_SINGLES][FRONTIER_LVL_OPEN])
{
- unk = gSaveBlock2Ptr->frontier.factoryWinStreaks[0][0];
+ winStreak = gSaveBlock2Ptr->frontier.factoryWinStreaks[FRONTIER_MODE_SINGLES][FRONTIER_LVL_50];
}
else
{
- unk = gSaveBlock2Ptr->frontier.factoryWinStreaks[0][1];
+ winStreak = gSaveBlock2Ptr->frontier.factoryWinStreaks[FRONTIER_MODE_SINGLES][FRONTIER_LVL_OPEN];
}
break;
- case 6:
- if (gSaveBlock2Ptr->frontier.palaceWinStreaks[0][0] >= gSaveBlock2Ptr->frontier.palaceWinStreaks[0][1])
+ case FRONTIER_MANIAC_BATTLE_PALACE:
+ if (gSaveBlock2Ptr->frontier.palaceWinStreaks[FRONTIER_MODE_SINGLES][FRONTIER_LVL_50]
+ >= gSaveBlock2Ptr->frontier.palaceWinStreaks[FRONTIER_MODE_SINGLES][FRONTIER_LVL_OPEN])
{
- unk = gSaveBlock2Ptr->frontier.palaceWinStreaks[0][0];
+ winStreak = gSaveBlock2Ptr->frontier.palaceWinStreaks[FRONTIER_MODE_SINGLES][FRONTIER_LVL_50];
}
else
{
- unk = gSaveBlock2Ptr->frontier.palaceWinStreaks[0][1];
+ winStreak = gSaveBlock2Ptr->frontier.palaceWinStreaks[FRONTIER_MODE_SINGLES][FRONTIER_LVL_OPEN];
}
break;
- case 7:
- if (gSaveBlock2Ptr->frontier.arenaWinStreaks[0] >= gSaveBlock2Ptr->frontier.arenaWinStreaks[1])
+ case FRONTIER_MANIAC_BATTLE_ARENA:
+ if (gSaveBlock2Ptr->frontier.arenaWinStreaks[FRONTIER_LVL_50]
+ >= gSaveBlock2Ptr->frontier.arenaWinStreaks[FRONTIER_LVL_OPEN])
{
- unk = gSaveBlock2Ptr->frontier.arenaWinStreaks[0];
+ winStreak = gSaveBlock2Ptr->frontier.arenaWinStreaks[FRONTIER_LVL_50];
}
else
{
- unk = gSaveBlock2Ptr->frontier.arenaWinStreaks[1];
+ winStreak = gSaveBlock2Ptr->frontier.arenaWinStreaks[FRONTIER_LVL_OPEN];
}
break;
- case 8:
- if (gSaveBlock2Ptr->frontier.pikeWinStreaks[0] >= gSaveBlock2Ptr->frontier.pikeWinStreaks[1])
+ case FRONTIER_MANIAC_BATTLE_PIKE:
+ if (gSaveBlock2Ptr->frontier.pikeWinStreaks[FRONTIER_LVL_50]
+ >= gSaveBlock2Ptr->frontier.pikeWinStreaks[FRONTIER_LVL_OPEN])
{
- unk = gSaveBlock2Ptr->frontier.pikeWinStreaks[0];
+ winStreak = gSaveBlock2Ptr->frontier.pikeWinStreaks[FRONTIER_LVL_50];
}
else
{
- unk = gSaveBlock2Ptr->frontier.pikeWinStreaks[1];
+ winStreak = gSaveBlock2Ptr->frontier.pikeWinStreaks[FRONTIER_LVL_OPEN];
}
break;
- case 9:
- if (gSaveBlock2Ptr->frontier.pyramidWinStreaks[0] >= gSaveBlock2Ptr->frontier.pyramidWinStreaks[1])
+ case FRONTIER_MANIAC_BATTLE_PYRAMID:
+ if (gSaveBlock2Ptr->frontier.pyramidWinStreaks[FRONTIER_LVL_50]
+ >= gSaveBlock2Ptr->frontier.pyramidWinStreaks[FRONTIER_LVL_OPEN])
{
- unk = gSaveBlock2Ptr->frontier.pyramidWinStreaks[0];
+ winStreak = gSaveBlock2Ptr->frontier.pyramidWinStreaks[FRONTIER_LVL_50];
}
else
{
- unk = gSaveBlock2Ptr->frontier.pyramidWinStreaks[1];
+ winStreak = gSaveBlock2Ptr->frontier.pyramidWinStreaks[FRONTIER_LVL_OPEN];
}
break;
}
- for (i = 0; i < 2 && gUnknown_085B2CC8[var][i] < unk; i++);
+ for (i = 0; i < FRONTIER_MANIAC_MESSAGE_COUNT - 1 && sFrontierManiacStreakThresholds[facility][i] < winStreak; i++);
- ShowFieldMessage(gUnknown_085B2C50[var][i]);
+ ShowFieldMessage(sFrontierManiacMessages[facility][i]);
}
-void sub_813A080(void)
+// gSpecialVar_0x8005 and 0x8006 here are used by MoveElevator
+void BufferBattleTowerElevatorFloors(void)
{
- static const u16 gUnknown_085B2CDC[] = {
- 0x0007, 0x000e, 0x0015, 0x001c, 0x0023, 0x0031, 0x003f, 0x004d, 0x005b, 0x0000
+ static const u16 sBattleTowerStreakThresholds[] = {
+ 7, 14, 21, 28, 35, 49, 63, 77, 91, 0
};
u8 i;
@@ -2155,9 +2257,9 @@ void sub_813A080(void)
return;
}
- for (i = 0; i < 9; i++)
+ for (i = 0; i < ARRAY_COUNT(sBattleTowerStreakThresholds) - 1; i++)
{
- if (gUnknown_085B2CDC[i] > gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode])
+ if (sBattleTowerStreakThresholds[i] > gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode])
{
gSpecialVar_0x8005 = 4;
gSpecialVar_0x8006 = i + 5;
@@ -2169,161 +2271,166 @@ void sub_813A080(void)
gSpecialVar_0x8006 = 12;
}
-void sub_813A128(void)
-{
- u8 taskId = CreateTask(sub_813A2DC, 8);
+// Scrollable Multichoice task data defines
+#define tMaxItemsOnScreen data[0]
+#define tNumItems data[1]
+#define tLeft data[2]
+#define tTop data[3]
+#define tWidth data[4]
+#define tHeight data[5]
+#define tKeepOpenAfterSelect data[6]
+#define tScrollOffset data[7]
+#define tSelectedRow data[8]
+#define tScrollMultiId data[11]
+#define tScrollArrowId data[12]
+#define tWindowId data[13]
+#define tListTaskId data[14]
+#define tTaskId data[15]
+// data[9] and [10] unused
+
+void ShowScrollableMultichoice(void)
+{
+ u8 taskId = CreateTask(Task_ShowScrollableMultichoice, 8);
struct Task *task = &gTasks[taskId];
- task->data[11] = gSpecialVar_0x8004;
+ task->tScrollMultiId = gSpecialVar_0x8004;
switch (gSpecialVar_0x8004)
{
- case 0:
- task->data[0] = 1;
- task->data[1] = 1;
- task->data[2] = 1;
- task->data[3] = 1;
- task->data[4] = 1;
- task->data[5] = 1;
- task->data[6] = 0;
- task->data[15] = taskId;
+ case SCROLL_MULTI_NONE:
+ task->tMaxItemsOnScreen = 1;
+ task->tNumItems = 1;
+ task->tLeft = 1;
+ task->tTop = 1;
+ task->tWidth = 1;
+ task->tHeight = 1;
+ task->tKeepOpenAfterSelect = FALSE;
+ task->tTaskId = taskId;
break;
- case 1:
- task->data[0] = 5;
- task->data[1] = 8;
- task->data[2] = 1;
- task->data[3] = 1;
- task->data[4] = 9;
- task->data[5] = 10;
- task->data[6] = 0;
- task->data[15] = taskId;
+ case SCROLL_MULTI_GLASS_WORKSHOP_VENDOR:
+ task->tMaxItemsOnScreen = MAX_SCROLL_MULTI_ON_SCREEN - 1;
+ task->tNumItems = 8;
+ task->tLeft = 1;
+ task->tTop = 1;
+ task->tWidth = 9;
+ task->tHeight = 10;
+ task->tKeepOpenAfterSelect = FALSE;
+ task->tTaskId = taskId;
break;
- case 2:
- task->data[0] = 6;
- task->data[1] = 12;
- task->data[2] = 1;
- task->data[3] = 1;
- task->data[4] = 7;
- task->data[5] = 12;
- task->data[6] = 0;
- task->data[15] = taskId;
+ case SCROLL_MULTI_POKEMON_FAN_CLUB_RATER:
+ task->tMaxItemsOnScreen = MAX_SCROLL_MULTI_ON_SCREEN;
+ task->tNumItems = 12;
+ task->tLeft = 1;
+ task->tTop = 1;
+ task->tWidth = 7;
+ task->tHeight = 12;
+ task->tKeepOpenAfterSelect = FALSE;
+ task->tTaskId = taskId;
break;
- case 3:
- task->data[0] = 6;
- task->data[1] = 11;
- task->data[2] = 14;
- task->data[3] = 1;
- task->data[4] = 15;
- task->data[5] = 12;
- task->data[6] = 0;
- task->data[15] = taskId;
+ case SCROLL_MULTI_BF_EXCHANGE_CORNER_DECOR_VENDOR_1:
+ task->tMaxItemsOnScreen = MAX_SCROLL_MULTI_ON_SCREEN;
+ task->tNumItems = 11;
+ task->tLeft = 14;
+ task->tTop = 1;
+ task->tWidth = 15;
+ task->tHeight = 12;
+ task->tKeepOpenAfterSelect = FALSE;
+ task->tTaskId = taskId;
break;
- case 4:
- task->data[0] = 6;
- task->data[1] = 6;
- task->data[2] = 14;
- task->data[3] = 1;
- task->data[4] = 15;
- task->data[5] = 12;
- task->data[6] = 0;
- task->data[15] = taskId;
+ case SCROLL_MULTI_BF_EXCHANGE_CORNER_DECOR_VENDOR_2:
+ task->tMaxItemsOnScreen = MAX_SCROLL_MULTI_ON_SCREEN;
+ task->tNumItems = 6;
+ task->tLeft = 14;
+ task->tTop = 1;
+ task->tWidth = 15;
+ task->tHeight = 12;
+ task->tKeepOpenAfterSelect = FALSE;
+ task->tTaskId = taskId;
break;
- case 5:
- task->data[0] = 6;
- task->data[1] = 7;
- task->data[2] = 14;
- task->data[3] = 1;
- task->data[4] = 15;
- task->data[5] = 12;
- task->data[6] = 0;
- task->data[15] = taskId;
+ case SCROLL_MULTI_BF_EXCHANGE_CORNER_VITAMIN_VENDOR:
+ task->tMaxItemsOnScreen = MAX_SCROLL_MULTI_ON_SCREEN;
+ task->tNumItems = 7;
+ task->tLeft = 14;
+ task->tTop = 1;
+ task->tWidth = 15;
+ task->tHeight = 12;
+ task->tKeepOpenAfterSelect = FALSE;
+ task->tTaskId = taskId;
break;
- case 6:
- task->data[0] = 6;
- task->data[1] = 10;
- task->data[2] = 14;
- task->data[3] = 1;
- task->data[4] = 15;
- task->data[5] = 12;
- task->data[6] = 0;
- task->data[15] = taskId;
+ case SCROLL_MULTI_BF_EXCHANGE_CORNER_HOLD_ITEM_VENDOR:
+ task->tMaxItemsOnScreen = MAX_SCROLL_MULTI_ON_SCREEN;
+ task->tNumItems = 10;
+ task->tLeft = 14;
+ task->tTop = 1;
+ task->tWidth = 15;
+ task->tHeight = 12;
+ task->tKeepOpenAfterSelect = FALSE;
+ task->tTaskId = taskId;
break;
- case 7:
- task->data[0] = 6;
- task->data[1] = 12;
- task->data[2] = 15;
- task->data[3] = 1;
- task->data[4] = 14;
- task->data[5] = 12;
- task->data[6] = 0;
- task->data[15] = taskId;
+ case SCROLL_MULTI_BERRY_POWDER_VENDOR:
+ task->tMaxItemsOnScreen = MAX_SCROLL_MULTI_ON_SCREEN;
+ task->tNumItems = 12;
+ task->tLeft = 15;
+ task->tTop = 1;
+ task->tWidth = 14;
+ task->tHeight = 12;
+ task->tKeepOpenAfterSelect = FALSE;
+ task->tTaskId = taskId;
break;
- case 8:
- task->data[0] = 6;
- task->data[1] = 10;
- task->data[2] = 17;
- task->data[3] = 1;
- task->data[4] = 11;
- task->data[5] = 12;
- task->data[6] = 0;
- task->data[15] = taskId;
+ case SCROLL_MULTI_BF_RECEPTIONIST:
+ task->tMaxItemsOnScreen = MAX_SCROLL_MULTI_ON_SCREEN;
+ task->tNumItems = 10;
+ task->tLeft = 17;
+ task->tTop = 1;
+ task->tWidth = 11;
+ task->tHeight = 12;
+ task->tKeepOpenAfterSelect = FALSE;
+ task->tTaskId = taskId;
break;
- case 9:
- case 10:
- task->data[0] = 6;
- task->data[1] = 11;
- task->data[2] = 15;
- task->data[3] = 1;
- task->data[4] = 14;
- task->data[5] = 12;
- task->data[6] = 0;
- task->data[15] = taskId;
+ case SCROLL_MULTI_BF_MOVE_TUTOR_1:
+ case SCROLL_MULTI_BF_MOVE_TUTOR_2:
+ task->tMaxItemsOnScreen = MAX_SCROLL_MULTI_ON_SCREEN;
+ task->tNumItems = 11;
+ task->tLeft = 15;
+ task->tTop = 1;
+ task->tWidth = 14;
+ task->tHeight = 12;
+ task->tKeepOpenAfterSelect = FALSE;
+ task->tTaskId = taskId;
break;
- case 11:
- task->data[0] = 6;
- task->data[1] = 7;
- task->data[2] = 19;
- task->data[3] = 1;
- task->data[4] = 10;
- task->data[5] = 12;
- task->data[6] = 0;
- task->data[15] = taskId;
+ case SCROLL_MULTI_SS_TIDAL_DESTINATION:
+ task->tMaxItemsOnScreen = MAX_SCROLL_MULTI_ON_SCREEN;
+ task->tNumItems = 7;
+ task->tLeft = 19;
+ task->tTop = 1;
+ task->tWidth = 10;
+ task->tHeight = 12;
+ task->tKeepOpenAfterSelect = FALSE;
+ task->tTaskId = taskId;
break;
- case 12:
- task->data[0] = 6;
- task->data[1] = 7;
- task->data[2] = 17;
- task->data[3] = 1;
- task->data[4] = 12;
- task->data[5] = 12;
- task->data[6] = 0;
- task->data[15] = taskId;
+ case SCROLL_MULTI_BATTLE_TENT_RULES:
+ task->tMaxItemsOnScreen = MAX_SCROLL_MULTI_ON_SCREEN;
+ task->tNumItems = 7;
+ task->tLeft = 17;
+ task->tTop = 1;
+ task->tWidth = 12;
+ task->tHeight = 12;
+ task->tKeepOpenAfterSelect = FALSE;
+ task->tTaskId = taskId;
break;
default:
- gSpecialVar_Result = 0x7F;
+ gSpecialVar_Result = MULTI_B_PRESSED;
DestroyTask(taskId);
break;
}
}
-static const u8 *const gUnknown_085B2CF0[][16] = {
+static const u8 *const sScrollableMultichoiceOptions[][MAX_SCROLL_MULTI_LENGTH] =
+{
+ [SCROLL_MULTI_NONE] =
{
- gText_Exit,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL
+ gText_Exit
},
+ [SCROLL_MULTI_GLASS_WORKSHOP_VENDOR] =
{
gText_BlueFlute,
gText_YellowFlute,
@@ -2332,16 +2439,9 @@ static const u8 *const gUnknown_085B2CF0[][16] = {
gText_BlackFlute,
gText_PrettyChair,
gText_PrettyDesk,
- gText_Exit,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL
+ gText_Exit
},
+ [SCROLL_MULTI_POKEMON_FAN_CLUB_RATER] =
{
gText_0Pts,
gText_10Pts,
@@ -2354,12 +2454,9 @@ static const u8 *const gUnknown_085B2CF0[][16] = {
gText_80Pts,
gText_90Pts,
gText_100Pts,
- gText_QuestionMark,
- NULL,
- NULL,
- NULL,
- NULL
+ gText_QuestionMark
},
+ [SCROLL_MULTI_BF_EXCHANGE_CORNER_DECOR_VENDOR_1] =
{
gText_KissPoster16BP,
gText_KissCushion32BP,
@@ -2371,31 +2468,18 @@ static const u8 *const gUnknown_085B2CF0[][16] = {
gText_CyndaquilDoll80BP,
gText_ChikoritaDoll80BP,
gText_TotodileDoll80BP,
- gText_Exit,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL
+ gText_Exit
},
+ [SCROLL_MULTI_BF_EXCHANGE_CORNER_DECOR_VENDOR_2] =
{
gText_LaprasDoll128BP,
gText_SnorlaxDoll128BP,
gText_VenusaurDoll256BP,
gText_CharizardDoll256BP,
gText_BlastoiseDoll256BP,
- gText_Exit,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL
+ gText_Exit
},
+ [SCROLL_MULTI_BF_EXCHANGE_CORNER_VITAMIN_VENDOR] =
{
gText_Protein1BP,
gText_Calcium1BP,
@@ -2403,17 +2487,9 @@ static const u8 *const gUnknown_085B2CF0[][16] = {
gText_Zinc1BP,
gText_Carbos1BP,
gText_HpUp1BP,
- gText_Exit,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL
+ gText_Exit
},
+ [SCROLL_MULTI_BF_EXCHANGE_CORNER_HOLD_ITEM_VENDOR] =
{
gText_Leftovers48BP,
gText_WhiteHerb48BP,
@@ -2424,14 +2500,9 @@ static const u8 *const gUnknown_085B2CF0[][16] = {
gText_KingsRock64BP,
gText_FocusBand64BP,
gText_ScopeLens64BP,
- gText_Exit,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL
+ gText_Exit
},
+ [SCROLL_MULTI_BERRY_POWDER_VENDOR] =
{
gText_EnergyPowder50,
gText_EnergyRoot80,
@@ -2444,12 +2515,9 @@ static const u8 *const gUnknown_085B2CF0[][16] = {
gText_Zinc1000,
gText_HPUp1000,
gText_PPUp3000,
- gText_Exit,
- NULL,
- NULL,
- NULL,
- NULL
+ gText_Exit
},
+ [SCROLL_MULTI_BF_RECEPTIONIST] =
{
gText_BattleTower2,
gText_BattleDome,
@@ -2460,14 +2528,9 @@ static const u8 *const gUnknown_085B2CF0[][16] = {
gText_BattlePyramid,
gText_RankingHall,
gText_ExchangeService,
- gText_Exit,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL
+ gText_Exit
},
+ [SCROLL_MULTI_BF_MOVE_TUTOR_1] =
{
gText_Softboiled16BP,
gText_SeismicToss24BP,
@@ -2479,13 +2542,9 @@ static const u8 *const gUnknown_085B2CF0[][16] = {
gText_Counter48BP,
gText_ThunderWave48BP,
gText_SwordsDance48BP,
- gText_Exit,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL
+ gText_Exit
},
+ [SCROLL_MULTI_BF_MOVE_TUTOR_2] =
{
gText_DefenseCurl16BP,
gText_Snore24BP,
@@ -2497,13 +2556,9 @@ static const u8 *const gUnknown_085B2CF0[][16] = {
gText_IcePunch48BP,
gText_ThunderPunch48BP,
gText_FirePunch48BP,
- gText_Exit,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL
+ gText_Exit
},
+ [SCROLL_MULTI_SS_TIDAL_DESTINATION] =
{
gText_SlateportCity,
gText_BattleFrontier,
@@ -2511,17 +2566,9 @@ static const u8 *const gUnknown_085B2CF0[][16] = {
gText_NavelRock,
gText_BirthIsland,
gText_FarawayIsland,
- gText_Exit,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL
+ gText_Exit
},
+ [SCROLL_MULTI_BATTLE_TENT_RULES] =
{
gText_BattleTrainers,
gText_BattleBasics,
@@ -2529,142 +2576,134 @@ static const u8 *const gUnknown_085B2CF0[][16] = {
gText_PokemonMoves,
gText_Underpowered,
gText_WhenInDanger,
- gText_Exit,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL
+ gText_Exit
}
};
-static void sub_813A2DC(u8 taskId)
+static void Task_ShowScrollableMultichoice(u8 taskId)
{
- u32 unk1;
+ u32 width;
u8 i, windowId;
struct WindowTemplate template;
struct Task *task = &gTasks[taskId];
ScriptContext2_Enable();
- gUnknown_0203AB68 = 0;
- gUnknown_0203AB6C = 0x40;
- sub_813AA60(task->data[11], 0);
- sub_813ACE8(task->data[11], 0);
- gUnknown_0203AB64 = AllocZeroed(task->data[1] * 8);
- gUnknown_0203AB6A = 0;
- sub_813A42C();
+ sScrollableMultichoice_ScrollOffset = 0;
+ sScrollableMultichoice_ItemSpriteId = MAX_SPRITES;
+ FillFrontierExchangeCornerWindowAndItemIcon(task->tScrollMultiId, 0);
+ ShowBattleFrontierTutorWindow(task->tScrollMultiId, 0);
+ sScrollableMultichoice_ListMenuItem = AllocZeroed(task->tNumItems * 8);
+ sFrontierExchangeCorner_NeverRead = 0;
+ InitScrollableMultichoice();
- for (unk1 = 0, i = 0; i < task->data[1]; i++)
+ for (width = 0, i = 0; i < task->tNumItems; i++)
{
- const u8 *text = gUnknown_085B2CF0[gSpecialVar_0x8004][i];
- gUnknown_0203AB64[i].name = text;
- gUnknown_0203AB64[i].id = i;
- unk1 = display_text_and_get_width(text, unk1);
+ const u8 *text = sScrollableMultichoiceOptions[gSpecialVar_0x8004][i];
+ sScrollableMultichoice_ListMenuItem[i].name = text;
+ sScrollableMultichoice_ListMenuItem[i].id = i;
+ width = DisplayTextAndGetWidth(text, width);
}
- task->data[4] = convert_pixel_width_to_tile_width(unk1);
+ task->tWidth = ConvertPixelWidthToTileWidth(width);
- if (task->data[2] + task->data[4] > 0x1D)
+ if (task->tLeft + task->tWidth > MAX_MULTICHOICE_WIDTH + 1)
{
- int unk2 = 0x1D - task->data[4];
- if (unk2 < 0)
+ int adjustedLeft = MAX_MULTICHOICE_WIDTH + 1 - task->tWidth;
+ if (adjustedLeft < 0)
{
- task->data[2] = 0;
+ task->tLeft = 0;
}
else
{
- task->data[2] = unk2;
+ task->tLeft = adjustedLeft;
}
}
- template = CreateWindowTemplate(0, task->data[2], task->data[3], task->data[4], task->data[5], 0xF, 0x64);
+ template = CreateWindowTemplate(0, task->tLeft, task->tTop, task->tWidth, task->tHeight, 0xF, 0x64);
windowId = AddWindow(&template);
- task->data[13] = windowId;
+ task->tWindowId = windowId;
SetStandardWindowBorderStyle(windowId, 0);
- gUnknown_030061D0.totalItems = task->data[1];
- gUnknown_030061D0.maxShowed = task->data[0];
- gUnknown_030061D0.windowId = task->data[13];
+ gScrollableMultichoice_ListMenuTemplate.totalItems = task->tNumItems;
+ gScrollableMultichoice_ListMenuTemplate.maxShowed = task->tMaxItemsOnScreen;
+ gScrollableMultichoice_ListMenuTemplate.windowId = task->tWindowId;
- sub_813A694(taskId);
- task->data[14] = ListMenuInit(&gUnknown_030061D0, task->data[7], task->data[8]);
+ ScrollableMultichoice_UpdateScrollArrows(taskId);
+ task->tListTaskId = ListMenuInit(&gScrollableMultichoice_ListMenuTemplate, task->tScrollOffset, task->tSelectedRow);
schedule_bg_copy_tilemap_to_vram(0);
- gTasks[taskId].func = sub_813A4EC;
+ gTasks[taskId].func = ScrollableMultichoice_ProcessInput;
}
-static void sub_813A42C(void)
+static void InitScrollableMultichoice(void)
{
- gUnknown_030061D0.items = gUnknown_0203AB64;
- gUnknown_030061D0.moveCursorFunc = sub_813A46C;
- gUnknown_030061D0.itemPrintFunc = NULL;
- gUnknown_030061D0.totalItems = 1;
- gUnknown_030061D0.maxShowed = 1;
- gUnknown_030061D0.windowId = 0;
- gUnknown_030061D0.header_X = 0;
- gUnknown_030061D0.item_X = 8;
- gUnknown_030061D0.cursor_X = 0;
- gUnknown_030061D0.upText_Y = 1;
- gUnknown_030061D0.cursorPal = 2;
- gUnknown_030061D0.fillValue = 1;
- gUnknown_030061D0.cursorShadowPal = 3;
- gUnknown_030061D0.lettersSpacing = 0;
- gUnknown_030061D0.itemVerticalPadding = 0;
- gUnknown_030061D0.scrollMultiple = 0;
- gUnknown_030061D0.fontId = 1;
- gUnknown_030061D0.cursorKind = 0;
+ gScrollableMultichoice_ListMenuTemplate.items = sScrollableMultichoice_ListMenuItem;
+ gScrollableMultichoice_ListMenuTemplate.moveCursorFunc = ScrollableMultichoice_MoveCursor;
+ gScrollableMultichoice_ListMenuTemplate.itemPrintFunc = NULL;
+ gScrollableMultichoice_ListMenuTemplate.totalItems = 1;
+ gScrollableMultichoice_ListMenuTemplate.maxShowed = 1;
+ gScrollableMultichoice_ListMenuTemplate.windowId = 0;
+ gScrollableMultichoice_ListMenuTemplate.header_X = 0;
+ gScrollableMultichoice_ListMenuTemplate.item_X = 8;
+ gScrollableMultichoice_ListMenuTemplate.cursor_X = 0;
+ gScrollableMultichoice_ListMenuTemplate.upText_Y = 1;
+ gScrollableMultichoice_ListMenuTemplate.cursorPal = 2;
+ gScrollableMultichoice_ListMenuTemplate.fillValue = 1;
+ gScrollableMultichoice_ListMenuTemplate.cursorShadowPal = 3;
+ gScrollableMultichoice_ListMenuTemplate.lettersSpacing = 0;
+ gScrollableMultichoice_ListMenuTemplate.itemVerticalPadding = 0;
+ gScrollableMultichoice_ListMenuTemplate.scrollMultiple = 0;
+ gScrollableMultichoice_ListMenuTemplate.fontId = 1;
+ gScrollableMultichoice_ListMenuTemplate.cursorKind = 0;
}
-static void sub_813A46C(s32 itemIndex, bool8 onInit, struct ListMenu *list)
+static void ScrollableMultichoice_MoveCursor(s32 itemIndex, bool8 onInit, struct ListMenu *list)
{
u8 taskId;
PlaySE(SE_SELECT);
- taskId = FindTaskIdByFunc(sub_813A4EC);
+ taskId = FindTaskIdByFunc(ScrollableMultichoice_ProcessInput);
if (taskId != 0xFF)
{
- u16 misc;
+ u16 selection;
struct Task *task = &gTasks[taskId];
- ListMenuGetScrollAndRow(task->data[14], &misc, NULL);
- gUnknown_0203AB68 = misc;
- ListMenuGetCurrentItemArrayId(task->data[14], &misc);
- sub_813AC44(task->data[11], gUnknown_0203AB6A);
- sub_813AA60(task->data[11], misc);
- sub_813AD34(task->data[11], misc);
- gUnknown_0203AB6A = misc;
+ ListMenuGetScrollAndRow(task->tListTaskId, &selection, NULL);
+ sScrollableMultichoice_ScrollOffset = selection;
+ ListMenuGetCurrentItemArrayId(task->tListTaskId, &selection);
+ HideFrontierExchangeCornerItemIcon(task->tScrollMultiId, sFrontierExchangeCorner_NeverRead);
+ FillFrontierExchangeCornerWindowAndItemIcon(task->tScrollMultiId, selection);
+ ShowBattleFrontierTutorMoveDescription(task->tScrollMultiId, selection);
+ sFrontierExchangeCorner_NeverRead = selection;
}
}
-static void sub_813A4EC(u8 taskId)
+static void ScrollableMultichoice_ProcessInput(u8 taskId)
{
struct Task *task = &gTasks[taskId];
- s32 input = ListMenu_ProcessInput(task->data[14]);
+ s32 input = ListMenu_ProcessInput(task->tListTaskId);
switch (input)
{
case LIST_NOTHING_CHOSEN:
break;
case LIST_CANCEL:
- gSpecialVar_Result = 0x7F;
+ gSpecialVar_Result = MULTI_B_PRESSED;
PlaySE(SE_SELECT);
- sub_813A570(taskId);
+ CloseScrollableMultichoice(taskId);
break;
default:
gSpecialVar_Result = input;
PlaySE(SE_SELECT);
- if (!task->data[6])
+ if (!task->tKeepOpenAfterSelect)
{
- sub_813A570(taskId);
+ CloseScrollableMultichoice(taskId);
}
- else if (input == task->data[1] - 1)
+ // if selected option was the last one (Exit)
+ else if (input == task->tNumItems - 1)
{
- sub_813A570(taskId);
+ CloseScrollableMultichoice(taskId);
}
else
{
- sub_813A738(taskId);
+ ScrollableMultichoice_RemoveScrollArrows(taskId);
task->func = sub_813A600;
EnableBothScriptContexts();
}
@@ -2672,37 +2711,39 @@ static void sub_813A4EC(u8 taskId)
}
}
-static void sub_813A570(u8 taskId)
+static void CloseScrollableMultichoice(u8 taskId)
{
- u16 array;
+ u16 selection;
struct Task *task = &gTasks[taskId];
- ListMenuGetCurrentItemArrayId(task->data[14], &array);
- sub_813AC44(task->data[11], array);
- sub_813A738(taskId);
- DestroyListMenuTask(task->data[14], NULL, NULL);
- Free(gUnknown_0203AB64);
- ClearStdWindowAndFrameToTransparent(task->data[13], 1);
- FillWindowPixelBuffer(task->data[13], PIXEL_FILL(0));
- CopyWindowToVram(task->data[13], 2);
- RemoveWindow(task->data[13]);
+ ListMenuGetCurrentItemArrayId(task->tListTaskId, &selection);
+ HideFrontierExchangeCornerItemIcon(task->tScrollMultiId, selection);
+ ScrollableMultichoice_RemoveScrollArrows(taskId);
+ DestroyListMenuTask(task->tListTaskId, NULL, NULL);
+ Free(sScrollableMultichoice_ListMenuItem);
+ ClearStdWindowAndFrameToTransparent(task->tWindowId, 1);
+ FillWindowPixelBuffer(task->tWindowId, PIXEL_FILL(0));
+ CopyWindowToVram(task->tWindowId, 2);
+ RemoveWindow(task->tWindowId);
DestroyTask(taskId);
EnableBothScriptContexts();
}
+// Functionally unused; tKeepOpenAfterSelect is only != 0 in unused functions
static void sub_813A600(u8 taskId)
{
- switch (gTasks[taskId].data[6])
+ switch (gTasks[taskId].tKeepOpenAfterSelect)
{
case 1:
default:
break;
case 2:
- gTasks[taskId].data[6] = 1;
+ gTasks[taskId].tKeepOpenAfterSelect = 1;
gTasks[taskId].func = sub_813A664;
break;
}
}
+// Never called
void sub_813A630(void)
{
u8 taskId = FindTaskIdByFunc(sub_813A600);
@@ -2712,20 +2753,20 @@ void sub_813A630(void)
}
else
{
- gTasks[taskId].data[6]++;
+ gTasks[taskId].tKeepOpenAfterSelect++;
}
}
static void sub_813A664(u8 taskId)
{
ScriptContext2_Enable();
- sub_813A694(taskId);
- gTasks[taskId].func = sub_813A4EC;
+ ScrollableMultichoice_UpdateScrollArrows(taskId);
+ gTasks[taskId].func = ScrollableMultichoice_ProcessInput;
}
-static void sub_813A694(u8 taskId)
+static void ScrollableMultichoice_UpdateScrollArrows(u8 taskId)
{
- static const struct ScrollArrowsTemplate gUnknown_085B3030 = {
+ static const struct ScrollArrowsTemplate sScrollableMultichoice_ScrollArrowsTemplate = {
.firstArrowType = SCROLL_ARROW_UP,
.firstX = 0,
.firstY = 0,
@@ -2740,34 +2781,51 @@ static void sub_813A694(u8 taskId)
};
struct Task *task = &gTasks[taskId];
- struct ScrollArrowsTemplate template = gUnknown_085B3030;
- if (task->data[0] != task->data[1])
+ struct ScrollArrowsTemplate template = sScrollableMultichoice_ScrollArrowsTemplate;
+ if (task->tMaxItemsOnScreen != task->data[1])
{
- template.firstX = (task->data[4] / 2) * 8 + 12 + (task->data[2] - 1) * 8;
+ template.firstX = (task->tWidth / 2) * 8 + 12 + (task->tLeft - 1) * 8;
template.firstY = 8;
- template.secondX = (task->data[4] / 2) * 8 + 12 + (task->data[2] - 1) * 8;
- template.secondY = task->data[5] * 8 + 10;
+ template.secondX = (task->tWidth / 2) * 8 + 12 + (task->tLeft - 1) * 8;
+ template.secondY = task->tHeight * 8 + 10;
template.fullyUpThreshold = 0;
- template.fullyDownThreshold = task->data[1] - task->data[0];
- task->data[12] = AddScrollIndicatorArrowPair(&template, &gUnknown_0203AB68);
+ template.fullyDownThreshold = task->data[1] - task->tMaxItemsOnScreen;
+ task->tScrollArrowId = AddScrollIndicatorArrowPair(&template, &sScrollableMultichoice_ScrollOffset);
}
}
-static void sub_813A738(u8 taskId)
+static void ScrollableMultichoice_RemoveScrollArrows(u8 taskId)
{
struct Task *task = &gTasks[taskId];
- if (task->data[0] != task->data[1])
+ if (task->tMaxItemsOnScreen != task->data[1])
{
- RemoveScrollIndicatorArrowPair(task->data[12]);
+ RemoveScrollIndicatorArrowPair(task->tScrollArrowId);
}
}
-void nullsub_55(void)
+// Removed for Emerald (replaced by ShowScrollableMultichoice)
+void ShowGlassWorkshopMenu(void)
{
-
+ /*
+ u8 i;
+ ScriptContext2_Enable();
+ Menu_DrawStdWindowFrame(0, 0, 10, 11);
+ InitMenu(0, 1, 1, 5, 0, 9);
+ gUnknown_0203925C = 0;
+ ClearVerticalScrollIndicatorPalettes();
+ LoadScrollIndicatorPalette();
+ sub_810F2B4();
+ for (i = 0; i < 5; i++)
+ {
+ Menu_PrintText(gUnknown_083F83C0[i], 1, 2 * i + 1);
+ }
+ gUnknown_0203925B = 0;
+ gUnknown_0203925A = ARRAY_COUNT(gUnknown_083F83C0);
+ CreateTask(sub_810F118, 8);
+ */
}
-void sub_813A76C(void)
+void SetBattleTowerLinkPlayerGfx(void)
{
u8 i;
for (i = 0; i < 2; i++)
@@ -2783,34 +2841,34 @@ void sub_813A76C(void)
}
}
-void sub_813A7B8(void)
-{
- static const u8 *const gUnknown_085B3040[] = {
- BattleFrontier_Lounge5_Text_26468D,
- BattleFrontier_Lounge5_Text_2646E5,
- BattleFrontier_Lounge5_Text_264741,
- BattleFrontier_Lounge5_Text_2647A4,
- BattleFrontier_Lounge5_Text_2647FC,
- BattleFrontier_Lounge5_Text_264858,
- BattleFrontier_Lounge5_Text_2648BE,
- BattleFrontier_Lounge5_Text_264916,
- BattleFrontier_Lounge5_Text_264972,
- BattleFrontier_Lounge5_Text_2649D5,
- BattleFrontier_Lounge5_Text_264A3F,
- BattleFrontier_Lounge5_Text_264A9B,
- BattleFrontier_Lounge5_Text_264AF3,
- BattleFrontier_Lounge5_Text_264B5D,
- BattleFrontier_Lounge5_Text_2648BE,
- BattleFrontier_Lounge5_Text_264BC3,
- BattleFrontier_Lounge5_Text_264C36,
- BattleFrontier_Lounge5_Text_2648BE,
- BattleFrontier_Lounge5_Text_264C95,
- BattleFrontier_Lounge5_Text_264D01,
- BattleFrontier_Lounge5_Text_264D6B,
- BattleFrontier_Lounge5_Text_264DD7,
- BattleFrontier_Lounge5_Text_264E33,
- BattleFrontier_Lounge5_Text_264E8F,
- BattleFrontier_Lounge5_Text_2648BE,
+void ShowNatureGirlMessage(void)
+{
+ static const u8 *const sNatureGirlMessages[] = {
+ [NATURE_HARDY] = BattleFrontier_Lounge5_Text_NatureGirlHardy,
+ [NATURE_LONELY] = BattleFrontier_Lounge5_Text_NatureGirlLonely,
+ [NATURE_BRAVE] = BattleFrontier_Lounge5_Text_NatureGirlBrave,
+ [NATURE_ADAMANT] = BattleFrontier_Lounge5_Text_NatureGirlAdamant,
+ [NATURE_NAUGHTY] = BattleFrontier_Lounge5_Text_NatureGirlNaughty,
+ [NATURE_BOLD] = BattleFrontier_Lounge5_Text_NatureGirlBold,
+ [NATURE_DOCILE] = BattleFrontier_Lounge5_Text_NatureGirlDocileNaiveQuietQuirky,
+ [NATURE_RELAXED] = BattleFrontier_Lounge5_Text_NatureGirlRelaxed,
+ [NATURE_IMPISH] = BattleFrontier_Lounge5_Text_NatureGirlImpish,
+ [NATURE_LAX] = BattleFrontier_Lounge5_Text_NatureGirlLax,
+ [NATURE_TIMID] = BattleFrontier_Lounge5_Text_NatureGirlTimid,
+ [NATURE_HASTY] = BattleFrontier_Lounge5_Text_NatureGirlHasty,
+ [NATURE_SERIOUS] = BattleFrontier_Lounge5_Text_NatureGirlSerious,
+ [NATURE_JOLLY] = BattleFrontier_Lounge5_Text_NatureGirlJolly,
+ [NATURE_NAIVE] = BattleFrontier_Lounge5_Text_NatureGirlDocileNaiveQuietQuirky,
+ [NATURE_MODEST] = BattleFrontier_Lounge5_Text_NatureGirlModest,
+ [NATURE_MILD] = BattleFrontier_Lounge5_Text_NatureGirlMild,
+ [NATURE_QUIET] = BattleFrontier_Lounge5_Text_NatureGirlDocileNaiveQuietQuirky,
+ [NATURE_BASHFUL] = BattleFrontier_Lounge5_Text_NatureGirlBashful,
+ [NATURE_RASH] = BattleFrontier_Lounge5_Text_NatureGirlRash,
+ [NATURE_CALM] = BattleFrontier_Lounge5_Text_NatureGirlCalm,
+ [NATURE_GENTLE] = BattleFrontier_Lounge5_Text_NatureGirlGentle,
+ [NATURE_SASSY] = BattleFrontier_Lounge5_Text_NatureGirlSassy,
+ [NATURE_CAREFUL] = BattleFrontier_Lounge5_Text_NatureGirlCareful,
+ [NATURE_QUIRKY] = BattleFrontier_Lounge5_Text_NatureGirlDocileNaiveQuietQuirky,
};
u8 nature;
@@ -2821,19 +2879,20 @@ void sub_813A7B8(void)
}
nature = GetNature(&gPlayerParty[gSpecialVar_0x8004]);
- ShowFieldMessage(gUnknown_085B3040[nature]);
+ ShowFieldMessage(sNatureGirlMessages[nature]);
}
-void UpdateFrontierGambler(u16 a0)
+void UpdateFrontierGambler(u16 daysSince)
{
- u16 *var = GetVarPointer(VAR_FRONTIER_GAMBLER_FACILITY);
- *var += a0;
- *var %= 12;
+ u16 *var = GetVarPointer(VAR_FRONTIER_GAMBLER_CHALLENGE);
+ *var += daysSince;
+ *var %= FRONTIER_GAMBLER_CHALLENGE_COUNT;
}
-void sub_813A820(void)
+void ShowFrontierGamblerLookingMessage(void)
{
- static const u8 *const gUnknown_085B30A4[] = {
+ static const u8 *const sFrontierGamblerLookingMessages[] =
+ {
BattleFrontier_Lounge3_Text_262261,
BattleFrontier_Lounge3_Text_26230D,
BattleFrontier_Lounge3_Text_2623B9,
@@ -2848,14 +2907,15 @@ void sub_813A820(void)
BattleFrontier_Lounge3_Text_2629BC,
};
- u16 var = VarGet(VAR_FRONTIER_GAMBLER_FACILITY);
- ShowFieldMessage(gUnknown_085B30A4[var]);
- VarSet(VAR_FRONTIER_GAMBLER_SET_FACILITY_F, var);
+ u16 challenge = VarGet(VAR_FRONTIER_GAMBLER_CHALLENGE);
+ ShowFieldMessage(sFrontierGamblerLookingMessages[challenge]);
+ VarSet(VAR_FRONTIER_GAMBLER_SET_CHALLENGE, challenge);
}
-void sub_813A854(void)
+void ShowFrontierGamblerGoMessage(void)
{
- static const u8 *const gUnknown_085B30D4[] = {
+ static const u8 *const sFrontierGamblerGoMessages[] =
+ {
BattleFrontier_Lounge3_Text_262C04,
BattleFrontier_Lounge3_Text_262C90,
BattleFrontier_Lounge3_Text_262D1C,
@@ -2870,45 +2930,59 @@ void sub_813A854(void)
BattleFrontier_Lounge3_Text_263211,
};
- ShowFieldMessage(gUnknown_085B30D4[VarGet(VAR_FRONTIER_GAMBLER_SET_FACILITY_F)]);
+ ShowFieldMessage(sFrontierGamblerGoMessages[VarGet(VAR_FRONTIER_GAMBLER_SET_CHALLENGE)]);
}
-void sub_813A878(u8 a0)
+void FrontierGamblerSetWonOrLost(bool8 won)
{
- static const u16 gUnknown_085B3104[] = {0x0000, 0x0001, 0x0002, 0x0100, 0x0101, 0x0400, 0x0401, 0x0200, 0x0201, 0x0300, 0x0500, 0x0600};
+ static const u16 sFrontierChallenges[] =
+ {
+ FRONTIER_CHALLENGE(FRONTIER_FACILITY_TOWER, FRONTIER_MODE_SINGLES),
+ FRONTIER_CHALLENGE(FRONTIER_FACILITY_TOWER, FRONTIER_MODE_DOUBLES),
+ FRONTIER_CHALLENGE(FRONTIER_FACILITY_TOWER, FRONTIER_MODE_MULTIS),
+ FRONTIER_CHALLENGE(FRONTIER_FACILITY_DOME, FRONTIER_MODE_SINGLES),
+ FRONTIER_CHALLENGE(FRONTIER_FACILITY_DOME, FRONTIER_MODE_DOUBLES),
+ FRONTIER_CHALLENGE(FRONTIER_FACILITY_FACTORY, FRONTIER_MODE_SINGLES),
+ FRONTIER_CHALLENGE(FRONTIER_FACILITY_FACTORY, FRONTIER_MODE_DOUBLES),
+ FRONTIER_CHALLENGE(FRONTIER_FACILITY_PALACE, FRONTIER_MODE_SINGLES),
+ FRONTIER_CHALLENGE(FRONTIER_FACILITY_PALACE, FRONTIER_MODE_DOUBLES),
+ FRONTIER_CHALLENGE(FRONTIER_FACILITY_ARENA, FRONTIER_MODE_SINGLES),
+ FRONTIER_CHALLENGE(FRONTIER_FACILITY_PIKE, FRONTIER_MODE_SINGLES),
+ FRONTIER_CHALLENGE(FRONTIER_FACILITY_PYRAMID, FRONTIER_MODE_SINGLES)
+ };
u16 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
- u16 var2 = VarGet(VAR_FRONTIER_GAMBLER_SET_FACILITY_F);
+ u16 challenge = VarGet(VAR_FRONTIER_GAMBLER_SET_CHALLENGE);
u16 frontierFacilityId = VarGet(VAR_FRONTIER_FACILITY);
- if (VarGet(VAR_FRONTIER_GAMBLER_PLACED_BET_F) == 1)
+ if (VarGet(VAR_FRONTIER_GAMBLER_STATE) == FRONTIER_GAMBLER_PLACED_BET)
{
- if (gUnknown_085B3104[var2] == (frontierFacilityId << 8) + battleMode)
+ if (sFrontierChallenges[challenge] == FRONTIER_CHALLENGE(frontierFacilityId, battleMode))
{
- if (a0 != 0)
+ if (won)
{
- VarSet(VAR_FRONTIER_GAMBLER_PLACED_BET_F, 2);
+ VarSet(VAR_FRONTIER_GAMBLER_STATE, FRONTIER_GAMBLER_WON);
}
else
{
- VarSet(VAR_FRONTIER_GAMBLER_PLACED_BET_F, 3);
+ VarSet(VAR_FRONTIER_GAMBLER_STATE, FRONTIER_GAMBLER_LOST);
}
}
}
}
-void sub_813A8FC(void)
+void UpdateBattlePointsWindow(void)
{
u8 string[32];
u32 x;
StringCopy(ConvertIntToDecimalStringN(string, gSaveBlock2Ptr->frontier.battlePoints, STR_CONV_MODE_RIGHT_ALIGN, 4), gText_BP);
x = GetStringRightAlignXOffset(1, string, 48);
- AddTextPrinterParameterized(gUnknown_0203AB6D, 1, string, x, 1, 0, NULL);
+ AddTextPrinterParameterized(sBattlePointsWindowId, 1, string, x, 1, 0, NULL);
}
-void sub_813A958(void)
+void ShowBattlePointsWindow(void)
{
- static const struct WindowTemplate gUnknown_085B311C = {
+ static const struct WindowTemplate sBattlePoints_WindowTemplate = {
.bg = 0,
.tilemapLeft = 1,
.tilemapTop = 1,
@@ -2918,19 +2992,19 @@ void sub_813A958(void)
.baseBlock = 8,
};
- gUnknown_0203AB6D = AddWindow(&gUnknown_085B311C);
- SetStandardWindowBorderStyle(gUnknown_0203AB6D, 0);
- sub_813A8FC();
- CopyWindowToVram(gUnknown_0203AB6D, 2);
+ sBattlePointsWindowId = AddWindow(&sBattlePoints_WindowTemplate);
+ SetStandardWindowBorderStyle(sBattlePointsWindowId, 0);
+ UpdateBattlePointsWindow();
+ CopyWindowToVram(sBattlePointsWindowId, 2);
}
-void sub_813A988(void)
+void CloseBattlePointsWindow(void)
{
- ClearStdWindowAndFrameToTransparent(gUnknown_0203AB6D, TRUE);
- RemoveWindow(gUnknown_0203AB6D);
+ ClearStdWindowAndFrameToTransparent(sBattlePointsWindowId, TRUE);
+ RemoveWindow(sBattlePointsWindowId);
}
-void sub_813A9A4(void)
+void TakeFrontierBattlePoints(void)
{
if (gSaveBlock2Ptr->frontier.battlePoints < gSpecialVar_0x8004)
{
@@ -2942,11 +3016,11 @@ void sub_813A9A4(void)
}
}
-void sub_813A9D0(void)
+void GiveFrontierBattlePoints(void)
{
- if (gSaveBlock2Ptr->frontier.battlePoints + gSpecialVar_0x8004 > 9999)
+ if (gSaveBlock2Ptr->frontier.battlePoints + gSpecialVar_0x8004 > MAX_BATTLE_FRONTIER_POINTS)
{
- gSaveBlock2Ptr->frontier.battlePoints = 9999;
+ gSaveBlock2Ptr->frontier.battlePoints = MAX_BATTLE_FRONTIER_POINTS;
}
else
{
@@ -2954,14 +3028,14 @@ void sub_813A9D0(void)
}
}
-u16 sub_813AA04(void)
+u16 GetFrontierBattlePoints(void)
{
return gSaveBlock2Ptr->frontier.battlePoints;
}
-void sub_813AA18(void)
+void ShowFrontierExchangeCornerItemIconWindow(void)
{
- static const struct WindowTemplate gUnknown_085B3124 = {
+ static const struct WindowTemplate sFrontierExchangeCorner_ItemIconWindowTemplate = {
.bg = 0,
.tilemapLeft = 2,
.tilemapTop = 9,
@@ -2971,159 +3045,139 @@ void sub_813AA18(void)
.baseBlock = 20,
};
- gUnknown_0203AB6E = AddWindow(&gUnknown_085B3124);
- SetStandardWindowBorderStyle(gUnknown_0203AB6E, 0);
- CopyWindowToVram(gUnknown_0203AB6E, 2);
+ sFrontierExchangeCorner_ItemIconWindowId = AddWindow(&sFrontierExchangeCorner_ItemIconWindowTemplate);
+ SetStandardWindowBorderStyle(sFrontierExchangeCorner_ItemIconWindowId, 0);
+ CopyWindowToVram(sFrontierExchangeCorner_ItemIconWindowId, 2);
}
-void sub_813AA44(void)
+void CloseFrontierExchangeCornerItemIconWindow(void)
{
- ClearStdWindowAndFrameToTransparent(gUnknown_0203AB6E, TRUE);
- RemoveWindow(gUnknown_0203AB6E);
+ ClearStdWindowAndFrameToTransparent(sFrontierExchangeCorner_ItemIconWindowId, TRUE);
+ RemoveWindow(sFrontierExchangeCorner_ItemIconWindowId);
}
-static void sub_813AA60(u16 a0, u16 a1)
+static void FillFrontierExchangeCornerWindowAndItemIcon(u16 menu, u16 selection)
{
- static const u16 gUnknown_085B312C[] = { 0x004b, 0x0067, 0x0057, 0x004f, 0x0054, 0x0055, 0x0056, 0x0050, 0x0051, 0x0052, 0xFFFF };
- static const u16 gUnknown_085B3142[] = { 0x0071, 0x006f, 0x0072, 0x0073, 0x0074, 0xFFFF };
- static const u16 gUnknown_085B314E[] = { 0x0040, 0x0043, 0x0041, 0x0046, 0x0042, 0x003f, 0xFFFF };
- static const u16 gUnknown_085B315C[] = { 0x00c8, 0x00b4, 0x00b7, 0x00b9, 0x00b3, 0x00ba, 0x00bb, 0x00c4, 0x00c6, 0xFFFF };
-
- static const u8 *const gUnknown_085B3170[] = {
- BattleFrontier_BattlePointExchangeServiceCorner_Text_2601AA,
- BattleFrontier_BattlePointExchangeServiceCorner_Text_2601D0,
- BattleFrontier_BattlePointExchangeServiceCorner_Text_260201,
- BattleFrontier_BattlePointExchangeServiceCorner_Text_26022F,
- BattleFrontier_BattlePointExchangeServiceCorner_Text_26025B,
- BattleFrontier_BattlePointExchangeServiceCorner_Text_260287,
- BattleFrontier_BattlePointExchangeServiceCorner_Text_2602B5,
- BattleFrontier_BattlePointExchangeServiceCorner_Text_2602E0,
- BattleFrontier_BattlePointExchangeServiceCorner_Text_26030F,
- BattleFrontier_BattlePointExchangeServiceCorner_Text_26033E,
- gText_Exit,
- };
-
- static const u8 *const gUnknown_085B319C[] = {
- BattleFrontier_BattlePointExchangeServiceCorner_Text_26036C,
- BattleFrontier_BattlePointExchangeServiceCorner_Text_26036C,
- BattleFrontier_BattlePointExchangeServiceCorner_Text_26036C,
- BattleFrontier_BattlePointExchangeServiceCorner_Text_26036C,
- BattleFrontier_BattlePointExchangeServiceCorner_Text_26036C,
- gText_Exit
- };
+ #include "data/battle_frontier/battle_frontier_exchange_corner.h"
- static const u8 *const gUnknown_085B31B4[] = {
- BattleFrontier_BattlePointExchangeServiceCorner_Text_260397,
- BattleFrontier_BattlePointExchangeServiceCorner_Text_2603BE,
- BattleFrontier_BattlePointExchangeServiceCorner_Text_2603E6,
- BattleFrontier_BattlePointExchangeServiceCorner_Text_26040E,
- BattleFrontier_BattlePointExchangeServiceCorner_Text_260436,
- BattleFrontier_BattlePointExchangeServiceCorner_Text_26045C,
- gText_Exit
- };
-
- static const u8 *const gUnknown_085B31D0[] = {
- BattleFrontier_BattlePointExchangeServiceCorner_Text_26047A,
- BattleFrontier_BattlePointExchangeServiceCorner_Text_2604AC,
- BattleFrontier_BattlePointExchangeServiceCorner_Text_2604D8,
- BattleFrontier_BattlePointExchangeServiceCorner_Text_26050F,
- BattleFrontier_BattlePointExchangeServiceCorner_Text_260542,
- BattleFrontier_BattlePointExchangeServiceCorner_Text_260575,
- BattleFrontier_BattlePointExchangeServiceCorner_Text_2605A8,
- BattleFrontier_BattlePointExchangeServiceCorner_Text_2605E2,
- BattleFrontier_BattlePointExchangeServiceCorner_Text_260613,
- gText_Exit
- };
-
- if (a0 > 2 && a0 < 7)
+ if (menu >= SCROLL_MULTI_BF_EXCHANGE_CORNER_DECOR_VENDOR_1 && menu <= SCROLL_MULTI_BF_EXCHANGE_CORNER_HOLD_ITEM_VENDOR)
{
FillWindowPixelRect(0, PIXEL_FILL(1), 0, 0, 216, 32);
- switch (a0)
+ switch (menu)
{
- case 3:
- AddTextPrinterParameterized2(0, 1, gUnknown_085B3170[a1], 0, NULL, 2, 1, 3);
- if (gUnknown_085B312C[a1] == 0xFFFF)
+ case SCROLL_MULTI_BF_EXCHANGE_CORNER_DECOR_VENDOR_1:
+ AddTextPrinterParameterized2(0, 1, sFrontierExchangeCorner_Decor1Descriptions[selection], 0, NULL, 2, 1, 3);
+ if (sFrontierExchangeCorner_Decor1[selection] == 0xFFFF)
{
- sub_813ABD4(gUnknown_085B312C[a1]);
+ ShowFrontierExchangeCornerItemIcon(sFrontierExchangeCorner_Decor1[selection]);
}
else
{
FreeSpriteTilesByTag(5500);
FreeSpritePaletteByTag(5500);
- gUnknown_0203AB6C = AddDecorationIconObject(gUnknown_085B312C[a1], 33, 88, 0, 5500, 5500);
+ sScrollableMultichoice_ItemSpriteId = AddDecorationIconObject(sFrontierExchangeCorner_Decor1[selection], 33, 88, 0, 5500, 5500);
}
break;
- case 4:
- AddTextPrinterParameterized2(0, 1, gUnknown_085B319C[a1], 0, NULL, 2, 1, 3);
- if (gUnknown_085B3142[a1] == 0xFFFF)
+ case SCROLL_MULTI_BF_EXCHANGE_CORNER_DECOR_VENDOR_2:
+ AddTextPrinterParameterized2(0, 1, sFrontierExchangeCorner_Decor2Descriptions[selection], 0, NULL, 2, 1, 3);
+ if (sFrontierExchangeCorner_Decor2[selection] == 0xFFFF)
{
- sub_813ABD4(gUnknown_085B3142[a1]);
+ ShowFrontierExchangeCornerItemIcon(sFrontierExchangeCorner_Decor2[selection]);
}
else
{
FreeSpriteTilesByTag(5500);
FreeSpritePaletteByTag(5500);
- gUnknown_0203AB6C = AddDecorationIconObject(gUnknown_085B3142[a1], 33, 88, 0, 5500, 5500);
+ sScrollableMultichoice_ItemSpriteId = AddDecorationIconObject(sFrontierExchangeCorner_Decor2[selection], 33, 88, 0, 5500, 5500);
}
break;
- case 5:
- AddTextPrinterParameterized2(0, 1, gUnknown_085B31B4[a1], 0, NULL, 2, 1, 3);
- sub_813ABD4(gUnknown_085B314E[a1]);
+ case SCROLL_MULTI_BF_EXCHANGE_CORNER_VITAMIN_VENDOR:
+ AddTextPrinterParameterized2(0, 1, sFrontierExchangeCorner_VitaminsDescriptions[selection], 0, NULL, 2, 1, 3);
+ ShowFrontierExchangeCornerItemIcon(sFrontierExchangeCorner_Vitamins[selection]);
break;
- case 6:
- AddTextPrinterParameterized2(0, 1, gUnknown_085B31D0[a1], 0, NULL, 2, 1, 3);
- sub_813ABD4(gUnknown_085B315C[a1]);
+ case SCROLL_MULTI_BF_EXCHANGE_CORNER_HOLD_ITEM_VENDOR:
+ AddTextPrinterParameterized2(0, 1, sFrontierExchangeCorner_HoldItemsDescriptions[selection], 0, NULL, 2, 1, 3);
+ ShowFrontierExchangeCornerItemIcon(sFrontierExchangeCorner_HoldItems[selection]);
break;
}
}
}
-static void sub_813ABD4(u16 a0)
+static void ShowFrontierExchangeCornerItemIcon(u16 item)
{
FreeSpriteTilesByTag(5500);
FreeSpritePaletteByTag(5500);
- gUnknown_0203AB6C = AddItemIconSprite(5500, 5500, a0);
+ sScrollableMultichoice_ItemSpriteId = AddItemIconSprite(5500, 5500, item);
- if (gUnknown_0203AB6C != MAX_SPRITES)
+ if (sScrollableMultichoice_ItemSpriteId != MAX_SPRITES)
{
- gSprites[gUnknown_0203AB6C].oam.priority = 0;
- gSprites[gUnknown_0203AB6C].pos1.x = 36;
- gSprites[gUnknown_0203AB6C].pos1.y = 92;
+ gSprites[sScrollableMultichoice_ItemSpriteId].oam.priority = 0;
+ gSprites[sScrollableMultichoice_ItemSpriteId].pos1.x = 36;
+ gSprites[sScrollableMultichoice_ItemSpriteId].pos1.y = 92;
}
}
-static void sub_813AC44(u16 a0, u16 unused)
+static void HideFrontierExchangeCornerItemIcon(u16 menu, u16 unused)
{
- if (gUnknown_0203AB6C != MAX_SPRITES)
+ if (sScrollableMultichoice_ItemSpriteId != MAX_SPRITES)
{
- switch (a0)
+ switch (menu)
{
- case 3 ... 6:
- DestroySpriteAndFreeResources(&gSprites[gUnknown_0203AB6C]);
+ case SCROLL_MULTI_BF_EXCHANGE_CORNER_DECOR_VENDOR_1:
+ case SCROLL_MULTI_BF_EXCHANGE_CORNER_DECOR_VENDOR_2:
+ case SCROLL_MULTI_BF_EXCHANGE_CORNER_VITAMIN_VENDOR:
+ case SCROLL_MULTI_BF_EXCHANGE_CORNER_HOLD_ITEM_VENDOR:
+ DestroySpriteAndFreeResources(&gSprites[sScrollableMultichoice_ItemSpriteId]);
break;
}
- gUnknown_0203AB6C = MAX_SPRITES;
- }
-}
+ sScrollableMultichoice_ItemSpriteId = MAX_SPRITES;
+ }
+}
+
+static const u16 sBattleFrontier_TutorMoves1[] =
+{
+ MOVE_SOFT_BOILED,
+ MOVE_SEISMIC_TOSS,
+ MOVE_DREAM_EATER,
+ MOVE_MEGA_PUNCH,
+ MOVE_MEGA_KICK,
+ MOVE_BODY_SLAM,
+ MOVE_ROCK_SLIDE,
+ MOVE_COUNTER,
+ MOVE_THUNDER_WAVE,
+ MOVE_SWORDS_DANCE
+};
-static const u16 gUnknown_085B31F8[] = { 0x0087, 0x0045, 0x008a, 0x0005, 0x0019, 0x0022, 0x009d, 0x0044, 0x0056, 0x000e };
-static const u16 gUnknown_085B320C[] = { 0x006f, 0x00ad, 0x00bd, 0x0081, 0x00c4, 0x00cb, 0x00f4, 0x0008, 0x0009, 0x0007 };
+static const u16 sBattleFrontier_TutorMoves2[] =
+{
+ MOVE_DEFENSE_CURL,
+ MOVE_SNORE,
+ MOVE_MUD_SLAP,
+ MOVE_SWIFT,
+ MOVE_ICY_WIND,
+ MOVE_ENDURE,
+ MOVE_PSYCH_UP,
+ MOVE_ICE_PUNCH,
+ MOVE_THUNDER_PUNCH,
+ MOVE_FIRE_PUNCH
+};
-void sub_813AC7C(void)
+void BufferBattleFrontierTutorMoveName(void)
{
if (gSpecialVar_0x8005 != 0)
{
- StringCopy(gStringVar1, gMoveNames[gUnknown_085B320C[gSpecialVar_0x8004]]);
+ StringCopy(gStringVar1, gMoveNames[sBattleFrontier_TutorMoves2[gSpecialVar_0x8004]]);
}
else
{
- StringCopy(gStringVar1, gMoveNames[gUnknown_085B31F8[gSpecialVar_0x8004]]);
+ StringCopy(gStringVar1, gMoveNames[sBattleFrontier_TutorMoves1[gSpecialVar_0x8004]]);
}
}
-static void sub_813ACE8(u8 a0, u16 a1)
+static void ShowBattleFrontierTutorWindow(u8 menu, u16 selection)
{
- static const struct WindowTemplate gUnknown_085B3220 = {
+ static const struct WindowTemplate sBattleFrontierTutor_WindowTemplate =
+ {
.bg = 0,
.tilemapLeft = 1,
.tilemapTop = 7,
@@ -3133,20 +3187,21 @@ static void sub_813ACE8(u8 a0, u16 a1)
.baseBlock = 28,
};
- if (a0 == 9 || a0 == 10)
+ if (menu == SCROLL_MULTI_BF_MOVE_TUTOR_1 || menu == SCROLL_MULTI_BF_MOVE_TUTOR_2)
{
if (gSpecialVar_0x8006 == 0)
{
- gUnknown_0203AB5E = AddWindow(&gUnknown_085B3220);
- SetStandardWindowBorderStyle(gUnknown_0203AB5E, 0);
+ sTutorMoveAndElevatorWindowId = AddWindow(&sBattleFrontierTutor_WindowTemplate);
+ SetStandardWindowBorderStyle(sTutorMoveAndElevatorWindowId, 0);
}
- sub_813AD34(a0, a1);
+ ShowBattleFrontierTutorMoveDescription(menu, selection);
}
}
-static void sub_813AD34(u8 a0, u16 a1)
+static void ShowBattleFrontierTutorMoveDescription(u8 menu, u16 selection)
{
- static const u8 *const gUnknown_085B3228[] = {
+ static const u8 *const sBattleFrontier_TutorMoveDescriptions1[] =
+ {
BattleFrontier_Lounge7_Text_265E30,
BattleFrontier_Lounge7_Text_265E5B,
BattleFrontier_Lounge7_Text_265E8A,
@@ -3160,7 +3215,8 @@ static void sub_813AD34(u8 a0, u16 a1)
gText_Exit,
};
- static const u8 *const gUnknown_085B3254[] = {
+ static const u8 *const sBattleFrontier_TutorMoveDescriptions2[] =
+ {
BattleFrontier_Lounge7_Text_26600A,
BattleFrontier_Lounge7_Text_26603E,
BattleFrontier_Lounge7_Text_266070,
@@ -3174,26 +3230,27 @@ static void sub_813AD34(u8 a0, u16 a1)
gText_Exit,
};
- if (a0 == 9 || a0 == 10)
+ if (menu == SCROLL_MULTI_BF_MOVE_TUTOR_1 || menu == SCROLL_MULTI_BF_MOVE_TUTOR_2)
{
- FillWindowPixelRect(gUnknown_0203AB5E, PIXEL_FILL(1), 0, 0, 96, 48);
- if (a0 == 10)
+ FillWindowPixelRect(sTutorMoveAndElevatorWindowId, PIXEL_FILL(1), 0, 0, 96, 48);
+ if (menu == SCROLL_MULTI_BF_MOVE_TUTOR_2)
{
- AddTextPrinterParameterized(gUnknown_0203AB5E, 1, gUnknown_085B3254[a1], 0, 1, 0, NULL);
+ AddTextPrinterParameterized(sTutorMoveAndElevatorWindowId, 1, sBattleFrontier_TutorMoveDescriptions2[selection], 0, 1, 0, NULL);
}
else
{
- AddTextPrinterParameterized(gUnknown_0203AB5E, 1, gUnknown_085B3228[a1], 0, 1, 0, NULL);
+ AddTextPrinterParameterized(sTutorMoveAndElevatorWindowId, 1, sBattleFrontier_TutorMoveDescriptions1[selection], 0, 1, 0, NULL);
}
}
}
-void sub_813ADB8(void)
+void CloseBattleFrontierTutorWindow(void)
{
- ClearStdWindowAndFrameToTransparent(gUnknown_0203AB5E, TRUE);
- RemoveWindow(gUnknown_0203AB5E);
+ ClearStdWindowAndFrameToTransparent(sTutorMoveAndElevatorWindowId, TRUE);
+ RemoveWindow(sTutorMoveAndElevatorWindowId);
}
+// Never called
void sub_813ADD4(void)
{
u16 scrollOffset, selectedRow;
@@ -3202,75 +3259,92 @@ void sub_813ADD4(void)
if (taskId != 0xFF)
{
struct Task *task = &gTasks[taskId];
- ListMenuGetScrollAndRow(task->data[14], &scrollOffset, &selectedRow);
- SetStandardWindowBorderStyle(task->data[13], 0);
+ ListMenuGetScrollAndRow(task->tListTaskId, &scrollOffset, &selectedRow);
+ SetStandardWindowBorderStyle(task->tWindowId, 0);
- for (i = 0; i < 6; i++)
+ for (i = 0; i < MAX_SCROLL_MULTI_ON_SCREEN; i++)
{
- AddTextPrinterParameterized5(task->data[13], 1, gUnknown_085B2CF0[gSpecialVar_0x8004][scrollOffset + i], 10, i * 16, TEXT_SPEED_FF, NULL, 0, 0);
+ AddTextPrinterParameterized5(task->tWindowId, 1, sScrollableMultichoiceOptions[gSpecialVar_0x8004][scrollOffset + i], 10, i * 16, TEXT_SPEED_FF, NULL, 0, 0);
}
- AddTextPrinterParameterized(task->data[13], 1, gText_SelectorArrow, 0, selectedRow * 16, TEXT_SPEED_FF, NULL);
- PutWindowTilemap(task->data[13]);
- CopyWindowToVram(task->data[13], 3);
+ AddTextPrinterParameterized(task->tWindowId, 1, gText_SelectorArrow, 0, selectedRow * 16, TEXT_SPEED_FF, NULL);
+ PutWindowTilemap(task->tWindowId);
+ CopyWindowToVram(task->tWindowId, 3);
}
}
-void sub_813AEB4(void)
+void GetBattleFrontierTutorMoveIndex(void)
{
u8 i;
- u16 temp1 = 0;
- u16 temp2 = 0;
+ u16 moveTutor = 0;
+ u16 moveIndex = 0;
gSpecialVar_0x8005 = 0;
- temp1 = VarGet(VAR_TEMP_E);
- temp2 = VarGet(VAR_TEMP_D);
+ moveTutor = VarGet(VAR_TEMP_E);
+ moveIndex = VarGet(VAR_TEMP_D);
- if (temp1 != 0)
+ if (moveTutor != 0)
{
i = 0;
do
{
- if (gTutorMoves[i] == gUnknown_085B320C[temp2])
+ if (gTutorMoves[i] == sBattleFrontier_TutorMoves2[moveIndex])
{
gSpecialVar_0x8005 = i;
break;
}
i++;
- } while (i < 30);
+ } while (i < TUTOR_MOVE_COUNT);
}
else
{
i = 0;
do
{
- if (gTutorMoves[i] == gUnknown_085B31F8[temp2])
+ if (gTutorMoves[i] == sBattleFrontier_TutorMoves1[moveIndex])
{
gSpecialVar_0x8005 = i;
break;
}
i++;
- } while (i < 30);
+ } while (i < TUTOR_MOVE_COUNT);
}
}
+// Never called
void sub_813AF48(void)
{
u8 taskId = FindTaskIdByFunc(sub_813A600);
if (taskId != 0xFF)
{
struct Task *task = &gTasks[taskId];
- DestroyListMenuTask(task->data[14], NULL, NULL);
- Free(gUnknown_0203AB64);
- ClearStdWindowAndFrameToTransparent(task->data[13], TRUE);
- FillWindowPixelBuffer(task->data[13], PIXEL_FILL(0));
- ClearWindowTilemap(task->data[13]);
- CopyWindowToVram(task->data[13], 2);
- RemoveWindow(task->data[13]);
+ DestroyListMenuTask(task->tListTaskId, NULL, NULL);
+ Free(sScrollableMultichoice_ListMenuItem);
+ ClearStdWindowAndFrameToTransparent(task->tWindowId, TRUE);
+ FillWindowPixelBuffer(task->tWindowId, PIXEL_FILL(0));
+ ClearWindowTilemap(task->tWindowId);
+ CopyWindowToVram(task->tWindowId, 2);
+ RemoveWindow(task->tWindowId);
DestroyTask(taskId);
}
}
+// Undefine Scrollable Multichoice task data macros
+#undef tMaxItemsOnScreen
+#undef tNumItems
+#undef tLeft
+#undef tTop
+#undef tWidth
+#undef tHeight
+#undef tKeepOpenAfterSelect
+#undef tScrollOffset
+#undef tSelectedRow
+#undef tScrollMultiId
+#undef tScrollArrowId
+#undef tWindowId
+#undef tListTaskId
+#undef tTaskId
+
void DoDeoxysRockInteraction(void)
{
CreateTask(Task_DeoxysRockInteraction, 8);
@@ -3405,47 +3479,47 @@ void sub_813B1D0(void)
BlendPalettes(0x04000000, 16, 0);
}
-void set_unknown_box_id(u8 id)
+void SetPCBoxToSendMon(u8 boxId)
{
- gUnknown_0203AB6F = id;
+ sPCBoxToSendMon = boxId;
}
-u16 get_unknown_box_id(void)
+u16 GetPCBoxToSendMon(void)
{
- return gUnknown_0203AB6F;
+ return sPCBoxToSendMon;
}
-bool8 sub_813B21C(void)
+bool8 ShouldShowBoxWasFullMessage(void)
{
- if (FlagGet(FLAG_SYS_STORAGE_UNKNOWN_FLAG) == FALSE)
+ if (!FlagGet(FLAG_SHOWN_BOX_WAS_FULL_MESSAGE))
{
- if (StorageGetCurrentBox() != VarGet(VAR_STORAGE_UNKNOWN))
+ if (StorageGetCurrentBox() != VarGet(VAR_PC_BOX_TO_SEND_MON))
{
- FlagSet(FLAG_SYS_STORAGE_UNKNOWN_FLAG);
+ FlagSet(FLAG_SHOWN_BOX_WAS_FULL_MESSAGE);
return TRUE;
}
}
return FALSE;
}
-bool8 sub_813B260(void)
+bool8 IsDestinationBoxFull(void)
{
int box;
int i;
- set_unknown_box_id(VarGet(VAR_STORAGE_UNKNOWN));
+ SetPCBoxToSendMon(VarGet(VAR_PC_BOX_TO_SEND_MON));
box = StorageGetCurrentBox();
do
{
for (i = 0; i < IN_BOX_COUNT; i++)
{
- if (GetBoxMonData(GetBoxedMonPtr(box, i), MON_DATA_SPECIES, 0) == 0)
+ if (GetBoxMonData(GetBoxedMonPtr(box, i), MON_DATA_SPECIES, 0) == SPECIES_NONE)
{
- if (get_unknown_box_id() != box)
+ if (GetPCBoxToSendMon() != box)
{
- FlagClear(FLAG_SYS_STORAGE_UNKNOWN_FLAG);
+ FlagClear(FLAG_SHOWN_BOX_WAS_FULL_MESSAGE);
}
- VarSet(VAR_STORAGE_UNKNOWN, box);
- return sub_813B21C();
+ VarSet(VAR_PC_BOX_TO_SEND_MON, box);
+ return ShouldShowBoxWasFullMessage();
}
}
@@ -3606,35 +3680,37 @@ void Unused_SetWeatherSunny(void)
SetCurrentAndNextWeather(WEATHER_SUNNY);
}
-bool32 sub_813B490(void)
-{
- static const u8 gUnknown_085B3420[][3] = {
- { 0x02, 0x04, 0x01 },
- { 0x04, 0x04, 0x01 },
- { 0x05, 0x00, 0x01 },
- { 0x06, 0x03, 0x01 },
- { 0x08, 0x06, 0x01 },
- { 0x09, 0x0d, 0x01 },
- { 0x0a, 0x07, 0x01 },
- { 0x0b, 0x07, 0x01 },
- { 0x0c, 0x04, 0x01 },
- { 0x0e, 0x05, 0x01 },
- { 0x0f, 0x04, 0x01 },
- { 0x1a, 0x37, 0x01 }
+// Always returns 1
+u32 GetMartEmployeeObjectEventId(void)
+{
+ static const u8 sPokeMarts[][3] =
+ {
+ { MAP_GROUP(OLDALE_TOWN_MART), MAP_NUM(OLDALE_TOWN_MART), 1 },
+ { MAP_GROUP(LAVARIDGE_TOWN_MART), MAP_NUM(LAVARIDGE_TOWN_MART), 1 },
+ { MAP_GROUP(FALLARBOR_TOWN_MART), MAP_NUM(FALLARBOR_TOWN_MART), 1 },
+ { MAP_GROUP(VERDANTURF_TOWN_MART), MAP_NUM(VERDANTURF_TOWN_MART), 1 },
+ { MAP_GROUP(PETALBURG_CITY_MART), MAP_NUM(PETALBURG_CITY_MART), 1 },
+ { MAP_GROUP(SLATEPORT_CITY_MART), MAP_NUM(SLATEPORT_CITY_MART), 1 },
+ { MAP_GROUP(MAUVILLE_CITY_MART), MAP_NUM(MAUVILLE_CITY_MART), 1 },
+ { MAP_GROUP(RUSTBORO_CITY_MART), MAP_NUM(RUSTBORO_CITY_MART), 1 },
+ { MAP_GROUP(FORTREE_CITY_MART), MAP_NUM(FORTREE_CITY_MART), 1 },
+ { MAP_GROUP(MOSSDEEP_CITY_MART), MAP_NUM(MOSSDEEP_CITY_MART), 1 },
+ { MAP_GROUP(SOOTOPOLIS_CITY_MART), MAP_NUM(SOOTOPOLIS_CITY_MART), 1 },
+ { MAP_GROUP(BATTLE_FRONTIER_MART), MAP_NUM(BATTLE_FRONTIER_MART), 1 }
};
u8 i;
- for (i = 0; i < 12; i++)
+ for (i = 0; i < ARRAY_COUNT(sPokeMarts); i++)
{
- if (gSaveBlock1Ptr->location.mapGroup == gUnknown_085B3420[i][0])
+ if (gSaveBlock1Ptr->location.mapGroup == sPokeMarts[i][0])
{
- if (gSaveBlock1Ptr->location.mapNum == gUnknown_085B3420[i][1])
+ if (gSaveBlock1Ptr->location.mapNum == sPokeMarts[i][1])
{
- return gUnknown_085B3420[i][2];
+ return sPokeMarts[i][2];
}
}
}
- return TRUE;
+ return 1;
}
bool32 sub_813B4E0(void)
@@ -3648,6 +3724,7 @@ bool32 sub_813B4E0(void)
return FALSE;
}
+// Always returns FALSE
bool32 sub_813B514(void)
{
if (!VarGet(VAR_ALWAYS_ZERO_0x403F))
@@ -3659,7 +3736,7 @@ bool32 sub_813B514(void)
void sub_813B534(void)
{
- gUnknown_0203AB70 = gBattleTypeFlags;
+ sUnknown_0203AB70 = gBattleTypeFlags;
gBattleTypeFlags = 0;
if (!gReceivedRemoteLinkPlayers)
{
@@ -3793,14 +3870,14 @@ static void sub_813B57C(u8 taskId)
{
sub_800AC34();
}
- gBattleTypeFlags = gUnknown_0203AB70;
+ gBattleTypeFlags = sUnknown_0203AB70;
EnableBothScriptContexts();
DestroyTask(taskId);
break;
}
}
-void sub_813B7D8(void)
+void Script_DoRayquazaScene(void)
{
if (gSpecialVar_0x8004 == 0)
{
@@ -3870,23 +3947,25 @@ static void _fwalk(u8 taskId)
}
}
-void sub_813B968(void)
+void GetBattlePyramidHint(void)
{
gSpecialVar_Result = gSpecialVar_0x8004 / 7;
gSpecialVar_Result -= (gSpecialVar_Result / 20) * 20;
}
-void sub_813B9A0(void)
+// Used to avoid a potential softlock if the player respawns on Dewford with no way off
+void ResetHealLocationFromDewford(void)
{
if (gSaveBlock1Ptr->lastHealLocation.mapGroup == MAP_GROUP(DEWFORD_TOWN) && gSaveBlock1Ptr->lastHealLocation.mapNum == MAP_NUM(DEWFORD_TOWN))
{
- SetLastHealLocationWarp(3);
+ SetLastHealLocationWarp(HEAL_LOCATION_PETALBURG_CITY);
}
}
-bool8 sub_813B9C0(void)
+bool8 InPokemonCenter(void)
{
- static const u16 gUnknown_085B3444[] = {
+ static const u16 sPokemonCenters[] =
+ {
MAP_OLDALE_TOWN_POKEMON_CENTER_1F,
MAP_DEWFORD_TOWN_POKEMON_CENTER_1F,
MAP_LAVARIDGE_TOWN_POKEMON_CENTER_1F,
@@ -3914,9 +3993,9 @@ bool8 sub_813B9C0(void)
int i;
u16 map = (gSaveBlock1Ptr->location.mapGroup << 8) + gSaveBlock1Ptr->location.mapNum;
- for (i = 0; gUnknown_085B3444[i] != 0xFFFF; i++)
+ for (i = 0; sPokemonCenters[i] != 0xFFFF; i++)
{
- if (gUnknown_085B3444[i] == map)
+ if (sPokemonCenters[i] == map)
{
return TRUE;
}
diff --git a/src/fight.c b/src/fight.c
index c924effae..5230c2f39 100644
--- a/src/fight.c
+++ b/src/fight.c
@@ -912,9 +912,9 @@ void sub_810D874(struct Sprite *sprite)
}
if (IsContest())
- sprite->oam.matrixNum |= 0x8;
+ sprite->oam.matrixNum |= ST_OAM_HFLIP;
else if (GetBattlerSide(battler) == B_SIDE_PLAYER)
- sprite->oam.matrixNum |= 0x18;
+ sprite->oam.matrixNum |= (ST_OAM_HFLIP | ST_OAM_VFLIP);
sprite->data[0] = 16;
sprite->data[1] = sprite->pos1.x;
diff --git a/src/fire.c b/src/fire.c
index 2998d46ca..fdbfb234e 100644
--- a/src/fire.c
+++ b/src/fire.c
@@ -949,7 +949,7 @@ static u16 sub_8109930(u8 spriteId)
{
u16 var1 = gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y + gSprites[spriteId].centerToCornerVecY;
- if (GetBattlerSide(gBattleAnimAttacker) == 0)
+ if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
{
var1 = ((var1 << 16) + 0x4A0000) >> 16;
}
@@ -1059,7 +1059,7 @@ static void sub_8109AFC(struct Sprite *sprite)
StartSpriteAnim(sprite, gBattleAnimArgs[2]);
sprite->data[7] = gBattleAnimArgs[2];
- if (GetBattlerSide(gBattleAnimAttacker) != 0)
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
{
sprite->data[4] = 4;
}
@@ -1073,7 +1073,7 @@ static void sub_8109AFC(struct Sprite *sprite)
break;
case 1:
sprite->data[1] += 192;
- if (GetBattlerSide(gBattleAnimAttacker) != 0)
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
{
sprite->pos2.y = -(sprite->data[1] >> 8);
}
diff --git a/src/flying.c b/src/flying.c
index a157582e9..3d04a543c 100644
--- a/src/flying.c
+++ b/src/flying.c
@@ -1800,7 +1800,7 @@ void sub_810EEF8(struct Sprite *sprite)
sprite->data[2] = gBattleAnimArgs[0];
if (sprite->data[2])
- sprite->oam.matrixNum = 8;
+ sprite->oam.matrixNum = ST_OAM_HFLIP;
if (gBattleAnimArgs[1] == 0)
{
diff --git a/src/frontier_util.c b/src/frontier_util.c
index 4dd8159cb..88e466e8c 100644
--- a/src/frontier_util.c
+++ b/src/frontier_util.c
@@ -794,15 +794,15 @@ static void sub_81A17A0(void)
case 0:
break;
case 1:
- sub_813A878(0);
+ FrontierGamblerSetWonOrLost(FALSE);
VarSet(VAR_TEMP_0, gSaveBlock2Ptr->frontier.field_CA8);
break;
case 4:
- sub_813A878(0);
+ FrontierGamblerSetWonOrLost(FALSE);
VarSet(VAR_TEMP_0, gSaveBlock2Ptr->frontier.field_CA8);
break;
case 3:
- sub_813A878(1);
+ FrontierGamblerSetWonOrLost(TRUE);
VarSet(VAR_TEMP_0, gSaveBlock2Ptr->frontier.field_CA8);
break;
case 2:
@@ -2503,7 +2503,7 @@ void CreateFrontierBrainPokemon(void)
monLevel,
sFrontierBrainsMons[facility][symbol][i].fixedIV,
TRUE, j,
- TRUE, FRONTIER_BRAIN_OTID);
+ OT_ID_PRESET, FRONTIER_BRAIN_OTID);
SetMonData(&gEnemyParty[monPartyId], MON_DATA_HELD_ITEM, &sFrontierBrainsMons[facility][symbol][i].heldItem);
for (j = 0; j < NUM_STATS; j++)
SetMonData(&gEnemyParty[monPartyId], MON_DATA_HP_EV + j, &sFrontierBrainsMons[facility][symbol][i].evs[j]);
diff --git a/src/ghost.c b/src/ghost.c
index dd29fb7ca..41621ff54 100644
--- a/src/ghost.c
+++ b/src/ghost.c
@@ -1039,7 +1039,7 @@ static void sub_81129F0(struct Sprite *sprite)
{
xDelta = 24;
xDelta2 = -2;
- sprite->oam.matrixNum = 8;
+ sprite->oam.matrixNum = ST_OAM_HFLIP;
}
else
{
diff --git a/src/hall_of_fame.c b/src/hall_of_fame.c
index fdf2020ff..ac37b2ece 100644
--- a/src/hall_of_fame.c
+++ b/src/hall_of_fame.c
@@ -755,7 +755,7 @@ static void Task_Hof_HandleExit(u8 taskId)
static void SetCallback2AfterHallOfFameDisplay(void)
{
- SetMainCallback2(sub_8175620);
+ SetMainCallback2(CB2_StartCreditsSequence);
}
#undef tDontSaveData
diff --git a/src/hof_pc.c b/src/hof_pc.c
index 01015ee81..327749179 100644
--- a/src/hof_pc.c
+++ b/src/hof_pc.c
@@ -27,7 +27,7 @@ static void ReshowPCMenuAfterHallOfFamePC(void)
{
ScriptContext2_Enable();
Overworld_PlaySpecialMapMusic();
- ScrSpecial_CreatePCMenu();
+ ScriptMenu_CreatePCMultichoice();
ScriptMenu_DisplayPCStartupPrompt();
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_BLACK);
CreateTask(Task_WaitForPaletteFade, 10);
diff --git a/src/ice.c b/src/ice.c
index 8f0c97d82..522fb1bbf 100644
--- a/src/ice.c
+++ b/src/ice.c
@@ -735,7 +735,7 @@ void AnimSwirlingSnowball_Step2(struct Sprite *sprite)
void AnimSwirlingSnowball_Step3(struct Sprite *sprite)
{
s16 tempVar;
- tempVar = GetBattlerSide(gBattleAnimAttacker) != 0 ? 20 : -20;
+ tempVar = GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER ? 20 : -20;
if (sprite->data[5] <= 31)
{
@@ -1190,12 +1190,12 @@ void InitPoisonGasCloudAnim(struct Sprite *sprite)
if (GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) < GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2))
sprite->data[7] = 0x8000;
- if (!(gBattlerPositions[gBattleAnimTarget] & 1))
+ if ((gBattlerPositions[gBattleAnimTarget] & BIT_SIDE) == B_SIDE_PLAYER)
{
gBattleAnimArgs[1] = -gBattleAnimArgs[1];
gBattleAnimArgs[3] = -gBattleAnimArgs[3];
- if ((sprite->data[7] & 0x8000) && !(gBattlerPositions[gBattleAnimAttacker] & 1))
+ if ((sprite->data[7] & 0x8000) && (gBattlerPositions[gBattleAnimAttacker] & BIT_SIDE) == B_SIDE_PLAYER)
sprite->subpriority = gSprites[GetAnimBattlerSpriteId(ANIM_TARGET)].subpriority + 1;
sprite->data[6] = 1;
diff --git a/src/international_string_util.c b/src/international_string_util.c
index 9dc795dd0..ec5057359 100644
--- a/src/international_string_util.c
+++ b/src/international_string_util.c
@@ -45,7 +45,7 @@ int GetMaxWidthInMenuTable(const struct MenuAction *str, int arg1)
var = stringWidth;
}
- return convert_pixel_width_to_tile_width(var);
+ return ConvertPixelWidthToTileWidth(var);
}
int sub_81DB3D8(const struct MenuAction *str, const u8* arg1, int arg2)
@@ -59,7 +59,7 @@ int sub_81DB3D8(const struct MenuAction *str, const u8* arg1, int arg2)
var = stringWidth;
}
- return convert_pixel_width_to_tile_width(var);
+ return ConvertPixelWidthToTileWidth(var);
}
int Intl_GetListMenuWidth(const struct ListMenuTemplate *listMenu)
diff --git a/src/item_menu.c b/src/item_menu.c
index 5b47a567b..12f03b328 100755
--- a/src/item_menu.c
+++ b/src/item_menu.c
@@ -118,9 +118,9 @@ void sub_81AD9C0(u8);
void sub_81ADB14(u8);
void sub_81ADA7C(u8);
void sub_81ADC0C(u8);
-void bag_menu_leave_maybe_3(void);
-void bag_menu_leave_maybe_2(void);
void bag_menu_leave_maybe(void);
+void CB2_FavorLadyExitBagMenu(void);
+void CB2_QuizLadyExitBagMenu(void);
void sub_81ABA6C(void);
static void SetPocketListPositions(void);
void sub_81ABAE0(void);
@@ -493,20 +493,20 @@ void sub_81AAC14(void)
void sub_81AAC28(void)
{
- GoToBagMenu(RETURN_LOCATION_FIELD_6, POCKETS_COUNT, bag_menu_leave_maybe_3);
+ GoToBagMenu(RETURN_LOCATION_FIELD_6, POCKETS_COUNT, bag_menu_leave_maybe);
gSpecialVar_0x8005 = 0;
gSpecialVar_Result = 0;
}
-void sub_81AAC50(void)
+void FavorLadyOpenBagMenu(void)
{
- GoToBagMenu(RETURN_LOCATION_FIELD_4, POCKETS_COUNT, bag_menu_leave_maybe_2);
+ GoToBagMenu(RETURN_LOCATION_FIELD_4, POCKETS_COUNT, CB2_FavorLadyExitBagMenu);
gSpecialVar_Result = 0;
}
-void sub_81AAC70(void)
+void QuizLadyOpenBagMenu(void)
{
- GoToBagMenu(RETURN_LOCATION_FIELD_5, POCKETS_COUNT, bag_menu_leave_maybe);
+ GoToBagMenu(RETURN_LOCATION_FIELD_5, POCKETS_COUNT, CB2_QuizLadyExitBagMenu);
gSpecialVar_Result = 0;
}
@@ -2202,7 +2202,7 @@ void unknown_ItemMenu_Show(u8 taskId)
unknown_ItemMenu_Confirm(taskId);
}
-void bag_menu_leave_maybe_3(void)
+void bag_menu_leave_maybe(void)
{
gFieldCallback = Apprentice_EnableBothScriptContexts;
SetMainCallback2(CB2_ReturnToField);
@@ -2216,9 +2216,9 @@ void unknown_ItemMenu_Give2(u8 taskId)
unknown_ItemMenu_Confirm(taskId);
}
-void bag_menu_leave_maybe_2(void)
+void CB2_FavorLadyExitBagMenu(void)
{
- gFieldCallback = sub_818DEF4;
+ gFieldCallback = FieldCallback_FavorLadyEnableScriptContexts;
SetMainCallback2(CB2_ReturnToField);
}
@@ -2229,9 +2229,9 @@ void unknown_ItemMenu_Confirm2(u8 taskId)
unknown_ItemMenu_Confirm(taskId);
}
-void bag_menu_leave_maybe(void)
+void CB2_QuizLadyExitBagMenu(void)
{
- gFieldCallback = sub_818E564;
+ gFieldCallback = FieldCallback_QuizLadyEnableScriptContexts;
SetMainCallback2(CB2_ReturnToField);
}
diff --git a/src/libagbsyscall.s b/src/libagbsyscall.s
new file mode 100644
index 000000000..d5639f689
--- /dev/null
+++ b/src/libagbsyscall.s
@@ -0,0 +1,116 @@
+ .include "constants/gba_constants.inc"
+ .include "asm/macros.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start ArcTan2
+ArcTan2: @ 82E7078
+ swi 0xA
+ bx lr
+ thumb_func_end ArcTan2
+
+ thumb_func_start BgAffineSet
+@ void BgAffineSet(BgAffineSet_src_data *src, BgAffineSet_dest_data *dest, int entry_count)
+BgAffineSet: @ 82E707C
+ swi 0xE
+ bx lr
+ thumb_func_end BgAffineSet
+
+ thumb_func_start CpuFastSet
+@ void CpuFastSet(void *src, void *dest, unsigned int mode)
+CpuFastSet: @ 82E7080
+ swi 0xC
+ bx lr
+ thumb_func_end CpuFastSet
+
+ thumb_func_start CpuSet
+@ void CpuSet(void *src, void *dest, unsigned int mode)
+CpuSet: @ 82E7084
+ swi 0xB
+ bx lr
+ thumb_func_end CpuSet
+
+ thumb_func_start Div
+Div: @ 82E7088
+ swi 0x6
+ bx lr
+ thumb_func_end Div
+
+ thumb_func_start LZ77UnCompVram
+@ void LZ77UnCompVram(void *src, void *dest)
+LZ77UnCompVram: @ 82E708C
+ swi 0x12
+ bx lr
+ thumb_func_end LZ77UnCompVram
+
+ thumb_func_start LZ77UnCompWram
+@ void LZ77UnCompWram(void *src, void *dest)
+LZ77UnCompWram: @ 82E7090
+ swi 0x11
+ bx lr
+ thumb_func_end LZ77UnCompWram
+
+ thumb_func_start MultiBoot
+@ s32 MultiBoot(struct MultiBootParam *mp)
+MultiBoot: @ 82E7094
+ movs r1, 0x1
+ swi 0x25
+ bx lr
+ thumb_func_end MultiBoot
+
+ thumb_func_start ObjAffineSet
+ObjAffineSet: @ 82E709C
+ swi 0xF
+ bx lr
+ thumb_func_end ObjAffineSet
+
+ thumb_func_start RLUnCompVram
+RLUnCompVram: @ 82E70A0
+ swi 0x15
+ bx lr
+ thumb_func_end RLUnCompVram
+
+ thumb_func_start RLUnCompWram
+RLUnCompWram: @ 82E70A4
+ swi 0x14
+ bx lr
+ thumb_func_end RLUnCompWram
+
+ thumb_func_start RegisterRamReset
+@ void RegisterRamReset(int ResetFlags)
+RegisterRamReset: @ 82E70A8
+ swi 0x1
+ bx lr
+ thumb_func_end RegisterRamReset
+
+ thumb_func_start SoftReset
+@ void SoftReset()
+SoftReset: @ 82E70AC
+ ldr r3, =REG_IME
+ movs r2, 0
+ strb r2, [r3]
+ ldr r1, =0x3007F00
+ mov sp, r1
+ swi 0x1
+ swi 0
+ .pool
+ thumb_func_end SoftReset
+
+ thumb_func_start Sqrt
+@ s16 Sqrt(int)
+Sqrt: @ 82E70C4
+ swi 0x8
+ bx lr
+ thumb_func_end Sqrt
+
+ thumb_func_start VBlankIntrWait
+@ void VBlankIntrWait()
+VBlankIntrWait: @ 82E70C8
+ movs r2, 0
+ swi 0x5
+ bx lr
+ thumb_func_end VBlankIntrWait
+
+ .align 2, 0 @ Don't pad with nop.
diff --git a/src/libgcnmultiboot.s b/src/libgcnmultiboot.s
new file mode 100644
index 000000000..0e418e51f
--- /dev/null
+++ b/src/libgcnmultiboot.s
@@ -0,0 +1,550 @@
+@ This library can be used to download and execute a multi-boot image from
+@ a GameCube using the JOY Bus protocol over the link cable.
+
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .equiv GCMB_STRUCT_BASE_DEST_PTR, 0x20
+ .equiv GCMB_STRUCT_CUR_DEST_PTR, 0x24
+ .equiv GCMB_STRUCT_SERIAL_INTR_HANDLER, 0x28
+
+ .equiv ROM_HEADER_NINTENDO_LOGO_OFFSET, 0x4
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start GameCubeMultiBoot_Hash
+GameCubeMultiBoot_Hash: @ 82DED70
+ push {r4,lr}
+ ldr r4, pool_HashVal
+ eors r3, r1
+ movs r2, 0x20
+
+GameCubeMultiBoot_Hash_Loop:
+ lsrs r3, 1
+ bcc GameCubeMultiBoot_Hash_SkipEor
+
+ eors r3, r4
+
+GameCubeMultiBoot_Hash_SkipEor:
+ subs r2, 0x1
+ bne GameCubeMultiBoot_Hash_Loop
+
+ pop {r4,pc}
+ thumb_func_end GameCubeMultiBoot_Hash
+
+ thumb_func_start GameCubeMultiBoot_Main
+@ void GameCubeMultiBoot_Main(struct GameCubeMultiBoot *mb);
+GameCubeMultiBoot_Main: @ 82DED84
+ ldr r1, [r0, GCMB_STRUCT_SERIAL_INTR_HANDLER]
+ cmp r1, 0
+ beq _082DEDAA
+ ldrb r1, [r0, 0x1]
+ adds r1, 0x1
+ strb r1, [r0, 0x1]
+ ldrb r1, [r0, 0x2]
+ cmp r1, 0x2
+ beq _082DEDF4
+ ldr r3, pool_InterruptRegs
+ ldrh r2, [r3, OFFSET_REG_IME - 0x200]
+ movs r1, 0
+ strh r1, [r3, OFFSET_REG_IME - 0x200]
+ ldrb r1, [r0]
+ cmp r1, 0xA
+ bgt _082DEDA8
+ adds r1, 0x1
+ strb r1, [r0]
+_082DEDA8:
+ strh r2, [r3, OFFSET_REG_IME - 0x200]
+_082DEDAA:
+ bcs GameCubeMultiBoot_Init
+ ldrb r1, [r0, 0x2]
+ cmp r1, 0
+ bne _082DEDF6
+ ldr r1, [r0, GCMB_STRUCT_CUR_DEST_PTR]
+ ldr r2, [r0, GCMB_STRUCT_BASE_DEST_PTR]
+ subs r1, r2
+ beq _082DEE76
+ cmp r1, 0xA0
+ bcc _082DEE76
+ push {r4-r6}
+ movs r1, 0x98
+ adds r2, ROM_HEADER_NINTENDO_LOGO_OFFSET
+ ldr r4, pool_NintendoLogo
+_082DEDC6:
+ ldm r2!, {r5}
+ ldm r4!, {r6}
+ cmp r5, r6
+ bne _082DEDDC
+ subs r1, 0x4
+ bne _082DEDC6
+ ldm r2!, {r5}
+ ldm r4!, {r6}
+ eors r5, r6
+ lsrs r5, 8
+ str r2, [r0, GCMB_STRUCT_BASE_DEST_PTR]
+_082DEDDC:
+ pop {r4-r6}
+ bne GameCubeMultiBoot_Init
+ movs r1, 0x1
+ strb r1, [r0, 0x2]
+ ldr r1, [r0, 0x4]
+ ldr r2, [r0, 0x8]
+ eors r1, r2
+ str r1, [r0, 0x18]
+ ldr r2, pool_Kawa
+ muls r1, r2
+ adds r1, 0x1
+ str r1, [r0, 0x14]
+_082DEDF4:
+ bx lr
+_082DEDF6:
+ ldr r1, [r0, GCMB_STRUCT_CUR_DEST_PTR]
+ mov r12, r1
+ ldr r3, [r0, 0x18]
+ push {r4-r7}
+ ldr r4, [r0, GCMB_STRUCT_BASE_DEST_PTR]
+ ldr r5, pool_Kawa
+ ldr r6, [r0, 0x14]
+ ldr r7, pool_HashVal
+_082DEE06:
+ cmp r4, r12
+ bcs _082DEE26
+ ldr r1, [r4]
+ eors r1, r6
+ adds r1, r3
+ stm r4!, {r1}
+ eors r3, r1
+ movs r2, 0x20
+_082DEE16:
+ lsrs r3, 1
+ bcc _082DEE1C
+ eors r3, r7
+_082DEE1C:
+ subs r2, 0x1
+ bne _082DEE16
+ muls r6, r5
+ adds r6, 0x1
+ b _082DEE06
+_082DEE26:
+ str r4, [r0, GCMB_STRUCT_BASE_DEST_PTR]
+ str r6, [r0, 0x14]
+ pop {r4-r7}
+ str r3, [r0, 0x18]
+ ldrh r1, [r0, 0x12]
+ cmp r1, 0
+ bne _082DEE76
+ ldr r1, [r0, GCMB_STRUCT_CUR_DEST_PTR]
+ ldr r2, [r0, GCMB_STRUCT_BASE_DEST_PTR]
+ cmp r1, r2
+ bne _082DEE76
+ ldr r1, [r0, 0xC]
+ cmp r1, 0
+ beq _082DEE60
+ ldrh r1, [r0, 0x10]
+ cmp r1, 0
+ beq _082DEDF4
+ mov r12, lr
+ movs r1, 0xBB
+ ldr r3, [r0, 0xC]
+ bl GameCubeMultiBoot_Hash
+ ldrh r1, [r0, 0x10]
+ mov lr, r12
+ subs r1, r3
+ bne GameCubeMultiBoot_Init
+ movs r1, 0x2
+ strb r1, [r0, 0x2]
+ bx lr
+_082DEE60:
+ mov r12, lr
+ ldrb r1, [r0, 0x3]
+ lsls r1, 24
+ subs r1, 0x1
+ str r1, [r0, 0xC]
+ bl GameCubeMultiBoot_Hash
+ lsls r3, 8
+ adds r3, 0xFF
+ str r3, [r0, 0x1C]
+ bx r12
+_082DEE76:
+ bx lr
+ thumb_func_end GameCubeMultiBoot_Main
+
+ .align 2, 0
+
+pool_HashVal: .4byte 0xa1c1
+
+pool_Kawa: .ascii "Kawa" @ name of BIOS developer
+
+pool_NintendoLogo: .4byte RomHeaderNintendoLogo
+
+ thumb_func_start GameCubeMultiBoot_ExecuteProgram
+@ void GameCubeMultiBoot_ExecuteProgram(struct GameCubeMultiBoot *mb);
+GameCubeMultiBoot_ExecuteProgram: @ 82DEE84
+ ldrb r1, [r0, 0x2]
+ cmp r1, 0x2
+ bne GameCubeMultiBoot_ExecuteProgram_Fail
+ ldr r3, pool_InterruptRegs
+ movs r1, 0
+ strh r1, [r3, OFFSET_REG_IME - 0x200]
+ ldr r1, pool_MultiBootLoadAddr
+ adds r1, 0xC0
+ bx r1
+GameCubeMultiBoot_ExecuteProgram_Fail:
+ bx lr
+ thumb_func_end GameCubeMultiBoot_ExecuteProgram
+
+ thumb_func_start GameCubeMultiBoot_Init
+@ void GameCubeMultiBoot_Init(struct GameCubeMultiBoot *mb);
+GameCubeMultiBoot_Init: @ 82DEE98
+ ldr r3, pool_InterruptRegs
+
+@ Save IME register.
+ ldrh r2, [r3, OFFSET_REG_IME - 0x200]
+
+@ Disable interrupts.
+ movs r1, 0
+ strh r1, [r3, OFFSET_REG_IME - 0x200]
+
+@ Set the handler to the "Stop" routine.
+@ Unless the first command that is received is a device reset command, the
+@ "Stop" routine will be executed and no further commands will be processed.
+ adr r3, GcMbIntrHandler_Stop
+ str r3, [r0, GCMB_STRUCT_SERIAL_INTR_HANDLER]
+
+ ldrb r3, [r0, 0x3]
+ push {r3}
+ ldrb r3, [r0, 0x1]
+ push {r0,r3}
+
+ adds r3, r0, 0
+ adds r3, GCMB_STRUCT_BASE_DEST_PTR
+
+@ clear all but the last 3 fields of the struct
+GameCubeMultiBoot_Init_ClearStructLoop:
+ stm r0!, {r1}
+ cmp r0, r3
+ blo GameCubeMultiBoot_Init_ClearStructLoop
+
+ pop {r0,r3}
+ lsrs r3, 1
+ strb r3, [r0, 0x3]
+ pop {r3}
+ strb r3, [r0, 0x1]
+
+ ldr r3, pool_SerialRegs
+
+@ Turn off JOY Bus mode.
+ lsls r0, r3, 10
+ strh r0, [r3, OFFSET_REG_RCNT - 0x120]
+
+@ Turn on JOY Bus mode.
+ movs r0, 0xC0
+ lsls r0, 8
+ strh r0, [r3, OFFSET_REG_RCNT - 0x120]
+
+@ Init JOY Bus registers.
+ movs r0, 0x47
+ strh r0, [r3, OFFSET_REG_JOYCNT - 0x120]
+ strh r1, [r3, OFFSET_REG_JOYSTAT - 0x120]
+
+ ldr r3, pool_InterruptRegs
+
+@ Acknowledge serial interrupt.
+ movs r0, INTR_FLAG_SERIAL
+ strh r0, [r3, OFFSET_REG_IF - 0x200]
+
+@ Enable serial interrupt.
+ ldrh r1, [r3, OFFSET_REG_IE - 0x200]
+ orrs r1, r0
+ strh r1, [r3, OFFSET_REG_IE - 0x200]
+
+@ Restore IME register.
+ strh r2, [r3, OFFSET_REG_IME - 0x200]
+
+ bx lr
+ thumb_func_end GameCubeMultiBoot_Init
+
+ non_word_aligned_thumb_func_start GameCubeMultiBoot_HandleSerialInterrupt
+@ void GameCubeMultiBoot_HandleSerialInterrupt(struct GameCubeMultiBoot *mb);
+GameCubeMultiBoot_HandleSerialInterrupt: @ 82DEEE2
+ ldr r3, pool_SerialRegs
+
+@ Acknowledge reset/receive/send flags.
+ ldrh r1, [r3, OFFSET_REG_JOYCNT - 0x120]
+ strh r1, [r3, OFFSET_REG_JOYCNT - 0x120]
+
+ movs r2, 0
+ strb r2, [r0]
+
+ ldr r2, [r0, GCMB_STRUCT_SERIAL_INTR_HANDLER]
+ cmp r2, 0
+ beq GameCubeMultiBoot_HandleSerialInterruptDone
+
+ lsrs r1, 1 @ was a device reset command received?
+ bcs GameCubeMultiBoot_BeginHandshake @ branch if so
+
+ mov pc, r2
+
+ .align 2, 0
+
+@ Zero the status and the interrupt handler pointer.
+@ Commands from the GameCube will not be processed after this is executed
+@ unless GameCubeMultiBoot_Init() is called again.
+GcMbIntrHandler_Stop:
+ movs r2, 0
+ strh r2, [r3, OFFSET_REG_JOYSTAT - 0x120]
+
+GameCubeMultiBoot_SetInterruptHandler:
+ str r2, [r0, GCMB_STRUCT_SERIAL_INTR_HANDLER]
+
+GameCubeMultiBoot_ReadVCount:
+ ldr r3, pool_RegDispstat
+ ldrh r1, [r3, OFFSET_REG_VCOUNT - OFFSET_REG_DISPSTAT]
+ strb r1, [r0, 0x3]
+
+GameCubeMultiBoot_HandleSerialInterruptDone:
+ bx lr
+
+GameCubeMultiBoot_BeginHandshake:
+ ldr r1, [r3, OFFSET_REG_JOY_RECV - 0x120]
+ ldr r1, pool_RubyUSAGameCode
+ str r1, [r3, OFFSET_REG_JOY_TRANS - 0x120]
+ movs r1, 0x10
+ strh r1, [r3, OFFSET_REG_JOYSTAT - 0x120]
+ ldrb r1, [r0, 0x3]
+ strb r1, [r0, 0x9]
+ ldrb r1, [r0, 0x2]
+ cmp r1, 0
+ bne GcMbIntrHandler_Stop
+ ldr r1, pool_MultiBootLoadAddr
+ str r1, [r0, GCMB_STRUCT_BASE_DEST_PTR]
+ str r1, [r0, GCMB_STRUCT_CUR_DEST_PTR]
+ adr r2, GcMbIntrHandler_CheckGameCodeSent
+ b GameCubeMultiBoot_SetInterruptHandler
+
+ .align 2, 0
+
+GcMbIntrHandler_CheckGameCodeSent: @ 82DEF24
+ lsls r1, 31
+ bcc GcMbIntrHandler_Stop @ stop if send failed
+ bmi GameCubeMultiBoot_CheckHandshakeResponse @ branch if receive is complete
+
+@ If the response hasn't been fully received yet,
+@ check again upon the next interrupt.
+ adr r2, GcMbIntrHandler_CheckHandshakeResponse
+ b GameCubeMultiBoot_SetInterruptHandler
+
+ .align 2, 0
+
+GcMbIntrHandler_CheckHandshakeResponse: @ 82DEF30
+ lsrs r1, 1 @ is receive complete?
+ bcc GcMbIntrHandler_Stop @ stop if not
+
+GameCubeMultiBoot_CheckHandshakeResponse:
+ ldr r1, [r3, OFFSET_REG_JOY_RECV - 0x120]
+ ldr r2, pool_RubyUSAGameCode
+ cmp r1, r2
+ bne GcMbIntrHandler_Stop @ stop if the GameCube didn't reply with the same game code
+ ldrb r1, [r0, 0x3]
+ strb r1, [r0, 0xB]
+ adr r2, GcMbIntrHandler_82DEF44
+ b GameCubeMultiBoot_SetInterruptHandler
+
+ .align 2, 0
+
+GcMbIntrHandler_82DEF44: @ 82DEF44
+ lsrs r1, 1 @ is receive complete?
+ bcc GcMbIntrHandler_Stop @ branch if not
+ ldr r1, [r3, OFFSET_REG_JOY_RECV - 0x120]
+ lsrs r2, r1, 24
+ cmp r2, 0xDD
+ bne GcMbIntrHandler_Stop
+ str r1, [r0, 0x4]
+ ldrb r1, [r0, 0x1]
+ strb r1, [r0, 0xA]
+ movs r2, 0
+ movs r3, 0
+ ldr r1, [r0, 0x8]
+ lsrs r1, 8
+_082DEF5E:
+ lsrs r1, 1
+ adcs r2, r3
+ cmp r1, 0
+ bne _082DEF5E
+ cmp r2, 0xE
+ bgt _082DEF70
+ cmp r2, 0x7
+ bge _082DEF72
+ movs r1, 0xFF
+_082DEF70:
+ strb r1, [r0, 0xA]
+_082DEF72:
+ ldr r1, [r0, 0x8]
+ adds r1, 0xEE
+ ldr r3, pool_SerialRegs
+ str r1, [r3, OFFSET_REG_JOY_TRANS - 0x120]
+ movs r1, 0x30
+ strh r1, [r3, OFFSET_REG_JOYSTAT - 0x120]
+ adr r2, GcMbIntrHandler_82DEF84
+ b GameCubeMultiBoot_SetInterruptHandler
+
+ .align 2, 0
+
+GcMbIntrHandler_82DEF84: @ 82DEF84
+ lsls r1, 31
+ bcc GcMbIntrHandler_Stop @ stop if send failed
+ bmi _082DEF94 @ branch if receive is complete
+ adr r2, GcMbIntrHandler_82DEF90
+ b GameCubeMultiBoot_SetInterruptHandler
+
+ .align 2, 0
+
+GcMbIntrHandler_82DEF90: @ 82DEF90
+ lsrs r1, 1 @ is receive complete?
+ bcc GcMbIntrHandler_Stop @ branch if not
+_082DEF94:
+ ldr r1, [r3, OFFSET_REG_JOY_RECV - 0x120]
+ ldr r2, _082DF034
+ cmp r1, r2
+ bhs GcMbIntrHandler_Stop
+ adds r1, 0x1
+ adds r1, r1
+ strh r1, [r0, 0x12]
+ ldrb r1, [r0, 0x2]
+ cmp r1, 0
+_082DEFA6:
+ bne GcMbIntrHandler_Stop
+ ldr r1, pool_MultiBootLoadAddr
+ str r1, [r0, GCMB_STRUCT_BASE_DEST_PTR]
+ str r1, [r0, GCMB_STRUCT_CUR_DEST_PTR]
+ adr r2, GcMbIntrHandler_82DEFB4
+ b GameCubeMultiBoot_SetInterruptHandler
+
+ .align 2, 0
+
+GcMbIntrHandler_82DEFB4: @ 82DEFB4
+ lsrs r1, 1 @ is receive complete?
+ bcc GcMbIntrHandler_Stop @ branch if not
+ ldr r2, [r0, GCMB_STRUCT_CUR_DEST_PTR]
+ movs r1, 0x4
+ ands r1, r2
+ adds r1, 0x8
+ lsls r1, 2
+ strh r1, [r3, OFFSET_REG_JOYSTAT - 0x120]
+ ldr r1, [r3, OFFSET_REG_JOY_RECV - 0x120]
+ stm r2!, {r1}
+ str r2, [r0, GCMB_STRUCT_CUR_DEST_PTR]
+ ldrh r1, [r0, 0x12]
+ subs r1, 0x1
+ strh r1, [r0, 0x12]
+ bne GameCubeMultiBoot_ReadVCount
+
+_082DEFD2:
+ ldrb r1, [r0, 0x1]
+ lsls r1, 8
+ adds r1, 0xCC
+ str r1, [r3, OFFSET_REG_JOY_TRANS - 0x120]
+ adr r2, _082DEFE0
+ b GameCubeMultiBoot_SetInterruptHandler
+
+ .align 2, 0
+
+_082DEFE0:
+ lsls r1, 31
+
+_082DEFE2:
+ bcc GcMbIntrHandler_Stop
+ ldr r1, [r0, 0x1C]
+ cmp r1, 0
+ beq _082DEFD2
+ str r1, [r3, OFFSET_REG_JOY_TRANS - 0x120]
+ adr r2, GcMbIntrHandler_82DEFF0
+ b GameCubeMultiBoot_SetInterruptHandler
+
+ .align 2, 0
+
+GcMbIntrHandler_82DEFF0: @ 82DEFF0
+ lsls r1, 31
+ bcc _082DEFE2 @ branch if send failed
+ bmi _082DF000 @ branch if receive is complete
+ adr r2, GcMbIntrHandler_82DEFFC
+ b GameCubeMultiBoot_SetInterruptHandler
+
+ .align 2, 0
+
+GcMbIntrHandler_82DEFFC: @ 82DEFFC
+ lsrs r1, 1 @ is receive complete?
+ bcc _082DEFE2 @ branch if not
+
+_082DF000:
+ ldr r1, [r3, OFFSET_REG_JOY_RECV - 0x120]
+ lsrs r2, r1, 24
+ cmp r2, 0xBB
+ bne _082DEFA6
+ strh r1, [r0, 0x10]
+ adr r2, GcMbIntrHandler_82DF010
+ b GameCubeMultiBoot_SetInterruptHandler
+
+ .align 2, 0
+
+GcMbIntrHandler_82DF010: @ 82DF010
+ b GcMbIntrHandler_Stop
+
+ thumb_func_end GameCubeMultiBoot_HandleSerialInterrupt
+
+ non_word_aligned_thumb_func_start GameCubeMultiBoot_Quit
+@ void GameCubeMultiBoot_Quit();
+GameCubeMultiBoot_Quit: @ 82DF012
+ ldr r3, pool_InterruptRegs
+
+@ Save IME register.
+ ldrh r2, [r3, OFFSET_REG_IME - 0x200]
+
+@ Disable interrupts.
+ movs r1, 0
+ strh r1, [r3, OFFSET_REG_IME - 0x200]
+
+ ldr r3, pool_SerialRegs
+
+@ Acknowledge all JOYCNT flags.
+ movs r0, 0x7
+ strh r0, [r3, OFFSET_REG_JOYCNT - 0x120]
+
+@ Turn off JOY Bus mode.
+ lsls r0, r3, 10
+ strh r0, [r3, OFFSET_REG_RCNT - 0x120] @ store 0x8000
+
+ ldr r3, pool_InterruptRegs
+
+@ Acknowledge serial interrupt.
+ movs r0, INTR_FLAG_SERIAL
+ strh r0, [r3, OFFSET_REG_IF - 0x200]
+
+@ Disable serial interrupt.
+ ldrh r1, [r3, OFFSET_REG_IE - 0x200]
+ bics r1, r0
+ strh r1, [r3, OFFSET_REG_IE - 0x200]
+
+@ Restore IME register.
+ strh r2, [r3, OFFSET_REG_IME - 0x200]
+
+ bx lr
+ thumb_func_end GameCubeMultiBoot_Quit
+
+ .align 2, 0
+
+_082DF034: .4byte 0x4000
+
+pool_InterruptRegs: .4byte REG_BASE + 0x200
+
+pool_SerialRegs: .4byte REG_BASE + 0x120
+
+pool_RegDispstat: .4byte REG_DISPSTAT
+
+pool_RubyUSAGameCode: .ascii "AXVE"
+
+pool_MultiBootLoadAddr: .4byte EWRAM_START
+
+ .align 2, 0 @ Don't pad with nop.
diff --git a/src/lilycove_lady.c b/src/lilycove_lady.c
index dc38d8848..011d9fdfd 100644
--- a/src/lilycove_lady.c
+++ b/src/lilycove_lady.c
@@ -1,7 +1,3 @@
-//
-// Created by Scott Norton on 9/19/17.
-//
-
#include "global.h"
#include "main.h"
#include "overworld.h"
@@ -18,215 +14,25 @@
#include "text.h"
#include "easy_chat.h"
#include "lilycove_lady.h"
-
-static void SetLilycoveQuizLady(void);
-static void SetLilycoveFavourLady(void);
-static void SetLilycoveContestLady(void);
-static void sub_818E004(void);
-static void sub_818DBC4(void);
-static void sub_818E674(void);
-static u8 sub_818E13C(void);
-static bool8 sub_818E1F4(void);
-static u8 sub_818E258(const u8 *);
-
-extern const u8 gText_Lady2[];
-
-static const u16 sUnknown_0860B074[] = {
- 0x62, 0xcb, 0xdc, 0xcc, 0xd1
-};
-static const u16 sUnknown_0860B07E[] = {
- 0x1a, 0x14, 0x0a
-};
-
-static const u16 Unknown_0860B084[] = {
- 0x101b, 0x1623, 0x1812, 0x102c, 0x020e, 0x0c03, 0x1a0b, 0x0210, 0x020d
-};
-
-static const u16 Unknown_0860B096[] = {
- 0x101b, 0x1013, 0x1020, 0x1a0f, 0x020c, 0x0c03, 0x0211, 0x0203, 0x0400
-};
-
-static const u16 Unknown_0860B0A8[] = {
- 0x0e0f, 0x1018, 0x020e, 0x0204, 0x0c03, 0xffff, 0x0212, 0x0451, 0x0463
-};
-
-static const u16 Unknown_0860B0BA[] = {
- 0x101b, 0x100b, 0x0e0d, 0x141a, 0x181d, 0x0c03, 0x141e, 0x1a26, 0x1823
-};
-
-static const u16 Unknown_0860B0CC[] = {
- 0x101b, 0x181d, 0x1018, 0x0a02, 0x2014, 0x0c03, 0x0208, 0x1824, 0x181c
-};
-
-static const u16 Unknown_0860B0DE[] = {
- 0x101b, 0x1000, 0x1c19, 0x265d, 0x0c03, 0xffff, 0x0447, 0x045d, 0x042c
-};
-
-static const u16 Unknown_0860B0F0[] = {
- 0x101b, 0x1034, 0x1e11, 0x100b, 0x1a08, 0x0c03, 0x044b, 0x0446, 0x040a
-};
-
-static const u16 Unknown_0860B102[] = {
- 0x101b, 0x1000, 0x274f, 0x0626, 0x0c03, 0xffff, 0x0442, 0x0411, 0x0450
-};
-
-static const u16 Unknown_0860B114[] = {
- 0x101b, 0x1000, 0x1c19, 0x043c, 0x0c03, 0xffff, 0x0421, 0x0464, 0x0435
-};
-
-static const u16 Unknown_0860B126[] = {
- 0x101b, 0x1203, 0x1030, 0x0207, 0x0c03, 0xffff, 0x0210, 0x020e, 0x020d
-};
-
-static const u16 Unknown_0860B138[] = {
- 0x101b, 0x1623, 0x0a05, 0x020e, 0x0c03, 0xffff, 0x1a25, 0x181a, 0x181b
-};
-
-static const u16 Unknown_0860B14A[] = {
- 0x101b, 0x1823, 0x1603, 0x0a02, 0x1812, 0x0c03, 0x1a15, 0x1a23, 0x181b
-};
-
-static const u16 Unknown_0860B15C[] = {
- 0x1020, 0x020e, 0x1010, 0x1043, 0x1e0f, 0x0c03, 0x181c, 0x1a24, 0x1816
-};
-
-static const u16 Unknown_0860B16E[] = {
- 0x0446, 0x100b, 0x0620, 0x061c, 0x101b, 0x0c03, 0x0420, 0x0426, 0xffff
-};
-
-static const u16 Unknown_0860B180[] = {
- 0x0400, 0x100b, 0x0639, 0x061c, 0x101b, 0x0c03, 0x040e, 0x0410, 0xffff
-};
-
-static const u16 Unknown_0860B192[] = {
- 0x041f, 0x100b, 0x0639, 0x061c, 0x101b, 0x0c03, 0x0445, 0x0400, 0xffff
-};
-
-static const u16 *const gUnknown_0860B1A4[] = {
- Unknown_0860B084,
- Unknown_0860B096,
- Unknown_0860B0A8,
- Unknown_0860B0BA,
- Unknown_0860B0CC,
- Unknown_0860B0DE,
- Unknown_0860B0F0,
- Unknown_0860B102,
- Unknown_0860B114,
- Unknown_0860B126,
- Unknown_0860B138,
- Unknown_0860B14A,
- Unknown_0860B15C,
- Unknown_0860B16E,
- Unknown_0860B180,
- Unknown_0860B192
-};
-
-static const u16 sUnknown_0860B1E4[] = {
- 0x0210, 0x0400, 0x0212, 0x1a26, 0x0208, 0x045d, 0x040a, 0x0411, 0x0464, 0x020e, 0x1a25, 0x181b, 0x1a24, 0x0420, 0x0410, 0x0400
-};
-
-static const u16 sUnknown_0860B204[] = {
- 0x007b, 0x007f, 0x0081, 0x0023, 0x0023, 0x0023, 0x00a5, 0x00a7, 0x00a6, 0x000b, 0x012f, 0x006b, 0x006d, 0x0044, 0x0044, 0x000c
-};
-
-extern const u8 gUnknown_085EEB83[];
-extern const u8 gUnknown_085EEB8C[];
-extern const u8 gUnknown_085EEB95[];
-extern const u8 gUnknown_085EEB9E[];
-extern const u8 gUnknown_085EEBA4[];
-extern const u8 gUnknown_085EEBAB[];
-
-static const u8 *const gUnknown_0860B224[] = {
- gUnknown_085EEB83,
- gUnknown_085EEB8C,
- gUnknown_085EEB95,
- gUnknown_085EEB9E,
- gUnknown_085EEBA4,
- gUnknown_085EEBAB
-};
-
-static const u16 Unknown_0860B23C[] = {
- 0x0056, 0x0053, 0x0054, 0x000e, 0x0012, 0x000f, 0x00a7, 0x0011, 0x0010, 0x0018, 0x0019, 0x001e, 0x0000
-};
-
-static const u16 Unknown_0860B256[] = {
- 0x0051, 0x006a, 0x006b, 0x00cc, 0x00c2, 0x002f, 0x0067, 0x0068, 0x0087, 0x0089, 0x008b, 0x009d, 0x00a0, 0x00a5, 0x0004, 0x0002, 0x0000
-};
-
-static const u16 Unknown_0860B278[] = {
- 0x0021, 0x000d, 0x001a, 0x001b, 0x001c, 0x00cc, 0x00ca, 0x0026, 0x0086, 0x0096, 0x0097, 0x009a, 0x00a2, 0x00a6, 0x0000
-};
-
-static const u16 Unknown_0860B296[] = {
- 0x0020, 0x004d, 0x004b, 0x004c, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x006e, 0x005d, 0x006c, 0x006d, 0x006a, 0x006b, 0x00d6, 0x00bc, 0x00b3, 0x000b, 0x000c, 0x0000
-};
-
-static const u16 Unknown_0860B2C0[] = {
- 0x001f, 0x0013, 0x0014, 0x004a, 0x004e, 0x0049, 0x00a5, 0x00c8, 0x0067, 0x006f, 0x0000
-};
-
-static const u16 Unknown_0860B2D6[] = {
- 0x00b7, 0x00d3, 0x00d2, 0x00d8, 0x009e, 0x00a6, 0x00ab, 0x00aa, 0x006c, 0x006d, 0x0000
-};
-
-static const u16 *const gUnknown_0860B2EC[] = {
- Unknown_0860B23C,
- Unknown_0860B256,
- Unknown_0860B278,
- Unknown_0860B296,
- Unknown_0860B2C0,
- Unknown_0860B2D6
-};
-
-static const u16 sUnknown_0860B304[] = {
- 0x0b, 0x6e, 0x40, 0x6f, 0x44, 0x47
-};
-
-extern const u8 gUnknown_085EEB2B[];
-extern const u8 gUnknown_085EEB34[];
-extern const u8 gUnknown_085EEB3A[];
-extern const u8 gUnknown_085EEB41[];
-extern const u8 gUnknown_085EEB4A[];
-extern const u8 gUnknown_085EEB51[];
-extern const u8 gUnknown_085EEB5A[];
-extern const u8 gUnknown_085EEB61[];
-extern const u8 gUnknown_085EEB6A[];
-extern const u8 gUnknown_085EEB74[];
-extern const u8 gUnknown_085EADA4[];
-extern const u8 gUnknown_085EADB5[];
-extern const u8 gUnknown_085EADC4[];
-extern const u8 gUnknown_085EADD5[];
-extern const u8 gUnknown_085EADE7[];
-
-static const u8 *const gUnknown_0860B310[] = {
- gUnknown_085EEB2B,
- gUnknown_085EEB34,
- gUnknown_085EEB3A,
- gUnknown_085EEB41,
- gUnknown_085EEB4A
-};
-static const u8 *const gUnknown_0860B324[] = {
- gUnknown_085EEB51,
- gUnknown_085EEB5A,
- gUnknown_085EEB61,
- gUnknown_085EEB6A,
- gUnknown_085EEB74
-};
-static const u8 *const gUnknown_0860B338[] = {
- gUnknown_085EADA4,
- gUnknown_085EADB5,
- gUnknown_085EADC4,
- gUnknown_085EADD5,
- gUnknown_085EADE7
-};
-
-static const u16 sUnknown_0860B34C[] = {
- 0x0120, 0x013b, 0x011e, 0x013d, 0x0019
-};
-
-static EWRAM_DATA struct LilycoveLadyFavour *gUnknown_0203CD64 = NULL;
-static EWRAM_DATA struct LilycoveLadyQuiz *gUnknown_0203CD68 = NULL;
-static EWRAM_DATA struct LilycoveLadyContest *gUnknown_0203CD6C = NULL;
+#include "contest.h"
+#include "strings.h"
+#include "constants/lilycove_lady.h"
+
+#include "data/lilycove_lady.h"
+
+static void InitLilycoveQuizLady(void);
+static void InitLilycoveFavorLady(void);
+static void InitLilycoveContestLady(void);
+static void ResetQuizLadyForRecordMix(void);
+static void ResetFavorLadyForRecordMix(void);
+static void ResetContestLadyForRecordMix(void);
+static u8 BufferQuizAuthorName(void);
+static bool8 IsQuizTrainerIdNotPlayer(void);
+static u8 GetPlayerNameLength(const u8 *);
+
+static EWRAM_DATA struct LilycoveLadyFavor *sFavorLadyPtr = NULL;
+static EWRAM_DATA struct LilycoveLadyQuiz *sQuizLadyPtr = NULL;
+static EWRAM_DATA struct LilycoveLadyContest *sContestLadyPtr = NULL;
extern EWRAM_DATA u16 gSpecialVar_ItemId;
@@ -235,15 +41,15 @@ u8 GetLilycoveLadyId(void)
return gSaveBlock1Ptr->lilycoveLady.id;
}
-void sub_818D9C0(void)
+void SetLilycoveLadyGfx(void)
{
LilycoveLady *lilycoveLady;
- VarSet(VAR_OBJ_GFX_ID_0, sUnknown_0860B07E[GetLilycoveLadyId()]);
+ VarSet(VAR_OBJ_GFX_ID_0, sLilycoveLadyGfxId[GetLilycoveLadyId()]);
if (GetLilycoveLadyId() == LILYCOVE_LADY_CONTEST)
{
lilycoveLady = &gSaveBlock1Ptr->lilycoveLady;
- VarSet(VAR_OBJ_GFX_ID_1, sUnknown_0860B074[lilycoveLady->contest.category]);
+ VarSet(VAR_OBJ_GFX_ID_1, sContestLadyMonGfxId[lilycoveLady->contest.category]);
gSpecialVar_Result = TRUE;
}
else
@@ -252,718 +58,722 @@ void sub_818D9C0(void)
}
}
-void SetLilycoveLady(void)
+void InitLilycoveLady(void)
{
- u16 id;
-
- id = ((gSaveBlock2Ptr->playerTrainerId[1] << 8) | gSaveBlock2Ptr->playerTrainerId[0]);
+ u16 id = ((gSaveBlock2Ptr->playerTrainerId[1] << 8) | gSaveBlock2Ptr->playerTrainerId[0]);
id %= 6;
id >>= 1;
switch (id)
{
case LILYCOVE_LADY_QUIZ:
- SetLilycoveQuizLady();
+ InitLilycoveQuizLady();
break;
- case LILYCOVE_LADY_FAVOUR:
- SetLilycoveFavourLady();
+ case LILYCOVE_LADY_FAVOR:
+ InitLilycoveFavorLady();
break;
case LILYCOVE_LADY_CONTEST:
- SetLilycoveContestLady();
+ InitLilycoveContestLady();
break;
}
}
-void sub_818DA78(void)
+void ResetLilycoveLadyForRecordMix(void)
{
switch (GetLilycoveLadyId())
{
case LILYCOVE_LADY_QUIZ:
- sub_818E004();
+ ResetQuizLadyForRecordMix();
break;
- case LILYCOVE_LADY_FAVOUR:
- sub_818DBC4();
+ case LILYCOVE_LADY_FAVOR:
+ ResetFavorLadyForRecordMix();
break;
case LILYCOVE_LADY_CONTEST:
- sub_818E674();
+ ResetContestLadyForRecordMix();
break;
}
}
-void SetLilycoveLadyRandomly(void)
+// Unused
+void InitLilycoveLadyRandomly(void)
{
- u8 id;
+ u8 lady = Random() % LILYCOVE_LADY_COUNT;
- id = Random() % 3;
- switch (id)
+ switch (lady)
{
case LILYCOVE_LADY_QUIZ:
- SetLilycoveQuizLady();
+ InitLilycoveQuizLady();
break;
- case LILYCOVE_LADY_FAVOUR:
- SetLilycoveFavourLady();
+ case LILYCOVE_LADY_FAVOR:
+ InitLilycoveFavorLady();
break;
case LILYCOVE_LADY_CONTEST:
- SetLilycoveContestLady();
+ InitLilycoveContestLady();
break;
}
}
-void sub_818DAEC(void)
+void Script_GetLilycoveLadyId(void)
{
gSpecialVar_Result = GetLilycoveLadyId();
}
-static u8 sub_818DB04(const u16 *data)
+static u8 GetNumAcceptedItems(const u16 *itemsArray)
{
- u8 len;
+ u8 items;
- for (len = 0; *data != 0; len ++, data ++);
- return len;
+ for (items = 0; *itemsArray != ITEM_NONE; items ++, itemsArray ++);
+ return items;
}
-static void sub_818DB20(void)
+static void FavorLadyPickFavorAndBestItem(void)
{
- u8 size;
- u8 idx;
+ u8 numItems;
+ u8 bestItem;
- gUnknown_0203CD64->unk_00c = Random() % 6;
- size = sub_818DB04(gUnknown_0860B2EC[gUnknown_0203CD64->unk_00c]);
- idx = Random() % size;
- gUnknown_0203CD64->unk_010 = gUnknown_0860B2EC[gUnknown_0203CD64->unk_00c][idx];
+ sFavorLadyPtr->favorId = Random() % ARRAY_COUNT(sFavorLadyRequests);
+ numItems = GetNumAcceptedItems(sFavorLadyAcceptedItemLists[sFavorLadyPtr->favorId]);
+ bestItem = Random() % numItems;
+ sFavorLadyPtr->bestItem = sFavorLadyAcceptedItemLists[sFavorLadyPtr->favorId][bestItem];
}
-static void SetLilycoveFavourLady(void)
+static void InitLilycoveFavorLady(void)
{
- gUnknown_0203CD64 = &gSaveBlock1Ptr->lilycoveLady.favour;
- gUnknown_0203CD64->id = LILYCOVE_LADY_FAVOUR;
- gUnknown_0203CD64->phase = 0;
- gUnknown_0203CD64->playerName[0] = EOS;
- gUnknown_0203CD64->unk_002 = 0;
- gUnknown_0203CD64->unk_003= 0;
- gUnknown_0203CD64->itemId = ITEM_NONE;
- gUnknown_0203CD64->language = gGameLanguage;
- sub_818DB20();
+ sFavorLadyPtr = &gSaveBlock1Ptr->lilycoveLady.favor;
+ sFavorLadyPtr->id = LILYCOVE_LADY_FAVOR;
+ sFavorLadyPtr->state = LILYCOVE_LADY_STATE_READY;
+ sFavorLadyPtr->playerName[0] = EOS;
+ sFavorLadyPtr->likedItem = FALSE;
+ sFavorLadyPtr->numItemsGiven = 0;
+ sFavorLadyPtr->itemId = ITEM_NONE;
+ sFavorLadyPtr->language = gGameLanguage;
+ FavorLadyPickFavorAndBestItem();
}
-static void sub_818DBC4(void)
+static void ResetFavorLadyForRecordMix(void)
{
- gUnknown_0203CD64 = &gSaveBlock1Ptr->lilycoveLady.favour;
- gUnknown_0203CD64->id = LILYCOVE_LADY_FAVOUR;
- gUnknown_0203CD64->phase = 0;
+ sFavorLadyPtr = &gSaveBlock1Ptr->lilycoveLady.favor;
+ sFavorLadyPtr->id = LILYCOVE_LADY_FAVOR;
+ sFavorLadyPtr->state = LILYCOVE_LADY_STATE_READY;
}
-u8 sub_818DBE8(void)
+u8 GetFavorLadyState(void)
{
- gUnknown_0203CD64 = &gSaveBlock1Ptr->lilycoveLady.favour;
- if (gUnknown_0203CD64->phase == 2)
+ sFavorLadyPtr = &gSaveBlock1Ptr->lilycoveLady.favor;
+ if (sFavorLadyPtr->state == LILYCOVE_LADY_STATE_PRIZE)
{
- return 2;
+ return LILYCOVE_LADY_STATE_PRIZE;
}
- else if (gUnknown_0203CD64->phase == 1)
+ else if (sFavorLadyPtr->state == LILYCOVE_LADY_STATE_COMPLETED)
{
- return 1;
+ return LILYCOVE_LADY_STATE_COMPLETED;
}
else
{
- return 0;
+ return LILYCOVE_LADY_STATE_READY;
}
}
-static const u8 *sub_818DC1C(u8 idx)
+static const u8 *GetFavorLadyRequest(u8 idx)
{
- return gUnknown_0860B224[idx];
+ return sFavorLadyRequests[idx];
}
-void sub_818DC2C(void)
+void BufferFavorLadyRequest(void)
{
- gUnknown_0203CD64 = &gSaveBlock1Ptr->lilycoveLady.favour;
- StringCopy(gStringVar1, sub_818DC1C(gUnknown_0203CD64->unk_00c));
+ sFavorLadyPtr = &gSaveBlock1Ptr->lilycoveLady.favor;
+ StringCopy(gStringVar1, GetFavorLadyRequest(sFavorLadyPtr->favorId));
}
-bool8 sub_818DC60(void)
+bool8 HasAnotherPlayerGivenFavorLadyItem(void)
{
- gUnknown_0203CD64 = &gSaveBlock1Ptr->lilycoveLady.favour;
- if (gUnknown_0203CD64->playerName[0] != EOS)
+ sFavorLadyPtr = &gSaveBlock1Ptr->lilycoveLady.favor;
+ if (sFavorLadyPtr->playerName[0] != EOS)
{
- StringCopy7(gStringVar3, gUnknown_0203CD64->playerName);
- ConvertInternationalString(gStringVar3, gUnknown_0203CD64->language);
+ StringCopy7(gStringVar3, sFavorLadyPtr->playerName);
+ ConvertInternationalString(gStringVar3, sFavorLadyPtr->language);
return TRUE;
}
return FALSE;
}
-static void sub_818DCAC(u8 *dest, u16 itemId)
+static void BufferItemName(u8 *dest, u16 itemId)
{
StringCopy(dest, ItemId_GetName(itemId));
}
-void sub_818DCC8(void)
+void BufferFavorLadyItemName(void)
{
- gUnknown_0203CD64 = &gSaveBlock1Ptr->lilycoveLady.favour;
- sub_818DCAC(gStringVar2, gUnknown_0203CD64->itemId);
+ sFavorLadyPtr = &gSaveBlock1Ptr->lilycoveLady.favor;
+ BufferItemName(gStringVar2, sFavorLadyPtr->itemId);
}
-static void sub_818DCF4(const u8 *src, u8 *dest)
+static void SetFavorLadyPlayerName(const u8 *src, u8 *dest)
{
memset(dest, 0xFF, 8);
StringCopy7(dest, src);
}
-void sub_818DD14(void)
+void BufferFavorLadyPlayerName(void)
{
- gUnknown_0203CD64 = &gSaveBlock1Ptr->lilycoveLady.favour;
- sub_818DCF4(gUnknown_0203CD64->playerName, gStringVar3);
- ConvertInternationalString(gStringVar3, gUnknown_0203CD64->language);
+ sFavorLadyPtr = &gSaveBlock1Ptr->lilycoveLady.favor;
+ SetFavorLadyPlayerName(sFavorLadyPtr->playerName, gStringVar3);
+ ConvertInternationalString(gStringVar3, sFavorLadyPtr->language);
}
-bool8 sub_818DD54(void)
+// Only used to determine if a record-mixed player had given her an item she liked
+bool8 DidFavorLadyLikeItem(void)
{
- gUnknown_0203CD64 = &gSaveBlock1Ptr->lilycoveLady.favour;
- return gUnknown_0203CD64->unk_002 ? TRUE : FALSE;
+ sFavorLadyPtr = &gSaveBlock1Ptr->lilycoveLady.favor;
+ return sFavorLadyPtr->likedItem ? TRUE : FALSE;
}
-void sub_818DD78(void)
+void Script_FavorLadyOpenBagMenu(void)
{
- sub_81AAC50();
+ FavorLadyOpenBagMenu();
}
-static bool8 sub_818DD84(u16 itemId)
+static bool8 DoesFavorLadyLikeItem(u16 itemId)
{
- u8 len;
+ u8 numItems;
u8 i;
- bool8 response;
-
- gUnknown_0203CD64 = &gSaveBlock1Ptr->lilycoveLady.favour;
- len = sub_818DB04(gUnknown_0860B2EC[gUnknown_0203CD64->unk_00c]);
- gUnknown_0203CD64->phase = 1;
- sub_818DCAC(gStringVar2, itemId);
- gUnknown_0203CD64->itemId = itemId;
- sub_818DCF4(gSaveBlock2Ptr->playerName, gUnknown_0203CD64->playerName);
- gUnknown_0203CD64->language = gGameLanguage;
- response = FALSE;
- for (i = 0; i < len; i ++)
- {
- if (gUnknown_0860B2EC[gUnknown_0203CD64->unk_00c][i] == itemId)
+ bool8 likedItem;
+
+ sFavorLadyPtr = &gSaveBlock1Ptr->lilycoveLady.favor;
+ numItems = GetNumAcceptedItems(sFavorLadyAcceptedItemLists[sFavorLadyPtr->favorId]);
+ sFavorLadyPtr->state = LILYCOVE_LADY_STATE_COMPLETED;
+ BufferItemName(gStringVar2, itemId);
+ sFavorLadyPtr->itemId = itemId;
+ SetFavorLadyPlayerName(gSaveBlock2Ptr->playerName, sFavorLadyPtr->playerName);
+ sFavorLadyPtr->language = gGameLanguage;
+ likedItem = FALSE;
+ for (i = 0; i < numItems; i ++)
+ {
+ if (sFavorLadyAcceptedItemLists[sFavorLadyPtr->favorId][i] == itemId)
{
- response = TRUE;
- gUnknown_0203CD64->unk_003 ++;
- gUnknown_0203CD64->unk_002 = 1;
- if (gUnknown_0203CD64->unk_010 == itemId)
+ likedItem = TRUE;
+ sFavorLadyPtr->numItemsGiven++;
+ sFavorLadyPtr->likedItem = TRUE;
+ if (sFavorLadyPtr->bestItem == itemId)
{
- gUnknown_0203CD64->unk_003 = 5;
+ sFavorLadyPtr->numItemsGiven = LILYCOVE_LADY_GIFT_THRESHOLD;
}
break;
}
- gUnknown_0203CD64->unk_002 = 0;
+ sFavorLadyPtr->likedItem = FALSE;
}
- return response;
+ return likedItem;
}
-bool8 sub_818DE44(void)
+bool8 Script_DoesFavorLadyLikeItem(void)
{
- return sub_818DD84(gSpecialVar_ItemId);
+ return DoesFavorLadyLikeItem(gSpecialVar_ItemId);
}
-bool8 sub_818DE5C(void)
+bool8 IsFavorLadyThresholdMet(void)
{
- u8 checkval;
+ u8 numItemsGiven;
- gUnknown_0203CD64 = &gSaveBlock1Ptr->lilycoveLady.favour;
- checkval = gUnknown_0203CD64->unk_003;
- return checkval < 5 ? FALSE : TRUE;
+ sFavorLadyPtr = &gSaveBlock1Ptr->lilycoveLady.favor;
+ numItemsGiven = sFavorLadyPtr->numItemsGiven;
+ return numItemsGiven < LILYCOVE_LADY_GIFT_THRESHOLD ? FALSE : TRUE;
}
-static void sub_818DE88(u16 itemId)
+static void FavorLadyBufferPrizeName(u16 prize)
{
- sub_818DCAC(gStringVar2, itemId);
+ BufferItemName(gStringVar2, prize);
}
-u16 sub_818DEA0(void)
+u16 FavorLadyGetPrize(void)
{
- u16 itemId;
+ u16 prize;
- gUnknown_0203CD64 = &gSaveBlock1Ptr->lilycoveLady.favour;
- itemId = sUnknown_0860B304[gUnknown_0203CD64->unk_00c];
- sub_818DE88(itemId);
- gUnknown_0203CD64->phase = 2;
- return itemId;
+ sFavorLadyPtr = &gSaveBlock1Ptr->lilycoveLady.favor;
+ prize = sFavorLadyPrizes[sFavorLadyPtr->favorId];
+ FavorLadyBufferPrizeName(prize);
+ sFavorLadyPtr->state = LILYCOVE_LADY_STATE_PRIZE;
+ return prize;
}
-void sub_818DEDC(void)
+void SetFavorLadyState_Complete(void)
{
- SetLilycoveFavourLady();
- gUnknown_0203CD64->phase = 1;
+ InitLilycoveFavorLady();
+ sFavorLadyPtr->state = LILYCOVE_LADY_STATE_COMPLETED;
}
-void sub_818DEF4(void)
+void FieldCallback_FavorLadyEnableScriptContexts(void)
{
EnableBothScriptContexts();
}
-static void sub_818DF00(void)
+static void QuizLadyPickQuestion(void)
{
- u8 v0;
+ u8 questionId;
u8 i;
- v0 = Random() % 16;
- for (i = 0; i < 9; i ++)
+ questionId = Random() % ARRAY_COUNT(sQuizLadyQuizQuestions);
+ for (i = 0; i < QUIZ_QUESTION_LEN; i ++)
{
- gUnknown_0203CD68->unk_002[i] = gUnknown_0860B1A4[v0][i];
+ sQuizLadyPtr->question[i] = sQuizLadyQuizQuestions[questionId][i];
}
- gUnknown_0203CD68->unk_014 = sUnknown_0860B1E4[v0];
- gUnknown_0203CD68->itemId = sUnknown_0860B204[v0];
- gUnknown_0203CD68->unk_02b = v0;
- gUnknown_0203CD68->playerName[0] = EOS;
+ sQuizLadyPtr->correctAnswer = sQuizLadyQuizAnswers[questionId];
+ sQuizLadyPtr->prize = sQuizLadyPrizes[questionId];
+ sQuizLadyPtr->questionId = questionId;
+ sQuizLadyPtr->playerName[0] = EOS;
}
-static void SetLilycoveQuizLady(void)
+static void InitLilycoveQuizLady(void)
{
u8 i;
- gUnknown_0203CD68 = &gSaveBlock1Ptr->lilycoveLady.quiz;
- gUnknown_0203CD68->id = LILYCOVE_LADY_QUIZ;
- gUnknown_0203CD68->phase = 0;
- for (i = 0; i < 9; i ++)
+ sQuizLadyPtr = &gSaveBlock1Ptr->lilycoveLady.quiz;
+ sQuizLadyPtr->id = LILYCOVE_LADY_QUIZ;
+ sQuizLadyPtr->state = LILYCOVE_LADY_STATE_READY;
+ for (i = 0; i < QUIZ_QUESTION_LEN; i ++)
{
- gUnknown_0203CD68->unk_002[i] = -1;
+ sQuizLadyPtr->question[i] = -1;
}
- gUnknown_0203CD68->unk_014 = -1;
- gUnknown_0203CD68->unk_016 = -1;
- for (i = 0; i < 4; i ++)
+ sQuizLadyPtr->correctAnswer = -1;
+ sQuizLadyPtr->playerAnswer = -1;
+ for (i = 0; i < TRAINER_ID_LENGTH; i ++)
{
- gUnknown_0203CD68->playerTrainerId[i] = 0;
+ sQuizLadyPtr->playerTrainerId[i] = 0;
}
- gUnknown_0203CD68->itemId = ITEM_NONE;
- gUnknown_0203CD68->unk_02a = 0;
- gUnknown_0203CD68->unk_02c = 0x10;
- gUnknown_0203CD68->language = gGameLanguage;
- sub_818DF00();
+ sQuizLadyPtr->prize = ITEM_NONE;
+ sQuizLadyPtr->waitingForChallenger = FALSE;
+ sQuizLadyPtr->prevQuestionId = ARRAY_COUNT(sQuizLadyQuizQuestions);
+ sQuizLadyPtr->language = gGameLanguage;
+ QuizLadyPickQuestion();
}
-static void sub_818E004(void)
+static void ResetQuizLadyForRecordMix(void)
{
- gUnknown_0203CD68 = &gSaveBlock1Ptr->lilycoveLady.quiz;
- gUnknown_0203CD68->id = LILYCOVE_LADY_QUIZ;
- gUnknown_0203CD68->phase = 0;
- gUnknown_0203CD68->unk_02a = 0;
- gUnknown_0203CD68->unk_016 = -1;
+ sQuizLadyPtr = &gSaveBlock1Ptr->lilycoveLady.quiz;
+ sQuizLadyPtr->id = LILYCOVE_LADY_QUIZ;
+ sQuizLadyPtr->state = LILYCOVE_LADY_STATE_READY;
+ sQuizLadyPtr->waitingForChallenger = FALSE;
+ sQuizLadyPtr->playerAnswer = -1;
}
-u8 sub_818E038(void)
+u8 GetQuizLadyState(void)
{
- gUnknown_0203CD68 = &gSaveBlock1Ptr->lilycoveLady.quiz;
- if (gUnknown_0203CD68->phase == 2)
+ sQuizLadyPtr = &gSaveBlock1Ptr->lilycoveLady.quiz;
+ if (sQuizLadyPtr->state == LILYCOVE_LADY_STATE_PRIZE)
{
- return 2;
+ return LILYCOVE_LADY_STATE_PRIZE;
}
- else if (gUnknown_0203CD68->phase == 1)
+ else if (sQuizLadyPtr->state == LILYCOVE_LADY_STATE_COMPLETED)
{
- return 1;
+ return LILYCOVE_LADY_STATE_COMPLETED;
}
else
{
- return 0;
+ return LILYCOVE_LADY_STATE_READY;
}
}
-u8 sub_818E06C(void)
+u8 GetQuizAuthor(void)
{
int i;
int j;
- u8 rv;
+ u8 authorNameId;
struct LilycoveLadyQuiz *quiz;
quiz = &gSaveBlock1Ptr->lilycoveLady.quiz;
- if (sub_811F8D8(quiz->unk_014) == 0)
- {
- i = quiz->unk_02b;
+ if (sub_811F8D8(quiz->correctAnswer) == 0)
+ {
+ i = quiz->questionId;
do
{
- if (++ i >= 16)
+ if (++ i >= (int)(ARRAY_COUNT(sQuizLadyQuizQuestions)))
{
i = 0;
}
- } while (sub_811F8D8(sUnknown_0860B1E4[i]) == 0);
- for (j = 0; j < 9; j ++)
+ } while (sub_811F8D8(sQuizLadyQuizAnswers[i]) == 0);
+ for (j = 0; j < QUIZ_QUESTION_LEN; j ++)
{
- quiz->unk_002[j] = gUnknown_0860B1A4[i][j];
+ quiz->question[j] = sQuizLadyQuizQuestions[i][j];
}
- quiz->unk_014 = sUnknown_0860B1E4[i];
- quiz->itemId = sUnknown_0860B204[i];
- quiz->unk_02b = i;
+ quiz->correctAnswer = sQuizLadyQuizAnswers[i];
+ quiz->prize = sQuizLadyPrizes[i];
+ quiz->questionId = i;
quiz->playerName[0] = EOS;
}
- rv = sub_818E13C();
- if (rv == 0)
+ authorNameId = BufferQuizAuthorName();
+ if (authorNameId == QUIZ_AUTHOR_NAME_LADY)
{
- return 2;
+ return QUIZ_AUTHOR_LADY;
}
- else if (rv == 2 || sub_818E1F4())
+ else if (authorNameId == QUIZ_AUTHOR_NAME_OTHER_PLAYER || IsQuizTrainerIdNotPlayer())
{
- return 1;
+ return QUIZ_AUTHOR_OTHER_PLAYER;
}
else
{
- return 0;
+ return QUIZ_AUTHOR_PLAYER;
}
}
-static u8 sub_818E13C(void)
+static u8 BufferQuizAuthorName(void)
{
- u8 retval;
- u8 len;
+ u8 authorNameId;
+ u8 nameLen;
u8 i;
- retval = 1;
- gUnknown_0203CD68 = &gSaveBlock1Ptr->lilycoveLady.quiz;
- if (gUnknown_0203CD68->playerName[0] == EOS)
+ authorNameId = QUIZ_AUTHOR_NAME_PLAYER;
+ sQuizLadyPtr = &gSaveBlock1Ptr->lilycoveLady.quiz;
+ if (sQuizLadyPtr->playerName[0] == EOS)
{
- StringCopy7(gStringVar1, gText_Lady2);
- retval = 0;
+ StringCopy7(gStringVar1, gText_QuizLady_Lady);
+ authorNameId = QUIZ_AUTHOR_NAME_LADY;
}
else
{
- StringCopy7(gStringVar1, gUnknown_0203CD68->playerName);
- ConvertInternationalString(gStringVar1, gUnknown_0203CD68->language);
- len = sub_818E258(gUnknown_0203CD68->playerName);
- if (len == sub_818E258(gSaveBlock2Ptr->playerName))
+ StringCopy7(gStringVar1, sQuizLadyPtr->playerName);
+ ConvertInternationalString(gStringVar1, sQuizLadyPtr->language);
+ nameLen = GetPlayerNameLength(sQuizLadyPtr->playerName);
+ if (nameLen == GetPlayerNameLength(gSaveBlock2Ptr->playerName))
{
- u8 *name = gUnknown_0203CD68->playerName;
- for (i = 0; i < len; i ++)
+ u8 *name = sQuizLadyPtr->playerName;
+ for (i = 0; i < nameLen; i ++)
{
- name = gUnknown_0203CD68->playerName;
+ name = sQuizLadyPtr->playerName;
if (name[i] != gSaveBlock2Ptr->playerName[i])
{
- retval = 2;
+ authorNameId = QUIZ_AUTHOR_NAME_OTHER_PLAYER;
break;
}
}
}
}
- return retval;
+ return authorNameId;
}
-static u8 sub_818E1F4(void)
+static bool8 IsQuizTrainerIdNotPlayer(void)
{
- bool8 response;
+ bool8 notPlayer;
u8 i;
- gUnknown_0203CD68 = &gSaveBlock1Ptr->lilycoveLady.quiz;
- response = FALSE;
- for (i = 0; i < 4; i ++)
+ sQuizLadyPtr = &gSaveBlock1Ptr->lilycoveLady.quiz;
+ notPlayer = FALSE;
+ for (i = 0; i < TRAINER_ID_LENGTH; i ++)
{
- if (gUnknown_0203CD68->playerTrainerId[i] != gSaveBlock2Ptr->playerTrainerId[i])
+ if (sQuizLadyPtr->playerTrainerId[i] != gSaveBlock2Ptr->playerTrainerId[i])
{
- response = TRUE;
+ notPlayer = TRUE;
break;
}
}
- return response;
+ return notPlayer;
}
-static u8 sub_818E258(const u8 *str)
+static u8 GetPlayerNameLength(const u8 *playerName)
{
u8 len;
const u8 *ptr;
- for (len = 0, ptr = str; *ptr != EOS; len ++, ptr ++);
+ for (len = 0, ptr = playerName; *ptr != EOS; len ++, ptr ++);
return len;
}
-void sub_818E274(void)
+void BufferQuizPrizeName(void)
{
- StringCopy(gStringVar1, ItemId_GetName(gUnknown_0203CD68->itemId));
+ StringCopy(gStringVar1, ItemId_GetName(sQuizLadyPtr->prize));
}
-bool8 sub_818E298(void)
+bool8 BufferQuizAuthorNameAndCheckIfLady(void)
{
- gUnknown_0203CD68 = &gSaveBlock1Ptr->lilycoveLady.quiz;
- if (!sub_818E13C())
+ sQuizLadyPtr = &gSaveBlock1Ptr->lilycoveLady.quiz;
+ if (BufferQuizAuthorName() == QUIZ_AUTHOR_NAME_LADY)
{
- gUnknown_0203CD68->language = gGameLanguage;
+ sQuizLadyPtr->language = gGameLanguage;
return TRUE;
}
return FALSE;
}
-u8 sub_818E2D8(void)
+bool8 IsQuizLadyWaitingForChallenger(void)
{
- gUnknown_0203CD68 = &gSaveBlock1Ptr->lilycoveLady.quiz;
- return gUnknown_0203CD68->unk_02a;
+ sQuizLadyPtr = &gSaveBlock1Ptr->lilycoveLady.quiz;
+ return sQuizLadyPtr->waitingForChallenger;
}
-void sub_818E2FC(void)
+void QuizLadyGetPlayerAnswer(void)
{
ShowEasyChatScreen();
}
-bool8 sub_818E308(void)
+bool8 IsQuizAnswerCorrect(void)
{
- gUnknown_0203CD68 = &gSaveBlock1Ptr->lilycoveLady.quiz;
- CopyEasyChatWord(gStringVar1, gUnknown_0203CD68->unk_014);
- CopyEasyChatWord(gStringVar2, gUnknown_0203CD68->unk_016);
+ sQuizLadyPtr = &gSaveBlock1Ptr->lilycoveLady.quiz;
+ CopyEasyChatWord(gStringVar1, sQuizLadyPtr->correctAnswer);
+ CopyEasyChatWord(gStringVar2, sQuizLadyPtr->playerAnswer);
return StringCompare(gStringVar1, gStringVar2) ? FALSE : TRUE;
}
-void sub_818E358(void)
+void BufferQuizPrizeItem(void)
{
- gUnknown_0203CD68 = &gSaveBlock1Ptr->lilycoveLady.quiz;
- gSpecialVar_0x8005 = gUnknown_0203CD68->itemId;
+ sQuizLadyPtr = &gSaveBlock1Ptr->lilycoveLady.quiz;
+ gSpecialVar_0x8005 = sQuizLadyPtr->prize;
}
-void sub_818E37C(void)
+void SetQuizLadyState_Complete(void)
{
- gUnknown_0203CD68 = &gSaveBlock1Ptr->lilycoveLady.quiz;
- gUnknown_0203CD68->phase = 1;
+ sQuizLadyPtr = &gSaveBlock1Ptr->lilycoveLady.quiz;
+ sQuizLadyPtr->state = LILYCOVE_LADY_STATE_COMPLETED;
}
-void sub_818E39C(void)
+void SetQuizLadyState_GivePrize(void)
{
- gUnknown_0203CD68 = &gSaveBlock1Ptr->lilycoveLady.quiz;
- gUnknown_0203CD68->phase = 2;
+ sQuizLadyPtr = &gSaveBlock1Ptr->lilycoveLady.quiz;
+ sQuizLadyPtr->state = LILYCOVE_LADY_STATE_PRIZE;
}
-void sub_818E3BC(void)
+void ClearQuizLadyPlayerAnswer(void)
{
- gUnknown_0203CD68 = &gSaveBlock1Ptr->lilycoveLady.quiz;
- gUnknown_0203CD68->unk_016 = -1;
+ sQuizLadyPtr = &gSaveBlock1Ptr->lilycoveLady.quiz;
+ sQuizLadyPtr->playerAnswer = -1;
}
-void sub_818E3E0(void)
+void Script_QuizLadyOpenBagMenu(void)
{
- sub_81AAC70();
+ QuizLadyOpenBagMenu();
}
-void sub_818E3EC(void)
+void QuizLadyPickNewQuestion(void)
{
- gUnknown_0203CD68 = &gSaveBlock1Ptr->lilycoveLady.quiz;
- if (sub_818E298())
+ sQuizLadyPtr = &gSaveBlock1Ptr->lilycoveLady.quiz;
+ if (BufferQuizAuthorNameAndCheckIfLady())
{
- gUnknown_0203CD68->unk_02c = gUnknown_0203CD68->unk_02b;
+ sQuizLadyPtr->prevQuestionId = sQuizLadyPtr->questionId;
}
else
{
- gUnknown_0203CD68->unk_02c = 0x10;
+ sQuizLadyPtr->prevQuestionId = ARRAY_COUNT(sQuizLadyQuizQuestions);
}
- sub_818DF00();
+ QuizLadyPickQuestion();
}
-void sub_818E430(void)
+void ClearQuizLadyQuestionAndAnswer(void)
{
u8 i;
- gUnknown_0203CD68 = &gSaveBlock1Ptr->lilycoveLady.quiz;
- for (i = 0; i < 9; i ++)
+ sQuizLadyPtr = &gSaveBlock1Ptr->lilycoveLady.quiz;
+ for (i = 0; i < QUIZ_QUESTION_LEN; i ++)
{
- gUnknown_0203CD68->unk_002[i] = -1;
+ sQuizLadyPtr->question[i] = -1;
}
- gUnknown_0203CD68->unk_014 = -1;
+ sQuizLadyPtr->correctAnswer = -1;
}
-void sub_818E47C(void)
+void QuizLadySetCustomQuestion(void)
{
gSpecialVar_0x8004 = EASY_CHAT_TYPE_QUIZ_SET_QUESTION;
ShowEasyChatScreen();
}
-void sub_818E490(void)
+void QuizLadyTakePrizeForCustomQuiz(void)
{
RemoveBagItem(gSpecialVar_ItemId, 1);
}
-void sub_818E4A4(void)
+void QuizLadyRecordCustomQuizData(void)
{
u8 i;
- gUnknown_0203CD68 = &gSaveBlock1Ptr->lilycoveLady.quiz;
- gUnknown_0203CD68->itemId = gSpecialVar_ItemId;
- for (i = 0; i < 4; i ++)
+ sQuizLadyPtr = &gSaveBlock1Ptr->lilycoveLady.quiz;
+ sQuizLadyPtr->prize = gSpecialVar_ItemId;
+ for (i = 0; i < TRAINER_ID_LENGTH; i ++)
{
- gUnknown_0203CD68->playerTrainerId[i] = gSaveBlock2Ptr->playerTrainerId[i];
+ sQuizLadyPtr->playerTrainerId[i] = gSaveBlock2Ptr->playerTrainerId[i];
}
- StringCopy7(gUnknown_0203CD68->playerName, gSaveBlock2Ptr->playerName);
- gUnknown_0203CD68->language = gGameLanguage;
+ StringCopy7(sQuizLadyPtr->playerName, gSaveBlock2Ptr->playerName);
+ sQuizLadyPtr->language = gGameLanguage;
}
-void sub_818E510(void)
+void QuizLadySetWaitingForChallenger(void)
{
- gUnknown_0203CD68 = &gSaveBlock1Ptr->lilycoveLady.quiz;
- gUnknown_0203CD68->unk_02a = 1;
+ sQuizLadyPtr = &gSaveBlock1Ptr->lilycoveLady.quiz;
+ sQuizLadyPtr->waitingForChallenger = TRUE;
}
-void sub_818E538(void)
+void BufferQuizCorrectAnswer(void)
{
- gUnknown_0203CD68 = &gSaveBlock1Ptr->lilycoveLady.quiz;
- CopyEasyChatWord(gStringVar3, gUnknown_0203CD68->unk_014);
+ sQuizLadyPtr = &gSaveBlock1Ptr->lilycoveLady.quiz;
+ CopyEasyChatWord(gStringVar3, sQuizLadyPtr->correctAnswer);
}
-void sub_818E564(void)
+
+void FieldCallback_QuizLadyEnableScriptContexts(void)
{
EnableBothScriptContexts();
}
-void sub_818E570(const LilycoveLady *lilycoveLady)
+void QuizLadyClearQuestionForRecordMix(const LilycoveLady *lilycoveLady)
{
u8 i;
- gUnknown_0203CD68 = &gSaveBlock1Ptr->lilycoveLady.quiz;
- if (lilycoveLady->quiz.unk_02c < 16 && gUnknown_0203CD68->id == LILYCOVE_LADY_QUIZ)
+ sQuizLadyPtr = &gSaveBlock1Ptr->lilycoveLady.quiz;
+ if (lilycoveLady->quiz.prevQuestionId < ARRAY_COUNT(sQuizLadyQuizQuestions)
+ && sQuizLadyPtr->id == LILYCOVE_LADY_QUIZ)
{
for (i = 0; i < 4; i ++)
{
- if (lilycoveLady->quiz.unk_02c != gUnknown_0203CD68->unk_02b)
+ if (lilycoveLady->quiz.prevQuestionId != sQuizLadyPtr->questionId)
{
break;
}
- gUnknown_0203CD68->unk_02b = Random() % 16;
+ sQuizLadyPtr->questionId = Random() % ARRAY_COUNT(sQuizLadyQuizQuestions);
}
- if (lilycoveLady->quiz.unk_02c == gUnknown_0203CD68->unk_02b)
+ if (lilycoveLady->quiz.prevQuestionId == sQuizLadyPtr->questionId)
{
- gUnknown_0203CD68->unk_02b = (gUnknown_0203CD68->unk_02b + 1) % 16;
+ sQuizLadyPtr->questionId = (sQuizLadyPtr->questionId + 1) % (int)(ARRAY_COUNT(sQuizLadyQuizQuestions));
}
- gUnknown_0203CD68->unk_02c = lilycoveLady->quiz.unk_02c;
+ sQuizLadyPtr->prevQuestionId = lilycoveLady->quiz.prevQuestionId;
}
}
-static void sub_818E604(void)
+static void ResetContestLadyContestData(void)
{
- gUnknown_0203CD6C->playerName[0] = EOS;
- gUnknown_0203CD6C->fave_pkblk = 0;
- gUnknown_0203CD6C->other_pkblk = 0;
- gUnknown_0203CD6C->max_sheen = 0;
- gUnknown_0203CD6C->category = Random() % 5;
+ sContestLadyPtr->playerName[0] = EOS;
+ sContestLadyPtr->numGoodPokeblocksGiven = 0;
+ sContestLadyPtr->numOtherPokeblocksGiven = 0;
+ sContestLadyPtr->maxSheen = 0;
+ sContestLadyPtr->category = Random() % CONTEST_CATEGORIES_COUNT;
}
-static void SetLilycoveContestLady(void)
+static void InitLilycoveContestLady(void)
{
- gUnknown_0203CD6C = &gSaveBlock1Ptr->lilycoveLady.contest;
- gUnknown_0203CD6C->id = LILYCOVE_LADY_CONTEST;
- gUnknown_0203CD6C->phase = 0;
- sub_818E604();
- gUnknown_0203CD6C->language = gGameLanguage;
+ sContestLadyPtr = &gSaveBlock1Ptr->lilycoveLady.contest;
+ sContestLadyPtr->id = LILYCOVE_LADY_CONTEST;
+ sContestLadyPtr->givenPokeblock = FALSE;
+ ResetContestLadyContestData();
+ sContestLadyPtr->language = gGameLanguage;
}
-static void sub_818E674(void)
+static void ResetContestLadyForRecordMix(void)
{
- gUnknown_0203CD6C = &gSaveBlock1Ptr->lilycoveLady.contest;
- gUnknown_0203CD6C->id = LILYCOVE_LADY_CONTEST;
- gUnknown_0203CD6C->phase = 0;
- if (gUnknown_0203CD6C->fave_pkblk == 5 || gUnknown_0203CD6C->other_pkblk == 5)
+ sContestLadyPtr = &gSaveBlock1Ptr->lilycoveLady.contest;
+ sContestLadyPtr->id = LILYCOVE_LADY_CONTEST;
+ sContestLadyPtr->givenPokeblock = FALSE;
+ if (sContestLadyPtr->numGoodPokeblocksGiven == LILYCOVE_LADY_GIFT_THRESHOLD
+ || sContestLadyPtr->numOtherPokeblocksGiven == LILYCOVE_LADY_GIFT_THRESHOLD)
{
- sub_818E604();
+ ResetContestLadyContestData();
}
}
-static void sub_818E6B0(u8 sheen)
+static void ContestLadySavePlayerNameIfHighSheen(u8 sheen)
{
- gUnknown_0203CD6C = &gSaveBlock1Ptr->lilycoveLady.contest;
- if (gUnknown_0203CD6C->max_sheen <= sheen)
+ sContestLadyPtr = &gSaveBlock1Ptr->lilycoveLady.contest;
+ if (sContestLadyPtr->maxSheen <= sheen)
{
- gUnknown_0203CD6C->max_sheen = sheen;
- memset(gUnknown_0203CD6C->playerName, EOS, sizeof(gUnknown_0203CD6C->playerName));
- memcpy(gUnknown_0203CD6C->playerName, gSaveBlock2Ptr->playerName, sizeof(gUnknown_0203CD6C->playerName));
- gUnknown_0203CD6C->language = gGameLanguage;
+ sContestLadyPtr->maxSheen = sheen;
+ memset(sContestLadyPtr->playerName, EOS, sizeof(sContestLadyPtr->playerName));
+ memcpy(sContestLadyPtr->playerName, gSaveBlock2Ptr->playerName, sizeof(sContestLadyPtr->playerName));
+ sContestLadyPtr->language = gGameLanguage;
}
}
bool8 GivePokeblockToContestLady(struct Pokeblock *pokeblock)
{
- u8 sheen;
- bool8 response;
+ u8 sheen = 0;
+ bool8 correctFlavor = FALSE;
- sheen = 0;
- response = FALSE;
- gUnknown_0203CD6C = &gSaveBlock1Ptr->lilycoveLady.contest;
- switch (gUnknown_0203CD6C->category)
+ sContestLadyPtr = &gSaveBlock1Ptr->lilycoveLady.contest;
+ switch (sContestLadyPtr->category)
{
- case 0:
+ case CONTEST_CATEGORY_COOL:
if (pokeblock->spicy != 0)
{
sheen = pokeblock->spicy;
- response = TRUE;
+ correctFlavor = TRUE;
}
break;
- case 1:
+ case CONTEST_CATEGORY_BEAUTY:
if (pokeblock->dry != 0)
{
sheen = pokeblock->dry;
- response = TRUE;
+ correctFlavor = TRUE;
}
break;
- case 2:
+ case CONTEST_CATEGORY_CUTE:
if (pokeblock->sweet != 0)
{
sheen = pokeblock->sweet;
- response = TRUE;
+ correctFlavor = TRUE;
}
break;
- case 3:
+ case CONTEST_CATEGORY_SMART:
if (pokeblock->bitter != 0)
{
sheen = pokeblock->bitter;
- response = TRUE;
+ correctFlavor = TRUE;
}
break;
- case 4:
+ case CONTEST_CATEGORY_TOUGH:
if (pokeblock->sour != 0)
{
sheen = pokeblock->sour;
- response = TRUE;
+ correctFlavor = TRUE;
}
break;
}
- if (response == TRUE)
+ if (correctFlavor == TRUE)
{
- sub_818E6B0(sheen);
- gUnknown_0203CD6C->fave_pkblk ++;
+ ContestLadySavePlayerNameIfHighSheen(sheen);
+ sContestLadyPtr->numGoodPokeblocksGiven++;
}
else
{
- gUnknown_0203CD6C->other_pkblk ++;
+ sContestLadyPtr->numOtherPokeblocksGiven++;
}
- return response;
+ return correctFlavor;
}
-static void sub_818E794(u8 *dest1, u8 *dest2)
+static void BufferContestLadyCategoryAndMonName(u8 *dest1, u8 *dest2)
{
- gUnknown_0203CD6C = &gSaveBlock1Ptr->lilycoveLady.contest;
- StringCopy(dest1, gUnknown_0860B324[gUnknown_0203CD6C->category]);
- StringCopy10(dest2, gUnknown_0860B310[gUnknown_0203CD6C->category]);
+ sContestLadyPtr = &gSaveBlock1Ptr->lilycoveLady.contest;
+ StringCopy(dest1, sContestLadyCategoryNames[sContestLadyPtr->category]);
+ StringCopy10(dest2, sContestLadyMonNames[sContestLadyPtr->category]);
}
-void sub_818E7E0(u8 *dest1, u8 *dest2)
+void BufferContestLadyMonName(u8 *dest1, u8 *dest2)
{
- gUnknown_0203CD6C = &gSaveBlock1Ptr->lilycoveLady.contest;
- *dest1 = gUnknown_0203CD6C->category;
- StringCopy(dest2, gUnknown_0860B310[gUnknown_0203CD6C->category]);
+ sContestLadyPtr = &gSaveBlock1Ptr->lilycoveLady.contest;
+ *dest1 = sContestLadyPtr->category;
+ StringCopy(dest2, sContestLadyMonNames[sContestLadyPtr->category]);
}
-void sub_818E81C(u8 *dest)
+void BufferContestLadyPlayerName(u8 *dest)
{
- gUnknown_0203CD6C = &gSaveBlock1Ptr->lilycoveLady.contest;
- StringCopy(dest, gUnknown_0203CD6C->playerName);
+ sContestLadyPtr = &gSaveBlock1Ptr->lilycoveLady.contest;
+ StringCopy(dest, sContestLadyPtr->playerName);
}
-void sub_818E848(u8 *dest)
+void BufferContestLadyLanguage(u8 *dest)
{
- gUnknown_0203CD6C = &gSaveBlock1Ptr->lilycoveLady.contest;
- *dest = gUnknown_0203CD6C->language;
+ sContestLadyPtr = &gSaveBlock1Ptr->lilycoveLady.contest;
+ *dest = sContestLadyPtr->language;
}
-void sub_818E868(u8 *dest, u8 category)
+void BufferContestName(u8 *dest, u8 category)
{
- StringCopy(dest, gUnknown_0860B338[category]);
+ StringCopy(dest, sContestNames[category]);
}
+// used in tv.c to determine sTVShowState for Contest Lady show
+// if return val is 1, sTVShowState is 1
+// if return val is 2, sTVShowState is 3
+// if return val is 0, sTVShowState is 2
u8 sub_818E880(void)
{
- gUnknown_0203CD6C = &gSaveBlock1Ptr->lilycoveLady.contest;
- if (gUnknown_0203CD6C->fave_pkblk >= 5)
+ sContestLadyPtr = &gSaveBlock1Ptr->lilycoveLady.contest;
+ if (sContestLadyPtr->numGoodPokeblocksGiven >= LILYCOVE_LADY_GIFT_THRESHOLD)
{
return 1;
}
- else if (gUnknown_0203CD6C->fave_pkblk == 0)
+ else if (sContestLadyPtr->numGoodPokeblocksGiven == 0)
{
return 2;
}
@@ -973,53 +783,54 @@ u8 sub_818E880(void)
}
}
-bool8 sub_818E8B4(void)
+
+bool8 HasPlayerGivenContestLadyPokeblock(void)
{
- gUnknown_0203CD6C = &gSaveBlock1Ptr->lilycoveLady.contest;
- if (gUnknown_0203CD6C->phase == 1)
+ sContestLadyPtr = &gSaveBlock1Ptr->lilycoveLady.contest;
+ if (sContestLadyPtr->givenPokeblock == TRUE)
{
return TRUE;
}
return FALSE;
}
-bool8 sub_818E8E0(void)
+bool8 ShouldContestLadyShowGoOnAir(void)
{
- bool8 response;
+ bool8 putOnAir = FALSE;
- response = FALSE;
- gUnknown_0203CD6C = &gSaveBlock1Ptr->lilycoveLady.contest;
- if (gUnknown_0203CD6C->fave_pkblk >= 5 || gUnknown_0203CD6C->other_pkblk >= 5)
+ sContestLadyPtr = &gSaveBlock1Ptr->lilycoveLady.contest;
+ if (sContestLadyPtr->numGoodPokeblocksGiven >= LILYCOVE_LADY_GIFT_THRESHOLD
+ || sContestLadyPtr->numOtherPokeblocksGiven >= LILYCOVE_LADY_GIFT_THRESHOLD)
{
- response = TRUE;
+ putOnAir = TRUE;
}
- return response;
+ return putOnAir;
}
-void sub_818E914(void)
+void Script_BufferContestLadyCategoryAndMonName(void)
{
- sub_818E794(gStringVar2, gStringVar1);
+ BufferContestLadyCategoryAndMonName(gStringVar2, gStringVar1);
}
-void sub_818E92C(void)
+void OpenPokeblockCaseForContestLady(void)
{
OpenPokeblockCase(3, CB2_ReturnToField);
}
-void sub_818E940(void)
+void SetContestLadyGivenPokeblock(void)
{
- gUnknown_0203CD6C = &gSaveBlock1Ptr->lilycoveLady.contest;
- gUnknown_0203CD6C->phase = 1;
+ sContestLadyPtr = &gSaveBlock1Ptr->lilycoveLady.contest;
+ sContestLadyPtr->givenPokeblock = TRUE;
}
-void sub_818E960(void)
+void GetContestLadyMonSpecies(void)
{
- gUnknown_0203CD6C = &gSaveBlock1Ptr->lilycoveLady.contest;
- gSpecialVar_0x8005 = sUnknown_0860B34C[gUnknown_0203CD6C->category];
+ sContestLadyPtr = &gSaveBlock1Ptr->lilycoveLady.contest;
+ gSpecialVar_0x8005 = sContestLadyMonSpecies[sContestLadyPtr->category];
}
-u8 sub_818E990(void)
+u8 GetContestLadyCategory(void)
{
- gUnknown_0203CD6C = &gSaveBlock1Ptr->lilycoveLady.contest;
- return gUnknown_0203CD6C->category;
+ sContestLadyPtr = &gSaveBlock1Ptr->lilycoveLady.contest;
+ return sContestLadyPtr->category;
}
diff --git a/src/m4a_1.s b/src/m4a_1.s
new file mode 100644
index 000000000..cab4ed174
--- /dev/null
+++ b/src/m4a_1.s
@@ -0,0 +1,1934 @@
+ .include "asm/macros.inc"
+ .include "constants/gba_constants.inc"
+ .include "constants/m4a_constants.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start umul3232H32
+umul3232H32:
+ adr r2, __umul3232H32
+ bx r2
+ .arm
+__umul3232H32:
+ umull r2, r3, r0, r1
+ add r0, r3, 0
+ bx lr
+ thumb_func_end umul3232H32
+
+ thumb_func_start SoundMain
+SoundMain:
+ ldr r0, lt_SOUND_INFO_PTR
+ ldr r0, [r0]
+ ldr r2, lt_ID_NUMBER
+ ldr r3, [r0, o_SoundInfo_ident]
+ cmp r2, r3
+ beq SoundMain_1
+ bx lr @ Exit the function if ident doesn't match ID_NUMBER.
+SoundMain_1:
+ adds r3, 1
+ str r3, [r0, o_SoundInfo_ident]
+ push {r4-r7,lr}
+ mov r1, r8
+ mov r2, r9
+ mov r3, r10
+ mov r4, r11
+ push {r0-r4}
+ sub sp, 0x18
+ ldrb r1, [r0, o_SoundInfo_maxLines]
+ cmp r1, 0 @ if maxLines is 0, there is no maximum
+ beq SoundMain_3
+ ldr r2, lt_REG_VCOUNT
+ ldrb r2, [r2]
+ cmp r2, VCOUNT_VBLANK
+ bhs SoundMain_2
+ adds r2, TOTAL_SCANLINES
+SoundMain_2:
+ adds r1, r2
+SoundMain_3:
+ str r1, [sp, 0x14]
+ ldr r3, [r0, o_SoundInfo_func]
+ cmp r3, 0
+ beq SoundMain_4
+ ldr r0, [r0, o_SoundInfo_intp]
+ bl _081DD25E
+ ldr r0, [sp, 0x18]
+SoundMain_4:
+ ldr r3, [r0, o_SoundInfo_CgbSound]
+ bl _081DD25E
+ ldr r0, [sp, 0x18]
+ ldr r3, [r0, o_SoundInfo_pcmSamplesPerVBlank]
+ mov r8, r3
+ ldr r5, lt_o_SoundInfo_pcmBuffer
+ adds r5, r0
+ ldrb r4, [r0, o_SoundInfo_pcmDmaCounter]
+ subs r7, r4, 1
+ bls SoundMain_5
+ ldrb r1, [r0, o_SoundInfo_pcmDmaPeriod]
+ subs r1, r7
+ mov r2, r8
+ muls r2, r1
+ adds r5, r2
+SoundMain_5:
+ str r5, [sp, 0x8]
+ ldr r6, lt_PCM_DMA_BUF_SIZE
+ ldr r3, lt_SoundMainRAM_Buffer
+ bx r3
+
+ .align 2, 0
+lt_SOUND_INFO_PTR: .word SOUND_INFO_PTR
+lt_ID_NUMBER: .word ID_NUMBER
+lt_SoundMainRAM_Buffer: .word SoundMainRAM_Buffer + 1
+lt_REG_VCOUNT: .word REG_VCOUNT
+lt_o_SoundInfo_pcmBuffer: .word o_SoundInfo_pcmBuffer
+lt_PCM_DMA_BUF_SIZE: .word PCM_DMA_BUF_SIZE
+ thumb_func_end SoundMain
+
+ thumb_func_start SoundMainRAM
+SoundMainRAM:
+ ldrb r3, [r0, o_SoundInfo_reverb]
+ cmp r3, 0
+ beq SoundMainRAM_NoReverb
+ adr r1, SoundMainRAM_Reverb
+ bx r1
+ .arm
+SoundMainRAM_Reverb:
+ cmp r4, 0x2
+ addeq r7, r0, o_SoundInfo_pcmBuffer
+ addne r7, r5, r8
+ mov r4, r8
+_081DCEC4:
+ ldrsb r0, [r5, r6]
+ ldrsb r1, [r5]
+ add r0, r0, r1
+ ldrsb r1, [r7, r6]
+ add r0, r0, r1
+ ldrsb r1, [r7], 0x1
+ add r0, r0, r1
+ mul r1, r0, r3
+ mov r0, r1, asr 9
+ tst r0, 0x80
+ addne r0, r0, 0x1
+ strb r0, [r5, r6]
+ strb r0, [r5], 0x1
+ subs r4, r4, 0x1
+ bgt _081DCEC4
+ adr r0, _081DCF36 + 1 @ plus 1 because THUMB
+ bx r0
+ .thumb
+SoundMainRAM_NoReverb:
+ movs r0, 0
+ mov r1, r8
+ adds r6, r5
+ lsrs r1, 3
+ bcc SoundMainRAM_NoReverb_Ok
+ stm r5!, {r0}
+ stm r6!, {r0}
+SoundMainRAM_NoReverb_Ok:
+ lsrs r1, 1
+ bcc SoundMainRAM_NoReverb_Loop
+ stm r5!, {r0}
+ stm r6!, {r0}
+ stm r5!, {r0}
+ stm r6!, {r0}
+SoundMainRAM_NoReverb_Loop:
+ stm r5!, {r0}
+ stm r6!, {r0}
+ stm r5!, {r0}
+ stm r6!, {r0}
+ stm r5!, {r0}
+ stm r6!, {r0}
+ stm r5!, {r0}
+ stm r6!, {r0}
+ subs r1, 1
+ bgt SoundMainRAM_NoReverb_Loop
+_081DCF36:
+ ldr r4, [sp, 0x18]
+ ldr r0, [r4, o_SoundInfo_divFreq]
+ mov r12, r0
+ ldrb r0, [r4, o_SoundInfo_maxChans]
+ adds r4, o_SoundInfo_chans
+
+SoundMainRAM_ChanLoop:
+ str r0, [sp, 0x4]
+ ldr r3, [r4, o_SoundChannel_wav]
+ ldr r0, [sp, 0x14]
+ cmp r0, 0
+ beq _081DCF60
+ ldr r1, =REG_VCOUNT
+ ldrb r1, [r1]
+ cmp r1, VCOUNT_VBLANK
+ bhs _081DCF54
+ adds r1, TOTAL_SCANLINES
+_081DCF54:
+ cmp r1, r0
+ blo _081DCF60
+ b _081DD24A
+
+ .pool
+
+_081DCF60:
+ ldrb r6, [r4, o_SoundChannel_status]
+ movs r0, 0xC7
+ tst r0, r6
+ bne _081DCF6A
+ b _081DD240
+_081DCF6A:
+ movs r0, 0x80
+ tst r0, r6
+ beq _081DCFA0
+ movs r0, 0x40
+ tst r0, r6
+ bne _081DCFB0
+ movs r6, 0x3
+ strb r6, [r4, o_SoundChannel_status]
+ adds r0, r3, 0
+ adds r0, 0x10
+ ldr r1, [r4, o_SoundChannel_ct]
+ adds r0, r1
+ str r0, [r4, o_SoundChannel_cp]
+ ldr r0, [r3, 0xC]
+ subs r0, r1
+ str r0, [r4, o_SoundChannel_ct]
+ movs r5, 0
+ strb r5, [r4, o_SoundChannel_ev]
+ str r5, [r4, o_SoundChannel_fw]
+ ldrb r2, [r3, 0x3]
+ movs r0, 0xC0
+ tst r0, r2
+ beq _081DCFF8
+ movs r0, 0x10
+ orrs r6, r0
+ strb r6, [r4, o_SoundChannel_status]
+ b _081DCFF8
+_081DCFA0:
+ ldrb r5, [r4, o_SoundChannel_ev]
+ movs r0, 0x4
+ tst r0, r6
+ beq _081DCFB6
+ ldrb r0, [r4, o_SoundChannel_iel]
+ subs r0, 1
+ strb r0, [r4, o_SoundChannel_iel]
+ bhi _081DD006
+_081DCFB0:
+ movs r0, 0
+ strb r0, [r4, o_SoundChannel_status]
+ b _081DD240
+_081DCFB6:
+ movs r0, 0x40
+ tst r0, r6
+ beq _081DCFD6
+ ldrb r0, [r4, o_SoundChannel_release]
+ muls r5, r0
+ lsrs r5, 8
+ ldrb r0, [r4, o_SoundChannel_iev]
+ cmp r5, r0
+ bhi _081DD006
+_081DCFC8:
+ ldrb r5, [r4, o_SoundChannel_iev]
+ cmp r5, 0
+ beq _081DCFB0
+ movs r0, 0x4
+ orrs r6, r0
+ strb r6, [r4, o_SoundChannel_status]
+ b _081DD006
+_081DCFD6:
+ movs r2, 0x3
+ ands r2, r6
+ cmp r2, 0x2
+ bne _081DCFF4
+ ldrb r0, [r4, o_SoundChannel_decay]
+ muls r5, r0
+ lsrs r5, 8
+ ldrb r0, [r4, o_SoundChannel_sustain]
+ cmp r5, r0
+ bhi _081DD006
+ adds r5, r0, 0
+ beq _081DCFC8
+ subs r6, 0x1
+ strb r6, [r4, o_SoundChannel_status]
+ b _081DD006
+_081DCFF4:
+ cmp r2, 0x3
+ bne _081DD006
+_081DCFF8:
+ ldrb r0, [r4, o_SoundChannel_attack]
+ adds r5, r0
+ cmp r5, 0xFF
+ bcc _081DD006
+ movs r5, 0xFF
+ subs r6, 0x1
+ strb r6, [r4, o_SoundChannel_status]
+_081DD006:
+ strb r5, [r4, o_SoundChannel_ev]
+ ldr r0, [sp, 0x18]
+ ldrb r0, [r0, o_SoundChannel_release]
+ adds r0, 0x1
+ muls r0, r5
+ lsrs r5, r0, 4
+ ldrb r0, [r4, o_SoundChannel_rightVolume]
+ muls r0, r5
+ lsrs r0, 8
+ strb r0, [r4, o_SoundChannel_er]
+ ldrb r0, [r4, o_SoundChannel_leftVolume]
+ muls r0, r5
+ lsrs r0, 8
+ strb r0, [r4, o_SoundChannel_el]
+ movs r0, 0x10
+ ands r0, r6
+ str r0, [sp, 0x10]
+ beq _081DD03A
+ adds r0, r3, 0
+ adds r0, 0x10
+ ldr r1, [r3, 0x8]
+ adds r0, r1
+ str r0, [sp, 0xC]
+ ldr r0, [r3, 0xC]
+ subs r0, r1
+ str r0, [sp, 0x10]
+_081DD03A:
+ ldr r5, [sp, 0x8]
+ ldr r2, [r4, o_SoundChannel_ct]
+ ldr r3, [r4, o_SoundChannel_cp]
+ adr r0, _081DD044
+ bx r0
+ .arm
+_081DD044:
+ str r8, [sp]
+ ldr r9, [r4, o_SoundChannel_fw]
+ ldrb r10, [r4, o_SoundChannel_er]
+ ldrb r11, [r4, o_SoundChannel_el]
+ ldrb r0, [r4, o_SoundChannel_type]
+ tst r0, 0x30
+ beq _081DD068
+ bl sub_82DF49C
+ b _081DD228
+_081DD068:
+ mov r10, r10, lsl 16
+ mov r11, r11, lsl 16
+ ldrb r0, [r4, o_SoundChannel_type]
+ tst r0, 0x8
+ beq _081DD19C
+_081DD07C:
+ cmp r2, 0x4
+ ble _081DD0EC
+ subs r2, r2, r8
+ movgt r9, 0
+ bgt _081DD0A8
+ mov r9, r8
+ add r2, r2, r8
+ sub r8, r2, 0x4
+ sub r9, r9, r8
+ ands r2, r2, 0x3
+ moveq r2, 0x4
+_081DD0A8:
+ ldr r6, [r5]
+ ldr r7, [r5, 0x630]
+_081DD0B0:
+ ldrsb r0, [r3], 0x1
+ mul r1, r10, r0
+ bic r1, r1, 0xFF0000
+ add r6, r1, r6, ror 8
+ mul r1, r11, r0
+ bic r1, r1, 0xFF0000
+ add r7, r1, r7, ror 8
+ adds r5, r5, 0x40000000
+ bcc _081DD0B0
+ str r7, [r5, 0x630]
+ str r6, [r5], 0x4
+ subs r8, r8, 0x4
+ bgt _081DD0A8
+ adds r8, r8, r9
+ beq _081DD22C
+_081DD0EC:
+ ldr r6, [r5]
+ ldr r7, [r5, 0x630]
+_081DD0F4:
+ ldrsb r0, [r3], 0x1
+ mul r1, r10, r0
+ bic r1, r1, 0xFF0000
+ add r6, r1, r6, ror 8
+ mul r1, r11, r0
+ bic r1, r1, 0xFF0000
+ add r7, r1, r7, ror 8
+ subs r2, r2, 0x1
+ beq _081DD164
+_081DD118:
+ adds r5, r5, 0x40000000
+ bcc _081DD0F4
+ str r7, [r5, 0x630]
+ str r6, [r5], 0x4
+ subs r8, r8, 0x4
+ bgt _081DD07C
+ b _081DD22C
+_081DD134:
+ ldr r0, [sp, 0x18]
+ cmp r0, 0
+ beq _081DD158
+ ldr r3, [sp, 0x14]
+ rsb lr, r2, 0
+_081DD148:
+ adds r2, r0, r2
+ bgt _081DD1FC
+ sub lr, lr, r0
+ b _081DD148
+_081DD158:
+ pop {r4,r12}
+ mov r2, 0
+ b _081DD174
+_081DD164:
+ ldr r2, [sp, 0x10]
+ cmp r2, 0
+ ldrne r3, [sp, 0xC]
+ bne _081DD118
+_081DD174:
+ strb r2, [r4, o_SoundChannel_status]
+ mov r0, r5, lsr 30
+ bic r5, r5, 0xC0000000
+ rsb r0, r0, 0x3
+ mov r0, r0, lsl 3
+ mov r6, r6, ror r0
+ mov r7, r7, ror r0
+ str r7, [r5, 0x630]
+ str r6, [r5], 0x4
+ b _081DD234
+_081DD19C:
+ push {r4,r12}
+ ldr r1, [r4, o_SoundChannel_freq]
+ mul r4, r12, r1
+ ldrsb r0, [r3]
+ ldrsb r1, [r3, 0x1]!
+ sub r1, r1, r0
+_081DD1B4:
+ ldr r6, [r5]
+ ldr r7, [r5, 0x630]
+_081DD1BC:
+ mul lr, r9, r1
+ add lr, r0, lr, asr 23
+ mul r12, r10, lr
+ bic r12, r12, 0xFF0000
+ add r6, r12, r6, ror 8
+ mul r12, r11, lr
+ bic r12, r12, 0xFF0000
+ add r7, r12, r7, ror 8
+ add r9, r9, r4
+ movs lr, r9, lsr 23
+ beq _081DD208
+ bic r9, r9, 0x3F800000
+ subs r2, r2, lr
+ ble _081DD134
+ subs lr, lr, 0x1
+ addeq r0, r0, r1
+_081DD1FC:
+ ldrsbne r0, [r3, lr]!
+ ldrsb r1, [r3, 0x1]!
+ sub r1, r1, r0
+_081DD208:
+ adds r5, r5, 0x40000000
+ bcc _081DD1BC
+ str r7, [r5, 0x630]
+ str r6, [r5], 0x4
+ subs r8, r8, 0x4
+ bgt _081DD1B4
+ sub r3, r3, 0x1
+ pop {r4,r12}
+_081DD228:
+ str r9, [r4, o_SoundChannel_fw]
+_081DD22C:
+ str r2, [r4, o_SoundChannel_ct]
+ str r3, [r4, o_SoundChannel_cp]
+_081DD234:
+ ldr r8, [sp]
+ add r0, pc, 0x1
+ bx r0
+ .thumb
+_081DD240:
+ ldr r0, [sp, 0x4]
+ subs r0, 1
+ ble _081DD24A
+ adds r4, SoundChannel_size
+ b SoundMainRAM_ChanLoop
+_081DD24A:
+ ldr r0, [sp, 0x18]
+ ldr r3, =ID_NUMBER
+ str r3, [r0]
+ add sp, 0x1C
+ pop {r0-r7}
+ mov r8, r0
+ mov r9, r1
+ mov r10, r2
+ mov r11, r3
+ pop {r3}
+_081DD25E:
+ bx r3
+ .pool
+ thumb_func_end SoundMainRAM
+
+ arm_func_start sub_82DF49C
+sub_82DF49C:
+ ldr r6, [r4, o_SoundChannel_wav]
+ ldrb r0, [r4, o_SoundChannel_status]
+ tst r0, 0x20
+ bne _081DD2B4
+ orr r0, r0, 0x20
+ strb r0, [r4, o_SoundChannel_status]
+ ldrb r0, [r4, o_SoundChannel_type]
+ tst r0, 0x10
+ beq _081DD29C
+ ldr r1, [r6, 0xC]
+ add r1, r1, r6, lsl 1
+ add r1, r1, 0x20
+ sub r3, r1, r3
+ str r3, [r4, o_SoundChannel_cp]
+_081DD29C:
+ ldrh r0, [r6]
+ cmp r0, 0
+ beq _081DD2B4
+ sub r3, r3, r6
+ sub r3, r3, 0x10
+ str r3, [r4, o_SoundChannel_cp]
+_081DD2B4:
+ push {r8,r12,lr}
+ mov r10, r10, lsl 16
+ mov r11, r11, lsl 16
+ ldr r1, [r4, o_SoundChannel_freq]
+ ldrb r0, [r4, o_SoundChannel_type]
+ tst r0, 0x8
+ movne r8, 0x800000
+ muleq r8, r12, r1
+ ldrh r0, [r6]
+ cmp r0, 0
+ beq _081DD468
+ mov r0, 0xFF000000
+ str r0, [r4, o_SoundChannel_xpi]
+ ldrb r0, [r4, o_SoundChannel_type]
+ tst r0, 0x10
+ bne _081DD3C0
+ bl sub_82DF758
+ mov r0, r1
+ add r3, r3, 0x1
+ bl sub_82DF758
+ sub r1, r1, r0
+_081DD308:
+ ldr r6, [r5]
+ ldr r7, [r5, 0x630]
+_081DD310:
+ mul lr, r9, r1
+ add lr, r0, lr, asr 23
+ mul r12, r10, lr
+ bic r12, r12, 0xFF0000
+ add r6, r12, r6, ror 8
+ mul r12, r11, lr
+ bic r12, r12, 0xFF0000
+ add r7, r12, r7, ror 8
+ add r9, r9, r8
+ movs lr, r9, lsr 23
+ beq _081DD370
+ bic r9, r9, 0x3F800000
+ subs r2, r2, lr
+ ble _081DD398
+ subs lr, lr, 0x1
+ bne _081DD358
+ add r0, r0, r1
+ b _081DD364
+_081DD358:
+ add r3, r3, lr
+ bl sub_82DF758
+ mov r0, r1
+_081DD364:
+ add r3, r3, 0x1
+ bl sub_82DF758
+ sub r1, r1, r0
+_081DD370:
+ adds r5, r5, 0x40000000
+ bcc _081DD310
+ str r7, [r5, 0x630]
+ str r6, [r5], 0x4
+ ldr r6, [sp]
+ subs r6, r6, 0x4
+ str r6, [sp]
+ bgt _081DD308
+ sub r3, r3, 0x1
+ b _081DD4F0
+_081DD398:
+ ldr r0, [sp, 0x1C]
+ cmp r0, 0
+ beq _081DD4F4
+ ldr r3, [r4, o_SoundChannel_wav]
+ ldr r3, [r3, 0x8]
+ rsb lr, r2, 0
+_081DD3B0:
+ adds r2, r2, r0
+ bgt _081DD358
+ sub lr, lr, r0
+ b _081DD3B0
+_081DD3C0:
+ sub r3, r3, 0x1
+ bl sub_82DF758
+ mov r0, r1
+ sub r3, r3, 0x1
+ bl sub_82DF758
+ sub r1, r1, r0
+_081DD3D8:
+ ldr r6, [r5]
+ ldr r7, [r5, 0x630]
+_081DD3E0:
+ mul lr, r9, r1
+ add lr, r0, lr, asr 23
+ mul r12, r10, lr
+ bic r12, r12, 0xFF0000
+ add r6, r12, r6, ror 8
+ mul r12, r11, lr
+ bic r12, r12, 0xFF0000
+ add r7, r12, r7, ror 8
+ add r9, r9, r8
+ movs lr, r9, lsr 23
+ beq _081DD440
+ bic r9, r9, 0x3F800000
+ subs r2, r2, lr
+ ble _081DD4F4
+ subs lr, lr, 0x1
+ bne _081DD428
+ add r0, r0, r1
+ b _081DD434
+_081DD428:
+ sub r3, r3, lr
+ bl sub_82DF758
+ mov r0, r1
+_081DD434:
+ sub r3, r3, 0x1
+ bl sub_82DF758
+ sub r1, r1, r0
+_081DD440:
+ adds r5, r5, 0x40000000
+ bcc _081DD3E0
+ str r7, [r5, 0x630]
+ str r6, [r5], 0x4
+ ldr r6, [sp]
+ subs r6, r6, 0x4
+ str r6, [sp]
+ bgt _081DD3D8
+ add r3, r3, 0x2
+ b _081DD4F0
+_081DD468:
+ ldrb r0, [r4, o_SoundChannel_type]
+ tst r0, 0x10
+ beq _081DD4F0
+ ldrsb r0, [r3, -0x1]!
+ ldrsb r1, [r3, -0x1]
+ sub r1, r1, r0
+_081DD480:
+ ldr r6, [r5]
+ ldr r7, [r5, 0x630]
+_081DD488:
+ mul lr, r9, r1
+ add lr, r0, lr, asr 23
+ mul r12, r10, lr
+ bic r12, r12, 0xFF0000
+ add r6, r12, r6, ror 8
+ mul r12, r11, lr
+ bic r12, r12, 0xFF0000
+ add r7, r12, r7, ror 8
+ add r9, r9, r8
+ movs lr, r9, lsr 23
+ beq _081DD4CC
+ bic r9, r9, 0x3F800000
+ subs r2, r2, lr
+ ble _081DD4F4
+ ldrsb r0, [r3, -lr]!
+ ldrsb r1, [r3, -0x1]
+ sub r1, r1, r0
+_081DD4CC:
+ adds r5, r5, 0x40000000
+ bcc _081DD488
+ str r7, [r5, 0x630]
+ str r6, [r5], 0x4
+ ldr r6, [sp]
+ subs r6, r6, 0x4
+ str r6, [sp]
+ bgt _081DD480
+ add r3, r3, 0x1
+_081DD4F0:
+ pop {r8,r12,pc}
+_081DD4F4:
+ mov r2, 0
+ strb r2, [r4, o_SoundChannel_status]
+ mov r0, r5, lsr 30
+ bic r5, r5, 0xC0000000
+ rsb r0, r0, 0x3
+ mov r0, r0, lsl 3
+ mov r6, r6, ror r0
+ mov r7, r7, ror r0
+ str r7, [r5, 0x630]
+ str r6, [r5], 0x4
+ pop {r8,r12,pc}
+ arm_func_end sub_82DF49C
+
+ arm_func_start sub_82DF758
+sub_82DF758:
+ push {r0,r2,r5-r7,lr}
+ mov r0, r3, lsr 6
+ ldr r1, [r4, o_SoundChannel_xpi]
+ cmp r0, r1
+ beq _081DD594
+ str r0, [r4, o_SoundChannel_xpi]
+ mov r1, 0x21
+ mul r2, r1, r0
+ ldr r1, [r4, o_SoundChannel_wav]
+ add r2, r2, r1
+ add r2, r2, 0x10
+ ldr r5, =gUnknown_03001300
+ ldr r6, =gDeltaEncodingTable
+ mov r7, 0x40
+ ldrb lr, [r2], 1
+ strb lr, [r5], 1
+ ldrb r1, [r2], 1
+ b _081DD57C
+_081DD568:
+ ldrb r1, [r2], 1
+ mov r0, r1, lsr 4
+ ldrsb r0, [r6, r0]
+ add lr, lr, r0
+ strb lr, [r5], 1
+_081DD57C:
+ and r0, r1, 0xF
+ ldrsb r0, [r6, r0]
+ add lr, lr, r0
+ strb lr, [r5], 1
+ subs r7, r7, 2
+ bgt _081DD568
+_081DD594:
+ ldr r5, =gUnknown_03001300
+ and r0, r3, 0x3F
+ ldrsb r1, [r5, r0]
+ pop {r0,r2,r5-r7,pc}
+ .pool
+ arm_func_end sub_82DF758
+
+ thumb_func_start SoundMainBTM
+SoundMainBTM:
+ mov r12, r4
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0
+ movs r4, 0
+ stm r0!, {r1-r4}
+ stm r0!, {r1-r4}
+ stm r0!, {r1-r4}
+ stm r0!, {r1-r4}
+ mov r4, r12
+ bx lr
+ thumb_func_end SoundMainBTM
+
+ thumb_func_start RealClearChain
+RealClearChain:
+ ldr r3, [r0, 0x2C]
+ cmp r3, 0
+ beq _081DD5E2
+ ldr r1, [r0, 0x34]
+ ldr r2, [r0, 0x30]
+ cmp r2, 0
+ beq _081DD5D6
+ str r1, [r2, 0x34]
+ b _081DD5D8
+_081DD5D6:
+ str r1, [r3, 0x20]
+_081DD5D8:
+ cmp r1, 0
+ beq _081DD5DE
+ str r2, [r1, 0x30]
+_081DD5DE:
+ movs r1, 0
+ str r1, [r0, 0x2C]
+_081DD5E2:
+ bx lr
+ thumb_func_end RealClearChain
+
+ thumb_func_start ply_fine
+ply_fine:
+ push {r4,r5,lr}
+ adds r5, r1, 0
+ ldr r4, [r5, o_MusicPlayerTrack_chan]
+ cmp r4, 0
+ beq ply_fine_done
+ply_fine_loop:
+ ldrb r1, [r4]
+ movs r0, 0xC7
+ tst r0, r1
+ beq ply_fine_ok
+ movs r0, 0x40
+ orrs r1, r0
+ strb r1, [r4]
+ply_fine_ok:
+ adds r0, r4, 0
+ bl RealClearChain
+ ldr r4, [r4, 0x34]
+ cmp r4, 0
+ bne ply_fine_loop
+ply_fine_done:
+ movs r0, 0
+ strb r0, [r5]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end ply_fine
+
+ thumb_func_start MPlayJumpTableCopy
+MPlayJumpTableCopy:
+ mov r12, lr
+ movs r1, 0x24
+ ldr r2, lt_MPlayJumpTableTemplate
+MPlayJumpTableCopy_Loop:
+ ldr r3, [r2]
+ bl chk_adr_r2
+ stm r0!, {r3}
+ adds r2, 0x4
+ subs r1, 0x1
+ bgt MPlayJumpTableCopy_Loop
+ bx r12
+ thumb_func_end MPlayJumpTableCopy
+
+ .align 2, 0
+ .thumb_func
+ldrb_r3_r2:
+ ldrb r3, [r2]
+
+@ This attempts to protect against reading anything from the BIOS ROM
+@ besides the jump table template.
+@ It assumes that the jump table template is located at the end of the ROM.
+ .thumb_func
+chk_adr_r2:
+ push {r0}
+ lsrs r0, r2, 25
+ bne chk_adr_r2_done @ if adr >= 0x2000000 (i.e. not in BIOS ROM), accept it
+ ldr r0, lt_MPlayJumpTableTemplate
+ cmp r2, r0
+ blo chk_adr_r2_reject @ if adr < gMPlayJumpTableTemplate, reject it
+ lsrs r0, r2, 14
+ beq chk_adr_r2_done @ if adr < 0x40000 (i.e. in BIOS ROM), accept it
+chk_adr_r2_reject:
+ movs r3, 0
+chk_adr_r2_done:
+ pop {r0}
+ bx lr
+
+ .align 2, 0
+lt_MPlayJumpTableTemplate: .word gMPlayJumpTableTemplate
+
+ thumb_func_start ld_r3_tp_adr_i
+ld_r3_tp_adr_i:
+ ldr r2, [r1, 0x40]
+_081DD64A:
+ adds r3, r2, 0x1
+ str r3, [r1, 0x40]
+ ldrb r3, [r2]
+ b chk_adr_r2
+ thumb_func_end ld_r3_tp_adr_i
+
+ thumb_func_start ply_goto
+ply_goto:
+ push {lr}
+ply_goto_1:
+ ldr r2, [r1, o_MusicPlayerTrack_cmdPtr]
+ ldrb r0, [r2, 0x3]
+ lsls r0, 8
+ ldrb r3, [r2, 0x2]
+ orrs r0, r3
+ lsls r0, 8
+ ldrb r3, [r2, 0x1]
+ orrs r0, r3
+ lsls r0, 8
+ bl ldrb_r3_r2
+ orrs r0, r3
+ str r0, [r1, o_MusicPlayerTrack_cmdPtr]
+ pop {r0}
+ bx r0
+ thumb_func_end ply_goto
+
+ thumb_func_start ply_patt
+ply_patt:
+ ldrb r2, [r1, o_MusicPlayerTrack_patternLevel]
+ cmp r2, 3
+ bhs ply_patt_done
+ lsls r2, 2
+ adds r3, r1, r2
+ ldr r2, [r1, o_MusicPlayerTrack_cmdPtr]
+ adds r2, 0x4
+ str r2, [r3, o_MusicPlayerTrack_patternStack]
+ ldrb r2, [r1, o_MusicPlayerTrack_patternLevel]
+ adds r2, 1
+ strb r2, [r1, o_MusicPlayerTrack_patternLevel]
+ b ply_goto
+ply_patt_done:
+ b ply_fine
+ thumb_func_end ply_patt
+
+ thumb_func_start ply_pend
+ply_pend:
+ ldrb r2, [r1, o_MusicPlayerTrack_patternLevel]
+ cmp r2, 0
+ beq ply_pend_done
+ subs r2, 1
+ strb r2, [r1, o_MusicPlayerTrack_patternLevel]
+ lsls r2, 2
+ adds r3, r1, r2
+ ldr r2, [r3, o_MusicPlayerTrack_patternStack]
+ str r2, [r1, o_MusicPlayerTrack_cmdPtr]
+ply_pend_done:
+ bx lr
+ thumb_func_end ply_pend
+
+ thumb_func_start ply_rept
+ply_rept:
+ push {lr}
+ ldr r2, [r1, o_MusicPlayerTrack_cmdPtr]
+ ldrb r3, [r2]
+ cmp r3, 0
+ bne ply_rept_1
+ adds r2, 1
+ str r2, [r1, o_MusicPlayerTrack_cmdPtr]
+ b ply_goto_1
+ply_rept_1:
+ ldrb r3, [r1, o_MusicPlayerTrack_repN]
+ adds r3, 1
+ strb r3, [r1, o_MusicPlayerTrack_repN]
+ mov r12, r3
+ bl ld_r3_tp_adr_i
+ cmp r12, r3
+ bhs ply_rept_2
+ b ply_goto_1
+ply_rept_2:
+ movs r3, 0
+ strb r3, [r1, o_MusicPlayerTrack_repN]
+ adds r2, 5
+ str r2, [r1, o_MusicPlayerTrack_cmdPtr]
+ pop {r0}
+ bx r0
+ thumb_func_end ply_rept
+
+ thumb_func_start ply_prio
+ply_prio:
+ mov r12, lr
+ bl ld_r3_tp_adr_i
+ strb r3, [r1, o_MusicPlayerTrack_priority]
+ bx r12
+ thumb_func_end ply_prio
+
+ thumb_func_start ply_tempo
+ply_tempo:
+ mov r12, lr
+ bl ld_r3_tp_adr_i
+ lsls r3, 1
+ strh r3, [r0, o_MusicPlayerInfo_tempoD]
+ ldrh r2, [r0, o_MusicPlayerInfo_tempoU]
+ muls r3, r2
+ lsrs r3, 8
+ strh r3, [r0, o_MusicPlayerInfo_tempoI]
+ bx r12
+ thumb_func_end ply_tempo
+
+ thumb_func_start ply_keysh
+ply_keysh:
+ mov r12, lr
+ bl ld_r3_tp_adr_i
+ strb r3, [r1, o_MusicPlayerTrack_keyShift]
+ ldrb r3, [r1, o_MusicPlayerTrack_flags]
+ movs r2, 0xC
+ orrs r3, r2
+ strb r3, [r1, o_MusicPlayerTrack_flags]
+ bx r12
+ thumb_func_end ply_keysh
+
+ thumb_func_start ply_voice
+ply_voice:
+ mov r12, lr
+ ldr r2, [r1, o_MusicPlayerTrack_cmdPtr]
+ ldrb r3, [r2]
+ adds r2, 1
+ str r2, [r1, o_MusicPlayerTrack_cmdPtr]
+ lsls r2, r3, 1
+ adds r2, r3
+ lsls r2, 2
+ ldr r3, [r0, o_MusicPlayerInfo_tone]
+ adds r2, r3
+ ldr r3, [r2]
+ bl chk_adr_r2
+ str r3, [r1, o_MusicPlayerTrack_ToneData_type]
+ ldr r3, [r2, 0x4]
+ bl chk_adr_r2
+ str r3, [r1, o_MusicPlayerTrack_ToneData_wav]
+ ldr r3, [r2, 0x8]
+ bl chk_adr_r2
+ str r3, [r1, o_MusicPlayerTrack_ToneData_attack]
+ bx r12
+ thumb_func_end ply_voice
+
+ thumb_func_start ply_vol
+ply_vol:
+ mov r12, lr
+ bl ld_r3_tp_adr_i
+ strb r3, [r1, o_MusicPlayerTrack_vol]
+ ldrb r3, [r1, o_MusicPlayerTrack_flags]
+ movs r2, 0x3
+ orrs r3, r2
+ strb r3, [r1, o_MusicPlayerTrack_flags]
+ bx r12
+ thumb_func_end ply_vol
+
+ thumb_func_start ply_pan
+ply_pan:
+ mov r12, lr
+ bl ld_r3_tp_adr_i
+ subs r3, 0x40
+ strb r3, [r1, o_MusicPlayerTrack_pan]
+ ldrb r3, [r1, o_MusicPlayerTrack_flags]
+ movs r2, 0x3
+ orrs r3, r2
+ strb r3, [r1, o_MusicPlayerTrack_flags]
+ bx r12
+ thumb_func_end ply_pan
+
+ thumb_func_start ply_bend
+ply_bend:
+ mov r12, lr
+ bl ld_r3_tp_adr_i
+ subs r3, 0x40
+ strb r3, [r1, o_MusicPlayerTrack_bend]
+ ldrb r3, [r1, o_MusicPlayerTrack_flags]
+ movs r2, 0xC
+ orrs r3, r2
+ strb r3, [r1, o_MusicPlayerTrack_flags]
+ bx r12
+ thumb_func_end ply_bend
+
+ thumb_func_start ply_bendr
+ply_bendr:
+ mov r12, lr
+ bl ld_r3_tp_adr_i
+ strb r3, [r1, o_MusicPlayerTrack_bendRange]
+ ldrb r3, [r1, o_MusicPlayerTrack_flags]
+ movs r2, 0xC
+ orrs r3, r2
+ strb r3, [r1, o_MusicPlayerTrack_flags]
+ bx r12
+ thumb_func_end ply_bendr
+
+ thumb_func_start ply_lfodl
+ply_lfodl:
+ mov r12, lr
+ bl ld_r3_tp_adr_i
+ strb r3, [r1, o_MusicPlayerTrack_lfoDelay]
+ bx r12
+ thumb_func_end ply_lfodl
+
+ thumb_func_start ply_modt
+ply_modt:
+ mov r12, lr
+ bl ld_r3_tp_adr_i
+ ldrb r0, [r1, o_MusicPlayerTrack_modT]
+ cmp r0, r3
+ beq _081DD7AA
+ strb r3, [r1, o_MusicPlayerTrack_modT]
+ ldrb r3, [r1, o_MusicPlayerTrack_flags]
+ movs r2, 0xF
+ orrs r3, r2
+ strb r3, [r1, o_MusicPlayerTrack_flags]
+_081DD7AA:
+ bx r12
+ thumb_func_end ply_modt
+
+ thumb_func_start ply_tune
+ply_tune:
+ mov r12, lr
+ bl ld_r3_tp_adr_i
+ subs r3, 0x40
+ strb r3, [r1, o_MusicPlayerTrack_tune]
+ ldrb r3, [r1, o_MusicPlayerTrack_flags]
+ movs r2, 0xC
+ orrs r3, r2
+ strb r3, [r1, o_MusicPlayerTrack_flags]
+ bx r12
+ thumb_func_end ply_tune
+
+ thumb_func_start ply_port
+ply_port:
+ mov r12, lr
+ ldr r2, [r1, o_MusicPlayerTrack_cmdPtr]
+ ldrb r3, [r2]
+ adds r2, 1
+ ldr r0, =REG_SOUND1CNT_L @ sound register base address
+ adds r0, r3
+ bl _081DD64A
+ strb r3, [r0]
+ bx r12
+ .pool
+ thumb_func_end ply_port
+
+ thumb_func_start m4aSoundVSync
+m4aSoundVSync:
+ ldr r0, lt2_SOUND_INFO_PTR
+ ldr r0, [r0]
+
+ @ Exit the function if ident is not ID_NUMBER or ID_NUMBER+1.
+ ldr r2, lt2_ID_NUMBER
+ ldr r3, [r0, o_SoundInfo_ident]
+ subs r3, r2
+ cmp r3, 1
+ bhi m4aSoundVSync_Done
+
+ @ Decrement the PCM DMA counter. If it reaches 0, we need to do a DMA.
+ ldrb r1, [r0, o_SoundInfo_pcmDmaCounter]
+ subs r1, 1
+ strb r1, [r0, o_SoundInfo_pcmDmaCounter]
+ bgt m4aSoundVSync_Done
+
+ @ Reload the PCM DMA counter.
+ ldrb r1, [r0, o_SoundInfo_pcmDmaPeriod]
+ strb r1, [r0, o_SoundInfo_pcmDmaCounter]
+
+ ldr r2, =REG_DMA1
+
+ ldr r1, [r2, 0x8] @ DMA1CNT
+ lsls r1, 7
+ bcc m4aSoundVSync_SkipDMA1 @ branch if repeat bit isn't set
+
+ ldr r1, =((DMA_ENABLE | DMA_START_NOW | DMA_32BIT | DMA_SRC_INC | DMA_DEST_FIXED) << 16) | 4
+ str r1, [r2, 0x8] @ DMA1CNT
+
+m4aSoundVSync_SkipDMA1:
+ ldr r1, [r2, 0xC + 0x8] @ DMA2CNT
+ lsls r1, 7
+ bcc m4aSoundVSync_SkipDMA2 @ branch if repeat bit isn't set
+
+ ldr r1, =((DMA_ENABLE | DMA_START_NOW | DMA_32BIT | DMA_SRC_INC | DMA_DEST_FIXED) << 16) | 4
+ str r1, [r2, 0xC + 0x8] @ DMA2CNT
+
+m4aSoundVSync_SkipDMA2:
+
+ @ turn off DMA1/DMA2
+ movs r1, DMA_32BIT >> 8
+ lsls r1, 8
+ strh r1, [r2, 0xA] @ DMA1CNT_H
+ strh r1, [r2, 0xC + 0xA] @ DMA2CNT_H
+
+ @ turn on DMA1/DMA2 direct-sound FIFO mode
+ movs r1, (DMA_ENABLE | DMA_START_SPECIAL | DMA_32BIT | DMA_REPEAT) >> 8
+ lsls r1, 8 @ LSB is 0, so DMA_SRC_INC is used (destination is always fixed in FIFO mode)
+ strh r1, [r2, 0xA] @ DMA1CNT_H
+ strh r1, [r2, 0xC + 0xA] @ DMA2CNT_H
+
+m4aSoundVSync_Done:
+ bx lr
+
+ .pool
+ thumb_func_end m4aSoundVSync
+
+ thumb_func_start MPlayMain
+MPlayMain:
+ ldr r2, lt2_ID_NUMBER
+ ldr r3, [r0, o_MusicPlayerInfo_ident]
+ cmp r2, r3
+ beq _081DD82E
+ bx lr
+_081DD82E:
+ adds r3, 0x1
+ str r3, [r0, o_MusicPlayerInfo_ident]
+ push {r0,lr}
+ ldr r3, [r0, o_MusicPlayerInfo_func]
+ cmp r3, 0
+ beq _081DD840
+ ldr r0, [r0, o_MusicPlayerInfo_intp]
+ bl call_r3
+_081DD840:
+ pop {r0}
+ push {r4-r7}
+ mov r4, r8
+ mov r5, r9
+ mov r6, r10
+ mov r7, r11
+ push {r4-r7}
+ adds r7, r0, 0
+ ldr r0, [r7, o_MusicPlayerInfo_status]
+ cmp r0, 0
+ bge _081DD858
+ b _081DDA6C
+_081DD858:
+ ldr r0, lt2_SOUND_INFO_PTR
+ ldr r0, [r0]
+ mov r8, r0
+ adds r0, r7, 0
+ bl FadeOutBody
+ ldr r0, [r7, o_MusicPlayerInfo_status]
+ cmp r0, 0
+ bge _081DD86C
+ b _081DDA6C
+_081DD86C:
+ ldrh r0, [r7, o_MusicPlayerInfo_tempoC]
+ ldrh r1, [r7, o_MusicPlayerInfo_tempoI]
+ adds r0, r1
+ b _081DD9BC
+_081DD874:
+ ldrb r6, [r7, o_MusicPlayerInfo_trackCount]
+ ldr r5, [r7, o_MusicPlayerInfo_tracks]
+ movs r3, 0x1
+ movs r4, 0
+_081DD87C:
+ ldrb r0, [r5]
+ movs r1, 0x80
+ tst r1, r0
+ bne _081DD886
+ b _081DD998
+_081DD886:
+ mov r10, r3
+ orrs r4, r3
+ mov r11, r4
+ ldr r4, [r5, o_MusicPlayerTrack_chan]
+ cmp r4, 0
+ beq _081DD8BA
+_081DD892:
+ ldrb r1, [r4]
+ movs r0, 0xC7
+ tst r0, r1
+ beq _081DD8AE
+ ldrb r0, [r4, 0x10]
+ cmp r0, 0
+ beq _081DD8B4
+ subs r0, 0x1
+ strb r0, [r4, 0x10]
+ bne _081DD8B4
+ movs r0, 0x40
+ orrs r1, r0
+ strb r1, [r4]
+ b _081DD8B4
+_081DD8AE:
+ adds r0, r4, 0
+ bl ClearChain
+_081DD8B4:
+ ldr r4, [r4, 0x34]
+ cmp r4, 0
+ bne _081DD892
+_081DD8BA:
+ ldrb r3, [r5, o_MusicPlayerTrack_flags]
+ movs r0, 0x40
+ tst r0, r3
+ beq _081DD938
+ adds r0, r5, 0
+ bl Clear64byte
+ movs r0, 0x80
+ strb r0, [r5]
+ movs r0, 0x2
+ strb r0, [r5, o_MusicPlayerTrack_bendRange]
+ movs r0, 0x40
+ strb r0, [r5, o_MusicPlayerTrack_volX]
+ movs r0, 0x16
+ strb r0, [r5, o_MusicPlayerTrack_lfoSpeed]
+ movs r0, 0x1
+ adds r1, r5, 0x6
+ strb r0, [r1, o_MusicPlayerTrack_ToneData_type - 0x6]
+ b _081DD938
+_081DD8E0:
+ ldr r2, [r5, o_MusicPlayerTrack_cmdPtr]
+ ldrb r1, [r2]
+ cmp r1, 0x80
+ bhs _081DD8EC
+ ldrb r1, [r5, o_MusicPlayerTrack_runningStatus]
+ b _081DD8F6
+_081DD8EC:
+ adds r2, 0x1
+ str r2, [r5, o_MusicPlayerTrack_cmdPtr]
+ cmp r1, 0xBD
+ bcc _081DD8F6
+ strb r1, [r5, o_MusicPlayerTrack_runningStatus]
+_081DD8F6:
+ cmp r1, 0xCF
+ bcc _081DD90C
+ mov r0, r8
+ ldr r3, [r0, o_SoundInfo_plynote]
+ adds r0, r1, 0
+ subs r0, 0xCF
+ adds r1, r7, 0
+ adds r2, r5, 0
+ bl call_r3
+ b _081DD938
+_081DD90C:
+ cmp r1, 0xB0
+ bls _081DD92E
+ adds r0, r1, 0
+ subs r0, 0xB1
+ strb r0, [r7, o_MusicPlayerInfo_cmd]
+ mov r3, r8
+ ldr r3, [r3, o_SoundInfo_MPlayJumpTable]
+ lsls r0, 2
+ ldr r3, [r3, r0]
+ adds r0, r7, 0
+ adds r1, r5, 0
+ bl call_r3
+ ldrb r0, [r5, o_MusicPlayerTrack_flags]
+ cmp r0, 0
+ beq _081DD994
+ b _081DD938
+_081DD92E:
+ ldr r0, lt_gClockTable
+ subs r1, 0x80
+ adds r1, r0
+ ldrb r0, [r1]
+ strb r0, [r5, o_MusicPlayerTrack_wait]
+_081DD938:
+ ldrb r0, [r5, o_MusicPlayerTrack_wait]
+ cmp r0, 0
+ beq _081DD8E0
+ subs r0, 0x1
+ strb r0, [r5, o_MusicPlayerTrack_wait]
+ ldrb r1, [r5, o_MusicPlayerTrack_lfoSpeed]
+ cmp r1, 0
+ beq _081DD994
+ ldrb r0, [r5, o_MusicPlayerTrack_mod]
+ cmp r0, 0
+ beq _081DD994
+ ldrb r0, [r5, o_MusicPlayerTrack_lfoDelayC]
+ cmp r0, 0
+ beq _081DD95A
+ subs r0, 0x1
+ strb r0, [r5, o_MusicPlayerTrack_lfoDelayC]
+ b _081DD994
+_081DD95A:
+ ldrb r0, [r5, o_MusicPlayerTrack_lfoSpeedC]
+ adds r0, r1
+ strb r0, [r5, o_MusicPlayerTrack_lfoSpeedC]
+ adds r1, r0, 0
+ subs r0, 0x40
+ lsls r0, 24
+ bpl _081DD96E
+ lsls r2, r1, 24
+ asrs r2, 24
+ b _081DD972
+_081DD96E:
+ movs r0, 0x80
+ subs r2, r0, r1
+_081DD972:
+ ldrb r0, [r5, o_MusicPlayerTrack_mod]
+ muls r0, r2
+ asrs r2, r0, 6
+ ldrb r0, [r5, o_MusicPlayerTrack_modM]
+ eors r0, r2
+ lsls r0, 24
+ beq _081DD994
+ strb r2, [r5, o_MusicPlayerTrack_modM]
+ ldrb r0, [r5]
+ ldrb r1, [r5, o_MusicPlayerTrack_modT]
+ cmp r1, 0
+ bne _081DD98E
+ movs r1, 0xC
+ b _081DD990
+_081DD98E:
+ movs r1, 0x3
+_081DD990:
+ orrs r0, r1
+ strb r0, [r5, o_MusicPlayerTrack_flags]
+_081DD994:
+ mov r3, r10
+ mov r4, r11
+_081DD998:
+ subs r6, 0x1
+ ble _081DD9A4
+ movs r0, 0x50
+ adds r5, r0
+ lsls r3, 1
+ b _081DD87C
+_081DD9A4:
+ ldr r0, [r7, o_MusicPlayerInfo_clock]
+ adds r0, 0x1
+ str r0, [r7, o_MusicPlayerInfo_clock]
+ cmp r4, 0
+ bne _081DD9B6
+ movs r0, 0x80
+ lsls r0, 24
+ str r0, [r7, o_MusicPlayerInfo_status]
+ b _081DDA6C
+_081DD9B6:
+ str r4, [r7, o_MusicPlayerInfo_status]
+ ldrh r0, [r7, o_MusicPlayerInfo_tempoC]
+ subs r0, 0x96
+_081DD9BC:
+ strh r0, [r7, o_MusicPlayerInfo_tempoC]
+ cmp r0, 0x96
+ bcc _081DD9C4
+ b _081DD874
+_081DD9C4:
+ ldrb r2, [r7, o_MusicPlayerInfo_trackCount]
+ ldr r5, [r7, o_MusicPlayerInfo_tracks]
+_081DD9C8:
+ ldrb r0, [r5, o_MusicPlayerTrack_flags]
+ movs r1, 0x80
+ tst r1, r0
+ beq _081DDA62
+ movs r1, 0xF
+ tst r1, r0
+ beq _081DDA62
+ mov r9, r2
+ adds r0, r7, 0
+ adds r1, r5, 0
+ bl TrkVolPitSet
+ ldr r4, [r5, o_MusicPlayerTrack_chan]
+ cmp r4, 0
+ beq _081DDA58
+_081DD9E6:
+ ldrb r1, [r4, o_SoundChannel_status]
+ movs r0, 0xC7
+ tst r0, r1
+ bne _081DD9F6
+ adds r0, r4, 0
+ bl ClearChain
+ b _081DDA52
+_081DD9F6:
+ ldrb r0, [r4, o_SoundChannel_type]
+ movs r6, 0x7
+ ands r6, r0
+ ldrb r3, [r5, o_MusicPlayerTrack_flags]
+ movs r0, 0x3
+ tst r0, r3
+ beq _081DDA14
+ bl ChnVolSetAsm
+ cmp r6, 0
+ beq _081DDA14
+ ldrb r0, [r4, o_CgbChannel_mo]
+ movs r1, 0x1
+ orrs r0, r1
+ strb r0, [r4, o_CgbChannel_mo]
+_081DDA14:
+ ldrb r3, [r5, o_MusicPlayerTrack_flags]
+ movs r0, 0xC
+ tst r0, r3
+ beq _081DDA52
+ ldrb r1, [r4, o_SoundChannel_ky]
+ movs r0, 0x8
+ ldrsb r0, [r5, r0]
+ adds r2, r1, r0
+ bpl _081DDA28
+ movs r2, 0
+_081DDA28:
+ cmp r6, 0
+ beq _081DDA46
+ mov r0, r8
+ ldr r3, [r0, o_SoundInfo_MidiKeyToCgbFreq]
+ adds r1, r2, 0
+ ldrb r2, [r5, o_MusicPlayerTrack_pitM]
+ adds r0, r6, 0
+ bl call_r3
+ str r0, [r4, o_CgbChannel_fr]
+ ldrb r0, [r4, o_CgbChannel_mo]
+ movs r1, 0x2
+ orrs r0, r1
+ strb r0, [r4, o_CgbChannel_mo]
+ b _081DDA52
+_081DDA46:
+ adds r1, r2, 0
+ ldrb r2, [r5, o_MusicPlayerTrack_pitM]
+ ldr r0, [r4, o_SoundChannel_wav]
+ bl MidiKeyToFreq
+ str r0, [r4, o_SoundChannel_freq]
+_081DDA52:
+ ldr r4, [r4, o_SoundChannel_np]
+ cmp r4, 0
+ bne _081DD9E6
+_081DDA58:
+ ldrb r0, [r5, o_MusicPlayerTrack_flags]
+ movs r1, 0xF0
+ ands r0, r1
+ strb r0, [r5, o_MusicPlayerTrack_flags]
+ mov r2, r9
+_081DDA62:
+ subs r2, 0x1
+ ble _081DDA6C
+ movs r0, 0x50
+ adds r5, r0
+ bgt _081DD9C8
+_081DDA6C:
+ ldr r0, lt2_ID_NUMBER
+ str r0, [r7, o_MusicPlayerInfo_ident]
+ pop {r0-r7}
+ mov r8, r0
+ mov r9, r1
+ mov r10, r2
+ mov r11, r3
+ pop {r3}
+
+call_r3:
+ bx r3
+
+ .align 2, 0
+lt_gClockTable: .word gClockTable
+lt2_SOUND_INFO_PTR: .word SOUND_INFO_PTR
+lt2_ID_NUMBER: .word ID_NUMBER
+ thumb_func_end MPlayMain
+
+ thumb_func_start TrackStop
+TrackStop:
+ push {r4-r6,lr}
+ adds r5, r1, 0
+ ldrb r1, [r5, o_MusicPlayerTrack_flags]
+ movs r0, 0x80
+ tst r0, r1
+ beq TrackStop_Done
+ ldr r4, [r5, o_MusicPlayerTrack_chan]
+ cmp r4, 0
+ beq TrackStop_3
+ movs r6, 0
+TrackStop_Loop:
+ ldrb r0, [r4, o_SoundChannel_status]
+ cmp r0, 0
+ beq TrackStop_2
+ ldrb r0, [r4, o_SoundChannel_type]
+ movs r3, 0x7
+ ands r0, r3
+ beq TrackStop_1
+ ldr r3, =SOUND_INFO_PTR
+ ldr r3, [r3]
+ ldr r3, [r3, o_SoundInfo_CgbOscOff]
+ bl call_r3
+TrackStop_1:
+ strb r6, [r4, o_SoundChannel_status]
+TrackStop_2:
+ str r6, [r4, o_SoundChannel_track]
+ ldr r4, [r4, o_SoundChannel_np]
+ cmp r4, 0
+ bne TrackStop_Loop
+TrackStop_3:
+ str r4, [r5, o_MusicPlayerTrack_chan]
+TrackStop_Done:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end TrackStop
+
+ thumb_func_start ChnVolSetAsm
+ChnVolSetAsm:
+ ldrb r1, [r4, 0x12]
+ movs r0, 0x14
+ ldrsb r2, [r4, r0]
+ movs r3, 0x80
+ adds r3, r2
+ muls r3, r1
+ ldrb r0, [r5, 0x10]
+ muls r0, r3
+ asrs r0, 14
+ cmp r0, 0xFF
+ bls _081DDAE8
+ movs r0, 0xFF
+_081DDAE8:
+ strb r0, [r4, 0x2]
+ movs r3, 0x7F
+ subs r3, r2
+ muls r3, r1
+ ldrb r0, [r5, 0x11]
+ muls r0, r3
+ asrs r0, 14
+ cmp r0, 0xFF
+ bls _081DDAFC
+ movs r0, 0xFF
+_081DDAFC:
+ strb r0, [r4, 0x3]
+ bx lr
+ thumb_func_end ChnVolSetAsm
+
+ thumb_func_start ply_note
+ply_note:
+ push {r4-r7,lr}
+ mov r4, r8
+ mov r5, r9
+ mov r6, r10
+ mov r7, r11
+ push {r4-r7}
+ sub sp, 0x18
+ str r1, [sp]
+ adds r5, r2, 0
+ ldr r1, =SOUND_INFO_PTR
+ ldr r1, [r1]
+ str r1, [sp, 0x4]
+ ldr r1, =gClockTable
+ adds r0, r1
+ ldrb r0, [r0]
+ strb r0, [r5, o_MusicPlayerTrack_gateTime]
+ ldr r3, [r5, o_MusicPlayerTrack_cmdPtr]
+ ldrb r0, [r3]
+ cmp r0, 0x80
+ bhs _081DDB46
+ strb r0, [r5, o_MusicPlayerTrack_key]
+ adds r3, 0x1
+ ldrb r0, [r3]
+ cmp r0, 0x80
+ bhs _081DDB44
+ strb r0, [r5, o_MusicPlayerTrack_velocity]
+ adds r3, 0x1
+ ldrb r0, [r3]
+ cmp r0, 0x80
+ bhs _081DDB44
+ ldrb r1, [r5, o_MusicPlayerTrack_gateTime]
+ adds r1, r0
+ strb r1, [r5, o_MusicPlayerTrack_gateTime]
+ adds r3, 0x1
+_081DDB44:
+ str r3, [r5, o_MusicPlayerTrack_cmdPtr]
+_081DDB46:
+ movs r0, 0
+ str r0, [sp, 0x14]
+ adds r4, r5, 0
+ adds r4, o_MusicPlayerTrack_ToneData_type
+ ldrb r2, [r4]
+ movs r0, TONEDATA_TYPE_RHY | TONEDATA_TYPE_SPL
+ tst r0, r2
+ beq _081DDB98
+ ldrb r3, [r5, o_MusicPlayerTrack_key]
+ movs r0, TONEDATA_TYPE_SPL
+ tst r0, r2
+ beq _081DDB66
+ ldr r1, [r5, o_MusicPlayerTrack_ToneData_keySplitTable]
+ adds r1, r3
+ ldrb r0, [r1]
+ b _081DDB68
+_081DDB66:
+ adds r0, r3, 0
+_081DDB68:
+ lsls r1, r0, 1
+ adds r1, r0
+ lsls r1, 2
+ ldr r0, [r5, o_MusicPlayerTrack_ToneData_wav]
+ adds r1, r0
+ mov r9, r1
+ mov r6, r9
+ ldrb r1, [r6]
+ movs r0, 0xC0
+ tst r0, r1
+ beq _081DDB80
+ b _081DDCEA
+_081DDB80:
+ movs r0, 0x80
+ tst r0, r2
+ beq _081DDB9C
+ ldrb r1, [r6, 0x3]
+ movs r0, 0x80
+ tst r0, r1
+ beq _081DDB94
+ subs r1, 0xC0
+ lsls r1, 1
+ str r1, [sp, 0x14]
+_081DDB94:
+ ldrb r3, [r6, 0x1]
+ b _081DDB9C
+_081DDB98:
+ mov r9, r4
+ ldrb r3, [r5, 0x5]
+_081DDB9C:
+ str r3, [sp, 0x8]
+ ldr r6, [sp]
+ ldrb r1, [r6, 0x9]
+ ldrb r0, [r5, 0x1D]
+ adds r0, r1
+ cmp r0, 0xFF
+ bls _081DDBAC
+ movs r0, 0xFF
+_081DDBAC:
+ str r0, [sp, 0x10]
+ mov r6, r9
+ ldrb r0, [r6]
+ movs r6, 0x7
+ ands r6, r0
+ str r6, [sp, 0xC]
+ beq _081DDBEC
+ ldr r0, [sp, 0x4]
+ ldr r4, [r0, 0x1C]
+ cmp r4, 0
+ bne _081DDBC4
+ b _081DDCEA
+_081DDBC4:
+ subs r6, 0x1
+ lsls r0, r6, 6
+ adds r4, r0
+ ldrb r1, [r4]
+ movs r0, 0xC7
+ tst r0, r1
+ beq _081DDC40
+ movs r0, 0x40
+ tst r0, r1
+ bne _081DDC40
+ ldrb r1, [r4, 0x13]
+ ldr r0, [sp, 0x10]
+ cmp r1, r0
+ bcc _081DDC40
+ beq _081DDBE4
+ b _081DDCEA
+_081DDBE4:
+ ldr r0, [r4, 0x2C]
+ cmp r0, r5
+ bcs _081DDC40
+ b _081DDCEA
+_081DDBEC:
+ ldr r6, [sp, 0x10]
+ adds r7, r5, 0
+ movs r2, 0
+ mov r8, r2
+ ldr r4, [sp, 0x4]
+ ldrb r3, [r4, 0x6]
+ adds r4, 0x50
+_081DDBFA:
+ ldrb r1, [r4]
+ movs r0, 0xC7
+ tst r0, r1
+ beq _081DDC40
+ movs r0, 0x40
+ tst r0, r1
+ beq _081DDC14
+ cmp r2, 0
+ bne _081DDC18
+ adds r2, 0x1
+ ldrb r6, [r4, 0x13]
+ ldr r7, [r4, 0x2C]
+ b _081DDC32
+_081DDC14:
+ cmp r2, 0
+ bne _081DDC34
+_081DDC18:
+ ldrb r0, [r4, 0x13]
+ cmp r0, r6
+ bcs _081DDC24
+ adds r6, r0, 0
+ ldr r7, [r4, 0x2C]
+ b _081DDC32
+_081DDC24:
+ bhi _081DDC34
+ ldr r0, [r4, 0x2C]
+ cmp r0, r7
+ bls _081DDC30
+ adds r7, r0, 0
+ b _081DDC32
+_081DDC30:
+ bcc _081DDC34
+_081DDC32:
+ mov r8, r4
+_081DDC34:
+ adds r4, 0x40
+ subs r3, 0x1
+ bgt _081DDBFA
+ mov r4, r8
+ cmp r4, 0
+ beq _081DDCEA
+_081DDC40:
+ adds r0, r4, 0
+ bl ClearChain
+ movs r1, 0
+ str r1, [r4, 0x30]
+ ldr r3, [r5, 0x20]
+ str r3, [r4, 0x34]
+ cmp r3, 0
+ beq _081DDC54
+ str r4, [r3, 0x30]
+_081DDC54:
+ str r4, [r5, 0x20]
+ str r5, [r4, 0x2C]
+ ldrb r0, [r5, 0x1B]
+ strb r0, [r5, 0x1C]
+ cmp r0, r1
+ beq _081DDC66
+ adds r1, r5, 0
+ bl clear_modM
+_081DDC66:
+ ldr r0, [sp]
+ adds r1, r5, 0
+ bl TrkVolPitSet
+ ldr r0, [r5, 0x4]
+ str r0, [r4, 0x10]
+ ldr r0, [sp, 0x10]
+ strb r0, [r4, 0x13]
+ ldr r0, [sp, 0x8]
+ strb r0, [r4, 0x8]
+ ldr r0, [sp, 0x14]
+ strb r0, [r4, 0x14]
+ mov r6, r9
+ ldrb r0, [r6]
+ strb r0, [r4, 0x1]
+ ldr r7, [r6, 0x4]
+ str r7, [r4, 0x24]
+ ldr r0, [r6, 0x8]
+ str r0, [r4, 0x4]
+ ldrh r0, [r5, 0x1E]
+ strh r0, [r4, 0xC]
+ bl ChnVolSetAsm
+ ldrb r1, [r4, 0x8]
+ movs r0, 0x8
+ ldrsb r0, [r5, r0]
+ adds r3, r1, r0
+ bpl _081DDCA0
+ movs r3, 0
+_081DDCA0:
+ ldr r6, [sp, 0xC]
+ cmp r6, 0
+ beq _081DDCCE
+ mov r6, r9
+ ldrb r0, [r6, 0x2]
+ strb r0, [r4, 0x1E]
+ ldrb r1, [r6, 0x3]
+ movs r0, 0x80
+ tst r0, r1
+ bne _081DDCBA
+ movs r0, 0x70
+ tst r0, r1
+ bne _081DDCBC
+_081DDCBA:
+ movs r1, 0x8
+_081DDCBC:
+ strb r1, [r4, 0x1F]
+ ldrb r2, [r5, 0x9]
+ adds r1, r3, 0
+ ldr r0, [sp, 0xC]
+ ldr r3, [sp, 0x4]
+ ldr r3, [r3, 0x30]
+ bl call_r3
+ b _081DDCDC
+_081DDCCE:
+ ldr r0, [r5, o_MusicPlayerTrack_unk_3C]
+ str r0, [r4, 0x18]
+ ldrb r2, [r5, 0x9]
+ adds r1, r3, 0
+ adds r0, r7, 0
+ bl MidiKeyToFreq
+_081DDCDC:
+ str r0, [r4, 0x20]
+ movs r0, 0x80
+ strb r0, [r4]
+ ldrb r1, [r5]
+ movs r0, 0xF0
+ ands r0, r1
+ strb r0, [r5]
+_081DDCEA:
+ add sp, 0x18
+ pop {r0-r7}
+ mov r8, r0
+ mov r9, r1
+ mov r10, r2
+ mov r11, r3
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end ply_note
+
+ thumb_func_start ply_endtie
+ply_endtie:
+ push {r4,r5}
+ ldr r2, [r1, o_MusicPlayerTrack_cmdPtr]
+ ldrb r3, [r2]
+ cmp r3, 0x80
+ bhs _081DDD16
+ strb r3, [r1, o_MusicPlayerTrack_key]
+ adds r2, 0x1
+ str r2, [r1, o_MusicPlayerTrack_cmdPtr]
+ b _081DDD18
+_081DDD16:
+ ldrb r3, [r1, o_MusicPlayerTrack_key]
+_081DDD18:
+ ldr r1, [r1, o_MusicPlayerTrack_chan]
+ cmp r1, 0
+ beq _081DDD40
+ movs r4, 0x83
+ movs r5, 0x40
+_081DDD22:
+ ldrb r2, [r1, o_SoundChannel_status]
+ tst r2, r4
+ beq _081DDD3A
+ tst r2, r5
+ bne _081DDD3A
+ ldrb r0, [r1, o_SoundChannel_mk]
+ cmp r0, r3
+ bne _081DDD3A
+ movs r0, 0x40
+ orrs r2, r0
+ strb r2, [r1, o_SoundChannel_status]
+ b _081DDD40
+_081DDD3A:
+ ldr r1, [r1, o_SoundChannel_np]
+ cmp r1, 0
+ bne _081DDD22
+_081DDD40:
+ pop {r4,r5}
+ bx lr
+ thumb_func_end ply_endtie
+
+ thumb_func_start clear_modM
+clear_modM:
+ movs r2, 0
+ strb r2, [r1, o_MusicPlayerTrack_modM]
+ strb r2, [r1, o_MusicPlayerTrack_lfoSpeedC]
+ ldrb r2, [r1, o_MusicPlayerTrack_modT]
+ cmp r2, 0
+ bne _081DDD54
+ movs r2, 0xC
+ b _081DDD56
+_081DDD54:
+ movs r2, 0x3
+_081DDD56:
+ ldrb r3, [r1, o_MusicPlayerTrack_flags]
+ orrs r3, r2
+ strb r3, [r1, o_MusicPlayerTrack_flags]
+ bx lr
+ thumb_func_end clear_modM
+
+ thumb_func_start ld_r3_tp_adr_i
+ld_r3_tp_adr_i_unchecked:
+ ldr r2, [r1, o_MusicPlayerTrack_cmdPtr]
+ adds r3, r2, 1
+ str r3, [r1, o_MusicPlayerTrack_cmdPtr]
+ ldrb r3, [r2]
+ bx lr
+ thumb_func_end ld_r3_tp_adr_i
+
+ thumb_func_start ply_lfos
+ply_lfos:
+ mov r12, lr
+ bl ld_r3_tp_adr_i_unchecked
+ strb r3, [r1, o_MusicPlayerTrack_lfoSpeed]
+ cmp r3, 0
+ bne _081DDD7C
+ bl clear_modM
+_081DDD7C:
+ bx r12
+ thumb_func_end ply_lfos
+
+ thumb_func_start ply_mod
+ply_mod:
+ mov r12, lr
+ bl ld_r3_tp_adr_i_unchecked
+ strb r3, [r1, o_MusicPlayerTrack_mod]
+ cmp r3, 0
+ bne _081DDD90
+ bl clear_modM
+_081DDD90:
+ bx r12
+ thumb_func_end ply_mod
+
+ .align 2, 0 @ Don't pad with nop.
+
+ .bss
+gUnknown_03001300:
+ .space 0x40
+ .size gUnknown_03001300, .-gUnknown_03001300
+
+ .global gMPlayTrack_BGM
+gMPlayTrack_BGM:
+ .space 0x320
+ .size gMPlayTrack_BGM, .-gMPlayTrack_BGM
+
+ .global gMPlayTrack_SE1
+gMPlayTrack_SE1:
+ .space 0xF0
+ .size gMPlayTrack_SE1, .-gMPlayTrack_SE1
+
+ .global gMPlayTrack_SE2
+gMPlayTrack_SE2:
+ .space 0x2D0
+ .size gMPlayTrack_SE2, .-gMPlayTrack_SE2
+
+ .global gMPlayTrack_SE3
+gMPlayTrack_SE3:
+ .space 0x50
+ .size gMPlayTrack_SE3, .-gMPlayTrack_SE3
diff --git a/src/match_call.c b/src/match_call.c
index b02af9977..4b0134d2c 100644
--- a/src/match_call.c
+++ b/src/match_call.c
@@ -1290,7 +1290,7 @@ static bool32 sub_81963F0(u8 taskId)
sub_81973A4();
playerObjectId = GetEventObjectIdByLocalIdAndMap(EVENT_OBJ_ID_PLAYER, 0, 0);
EventObjectClearHeldMovementIfFinished(&gEventObjects[playerObjectId]);
- sub_80D338C();
+ ScriptMovement_UnfreezeEventObjects();
UnfreezeEventObjects();
ScriptContext2_Disable();
}
diff --git a/src/mauville_old_man.c b/src/mauville_old_man.c
index 64f04f3bc..a4d70c062 100644
--- a/src/mauville_old_man.c
+++ b/src/mauville_old_man.c
@@ -1155,7 +1155,7 @@ static void PrintStoryList(void)
if (curWidth > width)
width = curWidth;
}
- sStorytellerWindowId = CreateWindowFromRect(0, 0, convert_pixel_width_to_tile_width(width), GetFreeStorySlot() * 2 + 2);
+ sStorytellerWindowId = CreateWindowFromRect(0, 0, ConvertPixelWidthToTileWidth(width), GetFreeStorySlot() * 2 + 2);
SetStandardWindowBorderStyle(sStorytellerWindowId, 0);
for (i = 0; i < 4; i++)
{
diff --git a/src/mon_markings.c b/src/mon_markings.c
index f8b128045..f4d6b3818 100644
--- a/src/mon_markings.c
+++ b/src/mon_markings.c
@@ -350,7 +350,7 @@ void sub_811FAA4(u8 markings, s16 x, s16 y)
u16 i;
sMenu->cursorPos = 0;
sMenu->markings = markings;
- for (i = 0; i < 4; i++)
+ for (i = 0; i < NUM_MON_MARKINGS; i++)
sMenu->markingsArray[i] = (sMenu->markings >> i) & 1;
sub_811FC80(x, y, sMenu->baseTileTag, sMenu->basePaletteTag);
}
@@ -371,7 +371,7 @@ void sub_811FAF8(void)
DestroySprite(sMenu->menuWindowSprites[i]);
sMenu->menuWindowSprites[i] = NULL;
}
- for (i = 0; i < 4; i++)
+ for (i = 0; i < NUM_MON_MARKINGS; i++)
{
if (!sMenu->menuMarkingSprites[i])
return;
@@ -422,7 +422,7 @@ bool8 sub_811FBA4(void)
{
case 4:
sMenu->markings = 0;
- for (i = 0; i < 4; i++)
+ for (i = 0; i < NUM_MON_MARKINGS; i++)
sMenu->markings |= sMenu->markingsArray[i] << i;
return FALSE;
case 5:
@@ -498,7 +498,7 @@ static void sub_811FC80(s16 x, s16 y, u16 baseTileTag, u16 basePaletteTag)
sprTemplate.callback = sub_811FF40;
sprTemplate.oam = &gUnknown_0859EE84;
- for (i = 0; i < 4; i++)
+ for (i = 0; i < NUM_MON_MARKINGS; i++)
{
spriteId = CreateSprite(&sprTemplate, x + 32, y + 16 + 16 * i, 0);
if (spriteId != MAX_SPRITES)
diff --git a/src/mossdeep_gym.c b/src/mossdeep_gym.c
index d8adbe0c6..880780638 100644
--- a/src/mossdeep_gym.c
+++ b/src/mossdeep_gym.c
@@ -55,7 +55,7 @@ void FinishMossdeepGymTiles(void)
id = GetEventObjectIdByLocalIdAndMap(EVENT_OBJ_ID_PLAYER, 0, 0);
EventObjectClearHeldMovementIfFinished(&gEventObjects[id]);
- sub_80D338C();
+ ScriptMovement_UnfreezeEventObjects();
}
u16 MossdeepGym_MoveEvents(u8 arg0)
diff --git a/src/move_relearner.c b/src/move_relearner.c
index 0b0b4a5aa..867c6c995 100644
--- a/src/move_relearner.c
+++ b/src/move_relearner.c
@@ -154,7 +154,7 @@ static EWRAM_DATA struct
{
u8 state;
u8 heartSpriteIds[16]; /*0x001*/
- u16 movesToLearn[4]; /*0x012*/
+ u16 movesToLearn[MAX_MON_MOVES]; /*0x012*/
u8 filler1A[0x44 - 0x1A]; /*0x01A*/
u8 partyMon; /*0x044*/
u8 moveSlot; /*0x045*/
diff --git a/src/naming_screen.c b/src/naming_screen.c
index 7da7d99b0..472489a26 100644
--- a/src/naming_screen.c
+++ b/src/naming_screen.c
@@ -541,16 +541,16 @@ static void DisplaySentToPCMessage(void)
{
u8 stringToDisplay = 0;
- if (!sub_813B260())
+ if (!IsDestinationBoxFull())
{
- StringCopy(gStringVar1, GetBoxNamePtr(VarGet(VAR_STORAGE_UNKNOWN)));
+ StringCopy(gStringVar1, GetBoxNamePtr(VarGet(VAR_PC_BOX_TO_SEND_MON)));
StringCopy(gStringVar2, gNamingScreenData->destBuffer);
}
else
{
- StringCopy(gStringVar1, GetBoxNamePtr(VarGet(VAR_STORAGE_UNKNOWN)));
+ StringCopy(gStringVar1, GetBoxNamePtr(VarGet(VAR_PC_BOX_TO_SEND_MON)));
StringCopy(gStringVar2, gNamingScreenData->destBuffer);
- StringCopy(gStringVar3, GetBoxNamePtr(get_unknown_box_id()));
+ StringCopy(gStringVar3, GetBoxNamePtr(GetPCBoxToSendMon()));
stringToDisplay = 2;
}
diff --git a/src/new_game.c b/src/new_game.c
index ee67da9be..1021ea96c 100644
--- a/src/new_game.c
+++ b/src/new_game.c
@@ -81,7 +81,7 @@ u32 GetTrainerId(u8 *trainerId)
void CopyTrainerId(u8 *dst, u8 *src)
{
s32 i;
- for (i = 0; i < 4; i++)
+ for (i = 0; i < TRAINER_ID_LENGTH; i++)
dst[i] = src[i];
}
@@ -198,7 +198,7 @@ void NewGameInitData(void)
ScriptContext2_RunNewScript(EventScript_ResetAllMapFlags);
ResetMiniGamesResults();
copy_strings_to_sav1();
- SetLilycoveLady();
+ InitLilycoveLady();
ResetAllApprenticeData();
ClearRankingHallRecords();
InitMatchCallCounters();
diff --git a/src/option_menu.c b/src/option_menu.c
index 3ffb2738f..e0473b5c3 100644
--- a/src/option_menu.c
+++ b/src/option_menu.c
@@ -48,6 +48,13 @@ enum
WIN_OPTIONS
};
+#define YPOS_TEXTSPEED (MENUITEM_TEXTSPEED * 16)
+#define YPOS_BATTLESCENE (MENUITEM_BATTLESCENE * 16)
+#define YPOS_BATTLESTYLE (MENUITEM_BATTLESTYLE * 16)
+#define YPOS_SOUND (MENUITEM_SOUND * 16)
+#define YPOS_BUTTONMODE (MENUITEM_BUTTONMODE * 16)
+#define YPOS_FRAMETYPE (MENUITEM_FRAMETYPE * 16)
+
// this file's functions
static void Task_OptionMenuFadeIn(u8 taskId);
static void Task_OptionMenuProcessInput(u8 taskId);
@@ -80,13 +87,13 @@ static const u8 sEqualSignGfx[] = INCBIN_U8("graphics/misc/option_menu_equals_si
static const u8 *const sOptionMenuItemsNames[MENUITEM_COUNT] =
{
- gText_TextSpeed,
- gText_BattleScene,
- gText_BattleStyle,
- gText_Sound,
- gText_ButtonMode,
- gText_Frame,
- gText_OptionMenuCancel,
+ [MENUITEM_TEXTSPEED] = gText_TextSpeed,
+ [MENUITEM_BATTLESCENE] = gText_BattleScene,
+ [MENUITEM_BATTLESTYLE] = gText_BattleStyle,
+ [MENUITEM_SOUND] = gText_Sound,
+ [MENUITEM_BUTTONMODE] = gText_ButtonMode,
+ [MENUITEM_FRAMETYPE] = gText_Frame,
+ [MENUITEM_CANCEL] = gText_OptionMenuCancel,
};
static const struct WindowTemplate sOptionMenuWinTemplates[] =
@@ -280,12 +287,12 @@ static void Task_OptionMenuProcessInput(u8 taskId)
if (gTasks[taskId].data[TD_MENUSELECTION] > 0)
gTasks[taskId].data[TD_MENUSELECTION]--;
else
- gTasks[taskId].data[TD_MENUSELECTION] = 6;
+ gTasks[taskId].data[TD_MENUSELECTION] = MENUITEM_CANCEL;
HighlightOptionMenuItem(gTasks[taskId].data[TD_MENUSELECTION]);
}
else if (gMain.newKeys & DPAD_DOWN)
{
- if (gTasks[taskId].data[TD_MENUSELECTION] <= 5)
+ if (gTasks[taskId].data[TD_MENUSELECTION] < MENUITEM_CANCEL)
gTasks[taskId].data[TD_MENUSELECTION]++;
else
gTasks[taskId].data[TD_MENUSELECTION] = 0;
@@ -431,7 +438,7 @@ static void TextSpeed_DrawChoices(u8 selection)
styles[2] = 0;
styles[selection] = 1;
- DrawOptionMenuChoice(gText_TextSpeedSlow, 104, 0, styles[0]);
+ DrawOptionMenuChoice(gText_TextSpeedSlow, 104, YPOS_TEXTSPEED, styles[0]);
widthSlow = GetStringWidth(1, gText_TextSpeedSlow, 0);
widthMid = GetStringWidth(1, gText_TextSpeedMid, 0);
@@ -439,9 +446,9 @@ static void TextSpeed_DrawChoices(u8 selection)
widthMid -= 94;
xMid = (widthSlow - widthMid - widthFast) / 2 + 104;
- DrawOptionMenuChoice(gText_TextSpeedMid, xMid, 0, styles[1]);
+ DrawOptionMenuChoice(gText_TextSpeedMid, xMid, YPOS_TEXTSPEED, styles[1]);
- DrawOptionMenuChoice(gText_TextSpeedFast, GetStringRightAlignXOffset(1, gText_TextSpeedFast, 198), 0, styles[2]);
+ DrawOptionMenuChoice(gText_TextSpeedFast, GetStringRightAlignXOffset(1, gText_TextSpeedFast, 198), YPOS_TEXTSPEED, styles[2]);
}
static u8 BattleScene_ProcessInput(u8 selection)
@@ -463,8 +470,8 @@ static void BattleScene_DrawChoices(u8 selection)
styles[1] = 0;
styles[selection] = 1;
- DrawOptionMenuChoice(gText_BattleSceneOn, 104, 16, styles[0]);
- DrawOptionMenuChoice(gText_BattleSceneOff, GetStringRightAlignXOffset(1, gText_BattleSceneOff, 198), 16, styles[1]);
+ DrawOptionMenuChoice(gText_BattleSceneOn, 104, YPOS_BATTLESCENE, styles[0]);
+ DrawOptionMenuChoice(gText_BattleSceneOff, GetStringRightAlignXOffset(1, gText_BattleSceneOff, 198), YPOS_BATTLESCENE, styles[1]);
}
static u8 BattleStyle_ProcessInput(u8 selection)
@@ -486,8 +493,8 @@ static void BattleStyle_DrawChoices(u8 selection)
styles[1] = 0;
styles[selection] = 1;
- DrawOptionMenuChoice(gText_BattleStyleShift, 104, 32, styles[0]);
- DrawOptionMenuChoice(gText_BattleStyleSet, GetStringRightAlignXOffset(1, gText_BattleStyleSet, 198), 32, styles[1]);
+ DrawOptionMenuChoice(gText_BattleStyleShift, 104, YPOS_BATTLESTYLE, styles[0]);
+ DrawOptionMenuChoice(gText_BattleStyleSet, GetStringRightAlignXOffset(1, gText_BattleStyleSet, 198), YPOS_BATTLESTYLE, styles[1]);
}
static u8 Sound_ProcessInput(u8 selection)
@@ -510,8 +517,8 @@ static void Sound_DrawChoices(u8 selection)
styles[1] = 0;
styles[selection] = 1;
- DrawOptionMenuChoice(gText_SoundMono, 104, 48, styles[0]);
- DrawOptionMenuChoice(gText_SoundStereo, GetStringRightAlignXOffset(1, gText_SoundStereo, 198), 48, styles[1]);
+ DrawOptionMenuChoice(gText_SoundMono, 104, YPOS_SOUND, styles[0]);
+ DrawOptionMenuChoice(gText_SoundStereo, GetStringRightAlignXOffset(1, gText_SoundStereo, 198), YPOS_SOUND, styles[1]);
}
static u8 FrameType_ProcessInput(u8 selection)
@@ -568,8 +575,8 @@ static void FrameType_DrawChoices(u8 selection)
text[i] = EOS;
- DrawOptionMenuChoice(gText_FrameType, 104, 80, 0);
- DrawOptionMenuChoice(text, 128, 80, 1);
+ DrawOptionMenuChoice(gText_FrameType, 104, YPOS_FRAMETYPE, 0);
+ DrawOptionMenuChoice(text, 128, YPOS_FRAMETYPE, 1);
}
static u8 ButtonMode_ProcessInput(u8 selection)
@@ -605,7 +612,7 @@ static void ButtonMode_DrawChoices(u8 selection)
styles[2] = 0;
styles[selection] = 1;
- DrawOptionMenuChoice(gText_ButtonTypeNormal, 104, 64, styles[0]);
+ DrawOptionMenuChoice(gText_ButtonTypeNormal, 104, YPOS_BUTTONMODE, styles[0]);
widthNormal = GetStringWidth(1, gText_ButtonTypeNormal, 0);
widthLR = GetStringWidth(1, gText_ButtonTypeLR, 0);
@@ -613,9 +620,9 @@ static void ButtonMode_DrawChoices(u8 selection)
widthLR -= 94;
xLR = (widthNormal - widthLR - widthLA) / 2 + 104;
- DrawOptionMenuChoice(gText_ButtonTypeLR, xLR, 64, styles[1]);
+ DrawOptionMenuChoice(gText_ButtonTypeLR, xLR, YPOS_BUTTONMODE, styles[1]);
- DrawOptionMenuChoice(gText_ButtonTypeLEqualsA, GetStringRightAlignXOffset(1, gText_ButtonTypeLEqualsA, 198), 64, styles[2]);
+ DrawOptionMenuChoice(gText_ButtonTypeLEqualsA, GetStringRightAlignXOffset(1, gText_ButtonTypeLEqualsA, 198), YPOS_BUTTONMODE, styles[2]);
}
static void DrawTextOption(void)
diff --git a/src/overworld.c b/src/overworld.c
index cefbd8159..0cac8390a 100644
--- a/src/overworld.c
+++ b/src/overworld.c
@@ -1759,7 +1759,7 @@ void CB2_ContinueSavedGame(void)
static void FieldClearVBlankHBlankCallbacks(void)
{
- if (warp0_in_pokecenter() == TRUE)
+ if (UsedPokemonCenterWarp() == TRUE)
CloseLink();
if (gWirelessCommType != 0)
@@ -2435,7 +2435,7 @@ static void UpdateAllLinkPlayers(u16 *keys, s32 selfId)
struct TradeRoomPlayer trainer;
s32 i;
- for (i = 0; i < 4; i++)
+ for (i = 0; i < MAX_LINK_PLAYERS; i++)
{
u8 key = keys[i];
u16 setFacing = FACING_NONE;
@@ -3026,7 +3026,7 @@ static s32 sub_80878E4(u8 linkPlayerId)
static u8 GetLinkPlayerIdAt(s16 x, s16 y)
{
u8 i;
- for (i = 0; i < 4; i++)
+ for (i = 0; i < MAX_LINK_PLAYERS; i++)
{
if (gLinkPlayerEventObjects[i].active
&& (gLinkPlayerEventObjects[i].movementMode == 0 || gLinkPlayerEventObjects[i].movementMode == 2))
diff --git a/src/party_menu.c b/src/party_menu.c
index dd0a4dabd..f4b749bde 100755
--- a/src/party_menu.c
+++ b/src/party_menu.c
@@ -3650,7 +3650,7 @@ static u8 sub_81B31B0(u8 a)
for (i = 0; i < gUnknown_0203CEC4->listSize; i++)
{
- u8 unk = (gUnknown_0203CEC4->actions[i] > 18) ? 4 : 3;
+ u8 unk = (gUnknown_0203CEC4->actions[i] >= MENU_FIELD_MOVES) ? 4 : 3;
AddTextPrinterParameterized4(gUnknown_0203CEC4->windowId[0], 1, cursorDimension, (i * 16) + 1, fontAttribute, 0, sFontColorTable[unk], 0, sCursorOptions[gUnknown_0203CEC4->actions[i]].text);
}
diff --git a/src/pokeblock.c b/src/pokeblock.c
index 0d8469132..30e630d9a 100644
--- a/src/pokeblock.c
+++ b/src/pokeblock.c
@@ -3,7 +3,6 @@
#include "battle.h"
#include "battle_controllers.h"
#include "battle_message.h"
-#include "berry.h"
#include "bg.h"
#include "decompress.h"
#include "event_data.h"
@@ -30,6 +29,7 @@
#include "task.h"
#include "text.h"
#include "text_window.h"
+#include "constants/berry.h"
#include "constants/items.h"
#include "constants/songs.h"
#include "constants/rgb.h"
diff --git a/src/pokedex.c b/src/pokedex.c
index 0e532ed92..c1787ef6a 100644
--- a/src/pokedex.c
+++ b/src/pokedex.c
@@ -4249,12 +4249,12 @@ u16 GetPokedexHeightWeight(u16 dexNum, u8 data)
{
switch (data)
{
- case 0: // height
- return gPokedexEntries[dexNum].height;
- case 1: // weight
- return gPokedexEntries[dexNum].weight;
- default:
- return 1;
+ case 0: // height
+ return gPokedexEntries[dexNum].height;
+ case 1: // weight
+ return gPokedexEntries[dexNum].weight;
+ default:
+ return 1;
}
}
@@ -4360,23 +4360,23 @@ u16 GetHoennPokedexCount(u8 caseID)
return count;
}
-u16 sub_80C089C(u8 caseID)
+u16 GetKantoPokedexCount(u8 caseID)
{
u16 count = 0;
u16 i;
- for (i = 0; i < 151; i++)
+ for (i = 0; i < KANTO_DEX_COUNT; i++)
{
switch (caseID)
{
- case FLAG_GET_SEEN:
- if (GetSetPokedexFlag(i + 1, FLAG_GET_SEEN))
- count++;
- break;
- case FLAG_GET_CAUGHT:
- if (GetSetPokedexFlag(i + 1, FLAG_GET_CAUGHT))
- count++;
- break;
+ case FLAG_GET_SEEN:
+ if (GetSetPokedexFlag(i + 1, FLAG_GET_SEEN))
+ count++;
+ break;
+ case FLAG_GET_CAUGHT:
+ if (GetSetPokedexFlag(i + 1, FLAG_GET_CAUGHT))
+ count++;
+ break;
}
}
return count;
@@ -4386,7 +4386,7 @@ bool16 HasAllHoennMons(void)
{
u16 i;
- for (i = 0; i < 200; i++)
+ for (i = 0; i < HOENN_DEX_COUNT - 2; i++)
{
if (!GetSetPokedexFlag(HoennToNationalOrder(i + 1), FLAG_GET_CAUGHT))
return FALSE;
@@ -4394,11 +4394,11 @@ bool16 HasAllHoennMons(void)
return TRUE;
}
-bool8 sub_80C0918(void)
+bool8 HasAllKantoMons(void)
{
u16 i;
- for (i = 0; i < 150; i++)
+ for (i = 0; i < KANTO_DEX_COUNT - 1; i++)
{
if (!GetSetPokedexFlag(i + 1, FLAG_GET_CAUGHT))
return FALSE;
@@ -4406,26 +4406,26 @@ bool8 sub_80C0918(void)
return TRUE;
}
-u16 sub_80C0944(void)
+bool16 HasAllMons(void)
{
u16 i;
- for (i = 0; i < 150; i++)
+ for (i = 0; i < NATIONAL_DEX_MEWTWO; i++)
{
if (!GetSetPokedexFlag(i + 1, FLAG_GET_CAUGHT))
- return 0;
+ return FALSE;
}
- for (i = 151; i < 248; i++)
+ for (i = NATIONAL_DEX_MEW; i < NATIONAL_DEX_TYRANITAR; i++)
{
if (!GetSetPokedexFlag(i + 1, FLAG_GET_CAUGHT))
- return 0;
+ return FALSE;
}
- for (i = 251; i < 384; i++)
+ for (i = NATIONAL_DEX_CELEBI; i < NATIONAL_DEX_RAYQUAZA; i++)
{
if (!GetSetPokedexFlag(i + 1, FLAG_GET_CAUGHT))
- return 0;
+ return FALSE;
}
- return 1;
+ return TRUE;
}
void sub_80C09B0(u16 a)
diff --git a/src/pokemon.c b/src/pokemon.c
index cb7be1715..8812e5bc4 100644
--- a/src/pokemon.c
+++ b/src/pokemon.c
@@ -2341,7 +2341,7 @@ void CreateMonWithEVSpread(struct Pokemon *mon, u16 species, u8 level, u8 fixedI
u16 evAmount;
u8 evsBits;
- CreateMon(mon, species, level, fixedIV, 0, 0, 0, 0);
+ CreateMon(mon, species, level, fixedIV, 0, 0, OT_ID_PLAYER_ID, 0);
evsBits = evSpread;
@@ -2373,7 +2373,7 @@ void CreateBattleTowerMon(struct Pokemon *mon, struct BattleTowerPokemon *src)
u8 language;
u8 value;
- CreateMon(mon, src->species, src->level, 0, 1, src->personality, 1, src->otId);
+ CreateMon(mon, src->species, src->level, 0, 1, src->personality, OT_ID_PRESET, src->otId);
for (i = 0; i < MAX_MON_MOVES; i++)
SetMonMoveSlot(mon, src->moves[i], i);
@@ -2435,7 +2435,7 @@ void CreateBattleTowerMon2(struct Pokemon *mon, struct BattleTowerPokemon *src,
else
level = src->level;
- CreateMon(mon, src->species, level, 0, 1, src->personality, 1, src->otId);
+ CreateMon(mon, src->species, level, 0, 1, src->personality, OT_ID_PRESET, src->otId);
for (i = 0; i < MAX_MON_MOVES; i++)
SetMonMoveSlot(mon, src->moves[i], i);
@@ -2497,7 +2497,7 @@ void CreateApprenticeMon(struct Pokemon *mon, const struct Apprentice *src, u8 m
0x1F,
TRUE,
personality,
- TRUE,
+ OT_ID_PRESET,
otId);
SetMonData(mon, MON_DATA_HELD_ITEM, &src->party[monId].item);
@@ -2527,7 +2527,7 @@ void CreateMonWithEVSpreadNatureOTID(struct Pokemon *mon, u16 species, u8 level,
i = Random32();
} while (nature != GetNatureFromPersonality(i));
- CreateMon(mon, species, level, fixedIV, TRUE, i, TRUE, otId);
+ CreateMon(mon, species, level, fixedIV, TRUE, i, OT_ID_PRESET, otId);
evsBits = evSpread;
for (i = 0; i < NUM_STATS; i++)
{
@@ -2989,11 +2989,11 @@ u16 MonTryLearningNewMove(struct Pokemon *mon, bool8 firstMove)
void DeleteFirstMoveAndGiveMoveToMon(struct Pokemon *mon, u16 move)
{
s32 i;
- u16 moves[4];
- u8 pp[4];
+ u16 moves[MAX_MON_MOVES];
+ u8 pp[MAX_MON_MOVES];
u8 ppBonuses;
- for (i = 0; i < 3; i++)
+ for (i = 0; i < MAX_MON_MOVES - 1; i++)
{
moves[i] = GetMonData(mon, MON_DATA_MOVE2 + i, NULL);
pp[i] = GetMonData(mon, MON_DATA_PP2 + i, NULL);
@@ -3016,11 +3016,11 @@ void DeleteFirstMoveAndGiveMoveToMon(struct Pokemon *mon, u16 move)
void DeleteFirstMoveAndGiveMoveToBoxMon(struct BoxPokemon *boxMon, u16 move)
{
s32 i;
- u16 moves[4];
- u8 pp[4];
+ u16 moves[MAX_MON_MOVES];
+ u8 pp[MAX_MON_MOVES];
u8 ppBonuses;
- for (i = 0; i < 3; i++)
+ for (i = 0; i < MAX_MON_MOVES - 1; i++)
{
moves[i] = GetBoxMonData(boxMon, MON_DATA_MOVE2 + i, NULL);
pp[i] = GetBoxMonData(boxMon, MON_DATA_PP2 + i, NULL);
@@ -3197,13 +3197,13 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de
if ((sideStatus & SIDE_STATUS_REFLECT) && gCritMultiplier == 1)
{
- if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && CountAliveMonsInBattle(2) == 2)
+ if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && CountAliveMonsInBattle(BATTLE_ALIVE_DEF_SIDE) == 2)
damage = 2 * (damage / 3);
else
damage /= 2;
}
- if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && gBattleMoves[move].target == 8 && CountAliveMonsInBattle(2) == 2)
+ if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && gBattleMoves[move].target == 8 && CountAliveMonsInBattle(BATTLE_ALIVE_DEF_SIDE) == 2)
damage /= 2;
// moves always do at least 1 damage.
@@ -3244,13 +3244,13 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de
if ((sideStatus & SIDE_STATUS_LIGHTSCREEN) && gCritMultiplier == 1)
{
- if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && CountAliveMonsInBattle(2) == 2)
+ if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && CountAliveMonsInBattle(BATTLE_ALIVE_DEF_SIDE) == 2)
damage = 2 * (damage / 3);
else
damage /= 2;
}
- if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && gBattleMoves[move].target == 8 && CountAliveMonsInBattle(2) == 2)
+ if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && gBattleMoves[move].target == 8 && CountAliveMonsInBattle(BATTLE_ALIVE_DEF_SIDE) == 2)
damage /= 2;
// are effects of weather negated with cloud nine or air lock
@@ -3304,21 +3304,21 @@ u8 CountAliveMonsInBattle(u8 caseId)
switch (caseId)
{
case BATTLE_ALIVE_EXCEPT_ACTIVE:
- for (i = 0; i < 4; i++)
+ for (i = 0; i < MAX_BATTLERS_COUNT; i++)
{
if (i != gActiveBattler && !(gAbsentBattlerFlags & gBitTable[i]))
retVal++;
}
break;
case BATTLE_ALIVE_ATK_SIDE:
- for (i = 0; i < 4; i++)
+ for (i = 0; i < MAX_BATTLERS_COUNT; i++)
{
if (GetBattlerSide(i) == GetBattlerSide(gBattlerAttacker) && !(gAbsentBattlerFlags & gBitTable[i]))
retVal++;
}
break;
case BATTLE_ALIVE_DEF_SIDE:
- for (i = 0; i < 4; i++)
+ for (i = 0; i < MAX_BATTLERS_COUNT; i++)
{
if (GetBattlerSide(i) == GetBattlerSide(gBattlerTarget) && !(gAbsentBattlerFlags & gBitTable[i]))
retVal++;
@@ -4329,7 +4329,7 @@ u8 SendMonToPC(struct Pokemon* mon)
{
s32 boxNo, boxPos;
- set_unknown_box_id(VarGet(VAR_STORAGE_UNKNOWN));
+ SetPCBoxToSendMon(VarGet(VAR_PC_BOX_TO_SEND_MON));
boxNo = StorageGetCurrentBox();
@@ -4344,9 +4344,9 @@ u8 SendMonToPC(struct Pokemon* mon)
CopyMon(checkingMon, &mon->box, sizeof(mon->box));
gSpecialVar_MonBoxId = boxNo;
gSpecialVar_MonBoxPos = boxPos;
- if (get_unknown_box_id() != boxNo)
- FlagClear(FLAG_SYS_STORAGE_UNKNOWN_FLAG);
- VarSet(VAR_STORAGE_UNKNOWN, boxNo);
+ if (GetPCBoxToSendMon() != boxNo)
+ FlagClear(FLAG_SHOWN_BOX_WAS_FULL_MESSAGE);
+ VarSet(VAR_PC_BOX_TO_SEND_MON, boxNo);
return MON_GIVEN_TO_PC;
}
}
@@ -4424,7 +4424,7 @@ u8 GetMonsStateToDoubles_2(void)
return (aliveCount > 1) ? PLAYER_HAS_TWO_USABLE_MONS : PLAYER_HAS_ONE_USABLE_MON;
}
-u8 GetAbilityBySpecies(u16 species, bool8 abilityNum)
+u8 GetAbilityBySpecies(u16 species, u8 abilityNum)
{
if (abilityNum)
gLastUsedAbility = gBaseStats[species].abilities[1];
@@ -4458,7 +4458,7 @@ void CreateSecretBaseEnemyParty(struct SecretBase *secretBaseRecord)
15,
1,
gBattleResources->secretBase->party.personality[i],
- 2,
+ OT_ID_RANDOM_NO_SHINY,
0);
SetMonData(&gEnemyParty[i], MON_DATA_HELD_ITEM, &gBattleResources->secretBase->party.heldItems[i]);
@@ -4817,11 +4817,11 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
{
if (evCount >= MAX_TOTAL_EVS)
return TRUE;
- if (dataSigned >= 100)
+ if (dataSigned >= EV_ITEM_RAISE_LIMIT)
break;
- if (dataSigned + r2 > 100)
- r5 = 100 - (dataSigned + r2) + r2;
+ if (dataSigned + r2 > EV_ITEM_RAISE_LIMIT)
+ r5 = EV_ITEM_RAISE_LIMIT - (dataSigned + r2) + r2;
else
r5 = r2;
@@ -5021,11 +5021,11 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
{
if (evCount >= MAX_TOTAL_EVS)
return TRUE;
- if (dataSigned >= 100)
+ if (dataSigned >= EV_ITEM_RAISE_LIMIT)
break;
- if (dataSigned + r2 > 100)
- r5 = 100 - (dataSigned + r2) + r2;
+ if (dataSigned + r2 > EV_ITEM_RAISE_LIMIT)
+ r5 = EV_ITEM_RAISE_LIMIT - (dataSigned + r2) + r2;
else
r5 = r2;
@@ -6096,7 +6096,7 @@ u32 CanSpeciesLearnTMHM(u16 species, u8 tm)
u8 GetMoveRelearnerMoves(struct Pokemon *mon, u16 *moves)
{
- u16 learnedMoves[4];
+ u16 learnedMoves[MAX_MON_MOVES];
u8 numMoves = 0;
u16 species = GetMonData(mon, MON_DATA_SPECIES, 0);
u8 level = GetMonData(mon, MON_DATA_LEVEL, 0);
@@ -6146,7 +6146,7 @@ u8 GetLevelUpMovesBySpecies(u16 species, u16 *moves)
u8 GetNumberOfRelearnableMoves(struct Pokemon *mon)
{
- u16 learnedMoves[4];
+ u16 learnedMoves[MAX_MON_MOVES];
u16 moves[20];
u8 numMoves = 0;
u16 species = GetMonData(mon, MON_DATA_SPECIES2, 0);
@@ -6683,7 +6683,7 @@ u8 sub_806EF08(u8 arg0)
var = (arg0 != 0) ? 2 : 0;
break;
}
- for (i = 0; i < 4; i++)
+ for (i = 0; i < MAX_LINK_PLAYERS; i++)
{
if (gLinkPlayers[i].id == (s16)(var))
break;
@@ -6706,7 +6706,7 @@ u8 sub_806EF84(u8 arg0, u8 arg1)
var = (arg0 != 0) ? 2 : 0;
break;
}
- for (i = 0; i < 4; i++)
+ for (i = 0; i < MAX_LINK_PLAYERS; i++)
{
if (gLinkPlayers[i].id == (s16)(var))
break;
diff --git a/src/pokemon_storage_system.c b/src/pokemon_storage_system.c
index 59ec8f4f1..fa9e61504 100644
--- a/src/pokemon_storage_system.c
+++ b/src/pokemon_storage_system.c
@@ -453,7 +453,7 @@ EWRAM_DATA static bool8 sInPartyMenu = 0;
EWRAM_DATA static u8 sCurrentBoxOption = 0;
EWRAM_DATA static u8 gUnknown_02039D0E = 0;
EWRAM_DATA static u8 sWhichToReshow = 0;
-EWRAM_DATA static u8 gUnknown_02039D10 = 0;
+EWRAM_DATA static u8 sLastUsedBox = 0;
EWRAM_DATA static u16 gUnknown_02039D12 = 0;
EWRAM_DATA static struct Pokemon gUnknown_02039D14 = {0};
EWRAM_DATA static s8 sBoxCursorArea = 0;
@@ -464,9 +464,6 @@ EWRAM_DATA static u8 sMovingMonOrigBoxPos = 0;
EWRAM_DATA static bool8 sCanOnlyMove = 0;
// This file's functions.
-#if !defined(NONMATCHING) && MODERN
-#define static
-#endif
static void CreatePCMenu(u8 whichMenu, s16 *windowIdPtr);
static void Cb2_EnterPSS(u8 boxOption);
static u8 GetCurrentBoxOption(void);
@@ -2170,7 +2167,7 @@ static void Cb2_EnterPSS(u8 boxOption)
gUnknown_02039D12 = 0;
sPSSData->state = 0;
sPSSData->taskId = CreateTask(Cb_InitPSS, 3);
- gUnknown_02039D10 = StorageGetCurrentBox();
+ sLastUsedBox = StorageGetCurrentBox();
SetMainCallback2(Cb2_PSS);
}
}
@@ -4369,10 +4366,10 @@ static bool8 DoShowPartyMenu(void)
static void sub_80CABE0(void)
{
- if (gUnknown_02039D10 != StorageGetCurrentBox())
+ if (sLastUsedBox != StorageGetCurrentBox())
{
- FlagClear(FLAG_SYS_STORAGE_UNKNOWN_FLAG);
- VarSet(VAR_STORAGE_UNKNOWN, StorageGetCurrentBox());
+ FlagClear(FLAG_SHOWN_BOX_WAS_FULL_MESSAGE);
+ VarSet(VAR_PC_BOX_TO_SEND_MON, StorageGetCurrentBox());
}
}
diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c
index 79aac4b5e..8697c557f 100644
--- a/src/pokemon_summary_screen.c
+++ b/src/pokemon_summary_screen.c
@@ -121,8 +121,8 @@ static EWRAM_DATA struct PokemonSummaryScreenData
u8 metGame; // 0xB
u32 pid; // 0xC
u32 exp; // 0x10
- u16 moves[4]; // 0x14
- u8 pp[4]; // 0x1C
+ u16 moves[MAX_MON_MOVES]; // 0x14
+ u8 pp[MAX_MON_MOVES]; // 0x1C
u16 currentHP; // 0x20
u16 maxHP; // 0x22
u16 atk; // 0x24
@@ -224,10 +224,10 @@ static void DrawExperienceProgressBar(struct Pokemon* mon);
static void DrawContestMoveHearts(u16 move);
static void LimitEggSummaryPageDisplay(void);
static void ResetWindows(void);
-static void sub_81C25E8(void);
-static void sub_81C2628(void);
-static void sub_81C2794(void);
-static void sub_81C27DC(struct Pokemon *mon, u16 a);
+static void PrintMonInfo(void);
+static void PrintNotEggInfo(void);
+static void PrintEggInfo(void);
+static void PrintGenderSymbol(struct Pokemon *mon, u16 a);
static void PrintPageNamesAndStatsPageToWindows(void);
static void CreatePageWindowTilemaps(u8 a);
static void ClearPageWindowTilemaps(u8 a);
@@ -1173,7 +1173,7 @@ static bool8 SummaryScreen_LoadGraphics(void)
gMain.state++;
break;
case 11:
- sub_81C25E8();
+ PrintMonInfo();
gMain.state++;
break;
case 12:
@@ -1449,7 +1449,7 @@ static void sub_81C0348(void)
DrawPokerusCuredSymbol(&sMonSummaryScreen->currentMon);
}
-static void sub_81C0434(void)
+static void FreeSummaryScreen(void)
{
FreeAllWindowBuffers();
Free(sMonSummaryScreen);
@@ -1474,7 +1474,7 @@ static void CloseSummaryScreen(u8 taskId)
m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 0x100);
if (gMonSpritesGfxPtr == 0)
sub_806F47C(0);
- sub_81C0434();
+ FreeSummaryScreen();
DestroyTask(taskId);
}
}
@@ -1625,7 +1625,7 @@ static void sub_81C0704(u8 taskId)
SetTypeIcons();
break;
case 10:
- sub_81C25E8();
+ PrintMonInfo();
break;
case 11:
PrintPageSpecificText(sMonSummaryScreen->currPageIndex);
@@ -2571,7 +2571,7 @@ static void DrawPokerusCuredSymbol(struct Pokemon *mon) // This checks if the mo
schedule_bg_copy_tilemap_to_vram(3);
}
-static void sub_81C228C(bool8 isMonShiny)
+static void SetDexNumberColor(bool8 isMonShiny)
{
if (!isMonShiny)
sub_8199C30(3, 1, 4, 8, 8, 0);
@@ -2695,19 +2695,19 @@ static void SummaryScreen_PrintTextOnWindow(u8 windowId, const u8 *string, u8 x,
AddTextPrinterParameterized4(windowId, 1, x, y, 0, lineSpacing, sTextColors_861CD2C[colorId], 0, string);
}
-static void sub_81C25E8(void)
+static void PrintMonInfo(void)
{
FillWindowPixelBuffer(PSS_LABEL_WINDOW_PORTRAIT_DEX_NUMBER, PIXEL_FILL(0));
FillWindowPixelBuffer(PSS_LABEL_WINDOW_PORTRAIT_NICKNAME, PIXEL_FILL(0));
FillWindowPixelBuffer(PSS_LABEL_WINDOW_PORTRAIT_SPECIES, PIXEL_FILL(0));
if (!sMonSummaryScreen->summary.isEgg)
- sub_81C2628();
+ PrintNotEggInfo();
else
- sub_81C2794();
+ PrintEggInfo();
schedule_bg_copy_tilemap_to_vram(0);
}
-static void sub_81C2628(void)
+static void PrintNotEggInfo(void)
{
u8 strArray[16];
struct Pokemon *mon = &sMonSummaryScreen->currentMon;
@@ -2721,12 +2721,12 @@ static void sub_81C2628(void)
if (!IsMonShiny(mon))
{
SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_PORTRAIT_DEX_NUMBER, gStringVar1, 0, 1, 0, 1);
- sub_81C228C(FALSE);
+ SetDexNumberColor(FALSE);
}
else
{
SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_PORTRAIT_DEX_NUMBER, gStringVar1, 0, 1, 0, 7);
- sub_81C228C(TRUE);
+ SetDexNumberColor(TRUE);
}
PutWindowTilemap(PSS_LABEL_WINDOW_PORTRAIT_DEX_NUMBER);
}
@@ -2734,9 +2734,9 @@ static void sub_81C2628(void)
{
ClearWindowTilemap(PSS_LABEL_WINDOW_PORTRAIT_DEX_NUMBER);
if (!IsMonShiny(mon))
- sub_81C228C(FALSE);
+ SetDexNumberColor(FALSE);
else
- sub_81C228C(TRUE);
+ SetDexNumberColor(TRUE);
}
StringCopy(gStringVar1, &gText_LevelSymbol[0]);
ConvertIntToDecimalStringN(gStringVar2, summary->level, 0, 3);
@@ -2747,12 +2747,12 @@ static void sub_81C2628(void)
strArray[0] = CHAR_SLASH;
StringCopy(&strArray[1], &gSpeciesNames[summary->species2][0]);
SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_PORTRAIT_SPECIES, &strArray[0], 0, 1, 0, 1);
- sub_81C27DC(mon, summary->species2);
+ PrintGenderSymbol(mon, summary->species2);
PutWindowTilemap(PSS_LABEL_WINDOW_PORTRAIT_NICKNAME);
PutWindowTilemap(PSS_LABEL_WINDOW_PORTRAIT_SPECIES);
}
-static void sub_81C2794(void)
+static void PrintEggInfo(void)
{
GetMonNickname(&sMonSummaryScreen->currentMon, gStringVar1);
SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_PORTRAIT_NICKNAME, gStringVar1, 0, 1, 0, 1);
@@ -2761,7 +2761,7 @@ static void sub_81C2794(void)
ClearWindowTilemap(PSS_LABEL_WINDOW_PORTRAIT_SPECIES);
}
-static void sub_81C27DC(struct Pokemon *mon, u16 species)
+static void PrintGenderSymbol(struct Pokemon *mon, u16 species)
{
if (species != SPECIES_NIDORAN_M && species != SPECIES_NIDORAN_F)
{
diff --git a/src/pokenav_match_call_data.c b/src/pokenav_match_call_data.c
index d2d89babf..5379ee88e 100644
--- a/src/pokenav_match_call_data.c
+++ b/src/pokenav_match_call_data.c
@@ -6,7 +6,9 @@
#include "battle.h"
#include "gym_leader_rematch.h"
#include "match_call.h"
+#include "pokenav.h"
#include "constants/region_map_sections.h"
+#include "constants/trainers.h"
// Static type declarations
@@ -94,11 +96,11 @@ typedef union {
const struct MatchCallStruct5 *type5;
} match_call_t;
-struct UnkStruct_08625388 {
+struct MatchCallOverride {
u16 idx;
- u16 v2;
- u32 v4;
- const u8 *v8[4];
+ u16 facilityClass;
+ u32 flag;
+ const u8 *flavorTexts[4];
};
// Static RAM declarations
@@ -123,11 +125,11 @@ static bool32 MatchCall_IsRematchable_Type2(match_call_t);
static bool32 MatchCall_IsRematchable_Type3(match_call_t);
static bool32 MatchCall_IsRematchable_Type4(match_call_t);
-static bool32 sub_81D1840(match_call_t);
-static bool32 sub_81D1844(match_call_t);
-static bool32 sub_81D1848(match_call_t);
-static bool32 sub_81D184C(match_call_t);
-static bool32 sub_81D1850(match_call_t);
+static bool32 MatchCall_HasCheckPage_Type0(match_call_t);
+static bool32 MatchCall_HasCheckPage_Type1(match_call_t);
+static bool32 MatchCall_HasCheckPage_Type2(match_call_t);
+static bool32 MatchCall_HasCheckPage_Type3(match_call_t);
+static bool32 MatchCall_HasCheckPage_Type4(match_call_t);
static u32 MatchCall_GetRematchTableIdx_Type0(match_call_t);
static u32 MatchCall_GetRematchTableIdx_Type1(match_call_t);
@@ -423,10 +425,10 @@ static const match_call_text_data_t sMayTextScripts[] = {
{ NULL, 0xFFFF, 0xFFFF }
};
-static const struct MatchCallStruct4 sBrendanMatchCallHeader =
+static const struct MatchCallStruct4 sMayMatchCallHeader =
{
.type = 4,
- .gender = MALE,
+ .gender = MALE, //Gender of player
.flag = FLAG_ENABLE_RIVAL_MATCH_CALL,
.desc = gMayBrendanMatchCallDesc,
.name = gExpandedPlaceholder_May,
@@ -452,10 +454,10 @@ static const match_call_text_data_t sBrendanTextScripts[] = {
{ NULL, 0xFFFF, 0xFFFF }
};
-static const struct MatchCallStruct4 sMayMatchCallHeader =
+static const struct MatchCallStruct4 sBrendanMatchCallHeader =
{
.type = 4,
- .gender = FEMALE,
+ .gender = FEMALE, //Gender of player
.flag = FLAG_ENABLE_RIVAL_MATCH_CALL,
.desc = gMayBrendanMatchCallDesc,
.name = gExpandedPlaceholder_Brendan,
@@ -727,27 +729,27 @@ static const struct MatchCallStruct5 sWallaceMatchCallHeader =
};
static const match_call_t sMatchCallHeaders[] = {
- {.type0 = &sMrStoneMatchCallHeader},
- {.type3 = &sProfBirchMatchCallHeader},
- {.type4 = &sMayMatchCallHeader},
- {.type4 = &sBrendanMatchCallHeader},
- {.type2 = &sWallyMatchCallHeader},
- {.type5 = &sNormanMatchCallHeader},
- {.type0 = &sMomMatchCallHeader},
- {.type0 = &sStevenMatchCallHeader},
- {.type0 = &sScottMatchCallHeader},
- {.type5 = &sRoxanneMatchCallHeader},
- {.type5 = &sBrawlyMatchCallHeader},
- {.type5 = &sWattsonMatchCallHeader},
- {.type5 = &sFlanneryMatchCallHeader},
- {.type5 = &sWinonaMatchCallHeader},
- {.type5 = &sTateLizaMatchCallHeader},
- {.type5 = &sJuanMatchCallHeader},
- {.type5 = &sSidneyMatchCallHeader},
- {.type5 = &sPhoebeMatchCallHeader},
- {.type5 = &sGlaciaMatchCallHeader},
- {.type5 = &sDrakeMatchCallHeader},
- {.type5 = &sWallaceMatchCallHeader}
+ [MC_HEADER_MR_STONE] = {.type0 = &sMrStoneMatchCallHeader},
+ [MC_HEADER_PROF_BIRCH] = {.type3 = &sProfBirchMatchCallHeader},
+ [MC_HEADER_BRENDAN] = {.type4 = &sBrendanMatchCallHeader},
+ [MC_HEADER_MAY] = {.type4 = &sMayMatchCallHeader},
+ [MC_HEADER_WALLY] = {.type2 = &sWallyMatchCallHeader},
+ [MC_HEADER_NORMAN] = {.type5 = &sNormanMatchCallHeader},
+ [MC_HEADER_MOM] = {.type0 = &sMomMatchCallHeader},
+ [MC_HEADER_STEVEN] = {.type0 = &sStevenMatchCallHeader},
+ [MC_HEADER_SCOTT] = {.type0 = &sScottMatchCallHeader},
+ [MC_HEADER_ROXANNE] = {.type5 = &sRoxanneMatchCallHeader},
+ [MC_HEADER_BRAWLY] = {.type5 = &sBrawlyMatchCallHeader},
+ [MC_HEADER_WATTSON] = {.type5 = &sWattsonMatchCallHeader},
+ [MC_HEADER_FLANNERY] = {.type5 = &sFlanneryMatchCallHeader},
+ [MC_HEADER_WINONA] = {.type5 = &sWinonaMatchCallHeader},
+ [MC_HEADER_TATE_LIZA] = {.type5 = &sTateLizaMatchCallHeader},
+ [MC_HEADER_JUAN] = {.type5 = &sJuanMatchCallHeader},
+ [MC_HEADER_SIDNEY] = {.type5 = &sSidneyMatchCallHeader},
+ [MC_HEADER_PHOEBE] = {.type5 = &sPhoebeMatchCallHeader},
+ [MC_HEADER_GLACIA] = {.type5 = &sGlaciaMatchCallHeader},
+ [MC_HEADER_DRAKE] = {.type5 = &sDrakeMatchCallHeader},
+ [MC_HEADER_WALLACE] = {.type5 = &sWallaceMatchCallHeader}
};
static bool32 (*const sMatchCallGetFlagFuncs[])(match_call_t) = {
@@ -774,12 +776,12 @@ static bool32 (*const sMatchCall_IsRematchableFunctions[])(match_call_t) = {
MatchCall_IsRematchable_Type3
};
-static bool32 (*const gUnknown_08625338[])(match_call_t) = {
- sub_81D1840,
- sub_81D1844,
- sub_81D1848,
- sub_81D184C,
- sub_81D1850
+static bool32 (*const sMatchCall_HasCheckPageFunctions[])(match_call_t) = {
+ MatchCall_HasCheckPage_Type0,
+ MatchCall_HasCheckPage_Type1,
+ MatchCall_HasCheckPage_Type2,
+ MatchCall_HasCheckPage_Type4,
+ MatchCall_HasCheckPage_Type3
};
static u32 (*const sMatchCall_GetRematchTableIdxFunctions[])(match_call_t) = {
@@ -806,11 +808,11 @@ static void (*const sMatchCall_GetNameAndDescFunctions[])(match_call_t, const u8
MatchCall_GetNameAndDesc_Type3
};
-static const struct UnkStruct_08625388 sMatchCallCheckPageOverrides[] = {
- { 7, 0x4B, 0xffff, { gMatchCallStevenStrategyText, gMatchCall_StevenTrainersPokemonText, gMatchCall_StevenSelfIntroductionText_Line1_BeforeMeteorFallsBattle, gMatchCall_StevenSelfIntroductionText_Line2_BeforeMeteorFallsBattle } }, // STEVEN
- { 7, 0x4B, FLAG_DEFEATED_MOSSDEEP_GYM, { gMatchCallStevenStrategyText, gMatchCall_StevenTrainersPokemonText, gMatchCall_StevenSelfIntroductionText_Line1_AfterMeteorFallsBattle, gMatchCall_StevenSelfIntroductionText_Line2_AfterMeteorFallsBattle } }, // STEVEN
- { 2, 0x3c, 0xffff, { gMatchCall_BrendanStrategyText, gMatchCall_BrendanTrainersPokemonText, gMatchCall_BrendanSelfIntroductionText_Line1, gMatchCall_BrendanSelfIntroductionText_Line2 } }, // Brendan
- { 3, 0x3f, 0xffff, { gMatchCall_MayStrategyText, gMatchCall_MayTrainersPokemonText, gMatchCall_MaySelfIntroductionText_Line1, gMatchCall_MaySelfIntroductionText_Line2 } } // May
+static const struct MatchCallOverride sMatchCallCheckPageOverrides[] = {
+ { MC_HEADER_STEVEN, FACILITY_CLASS_STEVEN, 0xFFFF, { gMatchCallStevenStrategyText, gMatchCall_StevenTrainersPokemonText, gMatchCall_StevenSelfIntroductionText_Line1_BeforeMeteorFallsBattle, gMatchCall_StevenSelfIntroductionText_Line2_BeforeMeteorFallsBattle } }, // STEVEN
+ { MC_HEADER_STEVEN, FACILITY_CLASS_STEVEN, FLAG_DEFEATED_MOSSDEEP_GYM, { gMatchCallStevenStrategyText, gMatchCall_StevenTrainersPokemonText, gMatchCall_StevenSelfIntroductionText_Line1_AfterMeteorFallsBattle, gMatchCall_StevenSelfIntroductionText_Line2_AfterMeteorFallsBattle } }, // STEVEN
+ { MC_HEADER_BRENDAN, FACILITY_CLASS_BRENDAN, 0xFFFF, { gMatchCall_BrendanStrategyText, gMatchCall_BrendanTrainersPokemonText, gMatchCall_BrendanSelfIntroductionText_Line1, gMatchCall_BrendanSelfIntroductionText_Line2 } }, // Brendan
+ { MC_HEADER_MAY, FACILITY_CLASS_MAY, 0xFFFF, { gMatchCall_MayStrategyText, gMatchCall_MayTrainersPokemonText, gMatchCall_MaySelfIntroductionText_Line1, gMatchCall_MaySelfIntroductionText_Line2 } } // May
};
// .text
@@ -981,7 +983,7 @@ static bool32 MatchCall_IsRematchable_Type3(match_call_t matchCall)
return FALSE;
}
-bool32 sub_81D17E8(u32 idx)
+bool32 MatchCall_HasCheckPage(u32 idx)
{
match_call_t matchCall;
u32 i;
@@ -990,7 +992,7 @@ bool32 sub_81D17E8(u32 idx)
return FALSE;
matchCall = sMatchCallHeaders[idx];
i = MatchCallGetFunctionIndex(matchCall);
- if (gUnknown_08625338[i](matchCall))
+ if (sMatchCall_HasCheckPageFunctions[i](matchCall))
return TRUE;
for (i = 0; i < ARRAY_COUNT(sMatchCallCheckPageOverrides); i++)
{
@@ -1000,27 +1002,27 @@ bool32 sub_81D17E8(u32 idx)
return FALSE;
}
-static bool32 sub_81D1840(match_call_t matchCall)
+static bool32 MatchCall_HasCheckPage_Type0(match_call_t matchCall)
{
return FALSE;
}
-static bool32 sub_81D1844(match_call_t matchCall)
+static bool32 MatchCall_HasCheckPage_Type1(match_call_t matchCall)
{
return TRUE;
}
-static bool32 sub_81D1848(match_call_t matchCall)
+static bool32 MatchCall_HasCheckPage_Type2(match_call_t matchCall)
{
return TRUE;
}
-static bool32 sub_81D184C(match_call_t matchCall)
+static bool32 MatchCall_HasCheckPage_Type4(match_call_t matchCall)
{
return FALSE;
}
-static bool32 sub_81D1850(match_call_t matchCall)
+static bool32 MatchCall_HasCheckPage_Type3(match_call_t matchCall)
{
return FALSE;
}
@@ -1210,7 +1212,7 @@ static void MatchCall_GetNameAndDescByRematchIdx(u32 idx, const u8 **desc, const
*name = trainer->trainerName;
}
-const u8 *sub_81D1B40(u32 idx, u32 offset)
+const u8 *MatchCall_GetOverrideFlavorText(u32 idx, u32 offset)
{
u32 i;
@@ -1224,24 +1226,24 @@ const u8 *sub_81D1B40(u32 idx, u32 offset)
break;
if (sMatchCallCheckPageOverrides[i + 1].idx != idx)
break;
- if (!FlagGet(sMatchCallCheckPageOverrides[i + 1].v4))
+ if (!FlagGet(sMatchCallCheckPageOverrides[i + 1].flag))
break;
i++;
}
- return sMatchCallCheckPageOverrides[i].v8[offset];
+ return sMatchCallCheckPageOverrides[i].flavorTexts[offset];
}
}
return NULL;
}
-int sub_81D1BD0(u32 idx)
+int MatchCall_GetOverrideFacilityClass(u32 idx)
{
u32 i;
for (i = 0; i < ARRAY_COUNT(sMatchCallCheckPageOverrides); i++)
{
if (sMatchCallCheckPageOverrides[i].idx == idx)
- return sMatchCallCheckPageOverrides[i].v2;
+ return sMatchCallCheckPageOverrides[i].facilityClass;
}
return -1;
}
diff --git a/src/pokenav_unk_3.c b/src/pokenav_unk_3.c
index ffb1e0a4a..c66434192 100755
--- a/src/pokenav_unk_3.c
+++ b/src/pokenav_unk_3.c
@@ -84,7 +84,7 @@ static u32 sub_81CAB44(struct Pokenav3Struct *state)
state->callback = sub_81CAC04;
state->unk0 = 0;
selectedMatchCall = GetSelectedMatchCall();
- if (!state->unk1C[selectedMatchCall].boxId || sub_81D17E8(state->unk1C[selectedMatchCall].unk6))
+ if (!state->unk1C[selectedMatchCall].boxId || MatchCall_HasCheckPage(state->unk1C[selectedMatchCall].unk6))
{
state->unk4 = gUnknown_0862250A;
state->unk2 = 2;
@@ -212,7 +212,7 @@ static u32 sub_81CAD20(s32 taskState)
state->unkA++;
}
- if (++state->unk8 >= 21) // TODO: This is the size of sMatchCallHeaders
+ if (++state->unk8 >= MC_HEADER_COUNT)
{
state->unkC = state->unk8;
state->unk8 = 0;
@@ -331,7 +331,7 @@ int sub_81CAF04(int index)
return gTrainers[index].trainerPic;
}
- index = sub_81D1BD0(var0);
+ index = MatchCall_GetOverrideFacilityClass(var0);
return gFacilityClassToPicIndex[index];
}
@@ -358,7 +358,7 @@ const u8 *sub_81CAFD8(int index, int textType)
{
var0 = MatchCall_GetRematchTableIdx(state->unk1C[index].unk6);
if (var0 == REMATCH_TABLE_ENTRIES)
- return sub_81D1B40(state->unk1C[index].unk6, textType);
+ return MatchCall_GetOverrideFlavorText(state->unk1C[index].unk6, textType);
}
else
{
@@ -426,7 +426,7 @@ int sub_81CB0E4(int index)
{
if (!state->unk1C[index].boxId)
return count;
- if (sub_81D17E8(state->unk1C[index].unk6))
+ if (MatchCall_HasCheckPage(state->unk1C[index].unk6))
return count;
count++;
@@ -443,7 +443,7 @@ int sub_81CB128(int index)
{
if (!state->unk1C[index].boxId)
return count;
- if (sub_81D17E8(state->unk1C[index].unk6))
+ if (MatchCall_HasCheckPage(state->unk1C[index].unk6))
return count;
count--;
@@ -462,7 +462,7 @@ bool32 unref_sub_81CB16C(void)
return TRUE;
}
- for (i = 0; i < 21; i++) // TODO: This is the size of sMatchCallHeaders
+ for (i = 0; i < MC_HEADER_COUNT; i++)
{
if (MatchCallFlagGetByIndex(i))
{
diff --git a/src/record_mixing.c b/src/record_mixing.c
index 6cb145c80..32e0404b9 100644
--- a/src/record_mixing.c
+++ b/src/record_mixing.c
@@ -701,10 +701,10 @@ static void ReceiveLilycoveLadyData(LilycoveLady *lilycoveLady, size_t recordSiz
}
memcpy(sLilycoveLadySave, (void *)lilycoveLady + recordSize * mixIndices[which], sizeof(LilycoveLady));
- sub_818DA78();
+ ResetLilycoveLadyForRecordMix();
if (dest != NULL)
{
- sub_818E570(dest);
+ QuizLadyClearQuestionForRecordMix(dest);
free(dest);
}
}
diff --git a/src/recorded_battle.c b/src/recorded_battle.c
index 9e03d57f6..432c5dbe6 100644
--- a/src/recorded_battle.c
+++ b/src/recorded_battle.c
@@ -37,8 +37,8 @@ struct PlayerInfo
struct MovePp
{
- u16 moves[4];
- u8 pp[4];
+ u16 moves[MAX_MON_MOVES];
+ u8 pp[MAX_MON_MOVES];
};
struct RecordedBattleSave
@@ -91,7 +91,7 @@ EWRAM_DATA static u32 sBattleFlags = 0;
EWRAM_DATA static u32 sAI_Scripts = 0;
EWRAM_DATA static struct Pokemon sSavedPlayerParty[PARTY_SIZE] = {0};
EWRAM_DATA static struct Pokemon sSavedOpponentParty[PARTY_SIZE] = {0};
-EWRAM_DATA static u16 sPlayerMonMoves[2][4] = {0};
+EWRAM_DATA static u16 sPlayerMonMoves[2][MAX_MON_MOVES] = {0};
EWRAM_DATA static struct PlayerInfo sPlayers[MAX_BATTLERS_COUNT] = {0};
EWRAM_DATA static u8 sUnknown_0203CCD0 = 0;
EWRAM_DATA static u8 sRecordMixFriendName[PLAYER_NAME_LENGTH + 1] = {0};
@@ -766,11 +766,11 @@ void sub_818603C(u8 arg0)
{
if (sBattleRecords[battlerId][sRecordedBytesNo[battlerId]] == ACTION_MOVE_CHANGE)
{
- u8 ppBonuses[4];
- u8 array1[4];
- u8 array2[4];
+ u8 ppBonuses[MAX_MON_MOVES];
+ u8 array1[MAX_MON_MOVES];
+ u8 array2[MAX_MON_MOVES];
struct MovePp movePp;
- u8 array3[8];
+ u8 array3[(MAX_MON_MOVES * 2)];
u8 var;
RecordedBattle_GetBattlerAction(battlerId);
diff --git a/src/region_map.c b/src/region_map.c
index a98964e5c..ea2cbfa6a 100644
--- a/src/region_map.c
+++ b/src/region_map.c
@@ -24,6 +24,7 @@
#include "region_map.h"
#include "constants/region_map_sections.h"
#include "heal_location.h"
+#include "constants/field_specials.h"
#include "constants/heal_locations.h"
#include "constants/map_types.h"
#include "constants/rgb.h"
@@ -1144,20 +1145,20 @@ static void RegionMap_InitializeStateBasedOnSSTidalLocation(void)
x = 0;
switch (GetSSTidalLocation(&mapGroup, &mapNum, &xOnMap, &yOnMap))
{
- case 1:
+ case SS_TIDAL_LOCATION_SLATEPORT:
gRegionMap->mapSecId = MAPSEC_SLATEPORT_CITY;
break;
- case 2:
+ case SS_TIDAL_LOCATION_LILYCOVE:
gRegionMap->mapSecId = MAPSEC_LILYCOVE_CITY;
break;
- case 3:
+ case SS_TIDAL_LOCATION_ROUTE124:
gRegionMap->mapSecId = MAPSEC_ROUTE_124;
break;
- case 4:
+ case SS_TIDAL_LOCATION_ROUTE131:
gRegionMap->mapSecId = MAPSEC_ROUTE_131;
break;
default:
- case 0:
+ case SS_TIDAL_LOCATION_OTHER:
mapHeader = Overworld_GetMapHeaderByGroupAndId(mapGroup, mapNum);
gRegionMap->mapSecId = mapHeader->regionMapSectionId;
diff --git a/src/roamer.c b/src/roamer.c
index be45642e0..8a67234e3 100644
--- a/src/roamer.c
+++ b/src/roamer.c
@@ -67,7 +67,7 @@ static void CreateInitialRoamerMon(bool16 createLatios)
else
(&gSaveBlock1Ptr->roamer)->species = SPECIES_LATIOS;
- CreateMon(&gEnemyParty[0], (&gSaveBlock1Ptr->roamer)->species, 40, 0x20, 0, 0, 0, 0);
+ CreateMon(&gEnemyParty[0], (&gSaveBlock1Ptr->roamer)->species, 40, 0x20, 0, 0, OT_ID_PLAYER_ID, 0);
(&gSaveBlock1Ptr->roamer)->level = 40;
(&gSaveBlock1Ptr->roamer)->status = 0;
(&gSaveBlock1Ptr->roamer)->active = TRUE;
diff --git a/src/rock.c b/src/rock.c
index f05816362..6f6e20955 100644
--- a/src/rock.c
+++ b/src/rock.c
@@ -508,7 +508,7 @@ void AnimDirtParticleAcrossScreen(struct Sprite *sprite)
sprite->pos1.x = 304;
gBattleAnimArgs[1] = -gBattleAnimArgs[1];
sprite->data[5] = 1;
- sprite->oam.matrixNum = 8;
+ sprite->oam.matrixNum = ST_OAM_HFLIP;
}
else
{
diff --git a/src/scrcmd.c b/src/scrcmd.c
index 57cd3edbe..4c8895ab8 100644
--- a/src/scrcmd.c
+++ b/src/scrcmd.c
@@ -62,7 +62,7 @@ static EWRAM_DATA u16 sMovingNpcMapBank = 0;
static EWRAM_DATA u16 sMovingNpcMapId = 0;
static EWRAM_DATA u16 sFieldEffectScriptId = 0;
-static u8 gUnknown_03000F30;
+static u8 gBrailleWindowId;
extern const SpecialFunc gSpecials[];
extern const u8 *gStdScripts[];
@@ -466,6 +466,9 @@ bool8 ScrCmd_addvar(struct ScriptContext *ctx)
{
u16 *ptr = GetVarPointer(ScriptReadHalfword(ctx));
*ptr += ScriptReadHalfword(ctx);
+ // Note: addvar doesn't support adding from a variable in vanilla. If you were to
+ // add a VarGet() to the above, make sure you change the `addvar VAR_0x8006, 65535`
+ // in the contest scripts to `subvar VAR_0x8006, 1`, else contests will break.
return FALSE;
}
@@ -1102,7 +1105,7 @@ bool8 ScrCmd_setobjectxyperm(struct ScriptContext *ctx)
return FALSE;
}
-bool8 ScrCmd_moveobjectoffscreen(struct ScriptContext *ctx)
+bool8 ScrCmd_copyobjectxytoperm(struct ScriptContext *ctx)
{
u16 localId = VarGet(ScriptReadHalfword(ctx));
@@ -1244,7 +1247,7 @@ bool8 ScrCmd_releaseall(struct ScriptContext *ctx)
HideFieldMessageBox();
playerObjectId = GetEventObjectIdByLocalIdAndMap(EVENT_OBJ_ID_PLAYER, 0, 0);
EventObjectClearHeldMovementIfFinished(&gEventObjects[playerObjectId]);
- sub_80D338C();
+ ScriptMovement_UnfreezeEventObjects();
UnfreezeEventObjects();
return FALSE;
}
@@ -1258,7 +1261,7 @@ bool8 ScrCmd_release(struct ScriptContext *ctx)
EventObjectClearHeldMovementIfFinished(&gEventObjects[gSelectedEventObject]);
playerObjectId = GetEventObjectIdByLocalIdAndMap(EVENT_OBJ_ID_PLAYER, 0, 0);
EventObjectClearHeldMovementIfFinished(&gEventObjects[playerObjectId]);
- sub_80D338C();
+ ScriptMovement_UnfreezeEventObjects();
UnfreezeEventObjects();
return FALSE;
}
@@ -1515,13 +1518,13 @@ bool8 ScrCmd_braillemessage(struct ScriptContext *ctx)
yText = (yText - yWindow - 1) * 8;
winTemplate = CreateWindowTemplate(0, xWindow, yWindow + 1, width, height, 0xF, 0x1);
- gUnknown_03000F30 = AddWindow(&winTemplate);
- LoadUserWindowBorderGfx(gUnknown_03000F30, 0x214, 0xE0);
- DrawStdWindowFrame(gUnknown_03000F30, 0);
- PutWindowTilemap(gUnknown_03000F30);
- FillWindowPixelBuffer(gUnknown_03000F30, PIXEL_FILL(1));
- AddTextPrinterParameterized(gUnknown_03000F30, 6, gStringVar4, xText, yText, 0xFF, 0x0);
- CopyWindowToVram(gUnknown_03000F30, 3);
+ gBrailleWindowId = AddWindow(&winTemplate);
+ LoadUserWindowBorderGfx(gBrailleWindowId, 0x214, 0xE0);
+ DrawStdWindowFrame(gBrailleWindowId, 0);
+ PutWindowTilemap(gBrailleWindowId);
+ FillWindowPixelBuffer(gBrailleWindowId, PIXEL_FILL(1));
+ AddTextPrinterParameterized(gBrailleWindowId, 6, gStringVar4, xText, yText, 0xFF, 0x0);
+ CopyWindowToVram(gBrailleWindowId, 3);
return FALSE;
}
@@ -1621,7 +1624,7 @@ bool8 ScrCmd_bufferstdstring(struct ScriptContext *ctx)
u8 stringVarIndex = ScriptReadByte(ctx);
u16 index = VarGet(ScriptReadHalfword(ctx));
- StringCopy(sScriptStringVars[stringVarIndex], gUnknown_0858BAF0[index]);
+ StringCopy(sScriptStringVars[stringVarIndex], gStdStrings[index]);
return FALSE;
}
@@ -1630,7 +1633,7 @@ bool8 ScrCmd_buffercontesttype(struct ScriptContext *ctx)
u8 stringVarIndex = ScriptReadByte(ctx);
u16 index = VarGet(ScriptReadHalfword(ctx));
- sub_818E868(sScriptStringVars[stringVarIndex], index);
+ BufferContestName(sScriptStringVars[stringVarIndex], index);
return FALSE;
}
@@ -2254,8 +2257,8 @@ bool8 ScrCmd_setmonmetlocation(struct ScriptContext *ctx)
void sub_809BDB4(void)
{
- ClearStdWindowAndFrame(gUnknown_03000F30, 1);
- RemoveWindow(gUnknown_03000F30);
+ ClearStdWindowAndFrame(gBrailleWindowId, 1);
+ RemoveWindow(gBrailleWindowId);
}
bool8 ScrCmd_buffertrainerclassname(struct ScriptContext *ctx)
diff --git a/src/script_menu.c b/src/script_menu.c
index b17d3df38..7afe30080 100644
--- a/src/script_menu.c
+++ b/src/script_menu.c
@@ -13,1026 +13,30 @@
#include "strings.h"
#include "task.h"
#include "text.h"
+#include "constants/field_specials.h"
#include "constants/items.h"
+#include "constants/script_menu.h"
#include "constants/songs.h"
-// multichoice lists
-const struct MenuAction MultichoiceList_000[] =
-{
- {gUnknown_085EAD37, NULL},
- {gUnknown_085EAD41, NULL},
- {gText_Exit, NULL},
-};
-
-const struct MenuAction MultichoiceList_002[] =
-{
- {gUnknown_085EAD67, NULL},
- {gUnknown_085EAD6D, NULL},
- {gText_Exit, NULL},
-};
-
-const struct MenuAction MultichoiceList_003[] =
-{
- {gUnknown_085EAD72, NULL},
- {gUnknown_085EAD84, NULL},
- {gUnknown_085EAD96, NULL},
- {gText_Cancel2, NULL},
-};
-
-const struct MenuAction MultichoiceList_004[] =
-{
- {gUnknown_085EADA4, NULL},
- {gUnknown_085EADB5, NULL},
- {gUnknown_085EADC4, NULL},
- {gUnknown_085EADD5, NULL},
- {gUnknown_085EADE7, NULL},
- {gText_Exit, NULL},
-};
-
-const struct MenuAction MultichoiceList_006[] =
-{
- {gUnknown_085EADF9, NULL},
- {gUnknown_085EAE04, NULL},
- {gUnknown_085EAE12, NULL},
- {gText_Exit, NULL},
-};
-
-const struct MenuAction MultichoiceList_005[] =
-{
- {gUnknown_085EADF9, NULL},
- {gUnknown_085EAE04, NULL},
- {gText_Exit, NULL},
-};
-
-const struct MenuAction MultichoiceList_007[] =
-{
- {gMenuText_Register, NULL},
- {gUnknown_085EAE12, NULL},
- {gUnknown_085EAE1B, NULL},
- {gText_Cancel2, NULL},
-};
-
-const struct MenuAction MultichoiceList_012[] =
-{
- {gUnknown_085EAE27, NULL},
- {gUnknown_085EAE2C, NULL},
-};
-
-const struct MenuAction MultichoiceList_013[] =
-{
- {gUnknown_085EAE31, NULL},
- {gUnknown_085EAE35, NULL},
- {gUnknown_085EAE39, NULL},
- {gUnknown_085EAE3D, NULL},
- {gUnknown_085EAE41, NULL},
- {gText_Exit, NULL},
-};
-
-const struct MenuAction MultichoiceList_014[] =
-{
- {gUnknown_085EAD5F, NULL},
- {gText_Exit, NULL},
-};
-
-const struct MenuAction MultichoiceList_016[] =
-{
- {gUnknown_085EAE53, NULL},
- {gUnknown_085EAE5A, NULL},
-};
-
-const struct MenuAction MultichoiceList_020[] =
-{
- {gText_Yes, NULL},
- {gText_No, NULL},
- {gUnknown_085EAD6D, NULL},
-};
-
-const struct MenuAction MultichoiceList_023[] =
-{
- {gUnknown_085EAEA2, NULL},
- {gUnknown_085EAEAC, NULL},
- {gText_Exit, NULL},
-};
-
-const struct MenuAction MultichoiceList_024[] =
-{
- {gText_Lv50, NULL},
- {gText_OpenLevel, NULL},
- {gText_Exit, NULL},
-};
-
-const struct MenuAction MultichoiceList_025[] =
-{
- {gUnknown_0827ECBC, NULL},
- {gUnknown_0827ECC3, NULL},
- {gUnknown_0827ECCD, NULL},
-};
-
-const struct MenuAction MultichoiceList_026[] =
-{
- {gUnknown_0827ECD5, NULL},
- {gUnknown_0827ECDD, NULL},
- {gUnknown_0827ECE3, NULL},
-};
-
-const struct MenuAction MultichoiceList_027[] =
-{
- {gUnknown_0827ECEB, NULL},
- {gUnknown_0827ECF2, NULL},
- {gUnknown_0827ECF8, NULL},
-};
-
-const struct MenuAction MultichoiceList_028[] =
-{
- {gUnknown_0827ED00, NULL},
- {gUnknown_0827ED06, NULL},
- {gUnknown_0827ED10, NULL},
-};
-
-const struct MenuAction MultichoiceList_029[] =
-{
- {gUnknown_0827ED18, NULL},
- {gUnknown_0827ED22, NULL},
- {gUnknown_0827ED2C, NULL},
-};
-
-const struct MenuAction MultichoiceList_030[] =
-{
- {gUnknown_0827ED36, NULL},
- {gUnknown_0827ED40, NULL},
- {gUnknown_0827ED46, NULL},
-};
-
-const struct MenuAction MultichoiceList_031[] =
-{
- {gUnknown_0827ED4F, NULL},
- {gUnknown_0827ED59, NULL},
- {gUnknown_0827ED65, NULL},
-};
+#include "data/script_menu.h"
-const struct MenuAction MultichoiceList_032[] =
-{
- {gUnknown_0827ED70, NULL},
- {gUnknown_0827ED74, NULL},
- {gUnknown_0827ED78, NULL},
-};
-
-const struct MenuAction MultichoiceList_033[] =
-{
- {gUnknown_0827ED80, NULL},
- {gUnknown_0827ED95, NULL},
- {gUnknown_0827EDAA, NULL},
-};
+static EWRAM_DATA u8 sProcessInputDelay = 0;
-const struct MenuAction MultichoiceList_034[] =
-{
- {gUnknown_0827EDB5, NULL},
- {gUnknown_0827EDBA, NULL},
- {gUnknown_0827EDC1, NULL},
-};
+static u8 sLilycoveSSTidalSelections[SSTIDAL_SELECTION_COUNT];
-const struct MenuAction MultichoiceList_035[] =
-{
- {gUnknown_0827EDC9, NULL},
- {gUnknown_0827EDD5, NULL},
- {gUnknown_0827EDE4, NULL},
-};
-
-const struct MenuAction MultichoiceList_036[] =
-{
- {gUnknown_0827EDF0, NULL},
- {gUnknown_0827EDF5, NULL},
- {gUnknown_0827EDF7, NULL},
-};
-
-const struct MenuAction MultichoiceList_037[] =
-{
- {gUnknown_0827EDF9, NULL},
- {gUnknown_0827EDFB, NULL},
- {gUnknown_0827EDFD, NULL},
-};
-
-const struct MenuAction MultichoiceList_038[] =
-{
- {gUnknown_0827EDFF, NULL},
- {gUnknown_0827EE01, NULL},
- {gUnknown_0827EE03, NULL},
-};
-
-const struct MenuAction MultichoiceList_039[] =
-{
- {gUnknown_0827EE05, NULL},
- {gUnknown_0827EE07, NULL},
- {gUnknown_0827EE09, NULL},
-};
-
-const struct MenuAction MultichoiceList_042[] =
-{
- {gUnknown_085EAEC3, NULL},
- {gUnknown_085EAED6, NULL},
- {gUnknown_085EAEE6, NULL},
- {gText_Exit, NULL},
-};
-
-const struct MenuAction MultichoiceList_043[] =
-{
- {gUnknown_085EAEF6, NULL},
- {gUnknown_085EAF02, NULL},
- {gUnknown_085EAF0E, NULL},
- {gText_Exit, NULL},
-};
-
-const struct MenuAction MultichoiceList_044[] =
-{
- {gUnknown_085EAF1B, NULL},
- {gUnknown_085EAF24, NULL},
- {gUnknown_085EAF2F, NULL},
- {gText_Exit, NULL},
-};
-
-const struct MenuAction MultichoiceList_045[] =
-{
- {gUnknown_085EAF34, NULL},
- {gUnknown_085EAF3E, NULL},
-};
-
-const struct MenuAction MultichoiceList_046[] =
-{
- {gUnknown_085EAF4B, NULL},
- {gUnknown_085EAF58, NULL},
- {gText_Exit, NULL},
-};
-
-const struct MenuAction MultichoiceList_047[] =
-{
- {gUnknown_085EAF65, NULL},
- {gUnknown_085EAF70, NULL},
- {gUnknown_085EAF7D, NULL},
- {gUnknown_085EAF87, NULL},
- {gUnknown_085EAF93, NULL},
- {gUnknown_085EAF9F, NULL},
- {gUnknown_085EAFAB, NULL},
- {gText_Cancel2, NULL},
-};
-
-const struct MenuAction MultichoiceList_048[] =
-{
- {gUnknown_085EAFB6, NULL},
- {gUnknown_085EAFCF, NULL},
- {gUnknown_085EAFE8, NULL},
- {gText_Exit, NULL},
-};
-
-const struct MenuAction MultichoiceList_055[] =
-{
- {gUnknown_085EB089, NULL},
- {gUnknown_085EB09C, NULL},
- {gUnknown_085EB0AF, NULL},
- {gUnknown_085EB0C2, NULL},
- {gUnknown_085EB0D5, NULL},
- {gText_Exit, NULL},
-};
-
-const struct MenuAction MultichoiceList_049[] =
-{
- {gUnknown_085EB002, NULL},
- {gUnknown_085EB017, NULL},
- {gText_Exit, NULL},
-};
-
-const struct MenuAction MultichoiceList_050[] =
-{
- {gUnknown_085EB02A, NULL},
- {gUnknown_085EB034, NULL},
-};
-
-const struct MenuAction MultichoiceList_052[] =
-{
- {gText_LilycoveCity, NULL},
- {gText_BattleFrontier, NULL},
- {gText_Exit, NULL},
-};
-
-const struct MenuAction MultichoiceList_053[] =
-{
- {gText_SlateportCity, NULL},
- {gText_LilycoveCity, NULL},
- {gText_Exit, NULL},
-};
-
-const struct MenuAction MultichoiceList_054[] =
-{
- {gUnknown_085EB07E, NULL},
- {gUnknown_085EB084, NULL},
-};
-
-const struct MenuAction MultichoiceList_056[] =
-{
- {gText_LilycoveCity, NULL},
- {gText_Exit, NULL},
-};
-
-const struct MenuAction MultichoiceList_057[] =
-{
- {gText_5F, NULL},
- {gText_4F, NULL},
- {gText_3F, NULL},
- {gText_2F, NULL},
- {gText_1F, NULL},
- {gText_Exit, NULL},
-};
-
-const struct MenuAction MultichoiceList_058[] =
-{
- {gUnknown_085EB040, NULL},
- {gText_Exit, NULL},
-};
-
-const struct MenuAction MultichoiceList_059[] =
-{
- {gUnknown_085EB04A, NULL},
- {gText_Exit, NULL},
-};
-
-const struct MenuAction MultichoiceList_060[] =
-{
- {gUnknown_085EB040, NULL},
- {gUnknown_085EB04A, NULL},
- {gText_Exit, NULL},
-};
-
-const struct MenuAction MultichoiceList_061[] =
-{
- {gUnknown_085EB057, NULL},
- {gText_Exit, NULL},
-};
-
-const struct MenuAction MultichoiceList_062[] =
-{
- {gUnknown_085EB040, NULL},
- {gUnknown_085EB057, NULL},
- {gText_Exit, NULL},
-};
-
-const struct MenuAction MultichoiceList_063[] =
-{
- {gUnknown_085EB04A, NULL},
- {gUnknown_085EB057, NULL},
- {gText_Exit, NULL},
-};
-
-const struct MenuAction MultichoiceList_064[] =
-{
- {gUnknown_085EB040, NULL},
- {gUnknown_085EB04A, NULL},
- {gUnknown_085EB057, NULL},
- {gText_Exit, NULL},
-};
-
-const struct MenuAction MultichoiceList_065[] =
-{
- {gUnknown_085EB062, NULL},
- {gText_Exit, NULL},
-};
-
-const struct MenuAction MultichoiceList_066[] =
-{
- {gUnknown_085EB040, NULL},
- {gUnknown_085EB062, NULL},
- {gText_Exit, NULL},
-};
-
-const struct MenuAction MultichoiceList_067[] =
-{
- {gUnknown_085EB04A, NULL},
- {gUnknown_085EB062, NULL},
- {gText_Exit, NULL},
-};
-
-const struct MenuAction MultichoiceList_068[] =
-{
- {gUnknown_085EB040, NULL},
- {gUnknown_085EB04A, NULL},
- {gUnknown_085EB062, NULL},
- {gText_Exit, NULL},
-};
-
-const struct MenuAction MultichoiceList_069[] =
-{
- {gUnknown_085EB057, NULL},
- {gUnknown_085EB062, NULL},
- {gText_Exit, NULL},
-};
-
-const struct MenuAction MultichoiceList_070[] =
-{
- {gUnknown_085EB040, NULL},
- {gUnknown_085EB057, NULL},
- {gUnknown_085EB062, NULL},
- {gText_Exit, NULL},
-};
-
-const struct MenuAction MultichoiceList_071[] =
-{
- {gUnknown_085EB04A, NULL},
- {gUnknown_085EB057, NULL},
- {gUnknown_085EB062, NULL},
- {gText_Exit, NULL},
-};
-
-const struct MenuAction MultichoiceList_072[] =
-{
- {gUnknown_085EB040, NULL},
- {gUnknown_085EB04A, NULL},
- {gUnknown_085EB057, NULL},
- {gUnknown_085EB062, NULL},
- {gText_Exit, NULL},
-};
-
-const struct MenuAction MultichoiceList_073[] =
-{
- {gText_Opponent, NULL},
- {gText_Tourney_Tree, NULL},
- {gText_ReadyToStart, NULL},
- {gUnknown_085EB5BC, NULL},
- {gUnknown_085EB5C3, NULL},
- {gUnknown_085EB5C8, NULL},
-};
-
-const struct MenuAction MultichoiceList_107[] =
-{
- {gText_Opponent, NULL},
- {gText_Tourney_Tree, NULL},
- {gText_ReadyToStart, NULL},
- {gUnknown_085EB5C3, NULL},
- {gUnknown_085EB5C8, NULL},
-};
-
-const struct MenuAction MultichoiceList_088[] =
-{
- {gUnknown_085EB29A, NULL},
- {gUnknown_085EB2A3, NULL},
-};
-
-const struct MenuAction MultichoiceList_076[] =
-{
- {gUnknown_085EB372, NULL},
- {gUnknown_085EB37F, NULL},
- {gUnknown_085EB389, NULL},
- {gText_Exit, NULL},
-};
-
-const struct MenuAction MultichoiceList_017[] =
-{
- {gText_Yes, NULL},
- {gText_No, NULL},
- {gUnknown_085EAD6D, NULL},
-};
-
-const struct MenuAction MultichoiceList_018[] =
-{
- {gUnknown_085EAE6E, NULL},
- {gUnknown_085EAE7C, NULL},
- {gUnknown_085EAE8A, NULL},
- {gUnknown_085EAD6D, NULL},
- {gText_Exit, NULL},
-};
-
-const struct MenuAction MultichoiceList_078[] =
-{
- {gUnknown_085EB372, NULL},
- {gUnknown_085EB37F, NULL},
- {gUnknown_085EB397, NULL},
- {gText_Exit, NULL},
-};
-
-const struct MenuAction MultichoiceList_079[] =
-{
- {gUnknown_085EB372, NULL},
- {gUnknown_085EB37F, NULL},
- {gUnknown_085EB389, NULL},
- {gUnknown_085EB397, NULL},
- {gText_Exit, NULL},
-};
-
-const struct MenuAction MultichoiceList_074[] =
-{
- {gUnknown_085EB372, NULL},
- {gUnknown_085EB37F, NULL},
- {gText_Exit, NULL},
-};
-
-const struct MenuAction MultichoiceList_080[] =
-{
- {gUnknown_085EB3A4, NULL},
- {gUnknown_085EB3B1, NULL},
- {gText_Exit, NULL},
-};
-
-const struct MenuAction MultichoiceList_081[] =
-{
- {gUnknown_085EB3D4, NULL},
- {gUnknown_085EB3C6, NULL},
- {gText_Exit, NULL},
-};
-
-const struct MenuAction MultichoiceList_082[] =
-{
- {gText_NormalRank, NULL},
- {gText_SuperRank, NULL},
- {gText_HyperRank, NULL},
- {gText_MasterRank, NULL},
- {gText_Exit, NULL},
-};
-
-const struct MenuAction MultichoiceList_083[] =
-{
- {gText_BattleBag, NULL},
- {gText_HeldItem, NULL},
- {gText_Exit, NULL},
-};
-
-const struct MenuAction MultichoiceList_084[] =
-{
- {gText_LinkContest, NULL},
- {gText_AboutE_Mode, NULL},
- {gText_AboutG_Mode, NULL},
- {gText_Cancel2, NULL},
-};
-
-const struct MenuAction MultichoiceList_085[] =
-{
- {gText_E_Mode, NULL},
- {gText_G_Mode, NULL},
- {gText_Exit, NULL},
-};
-
-const struct MenuAction MultichoiceList_086[] =
-{
- {gText_MenuOptionPokedex, NULL},
- {gText_MenuOptionPokemon, NULL},
- {gText_MenuOptionBag, NULL},
- {gText_MenuOptionPokenav, NULL},
- {gUnknown_085EB278, NULL},
- {gText_MenuOptionSave, NULL},
- {gText_MenuOptionOption, NULL},
- {gText_MenuOptionExit, NULL},
-};
-
-const struct MenuAction MultichoiceList_087[] =
-{
- {gUnknown_085EB28A, NULL},
- {gUnknown_085EB290, NULL},
- {gUnknown_085EB295, NULL},
- {gText_Exit, NULL},
-};
-
-const struct MenuAction MultichoiceList_089[] =
-{
- {gText_SouthernIsland, NULL},
- {gText_BirthIsland, NULL},
- {gText_Exit, NULL},
-};
-
-const struct MenuAction MultichoiceList_090[] =
-{
- {gText_SouthernIsland, NULL},
- {gText_FarawayIsland, NULL},
- {gText_Exit, NULL},
-};
-
-const struct MenuAction MultichoiceList_091[] =
-{
- {gText_BirthIsland, NULL},
- {gText_FarawayIsland, NULL},
- {gText_Exit, NULL},
-};
-
-const struct MenuAction MultichoiceList_092[] =
-{
- {gText_SouthernIsland, NULL},
- {gText_BirthIsland, NULL},
- {gText_FarawayIsland, NULL},
- {gText_Exit, NULL},
-};
-
-const struct MenuAction MultichoiceList_093[] =
-{
- {gUnknown_085EB2E4, NULL},
- {gUnknown_085EB2F0, NULL},
- {gText_Exit, NULL},
-};
-
-const struct MenuAction MultichoiceList_094[] =
-{
- {gText_Yes, NULL},
- {gUnknown_085EB2FC, NULL},
-};
-
-const struct MenuAction MultichoiceList_095[] =
-{
- {gUnknown_085EB3DF, NULL},
- {gUnknown_085EB3EA, NULL},
- {gUnknown_085EB3F1, NULL},
- {gUnknown_085EB3FC, NULL},
- {gUnknown_085EB40A, NULL},
- {gText_Exit, NULL},
-};
-
-const struct MenuAction MultichoiceList_011[] =
-{
- {gUnknown_085EB415, NULL},
- {gUnknown_085EB41D, NULL},
- {gUnknown_085EB424, NULL},
- {gText_Exit, NULL},
-};
-
-const struct MenuAction MultichoiceList_096[] =
-{
- {gUnknown_085EB45C, NULL},
- {gUnknown_085EB469, NULL},
- {gUnknown_085EB475, NULL},
- {gUnknown_085EB482, NULL},
- {gText_Exit, NULL},
-};
-
-const struct MenuAction MultichoiceList_097[] =
-{
- {gUnknown_085EB42F, NULL},
- {gUnknown_085EB43A, NULL},
- {gUnknown_085EB444, NULL},
- {gUnknown_085EB451, NULL},
- {gText_Exit, NULL},
-};
-
-const struct MenuAction MultichoiceList_098[] =
-{
- {gUnknown_085EB48E, NULL},
- {gUnknown_085EB496, NULL},
- {gUnknown_085EB4A3, NULL},
- {gText_Exit, NULL},
-};
-
-const struct MenuAction MultichoiceList_099[] =
-{
- {gUnknown_085EB4AD, NULL},
- {gUnknown_085EB4B9, NULL},
- {gUnknown_085EB4C7, NULL},
- {gUnknown_085EB4D4, NULL},
- {gUnknown_085EB4E0, NULL},
- {gText_Exit, NULL},
-};
-
-const struct MenuAction MultichoiceList_100[] =
-{
- {gText_BattleBasics, NULL},
- {gText_PokemonNature, NULL},
- {gText_PokemonMoves, NULL},
- {gText_Underpowered, NULL},
- {gText_WhenInDanger, NULL},
- {gText_Exit, NULL},
-};
-
-const struct MenuAction MultichoiceList_101[] =
-{
- {gUnknown_085EB532, NULL},
- {gUnknown_085EB543, NULL},
- {gUnknown_085EB555, NULL},
- {gUnknown_085EB563, NULL},
- {gText_Exit, NULL},
-};
-
-const struct MenuAction MultichoiceList_102[] =
-{
- {gUnknown_085EB56E, NULL},
- {gUnknown_085EB57E, NULL},
- {gUnknown_085EB589, NULL},
- {gText_Exit, NULL},
-};
-
-const struct MenuAction MultichoiceList_103[] =
-{
- {gUnknown_085EB5B6, NULL},
- {gUnknown_085EB5BC, NULL},
- {gUnknown_085EB5C3, NULL},
- {gUnknown_085EB5C8, NULL},
-};
-
-const struct MenuAction MultichoiceList_104[] =
-{
- {gUnknown_085EB5B6, NULL},
- {gUnknown_085EB5C3, NULL},
- {gUnknown_085EB5C8, NULL},
-};
-
-const struct MenuAction MultichoiceList_105[] =
-{
- {gUnknown_085EB5B6, NULL},
- {gUnknown_085EB5BC, NULL},
- {gUnknown_085EB5C8, NULL},
-};
-
-const struct MenuAction MultichoiceList_106[] =
-{
- {gUnknown_085EB5B6, NULL},
- {gUnknown_085EB5C8, NULL},
-};
-
-const struct MenuAction MultichoiceList_108[] =
-{
- {gUnknown_085EE14B, NULL},
- {gUnknown_085EE14F, NULL},
-};
-
-const struct MenuAction MultichoiceList_109[] =
-{
- {gUnknown_085EB2FF, NULL},
- {gUnknown_085EB310, NULL},
- {gUnknown_085EB317, NULL},
- {gUnknown_085EB31F, NULL},
-};
-
-const struct MenuAction MultichoiceList_110[] =
-{
- {gText_CaveOfOrigin, NULL},
- {gText_MtPyre, NULL},
- {gText_SkyPillar, NULL},
- {gText_DontRemember, NULL},
-};
-
-const struct MenuAction MultichoiceList_111[] =
-{
- {gUnknown_085EB4AD, NULL},
- {gUnknown_085EB4B9, NULL},
- {gUnknown_085EB4C7, NULL},
- {gUnknown_085EB4D4, NULL},
- {gUnknown_085EB597, NULL},
- {gText_Exit, NULL},
-};
-
-const struct MenuAction MultichoiceList_112[] =
-{
- {gText_BattleTrainers, NULL},
- {gUnknown_085EB45C, NULL},
- {gUnknown_085EB469, NULL},
- {gUnknown_085EB475, NULL},
- {gUnknown_085EB482, NULL},
- {gText_Exit, NULL},
-};
-
-const struct MenuAction MultichoiceList_113[] =
-{
- {gText_NormalTagMatch, NULL},
- {gText_VarietyTagMatch, NULL},
- {gText_UniqueTagMatch, NULL},
- {gText_ExpertTagMatch, NULL},
- {gText_Exit, NULL},
-};
-
-const struct MenuAction MultichoiceList_001[] =
-{
- {gText_Exit, NULL},
-};
-
-struct MultichoiceListStruct
-{
- const struct MenuAction *list;
- u8 count;
-};
-
-const struct MultichoiceListStruct gMultichoiceLists[] =
-{
- {MultichoiceList_000, ARRAY_COUNT(MultichoiceList_000)},
- {MultichoiceList_001, ARRAY_COUNT(MultichoiceList_001)},
- {MultichoiceList_002, ARRAY_COUNT(MultichoiceList_002)},
- {MultichoiceList_003, ARRAY_COUNT(MultichoiceList_003)},
- {MultichoiceList_004, ARRAY_COUNT(MultichoiceList_004)},
- {MultichoiceList_005, ARRAY_COUNT(MultichoiceList_005)},
- {MultichoiceList_006, ARRAY_COUNT(MultichoiceList_006)},
- {MultichoiceList_007, ARRAY_COUNT(MultichoiceList_007)},
- {MultichoiceList_001, ARRAY_COUNT(MultichoiceList_001)},
- {MultichoiceList_001, ARRAY_COUNT(MultichoiceList_001)},
- {MultichoiceList_001, ARRAY_COUNT(MultichoiceList_001)},
- {MultichoiceList_011, ARRAY_COUNT(MultichoiceList_011)},
- {MultichoiceList_012, ARRAY_COUNT(MultichoiceList_012)},
- {MultichoiceList_013, ARRAY_COUNT(MultichoiceList_013)},
- {MultichoiceList_014, ARRAY_COUNT(MultichoiceList_014)},
- {MultichoiceList_001, ARRAY_COUNT(MultichoiceList_001)},
- {MultichoiceList_016, ARRAY_COUNT(MultichoiceList_016)},
- {MultichoiceList_017, ARRAY_COUNT(MultichoiceList_017)},
- {MultichoiceList_018, ARRAY_COUNT(MultichoiceList_018)},
- {MultichoiceList_001, ARRAY_COUNT(MultichoiceList_001)},
- {MultichoiceList_020, ARRAY_COUNT(MultichoiceList_020)},
- {MultichoiceList_001, ARRAY_COUNT(MultichoiceList_001)},
- {MultichoiceList_001, ARRAY_COUNT(MultichoiceList_001)},
- {MultichoiceList_023, ARRAY_COUNT(MultichoiceList_023)},
- {MultichoiceList_024, ARRAY_COUNT(MultichoiceList_024)},
- {MultichoiceList_025, ARRAY_COUNT(MultichoiceList_025)},
- {MultichoiceList_026, ARRAY_COUNT(MultichoiceList_026)},
- {MultichoiceList_027, ARRAY_COUNT(MultichoiceList_027)},
- {MultichoiceList_028, ARRAY_COUNT(MultichoiceList_028)},
- {MultichoiceList_029, ARRAY_COUNT(MultichoiceList_029)},
- {MultichoiceList_030, ARRAY_COUNT(MultichoiceList_030)},
- {MultichoiceList_031, ARRAY_COUNT(MultichoiceList_031)},
- {MultichoiceList_032, ARRAY_COUNT(MultichoiceList_032)},
- {MultichoiceList_033, ARRAY_COUNT(MultichoiceList_033)},
- {MultichoiceList_034, ARRAY_COUNT(MultichoiceList_034)},
- {MultichoiceList_035, ARRAY_COUNT(MultichoiceList_035)},
- {MultichoiceList_036, ARRAY_COUNT(MultichoiceList_036)},
- {MultichoiceList_037, ARRAY_COUNT(MultichoiceList_037)},
- {MultichoiceList_038, ARRAY_COUNT(MultichoiceList_038)},
- {MultichoiceList_039, ARRAY_COUNT(MultichoiceList_039)},
- {MultichoiceList_001, ARRAY_COUNT(MultichoiceList_001)},
- {MultichoiceList_001, ARRAY_COUNT(MultichoiceList_001)},
- {MultichoiceList_042, ARRAY_COUNT(MultichoiceList_042)},
- {MultichoiceList_043, ARRAY_COUNT(MultichoiceList_043)},
- {MultichoiceList_044, ARRAY_COUNT(MultichoiceList_044)},
- {MultichoiceList_045, ARRAY_COUNT(MultichoiceList_045)},
- {MultichoiceList_046, ARRAY_COUNT(MultichoiceList_046)},
- {MultichoiceList_047, ARRAY_COUNT(MultichoiceList_047)},
- {MultichoiceList_048, ARRAY_COUNT(MultichoiceList_048)},
- {MultichoiceList_049, ARRAY_COUNT(MultichoiceList_049)},
- {MultichoiceList_050, ARRAY_COUNT(MultichoiceList_050)},
- {MultichoiceList_001, ARRAY_COUNT(MultichoiceList_001)},
- {MultichoiceList_052, ARRAY_COUNT(MultichoiceList_052)},
- {MultichoiceList_053, ARRAY_COUNT(MultichoiceList_053)},
- {MultichoiceList_054, ARRAY_COUNT(MultichoiceList_054)},
- {MultichoiceList_055, ARRAY_COUNT(MultichoiceList_055)},
- {MultichoiceList_056, ARRAY_COUNT(MultichoiceList_056)},
- {MultichoiceList_057, ARRAY_COUNT(MultichoiceList_057)},
- {MultichoiceList_058, ARRAY_COUNT(MultichoiceList_058)},
- {MultichoiceList_059, ARRAY_COUNT(MultichoiceList_059)},
- {MultichoiceList_060, ARRAY_COUNT(MultichoiceList_060)},
- {MultichoiceList_061, ARRAY_COUNT(MultichoiceList_061)},
- {MultichoiceList_062, ARRAY_COUNT(MultichoiceList_062)},
- {MultichoiceList_063, ARRAY_COUNT(MultichoiceList_063)},
- {MultichoiceList_064, ARRAY_COUNT(MultichoiceList_064)},
- {MultichoiceList_065, ARRAY_COUNT(MultichoiceList_065)},
- {MultichoiceList_066, ARRAY_COUNT(MultichoiceList_066)},
- {MultichoiceList_067, ARRAY_COUNT(MultichoiceList_067)},
- {MultichoiceList_068, ARRAY_COUNT(MultichoiceList_068)},
- {MultichoiceList_069, ARRAY_COUNT(MultichoiceList_069)},
- {MultichoiceList_070, ARRAY_COUNT(MultichoiceList_070)},
- {MultichoiceList_071, ARRAY_COUNT(MultichoiceList_071)},
- {MultichoiceList_072, ARRAY_COUNT(MultichoiceList_072)},
- {MultichoiceList_073, ARRAY_COUNT(MultichoiceList_073)},
- {MultichoiceList_074, ARRAY_COUNT(MultichoiceList_074)},
- {MultichoiceList_074, ARRAY_COUNT(MultichoiceList_074)},
- {MultichoiceList_076, ARRAY_COUNT(MultichoiceList_076)},
- {MultichoiceList_076, ARRAY_COUNT(MultichoiceList_076)},
- {MultichoiceList_078, ARRAY_COUNT(MultichoiceList_078)},
- {MultichoiceList_079, ARRAY_COUNT(MultichoiceList_079)},
- {MultichoiceList_080, ARRAY_COUNT(MultichoiceList_080)},
- {MultichoiceList_081, ARRAY_COUNT(MultichoiceList_081)},
- {MultichoiceList_082, ARRAY_COUNT(MultichoiceList_082)},
- {MultichoiceList_083, ARRAY_COUNT(MultichoiceList_083)},
- {MultichoiceList_084, ARRAY_COUNT(MultichoiceList_084)},
- {MultichoiceList_085, ARRAY_COUNT(MultichoiceList_085)},
- {MultichoiceList_086, ARRAY_COUNT(MultichoiceList_086)},
- {MultichoiceList_087, ARRAY_COUNT(MultichoiceList_087)},
- {MultichoiceList_088, ARRAY_COUNT(MultichoiceList_088)},
- {MultichoiceList_089, ARRAY_COUNT(MultichoiceList_089)},
- {MultichoiceList_090, ARRAY_COUNT(MultichoiceList_090)},
- {MultichoiceList_091, ARRAY_COUNT(MultichoiceList_091)},
- {MultichoiceList_092, ARRAY_COUNT(MultichoiceList_092)},
- {MultichoiceList_093, ARRAY_COUNT(MultichoiceList_093)},
- {MultichoiceList_094, ARRAY_COUNT(MultichoiceList_094)},
- {MultichoiceList_095, ARRAY_COUNT(MultichoiceList_095)},
- {MultichoiceList_096, ARRAY_COUNT(MultichoiceList_096)},
- {MultichoiceList_097, ARRAY_COUNT(MultichoiceList_097)},
- {MultichoiceList_098, ARRAY_COUNT(MultichoiceList_098)},
- {MultichoiceList_099, ARRAY_COUNT(MultichoiceList_099)},
- {MultichoiceList_100, ARRAY_COUNT(MultichoiceList_100)},
- {MultichoiceList_101, ARRAY_COUNT(MultichoiceList_101)},
- {MultichoiceList_102, ARRAY_COUNT(MultichoiceList_102)},
- {MultichoiceList_103, ARRAY_COUNT(MultichoiceList_103)},
- {MultichoiceList_104, ARRAY_COUNT(MultichoiceList_104)},
- {MultichoiceList_105, ARRAY_COUNT(MultichoiceList_105)},
- {MultichoiceList_106, ARRAY_COUNT(MultichoiceList_106)},
- {MultichoiceList_107, ARRAY_COUNT(MultichoiceList_107)},
- {MultichoiceList_108, ARRAY_COUNT(MultichoiceList_108)},
- {MultichoiceList_109, ARRAY_COUNT(MultichoiceList_109)},
- {MultichoiceList_110, ARRAY_COUNT(MultichoiceList_110)},
- {MultichoiceList_111, ARRAY_COUNT(MultichoiceList_111)},
- {MultichoiceList_112, ARRAY_COUNT(MultichoiceList_112)},
- {MultichoiceList_113, ARRAY_COUNT(MultichoiceList_113)},
-};
-
-const u8 *const gUnknown_0858BAF0[] =
-{
- gText_Cool,
- gText_Beauty,
- gText_Cute,
- gText_Smart,
- gText_Tough,
- gText_Normal,
- gText_Super,
- gText_Hyper,
- gText_Master,
- gText_Cool2,
- gText_Beauty2,
- gText_Cute2,
- gText_Smart2,
- gText_Tough2,
- gText_Items,
- gText_Key_Items,
- gText_Poke_Balls,
- gText_TMs_Hms,
- gText_Berries2,
- gText_Single2,
- gText_Double2,
- gText_Multi,
- gText_MultiLink,
- gText_BattleTower2,
- gText_BattleDome,
- gText_BattleFactory,
- gText_BattlePalace,
- gText_BattleArena,
- gText_BattlePike,
- gText_BattlePyramid,
-};
-
-const u8 gUnknown_0858BB68[] = { 74, 75, 76, 77, 78, 79 };
-
-const u8 *const sPCNameStrings[] =
-{
- gText_SomeonesPC,
- gText_LanettesPC,
- gText_PlayersPC,
- gText_LogOff,
-};
-
-const u8 *const gUnknown_0858BB80[] =
-{
- gText_SlateportCity,
- gText_BattleFrontier,
- gText_SouthernIsland,
- gText_NavelRock,
- gText_BirthIsland,
- gText_FarawayIsland,
- gText_Exit,
-};
-
-const u8 *const gUnknown_0858BB9C[] =
-{
- OldaleTown_PokemonCenter_2F_Text_277F1B,
- OldaleTown_PokemonCenter_2F_Text_277F5A,
- OldaleTown_PokemonCenter_2F_Text_277F96,
- OldaleTown_PokemonCenter_2F_Text_27889C,
-};
-const u8 *const gUnknown_0858BBAC[] =
-{
- OldaleTown_PokemonCenter_2F_Text_27879F,
- OldaleTown_PokemonCenter_2F_Text_2787D5,
- OldaleTown_PokemonCenter_2F_Text_278831,
- OldaleTown_PokemonCenter_2F_Text_27889C,
-};
-const u8 *const gUnknown_0858BBBC[] =
-{
- OldaleTown_PokemonCenter_2F_Text_27879F,
- OldaleTown_PokemonCenter_2F_Text_2787D5,
- OldaleTown_PokemonCenter_2F_Text_2787FC,
- OldaleTown_PokemonCenter_2F_Text_27889C,
-};
-const u8 *const gUnknown_0858BBCC[] =
-{
- OldaleTown_PokemonCenter_2F_Text_27879F,
- OldaleTown_PokemonCenter_2F_Text_2787D5,
- OldaleTown_PokemonCenter_2F_Text_278831,
- OldaleTown_PokemonCenter_2F_Text_2787FC,
- OldaleTown_PokemonCenter_2F_Text_27889C,
-};
-const u8 *const gUnknown_0858BBE0[] =
-{
- OldaleTown_PokemonCenter_2F_Text_277F1B,
- OldaleTown_PokemonCenter_2F_Text_277F5A,
- OldaleTown_PokemonCenter_2F_Text_27889C,
-};
-const u8 *const gUnknown_0858BBEC[] =
-{
- OldaleTown_PokemonCenter_2F_Text_27879F,
- OldaleTown_PokemonCenter_2F_Text_2787D5,
- OldaleTown_PokemonCenter_2F_Text_27889C,
-};
-
-EWRAM_DATA u8 gUnknown_02039F90 = 0;
-
-static u8 gUnknown_03001124[7];
-static u32 filler_0300112c;
-
-static void Task_HandleMultichoiceInput(u8);
-static void Task_HandleYesNoInput(u8);
-static void Task_HandleMultichoiceGridInput(u8);
-static void DrawMultichoiceMenu(u8, u8, u8, bool8, u8);
-static void sub_80E1FBC(u8, u8, u8, u8);
-static void sub_80E2A94(u8);
-static void CreatePCMenu(void);
-static void sub_80E2578(void);
+static void Task_HandleMultichoiceInput(u8 taskId);
+static void Task_HandleYesNoInput(u8 taskId);
+static void Task_HandleMultichoiceGridInput(u8 taskId);
+static void DrawMultichoiceMenu(u8 left, u8 top, u8 multichoiceId, bool8 ignoreBPress, u8 cursorPos);
+static void InitMultichoiceCheckWrap(bool8 ignoreBPress, u8 count, u8 windowId, u8 multichoiceId);
+static void DrawLinkServicesMultichoiceMenu(u8 multichoiceId);
+static void CreatePCMultichoice(void);
+static void CreateLilycoveSSTidalMultichoice(void);
static bool8 IsPicboxClosed(void);
-static void CreateStartMenu(void);
-static void sub_80E2CC4(u8, u8, u8, u8);
+static void CreateStartMenuForPokenavTutorial(void);
+static void InitMultichoiceNoWrap(bool8 ignoreBPress, u8 unusedCount, u8 windowId, u8 multichoiceId);
-bool8 ScriptMenu_Multichoice(u8 left, u8 top, u8 multichoiceId, u8 ignoreBPress)
+bool8 ScriptMenu_Multichoice(u8 left, u8 top, u8 multichoiceId, bool8 ignoreBPress)
{
if (FuncIsActiveTask(Task_HandleMultichoiceInput) == TRUE)
{
@@ -1060,7 +64,8 @@ bool8 ScriptMenu_MultichoiceWithDefault(u8 left, u8 top, u8 multichoiceId, bool8
}
}
-static u16 sub_80E1EB8(const u8 *str)
+// Unused
+static u16 GetLengthWithExpandedPlayerName(const u8 *str)
{
u16 length = 0;
@@ -1069,7 +74,7 @@ static u16 sub_80E1EB8(const u8 *str)
if (*str == PLACEHOLDER_BEGIN)
{
str++;
- if (*str == 1)
+ if (*str == PLACEHOLDER_ID_PLAYER)
{
length += StringLength(gSaveBlock2Ptr->playerName);
str++;
@@ -1085,28 +90,28 @@ static u16 sub_80E1EB8(const u8 *str)
return length;
}
-static void DrawMultichoiceMenu(u8 left, u8 top, u8 multichoiceId, u8 ignoreBPress, u8 cursorPos)
+static void DrawMultichoiceMenu(u8 left, u8 top, u8 multichoiceId, bool8 ignoreBPress, u8 cursorPos)
{
int i;
u8 windowId;
- u8 count = gMultichoiceLists[multichoiceId].count;
- const struct MenuAction *actions = gMultichoiceLists[multichoiceId].list;
+ u8 count = sMultichoiceLists[multichoiceId].count;
+ const struct MenuAction *actions = sMultichoiceLists[multichoiceId].list;
int width = 0;
u8 newWidth;
for (i = 0; i < count; i++)
{
- width = display_text_and_get_width(actions[i].text, width);
+ width = DisplayTextAndGetWidth(actions[i].text, width);
}
- newWidth = convert_pixel_width_to_tile_width(width);
- left = sub_80E2D5C(left, newWidth);
+ newWidth = ConvertPixelWidthToTileWidth(width);
+ left = ScriptMenu_AdjustLeftCoordFromWidth(left, newWidth);
windowId = CreateWindowFromRect(left, top, newWidth, count * 2);
SetStandardWindowBorderStyle(windowId, 0);
PrintMenuTable(windowId, count, actions);
InitMenuInUpperLeftCornerPlaySoundWhenAPressed(windowId, count, cursorPos);
schedule_bg_copy_tilemap_to_vram(0);
- sub_80E1FBC(ignoreBPress, count, windowId, multichoiceId);
+ InitMultichoiceCheckWrap(ignoreBPress, count, windowId, multichoiceId);
}
#define tLeft data[0]
@@ -1118,17 +123,17 @@ static void DrawMultichoiceMenu(u8 left, u8 top, u8 multichoiceId, u8 ignoreBPre
#define tWindowId data[6]
#define tMultichoiceId data[7]
-static void sub_80E1FBC(u8 ignoreBPress, u8 count, u8 windowId, u8 multichoiceId)
+static void InitMultichoiceCheckWrap(bool8 ignoreBPress, u8 count, u8 windowId, u8 multichoiceId)
{
u8 i;
u8 taskId;
- gUnknown_02039F90 = 2;
+ sProcessInputDelay = 2;
- for (i = 0; i < 6; i++)
+ for (i = 0; i < ARRAY_COUNT(sLinkServicesMultichoiceIds); i++)
{
- if (gUnknown_0858BB68[i] == multichoiceId)
+ if (sLinkServicesMultichoiceIds[i] == multichoiceId)
{
- gUnknown_02039F90 = 12;
+ sProcessInputDelay = 12;
}
}
@@ -1144,7 +149,7 @@ static void sub_80E1FBC(u8 ignoreBPress, u8 count, u8 windowId, u8 multichoiceId
gTasks[taskId].tWindowId = windowId;
gTasks[taskId].tMultichoiceId = multichoiceId;
- sub_80E2A94(multichoiceId);
+ DrawLinkServicesMultichoiceMenu(multichoiceId);
}
static void Task_HandleMultichoiceInput(u8 taskId)
@@ -1154,9 +159,9 @@ static void Task_HandleMultichoiceInput(u8 taskId)
if (!gPaletteFade.active)
{
- if (gUnknown_02039F90)
+ if (sProcessInputDelay)
{
- gUnknown_02039F90--;
+ sProcessInputDelay--;
}
else
{
@@ -1167,7 +172,7 @@ static void Task_HandleMultichoiceInput(u8 taskId)
if (gMain.newKeys & (DPAD_UP | DPAD_DOWN))
{
- sub_80E2A94(tMultichoiceId);
+ DrawLinkServicesMultichoiceMenu(tMultichoiceId);
}
if (selection != MENU_NOTHING_CHOSEN)
@@ -1177,7 +182,7 @@ static void Task_HandleMultichoiceInput(u8 taskId)
if (tIgnoreBPress)
return;
PlaySE(SE_SELECT);
- gSpecialVar_Result = 127;
+ gSpecialVar_Result = MULTI_B_PRESSED;
}
else
{
@@ -1208,7 +213,7 @@ bool8 ScriptMenu_YesNo(u8 left, u8 top)
}
}
-// unused
+// Unused
bool8 IsScriptActive(void)
{
if (gSpecialVar_Result == 0xFF)
@@ -1243,7 +248,7 @@ static void Task_HandleYesNoInput(u8 taskId)
EnableBothScriptContexts();
}
-bool8 ScriptMenu_MultichoiceGrid(u8 left, u8 top, u8 multichoiceId, u8 ignoreBPress, u8 columnCount)
+bool8 ScriptMenu_MultichoiceGrid(u8 left, u8 top, u8 multichoiceId, bool8 ignoreBPress, u8 columnCount)
{
if (FuncIsActiveTask(Task_HandleMultichoiceGridInput) == TRUE)
{
@@ -1258,22 +263,22 @@ bool8 ScriptMenu_MultichoiceGrid(u8 left, u8 top, u8 multichoiceId, u8 ignoreBPr
gSpecialVar_Result = 0xFF;
width = 0;
- for (i = 0; i < gMultichoiceLists[multichoiceId].count; i++)
+ for (i = 0; i < sMultichoiceLists[multichoiceId].count; i++)
{
- width = display_text_and_get_width(gMultichoiceLists[multichoiceId].list[i].text, width);
+ width = DisplayTextAndGetWidth(sMultichoiceLists[multichoiceId].list[i].text, width);
}
- newWidth = convert_pixel_width_to_tile_width(width);
+ newWidth = ConvertPixelWidthToTileWidth(width);
- left = sub_80E2D5C(left, columnCount * newWidth);
- rowCount = gMultichoiceLists[multichoiceId].count / columnCount;
+ left = ScriptMenu_AdjustLeftCoordFromWidth(left, columnCount * newWidth);
+ rowCount = sMultichoiceLists[multichoiceId].count / columnCount;
taskId = CreateTask(Task_HandleMultichoiceGridInput, 80);
gTasks[taskId].tIgnoreBPress = ignoreBPress;
gTasks[taskId].tWindowId = CreateWindowFromRect(left, top, columnCount * newWidth, rowCount * 2);
SetStandardWindowBorderStyle(gTasks[taskId].tWindowId, 0);
- PrintMenuGridTable(gTasks[taskId].tWindowId, newWidth * 8, columnCount, rowCount, gMultichoiceLists[multichoiceId].list);
+ PrintMenuGridTable(gTasks[taskId].tWindowId, newWidth * 8, columnCount, rowCount, sMultichoiceLists[multichoiceId].list);
sub_8199944(gTasks[taskId].tWindowId, newWidth * 8, columnCount, rowCount, 0);
CopyWindowToVram(gTasks[taskId].tWindowId, 3);
return TRUE;
@@ -1293,7 +298,7 @@ static void Task_HandleMultichoiceGridInput(u8 taskId)
if (tIgnoreBPress)
return;
PlaySE(SE_SELECT);
- gSpecialVar_Result = 0x7F;
+ gSpecialVar_Result = MULTI_B_PRESSED;
break;
default:
gSpecialVar_Result = selection;
@@ -1307,7 +312,7 @@ static void Task_HandleMultichoiceGridInput(u8 taskId)
#undef tWindowId
-bool16 ScrSpecial_CreatePCMenu(void)
+bool16 ScriptMenu_CreatePCMultichoice(void)
{
if (FuncIsActiveTask(Task_HandleMultichoiceInput) == TRUE)
{
@@ -1316,12 +321,12 @@ bool16 ScrSpecial_CreatePCMenu(void)
else
{
gSpecialVar_Result = 0xFF;
- CreatePCMenu();
+ CreatePCMultichoice();
return TRUE;
}
}
-static void CreatePCMenu(void)
+static void CreatePCMultichoice(void)
{
u8 y = 8;
u32 pixelWidth = 0;
@@ -1332,17 +337,18 @@ static void CreatePCMenu(void)
for (i = 0; i < ARRAY_COUNT(sPCNameStrings); i++)
{
- pixelWidth = display_text_and_get_width(sPCNameStrings[i], pixelWidth);
+ pixelWidth = DisplayTextAndGetWidth(sPCNameStrings[i], pixelWidth);
}
if (FlagGet(FLAG_SYS_GAME_CLEAR))
{
- pixelWidth = display_text_and_get_width(gText_HallOfFame, pixelWidth);
+ pixelWidth = DisplayTextAndGetWidth(gText_HallOfFame, pixelWidth);
}
- width = convert_pixel_width_to_tile_width(pixelWidth);
+ width = ConvertPixelWidthToTileWidth(pixelWidth);
- if (FlagGet(FLAG_SYS_GAME_CLEAR)) // player has cleared game?
+ // Include Hall of Fame option if player is champion
+ if (FlagGet(FLAG_SYS_GAME_CLEAR))
{
numChoices = 4;
windowId = CreateWindowFromRect(0, 0, width, 8);
@@ -1358,7 +364,8 @@ static void CreatePCMenu(void)
AddTextPrinterParameterized(windowId, 1, gText_LogOff, y, 33, TEXT_SPEED_FF, NULL);
}
- if (FlagGet(FLAG_SYS_PC_LANETTE)) // player met lanette?
+ // Change PC name if player has met Lanette
+ if (FlagGet(FLAG_SYS_PC_LANETTE))
AddTextPrinterParameterized(windowId, 1, gText_LanettesPC, y, 1, TEXT_SPEED_FF, NULL);
else
AddTextPrinterParameterized(windowId, 1, gText_SomeonesPC, y, 1, TEXT_SPEED_FF, NULL);
@@ -1367,7 +374,7 @@ static void CreatePCMenu(void)
PrintPlayerNameOnWindow(windowId, gStringVar4, y, 17);
InitMenuInUpperLeftCornerPlaySoundWhenAPressed(windowId, numChoices, 0);
CopyWindowToVram(windowId, 3);
- sub_80E1FBC(FALSE, numChoices, windowId, 1);
+ InitMultichoiceCheckWrap(FALSE, numChoices, windowId, MULTI_PC);
}
void ScriptMenu_DisplayPCStartupPrompt(void)
@@ -1376,7 +383,7 @@ void ScriptMenu_DisplayPCStartupPrompt(void)
AddTextPrinterParameterized2(0, 1, gText_WhichPCShouldBeAccessed, 0, NULL, 2, 1, 3);
}
-bool8 sub_80E2548(void)
+bool8 ScriptMenu_CreateLilycoveSSTidalMultichoice(void)
{
if (FuncIsActiveTask(Task_HandleMultichoiceInput) == TRUE)
{
@@ -1385,14 +392,16 @@ bool8 sub_80E2548(void)
else
{
gSpecialVar_Result = 0xFF;
- sub_80E2578();
+ CreateLilycoveSSTidalMultichoice();
return TRUE;
}
}
-static void sub_80E2578(void)
+// gSpecialVar_0x8004 is 1 if the Sailor was shown multiple event tickets at the same time
+// otherwise gSpecialVar_0x8004 is 0
+static void CreateLilycoveSSTidalMultichoice(void)
{
- u8 temp = 0;
+ u8 selectionCount = 0;
u8 count;
u32 pixelWidth;
u8 width;
@@ -1400,21 +409,22 @@ static void sub_80E2578(void)
u8 i;
u32 j;
- for (i = 0; i < ARRAY_COUNT(gUnknown_03001124); i++)
+ for (i = 0; i < SSTIDAL_SELECTION_COUNT; i++)
{
- gUnknown_03001124[i] = 0xFF;
+ sLilycoveSSTidalSelections[i] = 0xFF;
}
GetFontAttribute(1, FONTATTR_MAX_LETTER_WIDTH);
if (gSpecialVar_0x8004 == 0)
{
- gUnknown_03001124[temp] = 0;
- temp++;
+ sLilycoveSSTidalSelections[selectionCount] = SSTIDAL_SELECTION_SLATEPORT;
+ selectionCount++;
+
if (FlagGet(FLAG_MET_SCOTT_ON_SS_TIDAL) == TRUE)
{
- gUnknown_03001124[temp] = 1;
- temp++;
+ sLilycoveSSTidalSelections[selectionCount] = SSTIDAL_SELECTION_BATTLE_FRONTIER;
+ selectionCount++;
}
}
@@ -1422,14 +432,14 @@ static void sub_80E2578(void)
{
if (gSpecialVar_0x8004 == 0)
{
- gUnknown_03001124[temp] = 2;
- temp++;
+ sLilycoveSSTidalSelections[selectionCount] = SSTIDAL_SELECTION_SOUTHERN_ISLAND;
+ selectionCount++;
}
if (gSpecialVar_0x8004 == 1 && FlagGet(FLAG_HAS_EON_TICKET) == FALSE)
{
- gUnknown_03001124[temp] = 2;
- temp++;
+ sLilycoveSSTidalSelections[selectionCount] = SSTIDAL_SELECTION_SOUTHERN_ISLAND;
+ selectionCount++;
FlagSet(FLAG_HAS_EON_TICKET);
}
}
@@ -1438,14 +448,14 @@ static void sub_80E2578(void)
{
if (gSpecialVar_0x8004 == 0)
{
- gUnknown_03001124[temp] = 3;
- temp++;
+ sLilycoveSSTidalSelections[selectionCount] = SSTIDAL_SELECTION_NAVEL_ROCK;
+ selectionCount++;
}
if (gSpecialVar_0x8004 == 1 && FlagGet(FLAG_HAS_MYSTIC_TICKET) == FALSE)
{
- gUnknown_03001124[temp] = 3;
- temp++;
+ sLilycoveSSTidalSelections[selectionCount] = SSTIDAL_SELECTION_NAVEL_ROCK;
+ selectionCount++;
FlagSet(FLAG_HAS_MYSTIC_TICKET);
}
}
@@ -1454,14 +464,14 @@ static void sub_80E2578(void)
{
if (gSpecialVar_0x8004 == 0)
{
- gUnknown_03001124[temp] = 4;
- temp++;
+ sLilycoveSSTidalSelections[selectionCount] = SSTIDAL_SELECTION_BIRTH_ISLAND;
+ selectionCount++;
}
if (gSpecialVar_0x8004 == 1 && FlagGet(FLAG_HAS_AURORA_TICKET) == FALSE)
{
- gUnknown_03001124[temp] = 4;
- temp++;
+ sLilycoveSSTidalSelections[selectionCount] = SSTIDAL_SELECTION_BIRTH_ISLAND;
+ selectionCount++;
FlagSet(FLAG_HAS_AURORA_TICKET);
}
}
@@ -1470,69 +480,69 @@ static void sub_80E2578(void)
{
if (gSpecialVar_0x8004 == 0)
{
- gUnknown_03001124[temp] = 5;
- temp++;
+ sLilycoveSSTidalSelections[selectionCount] = SSTIDAL_SELECTION_FARAWAY_ISLAND;
+ selectionCount++;
}
if (gSpecialVar_0x8004 == 1 && FlagGet(FLAG_HAS_OLD_SEA_MAP) == FALSE)
{
- gUnknown_03001124[temp] = 5;
- temp++;
+ sLilycoveSSTidalSelections[selectionCount] = SSTIDAL_SELECTION_FARAWAY_ISLAND;
+ selectionCount++;
FlagSet(FLAG_HAS_OLD_SEA_MAP);
}
}
- gUnknown_03001124[temp] = 6;
- temp++;
+ sLilycoveSSTidalSelections[selectionCount] = SSTIDAL_SELECTION_EXIT;
+ selectionCount++;
if (gSpecialVar_0x8004 == 0 && FlagGet(FLAG_MET_SCOTT_ON_SS_TIDAL) == TRUE)
{
- count = temp;
+ count = selectionCount;
}
- count = temp;
- if (count == 7)
+ count = selectionCount;
+ if (count == SSTIDAL_SELECTION_COUNT)
{
- gSpecialVar_0x8004 = 11;
- sub_813A128();
+ gSpecialVar_0x8004 = SCROLL_MULTI_SS_TIDAL_DESTINATION;
+ ShowScrollableMultichoice();
}
else
{
pixelWidth = 0;
- for (j = 0; j < ARRAY_COUNT(gUnknown_0858BB80); j++)
+ for (j = 0; j < SSTIDAL_SELECTION_COUNT; j++)
{
- u8 test = gUnknown_03001124[j];
- if (test != 0xFF)
+ u8 selection = sLilycoveSSTidalSelections[j];
+ if (selection != 0xFF)
{
- pixelWidth = display_text_and_get_width(gUnknown_0858BB80[test], pixelWidth);
+ pixelWidth = DisplayTextAndGetWidth(sLilycoveSSTidalDestinations[selection], pixelWidth);
}
}
- width = convert_pixel_width_to_tile_width(pixelWidth);
- windowId = CreateWindowFromRect(28 - width, (6 - count) * 2, width, count * 2);
+ width = ConvertPixelWidthToTileWidth(pixelWidth);
+ windowId = CreateWindowFromRect(MAX_MULTICHOICE_WIDTH - width, (6 - count) * 2, width, count * 2);
SetStandardWindowBorderStyle(windowId, 0);
- for (temp = 0, i = 0; i < ARRAY_COUNT(gUnknown_0858BB80); i++)
+ for (selectionCount = 0, i = 0; i < SSTIDAL_SELECTION_COUNT; i++)
{
- if (gUnknown_03001124[i] != 0xFF)
+ if (sLilycoveSSTidalSelections[i] != 0xFF)
{
- AddTextPrinterParameterized(windowId, 1, gUnknown_0858BB80[gUnknown_03001124[i]], 8, temp * 16 + 1, TEXT_SPEED_FF, NULL);
- temp++;
+ AddTextPrinterParameterized(windowId, 1, sLilycoveSSTidalDestinations[sLilycoveSSTidalSelections[i]], 8, selectionCount * 16 + 1, TEXT_SPEED_FF, NULL);
+ selectionCount++;
}
}
InitMenuInUpperLeftCornerPlaySoundWhenAPressed(windowId, count, count - 1);
CopyWindowToVram(windowId, 3);
- sub_80E1FBC(FALSE, count, windowId, 8);
+ InitMultichoiceCheckWrap(FALSE, count, windowId, MULTI_SSTIDAL_LILYCOVE);
}
}
-void sub_80E2878(void)
+void GetLilycoveSSTidalSelection(void)
{
- if (gSpecialVar_Result != 0x7F)
+ if (gSpecialVar_Result != MULTI_B_PRESSED)
{
- gSpecialVar_Result = gUnknown_03001124[gSpecialVar_Result];
+ gSpecialVar_Result = sLilycoveSSTidalSelections[gSpecialVar_Result];
}
}
@@ -1629,50 +639,52 @@ void ClearToTransparentAndRemoveWindow(u8 windowId)
RemoveWindow(windowId);
}
-static void sub_80E2A94(u8 multichoiceId)
+static void DrawLinkServicesMultichoiceMenu(u8 multichoiceId)
{
switch (multichoiceId)
{
- case 77:
+ case MULTI_WIRELESS_NO_BERRY:
FillWindowPixelBuffer(0, PIXEL_FILL(1));
- AddTextPrinterParameterized2(0, 1, gUnknown_0858BBAC[Menu_GetCursorPos()], 0, NULL, 2, 1, 3);
+ AddTextPrinterParameterized2(0, 1, sWirelessOptionsNoBerryCrush[Menu_GetCursorPos()], 0, NULL, 2, 1, 3);
break;
- case 76:
+ case MULTI_CABLE_CLUB_WITH_RECORD_MIX:
FillWindowPixelBuffer(0, PIXEL_FILL(1));
- AddTextPrinterParameterized2(0, 1, gUnknown_0858BB9C[Menu_GetCursorPos()], 0, NULL, 2, 1, 3);
+ AddTextPrinterParameterized2(0, 1, sCableClubOptions_WithRecordMix[Menu_GetCursorPos()], 0, NULL, 2, 1, 3);
break;
- case 78:
+ case MULTI_WIRELESS_NO_RECORD:
FillWindowPixelBuffer(0, PIXEL_FILL(1));
- AddTextPrinterParameterized2(0, 1, gUnknown_0858BBBC[Menu_GetCursorPos()], 0, NULL, 2, 1, 3);
+ AddTextPrinterParameterized2(0, 1, sWirelessOptions_NoRecordMix[Menu_GetCursorPos()], 0, NULL, 2, 1, 3);
break;
- case 79:
+ case MULTI_WIRELESS_ALL_SERVICES:
FillWindowPixelBuffer(0, PIXEL_FILL(1));
- AddTextPrinterParameterized2(0, 1, gUnknown_0858BBCC[Menu_GetCursorPos()], 0, NULL, 2, 1, 3);
+ AddTextPrinterParameterized2(0, 1, sWirelessOptions_AllServices[Menu_GetCursorPos()], 0, NULL, 2, 1, 3);
break;
- case 75:
+ case MULTI_WIRELESS_NO_RECORD_BERRY:
FillWindowPixelBuffer(0, PIXEL_FILL(1));
- AddTextPrinterParameterized2(0, 1, gUnknown_0858BBEC[Menu_GetCursorPos()], 0, NULL, 2, 1, 3);
+ AddTextPrinterParameterized2(0, 1, sWirelessOptions_NoRecordMixBerryCrush[Menu_GetCursorPos()], 0, NULL, 2, 1, 3);
break;
- case 74:
+ case MULTI_CABLE_CLUB_NO_RECORD_MIX:
FillWindowPixelBuffer(0, PIXEL_FILL(1));
- AddTextPrinterParameterized2(0, 1, gUnknown_0858BBE0[Menu_GetCursorPos()], 0, NULL, 2, 1, 3);
+ AddTextPrinterParameterized2(0, 1, sCableClubOptions_NoRecordMix[Menu_GetCursorPos()], 0, NULL, 2, 1, 3);
break;
}
}
-bool16 sp106_CreateStartMenu(void)
+bool16 ScriptMenu_CreateStartMenuForPokenavTutorial(void)
{
if (FuncIsActiveTask(Task_HandleMultichoiceInput) == TRUE)
{
return FALSE;
}
-
- gSpecialVar_Result = 0xFF;
- CreateStartMenu();
- return TRUE;
+ else
+ {
+ gSpecialVar_Result = 0xFF;
+ CreateStartMenuForPokenavTutorial();
+ return TRUE;
+ }
}
-static void CreateStartMenu(void)
+static void CreateStartMenuForPokenavTutorial(void)
{
u8 windowId = CreateWindowFromRect(21, 0, 7, 18);
SetStandardWindowBorderStyle(windowId, 0);
@@ -1684,17 +696,17 @@ static void CreateStartMenu(void)
AddTextPrinterParameterized(windowId, 1, gText_MenuOptionSave, 8, 89, TEXT_SPEED_FF, NULL);
AddTextPrinterParameterized(windowId, 1, gText_MenuOptionOption, 8, 105, TEXT_SPEED_FF, NULL);
AddTextPrinterParameterized(windowId, 1, gText_MenuOptionExit, 8, 121, TEXT_SPEED_FF, NULL);
- sub_81983AC(windowId, 1, 0, 9, 16, 8, 0);
- sub_80E2CC4(0, 8, windowId, 86);
+ sub_81983AC(windowId, 1, 0, 9, 16, ARRAY_COUNT(MultichoiceList_ForcedStartMenu), 0);
+ InitMultichoiceNoWrap(FALSE, ARRAY_COUNT(MultichoiceList_ForcedStartMenu), windowId, MULTI_FORCED_START_MENU);
CopyWindowToVram(windowId, 3);
}
#define tWindowId data[6]
-static void sub_80E2CC4(bool8 ignoreBPress, u8 unused, u8 windowId, u8 multichoiceId)
+static void InitMultichoiceNoWrap(bool8 ignoreBPress, u8 unusedCount, u8 windowId, u8 multichoiceId)
{
u8 taskId;
- gUnknown_02039F90 = 2;
+ sProcessInputDelay = 2;
taskId = CreateTask(Task_HandleMultichoiceInput, 80);
gTasks[taskId].tIgnoreBPress = ignoreBPress;
gTasks[taskId].tDoWrap = 0;
@@ -1711,47 +723,43 @@ static void sub_80E2CC4(bool8 ignoreBPress, u8 unused, u8 windowId, u8 multichoi
#undef tWindowId
#undef tMultichoiceId
-static int display_text_and_get_width_internal(const u8 *str)
+static int DisplayTextAndGetWidthInternal(const u8 *str)
{
u8 temp[64];
StringExpandPlaceholders(temp, str);
return GetStringWidth(1, temp, 0);
}
-int display_text_and_get_width(const u8 *str, int prevMaxWidth)
+int DisplayTextAndGetWidth(const u8 *str, int prevWidth)
{
- int len = display_text_and_get_width_internal(str);
- if (len < prevMaxWidth)
+ int width = DisplayTextAndGetWidthInternal(str);
+ if (width < prevWidth)
{
- len = prevMaxWidth;
+ width = prevWidth;
}
- return len;
+ return width;
}
-int convert_pixel_width_to_tile_width(int width)
+int ConvertPixelWidthToTileWidth(int width)
{
- return (((width + 9) / 8) + 1) > 28 ? 28 : (((width + 9) / 8) + 1);
+ return (((width + 9) / 8) + 1) > MAX_MULTICHOICE_WIDTH ? MAX_MULTICHOICE_WIDTH : (((width + 9) / 8) + 1);
}
-int sub_80E2D5C(int a0, int a1)
+int ScriptMenu_AdjustLeftCoordFromWidth(int left, int width)
{
- int ret = a0;
+ int adjustedLeft = left;
- if (a0 + a1 > 28)
+ if (left + width > MAX_MULTICHOICE_WIDTH)
{
- if (28 - a1 < 0)
+ if (MAX_MULTICHOICE_WIDTH - width < 0)
{
- ret = 0;
+ adjustedLeft = 0;
}
else
{
- ret = 28 - a1;
+ adjustedLeft = MAX_MULTICHOICE_WIDTH - width;
}
}
- else
- {
- ret = a0;
- }
- return ret;
+ return adjustedLeft;
}
diff --git a/src/script_movement.c b/src/script_movement.c
index 9fee9e060..03d6b10e8 100644
--- a/src/script_movement.c
+++ b/src/script_movement.c
@@ -3,20 +3,22 @@
#include "event_object_movement.h"
#include "task.h"
#include "util.h"
+#include "constants/event_objects.h"
+#include "constants/event_object_movement_constants.h"
// static functions
-static void sub_80D33AC(u8);
-static u8 sub_80D33F4(void);
-static bool8 sub_80D3408(u8, u8, const u8 *);
-static u8 sub_80D3474(u8, u8);
-static bool8 sub_80D3584(u8, u8);
-static void sub_80D35DC(u8, u8, u8, const u8 *);
-static void UnfreezeObjects(u8);
-static void sub_80D3660(u8);
-static void sub_80A2490(u8, u8, u8, const u8 *);
+static void ScriptMovement_StartMoveObjects(u8 priority);
+static u8 GetMoveObjectsTaskId(void);
+static bool8 ScriptMovement_TryAddNewMovement(u8 taskId, u8 eventObjId, const u8 *movementScript);
+static u8 GetMovementScriptIdFromEventObjectId(u8 taskId, u8 eventObjId);
+static bool8 IsMovementScriptFinished(u8 taskId, u8 moveScrId);
+static void ScriptMovement_AddNewMovement(u8 taskId, u8 moveScrId, u8 eventObjId, const u8 *movementScript);
+static void ScriptMovement_UnfreezeActiveObjects(u8 taskId);
+static void ScriptMovement_MoveObjects(u8 taskId);
+static void ScriptMovement_TakeStep(u8 taskId, u8 moveScrId, u8 eventObjId, const u8 *movementScript);
// EWRAM_DATA
-static EWRAM_DATA const u8 *gUnknown_02039D90[16] = {0};
+static EWRAM_DATA const u8 *gMovementScripts[EVENT_OBJECTS_COUNT] = {0};
// text
bool8 ScriptMovement_StartObjectMovementScript(u8 localId, u8 mapNum, u8 mapGroup, const u8 *movementScript)
@@ -25,207 +27,207 @@ bool8 ScriptMovement_StartObjectMovementScript(u8 localId, u8 mapNum, u8 mapGrou
if (TryGetEventObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &eventObjId))
return TRUE;
- if (!FuncIsActiveTask(sub_80D3660))
- sub_80D33AC(50);
- return sub_80D3408(sub_80D33F4(), eventObjId, movementScript);
+ if (!FuncIsActiveTask(ScriptMovement_MoveObjects))
+ ScriptMovement_StartMoveObjects(50);
+ return ScriptMovement_TryAddNewMovement(GetMoveObjectsTaskId(), eventObjId, movementScript);
}
-bool8 ScriptMovement_IsObjectMovementFinished(u8 localId, u8 mapNum, u8 mapBank)
+bool8 ScriptMovement_IsObjectMovementFinished(u8 localId, u8 mapNum, u8 mapGroup)
{
u8 eventObjId;
- u8 r4;
- u8 r1;
+ u8 taskId;
+ u8 moveScrId;
- if (TryGetEventObjectIdByLocalIdAndMap(localId, mapNum, mapBank, &eventObjId))
+ if (TryGetEventObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &eventObjId))
return TRUE;
- r4 = sub_80D33F4();
- r1 = sub_80D3474(r4, eventObjId);
- if (r1 == 16)
+ taskId = GetMoveObjectsTaskId();
+ moveScrId = GetMovementScriptIdFromEventObjectId(taskId, eventObjId);
+ if (moveScrId == EVENT_OBJECTS_COUNT)
return TRUE;
- return sub_80D3584(r4, r1);
+ return IsMovementScriptFinished(taskId, moveScrId);
}
-void sub_80D338C(void)
+void ScriptMovement_UnfreezeEventObjects(void)
{
u8 taskId;
- taskId = sub_80D33F4();
+ taskId = GetMoveObjectsTaskId();
if (taskId != 0xFF)
{
- UnfreezeObjects(taskId);
+ ScriptMovement_UnfreezeActiveObjects(taskId);
DestroyTask(taskId);
}
}
-
-static void sub_80D33AC(u8 priority)
+static void ScriptMovement_StartMoveObjects(u8 priority)
{
u8 taskId;
u8 i;
- taskId = CreateTask(sub_80D3660, priority);
- for (i = 1; i < 16; i++)
+ taskId = CreateTask(ScriptMovement_MoveObjects, priority);
+
+ for (i = 1; i < NUM_TASK_DATA; i++)
gTasks[taskId].data[i] = 0xFFFF;
}
-static u8 sub_80D33F4(void)
+static u8 GetMoveObjectsTaskId(void)
{
- return FindTaskIdByFunc(sub_80D3660);
+ return FindTaskIdByFunc(ScriptMovement_MoveObjects);
}
-static bool8 sub_80D3408(u8 taskId, u8 eventObjId, const u8 *movementScript)
+static bool8 ScriptMovement_TryAddNewMovement(u8 taskId, u8 eventObjId, const u8 *movementScript)
{
- u8 r4;
+ u8 moveScrId;
- r4 = sub_80D3474(taskId, eventObjId);
- if (r4 != 16)
+ moveScrId = GetMovementScriptIdFromEventObjectId(taskId, eventObjId);
+ if (moveScrId != EVENT_OBJECTS_COUNT)
{
- if (sub_80D3584(taskId, r4) == 0)
+ if (IsMovementScriptFinished(taskId, moveScrId) == 0)
{
return TRUE;
}
else
{
- sub_80D35DC(taskId, r4, eventObjId, movementScript);
+ ScriptMovement_AddNewMovement(taskId, moveScrId, eventObjId, movementScript);
return FALSE;
}
}
- r4 = sub_80D3474(taskId, 0xFF);
- if (r4 == 16)
+ moveScrId = GetMovementScriptIdFromEventObjectId(taskId, EVENT_OBJ_ID_PLAYER);
+ if (moveScrId == EVENT_OBJECTS_COUNT)
{
return TRUE;
}
else
{
- sub_80D35DC(taskId, r4, eventObjId, movementScript);
+ ScriptMovement_AddNewMovement(taskId, moveScrId, eventObjId, movementScript);
return FALSE;
}
}
-static u8 sub_80D3474(u8 taskId, u8 b)
+static u8 GetMovementScriptIdFromEventObjectId(u8 taskId, u8 eventObjId)
{
- u8 *ptr;
+ u8 *moveScriptId;
u8 i;
- ptr = (u8 *)&gTasks[taskId].data[1];
- for (i = 0; i < 16; i++, ptr++)
+ moveScriptId = (u8 *)&gTasks[taskId].data[1];
+ for (i = 0; i < EVENT_OBJECTS_COUNT; i++, moveScriptId++)
{
- if (*ptr == b)
+ if (*moveScriptId == eventObjId)
return i;
}
- return 16;
+ return EVENT_OBJECTS_COUNT;
}
-static void sub_80D34B0(u8 taskId, u8 b, u8 **c)
+static void LoadEventObjectIdPtrFromMovementScript(u8 taskId, u8 moveScrId, u8 **pEventObjId)
{
u8 i;
- *c = (u8 *)&gTasks[taskId].data[1];
- for (i = 0; i < b; i++, (*c)++)
+ *pEventObjId = (u8 *)&gTasks[taskId].data[1];
+ for (i = 0; i < moveScrId; i++, (*pEventObjId)++)
;
}
-static void sub_80D34E4(u8 taskId, u8 b, u8 c)
+static void SetEventObjectIdAtMovementScript(u8 taskId, u8 moveScrId, u8 eventObjId)
{
u8 *ptr;
- sub_80D34B0(taskId, b, &ptr);
- *ptr = c; //what is this supposed to do?
+ LoadEventObjectIdPtrFromMovementScript(taskId, moveScrId, &ptr);
+ *ptr = eventObjId;
}
-static void sub_80D3508(u8 taskId, u8 b, u8 *c)
+static void LoadEventObjectIdFromMovementScript(u8 taskId, u8 moveScrId, u8 *eventObjId)
{
u8 *ptr;
- sub_80D34B0(taskId, b, &ptr);
- *c = *ptr;
+ LoadEventObjectIdPtrFromMovementScript(taskId, moveScrId, &ptr);
+ *eventObjId = *ptr;
}
-static void sub_80D352C(u8 a, u8 b)
+static void ClearMovementScriptFinished(u8 taskId, u8 moveScrId)
{
- u16 var = ~gBitTable[b];
+ u16 mask = ~gBitTable[moveScrId];
- gTasks[a].data[0] &= var;
+ gTasks[taskId].data[0] &= mask;
}
-static void sub_80D355C(u8 taskId, u8 b)
+static void SetMovementScriptFinished(u8 taskId, u8 moveScrId)
{
- gTasks[taskId].data[0] |= gBitTable[b];
+ gTasks[taskId].data[0] |= gBitTable[moveScrId];
}
-static bool8 sub_80D3584(u8 taskId, u8 b)
+static bool8 IsMovementScriptFinished(u8 taskId, u8 moveScrId)
{
- u16 var = (u16)gTasks[taskId].data[0] & gBitTable[b];
+ u16 moveScriptFinished = (u16)gTasks[taskId].data[0] & gBitTable[moveScrId];
- if (var != 0)
+ if (moveScriptFinished != 0)
return TRUE;
else
return FALSE;
}
-static void npc_obj_offscreen_culling_and_flag_update(u8 a, const u8 *movementScript)
+static void SetMovementScript(u8 moveScrId, const u8 *movementScript)
{
- gUnknown_02039D90[a] = movementScript;
+ gMovementScripts[moveScrId] = movementScript;
}
-static const u8 *sub_80D35CC(u8 a)
+static const u8 *GetMovementScript(u8 moveScrId)
{
- return gUnknown_02039D90[a];
+ return gMovementScripts[moveScrId];
}
-static void sub_80D35DC(u8 taskId, u8 b, u8 eventObjId, const u8 *movementScript)
+static void ScriptMovement_AddNewMovement(u8 taskId, u8 moveScrId, u8 eventObjId, const u8 *movementScript)
{
- sub_80D352C(taskId, b);
- npc_obj_offscreen_culling_and_flag_update(b, movementScript);
- sub_80D34E4(taskId, b, eventObjId);
+ ClearMovementScriptFinished(taskId, moveScrId);
+ SetMovementScript(moveScrId, movementScript);
+ SetEventObjectIdAtMovementScript(taskId, moveScrId, eventObjId);
}
-static void UnfreezeObjects(u8 taskId)
+static void ScriptMovement_UnfreezeActiveObjects(u8 taskId)
{
u8 *pEventObjId;
u8 i;
pEventObjId = (u8 *)&gTasks[taskId].data[1];
- for (i = 0; i < 16; i++, pEventObjId++)
+ for (i = 0; i < EVENT_OBJECTS_COUNT; i++, pEventObjId++)
{
if (*pEventObjId != 0xFF)
UnfreezeEventObject(&gEventObjects[*pEventObjId]);
}
}
-static void sub_80D3660(u8 taskId)
+static void ScriptMovement_MoveObjects(u8 taskId)
{
u8 i;
- u8 var;
+ u8 eventObjId;
- for (i = 0; i < 16; i++)
+ for (i = 0; i < EVENT_OBJECTS_COUNT; i++)
{
- sub_80D3508(taskId, i, &var);
- if (var != 0xFF)
- sub_80A2490(taskId, i, var, sub_80D35CC(i));
+ LoadEventObjectIdFromMovementScript(taskId, i, &eventObjId);
+ if (eventObjId != 0xFF)
+ ScriptMovement_TakeStep(taskId, i, eventObjId, GetMovementScript(i));
}
}
-static void sub_80A2490(u8 taskId, u8 b, u8 eventObjId, const u8 *d)
+static void ScriptMovement_TakeStep(u8 taskId, u8 moveScrId, u8 eventObjId, const u8 *movementScript)
{
- u8 var;
+ u8 nextMoveActionId;
if (EventObjectIsHeldMovementActive(&gEventObjects[eventObjId])
&& !EventObjectClearHeldMovementIfFinished(&gEventObjects[eventObjId]))
return;
- var = *d;
- if (var == 0xFE)
+ nextMoveActionId = *movementScript;
+ if (nextMoveActionId == MOVEMENT_ACTION_STEP_END)
{
- sub_80D355C(taskId, b);
+ SetMovementScriptFinished(taskId, moveScrId);
FreezeEventObject(&gEventObjects[eventObjId]);
}
else
{
- if (!EventObjectSetHeldMovement(&gEventObjects[eventObjId], var))
+ if (!EventObjectSetHeldMovement(&gEventObjects[eventObjId], nextMoveActionId))
{
- d++;
- npc_obj_offscreen_culling_and_flag_update(b, d);
+ movementScript++;
+ SetMovementScript(moveScrId, movementScript);
}
}
}
diff --git a/src/script_pokemon_util_80F87D8.c b/src/script_pokemon_util_80F87D8.c
index 2c7a9c775..a80fe49ff 100755
--- a/src/script_pokemon_util_80F87D8.c
+++ b/src/script_pokemon_util_80F87D8.c
@@ -551,7 +551,7 @@ u8 ScriptGiveMon(u16 species, u8 level, u16 item, u32 unused1, u32 unused2, u8 u
u8 heldItem[2];
struct Pokemon mon;
- CreateMon(&mon, species, level, 32, 0, 0, 0, 0);
+ CreateMon(&mon, species, level, 32, 0, 0, OT_ID_PLAYER_ID, 0);
heldItem[0] = item;
heldItem[1] = item >> 8;
SetMonData(&mon, MON_DATA_HELD_ITEM, heldItem);
@@ -585,14 +585,14 @@ void HasEnoughMonsForDoubleBattle(void)
{
switch (GetMonsStateToDoubles())
{
- case 0:
- gSpecialVar_Result = 0;
+ case PLAYER_HAS_TWO_USABLE_MONS:
+ gSpecialVar_Result = PLAYER_HAS_TWO_USABLE_MONS;
break;
- case 1:
- gSpecialVar_Result = 1;
+ case PLAYER_HAS_ONE_MON:
+ gSpecialVar_Result = PLAYER_HAS_ONE_MON;
break;
- case 2:
- gSpecialVar_Result = 2;
+ case PLAYER_HAS_ONE_USABLE_MON:
+ gSpecialVar_Result = PLAYER_HAS_ONE_USABLE_MON;
break;
}
}
@@ -624,7 +624,7 @@ void CreateScriptedWildMon(u16 species, u8 level, u16 item)
u8 heldItem[2];
ZeroEnemyPartyMons();
- CreateMon(&gEnemyParty[0], species, level, 0x20, 0, 0, 0, 0);
+ CreateMon(&gEnemyParty[0], species, level, 0x20, 0, 0, OT_ID_PLAYER_ID, 0);
if (item)
{
heldItem[0] = item;
diff --git a/src/secret_base.c b/src/secret_base.c
index 12cb8cd61..861a987e2 100644
--- a/src/secret_base.c
+++ b/src/secret_base.c
@@ -349,7 +349,7 @@ void SetPlayerSecretBase(void)
u16 i;
gSaveBlock1Ptr->secretBases[0].secretBaseId = sCurSecretBaseId;
- for (i = 0; i < 4; i++)
+ for (i = 0; i < TRAINER_ID_LENGTH; i++)
gSaveBlock1Ptr->secretBases[0].trainerId[i] = gSaveBlock2Ptr->playerTrainerId[i];
VarSet(VAR_CURRENT_SECRET_BASE, 0);
@@ -1291,7 +1291,7 @@ static void SetSecretBaseDataAndLanguage(u8 secretBaseId, struct SecretBase *sec
static bool8 SecretBasesHaveSameTrainerId(struct SecretBase *secretBase1, struct SecretBase *secretBase2)
{
u8 i;
- for (i = 0; i < 4; i++)
+ for (i = 0; i < TRAINER_ID_LENGTH; i++)
{
if (secretBase1->trainerId[i] != secretBase2->trainerId[i])
return FALSE;
@@ -1445,7 +1445,7 @@ bool8 SecretBaseBelongsToPlayer(struct SecretBase *secretBase)
return FALSE;
// Check if the player's trainer Id matches the secret base's id.
- for (i = 0; i < 4; i++)
+ for (i = 0; i < TRAINER_ID_LENGTH; i++)
{
if (secretBase->trainerId[i] != gSaveBlock2Ptr->playerTrainerId[i])
return FALSE;
diff --git a/src/string_util.c b/src/string_util.c
index 39d235ab8..bce299057 100644
--- a/src/string_util.c
+++ b/src/string_util.c
@@ -505,20 +505,20 @@ const u8 *GetExpandedPlaceholder(u32 id)
static const ExpandPlaceholderFunc funcs[] =
{
- ExpandPlaceholder_UnknownStringVar,
- ExpandPlaceholder_PlayerName,
- ExpandPlaceholder_StringVar1,
- ExpandPlaceholder_StringVar2,
- ExpandPlaceholder_StringVar3,
- ExpandPlaceholder_KunChan,
- ExpandPlaceholder_RivalName,
- ExpandPlaceholder_Version,
- ExpandPlaceholder_Aqua,
- ExpandPlaceholder_Magma,
- ExpandPlaceholder_Archie,
- ExpandPlaceholder_Maxie,
- ExpandPlaceholder_Kyogre,
- ExpandPlaceholder_Groudon,
+ [PLACEHOLDER_ID_UNKNOWN] = ExpandPlaceholder_UnknownStringVar,
+ [PLACEHOLDER_ID_PLAYER] = ExpandPlaceholder_PlayerName,
+ [PLACEHOLDER_ID_STRING_VAR_1] = ExpandPlaceholder_StringVar1,
+ [PLACEHOLDER_ID_STRING_VAR_2] = ExpandPlaceholder_StringVar2,
+ [PLACEHOLDER_ID_STRING_VAR_3] = ExpandPlaceholder_StringVar3,
+ [PLACEHOLDER_ID_KUN] = ExpandPlaceholder_KunChan,
+ [PLACEHOLDER_ID_RIVAL] = ExpandPlaceholder_RivalName,
+ [PLACEHOLDER_ID_VERSION] = ExpandPlaceholder_Version,
+ [PLACEHOLDER_ID_AQUA] = ExpandPlaceholder_Aqua,
+ [PLACEHOLDER_ID_MAGMA] = ExpandPlaceholder_Magma,
+ [PLACEHOLDER_ID_ARCHIE] = ExpandPlaceholder_Archie,
+ [PLACEHOLDER_ID_MAXIE] = ExpandPlaceholder_Maxie,
+ [PLACEHOLDER_ID_KYOGRE] = ExpandPlaceholder_Kyogre,
+ [PLACEHOLDER_ID_GROUDON] = ExpandPlaceholder_Groudon,
};
if (id >= ARRAY_COUNT(funcs))
diff --git a/src/strings.c b/src/strings.c
index 8463cfacb..ed702958e 100644
--- a/src/strings.c
+++ b/src/strings.c
@@ -599,89 +599,89 @@ const u8 gText_Brawly[] = _("BRAWLY");
const u8 gText_Winona[] = _("WINONA");
const u8 gText_Phoebe[] = _("PHOEBE");
const u8 gText_Glacia[] = _("GLACIA");
-const u8 gUnknown_085EAD37[] = _("PETALBURG");
-const u8 gUnknown_085EAD41[] = _("SLATEPORT");
-const u8 gUnknown_085EAD4B[] = _("LITTLEROOT");
-const u8 gUnknown_085EAD56[] = _("LILYCOVE");
-const u8 gUnknown_085EAD5F[] = _("DEWFORD");
-const u8 gUnknown_085EAD67[] = _("ENTER");
-const u8 gUnknown_085EAD6D[] = _("INFO");
-const u8 gUnknown_085EAD72[] = _("What's a CONTEST?");
-const u8 gUnknown_085EAD84[] = _("Types of CONTESTS");
-const u8 gUnknown_085EAD96[] = _("Ranks");
-const u8 gUnknown_085EAD9C[] = _("Judging");
-const u8 gUnknown_085EADA4[] = _("COOLNESS CONTEST");
-const u8 gUnknown_085EADB5[] = _("BEAUTY CONTEST");
-const u8 gUnknown_085EADC4[] = _("CUTENESS CONTEST");
-const u8 gUnknown_085EADD5[] = _("SMARTNESS CONTEST");
-const u8 gUnknown_085EADE7[] = _("TOUGHNESS CONTEST");
-const u8 gUnknown_085EADF9[] = _("DECORATION");
-const u8 gUnknown_085EAE04[] = _("PACK UP");
-const u8 gUnknown_085EAE0C[] = _("COUNT");
-const u8 gUnknown_085EAE12[] = _("REGISTRY");
-const u8 gUnknown_085EAE1B[] = _("INFORMATION");
-const u8 gUnknown_085EAE27[] = _("MACH");
-const u8 gUnknown_085EAE2C[] = _("ACRO");
-const u8 gUnknown_085EAE31[] = _("PSN");
-const u8 gUnknown_085EAE35[] = _("PAR");
-const u8 gUnknown_085EAE39[] = _("SLP");
-const u8 gUnknown_085EAE3D[] = _("BRN");
-const u8 gUnknown_085EAE41[] = _("FRZ");
+const u8 gText_Petalburg[] = _("PETALBURG");
+const u8 gText_Slateport[] = _("SLATEPORT");
+const u8 gText_Littleroot[] = _("LITTLEROOT"); // Unused. Given the context, Briney may at one point have been able to sail the player here
+const u8 gText_Lilycove[] = _("LILYCOVE"); // Unused. Given the context, Briney may at one point have been able to sail the player here
+const u8 gText_Dewford[] = _("DEWFORD");
+const u8 gText_Enter2[] = _("ENTER");
+const u8 gText_Info2[] = _("INFO");
+const u8 gText_WhatsAContest[] = _("What's a CONTEST?");
+const u8 gText_TypesOfContests[] = _("Types of CONTESTS");
+const u8 gText_Ranks[] = _("Ranks");
+const u8 gText_Judging[] = _("Judging"); //unused
+const u8 gText_CoolnessContest[] = _("COOLNESS CONTEST");
+const u8 gText_BeautyContest[] = _("BEAUTY CONTEST");
+const u8 gText_CutenessContest[] = _("CUTENESS CONTEST");
+const u8 gText_SmartnessContest[] = _("SMARTNESS CONTEST");
+const u8 gText_ToughnessContest[] = _("TOUGHNESS CONTEST");
+const u8 gText_Decoration2[] = _("DECORATION");
+const u8 gText_PackUp[] = _("PACK UP");
+const u8 gText_Count[] = _("COUNT"); //unused
+const u8 gText_Registry[] = _("REGISTRY");
+const u8 gText_Information[] = _("INFORMATION");
+const u8 gText_Mach[] = _("MACH");
+const u8 gText_Acro[] = _("ACRO");
+const u8 gText_Psn[] = _("PSN");
+const u8 gText_Par[] = _("PAR");
+const u8 gText_Slp[] = _("SLP");
+const u8 gText_Brn[] = _("BRN");
+const u8 gText_Frz[] = _("FRZ");
const u8 gUnknown_085EAE45[] = _("TOXIC");
const u8 gUnknown_085EAE4B[] = _("OK");
const u8 gUnknown_085EAE4E[] = _("QUIT");
-const u8 gUnknown_085EAE53[] = _("Saw it");
-const u8 gUnknown_085EAE5A[] = _("Not yet");
+const u8 gText_SawIt[] = _("Saw it");
+const u8 gText_NotYet[] = _("Not yet");
const u8 gText_Yes[] = _("YES");
const u8 gText_No[] = _("NO");
const u8 gUnknown_085EAE69[] = _("INFO");
-const u8 gUnknown_085EAE6E[] = _("SINGLE BATTLE");
-const u8 gUnknown_085EAE7C[] = _("DOUBLE BATTLE");
-const u8 gUnknown_085EAE8A[] = _("MULTI BATTLE");
+const u8 gText_SingleBattle[] = _("SINGLE BATTLE");
+const u8 gText_DoubleBattle[] = _("DOUBLE BATTLE");
+const u8 gText_MultiBattle[] = _("MULTI BATTLE");
const u8 gUnknown_085EAE97[] = _("MR. BRINEY");
-const u8 gUnknown_085EAEA2[] = _("CHALLENGE");
-const u8 gUnknown_085EAEAC[] = _("INFO");
+const u8 gText_Challenge[] = _("CHALLENGE");
+const u8 gText_Info3[] = _("INFO");
const u8 gText_Lv50[] = _("LV. 50");
const u8 gText_OpenLevel[] = _("OPEN LEVEL");
-const u8 gUnknown_085EAEC3[] = _("FRESH WATER{CLEAR_TO 0x48}¥200");
-const u8 gUnknown_085EAED6[] = _("SODA POP{CLEAR_TO 0x48}¥300");
-const u8 gUnknown_085EAEE6[] = _("LEMONADE{CLEAR_TO 0x48}¥350");
-const u8 gUnknown_085EAEF6[] = _("HOW TO RIDE");
-const u8 gUnknown_085EAF02[] = _("HOW TO TURN");
-const u8 gUnknown_085EAF0E[] = _("SANDY SLOPES");
-const u8 gUnknown_085EAF1B[] = _("WHEELIES");
-const u8 gUnknown_085EAF24[] = _("BUNNY-HOPS");
-const u8 gUnknown_085EAF2F[] = _("JUMP");
-const u8 gUnknown_085EAF34[] = _("Satisfied");
-const u8 gUnknown_085EAF3E[] = _("Dissatisfied");
-const u8 gUnknown_085EAF4B[] = _("DEEPSEATOOTH");
-const u8 gUnknown_085EAF58[] = _("DEEPSEASCALE");
-const u8 gUnknown_085EAF65[] = _("BLUE FLUTE");
-const u8 gUnknown_085EAF70[] = _("YELLOW FLUTE");
-const u8 gUnknown_085EAF7D[] = _("RED FLUTE");
-const u8 gUnknown_085EAF87[] = _("WHITE FLUTE");
-const u8 gUnknown_085EAF93[] = _("BLACK FLUTE");
-const u8 gUnknown_085EAF9F[] = _("GLASS CHAIR");
-const u8 gUnknown_085EAFAB[] = _("GLASS DESK");
-const u8 gUnknown_085EAFB6[] = _("TREECKO DOLL 1,000 COINS");
-const u8 gUnknown_085EAFCF[] = _("TORCHIC DOLL 1,000 COINS");
-const u8 gUnknown_085EAFE8[] = _("MUDKIP DOLL 1,000 COINS");
-const u8 gUnknown_085EB002[] = _(" 50 COINS ¥1,000");
-const u8 gUnknown_085EB017[] = _("500 COINS ¥10,000");
-const u8 gUnknown_085EB02A[] = _("Excellent");
-const u8 gUnknown_085EB034[] = _("Not so good");
-const u8 gUnknown_085EB040[] = _("RED SHARD");
-const u8 gUnknown_085EB04A[] = _("YELLOW SHARD");
-const u8 gUnknown_085EB057[] = _("BLUE SHARD");
-const u8 gUnknown_085EB062[] = _("GREEN SHARD");
+const u8 gText_FreshWaterAndPrice[] = _("FRESH WATER{CLEAR_TO 0x48}¥200");
+const u8 gText_SodaPopAndPrice[] = _("SODA POP{CLEAR_TO 0x48}¥300");
+const u8 gText_LemonadeAndPrice[] = _("LEMONADE{CLEAR_TO 0x48}¥350");
+const u8 gText_HowToRide[] = _("HOW TO RIDE");
+const u8 gText_HowToTurn[] = _("HOW TO TURN");
+const u8 gText_SandySlopes[] = _("SANDY SLOPES");
+const u8 gText_Wheelies[] = _("WHEELIES");
+const u8 gText_BunnyHops[] = _("BUNNY-HOPS");
+const u8 gText_Jump[] = _("JUMP");
+const u8 gText_Satisfied[] = _("Satisfied");
+const u8 gText_Dissatisfied[] = _("Dissatisfied");
+const u8 gText_DeepSeaTooth[] = _("DEEPSEATOOTH");
+const u8 gText_DeepSeaScale[] = _("DEEPSEASCALE");
+const u8 gText_BlueFlute2[] = _("BLUE FLUTE");
+const u8 gText_YellowFlute2[] = _("YELLOW FLUTE");
+const u8 gText_RedFlute2[] = _("RED FLUTE");
+const u8 gText_WhiteFlute2[] = _("WHITE FLUTE");
+const u8 gText_BlackFlute2[] = _("BLACK FLUTE");
+const u8 gText_GlassChair[] = _("GLASS CHAIR");
+const u8 gText_GlassDesk[] = _("GLASS DESK");
+const u8 gText_TreeckoDollAndPrice[] = _("TREECKO DOLL 1,000 COINS");
+const u8 gText_TorchicDollAndPrice[] = _("TORCHIC DOLL 1,000 COINS");
+const u8 gText_MudkipDollAndPrice[] = _("MUDKIP DOLL 1,000 COINS");
+const u8 gText_50CoinsAndPrice[] = _(" 50 COINS ¥1,000");
+const u8 gText_500CoinsAndPrice[] = _("500 COINS ¥10,000");
+const u8 gText_Excellent2[] = _("Excellent");
+const u8 gText_NotSoGood[] = _("Not so good");
+const u8 gText_RedShard[] = _("RED SHARD");
+const u8 gText_YellowShard[] = _("YELLOW SHARD");
+const u8 gText_BlueShard[] = _("BLUE SHARD");
+const u8 gText_GreenShard[] = _("GREEN SHARD");
const u8 gText_BattleFrontier[] = _("BATTLE FRONTIER");
-const u8 gUnknown_085EB07E[] = _("Right");
-const u8 gUnknown_085EB084[] = _("Left");
-const u8 gUnknown_085EB089[] = _("TM32{CLEAR_TO 0x48}1,500 COINS");
-const u8 gUnknown_085EB09C[] = _("TM29{CLEAR_TO 0x48}3,500 COINS");
-const u8 gUnknown_085EB0AF[] = _("TM35{CLEAR_TO 0x48}4,000 COINS");
-const u8 gUnknown_085EB0C2[] = _("TM24{CLEAR_TO 0x48}4,000 COINS");
-const u8 gUnknown_085EB0D5[] = _("TM13{CLEAR_TO 0x48}4,000 COINS");
+const u8 gText_Right[] = _("Right");
+const u8 gText_Left[] = _("Left");
+const u8 gText_TM32AndPrice[] = _("TM32{CLEAR_TO 0x48}1,500 COINS");
+const u8 gText_TM29AndPrice[] = _("TM29{CLEAR_TO 0x48}3,500 COINS");
+const u8 gText_TM35AndPrice[] = _("TM35{CLEAR_TO 0x48}4,000 COINS");
+const u8 gText_TM24AndPrice[] = _("TM24{CLEAR_TO 0x48}4,000 COINS");
+const u8 gText_TM13AndPrice[] = _("TM13{CLEAR_TO 0x48}4,000 COINS");
const u8 gText_Cool[] = _("COOL");
const u8 gText_Beauty[] = _("BEAUTY");
const u8 gText_Cute[] = _("CUTE");
@@ -728,82 +728,81 @@ const u8 gText_MenuOptionPokedex[] = _("POKéDEX");
const u8 gText_MenuOptionPokemon[] = _("POKéMON");
const u8 gText_MenuOptionBag[] = _("BAG");
const u8 gText_MenuOptionPokenav[] = _("POKéNAV");
-const u8 gUnknown_085EB278[] = _("");
+const u8 gText_Blank[] = _("");
const u8 gText_MenuOptionSave[] = _("SAVE");
const u8 gText_MenuOptionOption[] = _("OPTION");
const u8 gText_MenuOptionExit[] = _("EXIT");
-const u8 gUnknown_085EB28A[] = __(" ");
-const u8 gUnknown_085EB28C[] = _("5BP");
-const u8 gUnknown_085EB290[] = _("10BP");
-const u8 gUnknown_085EB295[] = _("15BP");
-const u8 gUnknown_085EB29A[] = _("RED TENT");
-const u8 gUnknown_085EB2A3[] = _("BLUE TENT");
+const u8 gText_5BP[] = _(" 5BP");
+const u8 gText_10BP[] = _("10BP");
+const u8 gText_15BP[] = _("15BP");
+const u8 gText_RedTent[] = _("RED TENT");
+const u8 gText_BlueTent[] = _("BLUE TENT");
const u8 gText_SouthernIsland[] = _("SOUTHERN ISLAND");
const u8 gText_BirthIsland[] = _("BIRTH ISLAND");
const u8 gText_FarawayIsland[] = _("FARAWAY ISLAND");
const u8 gText_NavelRock[] = _("NAVEL ROCK");
-const u8 gUnknown_085EB2E4[] = _("CLAW FOSSIL");
-const u8 gUnknown_085EB2F0[] = _("ROOT FOSSIL");
-const u8 gUnknown_085EB2FC[] = _("NO");
-const u8 gUnknown_085EB2FF[] = _("I'll battle now!");
-const u8 gUnknown_085EB310[] = _("I won!");
-const u8 gUnknown_085EB317[] = _("I lost!");
-const u8 gUnknown_085EB31F[] = _("I won't tell.");
+const u8 gText_ClawFossil[] = _("CLAW FOSSIL");
+const u8 gText_RootFossil[] = _("ROOT FOSSIL");
+const u8 gText_No4[] = _("NO");
+const u8 gText_IllBattleNow[] = _("I'll battle now!");
+const u8 gText_IWon[] = _("I won!");
+const u8 gText_ILost[] = _("I lost!");
+const u8 gText_IWontTell[] = _("I won't tell.");
const u8 gText_NormalTagMatch[] = _("NORMAL TAG MATCH");
const u8 gText_VarietyTagMatch[] = _("VARIETY TAG MATCH");
const u8 gText_UniqueTagMatch[] = _("UNIQUE TAG MATCH");
const u8 gText_ExpertTagMatch[] = _("EXPERT TAG MATCH");
-const u8 gUnknown_085EB372[] = _("TRADE CENTER");
-const u8 gUnknown_085EB37F[] = _("COLOSSEUM");
-const u8 gUnknown_085EB389[] = _("RECORD CORNER");
-const u8 gUnknown_085EB397[] = _("BERRY CRUSH");
+const u8 gText_TradeCenter[] = _("TRADE CENTER");
+const u8 gText_Colosseum[] = _("COLOSSEUM");
+const u8 gText_RecordCorner[] = _("RECORD CORNER");
+const u8 gText_BerryCrush3[] = _("BERRY CRUSH");
const u8 gUnknown_085EB3A3[] = _("");
-const u8 gUnknown_085EB3A4[] = _("POKéMON JUMP");
-const u8 gUnknown_085EB3B1[] = _("DODRIO BERRY-PICKING");
-const u8 gUnknown_085EB3C6[] = _("BECOME LEADER");
-const u8 gUnknown_085EB3D4[] = _("JOIN GROUP");
-const u8 gUnknown_085EB3DF[] = _("TWO STYLES");
-const u8 gUnknown_085EB3EA[] = _("LV. 50");
-const u8 gUnknown_085EB3F1[] = _("OPEN LEVEL");
-const u8 gUnknown_085EB3FC[] = _("{PKMN} TYPE & NO.");
-const u8 gUnknown_085EB40A[] = _("HOLD ITEMS");
-const u8 gUnknown_085EB415[] = _("SYMBOLS");
-const u8 gUnknown_085EB41D[] = _("RECORD");
-const u8 gUnknown_085EB424[] = _("BATTLE PTS");
-const u8 gUnknown_085EB42F[] = _("TOWER INFO");
-const u8 gUnknown_085EB43A[] = _("BATTLE {PKMN}");
-const u8 gUnknown_085EB444[] = _("BATTLE SALON");
-const u8 gUnknown_085EB451[] = _("MULTI-LINK");
-const u8 gUnknown_085EB45C[] = _("BATTLE RULES");
-const u8 gUnknown_085EB469[] = _("JUDGE: MIND");
-const u8 gUnknown_085EB475[] = _("JUDGE: SKILL");
-const u8 gUnknown_085EB482[] = _("JUDGE: BODY");
-const u8 gUnknown_085EB48E[] = _("MATCHUP");
-const u8 gUnknown_085EB496[] = _("TOURNEY TREE");
-const u8 gUnknown_085EB4A3[] = _("DOUBLE KO");
-const u8 gUnknown_085EB4AD[] = _("BASIC RULES");
-const u8 gUnknown_085EB4B9[] = _("SWAP: PARTNER");
-const u8 gUnknown_085EB4C7[] = _("SWAP: NUMBER");
-const u8 gUnknown_085EB4D4[] = _("SWAP: NOTES");
-const u8 gUnknown_085EB4E0[] = _("OPEN LEVEL");
+const u8 gText_PokemonJump[] = _("POKéMON JUMP");
+const u8 gText_DodrioBerryPicking[] = _("DODRIO BERRY-PICKING");
+const u8 gText_BecomeLeader[] = _("BECOME LEADER");
+const u8 gText_JoinGroup[] = _("JOIN GROUP");
+const u8 gText_TwoStyles[] = _("TWO STYLES");
+const u8 gText_Lv50_3[] = _("LV. 50");
+const u8 gText_OpenLevel2[] = _("OPEN LEVEL");
+const u8 gText_MonTypeAndNo[] = _("{PKMN} TYPE & NO.");
+const u8 gText_HoldItems[] = _("HOLD ITEMS");
+const u8 gText_Symbols2[] = _("SYMBOLS");
+const u8 gText_Record3[] = _("RECORD");
+const u8 gText_BattlePts[] = _("BATTLE PTS");
+const u8 gText_TowerInfo[] = _("TOWER INFO");
+const u8 gText_BattleMon[] = _("BATTLE {PKMN}");
+const u8 gText_BattleSalon[] = _("BATTLE SALON");
+const u8 gText_MultiLink2[] = _("MULTI-LINK");
+const u8 gText_BattleRules[] = _("BATTLE RULES");
+const u8 gText_JudgeMind[] = _("JUDGE: MIND");
+const u8 gText_JudgeSkill[] = _("JUDGE: SKILL");
+const u8 gText_JudgeBody[] = _("JUDGE: BODY");
+const u8 gText_Matchup[] = _("MATCHUP");
+const u8 gText_TourneyTree[] = _("TOURNEY TREE");
+const u8 gText_DoubleKO[] = _("DOUBLE KO");
+const u8 gText_BasicRules[] = _("BASIC RULES");
+const u8 gText_SwapPartners[] = _("SWAP: PARTNER");
+const u8 gText_SwapNumber[] = _("SWAP: NUMBER");
+const u8 gText_SwapNotes[] = _("SWAP: NOTES");
+const u8 gText_OpenLevel3[] = _("OPEN LEVEL");
const u8 gText_BattleBasics[] = _("BATTLE BASICS");
const u8 gText_PokemonNature[] = _("POKéMON NATURE");
const u8 gText_PokemonMoves[] = _("POKéMON MOVES");
const u8 gText_Underpowered[] = _("UNDERPOWERED");
const u8 gText_WhenInDanger[] = _("WHEN IN DANGER");
-const u8 gUnknown_085EB532[] = _("PYRAMID: POKéMON");
-const u8 gUnknown_085EB543[] = _("PYRAMID: TRAINERS");
-const u8 gUnknown_085EB555[] = _("PYRAMID: MAZE");
-const u8 gUnknown_085EB563[] = _("BATTLE BAG");
-const u8 gUnknown_085EB56E[] = _("POKéNAV AND BAG");
-const u8 gUnknown_085EB57E[] = _("HELD ITEMS");
-const u8 gUnknown_085EB589[] = _("POKéMON ORDER");
-const u8 gUnknown_085EB597[] = _("BATTLE POKéMON");
+const u8 gText_PyramidPokemon[] = _("PYRAMID: POKéMON");
+const u8 gText_PyramidTrainers[] = _("PYRAMID: TRAINERS");
+const u8 gText_PyramidMaze[] = _("PYRAMID: MAZE");
+const u8 gText_BattleBag2[] = _("BATTLE BAG");
+const u8 gText_PokenavAndBag[] = _("POKéNAV AND BAG");
+const u8 gText_HeldItems[] = _("HELD ITEMS");
+const u8 gText_PokemonOrder[] = _("POKéMON ORDER");
+const u8 gText_BattlePokemon[] = _("BATTLE POKéMON");
const u8 gText_BattleTrainers[] = _("BATTLE TRAINERS");
-const u8 gUnknown_085EB5B6[] = _("GO ON");
-const u8 gUnknown_085EB5BC[] = _("RECORD");
-const u8 gUnknown_085EB5C3[] = _("REST");
-const u8 gUnknown_085EB5C8[] = _("RETIRE");
+const u8 gText_GoOn[] = _("GO ON");
+const u8 gText_Record2[] = _("RECORD");
+const u8 gText_Rest[] = _("REST");
+const u8 gText_Retire[] = _("RETIRE");
const u8 gText_99TimesPlus[] = _("99 times +");
const u8 gText_1MinutePlus[] = _("1 minute +");
const u8 gText_SpaceSeconds[] = _(" seconds");
@@ -1292,7 +1291,7 @@ const u8 gMatchCall_MayTrainersPokemonText[] = _("I'll use any POKéMON!");
const u8 gMatchCall_MaySelfIntroductionText_Line1[] = _("My POKéMON and I help");
const u8 gMatchCall_MaySelfIntroductionText_Line2[] = _("my father's research.");
const u8 gText_HatchedFromEgg[] = _("{STR_VAR_1} hatched from the EGG!");
-const u8 gText_NickHatchPrompt[] = _("Would you like to nickname the newly\nhatched {STR_VAR_1}?");
+const u8 gText_NicknameHatchPrompt[] = _("Would you like to nickname the newly\nhatched {STR_VAR_1}?");
ALIGNED(4) const u8 gText_ReadyToBerryCrush[] = _("Are you ready to BERRY-CRUSH?\nPlease pick a BERRY for use.\p");
ALIGNED(4) const u8 gText_WaitForAllChooseBerry[] = _("Please wait while each member\nchooses a BERRY.");
ALIGNED(4) const u8 gText_EndedWithXUnitsPowder[] = _("{PAUSE_MUSIC}{PLAY_BGM MUS_FANFA1}You ended up with {STR_VAR_1} units of\nsilky-smooth BERRY POWDER.{RESUME_MUSIC}\pYour total amount of BERRY POWDER\nis {STR_VAR_2}.\p");
@@ -1419,8 +1418,8 @@ const u8 gUnknown_085EE0FA[] = _("つうしん しゅうりょう!");
const u8 gUnknown_085EE107[] = _("あらたな トレーナーが\nホウエンに やってきた!");
const u8 gUnknown_085EE120[] = _("しばらく おまちください");
const u8 gUnknown_085EE12D[] = _("かきこみ エラー です\nデータが ほぞん できませんでした");
-const u8 gUnknown_085EE14B[] = _("RED");
-const u8 gUnknown_085EE14F[] = _("BLUE");
+const u8 gText_Red[] = _("RED");
+const u8 gText_Blue[] = _("BLUE");
const u8 gUnknown_085EE154[] = _("---");
const u8 gText_SingleBattleRoomResults[] = _("{PLAYER}'s Single Battle Room Results");
const u8 gText_DoubleBattleRoomResults[] = _("{PLAYER}'s Double Battle Room Results");
@@ -1591,23 +1590,23 @@ const u8 gText_PkmnsNickname[] = _("{STR_VAR_1}'s nickname?");
const u8 gText_TellHimTheWords[] = _("Tell him the words.");
const u8 gText_MoveOkBack[] = _("{DPAD_NONE}MOVE {A_BUTTON}OK {B_BUTTON}BACK");
const u8 gText_CallCantBeMadeHere[] = _("A call can't be made from here.");
-const u8 gUnknown_085EEB2B[] = _("HANDSOME");
-const u8 gUnknown_085EEB34[] = _("VINNY");
-const u8 gUnknown_085EEB3A[] = _("MOREME");
-const u8 gUnknown_085EEB41[] = _("IRONHARD");
-const u8 gUnknown_085EEB4A[] = _("MUSCLE");
-const u8 gUnknown_085EEB51[] = _("coolness");
-const u8 gUnknown_085EEB5A[] = _("beauty");
-const u8 gUnknown_085EEB61[] = _("cuteness");
-const u8 gUnknown_085EEB6A[] = _("smartness");
-const u8 gUnknown_085EEB74[] = _("toughness");
-const u8 gText_Lady2[] = _("Lady");
-const u8 gUnknown_085EEB83[] = _("slippery");
-const u8 gUnknown_085EEB8C[] = _("roundish");
-const u8 gUnknown_085EEB95[] = _("wham-ish");
-const u8 gUnknown_085EEB9E[] = _("shiny");
-const u8 gUnknown_085EEBA4[] = _("sticky");
-const u8 gUnknown_085EEBAB[] = _("pointy");
+const u8 gText_ContestLady_Handsome[] = _("HANDSOME");
+const u8 gText_ContestLady_Vinny[] = _("VINNY");
+const u8 gText_ContestLady_Moreme[] = _("MOREME");
+const u8 gText_ContestLady_Ironhard[] = _("IRONHARD");
+const u8 gText_ContestLady_Muscle[] = _("MUSCLE");
+const u8 gText_ContestLady_Coolness[] = _("coolness");
+const u8 gText_ContestLady_Beauty[] = _("beauty");
+const u8 gText_ContestLady_Cuteness[] = _("cuteness");
+const u8 gText_ContestLady_Smartness[] = _("smartness");
+const u8 gText_ContestLady_Toughness[] = _("toughness");
+const u8 gText_QuizLady_Lady[] = _("Lady");
+const u8 gText_FavorLady_Slippery[] = _("slippery");
+const u8 gText_FavorLady_Roundish[] = _("roundish");
+const u8 gText_FavorLady_Whamish[] = _("wham-ish");
+const u8 gText_FavorLady_Shiny[] = _("shiny");
+const u8 gText_FavorLady_Sticky[] = _("sticky");
+const u8 gText_FavorLady_Pointy[] = _("pointy");
const u8 gText_RentalPkmn2[] = _("RENTAL POKéMON");
const u8 gText_SelectFirstPkmn[] = _("Select the first POKéMON.");
const u8 gText_SelectSecondPkmn[] = _("Select the second POKéMON.");
diff --git a/src/trade.c b/src/trade.c
index 94accc43c..c29fe54c3 100644
--- a/src/trade.c
+++ b/src/trade.c
@@ -1551,7 +1551,7 @@ static void sub_80773D0(void)
for (i = 0; i < PARTY_SIZE; i++)
{
- CreateMon(&gEnemyParty[i], SPECIES_NONE, 0, 0x20, FALSE, 0, 0, 0);
+ CreateMon(&gEnemyParty[i], SPECIES_NONE, 0, 0x20, FALSE, 0, OT_ID_PLAYER_ID, 0);
}
sub_807A19C(0);
@@ -3032,7 +3032,7 @@ static u8 sub_8079A3C(u8 *str, u8 whichParty, u8 monIdx)
static void sub_8079AA4(u8 *a0, u8 a1, u8 a2)
{
- u16 arr[4];
+ u16 moves[MAX_MON_MOVES];
u16 i;
if (!gUnknown_0203229C->unk_51[a1][a2])
@@ -3041,11 +3041,11 @@ static void sub_8079AA4(u8 *a0, u8 a1, u8 a2)
{
if (!a1)
{
- arr[i] = GetMonData(&gPlayerParty[a2], i + MON_DATA_MOVE1, NULL);
+ moves[i] = GetMonData(&gPlayerParty[a2], i + MON_DATA_MOVE1, NULL);
}
else
{
- arr[i] = GetMonData(&gEnemyParty[a2], i + MON_DATA_MOVE1, NULL);
+ moves[i] = GetMonData(&gEnemyParty[a2], i + MON_DATA_MOVE1, NULL);
}
}
@@ -3053,9 +3053,9 @@ static void sub_8079AA4(u8 *a0, u8 a1, u8 a2)
for (i = 0; i < MAX_MON_MOVES; i++)
{
- if (arr[i] != MOVE_NONE)
+ if (moves[i] != MOVE_NONE)
{
- StringAppend(a0, gMoveNames[arr[i]]);
+ StringAppend(a0, gMoveNames[moves[i]]);
}
StringAppend(a0, gText_NewLine3);
@@ -5832,7 +5832,7 @@ static void _CreateInGameTradePokemon(u8 whichPlayerMon, u8 whichInGameTrade)
u8 isMail;
struct Pokemon *pokemon = &gEnemyParty[0];
- CreateMon(pokemon, inGameTrade->species, level, 32, TRUE, inGameTrade->personality, TRUE, inGameTrade->otId);
+ CreateMon(pokemon, inGameTrade->species, level, 32, TRUE, inGameTrade->personality, OT_ID_PRESET, inGameTrade->otId);
SetMonData(pokemon, MON_DATA_HP_IV, &inGameTrade->ivs[0]);
SetMonData(pokemon, MON_DATA_ATK_IV, &inGameTrade->ivs[1]);
diff --git a/src/trader.c b/src/trader.c
index dcf1fa076..a3794a539 100644
--- a/src/trader.c
+++ b/src/trader.c
@@ -71,7 +71,7 @@ void CreateAvailableDecorationsMenu(u8 taskId)
if (curWidth > windowWidth)
windowWidth = curWidth;
}
- windowTemplate.width = convert_pixel_width_to_tile_width(windowWidth);
+ windowTemplate.width = ConvertPixelWidthToTileWidth(windowWidth);
data[3] = AddWindow(&windowTemplate);
DrawStdFrameWithCustomTileAndPalette(data[3], FALSE, 0x214, 14);
for (i = 0; i < 4; i++)
diff --git a/src/trainer_hill.c b/src/trainer_hill.c
index 77c8fcb53..2a7e003d9 100644
--- a/src/trainer_hill.c
+++ b/src/trainer_hill.c
@@ -38,58 +38,16 @@
#define HILL_TAG_UNIQUE 2
#define HILL_TAG_EXPERT 3
-#define HILL_TRAINER_NAME_LENGTH 11
#define HILL_MAX_TIME 215999 // 60 * 60 * 60 - 1
-struct TrHillRoomTrainers
-{
- u8 name[2][HILL_TRAINER_NAME_LENGTH];
- u8 facilityClass[2];
-};
-
-struct TrainerHillTrainer
-{
- u8 name[HILL_TRAINER_NAME_LENGTH];
- u8 facilityClass;
- u32 unused;
- u16 speechBefore[6];
- u16 speechWin[6];
- u16 speechLose[6];
- u16 speechAfter[6];
- struct BattleTowerPokemon mons[PARTY_SIZE];
-};
-
-struct TrHillFloor
-{
- u8 unk0;
- u8 unk1;
- struct TrainerHillTrainer trainers[2];
- u8 data[0x100];
- u16 unk3A0[16];
- u8 coords[2]; // x first 4 bits, y last 4 bits
- u8 direction; // array of 4 bits for each trainer
- u8 range; // array of 4 bits for each trainer
-};
-
-struct TrHillTag
-{
- u8 unkField_0;
- u8 unused1;
- u8 unkField_2;
- u8 unused3;
- u8 unused4;
- u8 unused5;
- u8 unused6;
- struct TrHillFloor floors[4];
-};
-
+// EWRAM
struct TrHillStruct2
{
u8 floorId;
struct TrHillTag tag;
+ struct TrHillFloor floors[4];
};
-// EWRAM
static EWRAM_DATA struct TrHillStruct2 *sHillData = NULL;
static EWRAM_DATA struct TrHillRoomTrainers *sRoomTrainers = NULL;
EWRAM_DATA u32 *gTrainerHillVBlankCounter = NULL;
@@ -350,7 +308,7 @@ u8 GetTrainerHillTrainerFrontSpriteId(u16 trainerId)
SetUpDataStruct();
id = trainerId - 1;
- facilityClass = sHillData->tag.floors[sHillData->floorId].trainers[id].facilityClass;
+ facilityClass = sHillData->floors[sHillData->floorId].trainers[id].facilityClass;
FreeDataStruct();
return gFacilityClassToPicIndex[facilityClass];
@@ -367,9 +325,9 @@ void InitTrainerHillBattleStruct(void)
{
for (j = 0; j < HILL_TRAINER_NAME_LENGTH; j++)
{
- sRoomTrainers->name[i][j] = sHillData->tag.floors[sHillData->floorId].trainers[i].name[j];
+ sRoomTrainers->name[i][j] = sHillData->floors[sHillData->floorId].trainers[i].name[j];
}
- sRoomTrainers->facilityClass[i] = sHillData->tag.floors[sHillData->floorId].trainers[i].facilityClass;
+ sRoomTrainers->facilityClass[i] = sHillData->floors[sHillData->floorId].trainers[i].facilityClass;
}
SetTrainerHillVBlankCounter(&gSaveBlock1Ptr->trainerHill.timer);
FreeDataStruct();
@@ -387,7 +345,7 @@ static void SetUpDataStruct(void)
{
sHillData = AllocZeroed(sizeof(*sHillData));
sHillData->floorId = gMapHeader.mapLayoutId - LAYOUT_TRAINER_HILL_1F;
- CpuCopy32(sDataPerTag[gSaveBlock1Ptr->trainerHill.tag], &sHillData->tag, sizeof(sHillData->tag));
+ CpuCopy32(sDataPerTag[gSaveBlock1Ptr->trainerHill.tag], &sHillData->tag, sizeof(sHillData->tag) + 4 * sizeof(struct TrHillFloor));
nullsub_2();
}
}
@@ -409,16 +367,16 @@ void CopyTrainerHillTrainerText(u8 which, u16 trainerId)
switch (which)
{
case 2:
- FrontierSpeechToString(sHillData->tag.floors[floorId].trainers[id].speechBefore);
+ FrontierSpeechToString(sHillData->floors[floorId].trainers[id].speechBefore);
break;
case 3:
- FrontierSpeechToString(sHillData->tag.floors[floorId].trainers[id].speechWin);
+ FrontierSpeechToString(sHillData->floors[floorId].trainers[id].speechWin);
break;
case 4:
- FrontierSpeechToString(sHillData->tag.floors[floorId].trainers[id].speechLose);
+ FrontierSpeechToString(sHillData->floors[floorId].trainers[id].speechLose);
break;
case 5:
- FrontierSpeechToString(sHillData->tag.floors[floorId].trainers[id].speechAfter);
+ FrontierSpeechToString(sHillData->floors[floorId].trainers[id].speechAfter);
break;
}
@@ -460,7 +418,7 @@ static void sub_81D5924(void)
{
u16 itemId = sub_81D6640();
- if (sHillData->tag.unkField_2 != 4 || gSaveBlock1Ptr->trainerHill.field_3D6E_0a)
+ if (sHillData->tag.numFloors != 4 || gSaveBlock1Ptr->trainerHill.field_3D6E_0a)
{
gSpecialVar_Result = 2;
}
@@ -556,9 +514,9 @@ static void sub_81D5B2C(void)
static void sub_81D5BBC(void)
{
SetUpDataStruct();
- if (sHillData->tag.unkField_2 != 4)
+ if (sHillData->tag.numFloors != 4)
{
- ConvertIntToDecimalStringN(gStringVar1, sHillData->tag.unkField_2, STR_CONV_MODE_LEFT_ALIGN, 1);
+ ConvertIntToDecimalStringN(gStringVar1, sHillData->tag.numFloors, STR_CONV_MODE_LEFT_ALIGN, 1);
gSpecialVar_Result = 0;
}
else
@@ -673,12 +631,12 @@ void sub_81D5DF8(void)
eventTemplates[i] = gUnknown_0862A670;
eventTemplates[i].localId = i + 1;
- eventTemplates[i].graphicsId = FacilityClassToGraphicsId(sHillData->tag.floors[floorId].trainers[i].facilityClass);
- eventTemplates[i].x = sHillData->tag.floors[floorId].coords[i] & 0xF;
- eventTemplates[i].y = ((sHillData->tag.floors[floorId].coords[i] >> 4) & 0xF) + 5;
+ eventTemplates[i].graphicsId = FacilityClassToGraphicsId(sHillData->floors[floorId].trainers[i].facilityClass);
+ eventTemplates[i].x = sHillData->floors[floorId].display.coords[i] & 0xF;
+ eventTemplates[i].y = ((sHillData->floors[floorId].display.coords[i] >> 4) & 0xF) + 5;
bits = i << 2;
- eventTemplates[i].movementType = ((sHillData->tag.floors[floorId].direction >> bits) & 0xF) + MOVEMENT_TYPE_FACE_UP;
- eventTemplates[i].trainerRange_berryTreeId = (sHillData->tag.floors[floorId].range >> bits) & 0xF;
+ eventTemplates[i].movementType = ((sHillData->floors[floorId].display.direction >> bits) & 0xF) + MOVEMENT_TYPE_FACE_UP;
+ eventTemplates[i].trainerRange_berryTreeId = (sHillData->floors[floorId].display.range >> bits) & 0xF;
eventTemplates[i].script = EventScript_2C83F0;
gSaveBlock2Ptr->frontier.trainerIds[i] = i + 1;
}
@@ -699,8 +657,8 @@ static u32 sub_81D5F58(u8 floorId, u32 bit, u32 arg2, u32 arg3)
{
u32 var0, var1, var2, var3;
- var0 = (sHillData->tag.floors[floorId].unk3A0[arg2] >> (15 - bit)) & 1;
- var1 = sHillData->tag.floors[floorId].data[arg2 * arg3 + bit];
+ var0 = (sHillData->floors[floorId].unk3A0[arg2] >> (15 - bit)) & 1;
+ var1 = sHillData->floors[floorId].data[arg2 * arg3 + bit];
var3 = 0x200;
var2 = 0x3000;
@@ -943,7 +901,7 @@ static void sub_81D62CC(u16 trainerId, u8 firstMonId)
u8 id = gUnknown_0862A698[trId][arrId];
struct Pokemon *mon = &gEnemyParty[i];
- CreateBattleTowerMon(mon, &sHillData->tag.floors[floorId].trainers[trId].mons[id]);
+ CreateBattleTowerMon(mon, &sHillData->floors[floorId].trainers[trId].mons[id]);
sub_81D642C(mon, level);
}
@@ -978,7 +936,7 @@ u8 GetTrainerEncounterMusicIdInTrainerHill(u16 trainerId)
SetUpDataStruct();
trId = trainerId - 1;
- facilityClass = sHillData->tag.floors[sHillData->floorId].trainers[trId].facilityClass;
+ facilityClass = sHillData->floors[sHillData->floorId].trainers[trId].facilityClass;
FreeDataStruct();
for (i = 0; i < ARRAY_COUNT(gUnknown_0862A3B4); i++)
@@ -1005,7 +963,7 @@ u8 sub_81D6490(void)
u8 ret;
SetUpDataStruct();
- ret = sHillData->tag.unkField_2;
+ ret = sHillData->tag.numFloors;
FreeDataStruct();
return ret;
@@ -1070,8 +1028,8 @@ static u8 sub_81D65E8(u8 arg0)
var = 0;
for (i = 0; i < 4; i++)
{
- var ^= sHillData->tag.floors[i].unk0 & 0x1F;
- var ^= sHillData->tag.floors[i].unk1 & 0x1F;
+ var ^= sHillData->floors[i].unk0 & 0x1F;
+ var ^= sHillData->floors[i].unk1 & 0x1F;
}
if (arg0)
@@ -1091,8 +1049,8 @@ static u16 sub_81D6640(void)
for (i = 0; i < 4; i++)
{
- var += sHillData->tag.floors[i].unk0;
- var += sHillData->tag.floors[i].unk1;
+ var += sHillData->floors[i].unk0;
+ var += sHillData->floors[i].unk1;
}
var2 = var / 256;
diff --git a/src/tv.c b/src/tv.c
index b4c8463fd..62d261a63 100644
--- a/src/tv.c
+++ b/src/tv.c
@@ -38,8 +38,10 @@
#include "secret_base.h"
#include "tv.h"
#include "data.h"
+#include "constants/contest.h"
#include "constants/layouts.h"
#include "constants/metatile_behaviors.h"
+#include "constants/script_menu.h"
// Static type declarations
@@ -182,7 +184,7 @@ static void DoTVShowPokemonContestLiveUpdates2(void);
static const struct {
u16 species;
- u16 moves[4];
+ u16 moves[MAX_MON_MOVES];
u8 level;
u8 location;
} sPokeOutbreakSpeciesList[] = {
@@ -1657,12 +1659,12 @@ void PutLilycoveContestLadyShowOnTheAir(void)
if (gSpecialVar_Result != TRUE)
{
show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
- sub_818E848(&show->contestLiveUpdates2.language);
+ BufferContestLadyLanguage(&show->contestLiveUpdates2.language);
show->contestLiveUpdates2.pokemonNameLanguage = LANGUAGE_ENGLISH;
show->contestLiveUpdates2.kind = TVSHOW_CONTEST_LIVE_UPDATES_2;
show->contestLiveUpdates2.active = TRUE;
- sub_818E81C(show->contestLiveUpdates2.playerName);
- sub_818E7E0(&show->contestLiveUpdates2.contestCategory, show->contestLiveUpdates2.nickname);
+ BufferContestLadyPlayerName(show->contestLiveUpdates2.playerName);
+ BufferContestLadyMonName(&show->contestLiveUpdates2.contestCategory, show->contestLiveUpdates2.nickname);
show->contestLiveUpdates2.pokeblockState = sub_818E880();
tv_store_id_2x(show);
}
@@ -2329,7 +2331,7 @@ void sub_80EE35C(u16 foeSpecies, u16 species, u8 moveIdx, const u16 *movePtr, u1
show->battleSeminar.foeSpecies = foeSpecies;
show->battleSeminar.species = species;
show->battleSeminar.move = movePtr[moveIdx];
- for (i = 0, j = 0; i < 4; i ++)
+ for (i = 0, j = 0; i < MAX_MON_MOVES; i ++)
{
if (i != moveIdx && movePtr[i])
{
@@ -2786,11 +2788,11 @@ bool8 GetPriceReduction(u8 newsKind)
{
u8 i;
- if (newsKind == 0)
+ if (newsKind == POKENEWS_NONE)
{
return FALSE;
}
- for (i = 0; i < 16; i ++)
+ for (i = 0; i < POKE_NEWS_COUNT; i ++)
{
if (gSaveBlock1Ptr->pokeNews[i].kind == newsKind)
{
@@ -2870,17 +2872,17 @@ void CopyContestRankToStringVar(u8 varIdx, u8 rank)
{
switch (rank)
{
- case 0: // NORMAL
- StringCopy(gTVStringVarPtrs[varIdx], gUnknown_0858BAF0[5]);
+ case CONTEST_RANK_NORMAL:
+ StringCopy(gTVStringVarPtrs[varIdx], gStdStrings[STDSTRING_NORMAL]);
break;
- case 1: // SUPER
- StringCopy(gTVStringVarPtrs[varIdx], gUnknown_0858BAF0[6]);
+ case CONTEST_RANK_SUPER:
+ StringCopy(gTVStringVarPtrs[varIdx], gStdStrings[STDSTRING_SUPER]);
break;
- case 2: // HYPER
- StringCopy(gTVStringVarPtrs[varIdx], gUnknown_0858BAF0[7]);
+ case CONTEST_RANK_HYPER:
+ StringCopy(gTVStringVarPtrs[varIdx], gStdStrings[STDSTRING_HYPER]);
break;
- case 3: // MASTER
- StringCopy(gTVStringVarPtrs[varIdx], gUnknown_0858BAF0[8]);
+ case CONTEST_RANK_MASTER:
+ StringCopy(gTVStringVarPtrs[varIdx], gStdStrings[STDSTRING_MASTER]);
break;
}
}
@@ -2889,20 +2891,20 @@ void CopyContestCategoryToStringVar(u8 varIdx, u8 category)
{
switch (category)
{
- case 0: // COOL
- StringCopy(gTVStringVarPtrs[varIdx], gUnknown_0858BAF0[0]);
+ case CONTEST_CATEGORY_COOL:
+ StringCopy(gTVStringVarPtrs[varIdx], gStdStrings[STDSTRING_COOL]);
break;
- case 1: // BEAUTY
- StringCopy(gTVStringVarPtrs[varIdx], gUnknown_0858BAF0[1]);
+ case CONTEST_CATEGORY_BEAUTY:
+ StringCopy(gTVStringVarPtrs[varIdx], gStdStrings[STDSTRING_BEAUTY]);
break;
- case 2: // CUTE
- StringCopy(gTVStringVarPtrs[varIdx], gUnknown_0858BAF0[2]);
+ case CONTEST_CATEGORY_CUTE:
+ StringCopy(gTVStringVarPtrs[varIdx], gStdStrings[STDSTRING_CUTE]);
break;
- case 3: // SMART
- StringCopy(gTVStringVarPtrs[varIdx], gUnknown_0858BAF0[3]);
+ case CONTEST_CATEGORY_SMART:
+ StringCopy(gTVStringVarPtrs[varIdx], gStdStrings[STDSTRING_SMART]);
break;
- case 4: // TOUGH
- StringCopy(gTVStringVarPtrs[varIdx], gUnknown_0858BAF0[4]);
+ case CONTEST_CATEGORY_TOUGH:
+ StringCopy(gTVStringVarPtrs[varIdx], gStdStrings[STDSTRING_TOUGH]);
break;
}
}
@@ -5600,7 +5602,7 @@ static void DoTVShowPokemonContestLiveUpdates(void)
switch (state)
{
case 0:
- sub_818E868(gStringVar1, show->contestLiveUpdates.category);
+ BufferContestName(gStringVar1, show->contestLiveUpdates.category);
StringCopy(gStringVar2, gSpeciesNames[show->contestLiveUpdates.species]);
TVShowConvertInternationalString(gStringVar3, show->contestLiveUpdates.playerName, show->contestLiveUpdates.language);
if (show->contestLiveUpdates.round1Rank == show->contestLiveUpdates.round2Rank)
@@ -7720,7 +7722,7 @@ static void DoTVShowPokemonContestLiveUpdates2(void)
switch (state)
{
case 0:
- sub_818E868(gStringVar1, show->contestLiveUpdates2.contestCategory);
+ BufferContestName(gStringVar1, show->contestLiveUpdates2.contestCategory);
if (show->contestLiveUpdates2.pokeblockState == 1)
{
sTVShowState = 1;
diff --git a/src/wild_encounter.c b/src/wild_encounter.c
index 84275526e..332bbfb99 100644
--- a/src/wild_encounter.c
+++ b/src/wild_encounter.c
@@ -143,47 +143,47 @@ static void FeebasSeedRng(u16 seed)
static u8 ChooseWildMonIndex_Land(void)
{
- u8 rand = Random() % 100;
+ u8 rand = Random() % ENCOUNTER_CHANCE_LAND_MONS_TOTAL;
- if (rand < 20) // 20% chance
+ if (rand < ENCOUNTER_CHANCE_LAND_MONS_SLOT_0)
return 0;
- else if (rand >= 20 && rand < 40) // 20% chance
+ else if (rand >= ENCOUNTER_CHANCE_LAND_MONS_SLOT_0 && rand < ENCOUNTER_CHANCE_LAND_MONS_SLOT_1)
return 1;
- else if (rand >= 40 && rand < 50) // 10% chance
+ else if (rand >= ENCOUNTER_CHANCE_LAND_MONS_SLOT_1 && rand < ENCOUNTER_CHANCE_LAND_MONS_SLOT_2)
return 2;
- else if (rand >= 50 && rand < 60) // 10% chance
+ else if (rand >= ENCOUNTER_CHANCE_LAND_MONS_SLOT_2 && rand < ENCOUNTER_CHANCE_LAND_MONS_SLOT_3)
return 3;
- else if (rand >= 60 && rand < 70) // 10% chance
+ else if (rand >= ENCOUNTER_CHANCE_LAND_MONS_SLOT_3 && rand < ENCOUNTER_CHANCE_LAND_MONS_SLOT_4)
return 4;
- else if (rand >= 70 && rand < 80) // 10% chance
+ else if (rand >= ENCOUNTER_CHANCE_LAND_MONS_SLOT_4 && rand < ENCOUNTER_CHANCE_LAND_MONS_SLOT_5)
return 5;
- else if (rand >= 80 && rand < 85) // 5% chance
+ else if (rand >= ENCOUNTER_CHANCE_LAND_MONS_SLOT_5 && rand < ENCOUNTER_CHANCE_LAND_MONS_SLOT_6)
return 6;
- else if (rand >= 85 && rand < 90) // 5% chance
+ else if (rand >= ENCOUNTER_CHANCE_LAND_MONS_SLOT_6 && rand < ENCOUNTER_CHANCE_LAND_MONS_SLOT_7)
return 7;
- else if (rand >= 90 && rand < 94) // 4% chance
+ else if (rand >= ENCOUNTER_CHANCE_LAND_MONS_SLOT_7 && rand < ENCOUNTER_CHANCE_LAND_MONS_SLOT_8)
return 8;
- else if (rand >= 94 && rand < 98) // 4% chance
+ else if (rand >= ENCOUNTER_CHANCE_LAND_MONS_SLOT_8 && rand < ENCOUNTER_CHANCE_LAND_MONS_SLOT_9)
return 9;
- else if (rand == 98) // 1% chance
+ else if (rand == ENCOUNTER_CHANCE_LAND_MONS_SLOT_9)
return 10;
- else // 1% chance
+ else
return 11;
}
static u8 ChooseWildMonIndex_WaterRock(void)
{
- u8 rand = Random() % 100;
+ u8 rand = Random() % ENCOUNTER_CHANCE_WATER_MONS_TOTAL;
- if (rand < 60) // 60% chance
+ if (rand < ENCOUNTER_CHANCE_WATER_MONS_SLOT_0)
return 0;
- else if (rand >= 60 && rand < 90) // 30% chance
+ else if (rand >= ENCOUNTER_CHANCE_WATER_MONS_SLOT_0 && rand < ENCOUNTER_CHANCE_WATER_MONS_SLOT_1)
return 1;
- else if (rand >= 90 && rand < 95) // 5% chance
+ else if (rand >= ENCOUNTER_CHANCE_WATER_MONS_SLOT_1 && rand < ENCOUNTER_CHANCE_WATER_MONS_SLOT_2)
return 2;
- else if (rand >= 95 && rand < 99) // 4% chance
+ else if (rand >= ENCOUNTER_CHANCE_WATER_MONS_SLOT_2 && rand < ENCOUNTER_CHANCE_WATER_MONS_SLOT_3)
return 3;
- else // 1% chance
+ else
return 4;
}
@@ -197,34 +197,34 @@ enum
static u8 ChooseWildMonIndex_Fishing(u8 rod)
{
u8 wildMonIndex = 0;
- u8 rand = Random() % 100;
+ u8 rand = Random() % ENCOUNTER_CHANCE_FISHING_MONS_TOTAL;
switch (rod)
{
case OLD_ROD:
- if (rand < 70) // 70% chance
+ if (rand < ENCOUNTER_CHANCE_FISHING_MONS_SLOT_0)
wildMonIndex = 0;
- else // 30% chance
+ else
wildMonIndex = 1;
break;
case GOOD_ROD:
- if (rand < 60) // 60% chance
+ if (rand < ENCOUNTER_CHANCE_FISHING_MONS_SLOT_2)
wildMonIndex = 2;
- if (rand >= 60 && rand < 80) // 20% chance
+ if (rand >= ENCOUNTER_CHANCE_FISHING_MONS_SLOT_2 && rand < ENCOUNTER_CHANCE_FISHING_MONS_SLOT_3)
wildMonIndex = 3;
- if (rand >= 80 && rand < 100) // 20% chance
+ if (rand >= ENCOUNTER_CHANCE_FISHING_MONS_SLOT_3 && rand < ENCOUNTER_CHANCE_FISHING_MONS_SLOT_4)
wildMonIndex = 4;
break;
case SUPER_ROD:
- if (rand < 40) // 40% chance
+ if (rand < ENCOUNTER_CHANCE_FISHING_MONS_SLOT_5)
wildMonIndex = 5;
- if (rand >= 40 && rand < 80) // 40% chance
+ if (rand >= ENCOUNTER_CHANCE_FISHING_MONS_SLOT_5 && rand < ENCOUNTER_CHANCE_FISHING_MONS_SLOT_6)
wildMonIndex = 6;
- if (rand >= 80 && rand < 95) // 15% chance
+ if (rand >= ENCOUNTER_CHANCE_FISHING_MONS_SLOT_6 && rand < ENCOUNTER_CHANCE_FISHING_MONS_SLOT_7)
wildMonIndex = 7;
- if (rand >= 95 && rand < 99) // 4% chance
+ if (rand >= ENCOUNTER_CHANCE_FISHING_MONS_SLOT_7 && rand < ENCOUNTER_CHANCE_FISHING_MONS_SLOT_8)
wildMonIndex = 8;
- if (rand == 99) // 1% chance
+ if (rand == ENCOUNTER_CHANCE_FISHING_MONS_SLOT_8)
wildMonIndex = 9;
break;
}