diff options
author | GriffinR <griffin.g.richards@gmail.com> | 2020-01-12 22:42:43 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-01-12 22:42:43 -0500 |
commit | 655910a16fcb7b62cf43b83bb00b21a9c3e55e82 (patch) | |
tree | a619369a0d8b263f82d660ad7800f4b42328bb07 | |
parent | 635267ce32bd696fe15391449efdf07fa35cf449 (diff) | |
parent | fa5816915d2a089549bfae3851c36336eae35d43 (diff) |
Merge branch 'master' into fix-eventobj
127 files changed, 15566 insertions, 21894 deletions
diff --git a/asm/macros/battle_frontier/battle_dome.inc b/asm/macros/battle_frontier/battle_dome.inc index 882c82e8b..9adbcc54e 100644 --- a/asm/macros/battle_frontier/battle_dome.inc +++ b/asm/macros/battle_frontier/battle_dome.inc @@ -1,5 +1,3 @@ -@ TODO: Add explanatory comments to macros - @ Initialize the Battle Dome challenge .macro dome_init setvar VAR_0x8004, BATTLE_DOME_FUNC_INIT @@ -23,64 +21,64 @@ special CallBattleDomeFunction .endm - @ + @ Buffer the name of the current round to gStringVar1 .macro dome_getroundtext setvar VAR_0x8004, BATTLE_DOME_FUNC_GET_ROUND_TEXT special CallBattleDomeFunction .endm - @ + @ Buffer the name of the opponent to gStringVar2 and the name of the round to gStringVar1 .macro dome_getopponentname setvar VAR_0x8004, BATTLE_DOME_FUNC_GET_OPPONENT_NAME special CallBattleDomeFunction .endm - @ + @ Choose which of the opponents mons to use in battle and load them into the enemy party .macro dome_initopponentparty setvar VAR_0x8004, BATTLE_DOME_FUNC_INIT_OPPONENT_PARTY special CallBattleDomeFunction .endm - @ + @ Show the page that gives information on the next opponent .macro dome_showopponentinfo setvar VAR_0x8004, BATTLE_DOME_FUNC_SHOW_OPPONENT_INFO special CallBattleDomeFunction .endm - @ + @ Displays the tourney tree for the current tourney .macro dome_showtourneytree setvar VAR_0x8004, BATTLE_DOME_FUNC_SHOW_TOURNEY_TREE special CallBattleDomeFunction .endm - @ - .macro dome_showresultstree - setvar VAR_0x8004, BATTLE_DOME_FUNC_SHOW_PREV_RESULTS_TREE + @ Displays the tourney tree for the results of the previous tourney. Before the player enters their first tourney this is a random tourney generated by dome_initresultstree + .macro dome_showprevtourneytree + setvar VAR_0x8004, BATTLE_DOME_FUNC_SHOW_PREV_TOURNEY_TREE special CallBattleDomeFunction .endm - @ + @ Sets gTrainerBattleOpponent_A to the trainer ID of the next opponent .macro dome_setopponent setvar VAR_0x8004, BATTLE_DOME_FUNC_SET_OPPONENT_ID special CallBattleDomeFunction .endm - @ + @ Set the object event gfx id for the opponent .macro dome_setopponentgfx setvar VAR_0x8004, BATTLE_DOME_FUNC_SET_OPPONENT_GFX special CallBattleDomeFunction .endm - @ + @ A non-interactive version of the tourney tree shown when a round is completed .macro dome_showstatictourneytree setvar VAR_0x8004, BATTLE_DOME_FUNC_SHOW_STATIC_TOURNEY_TREE special CallBattleDomeFunction .endm - @ - .macro dome_resolvewinners arg:req + @ Decides the winners of NPC vs NPC matches, and eliminates either the player or their opponent depending on the playerStatus (DOME_PLAYER_*) + .macro dome_resolvewinners playerStatus:req setvar VAR_0x8004, BATTLE_DOME_FUNC_RESOLVE_WINNERS - setvar VAR_0x8005, \arg + setvar VAR_0x8005, \playerStatus special CallBattleDomeFunction .endm @@ -97,7 +95,7 @@ special CallBattleDomeFunction .endm - @ + @ Sets the facility trainer/mon set pointers .macro dome_settrainers setvar VAR_0x8004, BATTLE_DOME_FUNC_SET_TRAINERS special CallBattleDomeFunction @@ -109,19 +107,19 @@ special CallBattleDomeFunction .endm - @ + @ Reset the held items of the mons that just battled to what they were prior to battling .macro dome_restorehelditems setvar VAR_0x8004, BATTLE_DOME_FUNC_RESTORE_HELD_ITEMS special CallBattleDomeFunction .endm - @ + @ Reduce the players party to the selected mons, used to reduce down to the 2 selected for battle .macro dome_reduceparty setvar VAR_0x8004, BATTLE_DOME_FUNC_REDUCE_PARTY special CallBattleDomeFunction .endm - @ + @ Compares the initial tournament ranking (seed) of the player to opponent A. Returns 1 if the player's seed is better, 2 if the opponent's seed is better. .macro dome_compareseeds setvar VAR_0x8004, BATTLE_DOME_FUNC_COMPARE_SEEDS special CallBattleDomeFunction @@ -133,13 +131,13 @@ special CallBattleDomeFunction .endm - @ TODO: Document this macro and its function - .macro dome_21 - setvar VAR_0x8004, BATTLE_DOME_FUNC_21 + @ Performs a random tourney to initialize the results board before the player has entered a challenge + .macro dome_initresultstree + setvar VAR_0x8004, BATTLE_DOME_FUNC_INIT_RESULTS_TREE special CallBattleDomeFunction .endm - @ + @ Generates the tourney trainers and their parties, and seeds them in the tourney tree .macro dome_inittrainers setvar VAR_0x8004, BATTLE_DOME_FUNC_INIT_TRAINERS special CallBattleDomeFunction diff --git a/common_syms/save.txt b/common_syms/save.txt index d7668c332..190a65840 100644 --- a/common_syms/save.txt +++ b/common_syms/save.txt @@ -10,4 +10,4 @@ gSaveFileStatus gGameContinueCallback gRamSaveSectionLocations gSaveUnusedVar2 -gUnknown_03006294 +gSaveAttemptStatus diff --git a/data/battle_ai_scripts.s b/data/battle_ai_scripts.s index 03f76fe29..633c3b38e 100644 --- a/data/battle_ai_scripts.s +++ b/data/battle_ai_scripts.s @@ -2395,10 +2395,10 @@ AI_CV_Hail_ScoreDown1: AI_CV_Hail_End: end +@ BUG: Facade score is increased if the target is statused, but should be if the user is. Replace AI_TARGET with AI_USER AI_CV_Facade: if_not_status AI_TARGET, STATUS1_POISON | STATUS1_BURN | STATUS1_PARALYSIS | STATUS1_TOXIC_POISON, AI_CV_Facade_End score +1 - AI_CV_Facade_End: end diff --git a/data/maps/BattleFrontier_BattleDomeBattleRoom/scripts.inc b/data/maps/BattleFrontier_BattleDomeBattleRoom/scripts.inc index 5da7d23f3..25522f0c0 100644 --- a/data/maps/BattleFrontier_BattleDomeBattleRoom/scripts.inc +++ b/data/maps/BattleFrontier_BattleDomeBattleRoom/scripts.inc @@ -1,16 +1,20 @@ BattleFrontier_BattleDomeBattleRoom_MapScripts:: @ 824BC9C - map_script MAP_SCRIPT_ON_TRANSITION, BattleFrontier_BattleDomeBattleRoom_MapScript1_24BCB1 - map_script MAP_SCRIPT_ON_FRAME_TABLE, BattleFrontier_BattleDomeBattleRoom_MapScript2_24BD00 - map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, BattleFrontier_BattleDomeBattleRoom_MapScript2_24C481 - map_script MAP_SCRIPT_ON_RESUME, BattleFrontier_BattleDomeBattleRoom_MapScript1_24C4F0 + map_script MAP_SCRIPT_ON_TRANSITION, BattleFrontier_BattleDomeBattleRoom_OnTransition + map_script MAP_SCRIPT_ON_FRAME_TABLE, BattleFrontier_BattleDomeBattleRoom_OnFrame + map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, BattleFrontier_BattleDomeBattleRoom_OnWarp + map_script MAP_SCRIPT_ON_RESUME, BattleFrontier_BattleDomeBattleRoom_OnResume .byte 0 -BattleFrontier_BattleDomeBattleRoom_MapScript1_24BCB1: @ 824BCB1 + .set NO_DRAW, 0 + .set DRAW_TRAINER, 1 + .set DRAW_TUCKER, 2 + +BattleFrontier_BattleDomeBattleRoom_OnTransition: @ 824BCB1 dome_setopponentgfx frontier_get FRONTIER_DATA_BATTLE_NUM copyvar VAR_TEMP_F, VAR_RESULT - compare VAR_RESULT, 0 - call_if_eq BattleFrontier_BattleDomeBattleRoom_EventScript_24C919 + compare VAR_RESULT, DOME_ROUND1 + call_if_eq BattleFrontier_BattleDomeBattleRoom_EventScript_SetWalkingAudienceMemberPos call BattleFrontier_BattleDomeBattleRoom_EventScript_SetPlayerGfx end @@ -30,441 +34,431 @@ BattleFrontier_BattleDomeBattleRoom_EventScript_SetPlayerGfxFemale:: @ 824BCFA setvar VAR_OBJ_GFX_ID_1, OBJ_EVENT_GFX_RIVAL_MAY_NORMAL return -BattleFrontier_BattleDomeBattleRoom_MapScript2_24BD00: @ 824BD00 - map_script_2 VAR_TEMP_0, 0, BattleFrontier_BattleDomeBattleRoom_EventScript_24BD0A +BattleFrontier_BattleDomeBattleRoom_OnFrame: @ 824BD00 + map_script_2 VAR_TEMP_0, 0, BattleFrontier_BattleDomeBattleRoom_EventScript_EnterRoom .2byte 0 -BattleFrontier_BattleDomeBattleRoom_EventScript_24BD0A:: @ 824BD0A +BattleFrontier_BattleDomeBattleRoom_EventScript_EnterRoom:: @ 824BD0A lockall - call BattleFrontier_BattleDomeBattleRoom_EventScript_24C1BD - compare VAR_RESULT, 0 - call_if_eq BattleFrontier_BattleDomeBattleRoom_EventScript_24C938 + call BattleFrontier_BattleDomeBattleRoom_EventScript_GetRoundNum + compare VAR_RESULT, DOME_ROUND1 + call_if_eq BattleFrontier_BattleDomeBattleRoom_EventScript_TryDoAudienceMemberWalkToSeat applymovement 1, Common_Movement_WalkInPlaceDown waitmovement 0 - call BattleFrontier_BattleDomeBattleRoom_EventScript_24BFD5 - msgbox BattleFrontier_BattleDomeBattleRoom_Text_24C970, MSGBOX_DEFAULT + call BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayer + msgbox BattleFrontier_BattleDomeBattleRoom_Text_PlayerHasEnteredDome, MSGBOX_DEFAULT closemessage showobjectat 13, MAP_BATTLE_FRONTIER_BATTLE_DOME_BATTLE_ROOM - compare VAR_TEMP_F, 3 - goto_if_ne BattleFrontier_BattleDomeBattleRoom_EventScript_24BD4E + compare VAR_TEMP_F, DOME_FINAL + goto_if_ne BattleFrontier_BattleDomeBattleRoom_EventScript_PlayerEnter compare VAR_TEMP_E, FRONTIER_BRAIN_NOT_READY - goto_if_ne BattleFrontier_BattleDomeBattleRoom_EventScript_24BD5A - -BattleFrontier_BattleDomeBattleRoom_EventScript_24BD4E:: @ 824BD4E - applymovement 13, BattleFrontier_BattleDomeBattleRoom_Movement_24C775 - goto BattleFrontier_BattleDomeBattleRoom_EventScript_24BD61 - -BattleFrontier_BattleDomeBattleRoom_EventScript_24BD5A:: @ 824BD5A - applymovement 13, BattleFrontier_BattleDomeBattleRoom_Movement_24C77F - -BattleFrontier_BattleDomeBattleRoom_EventScript_24BD61:: @ 824BD61 + goto_if_ne BattleFrontier_BattleDomeBattleRoom_EventScript_PlayerEnterForTucker +BattleFrontier_BattleDomeBattleRoom_EventScript_PlayerEnter:: @ 824BD4E + applymovement 13, BattleFrontier_BattleDomeBattleRoom_Movement_PlayerEnter + goto BattleFrontier_BattleDomeBattleRoom_EventScript_AudienceReactToPlayer + +BattleFrontier_BattleDomeBattleRoom_EventScript_PlayerEnterForTucker:: @ 824BD5A + applymovement 13, BattleFrontier_BattleDomeBattleRoom_Movement_PlayerEnterForTucker +BattleFrontier_BattleDomeBattleRoom_EventScript_AudienceReactToPlayer:: @ 824BD61 playse SE_W227B - call BattleFrontier_BattleDomeBattleRoom_EventScript_24C82E + call BattleFrontier_BattleDomeBattleRoom_EventScript_AudienceLookAround waitmovement 0 - compare VAR_TEMP_F, 3 - goto_if_ne BattleFrontier_BattleDomeBattleRoom_EventScript_24BD82 + compare VAR_TEMP_F, DOME_FINAL + goto_if_ne BattleFrontier_BattleDomeBattleRoom_EventScript_BattleOpponent compare VAR_TEMP_E, FRONTIER_BRAIN_NOT_READY - goto_if_ne BattleFrontier_BattleDomeBattleRoom_EventScript_24C1CB - -BattleFrontier_BattleDomeBattleRoom_EventScript_24BD82:: @ 824BD82 + goto_if_ne BattleFrontier_BattleDomeBattleRoom_EventScript_AnnounceTucker +BattleFrontier_BattleDomeBattleRoom_EventScript_BattleOpponent:: @ 824BD82 dome_getopponentname - msgbox BattleFrontier_BattleDomeBattleRoom_Text_24C990, MSGBOX_DEFAULT + msgbox BattleFrontier_BattleDomeBattleRoom_Text_PlayerVersusTrainer, MSGBOX_DEFAULT closemessage - applymovement 13, BattleFrontier_BattleDomeBattleRoom_Movement_24C77B - applymovement 15, BattleFrontier_BattleDomeBattleRoom_Movement_24C789 + applymovement 13, BattleFrontier_BattleDomeBattleRoom_Movement_PlayerStepForward + applymovement 15, BattleFrontier_BattleDomeBattleRoom_Movement_OpponentStepForward waitmovement 0 tower_getopponentintro 0 msgbox gStringVar4, MSGBOX_DEFAULT closemessage dome_initopponentparty - call BattleFrontier_BattleDomeBattleRoom_EventScript_24C440 - setvar VAR_TEMP_2, 0 + call BattleFrontier_BattleDomeBattleRoom_EventScript_DoDomeBattle + setvar VAR_TEMP_2, NO_DRAW switch VAR_RESULT - case 1, BattleFrontier_BattleDomeBattleRoom_EventScript_24BEE0 - case 2, BattleFrontier_BattleDomeBattleRoom_EventScript_24BE4F - case 9, BattleFrontier_BattleDomeBattleRoom_EventScript_24BE4F - setvar VAR_TEMP_2, 1 - -BattleFrontier_BattleDomeBattleRoom_EventScript_24BDF7:: @ 824BDF7 - msgbox BattleFrontier_BattleDomeBattleRoom_Text_24CA86, MSGBOX_DEFAULT + case B_OUTCOME_WON, BattleFrontier_BattleDomeBattleRoom_EventScript_DefeatedOpponent + case B_OUTCOME_LOST, BattleFrontier_BattleDomeBattleRoom_EventScript_LostToOpponent + case B_OUTCOME_FORFEITED, BattleFrontier_BattleDomeBattleRoom_EventScript_LostToOpponent + setvar VAR_TEMP_2, DRAW_TRAINER +BattleFrontier_BattleDomeBattleRoom_EventScript_Draw:: @ 824BDF7 + msgbox BattleFrontier_BattleDomeBattleRoom_Text_RefereeDecisionPleaseWait, MSGBOX_DEFAULT closemessage playse SE_W227B - call BattleFrontier_BattleDomeBattleRoom_EventScript_24C82E + call BattleFrontier_BattleDomeBattleRoom_EventScript_AudienceLookAround delay 60 - applymovement 9, BattleFrontier_BattleDomeBattleRoom_Movement_24C964 + applymovement 9, BattleFrontier_BattleDomeBattleRoom_Movement_TieRefereeEnter waitmovement 0 - applymovement 1, BattleFrontier_BattleDomeBattleRoom_Movement_24C969 + applymovement 1, BattleFrontier_BattleDomeBattleRoom_Movement_RefereeFaceLeft waitmovement 0 delay 180 - applymovement 9, BattleFrontier_BattleDomeBattleRoom_Movement_24C96B + applymovement 9, BattleFrontier_BattleDomeBattleRoom_Movement_TieRefereeExit waitmovement 0 - compare VAR_TEMP_2, 2 - goto_if_eq BattleFrontier_BattleDomeBattleRoom_EventScript_24BE4F + compare VAR_TEMP_2, DRAW_TUCKER @ Tucker always wins on a draw + goto_if_eq BattleFrontier_BattleDomeBattleRoom_EventScript_LostToOpponent dome_compareseeds switch VAR_RESULT - case 1, BattleFrontier_BattleDomeBattleRoom_EventScript_24BEE0 - -BattleFrontier_BattleDomeBattleRoom_EventScript_24BE4F:: @ 824BE4F + case 1, BattleFrontier_BattleDomeBattleRoom_EventScript_DefeatedOpponent +BattleFrontier_BattleDomeBattleRoom_EventScript_LostToOpponent:: @ 824BE4F applymovement 1, Common_Movement_WalkInPlaceDown waitmovement 0 dome_getopponentname - compare VAR_TEMP_2, 0 - call_if_eq BattleFrontier_BattleDomeBattleRoom_EventScript_24BEB1 - compare VAR_TEMP_2, 1 - call_if_eq BattleFrontier_BattleDomeBattleRoom_EventScript_24BEC5 - compare VAR_TEMP_2, 2 - call_if_eq BattleFrontier_BattleDomeBattleRoom_EventScript_24BED9 + compare VAR_TEMP_2, NO_DRAW + call_if_eq BattleFrontier_BattleDomeBattleRoom_EventScript_OpponentWon + compare VAR_TEMP_2, DRAW_TRAINER + call_if_eq BattleFrontier_BattleDomeBattleRoom_EventScript_OpponentWonDraw + compare VAR_TEMP_2, DRAW_TUCKER + call_if_eq BattleFrontier_BattleDomeBattleRoom_EventScript_TuckerWonDraw playse SE_W227B - call BattleFrontier_BattleDomeBattleRoom_EventScript_24C82E + call BattleFrontier_BattleDomeBattleRoom_EventScript_AudienceLookAround delay 60 - -BattleFrontier_BattleDomeBattleRoom_EventScript_24BE8D:: @ 824BE8D - dome_resolvewinners 2 -BattleFrontier_BattleDomePreBattleRoom_EventScript_24BE9A:: @ 824BE9A +BattleFrontier_BattleDomeBattleRoom_EventScript_LostTourney:: @ 824BE8D + dome_resolvewinners DOME_PLAYER_LOST_MATCH +BattleFrontier_BattleDomeBattleRoom_EventScript_WarpToLobbyLost:: @ 824BE9A frontier_set FRONTIER_DATA_CHALLENGE_STATUS, CHALLENGE_STATUS_LOST - goto BattleFrontier_BattleDomeBattleRoom_EventScript_24C8F5 -@ goto BattleFrontier_BattleDomePreBattleRoom_EventScript_24C8F5 + goto BattleFrontier_BattleDomeBattleRoom_EventScript_WarpToLobby -BattleFrontier_BattleDomeBattleRoom_EventScript_24BEB1:: @ 824BEB1 +BattleFrontier_BattleDomeBattleRoom_EventScript_OpponentWon:: @ 824BEB1 frontier_gettrainername 1 - message BattleFrontier_BattleDomeBattleRoom_Text_24C9E1 + message BattleFrontier_BattleDomeBattleRoom_Text_TrainerIsWinner waitmessage return -BattleFrontier_BattleDomeBattleRoom_EventScript_24BEC5:: @ 824BEC5 +BattleFrontier_BattleDomeBattleRoom_EventScript_OpponentWonDraw:: @ 824BEC5 frontier_gettrainername 0 - message BattleFrontier_BattleDomeBattleRoom_Text_24CB34 + message BattleFrontier_BattleDomeBattleRoom_Text_RefereesDecidedWinnerTrainer waitmessage return -BattleFrontier_BattleDomeBattleRoom_EventScript_24BED9:: @ 824BED9 - message BattleFrontier_BattleDomeBattleRoom_Text_24D6BE +BattleFrontier_BattleDomeBattleRoom_EventScript_TuckerWonDraw:: @ 824BED9 + message BattleFrontier_BattleDomeBattleRoom_Text_RefereesDecidedWinnerTucker waitmessage return -BattleFrontier_BattleDomeBattleRoom_EventScript_24BEE0:: @ 824BEE0 +BattleFrontier_BattleDomeBattleRoom_EventScript_DefeatedOpponent:: @ 824BEE0 applymovement 1, Common_Movement_WalkInPlaceDown waitmovement 0 - compare VAR_TEMP_2, 0 - call_if_eq BattleFrontier_BattleDomeBattleRoom_EventScript_24BFC3 - compare VAR_TEMP_2, 1 - call_if_eq BattleFrontier_BattleDomeBattleRoom_EventScript_24BFCC + compare VAR_TEMP_2, NO_DRAW + call_if_eq BattleFrontier_BattleDomeBattleRoom_EventScript_PlayerWon + compare VAR_TEMP_2, DRAW_TRAINER + call_if_eq BattleFrontier_BattleDomeBattleRoom_EventScript_PlayerWonDraw playse SE_W227B - call BattleFrontier_BattleDomeBattleRoom_EventScript_24C82E + call BattleFrontier_BattleDomeBattleRoom_EventScript_AudienceLookAround delay 60 dome_getroundtext - dome_resolvewinners 1 + dome_resolvewinners DOME_PLAYER_WON_MATCH frontier_get FRONTIER_DATA_BATTLE_NUM addvar VAR_RESULT, 1 frontier_set FRONTIER_DATA_BATTLE_NUM, VAR_RESULT switch VAR_RESULT - case 4, BattleFrontier_BattleDomeBattleRoom_EventScript_24BF62 + case DOME_ROUNDS_COUNT, BattleFrontier_BattleDomeBattleRoom_EventScript_WonTourney setvar VAR_0x8006, 1 warp MAP_BATTLE_FRONTIER_BATTLE_DOME_PRE_BATTLE_ROOM, 255, 5, 3 waitstate -BattleFrontier_BattleDomeBattleRoom_EventScript_24BF62:: @ 824BF62 - applymovement 13, BattleFrontier_BattleDomeBattleRoom_Movement_24C77D +BattleFrontier_BattleDomeBattleRoom_EventScript_WonTourney:: @ 824BF62 + applymovement 13, BattleFrontier_BattleDomeBattleRoom_Movement_PlayerApproachAudience waitmovement 0 frontier_get FRONTIER_DATA_LVL_MODE switch VAR_RESULT - case FRONTIER_LVL_OPEN, BattleFrontier_BattleDomeBattleRoom_EventScript_24BF96 - msgbox BattleFrontier_BattleDomeBattleRoom_Text_24CA04, MSGBOX_DEFAULT - goto BattleFrontier_BattleDomeBattleRoom_EventScript_24BF9E - -BattleFrontier_BattleDomeBattleRoom_EventScript_24BF96:: @ 824BF96 - msgbox BattleFrontier_BattleDomeBattleRoom_Text_24CA44, MSGBOX_DEFAULT - -BattleFrontier_BattleDomeBattleRoom_EventScript_24BF9E:: @ 824BF9E - special sub_8175280 + case FRONTIER_LVL_OPEN, BattleFrontier_BattleDomeBattleRoom_EventScript_WonLvOpenTourney + msgbox BattleFrontier_BattleDomeBattleRoom_Text_PlayerIsLv50Champ, MSGBOX_DEFAULT + goto BattleFrontier_BattleDomeBattleRoom_EventScript_CelebrateWin + +BattleFrontier_BattleDomeBattleRoom_EventScript_WonLvOpenTourney:: @ 824BF96 + msgbox BattleFrontier_BattleDomeBattleRoom_Text_PlayerIsLvOpenChamp, MSGBOX_DEFAULT +BattleFrontier_BattleDomeBattleRoom_EventScript_CelebrateWin:: @ 824BF9E + special DoConfettiEffect playse SE_W227B - call BattleFrontier_BattleDomeBattleRoom_EventScript_24C82E + call BattleFrontier_BattleDomeBattleRoom_EventScript_AudienceLookAround delay 60 frontier_set FRONTIER_DATA_CHALLENGE_STATUS, CHALLENGE_STATUS_WON - goto BattleFrontier_BattleDomeBattleRoom_EventScript_24C8F5 + goto BattleFrontier_BattleDomeBattleRoom_EventScript_WarpToLobby -BattleFrontier_BattleDomeBattleRoom_EventScript_24BFC3:: @ 824BFC3 - msgbox BattleFrontier_BattleDomeBattleRoom_Text_24C9BE, MSGBOX_DEFAULT +BattleFrontier_BattleDomeBattleRoom_EventScript_PlayerWon:: @ 824BFC3 + msgbox BattleFrontier_BattleDomeBattleRoom_Text_PlayerIsWinner, MSGBOX_DEFAULT return -BattleFrontier_BattleDomeBattleRoom_EventScript_24BFCC:: @ 824BFCC - msgbox BattleFrontier_BattleDomeBattleRoom_Text_24CB9D, MSGBOX_DEFAULT +BattleFrontier_BattleDomeBattleRoom_EventScript_PlayerWonDraw:: @ 824BFCC + msgbox BattleFrontier_BattleDomeBattleRoom_Text_RefereesDecidedWinnerPlayer, MSGBOX_DEFAULT return -BattleFrontier_BattleDomeBattleRoom_EventScript_24BFD5:: @ 824BFD5 - dome_get DOME_DATA_6 - compare VAR_RESULT, 0 - goto_if_eq BattleFrontier_BattleDomeBattleRoom_EventScript_24C023 - dome_get DOME_DATA_7 - compare VAR_RESULT, 0 - goto_if_eq BattleFrontier_BattleDomeBattleRoom_EventScript_24C076 +BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayer:: @ 824BFD5 + dome_get DOME_DATA_ATTEMPTED_CHALLENGE + compare VAR_RESULT, FALSE + goto_if_eq BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerFirstAttempt + dome_get DOME_DATA_HAS_WON_CHALLENGE + compare VAR_RESULT, FALSE + goto_if_eq BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerNeverWon dome_get DOME_DATA_WIN_STREAK_ACTIVE compare VAR_RESULT, FALSE - goto_if_eq BattleFrontier_BattleDomeBattleRoom_EventScript_24C16A - goto BattleFrontier_BattleDomeBattleRoom_EventScript_24C0C9 + goto_if_eq BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerBrokenStreak + goto BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerChampion return -BattleFrontier_BattleDomeBattleRoom_EventScript_24C023:: @ 824C023 - call BattleFrontier_BattleDomeBattleRoom_EventScript_24C1BD +BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerFirstAttempt:: @ 824C023 + call BattleFrontier_BattleDomeBattleRoom_EventScript_GetRoundNum switch VAR_RESULT - case 0, BattleFrontier_BattleDomeBattleRoom_EventScript_24C05A - case 1, BattleFrontier_BattleDomeBattleRoom_EventScript_24C061 - case 2, BattleFrontier_BattleDomeBattleRoom_EventScript_24C068 - case 3, BattleFrontier_BattleDomeBattleRoom_EventScript_24C06F + case DOME_ROUND1, BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerFirstAttemptRound1 + case DOME_ROUND2, BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerFirstAttemptRound2 + case DOME_SEMIFINAL, BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerFirstAttemptSemifinal + case DOME_FINAL, BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerFirstAttemptFinal return -BattleFrontier_BattleDomeBattleRoom_EventScript_24C05A:: @ 824C05A - message BattleFrontier_BattleDomeBattleRoom_Text_24CC06 +BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerFirstAttemptRound1:: @ 824C05A + message BattleFrontier_BattleDomeBattleRoom_Text_BrightNewHope waitmessage return -BattleFrontier_BattleDomeBattleRoom_EventScript_24C061:: @ 824C061 - message BattleFrontier_BattleDomeBattleRoom_Text_24CC1C +BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerFirstAttemptRound2:: @ 824C061 + message BattleFrontier_BattleDomeBattleRoom_Text_RisingStar waitmessage return -BattleFrontier_BattleDomeBattleRoom_EventScript_24C068:: @ 824C068 - message BattleFrontier_BattleDomeBattleRoom_Text_24CC2E +BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerFirstAttemptSemifinal:: @ 824C068 + message BattleFrontier_BattleDomeBattleRoom_Text_WillTheyRaceToChampionship waitmessage return -BattleFrontier_BattleDomeBattleRoom_EventScript_24C06F:: @ 824C06F - message BattleFrontier_BattleDomeBattleRoom_Text_24CC5B +BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerFirstAttemptFinal:: @ 824C06F + message BattleFrontier_BattleDomeBattleRoom_Text_CanAchieveChampionFirstTry waitmessage return -BattleFrontier_BattleDomeBattleRoom_EventScript_24C076:: @ 824C076 - call BattleFrontier_BattleDomeBattleRoom_EventScript_24C1BD +BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerNeverWon:: @ 824C076 + call BattleFrontier_BattleDomeBattleRoom_EventScript_GetRoundNum switch VAR_RESULT - case 0, BattleFrontier_BattleDomeBattleRoom_EventScript_24C0AD - case 1, BattleFrontier_BattleDomeBattleRoom_EventScript_24C0B4 - case 2, BattleFrontier_BattleDomeBattleRoom_EventScript_24C0BB - case 3, BattleFrontier_BattleDomeBattleRoom_EventScript_24C0C2 + case DOME_ROUND1, BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerNeverWonRound1 + case DOME_ROUND2, BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerNeverWonRound2 + case DOME_SEMIFINAL, BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerNeverWonSemifinal + case DOME_FINAL, BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerNeverWonFinal return -BattleFrontier_BattleDomeBattleRoom_EventScript_24C0AD:: @ 824C0AD - message BattleFrontier_BattleDomeBattleRoom_Text_24CC99 +BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerNeverWonRound1:: @ 824C0AD + message BattleFrontier_BattleDomeBattleRoom_Text_CanLossBeAvenged waitmessage return -BattleFrontier_BattleDomeBattleRoom_EventScript_24C0B4:: @ 824C0B4 - message BattleFrontier_BattleDomeBattleRoom_Text_24CCC5 +BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerNeverWonRound2:: @ 824C0B4 + message BattleFrontier_BattleDomeBattleRoom_Text_OnFireForChampionship waitmessage return -BattleFrontier_BattleDomeBattleRoom_EventScript_24C0BB:: @ 824C0BB - message BattleFrontier_BattleDomeBattleRoom_Text_24CCFD +BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerNeverWonSemifinal:: @ 824C0BB + message BattleFrontier_BattleDomeBattleRoom_Text_WinHereAdvancesToFinal waitmessage return -BattleFrontier_BattleDomeBattleRoom_EventScript_24C0C2:: @ 824C0C2 - message BattleFrontier_BattleDomeBattleRoom_Text_24CD33 +BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerNeverWonFinal:: @ 824C0C2 + message BattleFrontier_BattleDomeBattleRoom_Text_WillLongHeldDreamComeTrue waitmessage return -BattleFrontier_BattleDomeBattleRoom_EventScript_24C0C9:: @ 824C0C9 - compare VAR_TEMP_F, 3 - goto_if_ne BattleFrontier_BattleDomeBattleRoom_EventScript_24C105 +BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerChampion:: @ 824C0C9 + compare VAR_TEMP_F, DOME_FINAL + goto_if_ne BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerChampionNoTucker switch VAR_TEMP_E - case FRONTIER_BRAIN_SILVER, BattleFrontier_BattleDomeBattleRoom_EventScript_24C158 - case FRONTIER_BRAIN_GOLD, BattleFrontier_BattleDomeBattleRoom_EventScript_24C161 - case FRONTIER_BRAIN_STREAK, BattleFrontier_BattleDomeBattleRoom_EventScript_24C158 - case FRONTIER_BRAIN_STREAK_LONG, BattleFrontier_BattleDomeBattleRoom_EventScript_24C161 - -BattleFrontier_BattleDomeBattleRoom_EventScript_24C105:: @ 824C105 - call BattleFrontier_BattleDomeBattleRoom_EventScript_24C1BD + case FRONTIER_BRAIN_SILVER, BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerPreTuckerSilver + case FRONTIER_BRAIN_GOLD, BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerPreTuckerGold + case FRONTIER_BRAIN_STREAK, BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerPreTuckerSilver + case FRONTIER_BRAIN_STREAK_LONG, BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerPreTuckerGold +BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerChampionNoTucker:: @ 824C105 + call BattleFrontier_BattleDomeBattleRoom_EventScript_GetRoundNum switch VAR_RESULT - case 0, BattleFrontier_BattleDomeBattleRoom_EventScript_24C13C - case 1, BattleFrontier_BattleDomeBattleRoom_EventScript_24C143 - case 2, BattleFrontier_BattleDomeBattleRoom_EventScript_24C14A - case 3, BattleFrontier_BattleDomeBattleRoom_EventScript_24C151 + case DOME_ROUND1, BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerChampionRound1 + case DOME_ROUND2, BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerChampionRound2 + case DOME_SEMIFINAL, BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerChampionSemifinal + case DOME_FINAL, BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerChampionFinal return -BattleFrontier_BattleDomeBattleRoom_EventScript_24C13C:: @ 824C13C - message BattleFrontier_BattleDomeBattleRoom_Text_24CD72 +BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerChampionRound1:: @ 824C13C + message BattleFrontier_BattleDomeBattleRoom_Text_TheInvincibleChampion waitmessage return -BattleFrontier_BattleDomeBattleRoom_EventScript_24C143:: @ 824C143 - message BattleFrontier_BattleDomeBattleRoom_Text_24CD8C +BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerChampionRound2:: @ 824C143 + message BattleFrontier_BattleDomeBattleRoom_Text_CanAnyoneHopeToBeatTrainer waitmessage return -BattleFrontier_BattleDomeBattleRoom_EventScript_24C14A:: @ 824C14A - message BattleFrontier_BattleDomeBattleRoom_Text_24CDB3 +BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerChampionSemifinal:: @ 824C14A + message BattleFrontier_BattleDomeBattleRoom_Text_DoBattlesExistSolelyForTrainer waitmessage return -BattleFrontier_BattleDomeBattleRoom_EventScript_24C151:: @ 824C151 - message BattleFrontier_BattleDomeBattleRoom_Text_24CDDE +BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerChampionFinal:: @ 824C151 + message BattleFrontier_BattleDomeBattleRoom_Text_CurrentChampAimingToRetainTitle waitmessage return -BattleFrontier_BattleDomeBattleRoom_EventScript_24C158:: @ 824C158 - msgbox BattleFrontier_BattleDomeBattleRoom_Text_24CEBE, MSGBOX_DEFAULT +BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerPreTuckerSilver:: @ 824C158 + msgbox BattleFrontier_BattleDomeBattleRoom_Text_FeelGlowOfTrueMaster, MSGBOX_DEFAULT return -BattleFrontier_BattleDomeBattleRoom_EventScript_24C161:: @ 824C161 - msgbox BattleFrontier_BattleDomeBattleRoom_Text_24D232, MSGBOX_DEFAULT +BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerPreTuckerGold:: @ 824C161 + msgbox BattleFrontier_BattleDomeBattleRoom_Text_CanWinStreakBeStretched, MSGBOX_DEFAULT return -BattleFrontier_BattleDomeBattleRoom_EventScript_24C16A:: @ 824C16A - call BattleFrontier_BattleDomeBattleRoom_EventScript_24C1BD +BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerBrokenStreak:: @ 824C16A + call BattleFrontier_BattleDomeBattleRoom_EventScript_GetRoundNum switch VAR_RESULT - case 0, BattleFrontier_BattleDomeBattleRoom_EventScript_24C1A1 - case 1, BattleFrontier_BattleDomeBattleRoom_EventScript_24C1A8 - case 2, BattleFrontier_BattleDomeBattleRoom_EventScript_24C1AF - case 3, BattleFrontier_BattleDomeBattleRoom_EventScript_24C1B6 + case DOME_ROUND1, BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerBrokenStreakRound1 + case DOME_ROUND2, BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerBrokenStreakRound2 + case DOME_SEMIFINAL, BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerBrokenStreakSemifinal + case DOME_FINAL, BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerBrokenStreakFinal return -BattleFrontier_BattleDomeBattleRoom_EventScript_24C1A1:: @ 824C1A1 - message BattleFrontier_BattleDomeBattleRoom_Text_24CE10 +BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerBrokenStreakRound1:: @ 824C1A1 + message BattleFrontier_BattleDomeBattleRoom_Text_FormerChampHasReturned waitmessage return -BattleFrontier_BattleDomeBattleRoom_EventScript_24C1A8:: @ 824C1A8 - message BattleFrontier_BattleDomeBattleRoom_Text_24CE33 +BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerBrokenStreakRound2:: @ 824C1A8 + message BattleFrontier_BattleDomeBattleRoom_Text_FormerToughnessReturned waitmessage return -BattleFrontier_BattleDomeBattleRoom_EventScript_24C1AF:: @ 824C1AF - message BattleFrontier_BattleDomeBattleRoom_Text_24CE57 +BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerBrokenStreakSemifinal:: @ 824C1AF + message BattleFrontier_BattleDomeBattleRoom_Text_WillDoExpectedAdvanceToFinals waitmessage return -BattleFrontier_BattleDomeBattleRoom_EventScript_24C1B6:: @ 824C1B6 - message BattleFrontier_BattleDomeBattleRoom_Text_24CE94 +BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerBrokenStreakFinal:: @ 824C1B6 + message BattleFrontier_BattleDomeBattleRoom_Text_WillFormerChampRegainGlory waitmessage return -BattleFrontier_BattleDomeBattleRoom_EventScript_24C1BD:: @ 824C1BD +BattleFrontier_BattleDomeBattleRoom_EventScript_GetRoundNum:: @ 824C1BD frontier_get FRONTIER_DATA_BATTLE_NUM return -BattleFrontier_BattleDomeBattleRoom_EventScript_24C1CB:: @ 824C1CB +BattleFrontier_BattleDomeBattleRoom_EventScript_AnnounceTucker:: @ 824C1CB switch VAR_TEMP_E - case FRONTIER_BRAIN_SILVER, BattleFrontier_BattleDomeBattleRoom_EventScript_24C1FC - case FRONTIER_BRAIN_GOLD, BattleFrontier_BattleDomeBattleRoom_EventScript_24C209 - case FRONTIER_BRAIN_STREAK, BattleFrontier_BattleDomeBattleRoom_EventScript_24C1FC - case FRONTIER_BRAIN_STREAK_LONG, BattleFrontier_BattleDomeBattleRoom_EventScript_24C209 - -BattleFrontier_BattleDomeBattleRoom_EventScript_24C1FC:: @ 824C1FC - msgbox BattleFrontier_BattleDomeBattleRoom_Text_24CEDE, MSGBOX_DEFAULT - goto BattleFrontier_BattleDomeBattleRoom_EventScript_24C211 - -BattleFrontier_BattleDomeBattleRoom_EventScript_24C209:: @ 824C209 - msgbox BattleFrontier_BattleDomeBattleRoom_Text_24D26C, MSGBOX_DEFAULT - -BattleFrontier_BattleDomeBattleRoom_EventScript_24C211:: @ 824C211 + case FRONTIER_BRAIN_SILVER, BattleFrontier_BattleDomeBattleRoom_EventScript_AnnounceTuckerSilver + case FRONTIER_BRAIN_GOLD, BattleFrontier_BattleDomeBattleRoom_EventScript_AnnounceTuckerGold + case FRONTIER_BRAIN_STREAK, BattleFrontier_BattleDomeBattleRoom_EventScript_AnnounceTuckerSilver + case FRONTIER_BRAIN_STREAK_LONG, BattleFrontier_BattleDomeBattleRoom_EventScript_AnnounceTuckerGold + +BattleFrontier_BattleDomeBattleRoom_EventScript_AnnounceTuckerSilver:: @ 824C1FC + msgbox BattleFrontier_BattleDomeBattleRoom_Text_MakeWayForDomeAceTucker, MSGBOX_DEFAULT + goto BattleFrontier_BattleDomeBattleRoom_EventScript_TuckerEnter + +BattleFrontier_BattleDomeBattleRoom_EventScript_AnnounceTuckerGold:: @ 824C209 + msgbox BattleFrontier_BattleDomeBattleRoom_Text_LegendHasReturnedDomeAceTucker, MSGBOX_DEFAULT +BattleFrontier_BattleDomeBattleRoom_EventScript_TuckerEnter:: @ 824C211 closemessage - applymovement 2, BattleFrontier_BattleDomeBattleRoom_Movement_24C94B - applymovement 1, BattleFrontier_BattleDomeBattleRoom_Movement_24C7F9 - applymovement 15, BattleFrontier_BattleDomeBattleRoom_Movement_24C78E + applymovement 2, BattleFrontier_BattleDomeBattleRoom_Movement_AudienceTwinJump + applymovement 1, BattleFrontier_BattleDomeBattleRoom_Movement_RefereeMoveForTuckerEntrance + applymovement 15, BattleFrontier_BattleDomeBattleRoom_Movement_TuckerEnterAndDance playse SE_W227B - call BattleFrontier_BattleDomeBattleRoom_EventScript_24C82E + call BattleFrontier_BattleDomeBattleRoom_EventScript_AudienceLookAround waitse playse SE_W227B - call BattleFrontier_BattleDomeBattleRoom_EventScript_24C82E + call BattleFrontier_BattleDomeBattleRoom_EventScript_AudienceLookAround waitse playse SE_W227B - call BattleFrontier_BattleDomeBattleRoom_EventScript_24C82E + call BattleFrontier_BattleDomeBattleRoom_EventScript_AudienceLookAround waitse playse SE_W227B - call BattleFrontier_BattleDomeBattleRoom_EventScript_24C82E + call BattleFrontier_BattleDomeBattleRoom_EventScript_AudienceLookAround waitse playse SE_W227B - call BattleFrontier_BattleDomeBattleRoom_EventScript_24C82E + call BattleFrontier_BattleDomeBattleRoom_EventScript_AudienceLookAround waitse waitmovement 0 - message BattleFrontier_BattleDomeBattleRoom_Text_24CF7A + message BattleFrontier_BattleDomeBattleRoom_Text_SpectatorTuckerChant waitmessage playse SE_W227B - call BattleFrontier_BattleDomeBattleRoom_EventScript_24C82E + call BattleFrontier_BattleDomeBattleRoom_EventScript_AudienceLookAround waitse switch VAR_TEMP_E - case FRONTIER_BRAIN_GOLD, BattleFrontier_BattleDomeBattleRoom_EventScript_24C346 - case FRONTIER_BRAIN_STREAK, BattleFrontier_BattleDomeBattleRoom_EventScript_24C2B9 - case FRONTIER_BRAIN_STREAK_LONG, BattleFrontier_BattleDomeBattleRoom_EventScript_24C373 + case FRONTIER_BRAIN_GOLD, BattleFrontier_BattleDomeBattleRoom_EventScript_TuckerGoldIntro + case FRONTIER_BRAIN_STREAK, BattleFrontier_BattleDomeBattleRoom_EventScript_BattleTuckerSilver + case FRONTIER_BRAIN_STREAK_LONG, BattleFrontier_BattleDomeBattleRoom_EventScript_BattleTuckerGold frontier_get FRONTIER_DATA_HEARD_BRAIN_SPEECH compare VAR_RESULT, FALSE - goto_if_ne BattleFrontier_BattleDomeBattleRoom_EventScript_24C2B9 - msgbox BattleFrontier_BattleDomeBattleRoom_Text_24CFAE, MSGBOX_DEFAULT + goto_if_ne BattleFrontier_BattleDomeBattleRoom_EventScript_BattleTuckerSilver + msgbox BattleFrontier_BattleDomeBattleRoom_Text_TuckerSilverIntro, MSGBOX_DEFAULT frontier_set FRONTIER_DATA_HEARD_BRAIN_SPEECH -BattleFrontier_BattleDomeBattleRoom_EventScript_24C2B9:: @ 824C2B9 - msgbox BattleFrontier_BattleDomeBattleRoom_Text_24D0D9, MSGBOX_DEFAULT - call BattleFrontier_BattleDomeBattleRoom_EventScript_24C400 +BattleFrontier_BattleDomeBattleRoom_EventScript_BattleTuckerSilver:: @ 824C2B9 + msgbox BattleFrontier_BattleDomeBattleRoom_Text_LetsSeeYourStrategy, MSGBOX_DEFAULT + call BattleFrontier_BattleDomeBattleRoom_EventScript_DoTuckerBattle switch VAR_RESULT - case 2, BattleFrontier_BattleDomeBattleRoom_EventScript_24C420 - case 9, BattleFrontier_BattleDomeBattleRoom_EventScript_24C420 - case 3, BattleFrontier_BattleDomeBattleRoom_EventScript_24C436 - msgbox BattleFrontier_BattleDomeBattleRoom_Text_24D0F6, MSGBOX_DEFAULT - dome_resolvewinners 1 + case B_OUTCOME_LOST, BattleFrontier_BattleDomeBattleRoom_EventScript_LostToTucker + case B_OUTCOME_FORFEITED, BattleFrontier_BattleDomeBattleRoom_EventScript_LostToTucker + case B_OUTCOME_DREW, BattleFrontier_BattleDomeBattleRoom_EventScript_TuckerDraw + msgbox BattleFrontier_BattleDomeBattleRoom_Text_IncredibleVictorIsPlayer, MSGBOX_DEFAULT + dome_resolvewinners DOME_PLAYER_WON_MATCH frontier_getsymbols compare VAR_RESULT, 0 - goto_if_ne BattleFrontier_BattleDomeBattleRoom_EventScript_24BF62 + goto_if_ne BattleFrontier_BattleDomeBattleRoom_EventScript_WonTourney closemessage - applymovement 15, BattleFrontier_BattleDomeBattleRoom_Movement_24C82B + applymovement 15, BattleFrontier_BattleDomeBattleRoom_Movement_TuckerApproachPlayer waitmovement 0 - msgbox BattleFrontier_BattleDomeBattleRoom_Text_24D172, MSGBOX_DEFAULT + msgbox BattleFrontier_BattleDomeBattleRoom_Text_SeeYourFrontierPass, MSGBOX_DEFAULT playfanfare MUS_ME_SYMBOLGET - message BattleFrontier_BattleDomeBattleRoom_Text_24D1AA + message BattleFrontier_BattleDomeBattleRoom_Text_ReceivedTacticsSymbol waitmessage waitfanfare frontier_givesymbol - msgbox BattleFrontier_BattleDomeBattleRoom_Text_24D1E0, MSGBOX_DEFAULT - goto BattleFrontier_BattleDomeBattleRoom_EventScript_24BF62 + msgbox BattleFrontier_BattleDomeBattleRoom_Text_WontUnderestimateYouNextTime, MSGBOX_DEFAULT + goto BattleFrontier_BattleDomeBattleRoom_EventScript_WonTourney -BattleFrontier_BattleDomeBattleRoom_EventScript_24C346:: @ 824C346 +BattleFrontier_BattleDomeBattleRoom_EventScript_TuckerGoldIntro:: @ 824C346 frontier_get FRONTIER_DATA_HEARD_BRAIN_SPEECH compare VAR_RESULT, FALSE - goto_if_ne BattleFrontier_BattleDomeBattleRoom_EventScript_24C373 - msgbox BattleFrontier_BattleDomeBattleRoom_Text_24D319, MSGBOX_DEFAULT + goto_if_ne BattleFrontier_BattleDomeBattleRoom_EventScript_BattleTuckerGold + msgbox BattleFrontier_BattleDomeBattleRoom_Text_TuckerGoldIntro, MSGBOX_DEFAULT frontier_set FRONTIER_DATA_HEARD_BRAIN_SPEECH -BattleFrontier_BattleDomeBattleRoom_EventScript_24C373:: @ 824C373 - msgbox BattleFrontier_BattleDomeBattleRoom_Text_24D43E, MSGBOX_DEFAULT - call BattleFrontier_BattleDomeBattleRoom_EventScript_24C400 +BattleFrontier_BattleDomeBattleRoom_EventScript_BattleTuckerGold:: @ 824C373 + msgbox BattleFrontier_BattleDomeBattleRoom_Text_UnleashAllPowerIPossess, MSGBOX_DEFAULT + call BattleFrontier_BattleDomeBattleRoom_EventScript_DoTuckerBattle switch VAR_RESULT - case 2, BattleFrontier_BattleDomeBattleRoom_EventScript_24C420 - case 9, BattleFrontier_BattleDomeBattleRoom_EventScript_24C420 - case 3, BattleFrontier_BattleDomeBattleRoom_EventScript_24C436 - msgbox BattleFrontier_BattleDomeBattleRoom_Text_24D0F6, MSGBOX_DEFAULT - dome_resolvewinners 1 + case B_OUTCOME_LOST, BattleFrontier_BattleDomeBattleRoom_EventScript_LostToTucker + case B_OUTCOME_FORFEITED, BattleFrontier_BattleDomeBattleRoom_EventScript_LostToTucker + case B_OUTCOME_DREW, BattleFrontier_BattleDomeBattleRoom_EventScript_TuckerDraw + msgbox BattleFrontier_BattleDomeBattleRoom_Text_IncredibleVictorIsPlayer, MSGBOX_DEFAULT + dome_resolvewinners DOME_PLAYER_WON_MATCH frontier_getsymbols compare VAR_RESULT, 2 - goto_if_eq BattleFrontier_BattleDomeBattleRoom_EventScript_24BF62 + goto_if_eq BattleFrontier_BattleDomeBattleRoom_EventScript_WonTourney closemessage - applymovement 15, BattleFrontier_BattleDomeBattleRoom_Movement_24C82B + applymovement 15, BattleFrontier_BattleDomeBattleRoom_Movement_TuckerApproachPlayer waitmovement 0 - msgbox BattleFrontier_BattleDomeBattleRoom_Text_24D47F, MSGBOX_DEFAULT + msgbox BattleFrontier_BattleDomeBattleRoom_Text_NeverLostWhenPowerUnleashed, MSGBOX_DEFAULT playfanfare MUS_ME_SYMBOLGET - message BattleFrontier_BattleDomeBattleRoom_Text_24D522 + message BattleFrontier_BattleDomeBattleRoom_Text_TacticsSymbolTookGoldenShine waitmessage waitfanfare frontier_givesymbol - msgbox BattleFrontier_BattleDomeBattleRoom_Text_24D54D, MSGBOX_DEFAULT - goto BattleFrontier_BattleDomeBattleRoom_EventScript_24BF62 + msgbox BattleFrontier_BattleDomeBattleRoom_Text_LookForwardToNextEncounter, MSGBOX_DEFAULT + goto BattleFrontier_BattleDomeBattleRoom_EventScript_WonTourney -BattleFrontier_BattleDomeBattleRoom_EventScript_24C400:: @ 824C400 - msgbox BattleFrontier_BattleDomeBattleRoom_Text_24D677, MSGBOX_DEFAULT +BattleFrontier_BattleDomeBattleRoom_EventScript_DoTuckerBattle:: @ 824C400 + msgbox BattleFrontier_BattleDomeBattleRoom_Text_PlayerVersusTucker, MSGBOX_DEFAULT closemessage - applymovement 13, BattleFrontier_BattleDomeBattleRoom_Movement_24C787 - applymovement 15, BattleFrontier_BattleDomeBattleRoom_Movement_24C829 + applymovement 13, BattleFrontier_BattleDomeBattleRoom_Movement_PlayerStepForward2 + applymovement 15, BattleFrontier_BattleDomeBattleRoom_Movement_TuckerStepForward waitmovement 0 - call BattleFrontier_BattleDomeBattleRoom_EventScript_24C440 + call BattleFrontier_BattleDomeBattleRoom_EventScript_DoDomeBattle return -BattleFrontier_BattleDomeBattleRoom_EventScript_24C420:: @ 824C420 - msgbox BattleFrontier_BattleDomeBattleRoom_Text_24D127, MSGBOX_DEFAULT +BattleFrontier_BattleDomeBattleRoom_EventScript_LostToTucker:: @ 824C420 + msgbox BattleFrontier_BattleDomeBattleRoom_Text_WinnerIsTucker, MSGBOX_DEFAULT playse SE_W227B - call BattleFrontier_BattleDomeBattleRoom_EventScript_24C82E + call BattleFrontier_BattleDomeBattleRoom_EventScript_AudienceLookAround waitse - goto BattleFrontier_BattleDomeBattleRoom_EventScript_24BE8D + goto BattleFrontier_BattleDomeBattleRoom_EventScript_LostTourney -BattleFrontier_BattleDomeBattleRoom_EventScript_24C436:: @ 824C436 - setvar VAR_TEMP_2, 2 - goto BattleFrontier_BattleDomeBattleRoom_EventScript_24BDF7 +BattleFrontier_BattleDomeBattleRoom_EventScript_TuckerDraw:: @ 824C436 + setvar VAR_TEMP_2, DRAW_TUCKER + goto BattleFrontier_BattleDomeBattleRoom_EventScript_Draw -BattleFrontier_BattleDomeBattleRoom_EventScript_24C440:: @ 824C440 +BattleFrontier_BattleDomeBattleRoom_EventScript_DoDomeBattle:: @ 824C440 frontier_set FRONTIER_DATA_RECORD_DISABLED, FALSE special HealPlayerParty setvar VAR_0x8004, SPECIAL_BATTLE_DOME @@ -478,56 +472,56 @@ BattleFrontier_BattleDomeBattleRoom_EventScript_24C440:: @ 824C440 dome_resetsketch return -BattleFrontier_BattleDomeBattleRoom_MapScript2_24C481: @ 824C481 - map_script_2 VAR_TEMP_1, 0, BattleFrontier_BattleDomeBattleRoom_EventScript_24C48B +BattleFrontier_BattleDomeBattleRoom_OnWarp: @ 824C481 + map_script_2 VAR_TEMP_1, 0, BattleFrontier_BattleDomeBattleRoom_EventScript_SetUpObjects .2byte 0 -BattleFrontier_BattleDomeBattleRoom_EventScript_24C48B:: @ 824C48B +BattleFrontier_BattleDomeBattleRoom_EventScript_SetUpObjects:: @ 824C48B hideobjectat 13, MAP_BATTLE_FRONTIER_BATTLE_DOME_BATTLE_ROOM - call BattleFrontier_BattleDomeBattleRoom_EventScript_24C502 + call BattleFrontier_BattleDomeBattleRoom_EventScript_AddAudience call BattleFrontier_BattleDomeBattleRoom_EventScript_SetPlayerGfx setvar VAR_TEMP_1, 1 applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattleDomeBattleRoom_Movement_SetInvisible frontier_get FRONTIER_DATA_BATTLE_NUM - compare VAR_RESULT, 3 - goto_if_ne BattleFrontier_BattleDomeBattleRoom_EventScript_24C4EF + compare VAR_RESULT, DOME_FINAL + goto_if_ne BattleFrontier_BattleDomeBattleRoom_EventScript_EndSetUpObjects frontier_getbrainstatus copyvar VAR_TEMP_E, VAR_RESULT compare VAR_RESULT, FRONTIER_BRAIN_NOT_READY - goto_if_eq BattleFrontier_BattleDomeBattleRoom_EventScript_24C4EF + goto_if_eq BattleFrontier_BattleDomeBattleRoom_EventScript_EndSetUpObjects call BattleFrontier_EventScript_SetBrainObjectGfx setobjectxyperm 15, 13, 9 removeobject 15 addobject 15 - applymovement 15, BattleFrontier_BattleDomeBattleRoom_Movement_24C78B - -BattleFrontier_BattleDomeBattleRoom_EventScript_24C4EF:: @ 824C4EF + applymovement 15, BattleFrontier_BattleDomeBattleRoom_Movement_SetInvisibleFacingUp +BattleFrontier_BattleDomeBattleRoom_EventScript_EndSetUpObjects:: @ 824C4EF end -BattleFrontier_BattleDomeBattleRoom_MapScript1_24C4F0: @ 824C4F0 +BattleFrontier_BattleDomeBattleRoom_OnResume: @ 824C4F0 compare VAR_TEMP_9, 1 - call_if_eq BattleFrontier_BattleDomeBattleRoom_EventScript_24C4FC + call_if_eq BattleFrontier_BattleDomeBattleRoom_EventScript_CallAddAudience end -BattleFrontier_BattleDomeBattleRoom_EventScript_24C4FC:: @ 824C4FC - call BattleFrontier_BattleDomeBattleRoom_EventScript_24C502 +BattleFrontier_BattleDomeBattleRoom_EventScript_CallAddAudience:: @ 824C4FC + call BattleFrontier_BattleDomeBattleRoom_EventScript_AddAudience return -BattleFrontier_BattleDomeBattleRoom_EventScript_24C502:: @ 824C502 - compare VAR_TEMP_F, 0 - call_if_eq BattleFrontier_BattleDomeBattleRoom_EventScript_24C52F - compare VAR_TEMP_F, 1 - call_if_eq BattleFrontier_BattleDomeBattleRoom_EventScript_24C530 - compare VAR_TEMP_F, 2 - call_if_eq BattleFrontier_BattleDomeBattleRoom_EventScript_24C594 - compare VAR_TEMP_F, 3 - call_if_eq BattleFrontier_BattleDomeBattleRoom_EventScript_24C652 +@ Add audience members to supplement the permanent object event audience +BattleFrontier_BattleDomeBattleRoom_EventScript_AddAudience:: @ 824C502 + compare VAR_TEMP_F, DOME_ROUND1 + call_if_eq BattleFrontier_BattleDomeBattleRoom_EventScript_AddRound1Audience + compare VAR_TEMP_F, DOME_ROUND2 + call_if_eq BattleFrontier_BattleDomeBattleRoom_EventScript_AddRound2Audience + compare VAR_TEMP_F, DOME_SEMIFINAL + call_if_eq BattleFrontier_BattleDomeBattleRoom_EventScript_AddSemifinalAudience + compare VAR_TEMP_F, DOME_FINAL + call_if_eq BattleFrontier_BattleDomeBattleRoom_EventScript_AddFinalAudience return -BattleFrontier_BattleDomeBattleRoom_EventScript_24C52F:: @ 824C52F +BattleFrontier_BattleDomeBattleRoom_EventScript_AddRound1Audience:: @ 824C52F return -BattleFrontier_BattleDomeBattleRoom_EventScript_24C530:: @ 824C530 +BattleFrontier_BattleDomeBattleRoom_EventScript_AddRound2Audience:: @ 824C530 createvobject OBJ_EVENT_GFX_SCIENTIST_1, 1, 3, 0, 3, DIR_SOUTH createvobject OBJ_EVENT_GFX_EXPERT_F, 4, 6, 0, 3, DIR_SOUTH createvobject OBJ_EVENT_GFX_NINJA_BOY, 6, 8, 0, 3, DIR_SOUTH @@ -541,7 +535,7 @@ BattleFrontier_BattleDomeBattleRoom_EventScript_24C530:: @ 824C530 createvobject OBJ_EVENT_GFX_SCHOOL_KID_M, 29, 5, 1, 3, DIR_SOUTH return -BattleFrontier_BattleDomeBattleRoom_EventScript_24C594:: @ 824C594 +BattleFrontier_BattleDomeBattleRoom_EventScript_AddSemifinalAudience:: @ 824C594 createvobject OBJ_EVENT_GFX_SCIENTIST_1, 1, 3, 0, 3, DIR_SOUTH createvobject OBJ_EVENT_GFX_EXPERT_F, 4, 6, 0, 3, DIR_SOUTH createvobject OBJ_EVENT_GFX_NINJA_BOY, 6, 8, 0, 3, DIR_SOUTH @@ -565,7 +559,7 @@ BattleFrontier_BattleDomeBattleRoom_EventScript_24C594:: @ 824C594 createvobject OBJ_EVENT_GFX_WOMAN_5, 31, 8, 2, 3, 1 return -BattleFrontier_BattleDomeBattleRoom_EventScript_24C652:: @ 824C652 +BattleFrontier_BattleDomeBattleRoom_EventScript_AddFinalAudience:: @ 824C652 createvobject OBJ_EVENT_GFX_NINJA_BOY, 0, 2, 0, 3, DIR_SOUTH createvobject OBJ_EVENT_GFX_SCIENTIST_1, 1, 3, 0, 3, DIR_SOUTH createvobject OBJ_EVENT_GFX_BEAUTY, 2, 15, 0, 3, DIR_SOUTH @@ -604,23 +598,23 @@ BattleFrontier_BattleDomeBattleRoom_Movement_SetInvisible: @ 824C773 set_invisible step_end -BattleFrontier_BattleDomeBattleRoom_Movement_24C775: @ 824C775 +BattleFrontier_BattleDomeBattleRoom_Movement_PlayerEnter: @ 824C775 set_visible delay_16 walk_up walk_up walk_up walk_right - -BattleFrontier_BattleDomeBattleRoom_Movement_24C77B: @ 824C77B +BattleFrontier_BattleDomeBattleRoom_Movement_PlayerStepForward: @ 824C77B walk_right step_end -BattleFrontier_BattleDomeBattleRoom_Movement_24C77D: @ 824C77D +BattleFrontier_BattleDomeBattleRoom_Movement_PlayerApproachAudience: @ 824C77D walk_up step_end -BattleFrontier_BattleDomeBattleRoom_Movement_24C77F: @ 824C77F +@ Identical to Movement_PlayerEnter +BattleFrontier_BattleDomeBattleRoom_Movement_PlayerEnterForTucker: @ 824C77F set_visible delay_16 walk_up @@ -630,20 +624,20 @@ BattleFrontier_BattleDomeBattleRoom_Movement_24C77F: @ 824C77F walk_right step_end -BattleFrontier_BattleDomeBattleRoom_Movement_24C787: @ 824C787 +BattleFrontier_BattleDomeBattleRoom_Movement_PlayerStepForward2: @ 824C787 walk_right step_end -BattleFrontier_BattleDomeBattleRoom_Movement_24C789: @ 824C789 +BattleFrontier_BattleDomeBattleRoom_Movement_OpponentStepForward: @ 824C789 walk_left step_end -BattleFrontier_BattleDomeBattleRoom_Movement_24C78B: @ 824C78B +BattleFrontier_BattleDomeBattleRoom_Movement_SetInvisibleFacingUp: @ 824C78B face_up set_invisible step_end -BattleFrontier_BattleDomeBattleRoom_Movement_24C78E: @ 824C78E +BattleFrontier_BattleDomeBattleRoom_Movement_TuckerEnterAndDance: @ 824C78E set_visible walk_up walk_up @@ -752,7 +746,7 @@ BattleFrontier_BattleDomeBattleRoom_Movement_24C78E: @ 824C78E walk_left step_end -BattleFrontier_BattleDomeBattleRoom_Movement_24C7F9: @ 824C7F9 +BattleFrontier_BattleDomeBattleRoom_Movement_RefereeMoveForTuckerEntrance: @ 824C7F9 delay_16 delay_16 walk_left @@ -802,16 +796,16 @@ BattleFrontier_BattleDomeBattleRoom_Movement_24C7F9: @ 824C7F9 walk_in_place_fastest_down step_end -BattleFrontier_BattleDomeBattleRoom_Movement_24C829: @ 824C829 +BattleFrontier_BattleDomeBattleRoom_Movement_TuckerStepForward: @ 824C829 walk_left step_end -BattleFrontier_BattleDomeBattleRoom_Movement_24C82B: @ 824C82B +BattleFrontier_BattleDomeBattleRoom_Movement_TuckerApproachPlayer: @ 824C82B walk_left walk_left step_end -BattleFrontier_BattleDomeBattleRoom_EventScript_24C82E:: @ 824C82E +BattleFrontier_BattleDomeBattleRoom_EventScript_AudienceLookAround:: @ 824C82E turnvobject 0, DIR_EAST turnvobject 2, DIR_EAST turnvobject 4, DIR_EAST @@ -880,21 +874,21 @@ BattleFrontier_BattleDomeBattleRoom_EventScript_24C82E:: @ 824C82E delay 20 return -BattleFrontier_BattleDomeBattleRoom_EventScript_24C8F5:: @ 824C8F5 -BattleFrontier_BattleDomePreBattleRoom_EventScript_24C8F5:: @ 824C8F5 +BattleFrontier_BattleDomeBattleRoom_EventScript_WarpToLobby:: @ 824C8F5 copyvar VAR_RESULT, VAR_FRONTIER_BATTLE_MODE compare VAR_RESULT, FRONTIER_MODE_DOUBLES - goto_if_eq BattleFrontier_BattleDomePreBattleRoom_EventScript_24C90F + goto_if_eq BattleFrontier_BattleDomePreBattleRoom_EventScript_WarpToLobbyDoubles warp MAP_BATTLE_FRONTIER_BATTLE_DOME_LOBBY, 255, 5, 11 waitstate end -BattleFrontier_BattleDomePreBattleRoom_EventScript_24C90F:: @ 824C90F +BattleFrontier_BattleDomePreBattleRoom_EventScript_WarpToLobbyDoubles:: @ 824C90F warp MAP_BATTLE_FRONTIER_BATTLE_DOME_LOBBY, 255, 17, 11 waitstate end -BattleFrontier_BattleDomeBattleRoom_EventScript_24C919:: @ 824C919 +@ On round 1 there's a 50% chance that a specific audience member will walk to his seat +BattleFrontier_BattleDomeBattleRoom_EventScript_SetWalkingAudienceMemberPos:: @ 824C919 random 2 copyvar VAR_TEMP_D, VAR_RESULT compare VAR_TEMP_D, 0 @@ -903,13 +897,13 @@ BattleFrontier_BattleDomeBattleRoom_EventScript_24C919:: @ 824C919 setobjectmovementtype 6, MOVEMENT_TYPE_FACE_RIGHT return -BattleFrontier_BattleDomeBattleRoom_EventScript_24C938:: @ 824C938 +BattleFrontier_BattleDomeBattleRoom_EventScript_TryDoAudienceMemberWalkToSeat:: @ 824C938 compare VAR_TEMP_D, 0 goto_if_eq Common_EventScript_NopReturn - applymovement 6, BattleFrontier_BattleDomeBattleRoom_Movement_24C95E + applymovement 6, BattleFrontier_BattleDomeBattleRoom_Movement_AudienceMemberWalkToSeat return -BattleFrontier_BattleDomeBattleRoom_Movement_24C94B: @ 824C94B +BattleFrontier_BattleDomeBattleRoom_Movement_AudienceTwinJump: @ 824C94B delay_16 delay_16 delay_16 @@ -930,7 +924,7 @@ BattleFrontier_BattleDomeBattleRoom_Movement_24C94B: @ 824C94B enable_jump_landing_ground_effect step_end -BattleFrontier_BattleDomeBattleRoom_Movement_24C95E: @ 824C95E +BattleFrontier_BattleDomeBattleRoom_Movement_AudienceMemberWalkToSeat: @ 824C95E walk_down walk_down walk_right @@ -938,52 +932,52 @@ BattleFrontier_BattleDomeBattleRoom_Movement_24C95E: @ 824C95E walk_in_place_fastest_down step_end -BattleFrontier_BattleDomeBattleRoom_Movement_24C964: @ 824C964 +BattleFrontier_BattleDomeBattleRoom_Movement_TieRefereeEnter: @ 824C964 walk_right walk_right walk_right walk_right step_end -BattleFrontier_BattleDomeBattleRoom_Movement_24C969: @ 824C969 +BattleFrontier_BattleDomeBattleRoom_Movement_RefereeFaceLeft: @ 824C969 walk_in_place_fastest_left step_end -BattleFrontier_BattleDomeBattleRoom_Movement_24C96B: @ 824C96B +BattleFrontier_BattleDomeBattleRoom_Movement_TieRefereeExit: @ 824C96B walk_left walk_left walk_left walk_left step_end -BattleFrontier_BattleDomeBattleRoom_Text_24C970: @ 824C970 +BattleFrontier_BattleDomeBattleRoom_Text_PlayerHasEnteredDome: @ 824C970 .string "{PLAYER} has entered the BATTLE DOME!$" -BattleFrontier_BattleDomeBattleRoom_Text_24C990: @ 824C990 +BattleFrontier_BattleDomeBattleRoom_Text_PlayerVersusTrainer: @ 824C990 .string "{STR_VAR_1}\n" .string "match!\p" .string "{PLAYER} versus {STR_VAR_2}!\p" .string "Let the battle begin!$" -BattleFrontier_BattleDomeBattleRoom_Text_24C9BE: @ 824C9BE +BattleFrontier_BattleDomeBattleRoom_Text_PlayerIsWinner: @ 824C9BE .string "{PLAYER} is the winner!\n" .string "Congratulations!$" -BattleFrontier_BattleDomeBattleRoom_Text_24C9E1: @ 824C9E1 +BattleFrontier_BattleDomeBattleRoom_Text_TrainerIsWinner: @ 824C9E1 .string "{STR_VAR_2} is the winner!\n" .string "Congratulations!$" -BattleFrontier_BattleDomeBattleRoom_Text_24CA04: @ 824CA04 +BattleFrontier_BattleDomeBattleRoom_Text_PlayerIsLv50Champ: @ 824CA04 .string "{PLAYER} is the Level 50\n" .string "Battle Tournament Champion!\p" .string "Congratulations!$" -BattleFrontier_BattleDomeBattleRoom_Text_24CA44: @ 824CA44 +BattleFrontier_BattleDomeBattleRoom_Text_PlayerIsLvOpenChamp: @ 824CA44 .string "{PLAYER} is the Open Level\n" .string "Battle Tournament Champion!\p" .string "Congratulations!$" -BattleFrontier_BattleDomeBattleRoom_Text_24CA86: @ 824CA86 +BattleFrontier_BattleDomeBattleRoom_Text_RefereeDecisionPleaseWait: @ 824CA86 .string "What an unbelievable finish!\n" .string "We have a double knockout!\p" .string "In this event, the Battle Tournament\n" @@ -991,7 +985,7 @@ BattleFrontier_BattleDomeBattleRoom_Text_24CA86: @ 824CA86 .string "Please wait while the judging\n" .string "is under way.$" -BattleFrontier_BattleDomeBattleRoom_Text_24CB34: @ 824CB34 +BattleFrontier_BattleDomeBattleRoom_Text_RefereesDecidedWinnerTrainer: @ 824CB34 .string "The REFEREES have reached\n" .string "a decision!\p" .string "The winner is…\n" @@ -999,7 +993,7 @@ BattleFrontier_BattleDomeBattleRoom_Text_24CB34: @ 824CB34 .string "The winner is {STR_VAR_1}!\l" .string "Congratulations!$" -BattleFrontier_BattleDomeBattleRoom_Text_24CB9D: @ 824CB9D +BattleFrontier_BattleDomeBattleRoom_Text_RefereesDecidedWinnerPlayer: @ 824CB9D .string "The REFEREES have reached\n" .string "a decision!\p" .string "The winner is…\n" @@ -1007,85 +1001,85 @@ BattleFrontier_BattleDomeBattleRoom_Text_24CB9D: @ 824CB9D .string "The winner is {PLAYER}!\l" .string "Congratulations!$" -BattleFrontier_BattleDomeBattleRoom_Text_24CC06: @ 824CC06 +BattleFrontier_BattleDomeBattleRoom_Text_BrightNewHope: @ 824CC06 .string "The bright new hope!\p" .string "$" -BattleFrontier_BattleDomeBattleRoom_Text_24CC1C: @ 824CC1C +BattleFrontier_BattleDomeBattleRoom_Text_RisingStar: @ 824CC1C .string "The rising star!\p" .string "$" -BattleFrontier_BattleDomeBattleRoom_Text_24CC2E: @ 824CC2E +BattleFrontier_BattleDomeBattleRoom_Text_WillTheyRaceToChampionship: @ 824CC2E .string "Will this TRAINER race to\n" .string "the championship?\p" .string "$" -BattleFrontier_BattleDomeBattleRoom_Text_24CC5B: @ 824CC5B +BattleFrontier_BattleDomeBattleRoom_Text_CanAchieveChampionFirstTry: @ 824CC5B .string "Can the feat of a championship\n" .string "on the first try be achieved?\p" .string "$" -BattleFrontier_BattleDomeBattleRoom_Text_24CC99: @ 824CC99 +BattleFrontier_BattleDomeBattleRoom_Text_CanLossBeAvenged: @ 824CC99 .string "Can the loss of the last match\n" .string "be avenged?\p" .string "$" -BattleFrontier_BattleDomeBattleRoom_Text_24CCC5: @ 824CCC5 +BattleFrontier_BattleDomeBattleRoom_Text_OnFireForChampionship: @ 824CCC5 .string "The TRAINER is on fire for\n" .string "the first championship try!\p" .string "$" -BattleFrontier_BattleDomeBattleRoom_Text_24CCFD: @ 824CCFD +BattleFrontier_BattleDomeBattleRoom_Text_WinHereAdvancesToFinal: @ 824CCFD .string "A win here means this TRAINER\n" .string "advances to the final!\p" .string "$" -BattleFrontier_BattleDomeBattleRoom_Text_24CD33: @ 824CD33 +BattleFrontier_BattleDomeBattleRoom_Text_WillLongHeldDreamComeTrue: @ 824CD33 .string "Will the long-held dream of\n" .string "a championship finally come true?\p" .string "$" -BattleFrontier_BattleDomeBattleRoom_Text_24CD72: @ 824CD72 +BattleFrontier_BattleDomeBattleRoom_Text_TheInvincibleChampion: @ 824CD72 .string "The invincible champion!\p" .string "$" -BattleFrontier_BattleDomeBattleRoom_Text_24CD8C: @ 824CD8C +BattleFrontier_BattleDomeBattleRoom_Text_CanAnyoneHopeToBeatTrainer: @ 824CD8C .string "Can anyone hope to beat this\n" .string "TRAINER?\p" .string "$" -BattleFrontier_BattleDomeBattleRoom_Text_24CDB3: @ 824CDB3 +BattleFrontier_BattleDomeBattleRoom_Text_DoBattlesExistSolelyForTrainer: @ 824CDB3 .string "Do battles exist solely for\n" .string "this TRAINER?\p" .string "$" -BattleFrontier_BattleDomeBattleRoom_Text_24CDDE: @ 824CDDE +BattleFrontier_BattleDomeBattleRoom_Text_CurrentChampAimingToRetainTitle: @ 824CDDE .string "The current champion aiming to\n" .string "retain the title!\p" .string "$" -BattleFrontier_BattleDomeBattleRoom_Text_24CE10: @ 824CE10 +BattleFrontier_BattleDomeBattleRoom_Text_FormerChampHasReturned: @ 824CE10 .string "The former champion has returned!\p" .string "$" -BattleFrontier_BattleDomeBattleRoom_Text_24CE33: @ 824CE33 +BattleFrontier_BattleDomeBattleRoom_Text_FormerToughnessReturned: @ 824CE33 .string "The former toughness has returned!\p" .string "$" -BattleFrontier_BattleDomeBattleRoom_Text_24CE57: @ 824CE57 +BattleFrontier_BattleDomeBattleRoom_Text_WillDoExpectedAdvanceToFinals: @ 824CE57 .string "Will this TRAINER do as expected\n" .string "and advance to the finals?\p" .string "$" -BattleFrontier_BattleDomeBattleRoom_Text_24CE94: @ 824CE94 +BattleFrontier_BattleDomeBattleRoom_Text_WillFormerChampRegainGlory: @ 824CE94 .string "Will the former champ regain\n" .string "lost glory?\p" .string "$" -BattleFrontier_BattleDomeBattleRoom_Text_24CEBE: @ 824CEBE +BattleFrontier_BattleDomeBattleRoom_Text_FeelGlowOfTrueMaster: @ 824CEBE .string "Feel the glow of a true master!$" -BattleFrontier_BattleDomeBattleRoom_Text_24CEDE: @ 824CEDE +BattleFrontier_BattleDomeBattleRoom_Text_MakeWayForDomeAceTucker: @ 824CEDE .string "And now… The TRAINER standing in\n" .string "{PLAYER}'s record-setting path…\p" .string "Yes! The one and only!\n" @@ -1093,11 +1087,11 @@ BattleFrontier_BattleDomeBattleRoom_Text_24CEDE: @ 824CEDE .string "Our very own DOME ACE!\l" .string "Make way for TUCKER!$" -BattleFrontier_BattleDomeBattleRoom_Text_24CF7A: @ 824CF7A +BattleFrontier_BattleDomeBattleRoom_Text_SpectatorTuckerChant: @ 824CF7A .string "Spectators: TUCKER! TUCKER!\n" .string "TUCKER! TUCKER! TUCKER!$" -BattleFrontier_BattleDomeBattleRoom_Text_24CFAE: @ 824CFAE +BattleFrontier_BattleDomeBattleRoom_Text_TuckerSilverIntro: @ 824CFAE .string "TUCKER: Ahahah!\p" .string "Do you hear it? This crowd!\n" .string "They're all itching to see our match!\p" @@ -1109,37 +1103,37 @@ BattleFrontier_BattleDomeBattleRoom_Text_24CFAE: @ 824CFAE .string "I, TUCKER the DOME ACE, will bathe you\l" .string "in my brilliant glow!$" -BattleFrontier_BattleDomeBattleRoom_Text_24D0D9: @ 824D0D9 +BattleFrontier_BattleDomeBattleRoom_Text_LetsSeeYourStrategy: @ 824D0D9 .string "Your strategy!\n" .string "Let's see it!$" -BattleFrontier_BattleDomeBattleRoom_Text_24D0F6: @ 824D0F6 +BattleFrontier_BattleDomeBattleRoom_Text_IncredibleVictorIsPlayer: @ 824D0F6 .string "Unbelievable! It's incredible!\n" .string "The victor is {PLAYER}!$" -BattleFrontier_BattleDomeBattleRoom_Text_24D127: @ 824D127 +BattleFrontier_BattleDomeBattleRoom_Text_WinnerIsTucker: @ 824D127 .string "The winner is TUCKER!\n" .string "The DOME ACE has prevailed!\p" .string "Congratulations, TUCKER!$" -BattleFrontier_BattleDomeBattleRoom_Text_24D172: @ 824D172 +BattleFrontier_BattleDomeBattleRoom_Text_SeeYourFrontierPass: @ 824D172 .string "TUCKER: Rules are rules!\n" .string "Let me see your FRONTIER PASS.$" -BattleFrontier_BattleDomeBattleRoom_Text_24D1AA: @ 824D1AA +BattleFrontier_BattleDomeBattleRoom_Text_ReceivedTacticsSymbol: @ 824D1AA .string "The Tactics Symbol was embossed on\n" .string "the FRONTIER PASS!$" -BattleFrontier_BattleDomeBattleRoom_Text_24D1E0: @ 824D1E0 +BattleFrontier_BattleDomeBattleRoom_Text_WontUnderestimateYouNextTime: @ 824D1E0 .string "… … … … … …\p" .string "I sorely underestimated you. I won't\n" .string "make the same mistake next time…$" -BattleFrontier_BattleDomeBattleRoom_Text_24D232: @ 824D232 +BattleFrontier_BattleDomeBattleRoom_Text_CanWinStreakBeStretched: @ 824D232 .string "Can the win streak be stretched?\n" .string "The confidence is there!$" -BattleFrontier_BattleDomeBattleRoom_Text_24D26C: @ 824D26C +BattleFrontier_BattleDomeBattleRoom_Text_LegendHasReturnedDomeAceTucker: @ 824D26C .string "Ladies and gentlemen!\n" .string "Boys, girls, and POKéMON!\p" .string "Finally!\n" @@ -1148,7 +1142,7 @@ BattleFrontier_BattleDomeBattleRoom_Text_24D26C: @ 824D26C .string "Our very own DOME ACE!\l" .string "It's none other than TUCKER!$" -BattleFrontier_BattleDomeBattleRoom_Text_24D319: @ 824D319 +BattleFrontier_BattleDomeBattleRoom_Text_TuckerGoldIntro: @ 824D319 .string "TUCKER: Ah…\n" .string "The pummeling roar of the crowd…\l" .string "Their furnace-like heat of excitement…\l" @@ -1160,22 +1154,22 @@ BattleFrontier_BattleDomeBattleRoom_Text_24D319: @ 824D319 .string "Brighter and more brilliant!\l" .string "I must light all that gather here!$" -BattleFrontier_BattleDomeBattleRoom_Text_24D43E: @ 824D43E +BattleFrontier_BattleDomeBattleRoom_Text_UnleashAllPowerIPossess: @ 824D43E .string "I will unleash all the power that\n" .string "I possess! Right here and now!$" -BattleFrontier_BattleDomeBattleRoom_Text_24D47F: @ 824D47F +BattleFrontier_BattleDomeBattleRoom_Text_NeverLostWhenPowerUnleashed: @ 824D47F .string "TUCKER: You're genuinely fantastic!\p" .string "Never before! I haven't ever lost in the\n" .string "times I've had to unleash my power.\p" .string "Yes, quite fantastic!\n" .string "Your FRONTIER PASS, please?$" -BattleFrontier_BattleDomeBattleRoom_Text_24D522: @ 824D522 +BattleFrontier_BattleDomeBattleRoom_Text_TacticsSymbolTookGoldenShine: @ 824D522 .string "The Tactics Symbol took on\n" .string "a golden shine!$" -BattleFrontier_BattleDomeBattleRoom_Text_24D54D: @ 824D54D +BattleFrontier_BattleDomeBattleRoom_Text_LookForwardToNextEncounter: @ 824D54D .string "You're strong, but above all,\n" .string "you have a unique charm!\p" .string "In you, I see a definite potential for\n" @@ -1183,22 +1177,24 @@ BattleFrontier_BattleDomeBattleRoom_Text_24D54D: @ 824D54D .string "I will very much look forward to\n" .string "our next encounter!$" -BattleFrontier_BattleDomeBattleRoom_Text_24D5F5: @ 824D5F5 +@ Unused +BattleFrontier_BattleDomeBattleRoom_Text_PlayerIsLv50Champ2: @ 824D5F5 .string "{PLAYER} is the Level 50\n" .string "Battle Tournament Champion!\p" .string "Congratulations!$" -BattleFrontier_BattleDomeBattleRoom_Text_24D635: @ 824D635 +@ Unused +BattleFrontier_BattleDomeBattleRoom_Text_PlayerIsLvOpenChamp2: @ 824D635 .string "{PLAYER} is the Open Level\n" .string "Battle Tournament Champion!\p" .string "Congratulations!$" -BattleFrontier_BattleDomeBattleRoom_Text_24D677: @ 824D677 +BattleFrontier_BattleDomeBattleRoom_Text_PlayerVersusTucker: @ 824D677 .string "The final match!\p" .string "{PLAYER} versus the DOME ACE, TUCKER!\p" .string "Let the battle begin!$" -BattleFrontier_BattleDomeBattleRoom_Text_24D6BE: @ 824D6BE +BattleFrontier_BattleDomeBattleRoom_Text_RefereesDecidedWinnerTucker: @ 824D6BE .string "The REFEREES have reached\n" .string "a decision!\p" .string "The winner is…\n" diff --git a/data/maps/BattleFrontier_BattleDomeCorridor/scripts.inc b/data/maps/BattleFrontier_BattleDomeCorridor/scripts.inc index 3208efe4b..ea9da5183 100644 --- a/data/maps/BattleFrontier_BattleDomeCorridor/scripts.inc +++ b/data/maps/BattleFrontier_BattleDomeCorridor/scripts.inc @@ -1,48 +1,48 @@ BattleFrontier_BattleDomeCorridor_MapScripts:: @ 824B0FE - map_script MAP_SCRIPT_ON_FRAME_TABLE, BattleFrontier_BattleDomeCorridor_MapScript2_24B104 + map_script MAP_SCRIPT_ON_FRAME_TABLE, BattleFrontier_BattleDomeCorridor_OnFrame .byte 0 -BattleFrontier_BattleDomeCorridor_MapScript2_24B104: @ 824B104 - map_script_2 VAR_TEMP_0, 0, BattleFrontier_BattleDomeCorridor_EventScript_24B10E +BattleFrontier_BattleDomeCorridor_OnFrame: @ 824B104 + map_script_2 VAR_TEMP_0, 0, BattleFrontier_BattleDomeCorridor_EventScript_EnterCorridor .2byte 0 -BattleFrontier_BattleDomeCorridor_EventScript_24B10E:: @ 824B10E +BattleFrontier_BattleDomeCorridor_EventScript_EnterCorridor:: @ 824B10E delay 16 setvar VAR_TEMP_0, 1 frontier_get FRONTIER_DATA_LVL_MODE compare VAR_RESULT, FRONTIER_LVL_OPEN - goto_if_eq BattleFrontier_BattleDomeCorridor_EventScript_24B161 - applymovement 1, BattleFrontier_BattleDomeCorridor_Movement_24B1B2 - applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattleDomeCorridor_Movement_24B1A1 + goto_if_eq BattleFrontier_BattleDomeCorridor_EventScript_WalkToBattleRoomLvOpen + applymovement 1, BattleFrontier_BattleDomeCorridor_Movement_AttendantWalkToDoorLv50 + applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattleDomeCorridor_Movement_PlayerWalkToDoorLv50 waitmovement 0 opendoor 13, 3 waitdooranim - applymovement 1, BattleFrontier_BattleDomeCorridor_Movement_24B1BE - applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattleDomeCorridor_Movement_24B1AE + applymovement 1, BattleFrontier_BattleDomeCorridor_Movement_AttendantEnterDoorLv50 + applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattleDomeCorridor_Movement_PlayerEnterDoorLv50 waitmovement 0 closedoor 13, 3 waitdooranim - goto BattleFrontier_BattleDomeCorridor_EventScript_24B18F + goto BattleFrontier_BattleDomeCorridor_EventScript_WarpToPreBattleRoom -BattleFrontier_BattleDomeCorridor_EventScript_24B161:: @ 824B161 - applymovement 1, BattleFrontier_BattleDomeCorridor_Movement_24B1D6 - applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattleDomeCorridor_Movement_24B1C1 +BattleFrontier_BattleDomeCorridor_EventScript_WalkToBattleRoomLvOpen:: @ 824B161 + applymovement 1, BattleFrontier_BattleDomeCorridor_Movement_AttendantWalkToDoorLvOpen + applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattleDomeCorridor_Movement_PlayerWalkToDoorLvOpen waitmovement 0 opendoor 37, 3 waitdooranim - applymovement 1, BattleFrontier_BattleDomeCorridor_Movement_24B1E6 - applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattleDomeCorridor_Movement_24B1D2 + applymovement 1, BattleFrontier_BattleDomeCorridor_Movement_AttendantEnterDoorLvOpen + applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattleDomeCorridor_Movement_PlayerEnterDoorLvOpen waitmovement 0 closedoor 37, 3 waitdooranim -BattleFrontier_BattleDomeCorridor_EventScript_24B18F:: @ 824B18F +BattleFrontier_BattleDomeCorridor_EventScript_WarpToPreBattleRoom:: @ 824B18F waitmovement 0 setvar VAR_0x8006, 0 warp MAP_BATTLE_FRONTIER_BATTLE_DOME_PRE_BATTLE_ROOM, 255, 5, 7 waitstate end -BattleFrontier_BattleDomeCorridor_Movement_24B1A1: @ 824B1A1 +BattleFrontier_BattleDomeCorridor_Movement_PlayerWalkToDoorLv50: @ 824B1A1 walk_up walk_left walk_left @@ -57,13 +57,13 @@ BattleFrontier_BattleDomeCorridor_Movement_24B1A1: @ 824B1A1 walk_in_place_fastest_up step_end -BattleFrontier_BattleDomeCorridor_Movement_24B1AE: @ 824B1AE +BattleFrontier_BattleDomeCorridor_Movement_PlayerEnterDoorLv50: @ 824B1AE walk_up walk_up set_invisible step_end -BattleFrontier_BattleDomeCorridor_Movement_24B1B2: @ 824B1B2 +BattleFrontier_BattleDomeCorridor_Movement_AttendantWalkToDoorLv50: @ 824B1B2 walk_left walk_left walk_left @@ -77,12 +77,12 @@ BattleFrontier_BattleDomeCorridor_Movement_24B1B2: @ 824B1B2 walk_up step_end -BattleFrontier_BattleDomeCorridor_Movement_24B1BE: @ 824B1BE +BattleFrontier_BattleDomeCorridor_Movement_AttendantEnterDoorLv50: @ 824B1BE walk_up set_invisible step_end -BattleFrontier_BattleDomeCorridor_Movement_24B1C1: @ 824B1C1 +BattleFrontier_BattleDomeCorridor_Movement_PlayerWalkToDoorLvOpen: @ 824B1C1 walk_up walk_right walk_right @@ -101,13 +101,13 @@ BattleFrontier_BattleDomeCorridor_Movement_24B1C1: @ 824B1C1 walk_in_place_fastest_up step_end -BattleFrontier_BattleDomeCorridor_Movement_24B1D2: @ 824B1D2 +BattleFrontier_BattleDomeCorridor_Movement_PlayerEnterDoorLvOpen: @ 824B1D2 walk_up walk_up set_invisible step_end -BattleFrontier_BattleDomeCorridor_Movement_24B1D6: @ 824B1D6 +BattleFrontier_BattleDomeCorridor_Movement_AttendantWalkToDoorLvOpen: @ 824B1D6 walk_right walk_right walk_right @@ -125,12 +125,13 @@ BattleFrontier_BattleDomeCorridor_Movement_24B1D6: @ 824B1D6 walk_up step_end -BattleFrontier_BattleDomeCorridor_Movement_24B1E6: @ 824B1E6 +BattleFrontier_BattleDomeCorridor_Movement_AttendantEnterDoorLvOpen: @ 824B1E6 walk_up set_invisible step_end -BattleFrontier_BattleDomeCorridor_Movement_24B1E9: @ 824B1E9 +@ Unused +BattleFrontier_BattleDomeCorridor_Movement_WalkToBattleRoomMidRight: @ 824B1E9 walk_up walk_right walk_right diff --git a/data/maps/BattleFrontier_BattleDomeLobby/map.json b/data/maps/BattleFrontier_BattleDomeLobby/map.json index 4298ac00e..cdd79b899 100644 --- a/data/maps/BattleFrontier_BattleDomeLobby/map.json +++ b/data/maps/BattleFrontier_BattleDomeLobby/map.json @@ -24,7 +24,7 @@ "movement_range_y": 1, "trainer_type": "0", "trainer_sight_or_berry_tree_id": "0", - "script": "BattleFrontier_BattleDomeLobby_EventScript_249A35", + "script": "BattleFrontier_BattleDomeLobby_EventScript_SinglesAttendant", "flag": "0" }, { @@ -37,7 +37,7 @@ "movement_range_y": 1, "trainer_type": "0", "trainer_sight_or_berry_tree_id": "0", - "script": "BattleFrontier_BattleDomeLobby_EventScript_249E10", + "script": "BattleFrontier_BattleDomeLobby_EventScript_Man", "flag": "0" }, { @@ -50,7 +50,7 @@ "movement_range_y": 1, "trainer_type": "0", "trainer_sight_or_berry_tree_id": "0", - "script": "BattleFrontier_BattleDomeLobby_EventScript_249DFE", + "script": "BattleFrontier_BattleDomeLobby_EventScript_Lass", "flag": "0" }, { @@ -63,7 +63,7 @@ "movement_range_y": 1, "trainer_type": "0", "trainer_sight_or_berry_tree_id": "0", - "script": "BattleFrontier_BattleDomeLobby_EventScript_249E07", + "script": "BattleFrontier_BattleDomeLobby_EventScript_FatMan", "flag": "0" }, { @@ -76,7 +76,7 @@ "movement_range_y": 1, "trainer_type": "0", "trainer_sight_or_berry_tree_id": "0", - "script": "BattleFrontier_BattleDomeLobby_EventScript_249DED", + "script": "BattleFrontier_BattleDomeLobby_EventScript_Maniac", "flag": "0" }, { @@ -89,7 +89,7 @@ "movement_range_y": 1, "trainer_type": "0", "trainer_sight_or_berry_tree_id": "0", - "script": "BattleFrontier_BattleDomeLobby_EventScript_249A47", + "script": "BattleFrontier_BattleDomeLobby_EventScript_DoublesAttendant", "flag": "0" } ], @@ -117,7 +117,7 @@ "y": 10, "elevation": 0, "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY", - "script": "BattleFrontier_BattleDomeLobby_EventScript_249D52" + "script": "BattleFrontier_BattleDomeLobby_EventScript_ShowSinglesResults" }, { "type": "sign", @@ -125,7 +125,7 @@ "y": 10, "elevation": 0, "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY", - "script": "BattleFrontier_BattleDomeLobby_EventScript_249D84" + "script": "BattleFrontier_BattleDomeLobby_EventScript_ShowPrevTourneyTree" }, { "type": "sign", @@ -133,7 +133,7 @@ "y": 10, "elevation": 0, "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY", - "script": "BattleFrontier_BattleDomeLobby_EventScript_249D6B" + "script": "BattleFrontier_BattleDomeLobby_EventScript_ShowDoublesResults" }, { "type": "sign", @@ -141,7 +141,7 @@ "y": 10, "elevation": 0, "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY", - "script": "BattleFrontier_BattleDomeLobby_EventScript_249E34" + "script": "BattleFrontier_BattleDomeLobby_EventScript_RulesBoard" } ] } diff --git a/data/maps/BattleFrontier_BattleDomeLobby/scripts.inc b/data/maps/BattleFrontier_BattleDomeLobby/scripts.inc index e506adeb2..6dfae4acc 100644 --- a/data/maps/BattleFrontier_BattleDomeLobby/scripts.inc +++ b/data/maps/BattleFrontier_BattleDomeLobby/scripts.inc @@ -1,171 +1,168 @@ BattleFrontier_BattleDomeLobby_MapScripts:: @ 82497E2 - map_script MAP_SCRIPT_ON_RESUME, BattleFrontier_BattleDomeLobby_MapScript1_2497F2 - map_script MAP_SCRIPT_ON_FRAME_TABLE, BattleFrontier_BattleDomeLobby_MapScript2_24980F + map_script MAP_SCRIPT_ON_RESUME, BattleFrontier_BattleDomeLobby_OnResume + map_script MAP_SCRIPT_ON_FRAME_TABLE, BattleFrontier_BattleDomeLobby_OnFrame map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, BattleFrontier_BattleDomeLobby_OnWarp .byte 0 -BattleFrontier_BattleDomeLobby_MapScript1_2497F2: @ 82497F2 - dome_21 +BattleFrontier_BattleDomeLobby_OnResume: @ 82497F2 + dome_initresultstree end BattleFrontier_BattleDomeLobby_OnWarp: @ 82497FB - map_script_2 VAR_TEMP_1, 0, BattleFrontier_BattleDomeLobby_EventScript_249805 + map_script_2 VAR_TEMP_1, 0, BattleFrontier_BattleDomeLobby_EventScript_TurnPlayerNorth .2byte 0 -BattleFrontier_BattleDomeLobby_EventScript_249805:: @ 8249805 +BattleFrontier_BattleDomeLobby_EventScript_TurnPlayerNorth:: @ 8249805 setvar VAR_TEMP_1, 1 turnobject OBJ_EVENT_ID_PLAYER, DIR_NORTH end -BattleFrontier_BattleDomeLobby_MapScript2_24980F: @ 824980F - map_script_2 VAR_TEMP_0, 0, BattleFrontier_BattleDomeLobby_EventScript_249839 - map_script_2 VAR_TEMP_0, CHALLENGE_STATUS_SAVING, BattleFrontier_BattleDomeLobby_EventScript_249842 - map_script_2 VAR_TEMP_0, CHALLENGE_STATUS_PAUSED, BattleFrontier_BattleDomeLobby_EventScript_2499F9 - map_script_2 VAR_TEMP_0, CHALLENGE_STATUS_WON, BattleFrontier_BattleDomeLobby_EventScript_24989B - map_script_2 VAR_TEMP_0, CHALLENGE_STATUS_LOST, BattleFrontier_BattleDomeLobby_EventScript_249940 +BattleFrontier_BattleDomeLobby_OnFrame: @ 824980F + map_script_2 VAR_TEMP_0, 0, BattleFrontier_BattleDomeLobby_EventScript_GetChallengeStatus + map_script_2 VAR_TEMP_0, CHALLENGE_STATUS_SAVING, BattleFrontier_BattleDomeLobby_EventScript_QuitWithoutSaving + map_script_2 VAR_TEMP_0, CHALLENGE_STATUS_PAUSED, BattleFrontier_BattleDomeLobby_EventScript_ResumeChallenge + map_script_2 VAR_TEMP_0, CHALLENGE_STATUS_WON, BattleFrontier_BattleDomeLobby_EventScript_WonChallenge + map_script_2 VAR_TEMP_0, CHALLENGE_STATUS_LOST, BattleFrontier_BattleDomeLobby_EventScript_LostChallenge .2byte 0 -BattleFrontier_BattleDomeLobby_EventScript_249839:: @ 8249839 +BattleFrontier_BattleDomeLobby_EventScript_GetChallengeStatus:: @ 8249839 frontier_getstatus end -BattleFrontier_BattleDomeLobby_EventScript_249842:: @ 8249842 +BattleFrontier_BattleDomeLobby_EventScript_QuitWithoutSaving:: @ 8249842 lockall - msgbox BattleFrontier_BattleDomeLobby_Text_24A45F, MSGBOX_DEFAULT + msgbox BattleFrontier_BattleDomeLobby_Text_DidntSaveBeforeQuitting, MSGBOX_DEFAULT closemessage dome_set DOME_DATA_WIN_STREAK, 0 dome_set DOME_DATA_WIN_STREAK_ACTIVE, FALSE - dome_set DOME_DATA_6, 1 + dome_set DOME_DATA_ATTEMPTED_CHALLENGE, TRUE frontier_set FRONTIER_DATA_CHALLENGE_STATUS, 0 setvar VAR_TEMP_0, 255 releaseall end -BattleFrontier_BattleDomeLobby_EventScript_24989B:: @ 824989B +BattleFrontier_BattleDomeLobby_EventScript_WonChallenge:: @ 824989B call BattleFrontier_EventScript_IncrementWinStreak lockall frontier_isbrain compare VAR_RESULT, TRUE - goto_if_eq BattleFrontier_BattleDomeLobby_EventScript_2498C1 - msgbox BattleFrontier_BattleDomeLobby_Text_24A4E9, MSGBOX_DEFAULT - goto BattleFrontier_BattleDomeLobby_EventScript_2498C9 - -BattleFrontier_BattleDomeLobby_EventScript_2498C1:: @ 82498C1 - msgbox BattleFrontier_BattleDomeLobby_Text_24AD67, MSGBOX_DEFAULT - -BattleFrontier_BattleDomeLobby_EventScript_2498C9:: @ 82498C9 - msgbox BattleFrontier_BattleDomeLobby_Text_24ADB1, MSGBOX_DEFAULT + goto_if_eq BattleFrontier_BattleDomeLobby_EventScript_DefeatedAce + msgbox BattleFrontier_BattleDomeLobby_Text_CongratsForWinningTourney, MSGBOX_DEFAULT + goto BattleFrontier_BattleDomeLobby_EventScript_GiveBattlePoints + +BattleFrontier_BattleDomeLobby_EventScript_DefeatedAce:: @ 82498C1 + msgbox BattleFrontier_BattleDomeLobby_Text_CongratsDefeatedTucker, MSGBOX_DEFAULT +BattleFrontier_BattleDomeLobby_EventScript_GiveBattlePoints:: @ 82498C9 + msgbox BattleFrontier_BattleDomeLobby_Text_AwardTheseBattlePoints, MSGBOX_DEFAULT frontier_givepoints msgbox BattleFrontier_Text_ObtainedXBattlePoints, MSGBOX_GETPOINTS - message BattleFrontier_BattleDomeLobby_Text_24A5D6 + message BattleFrontier_BattleDomeLobby_Text_RecordWillBeSaved waitmessage special LoadPlayerParty frontier_setpartyorder FRONTIER_PARTY_SIZE frontier_checkairshow - dome_set DOME_DATA_6, 1 - dome_set DOME_DATA_7, 1 + dome_set DOME_DATA_ATTEMPTED_CHALLENGE, TRUE + dome_set DOME_DATA_HAS_WON_CHALLENGE, TRUE dome_set DOME_DATA_WIN_STREAK_ACTIVE, TRUE special LoadPlayerParty special HealPlayerParty - goto BattleFrontier_BattleDomeLobby_EventScript_249991 + goto BattleFrontier_BattleDomeLobby_EventScript_AskRecordBattle -BattleFrontier_BattleDomeLobby_EventScript_249940:: @ 8249940 +BattleFrontier_BattleDomeLobby_EventScript_LostChallenge:: @ 8249940 lockall - msgbox BattleFrontier_BattleDomeLobby_Text_24A5BF, MSGBOX_DEFAULT - message BattleFrontier_BattleDomeLobby_Text_24A5D6 + msgbox BattleFrontier_BattleDomeLobby_Text_ThankYouForPlaying, MSGBOX_DEFAULT + message BattleFrontier_BattleDomeLobby_Text_RecordWillBeSaved waitmessage special LoadPlayerParty frontier_setpartyorder FRONTIER_PARTY_SIZE frontier_checkairshow dome_set DOME_DATA_WIN_STREAK_ACTIVE, FALSE - dome_set DOME_DATA_6, 1 + dome_set DOME_DATA_ATTEMPTED_CHALLENGE, TRUE special LoadPlayerParty special HealPlayerParty - -BattleFrontier_BattleDomeLobby_EventScript_249991:: @ 8249991 +BattleFrontier_BattleDomeLobby_EventScript_AskRecordBattle:: @ 8249991 dome_save 0 playse SE_SAVE waitse call BattleFrontier_EventScript_GetCantRecordBattle compare VAR_RESULT, TRUE - goto_if_eq BattleFrontier_BattleDomeLobby_EventScript_2499E9 - message BattleFrontier_BattleDomeLobby_Text_24AE17 + goto_if_eq BattleFrontier_BattleDomeLobby_EventScript_EndChallenge + message BattleFrontier_BattleDomeLobby_Text_RecordLastMatch waitmessage multichoicedefault 20, 8, MULTI_YESNO, 1, 0 switch VAR_RESULT - case 1, BattleFrontier_BattleDomeLobby_EventScript_2499E9 - case 0, BattleFrontier_BattleDomeLobby_EventScript_2499E4 - case MULTI_B_PRESSED, BattleFrontier_BattleDomeLobby_EventScript_2499E9 + case 1, BattleFrontier_BattleDomeLobby_EventScript_EndChallenge + case 0, BattleFrontier_BattleDomeLobby_EventScript_RecordBattle + case MULTI_B_PRESSED, BattleFrontier_BattleDomeLobby_EventScript_EndChallenge -BattleFrontier_BattleDomeLobby_EventScript_2499E4:: @ 82499E4 +BattleFrontier_BattleDomeLobby_EventScript_RecordBattle:: @ 82499E4 call BattleFrontier_EventScript_SaveBattle -BattleFrontier_BattleDomeLobby_EventScript_2499E9:: @ 82499E9 - msgbox BattleFrontier_BattleDomeLobby_Text_249F74, MSGBOX_DEFAULT +BattleFrontier_BattleDomeLobby_EventScript_EndChallenge:: @ 82499E9 + msgbox BattleFrontier_BattleDomeLobby_Text_HopeToSeeYouAgain, MSGBOX_DEFAULT closemessage setvar VAR_TEMP_0, 255 releaseall end -BattleFrontier_BattleDomeLobby_EventScript_2499F9:: @ 82499F9 +BattleFrontier_BattleDomeLobby_EventScript_ResumeChallenge:: @ 82499F9 lockall - msgbox BattleFrontier_BattleDomeLobby_Text_24A5FE, MSGBOX_DEFAULT - message BattleFrontier_BattleDomeLobby_Text_24A61A + msgbox BattleFrontier_BattleDomeLobby_Text_WeveBeenWaitingForYou, MSGBOX_DEFAULT + message BattleFrontier_BattleDomeLobby_Text_OkayToSaveBeforeChallenge2 waitmessage dome_save CHALLENGE_STATUS_SAVING playse SE_SAVE waitse frontier_set FRONTIER_DATA_PAUSED, FALSE setvar VAR_TEMP_0, 255 - goto BattleFrontier_BattleDomeLobby_EventScript_249BC2 + goto BattleFrontier_BattleDomeLobby_EventScript_EnterChallenge -BattleFrontier_BattleDomeLobby_EventScript_249A35:: @ 8249A35 +BattleFrontier_BattleDomeLobby_EventScript_SinglesAttendant:: @ 8249A35 lock faceplayer setvar VAR_FRONTIER_FACILITY, FRONTIER_FACILITY_DOME setvar VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_SINGLES - goto BattleFrontier_BattleDomeLobby_EventScript_249A59 + goto BattleFrontier_BattleDomeLobby_EventScript_AttendantWelcome end -BattleFrontier_BattleDomeLobby_EventScript_249A47:: @ 8249A47 +BattleFrontier_BattleDomeLobby_EventScript_DoublesAttendant:: @ 8249A47 lock faceplayer setvar VAR_FRONTIER_FACILITY, FRONTIER_FACILITY_DOME setvar VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_DOUBLES - goto BattleFrontier_BattleDomeLobby_EventScript_249A59 + goto BattleFrontier_BattleDomeLobby_EventScript_AttendantWelcome end -BattleFrontier_BattleDomeLobby_EventScript_249A59:: @ 8249A59 +BattleFrontier_BattleDomeLobby_EventScript_AttendantWelcome:: @ 8249A59 special SavePlayerParty compare VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_SINGLES - call_if_eq BattleFrontier_BattleDomeLobby_EventScript_249CFD + call_if_eq BattleFrontier_BattleDomeLobby_EventScript_WelcomeSingles compare VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_DOUBLES - call_if_eq BattleFrontier_BattleDomeLobby_EventScript_249D06 - -BattleFrontier_BattleDomeLobby_EventScript_249A72:: @ 8249A72 + call_if_eq BattleFrontier_BattleDomeLobby_EventScript_WelcomeDoubles +BattleFrontier_BattleDomeLobby_EventScript_AskTakeChallenge:: @ 8249A72 compare VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_SINGLES - call_if_eq BattleFrontier_BattleDomeLobby_EventScript_249D0F + call_if_eq BattleFrontier_BattleDomeLobby_EventScript_TakeSinglesChallenge compare VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_DOUBLES - call_if_eq BattleFrontier_BattleDomeLobby_EventScript_249D15 + call_if_eq BattleFrontier_BattleDomeLobby_EventScript_TakeDoublesChallenge waitmessage multichoice 17, 6, MULTI_CHALLENGEINFO, 0 switch VAR_RESULT - case 0, BattleFrontier_BattleDomeLobby_EventScript_249ABF - case 1, BattleFrontier_BattleDomeLobby_EventScript_249BFA - case 2, BattleFrontier_BattleDomeLobby_EventScript_249C64 - case MULTI_B_PRESSED, BattleFrontier_BattleDomeLobby_EventScript_249C64 + case 0, BattleFrontier_BattleDomeLobby_EventScript_TryEnterChallenge + case 1, BattleFrontier_BattleDomeLobby_EventScript_ExplainChallenge + case 2, BattleFrontier_BattleDomeLobby_EventScript_CancelChallenge + case MULTI_B_PRESSED, BattleFrontier_BattleDomeLobby_EventScript_CancelChallenge -BattleFrontier_BattleDomeLobby_EventScript_249ABF:: @ 8249ABF - message BattleFrontier_BattleDomeLobby_Text_24A210 +BattleFrontier_BattleDomeLobby_EventScript_TryEnterChallenge:: @ 8249ABF + message BattleFrontier_BattleDomeLobby_Text_WhichLevelMode waitmessage multichoice 17, 6, MULTI_LEVEL_MODE, 0 switch VAR_RESULT - case FRONTIER_LVL_TENT, BattleFrontier_BattleDomeLobby_EventScript_249C64 - case MULTI_B_PRESSED, BattleFrontier_BattleDomeLobby_EventScript_249C64 + case FRONTIER_LVL_TENT, BattleFrontier_BattleDomeLobby_EventScript_CancelChallenge + case MULTI_B_PRESSED, BattleFrontier_BattleDomeLobby_EventScript_CancelChallenge frontier_checkineligible compare VAR_0x8004, TRUE - goto_if_eq BattleFrontier_BattleDomeLobby_EventScript_249C15 + goto_if_eq BattleFrontier_BattleDomeLobby_EventScript_NotEnoughValidMons frontier_set FRONTIER_DATA_LVL_MODE, VAR_RESULT - msgbox BattleFrontier_BattleDomeLobby_Text_24A26E, MSGBOX_DEFAULT + msgbox BattleFrontier_BattleDomeLobby_Text_SelectThreeMons, MSGBOX_DEFAULT fadescreen FADE_TO_BLACK call BattleFrontier_EventScript_GetLvlMode copyvar VAR_0x8004, VAR_RESULT @@ -173,14 +170,14 @@ BattleFrontier_BattleDomeLobby_EventScript_249ABF:: @ 8249ABF special ChoosePartyForBattleFrontier waitstate compare VAR_RESULT, 0 - goto_if_eq BattleFrontier_BattleDomeLobby_EventScript_249C61 - msgbox BattleFrontier_BattleDomeLobby_Text_24A1C6, MSGBOX_YESNO + goto_if_eq BattleFrontier_BattleDomeLobby_EventScript_LoadPartyCancelChallenge + msgbox BattleFrontier_BattleDomeLobby_Text_OkayToSaveBeforeChallenge, MSGBOX_YESNO switch VAR_RESULT - case NO, BattleFrontier_BattleDomeLobby_EventScript_249C61 - case YES, BattleFrontier_BattleDomeLobby_EventScript_249B60 - case MULTI_B_PRESSED, BattleFrontier_BattleDomeLobby_EventScript_249C61 + case NO, BattleFrontier_BattleDomeLobby_EventScript_LoadPartyCancelChallenge + case YES, BattleFrontier_BattleDomeLobby_EventScript_SaveBeforeChallenge + case MULTI_B_PRESSED, BattleFrontier_BattleDomeLobby_EventScript_LoadPartyCancelChallenge -BattleFrontier_BattleDomeLobby_EventScript_249B60:: @ 8249B60 +BattleFrontier_BattleDomeLobby_EventScript_SaveBeforeChallenge:: @ 8249B60 setvar VAR_TEMP_0, 0 frontier_set FRONTIER_DATA_SELECTED_MON_ORDER dome_init @@ -192,137 +189,135 @@ BattleFrontier_BattleDomeLobby_EventScript_249B60:: @ 8249B60 call Common_EventScript_SaveGame setvar VAR_TEMP_0, 255 compare VAR_RESULT, 0 - goto_if_eq BattleFrontier_BattleDomeLobby_EventScript_249C4A + goto_if_eq BattleFrontier_BattleDomeLobby_EventScript_CancelChallengeSaveFailed dome_inittrainers -BattleFrontier_BattleDomeLobby_EventScript_249BC2:: @ 8249BC2 +BattleFrontier_BattleDomeLobby_EventScript_EnterChallenge:: @ 8249BC2 special SavePlayerParty frontier_setpartyorder FRONTIER_PARTY_SIZE dome_settrainers - msgbox BattleFrontier_BattleDomeLobby_Text_24A437, MSGBOX_DEFAULT + msgbox BattleFrontier_BattleDomeLobby_Text_ShowYouToBattleDome, MSGBOX_DEFAULT closemessage - call BattleFrontier_BattleDomeLobby_EventScript_249C6E + call BattleFrontier_BattleDomeLobby_EventScript_WalkToDoor special HealPlayerParty warp MAP_BATTLE_FRONTIER_BATTLE_DOME_CORRIDOR, 255, 23, 6 setvar VAR_TEMP_0, 0 waitstate end -BattleFrontier_BattleDomeLobby_EventScript_249BFA:: @ 8249BFA +BattleFrontier_BattleDomeLobby_EventScript_ExplainChallenge:: @ 8249BFA compare VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_SINGLES - call_if_eq BattleFrontier_BattleDomeLobby_EventScript_249D1B + call_if_eq BattleFrontier_BattleDomeLobby_EventScript_ExplainSinglesChallenge compare VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_DOUBLES - call_if_eq BattleFrontier_BattleDomeLobby_EventScript_249D24 - goto BattleFrontier_BattleDomeLobby_EventScript_249A72 + call_if_eq BattleFrontier_BattleDomeLobby_EventScript_ExplainDoublesChallenge + goto BattleFrontier_BattleDomeLobby_EventScript_AskTakeChallenge -BattleFrontier_BattleDomeLobby_EventScript_249C15:: @ 8249C15 +BattleFrontier_BattleDomeLobby_EventScript_NotEnoughValidMons:: @ 8249C15 switch VAR_RESULT - case FRONTIER_LVL_50, BattleFrontier_BattleDomeLobby_EventScript_249C30 - case FRONTIER_LVL_OPEN, BattleFrontier_BattleDomeLobby_EventScript_249C3D + case FRONTIER_LVL_50, BattleFrontier_BattleDomeLobby_EventScript_NotEnoughValidMonsLv50 + case FRONTIER_LVL_OPEN, BattleFrontier_BattleDomeLobby_EventScript_NotEnoughValidMonsLvOpen -BattleFrontier_BattleDomeLobby_EventScript_249C30:: @ 8249C30 - msgbox BattleFrontier_BattleDomeLobby_Text_24A353, MSGBOX_DEFAULT - goto BattleFrontier_BattleDomeLobby_EventScript_249C6C +BattleFrontier_BattleDomeLobby_EventScript_NotEnoughValidMonsLv50:: @ 8249C30 + msgbox BattleFrontier_BattleDomeLobby_Text_NotEnoughValidMonsLv50, MSGBOX_DEFAULT + goto BattleFrontier_BattleDomeLobby_EventScript_EndCancelChallenge -BattleFrontier_BattleDomeLobby_EventScript_249C3D:: @ 8249C3D - msgbox BattleFrontier_BattleDomeLobby_Text_24A2AB, MSGBOX_DEFAULT - goto BattleFrontier_BattleDomeLobby_EventScript_249C6C +BattleFrontier_BattleDomeLobby_EventScript_NotEnoughValidMonsLvOpen:: @ 8249C3D + msgbox BattleFrontier_BattleDomeLobby_Text_NotEnoughValidMonsLvOpen, MSGBOX_DEFAULT + goto BattleFrontier_BattleDomeLobby_EventScript_EndCancelChallenge -BattleFrontier_BattleDomeLobby_EventScript_249C4A:: @ 8249C4A +BattleFrontier_BattleDomeLobby_EventScript_CancelChallengeSaveFailed:: @ 8249C4A frontier_set FRONTIER_DATA_CHALLENGE_STATUS, 0 - goto BattleFrontier_BattleDomeLobby_EventScript_249C64 + goto BattleFrontier_BattleDomeLobby_EventScript_CancelChallenge -BattleFrontier_BattleDomeLobby_EventScript_249C61:: @ 8249C61 +BattleFrontier_BattleDomeLobby_EventScript_LoadPartyCancelChallenge:: @ 8249C61 special LoadPlayerParty - -BattleFrontier_BattleDomeLobby_EventScript_249C64:: @ 8249C64 - msgbox BattleFrontier_BattleDomeLobby_Text_249F74, MSGBOX_DEFAULT - -BattleFrontier_BattleDomeLobby_EventScript_249C6C:: @ 8249C6C +BattleFrontier_BattleDomeLobby_EventScript_CancelChallenge:: @ 8249C64 + msgbox BattleFrontier_BattleDomeLobby_Text_HopeToSeeYouAgain, MSGBOX_DEFAULT +BattleFrontier_BattleDomeLobby_EventScript_EndCancelChallenge:: @ 8249C6C release end -BattleFrontier_BattleDomeLobby_EventScript_249C6E:: @ 8249C6E +BattleFrontier_BattleDomeLobby_EventScript_WalkToDoor:: @ 8249C6E compare VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_SINGLES - call_if_eq BattleFrontier_BattleDomeLobby_EventScript_249CDD + call_if_eq BattleFrontier_BattleDomeLobby_EventScript_SinglesAttendantWalkToDoor compare VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_DOUBLES - call_if_eq BattleFrontier_BattleDomeLobby_EventScript_249CE5 - applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattleDomeLobby_Movement_249D45 + call_if_eq BattleFrontier_BattleDomeLobby_EventScript_DoublesAttendantWalkToDoor + applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattleDomeLobby_Movement_WalkToDoor waitmovement 0 compare VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_SINGLES - call_if_eq BattleFrontier_BattleDomeLobby_EventScript_249D2D + call_if_eq BattleFrontier_BattleDomeLobby_EventScript_OpenSinglesDoor compare VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_DOUBLES - call_if_eq BattleFrontier_BattleDomeLobby_EventScript_249D33 + call_if_eq BattleFrontier_BattleDomeLobby_EventScript_OpenDoublesDoor waitdooranim compare VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_SINGLES - call_if_eq BattleFrontier_BattleDomeLobby_EventScript_249CED + call_if_eq BattleFrontier_BattleDomeLobby_EventScript_SinglesAttendantEnterDoor compare VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_DOUBLES - call_if_eq BattleFrontier_BattleDomeLobby_EventScript_249CF5 - applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattleDomeLobby_Movement_249D4E + call_if_eq BattleFrontier_BattleDomeLobby_EventScript_DoublesAttendantEnterDoor + applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattleDomeLobby_Movement_PlayerEnterDoor waitmovement 0 compare VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_SINGLES - call_if_eq BattleFrontier_BattleDomeLobby_EventScript_249D39 + call_if_eq BattleFrontier_BattleDomeLobby_EventScript_CloseSinglesDoor compare VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_DOUBLES - call_if_eq BattleFrontier_BattleDomeLobby_EventScript_249D3F + call_if_eq BattleFrontier_BattleDomeLobby_EventScript_CloseDoublesDoor waitdooranim return -BattleFrontier_BattleDomeLobby_EventScript_249CDD:: @ 8249CDD - applymovement 1, BattleFrontier_BattleDomeLobby_Movement_249D45 +BattleFrontier_BattleDomeLobby_EventScript_SinglesAttendantWalkToDoor:: @ 8249CDD + applymovement 1, BattleFrontier_BattleDomeLobby_Movement_WalkToDoor return -BattleFrontier_BattleDomeLobby_EventScript_249CE5:: @ 8249CE5 - applymovement 6, BattleFrontier_BattleDomeLobby_Movement_249D45 +BattleFrontier_BattleDomeLobby_EventScript_DoublesAttendantWalkToDoor:: @ 8249CE5 + applymovement 6, BattleFrontier_BattleDomeLobby_Movement_WalkToDoor return -BattleFrontier_BattleDomeLobby_EventScript_249CED:: @ 8249CED - applymovement 1, BattleFrontier_BattleDomeLobby_Movement_249D4B +BattleFrontier_BattleDomeLobby_EventScript_SinglesAttendantEnterDoor:: @ 8249CED + applymovement 1, BattleFrontier_BattleDomeLobby_Movement_AttendantEnterDoor return -BattleFrontier_BattleDomeLobby_EventScript_249CF5:: @ 8249CF5 - applymovement 6, BattleFrontier_BattleDomeLobby_Movement_249D4B +BattleFrontier_BattleDomeLobby_EventScript_DoublesAttendantEnterDoor:: @ 8249CF5 + applymovement 6, BattleFrontier_BattleDomeLobby_Movement_AttendantEnterDoor return -BattleFrontier_BattleDomeLobby_EventScript_249CFD:: @ 8249CFD - msgbox BattleFrontier_BattleDomeLobby_Text_249EB7, MSGBOX_DEFAULT +BattleFrontier_BattleDomeLobby_EventScript_WelcomeSingles:: @ 8249CFD + msgbox BattleFrontier_BattleDomeLobby_Text_WelcomeSingleBattle, MSGBOX_DEFAULT return -BattleFrontier_BattleDomeLobby_EventScript_249D06:: @ 8249D06 - msgbox BattleFrontier_BattleDomeLobby_Text_24A664, MSGBOX_DEFAULT +BattleFrontier_BattleDomeLobby_EventScript_WelcomeDoubles:: @ 8249D06 + msgbox BattleFrontier_BattleDomeLobby_Text_WelcomeDoubleBattle, MSGBOX_DEFAULT return -BattleFrontier_BattleDomeLobby_EventScript_249D0F:: @ 8249D0F - message BattleFrontier_BattleDomeLobby_Text_249F3A +BattleFrontier_BattleDomeLobby_EventScript_TakeSinglesChallenge:: @ 8249D0F + message BattleFrontier_BattleDomeLobby_Text_TakeSinglesChallenge return -BattleFrontier_BattleDomeLobby_EventScript_249D15:: @ 8249D15 - message BattleFrontier_BattleDomeLobby_Text_24A6E7 +BattleFrontier_BattleDomeLobby_EventScript_TakeDoublesChallenge:: @ 8249D15 + message BattleFrontier_BattleDomeLobby_Text_TakeDoublesChallenge return -BattleFrontier_BattleDomeLobby_EventScript_249D1B:: @ 8249D1B - msgbox BattleFrontier_BattleDomeLobby_Text_249F8E, MSGBOX_DEFAULT +BattleFrontier_BattleDomeLobby_EventScript_ExplainSinglesChallenge:: @ 8249D1B + msgbox BattleFrontier_BattleDomeLobby_Text_ExplainSinglesChallenge, MSGBOX_DEFAULT return -BattleFrontier_BattleDomeLobby_EventScript_249D24:: @ 8249D24 - msgbox BattleFrontier_BattleDomeLobby_Text_24A721, MSGBOX_DEFAULT +BattleFrontier_BattleDomeLobby_EventScript_ExplainDoublesChallenge:: @ 8249D24 + msgbox BattleFrontier_BattleDomeLobby_Text_ExplainDoublesChallenge, MSGBOX_DEFAULT return -BattleFrontier_BattleDomeLobby_EventScript_249D2D:: @ 8249D2D +BattleFrontier_BattleDomeLobby_EventScript_OpenSinglesDoor:: @ 8249D2D opendoor 5, 4 return -BattleFrontier_BattleDomeLobby_EventScript_249D33:: @ 8249D33 +BattleFrontier_BattleDomeLobby_EventScript_OpenDoublesDoor:: @ 8249D33 opendoor 17, 4 return -BattleFrontier_BattleDomeLobby_EventScript_249D39:: @ 8249D39 +BattleFrontier_BattleDomeLobby_EventScript_CloseSinglesDoor:: @ 8249D39 closedoor 5, 4 return -BattleFrontier_BattleDomeLobby_EventScript_249D3F:: @ 8249D3F +BattleFrontier_BattleDomeLobby_EventScript_CloseDoublesDoor:: @ 8249D3F closedoor 17, 4 return -BattleFrontier_BattleDomeLobby_Movement_249D45: @ 8249D45 +BattleFrontier_BattleDomeLobby_Movement_WalkToDoor: @ 8249D45 walk_up walk_up walk_up @@ -330,18 +325,18 @@ BattleFrontier_BattleDomeLobby_Movement_249D45: @ 8249D45 walk_up step_end -BattleFrontier_BattleDomeLobby_Movement_249D4B: @ 8249D4B +BattleFrontier_BattleDomeLobby_Movement_AttendantEnterDoor: @ 8249D4B walk_up set_invisible step_end -BattleFrontier_BattleDomeLobby_Movement_249D4E: @ 8249D4E +BattleFrontier_BattleDomeLobby_Movement_PlayerEnterDoor: @ 8249D4E walk_up walk_up set_invisible step_end -BattleFrontier_BattleDomeLobby_EventScript_249D52:: @ 8249D52 +BattleFrontier_BattleDomeLobby_EventScript_ShowSinglesResults:: @ 8249D52 lockall frontier_results FRONTIER_FACILITY_DOME, FRONTIER_MODE_SINGLES waitbuttonpress @@ -349,7 +344,7 @@ BattleFrontier_BattleDomeLobby_EventScript_249D52:: @ 8249D52 releaseall end -BattleFrontier_BattleDomeLobby_EventScript_249D6B:: @ 8249D6B +BattleFrontier_BattleDomeLobby_EventScript_ShowDoublesResults:: @ 8249D6B lockall frontier_results FRONTIER_FACILITY_DOME, FRONTIER_MODE_DOUBLES waitbuttonpress @@ -357,119 +352,121 @@ BattleFrontier_BattleDomeLobby_EventScript_249D6B:: @ 8249D6B releaseall end -BattleFrontier_BattleDomeLobby_EventScript_249D84:: @ 8249D84 - dome_get DOME_DATA_9 +BattleFrontier_BattleDomeLobby_EventScript_ShowPrevTourneyTree:: @ 8249D84 + dome_get DOME_DATA_PREV_TOURNEY_TYPE compare VAR_RESULT, 0 - call_if_eq BattleFrontier_BattleDomeLobby_EventScript_249DC9 + call_if_eq BattleFrontier_BattleDomeLobby_EventScript_PrevTourneyResultsSinglesLv50 compare VAR_RESULT, 1 - call_if_eq BattleFrontier_BattleDomeLobby_EventScript_249DD2 + call_if_eq BattleFrontier_BattleDomeLobby_EventScript_PrevTourneyResultsDoublesLv50 compare VAR_RESULT, 2 - call_if_eq BattleFrontier_BattleDomeLobby_EventScript_249DDB + call_if_eq BattleFrontier_BattleDomeLobby_EventScript_PrevTourneyResultsSinglesLvOpen compare VAR_RESULT, 3 - call_if_eq BattleFrontier_BattleDomeLobby_EventScript_249DE4 + call_if_eq BattleFrontier_BattleDomeLobby_EventScript_PrevTourneyResultsDoublesLvOpen fadescreen FADE_TO_BLACK - dome_showresultstree + dome_showprevtourneytree waitstate end -BattleFrontier_BattleDomeLobby_EventScript_249DC9:: @ 8249DC9 - msgbox BattleFrontier_BattleDomeLobby_Text_24A966, MSGBOX_SIGN +BattleFrontier_BattleDomeLobby_EventScript_PrevTourneyResultsSinglesLv50:: @ 8249DC9 + msgbox BattleFrontier_BattleDomeLobby_Text_PrevTourneyResultsSinglesLv50, MSGBOX_SIGN return -BattleFrontier_BattleDomeLobby_EventScript_249DD2:: @ 8249DD2 - msgbox BattleFrontier_BattleDomeLobby_Text_24A9A9, MSGBOX_SIGN +BattleFrontier_BattleDomeLobby_EventScript_PrevTourneyResultsDoublesLv50:: @ 8249DD2 + msgbox BattleFrontier_BattleDomeLobby_Text_PrevTourneyResultsDoublesLv50, MSGBOX_SIGN return -BattleFrontier_BattleDomeLobby_EventScript_249DDB:: @ 8249DDB - msgbox BattleFrontier_BattleDomeLobby_Text_24A9EC, MSGBOX_SIGN +BattleFrontier_BattleDomeLobby_EventScript_PrevTourneyResultsSinglesLvOpen:: @ 8249DDB + msgbox BattleFrontier_BattleDomeLobby_Text_PrevTourneyResultsSinglesLvOpen, MSGBOX_SIGN return -BattleFrontier_BattleDomeLobby_EventScript_249DE4:: @ 8249DE4 - msgbox BattleFrontier_BattleDomeLobby_Text_24AA31, MSGBOX_SIGN +BattleFrontier_BattleDomeLobby_EventScript_PrevTourneyResultsDoublesLvOpen:: @ 8249DE4 + msgbox BattleFrontier_BattleDomeLobby_Text_PrevTourneyResultsDoublesLvOpen, MSGBOX_SIGN return -BattleFrontier_BattleDomeLobby_EventScript_249DED:: @ 8249DED +BattleFrontier_BattleDomeLobby_EventScript_Maniac:: @ 8249DED dome_getwinnersname - msgbox BattleFrontier_BattleDomeLobby_Text_24AA76, MSGBOX_NPC + msgbox BattleFrontier_BattleDomeLobby_Text_LastWinnerWasTough, MSGBOX_NPC end -BattleFrontier_BattleDomeLobby_EventScript_249DFE:: @ 8249DFE - msgbox BattleFrontier_BattleDomeLobby_Text_24AB94, MSGBOX_NPC +BattleFrontier_BattleDomeLobby_EventScript_Lass:: @ 8249DFE + msgbox BattleFrontier_BattleDomeLobby_Text_WinnersGainReputation, MSGBOX_NPC end -BattleFrontier_BattleDomeLobby_EventScript_249E07:: @ 8249E07 - msgbox BattleFrontier_BattleDomeLobby_Text_24AC76, MSGBOX_NPC +BattleFrontier_BattleDomeLobby_EventScript_FatMan:: @ 8249E07 + msgbox BattleFrontier_BattleDomeLobby_Text_TrashedInFirstRound, MSGBOX_NPC end -BattleFrontier_BattleDomeLobby_EventScript_249E10:: @ 8249E10 - msgbox BattleFrontier_BattleDomeLobby_Text_24ACD3, MSGBOX_NPC +BattleFrontier_BattleDomeLobby_EventScript_Man:: @ 8249E10 + msgbox BattleFrontier_BattleDomeLobby_Text_NeedToCheckOpponentCarefully, MSGBOX_NPC end @ A few OutsideWest event scripts are inserted here instead, two of which are unused BattleFrontier_OutsideWest_EventScript_Man3:: @ 8249E19 - msgbox BattleFrontier_OutsideWest_Text_24AB06, MSGBOX_NPC + msgbox BattleFrontier_OutsideWest_Text_LongDreamedAboutBattleFrontier, MSGBOX_NPC end +@ Unused BattleFrontier_OutsideWest_EventScript_BattleDomeSign2:: @ 8249E22 msgbox BattleFrontier_OutsideWest_Text_BattleDomeSign2, MSGBOX_NPC end +@ Unused BattleFrontier_OutsideWest_EventScript_UnderConstructionSign:: @ 8249E2B msgbox BattleFrontier_OutsideWest_Text_QuestionMarkUnderConstruction, MSGBOX_NPC end -BattleFrontier_BattleDomeLobby_EventScript_249E34:: @ 8249E34 +BattleFrontier_BattleDomeLobby_EventScript_RulesBoard:: @ 8249E34 lockall - msgbox BattleFrontier_BattleDomeLobby_Text_24AE63, MSGBOX_DEFAULT - goto BattleFrontier_BattleDomeLobby_EventScript_249E43 + msgbox BattleFrontier_BattleDomeLobby_Text_RulesAreListed, MSGBOX_DEFAULT + goto BattleFrontier_BattleDomeLobby_EventScript_ReadRulesBoard end -BattleFrontier_BattleDomeLobby_EventScript_249E43:: @ 8249E43 - message BattleFrontier_BattleDomeLobby_Text_24AE8B +BattleFrontier_BattleDomeLobby_EventScript_ReadRulesBoard:: @ 8249E43 + message BattleFrontier_BattleDomeLobby_Text_ReadWhichHeading waitmessage multichoice 17, 4, MULTI_BATTLE_DOME_RULES, 0 switch VAR_RESULT - case 0, BattleFrontier_BattleDomeLobby_EventScript_249E8B - case 1, BattleFrontier_BattleDomeLobby_EventScript_249E99 - case 2, BattleFrontier_BattleDomeLobby_EventScript_249EA7 - case 3, BattleFrontier_BattleDomeLobby_EventScript_249EB5 - case MULTI_B_PRESSED, BattleFrontier_BattleDomeLobby_EventScript_249EB5 + case 0, BattleFrontier_BattleDomeLobby_EventScript_RulesMatchup + case 1, BattleFrontier_BattleDomeLobby_EventScript_RulesTourneyTree + case 2, BattleFrontier_BattleDomeLobby_EventScript_RulesDoubleKO + case 3, BattleFrontier_BattleDomeLobby_EventScript_ExitRules + case MULTI_B_PRESSED, BattleFrontier_BattleDomeLobby_EventScript_ExitRules end -BattleFrontier_BattleDomeLobby_EventScript_249E8B:: @ 8249E8B - msgbox BattleFrontier_BattleDomeLobby_Text_24AEAE, MSGBOX_DEFAULT - goto BattleFrontier_BattleDomeLobby_EventScript_249E43 +BattleFrontier_BattleDomeLobby_EventScript_RulesMatchup:: @ 8249E8B + msgbox BattleFrontier_BattleDomeLobby_Text_ExplainMatchupRules, MSGBOX_DEFAULT + goto BattleFrontier_BattleDomeLobby_EventScript_ReadRulesBoard end -BattleFrontier_BattleDomeLobby_EventScript_249E99:: @ 8249E99 - msgbox BattleFrontier_BattleDomeLobby_Text_24AF4C, MSGBOX_DEFAULT - goto BattleFrontier_BattleDomeLobby_EventScript_249E43 +BattleFrontier_BattleDomeLobby_EventScript_RulesTourneyTree:: @ 8249E99 + msgbox BattleFrontier_BattleDomeLobby_Text_ExplainTourneyTree, MSGBOX_DEFAULT + goto BattleFrontier_BattleDomeLobby_EventScript_ReadRulesBoard end -BattleFrontier_BattleDomeLobby_EventScript_249EA7:: @ 8249EA7 - msgbox BattleFrontier_BattleDomeLobby_Text_24B073, MSGBOX_DEFAULT - goto BattleFrontier_BattleDomeLobby_EventScript_249E43 +BattleFrontier_BattleDomeLobby_EventScript_RulesDoubleKO:: @ 8249EA7 + msgbox BattleFrontier_BattleDomeLobby_Text_ExplainDoubleKORules, MSGBOX_DEFAULT + goto BattleFrontier_BattleDomeLobby_EventScript_ReadRulesBoard end -BattleFrontier_BattleDomeLobby_EventScript_249EB5:: @ 8249EB5 +BattleFrontier_BattleDomeLobby_EventScript_ExitRules:: @ 8249EB5 releaseall end -BattleFrontier_BattleDomeLobby_Text_249EB7: @ 8249EB7 +BattleFrontier_BattleDomeLobby_Text_WelcomeSingleBattle: @ 8249EB7 .string "Where the strategies of TRAINERS\n" .string "are put to the test!\p" .string "Welcome to the BATTLE DOME!\p" .string "I am your guide to the SINGLE BATTLE\n" .string "Tournament.$" -BattleFrontier_BattleDomeLobby_Text_249F3A: @ 8249F3A +BattleFrontier_BattleDomeLobby_Text_TakeSinglesChallenge: @ 8249F3A .string "Would you like to challenge\n" .string "the SINGLE BATTLE Tournament?$" -BattleFrontier_BattleDomeLobby_Text_249F74: @ 8249F74 +BattleFrontier_BattleDomeLobby_Text_HopeToSeeYouAgain: @ 8249F74 .string "We hope to see you again.$" -BattleFrontier_BattleDomeLobby_Text_249F8E: @ 8249F8E +BattleFrontier_BattleDomeLobby_Text_ExplainSinglesChallenge: @ 8249F8E .string "The SINGLE BATTLE Tournament\n" .string "is exactly as the name suggests--\l" .string "a tournament of SINGLE BATTLES.\p" @@ -490,20 +487,20 @@ BattleFrontier_BattleDomeLobby_Text_249F8E: @ 8249F8E .string "If you don't save before interrupting,\n" .string "you will be disqualified.$" -BattleFrontier_BattleDomeLobby_Text_24A1C6: @ 824A1C6 +BattleFrontier_BattleDomeLobby_Text_OkayToSaveBeforeChallenge: @ 824A1C6 .string "Before I show you to the BATTLE DOME,\n" .string "I must save the data. Is that okay?$" -BattleFrontier_BattleDomeLobby_Text_24A210: @ 824A210 +BattleFrontier_BattleDomeLobby_Text_WhichLevelMode: @ 824A210 .string "The tournament offers two levels\n" .string "of challenge, Level 50 and Open Level.\l" .string "Which is your choice?$" -BattleFrontier_BattleDomeLobby_Text_24A26E: @ 824A26E +BattleFrontier_BattleDomeLobby_Text_SelectThreeMons: @ 824A26E .string "Now select the three POKéMON that\n" .string "you wish to enter, please.$" -BattleFrontier_BattleDomeLobby_Text_24A2AB: @ 824A2AB +BattleFrontier_BattleDomeLobby_Text_NotEnoughValidMonsLvOpen: @ 824A2AB .string "Excuse me!\p" .string "You don't have three eligible POKéMON.\p" .string "Also, the POKéMON must be holding\n" @@ -511,7 +508,7 @@ BattleFrontier_BattleDomeLobby_Text_24A2AB: @ 824A2AB .string "EGGS{STR_VAR_1} ineligible.\p" .string "Please come see me when you are ready.$" -BattleFrontier_BattleDomeLobby_Text_24A353: @ 824A353 +BattleFrontier_BattleDomeLobby_Text_NotEnoughValidMonsLv50: @ 824A353 .string "Excuse me!\p" .string "You don't have three eligible POKéMON.\p" .string "You must have three different POKéMON\n" @@ -521,25 +518,27 @@ BattleFrontier_BattleDomeLobby_Text_24A353: @ 824A353 .string "EGGS{STR_VAR_1} ineligible.\p" .string "Please come see me when you are ready.$" -BattleFrontier_BattleDomeLobby_Text_24A437: @ 824A437 +BattleFrontier_BattleDomeLobby_Text_ShowYouToBattleDome: @ 824A437 .string "I will now show you to\n" .string "the BATTLE DOME.$" -BattleFrontier_BattleDomeLobby_Text_24A45F: @ 824A45F +BattleFrontier_BattleDomeLobby_Text_DidntSaveBeforeQuitting: @ 824A45F .string "Excuse me!\p" .string "You didn't save before you quit your\n" .string "challenge last time.\p" .string "Because of that, your challenge so far\n" .string "has been disqualified. Sorry!$" -BattleFrontier_BattleDomeLobby_Text_24A4E9: @ 824A4E9 +BattleFrontier_BattleDomeLobby_Text_CongratsForWinningTourney: @ 824A4E9 .string "Congratulations for winning\n" .string "your Battle Tournament!$" -BattleFrontier_BattleDomeLobby_Text_24A51D: @ 824A51D +@ Unused +BattleFrontier_BattleDomeLobby_Text_HereIsYourPrize: @ 824A51D .string "Here is your prize for your Battle\n" .string "Tournament victory.$" +@ Used by Verdanturf Tent BattleFrontier_BattleDomeLobby_Text_ReceivedPrize: @ 824A554 .string "{PLAYER} received the prize\n" .string "{STR_VAR_1}.$" @@ -550,32 +549,32 @@ BattleFrontier_BattleDomeLobby_Text_BagFullMakeRoom: @ 824A56E .string "Please make room in your BAG, then come\n" .string "see me.$" -BattleFrontier_BattleDomeLobby_Text_24A5BF: @ 824A5BF +BattleFrontier_BattleDomeLobby_Text_ThankYouForPlaying: @ 824A5BF .string "Thank you for playing!$" -BattleFrontier_BattleDomeLobby_Text_24A5D6: @ 824A5D6 +BattleFrontier_BattleDomeLobby_Text_RecordWillBeSaved: @ 824A5D6 .string "Your record will be saved.\n" .string "Please wait.$" -BattleFrontier_BattleDomeLobby_Text_24A5FE: @ 824A5FE +BattleFrontier_BattleDomeLobby_Text_WeveBeenWaitingForYou: @ 824A5FE .string "We've been waiting for you!$" -BattleFrontier_BattleDomeLobby_Text_24A61A: @ 824A61A +BattleFrontier_BattleDomeLobby_Text_OkayToSaveBeforeChallenge2: @ 824A61A .string "Before I show you to the BATTLE DOME,\n" .string "I must save the data. Is that okay?$" -BattleFrontier_BattleDomeLobby_Text_24A664: @ 824A664 +BattleFrontier_BattleDomeLobby_Text_WelcomeDoubleBattle: @ 824A664 .string "Where the strategies of TRAINERS\n" .string "are put to the test!\p" .string "Welcome to the BATTLE DOME!\p" .string "I am your guide to the DOUBLE BATTLE\n" .string "Tournament.$" -BattleFrontier_BattleDomeLobby_Text_24A6E7: @ 824A6E7 +BattleFrontier_BattleDomeLobby_Text_TakeDoublesChallenge: @ 824A6E7 .string "Would you like to challenge\n" .string "the DOUBLE BATTLE Tournament?$" -BattleFrontier_BattleDomeLobby_Text_24A721: @ 824A721 +BattleFrontier_BattleDomeLobby_Text_ExplainDoublesChallenge: @ 824A721 .string "The DOUBLE BATTLE Tournament\n" .string "is exactly as the name suggests--\l" .string "a tournament of DOUBLE BATTLES.\p" @@ -596,23 +595,23 @@ BattleFrontier_BattleDomeLobby_Text_24A721: @ 824A721 .string "If you don't save before interrupting,\n" .string "you will be disqualified.$" -BattleFrontier_BattleDomeLobby_Text_24A966: @ 824A966 +BattleFrontier_BattleDomeLobby_Text_PrevTourneyResultsSinglesLv50: @ 824A966 .string "They're the results of the last\n" .string "Level 50 SINGLE BATTLE Tournament.$" -BattleFrontier_BattleDomeLobby_Text_24A9A9: @ 824A9A9 +BattleFrontier_BattleDomeLobby_Text_PrevTourneyResultsDoublesLv50: @ 824A9A9 .string "They're the results of the last\n" .string "Level 50 DOUBLE BATTLE Tournament.$" -BattleFrontier_BattleDomeLobby_Text_24A9EC: @ 824A9EC +BattleFrontier_BattleDomeLobby_Text_PrevTourneyResultsSinglesLvOpen: @ 824A9EC .string "They're the results of the last\n" .string "Open Level SINGLE BATTLE Tournament.$" -BattleFrontier_BattleDomeLobby_Text_24AA31: @ 824AA31 +BattleFrontier_BattleDomeLobby_Text_PrevTourneyResultsDoublesLvOpen: @ 824AA31 .string "They're the results of the last\n" .string "Open Level DOUBLE BATTLE Tournament.$" -BattleFrontier_BattleDomeLobby_Text_24AA76: @ 824AA76 +BattleFrontier_BattleDomeLobby_Text_LastWinnerWasTough: @ 824AA76 .string "Did you see it?\n" .string "The last Battle Tournament?\p" .string "The winner, {STR_VAR_1}, was seriously\n" @@ -620,19 +619,21 @@ BattleFrontier_BattleDomeLobby_Text_24AA76: @ 824AA76 .string "You should check out the results\n" .string "on the monitor beside the PC.$" -BattleFrontier_OutsideWest_Text_24AB06: @ 824AB06 +BattleFrontier_OutsideWest_Text_LongDreamedAboutBattleFrontier: @ 824AB06 .string "The BATTLE FRONTIER…\n" .string "I've long dreamed about a place like it.$" +@ Functionally unused BattleFrontier_OutsideWest_Text_BattleDomeSign2: @ 824AB44 .string "The BATTLE DOME\n" .string "Become the Unbeatable Superstar!$" +@ Functionally unused BattleFrontier_OutsideWest_Text_QuestionMarkUnderConstruction: @ 824AB75 .string "The ??????\n" .string "Under Construction!$" -BattleFrontier_BattleDomeLobby_Text_24AB94: @ 824AB94 +BattleFrontier_BattleDomeLobby_Text_WinnersGainReputation: @ 824AB94 .string "When a TRAINER chains tournament\n" .string "wins at the BATTLE DOME, he or she\l" .string "gains a reputation as a star.\p" @@ -641,48 +642,48 @@ BattleFrontier_BattleDomeLobby_Text_24AB94: @ 824AB94 .string "A true superstar is a TRAINER who\n" .string "can keep winning tournaments.$" -BattleFrontier_BattleDomeLobby_Text_24AC76: @ 824AC76 +BattleFrontier_BattleDomeLobby_Text_TrashedInFirstRound: @ 824AC76 .string "I ran into one of the tournament\n" .string "favorites in the very first round.\p" .string "Of course I got trashed…$" -BattleFrontier_BattleDomeLobby_Text_24ACD3: @ 824ACD3 +BattleFrontier_BattleDomeLobby_Text_NeedToCheckOpponentCarefully: @ 824ACD3 .string "I would've won if I'd kept this POKéMON\n" .string "held in reserve.\p" .string "You need to check your opponent's\n" .string "POKéMON carefully before choosing\l" .string "your battling POKéMON.$" -BattleFrontier_BattleDomeLobby_Text_24AD67: @ 824AD67 +BattleFrontier_BattleDomeLobby_Text_CongratsDefeatedTucker: @ 824AD67 .string "Congratulations!\p" .string "You defeated the DOME ACE and won\n" .string "the Battle Tournament!$" -BattleFrontier_BattleDomeLobby_Text_24ADB1: @ 824ADB1 +BattleFrontier_BattleDomeLobby_Text_AwardTheseBattlePoints: @ 824ADB1 .string "In recognition of your strategy--\n" .string "a thing of beauty it was, too--\l" .string "we award you these Battle Point(s)!$" -BattleFrontier_BattleDomeLobby_Text_24AE17: @ 824AE17 +BattleFrontier_BattleDomeLobby_Text_RecordLastMatch: @ 824AE17 .string "Would you like to record your\n" .string "last BATTLE DOME match on your\l" .string "FRONTIER PASS?$" -BattleFrontier_BattleDomeLobby_Text_24AE63: @ 824AE63 +BattleFrontier_BattleDomeLobby_Text_RulesAreListed: @ 824AE63 .string "The Battle Tournament rules\n" .string "are listed.$" -BattleFrontier_BattleDomeLobby_Text_24AE8B: @ 824AE8B +BattleFrontier_BattleDomeLobby_Text_ReadWhichHeading: @ 824AE8B .string "Which heading do you want to read?$" -BattleFrontier_BattleDomeLobby_Text_24AEAE: @ 824AEAE +BattleFrontier_BattleDomeLobby_Text_ExplainMatchupRules: @ 824AEAE .string "The tournament matchups are drawn up\n" .string "based on the toughness of POKéMON\l" .string "held by TRAINERS.\p" .string "The matchups avoid having tough\n" .string "TRAINERS face each other right away.$" -BattleFrontier_BattleDomeLobby_Text_24AF4C: @ 824AF4C +BattleFrontier_BattleDomeLobby_Text_ExplainTourneyTree: @ 824AF4C .string "The tournament chart, or as we call it,\n" .string "the “Tree,” is available for viewing\l" .string "in the Waiting Room from any guide.\p" @@ -693,7 +694,7 @@ BattleFrontier_BattleDomeLobby_Text_24AF4C: @ 824AF4C .string "by TRAINERS, and the battle styles of\l" .string "TRAINERS.$" -BattleFrontier_BattleDomeLobby_Text_24B073: @ 824B073 +BattleFrontier_BattleDomeLobby_Text_ExplainDoubleKORules: @ 824B073 .string "If battling POKéMON faint at the same\n" .string "time--a double KO--in a tournament\l" .string "match, the REFEREES will review\l" diff --git a/data/maps/BattleFrontier_BattleDomePreBattleRoom/scripts.inc b/data/maps/BattleFrontier_BattleDomePreBattleRoom/scripts.inc index 765a07e92..b09674268 100644 --- a/data/maps/BattleFrontier_BattleDomePreBattleRoom/scripts.inc +++ b/data/maps/BattleFrontier_BattleDomePreBattleRoom/scripts.inc @@ -1,92 +1,91 @@ BattleFrontier_BattleDomePreBattleRoom_MapScripts:: @ 824B1F9 - map_script MAP_SCRIPT_ON_FRAME_TABLE, BattleFrontier_BattleDomePreBattleRoom_MapScript2_24B218 - map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, BattleFrontier_BattleDomePreBattleRoom_MapScript2_24B204 + map_script MAP_SCRIPT_ON_FRAME_TABLE, BattleFrontier_BattleDomePreBattleRoom_OnFrame + map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, BattleFrontier_BattleDomePreBattleRoom_OnWarp .byte 0 -BattleFrontier_BattleDomePreBattleRoom_MapScript2_24B204: @ 824B204 - map_script_2 VAR_TEMP_1, 0, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B20E +BattleFrontier_BattleDomePreBattleRoom_OnWarp: @ 824B204 + map_script_2 VAR_TEMP_1, 0, BattleFrontier_BattleDomePreBattleRoom_EventScript_TurnPlayerNorth .2byte 0 -BattleFrontier_BattleDomePreBattleRoom_EventScript_24B20E:: @ 824B20E +BattleFrontier_BattleDomePreBattleRoom_EventScript_TurnPlayerNorth:: @ 824B20E setvar VAR_TEMP_1, 1 turnobject OBJ_EVENT_ID_PLAYER, DIR_NORTH end -BattleFrontier_BattleDomePreBattleRoom_MapScript2_24B218: @ 824B218 - map_script_2 VAR_TEMP_0, 0, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B222 +BattleFrontier_BattleDomePreBattleRoom_OnFrame: @ 824B218 + map_script_2 VAR_TEMP_0, 0, BattleFrontier_BattleDomePreBattleRoom_EventScript_EnterRoom .2byte 0 -BattleFrontier_BattleDomePreBattleRoom_EventScript_24B222:: @ 824B222 +BattleFrontier_BattleDomePreBattleRoom_EventScript_EnterRoom:: @ 824B222 compare VAR_0x8006, 1 - goto_if_eq BattleFrontier_BattleDomePreBattleRoom_EventScript_24B5C7 + goto_if_eq BattleFrontier_BattleDomePreBattleRoom_EventScript_ReturnFromBattle frontier_set FRONTIER_DATA_RECORD_DISABLED, TRUE setvar VAR_TEMP_0, 1 - applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattleDomePreBattleRoom_Movement_24B652 + applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattleDomePreBattleRoom_Movement_PlayerEnter waitmovement 0 lockall - -BattleFrontier_BattleDomePreBattleRoom_EventScript_24B24F:: @ 824B24F - call BattleFrontier_BattleDomePreBattleRoom_EventScript_24B4FB +BattleFrontier_BattleDomePreBattleRoom_EventScript_AskReadyForNextRound:: @ 824B24F + call BattleFrontier_BattleDomePreBattleRoom_EventScript_ReadyForNextRoundMessage waitmessage - switch VAR_RESULT + switch VAR_RESULT @ No case? call BattleFrontier_EventScript_GetCantRecordBattle compare VAR_RESULT, TRUE - goto_if_eq BattleFrontier_BattleDomePreBattleRoom_EventScript_24B2C1 + goto_if_eq BattleFrontier_BattleDomePreBattleRoom_EventScript_AskReadyForNextRoundNoRecord multichoice 16, 0, MULTI_TOURNEY_WITH_RECORD, 1 switch VAR_RESULT - case 0, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B3DD - case 1, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B3F5 - case 2, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B46D - case 3, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B30D - case 4, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B349 - case 5, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B377 - case MULTI_B_PRESSED, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B24F - -BattleFrontier_BattleDomePreBattleRoom_EventScript_24B2C1:: @ 824B2C1 + case 0, BattleFrontier_BattleDomePreBattleRoom_EventScript_ShowOpponentInfo + case 1, BattleFrontier_BattleDomePreBattleRoom_EventScript_ShowTourneyTree + case 2, BattleFrontier_BattleDomePreBattleRoom_EventScript_ContinueChallenge + case 3, BattleFrontier_BattleDomePreBattleRoom_EventScript_AskRecordBattle + case 4, BattleFrontier_BattleDomePreBattleRoom_EventScript_AskPauseChallenge + case 5, BattleFrontier_BattleDomePreBattleRoom_EventScript_AskRetireChallenge + case MULTI_B_PRESSED, BattleFrontier_BattleDomePreBattleRoom_EventScript_AskReadyForNextRound + +BattleFrontier_BattleDomePreBattleRoom_EventScript_AskReadyForNextRoundNoRecord:: @ 824B2C1 multichoice 16, 2, MULTI_TOURNEY_NO_RECORD, 1 switch VAR_RESULT - case 0, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B3DD - case 1, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B3F5 - case 2, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B46D - case 3, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B349 - case 4, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B377 - case MULTI_B_PRESSED, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B24F - -BattleFrontier_BattleDomePreBattleRoom_EventScript_24B30D:: @ 824B30D - message BattleFrontier_BattleDomePreBattleRoom_Text_24BAF7 + case 0, BattleFrontier_BattleDomePreBattleRoom_EventScript_ShowOpponentInfo + case 1, BattleFrontier_BattleDomePreBattleRoom_EventScript_ShowTourneyTree + case 2, BattleFrontier_BattleDomePreBattleRoom_EventScript_ContinueChallenge + case 3, BattleFrontier_BattleDomePreBattleRoom_EventScript_AskPauseChallenge + case 4, BattleFrontier_BattleDomePreBattleRoom_EventScript_AskRetireChallenge + case MULTI_B_PRESSED, BattleFrontier_BattleDomePreBattleRoom_EventScript_AskReadyForNextRound + +BattleFrontier_BattleDomePreBattleRoom_EventScript_AskRecordBattle:: @ 824B30D + message BattleFrontier_BattleDomePreBattleRoom_Text_RecordLastMatch waitmessage multichoicedefault 20, 8, MULTI_YESNO, 1, 0 switch VAR_RESULT - case 1, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B24F - case 0, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B33F - case MULTI_B_PRESSED, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B24F + case 1, BattleFrontier_BattleDomePreBattleRoom_EventScript_AskReadyForNextRound + case 0, BattleFrontier_BattleDomePreBattleRoom_EventScript_RecordBattle + case MULTI_B_PRESSED, BattleFrontier_BattleDomePreBattleRoom_EventScript_AskReadyForNextRound -BattleFrontier_BattleDomePreBattleRoom_EventScript_24B33F:: @ 824B33F +BattleFrontier_BattleDomePreBattleRoom_EventScript_RecordBattle:: @ 824B33F call BattleFrontier_EventScript_SaveBattle - goto BattleFrontier_BattleDomePreBattleRoom_EventScript_24B24F + goto BattleFrontier_BattleDomePreBattleRoom_EventScript_AskReadyForNextRound -BattleFrontier_BattleDomePreBattleRoom_EventScript_24B349:: @ 824B349 - msgbox BattleFrontier_BattleDomePreBattleRoom_Text_24BA69, MSGBOX_YESNO +BattleFrontier_BattleDomePreBattleRoom_EventScript_AskPauseChallenge:: @ 824B349 + msgbox BattleFrontier_BattleDomePreBattleRoom_Text_SaveAndQuitGame, MSGBOX_YESNO switch VAR_RESULT - case NO, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B24F - case YES, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B3BB - case MULTI_B_PRESSED, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B24F + case NO, BattleFrontier_BattleDomePreBattleRoom_EventScript_AskReadyForNextRound + case YES, BattleFrontier_BattleDomePreBattleRoom_EventScript_PauseChallenge + case MULTI_B_PRESSED, BattleFrontier_BattleDomePreBattleRoom_EventScript_AskReadyForNextRound -BattleFrontier_BattleDomePreBattleRoom_EventScript_24B377:: @ 824B377 - message BattleFrontier_BattleDomePreBattleRoom_Text_24BA93 +BattleFrontier_BattleDomePreBattleRoom_EventScript_AskRetireChallenge:: @ 824B377 + message BattleFrontier_BattleDomePreBattleRoom_Text_RetireYourChallenge waitmessage multichoicedefault 20, 8, MULTI_YESNO, 1, 0 switch VAR_RESULT - case 1, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B24F - case 0, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B3A9 - case MULTI_B_PRESSED, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B24F + case 1, BattleFrontier_BattleDomePreBattleRoom_EventScript_AskReadyForNextRound + case 0, BattleFrontier_BattleDomePreBattleRoom_EventScript_RetireChallenge + case MULTI_B_PRESSED, BattleFrontier_BattleDomePreBattleRoom_EventScript_AskReadyForNextRound -BattleFrontier_BattleDomePreBattleRoom_EventScript_24B3A9:: @ 824B3A9 - dome_resolvewinners 9 - goto BattleFrontier_BattleDomePreBattleRoom_EventScript_24BE9A +BattleFrontier_BattleDomePreBattleRoom_EventScript_RetireChallenge:: @ 824B3A9 + dome_resolvewinners DOME_PLAYER_RETIRED + goto BattleFrontier_BattleDomeBattleRoom_EventScript_WarpToLobbyLost -BattleFrontier_BattleDomePreBattleRoom_EventScript_24B3BB:: @ 824B3BB - message BattleFrontier_BattleDomePreBattleRoom_Text_24BAD3 +BattleFrontier_BattleDomePreBattleRoom_EventScript_PauseChallenge:: @ 824B3BB + message BattleFrontier_BattleDomePreBattleRoom_Text_SavingDataPleaseWait waitmessage dome_save CHALLENGE_STATUS_PAUSED playse SE_SAVE @@ -95,70 +94,70 @@ BattleFrontier_BattleDomePreBattleRoom_EventScript_24B3BB:: @ 824B3BB frontier_reset end -BattleFrontier_BattleDomePreBattleRoom_EventScript_24B3DD:: @ 824B3DD - msgbox BattleFrontier_BattleDomePreBattleRoom_Text_24B9B5, MSGBOX_DEFAULT +BattleFrontier_BattleDomePreBattleRoom_EventScript_ShowOpponentInfo:: @ 824B3DD + msgbox BattleFrontier_BattleDomePreBattleRoom_Text_PlayersNextOpponentIsTrainer, MSGBOX_DEFAULT fadescreen FADE_TO_BLACK dome_showopponentinfo waitstate - goto BattleFrontier_BattleDomePreBattleRoom_EventScript_24B24F + goto BattleFrontier_BattleDomePreBattleRoom_EventScript_AskReadyForNextRound -BattleFrontier_BattleDomePreBattleRoom_EventScript_24B3F5:: @ 824B3F5 - call BattleFrontier_BattleDomePreBattleRoom_EventScript_24B40A +BattleFrontier_BattleDomePreBattleRoom_EventScript_ShowTourneyTree:: @ 824B3F5 + call BattleFrontier_BattleDomePreBattleRoom_EventScript_ShowRoundMessage fadescreen FADE_TO_BLACK dome_showtourneytree waitstate - goto BattleFrontier_BattleDomePreBattleRoom_EventScript_24B24F + goto BattleFrontier_BattleDomePreBattleRoom_EventScript_AskReadyForNextRound -BattleFrontier_BattleDomePreBattleRoom_EventScript_24B40A:: @ 824B40A +BattleFrontier_BattleDomePreBattleRoom_EventScript_ShowRoundMessage:: @ 824B40A frontier_get FRONTIER_DATA_BATTLE_NUM switch VAR_RESULT - case 0, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B449 - case 1, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B452 - case 2, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B45B - case 3, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B464 + case DOME_ROUND1, BattleFrontier_BattleDomePreBattleRoom_EventScript_TourneyInRound1 + case DOME_ROUND2, BattleFrontier_BattleDomePreBattleRoom_EventScript_TourneyInRound2 + case DOME_SEMIFINAL, BattleFrontier_BattleDomePreBattleRoom_EventScript_TourneyInSemifinals + case DOME_FINAL, BattleFrontier_BattleDomePreBattleRoom_EventScript_TourneyInFinals return -BattleFrontier_BattleDomePreBattleRoom_EventScript_24B449:: @ 824B449 - msgbox BattleFrontier_BattleDomePreBattleRoom_Text_24B9D9, MSGBOX_DEFAULT +BattleFrontier_BattleDomePreBattleRoom_EventScript_TourneyInRound1:: @ 824B449 + msgbox BattleFrontier_BattleDomePreBattleRoom_Text_TourneyInRound1, MSGBOX_DEFAULT return -BattleFrontier_BattleDomePreBattleRoom_EventScript_24B452:: @ 824B452 - msgbox BattleFrontier_BattleDomePreBattleRoom_Text_24B9FD, MSGBOX_DEFAULT +BattleFrontier_BattleDomePreBattleRoom_EventScript_TourneyInRound2:: @ 824B452 + msgbox BattleFrontier_BattleDomePreBattleRoom_Text_TourneyInRound2, MSGBOX_DEFAULT return -BattleFrontier_BattleDomePreBattleRoom_EventScript_24B45B:: @ 824B45B - msgbox BattleFrontier_BattleDomePreBattleRoom_Text_24BA21, MSGBOX_DEFAULT +BattleFrontier_BattleDomePreBattleRoom_EventScript_TourneyInSemifinals:: @ 824B45B + msgbox BattleFrontier_BattleDomePreBattleRoom_Text_TourneyInSemifinals, MSGBOX_DEFAULT return -BattleFrontier_BattleDomePreBattleRoom_EventScript_24B464:: @ 824B464 - msgbox BattleFrontier_BattleDomePreBattleRoom_Text_24BA46, MSGBOX_DEFAULT +BattleFrontier_BattleDomePreBattleRoom_EventScript_TourneyInFinals:: @ 824B464 + msgbox BattleFrontier_BattleDomePreBattleRoom_Text_TourneyInFinals, MSGBOX_DEFAULT return -BattleFrontier_BattleDomePreBattleRoom_EventScript_24B46D:: @ 824B46D - message BattleFrontier_BattleDomePreBattleRoom_Text_24B70C +BattleFrontier_BattleDomePreBattleRoom_EventScript_ContinueChallenge:: @ 824B46D + message BattleFrontier_BattleDomePreBattleRoom_Text_ChooseTwoMons waitmessage waitbuttonpress fadescreen FADE_TO_BLACK call BattleFrontier_EventScript_GetLvlMode copyvar VAR_0x8004, VAR_RESULT - setvar VAR_0x8005, 2 @ 2 of the 3 party mons are selected for battle + setvar VAR_0x8005, DOME_BATTLE_PARTY_SIZE @ 2 of the 3 party mons are selected for battle special ChoosePartyForBattleFrontier waitstate frontier_resetsketch compare VAR_RESULT, 0 - goto_if_eq BattleFrontier_BattleDomePreBattleRoom_EventScript_24B24F - dome_set DOME_DATA_8 + goto_if_eq BattleFrontier_BattleDomePreBattleRoom_EventScript_AskReadyForNextRound + dome_set DOME_DATA_SELECTED_MONS dome_reduceparty dome_setopponent - msgbox BattleFrontier_BattleDomePreBattleRoom_Text_24B748, MSGBOX_DEFAULT + msgbox BattleFrontier_BattleDomePreBattleRoom_Text_RightThisWay, MSGBOX_DEFAULT closemessage - applymovement 1, BattleFrontier_BattleDomePreBattleRoom_Movement_24B64F + applymovement 1, BattleFrontier_BattleDomePreBattleRoom_Movement_AttendantMoveAside waitmovement 0 - applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattleDomePreBattleRoom_Movement_24B657 + applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattleDomePreBattleRoom_Movement_PlayerWalkToDoor waitmovement 0 opendoor 5, 1 waitdooranim - applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattleDomePreBattleRoom_Movement_24B659 + applymovement OBJ_EVENT_ID_PLAYER, BattleFrontier_BattleDomePreBattleRoom_Movement_PlayerEnterDoor waitmovement 0 closedoor 5, 1 waitdooranim @@ -167,224 +166,229 @@ BattleFrontier_BattleDomePreBattleRoom_EventScript_24B46D:: @ 824B46D waitstate end -BattleFrontier_BattleDomePreBattleRoom_EventScript_24B4FB:: @ 824B4FB +BattleFrontier_BattleDomePreBattleRoom_EventScript_ReadyForNextRoundMessage:: @ 824B4FB frontier_get FRONTIER_DATA_BATTLE_NUM switch VAR_RESULT - case 0, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B53A - case 1, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B540 - case 2, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B546 - case 3, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B54C + case DOME_ROUND1, BattleFrontier_BattleDomePreBattleRoom_EventScript_ReadyForRound1 + case DOME_ROUND2, BattleFrontier_BattleDomePreBattleRoom_EventScript_ReadyForRound2 + case DOME_SEMIFINAL, BattleFrontier_BattleDomePreBattleRoom_EventScript_ReadyForSemifinals + case DOME_FINAL, BattleFrontier_BattleDomePreBattleRoom_EventScript_ReadyForFinals return -BattleFrontier_BattleDomePreBattleRoom_EventScript_24B53A:: @ 824B53A - message BattleFrontier_BattleDomePreBattleRoom_Text_24B65C +BattleFrontier_BattleDomePreBattleRoom_EventScript_ReadyForRound1:: @ 824B53A + message BattleFrontier_BattleDomePreBattleRoom_Text_ReadyForRound1 return -BattleFrontier_BattleDomePreBattleRoom_EventScript_24B540:: @ 824B540 - message BattleFrontier_BattleDomePreBattleRoom_Text_24B689 +BattleFrontier_BattleDomePreBattleRoom_EventScript_ReadyForRound2:: @ 824B540 + message BattleFrontier_BattleDomePreBattleRoom_Text_ReadyForRound2 return -BattleFrontier_BattleDomePreBattleRoom_EventScript_24B546:: @ 824B546 - message BattleFrontier_BattleDomePreBattleRoom_Text_24B6B6 +BattleFrontier_BattleDomePreBattleRoom_EventScript_ReadyForSemifinals:: @ 824B546 + message BattleFrontier_BattleDomePreBattleRoom_Text_ReadyForSemifinals return -BattleFrontier_BattleDomePreBattleRoom_EventScript_24B54C:: @ 824B54C +BattleFrontier_BattleDomePreBattleRoom_EventScript_ReadyForFinals:: @ 824B54C frontier_getbrainstatus switch VAR_RESULT - case FRONTIER_BRAIN_SILVER, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B58B - case FRONTIER_BRAIN_GOLD, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B5A0 - case FRONTIER_BRAIN_STREAK, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B58B - case FRONTIER_BRAIN_STREAK_LONG, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B5A0 - message BattleFrontier_BattleDomePreBattleRoom_Text_24B6E3 + case FRONTIER_BRAIN_SILVER, BattleFrontier_BattleDomePreBattleRoom_EventScript_ReadyForTuckerSilver + case FRONTIER_BRAIN_GOLD, BattleFrontier_BattleDomePreBattleRoom_EventScript_ReadyForTuckerGold + case FRONTIER_BRAIN_STREAK, BattleFrontier_BattleDomePreBattleRoom_EventScript_ReadyForTuckerSilver + case FRONTIER_BRAIN_STREAK_LONG, BattleFrontier_BattleDomePreBattleRoom_EventScript_ReadyForTuckerGold + message BattleFrontier_BattleDomePreBattleRoom_Text_ReadyForFinals return -BattleFrontier_BattleDomePreBattleRoom_EventScript_24B58B:: @ 824B58B - goto_if_set FLAG_TEMP_1, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B5B5 - msgbox BattleFrontier_BattleDomePreBattleRoom_Text_24BB2E, MSGBOX_DEFAULT +BattleFrontier_BattleDomePreBattleRoom_EventScript_ReadyForTuckerSilver:: @ 824B58B + goto_if_set FLAG_TEMP_1, BattleFrontier_BattleDomePreBattleRoom_EventScript_ReadyForTuckerSilverShort + msgbox BattleFrontier_BattleDomePreBattleRoom_Text_ReadyForTuckerSilver, MSGBOX_DEFAULT setflag FLAG_TEMP_1 return -BattleFrontier_BattleDomePreBattleRoom_EventScript_24B5A0:: @ 824B5A0 - goto_if_set FLAG_TEMP_1, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B5BE - msgbox BattleFrontier_BattleDomePreBattleRoom_Text_24BBAC, MSGBOX_DEFAULT +BattleFrontier_BattleDomePreBattleRoom_EventScript_ReadyForTuckerGold:: @ 824B5A0 + goto_if_set FLAG_TEMP_1, BattleFrontier_BattleDomePreBattleRoom_EventScript_ReadyForTuckerGoldShort + msgbox BattleFrontier_BattleDomePreBattleRoom_Text_ReadyForTuckerGold, MSGBOX_DEFAULT setflag FLAG_TEMP_1 return -BattleFrontier_BattleDomePreBattleRoom_EventScript_24B5B5:: @ 824B5B5 - msgbox BattleFrontier_BattleDomePreBattleRoom_Text_24BC2A, MSGBOX_DEFAULT +BattleFrontier_BattleDomePreBattleRoom_EventScript_ReadyForTuckerSilverShort:: @ 824B5B5 + msgbox BattleFrontier_BattleDomePreBattleRoom_Text_ReadyForTuckerSilverShort, MSGBOX_DEFAULT return -BattleFrontier_BattleDomePreBattleRoom_EventScript_24B5BE:: @ 824B5BE - msgbox BattleFrontier_BattleDomePreBattleRoom_Text_24BC63, MSGBOX_DEFAULT +BattleFrontier_BattleDomePreBattleRoom_EventScript_ReadyForTuckerGoldShort:: @ 824B5BE + msgbox BattleFrontier_BattleDomePreBattleRoom_Text_ReadyForTuckerGoldShort, MSGBOX_DEFAULT return -BattleFrontier_BattleDomePreBattleRoom_EventScript_24B5C7:: @ 824B5C7 +BattleFrontier_BattleDomePreBattleRoom_EventScript_ReturnFromBattle:: @ 824B5C7 setvar VAR_TEMP_0, 1 - msgbox BattleFrontier_BattleDomePreBattleRoom_Text_24B760, MSGBOX_DEFAULT + msgbox BattleFrontier_BattleDomePreBattleRoom_Text_RestoreMonsToFullHealth, MSGBOX_DEFAULT special LoadPlayerParty frontier_setpartyorder FRONTIER_PARTY_SIZE playfanfare MUS_ME_ASA waitfanfare special HealPlayerParty - call BattleFrontier_BattleDomePreBattleRoom_EventScript_24B600 + call BattleFrontier_BattleDomePreBattleRoom_EventScript_RoundCompleteMessage fadescreen FADE_TO_BLACK dome_showstatictourneytree waitstate - goto BattleFrontier_BattleDomePreBattleRoom_EventScript_24B24F + goto BattleFrontier_BattleDomePreBattleRoom_EventScript_AskReadyForNextRound -BattleFrontier_BattleDomePreBattleRoom_EventScript_24B600:: @ 824B600 +BattleFrontier_BattleDomePreBattleRoom_EventScript_RoundCompleteMessage:: @ 824B600 frontier_get FRONTIER_DATA_BATTLE_NUM switch VAR_RESULT - case 1, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B634 - case 2, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B63D - case 3, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B646 + case DOME_ROUND2, BattleFrontier_BattleDomePreBattleRoom_EventScript_Round1Complete + case DOME_SEMIFINAL, BattleFrontier_BattleDomePreBattleRoom_EventScript_Round2Complete + case DOME_FINAL, BattleFrontier_BattleDomePreBattleRoom_EventScript_SemifinalsComplete return -BattleFrontier_BattleDomePreBattleRoom_EventScript_24B634:: @ 824B634 - msgbox BattleFrontier_BattleDomePreBattleRoom_Text_24B7A3, MSGBOX_DEFAULT +BattleFrontier_BattleDomePreBattleRoom_EventScript_Round1Complete:: @ 824B634 + msgbox BattleFrontier_BattleDomePreBattleRoom_Text_Round1Complete, MSGBOX_DEFAULT return -BattleFrontier_BattleDomePreBattleRoom_EventScript_24B63D:: @ 824B63D - msgbox BattleFrontier_BattleDomePreBattleRoom_Text_24B7F1, MSGBOX_DEFAULT +BattleFrontier_BattleDomePreBattleRoom_EventScript_Round2Complete:: @ 824B63D + msgbox BattleFrontier_BattleDomePreBattleRoom_Text_Round2Complete, MSGBOX_DEFAULT return -BattleFrontier_BattleDomePreBattleRoom_EventScript_24B646:: @ 824B646 - msgbox BattleFrontier_BattleDomePreBattleRoom_Text_24B83F, MSGBOX_DEFAULT +BattleFrontier_BattleDomePreBattleRoom_EventScript_SemifinalsComplete:: @ 824B646 + msgbox BattleFrontier_BattleDomePreBattleRoom_Text_SemifinalsComplete, MSGBOX_DEFAULT return -BattleFrontier_BattleDomePreBattleRoom_Movement_24B64F: @ 824B64F +BattleFrontier_BattleDomePreBattleRoom_Movement_AttendantMoveAside: @ 824B64F walk_right face_left step_end -BattleFrontier_BattleDomePreBattleRoom_Movement_24B652: @ 824B652 +BattleFrontier_BattleDomePreBattleRoom_Movement_PlayerEnter: @ 824B652 walk_up walk_up walk_up walk_up step_end -BattleFrontier_BattleDomePreBattleRoom_Movement_24B657: @ 824B657 +BattleFrontier_BattleDomePreBattleRoom_Movement_PlayerWalkToDoor: @ 824B657 walk_up step_end -BattleFrontier_BattleDomePreBattleRoom_Movement_24B659: @ 824B659 +BattleFrontier_BattleDomePreBattleRoom_Movement_PlayerEnterDoor: @ 824B659 walk_up set_invisible step_end -BattleFrontier_BattleDomePreBattleRoom_Text_24B65C: @ 824B65C +BattleFrontier_BattleDomePreBattleRoom_Text_ReadyForRound1: @ 824B65C .string "Your 1st-round match is next.\n" .string "Are you ready?$" -BattleFrontier_BattleDomePreBattleRoom_Text_24B689: @ 824B689 +BattleFrontier_BattleDomePreBattleRoom_Text_ReadyForRound2: @ 824B689 .string "Your 2nd-round match is next.\n" .string "Are you ready?$" -BattleFrontier_BattleDomePreBattleRoom_Text_24B6B6: @ 824B6B6 +BattleFrontier_BattleDomePreBattleRoom_Text_ReadyForSemifinals: @ 824B6B6 .string "Your semifinal match is next.\n" .string "Are you ready?$" -BattleFrontier_BattleDomePreBattleRoom_Text_24B6E3: @ 824B6E3 +BattleFrontier_BattleDomePreBattleRoom_Text_ReadyForFinals: @ 824B6E3 .string "Your final match is next.\n" .string "Are you ready?$" -BattleFrontier_BattleDomePreBattleRoom_Text_24B70C: @ 824B70C +BattleFrontier_BattleDomePreBattleRoom_Text_ChooseTwoMons: @ 824B70C .string "Please choose the two POKéMON\n" .string "that are to appear in battle.$" -BattleFrontier_BattleDomePreBattleRoom_Text_24B748: @ 824B748 +BattleFrontier_BattleDomePreBattleRoom_Text_RightThisWay: @ 824B748 .string "Right this way, please.$" -BattleFrontier_BattleDomePreBattleRoom_Text_24B760: @ 824B760 +BattleFrontier_BattleDomePreBattleRoom_Text_RestoreMonsToFullHealth: @ 824B760 .string "Thank you for competing!\p" .string "I'll restore your POKéMON to\n" .string "full health.$" -BattleFrontier_BattleDomePreBattleRoom_Text_24B7A3: @ 824B7A3 +BattleFrontier_BattleDomePreBattleRoom_Text_Round1Complete: @ 824B7A3 .string "All 1st-round matches have been\n" .string "completed.\p" .string "These are the teams that advanced!$" -BattleFrontier_BattleDomePreBattleRoom_Text_24B7F1: @ 824B7F1 +BattleFrontier_BattleDomePreBattleRoom_Text_Round2Complete: @ 824B7F1 .string "All 2nd-round matches have been\n" .string "completed.\p" .string "These are the teams that advanced!$" -BattleFrontier_BattleDomePreBattleRoom_Text_24B83F: @ 824B83F +BattleFrontier_BattleDomePreBattleRoom_Text_SemifinalsComplete: @ 824B83F .string "All semifinal matches have been\n" .string "completed.\p" .string "These are the teams that advanced!$" -BattleFrontier_BattleDomePreBattleRoom_Text_24B88D: @ 824B88D +@ Unused +BattleFrontier_BattleDomePreBattleRoom_Text_CongratsReadyForRound2: @ 824B88D .string "Congratulations for getting through\n" .string "the 1st round.\p" .string "The 2nd round is next.\n" .string "Are you ready?$" -BattleFrontier_BattleDomePreBattleRoom_Text_24B8E6: @ 824B8E6 +@ Unused +BattleFrontier_BattleDomePreBattleRoom_Text_CongratsReadyForSemifinals: @ 824B8E6 .string "Congratulations for advancing\n" .string "to the semifinals.\p" .string "The best four teams meet in this round.\n" .string "Are you ready?$" -BattleFrontier_BattleDomePreBattleRoom_Text_24B94E: @ 824B94E +@ Unused +BattleFrontier_BattleDomePreBattleRoom_Text_CongratsReadyForFinals: @ 824B94E .string "Congratulations for advancing\n" .string "to the final match.\p" .string "You're one win from the championship.\n" .string "Are you ready?$" -BattleFrontier_BattleDomePreBattleRoom_Text_24B9B5: @ 824B9B5 +BattleFrontier_BattleDomePreBattleRoom_Text_PlayersNextOpponentIsTrainer: @ 824B9B5 .string "{PLAYER}'s next opponent\n" .string "is this TRAINER.$" -BattleFrontier_BattleDomePreBattleRoom_Text_24B9D9: @ 824B9D9 +BattleFrontier_BattleDomePreBattleRoom_Text_TourneyInRound1: @ 824B9D9 .string "The tournament is in the 1st round.$" -BattleFrontier_BattleDomePreBattleRoom_Text_24B9FD: @ 824B9FD +BattleFrontier_BattleDomePreBattleRoom_Text_TourneyInRound2: @ 824B9FD .string "The tournament is in the 2nd round.$" -BattleFrontier_BattleDomePreBattleRoom_Text_24BA21: @ 824BA21 +BattleFrontier_BattleDomePreBattleRoom_Text_TourneyInSemifinals: @ 824BA21 .string "The tournament is in the semifinals.$" -BattleFrontier_BattleDomePreBattleRoom_Text_24BA46: @ 824BA46 +BattleFrontier_BattleDomePreBattleRoom_Text_TourneyInFinals: @ 824BA46 .string "The tournament is up to the final.$" -BattleFrontier_BattleDomePreBattleRoom_Text_24BA69: @ 824BA69 +BattleFrontier_BattleDomePreBattleRoom_Text_SaveAndQuitGame: @ 824BA69 .string "Would you like to save and\n" .string "quit the game?$" -BattleFrontier_BattleDomePreBattleRoom_Text_24BA93: @ 824BA93 +BattleFrontier_BattleDomePreBattleRoom_Text_RetireYourChallenge: @ 824BA93 .string "Would you like to retire from your\n" .string "Battle Tournament challenge?$" -BattleFrontier_BattleDomePreBattleRoom_Text_24BAD3: @ 824BAD3 +BattleFrontier_BattleDomePreBattleRoom_Text_SavingDataPleaseWait: @ 824BAD3 .string "I am saving your data.\n" .string "Please wait.$" -BattleFrontier_BattleDomePreBattleRoom_Text_24BAF7: @ 824BAF7 +BattleFrontier_BattleDomePreBattleRoom_Text_RecordLastMatch: @ 824BAF7 .string "Should I record your last match\n" .string "on your FRONTIER PASS?$" -BattleFrontier_BattleDomePreBattleRoom_Text_24BB2E: @ 824BB2E +BattleFrontier_BattleDomePreBattleRoom_Text_ReadyForTuckerSilver: @ 824BB2E .string "Congratulations for advancing\n" .string "to the final match.\p" .string "For the final match, you will challenge\n" .string "the DOME ACE TUCKER.\p" .string "Are you ready?$" -BattleFrontier_BattleDomePreBattleRoom_Text_24BBAC: @ 824BBAC +@ Identical to ReadyForTuckerSilver +BattleFrontier_BattleDomePreBattleRoom_Text_ReadyForTuckerGold: @ 824BBAC .string "Congratulations for advancing\n" .string "to the final match.\p" .string "For the final match, you will challenge\n" .string "the DOME ACE TUCKER.\p" .string "Are you ready?$" -BattleFrontier_BattleDomePreBattleRoom_Text_24BC2A: @ 824BC2A +BattleFrontier_BattleDomePreBattleRoom_Text_ReadyForTuckerSilverShort: @ 824BC2A .string "Your final battle against TUCKER is\n" .string "next. Are you ready?$" -BattleFrontier_BattleDomePreBattleRoom_Text_24BC63: @ 824BC63 +@ Identical again +BattleFrontier_BattleDomePreBattleRoom_Text_ReadyForTuckerGoldShort: @ 824BC63 .string "Your final battle against TUCKER is\n" .string "next. Are you ready?$" diff --git a/data/maps/BattleFrontier_BattleTowerLobby/scripts.inc b/data/maps/BattleFrontier_BattleTowerLobby/scripts.inc index 132c1615a..843cacef4 100644 --- a/data/maps/BattleFrontier_BattleTowerLobby/scripts.inc +++ b/data/maps/BattleFrontier_BattleTowerLobby/scripts.inc @@ -6,7 +6,7 @@ BattleFrontier_BattleTowerLobby_MapScripts:: @ 823E67B .byte 0 BattleFrontier_BattleTowerLobby_OnResume: @ 823E690 - special sub_81653CC + special TryHideBattleTowerReporter end BattleFrontier_BattleTowerLobby_OnTransition: @ 823E694 @@ -857,7 +857,7 @@ BattleFrontier_BattleTowerLobby_EventScript_CableLinkSuccessful:: @ 823F3AF waitstate playse SE_SAVE waitse - special sub_80B3BC4 + special TrySetBattleTowerLinkType goto BattleFrontier_BattleTowerLobby_EventScript_EnterElevator end diff --git a/data/maps/DewfordTown_Gym/scripts.inc b/data/maps/DewfordTown_Gym/scripts.inc index 2641db5dc..9ddd4aa1d 100644 --- a/data/maps/DewfordTown_Gym/scripts.inc +++ b/data/maps/DewfordTown_Gym/scripts.inc @@ -151,7 +151,7 @@ DewfordTown_Gym_EventScript_StopCountingTrainers:: @ 81FC7C1 return DewfordTown_Gym_EventScript_Brawly:: @ 81FC7C2 - trainerbattle_single TRAINER_BRAWLY_1, DewfordTown_Gym_Text_BrawlyPreBattle, DewfordTown_Gym_Text_BrawlyDefeat, DewfordTown_Gym_EventScript_BrawlyDefeated, NO_MUSIC + trainerbattle_single TRAINER_BRAWLY_1, DewfordTown_Gym_Text_BrawlyIntro, DewfordTown_Gym_Text_BrawlyDefeat, DewfordTown_Gym_EventScript_BrawlyDefeated, NO_MUSIC specialvar VAR_RESULT, ShouldTryRematchBattle compare VAR_RESULT, TRUE goto_if_eq DewfordTown_Gym_EventScript_BrawlyRematch @@ -210,7 +210,7 @@ DewfordTown_Gym_EventScript_BrawlyRematch:: @ 81FC89C end DewfordTown_Gym_EventScript_Takao:: @ 81FC8B7 - trainerbattle_single TRAINER_TAKAO, DewfordTown_Gym_Text_TakaoPreBattle, DewfordTown_Gym_Text_TakaoDefeat, DewfordTown_Gym_EventScript_TakaoBrightenRoom + trainerbattle_single TRAINER_TAKAO, DewfordTown_Gym_Text_TakaoIntro, DewfordTown_Gym_Text_TakaoDefeat, DewfordTown_Gym_EventScript_TakaoBrightenRoom msgbox DewfordTown_Gym_Text_TakaoPostBattle, MSGBOX_AUTOCLOSE end @@ -220,7 +220,7 @@ DewfordTown_Gym_EventScript_TakaoBrightenRoom:: @ 81FC8D2 end DewfordTown_Gym_EventScript_Jocelyn:: @ 81FC8D9 - trainerbattle_single TRAINER_JOCELYN, DewfordTown_Gym_Text_JocelynPreBattle, DewfordTown_Gym_Text_JocelynDefeat, DewfordTown_Gym_EventScript_JocelynBrightenRoom + trainerbattle_single TRAINER_JOCELYN, DewfordTown_Gym_Text_JocelynIntro, DewfordTown_Gym_Text_JocelynDefeat, DewfordTown_Gym_EventScript_JocelynBrightenRoom msgbox DewfordTown_Gym_Text_JocelynPostBattle, MSGBOX_AUTOCLOSE end @@ -230,7 +230,7 @@ DewfordTown_Gym_EventScript_JocelynBrightenRoom:: @ 81FC8F4 end DewfordTown_Gym_EventScript_Laura:: @ 81FC8FB - trainerbattle_single TRAINER_LAURA, DewfordTown_Gym_Text_LauraPreBattle, DewfordTown_Gym_Text_LauraDefeat, DewfordTown_Gym_EventScript_LauraBrightenRoom + trainerbattle_single TRAINER_LAURA, DewfordTown_Gym_Text_LauraIntro, DewfordTown_Gym_Text_LauraDefeat, DewfordTown_Gym_EventScript_LauraBrightenRoom msgbox DewfordTown_Gym_Text_LauraPostBattle, MSGBOX_AUTOCLOSE end @@ -240,7 +240,7 @@ DewfordTown_Gym_EventScript_LauraBrightenRoom:: @ 81FC916 end DewfordTown_Gym_EventScript_Brenden:: @ 81FC91D - trainerbattle_single TRAINER_BRENDEN, DewfordTown_Gym_Text_BrendenPreBattle, DewfordTown_Gym_Text_BrendenDefeat, DewfordTown_Gym_EventScript_BrendenBrightenRoom + trainerbattle_single TRAINER_BRENDEN, DewfordTown_Gym_Text_BrendenIntro, DewfordTown_Gym_Text_BrendenDefeat, DewfordTown_Gym_EventScript_BrendenBrightenRoom msgbox DewfordTown_Gym_Text_BrendenPostBattle, MSGBOX_AUTOCLOSE end @@ -250,7 +250,7 @@ DewfordTown_Gym_EventScript_BrendenBrightenRoom:: @ 81FC938 end DewfordTown_Gym_EventScript_Cristian:: @ 81FC93F - trainerbattle_single TRAINER_CRISTIAN, DewfordTown_Gym_Text_CristianPreBattle, DewfordTown_Gym_Text_CristianDefeat, DewfordTown_Gym_EventScript_CristianBrightenRoom + trainerbattle_single TRAINER_CRISTIAN, DewfordTown_Gym_Text_CristianIntro, DewfordTown_Gym_Text_CristianDefeat, DewfordTown_Gym_EventScript_CristianBrightenRoom msgbox DewfordTown_Gym_Text_CristianPostBattle, MSGBOX_AUTOCLOSE end @@ -260,7 +260,7 @@ DewfordTown_Gym_EventScript_CristianBrightenRoom:: @ 81FC95A end DewfordTown_Gym_EventScript_Lilith:: @ 81FC961 - trainerbattle_single TRAINER_LILITH, DewfordTown_Gym_Text_LilithPreBattle, DewfordTown_Gym_Text_LilithDefeat, DewfordTown_Gym_EventScript_LilithBrightenRoom + trainerbattle_single TRAINER_LILITH, DewfordTown_Gym_Text_LilithIntro, DewfordTown_Gym_Text_LilithDefeat, DewfordTown_Gym_EventScript_LilithBrightenRoom msgbox DewfordTown_Gym_Text_LilithPostBattle, MSGBOX_AUTOCLOSE end @@ -324,7 +324,7 @@ DewfordTown_Gym_Text_GymGuidePostVictory: @ 81FCB5C .string "Whoah! It's turned too bright in here!\p" .string "Your future is bright, too!$" -DewfordTown_Gym_Text_TakaoPreBattle: @ 81FCB9F +DewfordTown_Gym_Text_TakaoIntro: @ 81FCB9F .string "Might is right!\n" .string "Come on!$" @@ -335,7 +335,7 @@ DewfordTown_Gym_Text_TakaoPostBattle: @ 81FCBCA .string "Your skill overcame my strength!\n" .string "Your technique is commendable!$" -DewfordTown_Gym_Text_JocelynPreBattle: @ 81FCC0A +DewfordTown_Gym_Text_JocelynIntro: @ 81FCC0A .string "There's no need for BRAWLY to be\n" .string "involved!\p" .string "I'll crush you!$" @@ -351,7 +351,7 @@ DewfordTown_Gym_Text_JocelynPostBattle: @ 81FCC6B .string "No, I'll become the POKéMON LEAGUE\n" .string "CHAMPION!$" -DewfordTown_Gym_Text_LauraPreBattle: @ 81FCD01 +DewfordTown_Gym_Text_LauraIntro: @ 81FCD01 .string "Don't you dare brush me off!\n" .string "It's not my fault if you cry!$" @@ -365,7 +365,7 @@ DewfordTown_Gym_Text_LauraPostBattle: @ 81FCD4F .string "But because it's so dark, I can never\n" .string "see BRAWLY's face…$" -DewfordTown_Gym_Text_LilithPreBattle: @ 81FCDB8 +DewfordTown_Gym_Text_LilithIntro: @ 81FCDB8 .string "Ufufu…\n" .string "Are you stumbling around in the dark?$" @@ -377,7 +377,7 @@ DewfordTown_Gym_Text_LilithPostBattle: @ 81FCE08 .string "You deserve to stay lost and end up\n" .string "back at the entrance again!$" -DewfordTown_Gym_Text_BrendenPreBattle: @ 81FCE48 +DewfordTown_Gym_Text_BrendenIntro: @ 81FCE48 .string "I'll show you the gumption of\n" .string "a sailing man!$" @@ -389,7 +389,7 @@ DewfordTown_Gym_Text_BrendenPostBattle: @ 81FCEAB .string "Oh, aye! You're worthy of seeing\n" .string "our GYM LEADER.$" -DewfordTown_Gym_Text_CristianPreBattle: @ 81FCEDC +DewfordTown_Gym_Text_CristianIntro: @ 81FCEDC .string "If you mean to pass, it has to be\n" .string "through me!$" @@ -401,7 +401,7 @@ DewfordTown_Gym_Text_CristianPostBattle: @ 81FCF26 .string "You win!\n" .string "Go after that BADGE!$" -DewfordTown_Gym_Text_BrawlyPreBattle: @ 81FCF44 +DewfordTown_Gym_Text_BrawlyIntro: @ 81FCF44 .string "I'm BRAWLY!\n" .string "DEWFORD's GYM LEADER!\p" .string "I've been churned in the rough waves\n" diff --git a/data/maps/DewfordTown_Hall/scripts.inc b/data/maps/DewfordTown_Hall/scripts.inc index 6a7051ec9..21000df1f 100644 --- a/data/maps/DewfordTown_Hall/scripts.inc +++ b/data/maps/DewfordTown_Hall/scripts.inc @@ -29,7 +29,7 @@ DewfordTown_Hall_EventScript_Man:: @ 81FD50A lock faceplayer call Common_EventScript_BufferTrendyPhrase - special sub_811EF6C + special BufferDeepLinkPhrase msgbox DewfordTown_Hall_Text_DeepLinkBetweenXAndY, MSGBOX_YESNO compare VAR_RESULT, YES goto_if_eq DewfordTown_Hall_EventScript_ConfirmTrendLink diff --git a/data/maps/EverGrandeCity_ChampionsRoom/scripts.inc b/data/maps/EverGrandeCity_ChampionsRoom/scripts.inc index 0f90ee2ac..4ea20827a 100644 --- a/data/maps/EverGrandeCity_ChampionsRoom/scripts.inc +++ b/data/maps/EverGrandeCity_ChampionsRoom/scripts.inc @@ -39,7 +39,7 @@ EverGrandeCity_ChampionsRoom_Movement_PlayerApproachWallace: @ 8228A42 EverGrandeCity_ChampionsRoom_EventScript_Wallace:: @ 8228A45 playbgm MUS_DAIGO, 0 - msgbox EverGrandeCity_ChampionsRoom_Text_PreBattleSpeech, MSGBOX_DEFAULT + msgbox EverGrandeCity_ChampionsRoom_Text_IntroSpeech, MSGBOX_DEFAULT trainerbattle_no_intro TRAINER_WALLACE, EverGrandeCity_ChampionsRoom_Text_Defeat goto EverGrandeCity_ChampionsRoom_EventScript_Defeated end @@ -225,7 +225,7 @@ EverGrandeCity_ChampionsRoom_Movement_BirchArrives: @ 8228C43 walk_in_place_fastest_left step_end -EverGrandeCity_ChampionsRoom_Text_PreBattleSpeech: @ 8228C4C +EverGrandeCity_ChampionsRoom_Text_IntroSpeech: @ 8228C4C .string "WALLACE: Welcome, {PLAYER}{KUN}.\p" .string "That incident in SOOTOPOLIS CITY…\n" .string "That was superb work, putting an end\l" diff --git a/data/maps/EverGrandeCity_DrakesRoom/scripts.inc b/data/maps/EverGrandeCity_DrakesRoom/scripts.inc index d3b26f6d9..2ae78caad 100644 --- a/data/maps/EverGrandeCity_DrakesRoom/scripts.inc +++ b/data/maps/EverGrandeCity_DrakesRoom/scripts.inc @@ -43,7 +43,7 @@ EverGrandeCity_DrakesRoom_EventScript_Drake:: @ 82286F3 faceplayer goto_if_set FLAG_DEFEATED_ELITE_4_DRAKE, EverGrandeCity_DrakesRoom_EventScript_PostBattleSpeech playbgm MUS_SITENNOU, 0 - msgbox EverGrandeCity_DrakesRoom_Text_PreBattleSpeech, MSGBOX_DEFAULT + msgbox EverGrandeCity_DrakesRoom_Text_IntroSpeech, MSGBOX_DEFAULT trainerbattle_no_intro TRAINER_DRAKE, EverGrandeCity_DrakesRoom_Text_Defeat goto EverGrandeCity_DrakesRoom_EventScript_Defeated end @@ -62,7 +62,7 @@ EverGrandeCity_DrakesRoom_EventScript_Defeated:: @ 8228724 release end -EverGrandeCity_DrakesRoom_Text_PreBattleSpeech: @ 822873E +EverGrandeCity_DrakesRoom_Text_IntroSpeech: @ 822873E .string "I am the last of the POKéMON LEAGUE\n" .string "ELITE FOUR, DRAKE the DRAGON master!\p" .string "In their natural state, POKéMON are\n" diff --git a/data/maps/EverGrandeCity_GlaciasRoom/scripts.inc b/data/maps/EverGrandeCity_GlaciasRoom/scripts.inc index 4ca98e921..6e6254faa 100644 --- a/data/maps/EverGrandeCity_GlaciasRoom/scripts.inc +++ b/data/maps/EverGrandeCity_GlaciasRoom/scripts.inc @@ -42,7 +42,7 @@ EverGrandeCity_GlaciasRoom_EventScript_Glacia:: @ 8228469 faceplayer goto_if_set FLAG_DEFEATED_ELITE_4_GLACIA, EverGrandeCity_GlaciasRoom_EventScript_PostBattleSpeech playbgm MUS_SITENNOU, 0 - msgbox EverGrandeCity_GlaciasRoom_Text_PreBattleSpeech, MSGBOX_DEFAULT + msgbox EverGrandeCity_GlaciasRoom_Text_IntroSpeech, MSGBOX_DEFAULT trainerbattle_no_intro TRAINER_GLACIA, EverGrandeCity_GlaciasRoom_Text_Defeat goto EverGrandeCity_GlaciasRoom_EventScript_Defeated end @@ -59,7 +59,7 @@ EverGrandeCity_GlaciasRoom_EventScript_Defeated:: @ 822849A release end -EverGrandeCity_GlaciasRoom_Text_PreBattleSpeech: @ 82284AC +EverGrandeCity_GlaciasRoom_Text_IntroSpeech: @ 82284AC .string "Welcome, my name is GLACIA\n" .string "of the ELITE FOUR.\p" .string "I've traveled from afar to HOENN\n" diff --git a/data/maps/EverGrandeCity_PhoebesRoom/scripts.inc b/data/maps/EverGrandeCity_PhoebesRoom/scripts.inc index 994900798..891b3c56e 100644 --- a/data/maps/EverGrandeCity_PhoebesRoom/scripts.inc +++ b/data/maps/EverGrandeCity_PhoebesRoom/scripts.inc @@ -42,7 +42,7 @@ EverGrandeCity_PhoebesRoom_EventScript_Phoebe:: @ 82281CB faceplayer goto_if_set FLAG_DEFEATED_ELITE_4_PHOEBE, EverGrandeCity_PhoebesRoom_EventScript_PostBattleSpeech playbgm MUS_SITENNOU, 0 - msgbox EverGrandeCity_PhoebesRoom_Text_PreBattleSpeech, MSGBOX_DEFAULT + msgbox EverGrandeCity_PhoebesRoom_Text_IntroSpeech, MSGBOX_DEFAULT trainerbattle_no_intro TRAINER_PHOEBE, EverGrandeCity_PhoebesRoom_Text_Defeat goto EverGrandeCity_PhoebesRoom_EventScript_Defeated end @@ -59,7 +59,7 @@ EverGrandeCity_PhoebesRoom_EventScript_Defeated:: @ 82281FC release end -EverGrandeCity_PhoebesRoom_Text_PreBattleSpeech: @ 822820E +EverGrandeCity_PhoebesRoom_Text_IntroSpeech: @ 822820E .string "Ahahaha!\p" .string "I'm PHOEBE of the ELITE FOUR.\n" .string "I did my training on MT. PYRE.\p" diff --git a/data/maps/EverGrandeCity_SidneysRoom/scripts.inc b/data/maps/EverGrandeCity_SidneysRoom/scripts.inc index 20a7e0419..9bc975789 100644 --- a/data/maps/EverGrandeCity_SidneysRoom/scripts.inc +++ b/data/maps/EverGrandeCity_SidneysRoom/scripts.inc @@ -48,7 +48,7 @@ EverGrandeCity_SidneysRoom_EventScript_Sidney:: @ 8227F64 faceplayer goto_if_set FLAG_DEFEATED_ELITE_4_SIDNEY, EverGrandeCity_SidneysRoom_EventScript_PostBattleSpeech playbgm MUS_SITENNOU, 0 - msgbox EverGrandeCity_SidneysRoom_Text_PreBattleSpeech, MSGBOX_DEFAULT + msgbox EverGrandeCity_SidneysRoom_Text_IntroSpeech, MSGBOX_DEFAULT trainerbattle_no_intro TRAINER_SIDNEY, EverGrandeCity_SidneysRoom_Text_Defeat goto EverGrandeCity_SidneysRoom_EventScript_Defeated end @@ -65,7 +65,7 @@ EverGrandeCity_SidneysRoom_EventScript_Defeated:: @ 8227F95 release end -EverGrandeCity_SidneysRoom_Text_PreBattleSpeech: @ 8227FA7 +EverGrandeCity_SidneysRoom_Text_IntroSpeech: @ 8227FA7 .string "Welcome, challenger!\n" .string "I'm SIDNEY of the ELITE FOUR.\p" .string "I like that look you're giving me.\n" diff --git a/data/maps/FortreeCity_Gym/scripts.inc b/data/maps/FortreeCity_Gym/scripts.inc index f69ec8204..88fbe8b92 100644 --- a/data/maps/FortreeCity_Gym/scripts.inc +++ b/data/maps/FortreeCity_Gym/scripts.inc @@ -16,7 +16,7 @@ FortreeCity_Gym_EventScript_InitRotatingGates:: @ 82165C4 end FortreeCity_Gym_EventScript_Winona:: @ 82165C8 - trainerbattle_single TRAINER_WINONA_1, FortreeCity_Gym_Text_WinonaPreBattle, FortreeCity_Gym_Text_WinonaDefeat, FortreeCity_Gym_EventScript_WinonaDefeated, NO_MUSIC + trainerbattle_single TRAINER_WINONA_1, FortreeCity_Gym_Text_WinonaIntro, FortreeCity_Gym_Text_WinonaDefeat, FortreeCity_Gym_EventScript_WinonaDefeated, NO_MUSIC specialvar VAR_RESULT, ShouldTryRematchBattle compare VAR_RESULT, TRUE goto_if_eq FortreeCity_Gym_EventScript_WinonaRematch @@ -71,32 +71,32 @@ FortreeCity_Gym_EventScript_WinonaRematch:: @ 821668D end FortreeCity_Gym_EventScript_Jared:: @ 82166A8 - trainerbattle_single TRAINER_JARED, FortreeCity_Gym_Text_JaredPreBattle, FortreeCity_Gym_Text_JaredDefeat + trainerbattle_single TRAINER_JARED, FortreeCity_Gym_Text_JaredIntro, FortreeCity_Gym_Text_JaredDefeat msgbox FortreeCity_Gym_Text_JaredPostBattle, MSGBOX_AUTOCLOSE end FortreeCity_Gym_EventScript_Edwardo:: @ 82166BF - trainerbattle_single TRAINER_EDWARDO, FortreeCity_Gym_Text_EdwardoPreBattle, FortreeCity_Gym_Text_EdwardoDefeat + trainerbattle_single TRAINER_EDWARDO, FortreeCity_Gym_Text_EdwardoIntro, FortreeCity_Gym_Text_EdwardoDefeat msgbox FortreeCity_Gym_Text_EdwardoPostBattle, MSGBOX_AUTOCLOSE end FortreeCity_Gym_EventScript_Flint:: @ 82166D6 - trainerbattle_single TRAINER_FLINT, FortreeCity_Gym_Text_FlintPreBattle, FortreeCity_Gym_Text_FlintDefeat + trainerbattle_single TRAINER_FLINT, FortreeCity_Gym_Text_FlintIntro, FortreeCity_Gym_Text_FlintDefeat msgbox FortreeCity_Gym_Text_FlintPostBattle, MSGBOX_AUTOCLOSE end FortreeCity_Gym_EventScript_Ashley:: @ 82166ED - trainerbattle_single TRAINER_ASHLEY, FortreeCity_Gym_Text_AshleyPreBattle, FortreeCity_Gym_Text_AshleyDefeat + trainerbattle_single TRAINER_ASHLEY, FortreeCity_Gym_Text_AshleyIntro, FortreeCity_Gym_Text_AshleyDefeat msgbox FortreeCity_Gym_Text_AshleyPostBattle, MSGBOX_AUTOCLOSE end FortreeCity_Gym_EventScript_Humberto:: @ 8216704 - trainerbattle_single TRAINER_HUMBERTO, FortreeCity_Gym_Text_HumbertoPreBattle, FortreeCity_Gym_Text_HumbertoDefeat + trainerbattle_single TRAINER_HUMBERTO, FortreeCity_Gym_Text_HumbertoIntro, FortreeCity_Gym_Text_HumbertoDefeat msgbox FortreeCity_Gym_Text_HumbertoPostBattle, MSGBOX_AUTOCLOSE end FortreeCity_Gym_EventScript_Darius:: @ 821671B - trainerbattle_single TRAINER_DARIUS, FortreeCity_Gym_Text_DariusPreBattle, FortreeCity_Gym_Text_DariusDefeat + trainerbattle_single TRAINER_DARIUS, FortreeCity_Gym_Text_DariusIntro, FortreeCity_Gym_Text_DariusDefeat msgbox FortreeCity_Gym_Text_DariusPostBattle, MSGBOX_AUTOCLOSE end @@ -150,7 +150,7 @@ FortreeCity_Gym_Text_GymGuidePostVictory: @ 821687D .string "You did it!\n" .string "You've achieved liftoff!$" -FortreeCity_Gym_Text_JaredPreBattle: @ 82168A2 +FortreeCity_Gym_Text_JaredIntro: @ 82168A2 .string "Behold the elegant battle style of\n" .string "BIRD POKéMON!$" @@ -164,7 +164,7 @@ FortreeCity_Gym_Text_JaredPostBattle: @ 82168E7 .string "Do you have the smarts to get to\n" .string "our LEADER?$" -FortreeCity_Gym_Text_EdwardoPreBattle: @ 821695A +FortreeCity_Gym_Text_EdwardoIntro: @ 821695A .string "The lovers of BIRD POKéMON aspire\n" .string "to join this GYM.\p" .string "As a member of the FORTREE GYM,\n" @@ -180,7 +180,7 @@ FortreeCity_Gym_Text_EdwardoPostBattle: @ 82169F1 .string "I'm going to keep training and make\n" .string "myself even stronger.$" -FortreeCity_Gym_Text_FlintPreBattle: @ 8216A66 +FortreeCity_Gym_Text_FlintIntro: @ 8216A66 .string "There's no need for WINONA, our GYM\n" .string "LEADER, to deal with you!\p" .string "I'm plenty good enough for you!$" @@ -194,7 +194,7 @@ FortreeCity_Gym_Text_FlintPostBattle: @ 8216AD7 .string "She's the ultimate LEADER!\p" .string "Blush…$" -FortreeCity_Gym_Text_AshleyPreBattle: @ 8216B1A +FortreeCity_Gym_Text_AshleyIntro: @ 8216B1A .string "WINONA taught me personally!\n" .string "You can't beat me easily!$" @@ -205,7 +205,7 @@ FortreeCity_Gym_Text_AshleyPostBattle: @ 8216B5F .string "Thanks to WINONA, the people of\n" .string "FORTREE can live without fear.$" -FortreeCity_Gym_Text_HumbertoPreBattle: @ 8216B9E +FortreeCity_Gym_Text_HumbertoIntro: @ 8216B9E .string "When WINONA takes to battle, her face\n" .string "shines with beautiful determination…\p" .string "I'm not letting you witness that\n" @@ -220,7 +220,7 @@ FortreeCity_Gym_Text_HumbertoPostBattle: @ 8216C32 .string "Don't get distracted staring at WINONA\l" .string "or you'll go crashing down in a heap!$" -FortreeCity_Gym_Text_DariusPreBattle: @ 8216C96 +FortreeCity_Gym_Text_DariusIntro: @ 8216C96 .string "You'd better know that there are all\n" .string "sorts of FLYING-type POKéMON.\p" .string "You do know that, right?$" @@ -233,7 +233,7 @@ FortreeCity_Gym_Text_DariusPostBattle: @ 8216D0F .string "But you'd better watch it! Our LEADER\l" .string "WINONA's POKéMON are all business.$" -FortreeCity_Gym_Text_WinonaPreBattle: @ 8216D75 +FortreeCity_Gym_Text_WinonaIntro: @ 8216D75 .string "I am WINONA. I am the LEADER of\n" .string "the FORTREE POKéMON GYM.\p" .string "I have become one with BIRD POKéMON\n" diff --git a/data/maps/LavaridgeTown_Gym_1F/scripts.inc b/data/maps/LavaridgeTown_Gym_1F/scripts.inc index b94970e62..539917a90 100644 --- a/data/maps/LavaridgeTown_Gym_1F/scripts.inc +++ b/data/maps/LavaridgeTown_Gym_1F/scripts.inc @@ -52,7 +52,7 @@ LavaridgeTown_Gym_1F_EventScript_EndCheckHideTrainers:: @ 81FE78B return LavaridgeTown_Gym_1F_EventScript_Flannery:: @ 81FE78C - trainerbattle_single TRAINER_FLANNERY_1, LavaridgeTown_Gym_1F_Text_FlanneryPreBattle, LavaridgeTown_Gym_1F_Text_FlanneryDefeat, LavaridgeTown_Gym_1F_EventScript_FlanneryDefeated, NO_MUSIC + trainerbattle_single TRAINER_FLANNERY_1, LavaridgeTown_Gym_1F_Text_FlanneryIntro, LavaridgeTown_Gym_1F_Text_FlanneryDefeat, LavaridgeTown_Gym_1F_EventScript_FlanneryDefeated, NO_MUSIC specialvar VAR_RESULT, ShouldTryRematchBattle compare VAR_RESULT, 1 goto_if_eq LavaridgeTown_Gym_1F_EventScript_FlanneryRematch @@ -111,7 +111,7 @@ LavaridgeTown_Gym_1F_EventScript_FlanneryRematch:: @ 81FE864 end LavaridgeTown_Gym_1F_EventScript_Cole:: @ 81FE87F - trainerbattle TRAINER_BATTLE_CONTINUE_SCRIPT, TRAINER_COLE, 2, LavaridgeTown_Gym_1F_Text_ColePreBattle, LavaridgeTown_Gym_1F_Text_ColeDefeat, LavaridgeTown_Gym_EventScript_CheckTrainerScript + trainerbattle TRAINER_BATTLE_CONTINUE_SCRIPT, TRAINER_COLE, 2, LavaridgeTown_Gym_1F_Text_ColeIntro, LavaridgeTown_Gym_1F_Text_ColeDefeat, LavaridgeTown_Gym_EventScript_CheckTrainerScript msgbox LavaridgeTown_Gym_1F_Text_ColePostBattle MSGBOX_AUTOCLOSE end @@ -124,37 +124,37 @@ LavaridgeTown_Gym_EventScript_CheckTrainerScript:: @ 81FE89A end LavaridgeTown_Gym_1F_EventScript_Axle:: @ 81FE8AF - trainerbattle TRAINER_BATTLE_CONTINUE_SCRIPT, TRAINER_AXLE, 4, LavaridgeTown_Gym_1F_Text_AxlePreBattle, LavaridgeTown_Gym_1F_Text_AxleDefeat, LavaridgeTown_Gym_EventScript_CheckTrainerScript + trainerbattle TRAINER_BATTLE_CONTINUE_SCRIPT, TRAINER_AXLE, 4, LavaridgeTown_Gym_1F_Text_AxleIntro, LavaridgeTown_Gym_1F_Text_AxleDefeat, LavaridgeTown_Gym_EventScript_CheckTrainerScript msgbox LavaridgeTown_Gym_1F_Text_AxlePostBattle, MSGBOX_AUTOCLOSE end LavaridgeTown_Gym_B1F_EventScript_Keegan:: @ 81FE8CA - trainerbattle TRAINER_BATTLE_CONTINUE_SCRIPT, TRAINER_KEEGAN, 2, LavaridgeTown_Gym_B1F_Text_KeeganPreBattle, LavaridgeTown_Gym_B1F_Text_KeeganDefeat, LavaridgeTown_Gym_EventScript_CheckTrainerScript + trainerbattle TRAINER_BATTLE_CONTINUE_SCRIPT, TRAINER_KEEGAN, 2, LavaridgeTown_Gym_B1F_Text_KeeganIntro, LavaridgeTown_Gym_B1F_Text_KeeganDefeat, LavaridgeTown_Gym_EventScript_CheckTrainerScript msgbox LavaridgeTown_Gym_B1F_Text_KeeganPostBattle, MSGBOX_AUTOCLOSE end LavaridgeTown_Gym_1F_EventScript_Danielle:: @ 81FE8E5 - trainerbattle TRAINER_BATTLE_CONTINUE_SCRIPT, TRAINER_DANIELLE, 5, LavaridgeTown_Gym_1F_Text_DaniellePreBattle, LavaridgeTown_Gym_1F_Text_DanielleDefeat, LavaridgeTown_Gym_EventScript_CheckTrainerScript + trainerbattle TRAINER_BATTLE_CONTINUE_SCRIPT, TRAINER_DANIELLE, 5, LavaridgeTown_Gym_1F_Text_DanielleIntro, LavaridgeTown_Gym_1F_Text_DanielleDefeat, LavaridgeTown_Gym_EventScript_CheckTrainerScript msgbox LavaridgeTown_Gym_1F_Text_DaniellePostBattle, MSGBOX_AUTOCLOSE end LavaridgeTown_Gym_1F_EventScript_Gerald:: @ 81FE900 - trainerbattle TRAINER_BATTLE_CONTINUE_SCRIPT, TRAINER_GERALD, 3, LavaridgeTown_Gym_1F_Text_GeraldPreBattle, LavaridgeTown_Gym_1F_Text_GeraldDefeat, LavaridgeTown_Gym_EventScript_CheckTrainerScript + trainerbattle TRAINER_BATTLE_CONTINUE_SCRIPT, TRAINER_GERALD, 3, LavaridgeTown_Gym_1F_Text_GeraldIntro, LavaridgeTown_Gym_1F_Text_GeraldDefeat, LavaridgeTown_Gym_EventScript_CheckTrainerScript msgbox LavaridgeTown_Gym_1F_Text_GeraldPostBattle, MSGBOX_AUTOCLOSE end LavaridgeTown_Gym_B1F_EventScript_Jace:: @ 81FE91B - trainerbattle TRAINER_BATTLE_CONTINUE_SCRIPT, TRAINER_JACE, 1, LavaridgeTown_Gym_B1F_Text_JacePreBattle, LavaridgeTown_Gym_B1F_Text_JaceDefeat, LavaridgeTown_Gym_EventScript_CheckTrainerScript + trainerbattle TRAINER_BATTLE_CONTINUE_SCRIPT, TRAINER_JACE, 1, LavaridgeTown_Gym_B1F_Text_JaceIntro, LavaridgeTown_Gym_B1F_Text_JaceDefeat, LavaridgeTown_Gym_EventScript_CheckTrainerScript msgbox LavaridgeTown_Gym_B1F_Text_JacePostBattle, MSGBOX_AUTOCLOSE end LavaridgeTown_Gym_B1F_EventScript_Jeff:: @ 81FE936 - trainerbattle TRAINER_BATTLE_CONTINUE_SCRIPT, TRAINER_JEFF, 3, LavaridgeTown_Gym_B1F_Text_JeffPreBattle, LavaridgeTown_Gym_B1F_Text_JeffDefeat, LavaridgeTown_Gym_EventScript_CheckTrainerScript + trainerbattle TRAINER_BATTLE_CONTINUE_SCRIPT, TRAINER_JEFF, 3, LavaridgeTown_Gym_B1F_Text_JeffIntro, LavaridgeTown_Gym_B1F_Text_JeffDefeat, LavaridgeTown_Gym_EventScript_CheckTrainerScript msgbox LavaridgeTown_Gym_B1F_Text_JeffPostBattle, MSGBOX_AUTOCLOSE end LavaridgeTown_Gym_B1F_EventScript_Eli:: @ 81FE951 - trainerbattle TRAINER_BATTLE_CONTINUE_SCRIPT, TRAINER_ELI, 4, LavaridgeTown_Gym_B1F_Text_EliPreBattle, LavaridgeTown_Gym_B1F_Text_EliDefeat, LavaridgeTown_Gym_EventScript_CheckTrainerScript + trainerbattle TRAINER_BATTLE_CONTINUE_SCRIPT, TRAINER_ELI, 4, LavaridgeTown_Gym_B1F_Text_EliIntro, LavaridgeTown_Gym_B1F_Text_EliDefeat, LavaridgeTown_Gym_EventScript_CheckTrainerScript msgbox LavaridgeTown_Gym_B1F_Text_EliPostBattle, MSGBOX_AUTOCLOSE end @@ -207,7 +207,7 @@ LavaridgeTown_Gym_1F_Text_GymGuideAdvice: @ 81FE9BF LavaridgeTown_Gym_1F_Text_GymGuidePostVictory: @ 81FEAB8 .string "Yow! That was a scorching-hot battle!$" -LavaridgeTown_Gym_1F_Text_ColePreBattle: @ 81FEADE +LavaridgeTown_Gym_1F_Text_ColeIntro: @ 81FEADE .string "Owowowowow!\n" .string "Yikes, it's hot!$" @@ -220,7 +220,7 @@ LavaridgeTown_Gym_1F_Text_ColePostBattle: @ 81FEB1C .string "It's effective for healing pain in\n" .string "your joints.$" -LavaridgeTown_Gym_1F_Text_AxlePreBattle: @ 81FEB7B +LavaridgeTown_Gym_1F_Text_AxleIntro: @ 81FEB7B .string "I'm trying to relieve my stress.\n" .string "Don't come along and stress me out!$" @@ -232,7 +232,7 @@ LavaridgeTown_Gym_1F_Text_AxlePostBattle: @ 81FEBE1 .string "If you spend too much time buried in\n" .string "hot sand, it tuckers you out…$" -LavaridgeTown_Gym_B1F_Text_KeeganPreBattle: @ 81FEC31 +LavaridgeTown_Gym_B1F_Text_KeeganIntro: @ 81FEC31 .string "You must be getting tired by now.\n" .string "You'd like to rest in the hot sand,\l" .string "wouldn't you?\p" @@ -249,7 +249,7 @@ LavaridgeTown_Gym_B1F_Text_KeeganPostBattle: @ 81FED02 .string "If you don't watch yourself, you'll be\n" .string "burned seriously.$" -LavaridgeTown_Gym_1F_Text_GeraldPreBattle: @ 81FED72 +LavaridgeTown_Gym_1F_Text_GeraldIntro: @ 81FED72 .string "Can your POKéMON withstand\n" .string "392-degree heat?$" @@ -262,7 +262,7 @@ LavaridgeTown_Gym_1F_Text_GeraldPostBattle: @ 81FEDBB .string "Your POKéMON beat me, so they should\n" .string "easily survive in magma.$" -LavaridgeTown_Gym_1F_Text_DaniellePreBattle: @ 81FEE22 +LavaridgeTown_Gym_1F_Text_DanielleIntro: @ 81FEE22 .string "Um…\n" .string "Okay, I'll battle with you.$" @@ -273,7 +273,7 @@ LavaridgeTown_Gym_1F_Text_DaniellePostBattle: @ 81FEE5D .string "I'm going to be a pretty and strong\n" .string "TRAINER just like FLANNERY.$" -LavaridgeTown_Gym_B1F_Text_JacePreBattle: @ 81FEE9D +LavaridgeTown_Gym_B1F_Text_JaceIntro: @ 81FEE9D .string "Come on, get with it!\n" .string "Let's go before my feelings cool!$" @@ -286,7 +286,7 @@ LavaridgeTown_Gym_B1F_Text_JacePostBattle: @ 81FEF07 .string "within you, you may stand a chance\l" .string "against our LEADER.$" -LavaridgeTown_Gym_B1F_Text_JeffPreBattle: @ 81FEF60 +LavaridgeTown_Gym_B1F_Text_JeffIntro: @ 81FEF60 .string "See how the flames blaze wildly?\n" .string "They flare in anticipation of my win!$" @@ -298,7 +298,7 @@ LavaridgeTown_Gym_B1F_Text_JeffPostBattle: @ 81FEFC2 .string "I can walk on hot coals barefoot!\p" .string "…Don't even think about trying it!$" -LavaridgeTown_Gym_B1F_Text_EliPreBattle: @ 81FF025 +LavaridgeTown_Gym_B1F_Text_EliIntro: @ 81FF025 .string "As much as I love mountains,\n" .string "I especially love volcanoes.$" @@ -311,7 +311,7 @@ LavaridgeTown_Gym_B1F_Text_EliPostBattle: @ 81FF09A .string "of FLANNERY's power.\p" .string "Hehehehe.$" -LavaridgeTown_Gym_1F_Text_FlanneryPreBattle: @ 81FF0DC +LavaridgeTown_Gym_1F_Text_FlanneryIntro: @ 81FF0DC .string "Welcome… No, wait.\p" .string "Puny TRAINER, how good to see you've\n" .string "made it here!\p" diff --git a/data/maps/LilycoveCity_Harbor/scripts.inc b/data/maps/LilycoveCity_Harbor/scripts.inc index 31b33761e..3bb6ed5eb 100644 --- a/data/maps/LilycoveCity_Harbor/scripts.inc +++ b/data/maps/LilycoveCity_Harbor/scripts.inc @@ -457,8 +457,7 @@ LilycoveCity_Harbor_Movement_PlayerBoardFerryNorth: @ 821E633 walk_up step_end -@ Unused -LilycoveCity_Harbor_Movement_21E635: @ 821E635 +LilycoveCity_Harbor_Movement_UnusedBoardFerry: @ 821E635 walk_up step_end diff --git a/data/maps/MauvilleCity_Gym/scripts.inc b/data/maps/MauvilleCity_Gym/scripts.inc index 450f41220..efc946fdc 100644 --- a/data/maps/MauvilleCity_Gym/scripts.inc +++ b/data/maps/MauvilleCity_Gym/scripts.inc @@ -74,7 +74,7 @@ MauvilleCity_Gym_EventScript_DeactivatePuzzle:: @ 820DEE7 end MauvilleCity_Gym_EventScript_Wattson:: @ 820DEEB - trainerbattle_single TRAINER_WATTSON_1, MauvilleCity_Gym_Text_WattsonPreBattle, MauvilleCity_Gym_Text_WattsonDefeat, MauvilleCity_Gym_EventScript_WattsonDefeated, NO_MUSIC + trainerbattle_single TRAINER_WATTSON_1, MauvilleCity_Gym_Text_WattsonIntro, MauvilleCity_Gym_Text_WattsonDefeat, MauvilleCity_Gym_EventScript_WattsonDefeated, NO_MUSIC specialvar VAR_RESULT, ShouldTryRematchBattle compare VAR_RESULT, TRUE goto_if_eq MauvilleCity_Gym_EventScript_WattsonRematch @@ -206,27 +206,27 @@ MauvilleCity_Gym_EventScript_ClearBarriersAltState:: @ 820E0B4 end MauvilleCity_Gym_EventScript_Kirk:: @ 820E0B9 - trainerbattle_single TRAINER_KIRK, MauvilleCity_Gym_Text_KirkPreBattle, MauvilleCity_Gym_Text_KirkDefeat + trainerbattle_single TRAINER_KIRK, MauvilleCity_Gym_Text_KirkIntro, MauvilleCity_Gym_Text_KirkDefeat msgbox MauvilleCity_Gym_Text_KirkPostBattle, MSGBOX_AUTOCLOSE end MauvilleCity_Gym_EventScript_Shawn:: @ 820E0D0 - trainerbattle_single TRAINER_SHAWN, MauvilleCity_Gym_Text_ShawnPreBattle, MauvilleCity_Gym_Text_ShawnDefeat + trainerbattle_single TRAINER_SHAWN, MauvilleCity_Gym_Text_ShawnIntro, MauvilleCity_Gym_Text_ShawnDefeat msgbox MauvilleCity_Gym_Text_ShawnPostBattle, MSGBOX_AUTOCLOSE end MauvilleCity_Gym_EventScript_Ben:: @ 820E0E7 - trainerbattle_single TRAINER_BEN, MauvilleCity_Gym_Text_BenPreBattle, MauvilleCity_Gym_Text_BenDefeat + trainerbattle_single TRAINER_BEN, MauvilleCity_Gym_Text_BenIntro, MauvilleCity_Gym_Text_BenDefeat msgbox MauvilleCity_Gym_Text_BenPostBattle, MSGBOX_AUTOCLOSE end MauvilleCity_Gym_EventScript_Vivian:: @ 820E0FE - trainerbattle_single TRAINER_VIVIAN, MauvilleCity_Gym_Text_VivianPreBattle, MauvilleCity_Gym_Text_VivianDefeat + trainerbattle_single TRAINER_VIVIAN, MauvilleCity_Gym_Text_VivianIntro, MauvilleCity_Gym_Text_VivianDefeat msgbox MauvilleCity_Gym_Text_VivianPostBattle, MSGBOX_AUTOCLOSE end MauvilleCity_Gym_EventScript_Angelo:: @ 820E115 - trainerbattle_single TRAINER_ANGELO, MauvilleCity_Gym_Text_AngeloPreBattle, MauvilleCity_Gym_Text_AngeloDefeat + trainerbattle_single TRAINER_ANGELO, MauvilleCity_Gym_Text_AngeloIntro, MauvilleCity_Gym_Text_AngeloDefeat msgbox MauvilleCity_Gym_Text_AngeloPostBattle, MSGBOX_AUTOCLOSE end @@ -280,7 +280,7 @@ MauvilleCity_Gym_Text_GymGuidePostVictory: @ 820E283 .string "Whoa, you're electrifying!\n" .string "You've powered the door open!$" -MauvilleCity_Gym_Text_KirkPreBattle: @ 820E2BC +MauvilleCity_Gym_Text_KirkIntro: @ 820E2BC .string "My electric soul, it'll shatter your\n" .string "dreams whole, whoa-yeahah!$" @@ -292,7 +292,7 @@ MauvilleCity_Gym_Text_KirkPostBattle: @ 820E336 .string "POKéMON and rock, it's all about heart,\n" .string "whoa-yeah!$" -MauvilleCity_Gym_Text_ShawnPreBattle: @ 820E369 +MauvilleCity_Gym_Text_ShawnIntro: @ 820E369 .string "I trained under WATTSON!\n" .string "There ain't no way I'll lose easily!$" @@ -305,7 +305,7 @@ MauvilleCity_Gym_Text_ShawnPostBattle: @ 820E3C1 .string "He was battling even before your\n" .string "daddy was born, that tough coot.$" -MauvilleCity_Gym_Text_BenPreBattle: @ 820E443 +MauvilleCity_Gym_Text_BenIntro: @ 820E443 .string "This GYM's got puzzles!\n" .string "Isn't it fun?$" @@ -316,7 +316,7 @@ MauvilleCity_Gym_Text_BenPostBattle: @ 820E47E .string "WATTSON says he likes setting up\n" .string "little traps with switches.$" -MauvilleCity_Gym_Text_VivianPreBattle: @ 820E4BB +MauvilleCity_Gym_Text_VivianIntro: @ 820E4BB .string "With my charm and my POKéMON's moves,\n" .string "you'll be shocked!$" @@ -330,7 +330,7 @@ MauvilleCity_Gym_Text_VivianPostBattle: @ 820E50F .string "became TRAINERS.\l" .string "He must know all sorts of things!$" -MauvilleCity_Gym_Text_AngeloPreBattle: @ 820E593 +MauvilleCity_Gym_Text_AngeloIntro: @ 820E593 .string "I love shiny things!$" MauvilleCity_Gym_Text_AngeloDefeat: @ 820E5A8 @@ -341,7 +341,7 @@ MauvilleCity_Gym_Text_AngeloPostBattle: @ 820E5C2 .string "MAUVILLE GYM's WATTSON has a shiny\n" .string "forehead. It makes me happy!$" -MauvilleCity_Gym_Text_WattsonPreBattle: @ 820E602 +MauvilleCity_Gym_Text_WattsonIntro: @ 820E602 .string "I've given up on my plans to convert\n" .string "the city, I have.\p" .string "And so, I put my time into making\n" diff --git a/data/maps/MossdeepCity_Gym/scripts.inc b/data/maps/MossdeepCity_Gym/scripts.inc index 1e2bdee3a..2ac8ee7f2 100644 --- a/data/maps/MossdeepCity_Gym/scripts.inc +++ b/data/maps/MossdeepCity_Gym/scripts.inc @@ -49,7 +49,7 @@ MossdeepCity_Gym_EventScript_SetSwitch4Metatiles:: @ 8220885 end MossdeepCity_Gym_EventScript_TateAndLiza:: @ 8220898 - trainerbattle_double TRAINER_TATE_AND_LIZA_1, MossdeepCity_Gym_Text_TateAndLizaPreBattle, MossdeepCity_Gym_Text_TateAndLizaDefeat, MossdeepCity_Gym_Text_TateAndLizaNeedTwoMons, MossdeepCity_Gym_EventScript_TateAndLizaDefeated, NO_MUSIC + trainerbattle_double TRAINER_TATE_AND_LIZA_1, MossdeepCity_Gym_Text_TateAndLizaIntro, MossdeepCity_Gym_Text_TateAndLizaDefeat, MossdeepCity_Gym_Text_TateAndLizaNeedTwoMons, MossdeepCity_Gym_EventScript_TateAndLizaDefeated, NO_MUSIC specialvar VAR_RESULT, ShouldTryRematchBattle compare VAR_RESULT, TRUE goto_if_eq MossdeepCity_Gym_EventScript_TateAndLizaRematch @@ -207,62 +207,62 @@ MossdeepCity_Gym_EventScript_WarpToEntrance:: @ 8220AF1 end MossdeepCity_Gym_EventScript_Preston:: @ 8220AFD - trainerbattle_single TRAINER_PRESTON, MossdeepCity_Gym_Text_PrestonPreBattle, MossdeepCity_Gym_Text_PrestonDefeat + trainerbattle_single TRAINER_PRESTON, MossdeepCity_Gym_Text_PrestonIntro, MossdeepCity_Gym_Text_PrestonDefeat msgbox MossdeepCity_Gym_Text_PrestonPostBattle, MSGBOX_AUTOCLOSE end MossdeepCity_Gym_EventScript_Virgil:: @ 8220B14 - trainerbattle_single TRAINER_VIRGIL, MossdeepCity_Gym_Text_VirgilPreBattle, MossdeepCity_Gym_Text_VirgilDefeat + trainerbattle_single TRAINER_VIRGIL, MossdeepCity_Gym_Text_VirgilIntro, MossdeepCity_Gym_Text_VirgilDefeat msgbox MossdeepCity_Gym_Text_VirgilPostBattle, MSGBOX_AUTOCLOSE end MossdeepCity_Gym_EventScript_Blake:: @ 8220B2B - trainerbattle_single TRAINER_BLAKE, MossdeepCity_Gym_Text_BlakePreBattle, MossdeepCity_Gym_Text_BlakeDefeat + trainerbattle_single TRAINER_BLAKE, MossdeepCity_Gym_Text_BlakeIntro, MossdeepCity_Gym_Text_BlakeDefeat msgbox MossdeepCity_Gym_Text_BlakePostBattle, MSGBOX_AUTOCLOSE end MossdeepCity_Gym_EventScript_Hannah:: @ 8220B42 - trainerbattle_single TRAINER_HANNAH, MossdeepCity_Gym_Text_HannahPreBattle, MossdeepCity_Gym_Text_HannahDefeat + trainerbattle_single TRAINER_HANNAH, MossdeepCity_Gym_Text_HannahIntro, MossdeepCity_Gym_Text_HannahDefeat msgbox MossdeepCity_Gym_Text_HannahPostBattle, MSGBOX_AUTOCLOSE end MossdeepCity_Gym_EventScript_Samantha:: @ 8220B59 - trainerbattle_single TRAINER_SAMANTHA, MossdeepCity_Gym_Text_SamanthaPreBattle, MossdeepCity_Gym_Text_SamanthaDefeat + trainerbattle_single TRAINER_SAMANTHA, MossdeepCity_Gym_Text_SamanthaIntro, MossdeepCity_Gym_Text_SamanthaDefeat msgbox MossdeepCity_Gym_Text_SamanthaPostBattle, MSGBOX_AUTOCLOSE end MossdeepCity_Gym_EventScript_Maura:: @ 8220B70 - trainerbattle_single TRAINER_MAURA, MossdeepCity_Gym_Text_MauraPreBattle, MossdeepCity_Gym_Text_MauraDefeat + trainerbattle_single TRAINER_MAURA, MossdeepCity_Gym_Text_MauraIntro, MossdeepCity_Gym_Text_MauraDefeat msgbox MossdeepCity_Gym_Text_MauraPostBattle, MSGBOX_AUTOCLOSE end MossdeepCity_Gym_EventScript_Sylvia:: @ 8220B87 - trainerbattle_single TRAINER_SYLVIA, MossdeepCity_Gym_Text_SylviaPreBattle, MossdeepCity_Gym_Text_SylviaDefeat + trainerbattle_single TRAINER_SYLVIA, MossdeepCity_Gym_Text_SylviaIntro, MossdeepCity_Gym_Text_SylviaDefeat msgbox MossdeepCity_Gym_Text_SylviaPostBattle, MSGBOX_AUTOCLOSE end MossdeepCity_Gym_EventScript_Nate:: @ 8220B9E - trainerbattle_single TRAINER_NATE, MossdeepCity_Gym_Text_NatePreBattle, MossdeepCity_Gym_Text_NateDefeat + trainerbattle_single TRAINER_NATE, MossdeepCity_Gym_Text_NateIntro, MossdeepCity_Gym_Text_NateDefeat msgbox MossdeepCity_Gym_Text_NatePostBattle, MSGBOX_AUTOCLOSE end MossdeepCity_Gym_EventScript_Macey:: @ 8220BB5 - trainerbattle_single TRAINER_MACEY, MossdeepCity_Gym_Text_MaceyPreBattle, MossdeepCity_Gym_Text_MaceyDefeat + trainerbattle_single TRAINER_MACEY, MossdeepCity_Gym_Text_MaceyIntro, MossdeepCity_Gym_Text_MaceyDefeat msgbox MossdeepCity_Gym_Text_MaceyPostBattle, MSGBOX_AUTOCLOSE end MossdeepCity_Gym_EventScript_Clifford:: @ 8220BCC - trainerbattle_single TRAINER_CLIFFORD, MossdeepCity_Gym_Text_CliffordPreBattle, MossdeepCity_Gym_Text_CliffordDefeat + trainerbattle_single TRAINER_CLIFFORD, MossdeepCity_Gym_Text_CliffordIntro, MossdeepCity_Gym_Text_CliffordDefeat msgbox MossdeepCity_Gym_Text_CliffordPostBattle, MSGBOX_AUTOCLOSE end MossdeepCity_Gym_EventScript_Nicholas:: @ 8220BE3 - trainerbattle_single TRAINER_NICHOLAS, MossdeepCity_Gym_Text_NicholasPreBattle, MossdeepCity_Gym_Text_NicholasDefeat + trainerbattle_single TRAINER_NICHOLAS, MossdeepCity_Gym_Text_NicholasIntro, MossdeepCity_Gym_Text_NicholasDefeat msgbox MossdeepCity_Gym_Text_NicholasPostBattle, MSGBOX_AUTOCLOSE end MossdeepCity_Gym_EventScript_Kathleen:: @ 8220BFA - trainerbattle_single TRAINER_KATHLEEN, MossdeepCity_Gym_Text_KathleenPreBattle, MossdeepCity_Gym_Text_KathleenDefeat + trainerbattle_single TRAINER_KATHLEEN, MossdeepCity_Gym_Text_KathleenIntro, MossdeepCity_Gym_Text_KathleenDefeat msgbox MossdeepCity_Gym_Text_KathleenPostBattle, MSGBOX_AUTOCLOSE end @@ -385,7 +385,7 @@ MossdeepCity_Gym_Text_GymGuidePostVictory: @ 8220E2A .string "Wow, you're astounding!\n" .string "You're one great TRAINER!$" -MossdeepCity_Gym_Text_PrestonPreBattle: @ 8220E5C +MossdeepCity_Gym_Text_PrestonIntro: @ 8220E5C .string "Battles hinge on the strength of your\n" .string "spirit! The weak-spirited will never win!$" @@ -397,7 +397,7 @@ MossdeepCity_Gym_Text_PrestonPostBattle: @ 8220ED3 .string "The indecisive lose.\n" .string "That's my warning to you.$" -MossdeepCity_Gym_Text_VirgilPreBattle: @ 8220F02 +MossdeepCity_Gym_Text_VirgilIntro: @ 8220F02 .string "Let me see your talent!$" MossdeepCity_Gym_Text_VirgilDefeat: @ 8220F1A @@ -409,7 +409,7 @@ MossdeepCity_Gym_Text_VirgilPostBattle: @ 8220F3A .string "However, you may be even more talented\n" .string "than them…$" -MossdeepCity_Gym_Text_BlakePreBattle: @ 8220FB0 +MossdeepCity_Gym_Text_BlakeIntro: @ 8220FB0 .string "Fufufufu… Watch me levitate a POKé\n" .string "BALL telekinetically!\p" .string "Wrooooooooaaaar!\n" @@ -428,7 +428,7 @@ MossdeepCity_Gym_Text_BlakePostBattle: @ 8221055 .string "No, I'm not cheating!\n" .string "I didn't blow on it! Honestly!$" -MossdeepCity_Gym_Text_HannahPreBattle: @ 82210EE +MossdeepCity_Gym_Text_HannahIntro: @ 82210EE .string "When you lose to me, don't be too hard\n" .string "on yourself.\p" .string "It's not that you're weak--I'm just\n" @@ -443,7 +443,7 @@ MossdeepCity_Gym_Text_HannahPostBattle: @ 822116A .string "Positive thinking--that's my strong\n" .string "point!$" -MossdeepCity_Gym_Text_SamanthaPreBattle: @ 82211E2 +MossdeepCity_Gym_Text_SamanthaIntro: @ 82211E2 .string "I see it…\n" .string "I see your future…\p" .string "If you can beat me, I will tell you\n" @@ -458,7 +458,7 @@ MossdeepCity_Gym_Text_SamanthaPostBattle: @ 822123D .string "The result…\n" .string "You won't hear it from me!$" -MossdeepCity_Gym_Text_MauraPreBattle: @ 82212A6 +MossdeepCity_Gym_Text_MauraIntro: @ 82212A6 .string "The roads you have traveled…\n" .string "What you have experienced…\p" .string "Come at me with everything you've\n" @@ -474,7 +474,7 @@ MossdeepCity_Gym_Text_MauraPostBattle: @ 822132E .string "only despair at the end.\p" .string "What goes around comes around…$" -MossdeepCity_Gym_Text_SylviaPreBattle: @ 82213C2 +MossdeepCity_Gym_Text_SylviaIntro: @ 82213C2 .string "Even at the risk of life, I will win\n" .string "this battle!$" @@ -487,7 +487,7 @@ MossdeepCity_Gym_Text_SylviaPostBattle: @ 8221412 .string "It won't be my fault if something\n" .string "horrible befalls you…$" -MossdeepCity_Gym_Text_NatePreBattle: @ 8221460 +MossdeepCity_Gym_Text_NateIntro: @ 8221460 .string "Hohoho.\p" .string "You need me to show you how tenacious\n" .string "the PSYCHIC type can be.$" @@ -500,7 +500,7 @@ MossdeepCity_Gym_Text_NatePostBattle: @ 82214D3 .string "I… I don't let defeat rattle m-me,\n" .string "however b-badly.$" -MossdeepCity_Gym_Text_KathleenPreBattle: @ 8221507 +MossdeepCity_Gym_Text_KathleenIntro: @ 8221507 .string "Let me show you a perfectly awful,\n" .string "horrifying time!$" @@ -511,7 +511,7 @@ MossdeepCity_Gym_Text_KathleenPostBattle: @ 8221545 .string "Your vitality is contagious!\n" .string "Get away from me quickly!$" -MossdeepCity_Gym_Text_CliffordPreBattle: @ 822157C +MossdeepCity_Gym_Text_CliffordIntro: @ 822157C .string "I may be past my prime, but I suggest\n" .string "you not patronize me.$" @@ -523,7 +523,7 @@ MossdeepCity_Gym_Text_CliffordPostBattle: @ 82215E2 .string "It seems that I could not overcome\n" .string "your youthful energy.$" -MossdeepCity_Gym_Text_MaceyPreBattle: @ 822161B +MossdeepCity_Gym_Text_MaceyIntro: @ 822161B .string "You're not getting through to the end!\n" .string "Not if I can help it!$" @@ -536,7 +536,7 @@ MossdeepCity_Gym_Text_MaceyPostBattle: @ 8221680 .string "not suitable for the PSYCHIC type!\p" .string "The way you battle is somehow brutal!$" -MossdeepCity_Gym_Text_NicholasPreBattle: @ 82216EE +MossdeepCity_Gym_Text_NicholasIntro: @ 82216EE .string "Wroooar! Have a taste of my super\n" .string "POKéMON hard-battling power!$" @@ -548,7 +548,7 @@ MossdeepCity_Gym_Text_NicholasPostBattle: @ 822173A .string "All right! I think I'll develop a special\n" .string "invincible POKéMON power next.$" -MossdeepCity_Gym_Text_TateAndLizaPreBattle: @ 8221783 +MossdeepCity_Gym_Text_TateAndLizaIntro: @ 8221783 .string "TATE: Hehehe… Were you surprised?\p" .string "LIZA: Fufufu… Were you surprised?\p" .string "TATE: That there are two GYM LEADERS?\n" diff --git a/data/maps/MtChimney/scripts.inc b/data/maps/MtChimney/scripts.inc index 894c47684..f86ec79cb 100644 --- a/data/maps/MtChimney/scripts.inc +++ b/data/maps/MtChimney/scripts.inc @@ -184,8 +184,7 @@ MtChimney_Movement_ArchieExitNorth: @ 822EF9C walk_down step_end -@ Unused -MtChimney_Movement_22EFA6: @ 822EFA6 +MtChimney_Movement_Unused1: @ 822EFA6 walk_down walk_down walk_down @@ -205,8 +204,7 @@ MtChimney_Movement_22EFA6: @ 822EFA6 walk_down step_end -@ Unused -MtChimney_Movement_22EFB8: @ 822EFB8 +MtChimney_Movement_Unused2: @ 822EFB8 walk_down walk_down walk_down @@ -217,8 +215,7 @@ MtChimney_Movement_22EFB8: @ 822EFB8 walk_down step_end -@ Unused -MtChimney_Movement_22EFC1: @ 822EFC1 +MtChimney_Movement_Unused3: @ 822EFC1 walk_right walk_down walk_down @@ -235,8 +232,7 @@ MtChimney_Movement_22EFC1: @ 822EFC1 walk_down step_end -@ Unused -MtChimney_Movement_22EFD0: @ 822EFD0 +MtChimney_Movement_Unused4: @ 822EFD0 walk_fast_down walk_fast_down walk_fast_down @@ -263,8 +259,7 @@ MtChimney_Movement_22EFD0: @ 822EFD0 walk_down step_end -@ Unused -MtChimney_Movement_22EFE9: @ 822EFE9 +MtChimney_Movement_Unused5: @ 822EFE9 delay_16 delay_16 delay_16 @@ -277,8 +272,7 @@ MtChimney_Movement_22EFE9: @ 822EFE9 walk_down step_end -@ Unused -MtChimney_Movement_22EFF4: @ 822EFF4 +MtChimney_Movement_Unused6: @ 822EFF4 delay_16 walk_left walk_down @@ -296,8 +290,7 @@ MtChimney_Movement_22EFF4: @ 822EFF4 walk_down step_end -@ Unused -MtChimney_Movement_22F004: @ 822F004 +MtChimney_Movement_Unused7: @ 822F004 delay_16 walk_left walk_left @@ -316,8 +309,7 @@ MtChimney_Movement_22F004: @ 822F004 walk_down step_end -@ Unused -MtChimney_Movement_22F015: @ 822F015 +MtChimney_Movement_Unused8: @ 822F015 delay_16 walk_down walk_left @@ -327,8 +319,7 @@ MtChimney_Movement_22F015: @ 822F015 walk_in_place_fastest_down step_end -@ Unused -MtChimney_Movement_22F01D: @ 822F01D +MtChimney_Movement_Unused9: @ 822F01D walk_down walk_down walk_down @@ -344,13 +335,11 @@ MtChimney_Movement_22F01D: @ 822F01D walk_down step_end -@ Unused -MtChimney_Movement_22F02B: @ 822F02B +MtChimney_Movement_Unused10: @ 822F02B walk_down step_end -@ Unused -MtChimney_Movement_22F02D: @ 822F02D +MtChimney_Movement_Unused11: @ 822F02D walk_down walk_down walk_down @@ -360,8 +349,7 @@ MtChimney_Movement_22F02D: @ 822F02D walk_down step_end -@ Unused -MtChimney_Movement_22F035: @ 822F035 +MtChimney_Movement_Unused12: @ 822F035 delay_16 delay_16 walk_in_place_fastest_left @@ -373,8 +361,7 @@ MtChimney_Movement_22F035: @ 822F035 walk_down step_end -@ Unused -MtChimney_Movement_22F03F: @ 822F03F +MtChimney_Movement_Unused13: @ 822F03F delay_16 delay_16 delay_16 @@ -387,16 +374,14 @@ MtChimney_Movement_22F03F: @ 822F03F walk_down step_end -@ Unused -MtChimney_Movement_22F04A: @ 822F04A +MtChimney_Movement_Unused14: @ 822F04A lock_facing_direction walk_fast_left unlock_facing_direction face_right step_end -@ Unused -MtChimney_Movement_22F04F: @ 822F04F +MtChimney_Movement_Unused15: @ 822F04F walk_left walk_in_place_fastest_right delay_16 diff --git a/data/maps/PetalburgCity/scripts.inc b/data/maps/PetalburgCity/scripts.inc index 16977581c..70dfee72f 100644 --- a/data/maps/PetalburgCity/scripts.inc +++ b/data/maps/PetalburgCity/scripts.inc @@ -351,7 +351,8 @@ PetalburgCity_EventScript_LeadPlayerToGym3:: @ 81DC5FF waitmovement 0 return -PetalburgCity_Movement_1DC611:: @ 81DC611 +@ Unused +PetalburgCity_Movement_Delay48:: @ 81DC611 delay_16 delay_16 delay_16 diff --git a/data/maps/PetalburgCity_Gym/scripts.inc b/data/maps/PetalburgCity_Gym/scripts.inc index 90971f531..5397708f8 100644 --- a/data/maps/PetalburgCity_Gym/scripts.inc +++ b/data/maps/PetalburgCity_Gym/scripts.inc @@ -411,7 +411,7 @@ PetalburgCity_Gym_EventScript_GiveEnigmaBerry:: @ 8204E1D end PetalburgCity_Gym_EventScript_NormanBattle:: @ 8204E3B - msgbox PetalburgCity_Gym_Text_NormanPreBattle, MSGBOX_DEFAULT + msgbox PetalburgCity_Gym_Text_NormanIntro, MSGBOX_DEFAULT trainerbattle_no_intro TRAINER_NORMAN_1, PetalburgCity_Gym_Text_NormanDefeat message PetalburgCity_Gym_Text_ReceivedBalanceBadge waitmessage @@ -673,8 +673,7 @@ PetalburgCity_Gym_Movement_WallysUncleApproachPlayerWest: @ 82050D0 walk_up step_end -@ Unused -PetalburgCity_Gym_Movement_2050D8: @ 82050D8 +PetalburgCity_Gym_Movement_Unused: @ 82050D8 walk_in_place_fastest_up delay_16 delay_16 @@ -959,7 +958,7 @@ PetalburgCity_Gym_EventScript_RightGymLeadersRoomDoor:: @ 8205387 end PetalburgCity_Gym_EventScript_Randall:: @ 82053BA - trainerbattle_single TRAINER_RANDALL, PetalburgCity_Gym_Text_RandallPreBattle, PetalburgCity_Gym_Text_RandallDefeat, PetalburgCity_Gym_EventScript_SlideOpenSpeedRoomDoors + trainerbattle_single TRAINER_RANDALL, PetalburgCity_Gym_Text_RandallIntro, PetalburgCity_Gym_Text_RandallDefeat, PetalburgCity_Gym_EventScript_SlideOpenSpeedRoomDoors goto_if_set FLAG_DEFEATED_PETALBURG_GYM, PetalburgCity_Gym_EventScript_RandallPostBadge msgbox PetalburgCity_Gym_Text_RandallPostBattle, MSGBOX_AUTOCLOSE end @@ -976,7 +975,7 @@ PetalburgCity_Gym_EventScript_RandallPostBadge:: @ 82053ED end PetalburgCity_Gym_EventScript_Parker:: @ 82053F6 - trainerbattle_single TRAINER_PARKER, PetalburgCity_Gym_Text_ParkerPreBattle, PetalburgCity_Gym_Text_ParkerDefeat, PetalburgCity_Gym_EventScript_SlideOpenConfusionRoomDoors + trainerbattle_single TRAINER_PARKER, PetalburgCity_Gym_Text_ParkerIntro, PetalburgCity_Gym_Text_ParkerDefeat, PetalburgCity_Gym_EventScript_SlideOpenConfusionRoomDoors goto_if_set FLAG_DEFEATED_PETALBURG_GYM, PetalburgCity_Gym_EventScript_ParkerPostBadge msgbox PetalburgCity_Gym_Text_ParkerPostBattle, MSGBOX_AUTOCLOSE end @@ -993,7 +992,7 @@ PetalburgCity_Gym_EventScript_ParkerPostBadge:: @ 8205429 end PetalburgCity_Gym_EventScript_George:: @ 8205432 - trainerbattle_single TRAINER_GEORGE, PetalburgCity_Gym_Text_GeorgePreBattle, PetalburgCity_Gym_Text_GeorgeDefeat, PetalburgCity_Gym_EventScript_SlideOpenRecoveryRoomDoors + trainerbattle_single TRAINER_GEORGE, PetalburgCity_Gym_Text_GeorgeIntro, PetalburgCity_Gym_Text_GeorgeDefeat, PetalburgCity_Gym_EventScript_SlideOpenRecoveryRoomDoors goto_if_set FLAG_DEFEATED_PETALBURG_GYM, PetalburgCity_Gym_EventScript_GeorgePostBadge msgbox PetalburgCity_Gym_Text_GeorgePostBattle, MSGBOX_AUTOCLOSE end @@ -1010,7 +1009,7 @@ PetalburgCity_Gym_EventScript_GeorgePostBadge:: @ 8205465 end PetalburgCity_Gym_EventScript_Berke:: @ 820546E - trainerbattle_single TRAINER_BERKE, PetalburgCity_Gym_Text_BerkePreBattle, PetalburgCity_Gym_Text_BerkeDefeat, PetalburgCity_Gym_EventScript_SlideOpenOHKORoomDoors + trainerbattle_single TRAINER_BERKE, PetalburgCity_Gym_Text_BerkeIntro, PetalburgCity_Gym_Text_BerkeDefeat, PetalburgCity_Gym_EventScript_SlideOpenOHKORoomDoors goto_if_set FLAG_DEFEATED_PETALBURG_GYM, PetalburgCity_Gym_EventScript_BerkePostBadge msgbox PetalburgCity_Gym_Text_BerkePostBattle, MSGBOX_AUTOCLOSE end @@ -1027,7 +1026,7 @@ PetalburgCity_Gym_EventScript_BerkePostBadge:: @ 82054A1 end PetalburgCity_Gym_EventScript_Mary:: @ 82054AA - trainerbattle_single TRAINER_MARY, PetalburgCity_Gym_Text_MaryPreBattle, PetalburgCity_Gym_Text_MaryDefeat, PetalburgCity_Gym_EventScript_SlideOpenAccuracyRoomDoors + trainerbattle_single TRAINER_MARY, PetalburgCity_Gym_Text_MaryIntro, PetalburgCity_Gym_Text_MaryDefeat, PetalburgCity_Gym_EventScript_SlideOpenAccuracyRoomDoors goto_if_set FLAG_DEFEATED_PETALBURG_GYM, PetalburgCity_Gym_EventScript_MaryPostBadge msgbox PetalburgCity_Gym_Text_MaryPostBattle, MSGBOX_AUTOCLOSE end @@ -1044,7 +1043,7 @@ PetalburgCity_Gym_EventScript_MaryPostBadge:: @ 82054DD end PetalburgCity_Gym_EventScript_Alexia:: @ 82054E6 - trainerbattle_single TRAINER_ALEXIA, PetalburgCity_Gym_Text_AlexiaPreBattle, PetalburgCity_Gym_Text_AlexiaDefeat, PetalburgCity_Gym_EventScript_SlideOpenDefenseRoomDoors + trainerbattle_single TRAINER_ALEXIA, PetalburgCity_Gym_Text_AlexiaIntro, PetalburgCity_Gym_Text_AlexiaDefeat, PetalburgCity_Gym_EventScript_SlideOpenDefenseRoomDoors goto_if_set FLAG_DEFEATED_PETALBURG_GYM, PetalburgCity_Gym_EventScript_AlexiaPostBadge msgbox PetalburgCity_Gym_Text_AlexiaPostBattle, MSGBOX_AUTOCLOSE end @@ -1061,7 +1060,7 @@ PetalburgCity_Gym_EventScript_AlexiaPostBadge:: @ 8205519 end PetalburgCity_Gym_EventScript_Jody:: @ 8205522 - trainerbattle_single TRAINER_JODY, PetalburgCity_Gym_Text_JodyPreBattle, PetalburgCity_Gym_Text_JodyDefeat, PetalburgCity_Gym_EventScript_SlideOpenStrengthRoomDoors + trainerbattle_single TRAINER_JODY, PetalburgCity_Gym_Text_JodyIntro, PetalburgCity_Gym_Text_JodyDefeat, PetalburgCity_Gym_EventScript_SlideOpenStrengthRoomDoors goto_if_set FLAG_DEFEATED_PETALBURG_GYM, PetalburgCity_Gym_EventScript_JodyPostBadge msgbox PetalburgCity_Gym_Text_JodyPostBattle, MSGBOX_AUTOCLOSE end @@ -1358,7 +1357,7 @@ PetalburgCity_Gym_Text_YouHaveGottenStronger: @ 8205F87 .string "I can tell by the number of BADGES\n" .string "that you've earned.$" -PetalburgCity_Gym_Text_NormanPreBattle: @ 8205FE5 +PetalburgCity_Gym_Text_NormanIntro: @ 8205FE5 .string "DAD: Hm…\n" .string "So, you did get four GYM BADGES.\p" .string "Fine, as I promised, we will have\n" @@ -1454,7 +1453,7 @@ PetalburgCity_Gym_Text_GymGuidePostVictory: @ 82066F3 .string "Like, whoa!\n" .string "What a stunning turn of events!$" -PetalburgCity_Gym_Text_RandallPreBattle: @ 820674F +PetalburgCity_Gym_Text_RandallIntro: @ 820674F .string "The ability to attack before the\n" .string "opponent…\p" .string "Just that alone puts me at a great\n" @@ -1477,7 +1476,7 @@ PetalburgCity_Gym_Text_RandallPostBadge: @ 820685E .string "That's what I think being a\n" .string "GYM LEADER is all about.$" -PetalburgCity_Gym_Text_ParkerPreBattle: @ 82068FD +PetalburgCity_Gym_Text_ParkerIntro: @ 82068FD .string "This is the CONFUSION ROOM.\p" .string "Let me see how well bonded you are\n" .string "with your POKéMON!$" @@ -1494,7 +1493,7 @@ PetalburgCity_Gym_Text_ParkerPostBadge: @ 82069D9 .string "After you beat our LEADER, the\n" .string "training has become a lot tougher.$" -PetalburgCity_Gym_Text_GeorgePreBattle: @ 8206A1B +PetalburgCity_Gym_Text_GeorgeIntro: @ 8206A1B .string "Just when you think you're going to\n" .string "win, your opponent restores HP…\p" .string "Can you just imagine how awful that\n" @@ -1519,7 +1518,7 @@ PetalburgCity_Gym_Text_GeorgePostBadge: @ 8206BB1 .string "I'm going to keep training at GYMS.\n" .string "One day, I'll become a LEADER.$" -PetalburgCity_Gym_Text_BerkePreBattle: @ 8206BF4 +PetalburgCity_Gym_Text_BerkeIntro: @ 8206BF4 .string "I'm not going to take it easy just\n" .string "because you're our LEADER's kid.\p" .string "I'll show you how horrid it is for\n" @@ -1542,7 +1541,7 @@ PetalburgCity_Gym_Text_BerkePostBadge: @ 8206D56 .string "the TRAINERS of PETALBURG CITY have\l" .string "become a lot tougher.$" -PetalburgCity_Gym_Text_MaryPreBattle: @ 8206DB2 +PetalburgCity_Gym_Text_MaryIntro: @ 8206DB2 .string "Giggle…\n" .string "This is the ACCURACY ROOM.\p" .string "It's pretty nasty when every attack\n" @@ -1565,7 +1564,7 @@ PetalburgCity_Gym_Text_MaryPostBadge: @ 8206ED8 .string "We're striving to become soul mates\n" .string "with our POKéMON.$" -PetalburgCity_Gym_Text_AlexiaPreBattle: @ 8206F44 +PetalburgCity_Gym_Text_AlexiaIntro: @ 8206F44 .string "The higher the DEFENSE, the more\n" .string "reckless I can be in attack.$" @@ -1585,7 +1584,7 @@ PetalburgCity_Gym_Text_AlexiaPostBattle: @ 8206F9F PetalburgCity_Gym_Text_AlexiaPostBadge: @ 8207069 .string "Hi! Have you tried using SURF?$" -PetalburgCity_Gym_Text_JodyPreBattle: @ 8207088 +PetalburgCity_Gym_Text_JodyIntro: @ 8207088 .string "Our GYM LEADER told us to go all out\n" .string "and beat you.\p" .string "Even if you happen to be the\n" diff --git a/data/maps/Route110_TrickHouseEnd/scripts.inc b/data/maps/Route110_TrickHouseEnd/scripts.inc index c4645a46a..75a7d3f9a 100644 --- a/data/maps/Route110_TrickHouseEnd/scripts.inc +++ b/data/maps/Route110_TrickHouseEnd/scripts.inc @@ -13,7 +13,7 @@ Route110_TrickHouseEnd_OnResume: @ 826ACC4 Route110_TrickHouseEnd_OnTransition: @ 826ACD0 setvar VAR_TEMP_1, 0 setvar VAR_TEMP_2, 0 - special SetTrickHouseEndRoomFlag + special SetTrickHouseNuggetFlag end Route110_TrickHouseEnd_OnWarp: @ 826ACDE @@ -171,7 +171,7 @@ Route110_TrickHouseEnd_EventScript_CompletedPuzzle8:: @ 826AF28 call_if_eq Route110_TrickHouseEnd_EventScript_NoRoomForTent msgbox Route110_TrickHouseEnd_Text_LeavingOnJourney, MSGBOX_DEFAULT call Route110_TrickHouseEnd_EventScript_TrickMasterExit - special ResetTrickHouseEndRoomFlag + special ResetTrickHouseNuggetFlag release end diff --git a/data/maps/Route128/scripts.inc b/data/maps/Route128/scripts.inc index 68baf63ff..807f6a382 100644 --- a/data/maps/Route128/scripts.inc +++ b/data/maps/Route128/scripts.inc @@ -78,13 +78,11 @@ Route128_EventScript_KyogreAwakenedScene:: @ 81F6B57 releaseall end -@ Unused -Route128_Movement_1F6C76: @ 81F6C76 +Route128_Movement_Unused1: @ 81F6C76 walk_fast_left step_end -@ Unused -Route128_Movement_1F6C78: @ 81F6C78 +Route128_Movement_Unused2: @ 81F6C78 walk_left walk_left walk_left diff --git a/data/maps/RustboroCity_DevonCorp_3F/scripts.inc b/data/maps/RustboroCity_DevonCorp_3F/scripts.inc index c85310fc6..76121f3ef 100644 --- a/data/maps/RustboroCity_DevonCorp_3F/scripts.inc +++ b/data/maps/RustboroCity_DevonCorp_3F/scripts.inc @@ -72,8 +72,7 @@ RustboroCity_DevonCorp_3F_EventScript_MeetPresident:: @ 821246E releaseall end -@ Unused -RustboroCity_DevonCorp_3F_Movement_21252F: @ 821252F +RustboroCity_DevonCorp_3F_Movement_Unused: @ 821252F walk_up walk_up walk_up diff --git a/data/maps/RustboroCity_Gym/scripts.inc b/data/maps/RustboroCity_Gym/scripts.inc index 0a95a86e5..bbe01389f 100644 --- a/data/maps/RustboroCity_Gym/scripts.inc +++ b/data/maps/RustboroCity_Gym/scripts.inc @@ -2,7 +2,7 @@ RustboroCity_Gym_MapScripts:: @ 8212F30 .byte 0 RustboroCity_Gym_EventScript_Roxanne:: @ 8212F31 - trainerbattle_single TRAINER_ROXANNE_1, RustboroCity_Gym_Text_RoxannePreBattle, RustboroCity_Gym_Text_RoxanneDefeat, RustboroCity_Gym_EventScript_RoxanneDefeated, NO_MUSIC + trainerbattle_single TRAINER_ROXANNE_1, RustboroCity_Gym_Text_RoxanneIntro, RustboroCity_Gym_Text_RoxanneDefeat, RustboroCity_Gym_EventScript_RoxanneDefeated, NO_MUSIC specialvar VAR_RESULT, ShouldTryRematchBattle compare VAR_RESULT, TRUE goto_if_eq RustboroCity_Gym_EventScript_RoxanneRematch @@ -42,17 +42,17 @@ RustboroCity_Gym_EventScript_RoxanneRematch:: @ 8212FC8 end RustboroCity_Gym_EventScript_Josh:: @ 8212FE3 - trainerbattle_single TRAINER_JOSH, RustboroCity_Gym_Text_JoshPreBattle, RustboroCity_Gym_Text_JoshDefeat + trainerbattle_single TRAINER_JOSH, RustboroCity_Gym_Text_JoshIntro, RustboroCity_Gym_Text_JoshDefeat msgbox RustboroCity_Gym_Text_JoshPostBattle, MSGBOX_AUTOCLOSE end RustboroCity_Gym_EventScript_Tommy:: @ 8212FFA - trainerbattle_single TRAINER_TOMMY, RustboroCity_Gym_Text_TommyPreBattle, RustboroCity_Gym_Text_TommyDefeat + trainerbattle_single TRAINER_TOMMY, RustboroCity_Gym_Text_TommyIntro, RustboroCity_Gym_Text_TommyDefeat msgbox RustboroCity_Gym_Text_TommyPostBattle, MSGBOX_AUTOCLOSE end RustboroCity_Gym_EventScript_Marc:: @ 8213011 - trainerbattle_single TRAINER_MARC, RustboroCity_Gym_Text_MarcPreBattle, RustboroCity_Gym_Text_MarcDefeat + trainerbattle_single TRAINER_MARC, RustboroCity_Gym_Text_MarcIntro, RustboroCity_Gym_Text_MarcDefeat msgbox RustboroCity_Gym_Text_MarcPostBattle, MSGBOX_AUTOCLOSE end @@ -140,7 +140,7 @@ RustboroCity_Gym_Text_GymGuidePostVictory: @ 82132E2 .string "the stairs to the CHAMPIONSHIP!\p" .string "That's got to feel awesome!$" -RustboroCity_Gym_Text_JoshPreBattle: @ 82133E9 +RustboroCity_Gym_Text_JoshIntro: @ 82133E9 .string "Don't take us GYM TRAINERS lightly!\n" .string "I'll show you why we're better!$" @@ -151,7 +151,7 @@ RustboroCity_Gym_Text_JoshPostBattle: @ 8213447 .string "You haven't seen anything of the ROCK\n" .string "type's terrifying power!$" -RustboroCity_Gym_Text_TommyPreBattle: @ 8213486 +RustboroCity_Gym_Text_TommyIntro: @ 8213486 .string "If you can't beat me, you won't stand\n" .string "a chance against ROXANNE!$" @@ -163,7 +163,7 @@ RustboroCity_Gym_Text_TommyPostBattle: @ 82134E6 .string "several times.\p" .string "You'd better be on your guard!$" -RustboroCity_Gym_Text_MarcPreBattle: @ 8213533 +RustboroCity_Gym_Text_MarcIntro: @ 8213533 .string "We might be in the middle of town,\n" .string "but so what?\p" .string "My ROCK POKéMON need room to\n" @@ -178,7 +178,7 @@ RustboroCity_Gym_Text_MarcPostBattle: @ 82135C0 .string "It took smarts and sense for her to\n" .string "pick the ROCK type at her young age.$" -RustboroCity_Gym_Text_RoxannePreBattle: @ 821362A +RustboroCity_Gym_Text_RoxanneIntro: @ 821362A .string "Hello, I am ROXANNE, the RUSTBORO\n" .string "POKéMON GYM LEADER.\p" .string "I became a GYM LEADER so that I might\n" diff --git a/data/maps/RusturfTunnel/scripts.inc b/data/maps/RusturfTunnel/scripts.inc index 30ff08c36..36ef4c0cd 100644 --- a/data/maps/RusturfTunnel/scripts.inc +++ b/data/maps/RusturfTunnel/scripts.inc @@ -184,22 +184,19 @@ RusturfTunnel_Movement_PlayerWatchWandaExit: @ 822D02F walk_in_place_fastest_right step_end -@ Unused -RusturfTunnel_Movement_22D035: @ 822D035 +RusturfTunnel_Movement_Unused1: @ 822D035 walk_left walk_in_place_fastest_right step_end -@ Unused -RusturfTunnel_Movement_22D038: @ 822D038 +RusturfTunnel_Movement_Unused2: @ 822D038 walk_down walk_in_place_fastest_up delay_8 walk_in_place_fastest_right step_end -@ Unused -RusturfTunnel_Movement_22D03D: @ 822D03D +RusturfTunnel_Movement_Unused3: @ 822D03D walk_up walk_in_place_fastest_down delay_8 diff --git a/data/maps/SeafloorCavern_Room9/scripts.inc b/data/maps/SeafloorCavern_Room9/scripts.inc index 4786c7f1c..64ed3ab7c 100644 --- a/data/maps/SeafloorCavern_Room9/scripts.inc +++ b/data/maps/SeafloorCavern_Room9/scripts.inc @@ -153,8 +153,7 @@ SeafloorCavern_Room9_Movement_ArchieApproachPlayer: @ 823502A walk_right step_end -@ Unused -SeafloorCavern_Room9_Movement_235032: @ 8235032 +SeafloorCavern_Room9_Movement_Unused1: @ 8235032 walk_left walk_left step_end @@ -164,8 +163,7 @@ SeafloorCavern_Room9_Movement_ArchieListenMessage: @ 8235035 delay_16 step_end -@ Unused -SeafloorCavern_Room9_Movement_235038: @ 8235038 +SeafloorCavern_Room9_Movement_Unused2: @ 8235038 walk_right step_end diff --git a/data/maps/SlateportCity/scripts.inc b/data/maps/SlateportCity/scripts.inc index 50fd39f8f..73b108c45 100644 --- a/data/maps/SlateportCity/scripts.inc +++ b/data/maps/SlateportCity/scripts.inc @@ -668,8 +668,7 @@ SlateportCity_Movement_TyExit: @ 81DD326 walk_left step_end -@ Unused -SlateportCity_Movement_1DD334: @ 81DD334 +SlateportCity_Movement_Unused: @ 81DD334 walk_down walk_in_place_fastest_up step_end diff --git a/data/maps/SlateportCity_OceanicMuseum_2F/scripts.inc b/data/maps/SlateportCity_OceanicMuseum_2F/scripts.inc index 16478c5a0..885c512a3 100644 --- a/data/maps/SlateportCity_OceanicMuseum_2F/scripts.inc +++ b/data/maps/SlateportCity_OceanicMuseum_2F/scripts.inc @@ -129,8 +129,7 @@ SlateportCity_OceanicMuseum_2F_Movement_PlayerApproachGruntWest: @ 820BCC2 walk_in_place_fastest_left step_end -@ Unused -SlateportCity_OceanicMuseum_2F_Movement_20BCC8: @ 820BCC8 +SlateportCity_OceanicMuseum_2F_Movement_Unused: @ 820BCC8 walk_up walk_left walk_left diff --git a/data/maps/SootopolisCity_Gym_1F/scripts.inc b/data/maps/SootopolisCity_Gym_1F/scripts.inc index a6b2a4a38..dcc879a09 100644 --- a/data/maps/SootopolisCity_Gym_1F/scripts.inc +++ b/data/maps/SootopolisCity_Gym_1F/scripts.inc @@ -83,7 +83,7 @@ SootopolisCity_Gym_1F_Movement_FallThroughIce: @ 8224F42 step_end SootopolisCity_Gym_1F_EventScript_Juan:: @ 8224F44 - trainerbattle_single TRAINER_JUAN_1, SootopolisCity_Gym_1F_Text_JuanPreBattle, SootopolisCity_Gym_1F_Text_JuanDefeat, SootopolisCity_Gym_1F_EventScript_JuanDefeated, NO_MUSIC + trainerbattle_single TRAINER_JUAN_1, SootopolisCity_Gym_1F_Text_JuanIntro, SootopolisCity_Gym_1F_Text_JuanDefeat, SootopolisCity_Gym_1F_EventScript_JuanDefeated, NO_MUSIC specialvar VAR_RESULT, ShouldTryRematchBattle compare VAR_RESULT, TRUE goto_if_eq SootopolisCity_Gym_1F_EventScript_JuanRematch @@ -200,7 +200,7 @@ SootopolisCity_Gym_1F_Text_GymGuidePostVictory: @ 82251AF .string "If you've gotten all the BADGES, you're\n" .string "set for the POKéMON LEAGUE challenge!$" -SootopolisCity_Gym_1F_Text_JuanPreBattle: @ 8225268 +SootopolisCity_Gym_1F_Text_JuanIntro: @ 8225268 .string "Let me ask you.\n" .string "Did you know?\l" .string "Ah, I should not be so coy.\p" diff --git a/data/maps/SootopolisCity_Gym_B1F/scripts.inc b/data/maps/SootopolisCity_Gym_B1F/scripts.inc index fad5878fb..735722db5 100644 --- a/data/maps/SootopolisCity_Gym_B1F/scripts.inc +++ b/data/maps/SootopolisCity_Gym_B1F/scripts.inc @@ -2,56 +2,56 @@ SootopolisCity_Gym_B1F_MapScripts:: @ 8225C8A .byte 0 SootopolisCity_Gym_B1F_EventScript_Andrea:: @ 8225C8B - trainerbattle_single TRAINER_ANDREA, SootopolisCity_Gym_B1F_Text_AndreaPreBattle, SootopolisCity_Gym_B1F_Text_AndreaDefeat + trainerbattle_single TRAINER_ANDREA, SootopolisCity_Gym_B1F_Text_AndreaIntro, SootopolisCity_Gym_B1F_Text_AndreaDefeat msgbox SootopolisCity_Gym_B1F_Text_AndreaPostBattle, MSGBOX_AUTOCLOSE end SootopolisCity_Gym_B1F_EventScript_Crissy:: @ 8225CA2 - trainerbattle_single TRAINER_CRISSY, SootopolisCity_Gym_B1F_Text_CrissyPreBattle, SootopolisCity_Gym_B1F_Text_CrissyDefeat + trainerbattle_single TRAINER_CRISSY, SootopolisCity_Gym_B1F_Text_CrissyIntro, SootopolisCity_Gym_B1F_Text_CrissyDefeat msgbox SootopolisCity_Gym_B1F_Text_CrissyPostBattle, MSGBOX_AUTOCLOSE end SootopolisCity_Gym_B1F_EventScript_Brianna:: @ 8225CB9 - trainerbattle_single TRAINER_BRIANNA, SootopolisCity_Gym_B1F_Text_BriannaPreBattle, SootopolisCity_Gym_B1F_Text_BriannaDefeat + trainerbattle_single TRAINER_BRIANNA, SootopolisCity_Gym_B1F_Text_BriannaIntro, SootopolisCity_Gym_B1F_Text_BriannaDefeat msgbox SootopolisCity_Gym_B1F_Text_BriannaPostBattle, MSGBOX_AUTOCLOSE end SootopolisCity_Gym_B1F_EventScript_Connie:: @ 8225CD0 - trainerbattle_single TRAINER_CONNIE, SootopolisCity_Gym_B1F_Text_ConniePreBattle, SootopolisCity_Gym_B1F_Text_ConnieDefeat + trainerbattle_single TRAINER_CONNIE, SootopolisCity_Gym_B1F_Text_ConnieIntro, SootopolisCity_Gym_B1F_Text_ConnieDefeat msgbox SootopolisCity_Gym_B1F_Text_ConniePostBattle, MSGBOX_AUTOCLOSE end SootopolisCity_Gym_B1F_EventScript_Bridget:: @ 8225CE7 - trainerbattle_single TRAINER_BRIDGET, SootopolisCity_Gym_B1F_Text_BridgetPreBattle, SootopolisCity_Gym_B1F_Text_BridgetDefeat + trainerbattle_single TRAINER_BRIDGET, SootopolisCity_Gym_B1F_Text_BridgetIntro, SootopolisCity_Gym_B1F_Text_BridgetDefeat msgbox SootopolisCity_Gym_B1F_Text_BridgetPostBattle, MSGBOX_AUTOCLOSE end SootopolisCity_Gym_B1F_EventScript_Olivia:: @ 8225CFE - trainerbattle_single TRAINER_OLIVIA, SootopolisCity_Gym_B1F_Text_OliviaPreBattle, SootopolisCity_Gym_B1F_Text_OliviaDefeat + trainerbattle_single TRAINER_OLIVIA, SootopolisCity_Gym_B1F_Text_OliviaIntro, SootopolisCity_Gym_B1F_Text_OliviaDefeat msgbox SootopolisCity_Gym_B1F_Text_OliviaPostBattle, MSGBOX_AUTOCLOSE end SootopolisCity_Gym_B1F_EventScript_Tiffany:: @ 8225D15 - trainerbattle_single TRAINER_TIFFANY, SootopolisCity_Gym_B1F_Text_TiffanyPreBattle, SootopolisCity_Gym_B1F_Text_TiffanyDefeat + trainerbattle_single TRAINER_TIFFANY, SootopolisCity_Gym_B1F_Text_TiffanyIntro, SootopolisCity_Gym_B1F_Text_TiffanyDefeat msgbox SootopolisCity_Gym_B1F_Text_TiffanyPostBattle, MSGBOX_AUTOCLOSE end SootopolisCity_Gym_B1F_EventScript_Bethany:: @ 8225D2C - trainerbattle_single TRAINER_BETHANY, SootopolisCity_Gym_B1F_Text_BethanyPreBattle, SootopolisCity_Gym_B1F_Text_BethanyDefeat + trainerbattle_single TRAINER_BETHANY, SootopolisCity_Gym_B1F_Text_BethanyIntro, SootopolisCity_Gym_B1F_Text_BethanyDefeat msgbox SootopolisCity_Gym_B1F_Text_BethanyPostBattle, MSGBOX_AUTOCLOSE end SootopolisCity_Gym_B1F_EventScript_Annika:: @ 8225D43 - trainerbattle_single TRAINER_ANNIKA, SootopolisCity_Gym_B1F_Text_AnnikaPreBattle, SootopolisCity_Gym_B1F_Text_AnnikaDefeat + trainerbattle_single TRAINER_ANNIKA, SootopolisCity_Gym_B1F_Text_AnnikaIntro, SootopolisCity_Gym_B1F_Text_AnnikaDefeat msgbox SootopolisCity_Gym_B1F_Text_AnnikaPostBattle, MSGBOX_AUTOCLOSE end SootopolisCity_Gym_B1F_EventScript_Daphne:: @ 8225D5A - trainerbattle_single TRAINER_DAPHNE, SootopolisCity_Gym_B1F_Text_DaphnePreBattle, SootopolisCity_Gym_B1F_Text_DaphneDefeat + trainerbattle_single TRAINER_DAPHNE, SootopolisCity_Gym_B1F_Text_DaphneIntro, SootopolisCity_Gym_B1F_Text_DaphneDefeat msgbox SootopolisCity_Gym_B1F_Text_DaphnePostBattle, MSGBOX_AUTOCLOSE end -SootopolisCity_Gym_B1F_Text_AndreaPreBattle: @ 8225D71 +SootopolisCity_Gym_B1F_Text_AndreaIntro: @ 8225D71 .string "I'll show you the sublime techniques\n" .string "I learned from our LEADER JUAN!$" @@ -62,7 +62,7 @@ SootopolisCity_Gym_B1F_Text_AndreaPostBattle: @ 8225DCF .string "Watch what happens if you crack all\n" .string "the floor tiles.$" -SootopolisCity_Gym_B1F_Text_CrissyPreBattle: @ 8225E04 +SootopolisCity_Gym_B1F_Text_CrissyIntro: @ 8225E04 .string "You came all the way here, but you won't\n" .string "get to see JUAN.\p" .string "Not if you lose to me, you won't!$" @@ -75,7 +75,7 @@ SootopolisCity_Gym_B1F_Text_CrissyPostBattle: @ 8225E90 .string "You might be good enough to avoid\n" .string "being wiped out in one hit by JUAN.$" -SootopolisCity_Gym_B1F_Text_DaphnePreBattle: @ 8225ED6 +SootopolisCity_Gym_B1F_Text_DaphneIntro: @ 8225ED6 .string "The sight of JUAN conducting\n" .string "a battle…\p" .string "The very beauty of it compelled me to\n" @@ -91,7 +91,7 @@ SootopolisCity_Gym_B1F_Text_DaphnePostBattle: @ 8225F67 .string "Oh… I'm so fortunate to have found\n" .string "POKéMON.$" -SootopolisCity_Gym_B1F_Text_ConniePreBattle: @ 8225FBE +SootopolisCity_Gym_B1F_Text_ConnieIntro: @ 8225FBE .string "I should teach you how harsh battles\n" .string "can be.$" @@ -104,7 +104,7 @@ SootopolisCity_Gym_B1F_Text_ConniePostBattle: @ 8225FFE .string "If you want to reach JUAN, you\n" .string "need to walk on each floor tile once.$" -SootopolisCity_Gym_B1F_Text_BridgetPreBattle: @ 8226061 +SootopolisCity_Gym_B1F_Text_BridgetIntro: @ 8226061 .string "The POKéMON GYM of the highest level\n" .string "in the HOENN region…\p" .string "That's the SOOTOPOLIS GYM.$" @@ -118,7 +118,7 @@ SootopolisCity_Gym_B1F_Text_BridgetPostBattle: @ 82260D1 .string "other places will make you stronger.\l" .string "But above all, it looks more fun.$" -SootopolisCity_Gym_B1F_Text_OliviaPreBattle: @ 8226164 +SootopolisCity_Gym_B1F_Text_OliviaIntro: @ 8226164 .string "I train my POKéMON together with\n" .string "JUAN.\p" .string "Don't think I'm a pushover.$" @@ -130,7 +130,7 @@ SootopolisCity_Gym_B1F_Text_OliviaPostBattle: @ 82261B5 .string "I think you have potential.\n" .string "Why don't you stay and train with us?$" -SootopolisCity_Gym_B1F_Text_TiffanyPreBattle: @ 82261F7 +SootopolisCity_Gym_B1F_Text_TiffanyIntro: @ 82261F7 .string "A graceful glide across the ice while\n" .string "crossing no lines…\p" .string "A TRAINER putting on that performance\n" @@ -144,7 +144,7 @@ SootopolisCity_Gym_B1F_Text_TiffanyPostBattle: @ 8226286 .string "you are as a TRAINER has nothing to do\l" .string "with how young or old you are.$" -SootopolisCity_Gym_B1F_Text_BethanyPreBattle: @ 82262F3 +SootopolisCity_Gym_B1F_Text_BethanyIntro: @ 82262F3 .string "When I'm with my POKéMON, the time\n" .string "flies by before you can say, “Oops!”$" @@ -155,7 +155,7 @@ SootopolisCity_Gym_B1F_Text_BethanyPostBattle: @ 8226341 .string "I wish I could forget about lost causes\n" .string "before I can manage an “Oops!”$" -SootopolisCity_Gym_B1F_Text_AnnikaPreBattle: @ 8226388 +SootopolisCity_Gym_B1F_Text_AnnikaIntro: @ 8226388 .string "I can battle with really rare POKéMON\n" .string "if you'd like.$" @@ -169,7 +169,7 @@ SootopolisCity_Gym_B1F_Text_AnnikaPostBattle: @ 82263F4 .string "Oh, if only I'd met JUAN years ago\n" .string "when I was younger…$" -SootopolisCity_Gym_B1F_Text_BriannaPreBattle: @ 822646E +SootopolisCity_Gym_B1F_Text_BriannaIntro: @ 822646E .string "Giggle…\n" .string "Your grim look is so charming.$" diff --git a/data/scripts/cable_club.inc b/data/scripts/cable_club.inc index 1081af8f9..ff0482619 100644 --- a/data/scripts/cable_club.inc +++ b/data/scripts/cable_club.inc @@ -525,7 +525,7 @@ CableClub_EventScript_RecordCorner:: @ 82771DB goto_if_eq CableClub_EventScript_AbortLink message gText_PleaseWaitForLink waitmessage - special sub_80B2E74 + special TryRecordMixLinkup waitstate special sub_80B2EA8 waitstate diff --git a/data/scripts/gabby_and_ty.inc b/data/scripts/gabby_and_ty.inc index 98faa4748..dfe8780e7 100644 --- a/data/scripts/gabby_and_ty.inc +++ b/data/scripts/gabby_and_ty.inc @@ -149,61 +149,61 @@ GabbyAndTy_EventScript_TyBattle1:: @ 828CDF6 end GabbyAndTy_EventScript_GabbyBattle2:: @ 828CE16 - trainerbattle_double TRAINER_GABBY_AND_TY_2, GabbyAndTy_Text_GabbyPreBattle, GabbyAndTy_Text_GabbyDefeat, GabbyAndTy_Text_GabbyNotEnoughMons, GabbyAndTy_EventScript_RequestInterview + trainerbattle_double TRAINER_GABBY_AND_TY_2, GabbyAndTy_Text_GabbyIntro, GabbyAndTy_Text_GabbyDefeat, GabbyAndTy_Text_GabbyNotEnoughMons, GabbyAndTy_EventScript_RequestInterview msgbox GabbyAndTy_Text_KeepingAnEyeOutForYou, MSGBOX_DEFAULT release end GabbyAndTy_EventScript_TyBattle2:: @ 828CE36 - trainerbattle_double TRAINER_GABBY_AND_TY_2, GabbyAndTy_Text_TyPreBattle, GabbyAndTy_Text_TyDefeat, GabbyAndTy_Text_TyNotEnoughMons, GabbyAndTy_EventScript_RequestInterview + trainerbattle_double TRAINER_GABBY_AND_TY_2, GabbyAndTy_Text_TyIntro, GabbyAndTy_Text_TyDefeat, GabbyAndTy_Text_TyNotEnoughMons, GabbyAndTy_EventScript_RequestInterview msgbox GabbyAndTy_Text_TyPostBattle, MSGBOX_DEFAULT release end GabbyAndTy_EventScript_GabbyBattle3:: @ 828CE56 - trainerbattle_double TRAINER_GABBY_AND_TY_3, GabbyAndTy_Text_GabbyPreBattle, GabbyAndTy_Text_GabbyDefeat, GabbyAndTy_Text_GabbyNotEnoughMons, GabbyAndTy_EventScript_RequestInterview + trainerbattle_double TRAINER_GABBY_AND_TY_3, GabbyAndTy_Text_GabbyIntro, GabbyAndTy_Text_GabbyDefeat, GabbyAndTy_Text_GabbyNotEnoughMons, GabbyAndTy_EventScript_RequestInterview msgbox GabbyAndTy_Text_KeepingAnEyeOutForYou, MSGBOX_DEFAULT release end GabbyAndTy_EventScript_TyBattle3:: @ 828CE76 - trainerbattle_double TRAINER_GABBY_AND_TY_3, GabbyAndTy_Text_TyPreBattle, GabbyAndTy_Text_TyDefeat, GabbyAndTy_Text_TyNotEnoughMons, GabbyAndTy_EventScript_RequestInterview + trainerbattle_double TRAINER_GABBY_AND_TY_3, GabbyAndTy_Text_TyIntro, GabbyAndTy_Text_TyDefeat, GabbyAndTy_Text_TyNotEnoughMons, GabbyAndTy_EventScript_RequestInterview msgbox GabbyAndTy_Text_TyPostBattle, MSGBOX_DEFAULT release end GabbyAndTy_EventScript_GabbyBattle4:: @ 828CE96 - trainerbattle_double TRAINER_GABBY_AND_TY_4, GabbyAndTy_Text_GabbyPreBattle, GabbyAndTy_Text_GabbyDefeat, GabbyAndTy_Text_GabbyNotEnoughMons, GabbyAndTy_EventScript_RequestInterview + trainerbattle_double TRAINER_GABBY_AND_TY_4, GabbyAndTy_Text_GabbyIntro, GabbyAndTy_Text_GabbyDefeat, GabbyAndTy_Text_GabbyNotEnoughMons, GabbyAndTy_EventScript_RequestInterview msgbox GabbyAndTy_Text_KeepingAnEyeOutForYou, MSGBOX_DEFAULT release end GabbyAndTy_EventScript_TyBattle4:: @ 828CEB6 - trainerbattle_double TRAINER_GABBY_AND_TY_4, GabbyAndTy_Text_TyPreBattle, GabbyAndTy_Text_TyDefeat, GabbyAndTy_Text_TyNotEnoughMons, GabbyAndTy_EventScript_RequestInterview + trainerbattle_double TRAINER_GABBY_AND_TY_4, GabbyAndTy_Text_TyIntro, GabbyAndTy_Text_TyDefeat, GabbyAndTy_Text_TyNotEnoughMons, GabbyAndTy_EventScript_RequestInterview msgbox GabbyAndTy_Text_TyPostBattle, MSGBOX_DEFAULT release end GabbyAndTy_EventScript_GabbyBattle5:: @ 828CED6 - trainerbattle_double TRAINER_GABBY_AND_TY_5, GabbyAndTy_Text_GabbyPreBattle, GabbyAndTy_Text_GabbyDefeat, GabbyAndTy_Text_GabbyNotEnoughMons, GabbyAndTy_EventScript_RequestInterview + trainerbattle_double TRAINER_GABBY_AND_TY_5, GabbyAndTy_Text_GabbyIntro, GabbyAndTy_Text_GabbyDefeat, GabbyAndTy_Text_GabbyNotEnoughMons, GabbyAndTy_EventScript_RequestInterview msgbox GabbyAndTy_Text_KeepingAnEyeOutForYou, MSGBOX_DEFAULT release end GabbyAndTy_EventScript_TyBattle5:: @ 828CEF6 - trainerbattle_double TRAINER_GABBY_AND_TY_5, GabbyAndTy_Text_TyPreBattle, GabbyAndTy_Text_TyDefeat, GabbyAndTy_Text_TyNotEnoughMons, GabbyAndTy_EventScript_RequestInterview + trainerbattle_double TRAINER_GABBY_AND_TY_5, GabbyAndTy_Text_TyIntro, GabbyAndTy_Text_TyDefeat, GabbyAndTy_Text_TyNotEnoughMons, GabbyAndTy_EventScript_RequestInterview msgbox GabbyAndTy_Text_TyPostBattle, MSGBOX_DEFAULT release end GabbyAndTy_EventScript_GabbyBattle6:: @ 828CF16 - trainerbattle_double TRAINER_GABBY_AND_TY_6, GabbyAndTy_Text_GabbyPreBattle, GabbyAndTy_Text_GabbyDefeat, GabbyAndTy_Text_GabbyNotEnoughMons, GabbyAndTy_EventScript_RequestInterview + trainerbattle_double TRAINER_GABBY_AND_TY_6, GabbyAndTy_Text_GabbyIntro, GabbyAndTy_Text_GabbyDefeat, GabbyAndTy_Text_GabbyNotEnoughMons, GabbyAndTy_EventScript_RequestInterview msgbox GabbyAndTy_Text_KeepingAnEyeOutForYou, MSGBOX_DEFAULT release end GabbyAndTy_EventScript_TyBattle6:: @ 828CF36 - trainerbattle_double TRAINER_GABBY_AND_TY_6, GabbyAndTy_Text_TyPreBattle, GabbyAndTy_Text_TyDefeat, GabbyAndTy_Text_TyNotEnoughMons, GabbyAndTy_EventScript_RequestInterview + trainerbattle_double TRAINER_GABBY_AND_TY_6, GabbyAndTy_Text_TyIntro, GabbyAndTy_Text_TyDefeat, GabbyAndTy_Text_TyNotEnoughMons, GabbyAndTy_EventScript_RequestInterview msgbox GabbyAndTy_Text_TyPostBattle, MSGBOX_DEFAULT release end diff --git a/data/scripts/mystery_event_club.inc b/data/scripts/mystery_event_club.inc index 6687bbd47..16e9a657f 100644 --- a/data/scripts/mystery_event_club.inc +++ b/data/scripts/mystery_event_club.inc @@ -41,7 +41,7 @@ MysteryEventClub_EventScript_CancelShowProfile:: @ 82915CB MysteryEventClub_EventScript_ShowProfile:: @ 82915D5 setvar VAR_0x8004, 0 - special sub_811EECC + special ShowEasyChatProfile waitmessage delay 80 msgbox MysteryEventClub_Text_FantasticProfile, MSGBOX_DEFAULT diff --git a/data/scripts/secret_base.inc b/data/scripts/secret_base.inc index 523eef39b..cf582bba5 100644 --- a/data/scripts/secret_base.inc +++ b/data/scripts/secret_base.inc @@ -346,7 +346,7 @@ SecretBase_EventScript_Trainer0:: @ 8275DD6 goto_if_unset FLAG_SYS_GAME_CLEAR, SecretBase_EventScript_Trainer0PreChampion compare VAR_RESULT, 1 goto_if_eq SecretBase_EventScript_Trainer0PostBattle - msgbox SecretBase_Text_Trainer0PreBattle, MSGBOX_YESNO + msgbox SecretBase_Text_Trainer0Intro, MSGBOX_YESNO compare VAR_RESULT, NO goto_if_eq SecretBase_EventScript_Trainer0DeclineBattle setvar VAR_RESULT, 1 @@ -364,7 +364,7 @@ SecretBase_EventScript_Trainer0PreChampion:: @ 8275E25 end SecretBase_EventScript_Trainer0DeclineBattle:: @ 8275E2F - special sub_80EB300 + special DeclinedSecretBaseBattle setvar VAR_RESULT, 0 special SetBattledOwnerFromResult msgbox SecretBase_Text_Trainer0DeclineBattle, MSGBOX_DEFAULT @@ -383,7 +383,7 @@ SecretBase_EventScript_Trainer1:: @ 8275E4E goto_if_unset FLAG_SYS_GAME_CLEAR, SecretBase_EventScript_Trainer1PreChampion compare VAR_RESULT, 1 goto_if_eq SecretBase_EventScript_Trainer1PostBattle - msgbox SecretBase_Text_Trainer1PreBattle, MSGBOX_YESNO + msgbox SecretBase_Text_Trainer1Intro, MSGBOX_YESNO compare VAR_RESULT, NO goto_if_eq SecretBase_EventScript_Trainer1DeclineBattle setvar VAR_RESULT, 1 @@ -401,7 +401,7 @@ SecretBase_EventScript_Trainer1PreChampion:: @ 8275E9D end SecretBase_EventScript_Trainer1DeclineBattle:: @ 8275EA7 - special sub_80EB300 + special DeclinedSecretBaseBattle setvar VAR_RESULT, 0 special SetBattledOwnerFromResult msgbox SecretBase_Text_Trainer1DeclineBattle, MSGBOX_DEFAULT @@ -420,7 +420,7 @@ SecretBase_EventScript_Trainer2:: @ 8275EC6 goto_if_unset FLAG_SYS_GAME_CLEAR, SecretBase_EventScript_Trainer2PreChampion compare VAR_RESULT, 1 goto_if_eq SecretBase_EventScript_Trainer2PostBattle - msgbox SecretBase_Text_Trainer2PreBattle, MSGBOX_YESNO + msgbox SecretBase_Text_Trainer2Intro, MSGBOX_YESNO compare VAR_RESULT, NO goto_if_eq SecretBase_EventScript_Trainer2DeclineBattle setvar VAR_RESULT, 1 @@ -438,7 +438,7 @@ SecretBase_EventScript_Trainer2PreChampion:: @ 8275F15 end SecretBase_EventScript_Trainer2DeclineBattle:: @ 8275F1F - special sub_80EB300 + special DeclinedSecretBaseBattle setvar VAR_RESULT, 0 special SetBattledOwnerFromResult msgbox SecretBase_Text_Trainer2DeclineBattle, MSGBOX_DEFAULT @@ -457,7 +457,7 @@ SecretBase_EventScript_Trainer3:: @ 8275F3E goto_if_unset FLAG_SYS_GAME_CLEAR, SecretBase_EventScript_Trainer3PreChampion compare VAR_RESULT, 1 goto_if_eq SecretBase_EventScript_Trainer3PostBattle - msgbox SecretBase_Text_Trainer3PreBattle, MSGBOX_YESNO + msgbox SecretBase_Text_Trainer3Intro, MSGBOX_YESNO compare VAR_RESULT, NO goto_if_eq SecretBase_EventScript_Trainer3DeclineBattle setvar VAR_RESULT, 1 @@ -475,7 +475,7 @@ SecretBase_EventScript_Trainer3PreChampion:: @ 8275F8D end SecretBase_EventScript_Trainer3DeclineBattle:: @ 8275F97 - special sub_80EB300 + special DeclinedSecretBaseBattle setvar VAR_RESULT, 0 special SetBattledOwnerFromResult msgbox SecretBase_Text_Trainer3DeclineBattle, MSGBOX_DEFAULT @@ -494,7 +494,7 @@ SecretBase_EventScript_Trainer4:: @ 8275FB6 goto_if_unset FLAG_SYS_GAME_CLEAR, SecretBase_EventScript_Trainer4PreChampion compare VAR_RESULT, 1 goto_if_eq SecretBase_EventScript_Trainer4PostBattle - msgbox SecretBase_Text_Trainer4PreBattle, MSGBOX_YESNO + msgbox SecretBase_Text_Trainer4Intro, MSGBOX_YESNO compare VAR_RESULT, NO goto_if_eq SecretBase_EventScript_Trainer4DeclineBattle setvar VAR_RESULT, 1 @@ -512,7 +512,7 @@ SecretBase_EventScript_Trainer4PreChampion:: @ 8276005 end SecretBase_EventScript_Trainer4DeclineBattle:: @ 827600F - special sub_80EB300 + special DeclinedSecretBaseBattle setvar VAR_RESULT, 0 special SetBattledOwnerFromResult msgbox SecretBase_Text_Trainer4DeclineBattle, MSGBOX_DEFAULT @@ -531,7 +531,7 @@ SecretBase_EventScript_Trainer5:: @ 827602E goto_if_unset FLAG_SYS_GAME_CLEAR, SecretBase_EventScript_Trainer5PreChampion compare VAR_RESULT, 1 goto_if_eq SecretBase_EventScript_Trainer5PostBattle - msgbox SecretBase_Text_Trainer5PreBattle, MSGBOX_YESNO + msgbox SecretBase_Text_Trainer5Intro, MSGBOX_YESNO compare VAR_RESULT, NO goto_if_eq SecretBase_EventScript_Trainer5DeclineBattle setvar VAR_RESULT, 1 @@ -549,7 +549,7 @@ SecretBase_EventScript_Trainer5PreChampion:: @ 827607D end SecretBase_EventScript_Trainer5DeclineBattle:: @ 8276087 - special sub_80EB300 + special DeclinedSecretBaseBattle setvar VAR_RESULT, 0 special SetBattledOwnerFromResult msgbox SecretBase_Text_Trainer5DeclineBattle, MSGBOX_DEFAULT @@ -568,7 +568,7 @@ SecretBase_EventScript_Trainer6:: @ 82760A6 goto_if_unset FLAG_SYS_GAME_CLEAR, SecretBase_EventScript_Trainer6PreChampion compare VAR_RESULT, 1 goto_if_eq SecretBase_EventScript_Trainer6PostBattle - msgbox SecretBase_Text_Trainer6PreBattle, MSGBOX_YESNO + msgbox SecretBase_Text_Trainer6Intro, MSGBOX_YESNO compare VAR_RESULT, NO goto_if_eq SecretBase_EventScript_Trainer6DeclineBattle setvar VAR_RESULT, 1 @@ -586,7 +586,7 @@ SecretBase_EventScript_Trainer6PreChampion:: @ 82760F5 end SecretBase_EventScript_Trainer6DeclineBattle:: @ 82760FF - special sub_80EB300 + special DeclinedSecretBaseBattle setvar VAR_RESULT, 0 special SetBattledOwnerFromResult msgbox SecretBase_Text_Trainer6DeclineBattle, MSGBOX_DEFAULT @@ -605,7 +605,7 @@ SecretBase_EventScript_Trainer7:: @ 827611E goto_if_unset FLAG_SYS_GAME_CLEAR, SecretBase_EventScript_Trainer7PreChampion compare VAR_RESULT, 1 goto_if_eq SecretBase_EventScript_Trainer7PostBattle - msgbox SecretBase_Text_Trainer7PreBattle, MSGBOX_YESNO + msgbox SecretBase_Text_Trainer7Intro, MSGBOX_YESNO compare VAR_RESULT, NO goto_if_eq SecretBase_EventScript_Trainer7DeclineBattle setvar VAR_RESULT, 1 @@ -623,7 +623,7 @@ SecretBase_EventScript_Trainer7PreChampion:: @ 827616D end SecretBase_EventScript_Trainer7DeclineBattle:: @ 8276177 - special sub_80EB300 + special DeclinedSecretBaseBattle setvar VAR_RESULT, 0 special SetBattledOwnerFromResult msgbox SecretBase_Text_Trainer7DeclineBattle, MSGBOX_DEFAULT @@ -642,7 +642,7 @@ SecretBase_EventScript_Trainer8:: @ 8276196 goto_if_unset FLAG_SYS_GAME_CLEAR, SecretBase_EventScript_Trainer8PreChampion compare VAR_RESULT, 1 goto_if_eq SecretBase_EventScript_Trainer8PostBattle - msgbox SecretBase_Text_Trainer8PreBattle, MSGBOX_YESNO + msgbox SecretBase_Text_Trainer8Intro, MSGBOX_YESNO compare VAR_RESULT, NO goto_if_eq SecretBase_EventScript_Trainer8DeclineBattle setvar VAR_RESULT, 1 @@ -660,7 +660,7 @@ SecretBase_EventScript_Trainer8PreChampion:: @ 82761E5 end SecretBase_EventScript_Trainer8DeclineBattle:: @ 82761EF - special sub_80EB300 + special DeclinedSecretBaseBattle setvar VAR_RESULT, 0 special SetBattledOwnerFromResult msgbox SecretBase_Text_Trainer8DeclineBattle, MSGBOX_DEFAULT @@ -679,7 +679,7 @@ SecretBase_EventScript_Trainer9:: @ 827620E goto_if_unset FLAG_SYS_GAME_CLEAR, SecretBase_EventScript_Trainer9PreChampion compare VAR_RESULT, 1 goto_if_eq SecretBase_EventScript_Trainer9PostBattle - msgbox SecretBase_Text_Trainer9PreBattle, MSGBOX_YESNO + msgbox SecretBase_Text_Trainer9Intro, MSGBOX_YESNO compare VAR_RESULT, NO goto_if_eq SecretBase_EventScript_Trainer9DeclineBattle setvar VAR_RESULT, 1 @@ -697,7 +697,7 @@ SecretBase_EventScript_Trainer9PreChampion:: @ 827625D end SecretBase_EventScript_Trainer9DeclineBattle:: @ 8276267 - special sub_80EB300 + special DeclinedSecretBaseBattle setvar VAR_RESULT, 0 special SetBattledOwnerFromResult msgbox SecretBase_Text_Trainer9DeclineBattle, MSGBOX_DEFAULT @@ -716,35 +716,35 @@ SecretBase_EventScript_BattleTrainer:: @ 8276286 special DoSpecialTrainerBattle waitstate compare VAR_RESULT, B_OUTCOME_DREW - call_if_eq SecretBase_EventScript_2762BD + call_if_eq SecretBase_EventScript_DrewSecretBaseBattle compare VAR_RESULT, B_OUTCOME_WON - call_if_eq SecretBase_EventScript_2762C1 + call_if_eq SecretBase_EventScript_WonSecretBaseBattle compare VAR_RESULT, B_OUTCOME_LOST - call_if_eq SecretBase_EventScript_2762C5 + call_if_eq SecretBase_EventScript_LostSecretBaseBattle special HealPlayerParty release end -SecretBase_EventScript_2762BD:: @ 82762BD - special sub_80EB438 +SecretBase_EventScript_DrewSecretBaseBattle:: @ 82762BD + special DrewSecretBaseBattle return -SecretBase_EventScript_2762C1:: @ 82762C1 - special sub_80EB368 +SecretBase_EventScript_WonSecretBaseBattle:: @ 82762C1 + special WonSecretBaseBattle return -SecretBase_EventScript_2762C5:: @ 82762C5 - special sub_80EB3D0 +SecretBase_EventScript_LostSecretBaseBattle:: @ 82762C5 + special LostSecretBaseBattle return .include "data/scripts/secret_power_tm.inc" SecretBase_EventScript_DollInteract:: @ 82766A2 - special sub_80EB290 + special CheckInteractedWithFriendsDollDecor end SecretBase_EventScript_CushionInteract:: @ 82766A6 - special sub_80EB2C8 + special CheckInteractedWithFriendsCushionDecor end SecretBase_Text_AllDecorationsWillBeReturned: @ 82766AA diff --git a/data/scripts/shared_secret_base.inc b/data/scripts/shared_secret_base.inc index de5dcc703..0fa61a214 100644 --- a/data/scripts/shared_secret_base.inc +++ b/data/scripts/shared_secret_base.inc @@ -157,33 +157,33 @@ SecretBase_EventScript_PCTurnOff:: @ 823B66E end @ Unused -SecretBase_EventScript_23B674:: @ 823B674 - special SetSecretBaseSecretsTvFlags_Poster +SecretBase_EventScript_Poster:: @ 823B674 + special CheckInteractedWithFriendsPosterDecor end @ Unused -SecretBase_EventScript_23B678:: @ 823B678 - special SetSecretBaseSecretsTvFlags_MiscFurnature +SecretBase_EventScript_FurnitureBottom:: @ 823B678 + special CheckInteractedWithFriendsFurnitureBottom end @ Unused -SecretBase_EventScript_23B67C:: @ 823B67C - special SetSecretBaseSecretsTvFlags_LargeDecorationSpot +SecretBase_EventScript_FurnitureMiddle:: @ 823B67C + special CheckInteractedWithFriendsFurnitureMiddle end @ Unused -SecretBase_EventScript_23B680:: @ 823B680 - special SetSecretBaseSecretsTvFlags_SmallDecorationSpot +SecretBase_EventScript_FurnitureTop:: @ 823B680 + special CheckInteractedWithFriendsFurnitureTop end SecretBase_EventScript_SandOrnament:: @ 823B684 - special SetSecretBaseSecretsTvFlags_SandOrnament + special CheckInteractedWithFriendsSandOrnament dofieldeffect FLDEFF_SAND_PILLAR waitstate end SecretBase_EventScript_ShieldOrToyTV:: @ 823B68C - special GetShieldToyTVDecorationInfo + special InteractWithShieldOrTVDecoration compare VAR_RESULT, 0 goto_if_eq SecretBase_EventScript_BattleTowerShield compare VAR_RESULT, 1 diff --git a/data/specials.inc b/data/specials.inc index afc95e856..b3149f3ed 100644 --- a/data/specials.inc +++ b/data/specials.inc @@ -28,7 +28,7 @@ gSpecials:: @ 81DBA64 def_special GetSecretBaseOwnerAndState def_special InitSecretBaseDecorationSprites def_special SetDecoration - def_special sub_81297AC + def_special GetEventObjectLocalIdByFlag def_special GetSecretBaseTypeInFrontOfPlayer def_special SetSecretBaseOwnerGfxId def_special sub_8129708 @@ -38,13 +38,13 @@ gSpecials:: @ 81DBA64 def_special RecordMixingPlayerSpotTriggered def_special TryBattleLinkup def_special TryTradeLinkup - def_special sub_80B2E74 + def_special TryRecordMixLinkup def_special sub_80B2EA8 def_special CloseLink def_special ColosseumPlayerSpotTriggered def_special PlayerEnteredTradeSeat def_special nullsub_37 - def_special sub_80B3254 + def_special CableClubSaveGame def_special TryBerryBlenderLinkup def_special GetLinkPartnerNames def_special SpawnLinkPartnerObjectEvent @@ -107,7 +107,7 @@ gSpecials:: @ 81DBA64 def_special SaveGame def_special DoWateringBerryTreeAnim def_special ShowEasyChatScreen - def_special sub_811EECC + def_special ShowEasyChatProfile def_special ScrSpecial_GetCurrentMauvilleMan def_special ScrSpecial_HasBardSongBeenChanged def_special ScrSpecial_SaveBardSongLyrics @@ -139,7 +139,7 @@ gSpecials:: @ 81DBA64 def_special IsMonOTIDNotPlayers def_special BufferTrendyPhraseString def_special TrendyPhraseIsOld - def_special sub_811EF6C + def_special BufferDeepLinkPhrase def_special GetDewfordHallPaintingNameIndex def_special SwapRegisteredBike def_special CalculatePlayerPartyCount @@ -147,7 +147,7 @@ gSpecials:: @ 81DBA64 def_special CountPartyAliveNonEggMons_IgnoreVar0x8004Slot def_special ShouldReadyContestArtist def_special SaveMuseumContestPainting - def_special sub_80F8864 + def_special DoesContestCategoryHaveWinner def_special CountPlayerContestPaintings def_special ShowContestWinner def_special MauvilleGymSetDefaultBarriers @@ -271,8 +271,8 @@ gSpecials:: @ 81DBA64 def_special RetrieveLotteryNumber def_special PickLotteryCornerTicket def_special ShowBerryBlenderRecordWindow - def_special ResetTrickHouseEndRoomFlag - def_special SetTrickHouseEndRoomFlag + def_special ResetTrickHouseNuggetFlag + def_special SetTrickHouseNuggetFlag def_special ScriptMenu_CreatePCMultichoice def_special AccessHallOfFamePC def_special Special_ShowDiploma @@ -317,7 +317,7 @@ gSpecials:: @ 81DBA64 def_special ScriptCheckFreePokemonStorageSpace def_special DoSealedChamberShakingEffect1 def_special ShowDeptStoreElevatorFloorSelect - def_special GetShieldToyTVDecorationInfo + def_special InteractWithShieldOrTVDecoration def_special IsPokerusInParty def_special SetSootopolisGymCrackedIceMetatiles def_special ShakeCamera @@ -348,7 +348,7 @@ gSpecials:: @ 81DBA64 def_special HasAllHoennMons def_special MonOTNameNotPlayer def_special BufferLottoTicketNumber - def_special sub_81653CC + def_special TryHideBattleTowerReporter def_special DoesPartyHaveEnigmaBerry def_special ScriptRandom def_special SetChampionSaveWarp @@ -361,17 +361,17 @@ gSpecials:: @ 81DBA64 def_special IncrementDailyPlantedBerries def_special IncrementDailyPickedBerries def_special InitSecretBaseVars - def_special SetSecretBaseSecretsTvFlags_SandOrnament - def_special sub_80EB300 - def_special sub_80EB438 - def_special sub_80EB368 - def_special sub_80EB3D0 - def_special sub_80EB290 - def_special sub_80EB2C8 - def_special SetSecretBaseSecretsTvFlags_MiscFurnature - def_special SetSecretBaseSecretsTvFlags_LargeDecorationSpot - def_special SetSecretBaseSecretsTvFlags_SmallDecorationSpot - def_special SetSecretBaseSecretsTvFlags_Poster + def_special CheckInteractedWithFriendsSandOrnament + def_special DeclinedSecretBaseBattle + def_special DrewSecretBaseBattle + def_special WonSecretBaseBattle + def_special LostSecretBaseBattle + def_special CheckInteractedWithFriendsDollDecor + def_special CheckInteractedWithFriendsCushionDecor + def_special CheckInteractedWithFriendsFurnitureBottom + def_special CheckInteractedWithFriendsFurnitureMiddle + def_special CheckInteractedWithFriendsFurnitureTop + def_special CheckInteractedWithFriendsPosterDecor def_special SetLilycoveLadyGfx def_special Script_GetLilycoveLadyId def_special GetFavorLadyState @@ -444,7 +444,7 @@ gSpecials:: @ 81DBA64 def_special GetDeptStoreDefaultFloorChoice def_special BufferVarsForIVRater def_special LinkContestWaitForConnection - def_special sub_800B518 + def_special GetWirelessCommType def_special LinkContestTryShowWirelessIndicator def_special LinkContestTryHideWirelessIndicator def_special IsWirelessContest @@ -498,7 +498,7 @@ gSpecials:: @ 81DBA64 def_special GetPCBoxToSendMon def_special ShouldShowBoxWasFullMessage def_special SetMatchCallRegisteredFlag - def_special sub_8175280 + def_special DoConfettiEffect def_special CreateAbnormalWeatherEvent def_special GetAbnormalWeatherMapNameAndType def_special GetMartEmployeeObjectEventId @@ -534,4 +534,4 @@ gSpecials:: @ 81DBA64 def_special TryPrepareSecondApproachingTrainer def_special RemoveRecordsWindow def_special CloseDeptStoreElevatorWindow - def_special sub_80B3BC4 + def_special TrySetBattleTowerLinkType diff --git a/data/text/battle_dome.inc b/data/text/battle_dome.inc index a9b2895e1..8a26ff5ff 100644 --- a/data/text/battle_dome.inc +++ b/data/text/battle_dome.inc @@ -1,341 +1,341 @@ -gBattleDomeOpponentPotentialText1:: +BattleDome_Text_Potential1:: .string "The best candidate to be a champ!$" -gBattleDomeOpponentPotentialText2:: +BattleDome_Text_Potential2:: .string "A sure-finalist team.$" -gBattleDomeOpponentPotentialText3:: +BattleDome_Text_Potential3:: .string "A likely top-three finisher.$" -gBattleDomeOpponentPotentialText4:: +BattleDome_Text_Potential4:: .string "A candidate to finish first.$" -gBattleDomeOpponentPotentialText5:: +BattleDome_Text_Potential5:: .string "A team with top-class potential.$" -gBattleDomeOpponentPotentialText6:: +BattleDome_Text_Potential6:: .string "The dark horse team this tournament.$" -gBattleDomeOpponentPotentialText7:: +BattleDome_Text_Potential7:: .string "A better-than-average team.$" -gBattleDomeOpponentPotentialText8:: +BattleDome_Text_Potential8:: .string "This tournament's average team.$" -gBattleDomeOpponentPotentialText9:: +BattleDome_Text_Potential9:: .string "A team with average potential.$" -gBattleDomeOpponentPotentialText10:: +BattleDome_Text_Potential10:: .string "A weaker-than-average team.$" -gBattleDomeOpponentPotentialText11:: +BattleDome_Text_Potential11:: .string "A team looking for its first win.$" -gBattleDomeOpponentPotentialText12:: +BattleDome_Text_Potential12:: .string "One win will make this team proud.$" -gBattleDomeOpponentPotentialText13:: +BattleDome_Text_Potential13:: .string "Overall, a weak team.$" -gBattleDomeOpponentPotentialText14:: +BattleDome_Text_Potential14:: .string "A team with very low potential.$" -gBattleDomeOpponentPotentialText15:: +BattleDome_Text_Potential15:: .string "A team unlikely to win the tournament.$" -gBattleDomeOpponentPotentialText16:: +BattleDome_Text_Potential16:: .string "The team most unlikely to win.$" -gBattleDomeOpponentPotentialText17:: +BattleDome_Text_PotentialDomeAceTucker:: .string "The perfect, invincible superstar!$" -gBattleDomeOpponentStyleText1:: +BattleDome_Text_StyleRiskDisaster:: .string "Willing to risk total disaster at times.$" -gBattleDomeOpponentStyleText2:: +BattleDome_Text_StyleEndureLongBattles:: .string "Skilled at enduring long battles.$" -gBattleDomeOpponentStyleText3:: +BattleDome_Text_StyleVariesTactics:: .string "Varies tactics to suit the opponent.$" -gBattleDomeOpponentStyleText4:: +BattleDome_Text_StyleToughWinningPattern:: .string "Has a tough winning pattern.$" -gBattleDomeOpponentStyleText5:: +BattleDome_Text_StyleUsesVeryRareMove:: .string "Occasionally uses a very rare move.$" -gBattleDomeOpponentStyleText6:: +BattleDome_Text_StyleUsesStartlingMoves:: .string "Uses startling and disruptive moves.$" -gBattleDomeOpponentStyleText7:: +BattleDome_Text_StyleConstantlyWatchesHP:: .string "Constantly watches HP in battle.$" -gBattleDomeOpponentStyleText8:: +BattleDome_Text_StyleStoresAndLoosesPower:: .string "Good at storing then loosing power.$" -gBattleDomeOpponentStyleText9:: +BattleDome_Text_StyleEnfeeblesFoes:: .string "Skilled at enfeebling foes.$" -gBattleDomeOpponentStyleText10:: +BattleDome_Text_StylePrefersLuckTactics:: .string "Prefers tactics that rely on luck.$" -gBattleDomeOpponentStyleText11:: +BattleDome_Text_StyleRegalAtmosphere:: .string "Attacks with a regal atmosphere.$" -gBattleDomeOpponentStyleText12:: +BattleDome_Text_StylePowerfulLowPPMoves:: .string "Attacks with powerful, low-PP moves.$" -gBattleDomeOpponentStyleText13:: +BattleDome_Text_StyleEnfeebleThenAttack:: .string "Skilled at enfeebling, then attacking.$" -gBattleDomeOpponentStyleText14:: +BattleDome_Text_StyleBattlesWhileEnduring:: .string "Battles while enduring all attacks.$" -gBattleDomeOpponentStyleText15:: +BattleDome_Text_StyleUpsetsFoesEmotionally:: .string "Skilled at upsetting foes emotionally.$" -gBattleDomeOpponentStyleText16:: +BattleDome_Text_StyleStrongAndStraightforward:: .string "Uses strong and straightforward moves.$" -gBattleDomeOpponentStyleText17:: +BattleDome_Text_StyleAggressivelyStrongMoves:: .string "Aggressively uses strong moves.$" -gBattleDomeOpponentStyleText18:: +BattleDome_Text_StyleCleverlyDodgesAttacks:: .string "Battles while cleverly dodging attacks.$" -gBattleDomeOpponentStyleText19:: +BattleDome_Text_StyleUsesUpsettingMoves:: .string "Skilled at using upsetting attacks.$" -gBattleDomeOpponentStyleText20:: +BattleDome_Text_StyleUsesPopularMoves:: .string "Uses many popular moves.$" -gBattleDomeOpponentStyleText21:: +BattleDome_Text_StyleHasPowerfulComboMoves:: .string "Has moves for powerful combinations.$" -gBattleDomeOpponentStyleText22:: +BattleDome_Text_StyleUsesHighProbabilityMoves:: .string "Uses high-probability attacks.$" -gBattleDomeOpponentStyleText23:: +BattleDome_Text_StyleAggressivelySpectacularMoves:: .string "Aggressively uses spectacular moves.$" -gBattleDomeOpponentStyleText24:: +BattleDome_Text_StyleEmphasizesOffenseOverDefense:: .string "Emphasizes offense over defense.$" -gBattleDomeOpponentStyleText25:: +BattleDome_Text_StyleEmphasizesDefenseOverOffense:: .string "Emphasizes defense over offense.$" -gBattleDomeOpponentStyleText26:: +BattleDome_Text_StyleAttacksQuicklyStrongMoves:: .string "Attacks quickly with strong moves.$" -gBattleDomeOpponentStyleText27:: +BattleDome_Text_StyleUsesAddedEffectMoves:: .string "Often uses moves with added effects.$" -gBattleDomeOpponentStyleText28:: +BattleDome_Text_StyleUsesBalancedMixOfMoves:: .string "Uses a well-balanced mix of moves.$" -gBattleDomeOpponentStyleTextUnused1:: +BattleDome_Text_StyleSampleMessage1:: .string "This is sample message 1.$" -gBattleDomeOpponentStyleTextUnused2:: +BattleDome_Text_StyleSampleMessage2:: .string "This is sample message 2.$" -gBattleDomeOpponentStyleTextUnused3:: +BattleDome_Text_StyleSampleMessage3:: .string "This is sample message 3.$" -gBattleDomeOpponentStyleTextUnused4:: +BattleDome_Text_StyleSampleMessage4:: .string "This is sample message 4.$" -gBattleDomeOpponentStatsText1:: +BattleDome_Text_EmphasizesHPAndAtk:: .string "Emphasizes HP and ATTACK.$" -gBattleDomeOpponentStatsText2:: +BattleDome_Text_EmphasizesHPAndDef:: .string "Emphasizes HP and DEFENSE.$" -gBattleDomeOpponentStatsText3:: +BattleDome_Text_EmphasizesHPAndSpeed:: .string "Emphasizes HP and SPEED.$" -gBattleDomeOpponentStatsText4:: +BattleDome_Text_EmphasizesHPAndSpAtk:: .string "Emphasizes HP and SP. ATTACK.$" -gBattleDomeOpponentStatsText5:: +BattleDome_Text_EmphasizesHPAndSpDef:: .string "Emphasizes HP and SP. DEFENSE.$" -gBattleDomeOpponentStatsText6:: +BattleDome_Text_EmphasizesAtkAndDef:: .string "Emphasizes ATTACK and DEFENSE.$" -gBattleDomeOpponentStatsText7:: +BattleDome_Text_EmphasizesAtkAndSpeed:: .string "Emphasizes ATTACK and SPEED.$" -gBattleDomeOpponentStatsText8:: +BattleDome_Text_EmphasizesAtkAndSpAtk:: .string "Emphasizes ATTACK and SP. ATTACK.$" -gBattleDomeOpponentStatsText9:: +BattleDome_Text_EmphasizesAtkAndSpDef:: .string "Emphasizes ATTACK and SP. DEFENSE.$" -gBattleDomeOpponentStatsText10:: +BattleDome_Text_EmphasizesDefAndSpeed:: .string "Emphasizes DEFENSE and SPEED.$" -gBattleDomeOpponentStatsText11:: +BattleDome_Text_EmphasizesDefAndSpAtk:: .string "Emphasizes DEFENSE and SP. ATTACK.$" -gBattleDomeOpponentStatsText12:: +BattleDome_Text_EmphasizesDefAndSpDef:: .string "Emphasizes DEFENSE and SP. DEFENSE.$" -gBattleDomeOpponentStatsText13:: +BattleDome_Text_EmphasizesSpeedAndSpAtk:: .string "Emphasizes SPEED and SP. ATTACK.$" -gBattleDomeOpponentStatsText14:: +BattleDome_Text_EmphasizesSpeedAndSpDef:: .string "Emphasizes SPEED and SP. DEFENSE.$" -gBattleDomeOpponentStatsText15:: +BattleDome_Text_EmphasizesSpAtkAndSpDef:: .string "Emphasizes SP. ATTACK and SP. DEFENSE.$" -gBattleDomeOpponentStatsText16:: +BattleDome_Text_EmphasizesHP:: .string "Emphasizes HP.$" -gBattleDomeOpponentStatsText17:: +BattleDome_Text_EmphasizesAtk:: .string "Emphasizes ATTACK.$" -gBattleDomeOpponentStatsText18:: +BattleDome_Text_EmphasizesDef:: .string "Emphasizes DEFENSE.$" -gBattleDomeOpponentStatsText19:: +BattleDome_Text_EmphasizesSpeed:: .string "Emphasizes SPEED.$" -gBattleDomeOpponentStatsText20:: +BattleDome_Text_EmphasizesSpAtk:: .string "Emphasizes SP. ATTACK.$" -gBattleDomeOpponentStatsText21:: +BattleDome_Text_EmphasizesSpDef:: .string "Emphasizes SP. DEFENSE.$" -gBattleDomeOpponentStatsText22:: +BattleDome_Text_NeglectsHPAndAtk:: .string "Neglects HP and ATTACK.$" -gBattleDomeOpponentStatsText23:: +BattleDome_Text_NeglectsHPAndDef:: .string "Neglects HP and DEFENSE.$" -gBattleDomeOpponentStatsText24:: +BattleDome_Text_NeglectsHPAndSpeed:: .string "Neglects HP and SPEED.$" -gBattleDomeOpponentStatsText25:: +BattleDome_Text_NeglectsHPAndSpAtk:: .string "Neglects HP and SP. ATTACK.$" -gBattleDomeOpponentStatsText26:: +BattleDome_Text_NeglectsHPAndSpDef:: .string "Neglects HP and SP. DEFENSE.$" -gBattleDomeOpponentStatsText27:: +BattleDome_Text_NeglectsAtkAndDef:: .string "Neglects ATTACK and DEFENSE.$" -gBattleDomeOpponentStatsText28:: +BattleDome_Text_NeglectsAtkAndSpeed:: .string "Neglects ATTACK and SPEED.$" -gBattleDomeOpponentStatsText29:: +BattleDome_Text_NeglectsAtkAndSpAtk:: .string "Neglects ATTACK and SP. ATTACK.$" -gBattleDomeOpponentStatsText30:: +BattleDome_Text_NeglectsAtkAndSpDef:: .string "Neglects ATTACK and SP. DEFENSE.$" -gBattleDomeOpponentStatsText31:: +BattleDome_Text_NeglectsDefAndSpeed:: .string "Neglects DEFENSE and SPEED.$" -gBattleDomeOpponentStatsText32:: +BattleDome_Text_NeglectsDefAndSpAtk:: .string "Neglects DEFENSE and SP. ATTACK.$" -gBattleDomeOpponentStatsText33:: +BattleDome_Text_NeglectsDefAndSpDef:: .string "Neglects DEFENSE and SP. DEFENSE.$" -gBattleDomeOpponentStatsText34:: +BattleDome_Text_NeglectsSpeedAndSpAtk:: .string "Neglects SPEED and SP. ATTACK.$" -gBattleDomeOpponentStatsText35:: +BattleDome_Text_NeglectsSpeedAndSpDef:: .string "Neglects SPEED and SP. DEFENSE.$" -gBattleDomeOpponentStatsText36:: +BattleDome_Text_NeglectsSpAtkAndSpDef:: .string "Neglects SP. ATTACK and SP. DEFENSE.$" -gBattleDomeOpponentStatsText37:: +BattleDome_Text_NeglectsHP:: .string "Neglects HP.$" -gBattleDomeOpponentStatsText38:: +BattleDome_Text_NeglectsAtk:: .string "Neglects ATTACK.$" -gBattleDomeOpponentStatsText39:: +BattleDome_Text_NeglectsDef:: .string "Neglects DEFENSE.$" -gBattleDomeOpponentStatsText40:: +BattleDome_Text_NeglectsSpeed:: .string "Neglects SPEED.$" -gBattleDomeOpponentStatsText41:: +BattleDome_Text_NeglectsSpAtk:: .string "Neglects SP. ATTACK.$" -gBattleDomeOpponentStatsText42:: +BattleDome_Text_NeglectsSpDef:: .string "Neglects SP. DEFENSE.$" -gBattleDomeOpponentStatsText43:: +BattleDome_Text_RaisesMonsWellBalanced:: .string "Raises POKéMON in a well-balanced way.$" -gBattleDomeWinText1:: +BattleDome_Text_LetTheBattleBegin:: .string "Let the battle begin!$" -gBattleDomeWinText2:: +BattleDome_Text_TrainerWonUsingMove:: .string "{STR_VAR_1} won using {STR_VAR_2}!$" -gBattleDomeWinText3:: +BattleDome_Text_TrainerBecameChamp:: .string "{STR_VAR_1} became the champ!$" -gBattleDomeWinText4:: +BattleDome_Text_TrainerWonByDefault:: .string "{STR_VAR_1} won by default!$" -gBattleDomeWinText5:: +BattleDome_Text_TrainerWonOutrightByDefault:: .string "{STR_VAR_1} won outright by default!$" -gBattleDomeWinText6:: +BattleDome_Text_TrainerWonNoMoves:: .string "{STR_VAR_1} won without using a move!$" -gBattleDomeWinText7:: +BattleDome_Text_TrainerWonOutrightNoMoves:: .string "{STR_VAR_1} won outright with no moves!$" -gBattleDomeMatchNumberText1:: +BattleDome_Text_Round1Match1:: .string "Round 1, Match 1$" -gBattleDomeMatchNumberText2:: +BattleDome_Text_Round1Match2:: .string "Round 1, Match 2$" -gBattleDomeMatchNumberText3:: +BattleDome_Text_Round1Match3:: .string "Round 1, Match 3$" -gBattleDomeMatchNumberText4:: +BattleDome_Text_Round1Match4:: .string "Round 1, Match 4$" -gBattleDomeMatchNumberText5:: +BattleDome_Text_Round1Match5:: .string "Round 1, Match 5$" -gBattleDomeMatchNumberText6:: +BattleDome_Text_Round1Match6:: .string "Round 1, Match 6$" -gBattleDomeMatchNumberText7:: +BattleDome_Text_Round1Match7:: .string "Round 1, Match 7$" -gBattleDomeMatchNumberText8:: +BattleDome_Text_Round1Match8:: .string "Round 1, Match 8$" -gBattleDomeMatchNumberText9:: +BattleDome_Text_Round2Match1:: .string "Round 2, Match 1$" -gBattleDomeMatchNumberText10:: +BattleDome_Text_Round2Match2:: .string "Round 2, Match 2$" -gBattleDomeMatchNumberText11:: +BattleDome_Text_Round2Match3:: .string "Round 2, Match 3$" -gBattleDomeMatchNumberText12:: +BattleDome_Text_Round2Match4:: .string "Round 2, Match 4$" -gBattleDomeMatchNumberText13:: +BattleDome_Text_SemifinalMatch1:: .string "Semifinal Match 1$" -gBattleDomeMatchNumberText14:: +BattleDome_Text_SemifinalMatch2:: .string "Semifinal Match 2$" -gBattleDomeMatchNumberText15:: +BattleDome_Text_FinalMatch:: .string "Final Match$" diff --git a/data/text/secret_base_trainers.inc b/data/text/secret_base_trainers.inc index 46ecaaec9..979aa4ff3 100644 --- a/data/text/secret_base_trainers.inc +++ b/data/text/secret_base_trainers.inc @@ -1,4 +1,4 @@ -SecretBase_Text_Trainer0PreBattle: @ 82748A0 +SecretBase_Text_Trainer0Intro: @ 82748A0 .string "Have you made a SECRET BASE already?\p" .string "I went here, there, everywhere before\n" .string "choosing this place.\p" @@ -27,7 +27,7 @@ SecretBase_Text_Trainer0PreChampion: @ 82749ED .string "choosing this place.\p" .string "Feel free to hang out!$" -SecretBase_Text_Trainer5PreBattle: @ 8274A64 +SecretBase_Text_Trainer5Intro: @ 8274A64 .string "There're a lot of places where\n" .string "you can make a SECRET BASE.\p" .string "But I like this spot best.\n" @@ -56,7 +56,7 @@ SecretBase_Text_Trainer5PreChampion: @ 8274BA2 .string "But I like this spot best.\n" .string "Don't you think it's nice?$" -SecretBase_Text_Trainer1PreBattle: @ 8274C13 +SecretBase_Text_Trainer1Intro: @ 8274C13 .string "This is a popular spot.\n" .string "It's always taken.\p" .string "Oh! Were you thinking about\n" @@ -86,7 +86,7 @@ SecretBase_Text_Trainer1PreChampion: @ 8274D69 .string "I waited a long time for it to open.\n" .string "I finally got to use it!$" -SecretBase_Text_Trainer6PreBattle: @ 8274DD2 +SecretBase_Text_Trainer6Intro: @ 8274DD2 .string "Welcome to my POKéMON LAB.\p" .string "I carry out research on battling in\n" .string "secrecy.\p" @@ -112,7 +112,7 @@ SecretBase_Text_Trainer6PreChampion: @ 8274EF1 .string "I carry out research on battling in\n" .string "secrecy.$" -SecretBase_Text_Trainer2PreBattle: @ 8274F39 +SecretBase_Text_Trainer2Intro: @ 8274F39 .string "A big mansion is nice, but I like this\n" .string "sort of place more.\p" .string "I like it because all kinds of people\n" @@ -141,7 +141,7 @@ SecretBase_Text_Trainer2PreChampion: @ 82750A4 .string "I like it because all kinds of people\n" .string "come visit me.$" -SecretBase_Text_Trainer7PreBattle: @ 8275114 +SecretBase_Text_Trainer7Intro: @ 8275114 .string "I simply adore shopping for decorations\n" .string "and furniture.\p" .string "I also love raising POKéMON just\n" @@ -170,7 +170,7 @@ SecretBase_Text_Trainer7PreChampion: @ 8275226 .string "I also love raising POKéMON just\n" .string "as much.$" -SecretBase_Text_Trainer3PreBattle: @ 8275287 +SecretBase_Text_Trainer3Intro: @ 8275287 .string "Some people make their SECRET BASES in\n" .string "hard-to-find places.\l" .string "Do they want to just lie low?\p" @@ -196,7 +196,7 @@ SecretBase_Text_Trainer3PreChampion: @ 82753AB .string "hard-to-find places.\l" .string "Do they want to just lie low?$" -SecretBase_Text_Trainer8PreBattle: @ 8275405 +SecretBase_Text_Trainer8Intro: @ 8275405 .string "People have told me that you can get\n" .string "decorations in several ways.\p" .string "We should have a race to see who can\n" @@ -224,7 +224,7 @@ SecretBase_Text_Trainer8PreChampion: @ 8275546 .string "We should have a race to see who can\n" .string "get nicer decorations and furniture!$" -SecretBase_Text_Trainer4PreBattle: @ 82755D2 +SecretBase_Text_Trainer4Intro: @ 82755D2 .string "I found a spot I liked, and I did it up\n" .string "with my favorite decorations.\p" .string "I raise my favorite POKéMON and grow\n" @@ -253,7 +253,7 @@ SecretBase_Text_Trainer4PreChampion: @ 827571E .string "stronger with it.\p" .string "Every day is a great day.$" -SecretBase_Text_Trainer9PreBattle: @ 82757B5 +SecretBase_Text_Trainer9Intro: @ 82757B5 .string "You can learn a lot about the taste\n" .string "and sense of people by the kinds of\l" .string "decorations they have, and how they\l" diff --git a/data/text/tv.inc b/data/text/tv.inc index c6453af0c..63a1eff65 100644 --- a/data/text/tv.inc +++ b/data/text/tv.inc @@ -2079,7 +2079,7 @@ gTVWhatsNo1InHoennTodayText08:: @ 0828858B .string "Viewers, take heart from {STR_VAR_1}!\n" .string "You, too, can be no. 1 every day!$" -gTVSecretBaseSecretsText00:: @ 08288608 +TVSecretBaseSecrets_Text_Intro:: @ 08288608 .string "SECRET BASE SECRETS!\p" .string "What do TRAINERS do in the secrecy\n" .string "of SECRET BASES?\p" @@ -2090,88 +2090,88 @@ gTVSecretBaseSecretsText00:: @ 08288608 .string "Let's have a peek!\p" .string "What will {STR_VAR_2} do?$" -gTVSecretBaseSecretsText01:: @ 082886C8 +TVSecretBaseSecrets_Text_WhatWillPlayerDoNext1:: @ 082886C8 .string "What will {STR_VAR_2} do next?$" -gTVSecretBaseSecretsText02:: @ 082886DE +TVSecretBaseSecrets_Text_WhatWillPlayerDoNext2:: @ 082886DE .string "And now, what will {STR_VAR_2} do?$" -gTVSecretBaseSecretsText03:: @ 082886F8 +TVSecretBaseSecrets_Text_TookXStepsBeforeLeaving:: @ 082886F8 .string "In the end, {STR_VAR_2} took {STR_VAR_3} steps\n" .string "in {STR_VAR_1}'s SECRET BASE before\l" .string "leaving.$" -gTVSecretBaseSecretsText04:: @ 08288739 +TVSecretBaseSecrets_Text_BaseFailedToInterestPlayer:: @ 08288739 .string "Hmm…\p" .string "It appears as if {STR_VAR_1}'s SECRET\n" .string "BASE failed to interest {STR_VAR_2}…$" -gTVSecretBaseSecretsText05:: @ 08288777 +TVSecretBaseSecrets_Text_PlayerEnjoyedBase:: @ 08288777 .string "{STR_VAR_2} appears to have enjoyed\n" .string "{STR_VAR_1}'s SECRET BASE thoroughly.$" -gTVSecretBaseSecretsText06:: @ 082887AF +TVSecretBaseSecrets_Text_PlayerHugeFanOfBase:: @ 082887AF .string "{STR_VAR_2} appears to have become\n" .string "a huge fan of {STR_VAR_1}'s\l" .string "SECRET BASE.$" -gTVSecretBaseSecretsText07:: @ 082887E9 +TVSecretBaseSecrets_Text_Outro:: @ 082887E9 .string "Viewers may want to check out\n" .string "{STR_VAR_1}'s SECRET BASE, too.\p" .string "Tune in next time as we visit another\n" .string "SECRET BASE! Thanks for joining us!$" -gTVSecretBaseSecretsText08:: @ 08288868 +TVSecretBaseSecrets_Text_StoppedMoving1:: @ 08288868 .string "The visitor has stopped!\p" .string "The visitor isn't moving at all!\p" .string "Was {STR_VAR_1}'s SECRET BASE\n" .string "that unimpressive?$" -gTVSecretBaseSecretsText09:: @ 082888CA +TVSecretBaseSecrets_Text_StoppedMoving2:: @ 082888CA .string "The visitor has stopped!\p" .string "The visitor isn't moving at all!\p" .string "Is it fatigue?\n" .string "Has the visitor grown weary?$" -gTVSecretBaseSecretsText10:: @ 08288930 +TVSecretBaseSecrets_Text_UsedChair:: @ 08288930 .string "The visitor sat down on a chair!\n" .string "The visitor is seated!\p" .string "Look at that look of delight!\p" .string "That chair must be very comfortable\n" .string "to get that response!$" -gTVSecretBaseSecretsText11:: @ 082889C0 +TVSecretBaseSecrets_Text_UsedBalloon:: @ 082889C0 .string "The visitor charged at a balloon!\p" .string "It burst!\n" .string "Oh, my goodness, it popped!\p" .string "The visitor appears startled by\n" .string "the sudden noise!$" -gTVSecretBaseSecretsText12:: @ 08288A3A +TVSecretBaseSecrets_Text_UsedTent:: @ 08288A3A .string "The visitor entered a TENT!\p" .string "The visitor is running around!\p" .string "Oh, my, the visitor is frolicking!\p" .string "The visitor appears surprised by\n" .string "the TENT's size!$" -gTVSecretBaseSecretsText13:: @ 08288ACA +TVSecretBaseSecrets_Text_UsedPlant:: @ 08288ACA .string "The visitor is examining\n" .string "a potted plant!\p" .string "The visitor has surprisingly\n" .string "mature taste!$" -gTVSecretBaseSecretsText14:: @ 08288B1E +TVSecretBaseSecrets_Text_UsedGoldShield:: @ 08288B1E .string "The visitor is examining\n" .string "a GOLD SHIELD!\p" .string "The visitor's eyes appear to be\n" .string "lit up with wonder!$" -gTVSecretBaseSecretsText15:: @ 08288B7A +TVSecretBaseSecrets_Text_UsedSilverShield:: @ 08288B7A .string "The visitor is examining\n" .string "a SILVER SHIELD!\p" .string "The visitor appears to be wide-eyed!$" -gTVSecretBaseSecretsText16:: @ 08288BC9 +TVSecretBaseSecrets_Text_UsedGlassOrnament:: @ 08288BC9 .string "The visitor is examining\n" .string "a GLASS ORNAMENT!\p" .string "Oh, no!\p" @@ -2179,15 +2179,15 @@ gTVSecretBaseSecretsText16:: @ 08288BC9 .string "It's getting covered with\n" .string "fingerprints…$" -gTVSecretBaseSecretsText17:: @ 08288C40 +TVSecretBaseSecrets_Text_UsedTV:: @ 08288C40 .string "The visitor is watching television!\p" .string "Looks like we have a big fan of TV!$" -gTVSecretBaseSecretsText18:: @ 08288C88 +TVSecretBaseSecrets_Text_UsedMudBall:: @ 08288C88 .string "The visitor stomped on a MUD BALL!\p" .string "The visitor looks delighted!$" -gTVSecretBaseSecretsText19:: @ 08288CC8 +TVSecretBaseSecrets_Text_UsedBag:: @ 08288CC8 .string "…Oh?\p" .string "The visitor is reaching for their own\n" .string "BAG and rummaging about in it!\p" @@ -2197,19 +2197,19 @@ gTVSecretBaseSecretsText19:: @ 08288CC8 .string "holding up the {STR_VAR_2}!\p" .string "It's like a TV commercial!$" -gTVSecretBaseSecretsText20:: @ 08288D7F +TVSecretBaseSecrets_Text_UsedCushion:: @ 08288D7F .string "The visitor grabs a cushion and…$" -gTVSecretBaseSecretsText21:: @ 08288DA0 +TVSecretBaseSecrets_Text_HitCushion:: @ 08288DA0 .string "…begins hitting it!\p" .string "Is the visitor under a lot of stress?$" -gTVSecretBaseSecretsText22:: @ 08288DDA +TVSecretBaseSecrets_Text_HuggedCushion:: @ 08288DDA .string "…hugs it tight!\p" .string "Could the visitor be feeling happy\n" .string "about something?$" -gTVSecretBaseSecretsText23:: @ 08288E1E +TVSecretBaseSecrets_Text_BattledWon:: @ 08288E1E .string "The visitor is chatting with\n" .string "{STR_VAR_1}!\p" .string "It looks like they're going to\n" @@ -2220,7 +2220,7 @@ gTVSecretBaseSecretsText23:: @ 08288E1E .string "The visitor is doing\n" .string "a victory dance!$" -gTVSecretBaseSecretsText24:: @ 08288EC9 +TVSecretBaseSecrets_Text_BattledLost:: @ 08288EC9 .string "The visitor is chatting with\n" .string "{STR_VAR_1}!\p" .string "It looks like they're going to\n" @@ -2230,7 +2230,7 @@ gTVSecretBaseSecretsText24:: @ 08288EC9 .string "The visitor has lost!\p" .string "The visitor looks dejected!$" -gTVSecretBaseSecretsText25:: @ 08288F58 +TVSecretBaseSecrets_Text_DeclinedBattle:: @ 08288F58 .string "The visitor is chatting with\n" .string "{STR_VAR_1}!\p" .string "It looks like they're going to\n" @@ -2241,7 +2241,7 @@ gTVSecretBaseSecretsText25:: @ 08288F58 .string "Did the visitor find {STR_VAR_1}\n" .string "unappealing?$" -gTVSecretBaseSecretsText26:: @ 08289011 +TVSecretBaseSecrets_Text_UsedPoster:: @ 08289011 .string "The visitor is staring intently\n" .string "at a poster!\p" .string "Is the poster to the visitor's\n" @@ -2249,12 +2249,12 @@ gTVSecretBaseSecretsText26:: @ 08289011 .string "…But… There's something disturbing\n" .string "about the visitor's stares.$" -gTVSecretBaseSecretsText27:: @ 082890A4 +TVSecretBaseSecrets_Text_UsedNoteMat:: @ 082890A4 .string "The visitor stepped on a NOTE MAT!\p" .string "…Hmm…\n" .string "The visitor composed a funny tune!$" -gTVSecretBaseSecretsText28:: @ 082890F0 +TVSecretBaseSecrets_Text_BattledDraw:: @ 082890F0 .string "The visitor is chatting with\n" .string "{STR_VAR_1}!\p" .string "It looks like they're going to\n" @@ -2265,14 +2265,14 @@ gTVSecretBaseSecretsText28:: @ 082890F0 .string "Both TRAINERS appear to be very\n" .string "disappointed!$" -gTVSecretBaseSecretsText29:: @ 08289193 +TVSecretBaseSecrets_Text_UsedSpinMat:: @ 08289193 .string "The visitor stepped on\n" .string "a SPIN MAT!\p" .string "It looks like the visitor is dizzy!\p" .string "The visitor is tottering about!\n" .string "Look out!$" -gTVSecretBaseSecretsText30:: @ 08289204 +TVSecretBaseSecrets_Text_UsedSandOrnament:: @ 08289204 .string "The visitor is reaching for\n" .string "a SAND ORNAMENT!\p" .string "Oh!\p" @@ -2281,7 +2281,7 @@ gTVSecretBaseSecretsText30:: @ 08289204 .string "The visitor looks sheepish\n" .string "and guilty!$" -gTVSecretBaseSecretsText31:: @ 0828927C +TVSecretBaseSecrets_Text_UsedDesk:: @ 0828927C .string "The visitor is rubbing a desktop\n" .string "with their finger!\p" .string "Apparently, the visitor disapproves\n" @@ -2289,25 +2289,25 @@ gTVSecretBaseSecretsText31:: @ 0828927C .string "The visitor is surprisingly concerned\n" .string "about neatness!$" -gTVSecretBaseSecretsText32:: @ 08289313 +TVSecretBaseSecrets_Text_UsedBrick:: @ 08289313 .string "The visitor is staring at a BRICK!\p" .string "Perhaps the visitor is thinking about\n" .string "the object on the BRICK.$" -gTVSecretBaseSecretsText33:: @ 08289375 +TVSecretBaseSecrets_Text_UsedSolidBoard:: @ 08289375 .string "The visitor is walking across\n" .string "the SOLID BOARD.\p" .string "The visitor keeps looking down.\p" .string "The visitor appears to be surprisingly\n" .string "timid and cautious!$" -gTVSecretBaseSecretsText34:: @ 082893FF +TVSecretBaseSecrets_Text_UsedFence:: @ 082893FF .string "The visitor is looking intently\n" .string "at a FENCE!\p" .string "Has a new idea for a trap popped\n" .string "into the visitor's head?$" -gTVSecretBaseSecretsText35:: @ 08289465 +TVSecretBaseSecrets_Text_UsedGlitterMat:: @ 08289465 .string "The visitor stepped on\n" .string "a GLITTER MAT!\p" .string "The visitor is striking a variety\n" @@ -2315,13 +2315,13 @@ gTVSecretBaseSecretsText35:: @ 08289465 .string "The visitor appears to be fantasizing\n" .string "about being an idol!$" -gTVSecretBaseSecretsText36:: @ 082894F2 +TVSecretBaseSecrets_Text_UsedTire:: @ 082894F2 .string "The visitor is staring intently\n" .string "at a TIRE!\p" .string "Could the visitor be thinking about\n" .string "the kind of car that would use it?$" -gTVSecretBaseSecretsText37:: @ 08289564 +TVSecretBaseSecrets_Text_UsedStand:: @ 08289564 .string "The visitor climbed a STAND!\p" .string "The visitor is looking out across\n" .string "{STR_VAR_1}'s BASE from high up!\p" @@ -2329,16 +2329,16 @@ gTVSecretBaseSecretsText37:: @ 08289564 .string "Lets loose a roar!\n" .string "The visitor is roaring!$" -gTVSecretBaseSecretsText38:: @ 082895EB +TVSecretBaseSecrets_Text_BrokeDoor:: @ 082895EB .string "The visitor charged headlong into\n" .string "a BREAKABLE DOOR!\p" .string "The visitor is laughing uproariously!$" -gTVSecretBaseSecretsText39:: @ 08289645 +TVSecretBaseSecrets_Text_UsedDoll:: @ 08289645 .string "The visitor is talking to a DOLL!\p" .string "…It's a little creepy…$" -gTVSecretBaseSecretsText40:: @ 0828967E +TVSecretBaseSecrets_Text_UsedSlide:: @ 0828967E .string "The visitor is climbing the ladder\n" .string "on a SLIDE!\p" .string "And…\p" @@ -2346,7 +2346,7 @@ gTVSecretBaseSecretsText40:: @ 0828967E .string "Looks like the visitor is having\n" .string "a grand old time!$" -gTVSecretBaseSecretsText41:: @ 082896FC +TVSecretBaseSecrets_Text_UsedSlideButDidntGoDown:: @ 082896FC .string "The visitor is climbing the ladder\n" .string "on a SLIDE!\p" .string "And…\p" @@ -2354,7 +2354,7 @@ gTVSecretBaseSecretsText41:: @ 082896FC .string "the ladder!\p" .string "Did the visitor suddenly chicken out?$" -gTVSecretBaseSecretsText42:: @ 0828977D +TVSecretBaseSecrets_Text_UsedJumpMat:: @ 0828977D .string "The visitor stepped on\n" .string "a JUMP MAT!\p" .string "The visitor jumped once!\p" @@ -2700,7 +2700,7 @@ GabbyAndTy_Text_GabbyPreFirstBattle: @ 0828AF05 .string "Okay, roll camera!\n" .string "Let's get this interview.$" -GabbyAndTy_Text_GabbyPreBattle: @ 0828AF7D +GabbyAndTy_Text_GabbyIntro: @ 0828AF7D .string "GABBY: Oh! You're {PLAYER}! Hi!\n" .string "Do you remember us from last time?\p" .string "Can you show us how much stronger\n" @@ -2806,7 +2806,7 @@ GabbyAndTy_Text_TyPreFirstBattle: @ 0828B75C .string "TRAINER here, of all places!\l" .string "Camera's rolling!$" -GabbyAndTy_Text_TyPreBattle: @ 0828B7B1 +GabbyAndTy_Text_TyIntro: @ 0828B7B1 .string "TY: Hey, lookie here!\n" .string "I remember you!\p" .string "I'll get this battle all on this\n" diff --git a/graphics/battle_frontier/options_pal1.pal b/graphics/battle_frontier/tourney.pal index eec4c7d71..eec4c7d71 100644 --- a/graphics/battle_frontier/options_pal1.pal +++ b/graphics/battle_frontier/tourney.pal diff --git a/graphics/battle_frontier/options_pal2.pal b/graphics/battle_frontier/tourney_buttons.pal index 4a7c1f786..4a7c1f786 100644 --- a/graphics/battle_frontier/options_pal2.pal +++ b/graphics/battle_frontier/tourney_buttons.pal diff --git a/graphics/battle_frontier/options.png b/graphics/battle_frontier/tourney_buttons.png Binary files differindex 0d8cec998..0d8cec998 100644 --- a/graphics/battle_frontier/options.png +++ b/graphics/battle_frontier/tourney_buttons.png diff --git a/graphics/battle_frontier/misc1.png b/graphics/battle_frontier/tourney_info_card.png Binary files differindex a3c225c89..a3c225c89 100644 --- a/graphics/battle_frontier/misc1.png +++ b/graphics/battle_frontier/tourney_info_card.png diff --git a/graphics/unknown/unknown_D84F00.bin b/graphics/battle_frontier/tourney_info_card_bg.bin index c38088d34..c38088d34 100644 --- a/graphics/unknown/unknown_D84F00.bin +++ b/graphics/battle_frontier/tourney_info_card_bg.bin diff --git a/graphics/unknown/unknown_D84970.bin b/graphics/battle_frontier/tourney_info_card_tilemap.bin Binary files differindex d102290e4..d102290e4 100644 --- a/graphics/unknown/unknown_D84970.bin +++ b/graphics/battle_frontier/tourney_info_card_tilemap.bin diff --git a/graphics/unknown/unknown_D83B2C.bin b/graphics/battle_frontier/tourney_line_down_map.bin Binary files differindex 34175237e..34175237e 100644 --- a/graphics/unknown/unknown_D83B2C.bin +++ b/graphics/battle_frontier/tourney_line_down_map.bin diff --git a/graphics/unknown/unknown_D83900.bin b/graphics/battle_frontier/tourney_line_mask_map.bin Binary files differindex 7f3e36737..7f3e36737 100644 --- a/graphics/unknown/unknown_D83900.bin +++ b/graphics/battle_frontier/tourney_line_mask_map.bin diff --git a/graphics/unknown/unknown_D83C3C.bin b/graphics/battle_frontier/tourney_line_up_map.bin Binary files differindex acf7cf6ad..acf7cf6ad 100644 --- a/graphics/unknown/unknown_D83C3C.bin +++ b/graphics/battle_frontier/tourney_line_up_map.bin diff --git a/graphics/battle_frontier/options_pal3.pal b/graphics/battle_frontier/tourney_match_card_bg.pal index 912d5e9ec..912d5e9ec 100644 --- a/graphics/battle_frontier/options_pal3.pal +++ b/graphics/battle_frontier/tourney_match_card_bg.pal diff --git a/include/battle_dome.h b/include/battle_dome.h index d1dfdb100..900508c4b 100644 --- a/include/battle_dome.h +++ b/include/battle_dome.h @@ -1,9 +1,9 @@ #ifndef GUARD_BATTLE_DOME_H #define GUARD_BATTLE_DOME_H -extern u32 gUnknown_0203CD70; +extern u32 gPlayerPartyLostHP; -int GetDomeTrainerMonCountInBits(u16 tournamentTrainerId); +int GetDomeTrainerSelectedMons(u16 tournamentTrainerId); int TrainerIdToDomeTournamentId(u16 trainerId); #endif // GUARD_BATTLE_DOME_H diff --git a/include/battle_tower.h b/include/battle_tower.h index 2366cac12..3bf2f004b 100644 --- a/include/battle_tower.h +++ b/include/battle_tower.h @@ -8,8 +8,8 @@ struct RSBattleTowerRecord /*0x02*/ u16 winStreak; /*0x04*/ u8 name[PLAYER_NAME_LENGTH + 1]; /*0x0C*/ u8 trainerId[TRAINER_ID_LENGTH]; - /*0x10*/ u16 greeting[6]; - /*0x1C*/ struct BattleTowerPokemon party[3]; + /*0x10*/ u16 greeting[EASY_CHAT_BATTLE_WORDS_COUNT]; + /*0x1C*/ struct BattleTowerPokemon party[FRONTIER_PARTY_SIZE]; /*0xA0*/ u32 checksum; }; @@ -18,10 +18,10 @@ struct BattleFrontierTrainer u8 facilityClass; u8 filler1[3]; u8 trainerName[PLAYER_NAME_LENGTH + 1]; - u16 speechBefore[6]; - u16 speechWin[6]; - u16 speechLose[6]; - const u16 *monSets; + u16 speechBefore[EASY_CHAT_BATTLE_WORDS_COUNT]; + u16 speechWin[EASY_CHAT_BATTLE_WORDS_COUNT]; + u16 speechLose[EASY_CHAT_BATTLE_WORDS_COUNT]; + const u16 *monSet; }; struct FacilityMon @@ -49,7 +49,7 @@ extern const struct BattleFrontierTrainer *gFacilityTrainers; extern const struct FacilityMon *gFacilityTrainerMons; void CallBattleTowerFunc(void); -u16 sub_8162548(u8 challengeNum, u8 battleNum); +u16 GetRandomScaledFrontierTrainerId(u8 challengeNum, u8 battleNum); void SetBattleFacilityTrainerGfxId(u16 trainerId, u8 tempVarId); void SetEReaderTrainerGfxId(void); u8 GetBattleFacilityTrainerGfxId(u16 trainerId); @@ -59,7 +59,7 @@ u8 GetFrontierOpponentClass(u16 trainerId); void GetFrontierTrainerName(u8 *dst, u16 trainerId); void FillFrontierTrainerParty(u8 monsCount); void FillFrontierTrainersParties(u8 monsCount); -u16 RandomizeFacilityTrainerMonSet(u16 trainerId); +u16 GetRandomFrontierMonFromSet(u16 trainerId); void FrontierSpeechToString(const u16 *words); void DoSpecialTrainerBattle(void); void CalcEmeraldBattleTowerChecksum(struct EmeraldBattleTowerRecord *record); @@ -71,7 +71,7 @@ void GetEreaderTrainerName(u8 *dst); void ValidateEReaderTrainer(void); void ClearEReaderTrainer(struct BattleTowerEReaderTrainer *ereaderTrainer); void CopyEReaderTrainerGreeting(void); -void sub_81653CC(void); +void TryHideBattleTowerReporter(void); bool32 RubyBattleTowerRecordToEmerald(struct RSBattleTowerRecord *src, struct EmeraldBattleTowerRecord *dst); bool32 EmeraldBattleTowerRecordToRuby(struct EmeraldBattleTowerRecord *src, struct RSBattleTowerRecord *dst); void CalcApprenticeChecksum(struct Apprentice *apprentice); diff --git a/include/constants/battle_dome.h b/include/constants/battle_dome.h index 48152cdbb..ea7310e55 100644 --- a/include/constants/battle_dome.h +++ b/include/constants/battle_dome.h @@ -1,6 +1,21 @@ #ifndef GUARD_CONSTANTS_BATTLE_DOME_H #define GUARD_CONSTANTS_BATTLE_DOME_H +#define DOME_ROUND1 0 +#define DOME_ROUND2 1 +#define DOME_SEMIFINAL 2 +#define DOME_FINAL 3 +#define DOME_ROUNDS_COUNT 4 + +//#define DOME_TOURNAMENT_TRAINERS_COUNT 16 -- defined in global +#define DOME_TOURNAMENT_MATCHES_COUNT DOME_TOURNAMENT_TRAINERS_COUNT - 1 + +#define DOME_BATTLE_PARTY_SIZE 2 + +#define DOME_PLAYER_WON_MATCH 1 +#define DOME_PLAYER_LOST_MATCH 2 +#define DOME_PLAYER_RETIRED 9 + #define BATTLE_DOME_FUNC_INIT 0 #define BATTLE_DOME_FUNC_GET_DATA 1 #define BATTLE_DOME_FUNC_SET_DATA 2 @@ -9,7 +24,7 @@ #define BATTLE_DOME_FUNC_INIT_OPPONENT_PARTY 5 #define BATTLE_DOME_FUNC_SHOW_OPPONENT_INFO 6 #define BATTLE_DOME_FUNC_SHOW_TOURNEY_TREE 7 -#define BATTLE_DOME_FUNC_SHOW_PREV_RESULTS_TREE 8 +#define BATTLE_DOME_FUNC_SHOW_PREV_TOURNEY_TREE 8 #define BATTLE_DOME_FUNC_SET_OPPONENT_ID 9 #define BATTLE_DOME_FUNC_SET_OPPONENT_GFX 10 #define BATTLE_DOME_FUNC_SHOW_STATIC_TOURNEY_TREE 11 @@ -22,24 +37,127 @@ #define BATTLE_DOME_FUNC_REDUCE_PARTY 18 #define BATTLE_DOME_FUNC_COMPARE_SEEDS 19 #define BATTLE_DOME_FUNC_GET_WINNER_NAME 20 -#define BATTLE_DOME_FUNC_21 21 +#define BATTLE_DOME_FUNC_INIT_RESULTS_TREE 21 #define BATTLE_DOME_FUNC_INIT_TRAINERS 22 -#define DOME_DATA_WIN_STREAK 0 -#define DOME_DATA_WIN_STREAK_ACTIVE 1 -#define DOME_DATA_2 2 -#define DOME_DATA_3 3 -#define DOME_DATA_4 4 -#define DOME_DATA_5 5 -#define DOME_DATA_6 6 -#define DOME_DATA_7 7 -#define DOME_DATA_8 8 -#define DOME_DATA_9 9 - -#define DOME_ROUND1 0 -#define DOME_ROUND2 1 -#define DOME_SEMIFINAL 2 -#define DOME_FINAL 3 -#define DOME_ROUNDS_COUNT 4 +#define DOME_DATA_WIN_STREAK 0 +#define DOME_DATA_WIN_STREAK_ACTIVE 1 +#define DOME_DATA_ATTEMPTED_SINGLES_50 2 +#define DOME_DATA_ATTEMPTED_SINGLES_OPEN 3 +#define DOME_DATA_HAS_WON_SINGLES_50 4 +#define DOME_DATA_HAS_WON_SINGLES_OPEN 5 +#define DOME_DATA_ATTEMPTED_CHALLENGE 6 +#define DOME_DATA_HAS_WON_CHALLENGE 7 +#define DOME_DATA_SELECTED_MONS 8 +#define DOME_DATA_PREV_TOURNEY_TYPE 9 + +// ID for Exit/Cancel on the tourney tree +#define TOURNEY_TREE_CLOSE_BUTTON 31 + +// Input IDs on the tourney tree +#define TOURNEY_TREE_SELECTED_CLOSE 0 +#define TOURNEY_TREE_NO_SELECTION 1 +#define TOURNEY_TREE_SELECTED_TRAINER 2 +#define TOURNEY_TREE_SELECTED_MATCH 3 + +// Modes for showing the tourney tree info card +#define INFOCARD_NEXT_OPPONENT 0 +#define INFOCARD_TRAINER 1 +#define INFOCARD_MATCH 2 + +// Input IDs for the info cards +#define INFOCARD_INPUT_NONE 0 +#define TRAINERCARD_INPUT_UP 1 +#define TRAINERCARD_INPUT_DOWN 2 +#define TRAINERCARD_INPUT_LEFT 3 +#define TRAINERCARD_INPUT_RIGHT 4 +#define MATCHCARD_INPUT_UP 5 +#define MATCHCARD_INPUT_DOWN 6 +#define MATCHCARD_INPUT_LEFT 7 +#define MATCHCARD_INPUT_RIGHT 8 +#define INFOCARD_INPUT_AB 9 + +#define CARD_ALTERNATE_SLOT (1 << 0) // When set, uses an alternate slot to store the incoming card sprites +#define MOVE_CARD_RIGHT (1 << 1) +#define MOVE_CARD_DOWN (1 << 2) +#define MOVE_CARD_LEFT (1 << 3) +#define MOVE_CARD_UP (1 << 4) +#define MOVE_CARD (MOVE_CARD_RIGHT | MOVE_CARD_DOWN | MOVE_CARD_LEFT | MOVE_CARD_UP) + +// Text IDs for sBattleDomeWinTexts +#define DOME_TEXT_NO_WINNER_YET 0 +#define DOME_TEXT_WON_USING_MOVE 1 +#define DOME_TEXT_CHAMP_USING_MOVE 2 +#define DOME_TEXT_WON_ON_FORFEIT 3 +#define DOME_TEXT_CHAMP_ON_FORFEIT 4 +#define DOME_TEXT_WON_NO_MOVES 5 +#define DOME_TEXT_CHAMP_NO_MOVES 6 + +// Offsets/start positions within sBattleDomeOpponentStatsTexts +#define DOME_TEXT_TWO_GOOD_STATS 0 +#define DOME_TEXT_ONE_GOOD_STAT 15 +#define DOME_TEXT_TWO_BAD_STATS 21 +#define DOME_TEXT_ONE_BAD_STAT 36 +#define DOME_TEXT_WELL_BALANCED 42 +#define DOME_TEXT_HP 0 +#define DOME_TEXT_ATK 5 +#define DOME_TEXT_DEF 9 +#define DOME_TEXT_SPEED 12 +#define DOME_TEXT_SPATK 14 + +// Move point indexes for sBattleStyleMovePoints[][], to determine Battle Dome trainers battle styles +#define MOVE_POINTS_COMBO 0 // Moves that work well in combination (e.g. Rain Dance + Hydro Pump) +#define MOVE_POINTS_STAT_RAISE 1 +#define MOVE_POINTS_STAT_LOWER 2 +#define MOVE_POINTS_RARE 3 // Uncommon moves. Mostly arbitrary +#define MOVE_POINTS_HEAL 4 +#define MOVE_POINTS_RISKY 5 +#define MOVE_POINTS_STATUS 6 +#define MOVE_POINTS_DMG 7 +#define MOVE_POINTS_DEF 8 // Defensive moves, like Amnesia, Light Screen, or accuracy-lowers +#define MOVE_POINTS_ACCURATE 9 +#define MOVE_POINTS_POWERFUL 10 // Most of the moves that are >= 100 power +#define MOVE_POINTS_POPULAR 11 // Group seems arbitrary. All using it are TM/HMs, but its only 11/58 +#define MOVE_POINTS_LUCK 12 +#define MOVE_POINTS_STRONG 13 // Most of the moves that are >= 90 power +#define MOVE_POINTS_LOW_PP 14 +#define MOVE_POINTS_EFFECT 15 // Moves with additional effects +#define NUM_MOVE_POINT_TYPES 16 + +// Battle style IDs for sBattleDomeOpponentStyleTexts +#define DOME_BATTLE_STYLE_RISKY 0 +#define DOME_BATTLE_STYLE_STALL 1 +#define DOME_BATTLE_STYLE_VARIED 2 +#define DOME_BATTLE_STYLE_COMBO_HIGH 3 +#define DOME_BATTLE_STYLE_RARE_MOVES 4 +#define DOME_BATTLE_STYLE_RARE_MOVE 5 +#define DOME_BATTLE_STYLE_HP 6 +#define DOME_BATTLE_STYLE_STORE_POWER 7 +#define DOME_BATTLE_STYLE_ENFEEBLE_LOW 8 +#define DOME_BATTLE_STYLE_LUCK 9 +#define DOME_BATTLE_STYLE_REGAL 10 +#define DOME_BATTLE_STYLE_LOW_PP 11 +#define DOME_BATTLE_STYLE_STATUS_ATK 12 +#define DOME_BATTLE_STYLE_ENDURE 13 +#define DOME_BATTLE_STYLE_STATUS 14 +#define DOME_BATTLE_STYLE_STRAIGHTFORWARD 15 +#define DOME_BATTLE_STYLE_AGGRESSIVE 16 +#define DOME_BATTLE_STYLE_DEF 17 +#define DOME_BATTLE_STYLE_ENFEEBLE_HIGH 18 +#define DOME_BATTLE_STYLE_POPULAR_POWER 19 +#define DOME_BATTLE_STYLE_COMBO_LOW 20 +#define DOME_BATTLE_STYLE_ACCURATE 21 +#define DOME_BATTLE_STYLE_POWERFUL 22 +#define DOME_BATTLE_STYLE_ATK_OVER_DEF 23 +#define DOME_BATTLE_STYLE_DEF_OVER_ATK 24 +#define DOME_BATTLE_STYLE_POPULAR_STRONG 25 +#define DOME_BATTLE_STYLE_EFFECTS 26 +#define DOME_BATTLE_STYLE_BALANCED 27 +#define DOME_BATTLE_STYLE_UNUSED1 28 +#define DOME_BATTLE_STYLE_UNUSED2 29 +#define DOME_BATTLE_STYLE_UNUSED3 30 +#define DOME_BATTLE_STYLE_UNUSED4 31 +#define NUM_BATTLE_STYLES 32 + #endif //GUARD_CONSTANTS_BATTLE_DOME_H diff --git a/include/constants/battle_frontier.h b/include/constants/battle_frontier.h index 0bf1ba02b..1a60714e8 100644 --- a/include/constants/battle_frontier.h +++ b/include/constants/battle_frontier.h @@ -6,9 +6,9 @@ // Battle Frontier facility ids. #define FRONTIER_FACILITY_TOWER 0 #define FRONTIER_FACILITY_DOME 1 -#define FRONTIER_FACILITY_PALACE 2 -#define FRONTIER_FACILITY_ARENA 3 -#define FRONTIER_FACILITY_FACTORY 4 +#define FRONTIER_FACILITY_PALACE 2 // also Verdanturf Tent +#define FRONTIER_FACILITY_ARENA 3 // also Fallarbor Tent +#define FRONTIER_FACILITY_FACTORY 4 // also Slateport Tent #define FRONTIER_FACILITY_PIKE 5 #define FRONTIER_FACILITY_PYRAMID 6 #define NUM_FRONTIER_FACILITIES 7 @@ -17,10 +17,6 @@ #define FACILITY_UNION_ROOM 8 #define FACILITY_MULTI_OR_EREADER 9 // Direct Corner multi battles, multi battle with Steven, and e-Reader battles -#define TENT_VERDANTURF 2 -#define TENT_FALLARBOR 3 -#define TENT_SLATEPORT 4 - // Battle Frontier lvl modes. #define FRONTIER_LVL_50 0 #define FRONTIER_LVL_OPEN 1 diff --git a/include/constants/battle_frontier_mons.h b/include/constants/battle_frontier_mons.h new file mode 100644 index 000000000..10e68980a --- /dev/null +++ b/include/constants/battle_frontier_mons.h @@ -0,0 +1,899 @@ +#ifndef GUARD_CONSTANTS_BATTLE_FRONTIER_MONS_H +#define GUARD_CONSTANTS_BATTLE_FRONTIER_MONS_H + +#define FRONTIER_MON_SUNKERN 0 +#define FRONTIER_MON_AZURILL 1 +#define FRONTIER_MON_CATERPIE 2 +#define FRONTIER_MON_WEEDLE 3 +#define FRONTIER_MON_WURMPLE 4 +#define FRONTIER_MON_RALTS 5 +#define FRONTIER_MON_MAGIKARP 6 +#define FRONTIER_MON_FEEBAS 7 +#define FRONTIER_MON_METAPOD 8 +#define FRONTIER_MON_KAKUNA 9 +#define FRONTIER_MON_PICHU 10 +#define FRONTIER_MON_SILCOON 11 +#define FRONTIER_MON_CASCOON 12 +#define FRONTIER_MON_IGGLYBUFF 13 +#define FRONTIER_MON_WOOPER 14 +#define FRONTIER_MON_TYROGUE 15 +#define FRONTIER_MON_SENTRET 16 +#define FRONTIER_MON_CLEFFA 17 +#define FRONTIER_MON_SEEDOT 18 +#define FRONTIER_MON_LOTAD 19 +#define FRONTIER_MON_POOCHYENA 20 +#define FRONTIER_MON_SHEDINJA 21 +#define FRONTIER_MON_MAKUHITA 22 +#define FRONTIER_MON_WHISMUR 23 +#define FRONTIER_MON_ZIGZAGOON 24 +#define FRONTIER_MON_ZUBAT 25 +#define FRONTIER_MON_TOGEPI 26 +#define FRONTIER_MON_SPINARAK 27 +#define FRONTIER_MON_MARILL 28 +#define FRONTIER_MON_HOPPIP 29 +#define FRONTIER_MON_SLUGMA 30 +#define FRONTIER_MON_SWINUB 31 +#define FRONTIER_MON_SMEARGLE 32 +#define FRONTIER_MON_PIDGEY 33 +#define FRONTIER_MON_RATTATA 34 +#define FRONTIER_MON_WYNAUT 35 +#define FRONTIER_MON_SKITTY 36 +#define FRONTIER_MON_SPEAROW 37 +#define FRONTIER_MON_HOOTHOOT 38 +#define FRONTIER_MON_DIGLETT 39 +#define FRONTIER_MON_LEDYBA 40 +#define FRONTIER_MON_NINCADA 41 +#define FRONTIER_MON_SURSKIT 42 +#define FRONTIER_MON_JIGGLYPUFF 43 +#define FRONTIER_MON_TAILLOW 44 +#define FRONTIER_MON_WINGULL 45 +#define FRONTIER_MON_NIDORAN_M 46 +#define FRONTIER_MON_NIDORAN_F 47 +#define FRONTIER_MON_KIRLIA 48 +#define FRONTIER_MON_MAREEP 49 +#define FRONTIER_MON_MEDITITE 50 +#define FRONTIER_MON_SLAKOTH 51 +#define FRONTIER_MON_PARAS 52 +#define FRONTIER_MON_EKANS 53 +#define FRONTIER_MON_DITTO 54 +#define FRONTIER_MON_BARBOACH 55 +#define FRONTIER_MON_MEOWTH 56 +#define FRONTIER_MON_PINECO 57 +#define FRONTIER_MON_TRAPINCH 58 +#define FRONTIER_MON_SPHEAL 59 +#define FRONTIER_MON_HORSEA 60 +#define FRONTIER_MON_SHROOMISH 61 +#define FRONTIER_MON_SHUPPET 62 +#define FRONTIER_MON_DUSKULL 63 +#define FRONTIER_MON_ELECTRIKE 64 +#define FRONTIER_MON_VULPIX 65 +#define FRONTIER_MON_PIKACHU 66 +#define FRONTIER_MON_SANDSHREW 67 +#define FRONTIER_MON_POLIWAG 68 +#define FRONTIER_MON_BELLSPROUT 69 +#define FRONTIER_MON_GEODUDE 70 +#define FRONTIER_MON_DRATINI 71 +#define FRONTIER_MON_SNUBBULL 72 +#define FRONTIER_MON_REMORAID 73 +#define FRONTIER_MON_LARVITAR 74 +#define FRONTIER_MON_BALTOY 75 +#define FRONTIER_MON_SNORUNT 76 +#define FRONTIER_MON_BAGON 77 +#define FRONTIER_MON_BELDUM 78 +#define FRONTIER_MON_GULPIN 79 +#define FRONTIER_MON_VENONAT 80 +#define FRONTIER_MON_MANKEY 81 +#define FRONTIER_MON_MACHOP 82 +#define FRONTIER_MON_SHELLDER 83 +#define FRONTIER_MON_SMOOCHUM 84 +#define FRONTIER_MON_NUMEL 85 +#define FRONTIER_MON_CARVANHA 86 +#define FRONTIER_MON_CORPHISH 87 +#define FRONTIER_MON_CHARMANDER 88 +#define FRONTIER_MON_CYNDAQUIL 89 +#define FRONTIER_MON_ABRA 90 +#define FRONTIER_MON_DODUO 91 +#define FRONTIER_MON_GASTLY 92 +#define FRONTIER_MON_SWABLU 93 +#define FRONTIER_MON_TREECKO 94 +#define FRONTIER_MON_TORCHIC 95 +#define FRONTIER_MON_MUDKIP 96 +#define FRONTIER_MON_SQUIRTLE 97 +#define FRONTIER_MON_TOTODILE 98 +#define FRONTIER_MON_SLOWPOKE 99 +#define FRONTIER_MON_BULBASAUR 100 +#define FRONTIER_MON_CHIKORITA 101 +#define FRONTIER_MON_ODDISH 102 +#define FRONTIER_MON_PSYDUCK 103 +#define FRONTIER_MON_CUBONE 104 +#define FRONTIER_MON_GOLDEEN 105 +#define FRONTIER_MON_NATU 106 +#define FRONTIER_MON_CLEFAIRY 107 +#define FRONTIER_MON_MAGNEMITE 108 +#define FRONTIER_MON_SEEL 109 +#define FRONTIER_MON_GRIMER 110 +#define FRONTIER_MON_KRABBY 111 +#define FRONTIER_MON_EXEGGCUTE 112 +#define FRONTIER_MON_EEVEE 113 +#define FRONTIER_MON_DROWZEE 114 +#define FRONTIER_MON_VOLTORB 115 +#define FRONTIER_MON_CHINCHOU 116 +#define FRONTIER_MON_TEDDIURSA 117 +#define FRONTIER_MON_DELIBIRD 118 +#define FRONTIER_MON_HOUNDOUR 119 +#define FRONTIER_MON_PHANPY 120 +#define FRONTIER_MON_SPOINK 121 +#define FRONTIER_MON_ARON 122 +#define FRONTIER_MON_LUVDISC 123 +#define FRONTIER_MON_TENTACOOL 124 +#define FRONTIER_MON_CACNEA 125 +#define FRONTIER_MON_UNOWN 126 +#define FRONTIER_MON_KOFFING 127 +#define FRONTIER_MON_STARYU 128 +#define FRONTIER_MON_SKIPLOOM 129 +#define FRONTIER_MON_NUZLEAF 130 +#define FRONTIER_MON_LOMBRE 131 +#define FRONTIER_MON_VIBRAVA 132 +#define FRONTIER_MON_RHYHORN 133 +#define FRONTIER_MON_CLAMPERL 134 +#define FRONTIER_MON_PIDGEOTTO 135 +#define FRONTIER_MON_GROWLITHE 136 +#define FRONTIER_MON_FARFETCHD 137 +#define FRONTIER_MON_OMANYTE 138 +#define FRONTIER_MON_KABUTO 139 +#define FRONTIER_MON_LILEEP 140 +#define FRONTIER_MON_ANORITH 141 +#define FRONTIER_MON_AIPOM 142 +#define FRONTIER_MON_ELEKID 143 +#define FRONTIER_MON_LOUDRED 144 +#define FRONTIER_MON_SPINDA 145 +#define FRONTIER_MON_NIDORINA 146 +#define FRONTIER_MON_NIDORINO 147 +#define FRONTIER_MON_FLAAFFY 148 +#define FRONTIER_MON_MAGBY 149 +#define FRONTIER_MON_NOSEPASS 150 +#define FRONTIER_MON_CORSOLA 151 +#define FRONTIER_MON_MAWILE 152 +#define FRONTIER_MON_BUTTERFREE 153 +#define FRONTIER_MON_BEEDRILL 154 +#define FRONTIER_MON_POLIWHIRL 155 +#define FRONTIER_MON_ONIX 156 +#define FRONTIER_MON_BEAUTIFLY 157 +#define FRONTIER_MON_DUSTOX 158 +#define FRONTIER_MON_LEDIAN 159 +#define FRONTIER_MON_ARIADOS 160 +#define FRONTIER_MON_YANMA 161 + +#define FRONTIER_MON_DELCATTY_1 162 +#define FRONTIER_MON_SABLEYE_1 163 +#define FRONTIER_MON_LICKITUNG_1 164 +#define FRONTIER_MON_WEEPINBELL_1 165 +#define FRONTIER_MON_GRAVELER_1 166 +#define FRONTIER_MON_GLOOM_1 167 +#define FRONTIER_MON_PORYGON_1 168 +#define FRONTIER_MON_KADABRA_1 169 +#define FRONTIER_MON_WAILMER_1 170 +#define FRONTIER_MON_ROSELIA_1 171 +#define FRONTIER_MON_VOLBEAT_1 172 +#define FRONTIER_MON_ILLUMISE_1 173 +#define FRONTIER_MON_IVYSAUR_1 174 +#define FRONTIER_MON_CHARMELEON_1 175 +#define FRONTIER_MON_WARTORTLE_1 176 +#define FRONTIER_MON_PARASECT_1 177 +#define FRONTIER_MON_MACHOKE_1 178 +#define FRONTIER_MON_HAUNTER_1 179 +#define FRONTIER_MON_BAYLEEF_1 180 +#define FRONTIER_MON_QUILAVA_1 181 +#define FRONTIER_MON_CROCONAW_1 182 +#define FRONTIER_MON_TOGETIC_1 183 +#define FRONTIER_MON_MURKROW_1 184 +#define FRONTIER_MON_WOBBUFFET_1 185 +#define FRONTIER_MON_PLUSLE_1 186 +#define FRONTIER_MON_MINUN_1 187 +#define FRONTIER_MON_GROVYLE_1 188 +#define FRONTIER_MON_COMBUSKEN_1 189 +#define FRONTIER_MON_MARSHTOMP_1 190 +#define FRONTIER_MON_PONYTA_1 191 +#define FRONTIER_MON_AZUMARILL_1 192 +#define FRONTIER_MON_SUDOWOODO_1 193 +#define FRONTIER_MON_MAGCARGO_1 194 +#define FRONTIER_MON_PUPITAR_1 195 +#define FRONTIER_MON_SEALEO_1 196 +#define FRONTIER_MON_RATICATE_1 197 +#define FRONTIER_MON_MASQUERAIN_1 198 +#define FRONTIER_MON_FURRET_1 199 +#define FRONTIER_MON_DUNSPARCE_1 200 +#define FRONTIER_MON_DRAGONAIR_1 201 +#define FRONTIER_MON_MIGHTYENA_1 202 +#define FRONTIER_MON_LINOONE_1 203 +#define FRONTIER_MON_CASTFORM_1 204 +#define FRONTIER_MON_SHELGON_1 205 +#define FRONTIER_MON_METANG_1 206 +#define FRONTIER_MON_WIGGLYTUFF_1 207 +#define FRONTIER_MON_SUNFLORA_1 208 +#define FRONTIER_MON_CHIMECHO_1 209 +#define FRONTIER_MON_GLIGAR_1 210 +#define FRONTIER_MON_QWILFISH_1 211 +#define FRONTIER_MON_SNEASEL_1 212 +#define FRONTIER_MON_PELIPPER_1 213 +#define FRONTIER_MON_SWELLOW_1 214 +#define FRONTIER_MON_LAIRON_1 215 +#define FRONTIER_MON_TANGELA_1 216 +#define FRONTIER_MON_ARBOK_1 217 +#define FRONTIER_MON_PERSIAN_1 218 +#define FRONTIER_MON_SEADRA_1 219 +#define FRONTIER_MON_KECLEON_1 220 +#define FRONTIER_MON_VIGOROTH_1 221 +#define FRONTIER_MON_LUNATONE_1 222 +#define FRONTIER_MON_SOLROCK_1 223 +#define FRONTIER_MON_NOCTOWL_1 224 +#define FRONTIER_MON_SANDSLASH_1 225 +#define FRONTIER_MON_VENOMOTH_1 226 +#define FRONTIER_MON_CHANSEY_1 227 +#define FRONTIER_MON_SEAKING_1 228 +#define FRONTIER_MON_JUMPLUFF_1 229 +#define FRONTIER_MON_PILOSWINE_1 230 +#define FRONTIER_MON_GOLBAT_1 231 +#define FRONTIER_MON_PRIMEAPE_1 232 +#define FRONTIER_MON_HITMONLEE_1 233 +#define FRONTIER_MON_HITMONCHAN_1 234 +#define FRONTIER_MON_GIRAFARIG_1 235 +#define FRONTIER_MON_HITMONTOP_1 236 +#define FRONTIER_MON_BANETTE_1 237 +#define FRONTIER_MON_NINJASK_1 238 +#define FRONTIER_MON_SEVIPER_1 239 +#define FRONTIER_MON_ZANGOOSE_1 240 +#define FRONTIER_MON_CAMERUPT_1 241 +#define FRONTIER_MON_SHARPEDO_1 242 +#define FRONTIER_MON_TROPIUS_1 243 +#define FRONTIER_MON_MAGNETON_1 244 +#define FRONTIER_MON_MANTINE_1 245 +#define FRONTIER_MON_STANTLER_1 246 +#define FRONTIER_MON_ABSOL_1 247 +#define FRONTIER_MON_SWALOT_1 248 +#define FRONTIER_MON_CRAWDAUNT_1 249 +#define FRONTIER_MON_PIDGEOT_1 250 +#define FRONTIER_MON_GRUMPIG_1 251 +#define FRONTIER_MON_TORKOAL_1 252 +#define FRONTIER_MON_KINGLER_1 253 +#define FRONTIER_MON_CACTURNE_1 254 +#define FRONTIER_MON_BELLOSSOM_1 255 +#define FRONTIER_MON_OCTILLERY_1 256 +#define FRONTIER_MON_HUNTAIL_1 257 +#define FRONTIER_MON_GOREBYSS_1 258 +#define FRONTIER_MON_RELICANTH_1 259 +#define FRONTIER_MON_OMASTAR_1 260 +#define FRONTIER_MON_KABUTOPS_1 261 +#define FRONTIER_MON_POLIWRATH_1 262 +#define FRONTIER_MON_SCYTHER_1 263 +#define FRONTIER_MON_PINSIR_1 264 +#define FRONTIER_MON_POLITOED_1 265 +#define FRONTIER_MON_CLOYSTER_1 266 + +#define FRONTIER_MON_DELCATTY_2 267 +#define FRONTIER_MON_SABLEYE_2 268 +#define FRONTIER_MON_LICKITUNG_2 269 +#define FRONTIER_MON_WEEPINBELL_2 270 +#define FRONTIER_MON_GRAVELER_2 271 +#define FRONTIER_MON_GLOOM_2 272 +#define FRONTIER_MON_PORYGON_2 273 +#define FRONTIER_MON_KADABRA_2 274 +#define FRONTIER_MON_WAILMER_2 275 +#define FRONTIER_MON_ROSELIA_2 276 +#define FRONTIER_MON_VOLBEAT_2 277 +#define FRONTIER_MON_ILLUMISE_2 278 +#define FRONTIER_MON_IVYSAUR_2 279 +#define FRONTIER_MON_CHARMELEON_2 280 +#define FRONTIER_MON_WARTORTLE_2 281 +#define FRONTIER_MON_PARASECT_2 282 +#define FRONTIER_MON_MACHOKE_2 283 +#define FRONTIER_MON_HAUNTER_2 284 +#define FRONTIER_MON_BAYLEEF_2 285 +#define FRONTIER_MON_QUILAVA_2 286 +#define FRONTIER_MON_CROCONAW_2 287 +#define FRONTIER_MON_TOGETIC_2 288 +#define FRONTIER_MON_MURKROW_2 289 +#define FRONTIER_MON_WOBBUFFET_2 290 +#define FRONTIER_MON_PLUSLE_2 291 +#define FRONTIER_MON_MINUN_2 292 +#define FRONTIER_MON_GROVYLE_2 293 +#define FRONTIER_MON_COMBUSKEN_2 294 +#define FRONTIER_MON_MARSHTOMP_2 295 +#define FRONTIER_MON_PONYTA_2 296 +#define FRONTIER_MON_AZUMARILL_2 297 +#define FRONTIER_MON_SUDOWOODO_2 298 +#define FRONTIER_MON_MAGCARGO_2 299 +#define FRONTIER_MON_PUPITAR_2 300 +#define FRONTIER_MON_SEALEO_2 301 +#define FRONTIER_MON_RATICATE_2 302 +#define FRONTIER_MON_MASQUERAIN_2 303 +#define FRONTIER_MON_FURRET_2 304 +#define FRONTIER_MON_DUNSPARCE_2 305 +#define FRONTIER_MON_DRAGONAIR_2 306 +#define FRONTIER_MON_MIGHTYENA_2 307 +#define FRONTIER_MON_LINOONE_2 308 +#define FRONTIER_MON_CASTFORM_2 309 +#define FRONTIER_MON_SHELGON_2 310 +#define FRONTIER_MON_METANG_2 311 +#define FRONTIER_MON_WIGGLYTUFF_2 312 +#define FRONTIER_MON_SUNFLORA_2 313 +#define FRONTIER_MON_CHIMECHO_2 314 +#define FRONTIER_MON_GLIGAR_2 315 +#define FRONTIER_MON_QWILFISH_2 316 +#define FRONTIER_MON_SNEASEL_2 317 +#define FRONTIER_MON_PELIPPER_2 318 +#define FRONTIER_MON_SWELLOW_2 319 +#define FRONTIER_MON_LAIRON_2 320 +#define FRONTIER_MON_TANGELA_2 321 +#define FRONTIER_MON_ARBOK_2 322 +#define FRONTIER_MON_PERSIAN_2 323 +#define FRONTIER_MON_SEADRA_2 324 +#define FRONTIER_MON_KECLEON_2 325 +#define FRONTIER_MON_VIGOROTH_2 326 +#define FRONTIER_MON_LUNATONE_2 327 +#define FRONTIER_MON_SOLROCK_2 328 +#define FRONTIER_MON_NOCTOWL_2 329 +#define FRONTIER_MON_SANDSLASH_2 330 +#define FRONTIER_MON_VENOMOTH_2 331 +#define FRONTIER_MON_CHANSEY_2 332 +#define FRONTIER_MON_SEAKING_2 333 +#define FRONTIER_MON_JUMPLUFF_2 334 +#define FRONTIER_MON_PILOSWINE_2 335 +#define FRONTIER_MON_GOLBAT_2 336 +#define FRONTIER_MON_PRIMEAPE_2 337 +#define FRONTIER_MON_HITMONLEE_2 338 +#define FRONTIER_MON_HITMONCHAN_2 339 +#define FRONTIER_MON_GIRAFARIG_2 340 +#define FRONTIER_MON_HITMONTOP_2 341 +#define FRONTIER_MON_BANETTE_2 342 +#define FRONTIER_MON_NINJASK_2 343 +#define FRONTIER_MON_SEVIPER_2 344 +#define FRONTIER_MON_ZANGOOSE_2 345 +#define FRONTIER_MON_CAMERUPT_2 346 +#define FRONTIER_MON_SHARPEDO_2 347 +#define FRONTIER_MON_TROPIUS_2 348 +#define FRONTIER_MON_MAGNETON_2 349 +#define FRONTIER_MON_MANTINE_2 350 +#define FRONTIER_MON_STANTLER_2 351 +#define FRONTIER_MON_ABSOL_2 352 +#define FRONTIER_MON_SWALOT_2 353 +#define FRONTIER_MON_CRAWDAUNT_2 354 +#define FRONTIER_MON_PIDGEOT_2 355 +#define FRONTIER_MON_GRUMPIG_2 356 +#define FRONTIER_MON_TORKOAL_2 357 +#define FRONTIER_MON_KINGLER_2 358 +#define FRONTIER_MON_CACTURNE_2 359 +#define FRONTIER_MON_BELLOSSOM_2 360 +#define FRONTIER_MON_OCTILLERY_2 361 +#define FRONTIER_MON_HUNTAIL_2 362 +#define FRONTIER_MON_GOREBYSS_2 363 +#define FRONTIER_MON_RELICANTH_2 364 +#define FRONTIER_MON_OMASTAR_2 365 +#define FRONTIER_MON_KABUTOPS_2 366 +#define FRONTIER_MON_POLIWRATH_2 367 +#define FRONTIER_MON_SCYTHER_2 368 +#define FRONTIER_MON_PINSIR_2 369 +#define FRONTIER_MON_POLITOED_2 370 +#define FRONTIER_MON_CLOYSTER_2 371 + +#define FRONTIER_MON_DUGTRIO_1 372 +#define FRONTIER_MON_MEDICHAM_1 373 +#define FRONTIER_MON_MISDREAVUS_1 374 +#define FRONTIER_MON_FEAROW_1 375 +#define FRONTIER_MON_GRANBULL_1 376 +#define FRONTIER_MON_JYNX_1 377 +#define FRONTIER_MON_DUSCLOPS_1 378 +#define FRONTIER_MON_DODRIO_1 379 +#define FRONTIER_MON_MR_MIME_1 380 +#define FRONTIER_MON_LANTURN_1 381 +#define FRONTIER_MON_BRELOOM_1 382 +#define FRONTIER_MON_FORRETRESS_1 383 +#define FRONTIER_MON_WHISCASH_1 384 +#define FRONTIER_MON_XATU_1 385 +#define FRONTIER_MON_SKARMORY_1 386 +#define FRONTIER_MON_MAROWAK_1 387 +#define FRONTIER_MON_QUAGSIRE_1 388 +#define FRONTIER_MON_CLEFABLE_1 389 +#define FRONTIER_MON_HARIYAMA_1 390 +#define FRONTIER_MON_RAICHU_1 391 +#define FRONTIER_MON_DEWGONG_1 392 +#define FRONTIER_MON_MANECTRIC_1 393 +#define FRONTIER_MON_VILEPLUME_1 394 +#define FRONTIER_MON_VICTREEBEL_1 395 +#define FRONTIER_MON_ELECTRODE_1 396 +#define FRONTIER_MON_EXPLOUD_1 397 +#define FRONTIER_MON_SHIFTRY_1 398 +#define FRONTIER_MON_GLALIE_1 399 +#define FRONTIER_MON_LUDICOLO_1 400 +#define FRONTIER_MON_HYPNO_1 401 +#define FRONTIER_MON_GOLEM_1 402 +#define FRONTIER_MON_RHYDON_1 403 +#define FRONTIER_MON_ALAKAZAM_1 404 +#define FRONTIER_MON_WEEZING_1 405 +#define FRONTIER_MON_KANGASKHAN_1 406 +#define FRONTIER_MON_ELECTABUZZ_1 407 +#define FRONTIER_MON_TAUROS_1 408 +#define FRONTIER_MON_SLOWBRO_1 409 +#define FRONTIER_MON_SLOWKING_1 410 +#define FRONTIER_MON_MILTANK_1 411 +#define FRONTIER_MON_ALTARIA_1 412 +#define FRONTIER_MON_NIDOQUEEN_1 413 +#define FRONTIER_MON_NIDOKING_1 414 +#define FRONTIER_MON_MAGMAR_1 415 +#define FRONTIER_MON_CRADILY_1 416 +#define FRONTIER_MON_ARMALDO_1 417 +#define FRONTIER_MON_GOLDUCK_1 418 +#define FRONTIER_MON_RAPIDASH_1 419 +#define FRONTIER_MON_MUK_1 420 +#define FRONTIER_MON_GENGAR_1 421 +#define FRONTIER_MON_AMPHAROS_1 422 +#define FRONTIER_MON_SCIZOR_1 423 +#define FRONTIER_MON_HERACROSS_1 424 +#define FRONTIER_MON_URSARING_1 425 +#define FRONTIER_MON_HOUNDOOM_1 426 +#define FRONTIER_MON_DONPHAN_1 427 +#define FRONTIER_MON_CLAYDOL_1 428 +#define FRONTIER_MON_WAILORD_1 429 +#define FRONTIER_MON_NINETALES_1 430 +#define FRONTIER_MON_MACHAMP_1 431 +#define FRONTIER_MON_SHUCKLE_1 432 +#define FRONTIER_MON_STEELIX_1 433 +#define FRONTIER_MON_TENTACRUEL_1 434 +#define FRONTIER_MON_AERODACTYL_1 435 +#define FRONTIER_MON_PORYGON2_1 436 +#define FRONTIER_MON_GARDEVOIR_1 437 +#define FRONTIER_MON_EXEGGUTOR_1 438 +#define FRONTIER_MON_STARMIE_1 439 +#define FRONTIER_MON_FLYGON_1 440 +#define FRONTIER_MON_VENUSAUR_1 441 +#define FRONTIER_MON_VAPOREON_1 442 +#define FRONTIER_MON_JOLTEON_1 443 +#define FRONTIER_MON_FLAREON_1 444 +#define FRONTIER_MON_MEGANIUM_1 445 +#define FRONTIER_MON_ESPEON_1 446 +#define FRONTIER_MON_UMBREON_1 447 +#define FRONTIER_MON_BLASTOISE_1 448 +#define FRONTIER_MON_FERALIGATR_1 449 +#define FRONTIER_MON_AGGRON_1 450 +#define FRONTIER_MON_BLAZIKEN_1 451 +#define FRONTIER_MON_WALREIN_1 452 +#define FRONTIER_MON_SCEPTILE_1 453 +#define FRONTIER_MON_CHARIZARD_1 454 +#define FRONTIER_MON_TYPHLOSION_1 455 +#define FRONTIER_MON_LAPRAS_1 456 +#define FRONTIER_MON_CROBAT_1 457 +#define FRONTIER_MON_SWAMPERT_1 458 +#define FRONTIER_MON_GYARADOS_1 459 +#define FRONTIER_MON_SNORLAX_1 460 +#define FRONTIER_MON_KINGDRA_1 461 +#define FRONTIER_MON_BLISSEY_1 462 +#define FRONTIER_MON_MILOTIC_1 463 +#define FRONTIER_MON_ARCANINE_1 464 +#define FRONTIER_MON_SALAMENCE_1 465 +#define FRONTIER_MON_METAGROSS_1 466 +#define FRONTIER_MON_SLAKING_1 467 + +#define FRONTIER_MON_DUGTRIO_2 468 +#define FRONTIER_MON_MEDICHAM_2 469 +#define FRONTIER_MON_MAROWAK_2 470 +#define FRONTIER_MON_QUAGSIRE_2 471 +#define FRONTIER_MON_MISDREAVUS_2 472 +#define FRONTIER_MON_FEAROW_2 473 +#define FRONTIER_MON_GRANBULL_2 474 +#define FRONTIER_MON_JYNX_2 475 +#define FRONTIER_MON_DUSCLOPS_2 476 +#define FRONTIER_MON_DODRIO_2 477 +#define FRONTIER_MON_MR_MIME_2 478 +#define FRONTIER_MON_LANTURN_2 479 +#define FRONTIER_MON_BRELOOM_2 480 +#define FRONTIER_MON_FORRETRESS_2 481 +#define FRONTIER_MON_SKARMORY_2 482 +#define FRONTIER_MON_WHISCASH_2 483 +#define FRONTIER_MON_XATU_2 484 +#define FRONTIER_MON_CLEFABLE_2 485 +#define FRONTIER_MON_HARIYAMA_2 486 +#define FRONTIER_MON_RAICHU_2 487 +#define FRONTIER_MON_DEWGONG_2 488 +#define FRONTIER_MON_MANECTRIC_2 489 +#define FRONTIER_MON_VILEPLUME_2 490 +#define FRONTIER_MON_VICTREEBEL_2 491 +#define FRONTIER_MON_ELECTRODE_2 492 +#define FRONTIER_MON_EXPLOUD_2 493 +#define FRONTIER_MON_SHIFTRY_2 494 +#define FRONTIER_MON_GLALIE_2 495 +#define FRONTIER_MON_LUDICOLO_2 496 +#define FRONTIER_MON_HYPNO_2 497 +#define FRONTIER_MON_GOLEM_2 498 +#define FRONTIER_MON_RHYDON_2 499 +#define FRONTIER_MON_ALAKAZAM_2 500 +#define FRONTIER_MON_WEEZING_2 501 +#define FRONTIER_MON_KANGASKHAN_2 502 +#define FRONTIER_MON_ELECTABUZZ_2 503 +#define FRONTIER_MON_TAUROS_2 504 +#define FRONTIER_MON_SLOWBRO_2 505 +#define FRONTIER_MON_SLOWKING_2 506 +#define FRONTIER_MON_MILTANK_2 507 +#define FRONTIER_MON_ALTARIA_2 508 +#define FRONTIER_MON_NIDOQUEEN_2 509 +#define FRONTIER_MON_NIDOKING_2 510 +#define FRONTIER_MON_MAGMAR_2 511 +#define FRONTIER_MON_CRADILY_2 512 +#define FRONTIER_MON_ARMALDO_2 513 +#define FRONTIER_MON_GOLDUCK_2 514 +#define FRONTIER_MON_RAPIDASH_2 515 +#define FRONTIER_MON_MUK_2 516 +#define FRONTIER_MON_GENGAR_2 517 +#define FRONTIER_MON_AMPHAROS_2 518 +#define FRONTIER_MON_SCIZOR_2 519 +#define FRONTIER_MON_HERACROSS_2 520 +#define FRONTIER_MON_URSARING_2 521 +#define FRONTIER_MON_HOUNDOOM_2 522 +#define FRONTIER_MON_DONPHAN_2 523 +#define FRONTIER_MON_CLAYDOL_2 524 +#define FRONTIER_MON_WAILORD_2 525 +#define FRONTIER_MON_NINETALES_2 526 +#define FRONTIER_MON_MACHAMP_2 527 +#define FRONTIER_MON_SHUCKLE_2 528 +#define FRONTIER_MON_STEELIX_2 529 +#define FRONTIER_MON_TENTACRUEL_2 530 +#define FRONTIER_MON_AERODACTYL_2 531 +#define FRONTIER_MON_PORYGON2_2 532 +#define FRONTIER_MON_GARDEVOIR_2 533 +#define FRONTIER_MON_EXEGGUTOR_2 534 +#define FRONTIER_MON_STARMIE_2 535 +#define FRONTIER_MON_FLYGON_2 536 +#define FRONTIER_MON_VENUSAUR_2 537 +#define FRONTIER_MON_VAPOREON_2 538 +#define FRONTIER_MON_JOLTEON_2 539 +#define FRONTIER_MON_FLAREON_2 540 +#define FRONTIER_MON_MEGANIUM_2 541 +#define FRONTIER_MON_ESPEON_2 542 +#define FRONTIER_MON_UMBREON_2 543 +#define FRONTIER_MON_BLASTOISE_2 544 +#define FRONTIER_MON_FERALIGATR_2 545 +#define FRONTIER_MON_AGGRON_2 546 +#define FRONTIER_MON_BLAZIKEN_2 547 +#define FRONTIER_MON_WALREIN_2 548 +#define FRONTIER_MON_SCEPTILE_2 549 +#define FRONTIER_MON_CHARIZARD_2 550 +#define FRONTIER_MON_TYPHLOSION_2 551 +#define FRONTIER_MON_LAPRAS_2 552 +#define FRONTIER_MON_CROBAT_2 553 +#define FRONTIER_MON_SWAMPERT_2 554 +#define FRONTIER_MON_GYARADOS_2 555 +#define FRONTIER_MON_SNORLAX_2 556 +#define FRONTIER_MON_KINGDRA_2 557 +#define FRONTIER_MON_BLISSEY_2 558 +#define FRONTIER_MON_MILOTIC_2 559 +#define FRONTIER_MON_ARCANINE_2 560 +#define FRONTIER_MON_SALAMENCE_2 561 +#define FRONTIER_MON_METAGROSS_2 562 +#define FRONTIER_MON_SLAKING_2 563 + +#define FRONTIER_MON_DUGTRIO_3 564 +#define FRONTIER_MON_MEDICHAM_3 565 +#define FRONTIER_MON_MISDREAVUS_3 566 +#define FRONTIER_MON_FEAROW_3 567 +#define FRONTIER_MON_GRANBULL_3 568 +#define FRONTIER_MON_JYNX_3 569 +#define FRONTIER_MON_DUSCLOPS_3 570 +#define FRONTIER_MON_DODRIO_3 571 +#define FRONTIER_MON_MR_MIME_3 572 +#define FRONTIER_MON_LANTURN_3 573 +#define FRONTIER_MON_BRELOOM_3 574 +#define FRONTIER_MON_FORRETRESS_3 575 +#define FRONTIER_MON_WHISCASH_3 576 +#define FRONTIER_MON_XATU_3 577 +#define FRONTIER_MON_SKARMORY_3 578 +#define FRONTIER_MON_MAROWAK_3 579 +#define FRONTIER_MON_QUAGSIRE_3 580 +#define FRONTIER_MON_CLEFABLE_3 581 +#define FRONTIER_MON_HARIYAMA_3 582 +#define FRONTIER_MON_RAICHU_3 583 +#define FRONTIER_MON_DEWGONG_3 584 +#define FRONTIER_MON_MANECTRIC_3 585 +#define FRONTIER_MON_VILEPLUME_3 586 +#define FRONTIER_MON_VICTREEBEL_3 587 +#define FRONTIER_MON_ELECTRODE_3 588 +#define FRONTIER_MON_EXPLOUD_3 589 +#define FRONTIER_MON_SHIFTRY_3 590 +#define FRONTIER_MON_GLALIE_3 591 +#define FRONTIER_MON_LUDICOLO_3 592 +#define FRONTIER_MON_HYPNO_3 593 +#define FRONTIER_MON_GOLEM_3 594 +#define FRONTIER_MON_RHYDON_3 595 +#define FRONTIER_MON_ALAKAZAM_3 596 +#define FRONTIER_MON_WEEZING_3 597 +#define FRONTIER_MON_KANGASKHAN_3 598 +#define FRONTIER_MON_ELECTABUZZ_3 599 +#define FRONTIER_MON_TAUROS_3 600 +#define FRONTIER_MON_SLOWBRO_3 601 +#define FRONTIER_MON_SLOWKING_3 602 +#define FRONTIER_MON_MILTANK_3 603 +#define FRONTIER_MON_ALTARIA_3 604 +#define FRONTIER_MON_NIDOQUEEN_3 605 +#define FRONTIER_MON_NIDOKING_3 606 +#define FRONTIER_MON_MAGMAR_3 607 +#define FRONTIER_MON_CRADILY_3 608 +#define FRONTIER_MON_ARMALDO_3 609 +#define FRONTIER_MON_GOLDUCK_3 610 +#define FRONTIER_MON_RAPIDASH_3 611 +#define FRONTIER_MON_MUK_3 612 +#define FRONTIER_MON_GENGAR_3 613 +#define FRONTIER_MON_AMPHAROS_3 614 +#define FRONTIER_MON_SCIZOR_3 615 +#define FRONTIER_MON_HERACROSS_3 616 +#define FRONTIER_MON_URSARING_3 617 +#define FRONTIER_MON_HOUNDOOM_3 618 +#define FRONTIER_MON_DONPHAN_3 619 +#define FRONTIER_MON_CLAYDOL_3 620 +#define FRONTIER_MON_WAILORD_3 621 +#define FRONTIER_MON_NINETALES_3 622 +#define FRONTIER_MON_MACHAMP_3 623 +#define FRONTIER_MON_SHUCKLE_3 624 +#define FRONTIER_MON_STEELIX_3 625 +#define FRONTIER_MON_TENTACRUEL_3 626 +#define FRONTIER_MON_AERODACTYL_3 627 +#define FRONTIER_MON_PORYGON2_3 628 +#define FRONTIER_MON_GARDEVOIR_3 629 +#define FRONTIER_MON_EXEGGUTOR_3 630 +#define FRONTIER_MON_STARMIE_3 631 +#define FRONTIER_MON_FLYGON_3 632 +#define FRONTIER_MON_VENUSAUR_3 633 +#define FRONTIER_MON_VAPOREON_3 634 +#define FRONTIER_MON_JOLTEON_3 635 +#define FRONTIER_MON_FLAREON_3 636 +#define FRONTIER_MON_MEGANIUM_3 637 +#define FRONTIER_MON_ESPEON_3 638 +#define FRONTIER_MON_UMBREON_3 639 +#define FRONTIER_MON_BLASTOISE_3 640 +#define FRONTIER_MON_FERALIGATR_3 641 +#define FRONTIER_MON_AGGRON_3 642 +#define FRONTIER_MON_BLAZIKEN_3 643 +#define FRONTIER_MON_WALREIN_3 644 +#define FRONTIER_MON_SCEPTILE_3 645 +#define FRONTIER_MON_CHARIZARD_3 646 +#define FRONTIER_MON_TYPHLOSION_3 647 +#define FRONTIER_MON_LAPRAS_3 648 +#define FRONTIER_MON_CROBAT_3 649 +#define FRONTIER_MON_SWAMPERT_3 650 +#define FRONTIER_MON_GYARADOS_3 651 +#define FRONTIER_MON_SNORLAX_3 652 +#define FRONTIER_MON_KINGDRA_3 653 +#define FRONTIER_MON_BLISSEY_3 654 +#define FRONTIER_MON_MILOTIC_3 655 +#define FRONTIER_MON_ARCANINE_3 656 +#define FRONTIER_MON_SALAMENCE_3 657 +#define FRONTIER_MON_METAGROSS_3 658 +#define FRONTIER_MON_SLAKING_3 659 + +#define FRONTIER_MON_DUGTRIO_4 660 +#define FRONTIER_MON_MEDICHAM_4 661 +#define FRONTIER_MON_MISDREAVUS_4 662 +#define FRONTIER_MON_FEAROW_4 663 +#define FRONTIER_MON_GRANBULL_4 664 +#define FRONTIER_MON_JYNX_4 665 +#define FRONTIER_MON_DUSCLOPS_4 666 +#define FRONTIER_MON_DODRIO_4 667 +#define FRONTIER_MON_MR_MIME_4 668 +#define FRONTIER_MON_LANTURN_4 669 +#define FRONTIER_MON_BRELOOM_4 670 +#define FRONTIER_MON_FORRETRESS_4 671 +#define FRONTIER_MON_WHISCASH_4 672 +#define FRONTIER_MON_XATU_4 673 +#define FRONTIER_MON_SKARMORY_4 674 +#define FRONTIER_MON_MAROWAK_4 675 +#define FRONTIER_MON_QUAGSIRE_4 676 +#define FRONTIER_MON_CLEFABLE_4 677 +#define FRONTIER_MON_HARIYAMA_4 678 +#define FRONTIER_MON_RAICHU_4 679 +#define FRONTIER_MON_DEWGONG_4 680 +#define FRONTIER_MON_MANECTRIC_4 681 +#define FRONTIER_MON_VILEPLUME_4 682 +#define FRONTIER_MON_VICTREEBEL_4 683 +#define FRONTIER_MON_ELECTRODE_4 684 +#define FRONTIER_MON_EXPLOUD_4 685 +#define FRONTIER_MON_SHIFTRY_4 686 +#define FRONTIER_MON_GLALIE_4 687 +#define FRONTIER_MON_LUDICOLO_4 688 +#define FRONTIER_MON_HYPNO_4 689 +#define FRONTIER_MON_GOLEM_4 690 +#define FRONTIER_MON_RHYDON_4 691 +#define FRONTIER_MON_ALAKAZAM_4 692 +#define FRONTIER_MON_WEEZING_4 693 +#define FRONTIER_MON_KANGASKHAN_4 694 +#define FRONTIER_MON_ELECTABUZZ_4 695 +#define FRONTIER_MON_TAUROS_4 696 +#define FRONTIER_MON_SLOWBRO_4 697 +#define FRONTIER_MON_SLOWKING_4 698 +#define FRONTIER_MON_MILTANK_4 699 +#define FRONTIER_MON_ALTARIA_4 700 +#define FRONTIER_MON_NIDOQUEEN_4 701 +#define FRONTIER_MON_NIDOKING_4 702 +#define FRONTIER_MON_MAGMAR_4 703 +#define FRONTIER_MON_CRADILY_4 704 +#define FRONTIER_MON_ARMALDO_4 705 +#define FRONTIER_MON_GOLDUCK_4 706 +#define FRONTIER_MON_RAPIDASH_4 707 +#define FRONTIER_MON_MUK_4 708 +#define FRONTIER_MON_GENGAR_4 709 +#define FRONTIER_MON_AMPHAROS_4 710 +#define FRONTIER_MON_SCIZOR_4 711 +#define FRONTIER_MON_HERACROSS_4 712 +#define FRONTIER_MON_URSARING_4 713 +#define FRONTIER_MON_HOUNDOOM_4 714 +#define FRONTIER_MON_DONPHAN_4 715 +#define FRONTIER_MON_CLAYDOL_4 716 +#define FRONTIER_MON_WAILORD_4 717 +#define FRONTIER_MON_NINETALES_4 718 +#define FRONTIER_MON_MACHAMP_4 719 +#define FRONTIER_MON_SHUCKLE_4 720 +#define FRONTIER_MON_STEELIX_4 721 +#define FRONTIER_MON_TENTACRUEL_4 722 +#define FRONTIER_MON_AERODACTYL_4 723 +#define FRONTIER_MON_PORYGON2_4 724 +#define FRONTIER_MON_GARDEVOIR_4 725 +#define FRONTIER_MON_EXEGGUTOR_4 726 +#define FRONTIER_MON_STARMIE_4 727 +#define FRONTIER_MON_FLYGON_4 728 +#define FRONTIER_MON_VENUSAUR_4 729 +#define FRONTIER_MON_VAPOREON_4 730 +#define FRONTIER_MON_JOLTEON_4 731 +#define FRONTIER_MON_FLAREON_4 732 +#define FRONTIER_MON_MEGANIUM_4 733 +#define FRONTIER_MON_ESPEON_4 734 +#define FRONTIER_MON_UMBREON_4 735 +#define FRONTIER_MON_BLASTOISE_4 736 +#define FRONTIER_MON_FERALIGATR_4 737 +#define FRONTIER_MON_AGGRON_4 738 +#define FRONTIER_MON_BLAZIKEN_4 739 +#define FRONTIER_MON_WALREIN_4 740 +#define FRONTIER_MON_SCEPTILE_4 741 +#define FRONTIER_MON_CHARIZARD_4 742 +#define FRONTIER_MON_TYPHLOSION_4 743 +#define FRONTIER_MON_LAPRAS_4 744 +#define FRONTIER_MON_CROBAT_4 745 +#define FRONTIER_MON_SWAMPERT_4 746 +#define FRONTIER_MON_GYARADOS_4 747 +#define FRONTIER_MON_SNORLAX_4 748 +#define FRONTIER_MON_KINGDRA_4 749 +#define FRONTIER_MON_BLISSEY_4 750 +#define FRONTIER_MON_MILOTIC_4 751 +#define FRONTIER_MON_ARCANINE_4 752 +#define FRONTIER_MON_SALAMENCE_4 753 +#define FRONTIER_MON_METAGROSS_4 754 +#define FRONTIER_MON_SLAKING_4 755 + +#define FRONTIER_MON_ARTICUNO_1 756 +#define FRONTIER_MON_ZAPDOS_1 757 +#define FRONTIER_MON_MOLTRES_1 758 +#define FRONTIER_MON_RAIKOU_1 759 +#define FRONTIER_MON_ENTEI_1 760 +#define FRONTIER_MON_SUICUNE_1 761 +#define FRONTIER_MON_REGIROCK_1 762 +#define FRONTIER_MON_REGICE_1 763 +#define FRONTIER_MON_REGISTEEL_1 764 +#define FRONTIER_MON_LATIAS_1 765 +#define FRONTIER_MON_LATIOS_1 766 +#define FRONTIER_MON_ARTICUNO_2 767 +#define FRONTIER_MON_ZAPDOS_2 768 +#define FRONTIER_MON_MOLTRES_2 769 +#define FRONTIER_MON_RAIKOU_2 770 +#define FRONTIER_MON_ENTEI_2 771 +#define FRONTIER_MON_SUICUNE_2 772 +#define FRONTIER_MON_REGIROCK_2 773 +#define FRONTIER_MON_REGICE_2 774 +#define FRONTIER_MON_REGISTEEL_2 775 +#define FRONTIER_MON_LATIAS_2 776 +#define FRONTIER_MON_LATIOS_2 777 +#define FRONTIER_MON_ARTICUNO_3 778 +#define FRONTIER_MON_ZAPDOS_3 779 +#define FRONTIER_MON_MOLTRES_3 780 +#define FRONTIER_MON_RAIKOU_3 781 +#define FRONTIER_MON_ENTEI_3 782 +#define FRONTIER_MON_SUICUNE_3 783 +#define FRONTIER_MON_REGIROCK_3 784 +#define FRONTIER_MON_REGICE_3 785 +#define FRONTIER_MON_REGISTEEL_3 786 +#define FRONTIER_MON_LATIAS_3 787 +#define FRONTIER_MON_LATIOS_3 788 +#define FRONTIER_MON_ARTICUNO_4 789 +#define FRONTIER_MON_ZAPDOS_4 790 +#define FRONTIER_MON_MOLTRES_4 791 +#define FRONTIER_MON_RAIKOU_4 792 +#define FRONTIER_MON_ENTEI_4 793 +#define FRONTIER_MON_SUICUNE_4 794 +#define FRONTIER_MON_REGIROCK_4 795 +#define FRONTIER_MON_REGICE_4 796 +#define FRONTIER_MON_REGISTEEL_4 797 +#define FRONTIER_MON_LATIAS_4 798 +#define FRONTIER_MON_LATIOS_4 799 +#define FRONTIER_MON_GENGAR_5 800 +#define FRONTIER_MON_GENGAR_6 801 +#define FRONTIER_MON_GENGAR_7 802 +#define FRONTIER_MON_GENGAR_8 803 +#define FRONTIER_MON_URSARING_5 804 +#define FRONTIER_MON_URSARING_6 805 +#define FRONTIER_MON_URSARING_7 806 +#define FRONTIER_MON_URSARING_8 807 +#define FRONTIER_MON_MACHAMP_5 808 +#define FRONTIER_MON_MACHAMP_6 809 +#define FRONTIER_MON_MACHAMP_7 810 +#define FRONTIER_MON_MACHAMP_8 811 +#define FRONTIER_MON_GARDEVOIR_5 812 +#define FRONTIER_MON_GARDEVOIR_6 813 +#define FRONTIER_MON_GARDEVOIR_7 814 +#define FRONTIER_MON_GARDEVOIR_8 815 +#define FRONTIER_MON_STARMIE_5 816 +#define FRONTIER_MON_STARMIE_6 817 +#define FRONTIER_MON_STARMIE_7 818 +#define FRONTIER_MON_STARMIE_8 819 +#define FRONTIER_MON_LAPRAS_5 820 +#define FRONTIER_MON_LAPRAS_6 821 +#define FRONTIER_MON_LAPRAS_7 822 +#define FRONTIER_MON_LAPRAS_8 823 +#define FRONTIER_MON_SNORLAX_5 824 +#define FRONTIER_MON_SNORLAX_6 825 +#define FRONTIER_MON_SNORLAX_7 826 +#define FRONTIER_MON_SNORLAX_8 827 +#define FRONTIER_MON_SALAMENCE_5 828 +#define FRONTIER_MON_SALAMENCE_6 829 +#define FRONTIER_MON_SALAMENCE_7 830 +#define FRONTIER_MON_SALAMENCE_8 831 +#define FRONTIER_MON_METAGROSS_5 832 +#define FRONTIER_MON_METAGROSS_6 833 +#define FRONTIER_MON_METAGROSS_7 834 +#define FRONTIER_MON_METAGROSS_8 835 +#define FRONTIER_MON_REGIROCK_5 836 +#define FRONTIER_MON_REGIROCK_6 837 +#define FRONTIER_MON_REGICE_5 838 +#define FRONTIER_MON_REGICE_6 839 +#define FRONTIER_MON_REGISTEEL_5 840 +#define FRONTIER_MON_REGISTEEL_6 841 +#define FRONTIER_MON_LATIAS_5 842 +#define FRONTIER_MON_LATIAS_6 843 +#define FRONTIER_MON_LATIAS_7 844 +#define FRONTIER_MON_LATIAS_8 845 +#define FRONTIER_MON_LATIOS_5 846 +#define FRONTIER_MON_LATIOS_6 847 +#define FRONTIER_MON_LATIOS_7 848 +#define FRONTIER_MON_LATIOS_8 849 + +#define FRONTIER_MONS_HIGH_TIER 849 // Mons above this point can only appear > level 50 + +#define FRONTIER_MON_DRAGONITE_1 850 +#define FRONTIER_MON_DRAGONITE_2 851 +#define FRONTIER_MON_DRAGONITE_3 852 +#define FRONTIER_MON_DRAGONITE_4 853 +#define FRONTIER_MON_DRAGONITE_5 854 +#define FRONTIER_MON_DRAGONITE_6 855 +#define FRONTIER_MON_DRAGONITE_7 856 +#define FRONTIER_MON_DRAGONITE_8 857 +#define FRONTIER_MON_DRAGONITE_9 858 +#define FRONTIER_MON_DRAGONITE_10 859 +#define FRONTIER_MON_TYRANITAR_1 860 +#define FRONTIER_MON_TYRANITAR_2 861 +#define FRONTIER_MON_TYRANITAR_3 862 +#define FRONTIER_MON_TYRANITAR_4 863 +#define FRONTIER_MON_TYRANITAR_5 864 +#define FRONTIER_MON_TYRANITAR_6 865 +#define FRONTIER_MON_TYRANITAR_7 866 +#define FRONTIER_MON_TYRANITAR_8 867 +#define FRONTIER_MON_TYRANITAR_9 868 +#define FRONTIER_MON_TYRANITAR_10 869 +#define FRONTIER_MON_ARTICUNO_5 870 +#define FRONTIER_MON_ARTICUNO_6 871 +#define FRONTIER_MON_ZAPDOS_5 872 +#define FRONTIER_MON_ZAPDOS_6 873 +#define FRONTIER_MON_MOLTRES_5 874 +#define FRONTIER_MON_MOLTRES_6 875 +#define FRONTIER_MON_RAIKOU_5 876 +#define FRONTIER_MON_RAIKOU_6 877 +#define FRONTIER_MON_ENTEI_5 878 +#define FRONTIER_MON_ENTEI_6 879 +#define FRONTIER_MON_SUICUNE_5 880 +#define FRONTIER_MON_SUICUNE_6 881 + +#define NUM_FRONTIER_MONS 882 + +#endif //GUARD_CONSTANTS_BATTLE_FRONTIER_MONS_H diff --git a/include/constants/battle_frontier_trainers.h b/include/constants/battle_frontier_trainers.h new file mode 100644 index 000000000..2914b153f --- /dev/null +++ b/include/constants/battle_frontier_trainers.h @@ -0,0 +1,309 @@ +#ifndef GUARD_CONSTANTS_BATTLE_FRONTIER_TRAINERS_H +#define GUARD_CONSTANTS_BATTLE_FRONTIER_TRAINERS_H + +#define FRONTIER_TRAINER_BRADY 0 +#define FRONTIER_TRAINER_CONNER 1 +#define FRONTIER_TRAINER_BRADLEY 2 +#define FRONTIER_TRAINER_CYBIL 3 +#define FRONTIER_TRAINER_RODETTE 4 +#define FRONTIER_TRAINER_PEGGY 5 +#define FRONTIER_TRAINER_KEITH 6 +#define FRONTIER_TRAINER_GRAYSON 7 +#define FRONTIER_TRAINER_GLENN 8 +#define FRONTIER_TRAINER_LILIANA 9 +#define FRONTIER_TRAINER_ELISE 10 +#define FRONTIER_TRAINER_ZOEY 11 +#define FRONTIER_TRAINER_MANUEL 12 +#define FRONTIER_TRAINER_RUSS 13 +#define FRONTIER_TRAINER_DUSTIN 14 +#define FRONTIER_TRAINER_TINA 15 +#define FRONTIER_TRAINER_GILLIAN1 16 +#define FRONTIER_TRAINER_ZOE 17 +#define FRONTIER_TRAINER_CHEN 18 +#define FRONTIER_TRAINER_AL 19 +#define FRONTIER_TRAINER_MITCH 20 +#define FRONTIER_TRAINER_ANNE 21 +#define FRONTIER_TRAINER_ALIZE 22 +#define FRONTIER_TRAINER_LAUREN 23 +#define FRONTIER_TRAINER_KIPP 24 +#define FRONTIER_TRAINER_JASON 25 +#define FRONTIER_TRAINER_JOHN 26 +#define FRONTIER_TRAINER_ANN 27 +#define FRONTIER_TRAINER_EILEEN 28 +#define FRONTIER_TRAINER_CARLIE 29 +#define FRONTIER_TRAINER_GORDON 30 +#define FRONTIER_TRAINER_AYDEN 31 +#define FRONTIER_TRAINER_MARCO 32 +#define FRONTIER_TRAINER_CIERRA 33 +#define FRONTIER_TRAINER_MARCY 34 +#define FRONTIER_TRAINER_KATHY 35 +#define FRONTIER_TRAINER_PEYTON 36 +#define FRONTIER_TRAINER_JULIAN 37 +#define FRONTIER_TRAINER_QUINN 38 +#define FRONTIER_TRAINER_HAYLEE 39 +#define FRONTIER_TRAINER_AMANDA 40 +#define FRONTIER_TRAINER_STACY 41 +#define FRONTIER_TRAINER_RAFAEL 42 +#define FRONTIER_TRAINER_OLIVER 43 +#define FRONTIER_TRAINER_PAYTON 44 +#define FRONTIER_TRAINER_PAMELA 45 +#define FRONTIER_TRAINER_ELIZA 46 +#define FRONTIER_TRAINER_MARISA 47 +#define FRONTIER_TRAINER_LEWIS 48 +#define FRONTIER_TRAINER_YOSHI 49 +#define FRONTIER_TRAINER_DESTIN 50 +#define FRONTIER_TRAINER_KEON 51 +#define FRONTIER_TRAINER_STUART 52 +#define FRONTIER_TRAINER_NESTOR 53 +#define FRONTIER_TRAINER_DERRICK 54 +#define FRONTIER_TRAINER_BRYSON 55 +#define FRONTIER_TRAINER_CLAYTON 56 +#define FRONTIER_TRAINER_TRENTON 57 +#define FRONTIER_TRAINER_JENSON 58 +#define FRONTIER_TRAINER_WESLEY 59 +#define FRONTIER_TRAINER_ANTON 60 +#define FRONTIER_TRAINER_LAWSON 61 +#define FRONTIER_TRAINER_SAMMY 62 +#define FRONTIER_TRAINER_ARNIE 63 +#define FRONTIER_TRAINER_ADRIAN 64 +#define FRONTIER_TRAINER_TRISTAN 65 +#define FRONTIER_TRAINER_JULIANA 66 +#define FRONTIER_TRAINER_RYLEE 67 +#define FRONTIER_TRAINER_CHELSEA 68 +#define FRONTIER_TRAINER_DANELA 69 +#define FRONTIER_TRAINER_LIZBETH 70 +#define FRONTIER_TRAINER_AMELIA 71 +#define FRONTIER_TRAINER_JILLIAN 72 +#define FRONTIER_TRAINER_ABBIE 73 +#define FRONTIER_TRAINER_BRIANA 74 +#define FRONTIER_TRAINER_ANTONIO 75 +#define FRONTIER_TRAINER_JADEN 76 +#define FRONTIER_TRAINER_DAKOTA 77 +#define FRONTIER_TRAINER_BRAYDEN 78 +#define FRONTIER_TRAINER_CORSON 79 +#define FRONTIER_TRAINER_TREVIN 80 +#define FRONTIER_TRAINER_PATRICK 81 +#define FRONTIER_TRAINER_KADEN 82 +#define FRONTIER_TRAINER_MAXWELL 83 +#define FRONTIER_TRAINER_DARYL 84 +#define FRONTIER_TRAINER_KENNETH 85 +#define FRONTIER_TRAINER_RICH 86 +#define FRONTIER_TRAINER_CADEN 87 +#define FRONTIER_TRAINER_MARLON 88 +#define FRONTIER_TRAINER_NASH 89 +#define FRONTIER_TRAINER_ROBBY 90 +#define FRONTIER_TRAINER_REECE 91 +#define FRONTIER_TRAINER_KATHRYN 92 +#define FRONTIER_TRAINER_ELLEN 93 +#define FRONTIER_TRAINER_RAMON 94 +#define FRONTIER_TRAINER_ARTHUR 95 +#define FRONTIER_TRAINER_ALONDRA 96 +#define FRONTIER_TRAINER_ADRIANA 97 +#define FRONTIER_TRAINER_MALIK 98 +#define FRONTIER_TRAINER_JILL 99 +#define FRONTIER_TRAINER_ERIK 100 +#define FRONTIER_TRAINER_YAZMIN 101 +#define FRONTIER_TRAINER_JAMAL 102 +#define FRONTIER_TRAINER_LESLIE 103 +#define FRONTIER_TRAINER_DAVE 104 +#define FRONTIER_TRAINER_CARLO 105 +#define FRONTIER_TRAINER_EMILIA 106 +#define FRONTIER_TRAINER_DALIA 107 +#define FRONTIER_TRAINER_HITOMI 108 +#define FRONTIER_TRAINER_RICARDO 109 +#define FRONTIER_TRAINER_SHIZUKA 110 +#define FRONTIER_TRAINER_JOANA 111 +#define FRONTIER_TRAINER_KELLY 112 +#define FRONTIER_TRAINER_RAYNA 113 +#define FRONTIER_TRAINER_EVAN 114 +#define FRONTIER_TRAINER_JORDAN 115 +#define FRONTIER_TRAINER_JOEL 116 +#define FRONTIER_TRAINER_KRISTEN 117 +#define FRONTIER_TRAINER_SELPHY 118 +#define FRONTIER_TRAINER_CHLOE 119 +#define FRONTIER_TRAINER_NORTON 120 +#define FRONTIER_TRAINER_LUKAS 121 +#define FRONTIER_TRAINER_ZACH 122 +#define FRONTIER_TRAINER_KAITLYN 123 +#define FRONTIER_TRAINER_BREANNA 124 +#define FRONTIER_TRAINER_KENDRA 125 +#define FRONTIER_TRAINER_MOLLY 126 +#define FRONTIER_TRAINER_JAZMIN 127 +#define FRONTIER_TRAINER_KELSEY 128 +#define FRONTIER_TRAINER_JALEN 129 +#define FRONTIER_TRAINER_GRIFFEN 130 +#define FRONTIER_TRAINER_XANDER 131 +#define FRONTIER_TRAINER_MARVIN 132 +#define FRONTIER_TRAINER_BRENNAN 133 +#define FRONTIER_TRAINER_BALEY 134 +#define FRONTIER_TRAINER_ZACKARY 135 +#define FRONTIER_TRAINER_GABRIEL 136 +#define FRONTIER_TRAINER_EMILY 137 +#define FRONTIER_TRAINER_JORDYN 138 +#define FRONTIER_TRAINER_SOFIA 139 +#define FRONTIER_TRAINER_BRADEN 140 +#define FRONTIER_TRAINER_KAYDEN 141 +#define FRONTIER_TRAINER_COOPER 142 +#define FRONTIER_TRAINER_JULIA 143 +#define FRONTIER_TRAINER_AMARA 144 +#define FRONTIER_TRAINER_LYNN 145 +#define FRONTIER_TRAINER_JOVAN 146 +#define FRONTIER_TRAINER_DOMINIC 147 +#define FRONTIER_TRAINER_NIKOLAS 148 +#define FRONTIER_TRAINER_VALERIA 149 +#define FRONTIER_TRAINER_DELANEY 150 +#define FRONTIER_TRAINER_MEGHAN 151 +#define FRONTIER_TRAINER_ROBERTO 152 +#define FRONTIER_TRAINER_DAMIAN 153 +#define FRONTIER_TRAINER_BRODY 154 +#define FRONTIER_TRAINER_GRAHAM 155 +#define FRONTIER_TRAINER_TYLOR 156 +#define FRONTIER_TRAINER_JAREN 157 +#define FRONTIER_TRAINER_CORDELL 158 +#define FRONTIER_TRAINER_JAZLYN 159 +#define FRONTIER_TRAINER_ZACHERY 160 +#define FRONTIER_TRAINER_JOHAN 161 +#define FRONTIER_TRAINER_SHEA 162 +#define FRONTIER_TRAINER_KAILA 163 +#define FRONTIER_TRAINER_ISIAH 164 +#define FRONTIER_TRAINER_GARRETT 165 +#define FRONTIER_TRAINER_HAYLIE 166 +#define FRONTIER_TRAINER_MEGAN 167 +#define FRONTIER_TRAINER_ISSAC 168 +#define FRONTIER_TRAINER_QUINTON 169 +#define FRONTIER_TRAINER_SALMA 170 +#define FRONTIER_TRAINER_ANSLEY 171 +#define FRONTIER_TRAINER_HOLDEN 172 +#define FRONTIER_TRAINER_LUCA 173 +#define FRONTIER_TRAINER_JAMISON 174 +#define FRONTIER_TRAINER_GUNNAR 175 +#define FRONTIER_TRAINER_CRAIG 176 +#define FRONTIER_TRAINER_PIERCE 177 +#define FRONTIER_TRAINER_REGINA 178 +#define FRONTIER_TRAINER_ALISON 179 +#define FRONTIER_TRAINER_HANK 180 +#define FRONTIER_TRAINER_EARL 181 +#define FRONTIER_TRAINER_RAMIRO 182 +#define FRONTIER_TRAINER_HUNTER 183 +#define FRONTIER_TRAINER_AIDEN 184 +#define FRONTIER_TRAINER_XAVIER 185 +#define FRONTIER_TRAINER_CLINTON 186 +#define FRONTIER_TRAINER_JESSE 187 +#define FRONTIER_TRAINER_EDUARDO 188 +#define FRONTIER_TRAINER_HAL 189 +#define FRONTIER_TRAINER_GAGE 190 +#define FRONTIER_TRAINER_ARNOLD 191 +#define FRONTIER_TRAINER_JARRETT 192 +#define FRONTIER_TRAINER_GARETT 193 +#define FRONTIER_TRAINER_EMANUEL 194 +#define FRONTIER_TRAINER_GUSTAVO 195 +#define FRONTIER_TRAINER_KAMERON 196 +#define FRONTIER_TRAINER_ALFREDO 197 +#define FRONTIER_TRAINER_RUBEN 198 +#define FRONTIER_TRAINER_LAMAR 199 +#define FRONTIER_TRAINER_JAXON 200 +#define FRONTIER_TRAINER_LOGAN 201 +#define FRONTIER_TRAINER_EMILEE 202 +#define FRONTIER_TRAINER_JOSIE 203 +#define FRONTIER_TRAINER_ARMANDO 204 +#define FRONTIER_TRAINER_SKYLER 205 +#define FRONTIER_TRAINER_RUTH 206 +#define FRONTIER_TRAINER_MELODY 207 +#define FRONTIER_TRAINER_PEDRO 208 +#define FRONTIER_TRAINER_ERICK 209 +#define FRONTIER_TRAINER_ELAINE 210 +#define FRONTIER_TRAINER_JOYCE 211 +#define FRONTIER_TRAINER_TODD 212 +#define FRONTIER_TRAINER_GAVIN 213 +#define FRONTIER_TRAINER_MALORY 214 +#define FRONTIER_TRAINER_ESTHER 215 +#define FRONTIER_TRAINER_OSCAR 216 +#define FRONTIER_TRAINER_WILSON 217 +#define FRONTIER_TRAINER_CLARE 218 +#define FRONTIER_TRAINER_TESS 219 +#define FRONTIER_TRAINER_LEON 220 +#define FRONTIER_TRAINER_ALONZO 221 +#define FRONTIER_TRAINER_VINCE 222 +#define FRONTIER_TRAINER_BRYON 223 +#define FRONTIER_TRAINER_AVA 224 +#define FRONTIER_TRAINER_MIRIAM 225 +#define FRONTIER_TRAINER_CARRIE 226 +#define FRONTIER_TRAINER_GILLIAN2 227 +#define FRONTIER_TRAINER_TYLER 228 +#define FRONTIER_TRAINER_CHAZ 229 +#define FRONTIER_TRAINER_NELSON 230 +#define FRONTIER_TRAINER_SHANIA 231 +#define FRONTIER_TRAINER_STELLA 232 +#define FRONTIER_TRAINER_DORINE 233 +#define FRONTIER_TRAINER_MADDOX 234 +#define FRONTIER_TRAINER_DAVIN 235 +#define FRONTIER_TRAINER_TREVON 236 +#define FRONTIER_TRAINER_MATEO 237 +#define FRONTIER_TRAINER_BRET 238 +#define FRONTIER_TRAINER_RAUL 239 +#define FRONTIER_TRAINER_KAY 240 +#define FRONTIER_TRAINER_ELENA 241 +#define FRONTIER_TRAINER_ALANA 242 +#define FRONTIER_TRAINER_ALEXAS 243 +#define FRONTIER_TRAINER_WESTON 244 +#define FRONTIER_TRAINER_JASPER 245 +#define FRONTIER_TRAINER_NADIA 246 +#define FRONTIER_TRAINER_MIRANDA 247 +#define FRONTIER_TRAINER_EMMA 248 +#define FRONTIER_TRAINER_ROLANDO 249 +#define FRONTIER_TRAINER_STANLY 250 +#define FRONTIER_TRAINER_DARIO 251 +#define FRONTIER_TRAINER_KARLEE 252 +#define FRONTIER_TRAINER_JAYLIN 253 +#define FRONTIER_TRAINER_INGRID 254 +#define FRONTIER_TRAINER_DELILAH 255 +#define FRONTIER_TRAINER_CARLY 256 +#define FRONTIER_TRAINER_LEXIE 257 +#define FRONTIER_TRAINER_MILLER 258 +#define FRONTIER_TRAINER_MARV 259 +#define FRONTIER_TRAINER_LAYTON 260 +#define FRONTIER_TRAINER_BROOKS 261 +#define FRONTIER_TRAINER_GREGORY 262 +#define FRONTIER_TRAINER_REESE 263 +#define FRONTIER_TRAINER_MASON 264 +#define FRONTIER_TRAINER_TOBY 265 +#define FRONTIER_TRAINER_DOROTHY 266 +#define FRONTIER_TRAINER_PIPER 267 +#define FRONTIER_TRAINER_FINN 268 +#define FRONTIER_TRAINER_SAMIR 269 +#define FRONTIER_TRAINER_FIONA 270 +#define FRONTIER_TRAINER_GLORIA 271 +#define FRONTIER_TRAINER_NICO 272 +#define FRONTIER_TRAINER_JEREMY 273 +#define FRONTIER_TRAINER_CAITLIN 274 +#define FRONTIER_TRAINER_REENA 275 +#define FRONTIER_TRAINER_AVERY 276 +#define FRONTIER_TRAINER_LIAM 277 +#define FRONTIER_TRAINER_THEO 278 +#define FRONTIER_TRAINER_BAILEY 279 +#define FRONTIER_TRAINER_HUGO 280 +#define FRONTIER_TRAINER_BRYCE 281 +#define FRONTIER_TRAINER_GIDEON 282 +#define FRONTIER_TRAINER_TRISTON 283 +#define FRONTIER_TRAINER_CHARLES 284 +#define FRONTIER_TRAINER_RAYMOND 285 +#define FRONTIER_TRAINER_DIRK 286 +#define FRONTIER_TRAINER_HAROLD 287 +#define FRONTIER_TRAINER_OMAR 288 +#define FRONTIER_TRAINER_PETER 289 +#define FRONTIER_TRAINER_DEV 290 +#define FRONTIER_TRAINER_COREY 291 +#define FRONTIER_TRAINER_ANDRE 292 +#define FRONTIER_TRAINER_FERRIS 293 +#define FRONTIER_TRAINER_ALIVIA 294 +#define FRONTIER_TRAINER_PAIGE 295 +#define FRONTIER_TRAINER_ANYA 296 +#define FRONTIER_TRAINER_DAWN 297 +#define FRONTIER_TRAINER_ABBY 298 +#define FRONTIER_TRAINER_GRETEL 299 + +#define FRONTIER_TRAINERS_COUNT 300 + +// special trainer IDs begin at 300, see constants/trainers.h + +#endif // GUARD_CONSTANTS_BATTLE_FRONTIER_TRAINERS_H diff --git a/include/constants/battle_tent_mons.h b/include/constants/battle_tent_mons.h new file mode 100644 index 000000000..d9fc89a20 --- /dev/null +++ b/include/constants/battle_tent_mons.h @@ -0,0 +1,173 @@ +#ifndef GUARD_CONSTANTS_BATTLE_TENT_MONS_H +#define GUARD_CONSTANTS_BATTLE_TENT_MONS_H + +#define SLATEPORT_TENT_MON_ZIGZAGOON_1 0 +#define SLATEPORT_TENT_MON_ZIGZAGOON_2 1 +#define SLATEPORT_TENT_MON_BEAUTIFLY 2 +#define SLATEPORT_TENT_MON_DUSTOX 3 +#define SLATEPORT_TENT_MON_WAILMER_1 4 +#define SLATEPORT_TENT_MON_WAILMER_2 5 +#define SLATEPORT_TENT_MON_MARILL_1 6 +#define SLATEPORT_TENT_MON_WINGULL_1 7 +#define SLATEPORT_TENT_MON_PELIPPER_1 8 +#define SLATEPORT_TENT_MON_CACNEA_1 9 +#define SLATEPORT_TENT_MON_LOMBRE_1 10 +#define SLATEPORT_TENT_MON_LOTAD 11 +#define SLATEPORT_TENT_MON_SEEDOT 12 +#define SLATEPORT_TENT_MON_NUZLEAF 13 +#define SLATEPORT_TENT_MON_NINJASK_1 14 +#define SLATEPORT_TENT_MON_NINJASK_2 15 +#define SLATEPORT_TENT_MON_GRAVELER 16 +#define SLATEPORT_TENT_MON_BALTOY 17 +#define SLATEPORT_TENT_MON_MIGHTYENA_1 18 +#define SLATEPORT_TENT_MON_MIGHTYENA_2 19 +#define SLATEPORT_TENT_MON_LINOONE 20 +#define SLATEPORT_TENT_MON_GOLDEEN 21 +#define SLATEPORT_TENT_MON_ELECTRIKE_1 22 +#define SLATEPORT_TENT_MON_VOLTORB 23 +#define SLATEPORT_TENT_MON_ARON_1 24 +#define SLATEPORT_TENT_MON_ARON_2 25 +#define SLATEPORT_TENT_MON_TRAPINCH_1 26 +#define SLATEPORT_TENT_MON_CACNEA_2 27 +#define SLATEPORT_TENT_MON_TAILLOW 28 +#define SLATEPORT_TENT_MON_SWELLOW 29 +#define SLATEPORT_TENT_MON_GOLBAT_1 30 +#define SLATEPORT_TENT_MON_LOUDRED 31 +#define SLATEPORT_TENT_MON_SPINDA 32 +#define SLATEPORT_TENT_MON_MAGNEMITE 33 +#define SLATEPORT_TENT_MON_WHISMUR 34 +#define SLATEPORT_TENT_MON_MAKUHITA 35 +#define SLATEPORT_TENT_MON_NUMEL_1 36 +#define SLATEPORT_TENT_MON_BARBOACH 37 +#define SLATEPORT_TENT_MON_TENTACOOL 38 +#define SLATEPORT_TENT_MON_VIGOROTH 39 +#define SLATEPORT_TENT_MON_MAGIKARP 40 +#define SLATEPORT_TENT_MON_SEVIPER_1 41 +#define SLATEPORT_TENT_MON_SOLROCK 42 +#define SLATEPORT_TENT_MON_KECLEON_1 43 +#define SLATEPORT_TENT_MON_KECLEON_2 44 +#define SLATEPORT_TENT_MON_SHROOMISH_1 45 +#define SLATEPORT_TENT_MON_SHROOMISH_2 46 +#define SLATEPORT_TENT_MON_LOMBRE_2 47 +#define SLATEPORT_TENT_MON_NUMEL_2 48 +#define SLATEPORT_TENT_MON_TRAPINCH_2 49 +#define SLATEPORT_TENT_MON_PELIPPER_2 50 +#define SLATEPORT_TENT_MON_WINGULL_2 51 +#define SLATEPORT_TENT_MON_MARILL_2 52 +#define SLATEPORT_TENT_MON_SKITTY 53 +#define SLATEPORT_TENT_MON_SEVIPER_2 54 +#define SLATEPORT_TENT_MON_GOLBAT_2 55 +#define SLATEPORT_TENT_MON_RALTS 56 +#define SLATEPORT_TENT_MON_SANDSHREW 57 +#define SLATEPORT_TENT_MON_SWALOT 58 +#define SLATEPORT_TENT_MON_VOLBEAT 59 +#define SLATEPORT_TENT_MON_ILLUMISE 60 +#define SLATEPORT_TENT_MON_KADABRA 61 +#define SLATEPORT_TENT_MON_KIRLIA 62 +#define SLATEPORT_TENT_MON_BRELOOM 63 +#define SLATEPORT_TENT_MON_PLUSLE_1 64 +#define SLATEPORT_TENT_MON_PLUSLE_2 65 +#define SLATEPORT_TENT_MON_ELECTRIKE_2 66 +#define SLATEPORT_TENT_MON_SWABLU 67 +#define SLATEPORT_TENT_MON_MACHOP 68 +#define SLATEPORT_TENT_MON_MACHOKE 69 + +#define NUM_SLATEPORT_TENT_MONS 70 + +#define VERDANTURF_TENT_MON_POOCHYENA 0 +#define VERDANTURF_TENT_MON_ZIGZAGOON 1 +#define VERDANTURF_TENT_MON_DUSTOX 2 +#define VERDANTURF_TENT_MON_TAILLOW 3 +#define VERDANTURF_TENT_MON_SHROOMISH 4 +#define VERDANTURF_TENT_MON_MACHOP 5 +#define VERDANTURF_TENT_MON_MAGIKARP 6 +#define VERDANTURF_TENT_MON_BARBOACH 7 +#define VERDANTURF_TENT_MON_WINGULL 8 +#define VERDANTURF_TENT_MON_ARON_1 9 +#define VERDANTURF_TENT_MON_NUMEL_1 10 +#define VERDANTURF_TENT_MON_SWALOT 11 +#define VERDANTURF_TENT_MON_KECLEON 12 +#define VERDANTURF_TENT_MON_BALTOY 13 +#define VERDANTURF_TENT_MON_NINJASK 14 +#define VERDANTURF_TENT_MON_MAKUHITA 15 +#define VERDANTURF_TENT_MON_SWABLU 16 +#define VERDANTURF_TENT_MON_GOLDEEN_1 17 +#define VERDANTURF_TENT_MON_LOTAD 18 +#define VERDANTURF_TENT_MON_NUMEL_2 19 +#define VERDANTURF_TENT_MON_LINOONE 20 +#define VERDANTURF_TENT_MON_SEVIPER 21 +#define VERDANTURF_TENT_MON_SKARMORY 22 +#define VERDANTURF_TENT_MON_SWELLOW 23 +#define VERDANTURF_TENT_MON_GOLDEEN_2 24 +#define VERDANTURF_TENT_MON_ELECTRIKE 25 +#define VERDANTURF_TENT_MON_NUZLEAF 26 +#define VERDANTURF_TENT_MON_ARON_2 27 +#define VERDANTURF_TENT_MON_MIGHTYENA 28 +#define VERDANTURF_TENT_MON_SOLROCK 29 +#define VERDANTURF_TENT_MON_GRAVELER 30 +#define VERDANTURF_TENT_MON_KADABRA 31 +#define VERDANTURF_TENT_MON_VOLTORB 32 +#define VERDANTURF_TENT_MON_MAGNEMITE 33 +#define VERDANTURF_TENT_MON_PELIPPER 34 +#define VERDANTURF_TENT_MON_LOUDRED 35 +#define VERDANTURF_TENT_MON_MARILL 36 +#define VERDANTURF_TENT_MON_TRAPINCH 37 +#define VERDANTURF_TENT_MON_TENTACOOL 38 +#define VERDANTURF_TENT_MON_VIGOROTH 39 +#define VERDANTURF_TENT_MON_WAILMER 40 +#define VERDANTURF_TENT_MON_ILLUMISE 41 +#define VERDANTURF_TENT_MON_MACHOKE 42 +#define VERDANTURF_TENT_MON_WHISMUR 43 +#define VERDANTURF_TENT_MON_CACNEA 44 + +#define NUM_VERDANTURF_TENT_MONS 45 + +#define FALLARBOR_TENT_MON_NUMEL 0 +#define FALLARBOR_TENT_MON_LINOONE_1 1 +#define FALLARBOR_TENT_MON_PLUSLE 2 +#define FALLARBOR_TENT_MON_POOCHYENA 3 +#define FALLARBOR_TENT_MON_KECLEON 4 +#define FALLARBOR_TENT_MON_MAGIKARP 5 +#define FALLARBOR_TENT_MON_SOLROCK 6 +#define FALLARBOR_TENT_MON_MAKUHITA 7 +#define FALLARBOR_TENT_MON_MACHOKE 8 +#define FALLARBOR_TENT_MON_NINCADA 9 +#define FALLARBOR_TENT_MON_BEAUTIFLY 10 +#define FALLARBOR_TENT_MON_DUSTOX 11 +#define FALLARBOR_TENT_MON_ILLUMISE 12 +#define FALLARBOR_TENT_MON_VOLBEAT 13 +#define FALLARBOR_TENT_MON_NINJASK_1 14 +#define FALLARBOR_TENT_MON_NINJASK_2 15 +#define FALLARBOR_TENT_MON_ARON_1 16 +#define FALLARBOR_TENT_MON_ARON_2 17 +#define FALLARBOR_TENT_MON_ELECTRIKE 18 +#define FALLARBOR_TENT_MON_MAGNEMITE 19 +#define FALLARBOR_TENT_MON_VOLTORB 20 +#define FALLARBOR_TENT_MON_WHISMUR 21 +#define FALLARBOR_TENT_MON_LOUDRED 22 +#define FALLARBOR_TENT_MON_LINOONE_2 23 +#define FALLARBOR_TENT_MON_MIGHTYENA 24 +#define FALLARBOR_TENT_MON_SWABLU 25 +#define FALLARBOR_TENT_MON_SKARMORY 26 +#define FALLARBOR_TENT_MON_GOLBAT 27 +#define FALLARBOR_TENT_MON_WINGULL 28 +#define FALLARBOR_TENT_MON_PELIPPER 29 +#define FALLARBOR_TENT_MON_BARBOACH 30 +#define FALLARBOR_TENT_MON_WAILMER 31 +#define FALLARBOR_TENT_MON_MARILL 32 +#define FALLARBOR_TENT_MON_GOLDEEN_1 33 +#define FALLARBOR_TENT_MON_GOLDEEN_2 34 +#define FALLARBOR_TENT_MON_TRAPINCH 35 +#define FALLARBOR_TENT_MON_BALTOY 36 +#define FALLARBOR_TENT_MON_GRAVELER 37 +#define FALLARBOR_TENT_MON_SANDSHREW 38 +#define FALLARBOR_TENT_MON_SWALOT 39 +#define FALLARBOR_TENT_MON_SHROOMISH 40 +#define FALLARBOR_TENT_MON_KIRLIA 41 +#define FALLARBOR_TENT_MON_LOMBRE 42 +#define FALLARBOR_TENT_MON_NUZLEAF 43 +#define FALLARBOR_TENT_MON_CACNEA 44 + +#define NUM_FALLARBOR_TENT_MONS 45 + +#endif // GUARD_CONSTANTS_BATTLE_TENT_MONS_H diff --git a/include/constants/battle_tent_trainers.h b/include/constants/battle_tent_trainers.h new file mode 100644 index 000000000..3629da0ca --- /dev/null +++ b/include/constants/battle_tent_trainers.h @@ -0,0 +1,99 @@ +#ifndef GUARD_CONSTANTS_BATTLE_TENT_TRAINERS_H +#define GUARD_CONSTANTS_BATTLE_TENT_TRAINERS_H + +#define SLATEPORT_TENT_TRAINER_JOLIE 0 +#define SLATEPORT_TENT_TRAINER_MALACHI 1 +#define SLATEPORT_TENT_TRAINER_KELSIE 2 +#define SLATEPORT_TENT_TRAINER_DAVON 3 +#define SLATEPORT_TENT_TRAINER_GLENDA 4 +#define SLATEPORT_TENT_TRAINER_HELENA 5 +#define SLATEPORT_TENT_TRAINER_RODOLFO 6 +#define SLATEPORT_TENT_TRAINER_DAVION 7 +#define SLATEPORT_TENT_TRAINER_KENDALL 8 +#define SLATEPORT_TENT_TRAINER_COLTEN 9 +#define SLATEPORT_TENT_TRAINER_IRVIN 10 +#define SLATEPORT_TENT_TRAINER_SHAUN 11 +#define SLATEPORT_TENT_TRAINER_KYLER 12 +#define SLATEPORT_TENT_TRAINER_MAGGIE 13 +#define SLATEPORT_TENT_TRAINER_STEPHON 14 +#define SLATEPORT_TENT_TRAINER_REBECCA 15 +#define SLATEPORT_TENT_TRAINER_REGGIE 16 +#define SLATEPORT_TENT_TRAINER_JANAE 17 +#define SLATEPORT_TENT_TRAINER_CAIDEN 18 +#define SLATEPORT_TENT_TRAINER_KIRSTEN 19 +#define SLATEPORT_TENT_TRAINER_KURTIS 20 +#define SLATEPORT_TENT_TRAINER_STEFAN 21 +#define SLATEPORT_TENT_TRAINER_AVERY 22 +#define SLATEPORT_TENT_TRAINER_DWANE 23 +#define SLATEPORT_TENT_TRAINER_MCKENNA 24 +#define SLATEPORT_TENT_TRAINER_CAMRYN 25 +#define SLATEPORT_TENT_TRAINER_NATASHA 26 +#define SLATEPORT_TENT_TRAINER_AUSTYN 27 +#define SLATEPORT_TENT_TRAINER_DONOVAN 28 +#define SLATEPORT_TENT_TRAINER_TAMIA 29 + +#define VERDANTURF_TENT_TRAINER_BRENNA 0 +#define VERDANTURF_TENT_TRAINER_DILAN 1 +#define VERDANTURF_TENT_TRAINER_ELIANA 2 +#define VERDANTURF_TENT_TRAINER_MARKUS 3 +#define VERDANTURF_TENT_TRAINER_CAITLYN 4 +#define VERDANTURF_TENT_TRAINER_DESIREE 5 +#define VERDANTURF_TENT_TRAINER_RONALD 6 +#define VERDANTURF_TENT_TRAINER_ASHTEN 7 +#define VERDANTURF_TENT_TRAINER_GERARD 8 +#define VERDANTURF_TENT_TRAINER_BRADLY 9 +#define VERDANTURF_TENT_TRAINER_DENNIS 10 +#define VERDANTURF_TENT_TRAINER_PRESTIN 11 +#define VERDANTURF_TENT_TRAINER_ERNESTO 12 +#define VERDANTURF_TENT_TRAINER_NALA 13 +#define VERDANTURF_TENT_TRAINER_DARNELL 14 +#define VERDANTURF_TENT_TRAINER_ASHLYN 15 +#define VERDANTURF_TENT_TRAINER_ADDISON 16 +#define VERDANTURF_TENT_TRAINER_JUSTINE 17 +#define VERDANTURF_TENT_TRAINER_TYSON 18 +#define VERDANTURF_TENT_TRAINER_LAILA 19 +#define VERDANTURF_TENT_TRAINER_WAREN 20 +#define VERDANTURF_TENT_TRAINER_TOBIAS 21 +#define VERDANTURF_TENT_TRAINER_JOSIAH 22 +#define VERDANTURF_TENT_TRAINER_DION 23 +#define VERDANTURF_TENT_TRAINER_KENZIE 24 +#define VERDANTURF_TENT_TRAINER_LILLIAN 25 +#define VERDANTURF_TENT_TRAINER_LESLEY 26 +#define VERDANTURF_TENT_TRAINER_MARQUIS 27 +#define VERDANTURF_TENT_TRAINER_FREDDY 28 +#define VERDANTURF_TENT_TRAINER_CECILIA 29 + +#define FALLARBOR_TENT_TRAINER_AMBER 0 +#define FALLARBOR_TENT_TRAINER_JAVIER 1 +#define FALLARBOR_TENT_TRAINER_NATALIA 2 +#define FALLARBOR_TENT_TRAINER_TREVE 3 +#define FALLARBOR_TENT_TRAINER_ARIANNA 4 +#define FALLARBOR_TENT_TRAINER_JADYN 5 +#define FALLARBOR_TENT_TRAINER_GERARDO 6 +#define FALLARBOR_TENT_TRAINER_JONN 7 +#define FALLARBOR_TENT_TRAINER_ESTEBAN 8 +#define FALLARBOR_TENT_TRAINER_JAMESON 9 +#define FALLARBOR_TENT_TRAINER_ALANZO 10 +#define FALLARBOR_TENT_TRAINER_HOWARD 11 +#define FALLARBOR_TENT_TRAINER_CONRAD 12 +#define FALLARBOR_TENT_TRAINER_MAKENNA 13 +#define FALLARBOR_TENT_TRAINER_BRAYAN 14 +#define FALLARBOR_TENT_TRAINER_MARIANA 15 +#define FALLARBOR_TENT_TRAINER_SHELDON 16 +#define FALLARBOR_TENT_TRAINER_GIANNA 17 +#define FALLARBOR_TENT_TRAINER_YAHIR 18 +#define FALLARBOR_TENT_TRAINER_BRITNEY 19 +#define FALLARBOR_TENT_TRAINER_HECTER 20 +#define FALLARBOR_TENT_TRAINER_TANNOR 21 +#define FALLARBOR_TENT_TRAINER_BENJI 22 +#define FALLARBOR_TENT_TRAINER_RORY 23 +#define FALLARBOR_TENT_TRAINER_ELEANOR 24 +#define FALLARBOR_TENT_TRAINER_EVELYN 25 +#define FALLARBOR_TENT_TRAINER_ARIELLE 26 +#define FALLARBOR_TENT_TRAINER_CONNAR 27 +#define FALLARBOR_TENT_TRAINER_MAURICE 28 +#define FALLARBOR_TENT_TRAINER_KIANNA 29 + +#define NUM_BATTLE_TENT_TRAINERS 30 + +#endif // GUARD_CONSTANTS_BATTLE_TENT_TRAINERS_H diff --git a/include/constants/flags.h b/include/constants/flags.h index be0899691..1163e394f 100644 --- a/include/constants/flags.h +++ b/include/constants/flags.h @@ -1,6 +1,8 @@ #ifndef GUARD_CONSTANTS_FLAGS_H #define GUARD_CONSTANTS_FLAGS_H +#include "constants/opponents.h" + // Temporary Flags // These temporary flags are are cleared every time a map is loaded. They are used // for things like shortening an NPCs introduction text if the player already spoke @@ -533,8 +535,6 @@ #define FLAG_MYSTERY_EVENT_14 0x1F2 #define FLAG_MYSTERY_EVENT_15 0x1F3 -#define FLAG_TRICK_HOUSE_END_ROOM 0x1F5 // Trick House End Room Flag - // Hidden Items -- sorted by location #define FLAG_HIDDEN_ITEMS_START 0x1F4 #define FLAG_HIDDEN_ITEM_TRICK_HOUSE_NUGGET (FLAG_HIDDEN_ITEMS_START + 0x01) @@ -1342,13 +1342,17 @@ #define FLAG_UNUSED_0x4FF 0x4FF // Unused Flag -#define FLAG_TRAINER_FLAG_START 0x500 -#define TRAINERS_FLAG_NO 0x356 +// Trainer Flags +// Trainer flags occupy 0x500 - 0x85F, the last 9 of which are unused +// See constants/opponents.h. The values there + FLAG_TRAINER_FLAG_START are the flag IDs -#define SYSTEM_FLAGS (FLAG_TRAINER_FLAG_START + TRAINERS_FLAG_NO + 0xA) // 0x860 +#define TRAINER_FLAGS_START 0x500 +#define TRAINER_FLAGS_END (TRAINER_FLAGS_START + MAX_TRAINERS_COUNT - 1) // 0x85F // System Flags +#define SYSTEM_FLAGS (TRAINER_FLAGS_END + 1) // 0x860 + #define FLAG_SYS_POKEMON_GET (SYSTEM_FLAGS + 0) // FLAG_0x860 #define FLAG_SYS_POKEDEX_GET (SYSTEM_FLAGS + 1) #define FLAG_SYS_POKENAV_GET (SYSTEM_FLAGS + 2) diff --git a/include/constants/global.h b/include/constants/global.h index 19e23d52a..7c96de511 100644 --- a/include/constants/global.h +++ b/include/constants/global.h @@ -58,6 +58,7 @@ #define TRAINER_ID_LENGTH 4 #define MAX_MON_MOVES 4 +#define NUM_STATS 6 // party sizes #define PARTY_SIZE 6 diff --git a/include/constants/metatile_labels.h b/include/constants/metatile_labels.h index 58ac90eab..a0ea6855b 100644 --- a/include/constants/metatile_labels.h +++ b/include/constants/metatile_labels.h @@ -2,29 +2,39 @@ #define GUARD_METATILE_LABELS_H // gTileset_General -#define METATILE_General_Grass 0x001 -#define METATILE_General_TallGrass 0x00D -#define METATILE_General_LongGrass 0x015 -#define METATILE_General_TallGrass_TreeUp 0x025 -#define METATILE_General_Grass_TreeUp 0x00E -#define METATILE_General_TallGrass_TreeLeft 0x1C6 -#define METATILE_General_TallGrass_TreeRight 0x1C7 -#define METATILE_General_Grass_TreeLeft 0x1CE -#define METATILE_General_Grass_TreeRight 0x1CF -#define METATILE_General_MuddySlope_Frame0 0x0E8 -#define METATILE_General_MuddySlope_Frame1 0x0E9 -#define METATILE_General_MuddySlope_Frame2 0x0EA -#define METATILE_General_MuddySlope_Frame3 0x0EB -#define METATILE_General_SandPit_Center 0x121 -#define METATILE_General_CaveEntrance_Top 0x09F -#define METATILE_General_CaveEntrance_Bottom 0x0A7 -#define METATILE_General_RockWall_GrassBase 0x079 -#define METATILE_General_RockWall_RockBase 0x07C -#define METATILE_General_RockWall_SandBase 0x091 -#define METATILE_General_CalmWater 0x170 -#define METATILE_General_RoughWater 0x14E -#define METATILE_General_RoughDeepWater 0x14F -#define METATILE_General_ReflectiveWater 0x0A1 +#define METATILE_General_Grass 0x001 +#define METATILE_General_TallGrass 0x00D +#define METATILE_General_LongGrass 0x015 +#define METATILE_General_TallGrass_TreeUp 0x025 +#define METATILE_General_Grass_TreeUp 0x00E +#define METATILE_General_TallGrass_TreeLeft 0x1C6 +#define METATILE_General_TallGrass_TreeRight 0x1C7 +#define METATILE_General_Grass_TreeLeft 0x1CE +#define METATILE_General_Grass_TreeRight 0x1CF +#define METATILE_General_MuddySlope_Frame0 0x0E8 +#define METATILE_General_MuddySlope_Frame1 0x0E9 +#define METATILE_General_MuddySlope_Frame2 0x0EA +#define METATILE_General_MuddySlope_Frame3 0x0EB +#define METATILE_General_SandPit_Center 0x121 +#define METATILE_General_CaveEntrance_Top 0x09F +#define METATILE_General_CaveEntrance_Bottom 0x0A7 +#define METATILE_General_RockWall_GrassBase 0x079 +#define METATILE_General_RockWall_RockBase 0x07C +#define METATILE_General_RockWall_SandBase 0x091 +#define METATILE_General_CalmWater 0x170 +#define METATILE_General_RoughWater 0x14E +#define METATILE_General_RoughDeepWater 0x14F +#define METATILE_General_ReflectiveWater 0x0A1 +#define METATILE_General_SecretBase_TreeLeft 0x026 +#define METATILE_General_SecretBase_TreeRight 0x027 +#define METATILE_General_SecretBase_VineLeft 0x036 +#define METATILE_General_SecretBase_VineRight 0x037 +#define METATILE_General_RedCaveIndent 0x1A0 +#define METATILE_General_RedCaveOpen 0x1A1 +#define METATILE_General_YellowCaveIndent 0x1A8 +#define METATILE_General_YellowCaveOpen 0x1A9 +#define METATILE_General_BlueCaveIndent 0x1B0 +#define METATILE_General_BlueCaveOpen 0x1B1 // gTileset_Building #define METATILE_Building_PC_Off 0x004 @@ -143,6 +153,8 @@ #define METATILE_Fortree_BridgeOverGrass_Lowered 0x24F #define METATILE_Fortree_BridgeOverTrees_Raised 0x256 #define METATILE_Fortree_BridgeOverTrees_Lowered 0x257 +#define METATILE_Fortree_SecretBase_Shrub 0x271 +#define METATILE_Fortree_SecretBase_ShrubOpen 0x278 #define METATILE_Fortree_SecretBase_LongGrass_TopLeft 0x279 #define METATILE_Fortree_SecretBase_LongGrass_TopMid 0x27A #define METATILE_Fortree_SecretBase_LongGrass_TopRight 0x27B @@ -164,6 +176,8 @@ // gTileset_Fallarbor #define METATILE_Fallarbor_AshGrass 0x20A +#define METATILE_Fallarbor_BrownCaveIndent 0x208 +#define METATILE_Fallarbor_BrownCaveOpen 0x210 #define METATILE_Fallarbor_NormalGrass 0x212 #define METATILE_Fallarbor_AshField 0x218 #define METATILE_Fallarbor_BrownCaveEntrance_Top 0x259 @@ -414,4 +428,162 @@ #define METATILE_Underwater_RockWall 0x21E #define METATILE_Underwater_FloorShadow 0x228 +// gTileset_SecretBase +#define METATILE_SecretBase_Wall_TopMid 0x202 +#define METATILE_SecretBase_Ground 0x20A +#define METATILE_SecretBase_PC 0x220 +#define METATILE_SecretBase_RegisterPC 0x221 +#define METATILE_SecretBase_PC_On 0x224 +#define METATILE_SecretBase_RedBrick_Top 0x225 +#define METATILE_SecretBase_RedBrick_Bottom 0x22D +#define METATILE_SecretBase_YellowBrick_Top 0x226 +#define METATILE_SecretBase_YellowBrick_Bottom 0x22E +#define METATILE_SecretBase_BlueBrick_Top 0x227 +#define METATILE_SecretBase_BlueBrick_Bottom 0x22F +#define METATILE_SecretBase_MudBall 0x228 +#define METATILE_SecretBase_Fence_Horizontal 0x22C +#define METATILE_SecretBase_Fence_Vertical 0x233 +#define METATILE_SecretBase_Board_Top 0x234 +#define METATILE_SecretBase_Board_Bottom 0x23C +#define METATILE_SecretBase_RedTent_DoorTop 0x239 +#define METATILE_SecretBase_RedTent_Door 0x241 +#define METATILE_SecretBase_BlueTent_DoorTop 0x251 +#define METATILE_SecretBase_BlueTent_Door 0x259 +#define METATILE_SecretBase_Slide_Stairs 0x23D +#define METATILE_SecretBase_Slide 0x23E +#define METATILE_SecretBase_Stand_LeftCorner 0x26A +#define METATILE_SecretBase_Stand_RightCorner 0x26D +#define METATILE_SecretBase_BreakableDoor_TopClosed 0x237 +#define METATILE_SecretBase_BreakableDoor_BottomClosed 0x23F +#define METATILE_SecretBase_BreakableDoor_TopOpen 0x26E +#define METATILE_SecretBase_BreakableDoor_BottomOpen 0x276 +#define METATILE_SecretBase_NoteMat_C 0x278 +#define METATILE_SecretBase_NoteMat_D 0x279 +#define METATILE_SecretBase_NoteMat_E 0x27A +#define METATILE_SecretBase_NoteMat_F 0x27B +#define METATILE_SecretBase_NoteMat_G 0x27C +#define METATILE_SecretBase_NoteMat_A 0x27D +#define METATILE_SecretBase_NoteMat_B 0x27E +#define METATILE_SecretBase_NoteMat_C_Sharp 0x2B3 +#define METATILE_SecretBase_Tire_TopLeft 0x280 +#define METATILE_SecretBase_Tire_TopRight 0x281 +#define METATILE_SecretBase_Tire_BottomLeft 0x288 +#define METATILE_SecretBase_Tire_BottomRight 0x289 +#define METATILE_SecretBase_GlassOrnament_Base1 0x28A +#define METATILE_SecretBase_GlassOrnament_Base2 0x28B +#define METATILE_SecretBase_SandOrnament_BrokenTop 0x284 +#define METATILE_SecretBase_SandOrnament_BrokenBase 0x28C +#define METATILE_SecretBase_SandOrnament_Top 0x285 +#define METATILE_SecretBase_SandOrnament_Base1 0x28D +#define METATILE_SecretBase_SandOrnament_TopWall 0x286 +#define METATILE_SecretBase_SandOrnament_Base2 0x28E +#define METATILE_SecretBase_SmallDesk 0x287 +#define METATILE_SecretBase_PokemonDesk 0x28F +#define METATILE_SecretBase_HeavyDesk_TopLeft 0x290 +#define METATILE_SecretBase_HeavyDesk_TopMid 0x291 +#define METATILE_SecretBase_HeavyDesk_TopRight 0x292 +#define METATILE_SecretBase_HeavyDesk_BottomLeft 0x298 +#define METATILE_SecretBase_HeavyDesk_BottomMid 0x299 +#define METATILE_SecretBase_HeavyDesk_BottomRight 0x29A +#define METATILE_SecretBase_RaggedDesk_TopLeft 0x293 +#define METATILE_SecretBase_RaggedDesk_TopMid 0x294 +#define METATILE_SecretBase_RaggedDesk_TopRight 0x295 +#define METATILE_SecretBase_RaggedDesk_BottomLeft 0x29B +#define METATILE_SecretBase_RaggedDesk_BottomMid 0x29C +#define METATILE_SecretBase_RaggedDesk_BottomRight 0x29D +#define METATILE_SecretBase_ComfortDesk_TopLeft 0x296 +#define METATILE_SecretBase_ComfortDesk_TopMid 0x297 +#define METATILE_SecretBase_ComfortDesk_TopRight 0x2A3 +#define METATILE_SecretBase_ComfortDesk_BottomLeft 0x29E +#define METATILE_SecretBase_ComfortDesk_BottomMid 0x29F +#define METATILE_SecretBase_ComfortDesk_BottomRight 0x2AB +#define METATILE_SecretBase_BrickDesk_TopLeft 0x2A0 +#define METATILE_SecretBase_BrickDesk_TopMid 0x2A1 +#define METATILE_SecretBase_BrickDesk_TopRight 0x2A2 +#define METATILE_SecretBase_BrickDesk_MidLeft 0x2A8 +#define METATILE_SecretBase_BrickDesk_Center 0x2A9 +#define METATILE_SecretBase_BrickDesk_MidRight 0x2AA +#define METATILE_SecretBase_BrickDesk_BottomLeft 0x2B0 +#define METATILE_SecretBase_BrickDesk_BottomMid 0x2B1 +#define METATILE_SecretBase_BrickDesk_BottomRight 0x2B2 +#define METATILE_SecretBase_CampDesk_TopLeft 0x2A4 +#define METATILE_SecretBase_CampDesk_TopMid 0x2A5 +#define METATILE_SecretBase_CampDesk_TopRight 0x2A6 +#define METATILE_SecretBase_CampDesk_MidLeft 0x2AC +#define METATILE_SecretBase_CampDesk_Center 0x2AD +#define METATILE_SecretBase_CampDesk_MidRight 0x2AE +#define METATILE_SecretBase_CampDesk_BottomLeft 0x2B4 +#define METATILE_SecretBase_CampDesk_BottomMid 0x2B5 +#define METATILE_SecretBase_CampDesk_BottomRight 0x2B6 +#define METATILE_SecretBase_HardDesk_TopLeft 0x2A7 +#define METATILE_SecretBase_HardDesk_TopMid 0x2BB +#define METATILE_SecretBase_HardDesk_TopRight 0x2BC +#define METATILE_SecretBase_HardDesk_MidLeft 0x2AF +#define METATILE_SecretBase_HardDesk_Center 0x2C3 +#define METATILE_SecretBase_HardDesk_MidRight 0x2C4 +#define METATILE_SecretBase_HardDesk_BottomLeft 0x2B7 +#define METATILE_SecretBase_HardDesk_BottomMid 0x2CB +#define METATILE_SecretBase_HardDesk_BottomRight 0x2CC +#define METATILE_SecretBase_PrettyDesk_TopLeft 0x2BD +#define METATILE_SecretBase_PrettyDesk_TopMid 0x2BE +#define METATILE_SecretBase_PrettyDesk_TopRight 0x2BF +#define METATILE_SecretBase_PrettyDesk_MidLeft 0x2C5 +#define METATILE_SecretBase_PrettyDesk_Center 0x2C6 +#define METATILE_SecretBase_PrettyDesk_MidRight 0x2C7 +#define METATILE_SecretBase_PrettyDesk_BottomLeft 0x2CD +#define METATILE_SecretBase_PrettyDesk_BottomMid 0x2CE +#define METATILE_SecretBase_PrettyDesk_BottomRight 0x2CF +#define METATILE_SecretBase_SmallChair 0x2B8 +#define METATILE_SecretBase_PokemonChair 0x2B9 +#define METATILE_SecretBase_HeavyChair 0x2BA +#define METATILE_SecretBase_PrettyChair 0x2C0 +#define METATILE_SecretBase_ComfortChair 0x2C1 +#define METATILE_SecretBase_RaggedChair 0x2C2 +#define METATILE_SecretBase_BrickChair 0x2C8 +#define METATILE_SecretBase_CampChair 0x2C9 +#define METATILE_SecretBase_HardChair 0x2Ca +#define METATILE_SecretBase_RedPlant_Base1 0x2D8 +#define METATILE_SecretBase_RedPlant_Base2 0x2D9 +#define METATILE_SecretBase_TropicalPlant_Base1 0x2DA +#define METATILE_SecretBase_TropicalPlant_Base2 0x2DB +#define METATILE_SecretBase_PrettyFlower_Base1 0x2DC +#define METATILE_SecretBase_PrettyFlower_Base2 0x2DD +#define METATILE_SecretBase_ColorfulFlowers_BaseLeft1 0x2E8 +#define METATILE_SecretBase_ColorfulFlowers_BaseRight1 0x2E9 +#define METATILE_SecretBase_ColorfulFlowers_BaseLeft2 0x2EA +#define METATILE_SecretBase_ColorfulFlowers_BaseRight2 0x2EB +#define METATILE_SecretBase_BigPlant_BaseLeft1 0x2EC +#define METATILE_SecretBase_BigPlant_BaseRight1 0x2ED +#define METATILE_SecretBase_BigPlant_BaseLeft2 0x2EE +#define METATILE_SecretBase_BigPlant_BaseRight2 0x2EF +#define METATILE_SecretBase_GorgeousPlant_BaseLeft1 0x2F8 +#define METATILE_SecretBase_GorgeousPlant_BaseRight1 0x2F9 +#define METATILE_SecretBase_GorgeousPlant_BaseLeft2 0x2FA +#define METATILE_SecretBase_GorgeousPlant_BaseRight2 0x2FB +#define METATILE_SecretBase_TV 0x2F4 +#define METATILE_SecretBase_RoundTV 0x2F5 +#define METATILE_SecretBase_CuteTV 0x2F6 +#define METATILE_SecretBase_PikaPoster_Left 0x31C +#define METATILE_SecretBase_PikaPoster_Right 0x31D +#define METATILE_SecretBase_LongPoster_Left 0x31E +#define METATILE_SecretBase_LongPoster_Right 0x31F +#define METATILE_SecretBase_SeaPoster_Left 0x324 +#define METATILE_SecretBase_SeaPoster_Right 0x325 +#define METATILE_SecretBase_SkyPoster_Left 0x326 +#define METATILE_SecretBase_SkyPoster_Right 0x327 +#define METATILE_SecretBase_KissPoster_Left 0x32C +#define METATILE_SecretBase_KissPoster_Right 0x32D +#define METATILE_SecretBase_BallPoster 0x330 +#define METATILE_SecretBase_GreenPoster 0x331 +#define METATILE_SecretBase_RedPoster 0x332 +#define METATILE_SecretBase_BluePoster 0x333 +#define METATILE_SecretBase_CutePoster 0x334 +#define METATILE_SecretBase_SilverShield_Base1 0x2DE +#define METATILE_SecretBase_SilverShield_Base2 0x2DF +#define METATILE_SecretBase_GoldShield_Base1 0x336 +#define METATILE_SecretBase_GoldShield_Base2 0x337 +#define METATILE_SecretBase_RedBalloon 0x338 +#define METATILE_SecretBase_BlueBalloon 0x33c +#define METATILE_SecretBase_YellowBalloon 0x340 + #endif // GUARD_METATILE_LABELS_H diff --git a/include/constants/opponents.h b/include/constants/opponents.h index 79a125bda..cd35cf6b7 100644 --- a/include/constants/opponents.h +++ b/include/constants/opponents.h @@ -857,6 +857,10 @@ #define TRAINER_BRENDAN_PLACEHOLDER 853 #define TRAINER_MAY_PLACEHOLDER 854 +// NOTE: Because each Trainer uses a flag to determine when they are defeated, there is only space for 9 additional trainers before trainer flag space overflows +// More space can be made by shifting flags around in constants/flags.h or changing how trainer flags are handled + #define TRAINERS_COUNT 855 +#define MAX_TRAINERS_COUNT 864 #endif // GUARD_CONSTANTS_OPPONENTS_H diff --git a/include/constants/pokemon.h b/include/constants/pokemon.h index 5610a470c..97e3f0686 100644 --- a/include/constants/pokemon.h +++ b/include/constants/pokemon.h @@ -80,8 +80,8 @@ #define STAT_ACC 6 // Only in battles. #define STAT_EVASION 7 // Only in battles. -#define NUM_STATS 6 -#define NUM_BATTLE_STATS 8 +#define NUM_EV_STATS NUM_STATS - 1 // excludes HP +#define NUM_BATTLE_STATS NUM_STATS + 2 // includes Accuracy and Evasion // Shiny odds #define SHINY_ODDS 8 // Actual probability is SHINY_ODDS/65536 @@ -213,6 +213,8 @@ #define FRIENDSHIP_EVENT_FAINT_OUTSIDE_BATTLE 7 #define FRIENDSHIP_EVENT_FAINT_LARGE 8 +#define MAX_FRIENDSHIP 0xFF + #define STATUS_PRIMARY_NONE 0 #define STATUS_PRIMARY_POISON 1 #define STATUS_PRIMARY_PARALYSIS 2 diff --git a/include/constants/trainers.h b/include/constants/trainers.h index e5a193770..541b131ca 100644 --- a/include/constants/trainers.h +++ b/include/constants/trainers.h @@ -2,9 +2,11 @@ #define GUARD_TRAINERS_H #include "constants/opponents.h" +#include "constants/battle_frontier_trainers.h" // Special Trainer Ids. -#define TRAINER_RECORD_MIXING_FRIEND 300 +// 0-299 are frontier trainers +#define TRAINER_RECORD_MIXING_FRIEND FRONTIER_TRAINERS_COUNT #define TRAINER_RECORD_MIXING_APPRENTICE 400 #define TRAINER_EREADER 500 #define TRAINER_FRONTIER_BRAIN 1022 diff --git a/include/constants/tv.h b/include/constants/tv.h index fddf650e4..6f686f727 100644 --- a/include/constants/tv.h +++ b/include/constants/tv.h @@ -46,4 +46,92 @@ // Number of ribbons to put Spot the Cuties on air #define NUM_CUTIES_RIBBONS 4 +// TV Show states for Secret Base Secrets +#define SBSECRETS_STATE_INTRO 0 +#define SBSECRETS_STATE_DO_NEXT1 1 +#define SBSECRETS_STATE_DO_NEXT2 2 +#define SBSECRETS_STATE_TOOK_X_STEPS 3 +#define SBSECRETS_STATE_BASE_INTEREST_LOW 4 +#define SBSECRETS_STATE_BASE_INTEREST_MED 5 +#define SBSECRETS_STATE_BASE_INTEREST_HIGH 6 +#define SBSECRETS_STATE_OUTRO 7 +#define SBSECRETS_STATE_NOTHING_USED1 8 +#define SBSECRETS_STATE_NOTHING_USED2 9 +#define SBSECRETS_STATE_USED_CHAIR 10 +#define SBSECRETS_STATE_USED_BALLOON 11 +#define SBSECRETS_STATE_USED_TENT 12 +#define SBSECRETS_STATE_USED_PLANT 13 +#define SBSECRETS_STATE_USED_GOLD_SHIELD 14 +#define SBSECRETS_STATE_USED_SILVER_SHIELD 15 +#define SBSECRETS_STATE_USED_GLASS_ORNAMENT 16 +#define SBSECRETS_STATE_USED_TV 17 +#define SBSECRETS_STATE_USED_MUD_BALL 18 +#define SBSECRETS_STATE_USED_BAG 19 +#define SBSECRETS_STATE_USED_CUSHION 20 +#define SBSECRETS_STATE_HIT_CUSHION 21 +#define SBSECRETS_STATE_HUGGED_CUSHION 22 +#define SBSECRETS_STATE_BATTLED_WON 23 +#define SBSECRETS_STATE_BATTLED_LOST 24 +#define SBSECRETS_STATE_DECLINED_BATTLE 25 +#define SBSECRETS_STATE_USED_POSTER 26 +#define SBSECRETS_STATE_USED_NOTE_MAT 27 +#define SBSECRETS_STATE_BATTLED_DRAW 28 +#define SBSECRETS_STATE_USED_SPIN_MAT 29 +#define SBSECRETS_STATE_USED_SAND_ORNAMENT 30 +#define SBSECRETS_STATE_USED_DESK 31 +#define SBSECRETS_STATE_USED_BRICK 32 +#define SBSECRETS_STATE_USED_SOLID_BOARD 33 +#define SBSECRETS_STATE_USED_FENCE 34 +#define SBSECRETS_STATE_USED_GLITTER_MAT 35 +#define SBSECRETS_STATE_USED_TIRE 36 +#define SBSECRETS_STATE_USED_STAND 37 +#define SBSECRETS_STATE_USED_BREAKABLE_DOOR 38 +#define SBSECRETS_STATE_USED_DOLL 39 +#define SBSECRETS_STATE_USED_SLIDE 40 +#define SBSECRETS_STATE_DECLINED_SLIDE 41 +#define SBSECRETS_STATE_USED_JUMP_MAT 42 +#define SBSECRETS_NUM_STATES 43 + +// The below flags are set when interacting with objects in a friends secret base +// Theyre set as bits in a var, and with 32 flags they're spread across 2 vars + +// VAR_SECRET_BASE_LOW_TV_FLAGS +#define SECRET_BASE_USED_CHAIR (1 << 0) +#define SECRET_BASE_USED_BALLOON (1 << 1) +#define SECRET_BASE_USED_TENT (1 << 2) +#define SECRET_BASE_USED_PLANT (1 << 3) +#define SECRET_BASE_USED_GOLD_SHIELD (1 << 4) +#define SECRET_BASE_USED_SILVER_SHIELD (1 << 5) +#define SECRET_BASE_USED_GLASS_ORNAMENT (1 << 6) +#define SECRET_BASE_USED_TV (1 << 7) +#define SECRET_BASE_USED_MUD_BALL (1 << 8) +#define SECRET_BASE_USED_BAG (1 << 9) +#define SECRET_BASE_USED_CUSHION (1 << 10) +#define SECRET_BASE_BATTLED_WON (1 << 11) +#define SECRET_BASE_BATTLED_LOST (1 << 12) +#define SECRET_BASE_DECLINED_BATTLE (1 << 13) +#define SECRET_BASE_USED_POSTER (1 << 14) +#define SECRET_BASE_USED_NOTE_MAT (1 << 15) + +// VAR_SECRET_BASE_HIGH_TV_FLAGS +#define SECRET_BASE_BATTLED_DRAW (1 << 0) +#define SECRET_BASE_USED_SPIN_MAT (1 << 1) +#define SECRET_BASE_USED_SAND_ORNAMENT (1 << 2) +#define SECRET_BASE_USED_DESK (1 << 3) +#define SECRET_BASE_USED_BRICK (1 << 4) +#define SECRET_BASE_USED_SOLID_BOARD (1 << 5) +#define SECRET_BASE_USED_FENCE (1 << 6) +#define SECRET_BASE_USED_GLITTER_MAT (1 << 7) +#define SECRET_BASE_USED_TIRE (1 << 8) +#define SECRET_BASE_USED_STAND (1 << 9) +#define SECRET_BASE_USED_BREAKABLE_DOOR (1 << 10) +#define SECRET_BASE_USED_DOLL (1 << 11) +#define SECRET_BASE_USED_SLIDE (1 << 12) +#define SECRET_BASE_DECLINED_SLIDE (1 << 13) +#define SECRET_BASE_USED_JUMP_MAT (1 << 14) +#define SECRET_BASE_UNUSED_FLAG (1 << 15) + +#define NUM_SECRET_BASE_FLAGS 32 // by definition, bitfield of 2 u16s + + #endif //GUARD_CONSTANTS_TV_H diff --git a/include/easy_chat.h b/include/easy_chat.h index 221cbd1da..f2ef066d4 100644 --- a/include/easy_chat.h +++ b/include/easy_chat.h @@ -128,10 +128,10 @@ bool32 sub_811F8D8(int word); void InitializeEasyChatWordArray(u16 *words, u16 length); u8 *ConvertEasyChatWordsToString(u8 *dest, const u16 *src, u16 columns, u16 rows); bool8 ECWord_CheckIfOutsideOfValidRange(u16 word); -u16 sub_811EE38(u16 group); +u16 GetRandomEasyChatWordFromGroup(u16 group); u16 GetNewHipsterPhraseToTeach(void); u16 EasyChat_GetNumWordsInGroup(u8); -u16 sub_811EE90(u16); +u16 GetRandomEasyChatWordFromUnlockedGroup(u16); void DoEasyChatScreen(u8 type, u16 *words, MainCallback callback, u8 displayedPersonType); void sub_811F8BC(void); void UnlockAdditionalPhrase(u8 additionalPhraseId); diff --git a/include/event_scripts.h b/include/event_scripts.h index c2716a214..a56ab89e0 100644 --- a/include/event_scripts.h +++ b/include/event_scripts.h @@ -240,49 +240,49 @@ extern const u8 gTVWhatsNo1InHoennTodayText05[]; extern const u8 gTVWhatsNo1InHoennTodayText06[]; extern const u8 gTVWhatsNo1InHoennTodayText07[]; extern const u8 gTVWhatsNo1InHoennTodayText08[]; -extern const u8 gTVSecretBaseSecretsText00[]; -extern const u8 gTVSecretBaseSecretsText01[]; -extern const u8 gTVSecretBaseSecretsText02[]; -extern const u8 gTVSecretBaseSecretsText03[]; -extern const u8 gTVSecretBaseSecretsText04[]; -extern const u8 gTVSecretBaseSecretsText05[]; -extern const u8 gTVSecretBaseSecretsText06[]; -extern const u8 gTVSecretBaseSecretsText07[]; -extern const u8 gTVSecretBaseSecretsText08[]; -extern const u8 gTVSecretBaseSecretsText09[]; -extern const u8 gTVSecretBaseSecretsText10[]; -extern const u8 gTVSecretBaseSecretsText11[]; -extern const u8 gTVSecretBaseSecretsText12[]; -extern const u8 gTVSecretBaseSecretsText13[]; -extern const u8 gTVSecretBaseSecretsText14[]; -extern const u8 gTVSecretBaseSecretsText15[]; -extern const u8 gTVSecretBaseSecretsText16[]; -extern const u8 gTVSecretBaseSecretsText17[]; -extern const u8 gTVSecretBaseSecretsText18[]; -extern const u8 gTVSecretBaseSecretsText19[]; -extern const u8 gTVSecretBaseSecretsText20[]; -extern const u8 gTVSecretBaseSecretsText21[]; -extern const u8 gTVSecretBaseSecretsText22[]; -extern const u8 gTVSecretBaseSecretsText23[]; -extern const u8 gTVSecretBaseSecretsText24[]; -extern const u8 gTVSecretBaseSecretsText25[]; -extern const u8 gTVSecretBaseSecretsText26[]; -extern const u8 gTVSecretBaseSecretsText27[]; -extern const u8 gTVSecretBaseSecretsText28[]; -extern const u8 gTVSecretBaseSecretsText29[]; -extern const u8 gTVSecretBaseSecretsText30[]; -extern const u8 gTVSecretBaseSecretsText31[]; -extern const u8 gTVSecretBaseSecretsText32[]; -extern const u8 gTVSecretBaseSecretsText33[]; -extern const u8 gTVSecretBaseSecretsText34[]; -extern const u8 gTVSecretBaseSecretsText35[]; -extern const u8 gTVSecretBaseSecretsText36[]; -extern const u8 gTVSecretBaseSecretsText37[]; -extern const u8 gTVSecretBaseSecretsText38[]; -extern const u8 gTVSecretBaseSecretsText39[]; -extern const u8 gTVSecretBaseSecretsText40[]; -extern const u8 gTVSecretBaseSecretsText41[]; -extern const u8 gTVSecretBaseSecretsText42[]; +extern const u8 TVSecretBaseSecrets_Text_Intro[]; +extern const u8 TVSecretBaseSecrets_Text_WhatWillPlayerDoNext1[]; +extern const u8 TVSecretBaseSecrets_Text_WhatWillPlayerDoNext2[]; +extern const u8 TVSecretBaseSecrets_Text_TookXStepsBeforeLeaving[]; +extern const u8 TVSecretBaseSecrets_Text_BaseFailedToInterestPlayer[]; +extern const u8 TVSecretBaseSecrets_Text_PlayerEnjoyedBase[]; +extern const u8 TVSecretBaseSecrets_Text_PlayerHugeFanOfBase[]; +extern const u8 TVSecretBaseSecrets_Text_Outro[]; +extern const u8 TVSecretBaseSecrets_Text_StoppedMoving1[]; +extern const u8 TVSecretBaseSecrets_Text_StoppedMoving2[]; +extern const u8 TVSecretBaseSecrets_Text_UsedChair[]; +extern const u8 TVSecretBaseSecrets_Text_UsedBalloon[]; +extern const u8 TVSecretBaseSecrets_Text_UsedTent[]; +extern const u8 TVSecretBaseSecrets_Text_UsedPlant[]; +extern const u8 TVSecretBaseSecrets_Text_UsedGoldShield[]; +extern const u8 TVSecretBaseSecrets_Text_UsedSilverShield[]; +extern const u8 TVSecretBaseSecrets_Text_UsedGlassOrnament[]; +extern const u8 TVSecretBaseSecrets_Text_UsedTV[]; +extern const u8 TVSecretBaseSecrets_Text_UsedMudBall[]; +extern const u8 TVSecretBaseSecrets_Text_UsedBag[]; +extern const u8 TVSecretBaseSecrets_Text_UsedCushion[]; +extern const u8 TVSecretBaseSecrets_Text_HitCushion[]; +extern const u8 TVSecretBaseSecrets_Text_HuggedCushion[]; +extern const u8 TVSecretBaseSecrets_Text_BattledWon[]; +extern const u8 TVSecretBaseSecrets_Text_BattledLost[]; +extern const u8 TVSecretBaseSecrets_Text_DeclinedBattle[]; +extern const u8 TVSecretBaseSecrets_Text_UsedPoster[]; +extern const u8 TVSecretBaseSecrets_Text_UsedNoteMat[]; +extern const u8 TVSecretBaseSecrets_Text_BattledDraw[]; +extern const u8 TVSecretBaseSecrets_Text_UsedSpinMat[]; +extern const u8 TVSecretBaseSecrets_Text_UsedSandOrnament[]; +extern const u8 TVSecretBaseSecrets_Text_UsedDesk[]; +extern const u8 TVSecretBaseSecrets_Text_UsedBrick[]; +extern const u8 TVSecretBaseSecrets_Text_UsedSolidBoard[]; +extern const u8 TVSecretBaseSecrets_Text_UsedFence[]; +extern const u8 TVSecretBaseSecrets_Text_UsedGlitterMat[]; +extern const u8 TVSecretBaseSecrets_Text_UsedTire[]; +extern const u8 TVSecretBaseSecrets_Text_UsedStand[]; +extern const u8 TVSecretBaseSecrets_Text_BrokeDoor[]; +extern const u8 TVSecretBaseSecrets_Text_UsedDoll[]; +extern const u8 TVSecretBaseSecrets_Text_UsedSlide[]; +extern const u8 TVSecretBaseSecrets_Text_UsedSlideButDidntGoDown[]; +extern const u8 TVSecretBaseSecrets_Text_UsedJumpMat[]; extern const u8 gTVSafariFanClubText00[]; extern const u8 gTVSafariFanClubText01[]; extern const u8 gTVSafariFanClubText02[]; diff --git a/include/fldeff_misc.h b/include/fldeff_misc.h index fd96f5646..6fd15c1ea 100644 --- a/include/fldeff_misc.h +++ b/include/fldeff_misc.h @@ -21,7 +21,7 @@ void ShatterSecretBaseBreakableDoor(s16 x, s16 y); void PlaySecretBaseMusicNoteMatSound(s16 metatileId); void DoSecretBaseGlitterMatSparkle(void); bool8 FldEff_SandPillar(void); -void GetShieldToyTVDecorationInfo(void); +void InteractWithShieldOrTVDecoration(void); bool8 sub_80FADE4(u16 arg0, u8 arg1); void FldEffPoison_Start(void); bool32 FldEffPoison_IsActive(void); diff --git a/include/global.h b/include/global.h index e721a93ba..34d897a8c 100644 --- a/include/global.h +++ b/include/global.h @@ -297,10 +297,11 @@ struct BattleTowerEReaderTrainer /*0xB8*/ u32 checksum; }; -struct FrontierMonData +// For displaying party information on the player's Battle Dome tourney page +struct DomeMonData { u16 moves[MAX_MON_MOVES]; - u8 evs[6]; + u8 evs[NUM_STATS]; u8 nature; }; @@ -317,7 +318,7 @@ struct BattleDomeTrainer u16 trainerId:10; u16 isEliminated:1; u16 eliminatedAt:2; - u16 unk3:3; + u16 forfeited:3; }; #define DOME_TOURNAMENT_TRAINERS_COUNT 16 @@ -332,10 +333,6 @@ struct BattleFrontier /*0xCA9*/ u8 lvlMode:2; /*0xCA9*/ u8 challengePaused:1; /*0xCA9*/ u8 disableRecordBattle:1; - /*0xCA9*/ u8 unused_CA9_c:1; - /*0xCA9*/ u8 unused_CA9_d:1; - /*0xCA9*/ u8 unused_CA9_e:1; - /*0xCA9*/ u8 unused_CA9_f:1; /*0xCAA*/ u16 selectedPartyMons[MAX_FRONTIER_PARTY_SIZE]; /*0xCB2*/ u16 curChallengeBattleNum; // Battle number / room number (Pike) / floor number (Pyramid) /*0xCB4*/ u16 trainerIds[20]; @@ -347,17 +344,17 @@ struct BattleFrontier /*0xD04*/ u16 towerNumWins; // Increments to MAX_STREAK but never read otherwise /*0xD06*/ u8 towerBattleOutcome; /*0xD07*/ u8 towerLvlMode; - /*0xD08*/ u8 field_D08_0:1; - /*0xD08*/ u8 field_D08_1:1; - /*0xD08*/ u8 field_D08_2:1; - /*0xD08*/ u8 field_D08_3:1; - /*0xD08*/ u8 field_D08_4:1; - /*0xD08*/ u8 field_D08_5:1; - /*0xD08*/ u8 field_D08_6:1; - /*0xD08*/ u8 field_D08_7:1; - /*0xD09*/ u8 filler_D09; - /*0xD0A*/ u8 field_D0A; - /*0xD0B*/ u8 field_D0B; + /*0xD08*/ u8 domeAttemptedSingles50:1; + /*0xD08*/ u8 domeAttemptedSinglesOpen:1; + /*0xD08*/ u8 domeHasWonSingles50:1; + /*0xD08*/ u8 domeHasWonSinglesOpen:1; + /*0xD08*/ u8 domeAttemptedDoubles50:1; + /*0xD08*/ u8 domeAttemptedDoublesOpen:1; + /*0xD08*/ u8 domeHasWonDoubles50:1; + /*0xD08*/ u8 domeHasWonDoublesOpen:1; + /*0xD09*/ u8 domeUnused; + /*0xD0A*/ u8 domeLvlMode; + /*0xD0B*/ u8 domeBattleMode; /*0xD0C*/ u16 domeWinStreaks[2][2]; /*0xD14*/ u16 domeRecordWinStreaks[2][2]; /*0xD1C*/ u16 domeTotalChampionships[2][2]; @@ -392,11 +389,11 @@ struct BattleFrontier /*0xE6A*/ u16 verdanturfTentPrize; /*0xE6C*/ u16 fallarborTentPrize; /*0xE6E*/ u16 slateportTentPrize; - /*0xE70*/ struct RentalMon rentalMons[PARTY_SIZE]; + /*0xE70*/ struct RentalMon rentalMons[FRONTIER_PARTY_SIZE * 2]; /*0xEB8*/ u16 battlePoints; /*0xEBA*/ u16 cardBattlePoints; /*0xEBC*/ u32 battlesCount; - /*0xEC0*/ u16 field_EC0[16]; + /*0xEC0*/ u16 domeWinningMoves[DOME_TOURNAMENT_TRAINERS_COUNT]; /*0xEE0*/ u8 trainerFlags; /*0xEE1*/ u8 opponentNames[2][PLAYER_NAME_LENGTH + 1]; /*0xEF1*/ u8 opponentTrainerIds[2][TRAINER_ID_LENGTH]; @@ -404,7 +401,7 @@ struct BattleFrontier /*0xEF9*/ u8 savedGame:1; /*0xEFA*/ u8 unused_EFA; /*0xEFB*/ u8 unused_EFB; - /*0xEFC*/ struct FrontierMonData field_EFC[FRONTIER_PARTY_SIZE]; + /*0xEFC*/ struct DomeMonData domePlayerPartyData[FRONTIER_PARTY_SIZE]; }; struct ApprenticeQuestion @@ -934,13 +931,13 @@ struct SaveBlock1 /*0x271C*/ u8 playerRoomDecor[DECOR_MAX_PLAYERS_HOUSE]; /*0x2728*/ u8 playerRoomDecorPos[DECOR_MAX_PLAYERS_HOUSE]; /*0x2734*/ u8 decorDesk[10]; - /*0x????*/ u8 decorChair[10]; - /*0x????*/ u8 decorPlant[10]; - /*0x????*/ u8 decorOrnament[30]; - /*0x????*/ u8 decorMat[30]; - /*0x????*/ u8 decorPoster[10]; - /*0x????*/ u8 decorDoll[40]; - /*0x????*/ u8 decorCushion[10]; + /*0x273E*/ u8 decorChair[10]; + /*0x2748*/ u8 decorPlant[10]; + /*0x2752*/ u8 decorOrnament[30]; + /*0x2770*/ u8 decorMat[30]; + /*0x278E*/ u8 decorPoster[10]; + /*0x2798*/ u8 decorDoll[40]; + /*0x27C0*/ u8 decorCushion[10]; /*0x27CA*/ u8 padding_27CA[2]; /*0x27CC*/ TVShow tvShows[TV_SHOWS_COUNT]; /*0x2B50*/ PokeNews pokeNews[POKE_NEWS_COUNT]; diff --git a/include/graphics.h b/include/graphics.h index 146803cfa..a8d4453b0 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -4117,19 +4117,19 @@ extern const u16 gTitleScreenBgPalettes[]; extern const u16 gTitleScreenPressStartPal[]; extern const u16 gTitleScreenEmeraldVersionPal[]; -extern const u32 gUnknown_08D83D50[]; -extern const u32 gUnknown_08D84970[]; -extern const u32 gUnknown_08D84F00[]; -extern const u32 gUnknown_08D85444[]; -extern const u32 gUnknown_08D85358[]; -extern const u32 gBattleWindowTextPalette[]; -extern const u32 gUnknown_08D854C8[]; -extern const u32 gUnknown_08D82F10[]; -extern const u32 gUnknown_08D834FC[]; -extern const u32 gUnknown_08D83B2C[]; -extern const u32 gUnknown_08D83C3C[]; -extern const u32 gUnknown_08D83900[]; -extern const u32 gBattleFrontierGfx_DomeOptions[]; +// Battle Dome +extern const u32 gDomeTourneyInfoCard_Gfx[]; +extern const u32 gDomeTourneyInfoCard_Tilemap[]; +extern const u32 gDomeTourneyInfoCardBg_Tilemap[]; +extern const u32 gDomeTourneyTree_Pal[]; +extern const u32 gDomeTourneyTreeButtons_Pal[]; +extern const u32 gDomeTourneyMatchCardBg_Pal[]; +extern const u32 gDomeTourneyBg_Gfx[]; +extern const u32 gDomeTourneyLine_Gfx[]; +extern const u32 gDomeTourneyLineDown_Tilemap[]; +extern const u32 gDomeTourneyLineUp_Tilemap[]; +extern const u32 gDomeTourneyLineMask_Tilemap[]; +extern const u32 gDomeTourneyTreeButtons_Gfx[]; extern const u16 gTilesetAnims_BattleDomePals0_0[]; extern const u16 gTilesetAnims_BattleDomePals0_1[]; extern const u16 gTilesetAnims_BattleDomePals0_2[]; @@ -4137,6 +4137,9 @@ extern const u16 gTilesetAnims_BattleDomePals0_3[]; extern const u32 gBattleArenaJudgementSymbolsGfx[]; extern const u32 gBattleArenaJudgementSymbolsPalette[]; + +extern const u32 gBattleWindowTextPalette[]; + extern const u32 gContest2Pal[]; extern const u32 gBattleAnimSpriteGfx_Bone[]; diff --git a/include/hall_of_fame.h b/include/hall_of_fame.h index 5c8a01bcb..a83fad2fc 100644 --- a/include/hall_of_fame.h +++ b/include/hall_of_fame.h @@ -4,7 +4,7 @@ void CB2_DoHallOfFameScreen(void); void CB2_DoHallOfFameScreenDontSaveData(void); void CB2_DoHallOfFamePC(void); -void sub_8175280(void); +void DoConfettiEffect(void); // hof_pc.c void ReturnFromHallOfFamePC(void); diff --git a/include/link.h b/include/link.h index 4d6771a03..f41161d23 100644 --- a/include/link.h +++ b/include/link.h @@ -84,7 +84,7 @@ #define LINKTYPE_MULTI_BATTLE 0x2255 #define LINKTYPE_BATTLE_TOWER_50 0x2266 #define LINKTYPE_BATTLE_TOWER_OPEN 0x2277 -#define LINKTYPE_0x2288 0x2288 // battle? +#define LINKTYPE_BATTLE_TOWER 0x2288 #define LINKTYPE_0x3311 0x3311 #define LINKTYPE_0x3322 0x3322 #define LINKTYPE_BERRY_BLENDER_SETUP 0x4411 diff --git a/include/pokemon_icon.h b/include/pokemon_icon.h index 9d56aebcb..dbd7f2895 100644 --- a/include/pokemon_icon.h +++ b/include/pokemon_icon.h @@ -16,7 +16,7 @@ void LoadMonIconPalette(u16 species); void FreeMonIconPalettes(void); u8 sub_80D2D78(u16 species, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority, bool32 extra); void FreeMonIconPalette(u16 species); -void sub_80D2EF8(struct Sprite *sprite); +void FreeAndDestroyMonIconSprite(struct Sprite *sprite); u8 CreateMonIcon(u16 species, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority, u32 personality, bool32 extra); u8 UpdateMonIconFrame(struct Sprite *sprite); void LoadMonIconPalette(u16 species); diff --git a/include/save.h b/include/save.h index 5e2cf7267..225b2b62c 100644 --- a/include/save.h +++ b/include/save.h @@ -55,13 +55,25 @@ enum SAVE_HALL_OF_FAME_ERASE_BEFORE // unused }; +#define SECTOR_ID_SAVEBLOCK2 0 +#define SECTOR_ID_SAVEBLOCK1_START 1 +#define SECTOR_ID_SAVEBLOCK1_END 4 +#define SECTOR_ID_PKMN_STORAGE_START 5 +#define SECTOR_ID_PKMN_STORAGE_END 13 #define SECTOR_SAVE_SLOT_LENGTH 14 +// Save Slot 1: 0-13; Save Slot 2: 14-27 #define SECTOR_ID_HOF_1 28 #define SECTOR_ID_HOF_2 29 #define SECTOR_ID_TRAINER_HILL 30 #define SECTOR_ID_RECORDED_BATTLE 31 #define SECTORS_COUNT 32 +#define SAVE_STATUS_EMPTY 0 +#define SAVE_STATUS_OK 1 +#define SAVE_STATUS_CORRUPT 2 +#define SAVE_STATUS_NO_FLASH 4 +#define SAVE_STATUS_ERROR 0xFF + extern u16 gLastWrittenSector; extern u32 gLastSaveCounter; extern u16 gLastKnownGoodSector; @@ -82,13 +94,12 @@ u8 HandleSavingData(u8 saveType); u8 TrySavingData(u8 saveType); bool8 sub_8153380(void); bool8 sub_81533AC(void); -u8 sub_81533E0(void); -u8 sub_8153408(void); -u8 FullSaveGame(void); +bool8 sub_81533E0(void); +bool8 sub_8153408(void); +bool8 FullSaveGame(void); bool8 CheckSaveFile(void); -u8 Save_LoadGameData(u8 a1); +u8 Save_LoadGameData(u8 saveType); u16 sub_815355C(void); -u8 sub_81534D0(u8); u32 TryReadSpecialSaveSection(u8 sector, u8* dst); u32 TryWriteSpecialSaveSection(u8 sector, u8* src); void sub_8153688(u8 taskId); diff --git a/include/secret_base.h b/include/secret_base.h index 4e323b0c6..b7d36a8ee 100644 --- a/include/secret_base.h +++ b/include/secret_base.h @@ -12,13 +12,13 @@ void InitSecretBaseAppearance(bool8 hidePC); bool8 CurMapIsSecretBase(void); void SecretBasePerStepCallback(u8 taskId); bool8 TrySetCurSecretBase(void); -void SetSecretBaseSecretsTvFlags_Poster(void); -void SetSecretBaseSecretsTvFlags_MiscFurnature(void); -void SetSecretBaseSecretsTvFlags_LargeDecorationSpot(void); -void SetSecretBaseSecretsTvFlags_SmallDecorationSpot(void); +void CheckInteractedWithFriendsPosterDecor(void); +void CheckInteractedWithFriendsFurnitureBottom(void); +void CheckInteractedWithFriendsFurnitureMiddle(void); +void CheckInteractedWithFriendsFurnitureTop(void); void WarpIntoSecretBase(const struct MapPosition *position, const struct MapEvents *events); bool8 SecretBaseMapPopupEnabled(void); -void sub_80EB218(void); +void CheckLeftFriendsSecretBase(void); void ClearSecretBases(void); void SetCurSecretBaseIdFromPosition(const struct MapPosition *position, const struct MapEvents *events); void TrySetCurSecretBaseIndex(void); diff --git a/include/strings.h b/include/strings.h index fe4e08eeb..eda1c55e4 100644 --- a/include/strings.h +++ b/include/strings.h @@ -1705,120 +1705,120 @@ extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_SwimmerMAccept[] extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_SwimmerMReject[]; // Battle Dome. -extern const u8 gBattleDomeOpponentPotentialText1[]; -extern const u8 gBattleDomeOpponentPotentialText2[]; -extern const u8 gBattleDomeOpponentPotentialText3[]; -extern const u8 gBattleDomeOpponentPotentialText4[]; -extern const u8 gBattleDomeOpponentPotentialText5[]; -extern const u8 gBattleDomeOpponentPotentialText6[]; -extern const u8 gBattleDomeOpponentPotentialText7[]; -extern const u8 gBattleDomeOpponentPotentialText8[]; -extern const u8 gBattleDomeOpponentPotentialText9[]; -extern const u8 gBattleDomeOpponentPotentialText10[]; -extern const u8 gBattleDomeOpponentPotentialText11[]; -extern const u8 gBattleDomeOpponentPotentialText12[]; -extern const u8 gBattleDomeOpponentPotentialText13[]; -extern const u8 gBattleDomeOpponentPotentialText14[]; -extern const u8 gBattleDomeOpponentPotentialText15[]; -extern const u8 gBattleDomeOpponentPotentialText16[]; -extern const u8 gBattleDomeOpponentPotentialText17[]; -extern const u8 gBattleDomeOpponentStyleText1[]; -extern const u8 gBattleDomeOpponentStyleText2[]; -extern const u8 gBattleDomeOpponentStyleText3[]; -extern const u8 gBattleDomeOpponentStyleText4[]; -extern const u8 gBattleDomeOpponentStyleText5[]; -extern const u8 gBattleDomeOpponentStyleText6[]; -extern const u8 gBattleDomeOpponentStyleText7[]; -extern const u8 gBattleDomeOpponentStyleText8[]; -extern const u8 gBattleDomeOpponentStyleText9[]; -extern const u8 gBattleDomeOpponentStyleText10[]; -extern const u8 gBattleDomeOpponentStyleText11[]; -extern const u8 gBattleDomeOpponentStyleText12[]; -extern const u8 gBattleDomeOpponentStyleText13[]; -extern const u8 gBattleDomeOpponentStyleText14[]; -extern const u8 gBattleDomeOpponentStyleText15[]; -extern const u8 gBattleDomeOpponentStyleText16[]; -extern const u8 gBattleDomeOpponentStyleText17[]; -extern const u8 gBattleDomeOpponentStyleText18[]; -extern const u8 gBattleDomeOpponentStyleText19[]; -extern const u8 gBattleDomeOpponentStyleText20[]; -extern const u8 gBattleDomeOpponentStyleText21[]; -extern const u8 gBattleDomeOpponentStyleText22[]; -extern const u8 gBattleDomeOpponentStyleText23[]; -extern const u8 gBattleDomeOpponentStyleText24[]; -extern const u8 gBattleDomeOpponentStyleText25[]; -extern const u8 gBattleDomeOpponentStyleText26[]; -extern const u8 gBattleDomeOpponentStyleText27[]; -extern const u8 gBattleDomeOpponentStyleText28[]; -extern const u8 gBattleDomeOpponentStyleTextUnused1[]; -extern const u8 gBattleDomeOpponentStyleTextUnused2[]; -extern const u8 gBattleDomeOpponentStyleTextUnused3[]; -extern const u8 gBattleDomeOpponentStyleTextUnused4[]; -extern const u8 gBattleDomeOpponentStatsText1[]; -extern const u8 gBattleDomeOpponentStatsText2[]; -extern const u8 gBattleDomeOpponentStatsText3[]; -extern const u8 gBattleDomeOpponentStatsText4[]; -extern const u8 gBattleDomeOpponentStatsText5[]; -extern const u8 gBattleDomeOpponentStatsText6[]; -extern const u8 gBattleDomeOpponentStatsText7[]; -extern const u8 gBattleDomeOpponentStatsText8[]; -extern const u8 gBattleDomeOpponentStatsText9[]; -extern const u8 gBattleDomeOpponentStatsText10[]; -extern const u8 gBattleDomeOpponentStatsText11[]; -extern const u8 gBattleDomeOpponentStatsText12[]; -extern const u8 gBattleDomeOpponentStatsText13[]; -extern const u8 gBattleDomeOpponentStatsText14[]; -extern const u8 gBattleDomeOpponentStatsText15[]; -extern const u8 gBattleDomeOpponentStatsText16[]; -extern const u8 gBattleDomeOpponentStatsText17[]; -extern const u8 gBattleDomeOpponentStatsText18[]; -extern const u8 gBattleDomeOpponentStatsText19[]; -extern const u8 gBattleDomeOpponentStatsText20[]; -extern const u8 gBattleDomeOpponentStatsText21[]; -extern const u8 gBattleDomeOpponentStatsText22[]; -extern const u8 gBattleDomeOpponentStatsText23[]; -extern const u8 gBattleDomeOpponentStatsText24[]; -extern const u8 gBattleDomeOpponentStatsText25[]; -extern const u8 gBattleDomeOpponentStatsText26[]; -extern const u8 gBattleDomeOpponentStatsText27[]; -extern const u8 gBattleDomeOpponentStatsText28[]; -extern const u8 gBattleDomeOpponentStatsText29[]; -extern const u8 gBattleDomeOpponentStatsText30[]; -extern const u8 gBattleDomeOpponentStatsText31[]; -extern const u8 gBattleDomeOpponentStatsText32[]; -extern const u8 gBattleDomeOpponentStatsText33[]; -extern const u8 gBattleDomeOpponentStatsText34[]; -extern const u8 gBattleDomeOpponentStatsText35[]; -extern const u8 gBattleDomeOpponentStatsText36[]; -extern const u8 gBattleDomeOpponentStatsText37[]; -extern const u8 gBattleDomeOpponentStatsText38[]; -extern const u8 gBattleDomeOpponentStatsText39[]; -extern const u8 gBattleDomeOpponentStatsText40[]; -extern const u8 gBattleDomeOpponentStatsText41[]; -extern const u8 gBattleDomeOpponentStatsText42[]; -extern const u8 gBattleDomeOpponentStatsText43[]; -extern const u8 gBattleDomeMatchNumberText1[]; -extern const u8 gBattleDomeMatchNumberText2[]; -extern const u8 gBattleDomeMatchNumberText3[]; -extern const u8 gBattleDomeMatchNumberText4[]; -extern const u8 gBattleDomeMatchNumberText5[]; -extern const u8 gBattleDomeMatchNumberText6[]; -extern const u8 gBattleDomeMatchNumberText7[]; -extern const u8 gBattleDomeMatchNumberText8[]; -extern const u8 gBattleDomeMatchNumberText9[]; -extern const u8 gBattleDomeMatchNumberText10[]; -extern const u8 gBattleDomeMatchNumberText11[]; -extern const u8 gBattleDomeMatchNumberText12[]; -extern const u8 gBattleDomeMatchNumberText13[]; -extern const u8 gBattleDomeMatchNumberText14[]; -extern const u8 gBattleDomeMatchNumberText15[]; -extern const u8 gBattleDomeWinText1[]; -extern const u8 gBattleDomeWinText2[]; -extern const u8 gBattleDomeWinText3[]; -extern const u8 gBattleDomeWinText4[]; -extern const u8 gBattleDomeWinText5[]; -extern const u8 gBattleDomeWinText6[]; -extern const u8 gBattleDomeWinText7[]; +extern const u8 BattleDome_Text_Potential1[]; +extern const u8 BattleDome_Text_Potential2[]; +extern const u8 BattleDome_Text_Potential3[]; +extern const u8 BattleDome_Text_Potential4[]; +extern const u8 BattleDome_Text_Potential5[]; +extern const u8 BattleDome_Text_Potential6[]; +extern const u8 BattleDome_Text_Potential7[]; +extern const u8 BattleDome_Text_Potential8[]; +extern const u8 BattleDome_Text_Potential9[]; +extern const u8 BattleDome_Text_Potential10[]; +extern const u8 BattleDome_Text_Potential11[]; +extern const u8 BattleDome_Text_Potential12[]; +extern const u8 BattleDome_Text_Potential13[]; +extern const u8 BattleDome_Text_Potential14[]; +extern const u8 BattleDome_Text_Potential15[]; +extern const u8 BattleDome_Text_Potential16[]; +extern const u8 BattleDome_Text_PotentialDomeAceTucker[]; +extern const u8 BattleDome_Text_StyleRiskDisaster[]; +extern const u8 BattleDome_Text_StyleEndureLongBattles[]; +extern const u8 BattleDome_Text_StyleVariesTactics[]; +extern const u8 BattleDome_Text_StyleToughWinningPattern[]; +extern const u8 BattleDome_Text_StyleUsesVeryRareMove[]; +extern const u8 BattleDome_Text_StyleUsesStartlingMoves[]; +extern const u8 BattleDome_Text_StyleConstantlyWatchesHP[]; +extern const u8 BattleDome_Text_StyleStoresAndLoosesPower[]; +extern const u8 BattleDome_Text_StyleEnfeeblesFoes[]; +extern const u8 BattleDome_Text_StylePrefersLuckTactics[]; +extern const u8 BattleDome_Text_StyleRegalAtmosphere[]; +extern const u8 BattleDome_Text_StylePowerfulLowPPMoves[]; +extern const u8 BattleDome_Text_StyleEnfeebleThenAttack[]; +extern const u8 BattleDome_Text_StyleBattlesWhileEnduring[]; +extern const u8 BattleDome_Text_StyleUpsetsFoesEmotionally[]; +extern const u8 BattleDome_Text_StyleStrongAndStraightforward[]; +extern const u8 BattleDome_Text_StyleAggressivelyStrongMoves[]; +extern const u8 BattleDome_Text_StyleCleverlyDodgesAttacks[]; +extern const u8 BattleDome_Text_StyleUsesUpsettingMoves[]; +extern const u8 BattleDome_Text_StyleUsesPopularMoves[]; +extern const u8 BattleDome_Text_StyleHasPowerfulComboMoves[]; +extern const u8 BattleDome_Text_StyleUsesHighProbabilityMoves[]; +extern const u8 BattleDome_Text_StyleAggressivelySpectacularMoves[]; +extern const u8 BattleDome_Text_StyleEmphasizesOffenseOverDefense[]; +extern const u8 BattleDome_Text_StyleEmphasizesDefenseOverOffense[]; +extern const u8 BattleDome_Text_StyleAttacksQuicklyStrongMoves[]; +extern const u8 BattleDome_Text_StyleUsesAddedEffectMoves[]; +extern const u8 BattleDome_Text_StyleUsesBalancedMixOfMoves[]; +extern const u8 BattleDome_Text_StyleSampleMessage1[]; +extern const u8 BattleDome_Text_StyleSampleMessage2[]; +extern const u8 BattleDome_Text_StyleSampleMessage3[]; +extern const u8 BattleDome_Text_StyleSampleMessage4[]; +extern const u8 BattleDome_Text_EmphasizesHPAndAtk[]; +extern const u8 BattleDome_Text_EmphasizesHPAndDef[]; +extern const u8 BattleDome_Text_EmphasizesHPAndSpeed[]; +extern const u8 BattleDome_Text_EmphasizesHPAndSpAtk[]; +extern const u8 BattleDome_Text_EmphasizesHPAndSpDef[]; +extern const u8 BattleDome_Text_EmphasizesAtkAndDef[]; +extern const u8 BattleDome_Text_EmphasizesAtkAndSpeed[]; +extern const u8 BattleDome_Text_EmphasizesAtkAndSpAtk[]; +extern const u8 BattleDome_Text_EmphasizesAtkAndSpDef[]; +extern const u8 BattleDome_Text_EmphasizesDefAndSpeed[]; +extern const u8 BattleDome_Text_EmphasizesDefAndSpAtk[]; +extern const u8 BattleDome_Text_EmphasizesDefAndSpDef[]; +extern const u8 BattleDome_Text_EmphasizesSpeedAndSpAtk[]; +extern const u8 BattleDome_Text_EmphasizesSpeedAndSpDef[]; +extern const u8 BattleDome_Text_EmphasizesSpAtkAndSpDef[]; +extern const u8 BattleDome_Text_EmphasizesHP[]; +extern const u8 BattleDome_Text_EmphasizesAtk[]; +extern const u8 BattleDome_Text_EmphasizesDef[]; +extern const u8 BattleDome_Text_EmphasizesSpeed[]; +extern const u8 BattleDome_Text_EmphasizesSpAtk[]; +extern const u8 BattleDome_Text_EmphasizesSpDef[]; +extern const u8 BattleDome_Text_NeglectsHPAndAtk[]; +extern const u8 BattleDome_Text_NeglectsHPAndDef[]; +extern const u8 BattleDome_Text_NeglectsHPAndSpeed[]; +extern const u8 BattleDome_Text_NeglectsHPAndSpAtk[]; +extern const u8 BattleDome_Text_NeglectsHPAndSpDef[]; +extern const u8 BattleDome_Text_NeglectsAtkAndDef[]; +extern const u8 BattleDome_Text_NeglectsAtkAndSpeed[]; +extern const u8 BattleDome_Text_NeglectsAtkAndSpAtk[]; +extern const u8 BattleDome_Text_NeglectsAtkAndSpDef[]; +extern const u8 BattleDome_Text_NeglectsDefAndSpeed[]; +extern const u8 BattleDome_Text_NeglectsDefAndSpAtk[]; +extern const u8 BattleDome_Text_NeglectsDefAndSpDef[]; +extern const u8 BattleDome_Text_NeglectsSpeedAndSpAtk[]; +extern const u8 BattleDome_Text_NeglectsSpeedAndSpDef[]; +extern const u8 BattleDome_Text_NeglectsSpAtkAndSpDef[]; +extern const u8 BattleDome_Text_NeglectsHP[]; +extern const u8 BattleDome_Text_NeglectsAtk[]; +extern const u8 BattleDome_Text_NeglectsDef[]; +extern const u8 BattleDome_Text_NeglectsSpeed[]; +extern const u8 BattleDome_Text_NeglectsSpAtk[]; +extern const u8 BattleDome_Text_NeglectsSpDef[]; +extern const u8 BattleDome_Text_RaisesMonsWellBalanced[]; +extern const u8 BattleDome_Text_Round1Match1[]; +extern const u8 BattleDome_Text_Round1Match2[]; +extern const u8 BattleDome_Text_Round1Match3[]; +extern const u8 BattleDome_Text_Round1Match4[]; +extern const u8 BattleDome_Text_Round1Match5[]; +extern const u8 BattleDome_Text_Round1Match6[]; +extern const u8 BattleDome_Text_Round1Match7[]; +extern const u8 BattleDome_Text_Round1Match8[]; +extern const u8 BattleDome_Text_Round2Match1[]; +extern const u8 BattleDome_Text_Round2Match2[]; +extern const u8 BattleDome_Text_Round2Match3[]; +extern const u8 BattleDome_Text_Round2Match4[]; +extern const u8 BattleDome_Text_SemifinalMatch1[]; +extern const u8 BattleDome_Text_SemifinalMatch2[]; +extern const u8 BattleDome_Text_FinalMatch[]; +extern const u8 BattleDome_Text_LetTheBattleBegin[]; +extern const u8 BattleDome_Text_TrainerWonUsingMove[]; +extern const u8 BattleDome_Text_TrainerBecameChamp[]; +extern const u8 BattleDome_Text_TrainerWonByDefault[]; +extern const u8 BattleDome_Text_TrainerWonOutrightByDefault[]; +extern const u8 BattleDome_Text_TrainerWonNoMoves[]; +extern const u8 BattleDome_Text_TrainerWonOutrightNoMoves[]; // Battle Pyramid. extern const u8 BattlePyramid_Text_ExitHintUp1[]; @@ -1948,8 +1948,6 @@ extern const u8 BattlePyramid_Text_FiveTrainersRemaining6[]; extern const u8 BattlePyramid_Text_SixTrainersRemaining6[]; extern const u8 BattlePyramid_Text_SevenTrainersRemaining6[]; - - // PC strings extern const u8 gText_ExitFromBox[]; extern const u8 gText_WhatDoYouWantToDo[]; diff --git a/include/tv.h b/include/tv.h index dc4b22a99..8e9233c2b 100644 --- a/include/tv.h +++ b/include/tv.h @@ -18,7 +18,7 @@ void TryPutTrainerFanClubOnAir(void); void IncrementDailyPlantedBerries(void); void IncrementDailyPickedBerries(void); void IncrementDailyBattlePoints(u16 delta); -void sub_80F01B8(void); +void HideBattleTowerReporter(void); void ReceiveTvShowsData(void *src, u32 size, u8 masterIdx); void TryPutSpotTheCutiesOnAir(struct Pokemon *pokemon, u8 ribbonMonDataIdx); u32 GetPlayerIDAsU32(void); @@ -29,7 +29,7 @@ u8 GetRibbonCount(struct Pokemon *pokemon); void AlertTVThatPlayerPlayedSlotMachine(u16 nCoinsSpent); void AlertTVThatPlayerPlayedRoulette(u16 nCoinsSpent); void AlertTVOfNewCoinTotal(u16 nCoinsPaidOut); -void sub_80EEA70(void); +void TryPutSecretBaseSecretsOnAir(void); void sub_80EDB44(void); void sub_80EDC60(const u16 *words); void sub_80EDA80(void); diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c index 161df3b82..7fe1ed24a 100644 --- a/src/battle_controller_player.c +++ b/src/battle_controller_player.c @@ -2676,8 +2676,9 @@ static void PlayerHandleHealthBarUpdate(void) LoadBattleBarGfx(0); hpVal = gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8); + // gPlayerPartyLostHP used by Battle Dome, but never read if (hpVal > 0) - gUnknown_0203CD70 += hpVal; + gPlayerPartyLostHP += hpVal; if (hpVal != INSTANT_HP_BAR_DROP) { diff --git a/src/battle_dome.c b/src/battle_dome.c index 897269a30..746d195d9 100644 --- a/src/battle_dome.c +++ b/src/battle_dome.c @@ -1,6 +1,7 @@ #include "global.h" #include "battle_dome.h" #include "battle.h" +#include "battle_main.h" #include "battle_setup.h" #include "battle_tower.h" #include "frontier_util.h" @@ -34,60 +35,80 @@ #include "constants/frontier_util.h" #include "constants/species.h" #include "constants/moves.h" +#include "constants/pokemon.h" #include "constants/trainers.h" #include "constants/abilities.h" #include "constants/songs.h" #include "constants/battle_frontier.h" #include "constants/rgb.h" -struct BattleDomeStruct +// Enough space to hold 2 match info cards worth of trainers and their parties +#define NUM_INFOCARD_SPRITES ((FRONTIER_PARTY_SIZE + 1) * 4) +#define NUM_INFOCARD_TRAINERS 2 + +// An 'Info Card' is a trainer or match information page that can be viewed on the Tourney Tree +struct TourneyTreeInfoCard { - u8 arr[DOME_TOURNAMENT_TRAINERS_COUNT]; - u8 unk_10; - u8 unk_11[3]; + u8 spriteIds[NUM_INFOCARD_SPRITES]; + u8 pos; + u8 tournamentIds[NUM_INFOCARD_TRAINERS]; }; -struct UnkStruct_860DD10 +struct TourneyTreeLineSection { u8 x; u8 y; u16 src; }; +#define DOME_TRAINERS gSaveBlock2Ptr->frontier.domeTrainers +#define DOME_MONS gSaveBlock2Ptr->frontier.domeMonIds + +#define tState data[0] + +// Task data for Task_ShowTourneyTree +#define tNotInteractive data[1] +#define tIsPrevTourneyTree data[4] + +// Task data for Task_ShowTourneyInfoCard +#define tTournamentId data[1] +#define tMode data[2] +#define tPrevTaskId data[3] + // This file's functions. static u8 GetDomeTrainerMonIvs(u16 trainerId); static void SwapDomeTrainers(int id1, int id2, u16 *statsArray); static void CalcDomeMonStats(u16 species, int level, int ivs, u8 evBits, u8 nature, int *stats); static void CreateDomeOpponentMons(u16 tournamentTrainerId); -static int sub_818FCBC(u16 tournamentTrainerId, bool8 arg1); -static int sub_818FDB8(u16 tournamentTrainerId, bool8 arg1); +static int SelectOpponentMonsUsingPersonality(u16 tournamentTrainerId, bool8 arg1); +static int SelectOpponentMonsUsingOtId(u16 tournamentTrainerId, bool8 arg1); static int GetTypeEffectivenessPoints(int move, int species, int arg2); -static int sub_818FEB4(int *arr, bool8 arg1); -static void Task_ShowOpponentInfo(u8 taskId); -static void sub_8190CD4(u8 taskId); -static u8 sub_819221C(u8 taskId); -static void InitDomeFacilityTrainersAndMons(void); +static int SelectOpponentMonsFromParty(int *arr, bool8 arg1); +static void Task_ShowTourneyInfoCard(u8 taskId); +static void Task_HandleInfoCardInput(u8 taskId); +static u8 Task_GetInfoCardInput(u8 taskId); +static void SetFacilityTrainerAndMonPtrs(void); static int TrainerIdToTournamentId(u16 trainerId); static u16 TrainerIdOfPlayerOpponent(void); static void Task_ShowTourneyTree(u8 taskId); -static void sub_8194950(u8 taskId); -static void CB2_BattleDome(void); -static void VblankCb0_BattleDome(void); +static void Task_HandleStaticTourneyTreeInput(u8 taskId); +static void CB2_TourneyTree(void); +static void VblankCb_TourneyInfoCard(void); static void DisplayMatchInfoOnCard(u8 flags, u8 matchNo); -static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId); -static int sub_8192F08(u8, u8*); +static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTourneyId); +static int BufferDomeWinString(u8, u8*); static u8 GetDomeBrainTrainerPicId(void); static u8 GetDomeBrainTrainerClass(void); static void CopyDomeBrainTrainerName(u8 *str); static void CopyDomeTrainerName(u8 *str, u16 trainerId); -static void HblankCb_BattleDome(void); -static void VblankCb1_BattleDome(void); +static void HblankCb_TourneyTree(void); +static void VblankCb_TourneyTree(void); static u8 UpdateTourneyTreeCursor(u8 taskId); static void DecideRoundWinners(u8 roundId); static u8 sub_81953E8(u8 tournamentId, u8); -static void sub_81948EC(u8, u8); -static void sub_8190B40(struct Sprite *sprite); -static void sub_8190C6C(struct Sprite *sprite); +static void DrawTourneyAdvancementLine(u8, u8); +static void SpriteCb_HorizontalScrollArrow(struct Sprite *sprite); +static void SpriteCb_VerticalScrollArrow(struct Sprite *sprite); static void InitDomeChallenge(void); static void GetDomeData(void); static void SetDomeData(void); @@ -96,7 +117,7 @@ static void BufferDomeOpponentName(void); static void InitDomeOpponentParty(void); static void ShowDomeOpponentInfo(void); static void ShowDomeTourneyTree(void); -static void ShowPreviousDomeResultsTourneyTree(void); +static void ShowPreviousDomeTourneyTree(void); static void SetDomeOpponentId(void); static void SetDomeOpponentGraphicsId(void); static void ShowNonInteractiveDomeTourneyTree(void); @@ -105,411 +126,415 @@ static void SaveDomeChallenge(void); static void IncrementDomeStreaks(void); static void ResetSketchedMoves(void); static void RestoreDomePlayerPartyHeldItems(void); -static void ReduceDomePlayerPartyTo3Mons(void); +static void ReduceDomePlayerPartyToSelectedMons(void); static void GetPlayerSeededBeforeOpponent(void); static void BufferLastDomeWinnerName(void); -static void sub_8194F58(void); +static void InitRandomTourneyTreeResults(void); static void InitDomeTrainers(void); // EWRAM variables. -EWRAM_DATA u32 gUnknown_0203CD70 = 0; -static EWRAM_DATA u32 gUnknown_0203CD74 = 0; -static EWRAM_DATA struct BattleDomeStruct *sBattleDomeStruct = {0}; +EWRAM_DATA u32 gPlayerPartyLostHP = 0; // never read +static EWRAM_DATA u32 sPlayerPartyMaxHP = 0; // never read +static EWRAM_DATA struct TourneyTreeInfoCard *sInfoCard = {0}; static EWRAM_DATA u8 *sTilemapBuffer = NULL; -// Const rom data. -static const u8 sMovePointsForDomeTrainers[MOVES_COUNT][DOME_TOURNAMENT_TRAINERS_COUNT] = -{ - [MOVE_NONE] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_POUND] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_KARATE_CHOP] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_DOUBLE_SLAP] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_COMET_PUNCH] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_MEGA_PUNCH] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_PAY_DAY] = {0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_FIRE_PUNCH] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_ICE_PUNCH] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_THUNDER_PUNCH] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_SCRATCH] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_VICE_GRIP] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_GUILLOTINE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0}, - [MOVE_RAZOR_WIND] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_SWORDS_DANCE] = {1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0}, - [MOVE_CUT] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_GUST] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_WING_ATTACK] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_WHIRLWIND] = {1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_FLY] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_BIND] = {0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1}, - [MOVE_SLAM] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_VINE_WHIP] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_STOMP] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_DOUBLE_KICK] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_MEGA_KICK] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0}, - [MOVE_JUMP_KICK] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_ROLLING_KICK] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1}, - [MOVE_SAND_ATTACK] = {0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_HEADBUTT] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_HORN_ATTACK] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_FURY_ATTACK] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_HORN_DRILL] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0}, - [MOVE_TACKLE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_BODY_SLAM] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_WRAP] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1}, - [MOVE_TAKE_DOWN] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_THRASH] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_DOUBLE_EDGE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_TAIL_WHIP] = {0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_POISON_STING] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_TWINEEDLE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_PIN_MISSILE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_LEER] = {0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_BITE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_GROWL] = {0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_ROAR] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_SING] = {0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_SUPERSONIC] = {0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_SONIC_BOOM] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_DISABLE] = {0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_ACID] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_EMBER] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_FLAMETHROWER] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1}, - [MOVE_MIST] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_WATER_GUN] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_HYDRO_PUMP] = {1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0}, - [MOVE_SURF] = {1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0}, - [MOVE_ICE_BEAM] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1}, - [MOVE_BLIZZARD] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1}, - [MOVE_PSYBEAM] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_BUBBLE_BEAM] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_AURORA_BEAM] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_HYPER_BEAM] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0}, - [MOVE_PECK] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_DRILL_PECK] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_SUBMISSION] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_LOW_KICK] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_COUNTER] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0}, - [MOVE_SEISMIC_TOSS] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_STRENGTH] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_ABSORB] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_MEGA_DRAIN] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_LEECH_SEED] = {1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_GROWTH] = {0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_RAZOR_LEAF] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_SOLAR_BEAM] = {1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0}, - [MOVE_POISON_POWDER] = {0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_STUN_SPORE] = {0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_SLEEP_POWDER] = {0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_PETAL_DANCE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_STRING_SHOT] = {0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_DRAGON_RAGE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_FIRE_SPIN] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1}, - [MOVE_THUNDER_SHOCK] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_THUNDERBOLT] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1}, - [MOVE_THUNDER_WAVE] = {0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_THUNDER] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1}, - [MOVE_ROCK_THROW] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_EARTHQUAKE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0}, - [MOVE_FISSURE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0}, - [MOVE_DIG] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_TOXIC] = {0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1}, - [MOVE_CONFUSION] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_PSYCHIC] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1}, - [MOVE_HYPNOSIS] = {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_MEDITATE] = {1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_AGILITY] = {0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_QUICK_ATTACK] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_RAGE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_TELEPORT] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_NIGHT_SHADE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_MIMIC] = {0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_SCREECH] = {0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_DOUBLE_TEAM] = {0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_RECOVER] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_HARDEN] = {0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_MINIMIZE] = {0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_SMOKESCREEN] = {0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_CONFUSE_RAY] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_WITHDRAW] = {0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_DEFENSE_CURL] = {0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_BARRIER] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_LIGHT_SCREEN] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_HAZE] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_REFLECT] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_FOCUS_ENERGY] = {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_BIDE] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_METRONOME] = {0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}, - [MOVE_MIRROR_MOVE] = {0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}, - [MOVE_SELF_DESTRUCT] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0}, - [MOVE_EGG_BOMB] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0}, - [MOVE_LICK] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_SMOG] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1}, - [MOVE_SLUDGE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_BONE_CLUB] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1}, - [MOVE_FIRE_BLAST] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1}, - [MOVE_WATERFALL] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_CLAMP] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1}, - [MOVE_SWIFT] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_SKULL_BASH] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0}, - [MOVE_SPIKE_CANNON] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_CONSTRICT] = {0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_AMNESIA] = {0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_KINESIS] = {0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_SOFT_BOILED] = {0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_HI_JUMP_KICK] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_GLARE] = {0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_DREAM_EATER] = {1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0}, - [MOVE_POISON_GAS] = {0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_BARRAGE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_LEECH_LIFE] = {0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_LOVELY_KISS] = {0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_SKY_ATTACK] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1}, - [MOVE_TRANSFORM] = {0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_BUBBLE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_DIZZY_PUNCH] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_SPORE] = {0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_FLASH] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_PSYWAVE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_SPLASH] = {0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_ACID_ARMOR] = {0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_CRABHAMMER] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0}, - [MOVE_EXPLOSION] = {0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0}, - [MOVE_FURY_SWIPES] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_BONEMERANG] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_REST] = {1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_ROCK_SLIDE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1}, - [MOVE_HYPER_FANG] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1}, - [MOVE_SHARPEN] = {0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_CONVERSION] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_TRI_ATTACK] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_SUPER_FANG] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_SLASH] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_SUBSTITUTE] = {0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_STRUGGLE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0}, - [MOVE_SKETCH] = {0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0}, - [MOVE_TRIPLE_KICK] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_THIEF] = {0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_SPIDER_WEB] = {0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_MIND_READER] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0}, - [MOVE_NIGHTMARE] = {1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_FLAME_WHEEL] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_SNORE] = {1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_CURSE] = {0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_FLAIL] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_CONVERSION_2] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_AEROBLAST] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0}, - [MOVE_COTTON_SPORE] = {0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_REVERSAL] = {1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_SPITE] = {0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_POWDER_SNOW] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_PROTECT] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0}, - [MOVE_MACH_PUNCH] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_SCARY_FACE] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_FAINT_ATTACK] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_SWEET_KISS] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_BELLY_DRUM] = {1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_SLUDGE_BOMB] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1}, - [MOVE_MUD_SLAP] = {0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_OCTAZOOKA] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1}, - [MOVE_SPIKES] = {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_ZAP_CANNON] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1}, - [MOVE_FORESIGHT] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_DESTINY_BOND] = {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0}, - [MOVE_PERISH_SONG] = {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0}, - [MOVE_ICY_WIND] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1}, - [MOVE_DETECT] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0}, - [MOVE_BONE_RUSH] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_LOCK_ON] = {1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0}, - [MOVE_OUTRAGE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1}, - [MOVE_SANDSTORM] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_GIGA_DRAIN] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0}, - [MOVE_ENDURE] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_CHARM] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_ROLLOUT] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_FALSE_SWIPE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_SWAGGER] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, - [MOVE_MILK_DRINK] = {0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_SPARK] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_FURY_CUTTER] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_STEEL_WING] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1}, - [MOVE_MEAN_LOOK] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0}, - [MOVE_ATTRACT] = {0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_SLEEP_TALK] = {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}, - [MOVE_HEAL_BELL] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0}, - [MOVE_RETURN] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_PRESENT] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0}, - [MOVE_FRUSTRATION] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_SAFEGUARD] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_PAIN_SPLIT] = {0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_SACRED_FIRE] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1}, - [MOVE_MAGNITUDE] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_DYNAMIC_PUNCH] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1}, - [MOVE_MEGAHORN] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0}, - [MOVE_DRAGON_BREATH] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_BATON_PASS] = {1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_ENCORE] = {0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0}, - [MOVE_PURSUIT] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_RAPID_SPIN] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_SWEET_SCENT] = {0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_IRON_TAIL] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1}, - [MOVE_METAL_CLAW] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1}, - [MOVE_VITAL_THROW] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_MORNING_SUN] = {1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0}, - [MOVE_SYNTHESIS] = {1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0}, - [MOVE_MOONLIGHT] = {1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0}, - [MOVE_HIDDEN_POWER] = {0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_CROSS_CHOP] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0}, - [MOVE_TWISTER] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_RAIN_DANCE] = {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0}, - [MOVE_SUNNY_DAY] = {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0}, - [MOVE_CRUNCH] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_MIRROR_COAT] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_PSYCH_UP] = {0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_EXTREME_SPEED] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0}, - [MOVE_ANCIENT_POWER] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1}, - [MOVE_SHADOW_BALL] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_FUTURE_SIGHT] = {0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_ROCK_SMASH] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_WHIRLPOOL] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1}, - [MOVE_BEAT_UP] = {0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_FAKE_OUT] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_UPROAR] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_STOCKPILE] = {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_SPIT_UP] = {1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0}, - [MOVE_SWALLOW] = {1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_HEAT_WAVE] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1}, - [MOVE_HAIL] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_TORMENT] = {0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_FLATTER] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_WILL_O_WISP] = {0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_MEMENTO] = {0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_FACADE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_FOCUS_PUNCH] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0}, - [MOVE_SMELLING_SALT] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_FOLLOW_ME] = {0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_NATURE_POWER] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_CHARGE] = {1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_TAUNT] = {0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_HELPING_HAND] = {0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_TRICK] = {0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_ROLE_PLAY] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_WISH] = {0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_ASSIST] = {0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0}, - [MOVE_INGRAIN] = {1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_SUPERPOWER] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0}, - [MOVE_MAGIC_COAT] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0}, - [MOVE_RECYCLE] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_REVENGE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0}, - [MOVE_BRICK_BREAK] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_YAWN] = {1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_KNOCK_OFF] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_ENDEAVOR] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0}, - [MOVE_ERUPTION] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0}, - [MOVE_SKILL_SWAP] = {0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_IMPRISON] = {0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0}, - [MOVE_REFRESH] = {0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_GRUDGE] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0}, - [MOVE_SNATCH] = {0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0}, - [MOVE_SECRET_POWER] = {0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_DIVE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_ARM_THRUST] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_CAMOUFLAGE] = {0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_TAIL_GLOW] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_LUSTER_PURGE] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1}, - [MOVE_MIST_BALL] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1}, - [MOVE_FEATHER_DANCE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_TEETER_DANCE] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_BLAZE_KICK] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1}, - [MOVE_MUD_SPORT] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_ICE_BALL] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_NEEDLE_ARM] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_SLACK_OFF] = {0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_HYPER_VOICE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0}, - [MOVE_POISON_FANG] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_CRUSH_CLAW] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1}, - [MOVE_BLAST_BURN] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0}, - [MOVE_HYDRO_CANNON] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0}, - [MOVE_METEOR_MASH] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1}, - [MOVE_ASTONISH] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_WEATHER_BALL] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_AROMATHERAPY] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0}, - [MOVE_FAKE_TEARS] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_AIR_CUTTER] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_OVERHEAT] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1}, - [MOVE_ODOR_SLEUTH] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_ROCK_TOMB] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1}, - [MOVE_SILVER_WIND] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1}, - [MOVE_METAL_SOUND] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_GRASS_WHISTLE] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_TICKLE] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_COSMIC_POWER] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_WATER_SPOUT] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0}, - [MOVE_SIGNAL_BEAM] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_SHADOW_PUNCH] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_EXTRASENSORY] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_SKY_UPPERCUT] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_SAND_TOMB] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1}, - [MOVE_SHEER_COLD] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0}, - [MOVE_MUDDY_WATER] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1}, - [MOVE_BULLET_SEED] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_AERIAL_ACE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_ICICLE_SPEAR] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_IRON_DEFENSE] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_BLOCK] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0}, - [MOVE_HOWL] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_DRAGON_CLAW] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_FRENZY_PLANT] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0}, - [MOVE_BULK_UP] = {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_BOUNCE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1}, - [MOVE_MUD_SHOT] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1}, - [MOVE_POISON_TAIL] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_COVET] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_VOLT_TACKLE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0}, - [MOVE_MAGICAL_LEAF] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_WATER_SPORT] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_CALM_MIND] = {1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_LEAF_BLADE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_DRAGON_DANCE] = {1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_ROCK_BLAST] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_SHOCK_WAVE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_WATER_PULSE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_DOOM_DESIRE] = {0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0}, - [MOVE_PSYCHO_BOOST] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1}, +// Each move has an array of points for different move characteristics which contribute to a tourney trainers listed battle style (see sBattleStyleThresholds) +// All move points are either 1 or 0, so theyre essentially flags saying whether or not the move has that characteristic +static const u8 sBattleStyleMovePoints[MOVES_COUNT][NUM_MOVE_POINT_TYPES] = +{ + [MOVE_NONE] = {0}, + [MOVE_POUND] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_KARATE_CHOP] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_DOUBLE_SLAP] = {[MOVE_POINTS_DMG] = 1}, + [MOVE_COMET_PUNCH] = {[MOVE_POINTS_DMG] = 1}, + [MOVE_MEGA_PUNCH] = {[MOVE_POINTS_DMG] = 1}, + [MOVE_PAY_DAY] = {[MOVE_POINTS_RARE] = 1, [MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_FIRE_PUNCH] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_ICE_PUNCH] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_THUNDER_PUNCH] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_SCRATCH] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_VICE_GRIP] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_GUILLOTINE] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_LOW_PP] = 1}, + [MOVE_RAZOR_WIND] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_SWORDS_DANCE] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_STAT_RAISE] = 1, [MOVE_POINTS_POPULAR] = 1}, + [MOVE_CUT] = {[MOVE_POINTS_DMG] = 1}, + [MOVE_GUST] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_WING_ATTACK] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_WHIRLWIND] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_FLY] = {[MOVE_POINTS_DMG] = 1}, + [MOVE_BIND] = {[MOVE_POINTS_STATUS] = 1, [MOVE_POINTS_DMG] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_SLAM] = {[MOVE_POINTS_DMG] = 1}, + [MOVE_VINE_WHIP] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_STOMP] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_DOUBLE_KICK] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_MEGA_KICK] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_LOW_PP] = 1}, + [MOVE_JUMP_KICK] = {[MOVE_POINTS_DMG] = 1}, + [MOVE_ROLLING_KICK] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_SAND_ATTACK] = {[MOVE_POINTS_STAT_LOWER] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_HEADBUTT] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_HORN_ATTACK] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_FURY_ATTACK] = {[MOVE_POINTS_DMG] = 1}, + [MOVE_HORN_DRILL] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_LOW_PP] = 1}, + [MOVE_TACKLE] = {[MOVE_POINTS_DMG] = 1}, + [MOVE_BODY_SLAM] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_WRAP] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_TAKE_DOWN] = {[MOVE_POINTS_DMG] = 1}, + [MOVE_THRASH] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_DOUBLE_EDGE] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_TAIL_WHIP] = {[MOVE_POINTS_STAT_LOWER] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_POISON_STING] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_TWINEEDLE] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_PIN_MISSILE] = {[MOVE_POINTS_DMG] = 1}, + [MOVE_LEER] = {[MOVE_POINTS_STAT_LOWER] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_BITE] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_GROWL] = {[MOVE_POINTS_STAT_LOWER] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_ROAR] = {[MOVE_POINTS_ACCURATE] = 1}, + [MOVE_SING] = {[MOVE_POINTS_STATUS] = 1}, + [MOVE_SUPERSONIC] = {[MOVE_POINTS_STATUS] = 1}, + [MOVE_SONIC_BOOM] = {[MOVE_POINTS_DMG] = 1}, + [MOVE_DISABLE] = {[MOVE_POINTS_STATUS] = 1}, + [MOVE_ACID] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_EMBER] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_FLAMETHROWER] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_POPULAR] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_MIST] = {0}, + [MOVE_WATER_GUN] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_HYDRO_PUMP] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_DMG] = 1, [MOVE_POINTS_POWERFUL] = 1, [MOVE_POINTS_LOW_PP] = 1}, + [MOVE_SURF] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_POPULAR] = 1, [MOVE_POINTS_STRONG] = 1}, + [MOVE_ICE_BEAM] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_POPULAR] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_BLIZZARD] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_POWERFUL] = 1, [MOVE_POINTS_LOW_PP] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_PSYBEAM] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_BUBBLE_BEAM] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_AURORA_BEAM] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_HYPER_BEAM] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_POWERFUL] = 1, [MOVE_POINTS_POPULAR] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_LOW_PP] = 1}, + [MOVE_PECK] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_DRILL_PECK] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_SUBMISSION] = {[MOVE_POINTS_DMG] = 1}, + [MOVE_LOW_KICK] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_COUNTER] = {[MOVE_POINTS_DEF] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_LUCK] = 1}, + [MOVE_SEISMIC_TOSS] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_STRENGTH] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_ABSORB] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_MEGA_DRAIN] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_LEECH_SEED] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_STATUS] = 1}, + [MOVE_GROWTH] = {[MOVE_POINTS_STAT_RAISE] = 1}, + [MOVE_RAZOR_LEAF] = {[MOVE_POINTS_DMG] = 1}, + [MOVE_SOLAR_BEAM] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_POWERFUL] = 1, [MOVE_POINTS_POPULAR] = 1, [MOVE_POINTS_STRONG] = 1}, + [MOVE_POISON_POWDER] = {[MOVE_POINTS_STATUS] = 1}, + [MOVE_STUN_SPORE] = {[MOVE_POINTS_STATUS] = 1}, + [MOVE_SLEEP_POWDER] = {[MOVE_POINTS_STATUS] = 1}, + [MOVE_PETAL_DANCE] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_STRING_SHOT] = {[MOVE_POINTS_STAT_LOWER] = 1}, + [MOVE_DRAGON_RAGE] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_FIRE_SPIN] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_THUNDER_SHOCK] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_THUNDERBOLT] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_POPULAR] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_THUNDER_WAVE] = {[MOVE_POINTS_STATUS] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_THUNDER] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_POWERFUL] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_ROCK_THROW] = {[MOVE_POINTS_DMG] = 1}, + [MOVE_EARTHQUAKE] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_POWERFUL] = 1, [MOVE_POINTS_POPULAR] = 1, [MOVE_POINTS_STRONG] = 1}, + [MOVE_FISSURE] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_LUCK] = 1, [MOVE_POINTS_LOW_PP] = 1}, + [MOVE_DIG] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_TOXIC] = {[MOVE_POINTS_STATUS] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_CONFUSION] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_PSYCHIC] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_POPULAR] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_HYPNOSIS] = {[MOVE_POINTS_COMBO] = 1}, + [MOVE_MEDITATE] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_STAT_RAISE] = 1}, + [MOVE_AGILITY] = {[MOVE_POINTS_STAT_RAISE] = 1}, + [MOVE_QUICK_ATTACK] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_RAGE] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_TELEPORT] = {0}, + [MOVE_NIGHT_SHADE] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_MIMIC] = {[MOVE_POINTS_RARE] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_SCREECH] = {[MOVE_POINTS_STAT_LOWER] = 1}, + [MOVE_DOUBLE_TEAM] = {[MOVE_POINTS_STAT_RAISE] = 1, [MOVE_POINTS_DEF] = 1}, + [MOVE_RECOVER] = {0}, + [MOVE_HARDEN] = {[MOVE_POINTS_STAT_RAISE] = 1, [MOVE_POINTS_DEF] = 1}, + [MOVE_MINIMIZE] = {[MOVE_POINTS_STAT_RAISE] = 1, [MOVE_POINTS_DEF] = 1}, + [MOVE_SMOKESCREEN] = {[MOVE_POINTS_STAT_LOWER] = 1, [MOVE_POINTS_DEF] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_CONFUSE_RAY] = {[MOVE_POINTS_ACCURATE] = 1}, + [MOVE_WITHDRAW] = {[MOVE_POINTS_STAT_RAISE] = 1, [MOVE_POINTS_DEF] = 1}, + [MOVE_DEFENSE_CURL] = {[MOVE_POINTS_STAT_RAISE] = 1, [MOVE_POINTS_DEF] = 1}, + [MOVE_BARRIER] = {[MOVE_POINTS_DEF] = 1}, + [MOVE_LIGHT_SCREEN] = {[MOVE_POINTS_DEF] = 1}, + [MOVE_HAZE] = {0}, + [MOVE_REFLECT] = {[MOVE_POINTS_DEF] = 1}, + [MOVE_FOCUS_ENERGY] = {[MOVE_POINTS_COMBO] = 1}, + [MOVE_BIDE] = {[MOVE_POINTS_ACCURATE] = 1}, + [MOVE_METRONOME] = {[MOVE_POINTS_RARE] = 1, [MOVE_POINTS_LUCK] = 1}, + [MOVE_MIRROR_MOVE] = {[MOVE_POINTS_RARE] = 1, [MOVE_POINTS_LUCK] = 1}, + [MOVE_SELF_DESTRUCT] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_POWERFUL] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_LOW_PP] = 1}, + [MOVE_EGG_BOMB] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_POWERFUL] = 1, [MOVE_POINTS_STRONG] = 1}, + [MOVE_LICK] = {[MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_SMOG] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_SLUDGE] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_BONE_CLUB] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_FIRE_BLAST] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_POWERFUL] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_LOW_PP] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_WATERFALL] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_CLAMP] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_SWIFT] = {[MOVE_POINTS_DMG] = 1}, + [MOVE_SKULL_BASH] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_STRONG] = 1}, + [MOVE_SPIKE_CANNON] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_CONSTRICT] = {[MOVE_POINTS_STATUS] = 1, [MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_AMNESIA] = {[MOVE_POINTS_STAT_RAISE] = 1, [MOVE_POINTS_DEF] = 1}, + [MOVE_KINESIS] = {[MOVE_POINTS_STAT_LOWER] = 1}, + [MOVE_SOFT_BOILED] = {[MOVE_POINTS_HEAL] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_HI_JUMP_KICK] = {[MOVE_POINTS_DMG] = 1}, + [MOVE_GLARE] = {[MOVE_POINTS_STAT_LOWER] = 1}, + [MOVE_DREAM_EATER] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_RARE] = 1, [MOVE_POINTS_HEAL] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_STRONG] = 1}, + [MOVE_POISON_GAS] = {[MOVE_POINTS_STATUS] = 1}, + [MOVE_BARRAGE] = {[MOVE_POINTS_DMG] = 1}, + [MOVE_LEECH_LIFE] = {[MOVE_POINTS_HEAL] = 1, [MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_LOVELY_KISS] = {[MOVE_POINTS_STATUS] = 1}, + [MOVE_SKY_ATTACK] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_POWERFUL] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_LOW_PP] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_TRANSFORM] = {[MOVE_POINTS_RARE] = 1}, + [MOVE_BUBBLE] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_DIZZY_PUNCH] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_SPORE] = {[MOVE_POINTS_STATUS] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_FLASH] = {0}, + [MOVE_PSYWAVE] = {[MOVE_POINTS_DMG] = 1}, + [MOVE_SPLASH] = {[MOVE_POINTS_RARE] = 1}, + [MOVE_ACID_ARMOR] = {[MOVE_POINTS_STAT_RAISE] = 1, [MOVE_POINTS_DEF] = 1}, + [MOVE_CRABHAMMER] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_STRONG] = 1}, + [MOVE_EXPLOSION] = {[MOVE_POINTS_RISKY] = 1, [MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_POWERFUL] = 1, [MOVE_POINTS_POPULAR] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_LOW_PP] = 1}, + [MOVE_FURY_SWIPES] = {[MOVE_POINTS_DMG] = 1}, + [MOVE_BONEMERANG] = {[MOVE_POINTS_DMG] = 1}, + [MOVE_REST] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_HEAL] = 1}, + [MOVE_ROCK_SLIDE] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_HYPER_FANG] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_SHARPEN] = {[MOVE_POINTS_STAT_RAISE] = 1, [MOVE_POINTS_DEF] = 1}, + [MOVE_CONVERSION] = {[MOVE_POINTS_DEF] = 1}, + [MOVE_TRI_ATTACK] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_SUPER_FANG] = {[MOVE_POINTS_DMG] = 1}, + [MOVE_SLASH] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_SUBSTITUTE] = {[MOVE_POINTS_RARE] = 1, [MOVE_POINTS_DEF] = 1}, + [MOVE_STRUGGLE] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_LOW_PP] = 1}, // Odd that this is assigned qualities + [MOVE_SKETCH] = {[MOVE_POINTS_RARE] = 1, [MOVE_POINTS_LUCK] = 1, [MOVE_POINTS_LOW_PP] = 1}, + [MOVE_TRIPLE_KICK] = {[MOVE_POINTS_DMG] = 1}, + [MOVE_THIEF] = {[MOVE_POINTS_RARE] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_SPIDER_WEB] = {[MOVE_POINTS_STAT_LOWER] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_MIND_READER] = {[MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_LOW_PP] = 1}, + [MOVE_NIGHTMARE] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_STATUS] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_FLAME_WHEEL] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_SNORE] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_CURSE] = {[MOVE_POINTS_STATUS] = 1}, + [MOVE_FLAIL] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_CONVERSION_2] = {[MOVE_POINTS_ACCURATE] = 1}, + [MOVE_AEROBLAST] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_POWERFUL] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_LOW_PP] = 1}, + [MOVE_COTTON_SPORE] = {[MOVE_POINTS_STAT_LOWER] = 1}, + [MOVE_REVERSAL] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_SPITE] = {[MOVE_POINTS_RARE] = 1, [MOVE_POINTS_RISKY] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_POWDER_SNOW] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_PROTECT] = {[MOVE_POINTS_DEF] = 1, [MOVE_POINTS_POPULAR] = 1}, + [MOVE_MACH_PUNCH] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_SCARY_FACE] = {0}, + [MOVE_FAINT_ATTACK] = {[MOVE_POINTS_DMG] = 1}, + [MOVE_SWEET_KISS] = {0}, + [MOVE_BELLY_DRUM] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_STAT_RAISE] = 1}, + [MOVE_SLUDGE_BOMB] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_MUD_SLAP] = {[MOVE_POINTS_STAT_LOWER] = 1, [MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_OCTAZOOKA] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_SPIKES] = {[MOVE_POINTS_COMBO] = 1}, + [MOVE_ZAP_CANNON] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_POWERFUL] = 1, [MOVE_POINTS_LUCK] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_LOW_PP] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_FORESIGHT] = {[MOVE_POINTS_ACCURATE] = 1}, + [MOVE_DESTINY_BOND] = {[MOVE_POINTS_RISKY] = 1, [MOVE_POINTS_LOW_PP] = 1}, + [MOVE_PERISH_SONG] = {[MOVE_POINTS_RISKY] = 1, [MOVE_POINTS_LOW_PP] = 1}, + [MOVE_ICY_WIND] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_DETECT] = {[MOVE_POINTS_DEF] = 1, [MOVE_POINTS_LOW_PP] = 1}, + [MOVE_BONE_RUSH] = {[MOVE_POINTS_DMG] = 1}, + [MOVE_LOCK_ON] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_LOW_PP] = 1}, + [MOVE_OUTRAGE] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_SANDSTORM] = {0}, + [MOVE_GIGA_DRAIN] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_LOW_PP] = 1}, + [MOVE_ENDURE] = {[MOVE_POINTS_DEF] = 1}, + [MOVE_CHARM] = {[MOVE_POINTS_ACCURATE] = 1}, + [MOVE_ROLLOUT] = {[MOVE_POINTS_DMG] = 1}, + [MOVE_FALSE_SWIPE] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_SWAGGER] = {[MOVE_POINTS_EFFECT] = 1}, + [MOVE_MILK_DRINK] = {[MOVE_POINTS_HEAL] = 1}, + [MOVE_SPARK] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_FURY_CUTTER] = {[MOVE_POINTS_DMG] = 1}, + [MOVE_STEEL_WING] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_MEAN_LOOK] = {[MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_LOW_PP] = 1}, + [MOVE_ATTRACT] = {[MOVE_POINTS_STATUS] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_SLEEP_TALK] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_LUCK] = 1}, + [MOVE_HEAL_BELL] = {[MOVE_POINTS_LOW_PP] = 1}, + [MOVE_RETURN] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_PRESENT] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_LUCK] = 1}, + [MOVE_FRUSTRATION] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_SAFEGUARD] = {[MOVE_POINTS_DEF] = 1}, + [MOVE_PAIN_SPLIT] = {[MOVE_POINTS_RARE] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_SACRED_FIRE] = {[MOVE_POINTS_POWERFUL] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_LOW_PP] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_MAGNITUDE] = {[MOVE_POINTS_ACCURATE] = 1}, + [MOVE_DYNAMIC_PUNCH] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_LUCK] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_LOW_PP] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_MEGAHORN] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_STRONG] = 1}, + [MOVE_DRAGON_BREATH] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_BATON_PASS] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_RARE] = 1}, + [MOVE_ENCORE] = {[MOVE_POINTS_STATUS] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_LOW_PP] = 1}, + [MOVE_PURSUIT] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_RAPID_SPIN] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_SWEET_SCENT] = {[MOVE_POINTS_STAT_LOWER] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_IRON_TAIL] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_METAL_CLAW] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_VITAL_THROW] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_MORNING_SUN] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_HEAL] = 1, [MOVE_POINTS_LOW_PP] = 1}, + [MOVE_SYNTHESIS] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_HEAL] = 1, [MOVE_POINTS_LOW_PP] = 1}, + [MOVE_MOONLIGHT] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_HEAL] = 1, [MOVE_POINTS_LOW_PP] = 1}, + [MOVE_HIDDEN_POWER] = {[MOVE_POINTS_RARE] = 1, [MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_CROSS_CHOP] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_LOW_PP] = 1}, + [MOVE_TWISTER] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_RAIN_DANCE] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_LOW_PP] = 1}, + [MOVE_SUNNY_DAY] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_LOW_PP] = 1}, + [MOVE_CRUNCH] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_MIRROR_COAT] = {[MOVE_POINTS_DEF] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_PSYCH_UP] = {[MOVE_POINTS_STAT_RAISE] = 1}, + [MOVE_EXTREME_SPEED] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_LOW_PP] = 1}, + [MOVE_ANCIENT_POWER] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_LOW_PP] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_SHADOW_BALL] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_FUTURE_SIGHT] = {[MOVE_POINTS_RARE] = 1, [MOVE_POINTS_DMG] = 1}, + [MOVE_ROCK_SMASH] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_WHIRLPOOL] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_BEAT_UP] = {[MOVE_POINTS_RARE] = 1, [MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_FAKE_OUT] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_UPROAR] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_STOCKPILE] = {[MOVE_POINTS_COMBO] = 1}, + [MOVE_SPIT_UP] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_STRONG] = 1}, + [MOVE_SWALLOW] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_HEAL] = 1}, + [MOVE_HEAT_WAVE] = {[MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_HAIL] = {0}, + [MOVE_TORMENT] = {[MOVE_POINTS_STATUS] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_FLATTER] = {[MOVE_POINTS_ACCURATE] = 1}, + [MOVE_WILL_O_WISP] = {[MOVE_POINTS_STATUS] = 1}, + [MOVE_MEMENTO] = {[MOVE_POINTS_RARE] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_FACADE] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_FOCUS_PUNCH] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_STRONG] = 1}, + [MOVE_SMELLING_SALT] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_FOLLOW_ME] = {[MOVE_POINTS_RARE] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_NATURE_POWER] = {[MOVE_POINTS_DMG] = 1}, + [MOVE_CHARGE] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_TAUNT] = {[MOVE_POINTS_STATUS] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_HELPING_HAND] = {[MOVE_POINTS_RARE] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_TRICK] = {[MOVE_POINTS_RARE] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_ROLE_PLAY] = {[MOVE_POINTS_ACCURATE] = 1}, + [MOVE_WISH] = {[MOVE_POINTS_HEAL] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_ASSIST] = {[MOVE_POINTS_RARE] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_LUCK] = 1}, + [MOVE_INGRAIN] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_HEAL] = 1, [MOVE_POINTS_DEF] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_SUPERPOWER] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_LOW_PP] = 1}, + [MOVE_MAGIC_COAT] = {[MOVE_POINTS_DEF] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_LUCK] = 1}, + [MOVE_RECYCLE] = {[MOVE_POINTS_ACCURATE] = 1}, + [MOVE_REVENGE] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_LUCK] = 1}, + [MOVE_BRICK_BREAK] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_YAWN] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_STATUS] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_KNOCK_OFF] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_ENDEAVOR] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_LOW_PP] = 1}, + [MOVE_ERUPTION] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_POWERFUL] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_LOW_PP] = 1}, + [MOVE_SKILL_SWAP] = {[MOVE_POINTS_RARE] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_IMPRISON] = {[MOVE_POINTS_RARE] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_LUCK] = 1}, + [MOVE_REFRESH] = {[MOVE_POINTS_HEAL] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_GRUDGE] = {[MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_LOW_PP] = 1}, + [MOVE_SNATCH] = {[MOVE_POINTS_RARE] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_LUCK] = 1}, + [MOVE_SECRET_POWER] = {[MOVE_POINTS_RARE] = 1, [MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_DIVE] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_ARM_THRUST] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_CAMOUFLAGE] = {[MOVE_POINTS_RARE] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_TAIL_GLOW] = {[MOVE_POINTS_ACCURATE] = 1}, + [MOVE_LUSTER_PURGE] = {[MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_LOW_PP] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_MIST_BALL] = {[MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_LOW_PP] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_FEATHER_DANCE] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_TEETER_DANCE] = {[MOVE_POINTS_ACCURATE] = 1}, + [MOVE_BLAZE_KICK] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_MUD_SPORT] = {[MOVE_POINTS_ACCURATE] = 1}, + [MOVE_ICE_BALL] = {[MOVE_POINTS_DMG] = 1}, + [MOVE_NEEDLE_ARM] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_SLACK_OFF] = {[MOVE_POINTS_HEAL] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_HYPER_VOICE] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_STRONG] = 1}, + [MOVE_POISON_FANG] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_CRUSH_CLAW] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_BLAST_BURN] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_POWERFUL] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_LOW_PP] = 1}, + [MOVE_HYDRO_CANNON] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_POWERFUL] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_LOW_PP] = 1}, + [MOVE_METEOR_MASH] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_POWERFUL] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_ASTONISH] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_WEATHER_BALL] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_AROMATHERAPY] = {[MOVE_POINTS_LOW_PP] = 1}, + [MOVE_FAKE_TEARS] = {[MOVE_POINTS_ACCURATE] = 1}, + [MOVE_AIR_CUTTER] = {[MOVE_POINTS_DMG] = 1}, + [MOVE_OVERHEAT] = {[MOVE_POINTS_POWERFUL] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_LOW_PP] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_ODOR_SLEUTH] = {[MOVE_POINTS_ACCURATE] = 1}, + [MOVE_ROCK_TOMB] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_SILVER_WIND] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_LOW_PP] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_METAL_SOUND] = {0}, + [MOVE_GRASS_WHISTLE] = {0}, + [MOVE_TICKLE] = {[MOVE_POINTS_ACCURATE] = 1}, + [MOVE_COSMIC_POWER] = {0}, + [MOVE_WATER_SPOUT] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_POWERFUL] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_LOW_PP] = 1}, + [MOVE_SIGNAL_BEAM] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_SHADOW_PUNCH] = {[MOVE_POINTS_DMG] = 1}, + [MOVE_EXTRASENSORY] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_SKY_UPPERCUT] = {[MOVE_POINTS_DMG] = 1}, + [MOVE_SAND_TOMB] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_SHEER_COLD] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_LUCK] = 1, [MOVE_POINTS_LOW_PP] = 1}, + [MOVE_MUDDY_WATER] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_BULLET_SEED] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_AERIAL_ACE] = {[MOVE_POINTS_DMG] = 1}, + [MOVE_ICICLE_SPEAR] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_IRON_DEFENSE] = {[MOVE_POINTS_DEF] = 1}, + [MOVE_BLOCK] = {[MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_LOW_PP] = 1}, + [MOVE_HOWL] = {0}, + [MOVE_DRAGON_CLAW] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_FRENZY_PLANT] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_POWERFUL] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_LOW_PP] = 1}, + [MOVE_BULK_UP] = {[MOVE_POINTS_COMBO] = 1}, + [MOVE_BOUNCE] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_LOW_PP] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_MUD_SHOT] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_POISON_TAIL] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_COVET] = {[MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_VOLT_TACKLE] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_POWERFUL] = 1, [MOVE_POINTS_STRONG] = 1}, + [MOVE_MAGICAL_LEAF] = {[MOVE_POINTS_DMG] = 1}, + [MOVE_WATER_SPORT] = {[MOVE_POINTS_ACCURATE] = 1}, + [MOVE_CALM_MIND] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_STAT_RAISE] = 1}, + [MOVE_LEAF_BLADE] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_DRAGON_DANCE] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_STAT_RAISE] = 1}, + [MOVE_ROCK_BLAST] = {[MOVE_POINTS_DMG] = 1}, + [MOVE_SHOCK_WAVE] = {[MOVE_POINTS_DMG] = 1}, + [MOVE_WATER_PULSE] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, + [MOVE_DOOM_DESIRE] = {[MOVE_POINTS_RARE] = 1, [MOVE_POINTS_DMG] = 1, [MOVE_POINTS_POWERFUL] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_LOW_PP] = 1}, + [MOVE_PSYCHO_BOOST] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_POWERFUL] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_LOW_PP] = 1, [MOVE_POINTS_EFFECT] = 1}, }; -static const u8 gUnknown_0860C988[][DOME_TOURNAMENT_TRAINERS_COUNT] = -{ - {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 2, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0}, - {1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0}, - {3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - {0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0}, - {0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0}, - {0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0}, - {2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 1, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 4, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +// This array is searched in-order to determine what battle style a tourney trainer uses. +// If the sum of the points for the party's moves meets/exceeds all the point totals of an element, then they use that battle style +static const u8 sBattleStyleThresholds[NUM_BATTLE_STYLES - 1][NUM_MOVE_POINT_TYPES] = +{ + [DOME_BATTLE_STYLE_RISKY] = {[MOVE_POINTS_RISKY] = 1}, + [DOME_BATTLE_STYLE_STALL] = {[MOVE_POINTS_HEAL] = 2, [MOVE_POINTS_STATUS] = 1, [MOVE_POINTS_DEF] = 2}, + [DOME_BATTLE_STYLE_VARIED] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_STAT_RAISE] = 1, [MOVE_POINTS_STAT_LOWER] = 1, [MOVE_POINTS_HEAL] = 1, [MOVE_POINTS_STATUS] = 1, [MOVE_POINTS_DEF] = 1}, + [DOME_BATTLE_STYLE_COMBO_HIGH] = {[MOVE_POINTS_COMBO] = 3}, + [DOME_BATTLE_STYLE_RARE_MOVES] = {[MOVE_POINTS_RARE] = 2}, + [DOME_BATTLE_STYLE_RARE_MOVE] = {[MOVE_POINTS_RARE] = 1}, + [DOME_BATTLE_STYLE_HP] = {[MOVE_POINTS_HEAL] = 3}, + [DOME_BATTLE_STYLE_STORE_POWER] = {[MOVE_POINTS_STAT_RAISE] = 1, [MOVE_POINTS_HEAL] = 1}, + [DOME_BATTLE_STYLE_ENFEEBLE_LOW] = {[MOVE_POINTS_STAT_LOWER] = 1, [MOVE_POINTS_STATUS] = 1}, + [DOME_BATTLE_STYLE_LUCK] = {[MOVE_POINTS_LUCK] = 2}, + [DOME_BATTLE_STYLE_REGAL] = {[MOVE_POINTS_STAT_RAISE] = 1, [MOVE_POINTS_HEAL] = 1, [MOVE_POINTS_DEF] = 1, [MOVE_POINTS_POPULAR] = 1, [MOVE_POINTS_STRONG] = 1}, + [DOME_BATTLE_STYLE_LOW_PP] = {[MOVE_POINTS_LOW_PP] = 3}, + [DOME_BATTLE_STYLE_STATUS_ATK] = {[MOVE_POINTS_STAT_RAISE] = 1, [MOVE_POINTS_STATUS] = 1}, + [DOME_BATTLE_STYLE_ENDURE] = {[MOVE_POINTS_HEAL] = 2, [MOVE_POINTS_DEF] = 2}, + [DOME_BATTLE_STYLE_STATUS] = {[MOVE_POINTS_STATUS] = 2}, + [DOME_BATTLE_STYLE_STRAIGHTFORWARD] = {[MOVE_POINTS_ACCURATE] = 3, [MOVE_POINTS_STRONG] = 3}, + [DOME_BATTLE_STYLE_AGGRESSIVE] = {[MOVE_POINTS_STRONG] = 4}, + [DOME_BATTLE_STYLE_DEF] = {[MOVE_POINTS_DEF] = 3}, + [DOME_BATTLE_STYLE_ENFEEBLE_HIGH] = {[MOVE_POINTS_STAT_LOWER] = 2, [MOVE_POINTS_STATUS] = 2}, // BUG: This battle style is unobtainable; DOME_BATTLE_STYLE_ENFEEBLE_LOW will always succeed before it + [DOME_BATTLE_STYLE_POPULAR_POWER] = {[MOVE_POINTS_POWERFUL] = 3, [MOVE_POINTS_POPULAR] = 3}, + [DOME_BATTLE_STYLE_COMBO_LOW] = {[MOVE_POINTS_COMBO] = 2}, + [DOME_BATTLE_STYLE_ACCURATE] = {[MOVE_POINTS_HEAL] = 1, [MOVE_POINTS_ACCURATE] = 3}, + [DOME_BATTLE_STYLE_POWERFUL] = {[MOVE_POINTS_POWERFUL] = 4}, + [DOME_BATTLE_STYLE_ATK_OVER_DEF] = {[MOVE_POINTS_DMG] = 7}, + [DOME_BATTLE_STYLE_DEF_OVER_ATK] = {[MOVE_POINTS_DEF] = 4}, // BUG: This battle style is unobtainable; DOME_BATTLE_STYLE_DEF will always succeed before it + [DOME_BATTLE_STYLE_POPULAR_STRONG] = {[MOVE_POINTS_POPULAR] = 2, [MOVE_POINTS_STRONG] = 4}, + [DOME_BATTLE_STYLE_EFFECTS] = {[MOVE_POINTS_EFFECT] = 4}, + [DOME_BATTLE_STYLE_BALANCED] = {0}, // If no other thresholds are met, this battle style is used + [DOME_BATTLE_STYLE_UNUSED1] = {0}, // Here below is unreachable + [DOME_BATTLE_STYLE_UNUSED2] = {0}, + [DOME_BATTLE_STYLE_UNUSED3] = {0}, + //[DOME_BATTLE_STYLE_UNUSED4] = {0}, // Excluded here, presumably was meant to be a style just for Dome Ace Tucker }; static const u8 sUnusedArray[] = { @@ -523,43 +548,47 @@ static const u8 sUnusedArray[] = 0, 0, 0, 254, 0, 0, 0, 0, 0, }; -static const u8 sTourneyTreeCursorMovementMap[][5][4]= -{ - {{0x07, 0x01, 0x08, 0x10}, {0x07, 0x01, 0x08, 0x10}, {0x07, 0x01, 0x08, 0x10}, {0x07, 0x01, 0x08, 0x10}, {0x07, 0x01, 0x08, 0x10}}, - {{0x00, 0x02, 0x09, 0x10}, {0x00, 0x02, 0x09, 0x10}, {0x00, 0x02, 0x09, 0x10}, {0x00, 0x02, 0x09, 0x10}, {0x00, 0x02, 0x09, 0x10}}, - {{0x01, 0x03, 0x0a, 0x11}, {0x01, 0x03, 0x0a, 0x11}, {0x01, 0x03, 0x0a, 0x11}, {0x01, 0x03, 0x0a, 0x11}, {0x01, 0x03, 0x0a, 0x11}}, - {{0x02, 0x04, 0x0b, 0x11}, {0x02, 0x04, 0x0b, 0x11}, {0x02, 0x04, 0x0b, 0x11}, {0x02, 0x04, 0x0b, 0x11}, {0x02, 0x04, 0x0b, 0x11}}, - {{0x03, 0x05, 0x0c, 0x12}, {0x03, 0x05, 0x0c, 0x12}, {0x03, 0x05, 0x0c, 0x12}, {0x03, 0x05, 0x0c, 0x12}, {0x03, 0x05, 0x0c, 0x12}}, - {{0x04, 0x06, 0x0d, 0x12}, {0x04, 0x06, 0x0d, 0x12}, {0x04, 0x06, 0x0d, 0x12}, {0x04, 0x06, 0x0d, 0x12}, {0x04, 0x06, 0x0d, 0x12}}, - {{0x05, 0x07, 0x0e, 0x13}, {0x05, 0x07, 0x0e, 0x13}, {0x05, 0x07, 0x0e, 0x13}, {0x05, 0x07, 0x0e, 0x13}, {0x05, 0x07, 0x0e, 0x13}}, - {{0x06, 0x00, 0x0f, 0x13}, {0x06, 0x00, 0x0f, 0x13}, {0x06, 0x00, 0x0f, 0x13}, {0x06, 0x00, 0x0f, 0x13}, {0x06, 0x00, 0x0f, 0x13}}, - {{0x1f, 0x09, 0x14, 0x1f}, {0x1f, 0x09, 0x14, 0x1f}, {0x1f, 0x09, 0x14, 0x1f}, {0x1f, 0x09, 0x14, 0x1f}, {0x1f, 0x09, 0x14, 0x1f}}, - {{0x08, 0x0a, 0x14, 0x01}, {0x08, 0x0a, 0x14, 0x01}, {0x08, 0x0a, 0x14, 0x01}, {0x08, 0x0a, 0x14, 0x01}, {0x08, 0x0a, 0x14, 0x01}}, - {{0x09, 0x0b, 0x15, 0x02}, {0x09, 0x0b, 0x15, 0x02}, {0x09, 0x0b, 0x15, 0x02}, {0x09, 0x0b, 0x15, 0x02}, {0x09, 0x0b, 0x15, 0x02}}, - {{0x0a, 0x0c, 0x15, 0x03}, {0x0a, 0x0c, 0x15, 0x03}, {0x0a, 0x0c, 0x15, 0x03}, {0x0a, 0x0c, 0x15, 0x03}, {0x0a, 0x0c, 0x15, 0x03}}, - {{0x0b, 0x0d, 0x16, 0x04}, {0x0b, 0x0d, 0x16, 0x04}, {0x0b, 0x0d, 0x16, 0x04}, {0x0b, 0x0d, 0x16, 0x04}, {0x0b, 0x0d, 0x16, 0x04}}, - {{0x0c, 0x0e, 0x16, 0x05}, {0x0c, 0x0e, 0x16, 0x05}, {0x0c, 0x0e, 0x16, 0x05}, {0x0c, 0x0e, 0x16, 0x05}, {0x0c, 0x0e, 0x16, 0x05}}, - {{0x0d, 0x0f, 0x17, 0x06}, {0x0d, 0x0f, 0x17, 0x06}, {0x0d, 0x0f, 0x17, 0x06}, {0x0d, 0x0f, 0x17, 0x06}, {0x0d, 0x0f, 0x17, 0x06}}, - {{0x0e, 0x1f, 0x17, 0x07}, {0x0e, 0x1f, 0x17, 0x07}, {0x0e, 0x1f, 0x17, 0x07}, {0x0e, 0x1f, 0x17, 0x07}, {0x0e, 0x1f, 0x17, 0x07}}, - {{0x13, 0x11, 0x00, 0x14}, {0x13, 0x11, 0x00, 0x18}, {0x13, 0x11, 0x00, 0x18}, {0x13, 0x11, 0x00, 0x18}, {0x13, 0x11, 0x00, 0x18}}, - {{0x10, 0x12, 0x02, 0x15}, {0x10, 0x12, 0x02, 0x18}, {0x10, 0x12, 0x02, 0x18}, {0x10, 0x12, 0x02, 0x18}, {0x10, 0x12, 0x02, 0x18}}, - {{0x11, 0x13, 0x04, 0x16}, {0x11, 0x13, 0x04, 0x19}, {0x11, 0x13, 0x04, 0x19}, {0x11, 0x13, 0x04, 0x19}, {0x11, 0x13, 0x04, 0x19}}, - {{0x12, 0x10, 0x06, 0x17}, {0x12, 0x10, 0x06, 0x19}, {0x12, 0x10, 0x06, 0x19}, {0x12, 0x10, 0x06, 0x19}, {0x12, 0x10, 0x06, 0x19}}, - {{0x17, 0x15, 0x10, 0x08}, {0x17, 0x15, 0x1a, 0x08}, {0x17, 0x15, 0x1a, 0x08}, {0x17, 0x15, 0x1a, 0x08}, {0x17, 0x15, 0x1a, 0x08}}, - {{0x14, 0x16, 0x11, 0x0a}, {0x14, 0x16, 0x1a, 0x0a}, {0x14, 0x16, 0x1a, 0x0a}, {0x14, 0x16, 0x1a, 0x0a}, {0x14, 0x16, 0x1a, 0x0a}}, - {{0x15, 0x17, 0x12, 0x0c}, {0x15, 0x17, 0x1b, 0x0c}, {0x15, 0x17, 0x1b, 0x0c}, {0x15, 0x17, 0x1b, 0x0c}, {0x15, 0x17, 0x1b, 0x0c}}, - {{0x16, 0x14, 0x13, 0x0e}, {0x16, 0x14, 0x1b, 0x0e}, {0x16, 0x14, 0x1b, 0x0e}, {0x16, 0x14, 0x1b, 0x0e}, {0x16, 0x14, 0x1b, 0x0e}}, - {{0xff, 0xff, 0xff, 0xff}, {0x19, 0x19, 0x10, 0x1a}, {0x19, 0x19, 0x10, 0x1c}, {0x19, 0x19, 0x10, 0x1c}, {0x19, 0x19, 0x10, 0x1c}}, - {{0xff, 0xff, 0xff, 0xff}, {0x18, 0x18, 0x12, 0x1b}, {0x18, 0x18, 0x12, 0x1c}, {0x18, 0x18, 0x12, 0x1c}, {0x18, 0x18, 0x12, 0x1c}}, - {{0xff, 0xff, 0xff, 0xff}, {0x1b, 0x1b, 0x18, 0x14}, {0x1b, 0x1b, 0x1d, 0x14}, {0x1b, 0x1b, 0x1d, 0x14}, {0x1b, 0x1b, 0x1d, 0x14}}, - {{0xff, 0xff, 0xff, 0xff}, {0x1a, 0x1a, 0x19, 0x16}, {0x1a, 0x1a, 0x1d, 0x16}, {0x1a, 0x1a, 0x1d, 0x16}, {0x1a, 0x1a, 0x1d, 0x16}}, - {{0xff, 0xff, 0xff, 0xff}, {0xff, 0xff, 0xff, 0xff}, {0xff, 0xff, 0x18, 0x1d}, {0xff, 0xff, 0x18, 0x1e}, {0xff, 0xff, 0x18, 0x1e}}, - {{0xff, 0xff, 0xff, 0xff}, {0xff, 0xff, 0xff, 0xff}, {0xff, 0xff, 0x1c, 0x1a}, {0xff, 0xff, 0x1e, 0x1a}, {0xff, 0xff, 0x1e, 0x1a}}, - {{0xff, 0xff, 0xff, 0xff}, {0xff, 0xff, 0xff, 0xff}, {0xff, 0xff, 0xff, 0xff}, {0xff, 0xff, 0x1c, 0x1d}, {0xff, 0xff, 0x1c, 0x1d}}, - {{0x0f, 0x08, 0x08, 0x00}, {0x0f, 0x08, 0x08, 0x00}, {0x0f, 0x08, 0x08, 0x00}, {0x0f, 0x08, 0x08, 0x00}, {0x0f, 0x08, 0x08, 0x00}}, +// 1st array is for cursor position (sprite id): cursor can be on a trainer info button, a match info button, or the exit/cancel button +// 2nd array is for round count. For some reason this array contains an inaccessible Round 5 which is identical to Round 4 +// 3rd array is movement direction (see the MOVE_DIR_* constants in UpdateTourneyTreeCursor) +// The values are sprite IDs for the cursor position to move to, with 0xFF being an invalid move +static const u8 sTourneyTreeCursorMovementMap[DOME_TOURNAMENT_TRAINERS_COUNT + DOME_TOURNAMENT_MATCHES_COUNT + 1][DOME_ROUNDS_COUNT + 1][4]= +{ + [0] = {{ 7, 1, 8, 16}, { 7, 1, 8, 16}, { 7, 1, 8, 16}, { 7, 1, 8, 16}, { 7, 1, 8, 16}}, + [1] = {{ 0, 2, 9, 16}, { 0, 2, 9, 16}, { 0, 2, 9, 16}, { 0, 2, 9, 16}, { 0, 2, 9, 16}}, + [2] = {{ 1, 3, 10, 17}, { 1, 3, 10, 17}, { 1, 3, 10, 17}, { 1, 3, 10, 17}, { 1, 3, 10, 17}}, + [3] = {{ 2, 4, 11, 17}, { 2, 4, 11, 17}, { 2, 4, 11, 17}, { 2, 4, 11, 17}, { 2, 4, 11, 17}}, + [4] = {{ 3, 5, 12, 18}, { 3, 5, 12, 18}, { 3, 5, 12, 18}, { 3, 5, 12, 18}, { 3, 5, 12, 18}}, + [5] = {{ 4, 6, 13, 18}, { 4, 6, 13, 18}, { 4, 6, 13, 18}, { 4, 6, 13, 18}, { 4, 6, 13, 18}}, + [6] = {{ 5, 7, 14, 19}, { 5, 7, 14, 19}, { 5, 7, 14, 19}, { 5, 7, 14, 19}, { 5, 7, 14, 19}}, + [7] = {{ 6, 0, 15, 19}, { 6, 0, 15, 19}, { 6, 0, 15, 19}, { 6, 0, 15, 19}, { 6, 0, 15, 19}}, + [8] = {{ 31, 9, 20, 31}, { 31, 9, 20, 31}, { 31, 9, 20, 31}, { 31, 9, 20, 31}, { 31, 9, 20, 31}}, + [9] = {{ 8, 10, 20, 1}, { 8, 10, 20, 1}, { 8, 10, 20, 1}, { 8, 10, 20, 1}, { 8, 10, 20, 1}}, + [10] = {{ 9, 11, 21, 2}, { 9, 11, 21, 2}, { 9, 11, 21, 2}, { 9, 11, 21, 2}, { 9, 11, 21, 2}}, + [11] = {{ 10, 12, 21, 3}, { 10, 12, 21, 3}, { 10, 12, 21, 3}, { 10, 12, 21, 3}, { 10, 12, 21, 3}}, + [12] = {{ 11, 13, 22, 4}, { 11, 13, 22, 4}, { 11, 13, 22, 4}, { 11, 13, 22, 4}, { 11, 13, 22, 4}}, + [13] = {{ 12, 14, 22, 5}, { 12, 14, 22, 5}, { 12, 14, 22, 5}, { 12, 14, 22, 5}, { 12, 14, 22, 5}}, + [14] = {{ 13, 15, 23, 6}, { 13, 15, 23, 6}, { 13, 15, 23, 6}, { 13, 15, 23, 6}, { 13, 15, 23, 6}}, + [15] = {{ 14, 31, 23, 7}, { 14, 31, 23, 7}, { 14, 31, 23, 7}, { 14, 31, 23, 7}, { 14, 31, 23, 7}}, + [16] = {{ 19, 17, 0, 20}, { 19, 17, 0, 24}, { 19, 17, 0, 24}, { 19, 17, 0, 24}, { 19, 17, 0, 24}}, + [17] = {{ 16, 18, 2, 21}, { 16, 18, 2, 24}, { 16, 18, 2, 24}, { 16, 18, 2, 24}, { 16, 18, 2, 24}}, + [18] = {{ 17, 19, 4, 22}, { 17, 19, 4, 25}, { 17, 19, 4, 25}, { 17, 19, 4, 25}, { 17, 19, 4, 25}}, + [19] = {{ 18, 16, 6, 23}, { 18, 16, 6, 25}, { 18, 16, 6, 25}, { 18, 16, 6, 25}, { 18, 16, 6, 25}}, + [20] = {{ 23, 21, 16, 8}, { 23, 21, 26, 8}, { 23, 21, 26, 8}, { 23, 21, 26, 8}, { 23, 21, 26, 8}}, + [21] = {{ 20, 22, 17, 10}, { 20, 22, 26, 10}, { 20, 22, 26, 10}, { 20, 22, 26, 10}, { 20, 22, 26, 10}}, + [22] = {{ 21, 23, 18, 12}, { 21, 23, 27, 12}, { 21, 23, 27, 12}, { 21, 23, 27, 12}, { 21, 23, 27, 12}}, + [23] = {{ 22, 20, 19, 14}, { 22, 20, 27, 14}, { 22, 20, 27, 14}, { 22, 20, 27, 14}, { 22, 20, 27, 14}}, + [24] = {{0xFF, 0xFF, 0xFF, 0xFF}, { 25, 25, 16, 26}, { 25, 25, 16, 28}, { 25, 25, 16, 28}, { 25, 25, 16, 28}}, + [25] = {{0xFF, 0xFF, 0xFF, 0xFF}, { 24, 24, 18, 27}, { 24, 24, 18, 28}, { 24, 24, 18, 28}, { 24, 24, 18, 28}}, + [26] = {{0xFF, 0xFF, 0xFF, 0xFF}, { 27, 27, 24, 20}, { 27, 27, 29, 20}, { 27, 27, 29, 20}, { 27, 27, 29, 20}}, + [27] = {{0xFF, 0xFF, 0xFF, 0xFF}, { 26, 26, 25, 22}, { 26, 26, 29, 22}, { 26, 26, 29, 22}, { 26, 26, 29, 22}}, + [28] = {{0xFF, 0xFF, 0xFF, 0xFF}, {0xFF, 0xFF, 0xFF, 0xFF}, {0xFF, 0xFF, 24, 29}, {0xFF, 0xFF, 24, 30}, {0xFF, 0xFF, 24, 30}}, + [29] = {{0xFF, 0xFF, 0xFF, 0xFF}, {0xFF, 0xFF, 0xFF, 0xFF}, {0xFF, 0xFF, 28, 26}, {0xFF, 0xFF, 30, 26}, {0xFF, 0xFF, 30, 26}}, + [30] = {{0xFF, 0xFF, 0xFF, 0xFF}, {0xFF, 0xFF, 0xFF, 0xFF}, {0xFF, 0xFF, 0xFF, 0xFF}, {0xFF, 0xFF, 28, 29}, {0xFF, 0xFF, 28, 29}}, + [31] = {{ 15, 8, 8, 0}, { 15, 8, 8, 0}, { 15, 8, 8, 0}, { 15, 8, 8, 0}, { 15, 8, 8, 0}}, // TOURNEY_TREE_CLOSE_BUTTON }; -static const struct BgTemplate gUnknown_0860CE74[4] = +static const struct BgTemplate sTourneyTreeBgTemplates[4] = { { .bg = 0, @@ -599,7 +628,7 @@ static const struct BgTemplate gUnknown_0860CE74[4] = }, }; -static const struct BgTemplate gUnknown_0860CE84[4] = +static const struct BgTemplate sInfoCardBgTemplates[4] = { { .bg = 0, @@ -639,7 +668,7 @@ static const struct BgTemplate gUnknown_0860CE84[4] = }, }; -static const struct WindowTemplate gUnknown_0860CE94[] = +static const struct WindowTemplate sTourneyTreeWindowTemplates[] = { { .bg = 0, @@ -671,7 +700,7 @@ static const struct WindowTemplate gUnknown_0860CE94[] = DUMMY_WIN_TEMPLATE, }; -static const struct WindowTemplate gUnknown_0860CEB4[] = +static const struct WindowTemplate sInfoCardWindowTemplates[] = { { .bg = 0, @@ -845,19 +874,20 @@ static const struct ScanlineEffectParams sTourneyTreeScanlineEffectParams = .initState = 1, }; -static const struct CompressedSpriteSheet sDomeOptionsSpriteSheet[] = +static const struct CompressedSpriteSheet sTourneyTreeButtonsSpriteSheet[] = { - {gBattleFrontierGfx_DomeOptions, 0x0600, 0x0000}, + {gDomeTourneyTreeButtons_Gfx, 0x0600, 0x0000}, {}, }; -static const struct CompressedSpritePalette gUnknown_0860CF60[] = +// Unused +static const struct CompressedSpritePalette sTourneyTreeButtonsSpritePal[] = { - {gUnknown_08D85444, 0x0000}, + {gDomeTourneyTreeButtons_Pal, 0x0000}, {}, }; -static const struct OamData gUnknown_0860CF70 = +static const struct OamData sOamData_TourneyTreePokeball = { .y = 0, .affineMode = ST_OAM_AFFINE_OFF, @@ -874,7 +904,8 @@ static const struct OamData gUnknown_0860CF70 = .affineParam = 0, }; -static const struct OamData gUnknown_0860CF78 = +// For Exit/Cancel buttons +static const struct OamData sOamData_TourneyTreeCloseButton = { .y = 0, .affineMode = ST_OAM_AFFINE_OFF, @@ -891,7 +922,7 @@ static const struct OamData gUnknown_0860CF78 = .affineParam = 0, }; -static const struct OamData gUnknown_0860CF80 = +static const struct OamData sOamData_VerticalScrollArrow = { .y = 0, .affineMode = ST_OAM_AFFINE_OFF, @@ -908,7 +939,7 @@ static const struct OamData gUnknown_0860CF80 = .affineParam = 0, }; -static const struct OamData gUnknown_0860CF88 = +static const struct OamData sOamData_HorizontalScrollArrow = { .y = 0, .affineMode = ST_OAM_AFFINE_OFF, @@ -925,151 +956,153 @@ static const struct OamData gUnknown_0860CF88 = .affineParam = 0, }; -static const union AnimCmd gUnknown_0860CF90[] = +static const union AnimCmd sSpriteAnim_TourneyTreePokeballNormal[] = { ANIMCMD_FRAME(20, 1), ANIMCMD_END, }; -static const union AnimCmd gUnknown_0860CF98[] = +static const union AnimCmd sSpriteAnim_TourneyTreePokeballSelected[] = { ANIMCMD_FRAME(24, 1), ANIMCMD_END, }; -static const union AnimCmd * const gUnknown_0860CFA0[] = +static const union AnimCmd * const sSpriteAnimTable_TourneyTreePokeball[] = { - gUnknown_0860CF90, - gUnknown_0860CF98, + sSpriteAnim_TourneyTreePokeballNormal, + sSpriteAnim_TourneyTreePokeballSelected, }; -static const struct SpriteTemplate gUnknown_0860CFA8 = +// Sprite template for the pokeballs on the tourney tree that act as buttons to view a trainer/match info card +static const struct SpriteTemplate sTourneyTreePokeballSpriteTemplate = { .tileTag = 0x0000, .paletteTag = 0xffff, - .oam = &gUnknown_0860CF70, - .anims = gUnknown_0860CFA0, + .oam = &sOamData_TourneyTreePokeball, + .anims = sSpriteAnimTable_TourneyTreePokeball, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = SpriteCallbackDummy + .callback = SpriteCallbackDummy }; -static const union AnimCmd gUnknown_0860CFC0[] = +static const union AnimCmd sSpriteAnim_TourneyTreeCancelButtonNormal[] = { ANIMCMD_FRAME(8, 1), ANIMCMD_END, }; -static const union AnimCmd gUnknown_0860CFC8[] = +static const union AnimCmd sSpriteAnim_TourneyTreeCancelButtonSelected[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; -static const union AnimCmd * const gUnknown_0860CFD0[] = +static const union AnimCmd * const sSpriteAnimTable_TourneyTreeCancelButton[] = { - gUnknown_0860CFC0, - gUnknown_0860CFC8, + sSpriteAnim_TourneyTreeCancelButtonNormal, + sSpriteAnim_TourneyTreeCancelButtonSelected, }; -static const struct SpriteTemplate gUnknown_0860CFD8 = +static const struct SpriteTemplate sCancelButtonSpriteTemplate = { .tileTag = 0x0000, .paletteTag = 0xffff, - .oam = &gUnknown_0860CF78, - .anims = gUnknown_0860CFD0, + .oam = &sOamData_TourneyTreeCloseButton, + .anims = sSpriteAnimTable_TourneyTreeCancelButton, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = SpriteCallbackDummy }; -static const union AnimCmd gUnknown_0860CFF0[] = +static const union AnimCmd sSpriteAnim_TourneyTreeExitButtonNormal[] = { ANIMCMD_FRAME(40, 1), ANIMCMD_END, }; -static const union AnimCmd gUnknown_0860CFF8[] = +static const union AnimCmd sSpriteAnim_TourneyTreeExitButtonSelected[] = { ANIMCMD_FRAME(32, 1), ANIMCMD_END, }; -static const union AnimCmd * const gUnknown_0860D000[] = +static const union AnimCmd * const sSpriteAnimTable_TourneyTreeExitButton[] = { - gUnknown_0860CFF0, - gUnknown_0860CFF8, + sSpriteAnim_TourneyTreeExitButtonNormal, + sSpriteAnim_TourneyTreeExitButtonSelected, }; -static const struct SpriteTemplate gUnknown_0860D008 = +static const struct SpriteTemplate sExitButtonSpriteTemplate = { .tileTag = 0x0000, .paletteTag = 0xffff, - .oam = &gUnknown_0860CF78, - .anims = gUnknown_0860D000, + .oam = &sOamData_TourneyTreeCloseButton, + .anims = sSpriteAnimTable_TourneyTreeExitButton, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = SpriteCallbackDummy }; -static const union AnimCmd gUnknown_0860D020[] = +static const union AnimCmd sSpriteAnim_UpArrow[] = { ANIMCMD_FRAME(18, 1), ANIMCMD_END, }; -static const union AnimCmd gUnknown_0860D028[] = +static const union AnimCmd sSpriteAnim_DownArrow[] = { ANIMCMD_FRAME(18, 1, .vFlip = TRUE), ANIMCMD_END, }; -static const union AnimCmd gUnknown_0860D030[] = +static const union AnimCmd sSpriteAnim_LeftArrow[] = { ANIMCMD_FRAME(16, 1, .hFlip = TRUE), ANIMCMD_END, }; -static const union AnimCmd gUnknown_0860D038[] = +static const union AnimCmd sSpriteAnim_RightArrow[] = { ANIMCMD_FRAME(16, 1), ANIMCMD_END, }; -static const union AnimCmd * const gUnknown_0860D040[] = +static const union AnimCmd * const sSpriteAnimTable_VerticalScrollArrow[] = { - gUnknown_0860D020, - gUnknown_0860D028, + sSpriteAnim_UpArrow, + sSpriteAnim_DownArrow, }; -static const union AnimCmd * const gUnknown_0860D048[] = +static const union AnimCmd * const sSpriteAnimTable_HorizontalScrollArrow[] = { - gUnknown_0860D030, - gUnknown_0860D038, + sSpriteAnim_LeftArrow, + sSpriteAnim_RightArrow, }; -static const struct SpriteTemplate gUnknown_0860D050 = +static const struct SpriteTemplate sHorizontalScrollArrowSpriteTemplate = { .tileTag = 0x0000, .paletteTag = 0xffff, - .oam = &gUnknown_0860CF88, - .anims = gUnknown_0860D048, + .oam = &sOamData_HorizontalScrollArrow, + .anims = sSpriteAnimTable_HorizontalScrollArrow, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_8190B40 + .callback = SpriteCb_HorizontalScrollArrow }; -static const struct SpriteTemplate gUnknown_0860D068 = +static const struct SpriteTemplate sVerticalScrollArrowSpriteTemplate = { .tileTag = 0x0000, .paletteTag = 0xffff, - .oam = &gUnknown_0860CF80, - .anims = gUnknown_0860D040, + .oam = &sOamData_VerticalScrollArrow, + .anims = sSpriteAnimTable_VerticalScrollArrow, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_8190C6C + .callback = SpriteCb_VerticalScrollArrow }; -static const u8 sTourneyTreeTrainerIds[] = {0, 8, 12, 4, 7, 15, 11, 3, 2, 10, 14, 6, 5, 13, 9, 1}; +// Organized by seed starting position, i.e. seed 0 battles seed 8 first +static const u8 sTourneyTreeTrainerIds[DOME_TOURNAMENT_TRAINERS_COUNT] = {0, 8, 12, 4, 7, 15, 11, 3, 2, 10, 14, 6, 5, 13, 9, 1}; static void (* const sBattleDomeFunctions[])(void) = { @@ -1081,20 +1114,20 @@ static void (* const sBattleDomeFunctions[])(void) = [BATTLE_DOME_FUNC_INIT_OPPONENT_PARTY] = InitDomeOpponentParty, [BATTLE_DOME_FUNC_SHOW_OPPONENT_INFO] = ShowDomeOpponentInfo, [BATTLE_DOME_FUNC_SHOW_TOURNEY_TREE] = ShowDomeTourneyTree, - [BATTLE_DOME_FUNC_SHOW_PREV_RESULTS_TREE] = ShowPreviousDomeResultsTourneyTree, + [BATTLE_DOME_FUNC_SHOW_PREV_TOURNEY_TREE] = ShowPreviousDomeTourneyTree, [BATTLE_DOME_FUNC_SET_OPPONENT_ID] = SetDomeOpponentId, [BATTLE_DOME_FUNC_SET_OPPONENT_GFX] = SetDomeOpponentGraphicsId, [BATTLE_DOME_FUNC_SHOW_STATIC_TOURNEY_TREE] = ShowNonInteractiveDomeTourneyTree, [BATTLE_DOME_FUNC_RESOLVE_WINNERS] = ResolveDomeRoundWinners, [BATTLE_DOME_FUNC_SAVE] = SaveDomeChallenge, [BATTLE_DOME_FUNC_INCREMENT_STREAK] = IncrementDomeStreaks, - [BATTLE_DOME_FUNC_SET_TRAINERS] = InitDomeFacilityTrainersAndMons, + [BATTLE_DOME_FUNC_SET_TRAINERS] = SetFacilityTrainerAndMonPtrs, [BATTLE_DOME_FUNC_RESET_SKETCH] = ResetSketchedMoves, [BATTLE_DOME_FUNC_RESTORE_HELD_ITEMS] = RestoreDomePlayerPartyHeldItems, - [BATTLE_DOME_FUNC_REDUCE_PARTY] = ReduceDomePlayerPartyTo3Mons, + [BATTLE_DOME_FUNC_REDUCE_PARTY] = ReduceDomePlayerPartyToSelectedMons, [BATTLE_DOME_FUNC_COMPARE_SEEDS] = GetPlayerSeededBeforeOpponent, [BATTLE_DOME_FUNC_GET_WINNER_NAME] = BufferLastDomeWinnerName, - [BATTLE_DOME_FUNC_21] = sub_8194F58, + [BATTLE_DOME_FUNC_INIT_RESULTS_TREE] = InitRandomTourneyTreeResults, [BATTLE_DOME_FUNC_INIT_TRAINERS] = InitDomeTrainers, }; @@ -1110,1139 +1143,941 @@ static const u32 sWinStreakMasks[][2] = {~(STREAK_DOME_DOUBLES_50), ~(STREAK_DOME_DOUBLES_OPEN)}, }; +// TODO: The below two arrays probably need better names. The one below for example is only true of sIdToOpponentId[i][0] static const u8 sIdToOpponentId[DOME_TOURNAMENT_TRAINERS_COUNT][DOME_ROUNDS_COUNT] = { - [0] = {8, 0, 4, 8}, - [1] = {9, 12, 8, 0}, - [2] = {10, 8, 12, 0}, - [3] = {11, 4, 0, 8}, - [4] = {12, 0, 4, 8}, - [5] = {13, 12, 8, 0}, - [6] = {14, 8, 12, 0}, - [7] = {15, 4, 0, 8}, - [8] = {0, 0, 4, 8}, - [9] = {1, 12, 8, 0}, - [10] = {2, 8, 12, 0}, - [11] = {3, 4, 0, 8}, - [12] = {4, 0, 4, 8}, - [13] = {5, 12, 8, 0}, - [14] = {6, 8, 12, 0}, - [15] = {7, 4, 0, 8}, + [0] = { 8, 0, 4, 8}, + [1] = { 9, 12, 8, 0}, + [2] = {10, 8, 12, 0}, + [3] = {11, 4, 0, 8}, + [4] = {12, 0, 4, 8}, + [5] = {13, 12, 8, 0}, + [6] = {14, 8, 12, 0}, + [7] = {15, 4, 0, 8}, + [8] = { 0, 0, 4, 8}, + [9] = { 1, 12, 8, 0}, + [10] = { 2, 8, 12, 0}, + [11] = { 3, 4, 0, 8}, + [12] = { 4, 0, 4, 8}, + [13] = { 5, 12, 8, 0}, + [14] = { 6, 8, 12, 0}, + [15] = { 7, 4, 0, 8}, }; -static const u8 gUnknown_0860D14C[] = {0x00, 0x08, 0x04, 0x0c, 0x07, 0x0f, 0x03, 0x0b, 0x02, 0x0a, 0x06, 0x0e, 0x05, 0x0d, 0x01, 0x09}; - -static const u8 gUnknown_0860D15C[][4] = -{ - {0x00, 0x08, 0x0c, 0x0e}, - {0x00, 0x08, 0x0c, 0x0e}, - {0x01, 0x08, 0x0c, 0x0e}, - {0x01, 0x08, 0x0c, 0x0e}, - {0x02, 0x09, 0x0c, 0x0e}, - {0x02, 0x09, 0x0c, 0x0e}, - {0x03, 0x09, 0x0c, 0x0e}, - {0x03, 0x09, 0x0c, 0x0e}, - {0x04, 0x0a, 0x0d, 0x0e}, - {0x04, 0x0a, 0x0d, 0x0e}, - {0x05, 0x0a, 0x0d, 0x0e}, - {0x05, 0x0a, 0x0d, 0x0e}, - {0x06, 0x0b, 0x0d, 0x0e}, - {0x06, 0x0b, 0x0d, 0x0e}, - {0x07, 0x0b, 0x0d, 0x0e}, - {0x07, 0x0b, 0x0d, 0x0e}, +// sTourneyTreeTrainerIds with every other pair swapped +static const u8 sTourneyTreeTrainerOpponentIds[DOME_TOURNAMENT_TRAINERS_COUNT] = { 0, 8, 4, 12, 7, 15, 3, 11, 2, 10, 6, 14, 5, 13, 1, 9 }; + +// The match number - 1 that a given tournament trainer will participate in for a given round +static const u8 sIdToMatchNumber[DOME_TOURNAMENT_TRAINERS_COUNT][DOME_ROUNDS_COUNT] = +{ + { 0, 8, 12, 14}, + { 0, 8, 12, 14}, + { 1, 8, 12, 14}, + { 1, 8, 12, 14}, + { 2, 9, 12, 14}, + { 2, 9, 12, 14}, + { 3, 9, 12, 14}, + { 3, 9, 12, 14}, + { 4, 10, 13, 14}, + { 4, 10, 13, 14}, + { 5, 10, 13, 14}, + { 5, 10, 13, 14}, + { 6, 11, 13, 14}, + { 6, 11, 13, 14}, + { 7, 11, 13, 14}, + { 7, 11, 13, 14}, }; -static const u8 gUnknown_0860D19C[] = {0x17, 0x1b, 0x1d, 0x1e}; +static const u8 sLastMatchCardNum[DOME_ROUNDS_COUNT] = +{ + [DOME_ROUND1] = 23, + [DOME_ROUND2] = 27, + [DOME_SEMIFINAL] = 29, + [DOME_FINAL] = 30 +}; -static const u8 gUnknown_0860D1A0[][4] = +static const u8 gUnknown_0860D1A0[DOME_TOURNAMENT_TRAINERS_COUNT / 2][DOME_ROUNDS_COUNT] = { - {0x10, 0x18, 0x1c, 0x1e}, - {0x11, 0x18, 0x1c, 0x1e}, - {0x12, 0x19, 0x1c, 0x1e}, - {0x13, 0x19, 0x1c, 0x1e}, - {0x14, 0x1a, 0x1d, 0x1e}, - {0x15, 0x1a, 0x1d, 0x1e}, - {0x16, 0x1b, 0x1d, 0x1e}, - {0x17, 0x1b, 0x1d, 0x1e}, + {16, 24, 28, 30}, + {17, 24, 28, 30}, + {18, 25, 28, 30}, + {19, 25, 28, 30}, + {20, 26, 29, 30}, + {21, 26, 29, 30}, + {22, 27, 29, 30}, + {23, 27, 29, 30}, }; -static const u8 gUnknown_0860D1C0[] = {0x00, 0x0f, 0x08, 0x07, 0x03, 0x0c, 0x0b, 0x04, 0x01, 0x0e, 0x09, 0x06, 0x02, 0x0d, 0x0a, 0x05}; - -static const u8 *const sBattleDomePotentialTexts[] = -{ - gBattleDomeOpponentPotentialText1, - gBattleDomeOpponentPotentialText2, - gBattleDomeOpponentPotentialText3, - gBattleDomeOpponentPotentialText4, - gBattleDomeOpponentPotentialText5, - gBattleDomeOpponentPotentialText6, - gBattleDomeOpponentPotentialText7, - gBattleDomeOpponentPotentialText8, - gBattleDomeOpponentPotentialText9, - gBattleDomeOpponentPotentialText10, - gBattleDomeOpponentPotentialText11, - gBattleDomeOpponentPotentialText12, - gBattleDomeOpponentPotentialText13, - gBattleDomeOpponentPotentialText14, - gBattleDomeOpponentPotentialText15, - gBattleDomeOpponentPotentialText16, - gBattleDomeOpponentPotentialText17, +static const u8 gUnknown_0860D1C0[DOME_TOURNAMENT_TRAINERS_COUNT] = {0, 15, 8, 7, 3, 12, 11, 4, 1, 14, 9, 6, 2, 13, 10, 5}; + +// Each tourney trainer has a text describing their potential to win, depending on their seed ranking for the current tourney +// Dome Ace Tucker has their own separate potential text +static const u8 *const sBattleDomePotentialTexts[DOME_TOURNAMENT_TRAINERS_COUNT + 1] = +{ + BattleDome_Text_Potential1, // Highest potential + BattleDome_Text_Potential2, + BattleDome_Text_Potential3, + BattleDome_Text_Potential4, + BattleDome_Text_Potential5, + BattleDome_Text_Potential6, + BattleDome_Text_Potential7, + BattleDome_Text_Potential8, + BattleDome_Text_Potential9, + BattleDome_Text_Potential10, + BattleDome_Text_Potential11, + BattleDome_Text_Potential12, + BattleDome_Text_Potential13, + BattleDome_Text_Potential14, + BattleDome_Text_Potential15, + BattleDome_Text_Potential16, // Lowest potential + BattleDome_Text_PotentialDomeAceTucker, }; -static const u8 *const sBattleDomeOpponentStyleTexts[] = -{ - gBattleDomeOpponentStyleText1, - gBattleDomeOpponentStyleText2, - gBattleDomeOpponentStyleText3, - gBattleDomeOpponentStyleText4, - gBattleDomeOpponentStyleText5, - gBattleDomeOpponentStyleText6, - gBattleDomeOpponentStyleText7, - gBattleDomeOpponentStyleText8, - gBattleDomeOpponentStyleText9, - gBattleDomeOpponentStyleText10, - gBattleDomeOpponentStyleText11, - gBattleDomeOpponentStyleText12, - gBattleDomeOpponentStyleText13, - gBattleDomeOpponentStyleText14, - gBattleDomeOpponentStyleText15, - gBattleDomeOpponentStyleText16, - gBattleDomeOpponentStyleText17, - gBattleDomeOpponentStyleText18, - gBattleDomeOpponentStyleText19, - gBattleDomeOpponentStyleText20, - gBattleDomeOpponentStyleText21, - gBattleDomeOpponentStyleText22, - gBattleDomeOpponentStyleText23, - gBattleDomeOpponentStyleText24, - gBattleDomeOpponentStyleText25, - gBattleDomeOpponentStyleText26, - gBattleDomeOpponentStyleText27, - gBattleDomeOpponentStyleText28, - gBattleDomeOpponentStyleTextUnused1, - gBattleDomeOpponentStyleTextUnused2, - gBattleDomeOpponentStyleTextUnused3, - gBattleDomeOpponentStyleTextUnused4, +// The first line of text on a trainers info card that gives information about their battle style (dependent on their party's moves) +static const u8 *const sBattleDomeOpponentStyleTexts[NUM_BATTLE_STYLES] = +{ + [DOME_BATTLE_STYLE_RISKY] = BattleDome_Text_StyleRiskDisaster, + [DOME_BATTLE_STYLE_STALL] = BattleDome_Text_StyleEndureLongBattles, + [DOME_BATTLE_STYLE_VARIED] = BattleDome_Text_StyleVariesTactics, + [DOME_BATTLE_STYLE_COMBO_HIGH] = BattleDome_Text_StyleToughWinningPattern, + [DOME_BATTLE_STYLE_RARE_MOVES] = BattleDome_Text_StyleUsesVeryRareMove, // Seems like the text for these two was swapped + [DOME_BATTLE_STYLE_RARE_MOVE] = BattleDome_Text_StyleUsesStartlingMoves, // + [DOME_BATTLE_STYLE_HP] = BattleDome_Text_StyleConstantlyWatchesHP, + [DOME_BATTLE_STYLE_STORE_POWER] = BattleDome_Text_StyleStoresAndLoosesPower, + [DOME_BATTLE_STYLE_ENFEEBLE_LOW] = BattleDome_Text_StyleEnfeeblesFoes, + [DOME_BATTLE_STYLE_LUCK] = BattleDome_Text_StylePrefersLuckTactics, + [DOME_BATTLE_STYLE_REGAL] = BattleDome_Text_StyleRegalAtmosphere, + [DOME_BATTLE_STYLE_LOW_PP] = BattleDome_Text_StylePowerfulLowPPMoves, + [DOME_BATTLE_STYLE_STATUS_ATK] = BattleDome_Text_StyleEnfeebleThenAttack, + [DOME_BATTLE_STYLE_ENDURE] = BattleDome_Text_StyleBattlesWhileEnduring, + [DOME_BATTLE_STYLE_STATUS] = BattleDome_Text_StyleUpsetsFoesEmotionally, + [DOME_BATTLE_STYLE_STRAIGHTFORWARD] = BattleDome_Text_StyleStrongAndStraightforward, + [DOME_BATTLE_STYLE_AGGRESSIVE] = BattleDome_Text_StyleAggressivelyStrongMoves, + [DOME_BATTLE_STYLE_DEF] = BattleDome_Text_StyleCleverlyDodgesAttacks, + [DOME_BATTLE_STYLE_ENFEEBLE_HIGH] = BattleDome_Text_StyleUsesUpsettingMoves, + [DOME_BATTLE_STYLE_POPULAR_POWER] = BattleDome_Text_StyleUsesPopularMoves, + [DOME_BATTLE_STYLE_COMBO_LOW] = BattleDome_Text_StyleHasPowerfulComboMoves, + [DOME_BATTLE_STYLE_ACCURATE] = BattleDome_Text_StyleUsesHighProbabilityMoves, + [DOME_BATTLE_STYLE_POWERFUL] = BattleDome_Text_StyleAggressivelySpectacularMoves, + [DOME_BATTLE_STYLE_ATK_OVER_DEF] = BattleDome_Text_StyleEmphasizesOffenseOverDefense, + [DOME_BATTLE_STYLE_DEF_OVER_ATK] = BattleDome_Text_StyleEmphasizesDefenseOverOffense, + [DOME_BATTLE_STYLE_POPULAR_STRONG] = BattleDome_Text_StyleAttacksQuicklyStrongMoves, + [DOME_BATTLE_STYLE_EFFECTS] = BattleDome_Text_StyleUsesAddedEffectMoves, + [DOME_BATTLE_STYLE_BALANCED] = BattleDome_Text_StyleUsesBalancedMixOfMoves, + [DOME_BATTLE_STYLE_UNUSED1] = BattleDome_Text_StyleSampleMessage1, + [DOME_BATTLE_STYLE_UNUSED2] = BattleDome_Text_StyleSampleMessage2, + [DOME_BATTLE_STYLE_UNUSED3] = BattleDome_Text_StyleSampleMessage3, + [DOME_BATTLE_STYLE_UNUSED4] = BattleDome_Text_StyleSampleMessage4, }; +// The second line of text on a trainers info card that gives information about their party's stat spread static const u8 *const sBattleDomeOpponentStatsTexts[] = { - gBattleDomeOpponentStatsText1, - gBattleDomeOpponentStatsText2, - gBattleDomeOpponentStatsText3, - gBattleDomeOpponentStatsText4, - gBattleDomeOpponentStatsText5, - gBattleDomeOpponentStatsText6, - gBattleDomeOpponentStatsText7, - gBattleDomeOpponentStatsText8, - gBattleDomeOpponentStatsText9, - gBattleDomeOpponentStatsText10, - gBattleDomeOpponentStatsText11, - gBattleDomeOpponentStatsText12, - gBattleDomeOpponentStatsText13, - gBattleDomeOpponentStatsText14, - gBattleDomeOpponentStatsText15, - gBattleDomeOpponentStatsText16, - gBattleDomeOpponentStatsText17, - gBattleDomeOpponentStatsText18, - gBattleDomeOpponentStatsText19, - gBattleDomeOpponentStatsText20, - gBattleDomeOpponentStatsText21, - gBattleDomeOpponentStatsText22, - gBattleDomeOpponentStatsText23, - gBattleDomeOpponentStatsText24, - gBattleDomeOpponentStatsText25, - gBattleDomeOpponentStatsText26, - gBattleDomeOpponentStatsText27, - gBattleDomeOpponentStatsText28, - gBattleDomeOpponentStatsText29, - gBattleDomeOpponentStatsText30, - gBattleDomeOpponentStatsText31, - gBattleDomeOpponentStatsText32, - gBattleDomeOpponentStatsText33, - gBattleDomeOpponentStatsText34, - gBattleDomeOpponentStatsText35, - gBattleDomeOpponentStatsText36, - gBattleDomeOpponentStatsText37, - gBattleDomeOpponentStatsText38, - gBattleDomeOpponentStatsText39, - gBattleDomeOpponentStatsText40, - gBattleDomeOpponentStatsText41, - gBattleDomeOpponentStatsText42, - gBattleDomeOpponentStatsText43, + BattleDome_Text_EmphasizesHPAndAtk, // DOME_TEXT_TWO_GOOD_STATS and DOME_TEXT_HP start here + BattleDome_Text_EmphasizesHPAndDef, + BattleDome_Text_EmphasizesHPAndSpeed, + BattleDome_Text_EmphasizesHPAndSpAtk, + BattleDome_Text_EmphasizesHPAndSpDef, + BattleDome_Text_EmphasizesAtkAndDef, // DOME_TEXT_ATK starts here + BattleDome_Text_EmphasizesAtkAndSpeed, + BattleDome_Text_EmphasizesAtkAndSpAtk, + BattleDome_Text_EmphasizesAtkAndSpDef, + BattleDome_Text_EmphasizesDefAndSpeed, // DOME_TEXT_DEF starts here + BattleDome_Text_EmphasizesDefAndSpAtk, + BattleDome_Text_EmphasizesDefAndSpDef, + BattleDome_Text_EmphasizesSpeedAndSpAtk, // DOME_TEXT_SPEED starts here + BattleDome_Text_EmphasizesSpeedAndSpDef, + BattleDome_Text_EmphasizesSpAtkAndSpDef, // DOME_TEXT_SPATK starts here + BattleDome_Text_EmphasizesHP, // DOME_TEXT_ONE_GOOD_STAT starts here + BattleDome_Text_EmphasizesAtk, + BattleDome_Text_EmphasizesDef, + BattleDome_Text_EmphasizesSpeed, + BattleDome_Text_EmphasizesSpAtk, + BattleDome_Text_EmphasizesSpDef, + BattleDome_Text_NeglectsHPAndAtk, // DOME_TEXT_TWO_BAD_STATS starts here + BattleDome_Text_NeglectsHPAndDef, + BattleDome_Text_NeglectsHPAndSpeed, + BattleDome_Text_NeglectsHPAndSpAtk, + BattleDome_Text_NeglectsHPAndSpDef, + BattleDome_Text_NeglectsAtkAndDef, + BattleDome_Text_NeglectsAtkAndSpeed, + BattleDome_Text_NeglectsAtkAndSpAtk, + BattleDome_Text_NeglectsAtkAndSpDef, + BattleDome_Text_NeglectsDefAndSpeed, + BattleDome_Text_NeglectsDefAndSpAtk, + BattleDome_Text_NeglectsDefAndSpDef, + BattleDome_Text_NeglectsSpeedAndSpAtk, + BattleDome_Text_NeglectsSpeedAndSpDef, + BattleDome_Text_NeglectsSpAtkAndSpDef, + BattleDome_Text_NeglectsHP, // DOME_TEXT_ONE_BAD_STAT starts here + BattleDome_Text_NeglectsAtk, + BattleDome_Text_NeglectsDef, + BattleDome_Text_NeglectsSpeed, + BattleDome_Text_NeglectsSpAtk, + BattleDome_Text_NeglectsSpDef, + [DOME_TEXT_WELL_BALANCED] = BattleDome_Text_RaisesMonsWellBalanced, +}; + +static const u8 sInfoTrainerMonX[FRONTIER_PARTY_SIZE] = {104, 136, 104}; +static const u8 sInfoTrainerMonY[FRONTIER_PARTY_SIZE] = { 38, 62, 78}; +static const u8 sSpeciesNameTextYCoords[] = {0, 4, 0}; + +// Offsets within sBattleDomeOpponentStatsTexts for stat combinations +// SPDEF has no offset because by then all stat combinations have been reached, so it has no combination texts +static const u8 sStatTextOffsets[NUM_STATS - 1] = +{ + DOME_TEXT_HP, + DOME_TEXT_ATK, + DOME_TEXT_DEF, + DOME_TEXT_SPEED, + DOME_TEXT_SPATK }; -static const u8 sInfoTrainerMonX[] = {0x68, 0x88, 0x68}; -static const u8 sInfoTrainerMonY[] = {0x26, 0x3e, 0x4e}; -static const u8 gUnknown_0860D346[] = {0x00, 0x04, 0x00}; - -static const u8 gUnknown_0860D349[] = {0x00, 0x05, 0x09, 0x0c, 0x0e, 0x00, 0x00}; - -static const u8 *const sBattleDomeMatchNumberTexts[] = -{ - gBattleDomeMatchNumberText1, - gBattleDomeMatchNumberText2, - gBattleDomeMatchNumberText3, - gBattleDomeMatchNumberText4, - gBattleDomeMatchNumberText5, - gBattleDomeMatchNumberText6, - gBattleDomeMatchNumberText7, - gBattleDomeMatchNumberText8, - gBattleDomeMatchNumberText9, - gBattleDomeMatchNumberText10, - gBattleDomeMatchNumberText11, - gBattleDomeMatchNumberText12, - gBattleDomeMatchNumberText13, - gBattleDomeMatchNumberText14, - gBattleDomeMatchNumberText15, +static const u8 *const sBattleDomeMatchNumberTexts[DOME_TOURNAMENT_MATCHES_COUNT] = +{ + BattleDome_Text_Round1Match1, + BattleDome_Text_Round1Match2, + BattleDome_Text_Round1Match3, + BattleDome_Text_Round1Match4, + BattleDome_Text_Round1Match5, + BattleDome_Text_Round1Match6, + BattleDome_Text_Round1Match7, + BattleDome_Text_Round1Match8, + BattleDome_Text_Round2Match1, + BattleDome_Text_Round2Match2, + BattleDome_Text_Round2Match3, + BattleDome_Text_Round2Match4, + BattleDome_Text_SemifinalMatch1, + BattleDome_Text_SemifinalMatch2, + BattleDome_Text_FinalMatch, }; static const u8 *const sBattleDomeWinTexts[] = { - gBattleDomeWinText1, - gBattleDomeWinText2, - gBattleDomeWinText3, - gBattleDomeWinText4, - gBattleDomeWinText5, - gBattleDomeWinText6, - gBattleDomeWinText7, + [DOME_TEXT_NO_WINNER_YET] = BattleDome_Text_LetTheBattleBegin, + [DOME_TEXT_WON_USING_MOVE] = BattleDome_Text_TrainerWonUsingMove, + [DOME_TEXT_CHAMP_USING_MOVE] = BattleDome_Text_TrainerBecameChamp, + [DOME_TEXT_WON_ON_FORFEIT] = BattleDome_Text_TrainerWonByDefault, + [DOME_TEXT_CHAMP_ON_FORFEIT] = BattleDome_Text_TrainerWonOutrightByDefault, + [DOME_TEXT_WON_NO_MOVES] = BattleDome_Text_TrainerWonNoMoves, + [DOME_TEXT_CHAMP_NO_MOVES] = BattleDome_Text_TrainerWonOutrightNoMoves, }; -static const u8 sFirstTrainerMonX[] = {0x60, 0x60, 0x60}; -static const u8 sFirstTrainerMonY[] = {0x38, 0x50, 0x68}; -static const u8 sSecondTrainerMonX[] = {0x90, 0x90, 0x90}; -static const u8 sSecondTrainerMonY[] = {0x38, 0x50, 0x68}; - -static const u8 gUnknown_0860D3B4[] = {0x00, 0x08, 0x0c, 0x04, 0x07, 0x0f, 0x0b, 0x03, 0x02, 0x0a, 0x0e, 0x06, 0x05, 0x0d, 0x09, 0x01}; - -static const u8 gUnknown_0860D3C4[][3] = -{ - {0x00, 0x02, 0x00}, - {0x02, 0x02, 0x00}, - {0x04, 0x02, 0x00}, - {0x06, 0x02, 0x00}, - {0x08, 0x02, 0x00}, - {0x0a, 0x02, 0x00}, - {0x0c, 0x02, 0x00}, - {0x0e, 0x02, 0x00}, - {0x00, 0x04, 0x01}, - {0x04, 0x04, 0x01}, - {0x08, 0x04, 0x01}, - {0x0c, 0x04, 0x01}, - {0x00, 0x08, 0x02}, - {0x08, 0x08, 0x02}, - {0x00, 0x10, 0x03}, +static const u8 sLeftTrainerMonX[FRONTIER_PARTY_SIZE] = { 96, 96, 96}; +static const u8 sLeftTrainerMonY[FRONTIER_PARTY_SIZE] = { 56, 80, 104}; +static const u8 sRightTrainerMonX[FRONTIER_PARTY_SIZE] = {144, 144, 144}; +static const u8 sRightTrainerMonY[FRONTIER_PARTY_SIZE] = { 56, 80, 104}; + +// Duplicate of sTourneyTreeTrainerIds +static const u8 sTourneyTreeTrainerIds2[DOME_TOURNAMENT_TRAINERS_COUNT] = {0, 8, 12, 4, 7, 15, 11, 3, 2, 10, 14, 6, 5, 13, 9, 1}; + +// The number of possible trainers that could be competing in a given match +#define NUM_POSSIBLE_MATCH_TRAINERS(round) (DOME_TOURNAMENT_TRAINERS_COUNT / (1 << (DOME_ROUNDS_COUNT - round - 1))) + +// The range of tournament trainers to check as possible participants in a given match +// Given by the offset in sCompetitorRangeByMatch[][0], the number of trainers in sCompetitorRangeByMatch[][1], and the round +static const u8 sCompetitorRangeByMatch[DOME_TOURNAMENT_MATCHES_COUNT][3] = +{ + { NUM_POSSIBLE_MATCH_TRAINERS(DOME_ROUND1) * 0, NUM_POSSIBLE_MATCH_TRAINERS(DOME_ROUND1), DOME_ROUND1}, + { NUM_POSSIBLE_MATCH_TRAINERS(DOME_ROUND1) * 1, NUM_POSSIBLE_MATCH_TRAINERS(DOME_ROUND1), DOME_ROUND1}, + { NUM_POSSIBLE_MATCH_TRAINERS(DOME_ROUND1) * 2, NUM_POSSIBLE_MATCH_TRAINERS(DOME_ROUND1), DOME_ROUND1}, + { NUM_POSSIBLE_MATCH_TRAINERS(DOME_ROUND1) * 3, NUM_POSSIBLE_MATCH_TRAINERS(DOME_ROUND1), DOME_ROUND1}, + { NUM_POSSIBLE_MATCH_TRAINERS(DOME_ROUND1) * 4, NUM_POSSIBLE_MATCH_TRAINERS(DOME_ROUND1), DOME_ROUND1}, + { NUM_POSSIBLE_MATCH_TRAINERS(DOME_ROUND1) * 5, NUM_POSSIBLE_MATCH_TRAINERS(DOME_ROUND1), DOME_ROUND1}, + { NUM_POSSIBLE_MATCH_TRAINERS(DOME_ROUND1) * 6, NUM_POSSIBLE_MATCH_TRAINERS(DOME_ROUND1), DOME_ROUND1}, + { NUM_POSSIBLE_MATCH_TRAINERS(DOME_ROUND1) * 7, NUM_POSSIBLE_MATCH_TRAINERS(DOME_ROUND1), DOME_ROUND1}, + { NUM_POSSIBLE_MATCH_TRAINERS(DOME_ROUND2) * 0, NUM_POSSIBLE_MATCH_TRAINERS(DOME_ROUND2), DOME_ROUND2}, + { NUM_POSSIBLE_MATCH_TRAINERS(DOME_ROUND2) * 1, NUM_POSSIBLE_MATCH_TRAINERS(DOME_ROUND2), DOME_ROUND2}, + { NUM_POSSIBLE_MATCH_TRAINERS(DOME_ROUND2) * 2, NUM_POSSIBLE_MATCH_TRAINERS(DOME_ROUND2), DOME_ROUND2}, + { NUM_POSSIBLE_MATCH_TRAINERS(DOME_ROUND2) * 3, NUM_POSSIBLE_MATCH_TRAINERS(DOME_ROUND2), DOME_ROUND2}, + { NUM_POSSIBLE_MATCH_TRAINERS(DOME_SEMIFINAL) * 0, NUM_POSSIBLE_MATCH_TRAINERS(DOME_SEMIFINAL), DOME_SEMIFINAL}, + { NUM_POSSIBLE_MATCH_TRAINERS(DOME_SEMIFINAL) * 1, NUM_POSSIBLE_MATCH_TRAINERS(DOME_SEMIFINAL), DOME_SEMIFINAL}, + { NUM_POSSIBLE_MATCH_TRAINERS(DOME_FINAL) * 0, NUM_POSSIBLE_MATCH_TRAINERS(DOME_FINAL), DOME_FINAL}, }; -static const u8 gUnknown_0860D3F1[][2] = -{ - {0x00, 0x00}, - {0x01, 0x70}, - {0x01, 0x00}, - {0x00, 0x70}, - {0x00, 0x30}, - {0x01, 0x40}, - {0x01, 0x30}, - {0x00, 0x40}, - {0x00, 0x10}, - {0x01, 0x60}, - {0x01, 0x10}, - {0x00, 0x60}, - {0x00, 0x20}, - {0x01, 0x50}, - {0x01, 0x20}, - {0x00, 0x50}, +// 1st value is the windowId (0 for left column, 1 for right column) +// 2nd value is the y coord +static const u8 sTrainerNamePositions[DOME_TOURNAMENT_TRAINERS_COUNT][2] = +{ + { 0, 0}, + { 1, 112}, + { 1, 0}, + { 0, 112}, + { 0, 48}, + { 1, 64}, + { 1, 48}, + { 0, 64}, + { 0, 16}, + { 1, 96}, + { 1, 16}, + { 0, 96}, + { 0, 32}, + { 1, 80}, + { 1, 32}, + { 0, 80}, }; -static const u8 gUnknown_0860D411[][2] = -{ - {0x44, 0x21}, - {0x44, 0x31}, - {0x44, 0x41}, - {0x44, 0x51}, - {0x44, 0x61}, - {0x44, 0x71}, - {0x44, 0x81}, - {0x44, 0x91}, - {0xac, 0x21}, - {0xac, 0x31}, - {0xac, 0x41}, - {0xac, 0x51}, - {0xac, 0x61}, - {0xac, 0x71}, - {0xac, 0x81}, - {0xac, 0x91}, - {0x57, 0x29}, - {0x57, 0x49}, - {0x57, 0x69}, - {0x57, 0x89}, - {0x99, 0x29}, - {0x99, 0x49}, - {0x99, 0x69}, - {0x99, 0x89}, - {0x5f, 0x39}, - {0x5f, 0x79}, - {0x91, 0x39}, - {0x91, 0x79}, - {0x67, 0x59}, - {0x89, 0x59}, - {0x78, 0x59}, +// Coords for the pokeballs on the tourney tree that act as buttons to view trainer/match info +static const u8 sTourneyTreePokeballCoords[DOME_TOURNAMENT_TRAINERS_COUNT + DOME_TOURNAMENT_MATCHES_COUNT][2] = +{ + { 68, 33}, // Left side trainers + { 68, 49}, + { 68, 65}, + { 68, 81}, + { 68, 97}, + { 68, 113}, + { 68, 129}, + { 68, 145}, + {172, 33}, // Right side trainers + {172, 49}, + {172, 65}, + {172, 81}, + {172, 97}, + {172, 113}, + {172, 129}, + {172, 145}, + { 87, 41}, // Left side Round 1 matches + { 87, 73}, + { 87, 105}, + { 87, 137}, + {153, 41}, // Right side Round 1 matches + {153, 73}, + {153, 105}, + {153, 137}, + { 95, 57}, // Left side Round 2 matches + { 95, 121}, + {145, 57}, // Right side Round 2 matches + {145, 121}, + {103, 89}, // Left side semifinal match + {137, 89}, // Right side semifinal match + {120, 89}, // Final match }; -static const struct UnkStruct_860DD10 gUnknown_0860d450[] = +// Each of these line sections define the position of the advancement line on the tourney tree for the victor of that round +// The trainers here are numbered by tourney ID (rank/seed) and ordered according to where they start on the tourney tree +#define LINESECTION_ROUND1_TRAINER1(lastSrc) \ + {.src = 0x6021, .y = 0x04, .x = 0x09}, \ + {.src = 0x6023, .y = 0x04, .x = 0x0a}, \ + {.src = 0x6047, .y = 0x05, .x = 0x0a}, \ + {.src = lastSrc, .y = 0x05, .x = 0x0b}, + +#define LINESECTION_ROUND1_TRAINER9(lastSrc) \ + {.src = 0x6021, .y = 0x06, .x = 0x09}, \ + {.src = 0x6021, .y = 0x06, .x = 0x0a}, \ + {.src = 0x6027, .y = 0x05, .x = 0x0a}, \ + {.src = lastSrc, .y = 0x05, .x = 0x0b}, + +#define LINESECTION_ROUND1_TRAINER13(lastSrc) \ + {.src = 0x6021, .y = 0x08, .x = 0x09}, \ + {.src = 0x6023, .y = 0x08, .x = 0x0a}, \ + {.src = 0x6047, .y = 0x09, .x = 0x0a}, \ + {.src = lastSrc, .y = 0x09, .x = 0x0b}, + +#define LINESECTION_ROUND1_TRAINER5(lastSrc) \ + {.src = 0x6021, .y = 0x0a, .x = 0x09}, \ + {.src = 0x6021, .y = 0x0a, .x = 0x0a}, \ + {.src = 0x6027, .y = 0x09, .x = 0x0a}, \ + {.src = lastSrc, .y = 0x09, .x = 0x0b}, + +#define LINESECTION_ROUND1_TRAINER8(lastSrc) \ + {.src = 0x6021, .y = 0x0c, .x = 0x09}, \ + {.src = 0x6023, .y = 0x0c, .x = 0x0a}, \ + {.src = 0x6047, .y = 0x0d, .x = 0x0a}, \ + {.src = lastSrc, .y = 0x0d, .x = 0x0b}, + +#define LINESECTION_ROUND1_TRAINER16(lastSrc) \ + {.src = 0x6021, .y = 0x0e, .x = 0x09}, \ + {.src = 0x6021, .y = 0x0e, .x = 0x0a}, \ + {.src = 0x6027, .y = 0x0d, .x = 0x0a}, \ + {.src = lastSrc, .y = 0x0d, .x = 0x0b}, + +#define LINESECTION_ROUND1_TRAINER12(lastSrc) \ + {.src = 0x6021, .y = 0x10, .x = 0x09}, \ + {.src = 0x6023, .y = 0x10, .x = 0x0a}, \ + {.src = 0x6047, .y = 0x11, .x = 0x0a}, \ + {.src = lastSrc, .y = 0x11, .x = 0x0b}, + +#define LINESECTION_ROUND1_TRAINER4(lastSrc) \ + {.src = 0x602b, .y = 0x12, .x = 0x09}, \ + {.src = 0x602b, .y = 0x12, .x = 0x0a}, \ + {.src = 0x6027, .y = 0x11, .x = 0x0a}, \ + {.src = lastSrc, .y = 0x11, .x = 0x0b}, + +#define LINESECTION_ROUND1_TRAINER3(lastSrc) \ + {.src = 0x6021, .y = 0x04, .x = 0x14}, \ + {.src = 0x6025, .y = 0x04, .x = 0x13}, \ + {.src = 0x6049, .y = 0x05, .x = 0x13}, \ + {.src = lastSrc, .y = 0x05, .x = 0x12}, + +#define LINESECTION_ROUND1_TRAINER11(lastSrc) \ + {.src = 0x6021, .y = 0x06, .x = 0x14}, \ + {.src = 0x6021, .y = 0x06, .x = 0x13}, \ + {.src = 0x6029, .y = 0x05, .x = 0x13}, \ + {.src = lastSrc, .y = 0x05, .x = 0x12}, + +#define LINESECTION_ROUND1_TRAINER15(lastSrc) \ + {.src = 0x6021, .y = 0x08, .x = 0x14}, \ + {.src = 0x6025, .y = 0x08, .x = 0x13}, \ + {.src = 0x6049, .y = 0x09, .x = 0x13}, \ + {.src = lastSrc, .y = 0x09, .x = 0x12}, + +#define LINESECTION_ROUND1_TRAINER7(lastSrc) \ + {.src = 0x6021, .y = 0x0a, .x = 0x14}, \ + {.src = 0x6021, .y = 0x0a, .x = 0x13}, \ + {.src = 0x6029, .y = 0x09, .x = 0x13}, \ + {.src = lastSrc, .y = 0x09, .x = 0x12}, + +#define LINESECTION_ROUND1_TRAINER6(lastSrc) \ + {.src = 0x6021, .y = 0x0c, .x = 0x14}, \ + {.src = 0x6025, .y = 0x0c, .x = 0x13}, \ + {.src = 0x6049, .y = 0x0d, .x = 0x13}, \ + {.src = lastSrc, .y = 0x0d, .x = 0x12}, + +#define LINESECTION_ROUND1_TRAINER14(lastSrc) \ + {.src = 0x6021, .y = 0x0e, .x = 0x14}, \ + {.src = 0x6021, .y = 0x0e, .x = 0x13}, \ + {.src = 0x6029, .y = 0x0d, .x = 0x13}, \ + {.src = lastSrc, .y = 0x0d, .x = 0x12}, + +#define LINESECTION_ROUND1_TRAINER10(lastSrc) \ + {.src = 0x6021, .y = 0x10, .x = 0x14}, \ + {.src = 0x6025, .y = 0x10, .x = 0x13}, \ + {.src = 0x6049, .y = 0x11, .x = 0x13}, \ + {.src = lastSrc, .y = 0x11, .x = 0x12}, + +#define LINESECTION_ROUND1_TRAINER2(lastSrc) \ + {.src = 0x602b, .y = 0x12, .x = 0x14}, \ + {.src = 0x602b, .y = 0x12, .x = 0x13}, \ + {.src = 0x6029, .y = 0x11, .x = 0x13}, \ + {.src = lastSrc, .y = 0x11, .x = 0x12}, + +#define LINESECTION_ROUND2_MATCH1(lastSrc) \ + {.src = 0x6027, .y = 0x06, .x = 0x0b}, \ + {.src = 0x6047, .y = 0x07, .x = 0x0b}, \ + {.src = lastSrc, .y = 0x07, .x = 0x0c}, + +#define LINESECTION_ROUND2_MATCH2(lastSrc) \ + {.src = 0x6027, .y = 0x08, .x = 0x0b}, \ + {.src = 0x6027, .y = 0x07, .x = 0x0b}, \ + {.src = lastSrc, .y = 0x07, .x = 0x0c}, + +#define LINESECTION_ROUND2_MATCH3(lastSrc) \ + {.src = 0x6027, .y = 0x0e, .x = 0x0b}, \ + {.src = 0x6047, .y = 0x0f, .x = 0x0b}, \ + {.src = lastSrc, .y = 0x0f, .x = 0x0c}, + +#define LINESECTION_ROUND2_MATCH4(lastSrc) \ + {.src = 0x6027, .y = 0x10, .x = 0x0b}, \ + {.src = 0x6027, .y = 0x0f, .x = 0x0b}, \ + {.src = lastSrc, .y = 0x0f, .x = 0x0c}, + +#define LINESECTION_ROUND2_MATCH5(lastSrc) \ + {.src = 0x6029, .y = 0x06, .x = 0x12}, \ + {.src = 0x6049, .y = 0x07, .x = 0x12}, \ + {.src = lastSrc, .y = 0x07, .x = 0x11}, + +#define LINESECTION_ROUND2_MATCH6(lastSrc) \ + {.src = 0x6029, .y = 0x08, .x = 0x12}, \ + {.src = 0x6029, .y = 0x07, .x = 0x12}, \ + {.src = lastSrc, .y = 0x07, .x = 0x11}, + +#define LINESECTION_ROUND2_MATCH7(lastSrc) \ + {.src = 0x6029, .y = 0x0e, .x = 0x12}, \ + {.src = 0x6049, .y = 0x0f, .x = 0x12}, \ + {.src = lastSrc, .y = 0x0f, .x = 0x11}, + +#define LINESECTION_ROUND2_MATCH8(lastSrc) \ + {.src = 0x6029, .y = 0x10, .x = 0x12}, \ + {.src = 0x6029, .y = 0x0f, .x = 0x12}, \ + {.src = lastSrc, .y = 0x0f, .x = 0x11}, + +#define LINESECTION_SEMIFINAL_TOP_LEFT \ + {.src = 0x6027, .y = 0x08, .x = 0x0c}, \ + {.src = 0x6027, .y = 0x09, .x = 0x0c}, \ + {.src = 0x6027, .y = 0x0a, .x = 0x0c}, \ + {.src = 0x603b, .y = 0x0b, .x = 0x0c}, + +#define LINESECTION_SEMIFINAL_BOTTOM_LEFT \ + {.src = 0x6033, .y = 0x0e, .x = 0x0c}, \ + {.src = 0x6032, .y = 0x0d, .x = 0x0c}, \ + {.src = 0x6031, .y = 0x0c, .x = 0x0c}, \ + {.src = 0x6030, .y = 0x0b, .x = 0x0c}, + +#define LINESECTION_SEMIFINAL_TOP_RIGHT \ + {.src = 0x6029, .y = 0x08, .x = 0x11}, \ + {.src = 0x6029, .y = 0x09, .x = 0x11}, \ + {.src = 0x6029, .y = 0x0a, .x = 0x11}, \ + {.src = 0x603c, .y = 0x0b, .x = 0x11}, + +#define LINESECTION_SEMIFINAL_BOTTOM_RIGHT \ + {.src = 0x6038, .y = 0x0e, .x = 0x11}, \ + {.src = 0x6037, .y = 0x0d, .x = 0x11}, \ + {.src = 0x6036, .y = 0x0c, .x = 0x11}, \ + {.src = 0x6035, .y = 0x0b, .x = 0x11}, + +#define LINESECTION_FINAL_LEFT \ + {.src = 0x602c, .y = 0x0b, .x = 0x0d}, \ + {.src = 0x602d, .y = 0x0b, .x = 0x0e}, + +#define LINESECTION_FINAL_RIGHT \ + {.src = 0x602f, .y = 0x0b, .x = 0x10}, \ + {.src = 0x602e, .y = 0x0b, .x = 0x0f}, + + +static const struct TourneyTreeLineSection sLineSectionTrainer1Round1[] = { - {.src = 0x6021, .y = 0x04, .x = 0x09}, - {.src = 0x6023, .y = 0x04, .x = 0x0a}, - {.src = 0x6047, .y = 0x05, .x = 0x0a}, - {.src = 0x6043, .y = 0x05, .x = 0x0b}, + LINESECTION_ROUND1_TRAINER1(0x6043) }; -static const struct UnkStruct_860DD10 gUnknown_0860d460[] = +static const struct TourneyTreeLineSection sLineSectionTrainer1Round2[] = { - {.src = 0x6021, .y = 0x04, .x = 0x09}, - {.src = 0x6023, .y = 0x04, .x = 0x0a}, - {.src = 0x6047, .y = 0x05, .x = 0x0a}, - {.src = 0x6023, .y = 0x05, .x = 0x0b}, - {.src = 0x6027, .y = 0x06, .x = 0x0b}, - {.src = 0x6047, .y = 0x07, .x = 0x0b}, - {.src = 0x6043, .y = 0x07, .x = 0x0c}, + LINESECTION_ROUND1_TRAINER1(0x6023) + LINESECTION_ROUND2_MATCH1(0x6043) }; -static const struct UnkStruct_860DD10 gUnknown_0860d47c[] = -{ - {.src = 0x6021, .y = 0x04, .x = 0x09}, - {.src = 0x6023, .y = 0x04, .x = 0x0a}, - {.src = 0x6047, .y = 0x05, .x = 0x0a}, - {.src = 0x6023, .y = 0x05, .x = 0x0b}, - {.src = 0x6027, .y = 0x06, .x = 0x0b}, - {.src = 0x6047, .y = 0x07, .x = 0x0b}, - {.src = 0x6023, .y = 0x07, .x = 0x0c}, - {.src = 0x6027, .y = 0x08, .x = 0x0c}, - {.src = 0x6027, .y = 0x09, .x = 0x0c}, - {.src = 0x6027, .y = 0x0a, .x = 0x0c}, - {.src = 0x603b, .y = 0x0b, .x = 0x0c}, +static const struct TourneyTreeLineSection sLineSectionTrainer1Semifinal[] = +{ + LINESECTION_ROUND1_TRAINER1(0x6023) + LINESECTION_ROUND2_MATCH1(0x6023) + LINESECTION_SEMIFINAL_TOP_LEFT }; -static const struct UnkStruct_860DD10 gUnknown_0860d4a8[] = -{ - {.src = 0x6021, .y = 0x04, .x = 0x09}, - {.src = 0x6023, .y = 0x04, .x = 0x0a}, - {.src = 0x6047, .y = 0x05, .x = 0x0a}, - {.src = 0x6023, .y = 0x05, .x = 0x0b}, - {.src = 0x6027, .y = 0x06, .x = 0x0b}, - {.src = 0x6047, .y = 0x07, .x = 0x0b}, - {.src = 0x6023, .y = 0x07, .x = 0x0c}, - {.src = 0x6027, .y = 0x08, .x = 0x0c}, - {.src = 0x6027, .y = 0x09, .x = 0x0c}, - {.src = 0x6027, .y = 0x0a, .x = 0x0c}, - {.src = 0x603b, .y = 0x0b, .x = 0x0c}, - {.src = 0x602c, .y = 0x0b, .x = 0x0d}, - {.src = 0x602d, .y = 0x0b, .x = 0x0e}, +static const struct TourneyTreeLineSection sLineSectionTrainer1Final[] = +{ + LINESECTION_ROUND1_TRAINER1(0x6023) + LINESECTION_ROUND2_MATCH1(0x6023) + LINESECTION_SEMIFINAL_TOP_LEFT + LINESECTION_FINAL_LEFT }; -static const struct UnkStruct_860DD10 gUnknown_0860d4dc[] = +static const struct TourneyTreeLineSection sLineSectionTrainer9Round1[] = { - {.src = 0x6021, .y = 0x06, .x = 0x09}, - {.src = 0x6021, .y = 0x06, .x = 0x0a}, - {.src = 0x6027, .y = 0x05, .x = 0x0a}, - {.src = 0x6043, .y = 0x05, .x = 0x0b}, + LINESECTION_ROUND1_TRAINER9(0x6043) }; -static const struct UnkStruct_860DD10 gUnknown_0860d4ec[] = +static const struct TourneyTreeLineSection sLineSectionTrainer9Round2[] = { - {.src = 0x6021, .y = 0x06, .x = 0x09}, - {.src = 0x6021, .y = 0x06, .x = 0x0a}, - {.src = 0x6027, .y = 0x05, .x = 0x0a}, - {.src = 0x6023, .y = 0x05, .x = 0x0b}, - {.src = 0x6027, .y = 0x06, .x = 0x0b}, - {.src = 0x6047, .y = 0x07, .x = 0x0b}, - {.src = 0x6043, .y = 0x07, .x = 0x0c}, + LINESECTION_ROUND1_TRAINER9(0x6023) + LINESECTION_ROUND2_MATCH1(0x6043) }; -static const struct UnkStruct_860DD10 gUnknown_0860d508[] = -{ - {.src = 0x6021, .y = 0x06, .x = 0x09}, - {.src = 0x6021, .y = 0x06, .x = 0x0a}, - {.src = 0x6027, .y = 0x05, .x = 0x0a}, - {.src = 0x6023, .y = 0x05, .x = 0x0b}, - {.src = 0x6027, .y = 0x06, .x = 0x0b}, - {.src = 0x6047, .y = 0x07, .x = 0x0b}, - {.src = 0x6023, .y = 0x07, .x = 0x0c}, - {.src = 0x6027, .y = 0x08, .x = 0x0c}, - {.src = 0x6027, .y = 0x09, .x = 0x0c}, - {.src = 0x6027, .y = 0x0a, .x = 0x0c}, - {.src = 0x603b, .y = 0x0b, .x = 0x0c}, +static const struct TourneyTreeLineSection sLineSectionTrainer9Semifinal[] = +{ + LINESECTION_ROUND1_TRAINER9(0x6023) + LINESECTION_ROUND2_MATCH1(0x6023) + LINESECTION_SEMIFINAL_TOP_LEFT }; -static const struct UnkStruct_860DD10 gUnknown_0860d534[] = -{ - {.src = 0x6021, .y = 0x06, .x = 0x09}, - {.src = 0x6021, .y = 0x06, .x = 0x0a}, - {.src = 0x6027, .y = 0x05, .x = 0x0a}, - {.src = 0x6023, .y = 0x05, .x = 0x0b}, - {.src = 0x6027, .y = 0x06, .x = 0x0b}, - {.src = 0x6047, .y = 0x07, .x = 0x0b}, - {.src = 0x6023, .y = 0x07, .x = 0x0c}, - {.src = 0x6027, .y = 0x08, .x = 0x0c}, - {.src = 0x6027, .y = 0x09, .x = 0x0c}, - {.src = 0x6027, .y = 0x0a, .x = 0x0c}, - {.src = 0x603b, .y = 0x0b, .x = 0x0c}, - {.src = 0x602c, .y = 0x0b, .x = 0x0d}, - {.src = 0x602d, .y = 0x0b, .x = 0x0e}, +static const struct TourneyTreeLineSection sLineSectionTrainer9Final[] = +{ + LINESECTION_ROUND1_TRAINER9(0x6023) + LINESECTION_ROUND2_MATCH1(0x6023) + LINESECTION_SEMIFINAL_TOP_LEFT + LINESECTION_FINAL_LEFT }; -static const struct UnkStruct_860DD10 gUnknown_0860d568[] = +static const struct TourneyTreeLineSection sLineSectionTrainer13Round1[] = { - {.src = 0x6021, .y = 0x08, .x = 0x09}, - {.src = 0x6023, .y = 0x08, .x = 0x0a}, - {.src = 0x6047, .y = 0x09, .x = 0x0a}, - {.src = 0x6021, .y = 0x09, .x = 0x0b}, + LINESECTION_ROUND1_TRAINER13(0x6021) }; -static const struct UnkStruct_860DD10 gUnknown_0860d578[] = +static const struct TourneyTreeLineSection sLineSectionTrainer13Round2[] = { - {.src = 0x6021, .y = 0x08, .x = 0x09}, - {.src = 0x6023, .y = 0x08, .x = 0x0a}, - {.src = 0x6047, .y = 0x09, .x = 0x0a}, - {.src = 0x6021, .y = 0x09, .x = 0x0b}, - {.src = 0x6027, .y = 0x08, .x = 0x0b}, - {.src = 0x6027, .y = 0x07, .x = 0x0b}, - {.src = 0x6043, .y = 0x07, .x = 0x0c}, + LINESECTION_ROUND1_TRAINER13(0x6021) + LINESECTION_ROUND2_MATCH2(0x6043) }; -static const struct UnkStruct_860DD10 gUnknown_0860d594[] = -{ - {.src = 0x6021, .y = 0x08, .x = 0x09}, - {.src = 0x6023, .y = 0x08, .x = 0x0a}, - {.src = 0x6047, .y = 0x09, .x = 0x0a}, - {.src = 0x6021, .y = 0x09, .x = 0x0b}, - {.src = 0x6027, .y = 0x08, .x = 0x0b}, - {.src = 0x6027, .y = 0x07, .x = 0x0b}, - {.src = 0x6023, .y = 0x07, .x = 0x0c}, - {.src = 0x6027, .y = 0x08, .x = 0x0c}, - {.src = 0x6027, .y = 0x09, .x = 0x0c}, - {.src = 0x6027, .y = 0x0a, .x = 0x0c}, - {.src = 0x603b, .y = 0x0b, .x = 0x0c}, +static const struct TourneyTreeLineSection sLineSectionTrainer13Semifinal[] = +{ + LINESECTION_ROUND1_TRAINER13(0x6021) + LINESECTION_ROUND2_MATCH2(0x6023) + LINESECTION_SEMIFINAL_TOP_LEFT }; -static const struct UnkStruct_860DD10 gUnknown_0860d5c0[] = -{ - {.src = 0x6021, .y = 0x08, .x = 0x09}, - {.src = 0x6023, .y = 0x08, .x = 0x0a}, - {.src = 0x6047, .y = 0x09, .x = 0x0a}, - {.src = 0x6021, .y = 0x09, .x = 0x0b}, - {.src = 0x6027, .y = 0x08, .x = 0x0b}, - {.src = 0x6027, .y = 0x07, .x = 0x0b}, - {.src = 0x6023, .y = 0x07, .x = 0x0c}, - {.src = 0x6027, .y = 0x08, .x = 0x0c}, - {.src = 0x6027, .y = 0x09, .x = 0x0c}, - {.src = 0x6027, .y = 0x0a, .x = 0x0c}, - {.src = 0x603b, .y = 0x0b, .x = 0x0c}, - {.src = 0x602c, .y = 0x0b, .x = 0x0d}, - {.src = 0x602d, .y = 0x0b, .x = 0x0e}, +static const struct TourneyTreeLineSection sLineSectionTrainer13Final[] = +{ + LINESECTION_ROUND1_TRAINER13(0x6021) + LINESECTION_ROUND2_MATCH2(0x6023) + LINESECTION_SEMIFINAL_TOP_LEFT + LINESECTION_FINAL_LEFT }; -static const struct UnkStruct_860DD10 gUnknown_0860d5f4[] = +static const struct TourneyTreeLineSection sLineSectionTrainer5Round1[] = { - {.src = 0x6021, .y = 0x0a, .x = 0x09}, - {.src = 0x6021, .y = 0x0a, .x = 0x0a}, - {.src = 0x6027, .y = 0x09, .x = 0x0a}, - {.src = 0x6021, .y = 0x09, .x = 0x0b}, + LINESECTION_ROUND1_TRAINER5(0x6021) }; -static const struct UnkStruct_860DD10 gUnknown_0860d604[] = +static const struct TourneyTreeLineSection sLineSectionTrainer5Round2[] = { - {.src = 0x6021, .y = 0x0a, .x = 0x09}, - {.src = 0x6021, .y = 0x0a, .x = 0x0a}, - {.src = 0x6027, .y = 0x09, .x = 0x0a}, - {.src = 0x6021, .y = 0x09, .x = 0x0b}, - {.src = 0x6027, .y = 0x08, .x = 0x0b}, - {.src = 0x6027, .y = 0x07, .x = 0x0b}, - {.src = 0x6043, .y = 0x07, .x = 0x0c}, + LINESECTION_ROUND1_TRAINER5(0x6021) + LINESECTION_ROUND2_MATCH2(0x6043) }; -static const struct UnkStruct_860DD10 gUnknown_0860d620[] = -{ - {.src = 0x6021, .y = 0x0a, .x = 0x09}, - {.src = 0x6021, .y = 0x0a, .x = 0x0a}, - {.src = 0x6027, .y = 0x09, .x = 0x0a}, - {.src = 0x6021, .y = 0x09, .x = 0x0b}, - {.src = 0x6027, .y = 0x08, .x = 0x0b}, - {.src = 0x6027, .y = 0x07, .x = 0x0b}, - {.src = 0x6023, .y = 0x07, .x = 0x0c}, - {.src = 0x6027, .y = 0x08, .x = 0x0c}, - {.src = 0x6027, .y = 0x09, .x = 0x0c}, - {.src = 0x6027, .y = 0x0a, .x = 0x0c}, - {.src = 0x603b, .y = 0x0b, .x = 0x0c}, +static const struct TourneyTreeLineSection sLineSectionTrainer5Semifinal[] = +{ + LINESECTION_ROUND1_TRAINER5(0x6021) + LINESECTION_ROUND2_MATCH2(0x6023) + LINESECTION_SEMIFINAL_TOP_LEFT }; -static const struct UnkStruct_860DD10 gUnknown_0860d64c[] = -{ - {.src = 0x6021, .y = 0x0a, .x = 0x09}, - {.src = 0x6021, .y = 0x0a, .x = 0x0a}, - {.src = 0x6027, .y = 0x09, .x = 0x0a}, - {.src = 0x6021, .y = 0x09, .x = 0x0b}, - {.src = 0x6027, .y = 0x08, .x = 0x0b}, - {.src = 0x6027, .y = 0x07, .x = 0x0b}, - {.src = 0x6023, .y = 0x07, .x = 0x0c}, - {.src = 0x6027, .y = 0x08, .x = 0x0c}, - {.src = 0x6027, .y = 0x09, .x = 0x0c}, - {.src = 0x6027, .y = 0x0a, .x = 0x0c}, - {.src = 0x603b, .y = 0x0b, .x = 0x0c}, - {.src = 0x602c, .y = 0x0b, .x = 0x0d}, - {.src = 0x602d, .y = 0x0b, .x = 0x0e}, +static const struct TourneyTreeLineSection sLineSectionTrainer5Final[] = +{ + LINESECTION_ROUND1_TRAINER5(0x6021) + LINESECTION_ROUND2_MATCH2(0x6023) + LINESECTION_SEMIFINAL_TOP_LEFT + LINESECTION_FINAL_LEFT }; -static const struct UnkStruct_860DD10 gUnknown_0860d680[] = +static const struct TourneyTreeLineSection sLineSectionTrainer8Round1[] = { - {.src = 0x6021, .y = 0x0c, .x = 0x09}, - {.src = 0x6023, .y = 0x0c, .x = 0x0a}, - {.src = 0x6047, .y = 0x0d, .x = 0x0a}, - {.src = 0x6043, .y = 0x0d, .x = 0x0b}, + LINESECTION_ROUND1_TRAINER8(0x6043) }; -static const struct UnkStruct_860DD10 gUnknown_0860d690[] = +static const struct TourneyTreeLineSection sLineSectionTrainer8Round2[] = { - {.src = 0x6021, .y = 0x0c, .x = 0x09}, - {.src = 0x6023, .y = 0x0c, .x = 0x0a}, - {.src = 0x6047, .y = 0x0d, .x = 0x0a}, - {.src = 0x6023, .y = 0x0d, .x = 0x0b}, - {.src = 0x6027, .y = 0x0e, .x = 0x0b}, - {.src = 0x6047, .y = 0x0f, .x = 0x0b}, - {.src = 0x6021, .y = 0x0f, .x = 0x0c}, + LINESECTION_ROUND1_TRAINER8(0x6023) + LINESECTION_ROUND2_MATCH3(0x6021) }; -static const struct UnkStruct_860DD10 gUnknown_0860d6ac[] = -{ - {.src = 0x6021, .y = 0x0c, .x = 0x09}, - {.src = 0x6023, .y = 0x0c, .x = 0x0a}, - {.src = 0x6047, .y = 0x0d, .x = 0x0a}, - {.src = 0x6023, .y = 0x0d, .x = 0x0b}, - {.src = 0x6027, .y = 0x0e, .x = 0x0b}, - {.src = 0x6047, .y = 0x0f, .x = 0x0b}, - {.src = 0x6021, .y = 0x0f, .x = 0x0c}, - {.src = 0x6033, .y = 0x0e, .x = 0x0c}, - {.src = 0x6032, .y = 0x0d, .x = 0x0c}, - {.src = 0x6031, .y = 0x0c, .x = 0x0c}, - {.src = 0x6030, .y = 0x0b, .x = 0x0c}, +static const struct TourneyTreeLineSection sLineSectionTrainer8Semifinal[] = +{ + LINESECTION_ROUND1_TRAINER8(0x6023) + LINESECTION_ROUND2_MATCH3(0x6021) + LINESECTION_SEMIFINAL_BOTTOM_LEFT }; -static const struct UnkStruct_860DD10 gUnknown_0860d6d8[] = -{ - {.src = 0x6021, .y = 0x0c, .x = 0x09}, - {.src = 0x6023, .y = 0x0c, .x = 0x0a}, - {.src = 0x6047, .y = 0x0d, .x = 0x0a}, - {.src = 0x6023, .y = 0x0d, .x = 0x0b}, - {.src = 0x6027, .y = 0x0e, .x = 0x0b}, - {.src = 0x6047, .y = 0x0f, .x = 0x0b}, - {.src = 0x6021, .y = 0x0f, .x = 0x0c}, - {.src = 0x6033, .y = 0x0e, .x = 0x0c}, - {.src = 0x6032, .y = 0x0d, .x = 0x0c}, - {.src = 0x6031, .y = 0x0c, .x = 0x0c}, - {.src = 0x6030, .y = 0x0b, .x = 0x0c}, - {.src = 0x602c, .y = 0x0b, .x = 0x0d}, - {.src = 0x602d, .y = 0x0b, .x = 0x0e}, +static const struct TourneyTreeLineSection sLineSectionTrainer8Final[] = +{ + LINESECTION_ROUND1_TRAINER8(0x6023) + LINESECTION_ROUND2_MATCH3(0x6021) + LINESECTION_SEMIFINAL_BOTTOM_LEFT + LINESECTION_FINAL_LEFT }; -static const struct UnkStruct_860DD10 gUnknown_0860d70c[] = +static const struct TourneyTreeLineSection sLineSectionTrainer16Round1[] = { - {.src = 0x6021, .y = 0x0e, .x = 0x09}, - {.src = 0x6021, .y = 0x0e, .x = 0x0a}, - {.src = 0x6027, .y = 0x0d, .x = 0x0a}, - {.src = 0x6043, .y = 0x0d, .x = 0x0b}, + LINESECTION_ROUND1_TRAINER16(0x6043) }; -static const struct UnkStruct_860DD10 gUnknown_0860d71c[] = +static const struct TourneyTreeLineSection sLineSectionTrainer16Round2[] = { - {.src = 0x6021, .y = 0x0e, .x = 0x09}, - {.src = 0x6021, .y = 0x0e, .x = 0x0a}, - {.src = 0x6027, .y = 0x0d, .x = 0x0a}, - {.src = 0x6023, .y = 0x0d, .x = 0x0b}, - {.src = 0x6027, .y = 0x0e, .x = 0x0b}, - {.src = 0x6047, .y = 0x0f, .x = 0x0b}, - {.src = 0x6021, .y = 0x0f, .x = 0x0c}, + LINESECTION_ROUND1_TRAINER16(0x6023) + LINESECTION_ROUND2_MATCH3(0x6021) }; -static const struct UnkStruct_860DD10 gUnknown_0860d738[] = -{ - {.src = 0x6021, .y = 0x0e, .x = 0x09}, - {.src = 0x6021, .y = 0x0e, .x = 0x0a}, - {.src = 0x6027, .y = 0x0d, .x = 0x0a}, - {.src = 0x6023, .y = 0x0d, .x = 0x0b}, - {.src = 0x6027, .y = 0x0e, .x = 0x0b}, - {.src = 0x6047, .y = 0x0f, .x = 0x0b}, - {.src = 0x6021, .y = 0x0f, .x = 0x0c}, - {.src = 0x6033, .y = 0x0e, .x = 0x0c}, - {.src = 0x6032, .y = 0x0d, .x = 0x0c}, - {.src = 0x6031, .y = 0x0c, .x = 0x0c}, - {.src = 0x6030, .y = 0x0b, .x = 0x0c}, +static const struct TourneyTreeLineSection sLineSectionTrainer16Semifinal[] = +{ + LINESECTION_ROUND1_TRAINER16(0x6023) + LINESECTION_ROUND2_MATCH3(0x6021) + LINESECTION_SEMIFINAL_BOTTOM_LEFT }; -static const struct UnkStruct_860DD10 gUnknown_0860d764[] = -{ - {.src = 0x6021, .y = 0x0e, .x = 0x09}, - {.src = 0x6021, .y = 0x0e, .x = 0x0a}, - {.src = 0x6027, .y = 0x0d, .x = 0x0a}, - {.src = 0x6023, .y = 0x0d, .x = 0x0b}, - {.src = 0x6027, .y = 0x0e, .x = 0x0b}, - {.src = 0x6047, .y = 0x0f, .x = 0x0b}, - {.src = 0x6021, .y = 0x0f, .x = 0x0c}, - {.src = 0x6033, .y = 0x0e, .x = 0x0c}, - {.src = 0x6032, .y = 0x0d, .x = 0x0c}, - {.src = 0x6031, .y = 0x0c, .x = 0x0c}, - {.src = 0x6030, .y = 0x0b, .x = 0x0c}, - {.src = 0x602c, .y = 0x0b, .x = 0x0d}, - {.src = 0x602d, .y = 0x0b, .x = 0x0e}, +static const struct TourneyTreeLineSection sLineSectionTrainer16Final[] = +{ + LINESECTION_ROUND1_TRAINER16(0x6023) + LINESECTION_ROUND2_MATCH3(0x6021) + LINESECTION_SEMIFINAL_BOTTOM_LEFT + LINESECTION_FINAL_LEFT }; -static const struct UnkStruct_860DD10 gUnknown_0860d798[] = +static const struct TourneyTreeLineSection sLineSectionTrainer12Round1[] = { - {.src = 0x6021, .y = 0x10, .x = 0x09}, - {.src = 0x6023, .y = 0x10, .x = 0x0a}, - {.src = 0x6047, .y = 0x11, .x = 0x0a}, - {.src = 0x6021, .y = 0x11, .x = 0x0b}, + LINESECTION_ROUND1_TRAINER12(0x6021) }; -static const struct UnkStruct_860DD10 gUnknown_0860d7a8[] = +static const struct TourneyTreeLineSection sLineSectionTrainer12Round2[] = { - {.src = 0x6021, .y = 0x10, .x = 0x09}, - {.src = 0x6023, .y = 0x10, .x = 0x0a}, - {.src = 0x6047, .y = 0x11, .x = 0x0a}, - {.src = 0x6021, .y = 0x11, .x = 0x0b}, - {.src = 0x6027, .y = 0x10, .x = 0x0b}, - {.src = 0x6027, .y = 0x0f, .x = 0x0b}, - {.src = 0x6021, .y = 0x0f, .x = 0x0c}, + LINESECTION_ROUND1_TRAINER12(0x6021) + LINESECTION_ROUND2_MATCH4(0x6021) }; -static const struct UnkStruct_860DD10 gUnknown_0860d7c4[] = -{ - {.src = 0x6021, .y = 0x10, .x = 0x09}, - {.src = 0x6023, .y = 0x10, .x = 0x0a}, - {.src = 0x6047, .y = 0x11, .x = 0x0a}, - {.src = 0x6021, .y = 0x11, .x = 0x0b}, - {.src = 0x6027, .y = 0x10, .x = 0x0b}, - {.src = 0x6027, .y = 0x0f, .x = 0x0b}, - {.src = 0x6021, .y = 0x0f, .x = 0x0c}, - {.src = 0x6033, .y = 0x0e, .x = 0x0c}, - {.src = 0x6032, .y = 0x0d, .x = 0x0c}, - {.src = 0x6031, .y = 0x0c, .x = 0x0c}, - {.src = 0x6030, .y = 0x0b, .x = 0x0c}, +static const struct TourneyTreeLineSection sLineSectionTrainer12Semifinal[] = +{ + LINESECTION_ROUND1_TRAINER12(0x6021) + LINESECTION_ROUND2_MATCH4(0x6021) + LINESECTION_SEMIFINAL_BOTTOM_LEFT }; -static const struct UnkStruct_860DD10 gUnknown_0860d7f0[] = -{ - {.src = 0x6021, .y = 0x10, .x = 0x09}, - {.src = 0x6023, .y = 0x10, .x = 0x0a}, - {.src = 0x6047, .y = 0x11, .x = 0x0a}, - {.src = 0x6021, .y = 0x11, .x = 0x0b}, - {.src = 0x6027, .y = 0x10, .x = 0x0b}, - {.src = 0x6027, .y = 0x0f, .x = 0x0b}, - {.src = 0x6021, .y = 0x0f, .x = 0x0c}, - {.src = 0x6033, .y = 0x0e, .x = 0x0c}, - {.src = 0x6032, .y = 0x0d, .x = 0x0c}, - {.src = 0x6031, .y = 0x0c, .x = 0x0c}, - {.src = 0x6030, .y = 0x0b, .x = 0x0c}, - {.src = 0x602c, .y = 0x0b, .x = 0x0d}, - {.src = 0x602d, .y = 0x0b, .x = 0x0e}, +static const struct TourneyTreeLineSection sLineSectionTrainer12Final[] = +{ + LINESECTION_ROUND1_TRAINER12(0x6021) + LINESECTION_ROUND2_MATCH4(0x6021) + LINESECTION_SEMIFINAL_BOTTOM_LEFT + LINESECTION_FINAL_LEFT }; -static const struct UnkStruct_860DD10 gUnknown_0860d824[] = +static const struct TourneyTreeLineSection sLineSectionTrainer4Round1[] = { - {.src = 0x602b, .y = 0x12, .x = 0x09}, - {.src = 0x602b, .y = 0x12, .x = 0x0a}, - {.src = 0x6027, .y = 0x11, .x = 0x0a}, - {.src = 0x6021, .y = 0x11, .x = 0x0b}, + LINESECTION_ROUND1_TRAINER4(0x6021) }; -static const struct UnkStruct_860DD10 gUnknown_0860d834[] = +static const struct TourneyTreeLineSection sLineSectionTrainer4Round2[] = { - {.src = 0x602b, .y = 0x12, .x = 0x09}, - {.src = 0x602b, .y = 0x12, .x = 0x0a}, - {.src = 0x6027, .y = 0x11, .x = 0x0a}, - {.src = 0x6021, .y = 0x11, .x = 0x0b}, - {.src = 0x6027, .y = 0x10, .x = 0x0b}, - {.src = 0x6027, .y = 0x0f, .x = 0x0b}, - {.src = 0x6021, .y = 0x0f, .x = 0x0c}, + LINESECTION_ROUND1_TRAINER4(0x6021) + LINESECTION_ROUND2_MATCH4(0x6021) }; -static const struct UnkStruct_860DD10 gUnknown_0860d850[] = -{ - {.src = 0x602b, .y = 0x12, .x = 0x09}, - {.src = 0x602b, .y = 0x12, .x = 0x0a}, - {.src = 0x6027, .y = 0x11, .x = 0x0a}, - {.src = 0x6021, .y = 0x11, .x = 0x0b}, - {.src = 0x6027, .y = 0x10, .x = 0x0b}, - {.src = 0x6027, .y = 0x0f, .x = 0x0b}, - {.src = 0x6021, .y = 0x0f, .x = 0x0c}, - {.src = 0x6033, .y = 0x0e, .x = 0x0c}, - {.src = 0x6032, .y = 0x0d, .x = 0x0c}, - {.src = 0x6031, .y = 0x0c, .x = 0x0c}, - {.src = 0x6030, .y = 0x0b, .x = 0x0c}, +static const struct TourneyTreeLineSection sLineSectionTrainer4Semifinal[] = +{ + LINESECTION_ROUND1_TRAINER4(0x6021) + LINESECTION_ROUND2_MATCH4(0x6021) + LINESECTION_SEMIFINAL_BOTTOM_LEFT }; -static const struct UnkStruct_860DD10 gUnknown_0860d87c[] = -{ - {.src = 0x602b, .y = 0x12, .x = 0x09}, - {.src = 0x602b, .y = 0x12, .x = 0x0a}, - {.src = 0x6027, .y = 0x11, .x = 0x0a}, - {.src = 0x6021, .y = 0x11, .x = 0x0b}, - {.src = 0x6027, .y = 0x10, .x = 0x0b}, - {.src = 0x6027, .y = 0x0f, .x = 0x0b}, - {.src = 0x6021, .y = 0x0f, .x = 0x0c}, - {.src = 0x6033, .y = 0x0e, .x = 0x0c}, - {.src = 0x6032, .y = 0x0d, .x = 0x0c}, - {.src = 0x6031, .y = 0x0c, .x = 0x0c}, - {.src = 0x6030, .y = 0x0b, .x = 0x0c}, - {.src = 0x602c, .y = 0x0b, .x = 0x0d}, - {.src = 0x602d, .y = 0x0b, .x = 0x0e}, +static const struct TourneyTreeLineSection sLineSectionTrainer4Final[] = +{ + LINESECTION_ROUND1_TRAINER4(0x6021) + LINESECTION_ROUND2_MATCH4(0x6021) + LINESECTION_SEMIFINAL_BOTTOM_LEFT + LINESECTION_FINAL_LEFT }; -static const struct UnkStruct_860DD10 gUnknown_0860d8b0[] = +static const struct TourneyTreeLineSection sLineSectionTrainer3Round1[] = { - {.src = 0x6021, .y = 0x04, .x = 0x14}, - {.src = 0x6025, .y = 0x04, .x = 0x13}, - {.src = 0x6049, .y = 0x05, .x = 0x13}, - {.src = 0x6045, .y = 0x05, .x = 0x12}, + LINESECTION_ROUND1_TRAINER3(0x6045) }; -static const struct UnkStruct_860DD10 gUnknown_0860d8c0[] = +static const struct TourneyTreeLineSection sLineSectionTrainer3Round2[] = { - {.src = 0x6021, .y = 0x04, .x = 0x14}, - {.src = 0x6025, .y = 0x04, .x = 0x13}, - {.src = 0x6049, .y = 0x05, .x = 0x13}, - {.src = 0x6025, .y = 0x05, .x = 0x12}, - {.src = 0x6029, .y = 0x06, .x = 0x12}, - {.src = 0x6049, .y = 0x07, .x = 0x12}, - {.src = 0x6045, .y = 0x07, .x = 0x11}, + LINESECTION_ROUND1_TRAINER3(0x6025) + LINESECTION_ROUND2_MATCH5(0x6045) }; -static const struct UnkStruct_860DD10 gUnknown_0860d8dc[] = -{ - {.src = 0x6021, .y = 0x04, .x = 0x14}, - {.src = 0x6025, .y = 0x04, .x = 0x13}, - {.src = 0x6049, .y = 0x05, .x = 0x13}, - {.src = 0x6025, .y = 0x05, .x = 0x12}, - {.src = 0x6029, .y = 0x06, .x = 0x12}, - {.src = 0x6049, .y = 0x07, .x = 0x12}, - {.src = 0x6025, .y = 0x07, .x = 0x11}, - {.src = 0x6029, .y = 0x08, .x = 0x11}, - {.src = 0x6029, .y = 0x09, .x = 0x11}, - {.src = 0x6029, .y = 0x0a, .x = 0x11}, - {.src = 0x603c, .y = 0x0b, .x = 0x11}, +static const struct TourneyTreeLineSection sLineSectionTrainer3Semifinal[] = +{ + LINESECTION_ROUND1_TRAINER3(0x6025) + LINESECTION_ROUND2_MATCH5(0x6025) + LINESECTION_SEMIFINAL_TOP_RIGHT }; -static const struct UnkStruct_860DD10 gUnknown_0860d908[] = -{ - {.src = 0x6021, .y = 0x04, .x = 0x14}, - {.src = 0x6025, .y = 0x04, .x = 0x13}, - {.src = 0x6049, .y = 0x05, .x = 0x13}, - {.src = 0x6025, .y = 0x05, .x = 0x12}, - {.src = 0x6029, .y = 0x06, .x = 0x12}, - {.src = 0x6049, .y = 0x07, .x = 0x12}, - {.src = 0x6025, .y = 0x07, .x = 0x11}, - {.src = 0x6029, .y = 0x08, .x = 0x11}, - {.src = 0x6029, .y = 0x09, .x = 0x11}, - {.src = 0x6029, .y = 0x0a, .x = 0x11}, - {.src = 0x603c, .y = 0x0b, .x = 0x11}, - {.src = 0x602f, .y = 0x0b, .x = 0x10}, - {.src = 0x602e, .y = 0x0b, .x = 0x0f}, +static const struct TourneyTreeLineSection sLineSectionTrainer3Final[] = +{ + LINESECTION_ROUND1_TRAINER3(0x6025) + LINESECTION_ROUND2_MATCH5(0x6025) + LINESECTION_SEMIFINAL_TOP_RIGHT + LINESECTION_FINAL_RIGHT }; -static const struct UnkStruct_860DD10 gUnknown_0860d93c[] = +static const struct TourneyTreeLineSection sLineSectionTrainer11Round1[] = { - {.src = 0x6021, .y = 0x06, .x = 0x14}, - {.src = 0x6021, .y = 0x06, .x = 0x13}, - {.src = 0x6029, .y = 0x05, .x = 0x13}, - {.src = 0x6045, .y = 0x05, .x = 0x12}, + LINESECTION_ROUND1_TRAINER11(0x6045) }; -static const struct UnkStruct_860DD10 gUnknown_0860d94c[] = +static const struct TourneyTreeLineSection sLineSectionTrainer11Round2[] = { - {.src = 0x6021, .y = 0x06, .x = 0x14}, - {.src = 0x6021, .y = 0x06, .x = 0x13}, - {.src = 0x6029, .y = 0x05, .x = 0x13}, - {.src = 0x6025, .y = 0x05, .x = 0x12}, - {.src = 0x6029, .y = 0x06, .x = 0x12}, - {.src = 0x6049, .y = 0x07, .x = 0x12}, - {.src = 0x6045, .y = 0x07, .x = 0x11}, + LINESECTION_ROUND1_TRAINER11(0x6025) + LINESECTION_ROUND2_MATCH5(0x6045) }; -static const struct UnkStruct_860DD10 gUnknown_0860d968[] = -{ - {.src = 0x6021, .y = 0x06, .x = 0x14}, - {.src = 0x6021, .y = 0x06, .x = 0x13}, - {.src = 0x6029, .y = 0x05, .x = 0x13}, - {.src = 0x6025, .y = 0x05, .x = 0x12}, - {.src = 0x6029, .y = 0x06, .x = 0x12}, - {.src = 0x6049, .y = 0x07, .x = 0x12}, - {.src = 0x6025, .y = 0x07, .x = 0x11}, - {.src = 0x6029, .y = 0x08, .x = 0x11}, - {.src = 0x6029, .y = 0x09, .x = 0x11}, - {.src = 0x6029, .y = 0x0a, .x = 0x11}, - {.src = 0x603c, .y = 0x0b, .x = 0x11}, +static const struct TourneyTreeLineSection sLineSectionTrainer11Semifinal[] = +{ + LINESECTION_ROUND1_TRAINER11(0x6025) + LINESECTION_ROUND2_MATCH5(0x6025) + LINESECTION_SEMIFINAL_TOP_RIGHT }; -static const struct UnkStruct_860DD10 gUnknown_0860d994[] = -{ - {.src = 0x6021, .y = 0x06, .x = 0x14}, - {.src = 0x6021, .y = 0x06, .x = 0x13}, - {.src = 0x6029, .y = 0x05, .x = 0x13}, - {.src = 0x6025, .y = 0x05, .x = 0x12}, - {.src = 0x6029, .y = 0x06, .x = 0x12}, - {.src = 0x6049, .y = 0x07, .x = 0x12}, - {.src = 0x6025, .y = 0x07, .x = 0x11}, - {.src = 0x6029, .y = 0x08, .x = 0x11}, - {.src = 0x6029, .y = 0x09, .x = 0x11}, - {.src = 0x6029, .y = 0x0a, .x = 0x11}, - {.src = 0x603c, .y = 0x0b, .x = 0x11}, - {.src = 0x602f, .y = 0x0b, .x = 0x10}, - {.src = 0x602e, .y = 0x0b, .x = 0x0f}, +static const struct TourneyTreeLineSection sLineSectionTrainer11Final[] = +{ + LINESECTION_ROUND1_TRAINER11(0x6025) + LINESECTION_ROUND2_MATCH5(0x6025) + LINESECTION_SEMIFINAL_TOP_RIGHT + LINESECTION_FINAL_RIGHT }; -static const struct UnkStruct_860DD10 gUnknown_0860d9c8[] = +static const struct TourneyTreeLineSection sLineSectionTrainer15Round1[] = { - {.src = 0x6021, .y = 0x08, .x = 0x14}, - {.src = 0x6025, .y = 0x08, .x = 0x13}, - {.src = 0x6049, .y = 0x09, .x = 0x13}, - {.src = 0x6021, .y = 0x09, .x = 0x12}, + LINESECTION_ROUND1_TRAINER15(0x6021) }; -static const struct UnkStruct_860DD10 gUnknown_0860d9d8[] = +static const struct TourneyTreeLineSection sLineSectionTrainer15Round2[] = { - {.src = 0x6021, .y = 0x08, .x = 0x14}, - {.src = 0x6025, .y = 0x08, .x = 0x13}, - {.src = 0x6049, .y = 0x09, .x = 0x13}, - {.src = 0x6021, .y = 0x09, .x = 0x12}, - {.src = 0x6029, .y = 0x08, .x = 0x12}, - {.src = 0x6029, .y = 0x07, .x = 0x12}, - {.src = 0x6045, .y = 0x07, .x = 0x11}, + LINESECTION_ROUND1_TRAINER15(0x6021) + LINESECTION_ROUND2_MATCH6(0x6045) }; -static const struct UnkStruct_860DD10 gUnknown_0860d9f4[] = -{ - {.src = 0x6021, .y = 0x08, .x = 0x14}, - {.src = 0x6025, .y = 0x08, .x = 0x13}, - {.src = 0x6049, .y = 0x09, .x = 0x13}, - {.src = 0x6021, .y = 0x09, .x = 0x12}, - {.src = 0x6029, .y = 0x08, .x = 0x12}, - {.src = 0x6029, .y = 0x07, .x = 0x12}, - {.src = 0x6025, .y = 0x07, .x = 0x11}, - {.src = 0x6029, .y = 0x08, .x = 0x11}, - {.src = 0x6029, .y = 0x09, .x = 0x11}, - {.src = 0x6029, .y = 0x0a, .x = 0x11}, - {.src = 0x603c, .y = 0x0b, .x = 0x11}, +static const struct TourneyTreeLineSection sLineSectionTrainer15Semifinal[] = +{ + LINESECTION_ROUND1_TRAINER15(0x6021) + LINESECTION_ROUND2_MATCH6(0x6025) + LINESECTION_SEMIFINAL_TOP_RIGHT }; -static const struct UnkStruct_860DD10 gUnknown_0860da20[] = -{ - {.src = 0x6021, .y = 0x08, .x = 0x14}, - {.src = 0x6025, .y = 0x08, .x = 0x13}, - {.src = 0x6049, .y = 0x09, .x = 0x13}, - {.src = 0x6021, .y = 0x09, .x = 0x12}, - {.src = 0x6029, .y = 0x08, .x = 0x12}, - {.src = 0x6029, .y = 0x07, .x = 0x12}, - {.src = 0x6025, .y = 0x07, .x = 0x11}, - {.src = 0x6029, .y = 0x08, .x = 0x11}, - {.src = 0x6029, .y = 0x09, .x = 0x11}, - {.src = 0x6029, .y = 0x0a, .x = 0x11}, - {.src = 0x603c, .y = 0x0b, .x = 0x11}, - {.src = 0x602f, .y = 0x0b, .x = 0x10}, - {.src = 0x602e, .y = 0x0b, .x = 0x0f}, +static const struct TourneyTreeLineSection sLineSectionTrainer15Final[] = +{ + LINESECTION_ROUND1_TRAINER15(0x6021) + LINESECTION_ROUND2_MATCH6(0x6025) + LINESECTION_SEMIFINAL_TOP_RIGHT + LINESECTION_FINAL_RIGHT }; -static const struct UnkStruct_860DD10 gUnknown_0860da54[] = +static const struct TourneyTreeLineSection sLineSectionTrainer7Round1[] = { - {.src = 0x6021, .y = 0x0a, .x = 0x14}, - {.src = 0x6021, .y = 0x0a, .x = 0x13}, - {.src = 0x6029, .y = 0x09, .x = 0x13}, - {.src = 0x6021, .y = 0x09, .x = 0x12}, + LINESECTION_ROUND1_TRAINER7(0x6021) }; -static const struct UnkStruct_860DD10 gUnknown_0860da64[] = +static const struct TourneyTreeLineSection sLineSectionTrainer7Round2[] = { - {.src = 0x6021, .y = 0x0a, .x = 0x14}, - {.src = 0x6021, .y = 0x0a, .x = 0x13}, - {.src = 0x6029, .y = 0x09, .x = 0x13}, - {.src = 0x6021, .y = 0x09, .x = 0x12}, - {.src = 0x6029, .y = 0x08, .x = 0x12}, - {.src = 0x6029, .y = 0x07, .x = 0x12}, - {.src = 0x6045, .y = 0x07, .x = 0x11}, + LINESECTION_ROUND1_TRAINER7(0x6021) + LINESECTION_ROUND2_MATCH6(0x6045) }; -static const struct UnkStruct_860DD10 gUnknown_0860da80[] = -{ - {.src = 0x6021, .y = 0x0a, .x = 0x14}, - {.src = 0x6021, .y = 0x0a, .x = 0x13}, - {.src = 0x6029, .y = 0x09, .x = 0x13}, - {.src = 0x6021, .y = 0x09, .x = 0x12}, - {.src = 0x6029, .y = 0x08, .x = 0x12}, - {.src = 0x6029, .y = 0x07, .x = 0x12}, - {.src = 0x6025, .y = 0x07, .x = 0x11}, - {.src = 0x6029, .y = 0x08, .x = 0x11}, - {.src = 0x6029, .y = 0x09, .x = 0x11}, - {.src = 0x6029, .y = 0x0a, .x = 0x11}, - {.src = 0x603c, .y = 0x0b, .x = 0x11}, +static const struct TourneyTreeLineSection sLineSectionTrainer7Semifinal[] = +{ + LINESECTION_ROUND1_TRAINER7(0x6021) + LINESECTION_ROUND2_MATCH6(0x6025) + LINESECTION_SEMIFINAL_TOP_RIGHT }; -static const struct UnkStruct_860DD10 gUnknown_0860daac[] = -{ - {.src = 0x6021, .y = 0x0a, .x = 0x14}, - {.src = 0x6021, .y = 0x0a, .x = 0x13}, - {.src = 0x6029, .y = 0x09, .x = 0x13}, - {.src = 0x6021, .y = 0x09, .x = 0x12}, - {.src = 0x6029, .y = 0x08, .x = 0x12}, - {.src = 0x6029, .y = 0x07, .x = 0x12}, - {.src = 0x6025, .y = 0x07, .x = 0x11}, - {.src = 0x6029, .y = 0x08, .x = 0x11}, - {.src = 0x6029, .y = 0x09, .x = 0x11}, - {.src = 0x6029, .y = 0x0a, .x = 0x11}, - {.src = 0x603c, .y = 0x0b, .x = 0x11}, - {.src = 0x602f, .y = 0x0b, .x = 0x10}, - {.src = 0x602e, .y = 0x0b, .x = 0x0f}, +static const struct TourneyTreeLineSection sLineSectionTrainer7Final[] = +{ + LINESECTION_ROUND1_TRAINER7(0x6021) + LINESECTION_ROUND2_MATCH6(0x6025) + LINESECTION_SEMIFINAL_TOP_RIGHT + LINESECTION_FINAL_RIGHT }; -static const struct UnkStruct_860DD10 gUnknown_0860dae0[] = +static const struct TourneyTreeLineSection sLineSectionTrainer6Round1[] = { - {.src = 0x6021, .y = 0x0c, .x = 0x14}, - {.src = 0x6025, .y = 0x0c, .x = 0x13}, - {.src = 0x6049, .y = 0x0d, .x = 0x13}, - {.src = 0x6045, .y = 0x0d, .x = 0x12}, + LINESECTION_ROUND1_TRAINER6(0x6045) }; -static const struct UnkStruct_860DD10 gUnknown_0860daf0[] = +static const struct TourneyTreeLineSection sLineSectionTrainer6Round2[] = { - {.src = 0x6021, .y = 0x0c, .x = 0x14}, - {.src = 0x6025, .y = 0x0c, .x = 0x13}, - {.src = 0x6049, .y = 0x0d, .x = 0x13}, - {.src = 0x6025, .y = 0x0d, .x = 0x12}, - {.src = 0x6029, .y = 0x0e, .x = 0x12}, - {.src = 0x6049, .y = 0x0f, .x = 0x12}, - {.src = 0x6021, .y = 0x0f, .x = 0x11}, + LINESECTION_ROUND1_TRAINER6(0x6025) + LINESECTION_ROUND2_MATCH7(0x6021) }; -static const struct UnkStruct_860DD10 gUnknown_0860db0c[] = -{ - {.src = 0x6021, .y = 0x0c, .x = 0x14}, - {.src = 0x6025, .y = 0x0c, .x = 0x13}, - {.src = 0x6049, .y = 0x0d, .x = 0x13}, - {.src = 0x6025, .y = 0x0d, .x = 0x12}, - {.src = 0x6029, .y = 0x0e, .x = 0x12}, - {.src = 0x6049, .y = 0x0f, .x = 0x12}, - {.src = 0x6021, .y = 0x0f, .x = 0x11}, - {.src = 0x6038, .y = 0x0e, .x = 0x11}, - {.src = 0x6037, .y = 0x0d, .x = 0x11}, - {.src = 0x6036, .y = 0x0c, .x = 0x11}, - {.src = 0x6035, .y = 0x0b, .x = 0x11}, +static const struct TourneyTreeLineSection sLineSectionTrainer6Semifinal[] = +{ + LINESECTION_ROUND1_TRAINER6(0x6025) + LINESECTION_ROUND2_MATCH7(0x6021) + LINESECTION_SEMIFINAL_BOTTOM_RIGHT }; -static const struct UnkStruct_860DD10 gUnknown_0860db38[] = -{ - {.src = 0x6021, .y = 0x0c, .x = 0x14}, - {.src = 0x6025, .y = 0x0c, .x = 0x13}, - {.src = 0x6049, .y = 0x0d, .x = 0x13}, - {.src = 0x6025, .y = 0x0d, .x = 0x12}, - {.src = 0x6029, .y = 0x0e, .x = 0x12}, - {.src = 0x6049, .y = 0x0f, .x = 0x12}, - {.src = 0x6021, .y = 0x0f, .x = 0x11}, - {.src = 0x6038, .y = 0x0e, .x = 0x11}, - {.src = 0x6037, .y = 0x0d, .x = 0x11}, - {.src = 0x6036, .y = 0x0c, .x = 0x11}, - {.src = 0x6035, .y = 0x0b, .x = 0x11}, - {.src = 0x602f, .y = 0x0b, .x = 0x10}, - {.src = 0x602e, .y = 0x0b, .x = 0x0f}, +static const struct TourneyTreeLineSection sLineSectionTrainer6Final[] = +{ + LINESECTION_ROUND1_TRAINER6(0x6025) + LINESECTION_ROUND2_MATCH7(0x6021) + LINESECTION_SEMIFINAL_BOTTOM_RIGHT + LINESECTION_FINAL_RIGHT }; -static const struct UnkStruct_860DD10 gUnknown_0860db6c[] = +static const struct TourneyTreeLineSection sLineSectionTrainer14Round1[] = { - {.src = 0x6021, .y = 0x0e, .x = 0x14}, - {.src = 0x6021, .y = 0x0e, .x = 0x13}, - {.src = 0x6029, .y = 0x0d, .x = 0x13}, - {.src = 0x6045, .y = 0x0d, .x = 0x12}, + LINESECTION_ROUND1_TRAINER14(0x6045) }; -static const struct UnkStruct_860DD10 gUnknown_0860db7c[] = +static const struct TourneyTreeLineSection sLineSectionTrainer14Round2[] = { - {.src = 0x6021, .y = 0x0e, .x = 0x14}, - {.src = 0x6021, .y = 0x0e, .x = 0x13}, - {.src = 0x6029, .y = 0x0d, .x = 0x13}, - {.src = 0x6025, .y = 0x0d, .x = 0x12}, - {.src = 0x6029, .y = 0x0e, .x = 0x12}, - {.src = 0x6049, .y = 0x0f, .x = 0x12}, - {.src = 0x6021, .y = 0x0f, .x = 0x11}, + LINESECTION_ROUND1_TRAINER14(0x6025) + LINESECTION_ROUND2_MATCH7(0x6021) }; -static const struct UnkStruct_860DD10 gUnknown_0860db98[] = -{ - {.src = 0x6021, .y = 0x0e, .x = 0x14}, - {.src = 0x6021, .y = 0x0e, .x = 0x13}, - {.src = 0x6029, .y = 0x0d, .x = 0x13}, - {.src = 0x6025, .y = 0x0d, .x = 0x12}, - {.src = 0x6029, .y = 0x0e, .x = 0x12}, - {.src = 0x6049, .y = 0x0f, .x = 0x12}, - {.src = 0x6021, .y = 0x0f, .x = 0x11}, - {.src = 0x6038, .y = 0x0e, .x = 0x11}, - {.src = 0x6037, .y = 0x0d, .x = 0x11}, - {.src = 0x6036, .y = 0x0c, .x = 0x11}, - {.src = 0x6035, .y = 0x0b, .x = 0x11}, +static const struct TourneyTreeLineSection sLineSectionTrainer14Semifinal[] = +{ + LINESECTION_ROUND1_TRAINER14(0x6025) + LINESECTION_ROUND2_MATCH7(0x6021) + LINESECTION_SEMIFINAL_BOTTOM_RIGHT }; -static const struct UnkStruct_860DD10 gUnknown_0860dbc4[] = -{ - {.src = 0x6021, .y = 0x0e, .x = 0x14}, - {.src = 0x6021, .y = 0x0e, .x = 0x13}, - {.src = 0x6029, .y = 0x0d, .x = 0x13}, - {.src = 0x6025, .y = 0x0d, .x = 0x12}, - {.src = 0x6029, .y = 0x0e, .x = 0x12}, - {.src = 0x6049, .y = 0x0f, .x = 0x12}, - {.src = 0x6021, .y = 0x0f, .x = 0x11}, - {.src = 0x6038, .y = 0x0e, .x = 0x11}, - {.src = 0x6037, .y = 0x0d, .x = 0x11}, - {.src = 0x6036, .y = 0x0c, .x = 0x11}, - {.src = 0x6035, .y = 0x0b, .x = 0x11}, - {.src = 0x602f, .y = 0x0b, .x = 0x10}, - {.src = 0x602e, .y = 0x0b, .x = 0x0f}, +static const struct TourneyTreeLineSection sLineSectionTrainer14Final[] = +{ + LINESECTION_ROUND1_TRAINER14(0x6025) + LINESECTION_ROUND2_MATCH7(0x6021) + LINESECTION_SEMIFINAL_BOTTOM_RIGHT + LINESECTION_FINAL_RIGHT }; -static const struct UnkStruct_860DD10 gUnknown_0860dbf8[] = +static const struct TourneyTreeLineSection sLineSectionTrainer10Round1[] = { - {.src = 0x6021, .y = 0x10, .x = 0x14}, - {.src = 0x6025, .y = 0x10, .x = 0x13}, - {.src = 0x6049, .y = 0x11, .x = 0x13}, - {.src = 0x6021, .y = 0x11, .x = 0x12}, + LINESECTION_ROUND1_TRAINER10(0x6021) }; -static const struct UnkStruct_860DD10 gUnknown_0860dc08[] = +static const struct TourneyTreeLineSection sLineSectionTrainer10Round2[] = { - {.src = 0x6021, .y = 0x10, .x = 0x14}, - {.src = 0x6025, .y = 0x10, .x = 0x13}, - {.src = 0x6049, .y = 0x11, .x = 0x13}, - {.src = 0x6021, .y = 0x11, .x = 0x12}, - {.src = 0x6029, .y = 0x10, .x = 0x12}, - {.src = 0x6029, .y = 0x0f, .x = 0x12}, - {.src = 0x6021, .y = 0x0f, .x = 0x11}, + LINESECTION_ROUND1_TRAINER10(0x6021) + LINESECTION_ROUND2_MATCH8(0x6021) }; -static const struct UnkStruct_860DD10 gUnknown_0860dc24[] = -{ - {.src = 0x6021, .y = 0x10, .x = 0x14}, - {.src = 0x6025, .y = 0x10, .x = 0x13}, - {.src = 0x6049, .y = 0x11, .x = 0x13}, - {.src = 0x6021, .y = 0x11, .x = 0x12}, - {.src = 0x6029, .y = 0x10, .x = 0x12}, - {.src = 0x6029, .y = 0x0f, .x = 0x12}, - {.src = 0x6021, .y = 0x0f, .x = 0x11}, - {.src = 0x6038, .y = 0x0e, .x = 0x11}, - {.src = 0x6037, .y = 0x0d, .x = 0x11}, - {.src = 0x6036, .y = 0x0c, .x = 0x11}, - {.src = 0x6035, .y = 0x0b, .x = 0x11}, +static const struct TourneyTreeLineSection sLineSectionTrainer10Semifinal[] = +{ + LINESECTION_ROUND1_TRAINER10(0x6021) + LINESECTION_ROUND2_MATCH8(0x6021) + LINESECTION_SEMIFINAL_BOTTOM_RIGHT }; -static const struct UnkStruct_860DD10 gUnknown_0860dc50[] = -{ - {.src = 0x6021, .y = 0x10, .x = 0x14}, - {.src = 0x6025, .y = 0x10, .x = 0x13}, - {.src = 0x6049, .y = 0x11, .x = 0x13}, - {.src = 0x6021, .y = 0x11, .x = 0x12}, - {.src = 0x6029, .y = 0x10, .x = 0x12}, - {.src = 0x6029, .y = 0x0f, .x = 0x12}, - {.src = 0x6021, .y = 0x0f, .x = 0x11}, - {.src = 0x6038, .y = 0x0e, .x = 0x11}, - {.src = 0x6037, .y = 0x0d, .x = 0x11}, - {.src = 0x6036, .y = 0x0c, .x = 0x11}, - {.src = 0x6035, .y = 0x0b, .x = 0x11}, - {.src = 0x602f, .y = 0x0b, .x = 0x10}, - {.src = 0x602e, .y = 0x0b, .x = 0x0f}, +static const struct TourneyTreeLineSection sLineSectionTrainer10Final[] = +{ + LINESECTION_ROUND1_TRAINER10(0x6021) + LINESECTION_ROUND2_MATCH8(0x6021) + LINESECTION_SEMIFINAL_BOTTOM_RIGHT + LINESECTION_FINAL_RIGHT }; -static const struct UnkStruct_860DD10 gUnknown_0860dc84[] = +static const struct TourneyTreeLineSection sLineSectionTrainer2Round1[] = { - {.src = 0x602b, .y = 0x12, .x = 0x14}, - {.src = 0x602b, .y = 0x12, .x = 0x13}, - {.src = 0x6029, .y = 0x11, .x = 0x13}, - {.src = 0x6021, .y = 0x11, .x = 0x12}, + LINESECTION_ROUND1_TRAINER2(0x6021) }; -static const struct UnkStruct_860DD10 gUnknown_0860dc94[] = +static const struct TourneyTreeLineSection sLineSectionTrainer2Round2[] = { - {.src = 0x602b, .y = 0x12, .x = 0x14}, - {.src = 0x602b, .y = 0x12, .x = 0x13}, - {.src = 0x6029, .y = 0x11, .x = 0x13}, - {.src = 0x6021, .y = 0x11, .x = 0x12}, - {.src = 0x6029, .y = 0x10, .x = 0x12}, - {.src = 0x6029, .y = 0x0f, .x = 0x12}, - {.src = 0x6021, .y = 0x0f, .x = 0x11}, + LINESECTION_ROUND1_TRAINER2(0x6021) + LINESECTION_ROUND2_MATCH8(0x6021) }; -static const struct UnkStruct_860DD10 gUnknown_0860dcb0[] = -{ - {.src = 0x602b, .y = 0x12, .x = 0x14}, - {.src = 0x602b, .y = 0x12, .x = 0x13}, - {.src = 0x6029, .y = 0x11, .x = 0x13}, - {.src = 0x6021, .y = 0x11, .x = 0x12}, - {.src = 0x6029, .y = 0x10, .x = 0x12}, - {.src = 0x6029, .y = 0x0f, .x = 0x12}, - {.src = 0x6021, .y = 0x0f, .x = 0x11}, - {.src = 0x6038, .y = 0x0e, .x = 0x11}, - {.src = 0x6037, .y = 0x0d, .x = 0x11}, - {.src = 0x6036, .y = 0x0c, .x = 0x11}, - {.src = 0x6035, .y = 0x0b, .x = 0x11}, +static const struct TourneyTreeLineSection sLineSectionTrainer2Semifinal[] = +{ + LINESECTION_ROUND1_TRAINER2(0x6021) + LINESECTION_ROUND2_MATCH8(0x6021) + LINESECTION_SEMIFINAL_BOTTOM_RIGHT }; -static const struct UnkStruct_860DD10 gUnknown_0860dcdc[] = -{ - {.src = 0x602b, .y = 0x12, .x = 0x14}, - {.src = 0x602b, .y = 0x12, .x = 0x13}, - {.src = 0x6029, .y = 0x11, .x = 0x13}, - {.src = 0x6021, .y = 0x11, .x = 0x12}, - {.src = 0x6029, .y = 0x10, .x = 0x12}, - {.src = 0x6029, .y = 0x0f, .x = 0x12}, - {.src = 0x6021, .y = 0x0f, .x = 0x11}, - {.src = 0x6038, .y = 0x0e, .x = 0x11}, - {.src = 0x6037, .y = 0x0d, .x = 0x11}, - {.src = 0x6036, .y = 0x0c, .x = 0x11}, - {.src = 0x6035, .y = 0x0b, .x = 0x11}, - {.src = 0x602f, .y = 0x0b, .x = 0x10}, - {.src = 0x602e, .y = 0x0b, .x = 0x0f}, +static const struct TourneyTreeLineSection sLineSectionTrainer2Final[] = +{ + LINESECTION_ROUND1_TRAINER2(0x6021) + LINESECTION_ROUND2_MATCH8(0x6021) + LINESECTION_SEMIFINAL_BOTTOM_RIGHT + LINESECTION_FINAL_RIGHT }; -static const struct UnkStruct_860DD10 * const gUnknown_0860DD10[DOME_TOURNAMENT_TRAINERS_COUNT][4] = -{ - {gUnknown_0860d450, gUnknown_0860d460, gUnknown_0860d47c, gUnknown_0860d4a8}, - {gUnknown_0860dc84, gUnknown_0860dc94, gUnknown_0860dcb0, gUnknown_0860dcdc}, - {gUnknown_0860d8b0, gUnknown_0860d8c0, gUnknown_0860d8dc, gUnknown_0860d908}, - {gUnknown_0860d824, gUnknown_0860d834, gUnknown_0860d850, gUnknown_0860d87c}, - {gUnknown_0860d5f4, gUnknown_0860d604, gUnknown_0860d620, gUnknown_0860d64c}, - {gUnknown_0860dae0, gUnknown_0860daf0, gUnknown_0860db0c, gUnknown_0860db38}, - {gUnknown_0860da54, gUnknown_0860da64, gUnknown_0860da80, gUnknown_0860daac}, - {gUnknown_0860d680, gUnknown_0860d690, gUnknown_0860d6ac, gUnknown_0860d6d8}, - {gUnknown_0860d4dc, gUnknown_0860d4ec, gUnknown_0860d508, gUnknown_0860d534}, - {gUnknown_0860dbf8, gUnknown_0860dc08, gUnknown_0860dc24, gUnknown_0860dc50}, - {gUnknown_0860d93c, gUnknown_0860d94c, gUnknown_0860d968, gUnknown_0860d994}, - {gUnknown_0860d798, gUnknown_0860d7a8, gUnknown_0860d7c4, gUnknown_0860d7f0}, - {gUnknown_0860d568, gUnknown_0860d578, gUnknown_0860d594, gUnknown_0860d5c0}, - {gUnknown_0860db6c, gUnknown_0860db7c, gUnknown_0860db98, gUnknown_0860dbc4}, - {gUnknown_0860d9c8, gUnknown_0860d9d8, gUnknown_0860d9f4, gUnknown_0860da20}, - {gUnknown_0860d70c, gUnknown_0860d71c, gUnknown_0860d738, gUnknown_0860d764}, +static const struct TourneyTreeLineSection *const sTourneyTreeLineSections[DOME_TOURNAMENT_TRAINERS_COUNT][DOME_ROUNDS_COUNT] = +{ + {sLineSectionTrainer1Round1, sLineSectionTrainer1Round2, sLineSectionTrainer1Semifinal, sLineSectionTrainer1Final}, + {sLineSectionTrainer2Round1, sLineSectionTrainer2Round2, sLineSectionTrainer2Semifinal, sLineSectionTrainer2Final}, + {sLineSectionTrainer3Round1, sLineSectionTrainer3Round2, sLineSectionTrainer3Semifinal, sLineSectionTrainer3Final}, + {sLineSectionTrainer4Round1, sLineSectionTrainer4Round2, sLineSectionTrainer4Semifinal, sLineSectionTrainer4Final}, + {sLineSectionTrainer5Round1, sLineSectionTrainer5Round2, sLineSectionTrainer5Semifinal, sLineSectionTrainer5Final}, + {sLineSectionTrainer6Round1, sLineSectionTrainer6Round2, sLineSectionTrainer6Semifinal, sLineSectionTrainer6Final}, + {sLineSectionTrainer7Round1, sLineSectionTrainer7Round2, sLineSectionTrainer7Semifinal, sLineSectionTrainer7Final}, + {sLineSectionTrainer8Round1, sLineSectionTrainer8Round2, sLineSectionTrainer8Semifinal, sLineSectionTrainer8Final}, + {sLineSectionTrainer9Round1, sLineSectionTrainer9Round2, sLineSectionTrainer9Semifinal, sLineSectionTrainer9Final}, + {sLineSectionTrainer10Round1, sLineSectionTrainer10Round2, sLineSectionTrainer10Semifinal, sLineSectionTrainer10Final}, + {sLineSectionTrainer11Round1, sLineSectionTrainer11Round2, sLineSectionTrainer11Semifinal, sLineSectionTrainer11Final}, + {sLineSectionTrainer12Round1, sLineSectionTrainer12Round2, sLineSectionTrainer12Semifinal, sLineSectionTrainer12Final}, + {sLineSectionTrainer13Round1, sLineSectionTrainer13Round2, sLineSectionTrainer13Semifinal, sLineSectionTrainer13Final}, + {sLineSectionTrainer14Round1, sLineSectionTrainer14Round2, sLineSectionTrainer14Semifinal, sLineSectionTrainer14Final}, + {sLineSectionTrainer15Round1, sLineSectionTrainer15Round2, sLineSectionTrainer15Semifinal, sLineSectionTrainer15Final}, + {sLineSectionTrainer16Round1, sLineSectionTrainer16Round2, sLineSectionTrainer16Semifinal, sLineSectionTrainer16Final}, }; -static const u8 gUnknown_0860DE10[DOME_TOURNAMENT_TRAINERS_COUNT][4] = -{ - {0x04, 0x07, 0x0b, 0x0d}, - {0x04, 0x07, 0x0b, 0x0d}, - {0x04, 0x07, 0x0b, 0x0d}, - {0x04, 0x07, 0x0b, 0x0d}, - {0x04, 0x07, 0x0b, 0x0d}, - {0x04, 0x07, 0x0b, 0x0d}, - {0x04, 0x07, 0x0b, 0x0d}, - {0x04, 0x07, 0x0b, 0x0d}, - {0x04, 0x07, 0x0b, 0x0d}, - {0x04, 0x07, 0x0b, 0x0d}, - {0x04, 0x07, 0x0b, 0x0d}, - {0x04, 0x07, 0x0b, 0x0d}, - {0x04, 0x07, 0x0b, 0x0d}, - {0x04, 0x07, 0x0b, 0x0d}, - {0x04, 0x07, 0x0b, 0x0d}, - {0x04, 0x07, 0x0b, 0x0d}, +static const u8 sTourneyTreeLineSectionArrayCounts[DOME_TOURNAMENT_TRAINERS_COUNT][DOME_ROUNDS_COUNT] = +{ + {ARRAY_COUNT(sLineSectionTrainer1Round1), ARRAY_COUNT(sLineSectionTrainer1Round2), ARRAY_COUNT(sLineSectionTrainer1Semifinal), ARRAY_COUNT(sLineSectionTrainer1Final)}, + {ARRAY_COUNT(sLineSectionTrainer2Round1), ARRAY_COUNT(sLineSectionTrainer2Round2), ARRAY_COUNT(sLineSectionTrainer2Semifinal), ARRAY_COUNT(sLineSectionTrainer2Final)}, + {ARRAY_COUNT(sLineSectionTrainer3Round1), ARRAY_COUNT(sLineSectionTrainer3Round2), ARRAY_COUNT(sLineSectionTrainer3Semifinal), ARRAY_COUNT(sLineSectionTrainer3Final)}, + {ARRAY_COUNT(sLineSectionTrainer4Round1), ARRAY_COUNT(sLineSectionTrainer4Round2), ARRAY_COUNT(sLineSectionTrainer4Semifinal), ARRAY_COUNT(sLineSectionTrainer4Final)}, + {ARRAY_COUNT(sLineSectionTrainer5Round1), ARRAY_COUNT(sLineSectionTrainer5Round2), ARRAY_COUNT(sLineSectionTrainer5Semifinal), ARRAY_COUNT(sLineSectionTrainer5Final)}, + {ARRAY_COUNT(sLineSectionTrainer6Round1), ARRAY_COUNT(sLineSectionTrainer6Round2), ARRAY_COUNT(sLineSectionTrainer6Semifinal), ARRAY_COUNT(sLineSectionTrainer6Final)}, + {ARRAY_COUNT(sLineSectionTrainer7Round1), ARRAY_COUNT(sLineSectionTrainer7Round2), ARRAY_COUNT(sLineSectionTrainer7Semifinal), ARRAY_COUNT(sLineSectionTrainer7Final)}, + {ARRAY_COUNT(sLineSectionTrainer8Round1), ARRAY_COUNT(sLineSectionTrainer8Round2), ARRAY_COUNT(sLineSectionTrainer8Semifinal), ARRAY_COUNT(sLineSectionTrainer8Final)}, + {ARRAY_COUNT(sLineSectionTrainer9Round1), ARRAY_COUNT(sLineSectionTrainer9Round2), ARRAY_COUNT(sLineSectionTrainer9Semifinal), ARRAY_COUNT(sLineSectionTrainer9Final)}, + {ARRAY_COUNT(sLineSectionTrainer10Round1), ARRAY_COUNT(sLineSectionTrainer10Round2), ARRAY_COUNT(sLineSectionTrainer10Semifinal), ARRAY_COUNT(sLineSectionTrainer10Final)}, + {ARRAY_COUNT(sLineSectionTrainer11Round1), ARRAY_COUNT(sLineSectionTrainer11Round2), ARRAY_COUNT(sLineSectionTrainer11Semifinal), ARRAY_COUNT(sLineSectionTrainer11Final)}, + {ARRAY_COUNT(sLineSectionTrainer12Round1), ARRAY_COUNT(sLineSectionTrainer12Round2), ARRAY_COUNT(sLineSectionTrainer12Semifinal), ARRAY_COUNT(sLineSectionTrainer12Final)}, + {ARRAY_COUNT(sLineSectionTrainer13Round1), ARRAY_COUNT(sLineSectionTrainer13Round2), ARRAY_COUNT(sLineSectionTrainer13Semifinal), ARRAY_COUNT(sLineSectionTrainer13Final)}, + {ARRAY_COUNT(sLineSectionTrainer14Round1), ARRAY_COUNT(sLineSectionTrainer14Round2), ARRAY_COUNT(sLineSectionTrainer14Semifinal), ARRAY_COUNT(sLineSectionTrainer14Final)}, + {ARRAY_COUNT(sLineSectionTrainer15Round1), ARRAY_COUNT(sLineSectionTrainer15Round2), ARRAY_COUNT(sLineSectionTrainer15Semifinal), ARRAY_COUNT(sLineSectionTrainer15Final)}, + {ARRAY_COUNT(sLineSectionTrainer16Round1), ARRAY_COUNT(sLineSectionTrainer16Round2), ARRAY_COUNT(sLineSectionTrainer16Semifinal), ARRAY_COUNT(sLineSectionTrainer16Final)}, }; // code @@ -2280,57 +2115,57 @@ static void GetDomeData(void) case DOME_DATA_WIN_STREAK_ACTIVE: gSpecialVar_Result = ((gSaveBlock2Ptr->frontier.winStreakActiveFlags & sWinStreakFlags[battleMode][lvlMode]) != 0); break; - case DOME_DATA_2: - gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_D08_0; + case DOME_DATA_ATTEMPTED_SINGLES_50: + gSpecialVar_Result = gSaveBlock2Ptr->frontier.domeAttemptedSingles50; break; - case DOME_DATA_3: - gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_D08_1; + case DOME_DATA_ATTEMPTED_SINGLES_OPEN: + gSpecialVar_Result = gSaveBlock2Ptr->frontier.domeAttemptedSinglesOpen; break; - case DOME_DATA_4: - gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_D08_2; + case DOME_DATA_HAS_WON_SINGLES_50: + gSpecialVar_Result = gSaveBlock2Ptr->frontier.domeHasWonSingles50; break; - case DOME_DATA_5: - gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_D08_3; + case DOME_DATA_HAS_WON_SINGLES_OPEN: + gSpecialVar_Result = gSaveBlock2Ptr->frontier.domeHasWonSinglesOpen; break; - case DOME_DATA_6: + case DOME_DATA_ATTEMPTED_CHALLENGE: if (VarGet(VAR_FRONTIER_BATTLE_MODE) == FRONTIER_MODE_DOUBLES) { - if (lvlMode) - gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_D08_5; + if (lvlMode != FRONTIER_LVL_50) + gSpecialVar_Result = gSaveBlock2Ptr->frontier.domeAttemptedDoublesOpen; else - gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_D08_4; + gSpecialVar_Result = gSaveBlock2Ptr->frontier.domeAttemptedDoubles50; } else { - if (lvlMode) - gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_D08_1; + if (lvlMode != FRONTIER_LVL_50) + gSpecialVar_Result = gSaveBlock2Ptr->frontier.domeAttemptedSinglesOpen; else - gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_D08_0; + gSpecialVar_Result = gSaveBlock2Ptr->frontier.domeAttemptedSingles50; } break; - case DOME_DATA_7: + case DOME_DATA_HAS_WON_CHALLENGE: if (VarGet(VAR_FRONTIER_BATTLE_MODE) == FRONTIER_MODE_DOUBLES) { - if (lvlMode) - gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_D08_7; + if (lvlMode != FRONTIER_LVL_50) + gSpecialVar_Result = gSaveBlock2Ptr->frontier.domeHasWonDoublesOpen; else - gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_D08_6; + gSpecialVar_Result = gSaveBlock2Ptr->frontier.domeHasWonDoubles50; } else { - if (lvlMode) - gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_D08_3; + if (lvlMode != FRONTIER_LVL_50) + gSpecialVar_Result = gSaveBlock2Ptr->frontier.domeHasWonSinglesOpen; else - gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_D08_2; + gSpecialVar_Result = gSaveBlock2Ptr->frontier.domeHasWonSingles50; } break; - case DOME_DATA_8: + case DOME_DATA_SELECTED_MONS: ClearSelectedPartyOrder(); gSelectedOrderFromParty[0] = gSaveBlock2Ptr->frontier.selectedPartyMons[3]; gSelectedOrderFromParty[1] = gSaveBlock2Ptr->frontier.selectedPartyMons[3] >> 8; break; - case DOME_DATA_9: - gSpecialVar_Result = (gSaveBlock2Ptr->frontier.field_D0A * 2) - 3 + gSaveBlock2Ptr->frontier.field_D0B; + case DOME_DATA_PREV_TOURNEY_TYPE: + gSpecialVar_Result = (gSaveBlock2Ptr->frontier.domeLvlMode * 2) - 3 + gSaveBlock2Ptr->frontier.domeBattleMode; break; } } @@ -2351,51 +2186,51 @@ static void SetDomeData(void) else gSaveBlock2Ptr->frontier.winStreakActiveFlags &= sWinStreakMasks[battleMode][lvlMode]; break; - case DOME_DATA_2: - gSaveBlock2Ptr->frontier.field_D08_0 = gSpecialVar_0x8006; + case DOME_DATA_ATTEMPTED_SINGLES_50: + gSaveBlock2Ptr->frontier.domeAttemptedSingles50 = gSpecialVar_0x8006; break; - case DOME_DATA_3: - gSaveBlock2Ptr->frontier.field_D08_1 = gSpecialVar_0x8006; + case DOME_DATA_ATTEMPTED_SINGLES_OPEN: + gSaveBlock2Ptr->frontier.domeAttemptedSinglesOpen = gSpecialVar_0x8006; break; - case DOME_DATA_4: - gSaveBlock2Ptr->frontier.field_D08_2 = gSpecialVar_0x8006; + case DOME_DATA_HAS_WON_SINGLES_50: + gSaveBlock2Ptr->frontier.domeHasWonSingles50 = gSpecialVar_0x8006; break; - case DOME_DATA_5: - gSaveBlock2Ptr->frontier.field_D08_3 = gSpecialVar_0x8006; + case DOME_DATA_HAS_WON_SINGLES_OPEN: + gSaveBlock2Ptr->frontier.domeHasWonSinglesOpen = gSpecialVar_0x8006; break; - case DOME_DATA_6: + case DOME_DATA_ATTEMPTED_CHALLENGE: if (VarGet(VAR_FRONTIER_BATTLE_MODE) == FRONTIER_MODE_DOUBLES) { - if (lvlMode) - gSaveBlock2Ptr->frontier.field_D08_5 = gSpecialVar_0x8006; + if (lvlMode != FRONTIER_LVL_50) + gSaveBlock2Ptr->frontier.domeAttemptedDoublesOpen = gSpecialVar_0x8006; else - gSaveBlock2Ptr->frontier.field_D08_4 = gSpecialVar_0x8006; + gSaveBlock2Ptr->frontier.domeAttemptedDoubles50 = gSpecialVar_0x8006; } else { - if (lvlMode) - gSaveBlock2Ptr->frontier.field_D08_1 = gSpecialVar_0x8006; + if (lvlMode != FRONTIER_LVL_50) + gSaveBlock2Ptr->frontier.domeAttemptedSinglesOpen = gSpecialVar_0x8006; else - gSaveBlock2Ptr->frontier.field_D08_0 = gSpecialVar_0x8006; + gSaveBlock2Ptr->frontier.domeAttemptedSingles50 = gSpecialVar_0x8006; } break; - case DOME_DATA_7: + case DOME_DATA_HAS_WON_CHALLENGE: if (VarGet(VAR_FRONTIER_BATTLE_MODE) == FRONTIER_MODE_DOUBLES) { - if (lvlMode) - gSaveBlock2Ptr->frontier.field_D08_7 = gSpecialVar_0x8006; + if (lvlMode != FRONTIER_LVL_50) + gSaveBlock2Ptr->frontier.domeHasWonDoublesOpen = gSpecialVar_0x8006; else - gSaveBlock2Ptr->frontier.field_D08_6 = gSpecialVar_0x8006; + gSaveBlock2Ptr->frontier.domeHasWonDoubles50 = gSpecialVar_0x8006; } else { - if (lvlMode) - gSaveBlock2Ptr->frontier.field_D08_3 = gSpecialVar_0x8006; + if (lvlMode != FRONTIER_LVL_50) + gSaveBlock2Ptr->frontier.domeHasWonSinglesOpen = gSpecialVar_0x8006; else - gSaveBlock2Ptr->frontier.field_D08_2 = gSpecialVar_0x8006; + gSaveBlock2Ptr->frontier.domeHasWonSingles50 = gSpecialVar_0x8006; } break; - case DOME_DATA_8: + case DOME_DATA_SELECTED_MONS: gSaveBlock2Ptr->frontier.selectedPartyMons[3] = T1_READ_16(gSelectedOrderFromParty); break; } @@ -2408,105 +2243,115 @@ static void InitDomeTrainers(void) int species[FRONTIER_PARTY_SIZE]; int monTypesBits, monTypesCount; int trainerId; - int monSetId; - u16 *statSums; + int monId; + u16 *rankingScores; int *statValues; u8 ivs = 0; species[0] = 0; species[1] = 0; species[2] = 0; - statSums = AllocZeroed(sizeof(u16) * DOME_TOURNAMENT_TRAINERS_COUNT); - statValues = AllocZeroed(sizeof(int) * 6); + rankingScores = AllocZeroed(sizeof(u16) * DOME_TOURNAMENT_TRAINERS_COUNT); + statValues = AllocZeroed(sizeof(int) * NUM_STATS); - gSaveBlock2Ptr->frontier.field_D0A = gSaveBlock2Ptr->frontier.lvlMode + 1; - gSaveBlock2Ptr->frontier.field_D0B = VarGet(VAR_FRONTIER_BATTLE_MODE) + 1; - gSaveBlock2Ptr->frontier.domeTrainers[0].trainerId = TRAINER_PLAYER; - gSaveBlock2Ptr->frontier.domeTrainers[0].isEliminated = 0; - gSaveBlock2Ptr->frontier.domeTrainers[0].eliminatedAt = 0; - gSaveBlock2Ptr->frontier.domeTrainers[0].unk3 = 0; + gSaveBlock2Ptr->frontier.domeLvlMode = gSaveBlock2Ptr->frontier.lvlMode + 1; + gSaveBlock2Ptr->frontier.domeBattleMode = VarGet(VAR_FRONTIER_BATTLE_MODE) + 1; + DOME_TRAINERS[0].trainerId = TRAINER_PLAYER; + DOME_TRAINERS[0].isEliminated = FALSE; + DOME_TRAINERS[0].eliminatedAt = 0; + DOME_TRAINERS[0].forfeited = FALSE; + // Store the data used to display party information on the player's tourney page for (i = 0; i < FRONTIER_PARTY_SIZE; i++) { - gSaveBlock2Ptr->frontier.domeMonIds[0][i] = GetMonData(&gPlayerParty[gSaveBlock2Ptr->frontier.selectedPartyMons[i] - 1], MON_DATA_SPECIES, NULL); + DOME_MONS[0][i] = GetMonData(&gPlayerParty[gSaveBlock2Ptr->frontier.selectedPartyMons[i] - 1], MON_DATA_SPECIES, NULL); for (j = 0; j < MAX_MON_MOVES; j++) - gSaveBlock2Ptr->frontier.field_EFC[i].moves[j] = GetMonData(&gPlayerParty[gSaveBlock2Ptr->frontier.selectedPartyMons[i] - 1], MON_DATA_MOVE1 + j, NULL); + gSaveBlock2Ptr->frontier.domePlayerPartyData[i].moves[j] = GetMonData(&gPlayerParty[gSaveBlock2Ptr->frontier.selectedPartyMons[i] - 1], MON_DATA_MOVE1 + j, NULL); for (j = 0; j < NUM_STATS; j++) - gSaveBlock2Ptr->frontier.field_EFC[i].evs[j] = GetMonData(&gPlayerParty[gSaveBlock2Ptr->frontier.selectedPartyMons[i] - 1], MON_DATA_HP_EV + j, NULL); + gSaveBlock2Ptr->frontier.domePlayerPartyData[i].evs[j] = GetMonData(&gPlayerParty[gSaveBlock2Ptr->frontier.selectedPartyMons[i] - 1], MON_DATA_HP_EV + j, NULL); - gSaveBlock2Ptr->frontier.field_EFC[i].nature = GetNature(&gPlayerParty[gSaveBlock2Ptr->frontier.selectedPartyMons[i] - 1]); + gSaveBlock2Ptr->frontier.domePlayerPartyData[i].nature = GetNature(&gPlayerParty[gSaveBlock2Ptr->frontier.selectedPartyMons[i] - 1]); } + // Populate the tourney roster with random frontier trainers (dependent on streak) for (i = 1; i < DOME_TOURNAMENT_TRAINERS_COUNT; i++) { + // Choose trainer. First 5/16 trainers are easier than the rest if (i > 5) { do { - trainerId = sub_8162548(GetCurrentFacilityWinStreak(), 0); + trainerId = GetRandomScaledFrontierTrainerId(GetCurrentFacilityWinStreak(), 0); for (j = 1; j < i; j++) { - if (gSaveBlock2Ptr->frontier.domeTrainers[j].trainerId == trainerId) + if (DOME_TRAINERS[j].trainerId == trainerId) break; } } while (j != i); - gSaveBlock2Ptr->frontier.domeTrainers[i].trainerId = trainerId; + DOME_TRAINERS[i].trainerId = trainerId; } else { do { - trainerId = sub_8162548(GetCurrentFacilityWinStreak() + 1, 0); + trainerId = GetRandomScaledFrontierTrainerId(GetCurrentFacilityWinStreak() + 1, 0); for (j = 1; j < i; j++) { - if (gSaveBlock2Ptr->frontier.domeTrainers[j].trainerId == trainerId) + if (DOME_TRAINERS[j].trainerId == trainerId) break; } } while (j != i); - gSaveBlock2Ptr->frontier.domeTrainers[i].trainerId = trainerId; + DOME_TRAINERS[i].trainerId = trainerId; } + // Choose party for (j = 0; j < FRONTIER_PARTY_SIZE; j++) { - // Make sure the mon is valid. do { - monSetId = RandomizeFacilityTrainerMonSet(trainerId); + monId = GetRandomFrontierMonFromSet(trainerId); for (k = 0; k < j; k++) { - int checkingMonSetId = gSaveBlock2Ptr->frontier.domeMonIds[i][k]; - if (checkingMonSetId == monSetId - || species[0] == gFacilityTrainerMons[monSetId].species - || species[1] == gFacilityTrainerMons[monSetId].species - || gFacilityTrainerMons[checkingMonSetId].itemTableId == gFacilityTrainerMons[monSetId].itemTableId) + // Make sure the mon is valid. + int alreadySelectedMonId = DOME_MONS[i][k]; + if (alreadySelectedMonId == monId + || species[0] == gFacilityTrainerMons[monId].species + || species[1] == gFacilityTrainerMons[monId].species + || gFacilityTrainerMons[alreadySelectedMonId].itemTableId == gFacilityTrainerMons[monId].itemTableId) break; } } while (k != j); - gSaveBlock2Ptr->frontier.domeMonIds[i][j] = monSetId; - species[j] = gFacilityTrainerMons[monSetId].species; + DOME_MONS[i][j] = monId; + species[j] = gFacilityTrainerMons[monId].species; } - gSaveBlock2Ptr->frontier.domeTrainers[i].isEliminated = 0; - gSaveBlock2Ptr->frontier.domeTrainers[i].eliminatedAt = 0; - gSaveBlock2Ptr->frontier.domeTrainers[i].unk3 = 0; + DOME_TRAINERS[i].isEliminated = FALSE; + DOME_TRAINERS[i].eliminatedAt = 0; + DOME_TRAINERS[i].forfeited = FALSE; } + // rankingScores is used to determine the seed (ranking) of the trainers + // rankingScores[0] is for the player, rankingScores[1-15] are for the opponent trainers + + // Calculate player's ranking score monTypesBits = 0; - statSums[0] = 0; + rankingScores[0] = 0; for (i = 0; i < FRONTIER_PARTY_SIZE; i++) { + // trainerId var re-used here as index of selected mons trainerId = gSaveBlock2Ptr->frontier.selectedPartyMons[i] - 1; - statSums[0] += GetMonData(&gPlayerParty[trainerId], MON_DATA_ATK, NULL); - statSums[0] += GetMonData(&gPlayerParty[trainerId], MON_DATA_DEF, NULL); - statSums[0] += GetMonData(&gPlayerParty[trainerId], MON_DATA_SPATK, NULL); - statSums[0] += GetMonData(&gPlayerParty[trainerId], MON_DATA_SPDEF, NULL); - statSums[0] += GetMonData(&gPlayerParty[trainerId], MON_DATA_SPEED, NULL); - statSums[0] += GetMonData(&gPlayerParty[trainerId], MON_DATA_MAX_HP, NULL); + rankingScores[0] += GetMonData(&gPlayerParty[trainerId], MON_DATA_ATK, NULL); + rankingScores[0] += GetMonData(&gPlayerParty[trainerId], MON_DATA_DEF, NULL); + rankingScores[0] += GetMonData(&gPlayerParty[trainerId], MON_DATA_SPATK, NULL); + rankingScores[0] += GetMonData(&gPlayerParty[trainerId], MON_DATA_SPDEF, NULL); + rankingScores[0] += GetMonData(&gPlayerParty[trainerId], MON_DATA_SPEED, NULL); + rankingScores[0] += GetMonData(&gPlayerParty[trainerId], MON_DATA_MAX_HP, NULL); monTypesBits |= gBitTable[gBaseStats[GetMonData(&gPlayerParty[trainerId], MON_DATA_SPECIES, NULL)].type1]; monTypesBits |= gBitTable[gBaseStats[GetMonData(&gPlayerParty[trainerId], MON_DATA_SPECIES, NULL)].type2]; } + // Count the number of types in the players party, to factor into the ranking for (monTypesCount = 0, j = 0; j < 32; j++) { if (monTypesBits & 1) @@ -2515,29 +2360,30 @@ static void InitDomeTrainers(void) } monLevel = SetFacilityPtrsGetLevel(); - statSums[0] += (monTypesCount * monLevel) / 20; + rankingScores[0] += (monTypesCount * monLevel) / 20; + // Calculate rankingScores for the opponent trainers for (i = 1; i < DOME_TOURNAMENT_TRAINERS_COUNT; i++) { monTypesBits = 0; - statSums[i] = 0; - ivs = GetDomeTrainerMonIvs(gSaveBlock2Ptr->frontier.domeTrainers[i].trainerId); + rankingScores[i] = 0; + ivs = GetDomeTrainerMonIvs(DOME_TRAINERS[i].trainerId); for (j = 0; j < FRONTIER_PARTY_SIZE; j++) { - CalcDomeMonStats(gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[i][j]].species, + CalcDomeMonStats(gFacilityTrainerMons[DOME_MONS[i][j]].species, monLevel, ivs, - gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[i][j]].evSpread, - gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[i][j]].nature, + gFacilityTrainerMons[DOME_MONS[i][j]].evSpread, + gFacilityTrainerMons[DOME_MONS[i][j]].nature, statValues); - statSums[i] += statValues[STAT_ATK]; - statSums[i] += statValues[STAT_DEF]; - statSums[i] += statValues[STAT_SPATK]; - statSums[i] += statValues[STAT_SPDEF]; - statSums[i] += statValues[STAT_SPEED]; - statSums[i] += statValues[STAT_HP]; - monTypesBits |= gBitTable[gBaseStats[gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[i][j]].species].type1]; - monTypesBits |= gBitTable[gBaseStats[gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[i][j]].species].type2]; + rankingScores[i] += statValues[STAT_ATK]; + rankingScores[i] += statValues[STAT_DEF]; + rankingScores[i] += statValues[STAT_SPATK]; + rankingScores[i] += statValues[STAT_SPDEF]; + rankingScores[i] += statValues[STAT_SPEED]; + rankingScores[i] += statValues[STAT_HP]; + monTypesBits |= gBitTable[gBaseStats[gFacilityTrainerMons[DOME_MONS[i][j]].species].type1]; + monTypesBits |= gBitTable[gBaseStats[gFacilityTrainerMons[DOME_MONS[i][j]].species].type2]; } for (monTypesCount = 0, j = 0; j < 32; j++) @@ -2546,54 +2392,56 @@ static void InitDomeTrainers(void) monTypesCount++; monTypesBits >>= 1; } - statSums[i] += (monTypesCount * monLevel) / 20; + rankingScores[i] += (monTypesCount * monLevel) / 20; } + // Seed tourney trainers according to their ranking for (i = 0; i < DOME_TOURNAMENT_TRAINERS_COUNT - 1; i++) { for (j = i + 1; j < DOME_TOURNAMENT_TRAINERS_COUNT; j++) { - if (statSums[i] < statSums[j]) + if (rankingScores[i] < rankingScores[j]) { - SwapDomeTrainers(i, j, statSums); + SwapDomeTrainers(i, j, rankingScores); } else { - if (statSums[i] == statSums[j]) + if (rankingScores[i] == rankingScores[j]) { - if (gSaveBlock2Ptr->frontier.domeTrainers[j].trainerId == TRAINER_PLAYER) - SwapDomeTrainers(i, j, statSums); - else if (gSaveBlock2Ptr->frontier.domeTrainers[i].trainerId > gSaveBlock2Ptr->frontier.domeTrainers[j].trainerId) - SwapDomeTrainers(i, j, statSums); + if (DOME_TRAINERS[j].trainerId == TRAINER_PLAYER) + SwapDomeTrainers(i, j, rankingScores); + else if (DOME_TRAINERS[i].trainerId > DOME_TRAINERS[j].trainerId) + SwapDomeTrainers(i, j, rankingScores); } } } } + // Add Frontier Brain to the tourney if they should be fought at the end of it if (GetFrontierBrainStatus() != FRONTIER_BRAIN_NOT_READY) { for (i = 0; i < DOME_TOURNAMENT_TRAINERS_COUNT; i++) { - if (gSaveBlock2Ptr->frontier.domeTrainers[i].trainerId == TRAINER_PLAYER) + if (DOME_TRAINERS[i].trainerId == TRAINER_PLAYER) break; } - if (gUnknown_0860D3F1[i][0] != 0) + if (sTrainerNamePositions[i][0] != 0) { j = 0; - gSaveBlock2Ptr->frontier.domeTrainers[j].trainerId = TRAINER_FRONTIER_BRAIN; + DOME_TRAINERS[j].trainerId = TRAINER_FRONTIER_BRAIN; } else { j = 1; - gSaveBlock2Ptr->frontier.domeTrainers[j].trainerId = TRAINER_FRONTIER_BRAIN; + DOME_TRAINERS[j].trainerId = TRAINER_FRONTIER_BRAIN; } for (i = 0; i < FRONTIER_PARTY_SIZE; i++) - gSaveBlock2Ptr->frontier.domeMonIds[j][i] = GetFrontierBrainMonSpecies(i); + DOME_MONS[j][i] = GetFrontierBrainMonSpecies(i); } - Free(statSums); + Free(rankingScores); Free(statValues); } @@ -2649,10 +2497,10 @@ static void SwapDomeTrainers(int id1, int id2, u16 *statsArray) u16 temp; SWAP(statsArray[id1], statsArray[id2], temp); - SWAP(gSaveBlock2Ptr->frontier.domeTrainers[id1].trainerId, gSaveBlock2Ptr->frontier.domeTrainers[id2].trainerId, temp); + SWAP(DOME_TRAINERS[id1].trainerId, DOME_TRAINERS[id2].trainerId, temp); - for (i = 0; i < 3; i++) - SWAP(gSaveBlock2Ptr->frontier.domeMonIds[id1][i], gSaveBlock2Ptr->frontier.domeMonIds[id2][i], temp); + for (i = 0; i < FRONTIER_PARTY_SIZE; i++) + SWAP(DOME_MONS[id1][i], DOME_MONS[id2][i], temp); } static void BufferDomeRoundText(void) @@ -2668,9 +2516,9 @@ static void BufferDomeOpponentName(void) static void InitDomeOpponentParty(void) { - gUnknown_0203CD70 = 0; - gUnknown_0203CD74 = GetMonData(&gPlayerParty[0], MON_DATA_MAX_HP, NULL); - gUnknown_0203CD74 += GetMonData(&gPlayerParty[1], MON_DATA_MAX_HP, NULL); + gPlayerPartyLostHP = 0; + sPlayerPartyMaxHP = GetMonData(&gPlayerParty[0], MON_DATA_MAX_HP, NULL); + sPlayerPartyMaxHP += GetMonData(&gPlayerParty[1], MON_DATA_MAX_HP, NULL); CalculatePlayerPartyCount(); CreateDomeOpponentMons(TrainerIdToTournamentId(gTrainerBattleOpponent_A)); } @@ -2678,160 +2526,168 @@ static void InitDomeOpponentParty(void) static void CreateDomeOpponentMon(u8 monPartyId, u16 tournamentTrainerId, u8 tournamentMonId, u32 otId) { int i; - u8 happiness = 0xFF; - u8 fixedIv = GetDomeTrainerMonIvs(tournamentTrainerId); // BUG: Should be using trainerId instead of tournamentTrainerId. As a result, all Pokemon have ivs of 3. + u8 friendship = MAX_FRIENDSHIP; + u8 fixedIv = GetDomeTrainerMonIvs(tournamentTrainerId); // BUG: Should be using (DOME_TRAINERS[tournamentTrainerId].trainerId) instead of (tournamentTrainerId). As a result, all Pokemon have ivs of 3. u8 level = SetFacilityPtrsGetLevel(); CreateMonWithEVSpreadNatureOTID(&gEnemyParty[monPartyId], - gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[tournamentTrainerId][tournamentMonId]].species, + gFacilityTrainerMons[DOME_MONS[tournamentTrainerId][tournamentMonId]].species, level, - gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[tournamentTrainerId][tournamentMonId]].nature, + gFacilityTrainerMons[DOME_MONS[tournamentTrainerId][tournamentMonId]].nature, fixedIv, - gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[tournamentTrainerId][tournamentMonId]].evSpread, otId); + gFacilityTrainerMons[DOME_MONS[tournamentTrainerId][tournamentMonId]].evSpread, otId); - happiness = 0xFF; + friendship = MAX_FRIENDSHIP; for (i = 0; i < MAX_MON_MOVES; i++) { SetMonMoveSlot(&gEnemyParty[monPartyId], - gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[tournamentTrainerId][tournamentMonId]].moves[i], i); - if (gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[tournamentTrainerId][tournamentMonId]].moves[i] == MOVE_FRUSTRATION) - happiness = 0; + gFacilityTrainerMons[DOME_MONS[tournamentTrainerId][tournamentMonId]].moves[i], i); + if (gFacilityTrainerMons[DOME_MONS[tournamentTrainerId][tournamentMonId]].moves[i] == MOVE_FRUSTRATION) + friendship = 0; } - SetMonData(&gEnemyParty[monPartyId], MON_DATA_FRIENDSHIP, &happiness); + SetMonData(&gEnemyParty[monPartyId], MON_DATA_FRIENDSHIP, &friendship); SetMonData(&gEnemyParty[monPartyId], MON_DATA_HELD_ITEM, - &gBattleFrontierHeldItems[gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[tournamentTrainerId][tournamentMonId]].itemTableId]); + &gBattleFrontierHeldItems[gFacilityTrainerMons[DOME_MONS[tournamentTrainerId][tournamentMonId]].itemTableId]); } static void CreateDomeOpponentMons(u16 tournamentTrainerId) { u8 monsCount = 0; u32 otId = 0; - int i, bits; + int i, selectedMonBits; ZeroEnemyPartyMons(); - bits = GetDomeTrainerMonCountInBits(tournamentTrainerId); + selectedMonBits = GetDomeTrainerSelectedMons(tournamentTrainerId); otId = Random32(); + if (Random() % 10 > 5) { - for (i = 0; i < 3; i++) + // Create mon if it was selected, starting from front + for (i = 0; i < FRONTIER_PARTY_SIZE; i++) { - if (bits & 1) + if (selectedMonBits & 1) { CreateDomeOpponentMon(monsCount, tournamentTrainerId, i, otId); monsCount++; } - bits >>= 1; + selectedMonBits >>= 1; } } else { - for (i = 2; i >= 0; i--) + // Create mon if it was selected, starting from back + for (i = FRONTIER_PARTY_SIZE - 1; i >= 0; i--) { - if (bits & 4) + if (selectedMonBits & 4) { CreateDomeOpponentMon(monsCount, tournamentTrainerId, i, otId); monsCount++; } - bits <<= 1; + selectedMonBits <<= 1; } } } -int GetDomeTrainerMonCountInBits(u16 tournamentTrainerId) +int GetDomeTrainerSelectedMons(u16 tournamentTrainerId) { - int bits; + int selectedMonBits; if (Random() & 1) { - bits = sub_818FCBC(tournamentTrainerId, FALSE); - if (bits == 0) - bits = sub_818FDB8(tournamentTrainerId, TRUE); + selectedMonBits = SelectOpponentMonsUsingPersonality(tournamentTrainerId, FALSE); + if (selectedMonBits == 0) + selectedMonBits = SelectOpponentMonsUsingOtId(tournamentTrainerId, TRUE); } else { - bits = sub_818FDB8(tournamentTrainerId, FALSE); - if (bits == 0) - bits = sub_818FCBC(tournamentTrainerId, TRUE); + selectedMonBits = SelectOpponentMonsUsingOtId(tournamentTrainerId, FALSE); + if (selectedMonBits == 0) + selectedMonBits = SelectOpponentMonsUsingPersonality(tournamentTrainerId, TRUE); } - return bits; + return selectedMonBits; } -static int sub_818FCBC(u16 tournamentTrainerId, bool8 arg1) +// Could probably use a better name once GetTypeEffectivenessPoints is clarified +// Personality seems to be used to select a different weighting system for type effectiveness points +static int SelectOpponentMonsUsingPersonality(u16 tournamentTrainerId, bool8 allowRandom) { int i, moveId, playerMonId; - int array[FRONTIER_PARTY_SIZE]; + int partyMovePoints[FRONTIER_PARTY_SIZE]; for (i = 0; i < FRONTIER_PARTY_SIZE; i++) { - array[i] = 0; + partyMovePoints[i] = 0; for (moveId = 0; moveId < MAX_MON_MOVES; moveId++) { for (playerMonId = 0; playerMonId < FRONTIER_PARTY_SIZE; playerMonId++) { - if (gSaveBlock2Ptr->frontier.domeTrainers[tournamentTrainerId].trainerId == TRAINER_FRONTIER_BRAIN) + if (DOME_TRAINERS[tournamentTrainerId].trainerId == TRAINER_FRONTIER_BRAIN) { - array[i] += GetTypeEffectivenessPoints(GetFrontierBrainMonMove(i, moveId), - GetMonData(&gPlayerParty[playerMonId], MON_DATA_SPECIES, NULL), 0); + partyMovePoints[i] += GetTypeEffectivenessPoints(GetFrontierBrainMonMove(i, moveId), + GetMonData(&gPlayerParty[playerMonId], MON_DATA_SPECIES, NULL), MON_DATA_PERSONALITY); } else { - array[i] += GetTypeEffectivenessPoints(gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[tournamentTrainerId][i]].moves[moveId], - GetMonData(&gPlayerParty[playerMonId], MON_DATA_SPECIES, NULL), 0); + partyMovePoints[i] += GetTypeEffectivenessPoints(gFacilityTrainerMons[DOME_MONS[tournamentTrainerId][i]].moves[moveId], + GetMonData(&gPlayerParty[playerMonId], MON_DATA_SPECIES, NULL), MON_DATA_PERSONALITY); } } } } - return sub_818FEB4(array, arg1); + return SelectOpponentMonsFromParty(partyMovePoints, allowRandom); } -static int sub_818FDB8(u16 tournamentTrainerId, bool8 arg1) +// See above function, identical but uses MON_DATA_OT_ID +static int SelectOpponentMonsUsingOtId(u16 tournamentTrainerId, bool8 allowRandom) { int i, moveId, playerMonId; - int array[FRONTIER_PARTY_SIZE]; + int partyMovePoints[FRONTIER_PARTY_SIZE]; for (i = 0; i < FRONTIER_PARTY_SIZE; i++) { - array[i] = 0; + partyMovePoints[i] = 0; for (moveId = 0; moveId < MAX_MON_MOVES; moveId++) { for (playerMonId = 0; playerMonId < FRONTIER_PARTY_SIZE; playerMonId++) { - if (gSaveBlock2Ptr->frontier.domeTrainers[tournamentTrainerId].trainerId == TRAINER_FRONTIER_BRAIN) + if (DOME_TRAINERS[tournamentTrainerId].trainerId == TRAINER_FRONTIER_BRAIN) { - array[i] += GetTypeEffectivenessPoints(GetFrontierBrainMonMove(i, moveId), - GetMonData(&gPlayerParty[playerMonId], MON_DATA_SPECIES, NULL), 1); + partyMovePoints[i] += GetTypeEffectivenessPoints(GetFrontierBrainMonMove(i, moveId), + GetMonData(&gPlayerParty[playerMonId], MON_DATA_SPECIES, NULL), MON_DATA_OT_ID); } else { - array[i] += GetTypeEffectivenessPoints(gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[tournamentTrainerId][i]].moves[moveId], - GetMonData(&gPlayerParty[playerMonId], MON_DATA_SPECIES, NULL), 1); + partyMovePoints[i] += GetTypeEffectivenessPoints(gFacilityTrainerMons[DOME_MONS[tournamentTrainerId][i]].moves[moveId], + GetMonData(&gPlayerParty[playerMonId], MON_DATA_SPECIES, NULL), MON_DATA_OT_ID); } } } } - return sub_818FEB4(array, arg1); + return SelectOpponentMonsFromParty(partyMovePoints, allowRandom); } -static int sub_818FEB4(int *arr, bool8 arg1) +static int SelectOpponentMonsFromParty(int *partyMovePoints, bool8 allowRandom) { int i, j; - int bits = 0; - int array[3]; + int selectedMonBits = 0; + int partyPositions[FRONTIER_PARTY_SIZE]; - for (i = 0; i < 3; i++) - array[i] = i; + for (i = 0; i < FRONTIER_PARTY_SIZE; i++) + partyPositions[i] = i; - if (arr[0] == arr[1] && arr[0] == arr[2]) + // All party mons have equal move score totals, choose randomly + if (partyMovePoints[0] == partyMovePoints[1] + && partyMovePoints[0] == partyMovePoints[2]) { - if (arg1) + if (allowRandom) { i = 0; - while (i != 2) + while (i != DOME_BATTLE_PARTY_SIZE) { - u32 rand = Random() & 3; - if (rand != 3 && !(bits & gBitTable[rand])) + u32 rand = Random() & FRONTIER_PARTY_SIZE; + if (rand != FRONTIER_PARTY_SIZE && !(selectedMonBits & gBitTable[rand])) { - bits |= gBitTable[rand]; + selectedMonBits |= gBitTable[rand]; i++; } } @@ -2839,43 +2695,33 @@ static int sub_818FEB4(int *arr, bool8 arg1) } else { - for (i = 0; i < 2; i++) + for (i = 0; i < DOME_BATTLE_PARTY_SIZE; i++) { - for (j = i + 1; j < 3; j++) + for (j = i + 1; j < FRONTIER_PARTY_SIZE; j++) { int temp; - if (arr[i] < arr[j]) + if (partyMovePoints[i] < partyMovePoints[j]) { - temp = arr[i]; - arr[i] = arr[j]; - arr[j] = temp; - - temp = array[i]; - array[i] = array[j]; - array[j] = temp; + SWAP(partyMovePoints[i], partyMovePoints[j],temp) + SWAP(partyPositions[i], partyPositions[j], temp) } - if (arr[i] == arr[j] && (Random() & 1)) + if (partyMovePoints[i] == partyMovePoints[j] && (Random() & 1)) { - temp = arr[i]; - arr[i] = arr[j]; - arr[j] = temp; - - temp = array[i]; - array[i] = array[j]; - array[j] = temp; + SWAP(partyMovePoints[i], partyMovePoints[j],temp) + SWAP(partyPositions[i], partyPositions[j], temp) } } } - for (i = 0; i < 2; i++) + for (i = 0; i < DOME_BATTLE_PARTY_SIZE; i++) { - bits |= gBitTable[array[i]]; + selectedMonBits |= gBitTable[partyPositions[i]]; } } - return bits; + return selectedMonBits; } #define TYPE_x0 0 @@ -2886,6 +2732,7 @@ static int sub_818FEB4(int *arr, bool8 arg1) #define TYPE_x4 80 // Functionally equivalent, while loop is impossible to match. +// arg2 is either 2, a personality, or an OTID #ifdef NONMATCHING static int GetTypeEffectivenessPoints(int move, int targetSpecies, int arg2) { @@ -2908,25 +2755,22 @@ static int GetTypeEffectivenessPoints(int move, int targetSpecies, int arg2) } else { - while (gTypeEffectiveness[i + 0] != TYPE_ENDTABLE) + while (TYPE_EFFECT_ATK_TYPE(i) != TYPE_ENDTABLE) { - if (gTypeEffectiveness[i + 0] == TYPE_FORESIGHT) + if (TYPE_EFFECT_ATK_TYPE(i) == TYPE_FORESIGHT) { i += 3; + continue; } - else + else if (TYPE_EFFECT_ATK_TYPE(i) == moveType) { - u8 val = gTypeEffectiveness[i + 0]; - if (val == moveType) - { - // BUG: * 2 is not necessary and makes the condition always false if the ability is wonder guard. - if (gTypeEffectiveness[i + 1] == defType1 && (defAbility != ABILITY_WONDER_GUARD || gTypeEffectiveness[i + 2] == TYPE_MUL_SUPER_EFFECTIVE * 2)) - typePower = (gTypeEffectiveness[i + 2] * typePower) / 10; - if (gTypeEffectiveness[i + 1] == defType2 && defType1 != defType2 && (defAbility != ABILITY_WONDER_GUARD || gTypeEffectiveness[i + 2] == TYPE_MUL_SUPER_EFFECTIVE * 2)) - typePower = (gTypeEffectiveness[i + 2] * typePower) / 10; - } - i += 3; + // BUG: * 2 is not necessary and makes the condition always false if the ability is wonder guard. + if (TYPE_EFFECT_DEF_TYPE(i) == defType1 && (defAbility != ABILITY_WONDER_GUARD || TYPE_EFFECT_MULTIPLIER(i) == TYPE_MUL_SUPER_EFFECTIVE * 2)) + typePower = (typePower * TYPE_EFFECT_MULTIPLIER(i)) / 10; + if (TYPE_EFFECT_DEF_TYPE(i) == defType2 && defType1 != defType2 && (defAbility != ABILITY_WONDER_GUARD || TYPE_EFFECT_MULTIPLIER(i) == TYPE_MUL_SUPER_EFFECTIVE * 2)) + typePower = (typePower * TYPE_EFFECT_MULTIPLIER(i)) / 10; } + i += 3; } } @@ -2935,19 +2779,19 @@ static int GetTypeEffectivenessPoints(int move, int targetSpecies, int arg2) case 0: switch (typePower) { - case 10: - case 5: - case 0: + case TYPE_x0_50: + case TYPE_x0_25: + case TYPE_x0: default: typePower = 0; break; - case 20: + case TYPE_x1: typePower = 2; break; - case 40: + case TYPE_x2: typePower = 4; break; - case 80: + case TYPE_x4: typePower = 8; break; } @@ -2956,22 +2800,22 @@ static int GetTypeEffectivenessPoints(int move, int targetSpecies, int arg2) switch (typePower) { default: - case 20: + case TYPE_x1: typePower = 0; break; - case 5: + case TYPE_x0_25: typePower = 4; break; - case 0: + case TYPE_x0: typePower = 8; break; - case 10: + case TYPE_x0_50: typePower = 2; break; - case 40: + case TYPE_x2: typePower = -2; break; - case 80: + case TYPE_x4: typePower = -4; break; } @@ -3246,24 +3090,28 @@ _08190156:\n\ } #endif // NONMATCHING +// Duplicate of GetFrontierTrainerFixedIvs +// NOTE: In CreateDomeOpponentMon a tournament trainer ID (0-15) is passed instead, resulting in all IVs of 3 +// To fix, see CreateDomeOpponentMon static u8 GetDomeTrainerMonIvs(u16 trainerId) { u8 fixedIv; - if (trainerId <= 99) + + if (trainerId <= FRONTIER_TRAINER_JILL) // 0 - 99 fixedIv = 3; - else if (trainerId <= 119) + else if (trainerId <= FRONTIER_TRAINER_CHLOE) // 100 - 119 fixedIv = 6; - else if (trainerId <= 139) + else if (trainerId <= FRONTIER_TRAINER_SOFIA) // 120 - 139 fixedIv = 9; - else if (trainerId <= 159) + else if (trainerId <= FRONTIER_TRAINER_JAZLYN) // 140 - 159 fixedIv = 12; - else if (trainerId <= 179) + else if (trainerId <= FRONTIER_TRAINER_ALISON) // 160 - 179 fixedIv = 15; - else if (trainerId <= 199) + else if (trainerId <= FRONTIER_TRAINER_LAMAR) // 180 - 199 fixedIv = 18; - else if (trainerId <= 219) + else if (trainerId <= FRONTIER_TRAINER_TESS) // 200 - 219 fixedIv = 21; - else + else // 220+ (- 299) fixedIv = 31; return fixedIv; @@ -3271,38 +3119,41 @@ static u8 GetDomeTrainerMonIvs(u16 trainerId) static int TournamentIdOfOpponent(int roundId, int trainerId) { - int i, j, val; + int i, j, opponentMax; + // Get trainer's tournament id for (i = 0; i < DOME_TOURNAMENT_TRAINERS_COUNT; i++) { - if (gSaveBlock2Ptr->frontier.domeTrainers[i].trainerId == trainerId) + if (DOME_TRAINERS[i].trainerId == trainerId) break; } + // Get trainer's opponent's tournament id if (roundId != DOME_ROUND1) { if (roundId == DOME_FINAL) - val = sIdToOpponentId[i][roundId] + 8; + opponentMax = sIdToOpponentId[i][roundId] + 8; else - val = sIdToOpponentId[i][roundId] + 4; + opponentMax = sIdToOpponentId[i][roundId] + 4; - for (j = sIdToOpponentId[i][roundId]; j < val; j++) + // Get first non-eliminated trainer in range of possible opponents + for (j = sIdToOpponentId[i][roundId]; j < opponentMax; j++) { - if (gUnknown_0860D14C[j] != i && !gSaveBlock2Ptr->frontier.domeTrainers[gUnknown_0860D14C[j]].isEliminated) + if (sTourneyTreeTrainerOpponentIds[j] != i && !DOME_TRAINERS[sTourneyTreeTrainerOpponentIds[j]].isEliminated) break; } - if (j != val) - return gUnknown_0860D14C[j]; + if (j != opponentMax) + return sTourneyTreeTrainerOpponentIds[j]; else - return 0xFF; + return 0xFF; // Already eliminated } else { - if (!gSaveBlock2Ptr->frontier.domeTrainers[sIdToOpponentId[i][roundId]].isEliminated) + if (!DOME_TRAINERS[sIdToOpponentId[i][roundId]].isEliminated) return sIdToOpponentId[i][roundId]; else - return 0xFF; + return 0xFF; // Already eliminated } } @@ -3311,9 +3162,10 @@ static void SetDomeOpponentId(void) gTrainerBattleOpponent_A = TrainerIdOfPlayerOpponent(); } +// While not an issue in-game, this will overflow if called after the player's opponent for the current round has been eliminated static u16 TrainerIdOfPlayerOpponent(void) { - return gSaveBlock2Ptr->frontier.domeTrainers[TournamentIdOfOpponent(gSaveBlock2Ptr->frontier.curChallengeBattleNum, TRAINER_PLAYER)].trainerId; + return DOME_TRAINERS[TournamentIdOfOpponent(gSaveBlock2Ptr->frontier.curChallengeBattleNum, TRAINER_PLAYER)].trainerId; } static void SetDomeOpponentGraphicsId(void) @@ -3343,25 +3195,27 @@ static void IncrementDomeStreaks(void) gSaveBlock2Ptr->frontier.domeRecordWinStreaks[battleMode][lvlMode] = gSaveBlock2Ptr->frontier.domeWinStreaks[battleMode][lvlMode]; } +// For showing the opponent info card of the upcoming trainer static void ShowDomeOpponentInfo(void) { - u8 taskId = CreateTask(Task_ShowOpponentInfo, 0); - gTasks[taskId].data[0] = 0; - gTasks[taskId].data[1] = TrainerIdToTournamentId(TrainerIdOfPlayerOpponent()); - gTasks[taskId].data[2] = 0; - gTasks[taskId].data[3] = 0; + u8 taskId = CreateTask(Task_ShowTourneyInfoCard, 0); + gTasks[taskId].tState = 0; + gTasks[taskId].tTournamentId = TrainerIdToTournamentId(TrainerIdOfPlayerOpponent()); + gTasks[taskId].tMode = INFOCARD_NEXT_OPPONENT; + gTasks[taskId].tPrevTaskId = 0; - SetMainCallback2(CB2_BattleDome); + SetMainCallback2(CB2_TourneyTree); } -static void Task_ShowOpponentInfo(u8 taskId) +// For showing the opponent info card or the match info card +static void Task_ShowTourneyInfoCard(u8 taskId) { int i; - int r5 = gTasks[taskId].data[1]; - int r9 = gTasks[taskId].data[2]; - int r7 = gTasks[taskId].data[3]; + int tournamentId = gTasks[taskId].tTournamentId; + int mode = gTasks[taskId].tMode; + int id = gTasks[taskId].tPrevTaskId; - switch (gTasks[taskId].data[0]) + switch (gTasks[taskId].tState) { case 0: SetHBlankCallback(NULL); @@ -3369,8 +3223,8 @@ static void Task_ShowOpponentInfo(u8 taskId) EnableInterrupts(INTR_FLAG_VBLANK); CpuFill32(0, (void *)VRAM, VRAM_SIZE); ResetBgsAndClearDma3BusyFlags(0); - InitBgsFromTemplates(0, gUnknown_0860CE84, ARRAY_COUNT(gUnknown_0860CE84)); - InitWindows(gUnknown_0860CEB4); + InitBgsFromTemplates(0, sInfoCardBgTemplates, ARRAY_COUNT(sInfoCardBgTemplates)); + InitWindows(sInfoCardWindowTemplates); DeactivateAllTextPrinters(); gBattle_BG0_X = 0; gBattle_BG0_Y = 0; @@ -3378,12 +3232,12 @@ static void Task_ShowOpponentInfo(u8 taskId) gBattle_BG1_Y = 0; gBattle_BG3_X = 0; gBattle_BG3_Y = 0; - if (r9 == 2) + if (mode == INFOCARD_MATCH) gBattle_BG2_X = 0, gBattle_BG2_Y = 0; else gBattle_BG2_X = 0, gBattle_BG2_Y = 160; - gTasks[taskId].data[0]++; + gTasks[taskId].tState++; break; case 1: SetGpuReg(REG_OFFSET_BLDCNT, 0); @@ -3395,72 +3249,76 @@ static void Task_ShowOpponentInfo(u8 taskId) SetGpuReg(REG_OFFSET_WIN1H, 0); SetGpuReg(REG_OFFSET_WIN1V, 0); SetGpuReg(REG_OFFSET_WININ, 0); - SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG0 | WINOUT_WIN01_BG1 | WINOUT_WIN01_BG2 | WINOUT_WIN01_BG3 | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR); + SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR); ResetPaletteFade(); ResetSpriteData(); FreeAllSpritePalettes(); gReservedSpritePaletteCount = 4; - gTasks[taskId].data[0]++; + gTasks[taskId].tState++; break; case 2: - DecompressAndLoadBgGfxUsingHeap(2, gUnknown_08D83D50, 0x2000, 0, 0); - DecompressAndLoadBgGfxUsingHeap(2, gUnknown_08D84970, 0x2000, 0, 1); - DecompressAndLoadBgGfxUsingHeap(3, gUnknown_08D84F00, 0x800, 0, 1); - LoadCompressedSpriteSheet(sDomeOptionsSpriteSheet); - LoadCompressedPalette(gUnknown_08D85358, 0, 0x200); - LoadCompressedPalette(gUnknown_08D85444, 0x100, 0x200); + DecompressAndLoadBgGfxUsingHeap(2, gDomeTourneyInfoCard_Gfx, 0x2000, 0, 0); + DecompressAndLoadBgGfxUsingHeap(2, gDomeTourneyInfoCard_Tilemap, 0x2000, 0, 1); + DecompressAndLoadBgGfxUsingHeap(3, gDomeTourneyInfoCardBg_Tilemap, 0x800, 0, 1); + LoadCompressedSpriteSheet(sTourneyTreeButtonsSpriteSheet); + LoadCompressedPalette(gDomeTourneyTree_Pal, 0, 0x200); + LoadCompressedPalette(gDomeTourneyTreeButtons_Pal, 0x100, 0x200); LoadCompressedPalette(gBattleWindowTextPalette, 0xF0, 0x20); - if (r9 == 2) - LoadCompressedPalette(gUnknown_08D854C8, 0x50, 0x20); + if (mode == INFOCARD_MATCH) + LoadCompressedPalette(gDomeTourneyMatchCardBg_Pal, 0x50, 0x20); // Changes the moving info card bg to orange when in match card mode CpuFill32(0, gPlttBufferFaded, 0x400); ShowBg(0); ShowBg(1); ShowBg(2); ShowBg(3); - gTasks[taskId].data[0]++; + gTasks[taskId].tState++; break; case 3: - SetVBlankCallback(VblankCb0_BattleDome); - sBattleDomeStruct = AllocZeroed(sizeof(*sBattleDomeStruct)); - for (i = 0; i < DOME_TOURNAMENT_TRAINERS_COUNT; i++) - sBattleDomeStruct->arr[i] = 0xFF; + SetVBlankCallback(VblankCb_TourneyInfoCard); + sInfoCard = AllocZeroed(sizeof(*sInfoCard)); + for (i = 0; i < NUM_INFOCARD_SPRITES; i++) + sInfoCard->spriteIds[i] = 0xFF; LoadMonIconPalettes(); - i = CreateTask(sub_8190CD4, 0); + i = CreateTask(Task_HandleInfoCardInput, 0); gTasks[i].data[0] = 0; gTasks[i].data[2] = 0; - gTasks[i].data[3] = r9; - gTasks[i].data[4] = r7; - if (r9 == 2) + gTasks[i].data[3] = mode; + gTasks[i].data[4] = id; + if (mode == INFOCARD_MATCH) { - DisplayMatchInfoOnCard(0, r5); - sBattleDomeStruct->unk_10 = 1; + DisplayMatchInfoOnCard(0, tournamentId); + sInfoCard->pos = 1; } else { - DisplayTrainerInfoOnCard(0, r5); + DisplayTrainerInfoOnCard(0, tournamentId); } SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_1D_MAP); - if (r9 != 0) + if (mode != INFOCARD_NEXT_OPPONENT) { - r7 = CreateSprite(&gUnknown_0860D068, 120, 4, 0); - StartSpriteAnim(&gSprites[r7], 0); - gSprites[r7].data[0] = i; - - r7 = CreateSprite(&gUnknown_0860D068, 120, 156, 0); - StartSpriteAnim(&gSprites[r7], 1); - gSprites[r7].data[0] = i; - - r7 = CreateSprite(&gUnknown_0860D050, 6, 80, 0); - StartSpriteAnim(&gSprites[r7], 0); - gSprites[r7].data[0] = i; - gSprites[r7].data[1] = 0; - if (r9 == 1) - gSprites[r7].invisible = TRUE; - - r7 = CreateSprite(&gUnknown_0860D050, 234, 80, 0); - StartSpriteAnim(&gSprites[r7], 1); - gSprites[r7].data[0] = i; - gSprites[r7].data[1] = 1; + // Scroll up arrow + id = CreateSprite(&sVerticalScrollArrowSpriteTemplate, 120, 4, 0); + StartSpriteAnim(&gSprites[id], 0); + gSprites[id].data[0] = i; + + // Scroll down arrow + id = CreateSprite(&sVerticalScrollArrowSpriteTemplate, 120, 156, 0); + StartSpriteAnim(&gSprites[id], 1); + gSprites[id].data[0] = i; + + // Scroll left arrow + id = CreateSprite(&sHorizontalScrollArrowSpriteTemplate, 6, 80, 0); + StartSpriteAnim(&gSprites[id], 0); + gSprites[id].data[0] = i; + gSprites[id].data[1] = 0; + if (mode == INFOCARD_TRAINER) + gSprites[id].invisible = TRUE; + + // Scroll right arrow + id = CreateSprite(&sHorizontalScrollArrowSpriteTemplate, 234, 80, 0); + StartSpriteAnim(&gSprites[id], 1); + gSprites[id].data[0] = i; + gSprites[id].data[1] = 1; } DestroyTask(taskId); break; @@ -3470,7 +3328,6 @@ static void Task_ShowOpponentInfo(u8 taskId) // Note: Card scrolling up means the current card goes down and another one appears from top. // The same is true for scrolling left. // That means that the sprite needs to move with the moving card in the opposite scrolling direction. - static void SpriteCb_TrainerIconCardScrollUp(struct Sprite *sprite) { sprite->pos1.y += 4; @@ -3485,7 +3342,7 @@ static void SpriteCb_TrainerIconCardScrollUp(struct Sprite *sprite) { if (sprite->pos1.y >= 192) { - sBattleDomeStruct->arr[sprite->data[2]] = 0xFF; + sInfoCard->spriteIds[sprite->data[2]] = 0xFF; FreeAndDestroyTrainerPicSprite(sprite->data[3]); } } @@ -3505,7 +3362,7 @@ static void SpriteCb_TrainerIconCardScrollDown(struct Sprite *sprite) { if (sprite->pos1.y <= -32) { - sBattleDomeStruct->arr[sprite->data[2]] = 0xFF; + sInfoCard->spriteIds[sprite->data[2]] = 0xFF; FreeAndDestroyTrainerPicSprite(sprite->data[3]); } } @@ -3525,7 +3382,7 @@ static void SpriteCb_TrainerIconCardScrollLeft(struct Sprite *sprite) { if (sprite->pos1.x >= 272) { - sBattleDomeStruct->arr[sprite->data[2]] = 0xFF; + sInfoCard->spriteIds[sprite->data[2]] = 0xFF; FreeAndDestroyTrainerPicSprite(sprite->data[3]); } } @@ -3545,7 +3402,7 @@ static void SpriteCb_TrainerIconCardScrollRight(struct Sprite *sprite) { if (sprite->pos1.x <= -32) { - sBattleDomeStruct->arr[sprite->data[2]] = 0xFF; + sInfoCard->spriteIds[sprite->data[2]] = 0xFF; FreeAndDestroyTrainerPicSprite(sprite->data[3]); } } @@ -3575,8 +3432,8 @@ static void SpriteCb_MonIconCardScrollUp(struct Sprite *sprite) { if (sprite->pos1.y >= 176) { - sBattleDomeStruct->arr[sprite->data[2]] = 0xFF; - sub_80D2EF8(sprite); + sInfoCard->spriteIds[sprite->data[2]] = 0xFF; + FreeAndDestroyMonIconSprite(sprite); } } } @@ -3597,8 +3454,8 @@ static void SpriteCb_MonIconCardScrollDown(struct Sprite *sprite) { if (sprite->pos1.y <= -16) { - sBattleDomeStruct->arr[sprite->data[2]] = 0xFF; - sub_80D2EF8(sprite); + sInfoCard->spriteIds[sprite->data[2]] = 0xFF; + FreeAndDestroyMonIconSprite(sprite); } } } @@ -3619,8 +3476,8 @@ static void SpriteCb_MonIconCardScrollLeft(struct Sprite *sprite) { if (sprite->pos1.x >= 256) { - sBattleDomeStruct->arr[sprite->data[2]] = 0xFF; - sub_80D2EF8(sprite); + sInfoCard->spriteIds[sprite->data[2]] = 0xFF; + FreeAndDestroyMonIconSprite(sprite); } } } @@ -3641,13 +3498,13 @@ static void SpriteCb_MonIconCardScrollRight(struct Sprite *sprite) { if (sprite->pos1.x <= -16) { - sBattleDomeStruct->arr[sprite->data[2]] = 0xFF; - sub_80D2EF8(sprite); + sInfoCard->spriteIds[sprite->data[2]] = 0xFF; + FreeAndDestroyMonIconSprite(sprite); } } } -static void sub_8190B40(struct Sprite *sprite) +static void SpriteCb_HorizontalScrollArrow(struct Sprite *sprite) { int taskId1 = sprite->data[0]; int arrId = gTasks[gTasks[taskId1].data[4]].data[1]; @@ -3658,13 +3515,13 @@ static void sub_8190B40(struct Sprite *sprite) { if (sprite->data[1]) { - if ((gSaveBlock2Ptr->frontier.domeTrainers[tournmanetTrainerId].isEliminated - && sBattleDomeStruct->unk_10 - 1 < gSaveBlock2Ptr->frontier.domeTrainers[tournmanetTrainerId].eliminatedAt)) + if ((DOME_TRAINERS[tournmanetTrainerId].isEliminated + && sInfoCard->pos - 1 < DOME_TRAINERS[tournmanetTrainerId].eliminatedAt)) { sprite->invisible = FALSE; } - else if (!gSaveBlock2Ptr->frontier.domeTrainers[tournmanetTrainerId].isEliminated - && sBattleDomeStruct->unk_10 - 1 < roundId) + else if (!DOME_TRAINERS[tournmanetTrainerId].isEliminated + && sInfoCard->pos - 1 < roundId) { sprite->invisible = FALSE; } @@ -3676,7 +3533,7 @@ static void sub_8190B40(struct Sprite *sprite) } else { - if (sBattleDomeStruct->unk_10 != 0) + if (sInfoCard->pos != 0) { sprite->invisible = FALSE; } @@ -3691,7 +3548,7 @@ static void sub_8190B40(struct Sprite *sprite) { if (sprite->data[1]) { - if (sBattleDomeStruct->unk_10 > 1) + if (sInfoCard->pos > 1) { if (gTasks[taskId1].data[0] == 2) sprite->invisible = TRUE; @@ -3703,7 +3560,7 @@ static void sub_8190B40(struct Sprite *sprite) } else { - if (sBattleDomeStruct->unk_10 != 0) + if (sInfoCard->pos != 0) { sprite->invisible = FALSE; } @@ -3716,13 +3573,13 @@ static void sub_8190B40(struct Sprite *sprite) } } -static void sub_8190C6C(struct Sprite *sprite) +static void SpriteCb_VerticalScrollArrow(struct Sprite *sprite) { int taskId1 = sprite->data[0]; if (gTasks[taskId1].data[3] == 1) { - if (sBattleDomeStruct->unk_10 != 0) + if (sInfoCard->pos != 0) { if (gTasks[taskId1].data[0] == 2) sprite->invisible = TRUE; @@ -3734,7 +3591,7 @@ static void sub_8190C6C(struct Sprite *sprite) } else { - if (sBattleDomeStruct->unk_10 != 1) + if (sInfoCard->pos != 1) { if (gTasks[taskId1].data[0] == 2) sprite->invisible = TRUE; @@ -3746,39 +3603,53 @@ static void sub_8190C6C(struct Sprite *sprite) } } -static void sub_8190CD4(u8 taskId) +// Task states for Task_HandleInfoCardInput +#define STATE_FADE_IN 0 +#define STATE_WAIT_FADE 1 +#define STATE_GET_INPUT 2 +#define STATE_REACT_INPUT 3 +#define STATE_MOVE_UP 4 +#define STATE_MOVE_DOWN 5 +#define STATE_MOVE_LEFT 6 +#define STATE_MOVE_RIGHT 7 +#define STATE_CLOSE_CARD 8 + +#define tUsingAlternateSlot data[2] // CARD_ALTERNATE_SLOT + +static void Task_HandleInfoCardInput(u8 taskId) { int i; int windowId = 0; - int r9 = gTasks[taskId].data[3]; + int mode = gTasks[taskId].data[3]; int taskId2 = gTasks[taskId].data[4]; - int trainerTournamentId = 0; + int trainerTourneyId = 0; int matchNo = 0; - switch (gTasks[taskId].data[0]) + switch (gTasks[taskId].tState) { - case 0: + case STATE_FADE_IN: if (!gPaletteFade.active) { BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_BLACK); - gTasks[taskId].data[0] = 1; + gTasks[taskId].tState = STATE_WAIT_FADE; } break; - case 1: + case STATE_WAIT_FADE: if (!gPaletteFade.active) - gTasks[taskId].data[0] = 2; + gTasks[taskId].tState = STATE_GET_INPUT; break; - case 2: - i = sub_819221C(taskId); + case STATE_GET_INPUT: + i = Task_GetInfoCardInput(taskId); switch (i) { - case 9: + case INFOCARD_INPUT_AB: BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK); - gTasks[taskId].data[0] = 8; + gTasks[taskId].tState = STATE_CLOSE_CARD; break; - case 1 ... 8: + case TRAINERCARD_INPUT_UP ... TRAINERCARD_INPUT_RIGHT: + case MATCHCARD_INPUT_UP ... MATCHCARD_INPUT_RIGHT: gTasks[taskId].data[5] = i; - if (gTasks[taskId].data[2] != 0) + if (gTasks[taskId].tUsingAlternateSlot) windowId = 9; else windowId = 0; @@ -3788,19 +3659,19 @@ static void sub_8190CD4(u8 taskId) CopyWindowToVram(i, 2); FillWindowPixelBuffer(i, PIXEL_FILL(0)); } - gTasks[taskId].data[0] = 3; + gTasks[taskId].tState = STATE_REACT_INPUT; break; - case 0: + case INFOCARD_INPUT_NONE: break; } break; - case 3: + case STATE_REACT_INPUT: i = gTasks[taskId].data[5]; switch (i) { - case 1: - case 5: - if (gTasks[taskId].data[2]) + case TRAINERCARD_INPUT_UP: + case MATCHCARD_INPUT_UP: + if (gTasks[taskId].tUsingAlternateSlot) { gBattle_BG0_X = 0; gBattle_BG0_Y = 0; @@ -3815,108 +3686,108 @@ static void sub_8190CD4(u8 taskId) gBattle_BG1_Y = 0; } - if (i == 1) + if (i == TRAINERCARD_INPUT_UP) { - if (sBattleDomeStruct->unk_10 == 0) + if (sInfoCard->pos == 0) { gBattle_BG2_X = 0; gBattle_BG2_Y = 320; - trainerTournamentId = sTourneyTreeTrainerIds[gTasks[taskId2].data[1]]; - DisplayTrainerInfoOnCard(gTasks[taskId].data[2] | 0x10, trainerTournamentId); + trainerTourneyId = sTourneyTreeTrainerIds[gTasks[taskId2].data[1]]; + DisplayTrainerInfoOnCard(gTasks[taskId].tUsingAlternateSlot | MOVE_CARD_UP, trainerTourneyId); } else { gBattle_BG2_X = 256; gBattle_BG2_Y = 0; - trainerTournamentId = sTourneyTreeTrainerIds[gTasks[taskId2].data[1]]; - DisplayTrainerInfoOnCard(gTasks[taskId].data[2] | 0x10, trainerTournamentId); - sBattleDomeStruct->unk_10 = 0; + trainerTourneyId = sTourneyTreeTrainerIds[gTasks[taskId2].data[1]]; + DisplayTrainerInfoOnCard(gTasks[taskId].tUsingAlternateSlot | MOVE_CARD_UP, trainerTourneyId); + sInfoCard->pos = 0; } } - else + else // i == MATCHCARD_INPUT_UP { - if (sBattleDomeStruct->unk_10 == 0) + if (sInfoCard->pos == 0) { matchNo = gTasks[taskId2].data[1] - 16; - sub_8192F08(matchNo, sBattleDomeStruct->unk_11); + BufferDomeWinString(matchNo, sInfoCard->tournamentIds); gBattle_BG2_X = 0; gBattle_BG2_Y = 320; - trainerTournamentId = sBattleDomeStruct->unk_11[0]; - DisplayTrainerInfoOnCard(gTasks[taskId].data[2] | 0x10, trainerTournamentId); + trainerTourneyId = sInfoCard->tournamentIds[0]; + DisplayTrainerInfoOnCard(gTasks[taskId].tUsingAlternateSlot | MOVE_CARD_UP, trainerTourneyId); } - else if (sBattleDomeStruct->unk_10 == 2) + else if (sInfoCard->pos == 2) { matchNo = gTasks[taskId2].data[1] - 16; - sub_8192F08(matchNo, sBattleDomeStruct->unk_11); + BufferDomeWinString(matchNo, sInfoCard->tournamentIds); gBattle_BG2_X = 0; gBattle_BG2_Y = 320; - trainerTournamentId = sBattleDomeStruct->unk_11[1]; - DisplayTrainerInfoOnCard(gTasks[taskId].data[2] | 0x10, trainerTournamentId); + trainerTourneyId = sInfoCard->tournamentIds[1]; + DisplayTrainerInfoOnCard(gTasks[taskId].tUsingAlternateSlot | MOVE_CARD_UP, trainerTourneyId); } else { gBattle_BG2_X = 256; gBattle_BG2_Y = 160; matchNo = gTasks[taskId2].data[1] - 16; - DisplayMatchInfoOnCard(gTasks[taskId].data[2] | 0x10, matchNo); + DisplayMatchInfoOnCard(gTasks[taskId].tUsingAlternateSlot | MOVE_CARD_UP, matchNo); } } - for (i = 0; i < DOME_TOURNAMENT_TRAINERS_COUNT / 2; i++) + for (i = 0; i < NUM_INFOCARD_SPRITES / 2; i++) { if (i < 2) { - if (sBattleDomeStruct->arr[i] != 0xFF) + if (sInfoCard->spriteIds[i] != 0xFF) { - gSprites[sBattleDomeStruct->arr[i]].callback = SpriteCb_TrainerIconCardScrollUp; - gSprites[sBattleDomeStruct->arr[i]].data[0] = gTasks[taskId].data[2] ^ 1; - gSprites[sBattleDomeStruct->arr[i]].data[1] = 0; - gSprites[sBattleDomeStruct->arr[i]].data[2] = i; - gSprites[sBattleDomeStruct->arr[i]].data[3] = sBattleDomeStruct->arr[i]; + gSprites[sInfoCard->spriteIds[i]].callback = SpriteCb_TrainerIconCardScrollUp; + gSprites[sInfoCard->spriteIds[i]].data[0] = gTasks[taskId].tUsingAlternateSlot ^ 1; + gSprites[sInfoCard->spriteIds[i]].data[1] = 0; + gSprites[sInfoCard->spriteIds[i]].data[2] = i; + gSprites[sInfoCard->spriteIds[i]].data[3] = sInfoCard->spriteIds[i]; } } else { - if (sBattleDomeStruct->arr[i] != 0xFF) + if (sInfoCard->spriteIds[i] != 0xFF) { - gSprites[sBattleDomeStruct->arr[i]].callback = SpriteCb_MonIconCardScrollUp; - gSprites[sBattleDomeStruct->arr[i]].data[0] = gTasks[taskId].data[2] ^ 1; - gSprites[sBattleDomeStruct->arr[i]].data[1] = 0; - gSprites[sBattleDomeStruct->arr[i]].data[2] = i; + gSprites[sInfoCard->spriteIds[i]].callback = SpriteCb_MonIconCardScrollUp; + gSprites[sInfoCard->spriteIds[i]].data[0] = gTasks[taskId].tUsingAlternateSlot ^ 1; + gSprites[sInfoCard->spriteIds[i]].data[1] = 0; + gSprites[sInfoCard->spriteIds[i]].data[2] = i; } } } - for (i = DOME_TOURNAMENT_TRAINERS_COUNT / 2; i < DOME_TOURNAMENT_TRAINERS_COUNT; i++) + for (i = NUM_INFOCARD_SPRITES / 2; i < NUM_INFOCARD_SPRITES; i++) { if (i < 10) { - if (sBattleDomeStruct->arr[i] != 0xFF) + if (sInfoCard->spriteIds[i] != 0xFF) { - gSprites[sBattleDomeStruct->arr[i]].callback = SpriteCb_TrainerIconCardScrollUp; - gSprites[sBattleDomeStruct->arr[i]].data[0] = gTasks[taskId].data[2]; - gSprites[sBattleDomeStruct->arr[i]].data[1] = 0; - gSprites[sBattleDomeStruct->arr[i]].data[2] = i; - gSprites[sBattleDomeStruct->arr[i]].data[3] = sBattleDomeStruct->arr[i]; + gSprites[sInfoCard->spriteIds[i]].callback = SpriteCb_TrainerIconCardScrollUp; + gSprites[sInfoCard->spriteIds[i]].data[0] = gTasks[taskId].tUsingAlternateSlot; + gSprites[sInfoCard->spriteIds[i]].data[1] = 0; + gSprites[sInfoCard->spriteIds[i]].data[2] = i; + gSprites[sInfoCard->spriteIds[i]].data[3] = sInfoCard->spriteIds[i]; } } else { - if (sBattleDomeStruct->arr[i] != 0xFF) + if (sInfoCard->spriteIds[i] != 0xFF) { - gSprites[sBattleDomeStruct->arr[i]].callback = SpriteCb_MonIconCardScrollUp; - gSprites[sBattleDomeStruct->arr[i]].data[0] = gTasks[taskId].data[2]; - gSprites[sBattleDomeStruct->arr[i]].data[1] = 0; - gSprites[sBattleDomeStruct->arr[i]].data[2] = i; + gSprites[sInfoCard->spriteIds[i]].callback = SpriteCb_MonIconCardScrollUp; + gSprites[sInfoCard->spriteIds[i]].data[0] = gTasks[taskId].tUsingAlternateSlot; + gSprites[sInfoCard->spriteIds[i]].data[1] = 0; + gSprites[sInfoCard->spriteIds[i]].data[2] = i; } } } - gTasks[taskId].data[0] = 4; + gTasks[taskId].tState = STATE_MOVE_UP; gTasks[taskId].data[5] = 0; break; - case 2: - case 6: - if (gTasks[taskId].data[2]) + case TRAINERCARD_INPUT_DOWN: + case MATCHCARD_INPUT_DOWN: + if (gTasks[taskId].tUsingAlternateSlot) { gBattle_BG0_X = 0; gBattle_BG0_Y = 0; @@ -3931,107 +3802,107 @@ static void sub_8190CD4(u8 taskId) gBattle_BG1_Y = 0; } - if (i == 2) + if (i == TRAINERCARD_INPUT_DOWN) { - if (sBattleDomeStruct->unk_10 == 0) + if (sInfoCard->pos == 0) { gBattle_BG2_X = 0; gBattle_BG2_Y = 160; - trainerTournamentId = sTourneyTreeTrainerIds[gTasks[taskId2].data[1]]; - DisplayTrainerInfoOnCard(gTasks[taskId].data[2] | 4, trainerTournamentId); + trainerTourneyId = sTourneyTreeTrainerIds[gTasks[taskId2].data[1]]; + DisplayTrainerInfoOnCard(gTasks[taskId].tUsingAlternateSlot | MOVE_CARD_DOWN, trainerTourneyId); } else { gBattle_BG2_X = 0; gBattle_BG2_Y = 0; - trainerTournamentId = sTourneyTreeTrainerIds[gTasks[taskId2].data[1]]; - DisplayTrainerInfoOnCard(gTasks[taskId].data[2] | 4, trainerTournamentId); - sBattleDomeStruct->unk_10 = 0; + trainerTourneyId = sTourneyTreeTrainerIds[gTasks[taskId2].data[1]]; + DisplayTrainerInfoOnCard(gTasks[taskId].tUsingAlternateSlot | MOVE_CARD_DOWN, trainerTourneyId); + sInfoCard->pos = 0; } } - else + else // i == MATCHCARD_INPUT_DOWN { - if (sBattleDomeStruct->unk_10 == 0) + if (sInfoCard->pos == 0) { matchNo = gTasks[taskId2].data[1] - 16; - sub_8192F08(matchNo, sBattleDomeStruct->unk_11); + BufferDomeWinString(matchNo, sInfoCard->tournamentIds); gBattle_BG2_X = 0; gBattle_BG2_Y = 160; - trainerTournamentId = sBattleDomeStruct->unk_11[0]; - DisplayTrainerInfoOnCard(gTasks[taskId].data[2] | 4, trainerTournamentId); + trainerTourneyId = sInfoCard->tournamentIds[0]; + DisplayTrainerInfoOnCard(gTasks[taskId].tUsingAlternateSlot | MOVE_CARD_DOWN, trainerTourneyId); } - else if (sBattleDomeStruct->unk_10 == 2) + else if (sInfoCard->pos == 2) { matchNo = gTasks[taskId2].data[1] - 16; - sub_8192F08(matchNo, sBattleDomeStruct->unk_11); + BufferDomeWinString(matchNo, sInfoCard->tournamentIds); gBattle_BG2_X = 0; gBattle_BG2_Y = 160; - trainerTournamentId = sBattleDomeStruct->unk_11[1]; - DisplayTrainerInfoOnCard(gTasks[taskId].data[2] | 4, trainerTournamentId); + trainerTourneyId = sInfoCard->tournamentIds[1]; + DisplayTrainerInfoOnCard(gTasks[taskId].tUsingAlternateSlot | MOVE_CARD_DOWN, trainerTourneyId); } else { gBattle_BG2_X = 256; gBattle_BG2_Y = 0; matchNo = gTasks[taskId2].data[1] - 16; - DisplayMatchInfoOnCard(gTasks[taskId].data[2] | 4, matchNo); + DisplayMatchInfoOnCard(gTasks[taskId].tUsingAlternateSlot | MOVE_CARD_DOWN, matchNo); } } - for (i = 0; i < DOME_TOURNAMENT_TRAINERS_COUNT / 2; i++) + for (i = 0; i < NUM_INFOCARD_SPRITES / 2; i++) { if (i < 2) { - if (sBattleDomeStruct->arr[i] != 0xFF) + if (sInfoCard->spriteIds[i] != 0xFF) { - gSprites[sBattleDomeStruct->arr[i]].callback = SpriteCb_TrainerIconCardScrollDown; - gSprites[sBattleDomeStruct->arr[i]].data[0] = gTasks[taskId].data[2] ^ 1; - gSprites[sBattleDomeStruct->arr[i]].data[1] = 0; - gSprites[sBattleDomeStruct->arr[i]].data[2] = i; - gSprites[sBattleDomeStruct->arr[i]].data[3] = sBattleDomeStruct->arr[i]; + gSprites[sInfoCard->spriteIds[i]].callback = SpriteCb_TrainerIconCardScrollDown; + gSprites[sInfoCard->spriteIds[i]].data[0] = gTasks[taskId].tUsingAlternateSlot ^ 1; + gSprites[sInfoCard->spriteIds[i]].data[1] = 0; + gSprites[sInfoCard->spriteIds[i]].data[2] = i; + gSprites[sInfoCard->spriteIds[i]].data[3] = sInfoCard->spriteIds[i]; } } else { - if (sBattleDomeStruct->arr[i] != 0xFF) + if (sInfoCard->spriteIds[i] != 0xFF) { - gSprites[sBattleDomeStruct->arr[i]].callback = SpriteCb_MonIconCardScrollDown; - gSprites[sBattleDomeStruct->arr[i]].data[0] = gTasks[taskId].data[2] ^ 1; - gSprites[sBattleDomeStruct->arr[i]].data[1] = 0; - gSprites[sBattleDomeStruct->arr[i]].data[2] = i; + gSprites[sInfoCard->spriteIds[i]].callback = SpriteCb_MonIconCardScrollDown; + gSprites[sInfoCard->spriteIds[i]].data[0] = gTasks[taskId].tUsingAlternateSlot ^ 1; + gSprites[sInfoCard->spriteIds[i]].data[1] = 0; + gSprites[sInfoCard->spriteIds[i]].data[2] = i; } } } - for (i = DOME_TOURNAMENT_TRAINERS_COUNT / 2; i < DOME_TOURNAMENT_TRAINERS_COUNT; i++) + for (i = NUM_INFOCARD_SPRITES / 2; i < NUM_INFOCARD_SPRITES; i++) { if (i < 10) { - if (sBattleDomeStruct->arr[i] != 0xFF) + if (sInfoCard->spriteIds[i] != 0xFF) { - gSprites[sBattleDomeStruct->arr[i]].callback = SpriteCb_TrainerIconCardScrollDown; - gSprites[sBattleDomeStruct->arr[i]].data[0] = gTasks[taskId].data[2]; - gSprites[sBattleDomeStruct->arr[i]].data[1] = 0; - gSprites[sBattleDomeStruct->arr[i]].data[2] = i; - gSprites[sBattleDomeStruct->arr[i]].data[3] = sBattleDomeStruct->arr[i]; + gSprites[sInfoCard->spriteIds[i]].callback = SpriteCb_TrainerIconCardScrollDown; + gSprites[sInfoCard->spriteIds[i]].data[0] = gTasks[taskId].tUsingAlternateSlot; + gSprites[sInfoCard->spriteIds[i]].data[1] = 0; + gSprites[sInfoCard->spriteIds[i]].data[2] = i; + gSprites[sInfoCard->spriteIds[i]].data[3] = sInfoCard->spriteIds[i]; } } else { - if (sBattleDomeStruct->arr[i] != 0xFF) + if (sInfoCard->spriteIds[i] != 0xFF) { - gSprites[sBattleDomeStruct->arr[i]].callback = SpriteCb_MonIconCardScrollDown; - gSprites[sBattleDomeStruct->arr[i]].data[0] = gTasks[taskId].data[2]; - gSprites[sBattleDomeStruct->arr[i]].data[1] = 0; - gSprites[sBattleDomeStruct->arr[i]].data[2] = i; + gSprites[sInfoCard->spriteIds[i]].callback = SpriteCb_MonIconCardScrollDown; + gSprites[sInfoCard->spriteIds[i]].data[0] = gTasks[taskId].tUsingAlternateSlot; + gSprites[sInfoCard->spriteIds[i]].data[1] = 0; + gSprites[sInfoCard->spriteIds[i]].data[2] = i; } } } - gTasks[taskId].data[0] = 5; + gTasks[taskId].tState = STATE_MOVE_DOWN; gTasks[taskId].data[5] = 0; break; - case 3: - if (gTasks[taskId].data[2]) + case TRAINERCARD_INPUT_LEFT: + if (gTasks[taskId].tUsingAlternateSlot) { gBattle_BG0_X = 0; gBattle_BG0_Y = 0; @@ -4046,75 +3917,75 @@ static void sub_8190CD4(u8 taskId) gBattle_BG1_Y = 0; } - if (sBattleDomeStruct->unk_10 == 0) + if (sInfoCard->pos == 0) { gBattle_BG2_X = 256; gBattle_BG2_Y = 160; - trainerTournamentId = sTourneyTreeTrainerIds[gTasks[taskId2].data[1]]; - DisplayTrainerInfoOnCard(gTasks[taskId].data[2] | 8, trainerTournamentId); + trainerTourneyId = sTourneyTreeTrainerIds[gTasks[taskId2].data[1]]; + DisplayTrainerInfoOnCard(gTasks[taskId].tUsingAlternateSlot | MOVE_CARD_LEFT, trainerTourneyId); } else { gBattle_BG2_X = 256; gBattle_BG2_Y = 0; - matchNo = gUnknown_0860D15C[gTasks[taskId2].data[1]][sBattleDomeStruct->unk_10 - 1]; - DisplayMatchInfoOnCard(gTasks[taskId].data[2] | 8, matchNo); + matchNo = sIdToMatchNumber[gTasks[taskId2].data[1]][sInfoCard->pos - 1]; + DisplayMatchInfoOnCard(gTasks[taskId].tUsingAlternateSlot | MOVE_CARD_LEFT, matchNo); } - for (i = 0; i < DOME_TOURNAMENT_TRAINERS_COUNT / 2; i++) + for (i = 0; i < NUM_INFOCARD_SPRITES / 2; i++) { if (i < 2) { - if (sBattleDomeStruct->arr[i] != 0xFF) + if (sInfoCard->spriteIds[i] != 0xFF) { - gSprites[sBattleDomeStruct->arr[i]].callback = SpriteCb_TrainerIconCardScrollLeft; - gSprites[sBattleDomeStruct->arr[i]].data[0] = gTasks[taskId].data[2] ^ 1; - gSprites[sBattleDomeStruct->arr[i]].data[1] = 0; - gSprites[sBattleDomeStruct->arr[i]].data[2] = i; - gSprites[sBattleDomeStruct->arr[i]].data[3] = sBattleDomeStruct->arr[i]; + gSprites[sInfoCard->spriteIds[i]].callback = SpriteCb_TrainerIconCardScrollLeft; + gSprites[sInfoCard->spriteIds[i]].data[0] = gTasks[taskId].tUsingAlternateSlot ^ 1; + gSprites[sInfoCard->spriteIds[i]].data[1] = 0; + gSprites[sInfoCard->spriteIds[i]].data[2] = i; + gSprites[sInfoCard->spriteIds[i]].data[3] = sInfoCard->spriteIds[i]; } } else { - if (sBattleDomeStruct->arr[i] != 0xFF) + if (sInfoCard->spriteIds[i] != 0xFF) { - gSprites[sBattleDomeStruct->arr[i]].callback = SpriteCb_MonIconCardScrollLeft; - gSprites[sBattleDomeStruct->arr[i]].data[0] = gTasks[taskId].data[2] ^ 1; - gSprites[sBattleDomeStruct->arr[i]].data[1] = 0; - gSprites[sBattleDomeStruct->arr[i]].data[2] = i; + gSprites[sInfoCard->spriteIds[i]].callback = SpriteCb_MonIconCardScrollLeft; + gSprites[sInfoCard->spriteIds[i]].data[0] = gTasks[taskId].tUsingAlternateSlot ^ 1; + gSprites[sInfoCard->spriteIds[i]].data[1] = 0; + gSprites[sInfoCard->spriteIds[i]].data[2] = i; } } } - for (i = DOME_TOURNAMENT_TRAINERS_COUNT / 2; i < DOME_TOURNAMENT_TRAINERS_COUNT; i++) + for (i = NUM_INFOCARD_SPRITES / 2; i < NUM_INFOCARD_SPRITES; i++) { if (i < 10) { - if (sBattleDomeStruct->arr[i] != 0xFF) + if (sInfoCard->spriteIds[i] != 0xFF) { - gSprites[sBattleDomeStruct->arr[i]].callback = SpriteCb_TrainerIconCardScrollLeft; - gSprites[sBattleDomeStruct->arr[i]].data[0] = gTasks[taskId].data[2]; - gSprites[sBattleDomeStruct->arr[i]].data[1] = 0; - gSprites[sBattleDomeStruct->arr[i]].data[2] = i; - gSprites[sBattleDomeStruct->arr[i]].data[3] = sBattleDomeStruct->arr[i]; + gSprites[sInfoCard->spriteIds[i]].callback = SpriteCb_TrainerIconCardScrollLeft; + gSprites[sInfoCard->spriteIds[i]].data[0] = gTasks[taskId].tUsingAlternateSlot; + gSprites[sInfoCard->spriteIds[i]].data[1] = 0; + gSprites[sInfoCard->spriteIds[i]].data[2] = i; + gSprites[sInfoCard->spriteIds[i]].data[3] = sInfoCard->spriteIds[i]; } } else { - if (sBattleDomeStruct->arr[i] != 0xFF) + if (sInfoCard->spriteIds[i] != 0xFF) { - gSprites[sBattleDomeStruct->arr[i]].callback = SpriteCb_MonIconCardScrollLeft; - gSprites[sBattleDomeStruct->arr[i]].data[0] = gTasks[taskId].data[2]; - gSprites[sBattleDomeStruct->arr[i]].data[1] = 0; - gSprites[sBattleDomeStruct->arr[i]].data[2] = i; + gSprites[sInfoCard->spriteIds[i]].callback = SpriteCb_MonIconCardScrollLeft; + gSprites[sInfoCard->spriteIds[i]].data[0] = gTasks[taskId].tUsingAlternateSlot; + gSprites[sInfoCard->spriteIds[i]].data[1] = 0; + gSprites[sInfoCard->spriteIds[i]].data[2] = i; } } } - gTasks[taskId].data[0] = 6; + gTasks[taskId].tState = STATE_MOVE_LEFT; gTasks[taskId].data[5] = 0; break; - case 7: - if (gTasks[taskId].data[2]) + case MATCHCARD_INPUT_LEFT: + if (gTasks[taskId].tUsingAlternateSlot) { gBattle_BG0_X = 0; gBattle_BG0_Y = 0; @@ -4129,75 +4000,75 @@ static void sub_8190CD4(u8 taskId) gBattle_BG1_Y = 0; } - if (sBattleDomeStruct->unk_10 == 0) + if (sInfoCard->pos == 0) { gBattle_BG2_X = 256; gBattle_BG2_Y = 160; - trainerTournamentId = sBattleDomeStruct->unk_11[0]; - DisplayTrainerInfoOnCard(gTasks[taskId].data[2] | 8, trainerTournamentId); + trainerTourneyId = sInfoCard->tournamentIds[0]; + DisplayTrainerInfoOnCard(gTasks[taskId].tUsingAlternateSlot | MOVE_CARD_LEFT, trainerTourneyId); } else { gBattle_BG2_X = 0; gBattle_BG2_Y = 160; matchNo = gTasks[taskId2].data[1] - 16; - DisplayMatchInfoOnCard(gTasks[taskId].data[2] | 8, matchNo); + DisplayMatchInfoOnCard(gTasks[taskId].tUsingAlternateSlot | MOVE_CARD_LEFT, matchNo); } - for (i = 0; i < DOME_TOURNAMENT_TRAINERS_COUNT / 2; i++) + for (i = 0; i < NUM_INFOCARD_SPRITES / 2; i++) { if (i < 2) { - if (sBattleDomeStruct->arr[i] != 0xFF) + if (sInfoCard->spriteIds[i] != 0xFF) { - gSprites[sBattleDomeStruct->arr[i]].callback = SpriteCb_TrainerIconCardScrollLeft; - gSprites[sBattleDomeStruct->arr[i]].data[0] = gTasks[taskId].data[2] ^ 1; - gSprites[sBattleDomeStruct->arr[i]].data[1] = 0; - gSprites[sBattleDomeStruct->arr[i]].data[2] = i; - gSprites[sBattleDomeStruct->arr[i]].data[3] = sBattleDomeStruct->arr[i]; + gSprites[sInfoCard->spriteIds[i]].callback = SpriteCb_TrainerIconCardScrollLeft; + gSprites[sInfoCard->spriteIds[i]].data[0] = gTasks[taskId].tUsingAlternateSlot ^ 1; + gSprites[sInfoCard->spriteIds[i]].data[1] = 0; + gSprites[sInfoCard->spriteIds[i]].data[2] = i; + gSprites[sInfoCard->spriteIds[i]].data[3] = sInfoCard->spriteIds[i]; } } else { - if (sBattleDomeStruct->arr[i] != 0xFF) + if (sInfoCard->spriteIds[i] != 0xFF) { - gSprites[sBattleDomeStruct->arr[i]].callback = SpriteCb_MonIconCardScrollLeft; - gSprites[sBattleDomeStruct->arr[i]].data[0] = gTasks[taskId].data[2] ^ 1; - gSprites[sBattleDomeStruct->arr[i]].data[1] = 0; - gSprites[sBattleDomeStruct->arr[i]].data[2] = i; + gSprites[sInfoCard->spriteIds[i]].callback = SpriteCb_MonIconCardScrollLeft; + gSprites[sInfoCard->spriteIds[i]].data[0] = gTasks[taskId].tUsingAlternateSlot ^ 1; + gSprites[sInfoCard->spriteIds[i]].data[1] = 0; + gSprites[sInfoCard->spriteIds[i]].data[2] = i; } } } - for (i = DOME_TOURNAMENT_TRAINERS_COUNT / 2; i < DOME_TOURNAMENT_TRAINERS_COUNT; i++) + for (i = NUM_INFOCARD_SPRITES / 2; i < NUM_INFOCARD_SPRITES; i++) { if (i < 10) { - if (sBattleDomeStruct->arr[i] != 0xFF) + if (sInfoCard->spriteIds[i] != 0xFF) { - gSprites[sBattleDomeStruct->arr[i]].callback = SpriteCb_TrainerIconCardScrollLeft; - gSprites[sBattleDomeStruct->arr[i]].data[0] = gTasks[taskId].data[2]; - gSprites[sBattleDomeStruct->arr[i]].data[1] = 0; - gSprites[sBattleDomeStruct->arr[i]].data[2] = i; - gSprites[sBattleDomeStruct->arr[i]].data[3] = sBattleDomeStruct->arr[i]; + gSprites[sInfoCard->spriteIds[i]].callback = SpriteCb_TrainerIconCardScrollLeft; + gSprites[sInfoCard->spriteIds[i]].data[0] = gTasks[taskId].tUsingAlternateSlot; + gSprites[sInfoCard->spriteIds[i]].data[1] = 0; + gSprites[sInfoCard->spriteIds[i]].data[2] = i; + gSprites[sInfoCard->spriteIds[i]].data[3] = sInfoCard->spriteIds[i]; } } else { - if (sBattleDomeStruct->arr[i] != 0xFF) + if (sInfoCard->spriteIds[i] != 0xFF) { - gSprites[sBattleDomeStruct->arr[i]].callback = SpriteCb_MonIconCardScrollLeft; - gSprites[sBattleDomeStruct->arr[i]].data[0] = gTasks[taskId].data[2]; - gSprites[sBattleDomeStruct->arr[i]].data[1] = 0; - gSprites[sBattleDomeStruct->arr[i]].data[2] = i; + gSprites[sInfoCard->spriteIds[i]].callback = SpriteCb_MonIconCardScrollLeft; + gSprites[sInfoCard->spriteIds[i]].data[0] = gTasks[taskId].tUsingAlternateSlot; + gSprites[sInfoCard->spriteIds[i]].data[1] = 0; + gSprites[sInfoCard->spriteIds[i]].data[2] = i; } } } - gTasks[taskId].data[0] = 6; + gTasks[taskId].tState = STATE_MOVE_LEFT; gTasks[taskId].data[5] = 0; break; - case 4: - if (gTasks[taskId].data[2]) + case TRAINERCARD_INPUT_RIGHT: + if (gTasks[taskId].tUsingAlternateSlot) { gBattle_BG0_X = 0; gBattle_BG0_Y = 0; @@ -4212,7 +4083,7 @@ static void sub_8190CD4(u8 taskId) gBattle_BG1_Y = 0; } - if (sBattleDomeStruct->unk_10 == 1) + if (sInfoCard->pos == 1) { gBattle_BG2_X = 0; gBattle_BG2_Y = 160; @@ -4222,63 +4093,63 @@ static void sub_8190CD4(u8 taskId) gBattle_BG2_X = 0; gBattle_BG2_Y = 0; } - matchNo = gUnknown_0860D15C[gTasks[taskId2].data[1]][sBattleDomeStruct->unk_10 - 1]; - DisplayMatchInfoOnCard(gTasks[taskId].data[2] | 2, matchNo); + matchNo = sIdToMatchNumber[gTasks[taskId2].data[1]][sInfoCard->pos - 1]; + DisplayMatchInfoOnCard(gTasks[taskId].tUsingAlternateSlot | MOVE_CARD_RIGHT, matchNo); - for (i = 0; i < DOME_TOURNAMENT_TRAINERS_COUNT / 2; i++) + for (i = 0; i < NUM_INFOCARD_SPRITES / 2; i++) { if (i < 2) { - if (sBattleDomeStruct->arr[i] != 0xFF) + if (sInfoCard->spriteIds[i] != 0xFF) { - gSprites[sBattleDomeStruct->arr[i]].callback = SpriteCb_TrainerIconCardScrollRight; - gSprites[sBattleDomeStruct->arr[i]].data[0] = gTasks[taskId].data[2] ^ 1; - gSprites[sBattleDomeStruct->arr[i]].data[1] = 0; - gSprites[sBattleDomeStruct->arr[i]].data[2] = i; - gSprites[sBattleDomeStruct->arr[i]].data[3] = sBattleDomeStruct->arr[i]; + gSprites[sInfoCard->spriteIds[i]].callback = SpriteCb_TrainerIconCardScrollRight; + gSprites[sInfoCard->spriteIds[i]].data[0] = gTasks[taskId].tUsingAlternateSlot ^ 1; + gSprites[sInfoCard->spriteIds[i]].data[1] = 0; + gSprites[sInfoCard->spriteIds[i]].data[2] = i; + gSprites[sInfoCard->spriteIds[i]].data[3] = sInfoCard->spriteIds[i]; } } else { - if (sBattleDomeStruct->arr[i] != 0xFF) + if (sInfoCard->spriteIds[i] != 0xFF) { - gSprites[sBattleDomeStruct->arr[i]].callback = SpriteCb_MonIconCardScrollRight; - gSprites[sBattleDomeStruct->arr[i]].data[0] = gTasks[taskId].data[2] ^ 1; - gSprites[sBattleDomeStruct->arr[i]].data[1] = 0; - gSprites[sBattleDomeStruct->arr[i]].data[2] = i; + gSprites[sInfoCard->spriteIds[i]].callback = SpriteCb_MonIconCardScrollRight; + gSprites[sInfoCard->spriteIds[i]].data[0] = gTasks[taskId].tUsingAlternateSlot ^ 1; + gSprites[sInfoCard->spriteIds[i]].data[1] = 0; + gSprites[sInfoCard->spriteIds[i]].data[2] = i; } } } - for (i = DOME_TOURNAMENT_TRAINERS_COUNT / 2; i < DOME_TOURNAMENT_TRAINERS_COUNT; i++) + for (i = NUM_INFOCARD_SPRITES / 2; i < NUM_INFOCARD_SPRITES; i++) { if (i < 10) { - if (sBattleDomeStruct->arr[i] != 0xFF) + if (sInfoCard->spriteIds[i] != 0xFF) { - gSprites[sBattleDomeStruct->arr[i]].callback = SpriteCb_TrainerIconCardScrollRight; - gSprites[sBattleDomeStruct->arr[i]].data[0] = gTasks[taskId].data[2]; - gSprites[sBattleDomeStruct->arr[i]].data[1] = 0; - gSprites[sBattleDomeStruct->arr[i]].data[2] = i; - gSprites[sBattleDomeStruct->arr[i]].data[3] = sBattleDomeStruct->arr[i]; + gSprites[sInfoCard->spriteIds[i]].callback = SpriteCb_TrainerIconCardScrollRight; + gSprites[sInfoCard->spriteIds[i]].data[0] = gTasks[taskId].tUsingAlternateSlot; + gSprites[sInfoCard->spriteIds[i]].data[1] = 0; + gSprites[sInfoCard->spriteIds[i]].data[2] = i; + gSprites[sInfoCard->spriteIds[i]].data[3] = sInfoCard->spriteIds[i]; } } else { - if (sBattleDomeStruct->arr[i] != 0xFF) + if (sInfoCard->spriteIds[i] != 0xFF) { - gSprites[sBattleDomeStruct->arr[i]].callback = SpriteCb_MonIconCardScrollRight; - gSprites[sBattleDomeStruct->arr[i]].data[0] = gTasks[taskId].data[2]; - gSprites[sBattleDomeStruct->arr[i]].data[1] = 0; - gSprites[sBattleDomeStruct->arr[i]].data[2] = i; + gSprites[sInfoCard->spriteIds[i]].callback = SpriteCb_MonIconCardScrollRight; + gSprites[sInfoCard->spriteIds[i]].data[0] = gTasks[taskId].tUsingAlternateSlot; + gSprites[sInfoCard->spriteIds[i]].data[1] = 0; + gSprites[sInfoCard->spriteIds[i]].data[2] = i; } } } - gTasks[taskId].data[0] = 7; + gTasks[taskId].tState = STATE_MOVE_RIGHT; gTasks[taskId].data[5] = 0; break; - case 8: - if (gTasks[taskId].data[2]) + case MATCHCARD_INPUT_RIGHT: + if (gTasks[taskId].tUsingAlternateSlot) { gBattle_BG0_X = 0; gBattle_BG0_Y = 0; @@ -4293,76 +4164,76 @@ static void sub_8190CD4(u8 taskId) gBattle_BG1_Y = 0; } - if (sBattleDomeStruct->unk_10 == 2) + if (sInfoCard->pos == 2) { gBattle_BG2_X = 256; gBattle_BG2_Y = 160; - trainerTournamentId = sBattleDomeStruct->unk_11[1]; - DisplayTrainerInfoOnCard(gTasks[taskId].data[2] | 2, trainerTournamentId); + trainerTourneyId = sInfoCard->tournamentIds[1]; + DisplayTrainerInfoOnCard(gTasks[taskId].tUsingAlternateSlot | MOVE_CARD_RIGHT, trainerTourneyId); } else { gBattle_BG2_X = 0; gBattle_BG2_Y = 160; matchNo = gTasks[taskId2].data[1] - 16; - DisplayMatchInfoOnCard(gTasks[taskId].data[2] | 2, matchNo); + DisplayMatchInfoOnCard(gTasks[taskId].tUsingAlternateSlot | MOVE_CARD_RIGHT, matchNo); } - for (i = 0; i < DOME_TOURNAMENT_TRAINERS_COUNT / 2; i++) + for (i = 0; i < NUM_INFOCARD_SPRITES / 2; i++) { if (i < 2) { - if (sBattleDomeStruct->arr[i] != 0xFF) + if (sInfoCard->spriteIds[i] != 0xFF) { - gSprites[sBattleDomeStruct->arr[i]].callback = SpriteCb_TrainerIconCardScrollRight; - gSprites[sBattleDomeStruct->arr[i]].data[0] = gTasks[taskId].data[2] ^ 1; - gSprites[sBattleDomeStruct->arr[i]].data[1] = 0; - gSprites[sBattleDomeStruct->arr[i]].data[2] = i; - gSprites[sBattleDomeStruct->arr[i]].data[3] = sBattleDomeStruct->arr[i]; + gSprites[sInfoCard->spriteIds[i]].callback = SpriteCb_TrainerIconCardScrollRight; + gSprites[sInfoCard->spriteIds[i]].data[0] = gTasks[taskId].tUsingAlternateSlot ^ 1; + gSprites[sInfoCard->spriteIds[i]].data[1] = 0; + gSprites[sInfoCard->spriteIds[i]].data[2] = i; + gSprites[sInfoCard->spriteIds[i]].data[3] = sInfoCard->spriteIds[i]; } } else { - if (sBattleDomeStruct->arr[i] != 0xFF) + if (sInfoCard->spriteIds[i] != 0xFF) { - gSprites[sBattleDomeStruct->arr[i]].callback = SpriteCb_MonIconCardScrollRight; - gSprites[sBattleDomeStruct->arr[i]].data[0] = gTasks[taskId].data[2] ^ 1; - gSprites[sBattleDomeStruct->arr[i]].data[1] = 0; - gSprites[sBattleDomeStruct->arr[i]].data[2] = i; + gSprites[sInfoCard->spriteIds[i]].callback = SpriteCb_MonIconCardScrollRight; + gSprites[sInfoCard->spriteIds[i]].data[0] = gTasks[taskId].tUsingAlternateSlot ^ 1; + gSprites[sInfoCard->spriteIds[i]].data[1] = 0; + gSprites[sInfoCard->spriteIds[i]].data[2] = i; } } } - for (i = DOME_TOURNAMENT_TRAINERS_COUNT / 2; i < DOME_TOURNAMENT_TRAINERS_COUNT; i++) + for (i = NUM_INFOCARD_SPRITES / 2; i < NUM_INFOCARD_SPRITES; i++) { if (i < 10) { - if (sBattleDomeStruct->arr[i] != 0xFF) + if (sInfoCard->spriteIds[i] != 0xFF) { - gSprites[sBattleDomeStruct->arr[i]].callback = SpriteCb_TrainerIconCardScrollRight; - gSprites[sBattleDomeStruct->arr[i]].data[0] = gTasks[taskId].data[2]; - gSprites[sBattleDomeStruct->arr[i]].data[1] = 0; - gSprites[sBattleDomeStruct->arr[i]].data[2] = i; - gSprites[sBattleDomeStruct->arr[i]].data[3] = sBattleDomeStruct->arr[i]; + gSprites[sInfoCard->spriteIds[i]].callback = SpriteCb_TrainerIconCardScrollRight; + gSprites[sInfoCard->spriteIds[i]].data[0] = gTasks[taskId].tUsingAlternateSlot; + gSprites[sInfoCard->spriteIds[i]].data[1] = 0; + gSprites[sInfoCard->spriteIds[i]].data[2] = i; + gSprites[sInfoCard->spriteIds[i]].data[3] = sInfoCard->spriteIds[i]; } } else { - if (sBattleDomeStruct->arr[i] != 0xFF) + if (sInfoCard->spriteIds[i] != 0xFF) { - gSprites[sBattleDomeStruct->arr[i]].callback = SpriteCb_MonIconCardScrollRight; - gSprites[sBattleDomeStruct->arr[i]].data[0] = gTasks[taskId].data[2]; - gSprites[sBattleDomeStruct->arr[i]].data[1] = 0; - gSprites[sBattleDomeStruct->arr[i]].data[2] = i; + gSprites[sInfoCard->spriteIds[i]].callback = SpriteCb_MonIconCardScrollRight; + gSprites[sInfoCard->spriteIds[i]].data[0] = gTasks[taskId].tUsingAlternateSlot; + gSprites[sInfoCard->spriteIds[i]].data[1] = 0; + gSprites[sInfoCard->spriteIds[i]].data[2] = i; } } } - gTasks[taskId].data[0] = 7; + gTasks[taskId].tState = STATE_MOVE_RIGHT; gTasks[taskId].data[5] = 0; break; } break; - case 4: + case STATE_MOVE_UP: if (++gTasks[taskId].data[5] != 41) { gBattle_BG0_Y -= 4; @@ -4371,10 +4242,10 @@ static void sub_8190CD4(u8 taskId) } else { - gTasks[taskId].data[0] = 2; + gTasks[taskId].tState = STATE_GET_INPUT; } break; - case 5: + case STATE_MOVE_DOWN: if (++gTasks[taskId].data[5] != 41) { gBattle_BG0_Y += 4; @@ -4383,10 +4254,10 @@ static void sub_8190CD4(u8 taskId) } else { - gTasks[taskId].data[0] = 2; + gTasks[taskId].tState = STATE_GET_INPUT; } break; - case 6: + case STATE_MOVE_LEFT: if (++gTasks[taskId].data[5] != 65) { gBattle_BG0_X -= 4; @@ -4395,10 +4266,10 @@ static void sub_8190CD4(u8 taskId) } else { - gTasks[taskId].data[0] = 2; + gTasks[taskId].tState = STATE_GET_INPUT; } break; - case 7: + case STATE_MOVE_RIGHT: if (++gTasks[taskId].data[5] != 65) { gBattle_BG0_X += 4; @@ -4407,43 +4278,44 @@ static void sub_8190CD4(u8 taskId) } else { - gTasks[taskId].data[0] = 2; + gTasks[taskId].tState = STATE_GET_INPUT; } break; - case 8: + case STATE_CLOSE_CARD: if (!gPaletteFade.active) { - for (i = 0; i < DOME_TOURNAMENT_TRAINERS_COUNT / 2; i++) + for (i = 0; i < NUM_INFOCARD_SPRITES / 2; i++) { if (i < 2) { - if (sBattleDomeStruct->arr[i] != 0xFF) - FreeAndDestroyTrainerPicSprite(sBattleDomeStruct->arr[i]); + if (sInfoCard->spriteIds[i] != 0xFF) + FreeAndDestroyTrainerPicSprite(sInfoCard->spriteIds[i]); } else { - if (sBattleDomeStruct->arr[i] != 0xFF) - sub_80D2EF8(&gSprites[sBattleDomeStruct->arr[i]]); + if (sInfoCard->spriteIds[i] != 0xFF) + FreeAndDestroyMonIconSprite(&gSprites[sInfoCard->spriteIds[i]]); } } - for (i = DOME_TOURNAMENT_TRAINERS_COUNT / 2; i < DOME_TOURNAMENT_TRAINERS_COUNT; i++) + for (i = NUM_INFOCARD_SPRITES / 2; i < NUM_INFOCARD_SPRITES; i++) { if (i < 10) { - if (sBattleDomeStruct->arr[i] != 0xFF) - FreeAndDestroyTrainerPicSprite(sBattleDomeStruct->arr[i]); + if (sInfoCard->spriteIds[i] != 0xFF) + FreeAndDestroyTrainerPicSprite(sInfoCard->spriteIds[i]); } else { - if (sBattleDomeStruct->arr[i] != 0xFF) - sub_80D2EF8(&gSprites[sBattleDomeStruct->arr[i]]); + if (sInfoCard->spriteIds[i] != 0xFF) + FreeAndDestroyMonIconSprite(&gSprites[sInfoCard->spriteIds[i]]); } } FreeMonIconPalettes(); - FREE_AND_SET_NULL(sBattleDomeStruct); + FREE_AND_SET_NULL(sInfoCard); FreeAllWindowBuffers(); - if (r9 == 0) + + if (mode == INFOCARD_NEXT_OPPONENT) { SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic); } @@ -4451,10 +4323,10 @@ static void sub_8190CD4(u8 taskId) { i = CreateTask(Task_ShowTourneyTree, 0); gTasks[i].data[0] = 0; - gTasks[i].data[1] = 0; + gTasks[i].tNotInteractive = FALSE; gTasks[i].data[2] = 3; gTasks[i].data[3] = gTasks[taskId].data[4]; - gTasks[i].data[4] = gTasks[taskId2].data[6]; + gTasks[i].tIsPrevTourneyTree = gTasks[taskId2].data[6]; } DestroyTask(taskId); } @@ -4462,116 +4334,142 @@ static void sub_8190CD4(u8 taskId) } } -static u8 sub_819221C(u8 taskId) +// undefine task states for Task_HandleInfoCardInput +#undef STATE_FADE_IN +#undef STATE_WAIT_FADE +#undef STATE_GET_INPUT +#undef STATE_REACT_INPUT +#undef STATE_MOVE_UP +#undef STATE_MOVE_DOWN +#undef STATE_MOVE_LEFT +#undef STATE_MOVE_RIGHT +#undef STATE_CLOSE_CARD + +static u8 Task_GetInfoCardInput(u8 taskId) { - u8 retVal = 0; + u8 input = INFOCARD_INPUT_NONE; int taskId2 = gTasks[taskId].data[4]; - int r5 = gTasks[taskId2].data[1]; - u8 r10 = sTourneyTreeTrainerIds[r5]; + int position = gTasks[taskId2].data[1]; + u8 tourneyId = sTourneyTreeTrainerIds[position]; u16 roundId = gSaveBlock2Ptr->frontier.curChallengeBattleNum; if (gMain.newKeys & (A_BUTTON | B_BUTTON)) - retVal = 9; + input = INFOCARD_INPUT_AB; - if (gTasks[taskId].data[3] == 0) - return retVal; + // Next opponent card cant scroll + if (gTasks[taskId].data[3] == INFOCARD_NEXT_OPPONENT) + return input; - if (gTasks[taskId].data[3] == 1) + if (gTasks[taskId].data[3] == INFOCARD_TRAINER) { - if (gMain.newKeys & DPAD_UP && sBattleDomeStruct->unk_10 == 0) + // For trainer info cards, pos is 0 when on a trainer info card (not viewing that trainer's match progression) + // Scrolling up/down from a trainer info card goes to other trainer info cards + if (gMain.newKeys & DPAD_UP && sInfoCard->pos == 0) { - if (r5 == 0) - r5 = 15; + if (position == 0) + position = DOME_TOURNAMENT_TRAINERS_COUNT - 1; else - r5--; - retVal = 1; + position--; + input = TRAINERCARD_INPUT_UP; } - else if (gMain.newKeys & DPAD_DOWN && sBattleDomeStruct->unk_10 == 0) + else if (gMain.newKeys & DPAD_DOWN && sInfoCard->pos == 0) { - if (r5 == 15) - r5 = 0; + if (position == DOME_TOURNAMENT_TRAINERS_COUNT - 1) + position = 0; else - r5++; - retVal = 2; + position++; + input = TRAINERCARD_INPUT_DOWN; } - else if (gMain.newKeys & DPAD_LEFT && sBattleDomeStruct->unk_10 != 0) + // Scrolling left can only be done after scrolling right + else if (gMain.newKeys & DPAD_LEFT && sInfoCard->pos != 0) { - sBattleDomeStruct->unk_10--; - retVal = 3; + sInfoCard->pos--; + input = TRAINERCARD_INPUT_LEFT; } + // Scrolling right from a trainer info card shows their match progression else if (gMain.newKeys & DPAD_RIGHT) { - if (gSaveBlock2Ptr->frontier.domeTrainers[r10].isEliminated && sBattleDomeStruct->unk_10 - 1 < gSaveBlock2Ptr->frontier.domeTrainers[r10].eliminatedAt) + // Can only scroll right from a trainer card until the round they were eliminated + if (DOME_TRAINERS[tourneyId].isEliminated && sInfoCard->pos - 1 < DOME_TRAINERS[tourneyId].eliminatedAt) { - sBattleDomeStruct->unk_10++; - retVal = 4; + sInfoCard->pos++; + input = TRAINERCARD_INPUT_RIGHT; } - if (!gSaveBlock2Ptr->frontier.domeTrainers[r10].isEliminated && sBattleDomeStruct->unk_10 - 1 < roundId) + // otherwise can scroll as far right as the current round allows + if (!DOME_TRAINERS[tourneyId].isEliminated && sInfoCard->pos - 1 < roundId) { - sBattleDomeStruct->unk_10++; - retVal = 4; + sInfoCard->pos++; + input = TRAINERCARD_INPUT_RIGHT; } } - if (retVal == 9) + if (input == INFOCARD_INPUT_AB) { - if (sBattleDomeStruct->unk_10 != 0) - gTasks[taskId2].data[1] = gUnknown_0860D1A0[r5 / 2][sBattleDomeStruct->unk_10 - 1]; + if (sInfoCard->pos != 0) + gTasks[taskId2].data[1] = gUnknown_0860D1A0[position / 2][sInfoCard->pos - 1]; else - gTasks[taskId2].data[1] = r5; + gTasks[taskId2].data[1] = position; } } - else + else // gTasks[taskId].data[3] == INFOCARD_MATCH { - if (gMain.newKeys & DPAD_UP && sBattleDomeStruct->unk_10 == 1) + // For match info cards, pos is 1 when on the match card, 0 when on the left trainer, and 1 when on the right trainer + // Scrolling up/down from a match info card goes to the next/previous match + if (gMain.newKeys & DPAD_UP && sInfoCard->pos == 1) { - if (r5 == 16) - r5 = gUnknown_0860D19C[roundId]; + if (position == DOME_TOURNAMENT_TRAINERS_COUNT) + position = sLastMatchCardNum[roundId]; else - r5--; - retVal = 5; + position--; + input = MATCHCARD_INPUT_UP; } - else if (gMain.newKeys & DPAD_DOWN && sBattleDomeStruct->unk_10 == 1) + else if (gMain.newKeys & DPAD_DOWN && sInfoCard->pos == 1) { - if (r5 == gUnknown_0860D19C[roundId]) - r5 = 16; + if (position == sLastMatchCardNum[roundId]) + position = DOME_TOURNAMENT_TRAINERS_COUNT; else - r5++; - retVal = 6; + position++; + input = MATCHCARD_INPUT_DOWN; } - else if (gMain.newKeys & DPAD_LEFT && sBattleDomeStruct->unk_10 != 0) + // Scrolling left/right from a match info card shows the trainer info card of the competitors for that match + else if (gMain.newKeys & DPAD_LEFT && sInfoCard->pos != 0) { - retVal = 7; - sBattleDomeStruct->unk_10--; + input = MATCHCARD_INPUT_LEFT; + sInfoCard->pos--; } - else if (gMain.newKeys & DPAD_RIGHT && (sBattleDomeStruct->unk_10 == 0 || sBattleDomeStruct->unk_10 == 1)) + else if (gMain.newKeys & DPAD_RIGHT && (sInfoCard->pos == 0 || sInfoCard->pos == 1)) { - retVal = 8; - sBattleDomeStruct->unk_10++; + input = MATCHCARD_INPUT_RIGHT; + sInfoCard->pos++; } - if (retVal == 9) + if (input == INFOCARD_INPUT_AB) { - if (sBattleDomeStruct->unk_10 == 0) - gTasks[taskId2].data[1] = gUnknown_0860D1C0[sBattleDomeStruct->unk_11[0]]; - else if (sBattleDomeStruct->unk_10 == 2) - gTasks[taskId2].data[1] = gUnknown_0860D1C0[sBattleDomeStruct->unk_11[1]]; - else - gTasks[taskId2].data[1] = r5; + if (sInfoCard->pos == 0) // On left trainer info card + gTasks[taskId2].data[1] = gUnknown_0860D1C0[sInfoCard->tournamentIds[0]]; + else if (sInfoCard->pos == 2) // On right trainer info card + gTasks[taskId2].data[1] = gUnknown_0860D1C0[sInfoCard->tournamentIds[1]]; + else // On match info card + gTasks[taskId2].data[1] = position; } } - if (retVal != 0 && retVal != 9) + if (input != INFOCARD_INPUT_NONE && input != INFOCARD_INPUT_AB) { PlaySE(SE_SELECT); - gTasks[taskId2].data[1] = r5; - gTasks[taskId].data[2] ^= 1; + gTasks[taskId2].data[1] = position; + gTasks[taskId].tUsingAlternateSlot ^= 1; } - return retVal; + return input; } -static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId) +#undef tUsingAlternateSlot + +// allocatedArray below needs to be large enough to hold stat totals for each mon, or totals of each type of move points +#define ALLOC_ARRAY_SIZE (NUM_STATS * FRONTIER_PARTY_SIZE >= NUM_MOVE_POINT_TYPES ? (NUM_STATS * FRONTIER_PARTY_SIZE) : NUM_MOVE_POINT_TYPES) + +static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTourneyId) { struct TextPrinterTemplate textPrinter; int i, j, k; @@ -4581,63 +4479,67 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId) int windowId = 0; int x = 0, y = 0; u8 palSlot = 0; - s16 *allocatedArray = AllocZeroed(sizeof(s16) * 18); - trainerId = gSaveBlock2Ptr->frontier.domeTrainers[trainerTournamentId].trainerId; + s16 *allocatedArray = AllocZeroed(sizeof(s16) * ALLOC_ARRAY_SIZE); + trainerId = DOME_TRAINERS[trainerTourneyId].trainerId; - if (flags & 1) - arrId = 8, windowId = 9, palSlot = 2; - if (flags & 2) + if (flags & CARD_ALTERNATE_SLOT) + arrId = 2 * (FRONTIER_PARTY_SIZE + 1), windowId = 9, palSlot = 2; + if (flags & MOVE_CARD_RIGHT) x = 256; - if (flags & 4) + if (flags & MOVE_CARD_DOWN) y = 160; - if (flags & 8) + if (flags & MOVE_CARD_LEFT) x = -256; - if (flags & 0x10) + if (flags & MOVE_CARD_UP) y = -160; + // Create trainer pic sprite if (trainerId == TRAINER_PLAYER) - sBattleDomeStruct->arr[arrId] = CreateTrainerPicSprite(PlayerGenderToFrontTrainerPicId(gSaveBlock2Ptr->playerGender), TRUE, x + 48, y + 64, palSlot + 12, 0xFFFF); + sInfoCard->spriteIds[arrId] = CreateTrainerPicSprite(PlayerGenderToFrontTrainerPicId(gSaveBlock2Ptr->playerGender), TRUE, x + 48, y + 64, palSlot + 12, 0xFFFF); else if (trainerId == TRAINER_FRONTIER_BRAIN) - sBattleDomeStruct->arr[arrId] = CreateTrainerPicSprite(GetDomeBrainTrainerPicId(), TRUE, x + 48, y + 64, palSlot + 12, 0xFFFF); + sInfoCard->spriteIds[arrId] = CreateTrainerPicSprite(GetDomeBrainTrainerPicId(), TRUE, x + 48, y + 64, palSlot + 12, 0xFFFF); else - sBattleDomeStruct->arr[arrId] = CreateTrainerPicSprite(GetFrontierTrainerFrontSpriteId(trainerId), TRUE, x + 48, y + 64, palSlot + 12, 0xFFFF); + sInfoCard->spriteIds[arrId] = CreateTrainerPicSprite(GetFrontierTrainerFrontSpriteId(trainerId), TRUE, x + 48, y + 64, palSlot + 12, 0xFFFF); - if (flags & 0x1E) - gSprites[sBattleDomeStruct->arr[arrId]].invisible = TRUE; + if (flags & MOVE_CARD) + gSprites[sInfoCard->spriteIds[arrId]].invisible = TRUE; - for (i = 0; i < 3; i++) + // Create party mon icons + for (i = 0; i < FRONTIER_PARTY_SIZE; i++) { if (trainerId == TRAINER_PLAYER) { - sBattleDomeStruct->arr[2 + i + arrId] = CreateMonIcon(gSaveBlock2Ptr->frontier.domeMonIds[trainerTournamentId][i], + sInfoCard->spriteIds[2 + i + arrId] = CreateMonIcon(DOME_MONS[trainerTourneyId][i], SpriteCb_MonIcon, x | sInfoTrainerMonX[i], y + sInfoTrainerMonY[i], 0, 0, TRUE); - gSprites[sBattleDomeStruct->arr[2 + i + arrId]].oam.priority = 0; + gSprites[sInfoCard->spriteIds[2 + i + arrId]].oam.priority = 0; } else if (trainerId == TRAINER_FRONTIER_BRAIN) { - sBattleDomeStruct->arr[2 + i + arrId] = CreateMonIcon(gSaveBlock2Ptr->frontier.domeMonIds[trainerTournamentId][i], + sInfoCard->spriteIds[2 + i + arrId] = CreateMonIcon(DOME_MONS[trainerTourneyId][i], SpriteCb_MonIcon, x | sInfoTrainerMonX[i], y + sInfoTrainerMonY[i], 0, 0, TRUE); - gSprites[sBattleDomeStruct->arr[2 + i + arrId]].oam.priority = 0; + gSprites[sInfoCard->spriteIds[2 + i + arrId]].oam.priority = 0; } else { - sBattleDomeStruct->arr[2 + i + arrId] = CreateMonIcon(gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[trainerTournamentId][i]].species, + sInfoCard->spriteIds[2 + i + arrId] = CreateMonIcon(gFacilityTrainerMons[DOME_MONS[trainerTourneyId][i]].species, SpriteCb_MonIcon, x | sInfoTrainerMonX[i], y + sInfoTrainerMonY[i], 0, 0, TRUE); - gSprites[sBattleDomeStruct->arr[2 + i + arrId]].oam.priority = 0; + gSprites[sInfoCard->spriteIds[2 + i + arrId]].oam.priority = 0; } - if (flags & 0x1E) - gSprites[sBattleDomeStruct->arr[2 + i + arrId]].invisible = TRUE; + if (flags & MOVE_CARD) + gSprites[sInfoCard->spriteIds[2 + i + arrId]].invisible = TRUE; } + + // Initialize the text printer textPrinter.fontId = 2; textPrinter.x = 0; textPrinter.y = 0; @@ -4646,10 +4548,11 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId) textPrinter.letterSpacing = 2; textPrinter.lineSpacing = 0; textPrinter.unk = 0; - textPrinter.fgColor = 14; - textPrinter.bgColor = 0; - textPrinter.shadowColor = 13; + textPrinter.fgColor = TEXT_DYNAMIC_COLOR_5; + textPrinter.bgColor = TEXT_COLOR_TRANSPARENT; + textPrinter.shadowColor = TEXT_DYNAMIC_COLOR_4; + // Get class and trainer name i = 0; if (trainerId == TRAINER_PLAYER) j = gFacilityClassToTrainerClass[FACILITY_CLASS_BRENDAN]; @@ -4678,6 +4581,7 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId) StringAppend(gStringVar1, gStringVar2); } + // Print class and trainer name textPrinter.currentX = GetStringCenterAlignXOffsetWithLetterSpacing(textPrinter.fontId, gStringVar1, 0xD0, textPrinter.letterSpacing); textPrinter.currentChar = gStringVar1; textPrinter.windowId = windowId; @@ -4686,15 +4590,16 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId) AddTextPrinter(&textPrinter, 0, NULL); textPrinter.letterSpacing = 0; - for (i = 0; i < 3; i++) + // Print names of the party mons + for (i = 0; i < FRONTIER_PARTY_SIZE; i++) { - textPrinter.currentY = gUnknown_0860D346[i]; + textPrinter.currentY = sSpeciesNameTextYCoords[i]; if (trainerId == TRAINER_PLAYER) - textPrinter.currentChar = gSpeciesNames[gSaveBlock2Ptr->frontier.domeMonIds[trainerTournamentId][i]]; + textPrinter.currentChar = gSpeciesNames[DOME_MONS[trainerTourneyId][i]]; else if (trainerId == TRAINER_FRONTIER_BRAIN) - textPrinter.currentChar = gSpeciesNames[gSaveBlock2Ptr->frontier.domeMonIds[trainerTournamentId][i]]; + textPrinter.currentChar = gSpeciesNames[DOME_MONS[trainerTourneyId][i]]; else - textPrinter.currentChar = gSpeciesNames[gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[trainerTournamentId][i]].species]; + textPrinter.currentChar = gSpeciesNames[gFacilityTrainerMons[DOME_MONS[trainerTourneyId][i]].species]; textPrinter.windowId = 1 + i + windowId; if (i == 1) @@ -4709,10 +4614,12 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId) PutWindowTilemap(windowId + 4); CopyWindowToVram(windowId + 4, 3); + + // Print text about trainers potential in the tourney if (trainerId == TRAINER_FRONTIER_BRAIN) - textPrinter.currentChar = sBattleDomePotentialTexts[16]; + textPrinter.currentChar = sBattleDomePotentialTexts[DOME_TOURNAMENT_TRAINERS_COUNT]; else - textPrinter.currentChar = sBattleDomePotentialTexts[trainerTournamentId]; + textPrinter.currentChar = sBattleDomePotentialTexts[trainerTourneyId]; textPrinter.fontId = 1; textPrinter.windowId = windowId + 4; @@ -4721,91 +4628,103 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId) textPrinter.currentY = 4; AddTextPrinter(&textPrinter, 0, NULL); - for (i = 0; i < 3; i++) + // Calculate move scores to determine the trainers battle style + for (i = 0; i < FRONTIER_PARTY_SIZE; i++) { for (j = 0; j < MAX_MON_MOVES; j++) { - for (k = 0; k < DOME_TOURNAMENT_TRAINERS_COUNT; k++) + for (k = 0; k < NUM_MOVE_POINT_TYPES; k++) { if (trainerId == TRAINER_FRONTIER_BRAIN) - allocatedArray[k] += sMovePointsForDomeTrainers[GetFrontierBrainMonMove(i, j)][k]; + allocatedArray[k] += sBattleStyleMovePoints[GetFrontierBrainMonMove(i, j)][k]; else if (trainerId == TRAINER_PLAYER) - allocatedArray[k] += sMovePointsForDomeTrainers[gSaveBlock2Ptr->frontier.field_EFC[i].moves[j]][k]; + allocatedArray[k] += sBattleStyleMovePoints[gSaveBlock2Ptr->frontier.domePlayerPartyData[i].moves[j]][k]; else - allocatedArray[k] += sMovePointsForDomeTrainers[gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[trainerTournamentId][i]].moves[j]][k]; + allocatedArray[k] += sBattleStyleMovePoints[gFacilityTrainerMons[DOME_MONS[trainerTourneyId][i]].moves[j]][k]; } } } - for (i = 0; i < ARRAY_COUNT(gUnknown_0860C988); i++) + // Get the battle style the trainer uses + // Each element of sBattleStyleThresholds is an array of point thresholds for particular move qualities + // If all the point thresholds in the array are satisfied, the player is considered to be using that battle style + for (i = 0; i < ARRAY_COUNT(sBattleStyleThresholds); i++) { - int r4 = 0; + int thresholdStatCount = 0; - for (k = 0, j = 0; j < DOME_TOURNAMENT_TRAINERS_COUNT; j++) + for (k = 0, j = 0; j < NUM_MOVE_POINT_TYPES; j++) { - if (gUnknown_0860C988[i][j] != 0) + if (sBattleStyleThresholds[i][j] != 0) { - r4++; - if (allocatedArray[j] != 0 && allocatedArray[j] >= gUnknown_0860C988[i][j]) - k++; + thresholdStatCount++; + if (allocatedArray[j] != 0 && allocatedArray[j] >= sBattleStyleThresholds[i][j]) + k++; // number of point thresholds met/exceeded } } - if (r4 == k) - break; + if (thresholdStatCount == k) + break; // All thresholds for battle style met/exceeded, player uses this battle style } + // Print the trainers battle style textPrinter.currentChar = sBattleDomeOpponentStyleTexts[i]; textPrinter.y = 20; textPrinter.currentY = 20; AddTextPrinter(&textPrinter, 0, NULL); - for (i = 0; i < 18; i++) + for (i = 0; i < ALLOC_ARRAY_SIZE; i++) allocatedArray[i] = 0; + // Calculate EV/nature points for the stat portion of battle style if (trainerId == TRAINER_FRONTIER_BRAIN || trainerId == TRAINER_PLAYER) { - for (i = 0; i < 3; i++) + for (i = 0; i < FRONTIER_PARTY_SIZE; i++) { - for (j = 0; j < 6; j++) + // Add the EVs for this mon + for (j = 0; j < NUM_STATS; j++) { if (trainerId == TRAINER_FRONTIER_BRAIN) allocatedArray[j] = GetFrontierBrainMonEvs(i, j); else - allocatedArray[j] = gSaveBlock2Ptr->frontier.field_EFC[i].evs[j]; + allocatedArray[j] = gSaveBlock2Ptr->frontier.domePlayerPartyData[i].evs[j]; } - allocatedArray[6] += allocatedArray[0]; - for (j = 0; j < 5; j++) + + // HP doesnt have a nature modifier, so just add it here + allocatedArray[NUM_STATS] += allocatedArray[STAT_HP]; + + // Add the EVs with the nature modifier for this mon and and track number of negative natures + for (j = 0; j < NUM_EV_STATS; j++) { if (trainerId == TRAINER_FRONTIER_BRAIN) nature = GetFrontierBrainMonNature(i); else - nature = gSaveBlock2Ptr->frontier.field_EFC[i].nature; + nature = gSaveBlock2Ptr->frontier.domePlayerPartyData[i].nature; if (gNatureStatTable[nature][j] > 0) { - allocatedArray[j + 7] += (allocatedArray[j + 1] * 110) / 100; + allocatedArray[j + NUM_STATS + 1] += (allocatedArray[j + 1] * 110) / 100; } else if (gNatureStatTable[nature][j] < 0) { - allocatedArray[j + 7] += (allocatedArray[j + 1] * 90) / 100; - allocatedArray[j + 13]++; + allocatedArray[j + NUM_STATS + 1] += (allocatedArray[j + 1] * 90) / 100; + allocatedArray[j + NUM_STATS + NUM_EV_STATS + 2]++; } else { - allocatedArray[j + 7] += allocatedArray[j + 1]; + allocatedArray[j + NUM_STATS + 1] += allocatedArray[j + 1]; } } } - for (j = 0, i = 0; i < 6; i++) - j += allocatedArray[6 + i]; - for (i = 0; i < 6; i++) - allocatedArray[i] = (allocatedArray[6 + i] * 100) / j; + for (j = 0, i = 0; i < NUM_STATS; i++) + j += allocatedArray[NUM_STATS + i]; + for (i = 0; i < NUM_STATS; i++) + allocatedArray[i] = (allocatedArray[NUM_STATS + i] * 100) / j; } + // Same as above but for regular trainers instead of the frontier brain or player else { - for (i = 0; i < 3; i++) + for (i = 0; i < FRONTIER_PARTY_SIZE; i++) { - int evBits = gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[trainerTournamentId][i]].evSpread; + int evBits = gFacilityTrainerMons[DOME_MONS[trainerTourneyId][i]].evSpread; for (k = 0, j = 0; j < NUM_STATS; j++) { allocatedArray[j] = 0; @@ -4814,7 +4733,7 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId) evBits >>= 1; } k = MAX_TOTAL_EVS / k; - evBits = gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[trainerTournamentId][i]].evSpread; + evBits = gFacilityTrainerMons[DOME_MONS[trainerTourneyId][i]].evSpread; for (j = 0; j < NUM_STATS; j++) { if (evBits & 1) @@ -4822,37 +4741,42 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId) evBits >>= 1; } - allocatedArray[6] += allocatedArray[0]; - for (j = 0; j < 5; j++) + allocatedArray[NUM_STATS] += allocatedArray[STAT_HP]; + for (j = 0; j < NUM_EV_STATS; j++) { - nature = gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[trainerTournamentId][i]].nature; + nature = gFacilityTrainerMons[DOME_MONS[trainerTourneyId][i]].nature; if (gNatureStatTable[nature][j] > 0) { - allocatedArray[j + 7] += (allocatedArray[j + 1] * 110) / 100; + allocatedArray[j + NUM_STATS + 1] += (allocatedArray[j + 1] * 110) / 100; } else if (gNatureStatTable[nature][j] < 0) { - allocatedArray[j + 7] += (allocatedArray[j + 1] * 90) / 100; - allocatedArray[j + 13]++; + allocatedArray[j + NUM_STATS + 1] += (allocatedArray[j + 1] * 90) / 100; + allocatedArray[j + NUM_STATS + NUM_EV_STATS + 2]++; } else { - allocatedArray[j + 7] += allocatedArray[j + 1]; + allocatedArray[j + NUM_STATS + 1] += allocatedArray[j + 1]; } } } - for (j = 0, i = 0; i < 6; i++) - j += allocatedArray[i + 6]; - for (i = 0; i < 6; i++) - allocatedArray[i] = (allocatedArray[6 + i] * 100) / j; + for (j = 0, i = 0; i < NUM_STATS; i++) + j += allocatedArray[i + NUM_STATS]; + for (i = 0; i < NUM_STATS; i++) + allocatedArray[i] = (allocatedArray[NUM_STATS + i] * 100) / j; } - for (i = 0, j = 0, k = 0; k < 6; k++) + // Count the number of good/bad stats for the party + // i is the number of good stats, j is the number of bad stats + for (i = 0, j = 0, k = 0; k < NUM_STATS; k++) { + // Any stat above 29 EVs is considered good if (allocatedArray[k] > 29) { + // If 2 good stats have been found already, choose which to use if (i == 2) { + if (allocatedArray[6] < allocatedArray[k]) { if (allocatedArray[7] < allocatedArray[k]) @@ -4885,8 +4809,11 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId) i++; } } + + // Any stat with 0 EVs is considered bad if (allocatedArray[k] == 0) { + // If 2 bad stats have been found already, choose which to use if (j == 2) { if (allocatedArray[k + 12] >= 2 @@ -4915,17 +4842,19 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId) } } + // Get the string ID to display which stats are good/bad if (i == 2) - i = gUnknown_0860D349[allocatedArray[6]] + (allocatedArray[7] - (allocatedArray[6] + 1)); + i = sStatTextOffsets[allocatedArray[6]] + (allocatedArray[7] - (allocatedArray[6] + 1)) + DOME_TEXT_TWO_GOOD_STATS; else if (i == 1) - i = allocatedArray[6] + 15; + i = allocatedArray[6] + DOME_TEXT_ONE_GOOD_STAT; else if (j == 2) - i = gUnknown_0860D349[allocatedArray[8]] + (allocatedArray[9] - (allocatedArray[8] + 1)) + 21; + i = sStatTextOffsets[allocatedArray[8]] + (allocatedArray[9] - (allocatedArray[8] + 1)) + DOME_TEXT_TWO_BAD_STATS; else if (j == 1) - i = allocatedArray[8] + 36; + i = allocatedArray[8] + DOME_TEXT_ONE_BAD_STAT; else - i = 42; + i = DOME_TEXT_WELL_BALANCED; + // Print the stat text textPrinter.currentChar = sBattleDomeOpponentStatsTexts[i]; textPrinter.y = 36; textPrinter.currentY = 36; @@ -4933,55 +4862,61 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId) Free(allocatedArray); } -static int sub_8192F08(u8 arg0, u8 *arg1) +static int BufferDomeWinString(u8 matchNum, u8 *tournamentIds) { int i; u8 tournamentId; - int retVal = 0; + int winStringId = 0; int count = 0; - for (i = gUnknown_0860D3C4[arg0][0]; i < gUnknown_0860D3C4[arg0][0] + gUnknown_0860D3C4[arg0][1]; i++) + // Get winners name + for (i = sCompetitorRangeByMatch[matchNum][0]; i < sCompetitorRangeByMatch[matchNum][0] + sCompetitorRangeByMatch[matchNum][1]; i++) { - tournamentId = gUnknown_0860D3B4[i]; - if (!gSaveBlock2Ptr->frontier.domeTrainers[tournamentId].isEliminated) + tournamentId = sTourneyTreeTrainerIds2[i]; + if (!DOME_TRAINERS[tournamentId].isEliminated) { - arg1[count] = tournamentId; - if (gSaveBlock2Ptr->frontier.domeTrainers[tournamentId].trainerId == TRAINER_PLAYER) + tournamentIds[count] = tournamentId; + if (DOME_TRAINERS[tournamentId].trainerId == TRAINER_PLAYER) StringCopy(gStringVar1, gSaveBlock2Ptr->playerName); - else if (gSaveBlock2Ptr->frontier.domeTrainers[tournamentId].trainerId == TRAINER_FRONTIER_BRAIN) + else if (DOME_TRAINERS[tournamentId].trainerId == TRAINER_FRONTIER_BRAIN) CopyDomeBrainTrainerName(gStringVar1); else - CopyDomeTrainerName(gStringVar1, gSaveBlock2Ptr->frontier.domeTrainers[tournamentId].trainerId); + CopyDomeTrainerName(gStringVar1, DOME_TRAINERS[tournamentId].trainerId); count++; } } + // Neither trainer has been eliminated, battle hasn't occurred yet if (count == 2) - return 0; + return DOME_TEXT_NO_WINNER_YET; - for (i = gUnknown_0860D3C4[arg0][0]; i < gUnknown_0860D3C4[arg0][0] + gUnknown_0860D3C4[arg0][1]; i++) + for (i = sCompetitorRangeByMatch[matchNum][0]; i < sCompetitorRangeByMatch[matchNum][0] + sCompetitorRangeByMatch[matchNum][1]; i++) { - tournamentId = gUnknown_0860D3B4[i]; - if (gSaveBlock2Ptr->frontier.domeTrainers[tournamentId].isEliminated - && gSaveBlock2Ptr->frontier.domeTrainers[tournamentId].eliminatedAt >= gUnknown_0860D3C4[arg0][2]) + tournamentId = sTourneyTreeTrainerIds2[i]; + + if (DOME_TRAINERS[tournamentId].isEliminated + && DOME_TRAINERS[tournamentId].eliminatedAt >= sCompetitorRangeByMatch[matchNum][2]) { - arg1[count] = tournamentId; + tournamentIds[count] = tournamentId; count++; - if (gSaveBlock2Ptr->frontier.domeTrainers[tournamentId].eliminatedAt == gUnknown_0860D3C4[arg0][2]) + + if (DOME_TRAINERS[tournamentId].eliminatedAt == sCompetitorRangeByMatch[matchNum][2]) { - StringCopy(gStringVar2, gMoveNames[gSaveBlock2Ptr->frontier.field_EC0[tournamentId]]); - retVal = gSaveBlock2Ptr->frontier.domeTrainers[tournamentId].unk3 * 2; - if (gSaveBlock2Ptr->frontier.field_EC0[tournamentId] == 0 && gSaveBlock2Ptr->frontier.domeTrainers[tournamentId].unk3 == 0) - retVal = 4; + // Set initial winStringId offset + StringCopy(gStringVar2, gMoveNames[gSaveBlock2Ptr->frontier.domeWinningMoves[tournamentId]]); + winStringId = DOME_TRAINERS[tournamentId].forfeited * 2; // (DOME_TEXT_WON_USING_MOVE - 1) or (DOME_TEXT_WON_ON_FORFEIT - 1) + + if (gSaveBlock2Ptr->frontier.domeWinningMoves[tournamentId] == MOVE_NONE && DOME_TRAINERS[tournamentId].forfeited == FALSE) + winStringId = DOME_TEXT_WON_NO_MOVES - 1; } else { - if (gSaveBlock2Ptr->frontier.domeTrainers[tournamentId].trainerId == TRAINER_PLAYER) + if (DOME_TRAINERS[tournamentId].trainerId == TRAINER_PLAYER) StringCopy(gStringVar1, gSaveBlock2Ptr->playerName); - else if (gSaveBlock2Ptr->frontier.domeTrainers[tournamentId].trainerId == TRAINER_FRONTIER_BRAIN) + else if (DOME_TRAINERS[tournamentId].trainerId == TRAINER_FRONTIER_BRAIN) CopyDomeBrainTrainerName(gStringVar1); else - CopyDomeTrainerName(gStringVar1, gSaveBlock2Ptr->frontier.domeTrainers[tournamentId].trainerId); + CopyDomeTrainerName(gStringVar1, DOME_TRAINERS[tournamentId].trainerId); } } @@ -4989,10 +4924,10 @@ static int sub_8192F08(u8 arg0, u8 *arg1) break; } - if (arg0 == 14) - return retVal + 2; + if (matchNum == DOME_TOURNAMENT_MATCHES_COUNT - 1) + return winStringId + 2; // use DOME_TEXT_CHAMP_* else - return retVal + 1; + return winStringId + 1; // use DOME_TEXT_WON_* } static void DisplayMatchInfoOnCard(u8 flags, u8 matchNo) @@ -5008,137 +4943,137 @@ static void DisplayMatchInfoOnCard(u8 flags, u8 matchNo) int x = 0, y = 0; u8 palSlot = 0; - if (flags & 1) - arrId = 8, windowId = 9, palSlot = 2; - if (flags & 2) + if (flags & CARD_ALTERNATE_SLOT) + arrId = 2 * (FRONTIER_PARTY_SIZE + 1), windowId = 9, palSlot = 2; + if (flags & MOVE_CARD_RIGHT) x = 256; - if (flags & 4) + if (flags & MOVE_CARD_DOWN) y = 160; - if (flags & 8) + if (flags & MOVE_CARD_LEFT) x = -256; - if (flags & 0x10) + if (flags & MOVE_CARD_UP) y = -160; // Copy trainers information to handy arrays. - winStringId = sub_8192F08(matchNo, sBattleDomeStruct->unk_11); - for (i = 0; i < 2; i++) + winStringId = BufferDomeWinString(matchNo, sInfoCard->tournamentIds); + for (i = 0; i < NUM_INFOCARD_TRAINERS; i++) { - tournamentIds[i] = sBattleDomeStruct->unk_11[i]; - trainerIds[i] = gSaveBlock2Ptr->frontier.domeTrainers[tournamentIds[i]].trainerId; - if (gSaveBlock2Ptr->frontier.domeTrainers[tournamentIds[i]].eliminatedAt <= gUnknown_0860D3C4[matchNo][2] - && gSaveBlock2Ptr->frontier.domeTrainers[tournamentIds[i]].isEliminated) + tournamentIds[i] = sInfoCard->tournamentIds[i]; + trainerIds[i] = DOME_TRAINERS[tournamentIds[i]].trainerId; + if (DOME_TRAINERS[tournamentIds[i]].eliminatedAt <= sCompetitorRangeByMatch[matchNo][2] + && DOME_TRAINERS[tournamentIds[i]].isEliminated) lost[i] = TRUE; else lost[i] = FALSE; } - // Draw first trainer sprite. + // Draw left trainer sprite. if (trainerIds[0] == TRAINER_PLAYER) - sBattleDomeStruct->arr[arrId] = CreateTrainerPicSprite(PlayerGenderToFrontTrainerPicId(gSaveBlock2Ptr->playerGender), TRUE, x + 48, y + 88, palSlot + 12, 0xFFFF); + sInfoCard->spriteIds[arrId] = CreateTrainerPicSprite(PlayerGenderToFrontTrainerPicId(gSaveBlock2Ptr->playerGender), TRUE, x + 48, y + 88, palSlot + 12, 0xFFFF); else if (trainerIds[0] == TRAINER_FRONTIER_BRAIN) - sBattleDomeStruct->arr[arrId] = CreateTrainerPicSprite(GetDomeBrainTrainerPicId(), TRUE, x + 48, y + 88, palSlot + 12, 0xFFFF); + sInfoCard->spriteIds[arrId] = CreateTrainerPicSprite(GetDomeBrainTrainerPicId(), TRUE, x + 48, y + 88, palSlot + 12, 0xFFFF); else - sBattleDomeStruct->arr[arrId] = CreateTrainerPicSprite(GetFrontierTrainerFrontSpriteId(trainerIds[0]), TRUE, x + 48, y + 88, palSlot + 12, 0xFFFF); + sInfoCard->spriteIds[arrId] = CreateTrainerPicSprite(GetFrontierTrainerFrontSpriteId(trainerIds[0]), TRUE, x + 48, y + 88, palSlot + 12, 0xFFFF); - if (flags & 0x1E) - gSprites[sBattleDomeStruct->arr[arrId]].invisible = TRUE; + if (flags & MOVE_CARD) + gSprites[sInfoCard->spriteIds[arrId]].invisible = TRUE; if (lost[0]) - gSprites[sBattleDomeStruct->arr[arrId]].oam.paletteNum = 3; + gSprites[sInfoCard->spriteIds[arrId]].oam.paletteNum = 3; - // Draw second trainer sprite. + // Draw right trainer sprite. if (trainerIds[1] == TRAINER_PLAYER) - sBattleDomeStruct->arr[1 + arrId] = CreateTrainerPicSprite(PlayerGenderToFrontTrainerPicId(gSaveBlock2Ptr->playerGender), TRUE, x + 192, y + 88, palSlot + 13, 0xFFFF); + sInfoCard->spriteIds[1 + arrId] = CreateTrainerPicSprite(PlayerGenderToFrontTrainerPicId(gSaveBlock2Ptr->playerGender), TRUE, x + 192, y + 88, palSlot + 13, 0xFFFF); else if (trainerIds[1] == TRAINER_FRONTIER_BRAIN) - sBattleDomeStruct->arr[1 + arrId] = CreateTrainerPicSprite(GetDomeBrainTrainerPicId(), TRUE, x + 192, y + 88, palSlot + 13, 0xFFFF); + sInfoCard->spriteIds[1 + arrId] = CreateTrainerPicSprite(GetDomeBrainTrainerPicId(), TRUE, x + 192, y + 88, palSlot + 13, 0xFFFF); else - sBattleDomeStruct->arr[1 + arrId] = CreateTrainerPicSprite(GetFrontierTrainerFrontSpriteId(trainerIds[1]), TRUE, x + 192, y + 88, palSlot + 13, 0xFFFF); + sInfoCard->spriteIds[1 + arrId] = CreateTrainerPicSprite(GetFrontierTrainerFrontSpriteId(trainerIds[1]), TRUE, x + 192, y + 88, palSlot + 13, 0xFFFF); - if (flags & 0x1E) - gSprites[sBattleDomeStruct->arr[1 + arrId]].invisible = TRUE; + if (flags & MOVE_CARD) + gSprites[sInfoCard->spriteIds[1 + arrId]].invisible = TRUE; if (lost[1]) - gSprites[sBattleDomeStruct->arr[1 + arrId]].oam.paletteNum = 3; + gSprites[sInfoCard->spriteIds[1 + arrId]].oam.paletteNum = 3; - // Draw first trainer's pokemon icons. - for (i = 0; i < 3; i++) + // Draw left trainer's pokemon icons. + for (i = 0; i < FRONTIER_PARTY_SIZE; i++) { if (trainerIds[0] == TRAINER_PLAYER) { - sBattleDomeStruct->arr[2 + i + arrId] = CreateMonIcon(gSaveBlock2Ptr->frontier.domeMonIds[tournamentIds[0]][i], + sInfoCard->spriteIds[2 + i + arrId] = CreateMonIcon(DOME_MONS[tournamentIds[0]][i], SpriteCb_MonIcon, - x | sFirstTrainerMonX[i], - y + sFirstTrainerMonY[i], + x | sLeftTrainerMonX[i], + y + sLeftTrainerMonY[i], 0, 0, TRUE); - gSprites[sBattleDomeStruct->arr[2 + i + arrId]].oam.priority = 0; + gSprites[sInfoCard->spriteIds[2 + i + arrId]].oam.priority = 0; } else if (trainerIds[0] == TRAINER_FRONTIER_BRAIN) { - sBattleDomeStruct->arr[2 + i + arrId] = CreateMonIcon(gSaveBlock2Ptr->frontier.domeMonIds[tournamentIds[0]][i], + sInfoCard->spriteIds[2 + i + arrId] = CreateMonIcon(DOME_MONS[tournamentIds[0]][i], SpriteCb_MonIcon, - x | sFirstTrainerMonX[i], - y + sFirstTrainerMonY[i], + x | sLeftTrainerMonX[i], + y + sLeftTrainerMonY[i], 0, 0, TRUE); - gSprites[sBattleDomeStruct->arr[2 + i + arrId]].oam.priority = 0; + gSprites[sInfoCard->spriteIds[2 + i + arrId]].oam.priority = 0; } else { - sBattleDomeStruct->arr[2 + i + arrId] = CreateMonIcon(gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[tournamentIds[0]][i]].species, + sInfoCard->spriteIds[2 + i + arrId] = CreateMonIcon(gFacilityTrainerMons[DOME_MONS[tournamentIds[0]][i]].species, SpriteCb_MonIcon, - x | sFirstTrainerMonX[i], - y + sFirstTrainerMonY[i], + x | sLeftTrainerMonX[i], + y + sLeftTrainerMonY[i], 0, 0, TRUE); - gSprites[sBattleDomeStruct->arr[2 + i + arrId]].oam.priority = 0; + gSprites[sInfoCard->spriteIds[2 + i + arrId]].oam.priority = 0; } - if (flags & 0x1E) - gSprites[sBattleDomeStruct->arr[2 + i + arrId]].invisible = TRUE; + if (flags & MOVE_CARD) + gSprites[sInfoCard->spriteIds[2 + i + arrId]].invisible = TRUE; if (lost[0]) { - gSprites[sBattleDomeStruct->arr[2 + i + arrId]].oam.paletteNum = 3; - gSprites[sBattleDomeStruct->arr[2 + i + arrId]].sMonIconStill = TRUE; + gSprites[sInfoCard->spriteIds[2 + i + arrId]].oam.paletteNum = 3; + gSprites[sInfoCard->spriteIds[2 + i + arrId]].sMonIconStill = TRUE; } } - // Draw second trainer's pokemon icons. - for (i = 0; i < 3; i++) + // Draw right trainer's pokemon icons. + for (i = 0; i < FRONTIER_PARTY_SIZE; i++) { if (trainerIds[1] == TRAINER_PLAYER) { - sBattleDomeStruct->arr[5 + i + arrId] = CreateMonIcon(gSaveBlock2Ptr->frontier.domeMonIds[tournamentIds[1]][i], + sInfoCard->spriteIds[5 + i + arrId] = CreateMonIcon(DOME_MONS[tournamentIds[1]][i], SpriteCb_MonIcon, - x | sSecondTrainerMonX[i], - y + sSecondTrainerMonY[i], + x | sRightTrainerMonX[i], + y + sRightTrainerMonY[i], 0, 0, TRUE); - gSprites[sBattleDomeStruct->arr[5 + i + arrId]].oam.priority = 0; + gSprites[sInfoCard->spriteIds[5 + i + arrId]].oam.priority = 0; } else if (trainerIds[1] == TRAINER_FRONTIER_BRAIN) { - sBattleDomeStruct->arr[5 + i + arrId] = CreateMonIcon(gSaveBlock2Ptr->frontier.domeMonIds[tournamentIds[1]][i], + sInfoCard->spriteIds[5 + i + arrId] = CreateMonIcon(DOME_MONS[tournamentIds[1]][i], SpriteCb_MonIcon, - x | sSecondTrainerMonX[i], - y + sSecondTrainerMonY[i], + x | sRightTrainerMonX[i], + y + sRightTrainerMonY[i], 0, 0, TRUE); - gSprites[sBattleDomeStruct->arr[5 + i + arrId]].oam.priority = 0; + gSprites[sInfoCard->spriteIds[5 + i + arrId]].oam.priority = 0; } else { - sBattleDomeStruct->arr[5 + i + arrId] = CreateMonIcon(gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[tournamentIds[1]][i]].species, + sInfoCard->spriteIds[5 + i + arrId] = CreateMonIcon(gFacilityTrainerMons[DOME_MONS[tournamentIds[1]][i]].species, SpriteCb_MonIcon, - x | sSecondTrainerMonX[i], - y + sSecondTrainerMonY[i], + x | sRightTrainerMonX[i], + y + sRightTrainerMonY[i], 0, 0, TRUE); - gSprites[sBattleDomeStruct->arr[5 + i + arrId]].oam.priority = 0; + gSprites[sInfoCard->spriteIds[5 + i + arrId]].oam.priority = 0; } - if (flags & 0x1E) - gSprites[sBattleDomeStruct->arr[5 + i + arrId]].invisible = TRUE; + if (flags & MOVE_CARD) + gSprites[sInfoCard->spriteIds[5 + i + arrId]].invisible = TRUE; if (lost[1]) { - gSprites[sBattleDomeStruct->arr[5 + i + arrId]].oam.paletteNum = 3; - gSprites[sBattleDomeStruct->arr[5 + i + arrId]].sMonIconStill = TRUE; + gSprites[sInfoCard->spriteIds[5 + i + arrId]].oam.paletteNum = 3; + gSprites[sInfoCard->spriteIds[5 + i + arrId]].sMonIconStill = TRUE; } } - // Print the win string (or 'Let the battle begin!' one). + // Print the win string (or 'Let the battle begin!'). textPrinter.x = 0; textPrinter.y = 2; textPrinter.currentX = textPrinter.x; @@ -5146,9 +5081,9 @@ static void DisplayMatchInfoOnCard(u8 flags, u8 matchNo) textPrinter.letterSpacing = 0; textPrinter.lineSpacing = 0; textPrinter.unk = 0; - textPrinter.fgColor = 14; - textPrinter.bgColor = 0; - textPrinter.shadowColor = 13; + textPrinter.fgColor = TEXT_DYNAMIC_COLOR_5; + textPrinter.bgColor = TEXT_COLOR_TRANSPARENT; + textPrinter.shadowColor = TEXT_DYNAMIC_COLOR_4; StringExpandPlaceholders(gStringVar4, sBattleDomeWinTexts[winStringId]); textPrinter.currentChar = gStringVar4; textPrinter.windowId = windowId + 8; @@ -5159,7 +5094,7 @@ static void DisplayMatchInfoOnCard(u8 flags, u8 matchNo) textPrinter.currentY = textPrinter.y = 0; AddTextPrinter(&textPrinter, 0, NULL); - // Print first trainer's name. + // Print left trainer's name. if (trainerIds[0] == TRAINER_PLAYER) StringCopy(gStringVar1, gSaveBlock2Ptr->playerName); else if (trainerIds[0] == TRAINER_FRONTIER_BRAIN) @@ -5177,7 +5112,7 @@ static void DisplayMatchInfoOnCard(u8 flags, u8 matchNo) CopyWindowToVram(windowId + 6, 3); AddTextPrinter(&textPrinter, 0, NULL); - // Print second trainer's name. + // Print right trainer's name. if (trainerIds[1] == TRAINER_PLAYER) StringCopy(gStringVar1, gSaveBlock2Ptr->playerName); else if (trainerIds[1] == TRAINER_FRONTIER_BRAIN) @@ -5207,103 +5142,112 @@ static void DisplayMatchInfoOnCard(u8 flags, u8 matchNo) static void ShowDomeTourneyTree(void) { u8 taskId = CreateTask(Task_ShowTourneyTree, 0); - gTasks[taskId].data[0] = 0; - gTasks[taskId].data[1] = 0; + gTasks[taskId].tState = 0; + gTasks[taskId].tNotInteractive = FALSE; gTasks[taskId].data[2] = 2; - gTasks[taskId].data[4] = 0; - SetMainCallback2(CB2_BattleDome); + gTasks[taskId].tIsPrevTourneyTree = FALSE; + SetMainCallback2(CB2_TourneyTree); } -static void ShowPreviousDomeResultsTourneyTree(void) +// To show the results of the last tourney on the computer in the lobby +static void ShowPreviousDomeTourneyTree(void) { u8 taskId; - InitDomeFacilityTrainersAndMons(); - gSaveBlock2Ptr->frontier.lvlMode = gSaveBlock2Ptr->frontier.field_D0A - 1; - gSaveBlock2Ptr->frontier.curChallengeBattleNum = 3; + SetFacilityTrainerAndMonPtrs(); + gSaveBlock2Ptr->frontier.lvlMode = gSaveBlock2Ptr->frontier.domeLvlMode - 1; + gSaveBlock2Ptr->frontier.curChallengeBattleNum = DOME_FINAL; taskId = CreateTask(Task_ShowTourneyTree, 0); - gTasks[taskId].data[0] = 0; - gTasks[taskId].data[1] = 0; + gTasks[taskId].tState = 0; + gTasks[taskId].tNotInteractive = FALSE; gTasks[taskId].data[2] = 2; - gTasks[taskId].data[4] = 1; - SetMainCallback2(CB2_BattleDome); + gTasks[taskId].tIsPrevTourneyTree = TRUE; + SetMainCallback2(CB2_TourneyTree); } -static void sub_819395C(u8 taskId) +// Task states for Task_HandleTourneyTreeInput +#define STATE_FADE_IN 0 +#define STATE_WAIT_FADE 1 +#define STATE_GET_INPUT 2 +#define STATE_SHOW_INFOCARD_TRAINER 3 +#define STATE_SHOW_INFOCARD_MATCH 5 +#define STATE_CLOSE_TOURNEY_TREE 7 + +static void Task_HandleTourneyTreeInput(u8 taskId) { u8 newTaskId = 0; int spriteId = gTasks[taskId].data[1]; - switch (gTasks[taskId].data[0]) + switch (gTasks[taskId].tState) { - case 0: + case STATE_FADE_IN: if (!gPaletteFade.active) { BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_BLACK); - gTasks[taskId].data[0] = 1; + gTasks[taskId].tState = STATE_WAIT_FADE; StartSpriteAnim(&gSprites[spriteId], 1); } break; - case 1: + case STATE_WAIT_FADE: if (!gPaletteFade.active) - gTasks[taskId].data[0] = 2; + gTasks[taskId].tState = STATE_GET_INPUT; break; - case 2: + case STATE_GET_INPUT: switch (UpdateTourneyTreeCursor(taskId)) { - case 0: + case TOURNEY_TREE_SELECTED_CLOSE: default: BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK); - gTasks[taskId].data[0] = 7; + gTasks[taskId].tState = STATE_CLOSE_TOURNEY_TREE; break; - case 1: + case TOURNEY_TREE_NO_SELECTION: break; - case 2: + case TOURNEY_TREE_SELECTED_TRAINER: BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK); - gTasks[taskId].data[0] = 3; + gTasks[taskId].tState = STATE_SHOW_INFOCARD_TRAINER; break; - case 3: + case TOURNEY_TREE_SELECTED_MATCH: BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK); - gTasks[taskId].data[0] = 5; + gTasks[taskId].tState = STATE_SHOW_INFOCARD_MATCH; break; } break; - case 3: + case STATE_SHOW_INFOCARD_TRAINER: if (!gPaletteFade.active) { FreeAllWindowBuffers(); ScanlineEffect_Stop(); FREE_AND_SET_NULL(sTilemapBuffer); - newTaskId = CreateTask(Task_ShowOpponentInfo, 0); - gTasks[newTaskId].data[0] = 0; - gTasks[newTaskId].data[1] = sTourneyTreeTrainerIds[spriteId]; - gTasks[newTaskId].data[2] = 1; - gTasks[newTaskId].data[3] = taskId; - - gTasks[taskId].data[0] = 4; - sBattleDomeStruct->unk_10 = 0; + newTaskId = CreateTask(Task_ShowTourneyInfoCard, 0); + gTasks[newTaskId].tState = 0; + gTasks[newTaskId].tTournamentId = sTourneyTreeTrainerIds[spriteId]; + gTasks[newTaskId].tMode = INFOCARD_TRAINER; + gTasks[newTaskId].tPrevTaskId = taskId; + + gTasks[taskId].tState = STATE_SHOW_INFOCARD_TRAINER + 1; + sInfoCard->pos = 0; } break; - case 4: + case STATE_SHOW_INFOCARD_TRAINER + 1: break; - case 5: + case STATE_SHOW_INFOCARD_MATCH: if (!gPaletteFade.active) { FreeAllWindowBuffers(); ScanlineEffect_Stop(); FREE_AND_SET_NULL(sTilemapBuffer); - newTaskId = CreateTask(Task_ShowOpponentInfo, 0); - gTasks[newTaskId].data[0] = 0; - gTasks[newTaskId].data[1] = spriteId - 16; - gTasks[newTaskId].data[2] = 2; - gTasks[newTaskId].data[3] = taskId; + newTaskId = CreateTask(Task_ShowTourneyInfoCard, 0); + gTasks[newTaskId].tState = 0; + gTasks[newTaskId].tTournamentId = spriteId - DOME_TOURNAMENT_TRAINERS_COUNT; + gTasks[newTaskId].tMode = INFOCARD_MATCH; + gTasks[newTaskId].tPrevTaskId = taskId; - gTasks[taskId].data[0] = 6; + gTasks[taskId].tState = STATE_SHOW_INFOCARD_MATCH + 1; } break; - case 6: + case STATE_SHOW_INFOCARD_MATCH + 1: break; - case 7: + case STATE_CLOSE_TOURNEY_TREE: if (!gPaletteFade.active) { FreeAllWindowBuffers(); @@ -5317,157 +5261,188 @@ static void sub_819395C(u8 taskId) } } +// undefine task states for Task_HandleTourneyTreeInput +#undef STATE_FADE_IN +#undef STATE_WAIT_FADE +#undef STATE_GET_INPUT +#undef STATE_SHOW_INFOCARD_TRAINER +#undef STATE_SHOW_INFOCARD_MATCH +#undef STATE_CLOSE_TOURNEY_TREE + + +#define MOVE_DIR_UP 0 +#define MOVE_DIR_DOWN 1 +#define MOVE_DIR_LEFT 2 +#define MOVE_DIR_RIGHT 3 +#define MOVE_DIR_NONE 4 + +// Move the tourney tree cursor +// The 'cursor' is actually just which button sprite is currently doing the 'selected' animation static u8 UpdateTourneyTreeCursor(u8 taskId) { - u8 retVal = 1; - int direction = 4; + u8 selection = TOURNEY_TREE_NO_SELECTION; + int direction = MOVE_DIR_NONE; int tourneyTreeCursorSpriteId = gTasks[taskId].data[1]; int roundId = gSaveBlock2Ptr->frontier.curChallengeBattleNum; - if (gMain.newKeys == B_BUTTON || (gMain.newKeys & A_BUTTON && tourneyTreeCursorSpriteId == 31)) + if (gMain.newKeys == B_BUTTON || (gMain.newKeys & A_BUTTON && tourneyTreeCursorSpriteId == TOURNEY_TREE_CLOSE_BUTTON)) { PlaySE(SE_SELECT); - retVal = 0; + selection = TOURNEY_TREE_SELECTED_CLOSE; } else if (gMain.newKeys & A_BUTTON) { - if (tourneyTreeCursorSpriteId < 16) + if (tourneyTreeCursorSpriteId < DOME_TOURNAMENT_TRAINERS_COUNT) { PlaySE(SE_SELECT); - retVal = 2; + selection = TOURNEY_TREE_SELECTED_TRAINER; } else { PlaySE(SE_SELECT); - retVal = 3; + selection = TOURNEY_TREE_SELECTED_MATCH; } } else { if (gMain.newKeys == DPAD_UP && sTourneyTreeCursorMovementMap[tourneyTreeCursorSpriteId][roundId][0] != 0xFF) - direction = 0; + direction = MOVE_DIR_UP; else if (gMain.newKeys == DPAD_DOWN && sTourneyTreeCursorMovementMap[tourneyTreeCursorSpriteId][roundId][1] != 0xFF) - direction = 1; + direction = MOVE_DIR_DOWN; else if (gMain.newKeys == DPAD_LEFT && sTourneyTreeCursorMovementMap[tourneyTreeCursorSpriteId][roundId][2] != 0xFF) - direction = 2; + direction = MOVE_DIR_LEFT; else if (gMain.newKeys == DPAD_RIGHT && sTourneyTreeCursorMovementMap[tourneyTreeCursorSpriteId][roundId][3] != 0xFF) - direction = 3; + direction = MOVE_DIR_RIGHT; } - if (direction != 4) + if (direction != MOVE_DIR_NONE) { PlaySE(SE_SELECT); - StartSpriteAnim(&gSprites[tourneyTreeCursorSpriteId], 0); + StartSpriteAnim(&gSprites[tourneyTreeCursorSpriteId], 0); // Do unselected sprite anim tourneyTreeCursorSpriteId = sTourneyTreeCursorMovementMap[tourneyTreeCursorSpriteId][roundId][direction]; - StartSpriteAnim(&gSprites[tourneyTreeCursorSpriteId], 1); + StartSpriteAnim(&gSprites[tourneyTreeCursorSpriteId], 1); // Do selected sprite anim gTasks[taskId].data[1] = tourneyTreeCursorSpriteId; } - return retVal; + return selection; } +#undef MOVE_DIR_UP +#undef MOVE_DIR_DOWN +#undef MOVE_DIR_LEFT +#undef MOVE_DIR_RIGHT +#undef MOVE_DIR_NONE + +// Shows the results of the just-completed round for the current tourney static void ShowNonInteractiveDomeTourneyTree(void) { u8 taskId = CreateTask(Task_ShowTourneyTree, 0); - gTasks[taskId].data[0] = 0; - gTasks[taskId].data[1] = 1; + gTasks[taskId].tState = 0; + gTasks[taskId].tNotInteractive = TRUE; gTasks[taskId].data[2] = 2; - gTasks[taskId].data[4] = 0; - SetMainCallback2(CB2_BattleDome); + gTasks[taskId].tIsPrevTourneyTree = FALSE; + SetMainCallback2(CB2_TourneyTree); } static void ResolveDomeRoundWinners(void) { int i; - if (gSpecialVar_0x8005 == 1) + if (gSpecialVar_0x8005 == DOME_PLAYER_WON_MATCH) { - gSaveBlock2Ptr->frontier.domeTrainers[TrainerIdToTournamentId(gTrainerBattleOpponent_A)].isEliminated = 1; - gSaveBlock2Ptr->frontier.domeTrainers[TrainerIdToTournamentId(gTrainerBattleOpponent_A)].eliminatedAt = gSaveBlock2Ptr->frontier.curChallengeBattleNum; - gSaveBlock2Ptr->frontier.field_EC0[TrainerIdToTournamentId(gTrainerBattleOpponent_A)] = gBattleResults.lastUsedMovePlayer; + DOME_TRAINERS[TrainerIdToTournamentId(gTrainerBattleOpponent_A)].isEliminated = TRUE; + DOME_TRAINERS[TrainerIdToTournamentId(gTrainerBattleOpponent_A)].eliminatedAt = gSaveBlock2Ptr->frontier.curChallengeBattleNum; + gSaveBlock2Ptr->frontier.domeWinningMoves[TrainerIdToTournamentId(gTrainerBattleOpponent_A)] = gBattleResults.lastUsedMovePlayer; + + // If the player's match was the final one, no NPC vs NPC matches to decide if (gSaveBlock2Ptr->frontier.curChallengeBattleNum < DOME_FINAL) DecideRoundWinners(gSaveBlock2Ptr->frontier.curChallengeBattleNum); } - else + else // DOME_PLAYER_LOST_MATCH or DOME_PLAYER_RETIRED { - gSaveBlock2Ptr->frontier.domeTrainers[TrainerIdToTournamentId(TRAINER_PLAYER)].isEliminated = 1; - gSaveBlock2Ptr->frontier.domeTrainers[TrainerIdToTournamentId(TRAINER_PLAYER)].eliminatedAt = gSaveBlock2Ptr->frontier.curChallengeBattleNum; - gSaveBlock2Ptr->frontier.field_EC0[TrainerIdToTournamentId(TRAINER_PLAYER)] = gBattleResults.lastUsedMoveOpponent; - if (gBattleOutcome == B_OUTCOME_FORFEITED || gSpecialVar_0x8005 == 9) - gSaveBlock2Ptr->frontier.domeTrainers[TrainerIdToTournamentId(TRAINER_PLAYER)].unk3 = 1; + DOME_TRAINERS[TrainerIdToTournamentId(TRAINER_PLAYER)].isEliminated = TRUE; + DOME_TRAINERS[TrainerIdToTournamentId(TRAINER_PLAYER)].eliminatedAt = gSaveBlock2Ptr->frontier.curChallengeBattleNum; + gSaveBlock2Ptr->frontier.domeWinningMoves[TrainerIdToTournamentId(TRAINER_PLAYER)] = gBattleResults.lastUsedMoveOpponent; + + if (gBattleOutcome == B_OUTCOME_FORFEITED || gSpecialVar_0x8005 == DOME_PLAYER_RETIRED) + DOME_TRAINERS[TrainerIdToTournamentId(TRAINER_PLAYER)].forfeited = TRUE; + + // Player lost, decide remaining outcome of tournament for (i = gSaveBlock2Ptr->frontier.curChallengeBattleNum; i < DOME_ROUNDS_COUNT; i++) DecideRoundWinners(i); } } +// Decides the winning move of an NPC vs NPC match static u16 GetWinningMove(int winnerTournamentId, int loserTournamentId, u8 roundId) { int i, j, k; - int moveScores[4 * 3]; - u16 moveIds[4 * 3]; + int moveScores[MAX_MON_MOVES * FRONTIER_PARTY_SIZE]; + u16 moveIds[MAX_MON_MOVES * FRONTIER_PARTY_SIZE]; u16 bestScore = 0; u16 bestId = 0; int movePower = 0; SetFacilityPtrsGetLevel(); // Calc move points of all 4 moves for all 3 pokemon hitting all 3 target mons. - for (i = 0; i < 3; i++) + for (i = 0; i < FRONTIER_PARTY_SIZE; i++) { for (j = 0; j < MAX_MON_MOVES; j++) { - // TODO: Clean this up, looks like a different data structure - moveScores[i * 4 + j] = 0; - if (gSaveBlock2Ptr->frontier.domeTrainers[winnerTournamentId].trainerId == TRAINER_FRONTIER_BRAIN) - moveIds[i * 4 + j] = GetFrontierBrainMonMove(i, j); + // TODO: Clean this up, looks like a different data structure (2D array) + moveScores[i * MAX_MON_MOVES + j] = 0; + if (DOME_TRAINERS[winnerTournamentId].trainerId == TRAINER_FRONTIER_BRAIN) + moveIds[i * MAX_MON_MOVES + j] = GetFrontierBrainMonMove(i, j); else - moveIds[i * 4 + j] = gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[winnerTournamentId][i]].moves[j]; + moveIds[i * MAX_MON_MOVES + j] = gFacilityTrainerMons[DOME_MONS[winnerTournamentId][i]].moves[j]; - movePower = gBattleMoves[moveIds[i * 4 + j]].power; + movePower = gBattleMoves[moveIds[i * MAX_MON_MOVES + j]].power; if (movePower == 0) movePower = 40; else if (movePower == 1) movePower = 60; - else if (moveIds[i * 4 + j] == MOVE_SELF_DESTRUCT || moveIds[i * 4 + j] == MOVE_EXPLOSION) + else if (moveIds[i * MAX_MON_MOVES + j] == MOVE_SELF_DESTRUCT + || moveIds[i * MAX_MON_MOVES + j] == MOVE_EXPLOSION) movePower /= 2; - for (k = 0; k < 3; k++) + for (k = 0; k < FRONTIER_PARTY_SIZE; k++) { u32 var = 0; - u32 targetSpecies = 0; - u32 targetAbility = 0; + u16 targetSpecies = SPECIES_NONE; + u16 targetAbility = ABILITY_NONE; do { var = Random32(); - } while (gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[loserTournamentId][k]].nature != GetNatureFromPersonality(var)); + } while (gFacilityTrainerMons[DOME_MONS[loserTournamentId][k]].nature != GetNatureFromPersonality(var)); - targetSpecies = gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[loserTournamentId][k]].species; + targetSpecies = gFacilityTrainerMons[DOME_MONS[loserTournamentId][k]].species; if (var & 1) targetAbility = gBaseStats[targetSpecies].abilities[1]; else targetAbility = gBaseStats[targetSpecies].abilities[0]; - var = AI_TypeCalc(moveIds[i * 4 + j], targetSpecies, targetAbility); + var = AI_TypeCalc(moveIds[i * MAX_MON_MOVES + j], targetSpecies, targetAbility); if (var & MOVE_RESULT_NOT_VERY_EFFECTIVE && var & MOVE_RESULT_SUPER_EFFECTIVE) - moveScores[i * 4 + j] += movePower; + moveScores[i * MAX_MON_MOVES + j] += movePower; else if (var & MOVE_RESULT_NO_EFFECT) - moveScores[i * 4 + j] += 0; + moveScores[i * MAX_MON_MOVES + j] += 0; else if (var & MOVE_RESULT_SUPER_EFFECTIVE) - moveScores[i * 4 + j] += movePower * 2; + moveScores[i * MAX_MON_MOVES + j] += movePower * 2; else if (var & MOVE_RESULT_NOT_VERY_EFFECTIVE) - moveScores[i * 4 + j] += movePower / 2; + moveScores[i * MAX_MON_MOVES + j] += movePower / 2; else - moveScores[i * 4 + j] += movePower; + moveScores[i * MAX_MON_MOVES + j] += movePower; } - if (bestScore < moveScores[i * 4 + j]) + if (bestScore < moveScores[i * MAX_MON_MOVES + j]) { - bestId = i * 4 + j; - bestScore = moveScores[i * 4 + j]; + bestId = i * MAX_MON_MOVES + j; + bestScore = moveScores[i * MAX_MON_MOVES + j]; } - else if (bestScore == moveScores[i * 4 + j]) + else if (bestScore == moveScores[i * MAX_MON_MOVES + j]) { - if (moveIds[bestId] < moveIds[i * 4 + j]) // Why not use (Random() & 1) instead of promoting moves with a higher id? - bestId = i * 4 + j; + if (moveIds[bestId] < moveIds[i * MAX_MON_MOVES + j]) // Why not use (Random() & 1) instead of promoting moves with a higher id? + bestId = i * MAX_MON_MOVES + j; } } } @@ -5476,7 +5451,7 @@ static u16 GetWinningMove(int winnerTournamentId, int loserTournamentId, u8 roun goto LABEL; while (j != 0) { - for (j = 0, k = 0; k < MAX_MON_MOVES * 3; k++) + for (j = 0, k = 0; k < MAX_MON_MOVES * FRONTIER_PARTY_SIZE; k++) { if (bestScore < moveScores[k]) { @@ -5494,7 +5469,7 @@ static u16 GetWinningMove(int winnerTournamentId, int loserTournamentId, u8 roun { for (i = 0; i < roundId - 1; i++) { - if (gSaveBlock2Ptr->frontier.field_EC0[sub_81953E8(winnerTournamentId, i)] == moveIds[j]) + if (gSaveBlock2Ptr->frontier.domeWinningMoves[sub_81953E8(winnerTournamentId, i)] == moveIds[j]) break; } if (i == roundId - 1) @@ -5503,7 +5478,7 @@ static u16 GetWinningMove(int winnerTournamentId, int loserTournamentId, u8 roun moveScores[j] = 0; bestScore = 0; j = 0; - for (k = 0; k < MAX_MON_MOVES * 3; k++) + for (k = 0; k < MAX_MON_MOVES * FRONTIER_PARTY_SIZE; k++) j += moveScores[k]; } } @@ -5518,10 +5493,10 @@ static void Task_ShowTourneyTree(u8 taskId) { int i; struct TextPrinterTemplate textPrinter; - int r10 = gTasks[taskId].data[1]; + int notInteractive = gTasks[taskId].tNotInteractive; int r4 = gTasks[taskId].data[2]; - switch (gTasks[taskId].data[0]) + switch (gTasks[taskId].tState) { case 0: SetHBlankCallback(NULL); @@ -5529,8 +5504,8 @@ static void Task_ShowTourneyTree(u8 taskId) EnableInterrupts(INTR_FLAG_HBLANK | INTR_FLAG_VBLANK); CpuFill32(0, (void *)VRAM, VRAM_SIZE); ResetBgsAndClearDma3BusyFlags(0); - InitBgsFromTemplates(0, gUnknown_0860CE74, ARRAY_COUNT(gUnknown_0860CE74)); - InitWindows(gUnknown_0860CE94); + InitBgsFromTemplates(0, sTourneyTreeBgTemplates, ARRAY_COUNT(sTourneyTreeBgTemplates)); + InitWindows(sTourneyTreeWindowTemplates); DeactivateAllTextPrinters(); gBattle_BG0_X = 0; gBattle_BG0_Y = 0; @@ -5540,7 +5515,7 @@ static void Task_ShowTourneyTree(u8 taskId) ChangeBgY(2, 0, 0); ChangeBgX(3, 0, 0); ChangeBgY(3, 0xB00, 0); - gTasks[taskId].data[0]++; + gTasks[taskId].tState++; break; case 1: SetGpuReg(REG_OFFSET_BLDCNT, 0); @@ -5552,45 +5527,46 @@ static void Task_ShowTourneyTree(u8 taskId) SetGpuReg(REG_OFFSET_WIN1H, 0x9098); SetGpuReg(REG_OFFSET_WIN1V, 0x9F); SetGpuReg(REG_OFFSET_WININ, 0); - SetGpuReg(REG_OFFSET_WINOUT, 0x3F); + SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR); ResetPaletteFade(); ResetSpriteData(); FreeAllSpritePalettes(); - gTasks[taskId].data[0]++; + gTasks[taskId].tState++; break; case 2: sTilemapBuffer = AllocZeroed(0x800); - LZDecompressWram(gUnknown_08D83900, sTilemapBuffer); + LZDecompressWram(gDomeTourneyLineMask_Tilemap, sTilemapBuffer); SetBgTilemapBuffer(1, sTilemapBuffer); CopyBgTilemapBufferToVram(1); - DecompressAndLoadBgGfxUsingHeap(1, gUnknown_08D82F10, 0x2000, 0, 0); - DecompressAndLoadBgGfxUsingHeap(2, gUnknown_08D834FC, 0x2000, 0, 0); - DecompressAndLoadBgGfxUsingHeap(2, gUnknown_08D83B2C, 0x2000, 0, 1); - DecompressAndLoadBgGfxUsingHeap(3, gUnknown_08D83C3C, 0x2000, 0, 1); - LoadCompressedPalette(gUnknown_08D85358, 0, 0x200); - LoadCompressedPalette(gUnknown_08D85444, 0x100, 0x200); + DecompressAndLoadBgGfxUsingHeap(1, gDomeTourneyBg_Gfx, 0x2000, 0, 0); + DecompressAndLoadBgGfxUsingHeap(2, gDomeTourneyLine_Gfx, 0x2000, 0, 0); + DecompressAndLoadBgGfxUsingHeap(2, gDomeTourneyLineDown_Tilemap, 0x2000, 0, 1); + DecompressAndLoadBgGfxUsingHeap(3, gDomeTourneyLineUp_Tilemap, 0x2000, 0, 1); + LoadCompressedPalette(gDomeTourneyTree_Pal, 0, 0x200); + LoadCompressedPalette(gDomeTourneyTreeButtons_Pal, 0x100, 0x200); LoadCompressedPalette(gBattleWindowTextPalette, 0xF0, 0x20); CpuFill32(0, gPlttBufferFaded, 0x400); ShowBg(0); ShowBg(1); ShowBg(2); ShowBg(3); - gTasks[taskId].data[0]++; + gTasks[taskId].tState++; break; case 3: - LoadCompressedSpriteSheet(sDomeOptionsSpriteSheet); - if (r10 == 0) + LoadCompressedSpriteSheet(sTourneyTreeButtonsSpriteSheet); + if (notInteractive == FALSE) { - for (i = 0; i < (unsigned) 31; i++) - CreateSprite(&gUnknown_0860CFA8, gUnknown_0860D411[i][0], gUnknown_0860D411[i][1], 0); - if (gTasks[taskId].data[4]) - CreateSprite(&gUnknown_0860D008, 218, 12, 0); + for (i = 0; i < ARRAY_COUNT(sTourneyTreePokeballCoords); i++) + CreateSprite(&sTourneyTreePokeballSpriteTemplate, sTourneyTreePokeballCoords[i][0], sTourneyTreePokeballCoords[i][1], 0); + + if (gTasks[taskId].tIsPrevTourneyTree) + CreateSprite(&sExitButtonSpriteTemplate, 218, 12, 0); else - CreateSprite(&gUnknown_0860CFD8, 218, 12, 0); + CreateSprite(&sCancelButtonSpriteTemplate, 218, 12, 0); } SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_BG_ALL_ON | DISPCNT_OBJ_ON | DISPCNT_WIN0_ON | DISPCNT_WIN1_ON | DISPCNT_OBJ_1D_MAP); - gTasks[taskId].data[0]++; + gTasks[taskId].tState++; break; case 4: textPrinter.fontId = 2; @@ -5603,94 +5579,94 @@ static void Task_ShowTourneyTree(u8 taskId) textPrinter.currentX = GetStringCenterAlignXOffsetWithLetterSpacing(textPrinter.fontId, textPrinter.currentChar, 0x70, textPrinter.letterSpacing); textPrinter.currentY = 1; textPrinter.unk = 0; - textPrinter.fgColor = 14; - textPrinter.bgColor = 0; - textPrinter.shadowColor = 13; + textPrinter.fgColor = TEXT_DYNAMIC_COLOR_5; + textPrinter.bgColor = TEXT_COLOR_TRANSPARENT; + textPrinter.shadowColor = TEXT_DYNAMIC_COLOR_4; AddTextPrinter(&textPrinter, 0, NULL); for (i = 0; i < DOME_TOURNAMENT_TRAINERS_COUNT; i++) { int roundId, var2; - CopyDomeTrainerName(gDisplayedStringBattle, gSaveBlock2Ptr->frontier.domeTrainers[i].trainerId); - if (r10 == 1) + CopyDomeTrainerName(gDisplayedStringBattle, DOME_TRAINERS[i].trainerId); + if (notInteractive == TRUE) { - if (gSaveBlock2Ptr->frontier.domeTrainers[i].isEliminated) + if (DOME_TRAINERS[i].isEliminated) { - if (gSaveBlock2Ptr->frontier.domeTrainers[i].eliminatedAt != 0) + if (DOME_TRAINERS[i].eliminatedAt != DOME_ROUND1) { - var2 = gSaveBlock2Ptr->frontier.domeTrainers[i].eliminatedAt - 1; - sub_81948EC(i, var2); + var2 = DOME_TRAINERS[i].eliminatedAt - 1; + DrawTourneyAdvancementLine(i, var2); } } else if (gSaveBlock2Ptr->frontier.curChallengeBattleNum != DOME_ROUND2) { - sub_81948EC(i, gSaveBlock2Ptr->frontier.curChallengeBattleNum - 2); + DrawTourneyAdvancementLine(i, gSaveBlock2Ptr->frontier.curChallengeBattleNum - 2); } } - else if (r10 == 0) + else if (notInteractive == FALSE) { - if (gSaveBlock2Ptr->frontier.domeTrainers[i].isEliminated) + if (DOME_TRAINERS[i].isEliminated) { - if (gSaveBlock2Ptr->frontier.domeTrainers[i].eliminatedAt != 0) + if (DOME_TRAINERS[i].eliminatedAt != DOME_ROUND1) { - var2 = gSaveBlock2Ptr->frontier.domeTrainers[i].eliminatedAt - 1; - sub_81948EC(i, var2); + var2 = DOME_TRAINERS[i].eliminatedAt - 1; + DrawTourneyAdvancementLine(i, var2); } } else if (gSaveBlock2Ptr->frontier.curChallengeBattleNum != DOME_ROUND1) { - if (gTasks[taskId].data[4]) + if (gTasks[taskId].tIsPrevTourneyTree) var2 = gSaveBlock2Ptr->frontier.curChallengeBattleNum; else var2 = gSaveBlock2Ptr->frontier.curChallengeBattleNum - 1; - sub_81948EC(i, var2); + DrawTourneyAdvancementLine(i, var2); } } - if (gTasks[taskId].data[4]) + if (gTasks[taskId].tIsPrevTourneyTree) roundId = gSaveBlock2Ptr->frontier.curChallengeBattleNum; else roundId = gSaveBlock2Ptr->frontier.curChallengeBattleNum - 1; - if ( ((r10 == 1 && gSaveBlock2Ptr->frontier.domeTrainers[i].eliminatedAt < gSaveBlock2Ptr->frontier.curChallengeBattleNum - 1) - || (r10 == 0 && gSaveBlock2Ptr->frontier.domeTrainers[i].eliminatedAt <= roundId)) - && gSaveBlock2Ptr->frontier.domeTrainers[i].isEliminated) + if ( ((notInteractive == TRUE && DOME_TRAINERS[i].eliminatedAt < gSaveBlock2Ptr->frontier.curChallengeBattleNum - 1) + || (notInteractive == FALSE && DOME_TRAINERS[i].eliminatedAt <= roundId)) + && DOME_TRAINERS[i].isEliminated) { - if (gSaveBlock2Ptr->frontier.domeTrainers[i].trainerId == TRAINER_PLAYER) + if (DOME_TRAINERS[i].trainerId == TRAINER_PLAYER) { - textPrinter.fgColor = 3; - textPrinter.shadowColor = 4; + textPrinter.fgColor = TEXT_COLOR_LIGHT_GREY; + textPrinter.shadowColor = TEXT_COLOR_RED; } else { - textPrinter.fgColor = 11; - textPrinter.shadowColor = 13; + textPrinter.fgColor = TEXT_DYNAMIC_COLOR_2; + textPrinter.shadowColor = TEXT_DYNAMIC_COLOR_4; } } else { - if (gSaveBlock2Ptr->frontier.domeTrainers[i].trainerId == TRAINER_PLAYER) + if (DOME_TRAINERS[i].trainerId == TRAINER_PLAYER) { - textPrinter.fgColor = 3; - textPrinter.shadowColor = 4; + textPrinter.fgColor = TEXT_COLOR_LIGHT_GREY; + textPrinter.shadowColor = TEXT_COLOR_RED; } else { - textPrinter.fgColor = 14; - textPrinter.shadowColor = 13; + textPrinter.fgColor = TEXT_DYNAMIC_COLOR_5; + textPrinter.shadowColor = TEXT_DYNAMIC_COLOR_4; } } - if (gUnknown_0860D3F1[i][0] == 0) + if (sTrainerNamePositions[i][0] == 0) textPrinter.currentX = GetStringWidthDifference(textPrinter.fontId, gDisplayedStringBattle, 0x3D, textPrinter.letterSpacing); else textPrinter.currentX = 3; textPrinter.currentChar = gDisplayedStringBattle; - textPrinter.windowId = gUnknown_0860D3F1[i][0]; - textPrinter.currentY = gUnknown_0860D3F1[i][1]; + textPrinter.windowId = sTrainerNamePositions[i][0]; + textPrinter.currentY = sTrainerNamePositions[i][1]; AddTextPrinter(&textPrinter, 0, NULL); } - gTasks[taskId].data[0]++; + gTasks[taskId].tState++; break; case 5: PutWindowTilemap(0); @@ -5699,27 +5675,27 @@ static void Task_ShowTourneyTree(u8 taskId) CopyWindowToVram(0, 3); CopyWindowToVram(1, 3); CopyWindowToVram(2, 3); - SetHBlankCallback(HblankCb_BattleDome); - SetVBlankCallback(VblankCb1_BattleDome); + SetHBlankCallback(HblankCb_TourneyTree); + SetVBlankCallback(VblankCb_TourneyTree); if (r4 == 2) { - if (r10 == 0) + if (notInteractive == FALSE) { - i = CreateTask(sub_819395C, 0); - gTasks[i].data[0] = r10; - gTasks[i].data[1] = r10; - gTasks[i].data[6] = gTasks[taskId].data[4]; + i = CreateTask(Task_HandleTourneyTreeInput, 0); + gTasks[i].data[0] = notInteractive; + gTasks[i].data[1] = notInteractive; + gTasks[i].data[6] = gTasks[taskId].tIsPrevTourneyTree; } else { - i = CreateTask(sub_8194950, 0); + i = CreateTask(Task_HandleStaticTourneyTreeInput, 0); gTasks[i].data[0] = 0; } } else { i = gTasks[taskId].data[3]; - gTasks[i].data[0] = 0; + gTasks[i].tState = 0; } ScanlineEffect_Clear(); @@ -5744,32 +5720,39 @@ static void Task_ShowTourneyTree(u8 taskId) } } -static void sub_81948EC(u8 tournamentId, u8 arg1) +static void DrawTourneyAdvancementLine(u8 tournamentId, u8 roundId) { int i; - const struct UnkStruct_860DD10 *structPtr = gUnknown_0860DD10[tournamentId][arg1]; + const struct TourneyTreeLineSection *lineSection = sTourneyTreeLineSections[tournamentId][roundId]; - for (i = 0; i < gUnknown_0860DE10[tournamentId][arg1]; i++) - CopyToBgTilemapBufferRect_ChangePalette(1, &structPtr[i].src, structPtr[i].x, structPtr[i].y, 1, 1, 0x11); + for (i = 0; i < sTourneyTreeLineSectionArrayCounts[tournamentId][roundId]; i++) + CopyToBgTilemapBufferRect_ChangePalette(1, &lineSection[i].src, lineSection[i].x, lineSection[i].y, 1, 1, 17); CopyBgTilemapBufferToVram(1); } -static void sub_8194950(u8 taskId) +#define STATE_FADE_IN 0 +#define STATE_SHOW_RESULTS 1 +#define STATE_DELAY 2 +#define STATE_WAIT_FOR_INPUT 3 +#define STATE_CLOSE_TOURNEY_TREE 4 + +// The non-interactive tourney tree that's shown when a round is completed +static void Task_HandleStaticTourneyTreeInput(u8 taskId) { int i; struct TextPrinterTemplate textPrinter; - switch (gTasks[taskId].data[0]) + switch (gTasks[taskId].tState) { - case 0: + case STATE_FADE_IN: BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_BLACK); - gTasks[taskId].data[0] = 1; + gTasks[taskId].tState = STATE_SHOW_RESULTS; break; - case 1: + case STATE_SHOW_RESULTS: if (!gPaletteFade.active) { - gTasks[taskId].data[0] = 2; + gTasks[taskId].tState = STATE_DELAY; gTasks[taskId].data[3] = 64; textPrinter.fontId = 2; textPrinter.x = 0; @@ -5777,45 +5760,47 @@ static void sub_8194950(u8 taskId) textPrinter.letterSpacing = 2; textPrinter.lineSpacing = 0; textPrinter.unk = 0; - textPrinter.fgColor = 11; - textPrinter.bgColor = 0; - textPrinter.shadowColor = 13; + textPrinter.fgColor = TEXT_DYNAMIC_COLOR_2; + textPrinter.bgColor = TEXT_COLOR_TRANSPARENT; + textPrinter.shadowColor = TEXT_DYNAMIC_COLOR_4; + + // Update the advancement lines and gray out eliminated trainer names for (i = 0; i < DOME_TOURNAMENT_TRAINERS_COUNT; i++) { - CopyDomeTrainerName(gDisplayedStringBattle, gSaveBlock2Ptr->frontier.domeTrainers[i].trainerId); - if (gSaveBlock2Ptr->frontier.domeTrainers[i].eliminatedAt == gSaveBlock2Ptr->frontier.curChallengeBattleNum - 1 - && gSaveBlock2Ptr->frontier.domeTrainers[i].isEliminated) + CopyDomeTrainerName(gDisplayedStringBattle, DOME_TRAINERS[i].trainerId); + if (DOME_TRAINERS[i].eliminatedAt == gSaveBlock2Ptr->frontier.curChallengeBattleNum - 1 + && DOME_TRAINERS[i].isEliminated) { - if (gUnknown_0860D3F1[i][0] == 0) + if (sTrainerNamePositions[i][0] == 0) textPrinter.currentX = GetStringWidthDifference(textPrinter.fontId, gDisplayedStringBattle, 0x3D, textPrinter.letterSpacing); else textPrinter.currentX = 3; textPrinter.currentChar = gDisplayedStringBattle; - textPrinter.windowId = gUnknown_0860D3F1[i][0]; - textPrinter.currentY = gUnknown_0860D3F1[i][1]; + textPrinter.windowId = sTrainerNamePositions[i][0]; + textPrinter.currentY = sTrainerNamePositions[i][1]; AddTextPrinter(&textPrinter, 0, NULL); } - if (!gSaveBlock2Ptr->frontier.domeTrainers[i].isEliminated) + if (!DOME_TRAINERS[i].isEliminated) { int roundId = gSaveBlock2Ptr->frontier.curChallengeBattleNum - 1; - sub_81948EC(i, roundId); + DrawTourneyAdvancementLine(i, roundId); } } } break; - case 2: + case STATE_DELAY: if (--gTasks[taskId].data[3] == 0) - gTasks[taskId].data[0] = 3; + gTasks[taskId].tState = STATE_WAIT_FOR_INPUT; break; - case 3: + case STATE_WAIT_FOR_INPUT: if (gMain.newKeys & (A_BUTTON | B_BUTTON)) { BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK); - gTasks[taskId].data[0] = 4; + gTasks[taskId].tState = STATE_CLOSE_TOURNEY_TREE; } break; - case 4: + case STATE_CLOSE_TOURNEY_TREE: if (!gPaletteFade.active) { SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic); @@ -5825,7 +5810,13 @@ static void sub_8194950(u8 taskId) } } -static void CB2_BattleDome(void) +#undef STATE_FADE_IN +#undef STATE_SHOW_RESULTS +#undef STATE_DELAY +#undef STATE_WAIT_FOR_INPUT +#undef STATE_CLOSE_TOURNEY_TREE + +static void CB2_TourneyTree(void) { AnimateSprites(); BuildOamBuffer(); @@ -5834,7 +5825,7 @@ static void CB2_BattleDome(void) RunTasks(); } -static void VblankCb0_BattleDome(void) +static void VblankCb_TourneyInfoCard(void) { ChangeBgX(3, 0x80, 1); ChangeBgY(3, 0x80, 2); @@ -5854,7 +5845,7 @@ static void VblankCb0_BattleDome(void) *(vu32*)(REG_ADDR_WIN0H) = ((win0H << 16) | (win1H)); \ } -static void HblankCb_BattleDome(void) +static void HblankCb_TourneyTree(void) { register u32 vCount asm("r0") = REG_VCOUNT; register u32 vCount_ asm("r1") = vCount; @@ -5862,7 +5853,8 @@ static void HblankCb_BattleDome(void) { if (vCount < 50) { - REG_WININ = WININ_WIN0_BG0 | WININ_WIN0_BG1 | WININ_WIN0_BG3 | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG0 | WININ_WIN1_BG1 | WININ_WIN1_BG3 | WININ_WIN1_OBJ | WININ_WIN1_CLR; + REG_WININ = WININ_WIN0_BG0 | WININ_WIN0_BG1 | WININ_WIN0_BG3 | WININ_WIN0_OBJ | WININ_WIN0_CLR + | WININ_WIN1_BG0 | WININ_WIN1_BG1 | WININ_WIN1_BG3 | WININ_WIN1_OBJ | WININ_WIN1_CLR; SET_WIN0H_WIN1H(WIN_RANGE(152, 155), WIN_RANGE(85, 88)); return; } @@ -5870,13 +5862,15 @@ static void HblankCb_BattleDome(void) { if (vCount < 75) { - REG_WININ = WININ_WIN0_BG0 | WININ_WIN0_BG1 | WININ_WIN0_BG3 | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG0 | WININ_WIN1_BG1 | WININ_WIN1_BG3 | WININ_WIN1_OBJ | WININ_WIN1_CLR; + REG_WININ = WININ_WIN0_BG0 | WININ_WIN0_BG1 | WININ_WIN0_BG3 | WININ_WIN0_OBJ | WININ_WIN0_CLR + | WININ_WIN1_BG0 | WININ_WIN1_BG1 | WININ_WIN1_BG3 | WININ_WIN1_OBJ | WININ_WIN1_CLR; SET_WIN0H_WIN1H(WIN_RANGE(144, 152), WIN_RANGE(88, 96)); return; } else if (vCount < 82) { - REG_WININ = WININ_WIN0_BG0 | WININ_WIN0_BG1 | WININ_WIN0_BG3 | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG0 | WININ_WIN1_BG1 | WININ_WIN1_BG3 | WININ_WIN1_OBJ | WININ_WIN1_CLR; + REG_WININ = WININ_WIN0_BG0 | WININ_WIN0_BG1 | WININ_WIN0_BG3 | WININ_WIN0_OBJ | WININ_WIN0_CLR + | WININ_WIN1_BG0 | WININ_WIN1_BG1 | WININ_WIN1_BG3 | WININ_WIN1_OBJ | WININ_WIN1_CLR; SET_WIN0H_WIN1H(WIN_RANGE(152, 155), WIN_RANGE(85, 88)); return; } @@ -5884,13 +5878,15 @@ static void HblankCb_BattleDome(void) { if (vCount < 103) { - REG_WININ = WININ_WIN0_BG0 | WININ_WIN0_BG1 | WININ_WIN0_BG2 | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG0 | WININ_WIN1_BG1 | WININ_WIN1_BG2 | WININ_WIN1_OBJ | WININ_WIN1_CLR; + REG_WININ = WININ_WIN0_BG0 | WININ_WIN0_BG1 | WININ_WIN0_BG2 | WININ_WIN0_OBJ | WININ_WIN0_CLR + | WININ_WIN1_BG0 | WININ_WIN1_BG1 | WININ_WIN1_BG2 | WININ_WIN1_OBJ | WININ_WIN1_CLR; SET_WIN0H_WIN1H(WIN_RANGE(152, 155), WIN_RANGE(85, 88)); return; } else if (vCount < 119) { - REG_WININ = WININ_WIN0_BG0 | WININ_WIN0_BG1 | WININ_WIN0_BG2 | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG0 | WININ_WIN1_BG1 | WININ_WIN1_BG2 | WININ_WIN1_OBJ | WININ_WIN1_CLR; + REG_WININ = WININ_WIN0_BG0 | WININ_WIN0_BG1 | WININ_WIN0_BG2 | WININ_WIN0_OBJ | WININ_WIN0_CLR + | WININ_WIN1_BG0 | WININ_WIN1_BG1 | WININ_WIN1_BG2 | WININ_WIN1_OBJ | WININ_WIN1_CLR; SET_WIN0H_WIN1H(WIN_RANGE(144, 152), WIN_RANGE(88, 96)); return; } @@ -5898,7 +5894,8 @@ static void HblankCb_BattleDome(void) { if (vCount_ < 135) { - REG_WININ = WININ_WIN0_BG0 | WININ_WIN0_BG1 | WININ_WIN0_BG2 | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG0 | WININ_WIN1_BG1 | WININ_WIN1_BG2 | WININ_WIN1_OBJ | WININ_WIN1_CLR; + REG_WININ = WININ_WIN0_BG0 | WININ_WIN0_BG1 | WININ_WIN0_BG2 | WININ_WIN0_OBJ | WININ_WIN0_CLR + | WININ_WIN1_BG0 | WININ_WIN1_BG1 | WININ_WIN1_BG2 | WININ_WIN1_OBJ | WININ_WIN1_CLR; SET_WIN0H_WIN1H(WIN_RANGE(152, 155), WIN_RANGE(85, 88)); return; } @@ -5907,11 +5904,12 @@ static void HblankCb_BattleDome(void) } } - REG_WININ = WININ_WIN0_BG_ALL | WININ_WIN0_CLR | WININ_WIN0_OBJ | WININ_WIN1_BG_ALL | WININ_WIN1_CLR | WININ_WIN1_OBJ; + REG_WININ = WININ_WIN0_BG_ALL | WININ_WIN0_CLR | WININ_WIN0_OBJ + | WININ_WIN1_BG_ALL | WININ_WIN1_CLR | WININ_WIN1_OBJ; SET_WIN0H_WIN1H(0, 0); } -static void VblankCb1_BattleDome(void) +static void VblankCb_TourneyTree(void) { SetGpuReg(REG_OFFSET_BG0HOFS, gBattle_BG0_X); SetGpuReg(REG_OFFSET_BG0VOFS, gBattle_BG0_Y); @@ -5925,7 +5923,7 @@ static void VblankCb1_BattleDome(void) ScanlineEffect_InitHBlankDmaTransfer(); } -static void InitDomeFacilityTrainersAndMons(void) +static void SetFacilityTrainerAndMonPtrs(void) { gFacilityTrainerMons = gBattleFrontierMons; gFacilityTrainers = gBattleFrontierTrainers; @@ -5935,7 +5933,7 @@ static void ResetSketchedMoves(void) { int i, moveSlot; - for (i = 0; i < 2; i++) + for (i = 0; i < DOME_BATTLE_PARTY_SIZE; i++) { int playerMonId = gSaveBlock2Ptr->frontier.selectedPartyMons[gSelectedOrderFromParty[i] - 1] - 1; int count; @@ -5961,7 +5959,7 @@ static void RestoreDomePlayerPartyHeldItems(void) { int i; - for (i = 0; i < 2; i++) + for (i = 0; i < DOME_BATTLE_PARTY_SIZE; i++) { int playerMonId = gSaveBlock2Ptr->frontier.selectedPartyMons[gSelectedOrderFromParty[i] - 1] - 1; u16 item = GetMonData(&gSaveBlock1Ptr->playerParty[playerMonId], MON_DATA_HELD_ITEM, NULL); @@ -5969,13 +5967,14 @@ static void RestoreDomePlayerPartyHeldItems(void) } } -static void ReduceDomePlayerPartyTo3Mons(void) +static void ReduceDomePlayerPartyToSelectedMons(void) { ReducePlayerPartyToSelectedMons(); } static void GetPlayerSeededBeforeOpponent(void) { + // A higher tournament ID is a worse seed if (TrainerIdToTournamentId(gTrainerBattleOpponent_A) > TrainerIdToTournamentId(TRAINER_PLAYER)) gSpecialVar_Result = 1; else @@ -5986,23 +5985,24 @@ static void BufferLastDomeWinnerName(void) { int i; - InitDomeFacilityTrainersAndMons(); + SetFacilityTrainerAndMonPtrs(); for (i = 0; i < DOME_TOURNAMENT_TRAINERS_COUNT; i++) { - if (!gSaveBlock2Ptr->frontier.domeTrainers[i].isEliminated) + if (!DOME_TRAINERS[i].isEliminated) break; } - CopyDomeTrainerName(gStringVar1, gSaveBlock2Ptr->frontier.domeTrainers[i].trainerId); + CopyDomeTrainerName(gStringVar1, DOME_TRAINERS[i].trainerId); } -static void sub_8194F58(void) +// For showing the previous tourney results before the player has entered a challenge +static void InitRandomTourneyTreeResults(void) { int i, j, k; int monLevel; int species[FRONTIER_PARTY_SIZE]; int monTypesBits; int trainerId; - int monSetId; + int monId; u8 lvlMode; u16 *statSums; int *statValues; @@ -6011,18 +6011,18 @@ static void sub_8194F58(void) species[0] = 0; species[1] = 0; species[2] = 0; - if ((gSaveBlock2Ptr->frontier.field_D0A != -gSaveBlock2Ptr->frontier.field_D0B) && gSaveBlock2Ptr->frontier.challengeStatus != CHALLENGE_STATUS_SAVING) + if ((gSaveBlock2Ptr->frontier.domeLvlMode != -gSaveBlock2Ptr->frontier.domeBattleMode) && gSaveBlock2Ptr->frontier.challengeStatus != CHALLENGE_STATUS_SAVING) return; statSums = AllocZeroed(sizeof(u16) * DOME_TOURNAMENT_TRAINERS_COUNT); statValues = AllocZeroed(sizeof(int) * NUM_STATS); lvlMode = gSaveBlock2Ptr->frontier.lvlMode; - gSaveBlock2Ptr->frontier.lvlMode = 0; + gSaveBlock2Ptr->frontier.lvlMode = FRONTIER_LVL_50; // This one, I'd like to call a 'C fakematching'. { u8 one; - gSaveBlock2Ptr->frontier.field_D0A = (one = 1); - gSaveBlock2Ptr->frontier.field_D0B = one; + gSaveBlock2Ptr->frontier.domeLvlMode = (one = 1); + gSaveBlock2Ptr->frontier.domeBattleMode = one; } for (i = 0; i < DOME_TOURNAMENT_TRAINERS_COUNT; i++) @@ -6038,35 +6038,35 @@ static void sub_8194F58(void) for (j = 0; j < i; j++) { - if (gSaveBlock2Ptr->frontier.domeTrainers[j].trainerId == trainerId) + if (DOME_TRAINERS[j].trainerId == trainerId) break; } } while (j != i); - gSaveBlock2Ptr->frontier.domeTrainers[i].trainerId = trainerId; + DOME_TRAINERS[i].trainerId = trainerId; for (j = 0; j < FRONTIER_PARTY_SIZE; j++) { - // Make sure the mon is valid. do { - monSetId = RandomizeFacilityTrainerMonSet(trainerId); + monId = GetRandomFrontierMonFromSet(trainerId); for (k = 0; k < j; k++) { - int checkingMonId = gSaveBlock2Ptr->frontier.domeMonIds[i][k]; - if (checkingMonId == monSetId - || species[0] == gFacilityTrainerMons[monSetId].species - || species[1] == gFacilityTrainerMons[monSetId].species - || gFacilityTrainerMons[checkingMonId].itemTableId == gFacilityTrainerMons[monSetId].itemTableId) + // Make sure the mon is valid. + int alreadySelectedMonId = DOME_MONS[i][k]; + if (alreadySelectedMonId == monId + || species[0] == gFacilityTrainerMons[monId].species + || species[1] == gFacilityTrainerMons[monId].species + || gFacilityTrainerMons[alreadySelectedMonId].itemTableId == gFacilityTrainerMons[monId].itemTableId) break; } } while (k != j); - gSaveBlock2Ptr->frontier.domeMonIds[i][j] = monSetId; - species[j] = gFacilityTrainerMons[monSetId].species; + DOME_MONS[i][j] = monId; + species[j] = gFacilityTrainerMons[monId].species; } - gSaveBlock2Ptr->frontier.domeTrainers[i].isEliminated = 0; - gSaveBlock2Ptr->frontier.domeTrainers[i].eliminatedAt = 0; - gSaveBlock2Ptr->frontier.domeTrainers[i].unk3 = 0; + DOME_TRAINERS[i].isEliminated = FALSE; + DOME_TRAINERS[i].eliminatedAt = 0; + DOME_TRAINERS[i].forfeited = FALSE; } monLevel = 50; @@ -6074,13 +6074,13 @@ static void sub_8194F58(void) { monTypesBits = 0; statSums[i] = 0; - ivs = GetDomeTrainerMonIvs(gSaveBlock2Ptr->frontier.domeTrainers[i].trainerId); + ivs = GetDomeTrainerMonIvs(DOME_TRAINERS[i].trainerId); for (j = 0; j < FRONTIER_PARTY_SIZE; j++) { - CalcDomeMonStats(gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[i][j]].species, + CalcDomeMonStats(gFacilityTrainerMons[DOME_MONS[i][j]].species, monLevel, ivs, - gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[i][j]].evSpread, - gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[i][j]].nature, + gFacilityTrainerMons[DOME_MONS[i][j]].evSpread, + gFacilityTrainerMons[DOME_MONS[i][j]].nature, statValues); statSums[i] += statValues[STAT_ATK]; @@ -6089,8 +6089,8 @@ static void sub_8194F58(void) statSums[i] += statValues[STAT_SPDEF]; statSums[i] += statValues[STAT_SPEED]; statSums[i] += statValues[STAT_HP]; - monTypesBits |= gBitTable[gBaseStats[gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[i][j]].species].type1]; - monTypesBits |= gBitTable[gBaseStats[gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[i][j]].species].type2]; + monTypesBits |= gBitTable[gBaseStats[gFacilityTrainerMons[DOME_MONS[i][j]].species].type1]; + monTypesBits |= gBitTable[gBaseStats[gFacilityTrainerMons[DOME_MONS[i][j]].species].type2]; } // Because GF hates temporary vars, trainerId acts like monTypesCount here. @@ -6113,7 +6113,7 @@ static void sub_8194F58(void) } else if (statSums[i] == statSums[j]) { - if (gSaveBlock2Ptr->frontier.domeTrainers[i].trainerId > gSaveBlock2Ptr->frontier.domeTrainers[j].trainerId) + if (DOME_TRAINERS[i].trainerId > DOME_TRAINERS[j].trainerId) SwapDomeTrainers(i, j, statSums); } } @@ -6122,7 +6122,7 @@ static void sub_8194F58(void) Free(statSums); Free(statValues); - for (i = 0; i < 4; i++) + for (i = 0; i < DOME_ROUNDS_COUNT; i++) DecideRoundWinners(i); gSaveBlock2Ptr->frontier.lvlMode = lvlMode; @@ -6134,7 +6134,7 @@ static int TrainerIdToTournamentId(u16 trainerId) for (i = 0; i < DOME_TOURNAMENT_TRAINERS_COUNT; i++) { - if (gSaveBlock2Ptr->frontier.domeTrainers[i].trainerId == trainerId) + if (DOME_TRAINERS[i].trainerId == trainerId) break; } @@ -6148,7 +6148,7 @@ int TrainerIdToDomeTournamentId(u16 trainerId) for (i = 0; i < DOME_TOURNAMENT_TRAINERS_COUNT; i++) { - if (gSaveBlock2Ptr->frontier.domeTrainers[i].trainerId == trainerId) + if (DOME_TRAINERS[i].trainerId == trainerId) break; } @@ -6157,14 +6157,15 @@ int TrainerIdToDomeTournamentId(u16 trainerId) static u8 sub_81953E8(u8 tournamentId, u8 round) { - u8 arr[2]; - sub_8192F08(gUnknown_0860D1A0[gUnknown_0860D1C0[tournamentId] / 2][round] - 16, arr); - if (tournamentId == arr[0]) - return arr[1]; + u8 tournamentIds[2]; + BufferDomeWinString(gUnknown_0860D1A0[gUnknown_0860D1C0[tournamentId] / 2][round] - 16, tournamentIds); + if (tournamentId == tournamentIds[0]) + return tournamentIds[1]; else - return arr[0]; + return tournamentIds[0]; } +// Determines which trainers won in the NPC vs NPC battles static void DecideRoundWinners(u8 roundId) { int i; @@ -6175,24 +6176,24 @@ static void DecideRoundWinners(u8 roundId) for (i = 0; i < DOME_TOURNAMENT_TRAINERS_COUNT; i++) { - if (gSaveBlock2Ptr->frontier.domeTrainers[i].isEliminated || gSaveBlock2Ptr->frontier.domeTrainers[i].trainerId == TRAINER_PLAYER) + if (DOME_TRAINERS[i].isEliminated || DOME_TRAINERS[i].trainerId == TRAINER_PLAYER) continue; tournamentId1 = i; - tournamentId2 = TournamentIdOfOpponent(roundId, gSaveBlock2Ptr->frontier.domeTrainers[tournamentId1].trainerId); + tournamentId2 = TournamentIdOfOpponent(roundId, DOME_TRAINERS[tournamentId1].trainerId); // Frontier Brain always wins, check tournamentId1. - if (gSaveBlock2Ptr->frontier.domeTrainers[tournamentId1].trainerId == TRAINER_FRONTIER_BRAIN && tournamentId2 != 0xFF) + if (DOME_TRAINERS[tournamentId1].trainerId == TRAINER_FRONTIER_BRAIN && tournamentId2 != 0xFF) { - gSaveBlock2Ptr->frontier.domeTrainers[tournamentId2].isEliminated = 1; - gSaveBlock2Ptr->frontier.domeTrainers[tournamentId2].eliminatedAt = roundId; - gSaveBlock2Ptr->frontier.field_EC0[tournamentId2] = GetWinningMove(tournamentId1, tournamentId2, roundId); + DOME_TRAINERS[tournamentId2].isEliminated = TRUE; + DOME_TRAINERS[tournamentId2].eliminatedAt = roundId; + gSaveBlock2Ptr->frontier.domeWinningMoves[tournamentId2] = GetWinningMove(tournamentId1, tournamentId2, roundId); } // Frontier Brain always wins, check tournamentId2. - else if (gSaveBlock2Ptr->frontier.domeTrainers[tournamentId2].trainerId == TRAINER_FRONTIER_BRAIN && tournamentId1 != 0xFF) + else if (DOME_TRAINERS[tournamentId2].trainerId == TRAINER_FRONTIER_BRAIN && tournamentId1 != 0xFF) { - gSaveBlock2Ptr->frontier.domeTrainers[tournamentId1].isEliminated = 1; - gSaveBlock2Ptr->frontier.domeTrainers[tournamentId1].eliminatedAt = roundId; - gSaveBlock2Ptr->frontier.field_EC0[tournamentId1] = GetWinningMove(tournamentId2, tournamentId1, roundId); + DOME_TRAINERS[tournamentId1].isEliminated = TRUE; + DOME_TRAINERS[tournamentId1].eliminatedAt = roundId; + gSaveBlock2Ptr->frontier.domeWinningMoves[tournamentId1] = GetWinningMove(tournamentId2, tournamentId1, roundId); } // Decide which one of two trainers wins! else if (tournamentId2 != 0xFF) @@ -6200,17 +6201,17 @@ static void DecideRoundWinners(u8 roundId) // BUG: points1 and points2 are not cleared at the beginning of the loop resulting in not fair results. // Calculate points for both trainers. - for (monId1 = 0; monId1 < 3; monId1++) + for (monId1 = 0; monId1 < FRONTIER_PARTY_SIZE; monId1++) { for (moveSlot = 0; moveSlot < MAX_MON_MOVES; moveSlot++) { - for (monId2 = 0; monId2 < 3; monId2++) + for (monId2 = 0; monId2 < FRONTIER_PARTY_SIZE; monId2++) { - points1 += GetTypeEffectivenessPoints(gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[tournamentId1][monId1]].moves[moveSlot], - gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[tournamentId2][monId2]].species, 2); + points1 += GetTypeEffectivenessPoints(gFacilityTrainerMons[DOME_MONS[tournamentId1][monId1]].moves[moveSlot], + gFacilityTrainerMons[DOME_MONS[tournamentId2][monId2]].species, 2); } } - species = gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[tournamentId1][monId1]].species; + species = gFacilityTrainerMons[DOME_MONS[tournamentId1][monId1]].species; points1 += ( gBaseStats[species].baseHP + gBaseStats[species].baseAttack + gBaseStats[species].baseDefense @@ -6223,17 +6224,17 @@ static void DecideRoundWinners(u8 roundId) // Favor trainers with higher id; points1 += tournamentId1; - for (monId1 = 0; monId1 < 3; monId1++) + for (monId1 = 0; monId1 < FRONTIER_PARTY_SIZE; monId1++) { for (moveSlot = 0; moveSlot < MAX_MON_MOVES; moveSlot++) { - for (monId2 = 0; monId2 < 3; monId2++) + for (monId2 = 0; monId2 < FRONTIER_PARTY_SIZE; monId2++) { - points2 += GetTypeEffectivenessPoints(gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[tournamentId2][monId1]].moves[moveSlot], - gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[tournamentId1][monId2]].species, 2); + points2 += GetTypeEffectivenessPoints(gFacilityTrainerMons[DOME_MONS[tournamentId2][monId1]].moves[moveSlot], + gFacilityTrainerMons[DOME_MONS[tournamentId1][monId2]].species, 2); } } - species = gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[tournamentId2][monId1]].species; + species = gFacilityTrainerMons[DOME_MONS[tournamentId2][monId1]].species; points2 += ( gBaseStats[species].baseHP + gBaseStats[species].baseAttack + gBaseStats[species].baseDefense @@ -6248,28 +6249,28 @@ static void DecideRoundWinners(u8 roundId) if (points1 > points2) { - gSaveBlock2Ptr->frontier.domeTrainers[tournamentId2].isEliminated = 1; - gSaveBlock2Ptr->frontier.domeTrainers[tournamentId2].eliminatedAt = roundId; - gSaveBlock2Ptr->frontier.field_EC0[tournamentId2] = GetWinningMove(tournamentId1, tournamentId2, roundId); + DOME_TRAINERS[tournamentId2].isEliminated = TRUE; + DOME_TRAINERS[tournamentId2].eliminatedAt = roundId; + gSaveBlock2Ptr->frontier.domeWinningMoves[tournamentId2] = GetWinningMove(tournamentId1, tournamentId2, roundId); } else if (points1 < points2) { - gSaveBlock2Ptr->frontier.domeTrainers[tournamentId1].isEliminated = 1; - gSaveBlock2Ptr->frontier.domeTrainers[tournamentId1].eliminatedAt = roundId; - gSaveBlock2Ptr->frontier.field_EC0[tournamentId1] = GetWinningMove(tournamentId2, tournamentId1, roundId); + DOME_TRAINERS[tournamentId1].isEliminated = TRUE; + DOME_TRAINERS[tournamentId1].eliminatedAt = roundId; + gSaveBlock2Ptr->frontier.domeWinningMoves[tournamentId1] = GetWinningMove(tournamentId2, tournamentId1, roundId); } // Points are the same, so we favor the one with the higher id. else if (tournamentId1 > tournamentId2) { - gSaveBlock2Ptr->frontier.domeTrainers[tournamentId2].isEliminated = 1; - gSaveBlock2Ptr->frontier.domeTrainers[tournamentId2].eliminatedAt = roundId; - gSaveBlock2Ptr->frontier.field_EC0[tournamentId2] = GetWinningMove(tournamentId1, tournamentId2, roundId); + DOME_TRAINERS[tournamentId2].isEliminated = TRUE; + DOME_TRAINERS[tournamentId2].eliminatedAt = roundId; + gSaveBlock2Ptr->frontier.domeWinningMoves[tournamentId2] = GetWinningMove(tournamentId1, tournamentId2, roundId); } else { - gSaveBlock2Ptr->frontier.domeTrainers[tournamentId1].isEliminated = 1; - gSaveBlock2Ptr->frontier.domeTrainers[tournamentId1].eliminatedAt = roundId; - gSaveBlock2Ptr->frontier.field_EC0[tournamentId1] = GetWinningMove(tournamentId2, tournamentId1, roundId); + DOME_TRAINERS[tournamentId1].isEliminated = TRUE; + DOME_TRAINERS[tournamentId1].eliminatedAt = roundId; + gSaveBlock2Ptr->frontier.domeWinningMoves[tournamentId1] = GetWinningMove(tournamentId2, tournamentId1, roundId); } } } @@ -6291,7 +6292,7 @@ static void CopyDomeTrainerName(u8 *str, u16 trainerId) for (i = 0; i < PLAYER_NAME_LENGTH; i++) str[i] = gSaveBlock2Ptr->playerName[i]; } - else if (trainerId < 300) + else if (trainerId < FRONTIER_TRAINERS_COUNT) { for (i = 0; i < PLAYER_NAME_LENGTH; i++) str[i] = gFacilityTrainers[trainerId].trainerName[i]; diff --git a/src/battle_factory.c b/src/battle_factory.c index b7e43394e..913b1b1a0 100644 --- a/src/battle_factory.c +++ b/src/battle_factory.c @@ -12,6 +12,7 @@ #include "constants/battle_ai.h" #include "constants/battle_factory.h" #include "constants/battle_frontier.h" +#include "constants/battle_frontier_mons.h" #include "constants/frontier_util.h" #include "constants/layouts.h" #include "constants/trainers.h" @@ -304,7 +305,7 @@ static void GenerateOpponentMons(void) do { - trainerId = sub_8162548(challengeNum, gSaveBlock2Ptr->frontier.curChallengeBattleNum); + trainerId = GetRandomScaledFrontierTrainerId(challengeNum, gSaveBlock2Ptr->frontier.curChallengeBattleNum); for (i = 0; i < gSaveBlock2Ptr->frontier.curChallengeBattleNum; i++) { if (gSaveBlock2Ptr->frontier.trainerIds[i] == trainerId) @@ -331,7 +332,7 @@ static void GenerateOpponentMons(void) if (j != 6) continue; - if (lvlMode == FRONTIER_LVL_50 && monSetId > 849) + if (lvlMode == FRONTIER_LVL_50 && monSetId > FRONTIER_MONS_HIGH_TIER) continue; for (k = firstMonId; k < firstMonId + i; k++) @@ -727,7 +728,7 @@ void FillFactoryBrainParty(void) if (gFacilityTrainerMons[monSetId].species == SPECIES_UNOWN) continue; - if (monLevel == 50 && monSetId > 849) + if (monLevel == 50 && monSetId > FRONTIER_MONS_HIGH_TIER) continue; for (j = 0; j < 6; j++) diff --git a/src/battle_interface.c b/src/battle_interface.c index cf9aa7f1b..12273addb 100644 --- a/src/battle_interface.c +++ b/src/battle_interface.c @@ -761,62 +761,52 @@ static s32 DummiedOutFunction(s16 unused1, s16 unused2, s32 unused3) { return 9; } - -#ifdef NONMATCHING -static void sub_8072308(s16 arg0, u16 *arg1, u8 arg2) +void sub_8072308(s16 number, u16 *dest, bool8 unk) { s8 i, j; - u8 array[4]; - u8 *arrayPtr; - s32 r9, vaaa; + u8 buff[4]; for (i = 0; i < 4; i++) - array[i] = 0; + { + buff[i] = 0; + } - i = 3; - r9 = -1; - arrayPtr = array; - while (1) + for (i = 3; ; i--) { - if (arg0 > 0) + if (number > 0) { - array[i] = arg0 % 10; - arg0 = arg0 / 10; - i--; + buff[i] = number % 10; + number /= 10; } else { + for (; i > -1; i--) + { + buff[i] = 0xFF; + } + if (buff[3] == 0xFF) + buff[3] = 0; break; } } - for (; i > -1; i--) - { - array[i] = 0xFF; - } - - if (arrayPtr[3] == 0xFF) - arrayPtr[3] = 0; - - if (arg2 == 0) + if (!unk) { for (i = 0, j = 0; i < 4; i++) { - if (array[j] == 0xFF) + if (buff[j] == 0xFF) { - arg1[j] &= 0xFC00; - arg1[j] |= 0x1E; - - arg1[i + 0x20] &= 0xFC00; - arg1[i + 0x20] |= 0x1E; + dest[j + 0x00] &= 0xFC00; + dest[j + 0x00] |= 0x1E; + dest[i + 0x20] &= 0xFC00; + dest[i + 0x20] |= 0x1E; } else { - arg1[j] &= 0xFC00; - arg1[j] |= array[j] + 0x14; - - arg1[i + 0x20] &= 0xFC00; - arg1[i + 0x20] |= array[i] + 0x34; + dest[j + 0x00] &= 0xFC00; + dest[j + 0x00] |= 0x14 + buff[j]; + dest[i + 0x20] &= 0xFC00; + dest[i + 0x20] |= 0x34 + buff[i]; } j++; } @@ -825,254 +815,24 @@ static void sub_8072308(s16 arg0, u16 *arg1, u8 arg2) { for (i = 0; i < 4; i++) { - if (array[i] == 0xFF) + if (buff[i] == 0xFF) { - arg1[i] &= 0xFC00; - arg1[i] |= 0x1E; - - arg1[i + 0x20] &= 0xFC00; - arg1[i + 0x20] |= 0x1E; + dest[i + 0x00] &= 0xFC00; + dest[i + 0x00] |= 0x1E; + dest[i + 0x20] &= 0xFC00; + dest[i + 0x20] |= 0x1E; } else { - arg1[i] &= 0xFC00; - arg1[i] |= array[i] + 0x14; - - arg1[i + 0x20] &= 0xFC00; - arg1[i + 0x20] |= array[i] + 0x34; + dest[i + 0x00] &= 0xFC00; + dest[i + 0x00] |= 0x14 + buff[i]; + dest[i + 0x20] &= 0xFC00; + dest[i + 0x20] |= 0x34 + buff[i]; } } } } -#else -NAKED -static void sub_8072308(s16 arg0, u16 *arg1, u8 arg2) -{ - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r10\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5-r7}\n\ - sub sp, 0x4\n\ - adds r7, r1, 0\n\ - lsls r0, 16\n\ - lsrs r5, r0, 16\n\ - lsls r2, 24\n\ - lsrs r2, 24\n\ - mov r10, r2\n\ - movs r3, 0\n\ - movs r2, 0\n\ -_08072324:\n\ - lsls r0, r3, 24\n\ - asrs r0, 24\n\ - mov r3, sp\n\ - adds r1, r3, r0\n\ - strb r2, [r1]\n\ - adds r0, 0x1\n\ - lsls r0, 24\n\ - lsrs r3, r0, 24\n\ - asrs r0, 24\n\ - cmp r0, 0x3\n\ - ble _08072324\n\ - movs r3, 0x3\n\ - movs r0, 0x1\n\ - negs r0, r0\n\ - mov r9, r0\n\ - mov r8, sp\n\ -_08072344:\n\ - lsls r0, r5, 16\n\ - asrs r6, r0, 16\n\ - cmp r6, 0\n\ - ble _08072372\n\ - lsls r4, r3, 24\n\ - asrs r4, 24\n\ - mov r1, sp\n\ - adds r5, r1, r4\n\ - adds r0, r6, 0\n\ - movs r1, 0xA\n\ - bl __modsi3\n\ - strb r0, [r5]\n\ - adds r0, r6, 0\n\ - movs r1, 0xA\n\ - bl __divsi3\n\ - lsls r0, 16\n\ - lsrs r5, r0, 16\n\ - subs r4, 0x1\n\ - lsls r4, 24\n\ - lsrs r3, r4, 24\n\ - b _08072344\n\ -_08072372:\n\ - lsls r1, r3, 24\n\ - asrs r0, r1, 24\n\ - cmp r0, r9\n\ - ble _08072396\n\ - movs r4, 0xFF\n\ - movs r3, 0x1\n\ - negs r3, r3\n\ -_08072380:\n\ - asrs r2, r1, 24\n\ - mov r5, sp\n\ - adds r1, r5, r2\n\ - ldrb r0, [r1]\n\ - orrs r0, r4\n\ - strb r0, [r1]\n\ - subs r2, 0x1\n\ - lsls r1, r2, 24\n\ - asrs r0, r1, 24\n\ - cmp r0, r3\n\ - bgt _08072380\n\ -_08072396:\n\ - mov r1, r8\n\ - ldrb r0, [r1, 0x3]\n\ - cmp r0, 0xFF\n\ - bne _080723A2\n\ - movs r0, 0\n\ - strb r0, [r1, 0x3]\n\ -_080723A2:\n\ - mov r2, r10\n\ - cmp r2, 0\n\ - bne _08072432\n\ - movs r3, 0\n\ - movs r1, 0\n\ - movs r6, 0xFC\n\ - lsls r6, 8\n\ - movs r5, 0x1E\n\ - mov r12, r5\n\ -_080723B4:\n\ - lsls r1, 24\n\ - asrs r2, r1, 24\n\ - mov r0, sp\n\ - adds r5, r0, r2\n\ - ldrb r0, [r5]\n\ - mov r8, r1\n\ - cmp r0, 0xFF\n\ - bne _080723EA\n\ - lsls r1, r2, 1\n\ - adds r1, r7\n\ - ldrh r2, [r1]\n\ - adds r0, r6, 0\n\ - ands r0, r2\n\ - mov r2, r12\n\ - orrs r0, r2\n\ - strh r0, [r1]\n\ - lsls r3, 24\n\ - asrs r1, r3, 23\n\ - adds r1, r7\n\ - adds r1, 0x40\n\ - ldrh r2, [r1]\n\ - adds r0, r6, 0\n\ - ands r0, r2\n\ - mov r5, r12\n\ - orrs r0, r5\n\ - strh r0, [r1]\n\ - b _0807241A\n\ -_080723EA:\n\ - lsls r2, 1\n\ - adds r2, r7\n\ - ldrh r0, [r2]\n\ - adds r1, r6, 0\n\ - ands r1, r0\n\ - ldrb r0, [r5]\n\ - adds r0, 0x14\n\ - orrs r1, r0\n\ - strh r1, [r2]\n\ - lsls r4, r3, 24\n\ - asrs r3, r4, 24\n\ - lsls r2, r3, 1\n\ - adds r2, r7\n\ - adds r2, 0x40\n\ - ldrh r0, [r2]\n\ - adds r1, r6, 0\n\ - ands r1, r0\n\ - mov r5, sp\n\ - adds r0, r5, r3\n\ - ldrb r0, [r0]\n\ - adds r0, 0x34\n\ - orrs r1, r0\n\ - strh r1, [r2]\n\ - adds r3, r4, 0\n\ -_0807241A:\n\ - movs r0, 0x80\n\ - lsls r0, 17\n\ - add r0, r8\n\ - lsrs r1, r0, 24\n\ - movs r2, 0x80\n\ - lsls r2, 17\n\ - adds r0, r3, r2\n\ - lsrs r3, r0, 24\n\ - asrs r0, 24\n\ - cmp r0, 0x3\n\ - ble _080723B4\n\ - b _08072496\n\ -_08072432:\n\ - movs r3, 0\n\ - movs r4, 0xFC\n\ - lsls r4, 8\n\ - movs r6, 0x1E\n\ -_0807243A:\n\ - lsls r1, r3, 24\n\ - asrs r2, r1, 24\n\ - mov r3, sp\n\ - adds r5, r3, r2\n\ - ldrb r0, [r5]\n\ - adds r3, r1, 0\n\ - cmp r0, 0xFF\n\ - bne _08072466\n\ - lsls r1, r2, 1\n\ - adds r1, r7\n\ - ldrh r2, [r1]\n\ - adds r0, r4, 0\n\ - ands r0, r2\n\ - orrs r0, r6\n\ - strh r0, [r1]\n\ - adds r1, 0x40\n\ - ldrh r2, [r1]\n\ - adds r0, r4, 0\n\ - ands r0, r2\n\ - orrs r0, r6\n\ - strh r0, [r1]\n\ - b _08072488\n\ -_08072466:\n\ - lsls r2, 1\n\ - adds r2, r7\n\ - ldrh r0, [r2]\n\ - adds r1, r4, 0\n\ - ands r1, r0\n\ - ldrb r0, [r5]\n\ - adds r0, 0x14\n\ - orrs r1, r0\n\ - strh r1, [r2]\n\ - adds r2, 0x40\n\ - ldrh r0, [r2]\n\ - adds r1, r4, 0\n\ - ands r1, r0\n\ - ldrb r0, [r5]\n\ - adds r0, 0x34\n\ - orrs r1, r0\n\ - strh r1, [r2]\n\ -_08072488:\n\ - movs r5, 0x80\n\ - lsls r5, 17\n\ - adds r0, r3, r5\n\ - lsrs r3, r0, 24\n\ - asrs r0, 24\n\ - cmp r0, 0x3\n\ - ble _0807243A\n\ -_08072496:\n\ - add sp, 0x4\n\ - pop {r3-r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov r10, r5\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .syntax divided"); -} - -#endif // NONMATCHING void sub_80724A8(s16 arg0, s16 arg1, u16 *arg2) { diff --git a/src/battle_palace.c b/src/battle_palace.c index 56fd04c68..633666254 100644 --- a/src/battle_palace.c +++ b/src/battle_palace.c @@ -159,7 +159,7 @@ static void SetPalaceOpponent(void) static void BufferOpponentIntroSpeech(void) { - if (gTrainerBattleOpponent_A < TRAINER_RECORD_MIXING_FRIEND) + if (gTrainerBattleOpponent_A < FRONTIER_TRAINERS_COUNT) FrontierSpeechToString(gFacilityTrainers[gTrainerBattleOpponent_A].speechBefore); } diff --git a/src/battle_pike.c b/src/battle_pike.c index 81951ac98..9bc7254ec 100644 --- a/src/battle_pike.c +++ b/src/battle_pike.c @@ -1400,7 +1400,7 @@ static void PrepareOneTrainer(bool8 difficult) challengeNum = gSaveBlock2Ptr->frontier.pikeWinStreaks[lvlMode] / 14; do { - trainerId = sub_8162548(challengeNum, battleNum); + trainerId = GetRandomScaledFrontierTrainerId(challengeNum, battleNum); for (i = 0; i < gSaveBlock2Ptr->frontier.curChallengeBattleNum - 1; i++) { if (gSaveBlock2Ptr->frontier.trainerIds[i] == trainerId) @@ -1425,7 +1425,7 @@ static void PrepareTwoTrainers(void) gFacilityTrainers = gBattleFrontierTrainers; do { - trainerId = sub_8162548(challengeNum, 1); + trainerId = GetRandomScaledFrontierTrainerId(challengeNum, 1); for (i = 0; i < gSaveBlock2Ptr->frontier.curChallengeBattleNum - 1; i++) { if (gSaveBlock2Ptr->frontier.trainerIds[i] == trainerId) @@ -1440,7 +1440,7 @@ static void PrepareTwoTrainers(void) do { - trainerId = sub_8162548(challengeNum, 1); + trainerId = GetRandomScaledFrontierTrainerId(challengeNum, 1); for (i = 0; i < gSaveBlock2Ptr->frontier.curChallengeBattleNum; i++) { if (gSaveBlock2Ptr->frontier.trainerIds[i] == trainerId) @@ -1466,12 +1466,12 @@ static void BufferTrainerIntro(void) { if (gSpecialVar_0x8005 == 0) { - if (gTrainerBattleOpponent_A < TRAINER_RECORD_MIXING_FRIEND) + if (gTrainerBattleOpponent_A < FRONTIER_TRAINERS_COUNT) FrontierSpeechToString(gFacilityTrainers[gTrainerBattleOpponent_A].speechBefore); } else if (gSpecialVar_0x8005 == 1) { - if (gTrainerBattleOpponent_B < TRAINER_RECORD_MIXING_FRIEND) + if (gTrainerBattleOpponent_B < FRONTIER_TRAINERS_COUNT) FrontierSpeechToString(gFacilityTrainers[gTrainerBattleOpponent_B].speechBefore); } } diff --git a/src/battle_pyramid.c b/src/battle_pyramid.c index 4038d2c6d..b015f3e0e 100644 --- a/src/battle_pyramid.c +++ b/src/battle_pyramid.c @@ -1493,7 +1493,7 @@ static u16 GetUniqueTrainerId(u8 objectEventId) { do { - trainerId = sub_8162548(challengeNum + 1, battleNum); + trainerId = GetRandomScaledFrontierTrainerId(challengeNum + 1, battleNum); for (i = 0; i < objectEventId; i++) { if (gSaveBlock2Ptr->frontier.trainerIds[i] == trainerId) @@ -1505,7 +1505,7 @@ static u16 GetUniqueTrainerId(u8 objectEventId) { do { - trainerId = sub_8162548(challengeNum, battleNum); + trainerId = GetRandomScaledFrontierTrainerId(challengeNum, battleNum); for (i = 0; i < objectEventId; i++) { if (gSaveBlock2Ptr->frontier.trainerIds[i] == trainerId) diff --git a/src/battle_setup.c b/src/battle_setup.c index 0e98d7554..f6b386bf8 100644 --- a/src/battle_setup.c +++ b/src/battle_setup.c @@ -961,12 +961,12 @@ static u8 TrainerBattleLoadArg8(const u8 *ptr) static u16 GetTrainerAFlag(void) { - return FLAG_TRAINER_FLAG_START + gTrainerBattleOpponent_A; + return TRAINER_FLAGS_START + gTrainerBattleOpponent_A; } static u16 GetTrainerBFlag(void) { - return FLAG_TRAINER_FLAG_START + gTrainerBattleOpponent_B; + return TRAINER_FLAGS_START + gTrainerBattleOpponent_B; } static bool32 IsPlayerDefeated(u32 battleOutcome) @@ -1193,7 +1193,7 @@ void SetUpTwoTrainersBattle(void) bool32 GetTrainerFlagFromScriptPointer(const u8 *data) { u32 flag = TrainerBattleLoadArg16(data + 2); - return FlagGet(FLAG_TRAINER_FLAG_START + flag); + return FlagGet(TRAINER_FLAGS_START + flag); } void SetUpTrainerMovement(void) @@ -1232,17 +1232,17 @@ static void SetBattledTrainerFlag(void) bool8 HasTrainerBeenFought(u16 trainerId) { - return FlagGet(FLAG_TRAINER_FLAG_START + trainerId); + return FlagGet(TRAINER_FLAGS_START + trainerId); } void SetTrainerFlag(u16 trainerId) { - FlagSet(FLAG_TRAINER_FLAG_START + trainerId); + FlagSet(TRAINER_FLAGS_START + trainerId); } void ClearTrainerFlag(u16 trainerId) { - FlagClear(FLAG_TRAINER_FLAG_START + trainerId); + FlagClear(TRAINER_FLAGS_START + trainerId); } void BattleSetup_StartTrainerBattle(void) diff --git a/src/battle_tent.c b/src/battle_tent.c index 860c07a53..b2db0e39c 100644 --- a/src/battle_tent.c +++ b/src/battle_tent.c @@ -12,6 +12,8 @@ #include "frontier_util.h" #include "string_util.h" #include "constants/battle_tent.h" +#include "constants/battle_tent_trainers.h" +#include "constants/battle_tent_mons.h" #include "constants/items.h" #include "constants/layouts.h" #include "constants/region_map_sections.h" @@ -134,7 +136,7 @@ static void SetVerdanturfTentTrainerGfx(void) static void BufferVerdanturfTentTrainerIntro(void) { - if (gTrainerBattleOpponent_A < TRAINER_RECORD_MIXING_FRIEND) + if (gTrainerBattleOpponent_A < FRONTIER_TRAINERS_COUNT) FrontierSpeechToString(gFacilityTrainers[gTrainerBattleOpponent_A].speechBefore); } @@ -311,7 +313,7 @@ static void GenerateInitialRentalMons(void) while (i != PARTY_SIZE) { // Cannot have two pokemon of the same species. - monSetId = Random() % 70; + monSetId = Random() % NUM_SLATEPORT_TENT_MONS; for (j = firstMonId; j < firstMonId + i; j++) { u16 monId = monIds[j]; @@ -353,10 +355,10 @@ static void GenerateOpponentMons(void) { u16 trainerId; s32 i, j, k; - register const u16 *monSets asm("r9"); // Fix me. Compiler insists on moving that variable into stack. + register const u16 *monSet asm("r9"); // Fix me. Compiler insists on moving that variable into stack. u16 species[FRONTIER_PARTY_SIZE]; u16 heldItems[FRONTIER_PARTY_SIZE]; - s32 setsCount = 0; + s32 monId = 0; gFacilityTrainers = gSlateportBattleTentTrainers; gFacilityTrainerMons = gSlateportBattleTentMons; @@ -365,7 +367,7 @@ static void GenerateOpponentMons(void) { do { - trainerId = Random() % 30; + trainerId = Random() % NUM_BATTLE_TENT_TRAINERS; for (i = 0; i < gSaveBlock2Ptr->frontier.curChallengeBattleNum; i++) { if (gSaveBlock2Ptr->frontier.trainerIds[i] == trainerId) @@ -374,21 +376,21 @@ static void GenerateOpponentMons(void) } while (i != gSaveBlock2Ptr->frontier.curChallengeBattleNum); gTrainerBattleOpponent_A = trainerId; - while (gFacilityTrainers[gTrainerBattleOpponent_A].monSets[setsCount] != 0xFFFF) - setsCount++; - if (setsCount > 8) + while (gFacilityTrainers[gTrainerBattleOpponent_A].monSet[monId] != 0xFFFF) + monId++; + if (monId > 8) break; - setsCount = 0; + monId = 0; } if (gSaveBlock2Ptr->frontier.curChallengeBattleNum < 2) gSaveBlock2Ptr->frontier.trainerIds[gSaveBlock2Ptr->frontier.curChallengeBattleNum] = gTrainerBattleOpponent_A; - monSets = gFacilityTrainers[gTrainerBattleOpponent_A].monSets; + monSet = gFacilityTrainers[gTrainerBattleOpponent_A].monSet; i = 0; while (i != FRONTIER_PARTY_SIZE) { - sRandMonSetId = monSets[Random() % setsCount]; + sRandMonSetId = monSet[Random() % monId]; for (j = 0; j < 6; j++) { if (gFacilityTrainerMons[sRandMonSetId].species == gFacilityTrainerMons[gSaveBlock2Ptr->frontier.rentalMons[j].monId].species) diff --git a/src/battle_tower.c b/src/battle_tower.c index 8d0a32d16..4890e7a05 100644 --- a/src/battle_tower.c +++ b/src/battle_tower.c @@ -25,6 +25,9 @@ #include "battle_factory.h" #include "constants/apprentice.h" #include "constants/battle_frontier.h" +#include "constants/battle_frontier_mons.h" +#include "constants/battle_tent_mons.h" +#include "constants/battle_tent_trainers.h" #include "constants/battle_tower.h" #include "constants/frontier_util.h" #include "constants/items.h" @@ -849,30 +852,37 @@ static const u8 sBattleTowerPartySizes2[] = [FRONTIER_MODE_LINK_MULTIS] = FRONTIER_MULTI_PARTY_SIZE, }; -static const u16 gUnknown_085DF9FA[][2] = +// Trainer ID ranges for possible frontier trainers to encounter on particular challenges +// Trainers are scaled by difficulty, so higher trainer IDs have better teams +static const u16 sFrontierTrainerIdRanges[][2] = { - {0x0000, 0x0063}, - {0x0050, 0x0077}, - {0x0064, 0x008b}, - {0x0078, 0x009f}, - {0x008c, 0x00b3}, - {0x00a0, 0x00c7}, - {0x00b4, 0x00db}, - {0x00c8, 0x012b}, + {FRONTIER_TRAINER_BRADY, FRONTIER_TRAINER_JILL}, // 0 - 99 + {FRONTIER_TRAINER_TREVIN, FRONTIER_TRAINER_CHLOE}, // 80 - 119 + {FRONTIER_TRAINER_ERIK, FRONTIER_TRAINER_SOFIA}, // 100 - 139 + {FRONTIER_TRAINER_NORTON, FRONTIER_TRAINER_JAZLYN}, // 120 - 159 + {FRONTIER_TRAINER_BRADEN, FRONTIER_TRAINER_ALISON}, // 140 - 179 + {FRONTIER_TRAINER_ZACHERY, FRONTIER_TRAINER_LAMAR}, // 160 - 199 + {FRONTIER_TRAINER_HANK, FRONTIER_TRAINER_TESS}, // 180 - 219 + {FRONTIER_TRAINER_JAXON, FRONTIER_TRAINER_GRETEL}, // 200 - 299 }; -static const u16 gUnknown_085DFA1A[][2] = +static const u16 sFrontierTrainerIdRangesHard[][2] = { - {0x0064, 0x0077}, - {0x0078, 0x008b}, - {0x008c, 0x009f}, - {0x00a0, 0x00b3}, - {0x00b4, 0x00c7}, - {0x00c8, 0x00db}, - {0x00dc, 0x00ef}, - {0x00c8, 0x012b}, - {0x00b3, 0x008d}, - {0x00c8, 0x00b7}, + {FRONTIER_TRAINER_ERIK, FRONTIER_TRAINER_CHLOE}, // 100 - 119 + {FRONTIER_TRAINER_NORTON, FRONTIER_TRAINER_SOFIA}, // 120 - 139 + {FRONTIER_TRAINER_BRADEN, FRONTIER_TRAINER_JAZLYN}, // 140 - 159 + {FRONTIER_TRAINER_ZACHERY, FRONTIER_TRAINER_ALISON}, // 160 - 179 + {FRONTIER_TRAINER_HANK, FRONTIER_TRAINER_LAMAR}, // 180 - 199 + {FRONTIER_TRAINER_JAXON, FRONTIER_TRAINER_TESS}, // 200 - 219 + {FRONTIER_TRAINER_LEON, FRONTIER_TRAINER_RAUL}, // 220 - 239 + {FRONTIER_TRAINER_JAXON, FRONTIER_TRAINER_GRETEL}, // 200 - 299 +}; + +// Trainer IDs? Don't make sense as part of previous array, min/max relationship reversed and never accessed +static const u16 sUnused_085DFA1A[][2] = +{ + {179, 141}, // FRONTIER_TRAINER_ALISON - FRONTIER_TRAINER_KAYDEN + {200, 183}, // FRONTIER_TRAINER_JAXON - FRONTIER_TRAINER_HUNTER }; static const u8 sBattleTowerPartySizes[FRONTIER_MODE_COUNT] = @@ -1077,7 +1087,7 @@ static void SetNextFacilityOpponent(void) s32 i; while (1) { - id = sub_8162548(challengeNum, gSaveBlock2Ptr->frontier.curChallengeBattleNum); + id = GetRandomScaledFrontierTrainerId(challengeNum, gSaveBlock2Ptr->frontier.curChallengeBattleNum); // Ensure trainer wasn't previously fought in this challenge. for (i = 0; i < gSaveBlock2Ptr->frontier.curChallengeBattleNum; i++) @@ -1097,7 +1107,7 @@ static void SetNextFacilityOpponent(void) } } -u16 sub_8162548(u8 challengeNum, u8 battleNum) +u16 GetRandomScaledFrontierTrainerId(u8 challengeNum, u8 battleNum) { u16 trainerId; @@ -1105,49 +1115,54 @@ u16 sub_8162548(u8 challengeNum, u8 battleNum) { if (battleNum == 6) { - trainerId = (gUnknown_085DFA1A[challengeNum][1] - gUnknown_085DFA1A[challengeNum][0]) + 1; - trainerId = gUnknown_085DFA1A[challengeNum][0] + (Random() % trainerId); + // The last battle in each challenge has a jump in difficulty, pulls from a table with higher ranges + trainerId = (sFrontierTrainerIdRangesHard[challengeNum][1] - sFrontierTrainerIdRangesHard[challengeNum][0]) + 1; + trainerId = sFrontierTrainerIdRangesHard[challengeNum][0] + (Random() % trainerId); } else { - trainerId = (gUnknown_085DF9FA[challengeNum][1] - gUnknown_085DF9FA[challengeNum][0]) + 1; - trainerId = gUnknown_085DF9FA[challengeNum][0] + (Random() % trainerId); + trainerId = (sFrontierTrainerIdRanges[challengeNum][1] - sFrontierTrainerIdRanges[challengeNum][0]) + 1; + trainerId = sFrontierTrainerIdRanges[challengeNum][0] + (Random() % trainerId); } } else { - trainerId = (gUnknown_085DF9FA[7][1] - gUnknown_085DF9FA[7][0]) + 1; - trainerId = gUnknown_085DF9FA[7][0] + (Random() % trainerId); + // After challenge 7, trainer IDs always come from the last, hardest range, which is the same for both trainer ID tables + trainerId = (sFrontierTrainerIdRanges[7][1] - sFrontierTrainerIdRanges[7][0]) + 1; + trainerId = sFrontierTrainerIdRanges[7][0] + (Random() % trainerId); } return trainerId; } -static void sub_81625B4(u8 challengeNum, u8 battleNum, u16 *trainerIdPtr, u8 *arg3) // Unused +// Unused +static void GetRandomScaledFrontierTrainerIdRange(u8 challengeNum, u8 battleNum, u16 *trainerIdPtr, u8 *rangePtr) { - u16 trainerId, count; + u16 trainerId, range; if (challengeNum <= 7) { if (battleNum == 6) { - count = (gUnknown_085DFA1A[challengeNum][1] - gUnknown_085DFA1A[challengeNum][0]) + 1; - trainerId = gUnknown_085DFA1A[challengeNum][0]; + // The last battle in each challenge has a jump in difficulty, pulls from a table with higher ranges + range = (sFrontierTrainerIdRangesHard[challengeNum][1] - sFrontierTrainerIdRangesHard[challengeNum][0]) + 1; + trainerId = sFrontierTrainerIdRangesHard[challengeNum][0]; } else { - count = (gUnknown_085DF9FA[challengeNum][1] - gUnknown_085DF9FA[challengeNum][0]) + 1; - trainerId = gUnknown_085DF9FA[challengeNum][0]; + range = (sFrontierTrainerIdRanges[challengeNum][1] - sFrontierTrainerIdRanges[challengeNum][0]) + 1; + trainerId = sFrontierTrainerIdRanges[challengeNum][0]; } } else { - count = (gUnknown_085DF9FA[7][1] - gUnknown_085DF9FA[7][0]) + 1; - trainerId = gUnknown_085DF9FA[7][0]; + // After challenge 7, trainer IDs always come from the last, hardest range, which is the same for both trainer ID tables + range = (sFrontierTrainerIdRanges[7][1] - sFrontierTrainerIdRanges[7][0]) + 1; + trainerId = sFrontierTrainerIdRanges[7][0]; } *trainerIdPtr = trainerId; - *arg3 = count; + *rangePtr = range; } void SetBattleFacilityTrainerGfxId(u16 trainerId, u8 tempVarId) @@ -1166,7 +1181,7 @@ void SetBattleFacilityTrainerGfxId(u16 trainerId, u8 tempVarId) SetFrontierBrainObjEventGfx_2(); return; } - else if (trainerId < TRAINER_RECORD_MIXING_FRIEND) + else if (trainerId < FRONTIER_TRAINERS_COUNT) { facilityClass = gFacilityTrainers[trainerId].facilityClass; } @@ -1258,7 +1273,7 @@ u8 GetBattleFacilityTrainerGfxId(u16 trainerId) { facilityClass = gSaveBlock2Ptr->frontier.ereaderTrainer.facilityClass; } - else if (trainerId < TRAINER_RECORD_MIXING_FRIEND) + else if (trainerId < FRONTIER_TRAINERS_COUNT) { facilityClass = gFacilityTrainers[trainerId].facilityClass; } @@ -1400,7 +1415,7 @@ u8 GetFrontierTrainerFrontSpriteId(u16 trainerId) { return GetFrontierBrainTrainerPicIndex(); } - else if (trainerId < TRAINER_RECORD_MIXING_FRIEND) + else if (trainerId < FRONTIER_TRAINERS_COUNT) { return gFacilityClassToPicIndex[gFacilityTrainers[trainerId].facilityClass]; } @@ -1437,7 +1452,7 @@ u8 GetFrontierOpponentClass(u16 trainerId) { trainerClass = gTrainers[TRAINER_STEVEN].trainerClass; } - else if (trainerId < TRAINER_RECORD_MIXING_FRIEND) + else if (trainerId < FRONTIER_TRAINERS_COUNT) { trainerClass = gFacilityClassToTrainerClass[gFacilityTrainers[trainerId].facilityClass]; } @@ -1478,7 +1493,7 @@ static u8 GetFrontierTrainerFacilityClass(u16 trainerId) { facilityClass = gSaveBlock2Ptr->frontier.ereaderTrainer.facilityClass; } - else if (trainerId < TRAINER_RECORD_MIXING_FRIEND) + else if (trainerId < FRONTIER_TRAINERS_COUNT) { facilityClass = gFacilityTrainers[trainerId].facilityClass; } @@ -1520,7 +1535,7 @@ void GetFrontierTrainerName(u8 *dst, u16 trainerId) for (i = 0; i < PLAYER_NAME_LENGTH; i++) dst[i] = gTrainers[TRAINER_STEVEN].trainerName[i]; } - else if (trainerId < TRAINER_RECORD_MIXING_FRIEND) + else if (trainerId < FRONTIER_TRAINERS_COUNT) { for (i = 0; i < PLAYER_NAME_LENGTH; i++) dst[i] = gFacilityTrainers[trainerId].trainerName[i]; @@ -1575,7 +1590,7 @@ static bool8 IsFrontierTrainerFemale(u16 trainerId) { return IsFrontierBrainFemale(); } - else if (trainerId < TRAINER_RECORD_MIXING_FRIEND) + else if (trainerId < FRONTIER_TRAINERS_COUNT) { facilityClass = gFacilityTrainers[trainerId].facilityClass; } @@ -1623,18 +1638,18 @@ static void FillTrainerParty(u16 trainerId, u8 firstMonId, u8 monCount) { s32 i, j; u16 chosenMonIndices[4]; - u8 friendship = 0xFF; + u8 friendship = MAX_FRIENDSHIP; u8 level = SetFacilityPtrsGetLevel(); u8 fixedIV = 0; u8 bfMonCount; - const u16 *monSets = NULL; + const u16 *monSet = NULL; u32 otID = 0; - if (trainerId < TRAINER_RECORD_MIXING_FRIEND) + if (trainerId < FRONTIER_TRAINERS_COUNT) { // Normal battle frontier trainer. fixedIV = GetFrontierTrainerFixedIvs(trainerId); - monSets = gFacilityTrainers[gTrainerBattleOpponent_A].monSets; + monSet = gFacilityTrainers[gTrainerBattleOpponent_A].monSet; } else if (trainerId == TRAINER_EREADER) { @@ -1672,20 +1687,20 @@ static void FillTrainerParty(u16 trainerId, u8 firstMonId, u8 monCount) // Attempt to fill the trainer's party with random Pokemon until 3 have been // successfully chosen. The trainer's party may not have duplicate pokemon species // or duplicate held items. - for (bfMonCount = 0; monSets[bfMonCount] != 0xFFFF; bfMonCount++) + for (bfMonCount = 0; monSet[bfMonCount] != 0xFFFF; bfMonCount++) ; i = 0; otID = Random32(); while (i != monCount) { - u16 monSetId = monSets[Random() % bfMonCount]; - if ((level == 50 || level == 20) && monSetId > 849) + u16 monId = monSet[Random() % bfMonCount]; + if ((level == 50 || level == 20) && monId > FRONTIER_MONS_HIGH_TIER) continue; // Ensure this pokemon species isn't a duplicate. for (j = 0; j < i + firstMonId; j++) { - if (GetMonData(&gEnemyParty[j], MON_DATA_SPECIES, NULL) == gFacilityTrainerMons[monSetId].species) + if (GetMonData(&gEnemyParty[j], MON_DATA_SPECIES, NULL) == gFacilityTrainerMons[monId].species) break; } if (j != i + firstMonId) @@ -1695,7 +1710,7 @@ static void FillTrainerParty(u16 trainerId, u8 firstMonId, u8 monCount) for (j = 0; j < i + firstMonId; j++) { if (GetMonData(&gEnemyParty[j], MON_DATA_HELD_ITEM, NULL) != 0 - && GetMonData(&gEnemyParty[j], MON_DATA_HELD_ITEM, NULL) == gBattleFrontierHeldItems[gFacilityTrainerMons[monSetId].itemTableId]) + && GetMonData(&gEnemyParty[j], MON_DATA_HELD_ITEM, NULL) == gBattleFrontierHeldItems[gFacilityTrainerMons[monId].itemTableId]) break; } if (j != i + firstMonId) @@ -1705,34 +1720,34 @@ static void FillTrainerParty(u16 trainerId, u8 firstMonId, u8 monCount) // because the species and held items were already checked directly above. for (j = 0; j < i; j++) { - if (chosenMonIndices[j] == monSetId) + if (chosenMonIndices[j] == monId) break; } if (j != i) continue; - chosenMonIndices[i] = monSetId; + chosenMonIndices[i] = monId; // Place the chosen pokemon into the trainer's party. CreateMonWithEVSpreadNatureOTID(&gEnemyParty[i + firstMonId], - gFacilityTrainerMons[monSetId].species, + gFacilityTrainerMons[monId].species, level, - gFacilityTrainerMons[monSetId].nature, + gFacilityTrainerMons[monId].nature, fixedIV, - gFacilityTrainerMons[monSetId].evSpread, + gFacilityTrainerMons[monId].evSpread, otID); - friendship = 255; + friendship = MAX_FRIENDSHIP; // Give the chosen pokemon its specified moves. for (j = 0; j < MAX_MON_MOVES; j++) { - SetMonMoveSlot(&gEnemyParty[i + firstMonId], gFacilityTrainerMons[monSetId].moves[j], j); - if (gFacilityTrainerMons[monSetId].moves[j] == MOVE_FRUSTRATION) + SetMonMoveSlot(&gEnemyParty[i + firstMonId], gFacilityTrainerMons[monId].moves[j], j); + if (gFacilityTrainerMons[monId].moves[j] == MOVE_FRUSTRATION) friendship = 0; // Frustration is more powerful the lower the pokemon's friendship is. } SetMonData(&gEnemyParty[i + firstMonId], MON_DATA_FRIENDSHIP, &friendship); - SetMonData(&gEnemyParty[i + firstMonId], MON_DATA_HELD_ITEM, &gBattleFrontierHeldItems[gFacilityTrainerMons[monSetId].itemTableId]); + SetMonData(&gEnemyParty[i + firstMonId], MON_DATA_HELD_ITEM, &gBattleFrontierHeldItems[gFacilityTrainerMons[monId].itemTableId]); // The pokemon was successfully added to the trainer's party, so it's safe to move on to // the next party slot. @@ -1744,7 +1759,7 @@ static void FillTrainerParty(u16 trainerId, u8 firstMonId, u8 monCount) static void Unused_CreateApprenticeMons(u16 trainerId, u8 firstMonId) { s32 i, j; - u8 friendship = 0xFF; + u8 friendship = MAX_FRIENDSHIP; u8 level = 0; u8 fixedIV = 0; struct Apprentice *apprentice = &gSaveBlock2Ptr->apprentices[0]; @@ -1762,7 +1777,7 @@ static void Unused_CreateApprenticeMons(u16 trainerId, u8 firstMonId) for (i = 0; i != 3; i++) { CreateMonWithEVSpread(&gEnemyParty[firstMonId + i], apprentice->party[i].species, level, fixedIV, 8); - friendship = 0xFF; + friendship = MAX_FRIENDSHIP; for (j = 0; j < MAX_MON_MOVES; j++) { if (apprentice->party[i].moves[j] == MOVE_FRUSTRATION) @@ -1773,27 +1788,27 @@ static void Unused_CreateApprenticeMons(u16 trainerId, u8 firstMonId) } } -u16 RandomizeFacilityTrainerMonSet(u16 trainerId) +u16 GetRandomFrontierMonFromSet(u16 trainerId) { u8 level = SetFacilityPtrsGetLevel(); - const u16 *monSets = gFacilityTrainers[trainerId].monSets; - u8 bfMonCount = 0; - u32 monSetId = monSets[bfMonCount]; + const u16 *monSet = gFacilityTrainers[trainerId].monSet; + u8 numMons = 0; + u32 monId = monSet[numMons]; - while (monSetId != 0xFFFF) + while (monId != 0xFFFF) { - bfMonCount++; - monSetId = monSets[bfMonCount]; - if (monSetId == 0xFFFF) + numMons++; + monId = monSet[numMons]; + if (monId == 0xFFFF) break; } do { - monSetId = monSets[Random() % bfMonCount]; - } while((level == 50 || level == 20) && monSetId > 849); + monId = monSet[Random() % numMons]; + } while((level == 50 || level == 20) && monId > FRONTIER_MONS_HIGH_TIER); - return monSetId; + return monId; } static void FillFactoryTrainerParty(void) @@ -1813,7 +1828,7 @@ static void FillFactoryFrontierTrainerParty(u16 trainerId, u8 firstMonId) u8 fixedIV; u32 otID; - if (trainerId < TRAINER_RECORD_MIXING_FRIEND) + if (trainerId < FRONTIER_TRAINERS_COUNT) { u8 lvlMode = gSaveBlock2Ptr->frontier.lvlMode; // Unused variable. u8 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE); @@ -1843,21 +1858,21 @@ static void FillFactoryFrontierTrainerParty(u16 trainerId, u8 firstMonId) otID = T1_READ_32(gSaveBlock2Ptr->playerTrainerId); for (i = 0; i < FRONTIER_PARTY_SIZE; i++) { - u16 monSetId = gUnknown_03006298[i]; + u16 monId = gUnknown_03006298[i]; CreateMonWithEVSpreadNatureOTID(&gEnemyParty[firstMonId + i], - gFacilityTrainerMons[monSetId].species, + gFacilityTrainerMons[monId].species, level, - gFacilityTrainerMons[monSetId].nature, + gFacilityTrainerMons[monId].nature, fixedIV, - gFacilityTrainerMons[monSetId].evSpread, + gFacilityTrainerMons[monId].evSpread, otID); friendship = 0; for (j = 0; j < MAX_MON_MOVES; j++) - SetMonMoveAvoidReturn(&gEnemyParty[firstMonId + i], gFacilityTrainerMons[monSetId].moves[j], j); + SetMonMoveAvoidReturn(&gEnemyParty[firstMonId + i], gFacilityTrainerMons[monId].moves[j], j); SetMonData(&gEnemyParty[firstMonId + i], MON_DATA_FRIENDSHIP, &friendship); - SetMonData(&gEnemyParty[firstMonId + i], MON_DATA_HELD_ITEM, &gBattleFrontierHeldItems[gFacilityTrainerMons[monSetId].itemTableId]); + SetMonData(&gEnemyParty[firstMonId + i], MON_DATA_HELD_ITEM, &gBattleFrontierHeldItems[gFacilityTrainerMons[monId].itemTableId]); } } @@ -1871,25 +1886,25 @@ static void FillFactoryTentTrainerParty(u16 trainerId, u8 firstMonId) for (i = 0; i < FRONTIER_PARTY_SIZE; i++) { - u16 monSetId = gUnknown_03006298[i]; + u16 monId = gUnknown_03006298[i]; CreateMonWithEVSpreadNatureOTID(&gEnemyParty[firstMonId + i], - gFacilityTrainerMons[monSetId].species, + gFacilityTrainerMons[monId].species, level, - gFacilityTrainerMons[monSetId].nature, + gFacilityTrainerMons[monId].nature, fixedIV, - gFacilityTrainerMons[monSetId].evSpread, + gFacilityTrainerMons[monId].evSpread, otID); friendship = 0; for (j = 0; j < MAX_MON_MOVES; j++) { - SetMonMoveAvoidReturn(&gEnemyParty[firstMonId + i], gFacilityTrainerMons[monSetId].moves[j], j); - if (gFacilityTrainerMons[monSetId].moves[j] == MOVE_FRUSTRATION) + SetMonMoveAvoidReturn(&gEnemyParty[firstMonId + i], gFacilityTrainerMons[monId].moves[j], j); + if (gFacilityTrainerMons[monId].moves[j] == MOVE_FRUSTRATION) friendship = 0; } SetMonData(&gEnemyParty[firstMonId + i], MON_DATA_FRIENDSHIP, &friendship); - SetMonData(&gEnemyParty[firstMonId + i], MON_DATA_HELD_ITEM, &gBattleFrontierHeldItems[gFacilityTrainerMons[monSetId].itemTableId]); + SetMonData(&gEnemyParty[firstMonId + i], MON_DATA_HELD_ITEM, &gBattleFrontierHeldItems[gFacilityTrainerMons[monId].itemTableId]); } } @@ -1922,7 +1937,7 @@ static void GetOpponentIntroSpeech(void) if (trainerId == TRAINER_EREADER) FrontierSpeechToString(gSaveBlock2Ptr->frontier.ereaderTrainer.greeting); - else if (trainerId < TRAINER_RECORD_MIXING_FRIEND) + else if (trainerId < FRONTIER_TRAINERS_COUNT) FrontierSpeechToString(gFacilityTrainers[trainerId].speechBefore); else if (trainerId < TRAINER_RECORD_MIXING_APPRENTICE) FrontierSpeechToString(gSaveBlock2Ptr->frontier.towerRecords[trainerId - TRAINER_RECORD_MIXING_FRIEND].greeting); @@ -2150,7 +2165,7 @@ static void sub_8163EE4(void) StringCopy7(playerRecord->name, gSaveBlock2Ptr->playerName); playerRecord->winStreak = GetCurrentBattleTowerWinStreak(lvlMode, battleMode); - for (i = 0; i < 6; i++) + for (i = 0; i < EASY_CHAT_BATTLE_WORDS_COUNT; i++) { playerRecord->greeting[i] = gSaveBlock1Ptr->easyChatBattleStart[i]; playerRecord->speechWon[i] = gSaveBlock1Ptr->easyChatBattleWon[i]; @@ -2252,7 +2267,7 @@ static void LoadMultiPartnerCandidatesData(void) u32 spArray[5]; s32 r10; u16 trainerId; - u16 monSetId; + u16 monId; u32 lvlMode, battleMode; s32 challengeNum; u32 species1, species2; @@ -2272,7 +2287,7 @@ static void LoadMultiPartnerCandidatesData(void) { do { - trainerId = sub_8162548(challengeNum, 0); + trainerId = GetRandomScaledFrontierTrainerId(challengeNum, 0); for (i = 0; i < j; i++) { if (gSaveBlock2Ptr->frontier.trainerIds[i] == trainerId) @@ -2294,24 +2309,24 @@ static void LoadMultiPartnerCandidatesData(void) { while (1) { - monSetId = RandomizeFacilityTrainerMonSet(trainerId); - if (j % 2 != 0 && gFacilityTrainerMons[gSaveBlock2Ptr->frontier.trainerIds[r10 - 1]].itemTableId == gFacilityTrainerMons[monSetId].itemTableId) + monId = GetRandomFrontierMonFromSet(trainerId); + if (j % 2 != 0 && gFacilityTrainerMons[gSaveBlock2Ptr->frontier.trainerIds[r10 - 1]].itemTableId == gFacilityTrainerMons[monId].itemTableId) continue; for (k = 8; k < r10; k++) { - if (gFacilityTrainerMons[gSaveBlock2Ptr->frontier.trainerIds[k]].species == gFacilityTrainerMons[monSetId].species) + if (gFacilityTrainerMons[gSaveBlock2Ptr->frontier.trainerIds[k]].species == gFacilityTrainerMons[monId].species) break; - if (species1 == gFacilityTrainerMons[monSetId].species) + if (species1 == gFacilityTrainerMons[monId].species) break; - if (species2 == gFacilityTrainerMons[monSetId].species) + if (species2 == gFacilityTrainerMons[monId].species) break; } if (k == r10) break; } - gSaveBlock2Ptr->frontier.trainerIds[r10] = monSetId; + gSaveBlock2Ptr->frontier.trainerIds[r10] = monId; r10++; } } @@ -2392,7 +2407,7 @@ static void LoadMultiPartnerCandidatesData(void) } } -static void sub_81646BC(u16 trainerId, u16 monSetId) +static void sub_81646BC(u16 trainerId, u16 monId) { u16 move = 0; u16 species = 0; @@ -2400,10 +2415,10 @@ static void sub_81646BC(u16 trainerId, u16 monSetId) if (trainerId != TRAINER_EREADER) { - if (trainerId < TRAINER_RECORD_MIXING_FRIEND) + if (trainerId < FRONTIER_TRAINERS_COUNT) { - move = gFacilityTrainerMons[monSetId].moves[0]; - species = gFacilityTrainerMons[monSetId].species; + move = gFacilityTrainerMons[monId].moves[0]; + species = gFacilityTrainerMons[monId].species; } else if (trainerId < TRAINER_RECORD_MIXING_APPRENTICE) { @@ -2430,7 +2445,7 @@ static void sub_81646BC(u16 trainerId, u16 monSetId) static void ShowPartnerCandidateMessage(void) { s32 i, j, partnerId; - s32 monSetId; + s32 monId; s32 level = SetFacilityPtrsGetLevel(); u16 winStreak = GetCurrentFacilityWinStreak(); s32 challengeNum = winStreak / 7; @@ -2448,7 +2463,7 @@ static void ShowPartnerCandidateMessage(void) case PARTNER_MSGID_INTRO: if (trainerId == TRAINER_EREADER) return; - if (trainerId < TRAINER_RECORD_MIXING_FRIEND) + if (trainerId < FRONTIER_TRAINERS_COUNT) { GetFrontierTrainerName(gStringVar1, trainerId); } @@ -2468,16 +2483,16 @@ static void ShowPartnerCandidateMessage(void) } break; case PARTNER_MSGID_MON1: - monSetId = gSaveBlock2Ptr->frontier.trainerIds[8 + k * 2]; - sub_81646BC(trainerId, monSetId); + monId = gSaveBlock2Ptr->frontier.trainerIds[8 + k * 2]; + sub_81646BC(trainerId, monId); break; case PARTNER_MSGID_MON2_ASK: - monSetId = gSaveBlock2Ptr->frontier.trainerIds[9 + k * 2]; - sub_81646BC(trainerId, monSetId); + monId = gSaveBlock2Ptr->frontier.trainerIds[9 + k * 2]; + sub_81646BC(trainerId, monId); break; case PARTNER_MSGID_ACCEPT: gPartnerTrainerId = trainerId; - if (trainerId < TRAINER_RECORD_MIXING_FRIEND) + if (trainerId < FRONTIER_TRAINERS_COUNT) { gSaveBlock2Ptr->frontier.trainerIds[18] = gSaveBlock2Ptr->frontier.trainerIds[8 + k * 2]; gSaveBlock2Ptr->frontier.trainerIds[19] = gSaveBlock2Ptr->frontier.trainerIds[9 + k * 2]; @@ -2496,7 +2511,7 @@ static void ShowPartnerCandidateMessage(void) { while (1) { - i = sub_8162548(challengeNum, k / 2); + i = GetRandomScaledFrontierTrainerId(challengeNum, k / 2); if (gPartnerTrainerId == i) continue; @@ -2520,7 +2535,7 @@ static void ShowPartnerCandidateMessage(void) return; // First check is redundant, only needs to make sure it's not an Apprentice - if (trainerId < TRAINER_RECORD_MIXING_FRIEND) + if (trainerId < FRONTIER_TRAINERS_COUNT) { ShowFieldMessage(sPartnerTrainerTextTables[partnerId].strings[gSpecialVar_0x8005]); } @@ -2575,7 +2590,7 @@ static void LoadLinkMultiOpponentsData(void) { do { - trainerId = sub_8162548(challengeNum, i / 2); + trainerId = GetRandomScaledFrontierTrainerId(challengeNum, i / 2); for (j = 0; j < i; j++) { if (gSaveBlock2Ptr->frontier.trainerIds[j] == trainerId) @@ -2908,13 +2923,13 @@ static void CopyEReaderTrainerFarewellMessage(void) FrontierSpeechToString(gSaveBlock2Ptr->frontier.ereaderTrainer.farewellPlayerLost); } -void sub_81653CC(void) +void TryHideBattleTowerReporter(void) { if (gSaveBlock2Ptr->frontier.challengeStatus == CHALLENGE_STATUS_SAVING) - sub_80F01B8(); + HideBattleTowerReporter(); if (FlagGet(FLAG_CANCEL_BATTLE_ROOM_CHALLENGE) == TRUE) { - sub_80F01B8(); + HideBattleTowerReporter(); FlagClear(FLAG_CANCEL_BATTLE_ROOM_CHALLENGE); } } @@ -2926,7 +2941,7 @@ static void FillPartnerParty(u16 trainerId) s32 i, j; u32 ivs, level; u32 friendship; - u16 monSetId; + u16 monId; u32 otID; u8 trainerName[PLAYER_NAME_LENGTH + 1]; SetFacilityPtrsGetLevel(); @@ -2960,30 +2975,30 @@ static void FillPartnerParty(u16 trainerId) // Scrapped, lol. trainerName[0] = gGameLanguage; } - else if (trainerId < TRAINER_RECORD_MIXING_FRIEND) + else if (trainerId < FRONTIER_TRAINERS_COUNT) { level = SetFacilityPtrsGetLevel(); ivs = GetFrontierTrainerFixedIvs(trainerId); otID = Random32(); for (i = 0; i < 2; i++) { - monSetId = gSaveBlock2Ptr->frontier.trainerIds[i + 18]; + monId = gSaveBlock2Ptr->frontier.trainerIds[i + 18]; CreateMonWithEVSpreadNatureOTID(&gPlayerParty[3 + i], - gFacilityTrainerMons[monSetId].species, + gFacilityTrainerMons[monId].species, level, - gFacilityTrainerMons[monSetId].nature, + gFacilityTrainerMons[monId].nature, ivs, - gFacilityTrainerMons[monSetId].evSpread, + gFacilityTrainerMons[monId].evSpread, otID); - friendship = 0xFF; + friendship = MAX_FRIENDSHIP; for (j = 0; j < MAX_MON_MOVES; j++) { - SetMonMoveSlot(&gPlayerParty[3 + i], gFacilityTrainerMons[monSetId].moves[j], j); - if (gFacilityTrainerMons[monSetId].moves[j] == MOVE_FRUSTRATION) + SetMonMoveSlot(&gPlayerParty[3 + i], gFacilityTrainerMons[monId].moves[j], j); + if (gFacilityTrainerMons[monId].moves[j] == MOVE_FRUSTRATION) friendship = 0; } SetMonData(&gPlayerParty[3 + i], MON_DATA_FRIENDSHIP, &friendship); - SetMonData(&gPlayerParty[3 + i], MON_DATA_HELD_ITEM, &gBattleFrontierHeldItems[gFacilityTrainerMons[monSetId].itemTableId]); + SetMonData(&gPlayerParty[3 + i], MON_DATA_HELD_ITEM, &gBattleFrontierHeldItems[gFacilityTrainerMons[monId].itemTableId]); for (j = 0; j < PLAYER_NAME_LENGTH + 1; j++) trainerName[j] = gFacilityTrainers[trainerId].trainerName[j]; SetMonData(&gPlayerParty[3 + i], MON_DATA_OT_NAME, &trainerName); @@ -3164,7 +3179,7 @@ void GetBattleTowerTrainerLanguage(u8 *dst, u16 trainerId) { *dst = gGameLanguage; } - else if (trainerId < TRAINER_RECORD_MIXING_FRIEND) + else if (trainerId < FRONTIER_TRAINERS_COUNT) { *dst = gGameLanguage; } @@ -3237,28 +3252,30 @@ s32 GetHighestLevelInPlayerParty(void) return highestLevel; } +// Frontier Trainer parties are roughly scaled in difficulty with higher trainer IDs, so scale IVs as well +// Duplicated in Battle Dome as GetDomeTrainerMonIvs static u8 GetFrontierTrainerFixedIvs(u16 trainerId) { - u8 fixedIV = 0; + u8 fixedIv; - if (trainerId < 100) - fixedIV = 3; - else if (trainerId < 120) - fixedIV = 6; - else if (trainerId < 140) - fixedIV = 9; - else if (trainerId < 160) - fixedIV = 12; - else if (trainerId < 180) - fixedIV = 15; - else if (trainerId < 200) - fixedIV = 18; - else if (trainerId < 220) - fixedIV = 21; - else - fixedIV = 31; + if (trainerId <= FRONTIER_TRAINER_JILL) // 0 - 99 + fixedIv = 3; + else if (trainerId <= FRONTIER_TRAINER_CHLOE) // 100 - 119 + fixedIv = 6; + else if (trainerId <= FRONTIER_TRAINER_SOFIA) // 120 - 139 + fixedIv = 9; + else if (trainerId <= FRONTIER_TRAINER_JAZLYN) // 140 - 159 + fixedIv = 12; + else if (trainerId <= FRONTIER_TRAINER_ALISON) // 160 - 179 + fixedIv = 15; + else if (trainerId <= FRONTIER_TRAINER_LAMAR) // 180 - 199 + fixedIv = 18; + else if (trainerId <= FRONTIER_TRAINER_TESS) // 200 - 219 + fixedIv = 21; + else // 220+ (- 299) + fixedIv = 31; - return fixedIV; + return fixedIv; } static u16 sub_8165D40(void) @@ -3280,19 +3297,19 @@ static u16 sub_8165D40(void) static u8 SetTentPtrsGetLevel(void) { u8 level = 30; - u32 tentFacility = VarGet(VAR_FRONTIER_FACILITY); + u32 facility = VarGet(VAR_FRONTIER_FACILITY); - if (tentFacility == TENT_SLATEPORT) + if (facility == FRONTIER_FACILITY_FACTORY) { gFacilityTrainers = gSlateportBattleTentTrainers; gFacilityTrainerMons = gSlateportBattleTentMons; } - else if (tentFacility == TENT_VERDANTURF) + else if (facility == FRONTIER_FACILITY_PALACE) { gFacilityTrainers = gVerdanturfBattleTentTrainers; gFacilityTrainerMons = gVerdanturfBattleTentMons; } - else if (tentFacility == TENT_FALLARBOR) + else if (facility == FRONTIER_FACILITY_ARENA) { gFacilityTrainers = gFallarborBattleTentTrainers; gFacilityTrainerMons = gFallarborBattleTentMons; @@ -3339,19 +3356,19 @@ static void FillTentTrainerParty_(u16 trainerId, u8 firstMonId, u8 monCount) u8 level = SetTentPtrsGetLevel(); u8 fixedIV = 0; u8 bfMonCount; - const u16 *monSets = NULL; + const u16 *monSet = NULL; u32 otID = 0; - u16 monSetId; + u16 monId; - monSets = gFacilityTrainers[gTrainerBattleOpponent_A].monSets; + monSet = gFacilityTrainers[gTrainerBattleOpponent_A].monSet; bfMonCount = 0; - monSetId = monSets[bfMonCount]; - while (monSetId != 0xFFFF) + monId = monSet[bfMonCount]; + while (monId != 0xFFFF) { bfMonCount++; - monSetId = monSets[bfMonCount]; - if (monSetId == 0xFFFF) + monId = monSet[bfMonCount]; + if (monId == 0xFFFF) break; } @@ -3359,12 +3376,12 @@ static void FillTentTrainerParty_(u16 trainerId, u8 firstMonId, u8 monCount) otID = Random32(); while (i != monCount) { - u16 monSetId = monSets[Random() % bfMonCount]; + u16 monId = monSet[Random() % bfMonCount]; // Ensure this pokemon species isn't a duplicate. for (j = 0; j < i + firstMonId; j++) { - if (GetMonData(&gEnemyParty[j], MON_DATA_SPECIES, NULL) == gFacilityTrainerMons[monSetId].species) + if (GetMonData(&gEnemyParty[j], MON_DATA_SPECIES, NULL) == gFacilityTrainerMons[monId].species) break; } if (j != i + firstMonId) @@ -3374,7 +3391,7 @@ static void FillTentTrainerParty_(u16 trainerId, u8 firstMonId, u8 monCount) for (j = 0; j < i + firstMonId; j++) { if (GetMonData(&gEnemyParty[j], MON_DATA_HELD_ITEM, NULL) != 0 - && GetMonData(&gEnemyParty[j], MON_DATA_HELD_ITEM, NULL) == gBattleFrontierHeldItems[gFacilityTrainerMons[monSetId].itemTableId]) + && GetMonData(&gEnemyParty[j], MON_DATA_HELD_ITEM, NULL) == gBattleFrontierHeldItems[gFacilityTrainerMons[monId].itemTableId]) break; } if (j != i + firstMonId) @@ -3384,34 +3401,34 @@ static void FillTentTrainerParty_(u16 trainerId, u8 firstMonId, u8 monCount) // because the species and held items were already checked directly above. for (j = 0; j < i; j++) { - if (chosenMonIndices[j] == monSetId) + if (chosenMonIndices[j] == monId) break; } if (j != i) continue; - chosenMonIndices[i] = monSetId; + chosenMonIndices[i] = monId; // Place the chosen pokemon into the trainer's party. CreateMonWithEVSpreadNatureOTID(&gEnemyParty[i + firstMonId], - gFacilityTrainerMons[monSetId].species, + gFacilityTrainerMons[monId].species, level, - gFacilityTrainerMons[monSetId].nature, + gFacilityTrainerMons[monId].nature, fixedIV, - gFacilityTrainerMons[monSetId].evSpread, + gFacilityTrainerMons[monId].evSpread, otID); - friendship = 255; + friendship = MAX_FRIENDSHIP; // Give the chosen pokemon its specified moves. for (j = 0; j < MAX_MON_MOVES; j++) { - SetMonMoveSlot(&gEnemyParty[i + firstMonId], gFacilityTrainerMons[monSetId].moves[j], j); - if (gFacilityTrainerMons[monSetId].moves[j] == MOVE_FRUSTRATION) + SetMonMoveSlot(&gEnemyParty[i + firstMonId], gFacilityTrainerMons[monId].moves[j], j); + if (gFacilityTrainerMons[monId].moves[j] == MOVE_FRUSTRATION) friendship = 0; // Frustration is more powerful the lower the pokemon's friendship is. } SetMonData(&gEnemyParty[i + firstMonId], MON_DATA_FRIENDSHIP, &friendship); - SetMonData(&gEnemyParty[i + firstMonId], MON_DATA_HELD_ITEM, &gBattleFrontierHeldItems[gFacilityTrainerMons[monSetId].itemTableId]); + SetMonData(&gEnemyParty[i + firstMonId], MON_DATA_HELD_ITEM, &gBattleFrontierHeldItems[gFacilityTrainerMons[monId].itemTableId]); // The pokemon was successfully added to the trainer's party, so it's safe to move on to // the next party slot. diff --git a/src/cable_club.c b/src/cable_club.c index ab72ee3f2..11920bea9 100644 --- a/src/cable_club.c +++ b/src/cable_club.c @@ -592,7 +592,7 @@ void TryTradeLinkup(void) sub_80B236C(2, 2); } -void sub_80B2E74(void) +void TryRecordMixLinkup(void) { gSpecialVar_Result = 0; gLinkType = LINKTYPE_0x3311; @@ -784,7 +784,8 @@ static void sub_80B3220(u8 taskId) } } -void sub_80B3254(void) +// Unused +void CableClubSaveGame(void) { SaveGame(); } @@ -1298,10 +1299,10 @@ void sub_80B3AF8(u8 taskId) } } -void sub_80B3BC4(void) +void TrySetBattleTowerLinkType(void) { if (gWirelessCommType == 0) { - gLinkType = LINKTYPE_0x2288; + gLinkType = LINKTYPE_BATTLE_TOWER; } } diff --git a/src/contest.c b/src/contest.c index f1741d16a..58628e35d 100644 --- a/src/contest.c +++ b/src/contest.c @@ -5093,7 +5093,7 @@ static void sub_80DE864(u8 a) gContestResources->field_18->unk4_0 = 1; break; case MOVE_RETURN: - gAnimFriendship = 0xFF; + gAnimFriendship = MAX_FRIENDSHIP; break; case MOVE_FRUSTRATION: gAnimFriendship = 0; diff --git a/src/data/battle_frontier/battle_frontier_mons.h b/src/data/battle_frontier/battle_frontier_mons.h index 44cfb8036..d94d6acaf 100644 --- a/src/data/battle_frontier/battle_frontier_mons.h +++ b/src/data/battle_frontier/battle_frontier_mons.h @@ -1,6173 +1,6173 @@ -const struct FacilityMon gBattleFrontierMons[] = +const struct FacilityMon gBattleFrontierMons[NUM_FRONTIER_MONS] = { - [0] = { + [FRONTIER_MON_SUNKERN] = { .species = SPECIES_SUNKERN, .moves = {MOVE_MEGA_DRAIN, MOVE_HELPING_HAND, MOVE_SUNNY_DAY, MOVE_LIGHT_SCREEN}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [1] = { + [FRONTIER_MON_AZURILL] = { .species = SPECIES_AZURILL, .moves = {MOVE_WATER_PULSE, MOVE_ATTRACT, MOVE_SING, MOVE_CHARM}, .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_RASH }, - [2] = { + [FRONTIER_MON_CATERPIE] = { .species = SPECIES_CATERPIE, .moves = {MOVE_TACKLE, MOVE_STRING_SHOT, MOVE_NONE, MOVE_NONE}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [3] = { + [FRONTIER_MON_WEEDLE] = { .species = SPECIES_WEEDLE, .moves = {MOVE_POISON_STING, MOVE_STRING_SHOT, MOVE_NONE, MOVE_NONE}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [4] = { + [FRONTIER_MON_WURMPLE] = { .species = SPECIES_WURMPLE, .moves = {MOVE_TACKLE, MOVE_STRING_SHOT, MOVE_POISON_STING, MOVE_NONE}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [5] = { + [FRONTIER_MON_RALTS] = { .species = SPECIES_RALTS, .moves = {MOVE_CONFUSION, MOVE_IMPRISON, MOVE_DOUBLE_TEAM, MOVE_LIGHT_SCREEN}, .itemTableId = BATTLE_FRONTIER_ITEM_TWISTED_SPOON, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [6] = { + [FRONTIER_MON_MAGIKARP] = { .species = SPECIES_MAGIKARP, .moves = {MOVE_FLAIL, MOVE_NONE, MOVE_NONE, MOVE_NONE}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [7] = { + [FRONTIER_MON_FEEBAS] = { .species = SPECIES_FEEBAS, .moves = {MOVE_FLAIL, MOVE_MIRROR_COAT, MOVE_NONE, MOVE_NONE}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_LONELY }, - [8] = { + [FRONTIER_MON_METAPOD] = { .species = SPECIES_METAPOD, .moves = {MOVE_HARDEN, MOVE_NONE, MOVE_NONE, MOVE_NONE}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_BASHFUL }, - [9] = { + [FRONTIER_MON_KAKUNA] = { .species = SPECIES_KAKUNA, .moves = {MOVE_HARDEN, MOVE_NONE, MOVE_NONE, MOVE_NONE}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_BASHFUL }, - [10] = { + [FRONTIER_MON_PICHU] = { .species = SPECIES_PICHU, .moves = {MOVE_SWEET_KISS, MOVE_THUNDER_WAVE, MOVE_ATTRACT, MOVE_SHOCK_WAVE}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_RASH }, - [11] = { + [FRONTIER_MON_SILCOON] = { .species = SPECIES_SILCOON, .moves = {MOVE_HARDEN, MOVE_NONE, MOVE_NONE, MOVE_NONE}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_BASHFUL }, - [12] = { + [FRONTIER_MON_CASCOON] = { .species = SPECIES_CASCOON, .moves = {MOVE_HARDEN, MOVE_NONE, MOVE_NONE, MOVE_NONE}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_BASHFUL }, - [13] = { + [FRONTIER_MON_IGGLYBUFF] = { .species = SPECIES_IGGLYBUFF, .moves = {MOVE_SWEET_KISS, MOVE_SING, MOVE_ATTRACT, MOVE_SEISMIC_TOSS}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [14] = { + [FRONTIER_MON_WOOPER] = { .species = SPECIES_WOOPER, .moves = {MOVE_YAWN, MOVE_DIG, MOVE_WATER_PULSE, MOVE_RAIN_DANCE}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [15] = { + [FRONTIER_MON_TYROGUE] = { .species = SPECIES_TYROGUE, .moves = {MOVE_MACH_PUNCH, MOVE_PROTECT, MOVE_DOUBLE_TEAM, MOVE_FACADE}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [16] = { + [FRONTIER_MON_SENTRET] = { .species = SPECIES_SENTRET, .moves = {MOVE_QUICK_ATTACK, MOVE_FOLLOW_ME, MOVE_HELPING_HAND, MOVE_ASSIST}, .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [17] = { + [FRONTIER_MON_CLEFFA] = { .species = SPECIES_CLEFFA, .moves = {MOVE_SWEET_KISS, MOVE_SING, MOVE_ATTRACT, MOVE_METRONOME}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_SERIOUS }, - [18] = { + [FRONTIER_MON_SEEDOT] = { .species = SPECIES_SEEDOT, .moves = {MOVE_BULLET_SEED, MOVE_BIDE, MOVE_DEFENSE_CURL, MOVE_ROLLOUT}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [19] = { + [FRONTIER_MON_LOTAD] = { .species = SPECIES_LOTAD, .moves = {MOVE_RAIN_DANCE, MOVE_WATER_PULSE, MOVE_SUNNY_DAY, MOVE_MEGA_DRAIN}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [20] = { + [FRONTIER_MON_POOCHYENA] = { .species = SPECIES_POOCHYENA, .moves = {MOVE_CRUNCH, MOVE_SWAGGER, MOVE_ROAR, MOVE_SAND_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [21] = { + [FRONTIER_MON_SHEDINJA] = { .species = SPECIES_SHEDINJA, .moves = {MOVE_SHADOW_BALL, MOVE_CONFUSE_RAY, MOVE_SILVER_WIND, MOVE_GRUDGE}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, .nature = NATURE_NAIVE }, - [22] = { + [FRONTIER_MON_MAKUHITA] = { .species = SPECIES_MAKUHITA, .moves = {MOVE_FAKE_OUT, MOVE_SEISMIC_TOSS, MOVE_DETECT, MOVE_WHIRLWIND}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [23] = { + [FRONTIER_MON_WHISMUR] = { .species = SPECIES_WHISMUR, .moves = {MOVE_UPROAR, MOVE_SWAGGER, MOVE_BODY_SLAM, MOVE_SMELLING_SALT}, .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [24] = { + [FRONTIER_MON_ZIGZAGOON] = { .species = SPECIES_ZIGZAGOON, .moves = {MOVE_HEADBUTT, MOVE_PIN_MISSILE, MOVE_SWIFT, MOVE_SAND_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_SILK_SCARF, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_TIMID }, - [25] = { + [FRONTIER_MON_ZUBAT] = { .species = SPECIES_ZUBAT, .moves = {MOVE_POISON_FANG, MOVE_WHIRLWIND, MOVE_CONFUSE_RAY, MOVE_AERIAL_ACE}, .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_SASSY }, - [26] = { + [FRONTIER_MON_TOGEPI] = { .species = SPECIES_TOGEPI, .moves = {MOVE_RETURN, MOVE_YAWN, MOVE_WISH, MOVE_SWEET_KISS}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [27] = { + [FRONTIER_MON_SPINARAK] = { .species = SPECIES_SPINARAK, .moves = {MOVE_SIGNAL_BEAM, MOVE_NIGHT_SHADE, MOVE_SPIDER_WEB, MOVE_SCARY_FACE}, .itemTableId = BATTLE_FRONTIER_ITEM_LIECHI_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [28] = { + [FRONTIER_MON_MARILL] = { .species = SPECIES_MARILL, .moves = {MOVE_WATER_PULSE, MOVE_RAIN_DANCE, MOVE_LIGHT_SCREEN, MOVE_RETURN}, .itemTableId = BATTLE_FRONTIER_ITEM_MYSTIC_WATER, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_GENTLE }, - [29] = { + [FRONTIER_MON_HOPPIP] = { .species = SPECIES_HOPPIP, .moves = {MOVE_MEGA_DRAIN, MOVE_LEECH_SEED, MOVE_SLEEP_POWDER, MOVE_STUN_SPORE}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_LAX }, - [30] = { + [FRONTIER_MON_SLUGMA] = { .species = SPECIES_SLUGMA, .moves = {MOVE_EMBER, MOVE_ROCK_SLIDE, MOVE_YAWN, MOVE_BODY_SLAM}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_SASSY }, - [31] = { + [FRONTIER_MON_SWINUB] = { .species = SPECIES_SWINUB, .moves = {MOVE_ICY_WIND, MOVE_DIG, MOVE_ROCK_TOMB, MOVE_ENDURE}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_GENTLE }, - [32] = { + [FRONTIER_MON_SMEARGLE] = { .species = SPECIES_SMEARGLE, .moves = {MOVE_EXTREME_SPEED, MOVE_FAKE_OUT, MOVE_QUICK_ATTACK, MOVE_MACH_PUNCH}, .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [33] = { + [FRONTIER_MON_PIDGEY] = { .species = SPECIES_PIDGEY, .moves = {MOVE_GUST, MOVE_SAND_ATTACK, MOVE_WHIRLWIND, MOVE_QUICK_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_SHARP_BEAK, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_LONELY }, - [34] = { + [FRONTIER_MON_RATTATA] = { .species = SPECIES_RATTATA, .moves = {MOVE_HYPER_FANG, MOVE_PURSUIT, MOVE_QUICK_ATTACK, MOVE_SWAGGER}, .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [35] = { + [FRONTIER_MON_WYNAUT] = { .species = SPECIES_WYNAUT, .moves = {MOVE_ENCORE, MOVE_COUNTER, MOVE_MIRROR_COAT, MOVE_CHARM}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_JOLLY }, - [36] = { + [FRONTIER_MON_SKITTY] = { .species = SPECIES_SKITTY, .moves = {MOVE_SING, MOVE_ATTRACT, MOVE_CHARM, MOVE_DOUBLE_SLAP}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [37] = { + [FRONTIER_MON_SPEAROW] = { .species = SPECIES_SPEAROW, .moves = {MOVE_FURY_ATTACK, MOVE_PURSUIT, MOVE_MIRROR_MOVE, MOVE_PROTECT}, .itemTableId = BATTLE_FRONTIER_ITEM_LIECHI_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [38] = { + [FRONTIER_MON_HOOTHOOT] = { .species = SPECIES_HOOTHOOT, .moves = {MOVE_CONFUSION, MOVE_HYPNOSIS, MOVE_SUPERSONIC, MOVE_REFLECT}, .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [39] = { + [FRONTIER_MON_DIGLETT] = { .species = SPECIES_DIGLETT, .moves = {MOVE_MAGNITUDE, MOVE_SLASH, MOVE_ROCK_TOMB, MOVE_SAND_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_NAIVE }, - [40] = { + [FRONTIER_MON_LEDYBA] = { .species = SPECIES_LEDYBA, .moves = {MOVE_PSYBEAM, MOVE_AGILITY, MOVE_BATON_PASS, MOVE_LIGHT_SCREEN}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_BASHFUL }, - [41] = { + [FRONTIER_MON_NINCADA] = { .species = SPECIES_NINCADA, .moves = {MOVE_MUD_SLAP, MOVE_DIG, MOVE_TOXIC, MOVE_PROTECT}, .itemTableId = BATTLE_FRONTIER_ITEM_PECHA_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_CALM }, - [42] = { + [FRONTIER_MON_SURSKIT] = { .species = SPECIES_SURSKIT, .moves = {MOVE_BUBBLE_BEAM, MOVE_RAIN_DANCE, MOVE_SWEET_SCENT, MOVE_QUICK_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_MYSTIC_WATER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [43] = { + [FRONTIER_MON_JIGGLYPUFF] = { .species = SPECIES_JIGGLYPUFF, .moves = {MOVE_SING, MOVE_WISH, MOVE_MIMIC, MOVE_DOUBLE_SLAP}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [44] = { + [FRONTIER_MON_TAILLOW] = { .species = SPECIES_TAILLOW, .moves = {MOVE_FLY, MOVE_QUICK_ATTACK, MOVE_ENDEAVOR, MOVE_FOCUS_ENERGY}, .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_GENTLE }, - [45] = { + [FRONTIER_MON_WINGULL] = { .species = SPECIES_WINGULL, .moves = {MOVE_WATER_PULSE, MOVE_FLY, MOVE_QUICK_ATTACK, MOVE_STEEL_WING}, .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [46] = { + [FRONTIER_MON_NIDORAN_M] = { .species = SPECIES_NIDORAN_M, .moves = {MOVE_DOUBLE_KICK, MOVE_POISON_STING, MOVE_DISABLE, MOVE_HELPING_HAND}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [47] = { + [FRONTIER_MON_NIDORAN_F] = { .species = SPECIES_NIDORAN_F, .moves = {MOVE_CRUNCH, MOVE_DOUBLE_KICK, MOVE_FLATTER, MOVE_HELPING_HAND}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [48] = { + [FRONTIER_MON_KIRLIA] = { .species = SPECIES_KIRLIA, .moves = {MOVE_CONFUSION, MOVE_WILL_O_WISP, MOVE_FUTURE_SIGHT, MOVE_LIGHT_SCREEN}, .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [49] = { + [FRONTIER_MON_MAREEP] = { .species = SPECIES_MAREEP, .moves = {MOVE_SHOCK_WAVE, MOVE_FLASH, MOVE_REFLECT, MOVE_COTTON_SPORE}, .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [50] = { + [FRONTIER_MON_MEDITITE] = { .species = SPECIES_MEDITITE, .moves = {MOVE_HI_JUMP_KICK, MOVE_MEDITATE, MOVE_SWAGGER, MOVE_PSYCH_UP}, .itemTableId = BATTLE_FRONTIER_ITEM_MENTAL_HERB, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_NAUGHTY }, - [51] = { + [FRONTIER_MON_SLAKOTH] = { .species = SPECIES_SLAKOTH, .moves = {MOVE_YAWN, MOVE_SCRATCH, MOVE_ENCORE, MOVE_COUNTER}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [52] = { + [FRONTIER_MON_PARAS] = { .species = SPECIES_PARAS, .moves = {MOVE_SPORE, MOVE_LEECH_LIFE, MOVE_SLASH, MOVE_LIGHT_SCREEN}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [53] = { + [FRONTIER_MON_EKANS] = { .species = SPECIES_EKANS, .moves = {MOVE_ACID, MOVE_DIG, MOVE_SCREECH, MOVE_TORMENT}, .itemTableId = BATTLE_FRONTIER_ITEM_POISON_BARB, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [54] = { + [FRONTIER_MON_DITTO] = { .species = SPECIES_DITTO, .moves = {MOVE_TRANSFORM, MOVE_NONE, MOVE_NONE, MOVE_NONE}, .itemTableId = BATTLE_FRONTIER_ITEM_METAL_POWDER, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [55] = { + [FRONTIER_MON_BARBOACH] = { .species = SPECIES_BARBOACH, .moves = {MOVE_MAGNITUDE, MOVE_WATER_PULSE, MOVE_SPARK, MOVE_FUTURE_SIGHT}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_BASHFUL }, - [56] = { + [FRONTIER_MON_MEOWTH] = { .species = SPECIES_MEOWTH, .moves = {MOVE_SLASH, MOVE_BITE, MOVE_SCREECH, MOVE_FAKE_OUT}, .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [57] = { + [FRONTIER_MON_PINECO] = { .species = SPECIES_PINECO, .moves = {MOVE_SELF_DESTRUCT, MOVE_TAKE_DOWN, MOVE_REFLECT, MOVE_LIGHT_SCREEN}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [58] = { + [FRONTIER_MON_TRAPINCH] = { .species = SPECIES_TRAPINCH, .moves = {MOVE_TOXIC, MOVE_DIG, MOVE_SANDSTORM, MOVE_SAND_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_SERIOUS }, - [59] = { + [FRONTIER_MON_SPHEAL] = { .species = SPECIES_SPHEAL, .moves = {MOVE_ICE_BALL, MOVE_WATER_PULSE, MOVE_HAIL, MOVE_MUD_SLAP}, .itemTableId = BATTLE_FRONTIER_ITEM_NEVER_MELT_ICE, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [60] = { + [FRONTIER_MON_HORSEA] = { .species = SPECIES_HORSEA, .moves = {MOVE_WATER_GUN, MOVE_AGILITY, MOVE_ICY_WIND, MOVE_TWISTER}, .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [61] = { + [FRONTIER_MON_SHROOMISH] = { .species = SPECIES_SHROOMISH, .moves = {MOVE_SPORE, MOVE_BULLET_SEED, MOVE_LEECH_SEED, MOVE_HEADBUTT}, .itemTableId = BATTLE_FRONTIER_ITEM_MIRACLE_SEED, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [62] = { + [FRONTIER_MON_SHUPPET] = { .species = SPECIES_SHUPPET, .moves = {MOVE_WILL_O_WISP, MOVE_NIGHT_SHADE, MOVE_GRUDGE, MOVE_KNOCK_OFF}, .itemTableId = BATTLE_FRONTIER_ITEM_RAWST_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_RASH }, - [63] = { + [FRONTIER_MON_DUSKULL] = { .species = SPECIES_DUSKULL, .moves = {MOVE_SKILL_SWAP, MOVE_NIGHT_SHADE, MOVE_DISABLE, MOVE_CONFUSE_RAY}, .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [64] = { + [FRONTIER_MON_ELECTRIKE] = { .species = SPECIES_ELECTRIKE, .moves = {MOVE_SPARK, MOVE_THUNDER_WAVE, MOVE_ROAR, MOVE_QUICK_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [65] = { + [FRONTIER_MON_VULPIX] = { .species = SPECIES_VULPIX, .moves = {MOVE_WILL_O_WISP, MOVE_CONFUSE_RAY, MOVE_FIRE_SPIN, MOVE_QUICK_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_RAWST_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [66] = { + [FRONTIER_MON_PIKACHU] = { .species = SPECIES_PIKACHU, .moves = {MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, MOVE_DOUBLE_TEAM, MOVE_QUICK_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_LIGHT_BALL, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [67] = { + [FRONTIER_MON_SANDSHREW] = { .species = SPECIES_SANDSHREW, .moves = {MOVE_DIG, MOVE_ROCK_TOMB, MOVE_SANDSTORM, MOVE_SAND_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_SOFT_SAND, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [68] = { + [FRONTIER_MON_POLIWAG] = { .species = SPECIES_POLIWAG, .moves = {MOVE_HYPNOSIS, MOVE_ICY_WIND, MOVE_WATER_GUN, MOVE_RAIN_DANCE}, .itemTableId = BATTLE_FRONTIER_ITEM_MYSTIC_WATER, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [69] = { + [FRONTIER_MON_BELLSPROUT] = { .species = SPECIES_BELLSPROUT, .moves = {MOVE_RAZOR_LEAF, MOVE_ACID, MOVE_STUN_SPORE, MOVE_WRAP}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_LAX }, - [70] = { + [FRONTIER_MON_GEODUDE] = { .species = SPECIES_GEODUDE, .moves = {MOVE_MAGNITUDE, MOVE_ROCK_BLAST, MOVE_STRENGTH, MOVE_PROTECT}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_BRAVE }, - [71] = { + [FRONTIER_MON_DRATINI] = { .species = SPECIES_DRATINI, .moves = {MOVE_OUTRAGE, MOVE_THUNDER_WAVE, MOVE_SUPERSONIC, MOVE_WATER_PULSE}, .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [72] = { + [FRONTIER_MON_SNUBBULL] = { .species = SPECIES_SNUBBULL, .moves = {MOVE_BITE, MOVE_CHARM, MOVE_SWAGGER, MOVE_SCARY_FACE}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [73] = { + [FRONTIER_MON_REMORAID] = { .species = SPECIES_REMORAID, .moves = {MOVE_BUBBLE_BEAM, MOVE_AURORA_BEAM, MOVE_PSYBEAM, MOVE_PROTECT}, .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_QUIRKY }, - [74] = { + [FRONTIER_MON_LARVITAR] = { .species = SPECIES_LARVITAR, .moves = {MOVE_THRASH, MOVE_ROCK_SLIDE, MOVE_DIG, MOVE_DRAGON_DANCE}, .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_NAUGHTY }, - [75] = { + [FRONTIER_MON_BALTOY] = { .species = SPECIES_BALTOY, .moves = {MOVE_PSYBEAM, MOVE_ANCIENT_POWER, MOVE_LIGHT_SCREEN, MOVE_MUD_SLAP}, .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_NAUGHTY }, - [76] = { + [FRONTIER_MON_SNORUNT] = { .species = SPECIES_SNORUNT, .moves = {MOVE_ICY_WIND, MOVE_HEADBUTT, MOVE_LEER, MOVE_BITE}, .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_BRAVE }, - [77] = { + [FRONTIER_MON_BAGON] = { .species = SPECIES_BAGON, .moves = {MOVE_DRAGON_BREATH, MOVE_HEADBUTT, MOVE_BRICK_BREAK, MOVE_SCARY_FACE}, .itemTableId = BATTLE_FRONTIER_ITEM_LIECHI_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_NAUGHTY }, - [78] = { + [FRONTIER_MON_BELDUM] = { .species = SPECIES_BELDUM, .moves = {MOVE_TAKE_DOWN, MOVE_NONE, MOVE_NONE, MOVE_NONE}, .itemTableId = BATTLE_FRONTIER_ITEM_CHOICE_BAND, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [79] = { + [FRONTIER_MON_GULPIN] = { .species = SPECIES_GULPIN, .moves = {MOVE_TOXIC, MOVE_YAWN, MOVE_PAIN_SPLIT, MOVE_ATTRACT}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_SERIOUS }, - [80] = { + [FRONTIER_MON_VENONAT] = { .species = SPECIES_VENONAT, .moves = {MOVE_PSYBEAM, MOVE_SUPERSONIC, MOVE_STUN_SPORE, MOVE_SKILL_SWAP}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [81] = { + [FRONTIER_MON_MANKEY] = { .species = SPECIES_MANKEY, .moves = {MOVE_KARATE_CHOP, MOVE_LOW_KICK, MOVE_SCREECH, MOVE_SWAGGER}, .itemTableId = BATTLE_FRONTIER_ITEM_BLACK_BELT, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_NAUGHTY }, - [82] = { + [FRONTIER_MON_MACHOP] = { .species = SPECIES_MACHOP, .moves = {MOVE_SEISMIC_TOSS, MOVE_REVENGE, MOVE_ROCK_TOMB, MOVE_SCARY_FACE}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [83] = { + [FRONTIER_MON_SHELLDER] = { .species = SPECIES_SHELLDER, .moves = {MOVE_ICICLE_SPEAR, MOVE_SUPERSONIC, MOVE_CLAMP, MOVE_WITHDRAW}, .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [84] = { + [FRONTIER_MON_SMOOCHUM] = { .species = SPECIES_SMOOCHUM, .moves = {MOVE_SWEET_KISS, MOVE_SING, MOVE_MUD_SLAP, MOVE_FAKE_OUT}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [85] = { + [FRONTIER_MON_NUMEL] = { .species = SPECIES_NUMEL, .moves = {MOVE_EMBER, MOVE_MAGNITUDE, MOVE_ROCK_TOMB, MOVE_SANDSTORM}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [86] = { + [FRONTIER_MON_CARVANHA] = { .species = SPECIES_CARVANHA, .moves = {MOVE_BITE, MOVE_SCREECH, MOVE_SCARY_FACE, MOVE_SWAGGER}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIET }, - [87] = { + [FRONTIER_MON_CORPHISH] = { .species = SPECIES_CORPHISH, .moves = {MOVE_CRABHAMMER, MOVE_WATER_PULSE, MOVE_MUD_SLAP, MOVE_PROTECT}, .itemTableId = BATTLE_FRONTIER_ITEM_MYSTIC_WATER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_BRAVE }, - [88] = { + [FRONTIER_MON_CHARMANDER] = { .species = SPECIES_CHARMANDER, .moves = {MOVE_FIRE_SPIN, MOVE_METAL_CLAW, MOVE_SMOKESCREEN, MOVE_SCARY_FACE}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [89] = { + [FRONTIER_MON_CYNDAQUIL] = { .species = SPECIES_CYNDAQUIL, .moves = {MOVE_EMBER, MOVE_SWIFT, MOVE_QUICK_ATTACK, MOVE_SMOKESCREEN}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [90] = { + [FRONTIER_MON_ABRA] = { .species = SPECIES_ABRA, .moves = {MOVE_MIMIC, MOVE_METRONOME, MOVE_FLASH, MOVE_SEISMIC_TOSS}, .itemTableId = BATTLE_FRONTIER_ITEM_TWISTED_SPOON, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, .nature = NATURE_LONELY }, - [91] = { + [FRONTIER_MON_DODUO] = { .species = SPECIES_DODUO, .moves = {MOVE_FURY_ATTACK, MOVE_UPROAR, MOVE_MUD_SLAP, MOVE_FAINT_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_LIECHI_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, .nature = NATURE_LONELY }, - [92] = { + [FRONTIER_MON_GASTLY] = { .species = SPECIES_GASTLY, .moves = {MOVE_DREAM_EATER, MOVE_HYPNOSIS, MOVE_NIGHT_SHADE, MOVE_CONFUSE_RAY}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, .nature = NATURE_LONELY }, - [93] = { + [FRONTIER_MON_SWABLU] = { .species = SPECIES_SWABLU, .moves = {MOVE_TAKE_DOWN, MOVE_DREAM_EATER, MOVE_SING, MOVE_ATTRACT}, .itemTableId = BATTLE_FRONTIER_ITEM_MENTAL_HERB, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_LONELY }, - [94] = { + [FRONTIER_MON_TREECKO] = { .species = SPECIES_TREECKO, .moves = {MOVE_BULLET_SEED, MOVE_AERIAL_ACE, MOVE_QUICK_ATTACK, MOVE_DOUBLE_TEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_LONELY }, - [95] = { + [FRONTIER_MON_TORCHIC] = { .species = SPECIES_TORCHIC, .moves = {MOVE_FIRE_SPIN, MOVE_QUICK_ATTACK, MOVE_SAND_ATTACK, MOVE_DOUBLE_TEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_LONELY }, - [96] = { + [FRONTIER_MON_MUDKIP] = { .species = SPECIES_MUDKIP, .moves = {MOVE_WHIRLPOOL, MOVE_ENDEAVOR, MOVE_MUD_SPORT, MOVE_MUD_SLAP}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [97] = { + [FRONTIER_MON_SQUIRTLE] = { .species = SPECIES_SQUIRTLE, .moves = {MOVE_WATER_PULSE, MOVE_BITE, MOVE_WITHDRAW, MOVE_PROTECT}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [98] = { + [FRONTIER_MON_TOTODILE] = { .species = SPECIES_TOTODILE, .moves = {MOVE_SLASH, MOVE_WATER_PULSE, MOVE_SCREECH, MOVE_ICY_WIND}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [99] = { + [FRONTIER_MON_SLOWPOKE] = { .species = SPECIES_SLOWPOKE, .moves = {MOVE_CONFUSION, MOVE_DISABLE, MOVE_WATER_PULSE, MOVE_YAWN}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_BRAVE }, - [100] = { + [FRONTIER_MON_BULBASAUR] = { .species = SPECIES_BULBASAUR, .moves = {MOVE_RAZOR_LEAF, MOVE_SWEET_SCENT, MOVE_SLEEP_POWDER, MOVE_LIGHT_SCREEN}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [101] = { + [FRONTIER_MON_CHIKORITA] = { .species = SPECIES_CHIKORITA, .moves = {MOVE_SECRET_POWER, MOVE_BULLET_SEED, MOVE_MUD_SLAP, MOVE_LIGHT_SCREEN}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [102] = { + [FRONTIER_MON_ODDISH] = { .species = SPECIES_ODDISH, .moves = {MOVE_ACID, MOVE_STUN_SPORE, MOVE_SWEET_SCENT, MOVE_MOONLIGHT}, .itemTableId = BATTLE_FRONTIER_ITEM_PECHA_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [103] = { + [FRONTIER_MON_PSYDUCK] = { .species = SPECIES_PSYDUCK, .moves = {MOVE_CONFUSION, MOVE_FURY_SWIPES, MOVE_AERIAL_ACE, MOVE_DISABLE}, .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_HASTY }, - [104] = { + [FRONTIER_MON_CUBONE] = { .species = SPECIES_CUBONE, .moves = {MOVE_BONE_CLUB, MOVE_HEADBUTT, MOVE_BRICK_BREAK, MOVE_AERIAL_ACE}, .itemTableId = BATTLE_FRONTIER_ITEM_SOFT_SAND, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [105] = { + [FRONTIER_MON_GOLDEEN] = { .species = SPECIES_GOLDEEN, .moves = {MOVE_WATERFALL, MOVE_FURY_ATTACK, MOVE_AGILITY, MOVE_PSYBEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [106] = { + [FRONTIER_MON_NATU] = { .species = SPECIES_NATU, .moves = {MOVE_NIGHT_SHADE, MOVE_FUTURE_SIGHT, MOVE_CONFUSE_RAY, MOVE_FLASH}, .itemTableId = BATTLE_FRONTIER_ITEM_TWISTED_SPOON, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [107] = { + [FRONTIER_MON_CLEFAIRY] = { .species = SPECIES_CLEFAIRY, .moves = {MOVE_FOLLOW_ME, MOVE_RETURN, MOVE_ENCORE, MOVE_SING}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_LONELY }, - [108] = { + [FRONTIER_MON_MAGNEMITE] = { .species = SPECIES_MAGNEMITE, .moves = {MOVE_SHOCK_WAVE, MOVE_SUPERSONIC, MOVE_METAL_SOUND, MOVE_REFLECT}, .itemTableId = BATTLE_FRONTIER_ITEM_RAWST_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_GENTLE }, - [109] = { + [FRONTIER_MON_SEEL] = { .species = SPECIES_SEEL, .moves = {MOVE_AURORA_BEAM, MOVE_DIVE, MOVE_BODY_SLAM, MOVE_FAKE_OUT}, .itemTableId = BATTLE_FRONTIER_ITEM_ASPEAR_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [110] = { + [FRONTIER_MON_GRIMER] = { .species = SPECIES_GRIMER, .moves = {MOVE_SLUDGE, MOVE_ROCK_TOMB, MOVE_ACID_ARMOR, MOVE_MINIMIZE}, .itemTableId = BATTLE_FRONTIER_ITEM_PECHA_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [111] = { + [FRONTIER_MON_KRABBY] = { .species = SPECIES_KRABBY, .moves = {MOVE_CRABHAMMER, MOVE_MUD_SHOT, MOVE_FLAIL, MOVE_KNOCK_OFF}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [112] = { + [FRONTIER_MON_EXEGGCUTE] = { .species = SPECIES_EXEGGCUTE, .moves = {MOVE_CONFUSION, MOVE_ANCIENT_POWER, MOVE_LEECH_SEED, MOVE_LIGHT_SCREEN}, .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_NAUGHTY }, - [113] = { + [FRONTIER_MON_EEVEE] = { .species = SPECIES_EEVEE, .moves = {MOVE_CHARM, MOVE_ATTRACT, MOVE_FLAIL, MOVE_ENDURE}, .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [114] = { + [FRONTIER_MON_DROWZEE] = { .species = SPECIES_DROWZEE, .moves = {MOVE_CONFUSION, MOVE_HEADBUTT, MOVE_DISABLE, MOVE_BARRIER}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [115] = { + [FRONTIER_MON_VOLTORB] = { .species = SPECIES_VOLTORB, .moves = {MOVE_SPARK, MOVE_SCREECH, MOVE_ROLLOUT, MOVE_LIGHT_SCREEN}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [116] = { + [FRONTIER_MON_CHINCHOU] = { .species = SPECIES_CHINCHOU, .moves = {MOVE_SPARK, MOVE_DIVE, MOVE_CONFUSE_RAY, MOVE_TAKE_DOWN}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [117] = { + [FRONTIER_MON_TEDDIURSA] = { .species = SPECIES_TEDDIURSA, .moves = {MOVE_SECRET_POWER, MOVE_FAKE_TEARS, MOVE_FAINT_ATTACK, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [118] = { + [FRONTIER_MON_DELIBIRD] = { .species = SPECIES_DELIBIRD, .moves = {MOVE_PRESENT, MOVE_ICE_BALL, MOVE_AERIAL_ACE, MOVE_HAIL}, .itemTableId = BATTLE_FRONTIER_ITEM_NEVER_MELT_ICE, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [119] = { + [FRONTIER_MON_HOUNDOUR] = { .species = SPECIES_HOUNDOUR, .moves = {MOVE_CRUNCH, MOVE_EMBER, MOVE_ROAR, MOVE_PROTECT}, .itemTableId = BATTLE_FRONTIER_ITEM_CHARCOAL, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [120] = { + [FRONTIER_MON_PHANPY] = { .species = SPECIES_PHANPY, .moves = {MOVE_ROLLOUT, MOVE_DEFENSE_CURL, MOVE_ROCK_TOMB, MOVE_SANDSTORM}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_NAUGHTY }, - [121] = { + [FRONTIER_MON_SPOINK] = { .species = SPECIES_SPOINK, .moves = {MOVE_PSYWAVE, MOVE_BOUNCE, MOVE_MAGIC_COAT, MOVE_CONFUSE_RAY}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [122] = { + [FRONTIER_MON_ARON] = { .species = SPECIES_ARON, .moves = {MOVE_METAL_CLAW, MOVE_AERIAL_ACE, MOVE_METAL_SOUND, MOVE_ROAR}, .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [123] = { + [FRONTIER_MON_LUVDISC] = { .species = SPECIES_LUVDISC, .moves = {MOVE_SWEET_KISS, MOVE_ATTRACT, MOVE_DIVE, MOVE_RAIN_DANCE}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [124] = { + [FRONTIER_MON_TENTACOOL] = { .species = SPECIES_TENTACOOL, .moves = {MOVE_BUBBLE_BEAM, MOVE_ACID, MOVE_BARRIER, MOVE_WRAP}, .itemTableId = BATTLE_FRONTIER_ITEM_PECHA_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [125] = { + [FRONTIER_MON_CACNEA] = { .species = SPECIES_CACNEA, .moves = {MOVE_NEEDLE_ARM, MOVE_FAINT_ATTACK, MOVE_COTTON_SPORE, MOVE_SAND_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [126] = { + [FRONTIER_MON_UNOWN] = { .species = SPECIES_UNOWN, .moves = {MOVE_HIDDEN_POWER, MOVE_NONE, MOVE_NONE, MOVE_NONE}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [127] = { + [FRONTIER_MON_KOFFING] = { .species = SPECIES_KOFFING, .moves = {MOVE_SLUDGE, MOVE_SMOKESCREEN, MOVE_TORMENT, MOVE_HAZE}, .itemTableId = BATTLE_FRONTIER_ITEM_POISON_BARB, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [128] = { + [FRONTIER_MON_STARYU] = { .species = SPECIES_STARYU, .moves = {MOVE_BUBBLE_BEAM, MOVE_MINIMIZE, MOVE_SWIFT, MOVE_LIGHT_SCREEN}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [129] = { + [FRONTIER_MON_SKIPLOOM] = { .species = SPECIES_SKIPLOOM, .moves = {MOVE_MEGA_DRAIN, MOVE_CONFUSION, MOVE_COTTON_SPORE, MOVE_SYNTHESIS}, .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [130] = { + [FRONTIER_MON_NUZLEAF] = { .species = SPECIES_NUZLEAF, .moves = {MOVE_EXTRASENSORY, MOVE_FAKE_OUT, MOVE_RAZOR_WIND, MOVE_FAINT_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [131] = { + [FRONTIER_MON_LOMBRE] = { .species = SPECIES_LOMBRE, .moves = {MOVE_WATER_PULSE, MOVE_FAKE_OUT, MOVE_BRICK_BREAK, MOVE_ABSORB}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [132] = { + [FRONTIER_MON_VIBRAVA] = { .species = SPECIES_VIBRAVA, .moves = {MOVE_DRAGON_BREATH, MOVE_DIG, MOVE_SCREECH, MOVE_ROCK_TOMB}, .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [133] = { + [FRONTIER_MON_RHYHORN] = { .species = SPECIES_RHYHORN, .moves = {MOVE_ROCK_BLAST, MOVE_DIG, MOVE_SCARY_FACE, MOVE_ROAR}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [134] = { + [FRONTIER_MON_CLAMPERL] = { .species = SPECIES_CLAMPERL, .moves = {MOVE_DIVE, MOVE_TOXIC, MOVE_IRON_DEFENSE, MOVE_DOUBLE_TEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_DEEP_SEA_SCALE, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [135] = { + [FRONTIER_MON_PIDGEOTTO] = { .species = SPECIES_PIDGEOTTO, .moves = {MOVE_AERIAL_ACE, MOVE_QUICK_ATTACK, MOVE_FEATHER_DANCE, MOVE_SAND_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [136] = { + [FRONTIER_MON_GROWLITHE] = { .species = SPECIES_GROWLITHE, .moves = {MOVE_FLAME_WHEEL, MOVE_BITE, MOVE_ROAR, MOVE_AGILITY}, .itemTableId = BATTLE_FRONTIER_ITEM_RAWST_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [137] = { + [FRONTIER_MON_FARFETCHD] = { .species = SPECIES_FARFETCHD, .moves = {MOVE_SLASH, MOVE_KNOCK_OFF, MOVE_SWORDS_DANCE, MOVE_AGILITY}, .itemTableId = BATTLE_FRONTIER_ITEM_STICK, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [138] = { + [FRONTIER_MON_OMANYTE] = { .species = SPECIES_OMANYTE, .moves = {MOVE_MUD_SHOT, MOVE_WATER_GUN, MOVE_ANCIENT_POWER, MOVE_TICKLE}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [139] = { + [FRONTIER_MON_KABUTO] = { .species = SPECIES_KABUTO, .moves = {MOVE_MEGA_DRAIN, MOVE_ANCIENT_POWER, MOVE_SAND_ATTACK, MOVE_PROTECT}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [140] = { + [FRONTIER_MON_LILEEP] = { .species = SPECIES_LILEEP, .moves = {MOVE_ANCIENT_POWER, MOVE_ACID, MOVE_INGRAIN, MOVE_CONFUSE_RAY}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [141] = { + [FRONTIER_MON_ANORITH] = { .species = SPECIES_ANORITH, .moves = {MOVE_METAL_CLAW, MOVE_FURY_CUTTER, MOVE_ANCIENT_POWER, MOVE_WATER_GUN}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [142] = { + [FRONTIER_MON_AIPOM] = { .species = SPECIES_AIPOM, .moves = {MOVE_FURY_SWIPES, MOVE_SAND_ATTACK, MOVE_BATON_PASS, MOVE_AGILITY}, .itemTableId = BATTLE_FRONTIER_ITEM_SILK_SCARF, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [143] = { + [FRONTIER_MON_ELEKID] = { .species = SPECIES_ELEKID, .moves = {MOVE_THUNDER_PUNCH, MOVE_QUICK_ATTACK, MOVE_SWIFT, MOVE_LIGHT_SCREEN}, .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_NAIVE }, - [144] = { + [FRONTIER_MON_LOUDRED] = { .species = SPECIES_LOUDRED, .moves = {MOVE_STOMP, MOVE_HOWL, MOVE_ASTONISH, MOVE_SUPERSONIC}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [145] = { + [FRONTIER_MON_SPINDA] = { .species = SPECIES_SPINDA, .moves = {MOVE_DIZZY_PUNCH, MOVE_TEETER_DANCE, MOVE_PSYBEAM, MOVE_FAINT_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [146] = { + [FRONTIER_MON_NIDORINA] = { .species = SPECIES_NIDORINA, .moves = {MOVE_DOUBLE_KICK, MOVE_BITE, MOVE_AERIAL_ACE, MOVE_FLATTER}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [147] = { + [FRONTIER_MON_NIDORINO] = { .species = SPECIES_NIDORINO, .moves = {MOVE_DOUBLE_KICK, MOVE_WATER_PULSE, MOVE_MUD_SLAP, MOVE_FLATTER}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [148] = { + [FRONTIER_MON_FLAAFFY] = { .species = SPECIES_FLAAFFY, .moves = {MOVE_SHOCK_WAVE, MOVE_THUNDER_WAVE, MOVE_COTTON_SPORE, MOVE_LIGHT_SCREEN}, .itemTableId = BATTLE_FRONTIER_ITEM_MAGNET, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_MILD }, - [149] = { + [FRONTIER_MON_MAGBY] = { .species = SPECIES_MAGBY, .moves = {MOVE_FIRE_PUNCH, MOVE_SMOKESCREEN, MOVE_CONFUSE_RAY, MOVE_SMOG}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [150] = { + [FRONTIER_MON_NOSEPASS] = { .species = SPECIES_NOSEPASS, .moves = {MOVE_ROCK_SLIDE, MOVE_SHOCK_WAVE, MOVE_THUNDER_WAVE, MOVE_SANDSTORM}, .itemTableId = BATTLE_FRONTIER_ITEM_HARD_STONE, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_SASSY }, - [151] = { + [FRONTIER_MON_CORSOLA] = { .species = SPECIES_CORSOLA, .moves = {MOVE_BUBBLE_BEAM, MOVE_MIRROR_COAT, MOVE_ATTRACT, MOVE_ANCIENT_POWER}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_IMPISH }, - [152] = { + [FRONTIER_MON_MAWILE] = { .species = SPECIES_MAWILE, .moves = {MOVE_CRUNCH, MOVE_FAKE_TEARS, MOVE_IRON_DEFENSE, MOVE_BATON_PASS}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [153] = { + [FRONTIER_MON_BUTTERFREE] = { .species = SPECIES_BUTTERFREE, .moves = {MOVE_SILVER_WIND, MOVE_PSYBEAM, MOVE_TOXIC, MOVE_WHIRLWIND}, .itemTableId = BATTLE_FRONTIER_ITEM_PECHA_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [154] = { + [FRONTIER_MON_BEEDRILL] = { .species = SPECIES_BEEDRILL, .moves = {MOVE_TWINEEDLE, MOVE_PURSUIT, MOVE_ENDEAVOR, MOVE_AGILITY}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_NAUGHTY }, - [155] = { + [FRONTIER_MON_POLIWHIRL] = { .species = SPECIES_POLIWHIRL, .moves = {MOVE_WATER_PULSE, MOVE_DOUBLE_SLAP, MOVE_ICY_WIND, MOVE_RAIN_DANCE}, .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [156] = { + [FRONTIER_MON_ONIX] = { .species = SPECIES_ONIX, .moves = {MOVE_ROCK_SLIDE, MOVE_BIND, MOVE_DRAGON_BREATH, MOVE_SANDSTORM}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [157] = { + [FRONTIER_MON_BEAUTIFLY] = { .species = SPECIES_BEAUTIFLY, .moves = {MOVE_SILVER_WIND, MOVE_MEGA_DRAIN, MOVE_ATTRACT, MOVE_WHIRLWIND}, .itemTableId = BATTLE_FRONTIER_ITEM_MENTAL_HERB, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [158] = { + [FRONTIER_MON_DUSTOX] = { .species = SPECIES_DUSTOX, .moves = {MOVE_SILVER_WIND, MOVE_TOXIC, MOVE_PSYBEAM, MOVE_WHIRLWIND}, .itemTableId = BATTLE_FRONTIER_ITEM_SILVER_POWDER, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [159] = { + [FRONTIER_MON_LEDIAN] = { .species = SPECIES_LEDIAN, .moves = {MOVE_COMET_PUNCH, MOVE_BATON_PASS, MOVE_SWORDS_DANCE, MOVE_AGILITY}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_BASHFUL }, - [160] = { + [FRONTIER_MON_ARIADOS] = { .species = SPECIES_ARIADOS, .moves = {MOVE_SIGNAL_BEAM, MOVE_SPIDER_WEB, MOVE_NIGHT_SHADE, MOVE_TOXIC}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_SERIOUS }, - [161] = { + [FRONTIER_MON_YANMA] = { .species = SPECIES_YANMA, .moves = {MOVE_SIGNAL_BEAM, MOVE_AERIAL_ACE, MOVE_DOUBLE_TEAM, MOVE_DETECT}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_RELAXED }, - [162] = { + [FRONTIER_MON_DELCATTY_1] = { .species = SPECIES_DELCATTY, .moves = {MOVE_SECRET_POWER, MOVE_FAINT_ATTACK, MOVE_DOUBLE_TEAM, MOVE_HEAL_BELL}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_LONELY }, - [163] = { + [FRONTIER_MON_SABLEYE_1] = { .species = SPECIES_SABLEYE, .moves = {MOVE_FAINT_ATTACK, MOVE_CONFUSE_RAY, MOVE_KNOCK_OFF, MOVE_FAKE_OUT}, .itemTableId = BATTLE_FRONTIER_ITEM_BLACK_GLASSES, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_LONELY }, - [164] = { + [FRONTIER_MON_LICKITUNG_1] = { .species = SPECIES_LICKITUNG, .moves = {MOVE_SLAM, MOVE_BRICK_BREAK, MOVE_LICK, MOVE_MUD_SLAP}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [165] = { + [FRONTIER_MON_WEEPINBELL_1] = { .species = SPECIES_WEEPINBELL, .moves = {MOVE_RAZOR_LEAF, MOVE_ACID, MOVE_WRAP, MOVE_SWEET_SCENT}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIET }, - [166] = { + [FRONTIER_MON_GRAVELER_1] = { .species = SPECIES_GRAVELER, .moves = {MOVE_MAGNITUDE, MOVE_ROCK_THROW, MOVE_DEFENSE_CURL, MOVE_BRICK_BREAK}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [167] = { + [FRONTIER_MON_GLOOM_1] = { .species = SPECIES_GLOOM, .moves = {MOVE_PETAL_DANCE, MOVE_ACID, MOVE_STUN_SPORE, MOVE_MOONLIGHT}, .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [168] = { + [FRONTIER_MON_PORYGON_1] = { .species = SPECIES_PORYGON, .moves = {MOVE_PSYBEAM, MOVE_ICY_WIND, MOVE_RECYCLE, MOVE_AGILITY}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [169] = { + [FRONTIER_MON_KADABRA_1] = { .species = SPECIES_KADABRA, .moves = {MOVE_CONFUSION, MOVE_ROLE_PLAY, MOVE_FUTURE_SIGHT, MOVE_DISABLE}, .itemTableId = BATTLE_FRONTIER_ITEM_TWISTED_SPOON, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_IMPISH }, - [170] = { + [FRONTIER_MON_WAILMER_1] = { .species = SPECIES_WAILMER, .moves = {MOVE_WHIRLPOOL, MOVE_ROAR, MOVE_DEFENSE_CURL, MOVE_ROLLOUT}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_DOCILE }, - [171] = { + [FRONTIER_MON_ROSELIA_1] = { .species = SPECIES_ROSELIA, .moves = {MOVE_MAGICAL_LEAF, MOVE_TOXIC, MOVE_GRASS_WHISTLE, MOVE_COTTON_SPORE}, .itemTableId = BATTLE_FRONTIER_ITEM_PECHA_BERRY, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [172] = { + [FRONTIER_MON_VOLBEAT_1] = { .species = SPECIES_VOLBEAT, .moves = {MOVE_SILVER_WIND, MOVE_CONFUSE_RAY, MOVE_QUICK_ATTACK, MOVE_HELPING_HAND}, .itemTableId = BATTLE_FRONTIER_ITEM_LIECHI_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_QUIRKY }, - [173] = { + [FRONTIER_MON_ILLUMISE_1] = { .species = SPECIES_ILLUMISE, .moves = {MOVE_SILVER_WIND, MOVE_WISH, MOVE_QUICK_ATTACK, MOVE_HELPING_HAND}, .itemTableId = BATTLE_FRONTIER_ITEM_LIECHI_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [174] = { + [FRONTIER_MON_IVYSAUR_1] = { .species = SPECIES_IVYSAUR, .moves = {MOVE_PETAL_DANCE, MOVE_GROWTH, MOVE_SWEET_SCENT, MOVE_FURY_CUTTER}, .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_GENTLE }, - [175] = { + [FRONTIER_MON_CHARMELEON_1] = { .species = SPECIES_CHARMELEON, .moves = {MOVE_SLASH, MOVE_FIRE_SPIN, MOVE_SWORDS_DANCE, MOVE_AERIAL_ACE}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_NAUGHTY }, - [176] = { + [FRONTIER_MON_WARTORTLE_1] = { .species = SPECIES_WARTORTLE, .moves = {MOVE_WATER_PULSE, MOVE_BITE, MOVE_MUD_SLAP, MOVE_YAWN}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [177] = { + [FRONTIER_MON_PARASECT_1] = { .species = SPECIES_PARASECT, .moves = {MOVE_SLASH, MOVE_PSYBEAM, MOVE_STUN_SPORE, MOVE_FLASH}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_RASH }, - [178] = { + [FRONTIER_MON_MACHOKE_1] = { .species = SPECIES_MACHOKE, .moves = {MOVE_LOW_KICK, MOVE_ROCK_TOMB, MOVE_FORESIGHT, MOVE_SCARY_FACE}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [179] = { + [FRONTIER_MON_HAUNTER_1] = { .species = SPECIES_HAUNTER, .moves = {MOVE_SHADOW_PUNCH, MOVE_CONFUSE_RAY, MOVE_SPITE, MOVE_GRUDGE}, .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_RASH }, - [180] = { + [FRONTIER_MON_BAYLEEF_1] = { .species = SPECIES_BAYLEEF, .moves = {MOVE_RAZOR_LEAF, MOVE_TOXIC, MOVE_SAFEGUARD, MOVE_LIGHT_SCREEN}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [181] = { + [FRONTIER_MON_QUILAVA_1] = { .species = SPECIES_QUILAVA, .moves = {MOVE_FLAME_WHEEL, MOVE_FURY_SWIPES, MOVE_SWIFT, MOVE_SMOKESCREEN}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [182] = { + [FRONTIER_MON_CROCONAW_1] = { .species = SPECIES_CROCONAW, .moves = {MOVE_SLASH, MOVE_WATER_PULSE, MOVE_BITE, MOVE_SCARY_FACE}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [183] = { + [FRONTIER_MON_TOGETIC_1] = { .species = SPECIES_TOGETIC, .moves = {MOVE_AERIAL_ACE, MOVE_MAGICAL_LEAF, MOVE_WISH, MOVE_FOLLOW_ME}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [184] = { + [FRONTIER_MON_MURKROW_1] = { .species = SPECIES_MURKROW, .moves = {MOVE_FAINT_ATTACK, MOVE_FLY, MOVE_TORMENT, MOVE_TAUNT}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [185] = { + [FRONTIER_MON_WOBBUFFET_1] = { .species = SPECIES_WOBBUFFET, .moves = {MOVE_COUNTER, MOVE_MIRROR_COAT, MOVE_CHARM, MOVE_SAFEGUARD}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_CAREFUL }, - [186] = { + [FRONTIER_MON_PLUSLE_1] = { .species = SPECIES_PLUSLE, .moves = {MOVE_SPARK, MOVE_FAKE_TEARS, MOVE_QUICK_ATTACK, MOVE_HELPING_HAND}, .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [187] = { + [FRONTIER_MON_MINUN_1] = { .species = SPECIES_MINUN, .moves = {MOVE_SPARK, MOVE_CHARM, MOVE_ENCORE, MOVE_HELPING_HAND}, .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [188] = { + [FRONTIER_MON_GROVYLE_1] = { .species = SPECIES_GROVYLE, .moves = {MOVE_FURY_CUTTER, MOVE_ENDEAVOR, MOVE_BRICK_BREAK, MOVE_DOUBLE_TEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [189] = { + [FRONTIER_MON_COMBUSKEN_1] = { .species = SPECIES_COMBUSKEN, .moves = {MOVE_EMBER, MOVE_DOUBLE_KICK, MOVE_QUICK_ATTACK, MOVE_SAND_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [190] = { + [FRONTIER_MON_MARSHTOMP_1] = { .species = SPECIES_MARSHTOMP, .moves = {MOVE_MUD_SHOT, MOVE_WATER_GUN, MOVE_ROCK_TOMB, MOVE_MUD_SLAP}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [191] = { + [FRONTIER_MON_PONYTA_1] = { .species = SPECIES_PONYTA, .moves = {MOVE_FIRE_SPIN, MOVE_BOUNCE, MOVE_QUICK_ATTACK, MOVE_TAIL_WHIP}, .itemTableId = BATTLE_FRONTIER_ITEM_RAWST_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [192] = { + [FRONTIER_MON_AZUMARILL_1] = { .species = SPECIES_AZUMARILL, .moves = {MOVE_BUBBLE_BEAM, MOVE_FACADE, MOVE_DIG, MOVE_PROTECT}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_DOCILE }, - [193] = { + [FRONTIER_MON_SUDOWOODO_1] = { .species = SPECIES_SUDOWOODO, .moves = {MOVE_ROCK_SLIDE, MOVE_FAINT_ATTACK, MOVE_SANDSTORM, MOVE_BLOCK}, .itemTableId = BATTLE_FRONTIER_ITEM_HARD_STONE, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [194] = { + [FRONTIER_MON_MAGCARGO_1] = { .species = SPECIES_MAGCARGO, .moves = {MOVE_ROCK_SLIDE, MOVE_EMBER, MOVE_ACID_ARMOR, MOVE_SANDSTORM}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_GENTLE }, - [195] = { + [FRONTIER_MON_PUPITAR_1] = { .species = SPECIES_PUPITAR, .moves = {MOVE_DIG, MOVE_BITE, MOVE_SCARY_FACE, MOVE_SANDSTORM}, .itemTableId = BATTLE_FRONTIER_ITEM_SOFT_SAND, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [196] = { + [FRONTIER_MON_SEALEO_1] = { .species = SPECIES_SEALEO, .moves = {MOVE_ICE_BALL, MOVE_HAIL, MOVE_SNORE, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [197] = { + [FRONTIER_MON_RATICATE_1] = { .species = SPECIES_RATICATE, .moves = {MOVE_ENDEAVOR, MOVE_PURSUIT, MOVE_SCARY_FACE, MOVE_QUICK_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_SILK_SCARF, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_NAIVE }, - [198] = { + [FRONTIER_MON_MASQUERAIN_1] = { .species = SPECIES_MASQUERAIN, .moves = {MOVE_SILVER_WIND, MOVE_AERIAL_ACE, MOVE_ICY_WIND, MOVE_STUN_SPORE}, .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_RELAXED }, - [199] = { + [FRONTIER_MON_FURRET_1] = { .species = SPECIES_FURRET, .moves = {MOVE_SLAM, MOVE_PROTECT, MOVE_HELPING_HAND, MOVE_FOLLOW_ME}, .itemTableId = BATTLE_FRONTIER_ITEM_LIECHI_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_SERIOUS }, - [200] = { + [FRONTIER_MON_DUNSPARCE_1] = { .species = SPECIES_DUNSPARCE, .moves = {MOVE_HEADBUTT, MOVE_GLARE, MOVE_DEFENSE_CURL, MOVE_ROLLOUT}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [201] = { + [FRONTIER_MON_DRAGONAIR_1] = { .species = SPECIES_DRAGONAIR, .moves = {MOVE_DRAGON_BREATH, MOVE_LEER, MOVE_WRAP, MOVE_SAFEGUARD}, .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [202] = { + [FRONTIER_MON_MIGHTYENA_1] = { .species = SPECIES_MIGHTYENA, .moves = {MOVE_BITE, MOVE_POISON_FANG, MOVE_TAUNT, MOVE_ROAR}, .itemTableId = BATTLE_FRONTIER_ITEM_MENTAL_HERB, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_TIMID }, - [203] = { + [FRONTIER_MON_LINOONE_1] = { .species = SPECIES_LINOONE, .moves = {MOVE_SECRET_POWER, MOVE_SAND_ATTACK, MOVE_COVET, MOVE_TICKLE}, .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [204] = { + [FRONTIER_MON_CASTFORM_1] = { .species = SPECIES_CASTFORM, .moves = {MOVE_EMBER, MOVE_WATER_PULSE, MOVE_SHOCK_WAVE, MOVE_ICY_WIND}, .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_HASTY }, - [205] = { + [FRONTIER_MON_SHELGON_1] = { .species = SPECIES_SHELGON, .moves = {MOVE_HEADBUTT, MOVE_DRAGON_BREATH, MOVE_PROTECT, MOVE_SCARY_FACE}, .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [206] = { + [FRONTIER_MON_METANG_1] = { .species = SPECIES_METANG, .moves = {MOVE_METAL_CLAW, MOVE_CONFUSION, MOVE_PURSUIT, MOVE_SCARY_FACE}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [207] = { + [FRONTIER_MON_WIGGLYTUFF_1] = { .species = SPECIES_WIGGLYTUFF, .moves = {MOVE_SING, MOVE_DISABLE, MOVE_WISH, MOVE_SECRET_POWER}, .itemTableId = BATTLE_FRONTIER_ITEM_SILK_SCARF, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_RELAXED }, - [208] = { + [FRONTIER_MON_SUNFLORA_1] = { .species = SPECIES_SUNFLORA, .moves = {MOVE_PETAL_DANCE, MOVE_INGRAIN, MOVE_LEECH_SEED, MOVE_LIGHT_SCREEN}, .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [209] = { + [FRONTIER_MON_CHIMECHO_1] = { .species = SPECIES_CHIMECHO, .moves = {MOVE_PSYWAVE, MOVE_TAKE_DOWN, MOVE_HEAL_BELL, MOVE_SAFEGUARD}, .itemTableId = BATTLE_FRONTIER_ITEM_TWISTED_SPOON, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_SASSY }, - [210] = { + [FRONTIER_MON_GLIGAR_1] = { .species = SPECIES_GLIGAR, .moves = {MOVE_METAL_CLAW, MOVE_DIG, MOVE_AERIAL_ACE, MOVE_QUICK_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_HASTY }, - [211] = { + [FRONTIER_MON_QWILFISH_1] = { .species = SPECIES_QWILFISH, .moves = {MOVE_BUBBLE_BEAM, MOVE_PIN_MISSILE, MOVE_SPIKES, MOVE_MINIMIZE}, .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK, .nature = NATURE_IMPISH }, - [212] = { + [FRONTIER_MON_SNEASEL_1] = { .species = SPECIES_SNEASEL, .moves = {MOVE_FAINT_ATTACK, MOVE_FAKE_OUT, MOVE_ICY_WIND, MOVE_QUICK_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [213] = { + [FRONTIER_MON_PELIPPER_1] = { .species = SPECIES_PELIPPER, .moves = {MOVE_WATER_PULSE, MOVE_AERIAL_ACE, MOVE_STOCKPILE, MOVE_SWALLOW}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_QUIET }, - [214] = { + [FRONTIER_MON_SWELLOW_1] = { .species = SPECIES_SWELLOW, .moves = {MOVE_FLY, MOVE_ENDEAVOR, MOVE_FACADE, MOVE_QUICK_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [215] = { + [FRONTIER_MON_LAIRON_1] = { .species = SPECIES_LAIRON, .moves = {MOVE_METAL_CLAW, MOVE_ROCK_TOMB, MOVE_IRON_DEFENSE, MOVE_PROTECT}, .itemTableId = BATTLE_FRONTIER_ITEM_METAL_COAT, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_SASSY }, - [216] = { + [FRONTIER_MON_TANGELA_1] = { .species = SPECIES_TANGELA, .moves = {MOVE_MEGA_DRAIN, MOVE_SLAM, MOVE_TOXIC, MOVE_BIND}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [217] = { + [FRONTIER_MON_ARBOK_1] = { .species = SPECIES_ARBOK, .moves = {MOVE_POISON_FANG, MOVE_DIG, MOVE_BITE, MOVE_GLARE}, .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [218] = { + [FRONTIER_MON_PERSIAN_1] = { .species = SPECIES_PERSIAN, .moves = {MOVE_FAKE_OUT, MOVE_SLASH, MOVE_TORMENT, MOVE_SWAGGER}, .itemTableId = BATTLE_FRONTIER_ITEM_SILK_SCARF, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [219] = { + [FRONTIER_MON_SEADRA_1] = { .species = SPECIES_SEADRA, .moves = {MOVE_AURORA_BEAM, MOVE_SMOKESCREEN, MOVE_WATER_GUN, MOVE_RAIN_DANCE}, .itemTableId = BATTLE_FRONTIER_ITEM_MYSTIC_WATER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_SASSY }, - [220] = { + [FRONTIER_MON_KECLEON_1] = { .species = SPECIES_KECLEON, .moves = {MOVE_SECRET_POWER, MOVE_PSYBEAM, MOVE_MAGIC_COAT, MOVE_SEISMIC_TOSS}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_NAIVE }, - [221] = { + [FRONTIER_MON_VIGOROTH_1] = { .species = SPECIES_VIGOROTH, .moves = {MOVE_SLASH, MOVE_COUNTER, MOVE_ENCORE, MOVE_UPROAR}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_LONELY }, - [222] = { + [FRONTIER_MON_LUNATONE_1] = { .species = SPECIES_LUNATONE, .moves = {MOVE_CONFUSION, MOVE_COSMIC_POWER, MOVE_LIGHT_SCREEN, MOVE_SANDSTORM}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_QUIET }, - [223] = { + [FRONTIER_MON_SOLROCK_1] = { .species = SPECIES_SOLROCK, .moves = {MOVE_CONFUSION, MOVE_FIRE_SPIN, MOVE_LIGHT_SCREEN, MOVE_SANDSTORM}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_QUIET }, - [224] = { + [FRONTIER_MON_NOCTOWL_1] = { .species = SPECIES_NOCTOWL, .moves = {MOVE_CONFUSION, MOVE_AERIAL_ACE, MOVE_FAINT_ATTACK, MOVE_REFLECT}, .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [225] = { + [FRONTIER_MON_SANDSLASH_1] = { .species = SPECIES_SANDSLASH, .moves = {MOVE_CRUSH_CLAW, MOVE_ROCK_SLIDE, MOVE_SWIFT, MOVE_SANDSTORM}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [226] = { + [FRONTIER_MON_VENOMOTH_1] = { .species = SPECIES_VENOMOTH, .moves = {MOVE_SILVER_WIND, MOVE_PSYBEAM, MOVE_SLEEP_POWDER, MOVE_SKILL_SWAP}, .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [227] = { + [FRONTIER_MON_CHANSEY_1] = { .species = SPECIES_CHANSEY, .moves = {MOVE_METRONOME, MOVE_REFRESH, MOVE_DEFENSE_CURL, MOVE_MINIMIZE}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_RELAXED }, - [228] = { + [FRONTIER_MON_SEAKING_1] = { .species = SPECIES_SEAKING, .moves = {MOVE_WATER_PULSE, MOVE_PSYBEAM, MOVE_SWIFT, MOVE_AGILITY}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [229] = { + [FRONTIER_MON_JUMPLUFF_1] = { .species = SPECIES_JUMPLUFF, .moves = {MOVE_AERIAL_ACE, MOVE_SWAGGER, MOVE_PSYCH_UP, MOVE_SYNTHESIS}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [230] = { + [FRONTIER_MON_PILOSWINE_1] = { .species = SPECIES_PILOSWINE, .moves = {MOVE_DIG, MOVE_ANCIENT_POWER, MOVE_HAIL, MOVE_LIGHT_SCREEN}, .itemTableId = BATTLE_FRONTIER_ITEM_SOFT_SAND, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [231] = { + [FRONTIER_MON_GOLBAT_1] = { .species = SPECIES_GOLBAT, .moves = {MOVE_AIR_CUTTER, MOVE_CONFUSE_RAY, MOVE_TOXIC, MOVE_STEEL_WING}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [232] = { + [FRONTIER_MON_PRIMEAPE_1] = { .species = SPECIES_PRIMEAPE, .moves = {MOVE_KARATE_CHOP, MOVE_COUNTER, MOVE_SWAGGER, MOVE_SCREECH}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [233] = { + [FRONTIER_MON_HITMONLEE_1] = { .species = SPECIES_HITMONLEE, .moves = {MOVE_ROLLING_KICK, MOVE_BRICK_BREAK, MOVE_FOCUS_ENERGY, MOVE_FACADE}, .itemTableId = BATTLE_FRONTIER_ITEM_BLACK_BELT, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [234] = { + [FRONTIER_MON_HITMONCHAN_1] = { .species = SPECIES_HITMONCHAN, .moves = {MOVE_MACH_PUNCH, MOVE_SKY_UPPERCUT, MOVE_DETECT, MOVE_COUNTER}, .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [235] = { + [FRONTIER_MON_GIRAFARIG_1] = { .species = SPECIES_GIRAFARIG, .moves = {MOVE_PSYBEAM, MOVE_STOMP, MOVE_WISH, MOVE_SKILL_SWAP}, .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIET }, - [236] = { + [FRONTIER_MON_HITMONTOP_1] = { .species = SPECIES_HITMONTOP, .moves = {MOVE_TRIPLE_KICK, MOVE_DIG, MOVE_MACH_PUNCH, MOVE_QUICK_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_LIECHI_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [237] = { + [FRONTIER_MON_BANETTE_1] = { .species = SPECIES_BANETTE, .moves = {MOVE_NIGHT_SHADE, MOVE_WILL_O_WISP, MOVE_SPITE, MOVE_KNOCK_OFF}, .itemTableId = BATTLE_FRONTIER_ITEM_RAWST_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_SASSY }, - [238] = { + [FRONTIER_MON_NINJASK_1] = { .species = SPECIES_NINJASK, .moves = {MOVE_BATON_PASS, MOVE_SWORDS_DANCE, MOVE_ENDURE, MOVE_DIG}, .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_MILD }, - [239] = { + [FRONTIER_MON_SEVIPER_1] = { .species = SPECIES_SEVIPER, .moves = {MOVE_POISON_TAIL, MOVE_BITE, MOVE_GLARE, MOVE_SCREECH}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [240] = { + [FRONTIER_MON_ZANGOOSE_1] = { .species = SPECIES_ZANGOOSE, .moves = {MOVE_SLASH, MOVE_DOUBLE_KICK, MOVE_ROAR, MOVE_QUICK_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [241] = { + [FRONTIER_MON_CAMERUPT_1] = { .species = SPECIES_CAMERUPT, .moves = {MOVE_MAGNITUDE, MOVE_PROTECT, MOVE_SANDSTORM, MOVE_ROCK_SLIDE}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [242] = { + [FRONTIER_MON_SHARPEDO_1] = { .species = SPECIES_SHARPEDO, .moves = {MOVE_SLASH, MOVE_BITE, MOVE_WATER_PULSE, MOVE_SCARY_FACE}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [243] = { + [FRONTIER_MON_TROPIUS_1] = { .species = SPECIES_TROPIUS, .moves = {MOVE_MAGICAL_LEAF, MOVE_WHIRLWIND, MOVE_AERIAL_ACE, MOVE_STEEL_WING}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [244] = { + [FRONTIER_MON_MAGNETON_1] = { .species = SPECIES_MAGNETON, .moves = {MOVE_SHOCK_WAVE, MOVE_SONIC_BOOM, MOVE_THUNDER_WAVE, MOVE_SUPERSONIC}, .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_LONELY }, - [245] = { + [FRONTIER_MON_MANTINE_1] = { .species = SPECIES_MANTINE, .moves = {MOVE_BUBBLE_BEAM, MOVE_AERIAL_ACE, MOVE_RAIN_DANCE, MOVE_ICY_WIND}, .itemTableId = BATTLE_FRONTIER_ITEM_MYSTIC_WATER, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [246] = { + [FRONTIER_MON_STANTLER_1] = { .species = SPECIES_STANTLER, .moves = {MOVE_EXTRASENSORY, MOVE_CONFUSE_RAY, MOVE_STOMP, MOVE_SAND_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_TWISTED_SPOON, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_GENTLE }, - [247] = { + [FRONTIER_MON_ABSOL_1] = { .species = SPECIES_ABSOL, .moves = {MOVE_BITE, MOVE_RAZOR_WIND, MOVE_FUTURE_SIGHT, MOVE_QUICK_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [248] = { + [FRONTIER_MON_SWALOT_1] = { .species = SPECIES_SWALOT, .moves = {MOVE_STOCKPILE, MOVE_SWALLOW, MOVE_SPIT_UP, MOVE_SLUDGE}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_QUIRKY }, - [249] = { + [FRONTIER_MON_CRAWDAUNT_1] = { .species = SPECIES_CRAWDAUNT, .moves = {MOVE_BUBBLE_BEAM, MOVE_VICE_GRIP, MOVE_KNOCK_OFF, MOVE_PROTECT}, .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [250] = { + [FRONTIER_MON_PIDGEOT_1] = { .species = SPECIES_PIDGEOT, .moves = {MOVE_AERIAL_ACE, MOVE_FEATHER_DANCE, MOVE_MUD_SLAP, MOVE_FAINT_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_SHARP_BEAK, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [251] = { + [FRONTIER_MON_GRUMPIG_1] = { .species = SPECIES_GRUMPIG, .moves = {MOVE_PSYBEAM, MOVE_CONFUSE_RAY, MOVE_FUTURE_SIGHT, MOVE_MAGIC_COAT}, .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [252] = { + [FRONTIER_MON_TORKOAL_1] = { .species = SPECIES_TORKOAL, .moves = {MOVE_EMBER, MOVE_FIRE_SPIN, MOVE_SMOKESCREEN, MOVE_AMNESIA}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [253] = { + [FRONTIER_MON_KINGLER_1] = { .species = SPECIES_KINGLER, .moves = {MOVE_CRABHAMMER, MOVE_METAL_CLAW, MOVE_MUD_SHOT, MOVE_PROTECT}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [254] = { + [FRONTIER_MON_CACTURNE_1] = { .species = SPECIES_CACTURNE, .moves = {MOVE_NEEDLE_ARM, MOVE_FAINT_ATTACK, MOVE_ACID, MOVE_MEGA_PUNCH}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, .nature = NATURE_HASTY }, - [255] = { + [FRONTIER_MON_BELLOSSOM_1] = { .species = SPECIES_BELLOSSOM, .moves = {MOVE_PETAL_DANCE, MOVE_SAFEGUARD, MOVE_SUNNY_DAY, MOVE_SYNTHESIS}, .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIET }, - [256] = { + [FRONTIER_MON_OCTILLERY_1] = { .species = SPECIES_OCTILLERY, .moves = {MOVE_OCTAZOOKA, MOVE_AURORA_BEAM, MOVE_PSYBEAM, MOVE_ROCK_BLAST}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [257] = { + [FRONTIER_MON_HUNTAIL_1] = { .species = SPECIES_HUNTAIL, .moves = {MOVE_WHIRLPOOL, MOVE_SCARY_FACE, MOVE_MUD_SLAP, MOVE_BITE}, .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIET }, - [258] = { + [FRONTIER_MON_GOREBYSS_1] = { .species = SPECIES_GOREBYSS, .moves = {MOVE_WHIRLPOOL, MOVE_AMNESIA, MOVE_ICY_WIND, MOVE_CONFUSION}, .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_BRAVE }, - [259] = { + [FRONTIER_MON_RELICANTH_1] = { .species = SPECIES_RELICANTH, .moves = {MOVE_ANCIENT_POWER, MOVE_WATER_PULSE, MOVE_HARDEN, MOVE_AMNESIA}, .itemTableId = BATTLE_FRONTIER_ITEM_LIECHI_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_SASSY }, - [260] = { + [FRONTIER_MON_OMASTAR_1] = { .species = SPECIES_OMASTAR, .moves = {MOVE_BUBBLE_BEAM, MOVE_SPIKE_CANNON, MOVE_TICKLE, MOVE_ANCIENT_POWER}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [261] = { + [FRONTIER_MON_KABUTOPS_1] = { .species = SPECIES_KABUTOPS, .moves = {MOVE_SLASH, MOVE_DIG, MOVE_FURY_CUTTER, MOVE_KNOCK_OFF}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [262] = { + [FRONTIER_MON_POLIWRATH_1] = { .species = SPECIES_POLIWRATH, .moves = {MOVE_SUBMISSION, MOVE_DIG, MOVE_ROCK_TOMB, MOVE_BUBBLE_BEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_BLACK_BELT, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [263] = { + [FRONTIER_MON_SCYTHER_1] = { .species = SPECIES_SCYTHER, .moves = {MOVE_FURY_CUTTER, MOVE_AERIAL_ACE, MOVE_LIGHT_SCREEN, MOVE_DOUBLE_TEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_LIECHI_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [264] = { + [FRONTIER_MON_PINSIR_1] = { .species = SPECIES_PINSIR, .moves = {MOVE_SUBMISSION, MOVE_FOCUS_ENERGY, MOVE_SWORDS_DANCE, MOVE_REVENGE}, .itemTableId = BATTLE_FRONTIER_ITEM_BLACK_BELT, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_NAUGHTY }, - [265] = { + [FRONTIER_MON_POLITOED_1] = { .species = SPECIES_POLITOED, .moves = {MOVE_DIVE, MOVE_DIG, MOVE_HYPNOSIS, MOVE_SWAGGER}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_RELAXED }, - [266] = { + [FRONTIER_MON_CLOYSTER_1] = { .species = SPECIES_CLOYSTER, .moves = {MOVE_AURORA_BEAM, MOVE_SPIKE_CANNON, MOVE_SUPERSONIC, MOVE_PROTECT}, .itemTableId = BATTLE_FRONTIER_ITEM_NEVER_MELT_ICE, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_SASSY }, - [267] = { + [FRONTIER_MON_DELCATTY_2] = { .species = SPECIES_DELCATTY, .moves = {MOVE_FAKE_TEARS, MOVE_SING, MOVE_THUNDERBOLT, MOVE_ICE_BEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [268] = { + [FRONTIER_MON_SABLEYE_2] = { .species = SPECIES_SABLEYE, .moves = {MOVE_SHADOW_BALL, MOVE_FAINT_ATTACK, MOVE_CONFUSE_RAY, MOVE_RECOVER}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [269] = { + [FRONTIER_MON_LICKITUNG_2] = { .species = SPECIES_LICKITUNG, .moves = {MOVE_EARTHQUAKE, MOVE_BODY_SLAM, MOVE_SHADOW_BALL, MOVE_ROCK_SLIDE}, .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [270] = { + [FRONTIER_MON_WEEPINBELL_2] = { .species = SPECIES_WEEPINBELL, .moves = {MOVE_SLUDGE_BOMB, MOVE_RAZOR_LEAF, MOVE_SLEEP_POWDER, MOVE_REFLECT}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_QUIRKY }, - [271] = { + [FRONTIER_MON_GRAVELER_2] = { .species = SPECIES_GRAVELER, .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_BRICK_BREAK, MOVE_COUNTER}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [272] = { + [FRONTIER_MON_GLOOM_2] = { .species = SPECIES_GLOOM, .moves = {MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, MOVE_SLUDGE_BOMB, MOVE_MOONLIGHT}, .itemTableId = BATTLE_FRONTIER_ITEM_PECHA_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_QUIRKY }, - [273] = { + [FRONTIER_MON_PORYGON_2] = { .species = SPECIES_PORYGON, .moves = {MOVE_TRI_ATTACK, MOVE_PSYCHIC, MOVE_THUNDER_WAVE, MOVE_RECOVER}, .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_QUIET }, - [274] = { + [FRONTIER_MON_KADABRA_2] = { .species = SPECIES_KADABRA, .moves = {MOVE_PSYCHIC, MOVE_THUNDER_WAVE, MOVE_REFLECT, MOVE_RECOVER}, .itemTableId = BATTLE_FRONTIER_ITEM_TWISTED_SPOON, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [275] = { + [FRONTIER_MON_WAILMER_2] = { .species = SPECIES_WAILMER, .moves = {MOVE_WATER_SPOUT, MOVE_EARTHQUAKE, MOVE_BODY_SLAM, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_DOCILE }, - [276] = { + [FRONTIER_MON_ROSELIA_2] = { .species = SPECIES_ROSELIA, .moves = {MOVE_GIGA_DRAIN, MOVE_SLUDGE_BOMB, MOVE_GRASS_WHISTLE, MOVE_SYNTHESIS}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [277] = { + [FRONTIER_MON_VOLBEAT_2] = { .species = SPECIES_VOLBEAT, .moves = {MOVE_SIGNAL_BEAM, MOVE_THUNDERBOLT, MOVE_ICE_PUNCH, MOVE_TAIL_GLOW}, .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_QUIRKY }, - [278] = { + [FRONTIER_MON_ILLUMISE_2] = { .species = SPECIES_ILLUMISE, .moves = {MOVE_SILVER_WIND, MOVE_THUNDERBOLT, MOVE_ICE_PUNCH, MOVE_GIGA_DRAIN}, .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_QUIRKY }, - [279] = { + [FRONTIER_MON_IVYSAUR_2] = { .species = SPECIES_IVYSAUR, .moves = {MOVE_GIGA_DRAIN, MOVE_SLUDGE_BOMB, MOVE_SLEEP_POWDER, MOVE_LEECH_SEED}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_QUIRKY }, - [280] = { + [FRONTIER_MON_CHARMELEON_2] = { .species = SPECIES_CHARMELEON, .moves = {MOVE_FLAMETHROWER, MOVE_SLASH, MOVE_ANCIENT_POWER, MOVE_DRAGON_RAGE}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [281] = { + [FRONTIER_MON_WARTORTLE_2] = { .species = SPECIES_WARTORTLE, .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_RAPID_SPIN, MOVE_PROTECT}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [282] = { + [FRONTIER_MON_PARASECT_2] = { .species = SPECIES_PARASECT, .moves = {MOVE_SPORE, MOVE_GIGA_DRAIN, MOVE_DIG, MOVE_DOUBLE_TEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_CALM }, - [283] = { + [FRONTIER_MON_MACHOKE_2] = { .species = SPECIES_MACHOKE, .moves = {MOVE_CROSS_CHOP, MOVE_ROCK_SLIDE, MOVE_FORESIGHT, MOVE_SCARY_FACE}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [284] = { + [FRONTIER_MON_HAUNTER_2] = { .species = SPECIES_HAUNTER, .moves = {MOVE_PSYCHIC, MOVE_HYPNOSIS, MOVE_NIGHTMARE, MOVE_CONFUSE_RAY}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [285] = { + [FRONTIER_MON_BAYLEEF_2] = { .species = SPECIES_BAYLEEF, .moves = {MOVE_GIGA_DRAIN, MOVE_BODY_SLAM, MOVE_GRASS_WHISTLE, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [286] = { + [FRONTIER_MON_QUILAVA_2] = { .species = SPECIES_QUILAVA, .moves = {MOVE_FLAMETHROWER, MOVE_CRUSH_CLAW, MOVE_BODY_SLAM, MOVE_SMOKESCREEN}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [287] = { + [FRONTIER_MON_CROCONAW_2] = { .species = SPECIES_CROCONAW, .moves = {MOVE_MEGA_KICK, MOVE_AERIAL_ACE, MOVE_ROCK_SLIDE, MOVE_DIG}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [288] = { + [FRONTIER_MON_TOGETIC_2] = { .species = SPECIES_TOGETIC, .moves = {MOVE_RETURN, MOVE_SWEET_KISS, MOVE_AERIAL_ACE, MOVE_YAWN}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [289] = { + [FRONTIER_MON_MURKROW_2] = { .species = SPECIES_MURKROW, .moves = {MOVE_PERISH_SONG, MOVE_MEAN_LOOK, MOVE_DOUBLE_TEAM, MOVE_THUNDER_WAVE}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [290] = { + [FRONTIER_MON_WOBBUFFET_2] = { .species = SPECIES_WOBBUFFET, .moves = {MOVE_COUNTER, MOVE_MIRROR_COAT, MOVE_ENCORE, MOVE_DESTINY_BOND}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_CAREFUL }, - [291] = { + [FRONTIER_MON_PLUSLE_2] = { .species = SPECIES_PLUSLE, .moves = {MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_SEISMIC_TOSS, MOVE_WISH}, .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_DOCILE }, - [292] = { + [FRONTIER_MON_MINUN_2] = { .species = SPECIES_MINUN, .moves = {MOVE_THUNDERBOLT, MOVE_ATTRACT, MOVE_CHARM, MOVE_WISH}, .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_DOCILE }, - [293] = { + [FRONTIER_MON_GROVYLE_2] = { .species = SPECIES_GROVYLE, .moves = {MOVE_GIGA_DRAIN, MOVE_CRUSH_CLAW, MOVE_SCREECH, MOVE_ROCK_TOMB}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [294] = { + [FRONTIER_MON_COMBUSKEN_2] = { .species = SPECIES_COMBUSKEN, .moves = {MOVE_FLAMETHROWER, MOVE_SKY_UPPERCUT, MOVE_SLASH, MOVE_SAND_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [295] = { + [FRONTIER_MON_MARSHTOMP_2] = { .species = SPECIES_MARSHTOMP, .moves = {MOVE_MUDDY_WATER, MOVE_EARTHQUAKE, MOVE_MUD_SLAP, MOVE_PROTECT}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [296] = { + [FRONTIER_MON_PONYTA_2] = { .species = SPECIES_PONYTA, .moves = {MOVE_FLAMETHROWER, MOVE_BODY_SLAM, MOVE_DOUBLE_KICK, MOVE_DOUBLE_TEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_QUIRKY }, - [297] = { + [FRONTIER_MON_AZUMARILL_2] = { .species = SPECIES_AZUMARILL, .moves = {MOVE_MEGA_KICK, MOVE_BRICK_BREAK, MOVE_IRON_TAIL, MOVE_DIG}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [298] = { + [FRONTIER_MON_SUDOWOODO_2] = { .species = SPECIES_SUDOWOODO, .moves = {MOVE_MEGA_KICK, MOVE_EARTHQUAKE, MOVE_LOW_KICK, MOVE_SELF_DESTRUCT}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [299] = { + [FRONTIER_MON_MAGCARGO_2] = { .species = SPECIES_MAGCARGO, .moves = {MOVE_OVERHEAT, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_BODY_SLAM}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_QUIET }, - [300] = { + [FRONTIER_MON_PUPITAR_2] = { .species = SPECIES_PUPITAR, .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_CRUNCH, MOVE_SCARY_FACE}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [301] = { + [FRONTIER_MON_SEALEO_2] = { .species = SPECIES_SEALEO, .moves = {MOVE_ICE_BEAM, MOVE_SURF, MOVE_BODY_SLAM, MOVE_HAIL}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIET }, - [302] = { + [FRONTIER_MON_RATICATE_2] = { .species = SPECIES_RATICATE, .moves = {MOVE_SUPER_FANG, MOVE_HYPER_FANG, MOVE_SHADOW_BALL, MOVE_SCARY_FACE}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [303] = { + [FRONTIER_MON_MASQUERAIN_2] = { .species = SPECIES_MASQUERAIN, .moves = {MOVE_HYDRO_PUMP, MOVE_ICE_BEAM, MOVE_GIGA_DRAIN, MOVE_STUN_SPORE}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, .nature = NATURE_QUIET }, - [304] = { + [FRONTIER_MON_FURRET_2] = { .species = SPECIES_FURRET, .moves = {MOVE_TRICK, MOVE_FRUSTRATION, MOVE_SHADOW_BALL, MOVE_FOLLOW_ME}, .itemTableId = BATTLE_FRONTIER_ITEM_CHOICE_BAND, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [305] = { + [FRONTIER_MON_DUNSPARCE_2] = { .species = SPECIES_DUNSPARCE, .moves = {MOVE_ICE_BEAM, MOVE_ROCK_TOMB, MOVE_BITE, MOVE_SHADOW_BALL}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_QUIET }, - [306] = { + [FRONTIER_MON_DRAGONAIR_2] = { .species = SPECIES_DRAGONAIR, .moves = {MOVE_RETURN, MOVE_REST, MOVE_THUNDER_WAVE, MOVE_DRAGON_DANCE}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [307] = { + [FRONTIER_MON_MIGHTYENA_2] = { .species = SPECIES_MIGHTYENA, .moves = {MOVE_CRUNCH, MOVE_SHADOW_BALL, MOVE_FRUSTRATION, MOVE_SCARY_FACE}, .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, .nature = NATURE_QUIRKY }, - [308] = { + [FRONTIER_MON_LINOONE_2] = { .species = SPECIES_LINOONE, .moves = {MOVE_TRICK, MOVE_FRUSTRATION, MOVE_THUNDER_WAVE, MOVE_SAND_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_CHOICE_BAND, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_JOLLY }, - [309] = { + [FRONTIER_MON_CASTFORM_2] = { .species = SPECIES_CASTFORM, .moves = {MOVE_THUNDERBOLT, MOVE_FLAMETHROWER, MOVE_ICE_BEAM, MOVE_WATER_PULSE}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [310] = { + [FRONTIER_MON_SHELGON_2] = { .species = SPECIES_SHELGON, .moves = {MOVE_FRUSTRATION, MOVE_DRAGON_DANCE, MOVE_CRUNCH, MOVE_SCARY_FACE}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [311] = { + [FRONTIER_MON_METANG_2] = { .species = SPECIES_METANG, .moves = {MOVE_METEOR_MASH, MOVE_PSYCHIC, MOVE_BODY_SLAM, MOVE_SCARY_FACE}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [312] = { + [FRONTIER_MON_WIGGLYTUFF_2] = { .species = SPECIES_WIGGLYTUFF, .moves = {MOVE_FAKE_TEARS, MOVE_SING, MOVE_DREAM_EATER, MOVE_BRICK_BREAK}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_DOCILE }, - [313] = { + [FRONTIER_MON_SUNFLORA_2] = { .species = SPECIES_SUNFLORA, .moves = {MOVE_GIGA_DRAIN, MOVE_GRASS_WHISTLE, MOVE_GROWTH, MOVE_DOUBLE_TEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_QUIET }, - [314] = { + [FRONTIER_MON_CHIMECHO_2] = { .species = SPECIES_CHIMECHO, .moves = {MOVE_PSYCHIC, MOVE_HYPNOSIS, MOVE_DREAM_EATER, MOVE_HEAL_BELL}, .itemTableId = BATTLE_FRONTIER_ITEM_TWISTED_SPOON, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_QUIET }, - [315] = { + [FRONTIER_MON_GLIGAR_2] = { .species = SPECIES_GLIGAR, .moves = {MOVE_EARTHQUAKE, MOVE_AERIAL_ACE, MOVE_GUILLOTINE, MOVE_SCREECH}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [316] = { + [FRONTIER_MON_QWILFISH_2] = { .species = SPECIES_QWILFISH, .moves = {MOVE_REVENGE, MOVE_SLUDGE_BOMB, MOVE_SHADOW_BALL, MOVE_DESTINY_BOND}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [317] = { + [FRONTIER_MON_SNEASEL_2] = { .species = SPECIES_SNEASEL, .moves = {MOVE_CRUSH_CLAW, MOVE_BRICK_BREAK, MOVE_AERIAL_ACE, MOVE_SCREECH}, .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_JOLLY }, - [318] = { + [FRONTIER_MON_PELIPPER_2] = { .species = SPECIES_PELIPPER, .moves = {MOVE_SURF, MOVE_BLIZZARD, MOVE_AERIAL_ACE, MOVE_PROTECT}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_QUIET }, - [319] = { + [FRONTIER_MON_SWELLOW_2] = { .species = SPECIES_SWELLOW, .moves = {MOVE_FACADE, MOVE_AERIAL_ACE, MOVE_PURSUIT, MOVE_DOUBLE_TEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [320] = { + [FRONTIER_MON_LAIRON_2] = { .species = SPECIES_LAIRON, .moves = {MOVE_EARTHQUAKE, MOVE_IRON_TAIL, MOVE_ROAR, MOVE_PROTECT}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_SASSY }, - [321] = { + [FRONTIER_MON_TANGELA_2] = { .species = SPECIES_TANGELA, .moves = {MOVE_GIGA_DRAIN, MOVE_STUN_SPORE, MOVE_REST, MOVE_AMNESIA}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_CALM }, - [322] = { + [FRONTIER_MON_ARBOK_2] = { .species = SPECIES_ARBOK, .moves = {MOVE_SLUDGE_BOMB, MOVE_EARTHQUAKE, MOVE_IRON_TAIL, MOVE_GLARE}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [323] = { + [FRONTIER_MON_PERSIAN_2] = { .species = SPECIES_PERSIAN, .moves = {MOVE_FRUSTRATION, MOVE_SHADOW_BALL, MOVE_ROAR, MOVE_FAKE_OUT}, .itemTableId = BATTLE_FRONTIER_ITEM_SILK_SCARF, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [324] = { + [FRONTIER_MON_SEADRA_2] = { .species = SPECIES_SEADRA, .moves = {MOVE_HYDRO_PUMP, MOVE_FRUSTRATION, MOVE_DRAGON_BREATH, MOVE_DRAGON_DANCE}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [325] = { + [FRONTIER_MON_KECLEON_2] = { .species = SPECIES_KECLEON, .moves = {MOVE_TRICK, MOVE_BRICK_BREAK, MOVE_SHADOW_BALL, MOVE_SKILL_SWAP}, .itemTableId = BATTLE_FRONTIER_ITEM_CHOICE_BAND, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [326] = { + [FRONTIER_MON_VIGOROTH_2] = { .species = SPECIES_VIGOROTH, .moves = {MOVE_CRUSH_CLAW, MOVE_REVERSAL, MOVE_ENDURE, MOVE_SHADOW_BALL}, .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [327] = { + [FRONTIER_MON_LUNATONE_2] = { .species = SPECIES_LUNATONE, .moves = {MOVE_PSYCHIC, MOVE_ICE_BEAM, MOVE_COSMIC_POWER, MOVE_CALM_MIND}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_QUIET }, - [328] = { + [FRONTIER_MON_SOLROCK_2] = { .species = SPECIES_SOLROCK, .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_COSMIC_POWER, MOVE_OVERHEAT}, .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [329] = { + [FRONTIER_MON_NOCTOWL_2] = { .species = SPECIES_NOCTOWL, .moves = {MOVE_PSYCHIC, MOVE_FAINT_ATTACK, MOVE_AERIAL_ACE, MOVE_REFLECT}, .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, .nature = NATURE_QUIET }, - [330] = { + [FRONTIER_MON_SANDSLASH_2] = { .species = SPECIES_SANDSLASH, .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_CRUSH_CLAW, MOVE_SANDSTORM}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [331] = { + [FRONTIER_MON_VENOMOTH_2] = { .species = SPECIES_VENOMOTH, .moves = {MOVE_SIGNAL_BEAM, MOVE_PSYCHIC, MOVE_SLUDGE_BOMB, MOVE_GIGA_DRAIN}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [332] = { + [FRONTIER_MON_CHANSEY_2] = { .species = SPECIES_CHANSEY, .moves = {MOVE_SEISMIC_TOSS, MOVE_SHADOW_BALL, MOVE_DOUBLE_TEAM, MOVE_SOFT_BOILED}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_RELAXED }, - [333] = { + [FRONTIER_MON_SEAKING_2] = { .species = SPECIES_SEAKING, .moves = {MOVE_HORN_DRILL, MOVE_MEGAHORN, MOVE_SLEEP_TALK, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_IMPISH }, - [334] = { + [FRONTIER_MON_JUMPLUFF_2] = { .species = SPECIES_JUMPLUFF, .moves = {MOVE_LEECH_SEED, MOVE_SLEEP_POWDER, MOVE_GIGA_DRAIN, MOVE_DOUBLE_TEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_BOLD }, - [335] = { + [FRONTIER_MON_PILOSWINE_2] = { .species = SPECIES_PILOSWINE, .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_BODY_SLAM, MOVE_ROAR}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_ADAMANT }, - [336] = { + [FRONTIER_MON_GOLBAT_2] = { .species = SPECIES_GOLBAT, .moves = {MOVE_SLUDGE_BOMB, MOVE_SHADOW_BALL, MOVE_CONFUSE_RAY, MOVE_AIR_CUTTER}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [337] = { + [FRONTIER_MON_PRIMEAPE_2] = { .species = SPECIES_PRIMEAPE, .moves = {MOVE_CROSS_CHOP, MOVE_ROCK_TOMB, MOVE_OVERHEAT, MOVE_BULK_UP}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [338] = { + [FRONTIER_MON_HITMONLEE_2] = { .species = SPECIES_HITMONLEE, .moves = {MOVE_MEGA_KICK, MOVE_BRICK_BREAK, MOVE_FORESIGHT, MOVE_ROCK_TOMB}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [339] = { + [FRONTIER_MON_HITMONCHAN_2] = { .species = SPECIES_HITMONCHAN, .moves = {MOVE_DYNAMIC_PUNCH, MOVE_MACH_PUNCH, MOVE_DETECT, MOVE_COUNTER}, .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [340] = { + [FRONTIER_MON_GIRAFARIG_2] = { .species = SPECIES_GIRAFARIG, .moves = {MOVE_PSYCHIC, MOVE_CRUNCH, MOVE_BATON_PASS, MOVE_AGILITY}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_MODEST }, - [341] = { + [FRONTIER_MON_HITMONTOP_2] = { .species = SPECIES_HITMONTOP, .moves = {MOVE_DOUBLE_EDGE, MOVE_SEISMIC_TOSS, MOVE_ROCK_SLIDE, MOVE_COUNTER}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [342] = { + [FRONTIER_MON_BANETTE_2] = { .species = SPECIES_BANETTE, .moves = {MOVE_SHADOW_BALL, MOVE_FRUSTRATION, MOVE_SCREECH, MOVE_WILL_O_WISP}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_ADAMANT }, - [343] = { + [FRONTIER_MON_NINJASK_2] = { .species = SPECIES_NINJASK, .moves = {MOVE_SLASH, MOVE_SHADOW_BALL, MOVE_SWORDS_DANCE, MOVE_BATON_PASS}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [344] = { + [FRONTIER_MON_SEVIPER_2] = { .species = SPECIES_SEVIPER, .moves = {MOVE_SLUDGE_BOMB, MOVE_EARTHQUAKE, MOVE_CRUNCH, MOVE_GIGA_DRAIN}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [345] = { + [FRONTIER_MON_ZANGOOSE_2] = { .species = SPECIES_ZANGOOSE, .moves = {MOVE_CRUSH_CLAW, MOVE_SHADOW_BALL, MOVE_BRICK_BREAK, MOVE_AERIAL_ACE}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [346] = { + [FRONTIER_MON_CAMERUPT_2] = { .species = SPECIES_CAMERUPT, .moves = {MOVE_EARTHQUAKE, MOVE_ERUPTION, MOVE_BODY_SLAM, MOVE_SCARY_FACE}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_QUIRKY }, - [347] = { + [FRONTIER_MON_SHARPEDO_2] = { .species = SPECIES_SHARPEDO, .moves = {MOVE_DOUBLE_EDGE, MOVE_CRUNCH, MOVE_EARTHQUAKE, MOVE_SURF}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_QUIRKY }, - [348] = { + [FRONTIER_MON_TROPIUS_2] = { .species = SPECIES_TROPIUS, .moves = {MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, MOVE_SYNTHESIS, MOVE_BODY_SLAM}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_QUIET }, - [349] = { + [FRONTIER_MON_MAGNETON_2] = { .species = SPECIES_MAGNETON, .moves = {MOVE_THUNDER, MOVE_RAIN_DANCE, MOVE_THUNDER_WAVE, MOVE_METAL_SOUND}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [350] = { + [FRONTIER_MON_MANTINE_2] = { .species = SPECIES_MANTINE, .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_RAIN_DANCE, MOVE_CONFUSE_RAY}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [351] = { + [FRONTIER_MON_STANTLER_2] = { .species = SPECIES_STANTLER, .moves = {MOVE_FRUSTRATION, MOVE_SHADOW_BALL, MOVE_THUNDER_WAVE, MOVE_CONFUSE_RAY}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [352] = { + [FRONTIER_MON_ABSOL_2] = { .species = SPECIES_ABSOL, .moves = {MOVE_DOUBLE_EDGE, MOVE_SHADOW_BALL, MOVE_AERIAL_ACE, MOVE_IRON_TAIL}, .itemTableId = BATTLE_FRONTIER_ITEM_CHOICE_BAND, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [353] = { + [FRONTIER_MON_SWALOT_2] = { .species = SPECIES_SWALOT, .moves = {MOVE_SLUDGE_BOMB, MOVE_SHADOW_BALL, MOVE_BODY_SLAM, MOVE_COUNTER}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [354] = { + [FRONTIER_MON_CRAWDAUNT_2] = { .species = SPECIES_CRAWDAUNT, .moves = {MOVE_GUILLOTINE, MOVE_FRUSTRATION, MOVE_ANCIENT_POWER, MOVE_AERIAL_ACE}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [355] = { + [FRONTIER_MON_PIDGEOT_2] = { .species = SPECIES_PIDGEOT, .moves = {MOVE_RETURN, MOVE_AERIAL_ACE, MOVE_STEEL_WING, MOVE_MUD_SLAP}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [356] = { + [FRONTIER_MON_GRUMPIG_2] = { .species = SPECIES_GRUMPIG, .moves = {MOVE_PSYCHIC, MOVE_ICE_PUNCH, MOVE_THUNDER_PUNCH, MOVE_FIRE_PUNCH}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, .nature = NATURE_MODEST }, - [357] = { + [FRONTIER_MON_TORKOAL_2] = { .species = SPECIES_TORKOAL, .moves = {MOVE_OVERHEAT, MOVE_BODY_SLAM, MOVE_SMOKESCREEN, MOVE_PROTECT}, .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_SASSY }, - [358] = { + [FRONTIER_MON_KINGLER_2] = { .species = SPECIES_KINGLER, .moves = {MOVE_GUILLOTINE, MOVE_ROCK_TOMB, MOVE_FLAIL, MOVE_ENDURE}, .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [359] = { + [FRONTIER_MON_CACTURNE_2] = { .species = SPECIES_CACTURNE, .moves = {MOVE_MEGA_KICK, MOVE_TEETER_DANCE, MOVE_FAINT_ATTACK, MOVE_SANDSTORM}, .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_HARDY }, - [360] = { + [FRONTIER_MON_BELLOSSOM_2] = { .species = SPECIES_BELLOSSOM, .moves = {MOVE_SOLAR_BEAM, MOVE_ATTRACT, MOVE_SUNNY_DAY, MOVE_SYNTHESIS}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, .nature = NATURE_MODEST }, - [361] = { + [FRONTIER_MON_OCTILLERY_2] = { .species = SPECIES_OCTILLERY, .moves = {MOVE_OCTAZOOKA, MOVE_FIRE_BLAST, MOVE_THUNDER_WAVE, MOVE_MUD_SLAP}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [362] = { + [FRONTIER_MON_HUNTAIL_2] = { .species = SPECIES_HUNTAIL, .moves = {MOVE_SURF, MOVE_RAIN_DANCE, MOVE_CRUNCH, MOVE_BODY_SLAM}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_QUIET }, - [363] = { + [FRONTIER_MON_GOREBYSS_2] = { .species = SPECIES_GOREBYSS, .moves = {MOVE_SURF, MOVE_RAIN_DANCE, MOVE_PSYCHIC, MOVE_BODY_SLAM}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_QUIET }, - [364] = { + [FRONTIER_MON_RELICANTH_2] = { .species = SPECIES_RELICANTH, .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_AMNESIA, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_SASSY }, - [365] = { + [FRONTIER_MON_OMASTAR_2] = { .species = SPECIES_OMASTAR, .moves = {MOVE_HYDRO_PUMP, MOVE_RAIN_DANCE, MOVE_ICE_BEAM, MOVE_PROTECT}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [366] = { + [FRONTIER_MON_KABUTOPS_2] = { .species = SPECIES_KABUTOPS, .moves = {MOVE_SLASH, MOVE_ROCK_SLIDE, MOVE_FLAIL, MOVE_ENDURE}, .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [367] = { + [FRONTIER_MON_POLIWRATH_2] = { .species = SPECIES_POLIWRATH, .moves = {MOVE_BRICK_BREAK, MOVE_HYPNOSIS, MOVE_REST, MOVE_BELLY_DRUM}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [368] = { + [FRONTIER_MON_SCYTHER_2] = { .species = SPECIES_SCYTHER, .moves = {MOVE_SILVER_WIND, MOVE_AERIAL_ACE, MOVE_SWORDS_DANCE, MOVE_DOUBLE_TEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [369] = { + [FRONTIER_MON_PINSIR_2] = { .species = SPECIES_PINSIR, .moves = {MOVE_GUILLOTINE, MOVE_SWORDS_DANCE, MOVE_FLAIL, MOVE_ENDURE}, .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, .nature = NATURE_JOLLY }, - [370] = { + [FRONTIER_MON_POLITOED_2] = { .species = SPECIES_POLITOED, .moves = {MOVE_SURF, MOVE_PSYCHIC, MOVE_MUD_SLAP, MOVE_SWAGGER}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, .nature = NATURE_MODEST }, - [371] = { + [FRONTIER_MON_CLOYSTER_2] = { .species = SPECIES_CLOYSTER, .moves = {MOVE_DIVE, MOVE_TOXIC, MOVE_DOUBLE_TEAM, MOVE_PROTECT}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_CAREFUL }, - [372] = { + [FRONTIER_MON_DUGTRIO_1] = { .species = SPECIES_DUGTRIO, .moves = {MOVE_EARTHQUAKE, MOVE_TRI_ATTACK, MOVE_SLASH, MOVE_SAND_TOMB}, .itemTableId = BATTLE_FRONTIER_ITEM_SOFT_SAND, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [373] = { + [FRONTIER_MON_MEDICHAM_1] = { .species = SPECIES_MEDICHAM, .moves = {MOVE_PSYCHIC, MOVE_HI_JUMP_KICK, MOVE_CALM_MIND, MOVE_BATON_PASS}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [374] = { + [FRONTIER_MON_MISDREAVUS_1] = { .species = SPECIES_MISDREAVUS, .moves = {MOVE_PAIN_SPLIT, MOVE_SHADOW_BALL, MOVE_CONFUSE_RAY, MOVE_THUNDER_WAVE}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_IMPISH }, - [375] = { + [FRONTIER_MON_FEAROW_1] = { .species = SPECIES_FEAROW, .moves = {MOVE_DRILL_PECK, MOVE_TRI_ATTACK, MOVE_FACADE, MOVE_MUD_SLAP}, .itemTableId = BATTLE_FRONTIER_ITEM_SHARP_BEAK, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [376] = { + [FRONTIER_MON_GRANBULL_1] = { .species = SPECIES_GRANBULL, .moves = {MOVE_MEGA_KICK, MOVE_SMELLING_SALT, MOVE_THUNDER_WAVE, MOVE_ROAR}, .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [377] = { + [FRONTIER_MON_JYNX_1] = { .species = SPECIES_JYNX, .moves = {MOVE_ICE_BEAM, MOVE_FAKE_OUT, MOVE_LOVELY_KISS, MOVE_ATTRACT}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [378] = { + [FRONTIER_MON_DUSCLOPS_1] = { .species = SPECIES_DUSCLOPS, .moves = {MOVE_WILL_O_WISP, MOVE_SEISMIC_TOSS, MOVE_PAIN_SPLIT, MOVE_CONFUSE_RAY}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_IMPISH }, - [379] = { + [FRONTIER_MON_DODRIO_1] = { .species = SPECIES_DODRIO, .moves = {MOVE_DRILL_PECK, MOVE_TRI_ATTACK, MOVE_SLEEP_TALK, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [380] = { + [FRONTIER_MON_MR_MIME_1] = { .species = SPECIES_MR_MIME, .moves = {MOVE_PSYCHIC, MOVE_MAGICAL_LEAF, MOVE_FAKE_OUT, MOVE_REFLECT}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [381] = { + [FRONTIER_MON_LANTURN_1] = { .species = SPECIES_LANTURN, .moves = {MOVE_SURF, MOVE_CONFUSE_RAY, MOVE_ATTRACT, MOVE_THUNDER_WAVE}, .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, .nature = NATURE_QUIET }, - [382] = { + [FRONTIER_MON_BRELOOM_1] = { .species = SPECIES_BRELOOM, .moves = {MOVE_SKY_UPPERCUT, MOVE_MACH_PUNCH, MOVE_HEADBUTT, MOVE_COUNTER}, .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_JOLLY }, - [383] = { + [FRONTIER_MON_FORRETRESS_1] = { .species = SPECIES_FORRETRESS, .moves = {MOVE_DOUBLE_EDGE, MOVE_ROCK_SLIDE, MOVE_LIGHT_SCREEN, MOVE_SPIKES}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [384] = { + [FRONTIER_MON_WHISCASH_1] = { .species = SPECIES_WHISCASH, .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_AMNESIA, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [385] = { + [FRONTIER_MON_XATU_1] = { .species = SPECIES_XATU, .moves = {MOVE_DRILL_PECK, MOVE_NIGHT_SHADE, MOVE_WISH, MOVE_FUTURE_SIGHT}, .itemTableId = BATTLE_FRONTIER_ITEM_SHARP_BEAK, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [386] = { + [FRONTIER_MON_SKARMORY_1] = { .species = SPECIES_SKARMORY, .moves = {MOVE_STEEL_WING, MOVE_AIR_CUTTER, MOVE_COUNTER, MOVE_AGILITY}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [387] = { + [FRONTIER_MON_MAROWAK_1] = { .species = SPECIES_MAROWAK, .moves = {MOVE_BONEMERANG, MOVE_ROCK_SLIDE, MOVE_ICY_WIND, MOVE_HEADBUTT}, .itemTableId = BATTLE_FRONTIER_ITEM_THICK_CLUB, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [388] = { + [FRONTIER_MON_QUAGSIRE_1] = { .species = SPECIES_QUAGSIRE, .moves = {MOVE_EARTHQUAKE, MOVE_BRICK_BREAK, MOVE_COUNTER, MOVE_MUD_SLAP}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [389] = { + [FRONTIER_MON_CLEFABLE_1] = { .species = SPECIES_CLEFABLE, .moves = {MOVE_METRONOME, MOVE_DOUBLE_TEAM, MOVE_REFLECT, MOVE_FOLLOW_ME}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_BRAVE }, - [390] = { + [FRONTIER_MON_HARIYAMA_1] = { .species = SPECIES_HARIYAMA, .moves = {MOVE_CROSS_CHOP, MOVE_ROCK_SLIDE, MOVE_COUNTER, MOVE_FAKE_OUT}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [391] = { + [FRONTIER_MON_RAICHU_1] = { .species = SPECIES_RAICHU, .moves = {MOVE_THUNDERBOLT, MOVE_QUICK_ATTACK, MOVE_LIGHT_SCREEN, MOVE_DOUBLE_TEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE, .nature = NATURE_MODEST }, - [392] = { + [FRONTIER_MON_DEWGONG_1] = { .species = SPECIES_DEWGONG, .moves = {MOVE_ICE_BEAM, MOVE_ICY_WIND, MOVE_HEADBUTT, MOVE_FAKE_OUT}, .itemTableId = BATTLE_FRONTIER_ITEM_NEVER_MELT_ICE, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIET }, - [393] = { + [FRONTIER_MON_MANECTRIC_1] = { .species = SPECIES_MANECTRIC, .moves = {MOVE_THUNDERBOLT, MOVE_FLASH, MOVE_QUICK_ATTACK, MOVE_ROAR}, .itemTableId = BATTLE_FRONTIER_ITEM_MAGNET, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [394] = { + [FRONTIER_MON_VILEPLUME_1] = { .species = SPECIES_VILEPLUME, .moves = {MOVE_SLUDGE_BOMB, MOVE_PETAL_DANCE, MOVE_MOONLIGHT, MOVE_AROMATHERAPY}, .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_IMPISH }, - [395] = { + [FRONTIER_MON_VICTREEBEL_1] = { .species = SPECIES_VICTREEBEL, .moves = {MOVE_GIGA_DRAIN, MOVE_SLEEP_POWDER, MOVE_SWEET_SCENT, MOVE_SYNTHESIS}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_QUIET }, - [396] = { + [FRONTIER_MON_ELECTRODE_1] = { .species = SPECIES_ELECTRODE, .moves = {MOVE_THUNDERBOLT, MOVE_SWIFT, MOVE_LIGHT_SCREEN, MOVE_PROTECT}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIET }, - [397] = { + [FRONTIER_MON_EXPLOUD_1] = { .species = SPECIES_EXPLOUD, .moves = {MOVE_HYPER_VOICE, MOVE_SHADOW_BALL, MOVE_SLEEP_TALK, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_IMPISH }, - [398] = { + [FRONTIER_MON_SHIFTRY_1] = { .species = SPECIES_SHIFTRY, .moves = {MOVE_GIGA_DRAIN, MOVE_FAINT_ATTACK, MOVE_QUICK_ATTACK, MOVE_FAKE_OUT}, .itemTableId = BATTLE_FRONTIER_ITEM_MIRACLE_SEED, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, .nature = NATURE_QUIET }, - [399] = { + [FRONTIER_MON_GLALIE_1] = { .species = SPECIES_GLALIE, .moves = {MOVE_ICE_BEAM, MOVE_CRUNCH, MOVE_HAIL, MOVE_PROTECT}, .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [400] = { + [FRONTIER_MON_LUDICOLO_1] = { .species = SPECIES_LUDICOLO, .moves = {MOVE_SURF, MOVE_RAIN_DANCE, MOVE_THUNDER_PUNCH, MOVE_FIRE_PUNCH}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_QUIET }, - [401] = { + [FRONTIER_MON_HYPNO_1] = { .species = SPECIES_HYPNO, .moves = {MOVE_THUNDER_PUNCH, MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, MOVE_HYPNOSIS}, .itemTableId = BATTLE_FRONTIER_ITEM_TWISTED_SPOON, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, .nature = NATURE_QUIET }, - [402] = { + [FRONTIER_MON_GOLEM_1] = { .species = SPECIES_GOLEM, .moves = {MOVE_EARTHQUAKE, MOVE_BODY_SLAM, MOVE_COUNTER, MOVE_ROCK_TOMB}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [403] = { + [FRONTIER_MON_RHYDON_1] = { .species = SPECIES_RHYDON, .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_TOMB, MOVE_SCARY_FACE, MOVE_BRICK_BREAK}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [404] = { + [FRONTIER_MON_ALAKAZAM_1] = { .species = SPECIES_ALAKAZAM, .moves = {MOVE_THUNDER_PUNCH, MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, MOVE_THUNDER_WAVE}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, .nature = NATURE_MODEST }, - [405] = { + [FRONTIER_MON_WEEZING_1] = { .species = SPECIES_WEEZING, .moves = {MOVE_SLUDGE_BOMB, MOVE_WILL_O_WISP, MOVE_SHADOW_BALL, MOVE_SMOKESCREEN}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [406] = { + [FRONTIER_MON_KANGASKHAN_1] = { .species = SPECIES_KANGASKHAN, .moves = {MOVE_DIZZY_PUNCH, MOVE_BRICK_BREAK, MOVE_COUNTER, MOVE_FAKE_OUT}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [407] = { + [FRONTIER_MON_ELECTABUZZ_1] = { .species = SPECIES_ELECTABUZZ, .moves = {MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_BRICK_BREAK, MOVE_LIGHT_SCREEN}, .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [408] = { + [FRONTIER_MON_TAUROS_1] = { .species = SPECIES_TAUROS, .moves = {MOVE_EARTHQUAKE, MOVE_THRASH, MOVE_SWAGGER, MOVE_FACADE}, .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [409] = { + [FRONTIER_MON_SLOWBRO_1] = { .species = SPECIES_SLOWBRO, .moves = {MOVE_SURF, MOVE_RAIN_DANCE, MOVE_HEADBUTT, MOVE_ICE_PUNCH}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_QUIET }, - [410] = { + [FRONTIER_MON_SLOWKING_1] = { .species = SPECIES_SLOWKING, .moves = {MOVE_PSYCHIC, MOVE_BRICK_BREAK, MOVE_AMNESIA, MOVE_ATTRACT}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_QUIET }, - [411] = { + [FRONTIER_MON_MILTANK_1] = { .species = SPECIES_MILTANK, .moves = {MOVE_FACADE, MOVE_SHADOW_BALL, MOVE_COUNTER, MOVE_MILK_DRINK}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_CAREFUL }, - [412] = { + [FRONTIER_MON_ALTARIA_1] = { .species = SPECIES_ALTARIA, .moves = {MOVE_DRAGON_CLAW, MOVE_AERIAL_ACE, MOVE_REFRESH, MOVE_BODY_SLAM}, .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [413] = { + [FRONTIER_MON_NIDOQUEEN_1] = { .species = SPECIES_NIDOQUEEN, .moves = {MOVE_SLUDGE_BOMB, MOVE_DOUBLE_KICK, MOVE_BODY_SLAM, MOVE_COUNTER}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [414] = { + [FRONTIER_MON_NIDOKING_1] = { .species = SPECIES_NIDOKING, .moves = {MOVE_HORN_DRILL, MOVE_DOUBLE_KICK, MOVE_BODY_SLAM, MOVE_COUNTER}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [415] = { + [FRONTIER_MON_MAGMAR_1] = { .species = SPECIES_MAGMAR, .moves = {MOVE_FLAMETHROWER, MOVE_SMOKESCREEN, MOVE_BRICK_BREAK, MOVE_BARRIER}, .itemTableId = BATTLE_FRONTIER_ITEM_RAWST_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [416] = { + [FRONTIER_MON_CRADILY_1] = { .species = SPECIES_CRADILY, .moves = {MOVE_GIGA_DRAIN, MOVE_ROCK_SLIDE, MOVE_BARRIER, MOVE_CONFUSE_RAY}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [417] = { + [FRONTIER_MON_ARMALDO_1] = { .species = SPECIES_ARMALDO, .moves = {MOVE_SLASH, MOVE_AERIAL_ACE, MOVE_ANCIENT_POWER, MOVE_PROTECT}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [418] = { + [FRONTIER_MON_GOLDUCK_1] = { .species = SPECIES_GOLDUCK, .moves = {MOVE_HYDRO_PUMP, MOVE_DIG, MOVE_BRICK_BREAK, MOVE_LIGHT_SCREEN}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_QUIET }, - [419] = { + [FRONTIER_MON_RAPIDASH_1] = { .species = SPECIES_RAPIDASH, .moves = {MOVE_FLAMETHROWER, MOVE_DOUBLE_KICK, MOVE_QUICK_ATTACK, MOVE_PROTECT}, .itemTableId = BATTLE_FRONTIER_ITEM_CHARCOAL, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_QUIET }, - [420] = { + [FRONTIER_MON_MUK_1] = { .species = SPECIES_MUK, .moves = {MOVE_SLUDGE_BOMB, MOVE_BODY_SLAM, MOVE_SCREECH, MOVE_MINIMIZE}, .itemTableId = BATTLE_FRONTIER_ITEM_POISON_BARB, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [421] = { + [FRONTIER_MON_GENGAR_1] = { .species = SPECIES_GENGAR, .moves = {MOVE_DREAM_EATER, MOVE_HYPNOSIS, MOVE_CONFUSE_RAY, MOVE_ATTRACT}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, .nature = NATURE_TIMID }, - [422] = { + [FRONTIER_MON_AMPHAROS_1] = { .species = SPECIES_AMPHAROS, .moves = {MOVE_THUNDER, MOVE_RAIN_DANCE, MOVE_THUNDER_WAVE, MOVE_ATTRACT}, .itemTableId = BATTLE_FRONTIER_ITEM_MAGNET, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [423] = { + [FRONTIER_MON_SCIZOR_1] = { .species = SPECIES_SCIZOR, .moves = {MOVE_METAL_CLAW, MOVE_AERIAL_ACE, MOVE_COUNTER, MOVE_QUICK_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [424] = { + [FRONTIER_MON_HERACROSS_1] = { .species = SPECIES_HERACROSS, .moves = {MOVE_MEGAHORN, MOVE_BRICK_BREAK, MOVE_ROCK_TOMB, MOVE_COUNTER}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [425] = { + [FRONTIER_MON_URSARING_1] = { .species = SPECIES_URSARING, .moves = {MOVE_MEGA_KICK, MOVE_CRUNCH, MOVE_AERIAL_ACE, MOVE_COUNTER}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [426] = { + [FRONTIER_MON_HOUNDOOM_1] = { .species = SPECIES_HOUNDOOM, .moves = {MOVE_FLAMETHROWER, MOVE_SHADOW_BALL, MOVE_COUNTER, MOVE_WILL_O_WISP}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_QUIRKY }, - [427] = { + [FRONTIER_MON_DONPHAN_1] = { .species = SPECIES_DONPHAN, .moves = {MOVE_EARTHQUAKE, MOVE_ANCIENT_POWER, MOVE_SWAGGER, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [428] = { + [FRONTIER_MON_CLAYDOL_1] = { .species = SPECIES_CLAYDOL, .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_SWAGGER, MOVE_PSYCH_UP}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [429] = { + [FRONTIER_MON_WAILORD_1] = { .species = SPECIES_WAILORD, .moves = {MOVE_SURF, MOVE_ICY_WIND, MOVE_BODY_SLAM, MOVE_ROAR}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_SASSY }, - [430] = { + [FRONTIER_MON_NINETALES_1] = { .species = SPECIES_NINETALES, .moves = {MOVE_FLAMETHROWER, MOVE_ROAR, MOVE_CONFUSE_RAY, MOVE_WILL_O_WISP}, .itemTableId = BATTLE_FRONTIER_ITEM_RAWST_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [431] = { + [FRONTIER_MON_MACHAMP_1] = { .species = SPECIES_MACHAMP, .moves = {MOVE_CROSS_CHOP, MOVE_ROCK_SLIDE, MOVE_COUNTER, MOVE_SCARY_FACE}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [432] = { + [FRONTIER_MON_SHUCKLE_1] = { .species = SPECIES_SHUCKLE, .moves = {MOVE_ROLLOUT, MOVE_DEFENSE_CURL, MOVE_SLEEP_TALK, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_BRAVE }, - [433] = { + [FRONTIER_MON_STEELIX_1] = { .species = SPECIES_STEELIX, .moves = {MOVE_EARTHQUAKE, MOVE_DRAGON_BREATH, MOVE_ROCK_TOMB, MOVE_ROAR}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [434] = { + [FRONTIER_MON_TENTACRUEL_1] = { .species = SPECIES_TENTACRUEL, .moves = {MOVE_SLUDGE_BOMB, MOVE_ICY_WIND, MOVE_BARRIER, MOVE_CONFUSE_RAY}, .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_IMPISH }, - [435] = { + [FRONTIER_MON_AERODACTYL_1] = { .species = SPECIES_AERODACTYL, .moves = {MOVE_ANCIENT_POWER, MOVE_DRAGON_BREATH, MOVE_AERIAL_ACE, MOVE_ROAR}, .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [436] = { + [FRONTIER_MON_PORYGON2_1] = { .species = SPECIES_PORYGON2, .moves = {MOVE_TRI_ATTACK, MOVE_AERIAL_ACE, MOVE_SHADOW_BALL, MOVE_RECOVER}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [437] = { + [FRONTIER_MON_GARDEVOIR_1] = { .species = SPECIES_GARDEVOIR, .moves = {MOVE_DREAM_EATER, MOVE_HYPNOSIS, MOVE_MAGICAL_LEAF, MOVE_REFLECT}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_TIMID }, - [438] = { + [FRONTIER_MON_EXEGGUTOR_1] = { .species = SPECIES_EXEGGUTOR, .moves = {MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, MOVE_SYNTHESIS, MOVE_LIGHT_SCREEN}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_QUIET }, - [439] = { + [FRONTIER_MON_STARMIE_1] = { .species = SPECIES_STARMIE, .moves = {MOVE_PSYCHIC, MOVE_CONFUSE_RAY, MOVE_THUNDER_WAVE, MOVE_RECOVER}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [440] = { + [FRONTIER_MON_FLYGON_1] = { .species = SPECIES_FLYGON, .moves = {MOVE_EARTHQUAKE, MOVE_STEEL_WING, MOVE_FAINT_ATTACK, MOVE_FACADE}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [441] = { + [FRONTIER_MON_VENUSAUR_1] = { .species = SPECIES_VENUSAUR, .moves = {MOVE_GIGA_DRAIN, MOVE_SUNNY_DAY, MOVE_SYNTHESIS, MOVE_SLEEP_POWDER}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIET }, - [442] = { + [FRONTIER_MON_VAPOREON_1] = { .species = SPECIES_VAPOREON, .moves = {MOVE_SURF, MOVE_ROAR, MOVE_BITE, MOVE_QUICK_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_MYSTIC_WATER, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, .nature = NATURE_MODEST }, - [443] = { + [FRONTIER_MON_JOLTEON_1] = { .species = SPECIES_JOLTEON, .moves = {MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_ATTRACT, MOVE_PROTECT}, .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [444] = { + [FRONTIER_MON_FLAREON_1] = { .species = SPECIES_FLAREON, .moves = {MOVE_FLAMETHROWER, MOVE_ROAR, MOVE_BITE, MOVE_SAND_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, .nature = NATURE_MODEST }, - [445] = { + [FRONTIER_MON_MEGANIUM_1] = { .species = SPECIES_MEGANIUM, .moves = {MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, MOVE_LIGHT_SCREEN, MOVE_SYNTHESIS}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [446] = { + [FRONTIER_MON_ESPEON_1] = { .species = SPECIES_ESPEON, .moves = {MOVE_PSYCHIC, MOVE_CHARM, MOVE_CALM_MIND, MOVE_BATON_PASS}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE, .nature = NATURE_MODEST }, - [447] = { + [FRONTIER_MON_UMBREON_1] = { .species = SPECIES_UMBREON, .moves = {MOVE_CONFUSE_RAY, MOVE_FAINT_ATTACK, MOVE_DOUBLE_TEAM, MOVE_BATON_PASS}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_BOLD }, - [448] = { + [FRONTIER_MON_BLASTOISE_1] = { .species = SPECIES_BLASTOISE, .moves = {MOVE_HYDRO_PUMP, MOVE_RAIN_DANCE, MOVE_BITE, MOVE_SEISMIC_TOSS}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [449] = { + [FRONTIER_MON_FERALIGATR_1] = { .species = SPECIES_FERALIGATR, .moves = {MOVE_SURF, MOVE_RAIN_DANCE, MOVE_AERIAL_ACE, MOVE_ROAR}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIET }, - [450] = { + [FRONTIER_MON_AGGRON_1] = { .species = SPECIES_AGGRON, .moves = {MOVE_IRON_TAIL, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE, MOVE_ROAR}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [451] = { + [FRONTIER_MON_BLAZIKEN_1] = { .species = SPECIES_BLAZIKEN, .moves = {MOVE_FLAMETHROWER, MOVE_SUNNY_DAY, MOVE_DOUBLE_KICK, MOVE_ROAR}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [452] = { + [FRONTIER_MON_WALREIN_1] = { .species = SPECIES_WALREIN, .moves = {MOVE_BLIZZARD, MOVE_HAIL, MOVE_YAWN, MOVE_PROTECT}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_QUIET }, - [453] = { + [FRONTIER_MON_SCEPTILE_1] = { .species = SPECIES_SCEPTILE, .moves = {MOVE_LEAF_BLADE, MOVE_LEECH_SEED, MOVE_AERIAL_ACE, MOVE_DETECT}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [454] = { + [FRONTIER_MON_CHARIZARD_1] = { .species = SPECIES_CHARIZARD, .moves = {MOVE_FIRE_BLAST, MOVE_SUNNY_DAY, MOVE_ROAR, MOVE_SCARY_FACE}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [455] = { + [FRONTIER_MON_TYPHLOSION_1] = { .species = SPECIES_TYPHLOSION, .moves = {MOVE_FIRE_BLAST, MOVE_SUNNY_DAY, MOVE_SMOKESCREEN, MOVE_ROAR}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [456] = { + [FRONTIER_MON_LAPRAS_1] = { .species = SPECIES_LAPRAS, .moves = {MOVE_SURF, MOVE_ATTRACT, MOVE_CONFUSE_RAY, MOVE_SING}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_BOLD }, - [457] = { + [FRONTIER_MON_CROBAT_1] = { .species = SPECIES_CROBAT, .moves = {MOVE_SLUDGE_BOMB, MOVE_BITE, MOVE_ASTONISH, MOVE_SCREECH}, .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [458] = { + [FRONTIER_MON_SWAMPERT_1] = { .species = SPECIES_SWAMPERT, .moves = {MOVE_EARTHQUAKE, MOVE_COUNTER, MOVE_REST, MOVE_CURSE}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [459] = { + [FRONTIER_MON_GYARADOS_1] = { .species = SPECIES_GYARADOS, .moves = {MOVE_RETURN, MOVE_BITE, MOVE_THUNDER_WAVE, MOVE_DRAGON_DANCE}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_CAREFUL }, - [460] = { + [FRONTIER_MON_SNORLAX_1] = { .species = SPECIES_SNORLAX, .moves = {MOVE_FACADE, MOVE_SHADOW_BALL, MOVE_ATTRACT, MOVE_DOUBLE_TEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [461] = { + [FRONTIER_MON_KINGDRA_1] = { .species = SPECIES_KINGDRA, .moves = {MOVE_HYDRO_PUMP, MOVE_DRAGON_BREATH, MOVE_ICY_WIND, MOVE_ATTRACT}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [462] = { + [FRONTIER_MON_BLISSEY_1] = { .species = SPECIES_BLISSEY, .moves = {MOVE_TOXIC, MOVE_DOUBLE_TEAM, MOVE_SING, MOVE_SOFT_BOILED}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_BOLD }, - [463] = { + [FRONTIER_MON_MILOTIC_1] = { .species = SPECIES_MILOTIC, .moves = {MOVE_HYDRO_PUMP, MOVE_ICY_WIND, MOVE_RECOVER, MOVE_MIRROR_COAT}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [464] = { + [FRONTIER_MON_ARCANINE_1] = { .species = SPECIES_ARCANINE, .moves = {MOVE_FLAMETHROWER, MOVE_EXTREME_SPEED, MOVE_CRUNCH, MOVE_BODY_SLAM}, .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [465] = { + [FRONTIER_MON_SALAMENCE_1] = { .species = SPECIES_SALAMENCE, .moves = {MOVE_DRAGON_CLAW, MOVE_AERIAL_ACE, MOVE_HEADBUTT, MOVE_ROCK_SLIDE}, .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [466] = { + [FRONTIER_MON_METAGROSS_1] = { .species = SPECIES_METAGROSS, .moves = {MOVE_METEOR_MASH, MOVE_AERIAL_ACE, MOVE_FACADE, MOVE_LIGHT_SCREEN}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [467] = { + [FRONTIER_MON_SLAKING_1] = { .species = SPECIES_SLAKING, .moves = {MOVE_YAWN, MOVE_BULK_UP, MOVE_SWAGGER, MOVE_AERIAL_ACE}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [468] = { + [FRONTIER_MON_DUGTRIO_2] = { .species = SPECIES_DUGTRIO, .moves = {MOVE_EARTHQUAKE, MOVE_ANCIENT_POWER, MOVE_AERIAL_ACE, MOVE_TRI_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [469] = { + [FRONTIER_MON_MEDICHAM_2] = { .species = SPECIES_MEDICHAM, .moves = {MOVE_REVERSAL, MOVE_ENDURE, MOVE_PSYCHIC, MOVE_FAKE_OUT}, .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [470] = { + [FRONTIER_MON_MAROWAK_2] = { .species = SPECIES_MAROWAK, .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_SWORDS_DANCE, MOVE_ICY_WIND}, .itemTableId = BATTLE_FRONTIER_ITEM_THICK_CLUB, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [471] = { + [FRONTIER_MON_QUAGSIRE_2] = { .species = SPECIES_QUAGSIRE, .moves = {MOVE_CURSE, MOVE_ATTRACT, MOVE_YAWN, MOVE_ANCIENT_POWER}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_SASSY }, - [472] = { + [FRONTIER_MON_MISDREAVUS_2] = { .species = SPECIES_MISDREAVUS, .moves = {MOVE_PSYCHIC, MOVE_ATTRACT, MOVE_THUNDER_WAVE, MOVE_CONFUSE_RAY}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, .nature = NATURE_BOLD }, - [473] = { + [FRONTIER_MON_FEAROW_2] = { .species = SPECIES_FEAROW, .moves = {MOVE_DRILL_PECK, MOVE_TRI_ATTACK, MOVE_ATTRACT, MOVE_PURSUIT}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [474] = { + [FRONTIER_MON_GRANBULL_2] = { .species = SPECIES_GRANBULL, .moves = {MOVE_OVERHEAT, MOVE_THUNDERBOLT, MOVE_ICE_PUNCH, MOVE_FACADE}, .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK, .nature = NATURE_QUIET }, - [475] = { + [FRONTIER_MON_JYNX_2] = { .species = SPECIES_JYNX, .moves = {MOVE_PERISH_SONG, MOVE_MEAN_LOOK, MOVE_LOVELY_KISS, MOVE_PROTECT}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_IMPISH }, - [476] = { + [FRONTIER_MON_DUSCLOPS_2] = { .species = SPECIES_DUSCLOPS, .moves = {MOVE_TOXIC, MOVE_CONFUSE_RAY, MOVE_DOUBLE_TEAM, MOVE_PROTECT}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_IMPISH }, - [477] = { + [FRONTIER_MON_DODRIO_2] = { .species = SPECIES_DODRIO, .moves = {MOVE_DRILL_PECK, MOVE_DOUBLE_EDGE, MOVE_FAINT_ATTACK, MOVE_PROTECT}, .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [478] = { + [FRONTIER_MON_MR_MIME_2] = { .species = SPECIES_MR_MIME, .moves = {MOVE_BATON_PASS, MOVE_SWAGGER, MOVE_PSYCH_UP, MOVE_PSYCHIC}, .itemTableId = BATTLE_FRONTIER_ITEM_LIECHI_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [479] = { + [FRONTIER_MON_LANTURN_2] = { .species = SPECIES_LANTURN, .moves = {MOVE_FLAIL, MOVE_ENDURE, MOVE_THUNDERBOLT, MOVE_SURF}, .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [480] = { + [FRONTIER_MON_BRELOOM_2] = { .species = SPECIES_BRELOOM, .moves = {MOVE_GIGA_DRAIN, MOVE_LEECH_SEED, MOVE_FOCUS_PUNCH, MOVE_SPORE}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_DOCILE }, - [481] = { + [FRONTIER_MON_FORRETRESS_2] = { .species = SPECIES_FORRETRESS, .moves = {MOVE_EARTHQUAKE, MOVE_DOUBLE_EDGE, MOVE_COUNTER, MOVE_PROTECT}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [482] = { + [FRONTIER_MON_SKARMORY_2] = { .species = SPECIES_SKARMORY, .moves = {MOVE_SPIKES, MOVE_ROAR, MOVE_DRILL_PECK, MOVE_TOXIC}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_CAREFUL }, - [483] = { + [FRONTIER_MON_WHISCASH_2] = { .species = SPECIES_WHISCASH, .moves = {MOVE_SURF, MOVE_EARTHQUAKE, MOVE_SPARK, MOVE_FUTURE_SIGHT}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [484] = { + [FRONTIER_MON_XATU_2] = { .species = SPECIES_XATU, .moves = {MOVE_FLY, MOVE_TOXIC, MOVE_CONFUSE_RAY, MOVE_ATTRACT}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_IMPISH }, - [485] = { + [FRONTIER_MON_CLEFABLE_2] = { .species = SPECIES_CLEFABLE, .moves = {MOVE_METEOR_MASH, MOVE_COSMIC_POWER, MOVE_DOUBLE_TEAM, MOVE_FOLLOW_ME}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [486] = { + [FRONTIER_MON_HARIYAMA_2] = { .species = SPECIES_HARIYAMA, .moves = {MOVE_CROSS_CHOP, MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, MOVE_THUNDER_PUNCH}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_QUIET }, - [487] = { + [FRONTIER_MON_RAICHU_2] = { .species = SPECIES_RAICHU, .moves = {MOVE_THUNDERBOLT, MOVE_REVERSAL, MOVE_ENDURE, MOVE_AGILITY}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [488] = { + [FRONTIER_MON_DEWGONG_2] = { .species = SPECIES_DEWGONG, .moves = {MOVE_BLIZZARD, MOVE_DOUBLE_EDGE, MOVE_ENCORE, MOVE_DISABLE}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [489] = { + [FRONTIER_MON_MANECTRIC_2] = { .species = SPECIES_MANECTRIC, .moves = {MOVE_THUNDER, MOVE_RAIN_DANCE, MOVE_CRUNCH, MOVE_ROAR}, .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [490] = { + [FRONTIER_MON_VILEPLUME_2] = { .species = SPECIES_VILEPLUME, .moves = {MOVE_INGRAIN, MOVE_DOUBLE_TEAM, MOVE_TOXIC, MOVE_GIGA_DRAIN}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_BOLD }, - [491] = { + [FRONTIER_MON_VICTREEBEL_2] = { .species = SPECIES_VICTREEBEL, .moves = {MOVE_GIGA_DRAIN, MOVE_SLUDGE_BOMB, MOVE_SLEEP_POWDER, MOVE_ATTRACT}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_SERIOUS }, - [492] = { + [FRONTIER_MON_ELECTRODE_2] = { .species = SPECIES_ELECTRODE, .moves = {MOVE_THUNDER, MOVE_RAIN_DANCE, MOVE_DOUBLE_TEAM, MOVE_SWAGGER}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [493] = { + [FRONTIER_MON_EXPLOUD_2] = { .species = SPECIES_EXPLOUD, .moves = {MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, MOVE_EARTHQUAKE, MOVE_COUNTER}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_QUIRKY }, - [494] = { + [FRONTIER_MON_SHIFTRY_2] = { .species = SPECIES_SHIFTRY, .moves = {MOVE_LEECH_SEED, MOVE_DIG, MOVE_DOUBLE_TEAM, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_IMPISH }, - [495] = { + [FRONTIER_MON_GLALIE_2] = { .species = SPECIES_GLALIE, .moves = {MOVE_EXPLOSION, MOVE_ENDURE, MOVE_BODY_SLAM, MOVE_ICY_WIND}, .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_QUIRKY }, - [496] = { + [FRONTIER_MON_LUDICOLO_2] = { .species = SPECIES_LUDICOLO, .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_THUNDER_PUNCH, MOVE_FIRE_PUNCH}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [497] = { + [FRONTIER_MON_HYPNO_2] = { .species = SPECIES_HYPNO, .moves = {MOVE_HYPNOSIS, MOVE_NIGHTMARE, MOVE_DREAM_EATER, MOVE_PSYCHIC}, .itemTableId = BATTLE_FRONTIER_ITEM_TWISTED_SPOON, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_MODEST }, - [498] = { + [FRONTIER_MON_GOLEM_2] = { .species = SPECIES_GOLEM, .moves = {MOVE_FOCUS_PUNCH, MOVE_SUBSTITUTE, MOVE_DOUBLE_TEAM, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [499] = { + [FRONTIER_MON_RHYDON_2] = { .species = SPECIES_RHYDON, .moves = {MOVE_EARTHQUAKE, MOVE_HORN_DRILL, MOVE_ROCK_SLIDE, MOVE_BRICK_BREAK}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [500] = { + [FRONTIER_MON_ALAKAZAM_2] = { .species = SPECIES_ALAKAZAM, .moves = {MOVE_PSYCHIC, MOVE_CALM_MIND, MOVE_THUNDER_WAVE, MOVE_RECOVER}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, .nature = NATURE_MODEST }, - [501] = { + [FRONTIER_MON_WEEZING_2] = { .species = SPECIES_WEEZING, .moves = {MOVE_MEMENTO, MOVE_SLUDGE_BOMB, MOVE_FACADE, MOVE_DESTINY_BOND}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [502] = { + [FRONTIER_MON_KANGASKHAN_2] = { .species = SPECIES_KANGASKHAN, .moves = {MOVE_CRUSH_CLAW, MOVE_SHADOW_BALL, MOVE_ATTRACT, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [503] = { + [FRONTIER_MON_ELECTABUZZ_2] = { .species = SPECIES_ELECTABUZZ, .moves = {MOVE_THUNDER, MOVE_RAIN_DANCE, MOVE_ATTRACT, MOVE_FOCUS_PUNCH}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_QUIRKY }, - [504] = { + [FRONTIER_MON_TAUROS_2] = { .species = SPECIES_TAUROS, .moves = {MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_DOUBLE_TEAM, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [505] = { + [FRONTIER_MON_SLOWBRO_2] = { .species = SPECIES_SLOWBRO, .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_CALM_MIND, MOVE_YAWN}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_MODEST }, - [506] = { + [FRONTIER_MON_SLOWKING_2] = { .species = SPECIES_SLOWKING, .moves = {MOVE_YAWN, MOVE_THUNDER_WAVE, MOVE_SURF, MOVE_PSYCHIC}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, .nature = NATURE_MODEST }, - [507] = { + [FRONTIER_MON_MILTANK_2] = { .species = SPECIES_MILTANK, .moves = {MOVE_FOCUS_PUNCH, MOVE_SHADOW_BALL, MOVE_ATTRACT, MOVE_THUNDER_WAVE}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_CAREFUL }, - [508] = { + [FRONTIER_MON_ALTARIA_2] = { .species = SPECIES_ALTARIA, .moves = {MOVE_PERISH_SONG, MOVE_DRAGON_BREATH, MOVE_PURSUIT, MOVE_ATTRACT}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_BOLD }, - [509] = { + [FRONTIER_MON_NIDOQUEEN_2] = { .species = SPECIES_NIDOQUEEN, .moves = {MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE, MOVE_ROCK_SLIDE}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [510] = { + [FRONTIER_MON_NIDOKING_2] = { .species = SPECIES_NIDOKING, .moves = {MOVE_MEGA_KICK, MOVE_EARTHQUAKE, MOVE_SHADOW_BALL, MOVE_BRICK_BREAK}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [511] = { + [FRONTIER_MON_MAGMAR_2] = { .species = SPECIES_MAGMAR, .moves = {MOVE_FIRE_BLAST, MOVE_SMOKESCREEN, MOVE_THUNDER_PUNCH, MOVE_CONFUSE_RAY}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [512] = { + [FRONTIER_MON_CRADILY_2] = { .species = SPECIES_CRADILY, .moves = {MOVE_EARTHQUAKE, MOVE_ANCIENT_POWER, MOVE_SWAGGER, MOVE_PSYCH_UP}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [513] = { + [FRONTIER_MON_ARMALDO_2] = { .species = SPECIES_ARMALDO, .moves = {MOVE_IRON_TAIL, MOVE_ANCIENT_POWER, MOVE_BRICK_BREAK, MOVE_KNOCK_OFF}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [514] = { + [FRONTIER_MON_GOLDUCK_2] = { .species = SPECIES_GOLDUCK, .moves = {MOVE_CROSS_CHOP, MOVE_SURF, MOVE_SWAGGER, MOVE_PSYCH_UP}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_QUIRKY }, - [515] = { + [FRONTIER_MON_RAPIDASH_2] = { .species = SPECIES_RAPIDASH, .moves = {MOVE_FIRE_BLAST, MOVE_BOUNCE, MOVE_DOUBLE_TEAM, MOVE_ATTRACT}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [516] = { + [FRONTIER_MON_MUK_2] = { .species = SPECIES_MUK, .moves = {MOVE_CURSE, MOVE_REST, MOVE_SLUDGE_BOMB, MOVE_DYNAMIC_PUNCH}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [517] = { + [FRONTIER_MON_GENGAR_2] = { .species = SPECIES_GENGAR, .moves = {MOVE_SLUDGE_BOMB, MOVE_SHADOW_BALL, MOVE_CONFUSE_RAY, MOVE_WILL_O_WISP}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [518] = { + [FRONTIER_MON_AMPHAROS_2] = { .species = SPECIES_AMPHAROS, .moves = {MOVE_THUNDER_PUNCH, MOVE_FIRE_PUNCH, MOVE_FOCUS_PUNCH, MOVE_THUNDER_WAVE}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [519] = { + [FRONTIER_MON_SCIZOR_2] = { .species = SPECIES_SCIZOR, .moves = {MOVE_SILVER_WIND, MOVE_STEEL_WING, MOVE_SWORDS_DANCE, MOVE_LIGHT_SCREEN}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [520] = { + [FRONTIER_MON_HERACROSS_2] = { .species = SPECIES_HERACROSS, .moves = {MOVE_MEGAHORN, MOVE_EARTHQUAKE, MOVE_ATTRACT, MOVE_BULK_UP}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, .nature = NATURE_JOLLY }, - [521] = { + [FRONTIER_MON_URSARING_2] = { .species = SPECIES_URSARING, .moves = {MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_BRICK_BREAK, MOVE_COUNTER}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [522] = { + [FRONTIER_MON_HOUNDOOM_2] = { .species = SPECIES_HOUNDOOM, .moves = {MOVE_FIRE_BLAST, MOVE_CRUNCH, MOVE_ROAR, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [523] = { + [FRONTIER_MON_DONPHAN_2] = { .species = SPECIES_DONPHAN, .moves = {MOVE_FLAIL, MOVE_ENDURE, MOVE_EARTHQUAKE, MOVE_ROCK_TOMB}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_JOLLY }, - [524] = { + [FRONTIER_MON_CLAYDOL_2] = { .species = SPECIES_CLAYDOL, .moves = {MOVE_PSYCHIC, MOVE_EARTHQUAKE, MOVE_DOUBLE_TEAM, MOVE_COSMIC_POWER}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_CALM }, - [525] = { + [FRONTIER_MON_WAILORD_2] = { .species = SPECIES_WAILORD, .moves = {MOVE_DOUBLE_EDGE, MOVE_REST, MOVE_CURSE, MOVE_AMNESIA}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [526] = { + [FRONTIER_MON_NINETALES_2] = { .species = SPECIES_NINETALES, .moves = {MOVE_HEAT_WAVE, MOVE_BODY_SLAM, MOVE_GRUDGE, MOVE_SUNNY_DAY}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_QUIRKY }, - [527] = { + [FRONTIER_MON_MACHAMP_2] = { .species = SPECIES_MACHAMP, .moves = {MOVE_CROSS_CHOP, MOVE_EARTHQUAKE, MOVE_BULK_UP, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [528] = { + [FRONTIER_MON_SHUCKLE_2] = { .species = SPECIES_SHUCKLE, .moves = {MOVE_SANDSTORM, MOVE_DIG, MOVE_FLASH, MOVE_DOUBLE_TEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_CAREFUL }, - [529] = { + [FRONTIER_MON_STEELIX_2] = { .species = SPECIES_STEELIX, .moves = {MOVE_EARTHQUAKE, MOVE_DRAGON_BREATH, MOVE_SANDSTORM, MOVE_BLOCK}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [530] = { + [FRONTIER_MON_TENTACRUEL_2] = { .species = SPECIES_TENTACRUEL, .moves = {MOVE_TOXIC, MOVE_GIGA_DRAIN, MOVE_CONFUSE_RAY, MOVE_SURF}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [531] = { + [FRONTIER_MON_AERODACTYL_2] = { .species = SPECIES_AERODACTYL, .moves = {MOVE_HYPER_BEAM, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE, MOVE_ANCIENT_POWER}, .itemTableId = BATTLE_FRONTIER_ITEM_CHOICE_BAND, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [532] = { + [FRONTIER_MON_PORYGON2_2] = { .species = SPECIES_PORYGON2, .moves = {MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, MOVE_THUNDER_WAVE, MOVE_RECOVER}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [533] = { + [FRONTIER_MON_GARDEVOIR_2] = { .species = SPECIES_GARDEVOIR, .moves = {MOVE_PSYCHIC, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [534] = { + [FRONTIER_MON_EXEGGUTOR_2] = { .species = SPECIES_EXEGGUTOR, .moves = {MOVE_RETURN, MOVE_CURSE, MOVE_SLEEP_POWDER, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [535] = { + [FRONTIER_MON_STARMIE_2] = { .species = SPECIES_STARMIE, .moves = {MOVE_HYDRO_PUMP, MOVE_THUNDER, MOVE_RAIN_DANCE, MOVE_RECOVER}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [536] = { + [FRONTIER_MON_FLYGON_2] = { .species = SPECIES_FLYGON, .moves = {MOVE_SOLAR_BEAM, MOVE_FIRE_BLAST, MOVE_CRUNCH, MOVE_SUNNY_DAY}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [537] = { + [FRONTIER_MON_VENUSAUR_2] = { .species = SPECIES_VENUSAUR, .moves = {MOVE_LEECH_SEED, MOVE_GIGA_DRAIN, MOVE_DOUBLE_TEAM, MOVE_LIGHT_SCREEN}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_BOLD }, - [538] = { + [FRONTIER_MON_VAPOREON_2] = { .species = SPECIES_VAPOREON, .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_BODY_SLAM, MOVE_SHADOW_BALL}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [539] = { + [FRONTIER_MON_JOLTEON_2] = { .species = SPECIES_JOLTEON, .moves = {MOVE_THUNDERBOLT, MOVE_DIG, MOVE_DOUBLE_KICK, MOVE_ROAR}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [540] = { + [FRONTIER_MON_FLAREON_2] = { .species = SPECIES_FLAREON, .moves = {MOVE_CURSE, MOVE_ATTRACT, MOVE_DOUBLE_EDGE, MOVE_SHADOW_BALL}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [541] = { + [FRONTIER_MON_MEGANIUM_2] = { .species = SPECIES_MEGANIUM, .moves = {MOVE_LEECH_SEED, MOVE_SUBSTITUTE, MOVE_DOUBLE_TEAM, MOVE_GRASS_WHISTLE}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_CALM }, - [542] = { + [FRONTIER_MON_ESPEON_2] = { .species = SPECIES_ESPEON, .moves = {MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_CALM_MIND, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [543] = { + [FRONTIER_MON_UMBREON_2] = { .species = SPECIES_UMBREON, .moves = {MOVE_CURSE, MOVE_SCREECH, MOVE_DOUBLE_TEAM, MOVE_DOUBLE_EDGE}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [544] = { + [FRONTIER_MON_BLASTOISE_2] = { .species = SPECIES_BLASTOISE, .moves = {MOVE_HYDRO_PUMP, MOVE_MEGA_KICK, MOVE_BRICK_BREAK, MOVE_MIRROR_COAT}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_BRAVE }, - [545] = { + [FRONTIER_MON_FERALIGATR_2] = { .species = SPECIES_FERALIGATR, .moves = {MOVE_SURF, MOVE_DRAGON_CLAW, MOVE_BRICK_BREAK, MOVE_SCARY_FACE}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_SASSY }, - [546] = { + [FRONTIER_MON_AGGRON_2] = { .species = SPECIES_AGGRON, .moves = {MOVE_FOCUS_PUNCH, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_THUNDER_WAVE}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [547] = { + [FRONTIER_MON_BLAZIKEN_2] = { .species = SPECIES_BLAZIKEN, .moves = {MOVE_BLAZE_KICK, MOVE_MEGA_KICK, MOVE_THUNDER_PUNCH, MOVE_BRICK_BREAK}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [548] = { + [FRONTIER_MON_WALREIN_2] = { .species = SPECIES_WALREIN, .moves = {MOVE_EARTHQUAKE, MOVE_ICE_BEAM, MOVE_CURSE, MOVE_DOUBLE_TEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [549] = { + [FRONTIER_MON_SCEPTILE_2] = { .species = SPECIES_SCEPTILE, .moves = {MOVE_LEAF_BLADE, MOVE_THUNDER_PUNCH, MOVE_ATTRACT, MOVE_DOUBLE_TEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [550] = { + [FRONTIER_MON_CHARIZARD_2] = { .species = SPECIES_CHARIZARD, .moves = {MOVE_EARTHQUAKE, MOVE_AERIAL_ACE, MOVE_DRAGON_DANCE, MOVE_SMOKESCREEN}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [551] = { + [FRONTIER_MON_TYPHLOSION_2] = { .species = SPECIES_TYPHLOSION, .moves = {MOVE_FLAMETHROWER, MOVE_THUNDER_PUNCH, MOVE_AERIAL_ACE, MOVE_ROCK_SLIDE}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [552] = { + [FRONTIER_MON_LAPRAS_2] = { .species = SPECIES_LAPRAS, .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_BODY_SLAM, MOVE_ROAR}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_TIMID }, - [553] = { + [FRONTIER_MON_CROBAT_2] = { .species = SPECIES_CROBAT, .moves = {MOVE_TOXIC, MOVE_GIGA_DRAIN, MOVE_CONFUSE_RAY, MOVE_DOUBLE_TEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_CALM }, - [554] = { + [FRONTIER_MON_SWAMPERT_2] = { .species = SPECIES_SWAMPERT, .moves = {MOVE_SURF, MOVE_EARTHQUAKE, MOVE_COUNTER, MOVE_MIRROR_COAT}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [555] = { + [FRONTIER_MON_GYARADOS_2] = { .species = SPECIES_GYARADOS, .moves = {MOVE_HYDRO_PUMP, MOVE_THUNDERBOLT, MOVE_FIRE_BLAST, MOVE_BLIZZARD}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [556] = { + [FRONTIER_MON_SNORLAX_2] = { .species = SPECIES_SNORLAX, .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_CURSE, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [557] = { + [FRONTIER_MON_KINGDRA_2] = { .species = SPECIES_KINGDRA, .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_DRAGON_BREATH, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [558] = { + [FRONTIER_MON_BLISSEY_2] = { .species = SPECIES_BLISSEY, .moves = {MOVE_SEISMIC_TOSS, MOVE_SING, MOVE_ATTRACT, MOVE_SUBSTITUTE}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_BOLD }, - [559] = { + [FRONTIER_MON_MILOTIC_2] = { .species = SPECIES_MILOTIC, .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_SAFEGUARD, MOVE_MIRROR_COAT}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [560] = { + [FRONTIER_MON_ARCANINE_2] = { .species = SPECIES_ARCANINE, .moves = {MOVE_FIRE_BLAST, MOVE_SUNNY_DAY, MOVE_CRUNCH, MOVE_ROAR}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_DOCILE }, - [561] = { + [FRONTIER_MON_SALAMENCE_2] = { .species = SPECIES_SALAMENCE, .moves = {MOVE_DOUBLE_EDGE, MOVE_CRUNCH, MOVE_SWAGGER, MOVE_PROTECT}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [562] = { + [FRONTIER_MON_METAGROSS_2] = { .species = SPECIES_METAGROSS, .moves = {MOVE_EARTHQUAKE, MOVE_METEOR_MASH, MOVE_PSYCH_UP, MOVE_SWAGGER}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [563] = { + [FRONTIER_MON_SLAKING_2] = { .species = SPECIES_SLAKING, .moves = {MOVE_MEGA_KICK, MOVE_SHADOW_BALL, MOVE_YAWN, MOVE_AMNESIA}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_ADAMANT }, - [564] = { + [FRONTIER_MON_DUGTRIO_3] = { .species = SPECIES_DUGTRIO, .moves = {MOVE_EARTHQUAKE, MOVE_DOUBLE_EDGE, MOVE_SLUDGE_BOMB, MOVE_FISSURE}, .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [565] = { + [FRONTIER_MON_MEDICHAM_3] = { .species = SPECIES_MEDICHAM, .moves = {MOVE_DYNAMIC_PUNCH, MOVE_THUNDER_PUNCH, MOVE_ICE_PUNCH, MOVE_FIRE_PUNCH}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_HARDY }, - [566] = { + [FRONTIER_MON_MISDREAVUS_3] = { .species = SPECIES_MISDREAVUS, .moves = {MOVE_PERISH_SONG, MOVE_MEAN_LOOK, MOVE_THUNDER_WAVE, MOVE_CONFUSE_RAY}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_BOLD }, - [567] = { + [FRONTIER_MON_FEAROW_3] = { .species = SPECIES_FEAROW, .moves = {MOVE_DRILL_PECK, MOVE_RETURN, MOVE_STEEL_WING, MOVE_FAINT_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [568] = { + [FRONTIER_MON_GRANBULL_3] = { .species = SPECIES_GRANBULL, .moves = {MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_SLUDGE_BOMB, MOVE_ROCK_SLIDE}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [569] = { + [FRONTIER_MON_JYNX_3] = { .species = SPECIES_JYNX, .moves = {MOVE_DREAM_EATER, MOVE_LOVELY_KISS, MOVE_ATTRACT, MOVE_SUBSTITUTE}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [570] = { + [FRONTIER_MON_DUSCLOPS_3] = { .species = SPECIES_DUSCLOPS, .moves = {MOVE_PSYCH_UP, MOVE_SWAGGER, MOVE_SHADOW_BALL, MOVE_EARTHQUAKE}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [571] = { + [FRONTIER_MON_DODRIO_3] = { .species = SPECIES_DODRIO, .moves = {MOVE_DOUBLE_EDGE, MOVE_DRILL_PECK, MOVE_STEEL_WING, MOVE_FAINT_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [572] = { + [FRONTIER_MON_MR_MIME_3] = { .species = SPECIES_MR_MIME, .moves = {MOVE_TRICK, MOVE_TORMENT, MOVE_PSYCHIC, MOVE_THUNDERBOLT}, .itemTableId = BATTLE_FRONTIER_ITEM_CHOICE_BAND, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [573] = { + [FRONTIER_MON_LANTURN_3] = { .species = SPECIES_LANTURN, .moves = {MOVE_HYDRO_PUMP, MOVE_THUNDER, MOVE_CONFUSE_RAY, MOVE_RAIN_DANCE}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [574] = { + [FRONTIER_MON_BRELOOM_3] = { .species = SPECIES_BRELOOM, .moves = {MOVE_IRON_TAIL, MOVE_FOCUS_PUNCH, MOVE_ATTRACT, MOVE_SPORE}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [575] = { + [FRONTIER_MON_FORRETRESS_3] = { .species = SPECIES_FORRETRESS, .moves = {MOVE_EXPLOSION, MOVE_EARTHQUAKE, MOVE_GIGA_DRAIN, MOVE_ZAP_CANNON}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_QUIET }, - [576] = { + [FRONTIER_MON_WHISCASH_3] = { .species = SPECIES_WHISCASH, .moves = {MOVE_SLEEP_TALK, MOVE_REST, MOVE_SURF, MOVE_FISSURE}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_HARDY }, - [577] = { + [FRONTIER_MON_XATU_3] = { .species = SPECIES_XATU, .moves = {MOVE_DRILL_PECK, MOVE_PSYCHIC, MOVE_GIGA_DRAIN, MOVE_STEEL_WING}, .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_JOLLY }, - [578] = { + [FRONTIER_MON_SKARMORY_3] = { .species = SPECIES_SKARMORY, .moves = {MOVE_TOXIC, MOVE_CURSE, MOVE_REST, MOVE_FLY}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_CAREFUL }, - [579] = { + [FRONTIER_MON_MAROWAK_3] = { .species = SPECIES_MAROWAK, .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_SWORDS_DANCE, MOVE_BRICK_BREAK}, .itemTableId = BATTLE_FRONTIER_ITEM_THICK_CLUB, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [580] = { + [FRONTIER_MON_QUAGSIRE_3] = { .species = SPECIES_QUAGSIRE, .moves = {MOVE_EARTHQUAKE, MOVE_SLUDGE_BOMB, MOVE_DOUBLE_EDGE, MOVE_CURSE}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [581] = { + [FRONTIER_MON_CLEFABLE_3] = { .species = SPECIES_CLEFABLE, .moves = {MOVE_THUNDERBOLT, MOVE_ICE_BEAM, MOVE_FLAMETHROWER, MOVE_MAGICAL_LEAF}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, .nature = NATURE_MODEST }, - [582] = { + [FRONTIER_MON_HARIYAMA_3] = { .species = SPECIES_HARIYAMA, .moves = {MOVE_CROSS_CHOP, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_FACADE}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [583] = { + [FRONTIER_MON_RAICHU_3] = { .species = SPECIES_RAICHU, .moves = {MOVE_THUNDER, MOVE_RAIN_DANCE, MOVE_IRON_TAIL, MOVE_ATTRACT}, .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_DOCILE }, - [584] = { + [FRONTIER_MON_DEWGONG_3] = { .species = SPECIES_DEWGONG, .moves = {MOVE_HORN_DRILL, MOVE_SHEER_COLD, MOVE_SLEEP_TALK, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_BOLD }, - [585] = { + [FRONTIER_MON_MANECTRIC_3] = { .species = SPECIES_MANECTRIC, .moves = {MOVE_THUNDERBOLT, MOVE_IRON_TAIL, MOVE_THUNDER_WAVE, MOVE_ROAR}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_QUIRKY }, - [586] = { + [FRONTIER_MON_VILEPLUME_3] = { .species = SPECIES_VILEPLUME, .moves = {MOVE_ATTRACT, MOVE_STUN_SPORE, MOVE_SLUDGE_BOMB, MOVE_GIGA_DRAIN}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_QUIRKY }, - [587] = { + [FRONTIER_MON_VICTREEBEL_3] = { .species = SPECIES_VICTREEBEL, .moves = {MOVE_STUN_SPORE, MOVE_INGRAIN, MOVE_GIGA_DRAIN, MOVE_SLUDGE_BOMB}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_QUIRKY }, - [588] = { + [FRONTIER_MON_ELECTRODE_3] = { .species = SPECIES_ELECTRODE, .moves = {MOVE_EXPLOSION, MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_ENDURE}, .itemTableId = BATTLE_FRONTIER_ITEM_LIECHI_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_NAUGHTY }, - [589] = { + [FRONTIER_MON_EXPLOUD_3] = { .species = SPECIES_EXPLOUD, .moves = {MOVE_OVERHEAT, MOVE_ICE_BEAM, MOVE_THUNDER_PUNCH, MOVE_EXTRASENSORY}, .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [590] = { + [FRONTIER_MON_SHIFTRY_3] = { .species = SPECIES_SHIFTRY, .moves = {MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, MOVE_EXPLOSION, MOVE_SYNTHESIS}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_QUIRKY }, - [591] = { + [FRONTIER_MON_GLALIE_3] = { .species = SPECIES_GLALIE, .moves = {MOVE_BLIZZARD, MOVE_EARTHQUAKE, MOVE_DOUBLE_EDGE, MOVE_SHADOW_BALL}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [592] = { + [FRONTIER_MON_LUDICOLO_3] = { .species = SPECIES_LUDICOLO, .moves = {MOVE_LEECH_SEED, MOVE_RAIN_DANCE, MOVE_DOUBLE_TEAM, MOVE_GIGA_DRAIN}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_BOLD }, - [593] = { + [FRONTIER_MON_HYPNO_3] = { .species = SPECIES_HYPNO, .moves = {MOVE_PSYCH_UP, MOVE_SWAGGER, MOVE_MEGA_KICK, MOVE_SHADOW_BALL}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [594] = { + [FRONTIER_MON_GOLEM_3] = { .species = SPECIES_GOLEM, .moves = {MOVE_EXPLOSION, MOVE_EARTHQUAKE, MOVE_FLAMETHROWER, MOVE_BRICK_BREAK}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [595] = { + [FRONTIER_MON_RHYDON_3] = { .species = SPECIES_RHYDON, .moves = {MOVE_MEGAHORN, MOVE_CRUSH_CLAW, MOVE_EARTHQUAKE, MOVE_HORN_DRILL}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [596] = { + [FRONTIER_MON_ALAKAZAM_3] = { .species = SPECIES_ALAKAZAM, .moves = {MOVE_TRICK, MOVE_DISABLE, MOVE_PSYCHIC, MOVE_SKILL_SWAP}, .itemTableId = BATTLE_FRONTIER_ITEM_CHOICE_BAND, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, .nature = NATURE_MODEST }, - [597] = { + [FRONTIER_MON_WEEZING_3] = { .species = SPECIES_WEEZING, .moves = {MOVE_EXPLOSION, MOVE_SLUDGE_BOMB, MOVE_FLAMETHROWER, MOVE_THUNDERBOLT}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_QUIRKY }, - [598] = { + [FRONTIER_MON_KANGASKHAN_3] = { .species = SPECIES_KANGASKHAN, .moves = {MOVE_REVERSAL, MOVE_ENDURE, MOVE_THUNDERBOLT, MOVE_EARTHQUAKE}, .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_JOLLY }, - [599] = { + [FRONTIER_MON_ELECTABUZZ_3] = { .species = SPECIES_ELECTABUZZ, .moves = {MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, MOVE_THUNDERBOLT, MOVE_CROSS_CHOP}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_QUIRKY }, - [600] = { + [FRONTIER_MON_TAUROS_3] = { .species = SPECIES_TAUROS, .moves = {MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_FLAMETHROWER, MOVE_ICE_BEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [601] = { + [FRONTIER_MON_SLOWBRO_3] = { .species = SPECIES_SLOWBRO, .moves = {MOVE_SURF, MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_ATTRACT}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK, .nature = NATURE_QUIET }, - [602] = { + [FRONTIER_MON_SLOWKING_3] = { .species = SPECIES_SLOWKING, .moves = {MOVE_PSYCHIC, MOVE_SURF, MOVE_ICE_BEAM, MOVE_EARTHQUAKE}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_QUIET }, - [603] = { + [FRONTIER_MON_MILTANK_3] = { .species = SPECIES_MILTANK, .moves = {MOVE_REVERSAL, MOVE_ENDURE, MOVE_EARTHQUAKE, MOVE_SHADOW_BALL}, .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [604] = { + [FRONTIER_MON_ALTARIA_3] = { .species = SPECIES_ALTARIA, .moves = {MOVE_SING, MOVE_DRAGON_DANCE, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [605] = { + [FRONTIER_MON_NIDOQUEEN_3] = { .species = SPECIES_NIDOQUEEN, .moves = {MOVE_THUNDERBOLT, MOVE_FLAMETHROWER, MOVE_ICE_BEAM, MOVE_CRUNCH}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [606] = { + [FRONTIER_MON_NIDOKING_3] = { .species = SPECIES_NIDOKING, .moves = {MOVE_HORN_DRILL, MOVE_FIRE_BLAST, MOVE_BLIZZARD, MOVE_SURF}, .itemTableId = BATTLE_FRONTIER_ITEM_LEPPA_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [607] = { + [FRONTIER_MON_MAGMAR_3] = { .species = SPECIES_MAGMAR, .moves = {MOVE_MEGA_KICK, MOVE_CROSS_CHOP, MOVE_IRON_TAIL, MOVE_COUNTER}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_IMPISH }, - [608] = { + [FRONTIER_MON_CRADILY_3] = { .species = SPECIES_CRADILY, .moves = {MOVE_SUBSTITUTE, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, MOVE_RECOVER}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, .nature = NATURE_MODEST }, - [609] = { + [FRONTIER_MON_ARMALDO_3] = { .species = SPECIES_ARMALDO, .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_BRICK_BREAK, MOVE_SWORDS_DANCE}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [610] = { + [FRONTIER_MON_GOLDUCK_3] = { .species = SPECIES_GOLDUCK, .moves = {MOVE_HYDRO_PUMP, MOVE_CROSS_CHOP, MOVE_BLIZZARD, MOVE_PROTECT}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [611] = { + [FRONTIER_MON_RAPIDASH_3] = { .species = SPECIES_RAPIDASH, .moves = {MOVE_OVERHEAT, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, MOVE_HYPNOSIS}, .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [612] = { + [FRONTIER_MON_MUK_3] = { .species = SPECIES_MUK, .moves = {MOVE_SLUDGE_BOMB, MOVE_THUNDERBOLT, MOVE_FLAMETHROWER, MOVE_ICE_PUNCH}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, .nature = NATURE_QUIET }, - [613] = { + [FRONTIER_MON_GENGAR_3] = { .species = SPECIES_GENGAR, .moves = {MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_GIGA_DRAIN, MOVE_SKILL_SWAP}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [614] = { + [FRONTIER_MON_AMPHAROS_3] = { .species = SPECIES_AMPHAROS, .moves = {MOVE_THUNDERBOLT, MOVE_MEGA_KICK, MOVE_IRON_TAIL, MOVE_BRICK_BREAK}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [615] = { + [FRONTIER_MON_SCIZOR_3] = { .species = SPECIES_SCIZOR, .moves = {MOVE_REVERSAL, MOVE_ENDURE, MOVE_AGILITY, MOVE_SLASH}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_CAREFUL }, - [616] = { + [FRONTIER_MON_HERACROSS_3] = { .species = SPECIES_HERACROSS, .moves = {MOVE_MEGAHORN, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_BRICK_BREAK}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [617] = { + [FRONTIER_MON_URSARING_3] = { .species = SPECIES_URSARING, .moves = {MOVE_FIRE_PUNCH, MOVE_THUNDER_PUNCH, MOVE_ICE_PUNCH, MOVE_CRUNCH}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [618] = { + [FRONTIER_MON_HOUNDOOM_3] = { .species = SPECIES_HOUNDOOM, .moves = {MOVE_OVERHEAT, MOVE_SHADOW_BALL, MOVE_SLUDGE_BOMB, MOVE_DOUBLE_EDGE}, .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_QUIRKY }, - [619] = { + [FRONTIER_MON_DONPHAN_3] = { .species = SPECIES_DONPHAN, .moves = {MOVE_FISSURE, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_SECRET_POWER}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [620] = { + [FRONTIER_MON_CLAYDOL_3] = { .species = SPECIES_CLAYDOL, .moves = {MOVE_PSYCHIC, MOVE_ICE_BEAM, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [621] = { + [FRONTIER_MON_WAILORD_3] = { .species = SPECIES_WAILORD, .moves = {MOVE_HYDRO_PUMP, MOVE_FISSURE, MOVE_DOUBLE_TEAM, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [622] = { + [FRONTIER_MON_NINETALES_3] = { .species = SPECIES_NINETALES, .moves = {MOVE_FIRE_BLAST, MOVE_IRON_TAIL, MOVE_CONFUSE_RAY, MOVE_ATTRACT}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_QUIRKY }, - [623] = { + [FRONTIER_MON_MACHAMP_3] = { .species = SPECIES_MACHAMP, .moves = {MOVE_CROSS_CHOP, MOVE_FIRE_BLAST, MOVE_THUNDER_PUNCH, MOVE_ICE_PUNCH}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [624] = { + [FRONTIER_MON_SHUCKLE_3] = { .species = SPECIES_SHUCKLE, .moves = {MOVE_SUBSTITUTE, MOVE_ATTRACT, MOVE_TOXIC, MOVE_DOUBLE_TEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_CAREFUL }, - [625] = { + [FRONTIER_MON_STEELIX_3] = { .species = SPECIES_STEELIX, .moves = {MOVE_EARTHQUAKE, MOVE_BODY_SLAM, MOVE_ROCK_SLIDE, MOVE_EXPLOSION}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [626] = { + [FRONTIER_MON_TENTACRUEL_3] = { .species = SPECIES_TENTACRUEL, .moves = {MOVE_SURF, MOVE_GIGA_DRAIN, MOVE_ICE_BEAM, MOVE_MIRROR_COAT}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE, .nature = NATURE_MODEST }, - [627] = { + [FRONTIER_MON_AERODACTYL_3] = { .species = SPECIES_AERODACTYL, .moves = {MOVE_DOUBLE_EDGE, MOVE_ROCK_SLIDE, MOVE_FIRE_BLAST, MOVE_DRAGON_CLAW}, .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [628] = { + [FRONTIER_MON_PORYGON2_3] = { .species = SPECIES_PORYGON2, .moves = {MOVE_PSYCHIC, MOVE_TRI_ATTACK, MOVE_THUNDER_WAVE, MOVE_RECOVER}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [629] = { + [FRONTIER_MON_GARDEVOIR_3] = { .species = SPECIES_GARDEVOIR, .moves = {MOVE_PSYCHIC, MOVE_ICE_PUNCH, MOVE_FIRE_PUNCH, MOVE_MAGICAL_LEAF}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [630] = { + [FRONTIER_MON_EXEGGUTOR_3] = { .species = SPECIES_EXEGGUTOR, .moves = {MOVE_LEECH_SEED, MOVE_GIGA_DRAIN, MOVE_TOXIC, MOVE_EXPLOSION}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [631] = { + [FRONTIER_MON_STARMIE_3] = { .species = SPECIES_STARMIE, .moves = {MOVE_SURF, MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_ICE_BEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [632] = { + [FRONTIER_MON_FLYGON_3] = { .species = SPECIES_FLYGON, .moves = {MOVE_EARTHQUAKE, MOVE_DRAGON_CLAW, MOVE_FLAMETHROWER, MOVE_GIGA_DRAIN}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [633] = { + [FRONTIER_MON_VENUSAUR_3] = { .species = SPECIES_VENUSAUR, .moves = {MOVE_DOUBLE_EDGE, MOVE_SLUDGE_BOMB, MOVE_EARTHQUAKE, MOVE_SLEEP_POWDER}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [634] = { + [FRONTIER_MON_VAPOREON_3] = { .species = SPECIES_VAPOREON, .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_ACID_ARMOR, MOVE_BATON_PASS}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_CALM }, - [635] = { + [FRONTIER_MON_JOLTEON_3] = { .species = SPECIES_JOLTEON, .moves = {MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_AGILITY, MOVE_BATON_PASS}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_BOLD }, - [636] = { + [FRONTIER_MON_FLAREON_3] = { .species = SPECIES_FLAREON, .moves = {MOVE_SHADOW_BALL, MOVE_FLAIL, MOVE_ENDURE, MOVE_OVERHEAT}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_JOLLY }, - [637] = { + [FRONTIER_MON_MEGANIUM_3] = { .species = SPECIES_MEGANIUM, .moves = {MOVE_EARTHQUAKE, MOVE_FLAIL, MOVE_ENDURE, MOVE_GIGA_DRAIN}, .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_JOLLY }, - [638] = { + [FRONTIER_MON_ESPEON_3] = { .species = SPECIES_ESPEON, .moves = {MOVE_PSYCHIC, MOVE_BITE, MOVE_WISH, MOVE_REFLECT}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [639] = { + [FRONTIER_MON_UMBREON_3] = { .species = SPECIES_UMBREON, .moves = {MOVE_SWAGGER, MOVE_PSYCH_UP, MOVE_ATTRACT, MOVE_SHADOW_BALL}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_BOLD }, - [640] = { + [FRONTIER_MON_BLASTOISE_3] = { .species = SPECIES_BLASTOISE, .moves = {MOVE_SURF, MOVE_EARTHQUAKE, MOVE_ICE_BEAM, MOVE_COUNTER}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [641] = { + [FRONTIER_MON_FERALIGATR_3] = { .species = SPECIES_FERALIGATR, .moves = {MOVE_HYDRO_PUMP, MOVE_CRUNCH, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [642] = { + [FRONTIER_MON_AGGRON_3] = { .species = SPECIES_AGGRON, .moves = {MOVE_SURF, MOVE_THUNDER, MOVE_FIRE_BLAST, MOVE_BLIZZARD}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [643] = { + [FRONTIER_MON_BLAZIKEN_3] = { .species = SPECIES_BLAZIKEN, .moves = {MOVE_OVERHEAT, MOVE_EARTHQUAKE, MOVE_ENDURE, MOVE_REVERSAL}, .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [644] = { + [FRONTIER_MON_WALREIN_3] = { .species = SPECIES_WALREIN, .moves = {MOVE_SHEER_COLD, MOVE_FISSURE, MOVE_SURF, MOVE_ATTRACT}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [645] = { + [FRONTIER_MON_SCEPTILE_3] = { .species = SPECIES_SCEPTILE, .moves = {MOVE_LEAF_BLADE, MOVE_EARTHQUAKE, MOVE_CRUSH_CLAW, MOVE_AERIAL_ACE}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [646] = { + [FRONTIER_MON_CHARIZARD_3] = { .species = SPECIES_CHARIZARD, .moves = {MOVE_FLAMETHROWER, MOVE_DRAGON_CLAW, MOVE_BITE, MOVE_BRICK_BREAK}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [647] = { + [FRONTIER_MON_TYPHLOSION_3] = { .species = SPECIES_TYPHLOSION, .moves = {MOVE_EARTHQUAKE, MOVE_OVERHEAT, MOVE_ENDURE, MOVE_REVERSAL}, .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [648] = { + [FRONTIER_MON_LAPRAS_3] = { .species = SPECIES_LAPRAS, .moves = {MOVE_DOUBLE_EDGE, MOVE_PSYCHIC, MOVE_CONFUSE_RAY, MOVE_DRAGON_DANCE}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [649] = { + [FRONTIER_MON_CROBAT_3] = { .species = SPECIES_CROBAT, .moves = {MOVE_AIR_CUTTER, MOVE_DOUBLE_EDGE, MOVE_SHADOW_BALL, MOVE_SCREECH}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [650] = { + [FRONTIER_MON_SWAMPERT_3] = { .species = SPECIES_SWAMPERT, .moves = {MOVE_SURF, MOVE_EARTHQUAKE, MOVE_ICE_BEAM, MOVE_COUNTER}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_BRAVE }, - [651] = { + [FRONTIER_MON_GYARADOS_3] = { .species = SPECIES_GYARADOS, .moves = {MOVE_SURF, MOVE_THUNDER, MOVE_RAIN_DANCE, MOVE_EARTHQUAKE}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_QUIRKY }, - [652] = { + [FRONTIER_MON_SNORLAX_3] = { .species = SPECIES_SNORLAX, .moves = {MOVE_MEGA_KICK, MOVE_SHADOW_BALL, MOVE_SWAGGER, MOVE_PSYCH_UP}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_ADAMANT }, - [653] = { + [FRONTIER_MON_KINGDRA_3] = { .species = SPECIES_KINGDRA, .moves = {MOVE_FLAIL, MOVE_HYDRO_PUMP, MOVE_DRAGON_DANCE, MOVE_ENDURE}, .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [654] = { + [FRONTIER_MON_BLISSEY_3] = { .species = SPECIES_BLISSEY, .moves = {MOVE_FIRE_BLAST, MOVE_BLIZZARD, MOVE_CALM_MIND, MOVE_SOFT_BOILED}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_BOLD }, - [655] = { + [FRONTIER_MON_MILOTIC_3] = { .species = SPECIES_MILOTIC, .moves = {MOVE_SURF, MOVE_BLIZZARD, MOVE_ATTRACT, MOVE_RECOVER}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_BOLD }, - [656] = { + [FRONTIER_MON_ARCANINE_3] = { .species = SPECIES_ARCANINE, .moves = {MOVE_OVERHEAT, MOVE_EXTREME_SPEED, MOVE_CRUNCH, MOVE_AERIAL_ACE}, .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [657] = { + [FRONTIER_MON_SALAMENCE_3] = { .species = SPECIES_SALAMENCE, .moves = {MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_CRUNCH, MOVE_ENDURE}, .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [658] = { + [FRONTIER_MON_METAGROSS_3] = { .species = SPECIES_METAGROSS, .moves = {MOVE_EARTHQUAKE, MOVE_METEOR_MASH, MOVE_DOUBLE_TEAM, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [659] = { + [FRONTIER_MON_SLAKING_3] = { .species = SPECIES_SLAKING, .moves = {MOVE_EARTHQUAKE, MOVE_SHADOW_BALL, MOVE_AERIAL_ACE, MOVE_BRICK_BREAK}, .itemTableId = BATTLE_FRONTIER_ITEM_CHOICE_BAND, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_ADAMANT }, - [660] = { + [FRONTIER_MON_DUGTRIO_4] = { .species = SPECIES_DUGTRIO, .moves = {MOVE_EARTHQUAKE, MOVE_DOUBLE_EDGE, MOVE_ROCK_SLIDE, MOVE_FISSURE}, .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [661] = { + [FRONTIER_MON_MEDICHAM_4] = { .species = SPECIES_MEDICHAM, .moves = {MOVE_MEGA_KICK, MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_ROCK_SLIDE}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [662] = { + [FRONTIER_MON_MISDREAVUS_4] = { .species = SPECIES_MISDREAVUS, .moves = {MOVE_DESTINY_BOND, MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_THUNDERBOLT}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_TIMID }, - [663] = { + [FRONTIER_MON_FEAROW_4] = { .species = SPECIES_FEAROW, .moves = {MOVE_DRILL_PECK, MOVE_DOUBLE_EDGE, MOVE_STEEL_WING, MOVE_SKY_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [664] = { + [FRONTIER_MON_GRANBULL_4] = { .species = SPECIES_GRANBULL, .moves = {MOVE_MEGA_KICK, MOVE_EARTHQUAKE, MOVE_CRUNCH, MOVE_SHADOW_BALL}, .itemTableId = BATTLE_FRONTIER_ITEM_CHOICE_BAND, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_BRAVE }, - [665] = { + [FRONTIER_MON_JYNX_4] = { .species = SPECIES_JYNX, .moves = {MOVE_PSYCHIC, MOVE_ICE_BEAM, MOVE_LOVELY_KISS, MOVE_FAKE_TEARS}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [666] = { + [FRONTIER_MON_DUSCLOPS_4] = { .species = SPECIES_DUSCLOPS, .moves = {MOVE_DOUBLE_EDGE, MOVE_SHADOW_BALL, MOVE_CURSE, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [667] = { + [FRONTIER_MON_DODRIO_4] = { .species = SPECIES_DODRIO, .moves = {MOVE_FLAIL, MOVE_ENDURE, MOVE_DRILL_PECK, MOVE_FACADE}, .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [668] = { + [FRONTIER_MON_MR_MIME_4] = { .species = SPECIES_MR_MIME, .moves = {MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_ICE_PUNCH, MOVE_FIRE_PUNCH}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [669] = { + [FRONTIER_MON_LANTURN_4] = { .species = SPECIES_LANTURN, .moves = {MOVE_SURF, MOVE_THUNDERBOLT, MOVE_ICE_BEAM, MOVE_CONFUSE_RAY}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [670] = { + [FRONTIER_MON_BRELOOM_4] = { .species = SPECIES_BRELOOM, .moves = {MOVE_FOCUS_PUNCH, MOVE_SLUDGE_BOMB, MOVE_SPORE, MOVE_DOUBLE_TEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [671] = { + [FRONTIER_MON_FORRETRESS_4] = { .species = SPECIES_FORRETRESS, .moves = {MOVE_EXPLOSION, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_DOUBLE_EDGE}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [672] = { + [FRONTIER_MON_WHISCASH_4] = { .species = SPECIES_WHISCASH, .moves = {MOVE_FISSURE, MOVE_SURF, MOVE_EARTHQUAKE, MOVE_ICE_BEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_QUIET }, - [673] = { + [FRONTIER_MON_XATU_4] = { .species = SPECIES_XATU, .moves = {MOVE_PSYCHIC, MOVE_DRILL_PECK, MOVE_SHADOW_BALL, MOVE_CONFUSE_RAY}, .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [674] = { + [FRONTIER_MON_SKARMORY_4] = { .species = SPECIES_SKARMORY, .moves = {MOVE_DRILL_PECK, MOVE_STEEL_WING, MOVE_COUNTER, MOVE_ROCK_SLIDE}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [675] = { + [FRONTIER_MON_MAROWAK_4] = { .species = SPECIES_MAROWAK, .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_SWORDS_DANCE, MOVE_MEGA_KICK}, .itemTableId = BATTLE_FRONTIER_ITEM_THICK_CLUB, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [676] = { + [FRONTIER_MON_QUAGSIRE_4] = { .species = SPECIES_QUAGSIRE, .moves = {MOVE_SURF, MOVE_EARTHQUAKE, MOVE_ICE_BEAM, MOVE_AMNESIA}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_SASSY }, - [677] = { + [FRONTIER_MON_CLEFABLE_4] = { .species = SPECIES_CLEFABLE, .moves = {MOVE_MEGA_KICK, MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_SOFT_BOILED}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [678] = { + [FRONTIER_MON_HARIYAMA_4] = { .species = SPECIES_HARIYAMA, .moves = {MOVE_CROSS_CHOP, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_FAKE_OUT}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [679] = { + [FRONTIER_MON_RAICHU_4] = { .species = SPECIES_RAICHU, .moves = {MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_PROTECT, MOVE_MEGA_KICK}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [680] = { + [FRONTIER_MON_DEWGONG_4] = { .species = SPECIES_DEWGONG, .moves = {MOVE_SHEER_COLD, MOVE_ICE_BEAM, MOVE_SURF, MOVE_SIGNAL_BEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [681] = { + [FRONTIER_MON_MANECTRIC_4] = { .species = SPECIES_MANECTRIC, .moves = {MOVE_THUNDERBOLT, MOVE_CRUNCH, MOVE_THUNDER_WAVE, MOVE_ROAR}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [682] = { + [FRONTIER_MON_VILEPLUME_4] = { .species = SPECIES_VILEPLUME, .moves = {MOVE_SOLAR_BEAM, MOVE_SLUDGE_BOMB, MOVE_SUNNY_DAY, MOVE_SYNTHESIS}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_QUIET }, - [683] = { + [FRONTIER_MON_VICTREEBEL_4] = { .species = SPECIES_VICTREEBEL, .moves = {MOVE_GIGA_DRAIN, MOVE_DOUBLE_EDGE, MOVE_SLUDGE_BOMB, MOVE_SYNTHESIS}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_QUIRKY }, - [684] = { + [FRONTIER_MON_ELECTRODE_4] = { .species = SPECIES_ELECTRODE, .moves = {MOVE_EXPLOSION, MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_MIRROR_COAT}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_NAUGHTY }, - [685] = { + [FRONTIER_MON_EXPLOUD_4] = { .species = SPECIES_EXPLOUD, .moves = {MOVE_MEGA_KICK, MOVE_EARTHQUAKE, MOVE_SHADOW_BALL, MOVE_OVERHEAT}, .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [686] = { + [FRONTIER_MON_SHIFTRY_4] = { .species = SPECIES_SHIFTRY, .moves = {MOVE_EXPLOSION, MOVE_GIGA_DRAIN, MOVE_MEGA_KICK, MOVE_FAKE_OUT}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [687] = { + [FRONTIER_MON_GLALIE_4] = { .species = SPECIES_GLALIE, .moves = {MOVE_ICE_BEAM, MOVE_EARTHQUAKE, MOVE_CRUNCH, MOVE_SHADOW_BALL}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [688] = { + [FRONTIER_MON_LUDICOLO_4] = { .species = SPECIES_LUDICOLO, .moves = {MOVE_LEECH_SEED, MOVE_RAIN_DANCE, MOVE_DOUBLE_TEAM, MOVE_TOXIC}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_BOLD }, - [689] = { + [FRONTIER_MON_HYPNO_4] = { .species = SPECIES_HYPNO, .moves = {MOVE_PSYCHIC, MOVE_THUNDER_PUNCH, MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [690] = { + [FRONTIER_MON_GOLEM_4] = { .species = SPECIES_GOLEM, .moves = {MOVE_EXPLOSION, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_DOUBLE_EDGE}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [691] = { + [FRONTIER_MON_RHYDON_4] = { .species = SPECIES_RHYDON, .moves = {MOVE_MEGAHORN, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_HORN_DRILL}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [692] = { + [FRONTIER_MON_ALAKAZAM_4] = { .species = SPECIES_ALAKAZAM, .moves = {MOVE_PSYCHIC, MOVE_THUNDER_PUNCH, MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, .nature = NATURE_MODEST }, - [693] = { + [FRONTIER_MON_WEEZING_4] = { .species = SPECIES_WEEZING, .moves = {MOVE_EXPLOSION, MOVE_SLUDGE_BOMB, MOVE_FRUSTRATION, MOVE_SHADOW_BALL}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [694] = { + [FRONTIER_MON_KANGASKHAN_4] = { .species = SPECIES_KANGASKHAN, .moves = {MOVE_MEGA_KICK, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE, MOVE_SHADOW_BALL}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [695] = { + [FRONTIER_MON_ELECTABUZZ_4] = { .species = SPECIES_ELECTABUZZ, .moves = {MOVE_THUNDERBOLT, MOVE_PSYCHIC, MOVE_MEGA_KICK, MOVE_CROSS_CHOP}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [696] = { + [FRONTIER_MON_TAUROS_4] = { .species = SPECIES_TAUROS, .moves = {MOVE_DOUBLE_EDGE, MOVE_ROCK_TOMB, MOVE_THUNDERBOLT, MOVE_SURF}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [697] = { + [FRONTIER_MON_SLOWBRO_4] = { .species = SPECIES_SLOWBRO, .moves = {MOVE_PSYCHIC, MOVE_SURF, MOVE_EARTHQUAKE, MOVE_ICE_BEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK, .nature = NATURE_SASSY }, - [698] = { + [FRONTIER_MON_SLOWKING_4] = { .species = SPECIES_SLOWKING, .moves = {MOVE_PSYCHIC, MOVE_SURF, MOVE_ICE_BEAM, MOVE_FLAMETHROWER}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, .nature = NATURE_MODEST }, - [699] = { + [FRONTIER_MON_MILTANK_4] = { .species = SPECIES_MILTANK, .moves = {MOVE_DOUBLE_EDGE, MOVE_CURSE, MOVE_DOUBLE_TEAM, MOVE_MILK_DRINK}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [700] = { + [FRONTIER_MON_ALTARIA_4] = { .species = SPECIES_ALTARIA, .moves = {MOVE_DRAGON_CLAW, MOVE_EARTHQUAKE, MOVE_FLAMETHROWER, MOVE_ICE_BEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [701] = { + [FRONTIER_MON_NIDOQUEEN_4] = { .species = SPECIES_NIDOQUEEN, .moves = {MOVE_SUPERPOWER, MOVE_SLUDGE_BOMB, MOVE_EARTHQUAKE, MOVE_SHADOW_BALL}, .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [702] = { + [FRONTIER_MON_NIDOKING_4] = { .species = SPECIES_NIDOKING, .moves = {MOVE_MEGAHORN, MOVE_SLUDGE_BOMB, MOVE_EARTHQUAKE, MOVE_THUNDER}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [703] = { + [FRONTIER_MON_MAGMAR_4] = { .species = SPECIES_MAGMAR, .moves = {MOVE_FLAMETHROWER, MOVE_PSYCHIC, MOVE_CROSS_CHOP, MOVE_CONFUSE_RAY}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [704] = { + [FRONTIER_MON_CRADILY_4] = { .species = SPECIES_CRADILY, .moves = {MOVE_TOXIC, MOVE_INGRAIN, MOVE_MIRROR_COAT, MOVE_GIGA_DRAIN}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_BOLD }, - [705] = { + [FRONTIER_MON_ARMALDO_4] = { .species = SPECIES_ARMALDO, .moves = {MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE, MOVE_ROCK_SLIDE}, .itemTableId = BATTLE_FRONTIER_ITEM_CHOICE_BAND, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [706] = { + [FRONTIER_MON_GOLDUCK_4] = { .species = SPECIES_GOLDUCK, .moves = {MOVE_SURF, MOVE_CROSS_CHOP, MOVE_ICE_BEAM, MOVE_AERIAL_ACE}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [707] = { + [FRONTIER_MON_RAPIDASH_4] = { .species = SPECIES_RAPIDASH, .moves = {MOVE_OVERHEAT, MOVE_DOUBLE_EDGE, MOVE_IRON_TAIL, MOVE_DOUBLE_KICK}, .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [708] = { + [FRONTIER_MON_MUK_4] = { .species = SPECIES_MUK, .moves = {MOVE_SLUDGE_BOMB, MOVE_BRICK_BREAK, MOVE_GIGA_DRAIN, MOVE_EXPLOSION}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_BRAVE }, - [709] = { + [FRONTIER_MON_GENGAR_4] = { .species = SPECIES_GENGAR, .moves = {MOVE_PSYCHIC, MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, MOVE_DESTINY_BOND}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [710] = { + [FRONTIER_MON_AMPHAROS_4] = { .species = SPECIES_AMPHAROS, .moves = {MOVE_THUNDERBOLT, MOVE_FIRE_PUNCH, MOVE_THUNDER_WAVE, MOVE_REFLECT}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, .nature = NATURE_MODEST }, - [711] = { + [FRONTIER_MON_SCIZOR_4] = { .species = SPECIES_SCIZOR, .moves = {MOVE_SILVER_WIND, MOVE_SWORDS_DANCE, MOVE_AGILITY, MOVE_BATON_PASS}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_CAREFUL }, - [712] = { + [FRONTIER_MON_HERACROSS_4] = { .species = SPECIES_HERACROSS, .moves = {MOVE_MEGAHORN, MOVE_EARTHQUAKE, MOVE_REVERSAL, MOVE_ENDURE}, .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [713] = { + [FRONTIER_MON_URSARING_4] = { .species = SPECIES_URSARING, .moves = {MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_AERIAL_ACE}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [714] = { + [FRONTIER_MON_HOUNDOOM_4] = { .species = SPECIES_HOUNDOOM, .moves = {MOVE_OVERHEAT, MOVE_SOLAR_BEAM, MOVE_CRUNCH, MOVE_SUNNY_DAY}, .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [715] = { + [FRONTIER_MON_DONPHAN_4] = { .species = SPECIES_DONPHAN, .moves = {MOVE_FISSURE, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_IRON_TAIL}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [716] = { + [FRONTIER_MON_CLAYDOL_4] = { .species = SPECIES_CLAYDOL, .moves = {MOVE_PSYCHIC, MOVE_EARTHQUAKE, MOVE_SHADOW_BALL, MOVE_EXPLOSION}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [717] = { + [FRONTIER_MON_WAILORD_4] = { .species = SPECIES_WAILORD, .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_EARTHQUAKE, MOVE_FISSURE}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [718] = { + [FRONTIER_MON_NINETALES_4] = { .species = SPECIES_NINETALES, .moves = {MOVE_OVERHEAT, MOVE_DOUBLE_EDGE, MOVE_CONFUSE_RAY, MOVE_WILL_O_WISP}, .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_QUIRKY }, - [719] = { + [FRONTIER_MON_MACHAMP_4] = { .species = SPECIES_MACHAMP, .moves = {MOVE_CROSS_CHOP, MOVE_EARTHQUAKE, MOVE_FLAMETHROWER, MOVE_ROCK_SLIDE}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [720] = { + [FRONTIER_MON_SHUCKLE_4] = { .species = SPECIES_SHUCKLE, .moves = {MOVE_TOXIC, MOVE_DOUBLE_TEAM, MOVE_WRAP, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_CAREFUL }, - [721] = { + [FRONTIER_MON_STEELIX_4] = { .species = SPECIES_STEELIX, .moves = {MOVE_EARTHQUAKE, MOVE_IRON_TAIL, MOVE_DOUBLE_EDGE, MOVE_EXPLOSION}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [722] = { + [FRONTIER_MON_TENTACRUEL_4] = { .species = SPECIES_TENTACRUEL, .moves = {MOVE_HYDRO_PUMP, MOVE_SLUDGE_BOMB, MOVE_ICE_BEAM, MOVE_MIRROR_COAT}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_QUIRKY }, - [723] = { + [FRONTIER_MON_AERODACTYL_4] = { .species = SPECIES_AERODACTYL, .moves = {MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_FIRE_BLAST, MOVE_BITE}, .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [724] = { + [FRONTIER_MON_PORYGON2_4] = { .species = SPECIES_PORYGON2, .moves = {MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_ICE_BEAM, MOVE_RECOVER}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [725] = { + [FRONTIER_MON_GARDEVOIR_4] = { .species = SPECIES_GARDEVOIR, .moves = {MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_ICE_PUNCH, MOVE_FIRE_PUNCH}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [726] = { + [FRONTIER_MON_EXEGGUTOR_4] = { .species = SPECIES_EXEGGUTOR, .moves = {MOVE_PSYCHIC, MOVE_GIGA_DRAIN, MOVE_SLUDGE_BOMB, MOVE_EXPLOSION}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [727] = { + [FRONTIER_MON_STARMIE_4] = { .species = SPECIES_STARMIE, .moves = {MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_ICE_BEAM, MOVE_RECOVER}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [728] = { + [FRONTIER_MON_FLYGON_4] = { .species = SPECIES_FLYGON, .moves = {MOVE_EARTHQUAKE, MOVE_DRAGON_CLAW, MOVE_DOUBLE_EDGE, MOVE_CRUNCH}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [729] = { + [FRONTIER_MON_VENUSAUR_4] = { .species = SPECIES_VENUSAUR, .moves = {MOVE_SOLAR_BEAM, MOVE_SLUDGE_BOMB, MOVE_SUNNY_DAY, MOVE_EARTHQUAKE}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [730] = { + [FRONTIER_MON_VAPOREON_4] = { .species = SPECIES_VAPOREON, .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_ACID_ARMOR, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_CALM }, - [731] = { + [FRONTIER_MON_JOLTEON_4] = { .species = SPECIES_JOLTEON, .moves = {MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_BITE, MOVE_SHADOW_BALL}, .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_TIMID }, - [732] = { + [FRONTIER_MON_FLAREON_4] = { .species = SPECIES_FLAREON, .moves = {MOVE_OVERHEAT, MOVE_SUNNY_DAY, MOVE_DOUBLE_EDGE, MOVE_SHADOW_BALL}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_QUIET }, - [733] = { + [FRONTIER_MON_MEGANIUM_4] = { .species = SPECIES_MEGANIUM, .moves = {MOVE_GIGA_DRAIN, MOVE_EARTHQUAKE, MOVE_ANCIENT_POWER, MOVE_BODY_SLAM}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [734] = { + [FRONTIER_MON_ESPEON_4] = { .species = SPECIES_ESPEON, .moves = {MOVE_PSYCHIC, MOVE_BITE, MOVE_ATTRACT, MOVE_CALM_MIND}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [735] = { + [FRONTIER_MON_UMBREON_4] = { .species = SPECIES_UMBREON, .moves = {MOVE_CONFUSE_RAY, MOVE_TOXIC, MOVE_FAINT_ATTACK, MOVE_DOUBLE_TEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_BOLD }, - [736] = { + [FRONTIER_MON_BLASTOISE_4] = { .species = SPECIES_BLASTOISE, .moves = {MOVE_SURF, MOVE_EARTHQUAKE, MOVE_ICE_BEAM, MOVE_MIRROR_COAT}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [737] = { + [FRONTIER_MON_FERALIGATR_4] = { .species = SPECIES_FERALIGATR, .moves = {MOVE_HYDRO_PUMP, MOVE_ICE_BEAM, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [738] = { + [FRONTIER_MON_AGGRON_4] = { .species = SPECIES_AGGRON, .moves = {MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_AERIAL_ACE}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [739] = { + [FRONTIER_MON_BLAZIKEN_4] = { .species = SPECIES_BLAZIKEN, .moves = {MOVE_OVERHEAT, MOVE_EARTHQUAKE, MOVE_THUNDER_PUNCH, MOVE_ROCK_SLIDE}, .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [740] = { + [FRONTIER_MON_WALREIN_4] = { .species = SPECIES_WALREIN, .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_EARTHQUAKE, MOVE_SHEER_COLD}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_QUIET }, - [741] = { + [FRONTIER_MON_SCEPTILE_4] = { .species = SPECIES_SCEPTILE, .moves = {MOVE_LEAF_BLADE, MOVE_DRAGON_CLAW, MOVE_CRUNCH, MOVE_THUNDER_PUNCH}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [742] = { + [FRONTIER_MON_CHARIZARD_4] = { .species = SPECIES_CHARIZARD, .moves = {MOVE_OVERHEAT, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE, MOVE_ROCK_SLIDE}, .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [743] = { + [FRONTIER_MON_TYPHLOSION_4] = { .species = SPECIES_TYPHLOSION, .moves = {MOVE_OVERHEAT, MOVE_THUNDER_PUNCH, MOVE_EARTHQUAKE, MOVE_CRUSH_CLAW}, .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [744] = { + [FRONTIER_MON_LAPRAS_4] = { .species = SPECIES_LAPRAS, .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_THUNDERBOLT, MOVE_PSYCHIC}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [745] = { + [FRONTIER_MON_CROBAT_4] = { .species = SPECIES_CROBAT, .moves = {MOVE_SLUDGE_BOMB, MOVE_AERIAL_ACE, MOVE_SHADOW_BALL, MOVE_CONFUSE_RAY}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [746] = { + [FRONTIER_MON_SWAMPERT_4] = { .species = SPECIES_SWAMPERT, .moves = {MOVE_SURF, MOVE_EARTHQUAKE, MOVE_ICE_BEAM, MOVE_MIRROR_COAT}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_QUIET }, - [747] = { + [FRONTIER_MON_GYARADOS_4] = { .species = SPECIES_GYARADOS, .moves = {MOVE_RETURN, MOVE_EARTHQUAKE, MOVE_DRAGON_DANCE, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [748] = { + [FRONTIER_MON_SNORLAX_4] = { .species = SPECIES_SNORLAX, .moves = {MOVE_DOUBLE_EDGE, MOVE_SHADOW_BALL, MOVE_BRICK_BREAK, MOVE_CURSE}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [749] = { + [FRONTIER_MON_KINGDRA_4] = { .species = SPECIES_KINGDRA, .moves = {MOVE_DOUBLE_EDGE, MOVE_ICE_BEAM, MOVE_DRAGON_DANCE, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [750] = { + [FRONTIER_MON_BLISSEY_4] = { .species = SPECIES_BLISSEY, .moves = {MOVE_ICE_BEAM, MOVE_CALM_MIND, MOVE_COUNTER, MOVE_SOFT_BOILED}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_BOLD }, - [751] = { + [FRONTIER_MON_MILOTIC_4] = { .species = SPECIES_MILOTIC, .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_RECOVER, MOVE_MIRROR_COAT}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, .nature = NATURE_MODEST }, - [752] = { + [FRONTIER_MON_ARCANINE_4] = { .species = SPECIES_ARCANINE, .moves = {MOVE_OVERHEAT, MOVE_EXTREME_SPEED, MOVE_CRUNCH, MOVE_DOUBLE_EDGE}, .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_DOCILE }, - [753] = { + [FRONTIER_MON_SALAMENCE_4] = { .species = SPECIES_SALAMENCE, .moves = {MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE, MOVE_DRAGON_DANCE}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [754] = { + [FRONTIER_MON_METAGROSS_4] = { .species = SPECIES_METAGROSS, .moves = {MOVE_METEOR_MASH, MOVE_PSYCHIC, MOVE_EARTHQUAKE, MOVE_SHADOW_BALL}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [755] = { + [FRONTIER_MON_SLAKING_4] = { .species = SPECIES_SLAKING, .moves = {MOVE_THUNDERBOLT, MOVE_FLAMETHROWER, MOVE_ICE_BEAM, MOVE_YAWN}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK, .nature = NATURE_MODEST }, - [756] = { + [FRONTIER_MON_ARTICUNO_1] = { .species = SPECIES_ARTICUNO, .moves = {MOVE_ICE_BEAM, MOVE_WATER_PULSE, MOVE_ICY_WIND, MOVE_ROAR}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [757] = { + [FRONTIER_MON_ZAPDOS_1] = { .species = SPECIES_ZAPDOS, .moves = {MOVE_THUNDERBOLT, MOVE_DRILL_PECK, MOVE_THUNDER_WAVE, MOVE_ROAR}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_DOCILE }, - [758] = { + [FRONTIER_MON_MOLTRES_1] = { .species = SPECIES_MOLTRES, .moves = {MOVE_FLAMETHROWER, MOVE_AERIAL_ACE, MOVE_MUD_SLAP, MOVE_ROAR}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [759] = { + [FRONTIER_MON_RAIKOU_1] = { .species = SPECIES_RAIKOU, .moves = {MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_CALM_MIND, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [760] = { + [FRONTIER_MON_ENTEI_1] = { .species = SPECIES_ENTEI, .moves = {MOVE_FLAMETHROWER, MOVE_DOUBLE_TEAM, MOVE_CALM_MIND, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [761] = { + [FRONTIER_MON_SUICUNE_1] = { .species = SPECIES_SUICUNE, .moves = {MOVE_SURF, MOVE_DOUBLE_TEAM, MOVE_CALM_MIND, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [762] = { + [FRONTIER_MON_REGIROCK_1] = { .species = SPECIES_REGIROCK, .moves = {MOVE_SUPERPOWER, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_EXPLOSION}, .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [763] = { + [FRONTIER_MON_REGICE_1] = { .species = SPECIES_REGICE, .moves = {MOVE_ICE_BEAM, MOVE_THUNDERBOLT, MOVE_AMNESIA, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [764] = { + [FRONTIER_MON_REGISTEEL_1] = { .species = SPECIES_REGISTEEL, .moves = {MOVE_METAL_CLAW, MOVE_CURSE, MOVE_AMNESIA, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [765] = { + [FRONTIER_MON_LATIAS_1] = { .species = SPECIES_LATIAS, .moves = {MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_ICE_BEAM, MOVE_DRAGON_CLAW}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [766] = { + [FRONTIER_MON_LATIOS_1] = { .species = SPECIES_LATIOS, .moves = {MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_ICE_BEAM, MOVE_DRAGON_CLAW}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [767] = { + [FRONTIER_MON_ARTICUNO_2] = { .species = SPECIES_ARTICUNO, .moves = {MOVE_SUBSTITUTE, MOVE_TOXIC, MOVE_BLIZZARD, MOVE_DOUBLE_TEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_IMPISH }, - [768] = { + [FRONTIER_MON_ZAPDOS_2] = { .species = SPECIES_ZAPDOS, .moves = {MOVE_THUNDER, MOVE_RAIN_DANCE, MOVE_DRILL_PECK, MOVE_DOUBLE_TEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [769] = { + [FRONTIER_MON_MOLTRES_2] = { .species = SPECIES_MOLTRES, .moves = {MOVE_OVERHEAT, MOVE_AERIAL_ACE, MOVE_DOUBLE_TEAM, MOVE_PROTECT}, .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [770] = { + [FRONTIER_MON_RAIKOU_2] = { .species = SPECIES_RAIKOU, .moves = {MOVE_THUNDER, MOVE_RAIN_DANCE, MOVE_DOUBLE_TEAM, MOVE_REFLECT}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [771] = { + [FRONTIER_MON_ENTEI_2] = { .species = SPECIES_ENTEI, .moves = {MOVE_FIRE_BLAST, MOVE_SUNNY_DAY, MOVE_SOLAR_BEAM, MOVE_REFLECT}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [772] = { + [FRONTIER_MON_SUICUNE_2] = { .species = SPECIES_SUICUNE, .moves = {MOVE_TOXIC, MOVE_DIVE, MOVE_DOUBLE_TEAM, MOVE_PROTECT}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_CALM }, - [773] = { + [FRONTIER_MON_REGIROCK_2] = { .species = SPECIES_REGIROCK, .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_COUNTER, MOVE_EXPLOSION}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [774] = { + [FRONTIER_MON_REGICE_2] = { .species = SPECIES_REGICE, .moves = {MOVE_THUNDER, MOVE_RAIN_DANCE, MOVE_BLIZZARD, MOVE_BRICK_BREAK}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIET }, - [775] = { + [FRONTIER_MON_REGISTEEL_2] = { .species = SPECIES_REGISTEEL, .moves = {MOVE_THUNDERBOLT, MOVE_ICE_PUNCH, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIET }, - [776] = { + [FRONTIER_MON_LATIAS_2] = { .species = SPECIES_LATIAS, .moves = {MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_ICE_BEAM, MOVE_EARTHQUAKE}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [777] = { + [FRONTIER_MON_LATIOS_2] = { .species = SPECIES_LATIOS, .moves = {MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_ICE_BEAM, MOVE_EARTHQUAKE}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [778] = { + [FRONTIER_MON_ARTICUNO_3] = { .species = SPECIES_ARTICUNO, .moves = {MOVE_ICE_BEAM, MOVE_FACADE, MOVE_AERIAL_ACE, MOVE_PROTECT}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [779] = { + [FRONTIER_MON_ZAPDOS_3] = { .species = SPECIES_ZAPDOS, .moves = {MOVE_THUNDERBOLT, MOVE_DRILL_PECK, MOVE_THUNDER_WAVE, MOVE_SUBSTITUTE}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [780] = { + [FRONTIER_MON_MOLTRES_3] = { .species = SPECIES_MOLTRES, .moves = {MOVE_FIRE_BLAST, MOVE_SUNNY_DAY, MOVE_DOUBLE_TEAM, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [781] = { + [FRONTIER_MON_RAIKOU_3] = { .species = SPECIES_RAIKOU, .moves = {MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_QUICK_ATTACK, MOVE_ROAR}, .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [782] = { + [FRONTIER_MON_ENTEI_3] = { .species = SPECIES_ENTEI, .moves = {MOVE_FLAMETHROWER, MOVE_DOUBLE_EDGE, MOVE_SWAGGER, MOVE_PSYCH_UP}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [783] = { + [FRONTIER_MON_SUICUNE_3] = { .species = SPECIES_SUICUNE, .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_RAIN_DANCE, MOVE_ROAR}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [784] = { + [FRONTIER_MON_REGIROCK_3] = { .species = SPECIES_REGIROCK, .moves = {MOVE_ROCK_SLIDE, MOVE_EARTHQUAKE, MOVE_CURSE, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [785] = { + [FRONTIER_MON_REGICE_3] = { .species = SPECIES_REGICE, .moves = {MOVE_ICE_BEAM, MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_EXPLOSION}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIET }, - [786] = { + [FRONTIER_MON_REGISTEEL_3] = { .species = SPECIES_REGISTEEL, .moves = {MOVE_ANCIENT_POWER, MOVE_AMNESIA, MOVE_COUNTER, MOVE_EXPLOSION}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [787] = { + [FRONTIER_MON_LATIAS_3] = { .species = SPECIES_LATIAS, .moves = {MOVE_DRAGON_CLAW, MOVE_THUNDERBOLT, MOVE_ICE_BEAM, MOVE_EARTHQUAKE}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [788] = { + [FRONTIER_MON_LATIOS_3] = { .species = SPECIES_LATIOS, .moves = {MOVE_DRAGON_CLAW, MOVE_THUNDERBOLT, MOVE_ICE_BEAM, MOVE_EARTHQUAKE}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [789] = { + [FRONTIER_MON_ARTICUNO_4] = { .species = SPECIES_ARTICUNO, .moves = {MOVE_BLIZZARD, MOVE_DOUBLE_EDGE, MOVE_REST, MOVE_REFLECT}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [790] = { + [FRONTIER_MON_ZAPDOS_4] = { .species = SPECIES_ZAPDOS, .moves = {MOVE_THUNDERBOLT, MOVE_DRILL_PECK, MOVE_THUNDER_WAVE, MOVE_LIGHT_SCREEN}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [791] = { + [FRONTIER_MON_MOLTRES_4] = { .species = SPECIES_MOLTRES, .moves = {MOVE_OVERHEAT, MOVE_DOUBLE_EDGE, MOVE_STEEL_WING, MOVE_SAFEGUARD}, .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_QUIET }, - [792] = { + [FRONTIER_MON_RAIKOU_4] = { .species = SPECIES_RAIKOU, .moves = {MOVE_THUNDERBOLT, MOVE_BITE, MOVE_THUNDER_WAVE, MOVE_REFLECT}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [793] = { + [FRONTIER_MON_ENTEI_4] = { .species = SPECIES_ENTEI, .moves = {MOVE_FLAMETHROWER, MOVE_BITE, MOVE_DOUBLE_TEAM, MOVE_REFLECT}, .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [794] = { + [FRONTIER_MON_SUICUNE_4] = { .species = SPECIES_SUICUNE, .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_BITE, MOVE_REFLECT}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [795] = { + [FRONTIER_MON_REGIROCK_4] = { .species = SPECIES_REGIROCK, .moves = {MOVE_ROCK_SLIDE, MOVE_BRICK_BREAK, MOVE_DOUBLE_TEAM, MOVE_THUNDER_WAVE}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_CAREFUL }, - [796] = { + [FRONTIER_MON_REGICE_4] = { .species = SPECIES_REGICE, .moves = {MOVE_ICE_BEAM, MOVE_HAIL, MOVE_DOUBLE_TEAM, MOVE_THUNDER_WAVE}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_BOLD }, - [797] = { + [FRONTIER_MON_REGISTEEL_4] = { .species = SPECIES_REGISTEEL, .moves = {MOVE_ANCIENT_POWER, MOVE_EARTHQUAKE, MOVE_DOUBLE_TEAM, MOVE_THUNDER_WAVE}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_IMPISH }, - [798] = { + [FRONTIER_MON_LATIAS_4] = { .species = SPECIES_LATIAS, .moves = {MOVE_MIST_BALL, MOVE_SHADOW_BALL, MOVE_CHARM, MOVE_REFLECT}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [799] = { + [FRONTIER_MON_LATIOS_4] = { .species = SPECIES_LATIOS, .moves = {MOVE_LUSTER_PURGE, MOVE_THUNDERBOLT, MOVE_ICE_BEAM, MOVE_DRAGON_CLAW}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [800] = { + [FRONTIER_MON_GENGAR_5] = { .species = SPECIES_GENGAR, .moves = {MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_THUNDERBOLT, MOVE_FIRE_PUNCH}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [801] = { + [FRONTIER_MON_GENGAR_6] = { .species = SPECIES_GENGAR, .moves = {MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_THUNDERBOLT, MOVE_ICE_PUNCH}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [802] = { + [FRONTIER_MON_GENGAR_7] = { .species = SPECIES_GENGAR, .moves = {MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_FIRE_PUNCH, MOVE_DESTINY_BOND}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [803] = { + [FRONTIER_MON_GENGAR_8] = { .species = SPECIES_GENGAR, .moves = {MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_ICE_PUNCH, MOVE_DESTINY_BOND}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [804] = { + [FRONTIER_MON_URSARING_5] = { .species = SPECIES_URSARING, .moves = {MOVE_MEGA_KICK, MOVE_AERIAL_ACE, MOVE_ROCK_SLIDE, MOVE_BRICK_BREAK}, .itemTableId = BATTLE_FRONTIER_ITEM_CHOICE_BAND, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [805] = { + [FRONTIER_MON_URSARING_6] = { .species = SPECIES_URSARING, .moves = {MOVE_HYPER_BEAM, MOVE_YAWN, MOVE_SWORDS_DANCE, MOVE_DOUBLE_TEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [806] = { + [FRONTIER_MON_URSARING_7] = { .species = SPECIES_URSARING, .moves = {MOVE_FACADE, MOVE_EARTHQUAKE, MOVE_CRUNCH, MOVE_BULK_UP}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [807] = { + [FRONTIER_MON_URSARING_8] = { .species = SPECIES_URSARING, .moves = {MOVE_FACADE, MOVE_EARTHQUAKE, MOVE_CRUNCH, MOVE_BRICK_BREAK}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [808] = { + [FRONTIER_MON_MACHAMP_5] = { .species = SPECIES_MACHAMP, .moves = {MOVE_CROSS_CHOP, MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [809] = { + [FRONTIER_MON_MACHAMP_6] = { .species = SPECIES_MACHAMP, .moves = {MOVE_CROSS_CHOP, MOVE_EARTHQUAKE, MOVE_COUNTER, MOVE_ROCK_TOMB}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [810] = { + [FRONTIER_MON_MACHAMP_7] = { .species = SPECIES_MACHAMP, .moves = {MOVE_FOCUS_PUNCH, MOVE_SUBSTITUTE, MOVE_ATTRACT, MOVE_DOUBLE_TEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [811] = { + [FRONTIER_MON_MACHAMP_8] = { .species = SPECIES_MACHAMP, .moves = {MOVE_REVENGE, MOVE_ROCK_SLIDE, MOVE_FACADE, MOVE_COUNTER}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [812] = { + [FRONTIER_MON_GARDEVOIR_5] = { .species = SPECIES_GARDEVOIR, .moves = {MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_ENDURE, MOVE_DESTINY_BOND}, .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [813] = { + [FRONTIER_MON_GARDEVOIR_6] = { .species = SPECIES_GARDEVOIR, .moves = {MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_WILL_O_WISP, MOVE_DESTINY_BOND}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, .nature = NATURE_TIMID }, - [814] = { + [FRONTIER_MON_GARDEVOIR_7] = { .species = SPECIES_GARDEVOIR, .moves = {MOVE_PSYCHIC, MOVE_CALM_MIND, MOVE_WILL_O_WISP, MOVE_DESTINY_BOND}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_BOLD }, - [815] = { + [FRONTIER_MON_GARDEVOIR_8] = { .species = SPECIES_GARDEVOIR, .moves = {MOVE_PSYCHIC, MOVE_MAGICAL_LEAF, MOVE_ATTRACT, MOVE_DOUBLE_TEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [816] = { + [FRONTIER_MON_STARMIE_5] = { .species = SPECIES_STARMIE, .moves = {MOVE_SURF, MOVE_PSYCHIC, MOVE_RECOVER, MOVE_LIGHT_SCREEN}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [817] = { + [FRONTIER_MON_STARMIE_6] = { .species = SPECIES_STARMIE, .moves = {MOVE_SURF, MOVE_CONFUSE_RAY, MOVE_THUNDER_WAVE, MOVE_RECOVER}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_CALM }, - [818] = { + [FRONTIER_MON_STARMIE_7] = { .species = SPECIES_STARMIE, .moves = {MOVE_PSYCHIC, MOVE_ICE_BEAM, MOVE_COSMIC_POWER, MOVE_RECOVER}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [819] = { + [FRONTIER_MON_STARMIE_8] = { .species = SPECIES_STARMIE, .moves = {MOVE_SURF, MOVE_THUNDERBOLT, MOVE_COSMIC_POWER, MOVE_RECOVER}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [820] = { + [FRONTIER_MON_LAPRAS_5] = { .species = SPECIES_LAPRAS, .moves = {MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_IRON_TAIL, MOVE_DOUBLE_EDGE}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [821] = { + [FRONTIER_MON_LAPRAS_6] = { .species = SPECIES_LAPRAS, .moves = {MOVE_HYDRO_PUMP, MOVE_THUNDER, MOVE_RAIN_DANCE, MOVE_BLIZZARD}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [822] = { + [FRONTIER_MON_LAPRAS_7] = { .species = SPECIES_LAPRAS, .moves = {MOVE_SHEER_COLD, MOVE_HORN_DRILL, MOVE_REST, MOVE_SLEEP_TALK}, .itemTableId = BATTLE_FRONTIER_ITEM_LEPPA_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_CALM }, - [823] = { + [FRONTIER_MON_LAPRAS_8] = { .species = SPECIES_LAPRAS, .moves = {MOVE_SHEER_COLD, MOVE_HORN_DRILL, MOVE_SING, MOVE_ATTRACT}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_CALM }, - [824] = { + [FRONTIER_MON_SNORLAX_5] = { .species = SPECIES_SNORLAX, .moves = {MOVE_MEGA_KICK, MOVE_SHADOW_BALL, MOVE_BRICK_BREAK, MOVE_COUNTER}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [825] = { + [FRONTIER_MON_SNORLAX_6] = { .species = SPECIES_SNORLAX, .moves = {MOVE_EARTHQUAKE, MOVE_SHADOW_BALL, MOVE_BRICK_BREAK, MOVE_COUNTER}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [826] = { + [FRONTIER_MON_SNORLAX_7] = { .species = SPECIES_SNORLAX, .moves = {MOVE_HYPER_BEAM, MOVE_SHADOW_BALL, MOVE_EARTHQUAKE, MOVE_CURSE}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [827] = { + [FRONTIER_MON_SNORLAX_8] = { .species = SPECIES_SNORLAX, .moves = {MOVE_RETURN, MOVE_SHADOW_BALL, MOVE_BELLY_DRUM, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [828] = { + [FRONTIER_MON_SALAMENCE_5] = { .species = SPECIES_SALAMENCE, .moves = {MOVE_FACADE, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_DRAGON_DANCE}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [829] = { + [FRONTIER_MON_SALAMENCE_6] = { .species = SPECIES_SALAMENCE, .moves = {MOVE_HEADBUTT, MOVE_AERIAL_ACE, MOVE_CRUNCH, MOVE_DRAGON_DANCE}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [830] = { + [FRONTIER_MON_SALAMENCE_7] = { .species = SPECIES_SALAMENCE, .moves = {MOVE_FLAMETHROWER, MOVE_DRAGON_CLAW, MOVE_CRUNCH, MOVE_BRICK_BREAK}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [831] = { + [FRONTIER_MON_SALAMENCE_8] = { .species = SPECIES_SALAMENCE, .moves = {MOVE_FLAMETHROWER, MOVE_DRAGON_CLAW, MOVE_CRUNCH, MOVE_ATTRACT}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [832] = { + [FRONTIER_MON_METAGROSS_5] = { .species = SPECIES_METAGROSS, .moves = {MOVE_EXPLOSION, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_BRICK_BREAK}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_JOLLY }, - [833] = { + [FRONTIER_MON_METAGROSS_6] = { .species = SPECIES_METAGROSS, .moves = {MOVE_METEOR_MASH, MOVE_PSYCHIC, MOVE_ICE_PUNCH, MOVE_THUNDER_PUNCH}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [834] = { + [FRONTIER_MON_METAGROSS_7] = { .species = SPECIES_METAGROSS, .moves = {MOVE_EARTHQUAKE, MOVE_SHADOW_BALL, MOVE_ICE_PUNCH, MOVE_THUNDER_PUNCH}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [835] = { + [FRONTIER_MON_METAGROSS_8] = { .species = SPECIES_METAGROSS, .moves = {MOVE_METEOR_MASH, MOVE_EARTHQUAKE, MOVE_BRICK_BREAK, MOVE_EXPLOSION}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [836] = { + [FRONTIER_MON_REGIROCK_5] = { .species = SPECIES_REGIROCK, .moves = {MOVE_HYPER_BEAM, MOVE_FOCUS_PUNCH, MOVE_ROCK_SLIDE, MOVE_DOUBLE_TEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [837] = { + [FRONTIER_MON_REGIROCK_6] = { .species = SPECIES_REGIROCK, .moves = {MOVE_SWAGGER, MOVE_PSYCH_UP, MOVE_ROCK_SLIDE, MOVE_EXPLOSION}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [838] = { + [FRONTIER_MON_REGICE_5] = { .species = SPECIES_REGICE, .moves = {MOVE_EARTHQUAKE, MOVE_ICE_BEAM, MOVE_CURSE, MOVE_COUNTER}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_BRAVE }, - [839] = { + [FRONTIER_MON_REGICE_6] = { .species = SPECIES_REGICE, .moves = {MOVE_ICE_BEAM, MOVE_THUNDERBOLT, MOVE_SLEEP_TALK, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [840] = { + [FRONTIER_MON_REGISTEEL_5] = { .species = SPECIES_REGISTEEL, .moves = {MOVE_FOCUS_PUNCH, MOVE_SUBSTITUTE, MOVE_TOXIC, MOVE_DOUBLE_TEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [841] = { + [FRONTIER_MON_REGISTEEL_6] = { .species = SPECIES_REGISTEEL, .moves = {MOVE_SUPERPOWER, MOVE_AERIAL_ACE, MOVE_SWAGGER, MOVE_PSYCH_UP}, .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [842] = { + [FRONTIER_MON_LATIAS_5] = { .species = SPECIES_LATIAS, .moves = {MOVE_DRAGON_CLAW, MOVE_THUNDER_WAVE, MOVE_CALM_MIND, MOVE_RECOVER}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [843] = { + [FRONTIER_MON_LATIAS_6] = { .species = SPECIES_LATIAS, .moves = {MOVE_MIST_BALL, MOVE_DRAGON_CLAW, MOVE_ATTRACT, MOVE_THUNDER_WAVE}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [844] = { + [FRONTIER_MON_LATIAS_7] = { .species = SPECIES_LATIAS, .moves = {MOVE_EARTHQUAKE, MOVE_SHADOW_BALL, MOVE_SWAGGER, MOVE_PSYCH_UP}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [845] = { + [FRONTIER_MON_LATIAS_8] = { .species = SPECIES_LATIAS, .moves = {MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE}, .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [846] = { + [FRONTIER_MON_LATIOS_5] = { .species = SPECIES_LATIOS, .moves = {MOVE_DRAGON_CLAW, MOVE_THUNDER_WAVE, MOVE_CALM_MIND, MOVE_RECOVER}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [847] = { + [FRONTIER_MON_LATIOS_6] = { .species = SPECIES_LATIOS, .moves = {MOVE_LUSTER_PURGE, MOVE_SHADOW_BALL, MOVE_DRAGON_CLAW, MOVE_THUNDER_WAVE}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [848] = { + [FRONTIER_MON_LATIOS_7] = { .species = SPECIES_LATIOS, .moves = {MOVE_EARTHQUAKE, MOVE_SHADOW_BALL, MOVE_DRAGON_DANCE, MOVE_RECOVER}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [849] = { + [FRONTIER_MON_LATIOS_8] = { .species = SPECIES_LATIOS, .moves = {MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE}, .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [850] = { + [FRONTIER_MON_DRAGONITE_1] = { .species = SPECIES_DRAGONITE, .moves = {MOVE_EARTHQUAKE, MOVE_AERIAL_ACE, MOVE_BRICK_BREAK, MOVE_DRAGON_DANCE}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [851] = { + [FRONTIER_MON_DRAGONITE_2] = { .species = SPECIES_DRAGONITE, .moves = {MOVE_EARTHQUAKE, MOVE_DOUBLE_EDGE, MOVE_AERIAL_ACE, MOVE_DRAGON_DANCE}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [852] = { + [FRONTIER_MON_DRAGONITE_3] = { .species = SPECIES_DRAGONITE, .moves = {MOVE_HYPER_BEAM, MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_THUNDER_WAVE}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [853] = { + [FRONTIER_MON_DRAGONITE_4] = { .species = SPECIES_DRAGONITE, .moves = {MOVE_HYPER_BEAM, MOVE_THUNDER_WAVE, MOVE_DRAGON_DANCE, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [854] = { + [FRONTIER_MON_DRAGONITE_5] = { .species = SPECIES_DRAGONITE, .moves = {MOVE_OUTRAGE, MOVE_DOUBLE_EDGE, MOVE_THUNDER_WAVE, MOVE_ROAR}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [855] = { + [FRONTIER_MON_DRAGONITE_6] = { .species = SPECIES_DRAGONITE, .moves = {MOVE_DRAGON_CLAW, MOVE_THUNDERBOLT, MOVE_SURF, MOVE_FLAMETHROWER}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [856] = { + [FRONTIER_MON_DRAGONITE_7] = { .species = SPECIES_DRAGONITE, .moves = {MOVE_DRAGON_CLAW, MOVE_THUNDERBOLT, MOVE_SURF, MOVE_ICE_BEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [857] = { + [FRONTIER_MON_DRAGONITE_8] = { .species = SPECIES_DRAGONITE, .moves = {MOVE_DRAGON_CLAW, MOVE_FLAMETHROWER, MOVE_ICE_BEAM, MOVE_BRICK_BREAK}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [858] = { + [FRONTIER_MON_DRAGONITE_9] = { .species = SPECIES_DRAGONITE, .moves = {MOVE_THUNDER, MOVE_SURF, MOVE_RAIN_DANCE, MOVE_EARTHQUAKE}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [859] = { + [FRONTIER_MON_DRAGONITE_10] = { .species = SPECIES_DRAGONITE, .moves = {MOVE_FIRE_BLAST, MOVE_BLIZZARD, MOVE_SUNNY_DAY, MOVE_EARTHQUAKE}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [860] = { + [FRONTIER_MON_TYRANITAR_1] = { .species = SPECIES_TYRANITAR, .moves = {MOVE_EARTHQUAKE, MOVE_AERIAL_ACE, MOVE_THUNDERBOLT, MOVE_SURF}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [861] = { + [FRONTIER_MON_TYRANITAR_2] = { .species = SPECIES_TYRANITAR, .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_CRUNCH, MOVE_THUNDERBOLT}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [862] = { + [FRONTIER_MON_TYRANITAR_3] = { .species = SPECIES_TYRANITAR, .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_COUNTER, MOVE_DRAGON_DANCE}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [863] = { + [FRONTIER_MON_TYRANITAR_4] = { .species = SPECIES_TYRANITAR, .moves = {MOVE_CRUNCH, MOVE_ICE_BEAM, MOVE_THUNDERBOLT, MOVE_FLAMETHROWER}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [864] = { + [FRONTIER_MON_TYRANITAR_5] = { .species = SPECIES_TYRANITAR, .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_DRAGON_DANCE, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [865] = { + [FRONTIER_MON_TYRANITAR_6] = { .species = SPECIES_TYRANITAR, .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_CURSE, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [866] = { + [FRONTIER_MON_TYRANITAR_7] = { .species = SPECIES_TYRANITAR, .moves = {MOVE_ROCK_SLIDE, MOVE_AERIAL_ACE, MOVE_BRICK_BREAK, MOVE_CURSE}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [867] = { + [FRONTIER_MON_TYRANITAR_8] = { .species = SPECIES_TYRANITAR, .moves = {MOVE_ROCK_SLIDE, MOVE_THUNDER_WAVE, MOVE_DRAGON_DANCE, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [868] = { + [FRONTIER_MON_TYRANITAR_9] = { .species = SPECIES_TYRANITAR, .moves = {MOVE_CRUNCH, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE, MOVE_ATTRACT}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [869] = { + [FRONTIER_MON_TYRANITAR_10] = { .species = SPECIES_TYRANITAR, .moves = {MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_DRAGON_DANCE}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [870] = { + [FRONTIER_MON_ARTICUNO_5] = { .species = SPECIES_ARTICUNO, .moves = {MOVE_BLIZZARD, MOVE_DOUBLE_EDGE, MOVE_AGILITY, MOVE_SWAGGER}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [871] = { + [FRONTIER_MON_ARTICUNO_6] = { .species = SPECIES_ARTICUNO, .moves = {MOVE_ICE_BEAM, MOVE_AERIAL_ACE, MOVE_REFLECT, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [872] = { + [FRONTIER_MON_ZAPDOS_5] = { .species = SPECIES_ZAPDOS, .moves = {MOVE_THUNDERBOLT, MOVE_DRILL_PECK, MOVE_DOUBLE_EDGE, MOVE_THUNDER_WAVE}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [873] = { + [FRONTIER_MON_ZAPDOS_6] = { .species = SPECIES_ZAPDOS, .moves = {MOVE_THUNDER, MOVE_DRILL_PECK, MOVE_RAIN_DANCE, MOVE_DOUBLE_EDGE}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [874] = { + [FRONTIER_MON_MOLTRES_5] = { .species = SPECIES_MOLTRES, .moves = {MOVE_OVERHEAT, MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_FACADE}, .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_DOCILE }, - [875] = { + [FRONTIER_MON_MOLTRES_6] = { .species = SPECIES_MOLTRES, .moves = {MOVE_OVERHEAT, MOVE_DOUBLE_EDGE, MOVE_AERIAL_ACE, MOVE_STEEL_WING}, .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [876] = { + [FRONTIER_MON_RAIKOU_5] = { .species = SPECIES_RAIKOU, .moves = {MOVE_THUNDERBOLT, MOVE_DOUBLE_EDGE, MOVE_ROAR, MOVE_REFLECT}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [877] = { + [FRONTIER_MON_RAIKOU_6] = { .species = SPECIES_RAIKOU, .moves = {MOVE_THUNDERBOLT, MOVE_CALM_MIND, MOVE_SUBSTITUTE, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [878] = { + [FRONTIER_MON_ENTEI_5] = { .species = SPECIES_ENTEI, .moves = {MOVE_FIRE_BLAST, MOVE_DOUBLE_EDGE, MOVE_ENDURE, MOVE_REFLECT}, .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_DOCILE }, - [879] = { + [FRONTIER_MON_ENTEI_6] = { .species = SPECIES_ENTEI, .moves = {MOVE_FLAMETHROWER, MOVE_CALM_MIND, MOVE_ROAR, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_MODEST }, - [880] = { + [FRONTIER_MON_SUICUNE_5] = { .species = SPECIES_SUICUNE, .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_CALM_MIND, MOVE_ICY_WIND}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [881] = { + [FRONTIER_MON_SUICUNE_6] = { .species = SPECIES_SUICUNE, .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_CALM_MIND, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, diff --git a/src/data/battle_frontier/battle_frontier_trainer_mons.h b/src/data/battle_frontier/battle_frontier_trainer_mons.h index d0e21172b..183964f2d 100644 --- a/src/data/battle_frontier/battle_frontier_trainer_mons.h +++ b/src/data/battle_frontier/battle_frontier_trainer_mons.h @@ -1,15229 +1,7369 @@ +// Also used by early Pkmn Breeder, Collector, and Beauty trainers +#define FRONTIER_MONS_YOUNGSTER_LASS_1 \ + FRONTIER_MON_SUNKERN, \ + FRONTIER_MON_AZURILL, \ + FRONTIER_MON_CATERPIE, \ + FRONTIER_MON_WEEDLE, \ + FRONTIER_MON_WURMPLE, \ + FRONTIER_MON_RALTS, \ + FRONTIER_MON_MAGIKARP, \ + FRONTIER_MON_FEEBAS, \ + FRONTIER_MON_PICHU, \ + FRONTIER_MON_IGGLYBUFF, \ + FRONTIER_MON_WOOPER, \ + FRONTIER_MON_TYROGUE, \ + FRONTIER_MON_SENTRET, \ + FRONTIER_MON_CLEFFA, \ + FRONTIER_MON_SEEDOT, \ + FRONTIER_MON_LOTAD, \ + FRONTIER_MON_POOCHYENA, \ + FRONTIER_MON_SHEDINJA, \ + FRONTIER_MON_MAKUHITA, \ + FRONTIER_MON_WHISMUR, \ + FRONTIER_MON_ZIGZAGOON, \ + FRONTIER_MON_ZUBAT, \ + FRONTIER_MON_TOGEPI, \ + FRONTIER_MON_SPINARAK, \ + FRONTIER_MON_MARILL, \ + FRONTIER_MON_HOPPIP, \ + FRONTIER_MON_SLUGMA, \ + FRONTIER_MON_SWINUB, \ + FRONTIER_MON_SMEARGLE, \ + FRONTIER_MON_PIDGEY, \ + FRONTIER_MON_RATTATA, \ + FRONTIER_MON_WYNAUT, \ + FRONTIER_MON_SKITTY, \ + FRONTIER_MON_SPEAROW, \ + FRONTIER_MON_HOOTHOOT, \ + FRONTIER_MON_DIGLETT, \ + FRONTIER_MON_LEDYBA, \ + FRONTIER_MON_NINCADA, \ + FRONTIER_MON_SURSKIT, \ + FRONTIER_MON_JIGGLYPUFF, \ + FRONTIER_MON_TAILLOW, \ + FRONTIER_MON_WINGULL, \ + FRONTIER_MON_NIDORAN_M, \ + FRONTIER_MON_NIDORAN_F, \ + FRONTIER_MON_KIRLIA, \ + FRONTIER_MON_MAREEP, \ + FRONTIER_MON_MEDITITE, \ + FRONTIER_MON_SLAKOTH, \ + FRONTIER_MON_PARAS, \ + FRONTIER_MON_EKANS, \ + FRONTIER_MON_DITTO, \ + FRONTIER_MON_BARBOACH, \ + FRONTIER_MON_MEOWTH, \ + FRONTIER_MON_PINECO, \ + FRONTIER_MON_TRAPINCH, \ + FRONTIER_MON_SPHEAL, \ + FRONTIER_MON_HORSEA, \ + FRONTIER_MON_SHROOMISH, \ + FRONTIER_MON_SHUPPET, \ + FRONTIER_MON_DUSKULL, \ + FRONTIER_MON_ELECTRIKE, \ + FRONTIER_MON_VULPIX, \ + -1 + +// Also used by early Pkmn Breeder, Collector, and Beauty trainers +#define FRONTIER_MONS_SCHOOL_KID_1 \ + FRONTIER_MON_PIKACHU, \ + FRONTIER_MON_SANDSHREW, \ + FRONTIER_MON_POLIWAG, \ + FRONTIER_MON_BELLSPROUT, \ + FRONTIER_MON_GEODUDE, \ + FRONTIER_MON_DRATINI, \ + FRONTIER_MON_SNUBBULL, \ + FRONTIER_MON_REMORAID, \ + FRONTIER_MON_LARVITAR, \ + FRONTIER_MON_BALTOY, \ + FRONTIER_MON_SNORUNT, \ + FRONTIER_MON_BAGON, \ + FRONTIER_MON_BELDUM, \ + FRONTIER_MON_GULPIN, \ + FRONTIER_MON_VENONAT, \ + FRONTIER_MON_MANKEY, \ + FRONTIER_MON_MACHOP, \ + FRONTIER_MON_SHELLDER, \ + FRONTIER_MON_SMOOCHUM, \ + FRONTIER_MON_NUMEL, \ + FRONTIER_MON_CARVANHA, \ + FRONTIER_MON_CORPHISH, \ + FRONTIER_MON_CHARMANDER, \ + FRONTIER_MON_CYNDAQUIL, \ + FRONTIER_MON_ABRA, \ + FRONTIER_MON_DODUO, \ + FRONTIER_MON_GASTLY, \ + FRONTIER_MON_SWABLU, \ + FRONTIER_MON_TREECKO, \ + FRONTIER_MON_TORCHIC, \ + FRONTIER_MON_MUDKIP, \ + FRONTIER_MON_SQUIRTLE, \ + FRONTIER_MON_TOTODILE, \ + FRONTIER_MON_SLOWPOKE, \ + FRONTIER_MON_BULBASAUR, \ + FRONTIER_MON_CHIKORITA, \ + FRONTIER_MON_ODDISH, \ + FRONTIER_MON_PSYDUCK, \ + FRONTIER_MON_CUBONE, \ + FRONTIER_MON_GOLDEEN, \ + FRONTIER_MON_NATU, \ + FRONTIER_MON_CLEFAIRY, \ + FRONTIER_MON_MAGNEMITE, \ + FRONTIER_MON_SEEL, \ + -1 + +#define FRONTIER_MONS_RICH_BOY_LADY_1 \ + FRONTIER_MON_RALTS, \ + FRONTIER_MON_POOCHYENA, \ + FRONTIER_MON_SHEDINJA, \ + FRONTIER_MON_ZUBAT, \ + FRONTIER_MON_SPINARAK, \ + FRONTIER_MON_WYNAUT, \ + FRONTIER_MON_NIDORAN_M, \ + FRONTIER_MON_NIDORAN_F, \ + FRONTIER_MON_KIRLIA, \ + FRONTIER_MON_MEDITITE, \ + FRONTIER_MON_EKANS, \ + FRONTIER_MON_SHUPPET, \ + FRONTIER_MON_DUSKULL, \ + FRONTIER_MON_BELLSPROUT, \ + FRONTIER_MON_BALTOY, \ + FRONTIER_MON_BELDUM, \ + FRONTIER_MON_GULPIN, \ + FRONTIER_MON_VENONAT, \ + FRONTIER_MON_SMOOCHUM, \ + FRONTIER_MON_ABRA, \ + FRONTIER_MON_GASTLY, \ + FRONTIER_MON_SLOWPOKE, \ + FRONTIER_MON_BULBASAUR, \ + FRONTIER_MON_ODDISH, \ + FRONTIER_MON_NATU, \ + FRONTIER_MON_GRIMER, \ + FRONTIER_MON_EXEGGCUTE, \ + FRONTIER_MON_DROWZEE, \ + FRONTIER_MON_HOUNDOUR, \ + FRONTIER_MON_SPOINK, \ + FRONTIER_MON_TENTACOOL, \ + FRONTIER_MON_KOFFING, \ + FRONTIER_MON_NIDORINA, \ + FRONTIER_MON_NIDORINO, \ + FRONTIER_MON_BEEDRILL, \ + FRONTIER_MON_DUSTOX, \ + FRONTIER_MON_ARIADOS, \ + -1 + +// Also used by early Pkmn Breeder, Collector, and Beauty trainers +#define FRONTIER_MONS_CAMPER_PICNICKER_1 \ + FRONTIER_MON_GRIMER, \ + FRONTIER_MON_KRABBY, \ + FRONTIER_MON_EXEGGCUTE, \ + FRONTIER_MON_EEVEE, \ + FRONTIER_MON_DROWZEE, \ + FRONTIER_MON_VOLTORB, \ + FRONTIER_MON_CHINCHOU, \ + FRONTIER_MON_TEDDIURSA, \ + FRONTIER_MON_DELIBIRD, \ + FRONTIER_MON_HOUNDOUR, \ + FRONTIER_MON_PHANPY, \ + FRONTIER_MON_SPOINK, \ + FRONTIER_MON_ARON, \ + FRONTIER_MON_LUVDISC, \ + FRONTIER_MON_TENTACOOL, \ + FRONTIER_MON_CACNEA, \ + FRONTIER_MON_KOFFING, \ + FRONTIER_MON_STARYU, \ + FRONTIER_MON_SKIPLOOM, \ + FRONTIER_MON_NUZLEAF, \ + FRONTIER_MON_LOMBRE, \ + FRONTIER_MON_VIBRAVA, \ + FRONTIER_MON_RHYHORN, \ + FRONTIER_MON_CLAMPERL, \ + FRONTIER_MON_PIDGEOTTO, \ + FRONTIER_MON_GROWLITHE, \ + FRONTIER_MON_FARFETCHD, \ + FRONTIER_MON_OMANYTE, \ + FRONTIER_MON_KABUTO, \ + FRONTIER_MON_LILEEP, \ + FRONTIER_MON_ANORITH, \ + FRONTIER_MON_AIPOM, \ + FRONTIER_MON_ELEKID, \ + FRONTIER_MON_LOUDRED, \ + FRONTIER_MON_SPINDA, \ + FRONTIER_MON_NIDORINA, \ + FRONTIER_MON_NIDORINO, \ + FRONTIER_MON_FLAAFFY, \ + FRONTIER_MON_MAGBY, \ + FRONTIER_MON_NOSEPASS, \ + FRONTIER_MON_CORSOLA, \ + FRONTIER_MON_MAWILE, \ + FRONTIER_MON_BUTTERFREE, \ + FRONTIER_MON_BEEDRILL, \ + FRONTIER_MON_POLIWHIRL, \ + FRONTIER_MON_ONIX, \ + FRONTIER_MON_BEAUTIFLY, \ + FRONTIER_MON_DUSTOX, \ + FRONTIER_MON_LEDIAN, \ + FRONTIER_MON_ARIADOS, \ + FRONTIER_MON_YANMA, \ + -1 + +#define FRONTIER_MONS_TUBER_1 \ + FRONTIER_MON_RALTS, \ + FRONTIER_MON_MAGIKARP, \ + FRONTIER_MON_FEEBAS, \ + FRONTIER_MON_WOOPER, \ + FRONTIER_MON_LOTAD, \ + FRONTIER_MON_MARILL, \ + FRONTIER_MON_WYNAUT, \ + FRONTIER_MON_SURSKIT, \ + FRONTIER_MON_WINGULL, \ + FRONTIER_MON_KIRLIA, \ + FRONTIER_MON_MEDITITE, \ + FRONTIER_MON_BARBOACH, \ + FRONTIER_MON_SPHEAL, \ + FRONTIER_MON_HORSEA, \ + FRONTIER_MON_POLIWAG, \ + FRONTIER_MON_REMORAID, \ + FRONTIER_MON_SHELLDER, \ + FRONTIER_MON_SMOOCHUM, \ + FRONTIER_MON_CARVANHA, \ + FRONTIER_MON_CORPHISH, \ + FRONTIER_MON_ABRA, \ + FRONTIER_MON_MUDKIP, \ + FRONTIER_MON_SQUIRTLE, \ + FRONTIER_MON_TOTODILE, \ + FRONTIER_MON_SLOWPOKE, \ + FRONTIER_MON_PSYDUCK, \ + FRONTIER_MON_GOLDEEN, \ + FRONTIER_MON_NATU, \ + FRONTIER_MON_SEEL, \ + FRONTIER_MON_EXEGGCUTE, \ + FRONTIER_MON_DROWZEE, \ + FRONTIER_MON_SPOINK, \ + -1 + +#define FRONTIER_MONS_SWIMMER_M_1 \ + FRONTIER_MON_AZURILL, \ + FRONTIER_MON_IGGLYBUFF, \ + FRONTIER_MON_TYROGUE, \ + FRONTIER_MON_SENTRET, \ + FRONTIER_MON_CLEFFA, \ + FRONTIER_MON_MAKUHITA, \ + FRONTIER_MON_WHISMUR, \ + FRONTIER_MON_ZIGZAGOON, \ + FRONTIER_MON_TOGEPI, \ + FRONTIER_MON_SMEARGLE, \ + FRONTIER_MON_RATTATA, \ + FRONTIER_MON_SKITTY, \ + FRONTIER_MON_JIGGLYPUFF, \ + FRONTIER_MON_MEDITITE, \ + FRONTIER_MON_SLAKOTH, \ + FRONTIER_MON_DITTO, \ + FRONTIER_MON_MEOWTH, \ + FRONTIER_MON_POLIWAG, \ + FRONTIER_MON_SNUBBULL, \ + FRONTIER_MON_REMORAID, \ + FRONTIER_MON_MANKEY, \ + FRONTIER_MON_MACHOP, \ + FRONTIER_MON_SHELLDER, \ + FRONTIER_MON_CARVANHA, \ + FRONTIER_MON_CORPHISH, \ + FRONTIER_MON_MUDKIP, \ + FRONTIER_MON_SQUIRTLE, \ + FRONTIER_MON_TOTODILE, \ + FRONTIER_MON_SLOWPOKE, \ + FRONTIER_MON_PSYDUCK, \ + FRONTIER_MON_GOLDEEN, \ + FRONTIER_MON_CLEFAIRY, \ + FRONTIER_MON_SEEL, \ + FRONTIER_MON_KRABBY, \ + FRONTIER_MON_EEVEE, \ + FRONTIER_MON_CHINCHOU, \ + FRONTIER_MON_TEDDIURSA, \ + FRONTIER_MON_LUVDISC, \ + FRONTIER_MON_TENTACOOL, \ + FRONTIER_MON_STARYU, \ + FRONTIER_MON_LOMBRE, \ + FRONTIER_MON_CLAMPERL, \ + FRONTIER_MON_OMANYTE, \ + FRONTIER_MON_KABUTO, \ + FRONTIER_MON_AIPOM, \ + FRONTIER_MON_LOUDRED, \ + FRONTIER_MON_SPINDA, \ + FRONTIER_MON_CORSOLA, \ + FRONTIER_MON_MAWILE, \ + FRONTIER_MON_POLIWHIRL, \ + -1 + +#define FRONTIER_MONS_SWIMMER_F_1 \ + FRONTIER_MON_AZURILL, \ + FRONTIER_MON_IGGLYBUFF, \ + FRONTIER_MON_SENTRET, \ + FRONTIER_MON_CLEFFA, \ + FRONTIER_MON_WHISMUR, \ + FRONTIER_MON_ZIGZAGOON, \ + FRONTIER_MON_TOGEPI, \ + FRONTIER_MON_SMEARGLE, \ + FRONTIER_MON_RATTATA, \ + FRONTIER_MON_SKITTY, \ + FRONTIER_MON_JIGGLYPUFF, \ + FRONTIER_MON_SLAKOTH, \ + FRONTIER_MON_DITTO, \ + FRONTIER_MON_MEOWTH, \ + FRONTIER_MON_POLIWAG, \ + FRONTIER_MON_SNUBBULL, \ + FRONTIER_MON_REMORAID, \ + FRONTIER_MON_SNORUNT, \ + FRONTIER_MON_SHELLDER, \ + FRONTIER_MON_SMOOCHUM, \ + FRONTIER_MON_CARVANHA, \ + FRONTIER_MON_CORPHISH, \ + FRONTIER_MON_MUDKIP, \ + FRONTIER_MON_SQUIRTLE, \ + FRONTIER_MON_TOTODILE, \ + FRONTIER_MON_SLOWPOKE, \ + FRONTIER_MON_PSYDUCK, \ + FRONTIER_MON_GOLDEEN, \ + FRONTIER_MON_CLEFAIRY, \ + FRONTIER_MON_SEEL, \ + FRONTIER_MON_KRABBY, \ + FRONTIER_MON_EEVEE, \ + FRONTIER_MON_CHINCHOU, \ + FRONTIER_MON_TEDDIURSA, \ + FRONTIER_MON_DELIBIRD, \ + FRONTIER_MON_LUVDISC, \ + FRONTIER_MON_TENTACOOL, \ + FRONTIER_MON_STARYU, \ + FRONTIER_MON_LOMBRE, \ + FRONTIER_MON_CLAMPERL, \ + FRONTIER_MON_OMANYTE, \ + FRONTIER_MON_KABUTO, \ + FRONTIER_MON_AIPOM, \ + FRONTIER_MON_LOUDRED, \ + FRONTIER_MON_SPINDA, \ + FRONTIER_MON_CORSOLA, \ + FRONTIER_MON_POLIWHIRL, \ + -1 + +#define FRONTIER_MONS_POKEFAN_M_1 \ + FRONTIER_MON_SMOOCHUM, \ + FRONTIER_MON_NUMEL, \ + FRONTIER_MON_CORPHISH, \ + FRONTIER_MON_CHARMANDER, \ + FRONTIER_MON_CYNDAQUIL, \ + FRONTIER_MON_SWABLU, \ + FRONTIER_MON_TREECKO, \ + FRONTIER_MON_TORCHIC, \ + FRONTIER_MON_MUDKIP, \ + FRONTIER_MON_SQUIRTLE, \ + FRONTIER_MON_TOTODILE, \ + FRONTIER_MON_SLOWPOKE, \ + FRONTIER_MON_BULBASAUR, \ + FRONTIER_MON_CHIKORITA, \ + FRONTIER_MON_ODDISH, \ + FRONTIER_MON_PSYDUCK, \ + FRONTIER_MON_GOLDEEN, \ + FRONTIER_MON_NATU, \ + FRONTIER_MON_CLEFAIRY, \ + FRONTIER_MON_SEEL, \ + FRONTIER_MON_EXEGGCUTE, \ + FRONTIER_MON_EEVEE, \ + FRONTIER_MON_TEDDIURSA, \ + FRONTIER_MON_PHANPY, \ + FRONTIER_MON_SPOINK, \ + FRONTIER_MON_LUVDISC, \ + FRONTIER_MON_SKIPLOOM, \ + FRONTIER_MON_CLAMPERL, \ + FRONTIER_MON_AIPOM, \ + FRONTIER_MON_ELEKID, \ + FRONTIER_MON_SPINDA, \ + FRONTIER_MON_FLAAFFY, \ + FRONTIER_MON_MAGBY, \ + FRONTIER_MON_CORSOLA, \ + FRONTIER_MON_MAWILE, \ + FRONTIER_MON_POLIWHIRL, \ + -1 + +#define FRONTIER_MONS_POKEFAN_F_1 \ + FRONTIER_MON_AZURILL, \ + FRONTIER_MON_RALTS, \ + FRONTIER_MON_MAGIKARP, \ + FRONTIER_MON_PICHU, \ + FRONTIER_MON_IGGLYBUFF, \ + FRONTIER_MON_WOOPER, \ + FRONTIER_MON_SENTRET, \ + FRONTIER_MON_CLEFFA, \ + FRONTIER_MON_SEEDOT, \ + FRONTIER_MON_LOTAD, \ + FRONTIER_MON_POOCHYENA, \ + FRONTIER_MON_WHISMUR, \ + FRONTIER_MON_ZIGZAGOON, \ + FRONTIER_MON_TOGEPI, \ + FRONTIER_MON_MARILL, \ + FRONTIER_MON_HOPPIP, \ + FRONTIER_MON_SWINUB, \ + FRONTIER_MON_SMEARGLE, \ + FRONTIER_MON_PIDGEY, \ + FRONTIER_MON_RATTATA, \ + FRONTIER_MON_WYNAUT, \ + FRONTIER_MON_SKITTY, \ + FRONTIER_MON_SURSKIT, \ + FRONTIER_MON_JIGGLYPUFF, \ + FRONTIER_MON_TAILLOW, \ + FRONTIER_MON_WINGULL, \ + FRONTIER_MON_NIDORAN_M, \ + FRONTIER_MON_NIDORAN_F, \ + FRONTIER_MON_KIRLIA, \ + FRONTIER_MON_MAREEP, \ + FRONTIER_MON_DITTO, \ + FRONTIER_MON_MEOWTH, \ + FRONTIER_MON_SPHEAL, \ + FRONTIER_MON_SHROOMISH, \ + FRONTIER_MON_VULPIX, \ + FRONTIER_MON_PIKACHU, \ + FRONTIER_MON_SANDSHREW, \ + FRONTIER_MON_POLIWAG, \ + FRONTIER_MON_DRATINI, \ + FRONTIER_MON_SNUBBULL, \ + FRONTIER_MON_GULPIN, \ + -1 + +#define FRONTIER_MONS_BUG_CATCHER_1 \ + FRONTIER_MON_CATERPIE, \ + FRONTIER_MON_WEEDLE, \ + FRONTIER_MON_WURMPLE, \ + FRONTIER_MON_SHEDINJA, \ + FRONTIER_MON_SPINARAK, \ + FRONTIER_MON_DIGLETT, \ + FRONTIER_MON_LEDYBA, \ + FRONTIER_MON_NINCADA, \ + FRONTIER_MON_SURSKIT, \ + FRONTIER_MON_PARAS, \ + FRONTIER_MON_PINECO, \ + FRONTIER_MON_TRAPINCH, \ + FRONTIER_MON_VENONAT, \ + FRONTIER_MON_EXEGGCUTE, \ + FRONTIER_MON_VIBRAVA, \ + FRONTIER_MON_ANORITH, \ + FRONTIER_MON_BUTTERFREE, \ + FRONTIER_MON_BEEDRILL, \ + FRONTIER_MON_BEAUTIFLY, \ + FRONTIER_MON_DUSTOX, \ + FRONTIER_MON_LEDIAN, \ + FRONTIER_MON_ARIADOS, \ + FRONTIER_MON_YANMA, \ + -1 + +// Identical to above with 2 additions. Might be possible to merge the two +#define FRONTIER_MONS_BUG_CATCHER_1_EXTRA(species1, species2) \ + FRONTIER_MON_CATERPIE, \ + FRONTIER_MON_WEEDLE, \ + FRONTIER_MON_WURMPLE, \ + FRONTIER_MON_##species1, \ + FRONTIER_MON_##species2, \ + FRONTIER_MON_SHEDINJA, \ + FRONTIER_MON_SPINARAK, \ + FRONTIER_MON_DIGLETT, \ + FRONTIER_MON_LEDYBA, \ + FRONTIER_MON_NINCADA, \ + FRONTIER_MON_SURSKIT, \ + FRONTIER_MON_PARAS, \ + FRONTIER_MON_PINECO, \ + FRONTIER_MON_TRAPINCH, \ + FRONTIER_MON_VENONAT, \ + FRONTIER_MON_EXEGGCUTE, \ + FRONTIER_MON_VIBRAVA, \ + FRONTIER_MON_ANORITH, \ + FRONTIER_MON_BUTTERFREE, \ + FRONTIER_MON_BEEDRILL, \ + FRONTIER_MON_BEAUTIFLY, \ + FRONTIER_MON_DUSTOX, \ + FRONTIER_MON_LEDIAN, \ + FRONTIER_MON_ARIADOS, \ + FRONTIER_MON_YANMA, \ + -1 + +#define FRONTIER_MONS_NINJA_BOY_1 \ + FRONTIER_MON_RALTS, \ + FRONTIER_MON_SHEDINJA, \ + FRONTIER_MON_ZUBAT, \ + FRONTIER_MON_SPINARAK, \ + FRONTIER_MON_WYNAUT, \ + FRONTIER_MON_DIGLETT, \ + FRONTIER_MON_LEDYBA, \ + FRONTIER_MON_NINCADA, \ + FRONTIER_MON_SURSKIT, \ + FRONTIER_MON_NIDORAN_M, \ + FRONTIER_MON_NIDORAN_F, \ + FRONTIER_MON_KIRLIA, \ + FRONTIER_MON_MEDITITE, \ + FRONTIER_MON_PARAS, \ + FRONTIER_MON_EKANS, \ + FRONTIER_MON_PINECO, \ + FRONTIER_MON_TRAPINCH, \ + FRONTIER_MON_SHUPPET, \ + FRONTIER_MON_DUSKULL, \ + FRONTIER_MON_BELLSPROUT, \ + FRONTIER_MON_BALTOY, \ + FRONTIER_MON_BELDUM, \ + FRONTIER_MON_GULPIN, \ + FRONTIER_MON_VENONAT, \ + FRONTIER_MON_SMOOCHUM, \ + FRONTIER_MON_ABRA, \ + FRONTIER_MON_GASTLY, \ + FRONTIER_MON_SLOWPOKE, \ + FRONTIER_MON_BULBASAUR, \ + FRONTIER_MON_ODDISH, \ + FRONTIER_MON_NATU, \ + FRONTIER_MON_GRIMER, \ + FRONTIER_MON_EXEGGCUTE, \ + FRONTIER_MON_DROWZEE, \ + FRONTIER_MON_SPOINK, \ + FRONTIER_MON_TENTACOOL, \ + FRONTIER_MON_KOFFING, \ + FRONTIER_MON_VIBRAVA, \ + FRONTIER_MON_ANORITH, \ + FRONTIER_MON_NIDORINA, \ + FRONTIER_MON_NIDORINO, \ + FRONTIER_MON_BUTTERFREE, \ + FRONTIER_MON_BEEDRILL, \ + FRONTIER_MON_BEAUTIFLY, \ + FRONTIER_MON_DUSTOX, \ + FRONTIER_MON_LEDIAN, \ + FRONTIER_MON_ARIADOS, \ + FRONTIER_MON_YANMA, \ + -1 + +#define FRONTIER_MONS_BUG_MANIAC_1 \ + FRONTIER_MON_SHEDINJA, \ + FRONTIER_MON_SPINARAK, \ + FRONTIER_MON_HOPPIP, \ + FRONTIER_MON_DIGLETT, \ + FRONTIER_MON_LEDYBA, \ + FRONTIER_MON_NINCADA, \ + FRONTIER_MON_SURSKIT, \ + FRONTIER_MON_PARAS, \ + FRONTIER_MON_PINECO, \ + FRONTIER_MON_TRAPINCH, \ + FRONTIER_MON_SHROOMISH, \ + FRONTIER_MON_SHUPPET, \ + FRONTIER_MON_DUSKULL, \ + FRONTIER_MON_BELLSPROUT, \ + FRONTIER_MON_VENONAT, \ + FRONTIER_MON_GASTLY, \ + FRONTIER_MON_ODDISH, \ + FRONTIER_MON_EXEGGCUTE, \ + FRONTIER_MON_CACNEA, \ + FRONTIER_MON_SKIPLOOM, \ + FRONTIER_MON_VIBRAVA, \ + FRONTIER_MON_LILEEP, \ + FRONTIER_MON_ANORITH, \ + FRONTIER_MON_BUTTERFREE, \ + FRONTIER_MON_BEEDRILL, \ + FRONTIER_MON_BEAUTIFLY, \ + FRONTIER_MON_DUSTOX, \ + FRONTIER_MON_LEDIAN, \ + FRONTIER_MON_ARIADOS, \ + FRONTIER_MON_YANMA, \ + -1 + +#define FRONTIER_MONS_FISHERMAN_1 \ + FRONTIER_MON_MAGIKARP, \ + FRONTIER_MON_FEEBAS, \ + FRONTIER_MON_BARBOACH, \ + FRONTIER_MON_HORSEA, \ + FRONTIER_MON_POLIWAG, \ + FRONTIER_MON_REMORAID, \ + FRONTIER_MON_SHELLDER, \ + FRONTIER_MON_CARVANHA, \ + FRONTIER_MON_CORPHISH, \ + FRONTIER_MON_GOLDEEN, \ + FRONTIER_MON_KRABBY, \ + FRONTIER_MON_CHINCHOU, \ + FRONTIER_MON_LUVDISC, \ + FRONTIER_MON_TENTACOOL, \ + FRONTIER_MON_STARYU, \ + FRONTIER_MON_CLAMPERL, \ + FRONTIER_MON_OMANYTE, \ + FRONTIER_MON_KABUTO, \ + FRONTIER_MON_CORSOLA, \ + -1 + +#define FRONTIER_MONS_RUIN_MANIAC_1 \ + FRONTIER_MON_SWINUB, \ + FRONTIER_MON_DIGLETT, \ + FRONTIER_MON_TRAPINCH, \ + FRONTIER_MON_SANDSHREW, \ + FRONTIER_MON_GEODUDE, \ + FRONTIER_MON_LARVITAR, \ + FRONTIER_MON_BALTOY, \ + FRONTIER_MON_BELDUM, \ + FRONTIER_MON_NUMEL, \ + FRONTIER_MON_CUBONE, \ + FRONTIER_MON_MAGNEMITE, \ + FRONTIER_MON_PHANPY, \ + FRONTIER_MON_ARON, \ + FRONTIER_MON_RHYHORN, \ + FRONTIER_MON_OMANYTE, \ + FRONTIER_MON_KABUTO, \ + FRONTIER_MON_LILEEP, \ + FRONTIER_MON_ANORITH, \ + FRONTIER_MON_NOSEPASS, \ + FRONTIER_MON_CORSOLA, \ + FRONTIER_MON_MAWILE, \ + FRONTIER_MON_ONIX, \ + -1 + +#define FRONTIER_MONS_PARASOL_LADY_1 \ + FRONTIER_MON_SUNKERN, \ + FRONTIER_MON_WOOPER, \ + FRONTIER_MON_LOTAD, \ + FRONTIER_MON_MARILL, \ + FRONTIER_MON_SURSKIT, \ + FRONTIER_MON_TRAPINCH, \ + FRONTIER_MON_SPHEAL, \ + FRONTIER_MON_SANDSHREW, \ + FRONTIER_MON_POLIWAG, \ + FRONTIER_MON_NUMEL, \ + FRONTIER_MON_DELIBIRD, \ + FRONTIER_MON_PHANPY, \ + FRONTIER_MON_LUVDISC, \ + FRONTIER_MON_POLIWHIRL, \ + FRONTIER_MON_ONIX, \ + FRONTIER_MON_SUDOWOODO_1, \ + -1 + +#define FRONTIER_MONS_AROMA_LADY_1 \ + FRONTIER_MON_SUNKERN, \ + FRONTIER_MON_RALTS, \ + FRONTIER_MON_SEEDOT, \ + FRONTIER_MON_LOTAD, \ + FRONTIER_MON_HOPPIP, \ + FRONTIER_MON_WYNAUT, \ + FRONTIER_MON_KIRLIA, \ + FRONTIER_MON_MEDITITE, \ + FRONTIER_MON_PARAS, \ + FRONTIER_MON_SHROOMISH, \ + FRONTIER_MON_BELLSPROUT, \ + FRONTIER_MON_BALTOY, \ + FRONTIER_MON_BELDUM, \ + FRONTIER_MON_SMOOCHUM, \ + FRONTIER_MON_ABRA, \ + FRONTIER_MON_TREECKO, \ + FRONTIER_MON_SLOWPOKE, \ + FRONTIER_MON_BULBASAUR, \ + FRONTIER_MON_CHIKORITA, \ + FRONTIER_MON_ODDISH, \ + FRONTIER_MON_NATU, \ + FRONTIER_MON_EXEGGCUTE, \ + FRONTIER_MON_DROWZEE, \ + FRONTIER_MON_SPOINK, \ + FRONTIER_MON_CACNEA, \ + FRONTIER_MON_SKIPLOOM, \ + FRONTIER_MON_NUZLEAF, \ + FRONTIER_MON_LOMBRE, \ + FRONTIER_MON_LILEEP, \ + -1 + +#define FRONTIER_MONS_GUITARIST_1 \ + FRONTIER_MON_RALTS, \ + FRONTIER_MON_PICHU, \ + FRONTIER_MON_POOCHYENA, \ + FRONTIER_MON_WYNAUT, \ + FRONTIER_MON_KIRLIA, \ + FRONTIER_MON_MAREEP, \ + FRONTIER_MON_MEDITITE, \ + FRONTIER_MON_SHUPPET, \ + FRONTIER_MON_DUSKULL, \ + FRONTIER_MON_ELECTRIKE, \ + FRONTIER_MON_PIKACHU, \ + FRONTIER_MON_DRATINI, \ + FRONTIER_MON_BALTOY, \ + FRONTIER_MON_BAGON, \ + FRONTIER_MON_BELDUM, \ + FRONTIER_MON_SMOOCHUM, \ + FRONTIER_MON_ABRA, \ + FRONTIER_MON_GASTLY, \ + FRONTIER_MON_SLOWPOKE, \ + FRONTIER_MON_NATU, \ + FRONTIER_MON_MAGNEMITE, \ + FRONTIER_MON_EXEGGCUTE, \ + FRONTIER_MON_DROWZEE, \ + FRONTIER_MON_VOLTORB, \ + FRONTIER_MON_CHINCHOU, \ + FRONTIER_MON_HOUNDOUR, \ + FRONTIER_MON_SPOINK, \ + FRONTIER_MON_ARON, \ + FRONTIER_MON_ELEKID, \ + FRONTIER_MON_FLAAFFY, \ + FRONTIER_MON_MAWILE, \ + -1 + +#define FRONTIER_MONS_BIRD_KEEPER_1 \ + FRONTIER_MON_AZURILL, \ + FRONTIER_MON_IGGLYBUFF, \ + FRONTIER_MON_SENTRET, \ + FRONTIER_MON_CLEFFA, \ + FRONTIER_MON_WHISMUR, \ + FRONTIER_MON_ZIGZAGOON, \ + FRONTIER_MON_ZUBAT, \ + FRONTIER_MON_TOGEPI, \ + FRONTIER_MON_SMEARGLE, \ + FRONTIER_MON_PIDGEY, \ + FRONTIER_MON_RATTATA, \ + FRONTIER_MON_SKITTY, \ + FRONTIER_MON_SPEAROW, \ + FRONTIER_MON_HOOTHOOT, \ + FRONTIER_MON_JIGGLYPUFF, \ + FRONTIER_MON_TAILLOW, \ + FRONTIER_MON_WINGULL, \ + FRONTIER_MON_SLAKOTH, \ + FRONTIER_MON_DITTO, \ + FRONTIER_MON_MEOWTH, \ + FRONTIER_MON_SNUBBULL, \ + FRONTIER_MON_DODUO, \ + FRONTIER_MON_SWABLU, \ + FRONTIER_MON_TORCHIC, \ + FRONTIER_MON_NATU, \ + FRONTIER_MON_CLEFAIRY, \ + FRONTIER_MON_EEVEE, \ + FRONTIER_MON_TEDDIURSA, \ + FRONTIER_MON_DELIBIRD, \ + FRONTIER_MON_PIDGEOTTO, \ + FRONTIER_MON_FARFETCHD, \ + FRONTIER_MON_AIPOM, \ + FRONTIER_MON_LOUDRED, \ + FRONTIER_MON_SPINDA, \ + -1 + +#define FRONTIER_MONS_SAILOR_1 \ + FRONTIER_MON_TYROGUE, \ + FRONTIER_MON_MAKUHITA, \ + FRONTIER_MON_MEDITITE, \ + FRONTIER_MON_SANDSHREW, \ + FRONTIER_MON_GEODUDE, \ + FRONTIER_MON_DRATINI, \ + FRONTIER_MON_LARVITAR, \ + FRONTIER_MON_BAGON, \ + FRONTIER_MON_MANKEY, \ + FRONTIER_MON_MACHOP, \ + FRONTIER_MON_SHELLDER, \ + FRONTIER_MON_CARVANHA, \ + FRONTIER_MON_CORPHISH, \ + FRONTIER_MON_MUDKIP, \ + FRONTIER_MON_SQUIRTLE, \ + FRONTIER_MON_TOTODILE, \ + FRONTIER_MON_SLOWPOKE, \ + FRONTIER_MON_PSYDUCK, \ + FRONTIER_MON_CUBONE, \ + FRONTIER_MON_SEEL, \ + FRONTIER_MON_KRABBY, \ + FRONTIER_MON_PHANPY, \ + FRONTIER_MON_TENTACOOL, \ + FRONTIER_MON_STARYU, \ + FRONTIER_MON_LOMBRE, \ + FRONTIER_MON_RHYHORN, \ + FRONTIER_MON_CLAMPERL, \ + FRONTIER_MON_OMANYTE, \ + FRONTIER_MON_KABUTO, \ + FRONTIER_MON_CORSOLA, \ + FRONTIER_MON_POLIWHIRL, \ + FRONTIER_MON_ONIX, \ + -1 + +#define FRONTIER_MONS_HIKER_1 \ + FRONTIER_MON_TYROGUE, \ + FRONTIER_MON_MAKUHITA, \ + FRONTIER_MON_SWINUB, \ + FRONTIER_MON_DIGLETT, \ + FRONTIER_MON_MEDITITE, \ + FRONTIER_MON_SLAKOTH, \ + FRONTIER_MON_TRAPINCH, \ + FRONTIER_MON_SANDSHREW, \ + FRONTIER_MON_GEODUDE, \ + FRONTIER_MON_LARVITAR, \ + FRONTIER_MON_BALTOY, \ + FRONTIER_MON_MANKEY, \ + FRONTIER_MON_MACHOP, \ + FRONTIER_MON_NUMEL, \ + FRONTIER_MON_CUBONE, \ + FRONTIER_MON_PHANPY, \ + FRONTIER_MON_ARON, \ + FRONTIER_MON_VIBRAVA, \ + FRONTIER_MON_RHYHORN, \ + FRONTIER_MON_OMANYTE, \ + FRONTIER_MON_KABUTO, \ + FRONTIER_MON_LILEEP, \ + FRONTIER_MON_ANORITH, \ + FRONTIER_MON_AIPOM, \ + FRONTIER_MON_LOUDRED, \ + FRONTIER_MON_NOSEPASS, \ + FRONTIER_MON_ONIX, \ + -1 + +#define FRONTIER_MONS_KINDLER_1 \ + FRONTIER_MON_SLUGMA, \ + FRONTIER_MON_SHUPPET, \ + FRONTIER_MON_DUSKULL, \ + FRONTIER_MON_VULPIX, \ + FRONTIER_MON_GEODUDE, \ + FRONTIER_MON_LARVITAR, \ + FRONTIER_MON_BAGON, \ + FRONTIER_MON_BELDUM, \ + FRONTIER_MON_NUMEL, \ + FRONTIER_MON_CHARMANDER, \ + FRONTIER_MON_CYNDAQUIL, \ + FRONTIER_MON_TORCHIC, \ + FRONTIER_MON_MAGNEMITE, \ + FRONTIER_MON_HOUNDOUR, \ + FRONTIER_MON_ARON, \ + FRONTIER_MON_RHYHORN, \ + FRONTIER_MON_GROWLITHE, \ + FRONTIER_MON_MAGBY, \ + FRONTIER_MON_NOSEPASS, \ + FRONTIER_MON_MAWILE, \ + FRONTIER_MON_ONIX, \ + -1 + +#define FRONTIER_MONS_RUNNING_TRIATHLETE_1 \ + FRONTIER_MON_AZURILL, \ + FRONTIER_MON_IGGLYBUFF, \ + FRONTIER_MON_TYROGUE, \ + FRONTIER_MON_SENTRET, \ + FRONTIER_MON_CLEFFA, \ + FRONTIER_MON_MAKUHITA, \ + FRONTIER_MON_WHISMUR, \ + FRONTIER_MON_ZIGZAGOON, \ + FRONTIER_MON_TOGEPI, \ + FRONTIER_MON_SMEARGLE, \ + FRONTIER_MON_PIDGEY, \ + FRONTIER_MON_RATTATA, \ + FRONTIER_MON_SKITTY, \ + FRONTIER_MON_SPEAROW, \ + FRONTIER_MON_HOOTHOOT, \ + FRONTIER_MON_JIGGLYPUFF, \ + FRONTIER_MON_TAILLOW, \ + FRONTIER_MON_MEDITITE, \ + FRONTIER_MON_SLAKOTH, \ + FRONTIER_MON_DITTO, \ + FRONTIER_MON_MEOWTH, \ + FRONTIER_MON_SANDSHREW, \ + FRONTIER_MON_GEODUDE, \ + FRONTIER_MON_SNUBBULL, \ + FRONTIER_MON_LARVITAR, \ + FRONTIER_MON_BALTOY, \ + FRONTIER_MON_MANKEY, \ + FRONTIER_MON_MACHOP, \ + FRONTIER_MON_NUMEL, \ + FRONTIER_MON_DODUO, \ + FRONTIER_MON_SWABLU, \ + FRONTIER_MON_CUBONE, \ + FRONTIER_MON_CLEFAIRY, \ + FRONTIER_MON_EEVEE, \ + FRONTIER_MON_TEDDIURSA, \ + FRONTIER_MON_PHANPY, \ + FRONTIER_MON_VIBRAVA, \ + FRONTIER_MON_RHYHORN, \ + FRONTIER_MON_PIDGEOTTO, \ + FRONTIER_MON_FARFETCHD, \ + FRONTIER_MON_AIPOM, \ + FRONTIER_MON_LOUDRED, \ + FRONTIER_MON_SPINDA, \ + FRONTIER_MON_ONIX, \ + -1 + +#define FRONTIER_MONS_SWIMMING_TRIATHLETE_1 \ + FRONTIER_MON_TYROGUE, \ + FRONTIER_MON_MAKUHITA, \ + FRONTIER_MON_MEDITITE, \ + FRONTIER_MON_DRATINI, \ + FRONTIER_MON_SNUBBULL, \ + FRONTIER_MON_SNORUNT, \ + FRONTIER_MON_BAGON, \ + FRONTIER_MON_MANKEY, \ + FRONTIER_MON_MACHOP, \ + FRONTIER_MON_SHELLDER, \ + FRONTIER_MON_SMOOCHUM, \ + FRONTIER_MON_CORPHISH, \ + FRONTIER_MON_MUDKIP, \ + FRONTIER_MON_SQUIRTLE, \ + FRONTIER_MON_TOTODILE, \ + FRONTIER_MON_SLOWPOKE, \ + FRONTIER_MON_PSYDUCK, \ + FRONTIER_MON_CLEFAIRY, \ + FRONTIER_MON_SEEL, \ + FRONTIER_MON_KRABBY, \ + FRONTIER_MON_EEVEE, \ + FRONTIER_MON_TEDDIURSA, \ + FRONTIER_MON_DELIBIRD, \ + FRONTIER_MON_LOMBRE, \ + FRONTIER_MON_CLAMPERL, \ + FRONTIER_MON_OMANYTE, \ + FRONTIER_MON_KABUTO, \ + FRONTIER_MON_AIPOM, \ + FRONTIER_MON_LOUDRED, \ + FRONTIER_MON_SPINDA, \ + FRONTIER_MON_CORSOLA, \ + FRONTIER_MON_POLIWHIRL, \ + -1 + +#define FRONTIER_MONS_CYCLING_TRIATHLETE_1 \ + FRONTIER_MON_PICHU, \ + FRONTIER_MON_TYROGUE, \ + FRONTIER_MON_MAKUHITA, \ + FRONTIER_MON_MAREEP, \ + FRONTIER_MON_MEDITITE, \ + FRONTIER_MON_ELECTRIKE, \ + FRONTIER_MON_PIKACHU, \ + FRONTIER_MON_DRATINI, \ + FRONTIER_MON_SNUBBULL, \ + FRONTIER_MON_BAGON, \ + FRONTIER_MON_BELDUM, \ + FRONTIER_MON_MANKEY, \ + FRONTIER_MON_MACHOP, \ + FRONTIER_MON_DODUO, \ + FRONTIER_MON_SWABLU, \ + FRONTIER_MON_CLEFAIRY, \ + FRONTIER_MON_MAGNEMITE, \ + FRONTIER_MON_EEVEE, \ + FRONTIER_MON_VOLTORB, \ + FRONTIER_MON_TEDDIURSA, \ + FRONTIER_MON_ARON, \ + FRONTIER_MON_PIDGEOTTO, \ + FRONTIER_MON_FARFETCHD, \ + FRONTIER_MON_AIPOM, \ + FRONTIER_MON_ELEKID, \ + FRONTIER_MON_LOUDRED, \ + FRONTIER_MON_SPINDA, \ + FRONTIER_MON_FLAAFFY, \ + FRONTIER_MON_MAWILE, \ + -1 + +#define FRONTIER_MONS_RUNNING_TRIATHLETE_2 \ + FRONTIER_MON_DELCATTY_1, \ + FRONTIER_MON_LICKITUNG_1, \ + FRONTIER_MON_PORYGON_1, \ + FRONTIER_MON_MACHOKE_1, \ + FRONTIER_MON_TOGETIC_1, \ + FRONTIER_MON_MURKROW_1, \ + FRONTIER_MON_COMBUSKEN_1, \ + FRONTIER_MON_RATICATE_1, \ + FRONTIER_MON_FURRET_1, \ + FRONTIER_MON_DUNSPARCE_1, \ + FRONTIER_MON_LINOONE_1, \ + FRONTIER_MON_CASTFORM_1, \ + FRONTIER_MON_WIGGLYTUFF_1, \ + FRONTIER_MON_GLIGAR_1, \ + FRONTIER_MON_PELIPPER_1, \ + FRONTIER_MON_SWELLOW_1, \ + FRONTIER_MON_PERSIAN_1, \ + FRONTIER_MON_KECLEON_1, \ + FRONTIER_MON_VIGOROTH_1, \ + FRONTIER_MON_NOCTOWL_1, \ + FRONTIER_MON_CHANSEY_1, \ + FRONTIER_MON_GOLBAT_1, \ + FRONTIER_MON_PRIMEAPE_1, \ + FRONTIER_MON_HITMONLEE_1, \ + FRONTIER_MON_HITMONCHAN_1, \ + FRONTIER_MON_GIRAFARIG_1, \ + FRONTIER_MON_HITMONTOP_1, \ + FRONTIER_MON_NINJASK_1, \ + FRONTIER_MON_ZANGOOSE_1, \ + FRONTIER_MON_TROPIUS_1, \ + FRONTIER_MON_MANTINE_1, \ + FRONTIER_MON_STANTLER_1, \ + FRONTIER_MON_PIDGEOT_1, \ + FRONTIER_MON_SCYTHER_1, \ + -1 + +#define FRONTIER_MONS_SWIMMING_TRIATHLETE_2 \ + FRONTIER_MON_WAILMER_1, \ + FRONTIER_MON_WARTORTLE_1, \ + FRONTIER_MON_MACHOKE_1, \ + FRONTIER_MON_CROCONAW_1, \ + FRONTIER_MON_COMBUSKEN_1, \ + FRONTIER_MON_MARSHTOMP_1, \ + FRONTIER_MON_AZUMARILL_1, \ + FRONTIER_MON_SEALEO_1, \ + FRONTIER_MON_QWILFISH_1, \ + FRONTIER_MON_SNEASEL_1, \ + FRONTIER_MON_PELIPPER_1, \ + FRONTIER_MON_SEADRA_1, \ + FRONTIER_MON_SEAKING_1, \ + FRONTIER_MON_PILOSWINE_1, \ + FRONTIER_MON_PRIMEAPE_1, \ + FRONTIER_MON_HITMONLEE_1, \ + FRONTIER_MON_HITMONCHAN_1, \ + FRONTIER_MON_HITMONTOP_1, \ + FRONTIER_MON_SHARPEDO_1, \ + FRONTIER_MON_MANTINE_1, \ + FRONTIER_MON_CRAWDAUNT_1, \ + FRONTIER_MON_KINGLER_1, \ + FRONTIER_MON_OCTILLERY_1, \ + FRONTIER_MON_HUNTAIL_1, \ + FRONTIER_MON_GOREBYSS_1, \ + FRONTIER_MON_RELICANTH_1, \ + FRONTIER_MON_OMASTAR_1, \ + FRONTIER_MON_KABUTOPS_1, \ + FRONTIER_MON_POLIWRATH_1, \ + FRONTIER_MON_POLITOED_1, \ + FRONTIER_MON_CLOYSTER_1, \ + -1 + +#define FRONTIER_MONS_CYCLING_TRIATHLETE_2 \ + FRONTIER_MON_DELCATTY_1, \ + FRONTIER_MON_LICKITUNG_1, \ + FRONTIER_MON_PORYGON_1, \ + FRONTIER_MON_MACHOKE_1, \ + FRONTIER_MON_TOGETIC_1, \ + FRONTIER_MON_PLUSLE_1, \ + FRONTIER_MON_MINUN_1, \ + FRONTIER_MON_COMBUSKEN_1, \ + FRONTIER_MON_RATICATE_1, \ + FRONTIER_MON_FURRET_1, \ + FRONTIER_MON_DUNSPARCE_1, \ + FRONTIER_MON_LINOONE_1, \ + FRONTIER_MON_CASTFORM_1, \ + FRONTIER_MON_METANG_1, \ + FRONTIER_MON_WIGGLYTUFF_1, \ + FRONTIER_MON_SWELLOW_1, \ + FRONTIER_MON_LAIRON_1, \ + FRONTIER_MON_PERSIAN_1, \ + FRONTIER_MON_KECLEON_1, \ + FRONTIER_MON_VIGOROTH_1, \ + FRONTIER_MON_NOCTOWL_1, \ + FRONTIER_MON_CHANSEY_1, \ + FRONTIER_MON_PRIMEAPE_1, \ + FRONTIER_MON_HITMONLEE_1, \ + FRONTIER_MON_HITMONCHAN_1, \ + FRONTIER_MON_GIRAFARIG_1, \ + FRONTIER_MON_HITMONTOP_1, \ + FRONTIER_MON_ZANGOOSE_1, \ + FRONTIER_MON_MAGNETON_1, \ + FRONTIER_MON_STANTLER_1, \ + FRONTIER_MON_PIDGEOT_1, \ + -1 + +#define FRONTIER_MONS_BLACK_BELT_BATTLE_GIRL_1 \ + FRONTIER_MON_LICKITUNG_1, \ + FRONTIER_MON_GRAVELER_1, \ + FRONTIER_MON_CHARMELEON_1, \ + FRONTIER_MON_MACHOKE_1, \ + FRONTIER_MON_QUILAVA_1, \ + FRONTIER_MON_COMBUSKEN_1, \ + FRONTIER_MON_PONYTA_1, \ + FRONTIER_MON_SUDOWOODO_1, \ + FRONTIER_MON_MAGCARGO_1, \ + FRONTIER_MON_PUPITAR_1, \ + FRONTIER_MON_RATICATE_1, \ + FRONTIER_MON_FURRET_1, \ + FRONTIER_MON_DUNSPARCE_1, \ + FRONTIER_MON_MIGHTYENA_1, \ + FRONTIER_MON_LINOONE_1, \ + FRONTIER_MON_SHELGON_1, \ + FRONTIER_MON_METANG_1, \ + FRONTIER_MON_WIGGLYTUFF_1, \ + FRONTIER_MON_GLIGAR_1, \ + FRONTIER_MON_LAIRON_1, \ + FRONTIER_MON_PERSIAN_1, \ + FRONTIER_MON_KECLEON_1, \ + FRONTIER_MON_VIGOROTH_1, \ + FRONTIER_MON_LUNATONE_1, \ + FRONTIER_MON_SOLROCK_1, \ + FRONTIER_MON_SANDSLASH_1, \ + FRONTIER_MON_CHANSEY_1, \ + FRONTIER_MON_PILOSWINE_1, \ + FRONTIER_MON_PRIMEAPE_1, \ + FRONTIER_MON_HITMONLEE_1, \ + FRONTIER_MON_HITMONCHAN_1, \ + FRONTIER_MON_GIRAFARIG_1, \ + FRONTIER_MON_HITMONTOP_1, \ + FRONTIER_MON_ZANGOOSE_1, \ + FRONTIER_MON_CAMERUPT_1, \ + FRONTIER_MON_STANTLER_1, \ + FRONTIER_MON_ABSOL_1, \ + FRONTIER_MON_TORKOAL_1, \ + FRONTIER_MON_CACTURNE_1, \ + FRONTIER_MON_POLIWRATH_1, \ + -1 + +#define FRONTIER_MONS_EXPERT_1A \ + FRONTIER_MON_DELCATTY_1, \ + FRONTIER_MON_SABLEYE_1, \ + FRONTIER_MON_LICKITUNG_1, \ + FRONTIER_MON_WEEPINBELL_1, \ + FRONTIER_MON_GRAVELER_1, \ + FRONTIER_MON_GLOOM_1, \ + FRONTIER_MON_PORYGON_1, \ + FRONTIER_MON_KADABRA_1, \ + FRONTIER_MON_WAILMER_1, \ + FRONTIER_MON_ROSELIA_1, \ + FRONTIER_MON_VOLBEAT_1, \ + FRONTIER_MON_ILLUMISE_1, \ + FRONTIER_MON_IVYSAUR_1, \ + FRONTIER_MON_CHARMELEON_1, \ + FRONTIER_MON_WARTORTLE_1, \ + FRONTIER_MON_PARASECT_1, \ + FRONTIER_MON_MACHOKE_1, \ + FRONTIER_MON_HAUNTER_1, \ + FRONTIER_MON_BAYLEEF_1, \ + FRONTIER_MON_QUILAVA_1, \ + FRONTIER_MON_CROCONAW_1, \ + FRONTIER_MON_TOGETIC_1, \ + FRONTIER_MON_MURKROW_1, \ + FRONTIER_MON_WOBBUFFET_1, \ + FRONTIER_MON_PLUSLE_1, \ + FRONTIER_MON_MINUN_1, \ + FRONTIER_MON_GROVYLE_1, \ + FRONTIER_MON_COMBUSKEN_1, \ + FRONTIER_MON_MARSHTOMP_1, \ + FRONTIER_MON_PONYTA_1, \ + FRONTIER_MON_AZUMARILL_1, \ + FRONTIER_MON_SUDOWOODO_1, \ + FRONTIER_MON_MAGCARGO_1, \ + FRONTIER_MON_PUPITAR_1, \ + FRONTIER_MON_SEALEO_1, \ + FRONTIER_MON_RATICATE_1, \ + FRONTIER_MON_MASQUERAIN_1, \ + FRONTIER_MON_FURRET_1, \ + -1 + +#define FRONTIER_MONS_EXPERT_1B \ + FRONTIER_MON_DUNSPARCE_1, \ + FRONTIER_MON_DRAGONAIR_1, \ + FRONTIER_MON_MIGHTYENA_1, \ + FRONTIER_MON_LINOONE_1, \ + FRONTIER_MON_CASTFORM_1, \ + FRONTIER_MON_SHELGON_1, \ + FRONTIER_MON_METANG_1, \ + FRONTIER_MON_WIGGLYTUFF_1, \ + FRONTIER_MON_SUNFLORA_1, \ + FRONTIER_MON_CHIMECHO_1, \ + FRONTIER_MON_GLIGAR_1, \ + FRONTIER_MON_QWILFISH_1, \ + FRONTIER_MON_SNEASEL_1, \ + FRONTIER_MON_PELIPPER_1, \ + FRONTIER_MON_SWELLOW_1, \ + FRONTIER_MON_LAIRON_1, \ + FRONTIER_MON_TANGELA_1, \ + FRONTIER_MON_ARBOK_1, \ + FRONTIER_MON_PERSIAN_1, \ + FRONTIER_MON_SEADRA_1, \ + FRONTIER_MON_KECLEON_1, \ + FRONTIER_MON_VIGOROTH_1, \ + FRONTIER_MON_LUNATONE_1, \ + FRONTIER_MON_SOLROCK_1, \ + FRONTIER_MON_NOCTOWL_1, \ + FRONTIER_MON_SANDSLASH_1, \ + FRONTIER_MON_VENOMOTH_1, \ + FRONTIER_MON_CHANSEY_1, \ + FRONTIER_MON_SEAKING_1, \ + FRONTIER_MON_JUMPLUFF_1, \ + FRONTIER_MON_PILOSWINE_1, \ + FRONTIER_MON_GOLBAT_1, \ + FRONTIER_MON_PRIMEAPE_1, \ + FRONTIER_MON_HITMONLEE_1, \ + FRONTIER_MON_HITMONCHAN_1, \ + FRONTIER_MON_GIRAFARIG_1, \ + FRONTIER_MON_HITMONTOP_1, \ + -1 + +#define FRONTIER_MONS_EXPERT_1C \ + FRONTIER_MON_BANETTE_1, \ + FRONTIER_MON_NINJASK_1, \ + FRONTIER_MON_SEVIPER_1, \ + FRONTIER_MON_ZANGOOSE_1, \ + FRONTIER_MON_CAMERUPT_1, \ + FRONTIER_MON_SHARPEDO_1, \ + FRONTIER_MON_TROPIUS_1, \ + FRONTIER_MON_MAGNETON_1, \ + FRONTIER_MON_MANTINE_1, \ + FRONTIER_MON_STANTLER_1, \ + FRONTIER_MON_ABSOL_1, \ + FRONTIER_MON_SWALOT_1, \ + FRONTIER_MON_CRAWDAUNT_1, \ + FRONTIER_MON_PIDGEOT_1, \ + FRONTIER_MON_GRUMPIG_1, \ + FRONTIER_MON_TORKOAL_1, \ + FRONTIER_MON_KINGLER_1, \ + FRONTIER_MON_CACTURNE_1, \ + FRONTIER_MON_BELLOSSOM_1, \ + FRONTIER_MON_OCTILLERY_1, \ + FRONTIER_MON_HUNTAIL_1, \ + FRONTIER_MON_GOREBYSS_1, \ + FRONTIER_MON_RELICANTH_1, \ + FRONTIER_MON_OMASTAR_1, \ + FRONTIER_MON_KABUTOPS_1, \ + FRONTIER_MON_POLIWRATH_1, \ + FRONTIER_MON_SCYTHER_1, \ + FRONTIER_MON_PINSIR_1, \ + FRONTIER_MON_POLITOED_1, \ + FRONTIER_MON_CLOYSTER_1, \ + -1 + +#define FRONTIER_MONS_PSYCHIC_1 \ + FRONTIER_MON_DELCATTY_2, \ + FRONTIER_MON_SABLEYE_2, \ + FRONTIER_MON_PORYGON_2, \ + FRONTIER_MON_KADABRA_2, \ + FRONTIER_MON_ROSELIA_2, \ + FRONTIER_MON_HAUNTER_2, \ + FRONTIER_MON_MURKROW_2, \ + FRONTIER_MON_WOBBUFFET_2, \ + FRONTIER_MON_PLUSLE_2, \ + FRONTIER_MON_MINUN_2, \ + FRONTIER_MON_MIGHTYENA_2, \ + FRONTIER_MON_LINOONE_2, \ + FRONTIER_MON_METANG_2, \ + FRONTIER_MON_WIGGLYTUFF_2, \ + FRONTIER_MON_CHIMECHO_2, \ + FRONTIER_MON_SNEASEL_2, \ + FRONTIER_MON_KECLEON_2, \ + FRONTIER_MON_LUNATONE_2, \ + FRONTIER_MON_SOLROCK_2, \ + FRONTIER_MON_NOCTOWL_2, \ + FRONTIER_MON_VENOMOTH_2, \ + FRONTIER_MON_CHANSEY_2, \ + FRONTIER_MON_GIRAFARIG_2, \ + FRONTIER_MON_BANETTE_2, \ + FRONTIER_MON_SHARPEDO_2, \ + FRONTIER_MON_MAGNETON_2, \ + FRONTIER_MON_STANTLER_2, \ + FRONTIER_MON_ABSOL_2, \ + FRONTIER_MON_CRAWDAUNT_2, \ + FRONTIER_MON_GRUMPIG_2, \ + FRONTIER_MON_CACTURNE_2, \ + FRONTIER_MON_GOREBYSS_2, \ + FRONTIER_MON_POLITOED_2, \ + -1 + +#define FRONTIER_MONS_HEX_MANIAC_1 \ + FRONTIER_MON_SABLEYE_2, \ + FRONTIER_MON_WEEPINBELL_2, \ + FRONTIER_MON_GLOOM_2, \ + FRONTIER_MON_KADABRA_2, \ + FRONTIER_MON_PARASECT_2, \ + FRONTIER_MON_HAUNTER_2, \ + FRONTIER_MON_MURKROW_2, \ + FRONTIER_MON_WOBBUFFET_2, \ + FRONTIER_MON_MASQUERAIN_2, \ + FRONTIER_MON_MIGHTYENA_2, \ + FRONTIER_MON_METANG_2, \ + FRONTIER_MON_CHIMECHO_2, \ + FRONTIER_MON_SNEASEL_2, \ + FRONTIER_MON_ARBOK_2, \ + FRONTIER_MON_LUNATONE_2, \ + FRONTIER_MON_SOLROCK_2, \ + FRONTIER_MON_VENOMOTH_2, \ + FRONTIER_MON_GOLBAT_2, \ + FRONTIER_MON_GIRAFARIG_2, \ + FRONTIER_MON_BANETTE_2, \ + FRONTIER_MON_SEVIPER_2, \ + FRONTIER_MON_SHARPEDO_2, \ + FRONTIER_MON_ABSOL_2, \ + FRONTIER_MON_SWALOT_2, \ + FRONTIER_MON_CRAWDAUNT_2, \ + FRONTIER_MON_GRUMPIG_2, \ + FRONTIER_MON_CACTURNE_2, \ + -1 + +#define FRONTIER_MONS_POKEMANIAC_1 \ + FRONTIER_MON_LICKITUNG_2, \ + FRONTIER_MON_GRAVELER_2, \ + FRONTIER_MON_WAILMER_2, \ + FRONTIER_MON_IVYSAUR_2, \ + FRONTIER_MON_CHARMELEON_2, \ + FRONTIER_MON_WARTORTLE_2, \ + FRONTIER_MON_MACHOKE_2, \ + FRONTIER_MON_BAYLEEF_2, \ + FRONTIER_MON_QUILAVA_2, \ + FRONTIER_MON_CROCONAW_2, \ + FRONTIER_MON_GROVYLE_2, \ + FRONTIER_MON_COMBUSKEN_2, \ + FRONTIER_MON_MARSHTOMP_2, \ + FRONTIER_MON_PUPITAR_2, \ + FRONTIER_MON_RATICATE_2, \ + FRONTIER_MON_MIGHTYENA_2, \ + FRONTIER_MON_SHELGON_2, \ + FRONTIER_MON_METANG_2, \ + FRONTIER_MON_LAIRON_2, \ + FRONTIER_MON_ARBOK_2, \ + FRONTIER_MON_VIGOROTH_2, \ + FRONTIER_MON_SANDSLASH_2, \ + FRONTIER_MON_CHANSEY_2, \ + FRONTIER_MON_PILOSWINE_2, \ + FRONTIER_MON_SEVIPER_2, \ + FRONTIER_MON_ZANGOOSE_2, \ + FRONTIER_MON_CAMERUPT_2, \ + FRONTIER_MON_TROPIUS_2, \ + FRONTIER_MON_MANTINE_2, \ + FRONTIER_MON_SWALOT_2, \ + FRONTIER_MON_TORKOAL_2, \ + -1 + +#define FRONTIER_MONS_GENTLEMAN_1A \ + FRONTIER_MON_DELCATTY_2, \ + FRONTIER_MON_SABLEYE_2, \ + FRONTIER_MON_LICKITUNG_2, \ + FRONTIER_MON_WEEPINBELL_2, \ + FRONTIER_MON_GRAVELER_2, \ + FRONTIER_MON_GLOOM_2, \ + FRONTIER_MON_PORYGON_2, \ + FRONTIER_MON_KADABRA_2, \ + FRONTIER_MON_WAILMER_2, \ + FRONTIER_MON_ROSELIA_2, \ + FRONTIER_MON_VOLBEAT_2, \ + FRONTIER_MON_ILLUMISE_2, \ + FRONTIER_MON_IVYSAUR_2, \ + FRONTIER_MON_CHARMELEON_2, \ + FRONTIER_MON_WARTORTLE_2, \ + FRONTIER_MON_PARASECT_2, \ + FRONTIER_MON_MACHOKE_2, \ + FRONTIER_MON_HAUNTER_2, \ + FRONTIER_MON_BAYLEEF_2, \ + FRONTIER_MON_QUILAVA_2, \ + FRONTIER_MON_CROCONAW_2, \ + FRONTIER_MON_TOGETIC_2, \ + FRONTIER_MON_MURKROW_2, \ + FRONTIER_MON_WOBBUFFET_2, \ + FRONTIER_MON_PLUSLE_2, \ + FRONTIER_MON_MINUN_2, \ + FRONTIER_MON_GROVYLE_2, \ + FRONTIER_MON_COMBUSKEN_2, \ + FRONTIER_MON_MARSHTOMP_2, \ + FRONTIER_MON_PONYTA_2, \ + FRONTIER_MON_AZUMARILL_2, \ + FRONTIER_MON_SUDOWOODO_2, \ + FRONTIER_MON_MAGCARGO_2, \ + FRONTIER_MON_PUPITAR_2, \ + FRONTIER_MON_SEALEO_2, \ + FRONTIER_MON_RATICATE_2, \ + FRONTIER_MON_MASQUERAIN_2, \ + FRONTIER_MON_FURRET_2, \ + -1 + +#define FRONTIER_MONS_GENTLEMAN_1B \ + FRONTIER_MON_DUNSPARCE_2, \ + FRONTIER_MON_DRAGONAIR_2, \ + FRONTIER_MON_MIGHTYENA_2, \ + FRONTIER_MON_LINOONE_2, \ + FRONTIER_MON_CASTFORM_2, \ + FRONTIER_MON_SHELGON_2, \ + FRONTIER_MON_METANG_2, \ + FRONTIER_MON_WIGGLYTUFF_2, \ + FRONTIER_MON_SUNFLORA_2, \ + FRONTIER_MON_CHIMECHO_2, \ + FRONTIER_MON_GLIGAR_2, \ + FRONTIER_MON_QWILFISH_2, \ + FRONTIER_MON_SNEASEL_2, \ + FRONTIER_MON_PELIPPER_2, \ + FRONTIER_MON_SWELLOW_2, \ + FRONTIER_MON_LAIRON_2, \ + FRONTIER_MON_TANGELA_2, \ + FRONTIER_MON_ARBOK_2, \ + FRONTIER_MON_PERSIAN_2, \ + FRONTIER_MON_SEADRA_2, \ + FRONTIER_MON_KECLEON_2, \ + FRONTIER_MON_VIGOROTH_2, \ + FRONTIER_MON_LUNATONE_2, \ + FRONTIER_MON_SOLROCK_2, \ + FRONTIER_MON_NOCTOWL_2, \ + FRONTIER_MON_SANDSLASH_2, \ + FRONTIER_MON_VENOMOTH_2, \ + FRONTIER_MON_CHANSEY_2, \ + FRONTIER_MON_SEAKING_2, \ + FRONTIER_MON_JUMPLUFF_2, \ + FRONTIER_MON_PILOSWINE_2, \ + FRONTIER_MON_GOLBAT_2, \ + FRONTIER_MON_PRIMEAPE_2, \ + FRONTIER_MON_HITMONLEE_2, \ + FRONTIER_MON_HITMONCHAN_2, \ + FRONTIER_MON_GIRAFARIG_2, \ + FRONTIER_MON_HITMONTOP_2, \ + -1 + +#define FRONTIER_MONS_BUG_MANIAC_2 \ + FRONTIER_MON_LEDIAN, \ + FRONTIER_MON_ARIADOS, \ + FRONTIER_MON_YANMA, \ + FRONTIER_MON_VOLBEAT_1, \ + FRONTIER_MON_ILLUMISE_1, \ + FRONTIER_MON_PARASECT_1, \ + FRONTIER_MON_MASQUERAIN_1, \ + FRONTIER_MON_VENOMOTH_1, \ + FRONTIER_MON_NINJASK_1, \ + FRONTIER_MON_SCYTHER_1, \ + FRONTIER_MON_PINSIR_1, \ + FRONTIER_MON_VOLBEAT_2, \ + FRONTIER_MON_ILLUMISE_2, \ + FRONTIER_MON_PARASECT_2, \ + FRONTIER_MON_MASQUERAIN_2, \ + FRONTIER_MON_VENOMOTH_2, \ + FRONTIER_MON_NINJASK_2, \ + FRONTIER_MON_SCYTHER_2, \ + FRONTIER_MON_PINSIR_2, \ + -1 + +#define FRONTIER_MONS_RUIN_MANIAC_2 \ + FRONTIER_MON_GRAVELER_2, \ + FRONTIER_MON_MACHOKE_2, \ + FRONTIER_MON_COMBUSKEN_2, \ + FRONTIER_MON_MARSHTOMP_2, \ + FRONTIER_MON_SUDOWOODO_2, \ + FRONTIER_MON_MAGCARGO_2, \ + FRONTIER_MON_PUPITAR_2, \ + FRONTIER_MON_METANG_2, \ + FRONTIER_MON_GLIGAR_2, \ + FRONTIER_MON_LAIRON_2, \ + FRONTIER_MON_LUNATONE_2, \ + FRONTIER_MON_SOLROCK_2, \ + FRONTIER_MON_SANDSLASH_2, \ + FRONTIER_MON_PILOSWINE_2, \ + FRONTIER_MON_PRIMEAPE_2, \ + FRONTIER_MON_HITMONLEE_2, \ + FRONTIER_MON_HITMONCHAN_2, \ + FRONTIER_MON_HITMONTOP_2, \ + FRONTIER_MON_CAMERUPT_2, \ + FRONTIER_MON_RELICANTH_2, \ + FRONTIER_MON_OMASTAR_2, \ + FRONTIER_MON_KABUTOPS_2, \ + -1 + +#define FRONTIER_MONS_COLLECTOR_1 \ + FRONTIER_MON_BANETTE_2, \ + FRONTIER_MON_NINJASK_2, \ + FRONTIER_MON_SEVIPER_2, \ + FRONTIER_MON_ZANGOOSE_2, \ + FRONTIER_MON_CAMERUPT_2, \ + FRONTIER_MON_SHARPEDO_2, \ + FRONTIER_MON_TROPIUS_2, \ + FRONTIER_MON_MAGNETON_2, \ + FRONTIER_MON_MANTINE_2, \ + FRONTIER_MON_STANTLER_2, \ + FRONTIER_MON_ABSOL_2, \ + FRONTIER_MON_SWALOT_2, \ + FRONTIER_MON_CRAWDAUNT_2, \ + FRONTIER_MON_PIDGEOT_2, \ + FRONTIER_MON_GRUMPIG_2, \ + FRONTIER_MON_TORKOAL_2, \ + FRONTIER_MON_KINGLER_2, \ + FRONTIER_MON_CACTURNE_2, \ + FRONTIER_MON_BELLOSSOM_2, \ + FRONTIER_MON_OCTILLERY_2, \ + FRONTIER_MON_HUNTAIL_2, \ + FRONTIER_MON_GOREBYSS_2, \ + FRONTIER_MON_RELICANTH_2, \ + FRONTIER_MON_OMASTAR_2, \ + FRONTIER_MON_KABUTOPS_2, \ + FRONTIER_MON_POLIWRATH_2, \ + FRONTIER_MON_SCYTHER_2, \ + FRONTIER_MON_PINSIR_2, \ + FRONTIER_MON_POLITOED_2, \ + FRONTIER_MON_CLOYSTER_2, \ + -1 + +#define FRONTIER_MONS_PARASOL_LADY_2 \ + FRONTIER_MON_GLOOM_2, \ + FRONTIER_MON_SEALEO_2, \ + FRONTIER_MON_CASTFORM_2, \ + FRONTIER_MON_SANDSLASH_2, \ + FRONTIER_MON_TROPIUS_2, \ + FRONTIER_MON_MAGNETON_2, \ + FRONTIER_MON_MANTINE_2, \ + FRONTIER_MON_CACTURNE_2, \ + FRONTIER_MON_BELLOSSOM_2, \ + FRONTIER_MON_HUNTAIL_2, \ + FRONTIER_MON_GOREBYSS_2, \ + FRONTIER_MON_OMASTAR_2, \ + -1 + +#define FRONTIER_MONS_BEAUTY_1 \ + FRONTIER_MON_DELCATTY_2, \ + FRONTIER_MON_LICKITUNG_2, \ + FRONTIER_MON_WEEPINBELL_2, \ + FRONTIER_MON_GLOOM_2, \ + FRONTIER_MON_PORYGON_2, \ + FRONTIER_MON_ROSELIA_2, \ + FRONTIER_MON_IVYSAUR_2, \ + FRONTIER_MON_HAUNTER_2, \ + FRONTIER_MON_TOGETIC_2, \ + FRONTIER_MON_RATICATE_2, \ + FRONTIER_MON_FURRET_2, \ + FRONTIER_MON_DUNSPARCE_2, \ + FRONTIER_MON_LINOONE_2, \ + FRONTIER_MON_CASTFORM_2, \ + FRONTIER_MON_WIGGLYTUFF_2, \ + FRONTIER_MON_QWILFISH_2, \ + FRONTIER_MON_SWELLOW_2, \ + FRONTIER_MON_ARBOK_2, \ + FRONTIER_MON_PERSIAN_2, \ + FRONTIER_MON_KECLEON_2, \ + FRONTIER_MON_VIGOROTH_2, \ + FRONTIER_MON_NOCTOWL_2, \ + FRONTIER_MON_VENOMOTH_2, \ + FRONTIER_MON_CHANSEY_2, \ + FRONTIER_MON_GOLBAT_2, \ + FRONTIER_MON_GIRAFARIG_2, \ + FRONTIER_MON_SEVIPER_2, \ + FRONTIER_MON_ZANGOOSE_2, \ + FRONTIER_MON_STANTLER_2, \ + FRONTIER_MON_SWALOT_2, \ + FRONTIER_MON_PIDGEOT_2, \ + -1 + +#define FRONTIER_MONS_AROMA_LADY_2 \ + FRONTIER_MON_WEEPINBELL_2, \ + FRONTIER_MON_GLOOM_2, \ + FRONTIER_MON_KADABRA_2, \ + FRONTIER_MON_ROSELIA_2, \ + FRONTIER_MON_IVYSAUR_2, \ + FRONTIER_MON_PARASECT_2, \ + FRONTIER_MON_BAYLEEF_2, \ + FRONTIER_MON_WOBBUFFET_2, \ + FRONTIER_MON_GROVYLE_2, \ + FRONTIER_MON_SUNFLORA_2, \ + FRONTIER_MON_CHIMECHO_2, \ + FRONTIER_MON_TANGELA_2, \ + FRONTIER_MON_JUMPLUFF_2, \ + FRONTIER_MON_GIRAFARIG_2, \ + FRONTIER_MON_TROPIUS_2, \ + FRONTIER_MON_GRUMPIG_2, \ + FRONTIER_MON_CACTURNE_2, \ + FRONTIER_MON_BELLOSSOM_2, \ + -1 + +#define FRONTIER_MONS_COOLTRAINER_1A \ + FRONTIER_MON_DUGTRIO_1, \ + FRONTIER_MON_MEDICHAM_1, \ + FRONTIER_MON_MISDREAVUS_1, \ + FRONTIER_MON_FEAROW_1, \ + FRONTIER_MON_GRANBULL_1, \ + FRONTIER_MON_JYNX_1, \ + FRONTIER_MON_DUSCLOPS_1, \ + FRONTIER_MON_DODRIO_1, \ + FRONTIER_MON_MR_MIME_1, \ + FRONTIER_MON_LANTURN_1, \ + FRONTIER_MON_BRELOOM_1, \ + FRONTIER_MON_FORRETRESS_1, \ + FRONTIER_MON_WHISCASH_1, \ + FRONTIER_MON_XATU_1, \ + FRONTIER_MON_SKARMORY_1, \ + FRONTIER_MON_MAROWAK_1, \ + FRONTIER_MON_QUAGSIRE_1, \ + FRONTIER_MON_CLEFABLE_1, \ + FRONTIER_MON_HARIYAMA_1, \ + FRONTIER_MON_RAICHU_1, \ + FRONTIER_MON_DEWGONG_1, \ + FRONTIER_MON_MANECTRIC_1, \ + FRONTIER_MON_VILEPLUME_1, \ + FRONTIER_MON_VICTREEBEL_1, \ + FRONTIER_MON_ELECTRODE_1, \ + FRONTIER_MON_EXPLOUD_1, \ + FRONTIER_MON_SHIFTRY_1, \ + FRONTIER_MON_GLALIE_1, \ + FRONTIER_MON_LUDICOLO_1, \ + FRONTIER_MON_HYPNO_1, \ + FRONTIER_MON_GOLEM_1, \ + FRONTIER_MON_RHYDON_1, \ + FRONTIER_MON_ALAKAZAM_1, \ + -1 + +#define FRONTIER_MONS_COOLTRAINER_1B \ + FRONTIER_MON_WEEZING_1, \ + FRONTIER_MON_KANGASKHAN_1, \ + FRONTIER_MON_ELECTABUZZ_1, \ + FRONTIER_MON_TAUROS_1, \ + FRONTIER_MON_SLOWBRO_1, \ + FRONTIER_MON_SLOWKING_1, \ + FRONTIER_MON_MILTANK_1, \ + FRONTIER_MON_ALTARIA_1, \ + FRONTIER_MON_NIDOQUEEN_1, \ + FRONTIER_MON_NIDOKING_1, \ + FRONTIER_MON_MAGMAR_1, \ + FRONTIER_MON_CRADILY_1, \ + FRONTIER_MON_ARMALDO_1, \ + FRONTIER_MON_GOLDUCK_1, \ + FRONTIER_MON_RAPIDASH_1, \ + FRONTIER_MON_MUK_1, \ + FRONTIER_MON_GENGAR_1, \ + FRONTIER_MON_AMPHAROS_1, \ + FRONTIER_MON_SCIZOR_1, \ + FRONTIER_MON_HERACROSS_1, \ + FRONTIER_MON_URSARING_1, \ + FRONTIER_MON_HOUNDOOM_1, \ + FRONTIER_MON_DONPHAN_1, \ + FRONTIER_MON_CLAYDOL_1, \ + FRONTIER_MON_WAILORD_1, \ + FRONTIER_MON_NINETALES_1, \ + FRONTIER_MON_MACHAMP_1, \ + FRONTIER_MON_SHUCKLE_1, \ + FRONTIER_MON_STEELIX_1, \ + FRONTIER_MON_TENTACRUEL_1, \ + FRONTIER_MON_AERODACTYL_1, \ + FRONTIER_MON_PORYGON2_1, \ + FRONTIER_MON_GARDEVOIR_1, \ + -1 + +#define FRONTIER_MONS_COOLTRAINER_1C \ + FRONTIER_MON_EXEGGUTOR_1, \ + FRONTIER_MON_STARMIE_1, \ + FRONTIER_MON_FLYGON_1, \ + FRONTIER_MON_VENUSAUR_1, \ + FRONTIER_MON_VAPOREON_1, \ + FRONTIER_MON_JOLTEON_1, \ + FRONTIER_MON_FLAREON_1, \ + FRONTIER_MON_MEGANIUM_1, \ + FRONTIER_MON_ESPEON_1, \ + FRONTIER_MON_UMBREON_1, \ + FRONTIER_MON_BLASTOISE_1, \ + FRONTIER_MON_FERALIGATR_1, \ + FRONTIER_MON_AGGRON_1, \ + FRONTIER_MON_BLAZIKEN_1, \ + FRONTIER_MON_WALREIN_1, \ + FRONTIER_MON_SCEPTILE_1, \ + FRONTIER_MON_CHARIZARD_1, \ + FRONTIER_MON_TYPHLOSION_1, \ + FRONTIER_MON_LAPRAS_1, \ + FRONTIER_MON_CROBAT_1, \ + FRONTIER_MON_SWAMPERT_1, \ + FRONTIER_MON_GYARADOS_1, \ + FRONTIER_MON_SNORLAX_1, \ + FRONTIER_MON_KINGDRA_1, \ + FRONTIER_MON_BLISSEY_1, \ + FRONTIER_MON_MILOTIC_1, \ + FRONTIER_MON_ARCANINE_1, \ + FRONTIER_MON_SALAMENCE_1, \ + FRONTIER_MON_METAGROSS_1, \ + FRONTIER_MON_SLAKING_1, \ + -1 + +#define FRONTIER_MONS_PKMN_RANGER_1 \ + FRONTIER_MON_NINJASK_1, \ + FRONTIER_MON_VENOMOTH_2, \ + FRONTIER_MON_NINJASK_2, \ + FRONTIER_MON_SCYTHER_2, \ + FRONTIER_MON_PINSIR_2, \ + FRONTIER_MON_FEAROW_1, \ + FRONTIER_MON_GRANBULL_1, \ + FRONTIER_MON_DODRIO_1, \ + FRONTIER_MON_BRELOOM_1, \ + FRONTIER_MON_FORRETRESS_1, \ + FRONTIER_MON_CLEFABLE_1, \ + FRONTIER_MON_VILEPLUME_1, \ + FRONTIER_MON_VICTREEBEL_1, \ + FRONTIER_MON_EXPLOUD_1, \ + FRONTIER_MON_SHIFTRY_1, \ + FRONTIER_MON_LUDICOLO_1, \ + FRONTIER_MON_KANGASKHAN_1, \ + FRONTIER_MON_TAUROS_1, \ + FRONTIER_MON_MILTANK_1, \ + FRONTIER_MON_CRADILY_1, \ + FRONTIER_MON_ARMALDO_1, \ + FRONTIER_MON_SCIZOR_1, \ + FRONTIER_MON_HERACROSS_1, \ + FRONTIER_MON_URSARING_1, \ + FRONTIER_MON_SHUCKLE_1, \ + FRONTIER_MON_PORYGON2_1, \ + FRONTIER_MON_EXEGGUTOR_1, \ + FRONTIER_MON_VENUSAUR_1, \ + FRONTIER_MON_MEGANIUM_1, \ + FRONTIER_MON_SCEPTILE_1, \ + FRONTIER_MON_SNORLAX_1, \ + FRONTIER_MON_BLISSEY_1, \ + FRONTIER_MON_SLAKING_1, \ + -1 + +#define FRONTIER_MONS_DRAGON_TAMER_1 \ + FRONTIER_MON_SKARMORY_1, \ + FRONTIER_MON_RHYDON_1, \ + FRONTIER_MON_ALTARIA_1, \ + FRONTIER_MON_NIDOQUEEN_1, \ + FRONTIER_MON_NIDOKING_1, \ + FRONTIER_MON_STEELIX_1, \ + FRONTIER_MON_AERODACTYL_1, \ + FRONTIER_MON_FLYGON_1, \ + FRONTIER_MON_AGGRON_1, \ + FRONTIER_MON_SCEPTILE_1, \ + FRONTIER_MON_CHARIZARD_1, \ + FRONTIER_MON_LAPRAS_1, \ + FRONTIER_MON_GYARADOS_1, \ + FRONTIER_MON_KINGDRA_1, \ + FRONTIER_MON_MILOTIC_1, \ + FRONTIER_MON_ARCANINE_1, \ + FRONTIER_MON_SALAMENCE_1, \ + -1 + +#define FRONTIER_MONS_POKEFAN_2 \ + FRONTIER_MON_MISDREAVUS_1, \ + FRONTIER_MON_LANTURN_1, \ + FRONTIER_MON_BRELOOM_1, \ + FRONTIER_MON_XATU_1, \ + FRONTIER_MON_QUAGSIRE_1, \ + FRONTIER_MON_CLEFABLE_1, \ + FRONTIER_MON_RAICHU_1, \ + FRONTIER_MON_DEWGONG_1, \ + FRONTIER_MON_VILEPLUME_1, \ + FRONTIER_MON_SLOWBRO_1, \ + FRONTIER_MON_MILTANK_1, \ + FRONTIER_MON_ALTARIA_1, \ + FRONTIER_MON_RAPIDASH_1, \ + FRONTIER_MON_NINETALES_1, \ + FRONTIER_MON_SHUCKLE_1, \ + FRONTIER_MON_PORYGON2_1, \ + FRONTIER_MON_FLYGON_1, \ + FRONTIER_MON_LAPRAS_1, \ + FRONTIER_MON_SNORLAX_1, \ + FRONTIER_MON_BLISSEY_1, \ + FRONTIER_MON_MILOTIC_1, \ + FRONTIER_MON_SLAKING_1, \ + -1 + +#define FRONTIER_MONS_PKMN_BREEDER_M_1 \ + FRONTIER_MON_MUK_1, \ + FRONTIER_MON_GENGAR_1, \ + FRONTIER_MON_AMPHAROS_1, \ + FRONTIER_MON_SCIZOR_1, \ + FRONTIER_MON_HERACROSS_1, \ + FRONTIER_MON_URSARING_1, \ + FRONTIER_MON_HOUNDOOM_1, \ + FRONTIER_MON_DONPHAN_1, \ + FRONTIER_MON_CLAYDOL_1, \ + FRONTIER_MON_WAILORD_1, \ + FRONTIER_MON_NINETALES_1, \ + FRONTIER_MON_MACHAMP_1, \ + FRONTIER_MON_SHUCKLE_1, \ + FRONTIER_MON_STEELIX_1, \ + FRONTIER_MON_TENTACRUEL_1, \ + FRONTIER_MON_AERODACTYL_1, \ + FRONTIER_MON_PORYGON2_1, \ + FRONTIER_MON_GARDEVOIR_1, \ + FRONTIER_MON_EXEGGUTOR_1, \ + FRONTIER_MON_STARMIE_1, \ + FRONTIER_MON_FLYGON_1, \ + FRONTIER_MON_VENUSAUR_1, \ + FRONTIER_MON_VAPOREON_1, \ + FRONTIER_MON_JOLTEON_1, \ + FRONTIER_MON_FLAREON_1, \ + FRONTIER_MON_MEGANIUM_1, \ + FRONTIER_MON_ESPEON_1, \ + FRONTIER_MON_UMBREON_1, \ + FRONTIER_MON_BLASTOISE_1, \ + FRONTIER_MON_FERALIGATR_1, \ + FRONTIER_MON_AGGRON_1, \ + FRONTIER_MON_BLAZIKEN_1, \ + FRONTIER_MON_WALREIN_1, \ + FRONTIER_MON_SCEPTILE_1, \ + FRONTIER_MON_CHARIZARD_1, \ + FRONTIER_MON_TYPHLOSION_1, \ + FRONTIER_MON_LAPRAS_1, \ + FRONTIER_MON_CROBAT_1, \ + FRONTIER_MON_SWAMPERT_1, \ + FRONTIER_MON_GYARADOS_1, \ + FRONTIER_MON_SNORLAX_1, \ + FRONTIER_MON_KINGDRA_1, \ + FRONTIER_MON_BLISSEY_1, \ + FRONTIER_MON_MILOTIC_1, \ + FRONTIER_MON_ARCANINE_1, \ + FRONTIER_MON_SALAMENCE_1, \ + FRONTIER_MON_METAGROSS_1, \ + FRONTIER_MON_SLAKING_1, \ + -1 + +#define FRONTIER_MONS_PKMN_BREEDER_F_1 \ + FRONTIER_MON_DUGTRIO_1, \ + FRONTIER_MON_MEDICHAM_1, \ + FRONTIER_MON_MISDREAVUS_1, \ + FRONTIER_MON_FEAROW_1, \ + FRONTIER_MON_GRANBULL_1, \ + FRONTIER_MON_JYNX_1, \ + FRONTIER_MON_DUSCLOPS_1, \ + FRONTIER_MON_DODRIO_1, \ + FRONTIER_MON_MR_MIME_1, \ + FRONTIER_MON_LANTURN_1, \ + FRONTIER_MON_BRELOOM_1, \ + FRONTIER_MON_FORRETRESS_1, \ + FRONTIER_MON_WHISCASH_1, \ + FRONTIER_MON_XATU_1, \ + FRONTIER_MON_SKARMORY_1, \ + FRONTIER_MON_MAROWAK_1, \ + FRONTIER_MON_QUAGSIRE_1, \ + FRONTIER_MON_CLEFABLE_1, \ + FRONTIER_MON_HARIYAMA_1, \ + FRONTIER_MON_RAICHU_1, \ + FRONTIER_MON_DEWGONG_1, \ + FRONTIER_MON_MANECTRIC_1, \ + FRONTIER_MON_VILEPLUME_1, \ + FRONTIER_MON_VICTREEBEL_1, \ + FRONTIER_MON_ELECTRODE_1, \ + FRONTIER_MON_EXPLOUD_1, \ + FRONTIER_MON_SHIFTRY_1, \ + FRONTIER_MON_GLALIE_1, \ + FRONTIER_MON_LUDICOLO_1, \ + FRONTIER_MON_HYPNO_1, \ + FRONTIER_MON_GOLEM_1, \ + FRONTIER_MON_RHYDON_1, \ + FRONTIER_MON_ALAKAZAM_1, \ + FRONTIER_MON_WEEZING_1, \ + FRONTIER_MON_KANGASKHAN_1, \ + FRONTIER_MON_ELECTABUZZ_1, \ + FRONTIER_MON_TAUROS_1, \ + FRONTIER_MON_SLOWBRO_1, \ + FRONTIER_MON_SLOWKING_1, \ + FRONTIER_MON_MILTANK_1, \ + FRONTIER_MON_ALTARIA_1, \ + FRONTIER_MON_NIDOQUEEN_1, \ + FRONTIER_MON_NIDOKING_1, \ + FRONTIER_MON_MAGMAR_1, \ + FRONTIER_MON_CRADILY_1, \ + FRONTIER_MON_ARMALDO_1, \ + FRONTIER_MON_GOLDUCK_1, \ + FRONTIER_MON_RAPIDASH_1, \ + -1 + +// Odd, all the other Youngster/Lass trainers of this group have Dugtrio, but one does not +#define FRONTIER_MONS_YOUNGSTER_LASS_2_NO_DUGTRIO \ + FRONTIER_MON_MEDICHAM_2, \ + FRONTIER_MON_MAROWAK_2, \ + FRONTIER_MON_QUAGSIRE_2, \ + FRONTIER_MON_MISDREAVUS_2, \ + FRONTIER_MON_FEAROW_2, \ + FRONTIER_MON_GRANBULL_2, \ + FRONTIER_MON_JYNX_2, \ + FRONTIER_MON_DUSCLOPS_2, \ + FRONTIER_MON_DODRIO_2, \ + FRONTIER_MON_MR_MIME_2, \ + FRONTIER_MON_LANTURN_2, \ + FRONTIER_MON_BRELOOM_2, \ + FRONTIER_MON_FORRETRESS_2, \ + FRONTIER_MON_SKARMORY_2, \ + FRONTIER_MON_WHISCASH_2, \ + FRONTIER_MON_XATU_2, \ + FRONTIER_MON_CLEFABLE_2, \ + FRONTIER_MON_HARIYAMA_2, \ + FRONTIER_MON_RAICHU_2, \ + FRONTIER_MON_DEWGONG_2, \ + FRONTIER_MON_MANECTRIC_2, \ + FRONTIER_MON_VILEPLUME_2, \ + FRONTIER_MON_VICTREEBEL_2, \ + FRONTIER_MON_ELECTRODE_2, \ + FRONTIER_MON_EXPLOUD_2, \ + FRONTIER_MON_SHIFTRY_2, \ + FRONTIER_MON_GLALIE_2, \ + FRONTIER_MON_LUDICOLO_2, \ + FRONTIER_MON_HYPNO_2, \ + FRONTIER_MON_GOLEM_2, \ + FRONTIER_MON_RHYDON_2, \ + FRONTIER_MON_ALAKAZAM_2, \ + -1 + +#define FRONTIER_MONS_YOUNGSTER_LASS_2 \ + FRONTIER_MON_DUGTRIO_2, \ + FRONTIER_MONS_YOUNGSTER_LASS_2_NO_DUGTRIO + +#define FRONTIER_MONS_SCHOOL_KID_2 \ + FRONTIER_MON_WEEZING_2, \ + FRONTIER_MON_KANGASKHAN_2, \ + FRONTIER_MON_ELECTABUZZ_2, \ + FRONTIER_MON_TAUROS_2, \ + FRONTIER_MON_SLOWBRO_2, \ + FRONTIER_MON_SLOWKING_2, \ + FRONTIER_MON_MILTANK_2, \ + FRONTIER_MON_ALTARIA_2, \ + FRONTIER_MON_NIDOQUEEN_2, \ + FRONTIER_MON_NIDOKING_2, \ + FRONTIER_MON_MAGMAR_2, \ + FRONTIER_MON_CRADILY_2, \ + FRONTIER_MON_ARMALDO_2, \ + FRONTIER_MON_GOLDUCK_2, \ + FRONTIER_MON_RAPIDASH_2, \ + FRONTIER_MON_MUK_2, \ + FRONTIER_MON_GENGAR_2, \ + FRONTIER_MON_AMPHAROS_2, \ + FRONTIER_MON_SCIZOR_2, \ + FRONTIER_MON_HERACROSS_2, \ + FRONTIER_MON_URSARING_2, \ + FRONTIER_MON_HOUNDOOM_2, \ + FRONTIER_MON_DONPHAN_2, \ + FRONTIER_MON_CLAYDOL_2, \ + FRONTIER_MON_WAILORD_2, \ + FRONTIER_MON_NINETALES_2, \ + FRONTIER_MON_MACHAMP_2, \ + FRONTIER_MON_SHUCKLE_2, \ + FRONTIER_MON_STEELIX_2, \ + FRONTIER_MON_TENTACRUEL_2, \ + FRONTIER_MON_AERODACTYL_2, \ + FRONTIER_MON_PORYGON2_2, \ + FRONTIER_MON_GARDEVOIR_2, \ + -1 + +#define FRONTIER_MONS_RICH_BOY_LADY_2 \ + FRONTIER_MON_EXEGGUTOR_2, \ + FRONTIER_MON_STARMIE_2, \ + FRONTIER_MON_FLYGON_2, \ + FRONTIER_MON_VENUSAUR_2, \ + FRONTIER_MON_VAPOREON_2, \ + FRONTIER_MON_JOLTEON_2, \ + FRONTIER_MON_FLAREON_2, \ + FRONTIER_MON_MEGANIUM_2, \ + FRONTIER_MON_ESPEON_2, \ + FRONTIER_MON_UMBREON_2, \ + FRONTIER_MON_BLASTOISE_2, \ + FRONTIER_MON_FERALIGATR_2, \ + FRONTIER_MON_AGGRON_2, \ + FRONTIER_MON_BLAZIKEN_2, \ + FRONTIER_MON_WALREIN_2, \ + FRONTIER_MON_SCEPTILE_2, \ + FRONTIER_MON_CHARIZARD_2, \ + FRONTIER_MON_TYPHLOSION_2, \ + FRONTIER_MON_LAPRAS_2, \ + FRONTIER_MON_CROBAT_2, \ + FRONTIER_MON_SWAMPERT_2, \ + FRONTIER_MON_GYARADOS_2, \ + FRONTIER_MON_SNORLAX_2, \ + FRONTIER_MON_KINGDRA_2, \ + FRONTIER_MON_BLISSEY_2, \ + FRONTIER_MON_MILOTIC_2, \ + FRONTIER_MON_ARCANINE_2, \ + FRONTIER_MON_SALAMENCE_2, \ + FRONTIER_MON_METAGROSS_2, \ + FRONTIER_MON_SLAKING_2, \ + -1 + +#define FRONTIER_MONS_BUG_CATCHER_2 \ + FRONTIER_MON_NINJASK_2, \ + FRONTIER_MON_SCYTHER_2, \ + FRONTIER_MON_PINSIR_2, \ + FRONTIER_MON_FORRETRESS_1, \ + FRONTIER_MON_ARMALDO_1, \ + FRONTIER_MON_SCIZOR_1, \ + FRONTIER_MON_HERACROSS_1, \ + FRONTIER_MON_SHUCKLE_1, \ + FRONTIER_MON_BRELOOM_2, \ + FRONTIER_MON_FORRETRESS_2, \ + FRONTIER_MON_VILEPLUME_2, \ + FRONTIER_MON_VICTREEBEL_2, \ + FRONTIER_MON_SHIFTRY_2, \ + FRONTIER_MON_LUDICOLO_2, \ + FRONTIER_MON_CRADILY_2, \ + FRONTIER_MON_ARMALDO_2, \ + FRONTIER_MON_SCIZOR_2, \ + FRONTIER_MON_HERACROSS_2, \ + FRONTIER_MON_SHUCKLE_2, \ + FRONTIER_MON_EXEGGUTOR_2, \ + FRONTIER_MON_VENUSAUR_2, \ + FRONTIER_MON_MEGANIUM_2, \ + FRONTIER_MON_SCEPTILE_2, \ + -1 + +#define FRONTIER_MONS_NINJA_BOY_2 \ + FRONTIER_MON_PARASECT_2, \ + FRONTIER_MON_VENOMOTH_2, \ + FRONTIER_MON_NINJASK_2, \ + FRONTIER_MON_SCYTHER_2, \ + FRONTIER_MON_PINSIR_2, \ + FRONTIER_MON_MEDICHAM_2, \ + FRONTIER_MON_MISDREAVUS_2, \ + FRONTIER_MON_JYNX_2, \ + FRONTIER_MON_DUSCLOPS_2, \ + FRONTIER_MON_MR_MIME_2, \ + FRONTIER_MON_FORRETRESS_2, \ + FRONTIER_MON_XATU_2, \ + FRONTIER_MON_VILEPLUME_2, \ + FRONTIER_MON_VICTREEBEL_2, \ + FRONTIER_MON_HYPNO_2, \ + FRONTIER_MON_ALAKAZAM_2, \ + FRONTIER_MON_WEEZING_2, \ + FRONTIER_MON_NIDOQUEEN_2, \ + FRONTIER_MON_NIDOKING_2, \ + FRONTIER_MON_ARMALDO_2, \ + FRONTIER_MON_MUK_2, \ + FRONTIER_MON_GENGAR_2, \ + FRONTIER_MON_SCIZOR_2, \ + FRONTIER_MON_HERACROSS_2, \ + FRONTIER_MON_CLAYDOL_2, \ + FRONTIER_MON_SHUCKLE_2, \ + FRONTIER_MON_TENTACRUEL_2, \ + FRONTIER_MON_GARDEVOIR_2, \ + FRONTIER_MON_EXEGGUTOR_2, \ + FRONTIER_MON_VENUSAUR_2, \ + FRONTIER_MON_ESPEON_2, \ + FRONTIER_MON_CROBAT_2, \ + -1 + +#define FRONTIER_MONS_TUBER_2 \ + FRONTIER_MON_QUAGSIRE_2, \ + FRONTIER_MON_GRANBULL_2, \ + FRONTIER_MON_JYNX_2, \ + FRONTIER_MON_LANTURN_2, \ + FRONTIER_MON_WHISCASH_2, \ + FRONTIER_MON_CLEFABLE_2, \ + FRONTIER_MON_DEWGONG_2, \ + FRONTIER_MON_EXPLOUD_2, \ + FRONTIER_MON_GLALIE_2, \ + FRONTIER_MON_LUDICOLO_2, \ + FRONTIER_MON_KANGASKHAN_2, \ + FRONTIER_MON_TAUROS_2, \ + FRONTIER_MON_SLOWBRO_2, \ + FRONTIER_MON_SLOWKING_2, \ + FRONTIER_MON_MILTANK_2, \ + FRONTIER_MON_GOLDUCK_2, \ + FRONTIER_MON_URSARING_2, \ + FRONTIER_MON_WAILORD_2, \ + FRONTIER_MON_TENTACRUEL_2, \ + FRONTIER_MON_PORYGON2_2, \ + FRONTIER_MON_STARMIE_2, \ + FRONTIER_MON_VAPOREON_2, \ + FRONTIER_MON_BLASTOISE_2, \ + FRONTIER_MON_FERALIGATR_2, \ + FRONTIER_MON_WALREIN_2, \ + FRONTIER_MON_LAPRAS_2, \ + FRONTIER_MON_SWAMPERT_2, \ + FRONTIER_MON_GYARADOS_2, \ + FRONTIER_MON_SNORLAX_2, \ + FRONTIER_MON_KINGDRA_2, \ + FRONTIER_MON_BLISSEY_2, \ + FRONTIER_MON_MILOTIC_2, \ + FRONTIER_MON_SLAKING_2, \ + -1 + +#define FRONTIER_MONS_BUG_MANIAC_3 \ + FRONTIER_MON_VOLBEAT_2, \ + FRONTIER_MON_ILLUMISE_2, \ + FRONTIER_MON_PARASECT_2, \ + FRONTIER_MON_MASQUERAIN_2, \ + FRONTIER_MON_VENOMOTH_2, \ + FRONTIER_MON_NINJASK_2, \ + FRONTIER_MON_SCYTHER_2, \ + FRONTIER_MON_PINSIR_2, \ + FRONTIER_MON_FORRETRESS_1, \ + FRONTIER_MON_ARMALDO_1, \ + FRONTIER_MON_SCIZOR_1, \ + FRONTIER_MON_HERACROSS_1, \ + FRONTIER_MON_SHUCKLE_1, \ + FRONTIER_MON_FORRETRESS_2, \ + FRONTIER_MON_ARMALDO_2, \ + FRONTIER_MON_SCIZOR_2, \ + FRONTIER_MON_HERACROSS_2, \ + FRONTIER_MON_SHUCKLE_2, \ + FRONTIER_MON_FORRETRESS_3, \ + FRONTIER_MON_ARMALDO_3, \ + FRONTIER_MON_SCIZOR_3, \ + FRONTIER_MON_HERACROSS_3, \ + FRONTIER_MON_SHUCKLE_3, \ + -1 + +#define FRONTIER_MONS_FISHERMAN_2 \ + FRONTIER_MON_QWILFISH_2, \ + FRONTIER_MON_SEAKING_2, \ + FRONTIER_MON_SHARPEDO_2, \ + FRONTIER_MON_MANTINE_2, \ + FRONTIER_MON_CRAWDAUNT_2, \ + FRONTIER_MON_KINGLER_2, \ + FRONTIER_MON_OCTILLERY_2, \ + FRONTIER_MON_HUNTAIL_2, \ + FRONTIER_MON_GOREBYSS_2, \ + FRONTIER_MON_RELICANTH_2, \ + FRONTIER_MON_LANTURN_3, \ + FRONTIER_MON_WHISCASH_3, \ + FRONTIER_MON_WAILORD_3, \ + FRONTIER_MON_TENTACRUEL_3, \ + FRONTIER_MON_STARMIE_3, \ + -1 + +#define FRONTIER_MONS_RUIN_MANIAC_3 \ + FRONTIER_MON_DUGTRIO_3, \ + FRONTIER_MON_FORRETRESS_3, \ + FRONTIER_MON_WHISCASH_3, \ + FRONTIER_MON_SKARMORY_3, \ + FRONTIER_MON_MAROWAK_3, \ + FRONTIER_MON_QUAGSIRE_3, \ + FRONTIER_MON_GOLEM_3, \ + FRONTIER_MON_RHYDON_3, \ + FRONTIER_MON_NIDOQUEEN_3, \ + FRONTIER_MON_NIDOKING_3, \ + FRONTIER_MON_CRADILY_3, \ + FRONTIER_MON_ARMALDO_3, \ + FRONTIER_MON_SCIZOR_3, \ + FRONTIER_MON_DONPHAN_3, \ + FRONTIER_MON_CLAYDOL_3, \ + FRONTIER_MON_SHUCKLE_3, \ + FRONTIER_MON_STEELIX_3, \ + FRONTIER_MON_AERODACTYL_3, \ + FRONTIER_MON_FLYGON_3, \ + FRONTIER_MON_AGGRON_3, \ + FRONTIER_MON_SWAMPERT_3, \ + FRONTIER_MON_METAGROSS_3, \ + -1 + +#define FRONTIER_MONS_COLLECTOR_2 \ + FRONTIER_MON_DUGTRIO_3, \ + FRONTIER_MON_MEDICHAM_3, \ + FRONTIER_MON_MISDREAVUS_3, \ + FRONTIER_MON_FEAROW_3, \ + FRONTIER_MON_GRANBULL_3, \ + FRONTIER_MON_JYNX_3, \ + FRONTIER_MON_DUSCLOPS_3, \ + FRONTIER_MON_DODRIO_3, \ + FRONTIER_MON_MR_MIME_3, \ + FRONTIER_MON_LANTURN_3, \ + FRONTIER_MON_BRELOOM_3, \ + FRONTIER_MON_FORRETRESS_3, \ + FRONTIER_MON_WHISCASH_3, \ + FRONTIER_MON_XATU_3, \ + FRONTIER_MON_SKARMORY_3, \ + FRONTIER_MON_MAROWAK_3, \ + FRONTIER_MON_QUAGSIRE_3, \ + FRONTIER_MON_CLEFABLE_3, \ + FRONTIER_MON_HARIYAMA_3, \ + FRONTIER_MON_RAICHU_3, \ + FRONTIER_MON_DEWGONG_3, \ + FRONTIER_MON_MANECTRIC_3, \ + FRONTIER_MON_VILEPLUME_3, \ + FRONTIER_MON_VICTREEBEL_3, \ + FRONTIER_MON_ELECTRODE_3, \ + FRONTIER_MON_EXPLOUD_3, \ + FRONTIER_MON_SHIFTRY_3, \ + FRONTIER_MON_GLALIE_3, \ + FRONTIER_MON_LUDICOLO_3, \ + FRONTIER_MON_HYPNO_3, \ + FRONTIER_MON_GOLEM_3, \ + FRONTIER_MON_RHYDON_3, \ + FRONTIER_MON_ALAKAZAM_3, \ + FRONTIER_MON_WEEZING_3, \ + FRONTIER_MON_KANGASKHAN_3, \ + FRONTIER_MON_ELECTABUZZ_3, \ + FRONTIER_MON_TAUROS_3, \ + FRONTIER_MON_SLOWBRO_3, \ + FRONTIER_MON_SLOWKING_3, \ + FRONTIER_MON_MILTANK_3, \ + FRONTIER_MON_ALTARIA_3, \ + FRONTIER_MON_NIDOQUEEN_3, \ + FRONTIER_MON_NIDOKING_3, \ + FRONTIER_MON_MAGMAR_3, \ + FRONTIER_MON_CRADILY_3, \ + FRONTIER_MON_ARMALDO_3, \ + FRONTIER_MON_GOLDUCK_3, \ + FRONTIER_MON_RAPIDASH_3, \ + -1 + +#define FRONTIER_MONS_GUITARIST_2 \ + FRONTIER_MON_SABLEYE_2, \ + FRONTIER_MON_MIGHTYENA_2, \ + FRONTIER_MON_SNEASEL_2, \ + FRONTIER_MON_MAGNETON_2, \ + FRONTIER_MON_ABSOL_2, \ + FRONTIER_MON_LANTURN_3, \ + FRONTIER_MON_RAICHU_3, \ + FRONTIER_MON_MANECTRIC_3, \ + FRONTIER_MON_ELECTRODE_3, \ + FRONTIER_MON_SHIFTRY_3, \ + FRONTIER_MON_ELECTABUZZ_3, \ + FRONTIER_MON_AMPHAROS_3, \ + FRONTIER_MON_HOUNDOOM_3, \ + FRONTIER_MON_JOLTEON_3, \ + FRONTIER_MON_UMBREON_3, \ + -1 + +#define FRONTIER_MONS_BIRD_KEEPER_2 \ + FRONTIER_MON_MURKROW_2, \ + FRONTIER_MON_PELIPPER_2, \ + FRONTIER_MON_SWELLOW_2, \ + FRONTIER_MON_NOCTOWL_2, \ + FRONTIER_MON_PIDGEOT_2, \ + FRONTIER_MON_FEAROW_1, \ + FRONTIER_MON_DODRIO_1, \ + FRONTIER_MON_XATU_1, \ + FRONTIER_MON_SKARMORY_1, \ + FRONTIER_MON_CROBAT_1, \ + FRONTIER_MON_FEAROW_2, \ + FRONTIER_MON_DODRIO_2, \ + FRONTIER_MON_SKARMORY_2, \ + FRONTIER_MON_XATU_2, \ + FRONTIER_MON_CROBAT_2, \ + FRONTIER_MON_FEAROW_3, \ + FRONTIER_MON_DODRIO_3, \ + FRONTIER_MON_XATU_3, \ + FRONTIER_MON_SKARMORY_3, \ + FRONTIER_MON_CROBAT_3, \ + -1 + +#define FRONTIER_MONS_SAILOR_2 \ + FRONTIER_MON_MEDICHAM_3, \ + FRONTIER_MON_LANTURN_3, \ + FRONTIER_MON_WHISCASH_3, \ + FRONTIER_MON_QUAGSIRE_3, \ + FRONTIER_MON_HARIYAMA_3, \ + FRONTIER_MON_DEWGONG_3, \ + FRONTIER_MON_LUDICOLO_3, \ + FRONTIER_MON_SLOWBRO_3, \ + FRONTIER_MON_SLOWKING_3, \ + FRONTIER_MON_GOLDUCK_3, \ + FRONTIER_MON_WAILORD_3, \ + FRONTIER_MON_MACHAMP_3, \ + FRONTIER_MON_TENTACRUEL_3, \ + FRONTIER_MON_STARMIE_3, \ + FRONTIER_MON_VAPOREON_3, \ + FRONTIER_MON_BLASTOISE_3, \ + FRONTIER_MON_FERALIGATR_3, \ + FRONTIER_MON_WALREIN_3, \ + FRONTIER_MON_LAPRAS_3, \ + FRONTIER_MON_SWAMPERT_3, \ + FRONTIER_MON_GYARADOS_3, \ + FRONTIER_MON_KINGDRA_3, \ + FRONTIER_MON_MILOTIC_3, \ + -1 + +#define FRONTIER_MONS_HIKER_2 \ + FRONTIER_MON_DUGTRIO_3, \ + FRONTIER_MON_MEDICHAM_3, \ + FRONTIER_MON_BRELOOM_3, \ + FRONTIER_MON_MAROWAK_3, \ + FRONTIER_MON_HARIYAMA_3, \ + FRONTIER_MON_GOLEM_3, \ + FRONTIER_MON_RHYDON_3, \ + FRONTIER_MON_NIDOQUEEN_3, \ + FRONTIER_MON_NIDOKING_3, \ + FRONTIER_MON_CRADILY_3, \ + FRONTIER_MON_ARMALDO_3, \ + FRONTIER_MON_HERACROSS_3, \ + FRONTIER_MON_DONPHAN_3, \ + FRONTIER_MON_CLAYDOL_3, \ + FRONTIER_MON_MACHAMP_3, \ + FRONTIER_MON_SHUCKLE_3, \ + FRONTIER_MON_STEELIX_3, \ + FRONTIER_MON_AERODACTYL_3, \ + FRONTIER_MON_AGGRON_3, \ + FRONTIER_MON_BLAZIKEN_3, \ + -1 + +#define FRONTIER_MONS_KINDLER_2 \ + FRONTIER_MON_GRANBULL_3, \ + FRONTIER_MON_CLEFABLE_3, \ + FRONTIER_MON_EXPLOUD_3, \ + FRONTIER_MON_KANGASKHAN_3, \ + FRONTIER_MON_TAUROS_3, \ + FRONTIER_MON_MILTANK_3, \ + FRONTIER_MON_MAGMAR_3, \ + FRONTIER_MON_RAPIDASH_3, \ + FRONTIER_MON_URSARING_3, \ + FRONTIER_MON_HOUNDOOM_3, \ + FRONTIER_MON_NINETALES_3, \ + FRONTIER_MON_FLAREON_3, \ + FRONTIER_MON_BLAZIKEN_3, \ + FRONTIER_MON_CHARIZARD_3, \ + FRONTIER_MON_TYPHLOSION_3, \ + FRONTIER_MON_SNORLAX_3, \ + FRONTIER_MON_BLISSEY_3, \ + FRONTIER_MON_ARCANINE_3, \ + FRONTIER_MON_SLAKING_3, \ + -1 + +#define FRONTIER_MONS_GENTLEMAN_2 \ + FRONTIER_MON_MUK_3, \ + FRONTIER_MON_GENGAR_3, \ + FRONTIER_MON_AMPHAROS_3, \ + FRONTIER_MON_SCIZOR_3, \ + FRONTIER_MON_HERACROSS_3, \ + FRONTIER_MON_URSARING_3, \ + FRONTIER_MON_HOUNDOOM_3, \ + FRONTIER_MON_DONPHAN_3, \ + FRONTIER_MON_CLAYDOL_3, \ + FRONTIER_MON_WAILORD_3, \ + FRONTIER_MON_NINETALES_3, \ + FRONTIER_MON_MACHAMP_3, \ + FRONTIER_MON_SHUCKLE_3, \ + FRONTIER_MON_STEELIX_3, \ + FRONTIER_MON_TENTACRUEL_3, \ + FRONTIER_MON_AERODACTYL_3, \ + FRONTIER_MON_PORYGON2_3, \ + FRONTIER_MON_GARDEVOIR_3, \ + FRONTIER_MON_EXEGGUTOR_3, \ + FRONTIER_MON_STARMIE_3, \ + FRONTIER_MON_FLYGON_3, \ + FRONTIER_MON_VENUSAUR_3, \ + FRONTIER_MON_VAPOREON_3, \ + FRONTIER_MON_JOLTEON_3, \ + FRONTIER_MON_FLAREON_3, \ + FRONTIER_MON_MEGANIUM_3, \ + FRONTIER_MON_ESPEON_3, \ + FRONTIER_MON_UMBREON_3, \ + FRONTIER_MON_BLASTOISE_3, \ + FRONTIER_MON_FERALIGATR_3, \ + FRONTIER_MON_AGGRON_3, \ + FRONTIER_MON_BLAZIKEN_3, \ + FRONTIER_MON_WALREIN_3, \ + FRONTIER_MON_SCEPTILE_3, \ + FRONTIER_MON_CHARIZARD_3, \ + FRONTIER_MON_TYPHLOSION_3, \ + FRONTIER_MON_LAPRAS_3, \ + FRONTIER_MON_CROBAT_3, \ + FRONTIER_MON_SWAMPERT_3, \ + FRONTIER_MON_GYARADOS_3, \ + FRONTIER_MON_SNORLAX_3, \ + FRONTIER_MON_KINGDRA_3, \ + FRONTIER_MON_BLISSEY_3, \ + FRONTIER_MON_MILOTIC_3, \ + FRONTIER_MON_ARCANINE_3, \ + FRONTIER_MON_SALAMENCE_3, \ + FRONTIER_MON_METAGROSS_3, \ + FRONTIER_MON_SLAKING_3, \ + -1 + +#define FRONTIER_MONS_YOUNGSTER_LASS_3 \ + FRONTIER_MON_DUGTRIO_4, \ + FRONTIER_MON_MEDICHAM_4, \ + FRONTIER_MON_MISDREAVUS_4, \ + FRONTIER_MON_FEAROW_4, \ + FRONTIER_MON_GRANBULL_4, \ + FRONTIER_MON_JYNX_4, \ + FRONTIER_MON_DUSCLOPS_4, \ + FRONTIER_MON_DODRIO_4, \ + FRONTIER_MON_MR_MIME_4, \ + FRONTIER_MON_LANTURN_4, \ + FRONTIER_MON_BRELOOM_4, \ + FRONTIER_MON_FORRETRESS_4, \ + FRONTIER_MON_WHISCASH_4, \ + FRONTIER_MON_XATU_4, \ + FRONTIER_MON_SKARMORY_4, \ + FRONTIER_MON_MAROWAK_4, \ + FRONTIER_MON_QUAGSIRE_4, \ + FRONTIER_MON_CLEFABLE_4, \ + FRONTIER_MON_HARIYAMA_4, \ + FRONTIER_MON_RAICHU_4, \ + FRONTIER_MON_DEWGONG_4, \ + FRONTIER_MON_MANECTRIC_4, \ + FRONTIER_MON_VILEPLUME_4, \ + FRONTIER_MON_VICTREEBEL_4, \ + FRONTIER_MON_ELECTRODE_4, \ + FRONTIER_MON_EXPLOUD_4, \ + FRONTIER_MON_SHIFTRY_4, \ + FRONTIER_MON_GLALIE_4, \ + FRONTIER_MON_LUDICOLO_4, \ + FRONTIER_MON_HYPNO_4, \ + FRONTIER_MON_GOLEM_4, \ + FRONTIER_MON_RHYDON_4, \ + FRONTIER_MON_ALAKAZAM_4, \ + -1 + +#define FRONTIER_MONS_CAMPER_PICNICKER_2 \ + FRONTIER_MON_WEEZING_4, \ + FRONTIER_MON_KANGASKHAN_4, \ + FRONTIER_MON_ELECTABUZZ_4, \ + FRONTIER_MON_TAUROS_4, \ + FRONTIER_MON_SLOWBRO_4, \ + FRONTIER_MON_SLOWKING_4, \ + FRONTIER_MON_MILTANK_4, \ + FRONTIER_MON_ALTARIA_4, \ + FRONTIER_MON_NIDOQUEEN_4, \ + FRONTIER_MON_NIDOKING_4, \ + FRONTIER_MON_MAGMAR_4, \ + FRONTIER_MON_CRADILY_4, \ + FRONTIER_MON_ARMALDO_4, \ + FRONTIER_MON_GOLDUCK_4, \ + FRONTIER_MON_RAPIDASH_4, \ + FRONTIER_MON_MUK_4, \ + FRONTIER_MON_GENGAR_4, \ + FRONTIER_MON_AMPHAROS_4, \ + FRONTIER_MON_SCIZOR_4, \ + FRONTIER_MON_HERACROSS_4, \ + FRONTIER_MON_URSARING_4, \ + FRONTIER_MON_HOUNDOOM_4, \ + FRONTIER_MON_DONPHAN_4, \ + FRONTIER_MON_CLAYDOL_4, \ + FRONTIER_MON_WAILORD_4, \ + FRONTIER_MON_NINETALES_4, \ + FRONTIER_MON_MACHAMP_4, \ + FRONTIER_MON_SHUCKLE_4, \ + FRONTIER_MON_STEELIX_4, \ + FRONTIER_MON_TENTACRUEL_4, \ + FRONTIER_MON_AERODACTYL_4, \ + FRONTIER_MON_PORYGON2_4, \ + FRONTIER_MON_GARDEVOIR_4, \ + -1 + +#define FRONTIER_MONS_SWIMMER_M_2 \ + FRONTIER_MON_SHARPEDO_2, \ + FRONTIER_MON_MEDICHAM_4, \ + FRONTIER_MON_GRANBULL_4, \ + FRONTIER_MON_LANTURN_4, \ + FRONTIER_MON_WHISCASH_4, \ + FRONTIER_MON_QUAGSIRE_4, \ + FRONTIER_MON_CLEFABLE_4, \ + FRONTIER_MON_HARIYAMA_4, \ + FRONTIER_MON_DEWGONG_4, \ + FRONTIER_MON_EXPLOUD_4, \ + FRONTIER_MON_LUDICOLO_4, \ + FRONTIER_MON_KANGASKHAN_4, \ + FRONTIER_MON_TAUROS_4, \ + FRONTIER_MON_SLOWBRO_4, \ + FRONTIER_MON_SLOWKING_4, \ + FRONTIER_MON_MILTANK_4, \ + FRONTIER_MON_GOLDUCK_4, \ + FRONTIER_MON_URSARING_4, \ + FRONTIER_MON_WAILORD_4, \ + FRONTIER_MON_MACHAMP_4, \ + FRONTIER_MON_TENTACRUEL_4, \ + FRONTIER_MON_PORYGON2_4, \ + FRONTIER_MON_STARMIE_4, \ + FRONTIER_MON_VAPOREON_4, \ + FRONTIER_MON_BLASTOISE_4, \ + FRONTIER_MON_FERALIGATR_4, \ + FRONTIER_MON_WALREIN_4, \ + FRONTIER_MON_LAPRAS_4, \ + FRONTIER_MON_SWAMPERT_4, \ + FRONTIER_MON_GYARADOS_4, \ + FRONTIER_MON_SNORLAX_4, \ + FRONTIER_MON_KINGDRA_4, \ + FRONTIER_MON_BLISSEY_4, \ + FRONTIER_MON_MILOTIC_4, \ + FRONTIER_MON_SLAKING_4, \ + -1 + +#define FRONTIER_MONS_SWIMMER_F_2 \ + FRONTIER_MON_GRANBULL_4, \ + FRONTIER_MON_JYNX_4, \ + FRONTIER_MON_LANTURN_4, \ + FRONTIER_MON_WHISCASH_4, \ + FRONTIER_MON_QUAGSIRE_4, \ + FRONTIER_MON_CLEFABLE_4, \ + FRONTIER_MON_DEWGONG_4, \ + FRONTIER_MON_EXPLOUD_4, \ + FRONTIER_MON_GLALIE_4, \ + FRONTIER_MON_LUDICOLO_4, \ + FRONTIER_MON_KANGASKHAN_4, \ + FRONTIER_MON_TAUROS_4, \ + FRONTIER_MON_SLOWBRO_4, \ + FRONTIER_MON_SLOWKING_4, \ + FRONTIER_MON_MILTANK_4, \ + FRONTIER_MON_GOLDUCK_4, \ + FRONTIER_MON_URSARING_4, \ + FRONTIER_MON_WAILORD_4, \ + FRONTIER_MON_TENTACRUEL_4, \ + FRONTIER_MON_PORYGON2_4, \ + FRONTIER_MON_STARMIE_4, \ + FRONTIER_MON_VAPOREON_4, \ + FRONTIER_MON_BLASTOISE_4, \ + FRONTIER_MON_FERALIGATR_4, \ + FRONTIER_MON_WALREIN_4, \ + FRONTIER_MON_LAPRAS_4, \ + FRONTIER_MON_SWAMPERT_4, \ + FRONTIER_MON_GYARADOS_4, \ + FRONTIER_MON_SNORLAX_4, \ + FRONTIER_MON_KINGDRA_4, \ + FRONTIER_MON_BLISSEY_4, \ + FRONTIER_MON_MILOTIC_4, \ + FRONTIER_MON_SLAKING_4, \ + -1 + +#define FRONTIER_MONS_POKEFAN_3 \ + FRONTIER_MON_DELCATTY_2, \ + FRONTIER_MON_PORYGON_2, \ + FRONTIER_MON_DUNSPARCE_2, \ + FRONTIER_MON_WIGGLYTUFF_2, \ + FRONTIER_MON_KECLEON_2, \ + FRONTIER_MON_CHANSEY_2, \ + FRONTIER_MON_ABSOL_2, \ + FRONTIER_MON_MISDREAVUS_4, \ + FRONTIER_MON_JYNX_4, \ + FRONTIER_MON_MR_MIME_4, \ + FRONTIER_MON_LANTURN_4, \ + FRONTIER_MON_BRELOOM_4, \ + FRONTIER_MON_WHISCASH_4, \ + FRONTIER_MON_XATU_4, \ + FRONTIER_MON_QUAGSIRE_4, \ + FRONTIER_MON_CLEFABLE_4, \ + FRONTIER_MON_RAICHU_4, \ + FRONTIER_MON_DEWGONG_4, \ + FRONTIER_MON_VILEPLUME_4, \ + FRONTIER_MON_LUDICOLO_4, \ + FRONTIER_MON_SLOWBRO_4, \ + FRONTIER_MON_SLOWKING_4, \ + FRONTIER_MON_MILTANK_4, \ + FRONTIER_MON_ALTARIA_4, \ + FRONTIER_MON_RAPIDASH_4, \ + FRONTIER_MON_AMPHAROS_4, \ + FRONTIER_MON_NINETALES_4, \ + FRONTIER_MON_SHUCKLE_4, \ + FRONTIER_MON_PORYGON2_4, \ + FRONTIER_MON_GARDEVOIR_4, \ + FRONTIER_MON_FLYGON_4, \ + FRONTIER_MON_VAPOREON_4, \ + FRONTIER_MON_JOLTEON_4, \ + FRONTIER_MON_FLAREON_4, \ + FRONTIER_MON_ESPEON_4, \ + FRONTIER_MON_UMBREON_4, \ + FRONTIER_MON_LAPRAS_4, \ + FRONTIER_MON_SNORLAX_4, \ + FRONTIER_MON_BLISSEY_4, \ + FRONTIER_MON_MILOTIC_4, \ + -1 + +#define FRONTIER_MONS_PKMN_BREEDER_2 \ + FRONTIER_MON_EXEGGUTOR_4, \ + FRONTIER_MON_STARMIE_4, \ + FRONTIER_MON_FLYGON_4, \ + FRONTIER_MON_VENUSAUR_4, \ + FRONTIER_MON_VAPOREON_4, \ + FRONTIER_MON_JOLTEON_4, \ + FRONTIER_MON_FLAREON_4, \ + FRONTIER_MON_MEGANIUM_4, \ + FRONTIER_MON_ESPEON_4, \ + FRONTIER_MON_UMBREON_4, \ + FRONTIER_MON_BLASTOISE_4, \ + FRONTIER_MON_FERALIGATR_4, \ + FRONTIER_MON_AGGRON_4, \ + FRONTIER_MON_BLAZIKEN_4, \ + FRONTIER_MON_WALREIN_4, \ + FRONTIER_MON_SCEPTILE_4, \ + FRONTIER_MON_CHARIZARD_4, \ + FRONTIER_MON_TYPHLOSION_4, \ + FRONTIER_MON_LAPRAS_4, \ + FRONTIER_MON_CROBAT_4, \ + FRONTIER_MON_SWAMPERT_4, \ + FRONTIER_MON_GYARADOS_4, \ + FRONTIER_MON_SNORLAX_4, \ + FRONTIER_MON_KINGDRA_4, \ + FRONTIER_MON_BLISSEY_4, \ + FRONTIER_MON_MILOTIC_4, \ + FRONTIER_MON_ARCANINE_4, \ + FRONTIER_MON_SALAMENCE_4, \ + FRONTIER_MON_METAGROSS_4, \ + FRONTIER_MON_SLAKING_4, \ + -1 + +#define FRONTIER_MONS_COOLTRAINER_M_2A \ + FRONTIER_MON_MUK_1, \ + FRONTIER_MON_GENGAR_1, \ + FRONTIER_MON_AMPHAROS_1, \ + FRONTIER_MON_SCIZOR_1, \ + FRONTIER_MON_HERACROSS_1, \ + FRONTIER_MON_URSARING_1, \ + FRONTIER_MON_HOUNDOOM_1, \ + FRONTIER_MON_DONPHAN_1, \ + FRONTIER_MON_CLAYDOL_1, \ + FRONTIER_MON_WAILORD_1, \ + FRONTIER_MON_NINETALES_1, \ + FRONTIER_MON_MACHAMP_1, \ + FRONTIER_MON_SHUCKLE_1, \ + FRONTIER_MON_STEELIX_1, \ + FRONTIER_MON_TENTACRUEL_1, \ + FRONTIER_MON_AERODACTYL_1, \ + FRONTIER_MON_PORYGON2_1, \ + FRONTIER_MON_GARDEVOIR_1, \ + FRONTIER_MON_EXEGGUTOR_1, \ + FRONTIER_MON_STARMIE_1, \ + FRONTIER_MON_FLYGON_1, \ + FRONTIER_MON_VENUSAUR_1, \ + FRONTIER_MON_VAPOREON_1, \ + FRONTIER_MON_JOLTEON_1, \ + FRONTIER_MON_MUK_2, \ + FRONTIER_MON_GENGAR_2, \ + FRONTIER_MON_AMPHAROS_2, \ + FRONTIER_MON_SCIZOR_2, \ + FRONTIER_MON_HERACROSS_2, \ + FRONTIER_MON_URSARING_2, \ + FRONTIER_MON_HOUNDOOM_2, \ + FRONTIER_MON_DONPHAN_2, \ + FRONTIER_MON_CLAYDOL_2, \ + FRONTIER_MON_WAILORD_2, \ + FRONTIER_MON_NINETALES_2, \ + FRONTIER_MON_MACHAMP_2, \ + FRONTIER_MON_SHUCKLE_2, \ + FRONTIER_MON_STEELIX_2, \ + FRONTIER_MON_TENTACRUEL_2, \ + FRONTIER_MON_AERODACTYL_2, \ + FRONTIER_MON_PORYGON2_2, \ + FRONTIER_MON_GARDEVOIR_2, \ + FRONTIER_MON_EXEGGUTOR_2, \ + FRONTIER_MON_STARMIE_2, \ + FRONTIER_MON_FLYGON_2, \ + FRONTIER_MON_VENUSAUR_2, \ + FRONTIER_MON_VAPOREON_2, \ + FRONTIER_MON_JOLTEON_2, \ + FRONTIER_MON_MUK_3, \ + FRONTIER_MON_GENGAR_3, \ + FRONTIER_MON_AMPHAROS_3, \ + FRONTIER_MON_SCIZOR_3, \ + FRONTIER_MON_HERACROSS_3, \ + FRONTIER_MON_URSARING_3, \ + FRONTIER_MON_HOUNDOOM_3, \ + FRONTIER_MON_DONPHAN_3, \ + FRONTIER_MON_CLAYDOL_3, \ + FRONTIER_MON_WAILORD_3, \ + FRONTIER_MON_NINETALES_3, \ + FRONTIER_MON_MACHAMP_3, \ + FRONTIER_MON_SHUCKLE_3, \ + FRONTIER_MON_STEELIX_3, \ + FRONTIER_MON_TENTACRUEL_3, \ + FRONTIER_MON_AERODACTYL_3, \ + FRONTIER_MON_PORYGON2_3, \ + FRONTIER_MON_GARDEVOIR_3, \ + FRONTIER_MON_EXEGGUTOR_3, \ + FRONTIER_MON_STARMIE_3, \ + FRONTIER_MON_FLYGON_3, \ + FRONTIER_MON_VENUSAUR_3, \ + FRONTIER_MON_VAPOREON_3, \ + FRONTIER_MON_JOLTEON_3, \ + FRONTIER_MON_MUK_4, \ + FRONTIER_MON_GENGAR_4, \ + FRONTIER_MON_AMPHAROS_4, \ + FRONTIER_MON_SCIZOR_4, \ + FRONTIER_MON_HERACROSS_4, \ + FRONTIER_MON_URSARING_4, \ + FRONTIER_MON_HOUNDOOM_4, \ + FRONTIER_MON_DONPHAN_4, \ + FRONTIER_MON_CLAYDOL_4, \ + FRONTIER_MON_WAILORD_4, \ + FRONTIER_MON_NINETALES_4, \ + FRONTIER_MON_MACHAMP_4, \ + FRONTIER_MON_SHUCKLE_4, \ + FRONTIER_MON_STEELIX_4, \ + FRONTIER_MON_TENTACRUEL_4, \ + FRONTIER_MON_AERODACTYL_4, \ + FRONTIER_MON_PORYGON2_4, \ + FRONTIER_MON_GARDEVOIR_4, \ + FRONTIER_MON_EXEGGUTOR_4, \ + FRONTIER_MON_STARMIE_4, \ + FRONTIER_MON_FLYGON_4, \ + FRONTIER_MON_VENUSAUR_4, \ + FRONTIER_MON_VAPOREON_4, \ + FRONTIER_MON_JOLTEON_4, \ + -1 + +#define FRONTIER_MONS_COOLTRAINER_M_2B \ + FRONTIER_MON_FLAREON_1, \ + FRONTIER_MON_MEGANIUM_1, \ + FRONTIER_MON_ESPEON_1, \ + FRONTIER_MON_UMBREON_1, \ + FRONTIER_MON_BLASTOISE_1, \ + FRONTIER_MON_FERALIGATR_1, \ + FRONTIER_MON_AGGRON_1, \ + FRONTIER_MON_BLAZIKEN_1, \ + FRONTIER_MON_WALREIN_1, \ + FRONTIER_MON_SCEPTILE_1, \ + FRONTIER_MON_CHARIZARD_1, \ + FRONTIER_MON_TYPHLOSION_1, \ + FRONTIER_MON_LAPRAS_1, \ + FRONTIER_MON_CROBAT_1, \ + FRONTIER_MON_SWAMPERT_1, \ + FRONTIER_MON_GYARADOS_1, \ + FRONTIER_MON_SNORLAX_1, \ + FRONTIER_MON_KINGDRA_1, \ + FRONTIER_MON_BLISSEY_1, \ + FRONTIER_MON_MILOTIC_1, \ + FRONTIER_MON_ARCANINE_1, \ + FRONTIER_MON_SALAMENCE_1, \ + FRONTIER_MON_METAGROSS_1, \ + FRONTIER_MON_SLAKING_1, \ + FRONTIER_MON_FLAREON_2, \ + FRONTIER_MON_MEGANIUM_2, \ + FRONTIER_MON_ESPEON_2, \ + FRONTIER_MON_UMBREON_2, \ + FRONTIER_MON_BLASTOISE_2, \ + FRONTIER_MON_FERALIGATR_2, \ + FRONTIER_MON_AGGRON_2, \ + FRONTIER_MON_BLAZIKEN_2, \ + FRONTIER_MON_WALREIN_2, \ + FRONTIER_MON_SCEPTILE_2, \ + FRONTIER_MON_CHARIZARD_2, \ + FRONTIER_MON_TYPHLOSION_2, \ + FRONTIER_MON_LAPRAS_2, \ + FRONTIER_MON_CROBAT_2, \ + FRONTIER_MON_SWAMPERT_2, \ + FRONTIER_MON_GYARADOS_2, \ + FRONTIER_MON_SNORLAX_2, \ + FRONTIER_MON_KINGDRA_2, \ + FRONTIER_MON_BLISSEY_2, \ + FRONTIER_MON_MILOTIC_2, \ + FRONTIER_MON_ARCANINE_2, \ + FRONTIER_MON_SALAMENCE_2, \ + FRONTIER_MON_METAGROSS_2, \ + FRONTIER_MON_SLAKING_2, \ + FRONTIER_MON_FLAREON_3, \ + FRONTIER_MON_MEGANIUM_3, \ + FRONTIER_MON_ESPEON_3, \ + FRONTIER_MON_UMBREON_3, \ + FRONTIER_MON_BLASTOISE_3, \ + FRONTIER_MON_FERALIGATR_3, \ + FRONTIER_MON_AGGRON_3, \ + FRONTIER_MON_BLAZIKEN_3, \ + FRONTIER_MON_WALREIN_3, \ + FRONTIER_MON_SCEPTILE_3, \ + FRONTIER_MON_CHARIZARD_3, \ + FRONTIER_MON_TYPHLOSION_3, \ + FRONTIER_MON_LAPRAS_3, \ + FRONTIER_MON_CROBAT_3, \ + FRONTIER_MON_SWAMPERT_3, \ + FRONTIER_MON_GYARADOS_3, \ + FRONTIER_MON_SNORLAX_3, \ + FRONTIER_MON_KINGDRA_3, \ + FRONTIER_MON_BLISSEY_3, \ + FRONTIER_MON_MILOTIC_3, \ + FRONTIER_MON_ARCANINE_3, \ + FRONTIER_MON_SALAMENCE_3, \ + FRONTIER_MON_METAGROSS_3, \ + FRONTIER_MON_SLAKING_3, \ + FRONTIER_MON_FLAREON_4, \ + FRONTIER_MON_MEGANIUM_4, \ + FRONTIER_MON_ESPEON_4, \ + FRONTIER_MON_UMBREON_4, \ + FRONTIER_MON_BLASTOISE_4, \ + FRONTIER_MON_FERALIGATR_4, \ + FRONTIER_MON_AGGRON_4, \ + FRONTIER_MON_BLAZIKEN_4, \ + FRONTIER_MON_WALREIN_4, \ + FRONTIER_MON_SCEPTILE_4, \ + FRONTIER_MON_CHARIZARD_4, \ + FRONTIER_MON_TYPHLOSION_4, \ + FRONTIER_MON_LAPRAS_4, \ + FRONTIER_MON_CROBAT_4, \ + FRONTIER_MON_SWAMPERT_4, \ + FRONTIER_MON_GYARADOS_4, \ + FRONTIER_MON_SNORLAX_4, \ + FRONTIER_MON_KINGDRA_4, \ + FRONTIER_MON_BLISSEY_4, \ + FRONTIER_MON_MILOTIC_4, \ + FRONTIER_MON_ARCANINE_4, \ + FRONTIER_MON_SALAMENCE_4, \ + FRONTIER_MON_METAGROSS_4, \ + FRONTIER_MON_SLAKING_4, \ + -1 + +// Cooltrainer M uses Latios, Cooltrainer F uses Latias +#define FRONTIER_MONS_COOLTRAINER_2C(lati) \ + FRONTIER_MON_GENGAR_1, \ + FRONTIER_MON_URSARING_1, \ + FRONTIER_MON_MACHAMP_1, \ + FRONTIER_MON_GARDEVOIR_1, \ + FRONTIER_MON_STARMIE_1, \ + FRONTIER_MON_LAPRAS_1, \ + FRONTIER_MON_SNORLAX_1, \ + FRONTIER_MON_SALAMENCE_1, \ + FRONTIER_MON_METAGROSS_1, \ + FRONTIER_MON_GENGAR_2, \ + FRONTIER_MON_URSARING_2, \ + FRONTIER_MON_MACHAMP_2, \ + FRONTIER_MON_GARDEVOIR_2, \ + FRONTIER_MON_STARMIE_2, \ + FRONTIER_MON_LAPRAS_2, \ + FRONTIER_MON_SNORLAX_2, \ + FRONTIER_MON_SALAMENCE_2, \ + FRONTIER_MON_METAGROSS_2, \ + FRONTIER_MON_GENGAR_3, \ + FRONTIER_MON_URSARING_3, \ + FRONTIER_MON_MACHAMP_3, \ + FRONTIER_MON_GARDEVOIR_3, \ + FRONTIER_MON_STARMIE_3, \ + FRONTIER_MON_LAPRAS_3, \ + FRONTIER_MON_SNORLAX_3, \ + FRONTIER_MON_SALAMENCE_3, \ + FRONTIER_MON_METAGROSS_3, \ + FRONTIER_MON_GENGAR_4, \ + FRONTIER_MON_URSARING_4, \ + FRONTIER_MON_MACHAMP_4, \ + FRONTIER_MON_GARDEVOIR_4, \ + FRONTIER_MON_STARMIE_4, \ + FRONTIER_MON_LAPRAS_4, \ + FRONTIER_MON_SNORLAX_4, \ + FRONTIER_MON_SALAMENCE_4, \ + FRONTIER_MON_METAGROSS_4, \ + FRONTIER_MON_##lati##_1, \ + FRONTIER_MON_##lati##_2, \ + FRONTIER_MON_##lati##_3, \ + FRONTIER_MON_##lati##_4, \ + FRONTIER_MON_GENGAR_5, \ + FRONTIER_MON_GENGAR_6, \ + FRONTIER_MON_GENGAR_7, \ + FRONTIER_MON_GENGAR_8, \ + FRONTIER_MON_URSARING_5, \ + FRONTIER_MON_URSARING_6, \ + FRONTIER_MON_URSARING_7, \ + FRONTIER_MON_URSARING_8, \ + FRONTIER_MON_MACHAMP_5, \ + FRONTIER_MON_MACHAMP_6, \ + FRONTIER_MON_MACHAMP_7, \ + FRONTIER_MON_MACHAMP_8, \ + FRONTIER_MON_GARDEVOIR_5, \ + FRONTIER_MON_GARDEVOIR_6, \ + FRONTIER_MON_GARDEVOIR_7, \ + FRONTIER_MON_GARDEVOIR_8, \ + FRONTIER_MON_STARMIE_5, \ + FRONTIER_MON_STARMIE_6, \ + FRONTIER_MON_STARMIE_7, \ + FRONTIER_MON_STARMIE_8, \ + FRONTIER_MON_LAPRAS_5, \ + FRONTIER_MON_LAPRAS_6, \ + FRONTIER_MON_LAPRAS_7, \ + FRONTIER_MON_LAPRAS_8, \ + FRONTIER_MON_SNORLAX_5, \ + FRONTIER_MON_SNORLAX_6, \ + FRONTIER_MON_SNORLAX_7, \ + FRONTIER_MON_SNORLAX_8, \ + FRONTIER_MON_SALAMENCE_5, \ + FRONTIER_MON_SALAMENCE_6, \ + FRONTIER_MON_SALAMENCE_7, \ + FRONTIER_MON_SALAMENCE_8, \ + FRONTIER_MON_METAGROSS_5, \ + FRONTIER_MON_METAGROSS_6, \ + FRONTIER_MON_METAGROSS_7, \ + FRONTIER_MON_METAGROSS_8, \ + FRONTIER_MON_##lati##_5, \ + FRONTIER_MON_##lati##_6, \ + FRONTIER_MON_##lati##_7, \ + FRONTIER_MON_##lati##_8, \ + FRONTIER_MON_DRAGONITE_1, \ + FRONTIER_MON_DRAGONITE_2, \ + FRONTIER_MON_DRAGONITE_3, \ + FRONTIER_MON_DRAGONITE_4, \ + FRONTIER_MON_DRAGONITE_5, \ + FRONTIER_MON_DRAGONITE_6, \ + FRONTIER_MON_DRAGONITE_7, \ + FRONTIER_MON_DRAGONITE_8, \ + FRONTIER_MON_DRAGONITE_9, \ + FRONTIER_MON_DRAGONITE_10, \ + FRONTIER_MON_TYRANITAR_1, \ + FRONTIER_MON_TYRANITAR_2, \ + FRONTIER_MON_TYRANITAR_3, \ + FRONTIER_MON_TYRANITAR_4, \ + FRONTIER_MON_TYRANITAR_5, \ + FRONTIER_MON_TYRANITAR_6, \ + FRONTIER_MON_TYRANITAR_7, \ + FRONTIER_MON_TYRANITAR_8, \ + FRONTIER_MON_TYRANITAR_9, \ + FRONTIER_MON_TYRANITAR_10, \ + -1 + +// Also used by Pkmn Ranger M/F +// For both classes, M uses Latios and F uses Latias +#define FRONTIER_MONS_COOLTRAINER_2D(lati) \ + FRONTIER_MON_ARTICUNO_1, \ + FRONTIER_MON_ZAPDOS_1, \ + FRONTIER_MON_MOLTRES_1, \ + FRONTIER_MON_RAIKOU_1, \ + FRONTIER_MON_ENTEI_1, \ + FRONTIER_MON_SUICUNE_1, \ + FRONTIER_MON_REGIROCK_1, \ + FRONTIER_MON_REGICE_1, \ + FRONTIER_MON_REGISTEEL_1, \ + FRONTIER_MON_##lati##_1, \ + FRONTIER_MON_ARTICUNO_2, \ + FRONTIER_MON_ZAPDOS_2, \ + FRONTIER_MON_MOLTRES_2, \ + FRONTIER_MON_RAIKOU_2, \ + FRONTIER_MON_ENTEI_2, \ + FRONTIER_MON_SUICUNE_2, \ + FRONTIER_MON_REGIROCK_2, \ + FRONTIER_MON_REGICE_2, \ + FRONTIER_MON_REGISTEEL_2, \ + FRONTIER_MON_##lati##_2, \ + FRONTIER_MON_ARTICUNO_3, \ + FRONTIER_MON_ZAPDOS_3, \ + FRONTIER_MON_MOLTRES_3, \ + FRONTIER_MON_RAIKOU_3, \ + FRONTIER_MON_ENTEI_3, \ + FRONTIER_MON_SUICUNE_3, \ + FRONTIER_MON_REGIROCK_3, \ + FRONTIER_MON_REGICE_3, \ + FRONTIER_MON_REGISTEEL_3, \ + FRONTIER_MON_##lati##_3, \ + FRONTIER_MON_ARTICUNO_4, \ + FRONTIER_MON_ZAPDOS_4, \ + FRONTIER_MON_MOLTRES_4, \ + FRONTIER_MON_RAIKOU_4, \ + FRONTIER_MON_ENTEI_4, \ + FRONTIER_MON_SUICUNE_4, \ + FRONTIER_MON_REGIROCK_4, \ + FRONTIER_MON_REGICE_4, \ + FRONTIER_MON_REGISTEEL_4, \ + FRONTIER_MON_##lati##_4, \ + FRONTIER_MON_REGIROCK_5, \ + FRONTIER_MON_REGIROCK_6, \ + FRONTIER_MON_REGICE_5, \ + FRONTIER_MON_REGICE_6, \ + FRONTIER_MON_REGISTEEL_5, \ + FRONTIER_MON_REGISTEEL_6, \ + FRONTIER_MON_##lati##_5, \ + FRONTIER_MON_##lati##_6, \ + FRONTIER_MON_##lati##_7, \ + FRONTIER_MON_##lati##_8, \ + FRONTIER_MON_DRAGONITE_1, \ + FRONTIER_MON_DRAGONITE_2, \ + FRONTIER_MON_DRAGONITE_3, \ + FRONTIER_MON_DRAGONITE_4, \ + FRONTIER_MON_DRAGONITE_5, \ + FRONTIER_MON_DRAGONITE_6, \ + FRONTIER_MON_DRAGONITE_7, \ + FRONTIER_MON_DRAGONITE_8, \ + FRONTIER_MON_DRAGONITE_9, \ + FRONTIER_MON_DRAGONITE_10, \ + FRONTIER_MON_TYRANITAR_1, \ + FRONTIER_MON_TYRANITAR_2, \ + FRONTIER_MON_TYRANITAR_3, \ + FRONTIER_MON_TYRANITAR_4, \ + FRONTIER_MON_TYRANITAR_5, \ + FRONTIER_MON_TYRANITAR_6, \ + FRONTIER_MON_TYRANITAR_7, \ + FRONTIER_MON_TYRANITAR_8, \ + FRONTIER_MON_TYRANITAR_9, \ + FRONTIER_MON_TYRANITAR_10, \ + FRONTIER_MON_ARTICUNO_5, \ + FRONTIER_MON_ARTICUNO_6, \ + FRONTIER_MON_ZAPDOS_5, \ + FRONTIER_MON_ZAPDOS_6, \ + FRONTIER_MON_MOLTRES_5, \ + FRONTIER_MON_MOLTRES_6, \ + FRONTIER_MON_RAIKOU_5, \ + FRONTIER_MON_RAIKOU_6, \ + FRONTIER_MON_ENTEI_5, \ + FRONTIER_MON_ENTEI_6, \ + FRONTIER_MON_SUICUNE_5, \ + FRONTIER_MON_SUICUNE_6, \ + -1 + +#define FRONTIER_MONS_COOLTRAINER_F_2A \ + FRONTIER_MON_DUGTRIO_1, \ + FRONTIER_MON_MEDICHAM_1, \ + FRONTIER_MON_MISDREAVUS_1, \ + FRONTIER_MON_FEAROW_1, \ + FRONTIER_MON_GRANBULL_1, \ + FRONTIER_MON_JYNX_1, \ + FRONTIER_MON_DUSCLOPS_1, \ + FRONTIER_MON_DODRIO_1, \ + FRONTIER_MON_MR_MIME_1, \ + FRONTIER_MON_LANTURN_1, \ + FRONTIER_MON_BRELOOM_1, \ + FRONTIER_MON_FORRETRESS_1, \ + FRONTIER_MON_WHISCASH_1, \ + FRONTIER_MON_XATU_1, \ + FRONTIER_MON_SKARMORY_1, \ + FRONTIER_MON_MAROWAK_1, \ + FRONTIER_MON_QUAGSIRE_1, \ + FRONTIER_MON_CLEFABLE_1, \ + FRONTIER_MON_HARIYAMA_1, \ + FRONTIER_MON_RAICHU_1, \ + FRONTIER_MON_DEWGONG_1, \ + FRONTIER_MON_MANECTRIC_1, \ + FRONTIER_MON_VILEPLUME_1, \ + FRONTIER_MON_VICTREEBEL_1, \ + FRONTIER_MON_DUGTRIO_2, \ + FRONTIER_MON_MEDICHAM_2, \ + FRONTIER_MON_MAROWAK_2, \ + FRONTIER_MON_QUAGSIRE_2, \ + FRONTIER_MON_MISDREAVUS_2, \ + FRONTIER_MON_FEAROW_2, \ + FRONTIER_MON_GRANBULL_2, \ + FRONTIER_MON_JYNX_2, \ + FRONTIER_MON_DUSCLOPS_2, \ + FRONTIER_MON_DODRIO_2, \ + FRONTIER_MON_MR_MIME_2, \ + FRONTIER_MON_LANTURN_2, \ + FRONTIER_MON_BRELOOM_2, \ + FRONTIER_MON_FORRETRESS_2, \ + FRONTIER_MON_SKARMORY_2, \ + FRONTIER_MON_WHISCASH_2, \ + FRONTIER_MON_XATU_2, \ + FRONTIER_MON_CLEFABLE_2, \ + FRONTIER_MON_HARIYAMA_2, \ + FRONTIER_MON_RAICHU_2, \ + FRONTIER_MON_DEWGONG_2, \ + FRONTIER_MON_MANECTRIC_2, \ + FRONTIER_MON_VILEPLUME_2, \ + FRONTIER_MON_VICTREEBEL_2, \ + FRONTIER_MON_DUGTRIO_3, \ + FRONTIER_MON_MEDICHAM_3, \ + FRONTIER_MON_MISDREAVUS_3, \ + FRONTIER_MON_FEAROW_3, \ + FRONTIER_MON_GRANBULL_3, \ + FRONTIER_MON_JYNX_3, \ + FRONTIER_MON_DUSCLOPS_3, \ + FRONTIER_MON_DODRIO_3, \ + FRONTIER_MON_MR_MIME_3, \ + FRONTIER_MON_LANTURN_3, \ + FRONTIER_MON_BRELOOM_3, \ + FRONTIER_MON_FORRETRESS_3, \ + FRONTIER_MON_WHISCASH_3, \ + FRONTIER_MON_XATU_3, \ + FRONTIER_MON_SKARMORY_3, \ + FRONTIER_MON_MAROWAK_3, \ + FRONTIER_MON_QUAGSIRE_3, \ + FRONTIER_MON_CLEFABLE_3, \ + FRONTIER_MON_HARIYAMA_3, \ + FRONTIER_MON_RAICHU_3, \ + FRONTIER_MON_DEWGONG_3, \ + FRONTIER_MON_MANECTRIC_3, \ + FRONTIER_MON_VILEPLUME_3, \ + FRONTIER_MON_VICTREEBEL_3, \ + FRONTIER_MON_DUGTRIO_4, \ + FRONTIER_MON_MEDICHAM_4, \ + FRONTIER_MON_MISDREAVUS_4, \ + FRONTIER_MON_FEAROW_4, \ + FRONTIER_MON_GRANBULL_4, \ + FRONTIER_MON_JYNX_4, \ + FRONTIER_MON_DUSCLOPS_4, \ + FRONTIER_MON_DODRIO_4, \ + FRONTIER_MON_MR_MIME_4, \ + FRONTIER_MON_LANTURN_4, \ + FRONTIER_MON_BRELOOM_4, \ + FRONTIER_MON_FORRETRESS_4, \ + FRONTIER_MON_WHISCASH_4, \ + FRONTIER_MON_XATU_4, \ + FRONTIER_MON_SKARMORY_4, \ + FRONTIER_MON_MAROWAK_4, \ + FRONTIER_MON_QUAGSIRE_4, \ + FRONTIER_MON_CLEFABLE_4, \ + FRONTIER_MON_HARIYAMA_4, \ + FRONTIER_MON_RAICHU_4, \ + FRONTIER_MON_DEWGONG_4, \ + FRONTIER_MON_MANECTRIC_4, \ + FRONTIER_MON_VILEPLUME_4, \ + FRONTIER_MON_VICTREEBEL_4, \ + -1 + +#define FRONTIER_MONS_COOLTRAINER_F_2B \ + FRONTIER_MON_ELECTRODE_1, \ + FRONTIER_MON_EXPLOUD_1, \ + FRONTIER_MON_SHIFTRY_1, \ + FRONTIER_MON_GLALIE_1, \ + FRONTIER_MON_LUDICOLO_1, \ + FRONTIER_MON_HYPNO_1, \ + FRONTIER_MON_GOLEM_1, \ + FRONTIER_MON_RHYDON_1, \ + FRONTIER_MON_ALAKAZAM_1, \ + FRONTIER_MON_WEEZING_1, \ + FRONTIER_MON_KANGASKHAN_1, \ + FRONTIER_MON_ELECTABUZZ_1, \ + FRONTIER_MON_TAUROS_1, \ + FRONTIER_MON_SLOWBRO_1, \ + FRONTIER_MON_SLOWKING_1, \ + FRONTIER_MON_MILTANK_1, \ + FRONTIER_MON_ALTARIA_1, \ + FRONTIER_MON_NIDOQUEEN_1, \ + FRONTIER_MON_NIDOKING_1, \ + FRONTIER_MON_MAGMAR_1, \ + FRONTIER_MON_CRADILY_1, \ + FRONTIER_MON_ARMALDO_1, \ + FRONTIER_MON_GOLDUCK_1, \ + FRONTIER_MON_RAPIDASH_1, \ + FRONTIER_MON_ELECTRODE_2, \ + FRONTIER_MON_EXPLOUD_2, \ + FRONTIER_MON_SHIFTRY_2, \ + FRONTIER_MON_GLALIE_2, \ + FRONTIER_MON_LUDICOLO_2, \ + FRONTIER_MON_HYPNO_2, \ + FRONTIER_MON_GOLEM_2, \ + FRONTIER_MON_RHYDON_2, \ + FRONTIER_MON_ALAKAZAM_2, \ + FRONTIER_MON_WEEZING_2, \ + FRONTIER_MON_KANGASKHAN_2, \ + FRONTIER_MON_ELECTABUZZ_2, \ + FRONTIER_MON_TAUROS_2, \ + FRONTIER_MON_SLOWBRO_2, \ + FRONTIER_MON_SLOWKING_2, \ + FRONTIER_MON_MILTANK_2, \ + FRONTIER_MON_ALTARIA_2, \ + FRONTIER_MON_NIDOQUEEN_2, \ + FRONTIER_MON_NIDOKING_2, \ + FRONTIER_MON_MAGMAR_2, \ + FRONTIER_MON_CRADILY_2, \ + FRONTIER_MON_ARMALDO_2, \ + FRONTIER_MON_GOLDUCK_2, \ + FRONTIER_MON_RAPIDASH_2, \ + FRONTIER_MON_ELECTRODE_3, \ + FRONTIER_MON_EXPLOUD_3, \ + FRONTIER_MON_SHIFTRY_3, \ + FRONTIER_MON_GLALIE_3, \ + FRONTIER_MON_LUDICOLO_3, \ + FRONTIER_MON_HYPNO_3, \ + FRONTIER_MON_GOLEM_3, \ + FRONTIER_MON_RHYDON_3, \ + FRONTIER_MON_ALAKAZAM_3, \ + FRONTIER_MON_WEEZING_3, \ + FRONTIER_MON_KANGASKHAN_3, \ + FRONTIER_MON_ELECTABUZZ_3, \ + FRONTIER_MON_TAUROS_3, \ + FRONTIER_MON_SLOWBRO_3, \ + FRONTIER_MON_SLOWKING_3, \ + FRONTIER_MON_MILTANK_3, \ + FRONTIER_MON_ALTARIA_3, \ + FRONTIER_MON_NIDOQUEEN_3, \ + FRONTIER_MON_NIDOKING_3, \ + FRONTIER_MON_MAGMAR_3, \ + FRONTIER_MON_CRADILY_3, \ + FRONTIER_MON_ARMALDO_3, \ + FRONTIER_MON_GOLDUCK_3, \ + FRONTIER_MON_RAPIDASH_3, \ + FRONTIER_MON_ELECTRODE_4, \ + FRONTIER_MON_EXPLOUD_4, \ + FRONTIER_MON_SHIFTRY_4, \ + FRONTIER_MON_GLALIE_4, \ + FRONTIER_MON_LUDICOLO_4, \ + FRONTIER_MON_HYPNO_4, \ + FRONTIER_MON_GOLEM_4, \ + FRONTIER_MON_RHYDON_4, \ + FRONTIER_MON_ALAKAZAM_4, \ + FRONTIER_MON_WEEZING_4, \ + FRONTIER_MON_KANGASKHAN_4, \ + FRONTIER_MON_ELECTABUZZ_4, \ + FRONTIER_MON_TAUROS_4, \ + FRONTIER_MON_SLOWBRO_4, \ + FRONTIER_MON_SLOWKING_4, \ + FRONTIER_MON_MILTANK_4, \ + FRONTIER_MON_ALTARIA_4, \ + FRONTIER_MON_NIDOQUEEN_4, \ + FRONTIER_MON_NIDOKING_4, \ + FRONTIER_MON_MAGMAR_4, \ + FRONTIER_MON_CRADILY_4, \ + FRONTIER_MON_ARMALDO_4, \ + FRONTIER_MON_GOLDUCK_4, \ + FRONTIER_MON_RAPIDASH_4, \ + -1 + +// Used by Pkmn Ranger M, Gentleman, Running Triathlete, and Cycling Triathlete +#define FRONTIER_MONS_GENERAL_A \ + FRONTIER_MON_DUGTRIO_4, \ + FRONTIER_MON_MEDICHAM_4, \ + FRONTIER_MON_MISDREAVUS_4, \ + FRONTIER_MON_FEAROW_4, \ + FRONTIER_MON_GRANBULL_4, \ + FRONTIER_MON_JYNX_4, \ + FRONTIER_MON_DUSCLOPS_4, \ + FRONTIER_MON_DODRIO_4, \ + FRONTIER_MON_MR_MIME_4, \ + FRONTIER_MON_LANTURN_4, \ + FRONTIER_MON_BRELOOM_4, \ + FRONTIER_MON_FORRETRESS_4, \ + FRONTIER_MON_WHISCASH_4, \ + FRONTIER_MON_XATU_4, \ + FRONTIER_MON_SKARMORY_4, \ + FRONTIER_MON_MAROWAK_4, \ + FRONTIER_MON_QUAGSIRE_4, \ + FRONTIER_MON_CLEFABLE_4, \ + FRONTIER_MON_HARIYAMA_4, \ + FRONTIER_MON_RAICHU_4, \ + FRONTIER_MON_DEWGONG_4, \ + FRONTIER_MON_MANECTRIC_4, \ + FRONTIER_MON_VILEPLUME_4, \ + FRONTIER_MON_VICTREEBEL_4, \ + FRONTIER_MON_ELECTRODE_4, \ + FRONTIER_MON_EXPLOUD_4, \ + FRONTIER_MON_SHIFTRY_4, \ + FRONTIER_MON_GLALIE_4, \ + FRONTIER_MON_LUDICOLO_4, \ + FRONTIER_MON_HYPNO_4, \ + FRONTIER_MON_GOLEM_4, \ + FRONTIER_MON_RHYDON_4, \ + FRONTIER_MON_ALAKAZAM_4, \ + FRONTIER_MON_WEEZING_4, \ + FRONTIER_MON_KANGASKHAN_4, \ + FRONTIER_MON_ELECTABUZZ_4, \ + FRONTIER_MON_TAUROS_4, \ + FRONTIER_MON_SLOWBRO_4, \ + FRONTIER_MON_SLOWKING_4, \ + FRONTIER_MON_MILTANK_4, \ + FRONTIER_MON_ALTARIA_4, \ + FRONTIER_MON_NIDOQUEEN_4, \ + FRONTIER_MON_NIDOKING_4, \ + FRONTIER_MON_MAGMAR_4, \ + FRONTIER_MON_CRADILY_4, \ + FRONTIER_MON_ARMALDO_4, \ + FRONTIER_MON_GOLDUCK_4, \ + FRONTIER_MON_RAPIDASH_4, \ + FRONTIER_MON_MUK_4, \ + FRONTIER_MON_GENGAR_4, \ + FRONTIER_MON_AMPHAROS_4, \ + FRONTIER_MON_SCIZOR_4, \ + FRONTIER_MON_HERACROSS_4, \ + FRONTIER_MON_URSARING_4, \ + FRONTIER_MON_HOUNDOOM_4, \ + FRONTIER_MON_DONPHAN_4, \ + FRONTIER_MON_CLAYDOL_4, \ + FRONTIER_MON_WAILORD_4, \ + FRONTIER_MON_NINETALES_4, \ + FRONTIER_MON_MACHAMP_4, \ + FRONTIER_MON_SHUCKLE_4, \ + FRONTIER_MON_STEELIX_4, \ + FRONTIER_MON_TENTACRUEL_4, \ + FRONTIER_MON_AERODACTYL_4, \ + FRONTIER_MON_PORYGON2_4, \ + FRONTIER_MON_GARDEVOIR_4, \ + FRONTIER_MON_EXEGGUTOR_4, \ + FRONTIER_MON_STARMIE_4, \ + FRONTIER_MON_FLYGON_4, \ + FRONTIER_MON_VENUSAUR_4, \ + FRONTIER_MON_VAPOREON_4, \ + FRONTIER_MON_JOLTEON_4, \ + FRONTIER_MON_FLAREON_4, \ + FRONTIER_MON_MEGANIUM_4, \ + FRONTIER_MON_ESPEON_4, \ + FRONTIER_MON_UMBREON_4, \ + FRONTIER_MON_BLASTOISE_4, \ + FRONTIER_MON_FERALIGATR_4, \ + FRONTIER_MON_AGGRON_4, \ + FRONTIER_MON_BLAZIKEN_4, \ + FRONTIER_MON_WALREIN_4, \ + FRONTIER_MON_SCEPTILE_4, \ + FRONTIER_MON_CHARIZARD_4, \ + FRONTIER_MON_TYPHLOSION_4, \ + FRONTIER_MON_LAPRAS_4, \ + FRONTIER_MON_CROBAT_4, \ + FRONTIER_MON_SWAMPERT_4, \ + FRONTIER_MON_GYARADOS_4, \ + FRONTIER_MON_SNORLAX_4, \ + FRONTIER_MON_KINGDRA_4, \ + FRONTIER_MON_BLISSEY_4, \ + FRONTIER_MON_MILOTIC_4, \ + FRONTIER_MON_ARCANINE_4, \ + FRONTIER_MON_SALAMENCE_4, \ + FRONTIER_MON_METAGROSS_4, \ + FRONTIER_MON_SLAKING_4, \ + -1 + +// Identical to FRONTIER_MONS_GENERAL_A but _3 +// Used by Pkmn Ranger, Running Triathlete, and Cycling Triathlete +#define FRONTIER_MONS_GENERAL_B \ + FRONTIER_MON_DUGTRIO_3, \ + FRONTIER_MON_MEDICHAM_3, \ + FRONTIER_MON_MISDREAVUS_3, \ + FRONTIER_MON_FEAROW_3, \ + FRONTIER_MON_GRANBULL_3, \ + FRONTIER_MON_JYNX_3, \ + FRONTIER_MON_DUSCLOPS_3, \ + FRONTIER_MON_DODRIO_3, \ + FRONTIER_MON_MR_MIME_3, \ + FRONTIER_MON_LANTURN_3, \ + FRONTIER_MON_BRELOOM_3, \ + FRONTIER_MON_FORRETRESS_3, \ + FRONTIER_MON_WHISCASH_3, \ + FRONTIER_MON_XATU_3, \ + FRONTIER_MON_SKARMORY_3, \ + FRONTIER_MON_MAROWAK_3, \ + FRONTIER_MON_QUAGSIRE_3, \ + FRONTIER_MON_CLEFABLE_3, \ + FRONTIER_MON_HARIYAMA_3, \ + FRONTIER_MON_RAICHU_3, \ + FRONTIER_MON_DEWGONG_3, \ + FRONTIER_MON_MANECTRIC_3, \ + FRONTIER_MON_VILEPLUME_3, \ + FRONTIER_MON_VICTREEBEL_3, \ + FRONTIER_MON_ELECTRODE_3, \ + FRONTIER_MON_EXPLOUD_3, \ + FRONTIER_MON_SHIFTRY_3, \ + FRONTIER_MON_GLALIE_3, \ + FRONTIER_MON_LUDICOLO_3, \ + FRONTIER_MON_HYPNO_3, \ + FRONTIER_MON_GOLEM_3, \ + FRONTIER_MON_RHYDON_3, \ + FRONTIER_MON_ALAKAZAM_3, \ + FRONTIER_MON_WEEZING_3, \ + FRONTIER_MON_KANGASKHAN_3, \ + FRONTIER_MON_ELECTABUZZ_3, \ + FRONTIER_MON_TAUROS_3, \ + FRONTIER_MON_SLOWBRO_3, \ + FRONTIER_MON_SLOWKING_3, \ + FRONTIER_MON_MILTANK_3, \ + FRONTIER_MON_ALTARIA_3, \ + FRONTIER_MON_NIDOQUEEN_3, \ + FRONTIER_MON_NIDOKING_3, \ + FRONTIER_MON_MAGMAR_3, \ + FRONTIER_MON_CRADILY_3, \ + FRONTIER_MON_ARMALDO_3, \ + FRONTIER_MON_GOLDUCK_3, \ + FRONTIER_MON_RAPIDASH_3, \ + FRONTIER_MON_MUK_3, \ + FRONTIER_MON_GENGAR_3, \ + FRONTIER_MON_AMPHAROS_3, \ + FRONTIER_MON_SCIZOR_3, \ + FRONTIER_MON_HERACROSS_3, \ + FRONTIER_MON_URSARING_3, \ + FRONTIER_MON_HOUNDOOM_3, \ + FRONTIER_MON_DONPHAN_3, \ + FRONTIER_MON_CLAYDOL_3, \ + FRONTIER_MON_WAILORD_3, \ + FRONTIER_MON_NINETALES_3, \ + FRONTIER_MON_MACHAMP_3, \ + FRONTIER_MON_SHUCKLE_3, \ + FRONTIER_MON_STEELIX_3, \ + FRONTIER_MON_TENTACRUEL_3, \ + FRONTIER_MON_AERODACTYL_3, \ + FRONTIER_MON_PORYGON2_3, \ + FRONTIER_MON_GARDEVOIR_3, \ + FRONTIER_MON_EXEGGUTOR_3, \ + FRONTIER_MON_STARMIE_3, \ + FRONTIER_MON_FLYGON_3, \ + FRONTIER_MON_VENUSAUR_3, \ + FRONTIER_MON_VAPOREON_3, \ + FRONTIER_MON_JOLTEON_3, \ + FRONTIER_MON_FLAREON_3, \ + FRONTIER_MON_MEGANIUM_3, \ + FRONTIER_MON_ESPEON_3, \ + FRONTIER_MON_UMBREON_3, \ + FRONTIER_MON_BLASTOISE_3, \ + FRONTIER_MON_FERALIGATR_3, \ + FRONTIER_MON_AGGRON_3, \ + FRONTIER_MON_BLAZIKEN_3, \ + FRONTIER_MON_WALREIN_3, \ + FRONTIER_MON_SCEPTILE_3, \ + FRONTIER_MON_CHARIZARD_3, \ + FRONTIER_MON_TYPHLOSION_3, \ + FRONTIER_MON_LAPRAS_3, \ + FRONTIER_MON_CROBAT_3, \ + FRONTIER_MON_SWAMPERT_3, \ + FRONTIER_MON_GYARADOS_3, \ + FRONTIER_MON_SNORLAX_3, \ + FRONTIER_MON_KINGDRA_3, \ + FRONTIER_MON_BLISSEY_3, \ + FRONTIER_MON_MILOTIC_3, \ + FRONTIER_MON_ARCANINE_3, \ + FRONTIER_MON_SALAMENCE_3, \ + FRONTIER_MON_METAGROSS_3, \ + FRONTIER_MON_SLAKING_3, \ + -1 + +// Similar to FRONTIER_MONS_GENERAL_A/B but _2 +// Used by Pkmn Ranger, Running Triathlete, and Cycling Triathlete +#define FRONTIER_MONS_GENERAL_C \ + FRONTIER_MON_DUGTRIO_2, \ + FRONTIER_MON_MEDICHAM_2, \ + FRONTIER_MON_MAROWAK_2, \ + FRONTIER_MON_QUAGSIRE_2, \ + FRONTIER_MON_MISDREAVUS_2, \ + FRONTIER_MON_FEAROW_2, \ + FRONTIER_MON_GRANBULL_2, \ + FRONTIER_MON_JYNX_2, \ + FRONTIER_MON_DUSCLOPS_2, \ + FRONTIER_MON_DODRIO_2, \ + FRONTIER_MON_MR_MIME_2, \ + FRONTIER_MON_LANTURN_2, \ + FRONTIER_MON_BRELOOM_2, \ + FRONTIER_MON_FORRETRESS_2, \ + FRONTIER_MON_SKARMORY_2, \ + FRONTIER_MON_WHISCASH_2, \ + FRONTIER_MON_XATU_2, \ + FRONTIER_MON_CLEFABLE_2, \ + FRONTIER_MON_HARIYAMA_2, \ + FRONTIER_MON_RAICHU_2, \ + FRONTIER_MON_DEWGONG_2, \ + FRONTIER_MON_MANECTRIC_2, \ + FRONTIER_MON_VILEPLUME_2, \ + FRONTIER_MON_VICTREEBEL_2, \ + FRONTIER_MON_ELECTRODE_2, \ + FRONTIER_MON_EXPLOUD_2, \ + FRONTIER_MON_SHIFTRY_2, \ + FRONTIER_MON_GLALIE_2, \ + FRONTIER_MON_LUDICOLO_2, \ + FRONTIER_MON_HYPNO_2, \ + FRONTIER_MON_GOLEM_2, \ + FRONTIER_MON_RHYDON_2, \ + FRONTIER_MON_ALAKAZAM_2, \ + FRONTIER_MON_WEEZING_2, \ + FRONTIER_MON_KANGASKHAN_2, \ + FRONTIER_MON_ELECTABUZZ_2, \ + FRONTIER_MON_TAUROS_2, \ + FRONTIER_MON_SLOWBRO_2, \ + FRONTIER_MON_SLOWKING_2, \ + FRONTIER_MON_MILTANK_2, \ + FRONTIER_MON_ALTARIA_2, \ + FRONTIER_MON_NIDOQUEEN_2, \ + FRONTIER_MON_NIDOKING_2, \ + FRONTIER_MON_MAGMAR_2, \ + FRONTIER_MON_CRADILY_2, \ + FRONTIER_MON_ARMALDO_2, \ + FRONTIER_MON_GOLDUCK_2, \ + FRONTIER_MON_RAPIDASH_2, \ + FRONTIER_MON_MUK_2, \ + FRONTIER_MON_GENGAR_2, \ + FRONTIER_MON_AMPHAROS_2, \ + FRONTIER_MON_SCIZOR_2, \ + FRONTIER_MON_HERACROSS_2, \ + FRONTIER_MON_URSARING_2, \ + FRONTIER_MON_HOUNDOOM_2, \ + FRONTIER_MON_DONPHAN_2, \ + FRONTIER_MON_CLAYDOL_2, \ + FRONTIER_MON_WAILORD_2, \ + FRONTIER_MON_NINETALES_2, \ + FRONTIER_MON_MACHAMP_2, \ + FRONTIER_MON_SHUCKLE_2, \ + FRONTIER_MON_STEELIX_2, \ + FRONTIER_MON_TENTACRUEL_2, \ + FRONTIER_MON_AERODACTYL_2, \ + FRONTIER_MON_PORYGON2_2, \ + FRONTIER_MON_GARDEVOIR_2, \ + FRONTIER_MON_EXEGGUTOR_2, \ + FRONTIER_MON_STARMIE_2, \ + FRONTIER_MON_FLYGON_2, \ + FRONTIER_MON_VENUSAUR_2, \ + FRONTIER_MON_VAPOREON_2, \ + FRONTIER_MON_JOLTEON_2, \ + FRONTIER_MON_FLAREON_2, \ + FRONTIER_MON_MEGANIUM_2, \ + FRONTIER_MON_ESPEON_2, \ + FRONTIER_MON_UMBREON_2, \ + FRONTIER_MON_BLASTOISE_2, \ + FRONTIER_MON_FERALIGATR_2, \ + FRONTIER_MON_AGGRON_2, \ + FRONTIER_MON_BLAZIKEN_2, \ + FRONTIER_MON_WALREIN_2, \ + FRONTIER_MON_SCEPTILE_2, \ + FRONTIER_MON_CHARIZARD_2, \ + FRONTIER_MON_TYPHLOSION_2, \ + FRONTIER_MON_LAPRAS_2, \ + FRONTIER_MON_CROBAT_2, \ + FRONTIER_MON_SWAMPERT_2, \ + FRONTIER_MON_GYARADOS_2, \ + FRONTIER_MON_SNORLAX_2, \ + FRONTIER_MON_KINGDRA_2, \ + FRONTIER_MON_BLISSEY_2, \ + FRONTIER_MON_MILOTIC_2, \ + FRONTIER_MON_ARCANINE_2, \ + FRONTIER_MON_SALAMENCE_2, \ + FRONTIER_MON_METAGROSS_2, \ + FRONTIER_MON_SLAKING_2, \ + -1 + +// Similar to FRONTIER_MONS_GENERAL_C but _1 (would be identical if not for re-ordering) +// Used by Pkmn Ranger, Running Triathlete, Cycling Triathlete +#define FRONTIER_MONS_GENERAL_D \ + FRONTIER_MON_DUGTRIO_1, \ + FRONTIER_MON_MEDICHAM_1, \ + FRONTIER_MON_MISDREAVUS_1, \ + FRONTIER_MON_FEAROW_1, \ + FRONTIER_MON_GRANBULL_1, \ + FRONTIER_MON_JYNX_1, \ + FRONTIER_MON_DUSCLOPS_1, \ + FRONTIER_MON_DODRIO_1, \ + FRONTIER_MON_MR_MIME_1, \ + FRONTIER_MON_LANTURN_1, \ + FRONTIER_MON_BRELOOM_1, \ + FRONTIER_MON_FORRETRESS_1, \ + FRONTIER_MON_WHISCASH_1, \ + FRONTIER_MON_XATU_1, \ + FRONTIER_MON_SKARMORY_1, \ + FRONTIER_MON_MAROWAK_1, \ + FRONTIER_MON_QUAGSIRE_1, \ + FRONTIER_MON_CLEFABLE_1, \ + FRONTIER_MON_HARIYAMA_1, \ + FRONTIER_MON_RAICHU_1, \ + FRONTIER_MON_DEWGONG_1, \ + FRONTIER_MON_MANECTRIC_1, \ + FRONTIER_MON_VILEPLUME_1, \ + FRONTIER_MON_VICTREEBEL_1, \ + FRONTIER_MON_ELECTRODE_1, \ + FRONTIER_MON_EXPLOUD_1, \ + FRONTIER_MON_SHIFTRY_1, \ + FRONTIER_MON_GLALIE_1, \ + FRONTIER_MON_LUDICOLO_1, \ + FRONTIER_MON_HYPNO_1, \ + FRONTIER_MON_GOLEM_1, \ + FRONTIER_MON_RHYDON_1, \ + FRONTIER_MON_ALAKAZAM_1, \ + FRONTIER_MON_WEEZING_1, \ + FRONTIER_MON_KANGASKHAN_1, \ + FRONTIER_MON_ELECTABUZZ_1, \ + FRONTIER_MON_TAUROS_1, \ + FRONTIER_MON_SLOWBRO_1, \ + FRONTIER_MON_SLOWKING_1, \ + FRONTIER_MON_MILTANK_1, \ + FRONTIER_MON_ALTARIA_1, \ + FRONTIER_MON_NIDOQUEEN_1, \ + FRONTIER_MON_NIDOKING_1, \ + FRONTIER_MON_MAGMAR_1, \ + FRONTIER_MON_CRADILY_1, \ + FRONTIER_MON_ARMALDO_1, \ + FRONTIER_MON_GOLDUCK_1, \ + FRONTIER_MON_RAPIDASH_1, \ + FRONTIER_MON_MUK_1, \ + FRONTIER_MON_GENGAR_1, \ + FRONTIER_MON_AMPHAROS_1, \ + FRONTIER_MON_SCIZOR_1, \ + FRONTIER_MON_HERACROSS_1, \ + FRONTIER_MON_URSARING_1, \ + FRONTIER_MON_HOUNDOOM_1, \ + FRONTIER_MON_DONPHAN_1, \ + FRONTIER_MON_CLAYDOL_1, \ + FRONTIER_MON_WAILORD_1, \ + FRONTIER_MON_NINETALES_1, \ + FRONTIER_MON_MACHAMP_1, \ + FRONTIER_MON_SHUCKLE_1, \ + FRONTIER_MON_STEELIX_1, \ + FRONTIER_MON_TENTACRUEL_1, \ + FRONTIER_MON_AERODACTYL_1, \ + FRONTIER_MON_PORYGON2_1, \ + FRONTIER_MON_GARDEVOIR_1, \ + FRONTIER_MON_EXEGGUTOR_1, \ + FRONTIER_MON_STARMIE_1, \ + FRONTIER_MON_FLYGON_1, \ + FRONTIER_MON_VENUSAUR_1, \ + FRONTIER_MON_VAPOREON_1, \ + FRONTIER_MON_JOLTEON_1, \ + FRONTIER_MON_FLAREON_1, \ + FRONTIER_MON_MEGANIUM_1, \ + FRONTIER_MON_ESPEON_1, \ + FRONTIER_MON_UMBREON_1, \ + FRONTIER_MON_BLASTOISE_1, \ + FRONTIER_MON_FERALIGATR_1, \ + FRONTIER_MON_AGGRON_1, \ + FRONTIER_MON_BLAZIKEN_1, \ + FRONTIER_MON_WALREIN_1, \ + FRONTIER_MON_SCEPTILE_1, \ + FRONTIER_MON_CHARIZARD_1, \ + FRONTIER_MON_TYPHLOSION_1, \ + FRONTIER_MON_LAPRAS_1, \ + FRONTIER_MON_CROBAT_1, \ + FRONTIER_MON_SWAMPERT_1, \ + FRONTIER_MON_GYARADOS_1, \ + FRONTIER_MON_SNORLAX_1, \ + FRONTIER_MON_KINGDRA_1, \ + FRONTIER_MON_BLISSEY_1, \ + FRONTIER_MON_MILOTIC_1, \ + FRONTIER_MON_ARCANINE_1, \ + FRONTIER_MON_SALAMENCE_1, \ + FRONTIER_MON_METAGROSS_1, \ + FRONTIER_MON_SLAKING_1, \ + -1 + +#define FRONTIER_MONS_DRAGON_TAMER_2 \ + FRONTIER_MON_RHYDON_1, \ + FRONTIER_MON_ALTARIA_1, \ + FRONTIER_MON_NIDOQUEEN_1, \ + FRONTIER_MON_NIDOKING_1, \ + FRONTIER_MON_STEELIX_1, \ + FRONTIER_MON_AERODACTYL_1, \ + FRONTIER_MON_FLYGON_1, \ + FRONTIER_MON_AGGRON_1, \ + FRONTIER_MON_CHARIZARD_1, \ + FRONTIER_MON_LAPRAS_1, \ + FRONTIER_MON_GYARADOS_1, \ + FRONTIER_MON_KINGDRA_1, \ + FRONTIER_MON_MILOTIC_1, \ + FRONTIER_MON_SALAMENCE_1, \ + FRONTIER_MON_RHYDON_2, \ + FRONTIER_MON_ALTARIA_2, \ + FRONTIER_MON_NIDOQUEEN_2, \ + FRONTIER_MON_NIDOKING_2, \ + FRONTIER_MON_STEELIX_2, \ + FRONTIER_MON_AERODACTYL_2, \ + FRONTIER_MON_FLYGON_2, \ + FRONTIER_MON_AGGRON_2, \ + FRONTIER_MON_CHARIZARD_2, \ + FRONTIER_MON_LAPRAS_2, \ + FRONTIER_MON_GYARADOS_2, \ + FRONTIER_MON_KINGDRA_2, \ + FRONTIER_MON_MILOTIC_2, \ + FRONTIER_MON_SALAMENCE_2, \ + FRONTIER_MON_RHYDON_3, \ + FRONTIER_MON_ALTARIA_3, \ + FRONTIER_MON_NIDOQUEEN_3, \ + FRONTIER_MON_NIDOKING_3, \ + FRONTIER_MON_STEELIX_3, \ + FRONTIER_MON_AERODACTYL_3, \ + FRONTIER_MON_FLYGON_3, \ + FRONTIER_MON_AGGRON_3, \ + FRONTIER_MON_CHARIZARD_3, \ + FRONTIER_MON_LAPRAS_3, \ + FRONTIER_MON_GYARADOS_3, \ + FRONTIER_MON_KINGDRA_3, \ + FRONTIER_MON_MILOTIC_3, \ + FRONTIER_MON_SALAMENCE_3, \ + FRONTIER_MON_RHYDON_4, \ + FRONTIER_MON_ALTARIA_4, \ + FRONTIER_MON_NIDOQUEEN_4, \ + FRONTIER_MON_NIDOKING_4, \ + FRONTIER_MON_STEELIX_4, \ + FRONTIER_MON_AERODACTYL_4, \ + FRONTIER_MON_FLYGON_4, \ + FRONTIER_MON_AGGRON_4, \ + FRONTIER_MON_CHARIZARD_4, \ + FRONTIER_MON_LAPRAS_4, \ + FRONTIER_MON_GYARADOS_4, \ + FRONTIER_MON_KINGDRA_4, \ + FRONTIER_MON_MILOTIC_4, \ + FRONTIER_MON_SALAMENCE_4, \ + FRONTIER_MON_LATIAS_1, \ + FRONTIER_MON_LATIOS_1, \ + FRONTIER_MON_LATIAS_2, \ + FRONTIER_MON_LATIOS_2, \ + FRONTIER_MON_LATIAS_3, \ + FRONTIER_MON_LATIOS_3, \ + FRONTIER_MON_LATIAS_4, \ + FRONTIER_MON_LATIOS_4, \ + FRONTIER_MON_SALAMENCE_5, \ + FRONTIER_MON_SALAMENCE_6, \ + FRONTIER_MON_SALAMENCE_7, \ + FRONTIER_MON_SALAMENCE_8, \ + FRONTIER_MON_LATIAS_5, \ + FRONTIER_MON_LATIAS_6, \ + FRONTIER_MON_LATIAS_7, \ + FRONTIER_MON_LATIAS_8, \ + FRONTIER_MON_LATIOS_5, \ + FRONTIER_MON_LATIOS_6, \ + FRONTIER_MON_LATIOS_7, \ + FRONTIER_MON_LATIOS_8, \ + FRONTIER_MON_DRAGONITE_1, \ + FRONTIER_MON_DRAGONITE_2, \ + FRONTIER_MON_DRAGONITE_3, \ + FRONTIER_MON_DRAGONITE_4, \ + FRONTIER_MON_DRAGONITE_5, \ + FRONTIER_MON_DRAGONITE_6, \ + FRONTIER_MON_DRAGONITE_7, \ + FRONTIER_MON_DRAGONITE_8, \ + FRONTIER_MON_DRAGONITE_9, \ + FRONTIER_MON_DRAGONITE_10, \ + FRONTIER_MON_TYRANITAR_1, \ + FRONTIER_MON_TYRANITAR_2, \ + FRONTIER_MON_TYRANITAR_3, \ + FRONTIER_MON_TYRANITAR_4, \ + FRONTIER_MON_TYRANITAR_5, \ + FRONTIER_MON_TYRANITAR_6, \ + FRONTIER_MON_TYRANITAR_7, \ + FRONTIER_MON_TYRANITAR_8, \ + FRONTIER_MON_TYRANITAR_9, \ + FRONTIER_MON_TYRANITAR_10, \ + -1 + +#define FRONTIER_MONS_BLACK_BELT_2A \ + FRONTIER_MON_MEDICHAM_1, \ + FRONTIER_MON_BRELOOM_1, \ + FRONTIER_MON_HARIYAMA_1, \ + FRONTIER_MON_GOLEM_1, \ + FRONTIER_MON_RHYDON_1, \ + FRONTIER_MON_CRADILY_1, \ + FRONTIER_MON_ARMALDO_1, \ + FRONTIER_MON_HERACROSS_1, \ + FRONTIER_MON_MACHAMP_1, \ + FRONTIER_MON_SHUCKLE_1, \ + FRONTIER_MON_AERODACTYL_1, \ + FRONTIER_MON_AGGRON_1, \ + FRONTIER_MON_BLAZIKEN_1, \ + FRONTIER_MON_MEDICHAM_2, \ + FRONTIER_MON_BRELOOM_2, \ + FRONTIER_MON_HARIYAMA_2, \ + FRONTIER_MON_GOLEM_2, \ + FRONTIER_MON_RHYDON_2, \ + FRONTIER_MON_CRADILY_2, \ + FRONTIER_MON_ARMALDO_2, \ + FRONTIER_MON_HERACROSS_2, \ + FRONTIER_MON_MACHAMP_2, \ + FRONTIER_MON_SHUCKLE_2, \ + FRONTIER_MON_AERODACTYL_2, \ + FRONTIER_MON_AGGRON_2, \ + FRONTIER_MON_BLAZIKEN_2, \ + FRONTIER_MON_MEDICHAM_3, \ + FRONTIER_MON_BRELOOM_3, \ + FRONTIER_MON_HARIYAMA_3, \ + FRONTIER_MON_GOLEM_3, \ + FRONTIER_MON_RHYDON_3, \ + FRONTIER_MON_CRADILY_3, \ + FRONTIER_MON_ARMALDO_3, \ + FRONTIER_MON_HERACROSS_3, \ + FRONTIER_MON_MACHAMP_3, \ + FRONTIER_MON_SHUCKLE_3, \ + FRONTIER_MON_AERODACTYL_3, \ + FRONTIER_MON_AGGRON_3, \ + FRONTIER_MON_BLAZIKEN_3, \ + FRONTIER_MON_MEDICHAM_4, \ + FRONTIER_MON_BRELOOM_4, \ + FRONTIER_MON_HARIYAMA_4, \ + FRONTIER_MON_GOLEM_4, \ + FRONTIER_MON_RHYDON_4, \ + FRONTIER_MON_CRADILY_4, \ + FRONTIER_MON_ARMALDO_4, \ + FRONTIER_MON_HERACROSS_4, \ + FRONTIER_MON_MACHAMP_4, \ + FRONTIER_MON_SHUCKLE_4, \ + FRONTIER_MON_AERODACTYL_4, \ + FRONTIER_MON_AGGRON_4, \ + FRONTIER_MON_BLAZIKEN_4, \ + FRONTIER_MON_MACHAMP_5, \ + FRONTIER_MON_MACHAMP_6, \ + FRONTIER_MON_MACHAMP_7, \ + FRONTIER_MON_MACHAMP_8, \ + -1 + +#define FRONTIER_MONS_BATTLE_GIRL_2A \ + FRONTIER_MON_MEDICHAM_1, \ + FRONTIER_MON_BRELOOM_1, \ + FRONTIER_MON_MAROWAK_1, \ + FRONTIER_MON_HARIYAMA_1, \ + FRONTIER_MON_GOLEM_1, \ + FRONTIER_MON_RHYDON_1, \ + FRONTIER_MON_NIDOQUEEN_1, \ + FRONTIER_MON_NIDOKING_1, \ + FRONTIER_MON_HERACROSS_1, \ + FRONTIER_MON_DONPHAN_1, \ + FRONTIER_MON_MACHAMP_1, \ + FRONTIER_MON_STEELIX_1, \ + FRONTIER_MON_BLAZIKEN_1, \ + FRONTIER_MON_MEDICHAM_2, \ + FRONTIER_MON_MAROWAK_2, \ + FRONTIER_MON_BRELOOM_2, \ + FRONTIER_MON_HARIYAMA_2, \ + FRONTIER_MON_GOLEM_2, \ + FRONTIER_MON_RHYDON_2, \ + FRONTIER_MON_NIDOQUEEN_2, \ + FRONTIER_MON_NIDOKING_2, \ + FRONTIER_MON_HERACROSS_2, \ + FRONTIER_MON_DONPHAN_2, \ + FRONTIER_MON_MACHAMP_2, \ + FRONTIER_MON_STEELIX_2, \ + FRONTIER_MON_BLAZIKEN_2, \ + FRONTIER_MON_MEDICHAM_3, \ + FRONTIER_MON_BRELOOM_3, \ + FRONTIER_MON_MAROWAK_3, \ + FRONTIER_MON_HARIYAMA_3, \ + FRONTIER_MON_GOLEM_3, \ + FRONTIER_MON_RHYDON_3, \ + FRONTIER_MON_NIDOQUEEN_3, \ + FRONTIER_MON_NIDOKING_3, \ + FRONTIER_MON_HERACROSS_3, \ + FRONTIER_MON_DONPHAN_3, \ + FRONTIER_MON_MACHAMP_3, \ + FRONTIER_MON_STEELIX_3, \ + FRONTIER_MON_BLAZIKEN_3, \ + FRONTIER_MON_MEDICHAM_4, \ + FRONTIER_MON_BRELOOM_4, \ + FRONTIER_MON_MAROWAK_4, \ + FRONTIER_MON_HARIYAMA_4, \ + FRONTIER_MON_GOLEM_4, \ + FRONTIER_MON_RHYDON_4, \ + FRONTIER_MON_NIDOQUEEN_4, \ + FRONTIER_MON_NIDOKING_4, \ + FRONTIER_MON_HERACROSS_4, \ + FRONTIER_MON_DONPHAN_4, \ + FRONTIER_MON_MACHAMP_4, \ + FRONTIER_MON_STEELIX_4, \ + FRONTIER_MON_BLAZIKEN_4, \ + FRONTIER_MON_MACHAMP_5, \ + FRONTIER_MON_MACHAMP_6, \ + FRONTIER_MON_MACHAMP_7, \ + FRONTIER_MON_MACHAMP_8, \ + -1 + +#define FRONTIER_MONS_BLACK_BELT_BATTLE_GIRL_2B \ + FRONTIER_MON_MEDICHAM_1, \ + FRONTIER_MON_BRELOOM_1, \ + FRONTIER_MON_HARIYAMA_1, \ + FRONTIER_MON_MAGMAR_1, \ + FRONTIER_MON_RAPIDASH_1, \ + FRONTIER_MON_HERACROSS_1, \ + FRONTIER_MON_HOUNDOOM_1, \ + FRONTIER_MON_NINETALES_1, \ + FRONTIER_MON_MACHAMP_1, \ + FRONTIER_MON_FLAREON_1, \ + FRONTIER_MON_BLAZIKEN_1, \ + FRONTIER_MON_CHARIZARD_1, \ + FRONTIER_MON_TYPHLOSION_1, \ + FRONTIER_MON_ARCANINE_1, \ + FRONTIER_MON_MEDICHAM_2, \ + FRONTIER_MON_BRELOOM_2, \ + FRONTIER_MON_HARIYAMA_2, \ + FRONTIER_MON_MAGMAR_2, \ + FRONTIER_MON_RAPIDASH_2, \ + FRONTIER_MON_HERACROSS_2, \ + FRONTIER_MON_HOUNDOOM_2, \ + FRONTIER_MON_NINETALES_2, \ + FRONTIER_MON_MACHAMP_2, \ + FRONTIER_MON_FLAREON_2, \ + FRONTIER_MON_BLAZIKEN_2, \ + FRONTIER_MON_CHARIZARD_2, \ + FRONTIER_MON_TYPHLOSION_2, \ + FRONTIER_MON_ARCANINE_2, \ + FRONTIER_MON_MEDICHAM_3, \ + FRONTIER_MON_BRELOOM_3, \ + FRONTIER_MON_HARIYAMA_3, \ + FRONTIER_MON_MAGMAR_3, \ + FRONTIER_MON_RAPIDASH_3, \ + FRONTIER_MON_HERACROSS_3, \ + FRONTIER_MON_HOUNDOOM_3, \ + FRONTIER_MON_NINETALES_3, \ + FRONTIER_MON_MACHAMP_3, \ + FRONTIER_MON_FLAREON_3, \ + FRONTIER_MON_BLAZIKEN_3, \ + FRONTIER_MON_CHARIZARD_3, \ + FRONTIER_MON_TYPHLOSION_3, \ + FRONTIER_MON_ARCANINE_3, \ + FRONTIER_MON_MEDICHAM_4, \ + FRONTIER_MON_BRELOOM_4, \ + FRONTIER_MON_HARIYAMA_4, \ + FRONTIER_MON_MAGMAR_4, \ + FRONTIER_MON_RAPIDASH_4, \ + FRONTIER_MON_HERACROSS_4, \ + FRONTIER_MON_HOUNDOOM_4, \ + FRONTIER_MON_NINETALES_4, \ + FRONTIER_MON_MACHAMP_4, \ + FRONTIER_MON_FLAREON_4, \ + FRONTIER_MON_BLAZIKEN_4, \ + FRONTIER_MON_CHARIZARD_4, \ + FRONTIER_MON_TYPHLOSION_4, \ + FRONTIER_MON_ARCANINE_4, \ + FRONTIER_MON_MACHAMP_5, \ + FRONTIER_MON_MACHAMP_6, \ + FRONTIER_MON_MACHAMP_7, \ + FRONTIER_MON_MACHAMP_8, \ + -1 + +#define FRONTIER_MONS_BLACK_BELT_BATTLE_GIRL_2C \ + FRONTIER_MON_MEDICHAM_1, \ + FRONTIER_MON_BRELOOM_1, \ + FRONTIER_MON_FORRETRESS_1, \ + FRONTIER_MON_SKARMORY_1, \ + FRONTIER_MON_HARIYAMA_1, \ + FRONTIER_MON_SCIZOR_1, \ + FRONTIER_MON_HERACROSS_1, \ + FRONTIER_MON_MACHAMP_1, \ + FRONTIER_MON_STEELIX_1, \ + FRONTIER_MON_AGGRON_1, \ + FRONTIER_MON_BLAZIKEN_1, \ + FRONTIER_MON_METAGROSS_1, \ + FRONTIER_MON_MEDICHAM_2, \ + FRONTIER_MON_BRELOOM_2, \ + FRONTIER_MON_FORRETRESS_2, \ + FRONTIER_MON_SKARMORY_2, \ + FRONTIER_MON_HARIYAMA_2, \ + FRONTIER_MON_SCIZOR_2, \ + FRONTIER_MON_HERACROSS_2, \ + FRONTIER_MON_MACHAMP_2, \ + FRONTIER_MON_STEELIX_2, \ + FRONTIER_MON_AGGRON_2, \ + FRONTIER_MON_BLAZIKEN_2, \ + FRONTIER_MON_METAGROSS_2, \ + FRONTIER_MON_MEDICHAM_3, \ + FRONTIER_MON_BRELOOM_3, \ + FRONTIER_MON_FORRETRESS_3, \ + FRONTIER_MON_SKARMORY_3, \ + FRONTIER_MON_HARIYAMA_3, \ + FRONTIER_MON_SCIZOR_3, \ + FRONTIER_MON_HERACROSS_3, \ + FRONTIER_MON_MACHAMP_3, \ + FRONTIER_MON_STEELIX_3, \ + FRONTIER_MON_AGGRON_3, \ + FRONTIER_MON_BLAZIKEN_3, \ + FRONTIER_MON_METAGROSS_3, \ + FRONTIER_MON_MEDICHAM_4, \ + FRONTIER_MON_BRELOOM_4, \ + FRONTIER_MON_FORRETRESS_4, \ + FRONTIER_MON_SKARMORY_4, \ + FRONTIER_MON_HARIYAMA_4, \ + FRONTIER_MON_SCIZOR_4, \ + FRONTIER_MON_HERACROSS_4, \ + FRONTIER_MON_MACHAMP_4, \ + FRONTIER_MON_STEELIX_4, \ + FRONTIER_MON_AGGRON_4, \ + FRONTIER_MON_BLAZIKEN_4, \ + FRONTIER_MON_METAGROSS_4, \ + FRONTIER_MON_MACHAMP_5, \ + FRONTIER_MON_MACHAMP_6, \ + FRONTIER_MON_MACHAMP_7, \ + FRONTIER_MON_MACHAMP_8, \ + FRONTIER_MON_METAGROSS_5, \ + FRONTIER_MON_METAGROSS_6, \ + FRONTIER_MON_METAGROSS_7, \ + FRONTIER_MON_METAGROSS_8, \ + -1 + +// For this group, Expert M uses Tyranitar, Expert F uses Dragonite +#define FRONTIER_MONS_EXPERT_2A(lastmon) \ + FRONTIER_MON_BRELOOM_1, \ + FRONTIER_MON_MAROWAK_1, \ + FRONTIER_MON_RHYDON_1, \ + FRONTIER_MON_SCIZOR_1, \ + FRONTIER_MON_HERACROSS_1, \ + FRONTIER_MON_URSARING_1, \ + FRONTIER_MON_MACHAMP_1, \ + FRONTIER_MON_STEELIX_1, \ + FRONTIER_MON_AERODACTYL_1, \ + FRONTIER_MON_AGGRON_1, \ + FRONTIER_MON_GYARADOS_1, \ + FRONTIER_MON_KINGDRA_1, \ + FRONTIER_MON_SALAMENCE_1, \ + FRONTIER_MON_METAGROSS_1, \ + FRONTIER_MON_MAROWAK_2, \ + FRONTIER_MON_BRELOOM_2, \ + FRONTIER_MON_RHYDON_2, \ + FRONTIER_MON_SCIZOR_2, \ + FRONTIER_MON_HERACROSS_2, \ + FRONTIER_MON_URSARING_2, \ + FRONTIER_MON_MACHAMP_2, \ + FRONTIER_MON_STEELIX_2, \ + FRONTIER_MON_AERODACTYL_2, \ + FRONTIER_MON_AGGRON_2, \ + FRONTIER_MON_GYARADOS_2, \ + FRONTIER_MON_KINGDRA_2, \ + FRONTIER_MON_SALAMENCE_2, \ + FRONTIER_MON_METAGROSS_2, \ + FRONTIER_MON_BRELOOM_3, \ + FRONTIER_MON_MAROWAK_3, \ + FRONTIER_MON_RHYDON_3, \ + FRONTIER_MON_SCIZOR_3, \ + FRONTIER_MON_HERACROSS_3, \ + FRONTIER_MON_URSARING_3, \ + FRONTIER_MON_MACHAMP_3, \ + FRONTIER_MON_STEELIX_3, \ + FRONTIER_MON_AERODACTYL_3, \ + FRONTIER_MON_AGGRON_3, \ + FRONTIER_MON_GYARADOS_3, \ + FRONTIER_MON_KINGDRA_3, \ + FRONTIER_MON_SALAMENCE_3, \ + FRONTIER_MON_METAGROSS_3, \ + FRONTIER_MON_BRELOOM_4, \ + FRONTIER_MON_MAROWAK_4, \ + FRONTIER_MON_RHYDON_4, \ + FRONTIER_MON_SCIZOR_4, \ + FRONTIER_MON_HERACROSS_4, \ + FRONTIER_MON_URSARING_4, \ + FRONTIER_MON_MACHAMP_4, \ + FRONTIER_MON_STEELIX_4, \ + FRONTIER_MON_AERODACTYL_4, \ + FRONTIER_MON_AGGRON_4, \ + FRONTIER_MON_GYARADOS_4, \ + FRONTIER_MON_KINGDRA_4, \ + FRONTIER_MON_SALAMENCE_4, \ + FRONTIER_MON_METAGROSS_4, \ + FRONTIER_MON_REGIROCK_1, \ + FRONTIER_MON_REGICE_1, \ + FRONTIER_MON_REGISTEEL_1, \ + FRONTIER_MON_REGIROCK_2, \ + FRONTIER_MON_REGICE_2, \ + FRONTIER_MON_REGISTEEL_2, \ + FRONTIER_MON_REGIROCK_3, \ + FRONTIER_MON_REGICE_3, \ + FRONTIER_MON_REGISTEEL_3, \ + FRONTIER_MON_REGIROCK_4, \ + FRONTIER_MON_REGICE_4, \ + FRONTIER_MON_REGISTEEL_4, \ + FRONTIER_MON_URSARING_5, \ + FRONTIER_MON_URSARING_6, \ + FRONTIER_MON_URSARING_7, \ + FRONTIER_MON_URSARING_8, \ + FRONTIER_MON_MACHAMP_5, \ + FRONTIER_MON_MACHAMP_6, \ + FRONTIER_MON_MACHAMP_7, \ + FRONTIER_MON_MACHAMP_8, \ + FRONTIER_MON_SALAMENCE_5, \ + FRONTIER_MON_SALAMENCE_6, \ + FRONTIER_MON_SALAMENCE_7, \ + FRONTIER_MON_SALAMENCE_8, \ + FRONTIER_MON_METAGROSS_5, \ + FRONTIER_MON_METAGROSS_6, \ + FRONTIER_MON_METAGROSS_7, \ + FRONTIER_MON_METAGROSS_8, \ + FRONTIER_MON_REGIROCK_5, \ + FRONTIER_MON_REGIROCK_6, \ + FRONTIER_MON_REGICE_5, \ + FRONTIER_MON_REGICE_6, \ + FRONTIER_MON_REGISTEEL_5, \ + FRONTIER_MON_REGISTEEL_6, \ + FRONTIER_MON_##lastmon##_1, \ + FRONTIER_MON_##lastmon##_2, \ + FRONTIER_MON_##lastmon##_3, \ + FRONTIER_MON_##lastmon##_4, \ + FRONTIER_MON_##lastmon##_5, \ + FRONTIER_MON_##lastmon##_6, \ + FRONTIER_MON_##lastmon##_7, \ + FRONTIER_MON_##lastmon##_8, \ + FRONTIER_MON_##lastmon##_9, \ + FRONTIER_MON_##lastmon##_10,\ + -1 + +// For this group, Expert M uses Latios, Expert F uses Latias +#define FRONTIER_MONS_EXPERT_2B(lati) \ + FRONTIER_MON_MISDREAVUS_1, \ + FRONTIER_MON_JYNX_1, \ + FRONTIER_MON_ALAKAZAM_1, \ + FRONTIER_MON_GENGAR_1, \ + FRONTIER_MON_AMPHAROS_1, \ + FRONTIER_MON_HOUNDOOM_1, \ + FRONTIER_MON_GARDEVOIR_1, \ + FRONTIER_MON_STARMIE_1, \ + FRONTIER_MON_ESPEON_1, \ + FRONTIER_MON_BLAZIKEN_1, \ + FRONTIER_MON_SCEPTILE_1, \ + FRONTIER_MON_CROBAT_1, \ + FRONTIER_MON_SWAMPERT_1, \ + FRONTIER_MON_MISDREAVUS_2, \ + FRONTIER_MON_JYNX_2, \ + FRONTIER_MON_ALAKAZAM_2, \ + FRONTIER_MON_GENGAR_2, \ + FRONTIER_MON_AMPHAROS_2, \ + FRONTIER_MON_HOUNDOOM_2, \ + FRONTIER_MON_GARDEVOIR_2, \ + FRONTIER_MON_STARMIE_2, \ + FRONTIER_MON_ESPEON_2, \ + FRONTIER_MON_BLAZIKEN_2, \ + FRONTIER_MON_SCEPTILE_2, \ + FRONTIER_MON_CROBAT_2, \ + FRONTIER_MON_SWAMPERT_2, \ + FRONTIER_MON_MISDREAVUS_3, \ + FRONTIER_MON_JYNX_3, \ + FRONTIER_MON_ALAKAZAM_3, \ + FRONTIER_MON_GENGAR_3, \ + FRONTIER_MON_AMPHAROS_3, \ + FRONTIER_MON_HOUNDOOM_3, \ + FRONTIER_MON_GARDEVOIR_3, \ + FRONTIER_MON_STARMIE_3, \ + FRONTIER_MON_ESPEON_3, \ + FRONTIER_MON_BLAZIKEN_3, \ + FRONTIER_MON_SCEPTILE_3, \ + FRONTIER_MON_CROBAT_3, \ + FRONTIER_MON_SWAMPERT_3, \ + FRONTIER_MON_MISDREAVUS_4, \ + FRONTIER_MON_JYNX_4, \ + FRONTIER_MON_ALAKAZAM_4, \ + FRONTIER_MON_GENGAR_4, \ + FRONTIER_MON_AMPHAROS_4, \ + FRONTIER_MON_HOUNDOOM_4, \ + FRONTIER_MON_GARDEVOIR_4, \ + FRONTIER_MON_STARMIE_4, \ + FRONTIER_MON_ESPEON_4, \ + FRONTIER_MON_BLAZIKEN_4, \ + FRONTIER_MON_SCEPTILE_4, \ + FRONTIER_MON_CROBAT_4, \ + FRONTIER_MON_SWAMPERT_4, \ + FRONTIER_MON_REGIROCK_1, \ + FRONTIER_MON_REGICE_1, \ + FRONTIER_MON_REGISTEEL_1, \ + FRONTIER_MON_##lati##_1, \ + FRONTIER_MON_REGIROCK_2, \ + FRONTIER_MON_REGICE_2, \ + FRONTIER_MON_REGISTEEL_2, \ + FRONTIER_MON_##lati##_2, \ + FRONTIER_MON_REGIROCK_3, \ + FRONTIER_MON_REGICE_3, \ + FRONTIER_MON_REGISTEEL_3, \ + FRONTIER_MON_##lati##_3, \ + FRONTIER_MON_REGIROCK_4, \ + FRONTIER_MON_REGICE_4, \ + FRONTIER_MON_REGISTEEL_4, \ + FRONTIER_MON_##lati##_4, \ + FRONTIER_MON_GENGAR_5, \ + FRONTIER_MON_GENGAR_6, \ + FRONTIER_MON_GENGAR_7, \ + FRONTIER_MON_GENGAR_8, \ + FRONTIER_MON_GARDEVOIR_5, \ + FRONTIER_MON_GARDEVOIR_6, \ + FRONTIER_MON_GARDEVOIR_7, \ + FRONTIER_MON_GARDEVOIR_8, \ + FRONTIER_MON_STARMIE_5, \ + FRONTIER_MON_STARMIE_6, \ + FRONTIER_MON_STARMIE_7, \ + FRONTIER_MON_STARMIE_8, \ + FRONTIER_MON_REGIROCK_5, \ + FRONTIER_MON_REGIROCK_6, \ + FRONTIER_MON_REGICE_5, \ + FRONTIER_MON_REGICE_6, \ + FRONTIER_MON_REGISTEEL_5, \ + FRONTIER_MON_REGISTEEL_6, \ + FRONTIER_MON_##lati##_5, \ + FRONTIER_MON_##lati##_6, \ + FRONTIER_MON_##lati##_7, \ + FRONTIER_MON_##lati##_8, \ + FRONTIER_MON_TYRANITAR_1, \ + FRONTIER_MON_TYRANITAR_2, \ + FRONTIER_MON_TYRANITAR_3, \ + FRONTIER_MON_TYRANITAR_4, \ + FRONTIER_MON_TYRANITAR_5, \ + FRONTIER_MON_TYRANITAR_6, \ + FRONTIER_MON_TYRANITAR_7, \ + FRONTIER_MON_TYRANITAR_8, \ + FRONTIER_MON_TYRANITAR_9, \ + FRONTIER_MON_TYRANITAR_10, \ + -1 + +// For this group, Expert M uses Tyranitar, Expert F uses Dragonite +#define FRONTIER_MONS_EXPERT_2C(lastmon) \ + FRONTIER_MON_DUSCLOPS_1, \ + FRONTIER_MON_QUAGSIRE_1, \ + FRONTIER_MON_LUDICOLO_1, \ + FRONTIER_MON_SLOWBRO_1, \ + FRONTIER_MON_SLOWKING_1, \ + FRONTIER_MON_MILTANK_1, \ + FRONTIER_MON_CRADILY_1, \ + FRONTIER_MON_WAILORD_1, \ + FRONTIER_MON_SHUCKLE_1, \ + FRONTIER_MON_EXEGGUTOR_1, \ + FRONTIER_MON_UMBREON_1, \ + FRONTIER_MON_WALREIN_1, \ + FRONTIER_MON_LAPRAS_1, \ + FRONTIER_MON_SNORLAX_1, \ + FRONTIER_MON_BLISSEY_1, \ + FRONTIER_MON_MILOTIC_1, \ + FRONTIER_MON_QUAGSIRE_2, \ + FRONTIER_MON_DUSCLOPS_2, \ + FRONTIER_MON_LUDICOLO_2, \ + FRONTIER_MON_SLOWBRO_2, \ + FRONTIER_MON_SLOWKING_2, \ + FRONTIER_MON_MILTANK_2, \ + FRONTIER_MON_CRADILY_2, \ + FRONTIER_MON_WAILORD_2, \ + FRONTIER_MON_SHUCKLE_2, \ + FRONTIER_MON_EXEGGUTOR_2, \ + FRONTIER_MON_UMBREON_2, \ + FRONTIER_MON_WALREIN_2, \ + FRONTIER_MON_LAPRAS_2, \ + FRONTIER_MON_SNORLAX_2, \ + FRONTIER_MON_BLISSEY_2, \ + FRONTIER_MON_MILOTIC_2, \ + FRONTIER_MON_DUSCLOPS_3, \ + FRONTIER_MON_QUAGSIRE_3, \ + FRONTIER_MON_LUDICOLO_3, \ + FRONTIER_MON_SLOWBRO_3, \ + FRONTIER_MON_SLOWKING_3, \ + FRONTIER_MON_MILTANK_3, \ + FRONTIER_MON_CRADILY_3, \ + FRONTIER_MON_WAILORD_3, \ + FRONTIER_MON_SHUCKLE_3, \ + FRONTIER_MON_EXEGGUTOR_3, \ + FRONTIER_MON_UMBREON_3, \ + FRONTIER_MON_WALREIN_3, \ + FRONTIER_MON_LAPRAS_3, \ + FRONTIER_MON_SNORLAX_3, \ + FRONTIER_MON_BLISSEY_3, \ + FRONTIER_MON_MILOTIC_3, \ + FRONTIER_MON_DUSCLOPS_4, \ + FRONTIER_MON_QUAGSIRE_4, \ + FRONTIER_MON_LUDICOLO_4, \ + FRONTIER_MON_SLOWBRO_4, \ + FRONTIER_MON_SLOWKING_4, \ + FRONTIER_MON_MILTANK_4, \ + FRONTIER_MON_CRADILY_4, \ + FRONTIER_MON_WAILORD_4, \ + FRONTIER_MON_SHUCKLE_4, \ + FRONTIER_MON_EXEGGUTOR_4, \ + FRONTIER_MON_UMBREON_4, \ + FRONTIER_MON_WALREIN_4, \ + FRONTIER_MON_LAPRAS_4, \ + FRONTIER_MON_SNORLAX_4, \ + FRONTIER_MON_BLISSEY_4, \ + FRONTIER_MON_MILOTIC_4, \ + FRONTIER_MON_REGIROCK_1, \ + FRONTIER_MON_REGICE_1, \ + FRONTIER_MON_REGISTEEL_1, \ + FRONTIER_MON_REGIROCK_2, \ + FRONTIER_MON_REGICE_2, \ + FRONTIER_MON_REGISTEEL_2, \ + FRONTIER_MON_REGIROCK_3, \ + FRONTIER_MON_REGICE_3, \ + FRONTIER_MON_REGISTEEL_3, \ + FRONTIER_MON_REGIROCK_4, \ + FRONTIER_MON_REGICE_4, \ + FRONTIER_MON_REGISTEEL_4, \ + FRONTIER_MON_LAPRAS_5, \ + FRONTIER_MON_LAPRAS_6, \ + FRONTIER_MON_LAPRAS_7, \ + FRONTIER_MON_LAPRAS_8, \ + FRONTIER_MON_SNORLAX_5, \ + FRONTIER_MON_SNORLAX_6, \ + FRONTIER_MON_SNORLAX_7, \ + FRONTIER_MON_SNORLAX_8, \ + FRONTIER_MON_REGIROCK_5, \ + FRONTIER_MON_REGIROCK_6, \ + FRONTIER_MON_REGICE_5, \ + FRONTIER_MON_REGICE_6, \ + FRONTIER_MON_REGISTEEL_5, \ + FRONTIER_MON_REGISTEEL_6, \ + FRONTIER_MON_##lastmon##_1, \ + FRONTIER_MON_##lastmon##_2, \ + FRONTIER_MON_##lastmon##_3, \ + FRONTIER_MON_##lastmon##_4, \ + FRONTIER_MON_##lastmon##_5, \ + FRONTIER_MON_##lastmon##_6, \ + FRONTIER_MON_##lastmon##_7, \ + FRONTIER_MON_##lastmon##_8, \ + FRONTIER_MON_##lastmon##_9, \ + FRONTIER_MON_##lastmon##_10,\ + -1 + +// The strong Psychic M/F trainers all use the below pokemon +// Additionally they use 1 of 3 legendary trios, and Latios or Latias depending on gender +#define FRONTIER_MONS_PSYCHIC_2(lati, legend1, legend2, legend3) \ + FRONTIER_MON_WOBBUFFET_1, \ + FRONTIER_MON_WOBBUFFET_2, \ + FRONTIER_MON_JYNX_1, \ + FRONTIER_MON_MR_MIME_1, \ + FRONTIER_MON_XATU_1, \ + FRONTIER_MON_HYPNO_1, \ + FRONTIER_MON_ALAKAZAM_1, \ + FRONTIER_MON_SLOWBRO_1, \ + FRONTIER_MON_SLOWKING_1, \ + FRONTIER_MON_CLAYDOL_1, \ + FRONTIER_MON_GARDEVOIR_1, \ + FRONTIER_MON_EXEGGUTOR_1, \ + FRONTIER_MON_STARMIE_1, \ + FRONTIER_MON_ESPEON_1, \ + FRONTIER_MON_METAGROSS_1, \ + FRONTIER_MON_JYNX_2, \ + FRONTIER_MON_MR_MIME_2, \ + FRONTIER_MON_XATU_2, \ + FRONTIER_MON_HYPNO_2, \ + FRONTIER_MON_ALAKAZAM_2, \ + FRONTIER_MON_SLOWBRO_2, \ + FRONTIER_MON_SLOWKING_2, \ + FRONTIER_MON_CLAYDOL_2, \ + FRONTIER_MON_GARDEVOIR_2, \ + FRONTIER_MON_EXEGGUTOR_2, \ + FRONTIER_MON_STARMIE_2, \ + FRONTIER_MON_ESPEON_2, \ + FRONTIER_MON_METAGROSS_2, \ + FRONTIER_MON_JYNX_3, \ + FRONTIER_MON_MR_MIME_3, \ + FRONTIER_MON_XATU_3, \ + FRONTIER_MON_HYPNO_3, \ + FRONTIER_MON_ALAKAZAM_3, \ + FRONTIER_MON_SLOWBRO_3, \ + FRONTIER_MON_SLOWKING_3, \ + FRONTIER_MON_CLAYDOL_3, \ + FRONTIER_MON_GARDEVOIR_3, \ + FRONTIER_MON_EXEGGUTOR_3, \ + FRONTIER_MON_STARMIE_3, \ + FRONTIER_MON_ESPEON_3, \ + FRONTIER_MON_METAGROSS_3, \ + FRONTIER_MON_JYNX_4, \ + FRONTIER_MON_MR_MIME_4, \ + FRONTIER_MON_XATU_4, \ + FRONTIER_MON_HYPNO_4, \ + FRONTIER_MON_ALAKAZAM_4, \ + FRONTIER_MON_SLOWBRO_4, \ + FRONTIER_MON_SLOWKING_4, \ + FRONTIER_MON_CLAYDOL_4, \ + FRONTIER_MON_GARDEVOIR_4, \ + FRONTIER_MON_EXEGGUTOR_4, \ + FRONTIER_MON_STARMIE_4, \ + FRONTIER_MON_ESPEON_4, \ + FRONTIER_MON_METAGROSS_4, \ + FRONTIER_MON_##legend1##_1, \ + FRONTIER_MON_##legend2##_1, \ + FRONTIER_MON_##legend3##_1, \ + FRONTIER_MON_##lati##_1, \ + FRONTIER_MON_##legend1##_2, \ + FRONTIER_MON_##legend2##_2, \ + FRONTIER_MON_##legend3##_2, \ + FRONTIER_MON_##lati##_2, \ + FRONTIER_MON_##legend1##_3, \ + FRONTIER_MON_##legend2##_3, \ + FRONTIER_MON_##legend3##_3, \ + FRONTIER_MON_##lati##_3, \ + FRONTIER_MON_##legend1##_4, \ + FRONTIER_MON_##legend2##_4, \ + FRONTIER_MON_##legend3##_4, \ + FRONTIER_MON_##lati##_4, \ + FRONTIER_MON_GARDEVOIR_5, \ + FRONTIER_MON_GARDEVOIR_6, \ + FRONTIER_MON_GARDEVOIR_7, \ + FRONTIER_MON_GARDEVOIR_8, \ + FRONTIER_MON_STARMIE_5, \ + FRONTIER_MON_STARMIE_6, \ + FRONTIER_MON_STARMIE_7, \ + FRONTIER_MON_STARMIE_8, \ + FRONTIER_MON_METAGROSS_5, \ + FRONTIER_MON_METAGROSS_6, \ + FRONTIER_MON_METAGROSS_7, \ + FRONTIER_MON_METAGROSS_8, + +#define FRONTIER_MONS_PSYCHIC_2A(lati) \ + FRONTIER_MONS_PSYCHIC_2(lati, ARTICUNO, ZAPDOS, MOLTRES) \ + FRONTIER_MON_##lati##_5, \ + FRONTIER_MON_##lati##_6, \ + FRONTIER_MON_##lati##_7, \ + FRONTIER_MON_##lati##_8, \ + FRONTIER_MON_ARTICUNO_5, \ + FRONTIER_MON_ARTICUNO_6, \ + FRONTIER_MON_ZAPDOS_5, \ + FRONTIER_MON_ZAPDOS_6, \ + FRONTIER_MON_MOLTRES_5, \ + FRONTIER_MON_MOLTRES_6, \ + -1 + +#define FRONTIER_MONS_PSYCHIC_2B(lati) \ + FRONTIER_MONS_PSYCHIC_2(lati, RAIKOU, ENTEI, SUICUNE) \ + FRONTIER_MON_##lati##_5, \ + FRONTIER_MON_##lati##_6, \ + FRONTIER_MON_##lati##_7, \ + FRONTIER_MON_##lati##_8, \ + FRONTIER_MON_RAIKOU_5, \ + FRONTIER_MON_RAIKOU_6, \ + FRONTIER_MON_ENTEI_5, \ + FRONTIER_MON_ENTEI_6, \ + FRONTIER_MON_SUICUNE_5, \ + FRONTIER_MON_SUICUNE_6, \ + -1 + +// Because the regis/latis are swapped here they cant all be merged into the same macro and match +#define FRONTIER_MONS_PSYCHIC_2C(lati) \ + FRONTIER_MONS_PSYCHIC_2(lati, REGIROCK, REGICE, REGISTEEL) \ + FRONTIER_MON_REGIROCK_5, \ + FRONTIER_MON_REGIROCK_6, \ + FRONTIER_MON_REGICE_5, \ + FRONTIER_MON_REGICE_6, \ + FRONTIER_MON_REGISTEEL_5, \ + FRONTIER_MON_REGISTEEL_6, \ + FRONTIER_MON_##lati##_5, \ + FRONTIER_MON_##lati##_6, \ + FRONTIER_MON_##lati##_7, \ + FRONTIER_MON_##lati##_8, \ + -1 + +#define FRONTIER_MONS_HEX_MANIAC_2A \ + FRONTIER_MON_SHARPEDO_2, \ + FRONTIER_MON_ABSOL_2, \ + FRONTIER_MON_MISDREAVUS_1, \ + FRONTIER_MON_DUSCLOPS_1, \ + FRONTIER_MON_SHIFTRY_1, \ + FRONTIER_MON_GENGAR_1, \ + FRONTIER_MON_HOUNDOOM_1, \ + FRONTIER_MON_UMBREON_1, \ + FRONTIER_MON_MISDREAVUS_2, \ + FRONTIER_MON_DUSCLOPS_2, \ + FRONTIER_MON_SHIFTRY_2, \ + FRONTIER_MON_GENGAR_2, \ + FRONTIER_MON_HOUNDOOM_2, \ + FRONTIER_MON_UMBREON_2, \ + FRONTIER_MON_MISDREAVUS_3, \ + FRONTIER_MON_DUSCLOPS_3, \ + FRONTIER_MON_SHIFTRY_3, \ + FRONTIER_MON_GENGAR_3, \ + FRONTIER_MON_HOUNDOOM_3, \ + FRONTIER_MON_UMBREON_3, \ + FRONTIER_MON_MISDREAVUS_4, \ + FRONTIER_MON_DUSCLOPS_4, \ + FRONTIER_MON_SHIFTRY_4, \ + FRONTIER_MON_GENGAR_4, \ + FRONTIER_MON_HOUNDOOM_4, \ + FRONTIER_MON_UMBREON_4, \ + FRONTIER_MON_GENGAR_5, \ + FRONTIER_MON_GENGAR_6, \ + FRONTIER_MON_GENGAR_7, \ + FRONTIER_MON_GENGAR_8, \ + -1 + +#define FRONTIER_MONS_HEX_MANIAC_2B \ + FRONTIER_MON_SEVIPER_2, \ + FRONTIER_MON_MISDREAVUS_1, \ + FRONTIER_MON_DUSCLOPS_1, \ + FRONTIER_MON_VILEPLUME_1, \ + FRONTIER_MON_VICTREEBEL_1, \ + FRONTIER_MON_WEEZING_1, \ + FRONTIER_MON_NIDOQUEEN_1, \ + FRONTIER_MON_NIDOKING_1, \ + FRONTIER_MON_MUK_1, \ + FRONTIER_MON_GENGAR_1, \ + FRONTIER_MON_TENTACRUEL_1, \ + FRONTIER_MON_VENUSAUR_1, \ + FRONTIER_MON_CROBAT_1, \ + FRONTIER_MON_MISDREAVUS_2, \ + FRONTIER_MON_DUSCLOPS_2, \ + FRONTIER_MON_VILEPLUME_2, \ + FRONTIER_MON_VICTREEBEL_2, \ + FRONTIER_MON_WEEZING_2, \ + FRONTIER_MON_NIDOQUEEN_2, \ + FRONTIER_MON_NIDOKING_2, \ + FRONTIER_MON_MUK_2, \ + FRONTIER_MON_GENGAR_2, \ + FRONTIER_MON_TENTACRUEL_2, \ + FRONTIER_MON_VENUSAUR_2, \ + FRONTIER_MON_CROBAT_2, \ + FRONTIER_MON_MISDREAVUS_3, \ + FRONTIER_MON_DUSCLOPS_3, \ + FRONTIER_MON_VILEPLUME_3, \ + FRONTIER_MON_VICTREEBEL_3, \ + FRONTIER_MON_WEEZING_3, \ + FRONTIER_MON_NIDOQUEEN_3, \ + FRONTIER_MON_NIDOKING_3, \ + FRONTIER_MON_MUK_3, \ + FRONTIER_MON_GENGAR_3, \ + FRONTIER_MON_TENTACRUEL_3, \ + FRONTIER_MON_VENUSAUR_3, \ + FRONTIER_MON_CROBAT_3, \ + FRONTIER_MON_MISDREAVUS_4, \ + FRONTIER_MON_DUSCLOPS_4, \ + FRONTIER_MON_VILEPLUME_4, \ + FRONTIER_MON_VICTREEBEL_4, \ + FRONTIER_MON_WEEZING_4, \ + FRONTIER_MON_NIDOQUEEN_4, \ + FRONTIER_MON_NIDOKING_4, \ + FRONTIER_MON_MUK_4, \ + FRONTIER_MON_GENGAR_4, \ + FRONTIER_MON_TENTACRUEL_4, \ + FRONTIER_MON_VENUSAUR_4, \ + FRONTIER_MON_CROBAT_4, \ + FRONTIER_MON_GENGAR_5, \ + FRONTIER_MON_GENGAR_6, \ + FRONTIER_MON_GENGAR_7, \ + FRONTIER_MON_GENGAR_8, \ + -1 + +#define FRONTIER_MONS_HEX_MANIAC_2C \ + FRONTIER_MON_SEVIPER_2, \ + FRONTIER_MON_SHARPEDO_2, \ + FRONTIER_MON_ABSOL_2, \ + FRONTIER_MON_VILEPLUME_1, \ + FRONTIER_MON_VICTREEBEL_1, \ + FRONTIER_MON_SHIFTRY_1, \ + FRONTIER_MON_WEEZING_1, \ + FRONTIER_MON_NIDOQUEEN_1, \ + FRONTIER_MON_NIDOKING_1, \ + FRONTIER_MON_MUK_1, \ + FRONTIER_MON_GENGAR_1, \ + FRONTIER_MON_HOUNDOOM_1, \ + FRONTIER_MON_TENTACRUEL_1, \ + FRONTIER_MON_VENUSAUR_1, \ + FRONTIER_MON_UMBREON_1, \ + FRONTIER_MON_CROBAT_1, \ + FRONTIER_MON_VILEPLUME_2, \ + FRONTIER_MON_VICTREEBEL_2, \ + FRONTIER_MON_SHIFTRY_2, \ + FRONTIER_MON_WEEZING_2, \ + FRONTIER_MON_NIDOQUEEN_2, \ + FRONTIER_MON_NIDOKING_2, \ + FRONTIER_MON_MUK_2, \ + FRONTIER_MON_GENGAR_2, \ + FRONTIER_MON_HOUNDOOM_2, \ + FRONTIER_MON_TENTACRUEL_2, \ + FRONTIER_MON_VENUSAUR_2, \ + FRONTIER_MON_UMBREON_2, \ + FRONTIER_MON_CROBAT_2, \ + FRONTIER_MON_VILEPLUME_3, \ + FRONTIER_MON_VICTREEBEL_3, \ + FRONTIER_MON_SHIFTRY_3, \ + FRONTIER_MON_WEEZING_3, \ + FRONTIER_MON_NIDOQUEEN_3, \ + FRONTIER_MON_NIDOKING_3, \ + FRONTIER_MON_MUK_3, \ + FRONTIER_MON_GENGAR_3, \ + FRONTIER_MON_HOUNDOOM_3, \ + FRONTIER_MON_TENTACRUEL_3, \ + FRONTIER_MON_VENUSAUR_3, \ + FRONTIER_MON_UMBREON_3, \ + FRONTIER_MON_CROBAT_3, \ + FRONTIER_MON_VILEPLUME_4, \ + FRONTIER_MON_VICTREEBEL_4, \ + FRONTIER_MON_SHIFTRY_4, \ + FRONTIER_MON_WEEZING_4, \ + FRONTIER_MON_NIDOQUEEN_4, \ + FRONTIER_MON_NIDOKING_4, \ + FRONTIER_MON_MUK_4, \ + FRONTIER_MON_GENGAR_4, \ + FRONTIER_MON_HOUNDOOM_4, \ + FRONTIER_MON_TENTACRUEL_4, \ + FRONTIER_MON_VENUSAUR_4, \ + FRONTIER_MON_UMBREON_4, \ + FRONTIER_MON_CROBAT_4, \ + FRONTIER_MON_GENGAR_5, \ + FRONTIER_MON_GENGAR_6, \ + FRONTIER_MON_GENGAR_7, \ + FRONTIER_MON_GENGAR_8, \ + -1 + +// For whatever reason FRONTIER_MON_MAROWAK_2 is in a different order than _1 _3 and _4 +// This order change is the only difference btween FRONITER_MONS_POKEMANIAC_2A and FRONTIER_MONS_POKEMANIAC_2B other than the numbered suffixes +#define FRONTIER_MONS_POKEMANIAC_2A \ + FRONTIER_MON_ZANGOOSE_2, \ + FRONTIER_MON_GRANBULL_1, \ + FRONTIER_MON_SKARMORY_1, \ + FRONTIER_MON_MAROWAK_1, \ + FRONTIER_MON_EXPLOUD_1, \ + FRONTIER_MON_GLALIE_1, \ + FRONTIER_MON_GOLEM_1, \ + FRONTIER_MON_RHYDON_1, \ + FRONTIER_MON_KANGASKHAN_1, \ + FRONTIER_MON_TAUROS_1, \ + FRONTIER_MON_MILTANK_1, \ + FRONTIER_MON_NIDOQUEEN_1, \ + FRONTIER_MON_NIDOKING_1, \ + FRONTIER_MON_URSARING_1, \ + FRONTIER_MON_DONPHAN_1, \ + FRONTIER_MON_WAILORD_1, \ + FRONTIER_MON_STEELIX_1, \ + FRONTIER_MON_AERODACTYL_1, \ + FRONTIER_MON_FLYGON_1, \ + FRONTIER_MON_VENUSAUR_1, \ + FRONTIER_MON_MEGANIUM_1, \ + FRONTIER_MON_BLASTOISE_1, \ + FRONTIER_MON_FERALIGATR_1, \ + FRONTIER_MON_AGGRON_1, \ + FRONTIER_MON_WALREIN_1, \ + FRONTIER_MON_CHARIZARD_1, \ + FRONTIER_MON_LAPRAS_1, \ + FRONTIER_MON_SWAMPERT_1, \ + FRONTIER_MON_GYARADOS_1, \ + FRONTIER_MON_SNORLAX_1, \ + FRONTIER_MON_BLISSEY_1, \ + FRONTIER_MON_SALAMENCE_1, \ + FRONTIER_MON_METAGROSS_1, \ + FRONTIER_MON_SLAKING_1, \ + FRONTIER_MON_MAROWAK_2, \ + FRONTIER_MON_GRANBULL_2, \ + FRONTIER_MON_SKARMORY_2, \ + FRONTIER_MON_EXPLOUD_2, \ + FRONTIER_MON_GLALIE_2, \ + FRONTIER_MON_GOLEM_2, \ + FRONTIER_MON_RHYDON_2, \ + FRONTIER_MON_KANGASKHAN_2, \ + FRONTIER_MON_TAUROS_2, \ + FRONTIER_MON_MILTANK_2, \ + FRONTIER_MON_NIDOQUEEN_2, \ + FRONTIER_MON_NIDOKING_2, \ + FRONTIER_MON_URSARING_2, \ + FRONTIER_MON_DONPHAN_2, \ + FRONTIER_MON_WAILORD_2, \ + FRONTIER_MON_STEELIX_2, \ + FRONTIER_MON_AERODACTYL_2, \ + FRONTIER_MON_FLYGON_2, \ + FRONTIER_MON_VENUSAUR_2, \ + FRONTIER_MON_MEGANIUM_2, \ + FRONTIER_MON_BLASTOISE_2, \ + FRONTIER_MON_FERALIGATR_2, \ + FRONTIER_MON_AGGRON_2, \ + FRONTIER_MON_WALREIN_2, \ + FRONTIER_MON_CHARIZARD_2, \ + FRONTIER_MON_LAPRAS_2, \ + FRONTIER_MON_SWAMPERT_2, \ + FRONTIER_MON_GYARADOS_2, \ + FRONTIER_MON_SNORLAX_2, \ + FRONTIER_MON_BLISSEY_2, \ + FRONTIER_MON_SALAMENCE_2, \ + FRONTIER_MON_METAGROSS_2, \ + FRONTIER_MON_SLAKING_2, \ + FRONTIER_MON_DRAGONITE_1, \ + FRONTIER_MON_DRAGONITE_2, \ + FRONTIER_MON_DRAGONITE_3, \ + FRONTIER_MON_DRAGONITE_4, \ + FRONTIER_MON_DRAGONITE_5, \ + FRONTIER_MON_DRAGONITE_6, \ + FRONTIER_MON_DRAGONITE_7, \ + FRONTIER_MON_DRAGONITE_8, \ + FRONTIER_MON_DRAGONITE_9, \ + FRONTIER_MON_DRAGONITE_10, \ + FRONTIER_MON_TYRANITAR_1, \ + FRONTIER_MON_TYRANITAR_2, \ + FRONTIER_MON_TYRANITAR_3, \ + FRONTIER_MON_TYRANITAR_4, \ + FRONTIER_MON_TYRANITAR_5, \ + FRONTIER_MON_TYRANITAR_6, \ + FRONTIER_MON_TYRANITAR_7, \ + FRONTIER_MON_TYRANITAR_8, \ + FRONTIER_MON_TYRANITAR_9, \ + FRONTIER_MON_TYRANITAR_10, \ + -1 + +#define FRONTIER_MONS_POKEMANIAC_2B \ + FRONTIER_MON_ZANGOOSE_2, \ + FRONTIER_MON_GRANBULL_3, \ + FRONTIER_MON_SKARMORY_3, \ + FRONTIER_MON_MAROWAK_3, \ + FRONTIER_MON_EXPLOUD_3, \ + FRONTIER_MON_GLALIE_3, \ + FRONTIER_MON_GOLEM_3, \ + FRONTIER_MON_RHYDON_3, \ + FRONTIER_MON_KANGASKHAN_3, \ + FRONTIER_MON_TAUROS_3, \ + FRONTIER_MON_MILTANK_3, \ + FRONTIER_MON_NIDOQUEEN_3, \ + FRONTIER_MON_NIDOKING_3, \ + FRONTIER_MON_URSARING_3, \ + FRONTIER_MON_DONPHAN_3, \ + FRONTIER_MON_WAILORD_3, \ + FRONTIER_MON_STEELIX_3, \ + FRONTIER_MON_AERODACTYL_3, \ + FRONTIER_MON_FLYGON_3, \ + FRONTIER_MON_VENUSAUR_3, \ + FRONTIER_MON_MEGANIUM_3, \ + FRONTIER_MON_BLASTOISE_3, \ + FRONTIER_MON_FERALIGATR_3, \ + FRONTIER_MON_AGGRON_3, \ + FRONTIER_MON_WALREIN_3, \ + FRONTIER_MON_CHARIZARD_3, \ + FRONTIER_MON_LAPRAS_3, \ + FRONTIER_MON_SWAMPERT_3, \ + FRONTIER_MON_GYARADOS_3, \ + FRONTIER_MON_SNORLAX_3, \ + FRONTIER_MON_BLISSEY_3, \ + FRONTIER_MON_SALAMENCE_3, \ + FRONTIER_MON_METAGROSS_3, \ + FRONTIER_MON_SLAKING_3, \ + FRONTIER_MON_GRANBULL_4, \ + FRONTIER_MON_SKARMORY_4, \ + FRONTIER_MON_MAROWAK_4, \ + FRONTIER_MON_EXPLOUD_4, \ + FRONTIER_MON_GLALIE_4, \ + FRONTIER_MON_GOLEM_4, \ + FRONTIER_MON_RHYDON_4, \ + FRONTIER_MON_KANGASKHAN_4, \ + FRONTIER_MON_TAUROS_4, \ + FRONTIER_MON_MILTANK_4, \ + FRONTIER_MON_NIDOQUEEN_4, \ + FRONTIER_MON_NIDOKING_4, \ + FRONTIER_MON_URSARING_4, \ + FRONTIER_MON_DONPHAN_4, \ + FRONTIER_MON_WAILORD_4, \ + FRONTIER_MON_STEELIX_4, \ + FRONTIER_MON_AERODACTYL_4, \ + FRONTIER_MON_FLYGON_4, \ + FRONTIER_MON_VENUSAUR_4, \ + FRONTIER_MON_MEGANIUM_4, \ + FRONTIER_MON_BLASTOISE_4, \ + FRONTIER_MON_FERALIGATR_4, \ + FRONTIER_MON_AGGRON_4, \ + FRONTIER_MON_WALREIN_4, \ + FRONTIER_MON_CHARIZARD_4, \ + FRONTIER_MON_LAPRAS_4, \ + FRONTIER_MON_SWAMPERT_4, \ + FRONTIER_MON_GYARADOS_4, \ + FRONTIER_MON_SNORLAX_4, \ + FRONTIER_MON_BLISSEY_4, \ + FRONTIER_MON_SALAMENCE_4, \ + FRONTIER_MON_METAGROSS_4, \ + FRONTIER_MON_SLAKING_4, \ + FRONTIER_MON_DRAGONITE_1, \ + FRONTIER_MON_DRAGONITE_2, \ + FRONTIER_MON_DRAGONITE_3, \ + FRONTIER_MON_DRAGONITE_4, \ + FRONTIER_MON_DRAGONITE_5, \ + FRONTIER_MON_DRAGONITE_6, \ + FRONTIER_MON_DRAGONITE_7, \ + FRONTIER_MON_DRAGONITE_8, \ + FRONTIER_MON_DRAGONITE_9, \ + FRONTIER_MON_DRAGONITE_10, \ + FRONTIER_MON_TYRANITAR_1, \ + FRONTIER_MON_TYRANITAR_2, \ + FRONTIER_MON_TYRANITAR_3, \ + FRONTIER_MON_TYRANITAR_4, \ + FRONTIER_MON_TYRANITAR_5, \ + FRONTIER_MON_TYRANITAR_6, \ + FRONTIER_MON_TYRANITAR_7, \ + FRONTIER_MON_TYRANITAR_8, \ + FRONTIER_MON_TYRANITAR_9, \ + FRONTIER_MON_TYRANITAR_10, \ + -1 + +#define FRONTIER_MONS_POKEMANIAC_2C \ + FRONTIER_MON_ZANGOOSE_2, \ + FRONTIER_MON_URSARING_1, \ + FRONTIER_MON_STEELIX_1, \ + FRONTIER_MON_AERODACTYL_1, \ + FRONTIER_MON_MEGANIUM_1, \ + FRONTIER_MON_AGGRON_1, \ + FRONTIER_MON_CHARIZARD_1, \ + FRONTIER_MON_LAPRAS_1, \ + FRONTIER_MON_SWAMPERT_1, \ + FRONTIER_MON_GYARADOS_1, \ + FRONTIER_MON_SNORLAX_1, \ + FRONTIER_MON_SALAMENCE_1, \ + FRONTIER_MON_METAGROSS_1, \ + FRONTIER_MON_URSARING_2, \ + FRONTIER_MON_STEELIX_2, \ + FRONTIER_MON_AERODACTYL_2, \ + FRONTIER_MON_MEGANIUM_2, \ + FRONTIER_MON_AGGRON_2, \ + FRONTIER_MON_CHARIZARD_2, \ + FRONTIER_MON_LAPRAS_2, \ + FRONTIER_MON_SWAMPERT_2, \ + FRONTIER_MON_GYARADOS_2, \ + FRONTIER_MON_SNORLAX_2, \ + FRONTIER_MON_SALAMENCE_2, \ + FRONTIER_MON_METAGROSS_2, \ + FRONTIER_MON_URSARING_3, \ + FRONTIER_MON_STEELIX_3, \ + FRONTIER_MON_AERODACTYL_3, \ + FRONTIER_MON_MEGANIUM_3, \ + FRONTIER_MON_AGGRON_3, \ + FRONTIER_MON_CHARIZARD_3, \ + FRONTIER_MON_LAPRAS_3, \ + FRONTIER_MON_SWAMPERT_3, \ + FRONTIER_MON_GYARADOS_3, \ + FRONTIER_MON_SNORLAX_3, \ + FRONTIER_MON_SALAMENCE_3, \ + FRONTIER_MON_METAGROSS_3, \ + FRONTIER_MON_URSARING_4, \ + FRONTIER_MON_STEELIX_4, \ + FRONTIER_MON_AERODACTYL_4, \ + FRONTIER_MON_MEGANIUM_4, \ + FRONTIER_MON_AGGRON_4, \ + FRONTIER_MON_CHARIZARD_4, \ + FRONTIER_MON_LAPRAS_4, \ + FRONTIER_MON_SWAMPERT_4, \ + FRONTIER_MON_GYARADOS_4, \ + FRONTIER_MON_SNORLAX_4, \ + FRONTIER_MON_SALAMENCE_4, \ + FRONTIER_MON_METAGROSS_4, \ + FRONTIER_MON_URSARING_5, \ + FRONTIER_MON_URSARING_6, \ + FRONTIER_MON_URSARING_7, \ + FRONTIER_MON_URSARING_8, \ + FRONTIER_MON_LAPRAS_5, \ + FRONTIER_MON_LAPRAS_6, \ + FRONTIER_MON_LAPRAS_7, \ + FRONTIER_MON_LAPRAS_8, \ + FRONTIER_MON_SNORLAX_5, \ + FRONTIER_MON_SNORLAX_6, \ + FRONTIER_MON_SNORLAX_7, \ + FRONTIER_MON_SNORLAX_8, \ + FRONTIER_MON_SALAMENCE_5, \ + FRONTIER_MON_SALAMENCE_6, \ + FRONTIER_MON_SALAMENCE_7, \ + FRONTIER_MON_SALAMENCE_8, \ + FRONTIER_MON_METAGROSS_5, \ + FRONTIER_MON_METAGROSS_6, \ + FRONTIER_MON_METAGROSS_7, \ + FRONTIER_MON_METAGROSS_8, \ + FRONTIER_MON_DRAGONITE_1, \ + FRONTIER_MON_DRAGONITE_2, \ + FRONTIER_MON_DRAGONITE_3, \ + FRONTIER_MON_DRAGONITE_4, \ + FRONTIER_MON_DRAGONITE_5, \ + FRONTIER_MON_DRAGONITE_6, \ + FRONTIER_MON_DRAGONITE_7, \ + FRONTIER_MON_DRAGONITE_8, \ + FRONTIER_MON_DRAGONITE_9, \ + FRONTIER_MON_DRAGONITE_10, \ + FRONTIER_MON_TYRANITAR_1, \ + FRONTIER_MON_TYRANITAR_2, \ + FRONTIER_MON_TYRANITAR_3, \ + FRONTIER_MON_TYRANITAR_4, \ + FRONTIER_MON_TYRANITAR_5, \ + FRONTIER_MON_TYRANITAR_6, \ + FRONTIER_MON_TYRANITAR_7, \ + FRONTIER_MON_TYRANITAR_8, \ + FRONTIER_MON_TYRANITAR_9, \ + FRONTIER_MON_TYRANITAR_10, \ + -1 + +// Identical to FRONTIER_MONS_COOLTRAINER_2C but with both latias and latios +#define FRONTIER_MONS_GENTLEMAN_3A \ + FRONTIER_MON_GENGAR_1, \ + FRONTIER_MON_URSARING_1, \ + FRONTIER_MON_MACHAMP_1, \ + FRONTIER_MON_GARDEVOIR_1, \ + FRONTIER_MON_STARMIE_1, \ + FRONTIER_MON_LAPRAS_1, \ + FRONTIER_MON_SNORLAX_1, \ + FRONTIER_MON_SALAMENCE_1, \ + FRONTIER_MON_METAGROSS_1, \ + FRONTIER_MON_GENGAR_2, \ + FRONTIER_MON_URSARING_2, \ + FRONTIER_MON_MACHAMP_2, \ + FRONTIER_MON_GARDEVOIR_2, \ + FRONTIER_MON_STARMIE_2, \ + FRONTIER_MON_LAPRAS_2, \ + FRONTIER_MON_SNORLAX_2, \ + FRONTIER_MON_SALAMENCE_2, \ + FRONTIER_MON_METAGROSS_2, \ + FRONTIER_MON_GENGAR_3, \ + FRONTIER_MON_URSARING_3, \ + FRONTIER_MON_MACHAMP_3, \ + FRONTIER_MON_GARDEVOIR_3, \ + FRONTIER_MON_STARMIE_3, \ + FRONTIER_MON_LAPRAS_3, \ + FRONTIER_MON_SNORLAX_3, \ + FRONTIER_MON_SALAMENCE_3, \ + FRONTIER_MON_METAGROSS_3, \ + FRONTIER_MON_GENGAR_4, \ + FRONTIER_MON_URSARING_4, \ + FRONTIER_MON_MACHAMP_4, \ + FRONTIER_MON_GARDEVOIR_4, \ + FRONTIER_MON_STARMIE_4, \ + FRONTIER_MON_LAPRAS_4, \ + FRONTIER_MON_SNORLAX_4, \ + FRONTIER_MON_SALAMENCE_4, \ + FRONTIER_MON_METAGROSS_4, \ + FRONTIER_MON_LATIAS_1, \ + FRONTIER_MON_LATIOS_1, \ + FRONTIER_MON_LATIAS_2, \ + FRONTIER_MON_LATIOS_2, \ + FRONTIER_MON_LATIAS_3, \ + FRONTIER_MON_LATIOS_3, \ + FRONTIER_MON_LATIAS_4, \ + FRONTIER_MON_LATIOS_4, \ + FRONTIER_MON_GENGAR_5, \ + FRONTIER_MON_GENGAR_6, \ + FRONTIER_MON_GENGAR_7, \ + FRONTIER_MON_GENGAR_8, \ + FRONTIER_MON_URSARING_5, \ + FRONTIER_MON_URSARING_6, \ + FRONTIER_MON_URSARING_7, \ + FRONTIER_MON_URSARING_8, \ + FRONTIER_MON_MACHAMP_5, \ + FRONTIER_MON_MACHAMP_6, \ + FRONTIER_MON_MACHAMP_7, \ + FRONTIER_MON_MACHAMP_8, \ + FRONTIER_MON_GARDEVOIR_5, \ + FRONTIER_MON_GARDEVOIR_6, \ + FRONTIER_MON_GARDEVOIR_7, \ + FRONTIER_MON_GARDEVOIR_8, \ + FRONTIER_MON_STARMIE_5, \ + FRONTIER_MON_STARMIE_6, \ + FRONTIER_MON_STARMIE_7, \ + FRONTIER_MON_STARMIE_8, \ + FRONTIER_MON_LAPRAS_5, \ + FRONTIER_MON_LAPRAS_6, \ + FRONTIER_MON_LAPRAS_7, \ + FRONTIER_MON_LAPRAS_8, \ + FRONTIER_MON_SNORLAX_5, \ + FRONTIER_MON_SNORLAX_6, \ + FRONTIER_MON_SNORLAX_7, \ + FRONTIER_MON_SNORLAX_8, \ + FRONTIER_MON_SALAMENCE_5, \ + FRONTIER_MON_SALAMENCE_6, \ + FRONTIER_MON_SALAMENCE_7, \ + FRONTIER_MON_SALAMENCE_8, \ + FRONTIER_MON_METAGROSS_5, \ + FRONTIER_MON_METAGROSS_6, \ + FRONTIER_MON_METAGROSS_7, \ + FRONTIER_MON_METAGROSS_8, \ + FRONTIER_MON_DRAGONITE_1, \ + FRONTIER_MON_DRAGONITE_2, \ + FRONTIER_MON_DRAGONITE_3, \ + FRONTIER_MON_DRAGONITE_4, \ + FRONTIER_MON_DRAGONITE_5, \ + FRONTIER_MON_DRAGONITE_6, \ + FRONTIER_MON_DRAGONITE_7, \ + FRONTIER_MON_DRAGONITE_8, \ + FRONTIER_MON_DRAGONITE_9, \ + FRONTIER_MON_DRAGONITE_10, \ + FRONTIER_MON_TYRANITAR_1, \ + FRONTIER_MON_TYRANITAR_2, \ + FRONTIER_MON_TYRANITAR_3, \ + FRONTIER_MON_TYRANITAR_4, \ + FRONTIER_MON_TYRANITAR_5, \ + FRONTIER_MON_TYRANITAR_6, \ + FRONTIER_MON_TYRANITAR_7, \ + FRONTIER_MON_TYRANITAR_8, \ + FRONTIER_MON_TYRANITAR_9, \ + FRONTIER_MON_TYRANITAR_10, \ + -1 + +// Identical to FRONTIER_MONS_COOLTRAINER_2D but with both latias and latios +#define FRONTIER_MONS_GENTLEMAN_3B \ + FRONTIER_MON_ARTICUNO_1, \ + FRONTIER_MON_ZAPDOS_1, \ + FRONTIER_MON_MOLTRES_1, \ + FRONTIER_MON_RAIKOU_1, \ + FRONTIER_MON_ENTEI_1, \ + FRONTIER_MON_SUICUNE_1, \ + FRONTIER_MON_REGIROCK_1, \ + FRONTIER_MON_REGICE_1, \ + FRONTIER_MON_REGISTEEL_1, \ + FRONTIER_MON_LATIAS_1, \ + FRONTIER_MON_LATIOS_1, \ + FRONTIER_MON_ARTICUNO_2, \ + FRONTIER_MON_ZAPDOS_2, \ + FRONTIER_MON_MOLTRES_2, \ + FRONTIER_MON_RAIKOU_2, \ + FRONTIER_MON_ENTEI_2, \ + FRONTIER_MON_SUICUNE_2, \ + FRONTIER_MON_REGIROCK_2, \ + FRONTIER_MON_REGICE_2, \ + FRONTIER_MON_REGISTEEL_2, \ + FRONTIER_MON_LATIAS_2, \ + FRONTIER_MON_LATIOS_2, \ + FRONTIER_MON_ARTICUNO_3, \ + FRONTIER_MON_ZAPDOS_3, \ + FRONTIER_MON_MOLTRES_3, \ + FRONTIER_MON_RAIKOU_3, \ + FRONTIER_MON_ENTEI_3, \ + FRONTIER_MON_SUICUNE_3, \ + FRONTIER_MON_REGIROCK_3, \ + FRONTIER_MON_REGICE_3, \ + FRONTIER_MON_REGISTEEL_3, \ + FRONTIER_MON_LATIAS_3, \ + FRONTIER_MON_LATIOS_3, \ + FRONTIER_MON_ARTICUNO_4, \ + FRONTIER_MON_ZAPDOS_4, \ + FRONTIER_MON_MOLTRES_4, \ + FRONTIER_MON_RAIKOU_4, \ + FRONTIER_MON_ENTEI_4, \ + FRONTIER_MON_SUICUNE_4, \ + FRONTIER_MON_REGIROCK_4, \ + FRONTIER_MON_REGICE_4, \ + FRONTIER_MON_REGISTEEL_4, \ + FRONTIER_MON_LATIAS_4, \ + FRONTIER_MON_LATIOS_4, \ + FRONTIER_MON_REGIROCK_5, \ + FRONTIER_MON_REGIROCK_6, \ + FRONTIER_MON_REGICE_5, \ + FRONTIER_MON_REGICE_6, \ + FRONTIER_MON_REGISTEEL_5, \ + FRONTIER_MON_REGISTEEL_6, \ + FRONTIER_MON_LATIAS_5, \ + FRONTIER_MON_LATIAS_6, \ + FRONTIER_MON_LATIAS_7, \ + FRONTIER_MON_LATIAS_8, \ + FRONTIER_MON_LATIOS_5, \ + FRONTIER_MON_LATIOS_6, \ + FRONTIER_MON_LATIOS_7, \ + FRONTIER_MON_LATIOS_8, \ + FRONTIER_MON_DRAGONITE_1, \ + FRONTIER_MON_DRAGONITE_2, \ + FRONTIER_MON_DRAGONITE_3, \ + FRONTIER_MON_DRAGONITE_4, \ + FRONTIER_MON_DRAGONITE_5, \ + FRONTIER_MON_DRAGONITE_6, \ + FRONTIER_MON_DRAGONITE_7, \ + FRONTIER_MON_DRAGONITE_8, \ + FRONTIER_MON_DRAGONITE_9, \ + FRONTIER_MON_DRAGONITE_10, \ + FRONTIER_MON_TYRANITAR_1, \ + FRONTIER_MON_TYRANITAR_2, \ + FRONTIER_MON_TYRANITAR_3, \ + FRONTIER_MON_TYRANITAR_4, \ + FRONTIER_MON_TYRANITAR_5, \ + FRONTIER_MON_TYRANITAR_6, \ + FRONTIER_MON_TYRANITAR_7, \ + FRONTIER_MON_TYRANITAR_8, \ + FRONTIER_MON_TYRANITAR_9, \ + FRONTIER_MON_TYRANITAR_10, \ + FRONTIER_MON_ARTICUNO_5, \ + FRONTIER_MON_ARTICUNO_6, \ + FRONTIER_MON_ZAPDOS_5, \ + FRONTIER_MON_ZAPDOS_6, \ + FRONTIER_MON_MOLTRES_5, \ + FRONTIER_MON_MOLTRES_6, \ + FRONTIER_MON_RAIKOU_5, \ + FRONTIER_MON_RAIKOU_6, \ + FRONTIER_MON_ENTEI_5, \ + FRONTIER_MON_ENTEI_6, \ + FRONTIER_MON_SUICUNE_5, \ + FRONTIER_MON_SUICUNE_6, \ + -1 + +#define FRONTIER_MONS_SWIMMING_TRIATHLETE_M_3 \ + FRONTIER_MON_SNEASEL_2, \ + FRONTIER_MON_CLOYSTER_2, \ + FRONTIER_MON_MEDICHAM_1, \ + FRONTIER_MON_JYNX_1, \ + FRONTIER_MON_HARIYAMA_1, \ + FRONTIER_MON_DEWGONG_1, \ + FRONTIER_MON_GLALIE_1, \ + FRONTIER_MON_MACHAMP_1, \ + FRONTIER_MON_WALREIN_1, \ + FRONTIER_MON_LAPRAS_1, \ + FRONTIER_MON_MEDICHAM_2, \ + FRONTIER_MON_JYNX_2, \ + FRONTIER_MON_HARIYAMA_2, \ + FRONTIER_MON_DEWGONG_2, \ + FRONTIER_MON_GLALIE_2, \ + FRONTIER_MON_MACHAMP_2, \ + FRONTIER_MON_WALREIN_2, \ + FRONTIER_MON_LAPRAS_2, \ + FRONTIER_MON_MEDICHAM_3, \ + FRONTIER_MON_JYNX_3, \ + FRONTIER_MON_LANTURN_3, \ + FRONTIER_MON_WHISCASH_3, \ + FRONTIER_MON_QUAGSIRE_3, \ + FRONTIER_MON_HARIYAMA_3, \ + FRONTIER_MON_DEWGONG_3, \ + FRONTIER_MON_GLALIE_3, \ + FRONTIER_MON_LUDICOLO_3, \ + FRONTIER_MON_SLOWBRO_3, \ + FRONTIER_MON_SLOWKING_3, \ + FRONTIER_MON_GOLDUCK_3, \ + FRONTIER_MON_WAILORD_3, \ + FRONTIER_MON_MACHAMP_3, \ + FRONTIER_MON_TENTACRUEL_3, \ + FRONTIER_MON_STARMIE_3, \ + FRONTIER_MON_VAPOREON_3, \ + FRONTIER_MON_BLASTOISE_3, \ + FRONTIER_MON_FERALIGATR_3, \ + FRONTIER_MON_WALREIN_3, \ + FRONTIER_MON_LAPRAS_3, \ + FRONTIER_MON_SWAMPERT_3, \ + FRONTIER_MON_GYARADOS_3, \ + FRONTIER_MON_KINGDRA_3, \ + FRONTIER_MON_MILOTIC_3, \ + FRONTIER_MON_MEDICHAM_4, \ + FRONTIER_MON_JYNX_4, \ + FRONTIER_MON_LANTURN_4, \ + FRONTIER_MON_WHISCASH_4, \ + FRONTIER_MON_QUAGSIRE_4, \ + FRONTIER_MON_HARIYAMA_4, \ + FRONTIER_MON_DEWGONG_4, \ + FRONTIER_MON_GLALIE_4, \ + FRONTIER_MON_LUDICOLO_4, \ + FRONTIER_MON_SLOWBRO_4, \ + FRONTIER_MON_SLOWKING_4, \ + FRONTIER_MON_GOLDUCK_4, \ + FRONTIER_MON_WAILORD_4, \ + FRONTIER_MON_MACHAMP_4, \ + FRONTIER_MON_TENTACRUEL_4, \ + FRONTIER_MON_STARMIE_4, \ + FRONTIER_MON_VAPOREON_4, \ + FRONTIER_MON_BLASTOISE_4, \ + FRONTIER_MON_FERALIGATR_4, \ + FRONTIER_MON_WALREIN_4, \ + FRONTIER_MON_LAPRAS_4, \ + FRONTIER_MON_SWAMPERT_4, \ + FRONTIER_MON_GYARADOS_4, \ + FRONTIER_MON_KINGDRA_4, \ + FRONTIER_MON_MILOTIC_4, \ + FRONTIER_MON_MACHAMP_5, \ + FRONTIER_MON_MACHAMP_6, \ + FRONTIER_MON_MACHAMP_7, \ + FRONTIER_MON_MACHAMP_8, \ + FRONTIER_MON_STARMIE_5, \ + FRONTIER_MON_STARMIE_6, \ + FRONTIER_MON_STARMIE_7, \ + FRONTIER_MON_STARMIE_8, \ + FRONTIER_MON_LAPRAS_5, \ + FRONTIER_MON_LAPRAS_6, \ + FRONTIER_MON_LAPRAS_7, \ + FRONTIER_MON_LAPRAS_8, \ + -1 + +#define FRONTIER_MONS_SWIMMING_TRIATHLETE_F_3 \ + FRONTIER_MON_SNEASEL_2, \ + FRONTIER_MON_CLOYSTER_2, \ + FRONTIER_MON_MEDICHAM_1, \ + FRONTIER_MON_JYNX_1, \ + FRONTIER_MON_LANTURN_1, \ + FRONTIER_MON_WHISCASH_1, \ + FRONTIER_MON_QUAGSIRE_1, \ + FRONTIER_MON_HARIYAMA_1, \ + FRONTIER_MON_DEWGONG_1, \ + FRONTIER_MON_GLALIE_1, \ + FRONTIER_MON_LUDICOLO_1, \ + FRONTIER_MON_SLOWBRO_1, \ + FRONTIER_MON_SLOWKING_1, \ + FRONTIER_MON_GOLDUCK_1, \ + FRONTIER_MON_WAILORD_1, \ + FRONTIER_MON_MACHAMP_1, \ + FRONTIER_MON_TENTACRUEL_1, \ + FRONTIER_MON_STARMIE_1, \ + FRONTIER_MON_VAPOREON_1, \ + FRONTIER_MON_BLASTOISE_1, \ + FRONTIER_MON_FERALIGATR_1, \ + FRONTIER_MON_WALREIN_1, \ + FRONTIER_MON_LAPRAS_1, \ + FRONTIER_MON_SWAMPERT_1, \ + FRONTIER_MON_GYARADOS_1, \ + FRONTIER_MON_KINGDRA_1, \ + FRONTIER_MON_MILOTIC_1, \ + FRONTIER_MON_MEDICHAM_2, \ + FRONTIER_MON_QUAGSIRE_2, \ + FRONTIER_MON_JYNX_2, \ + FRONTIER_MON_LANTURN_2, \ + FRONTIER_MON_WHISCASH_2, \ + FRONTIER_MON_HARIYAMA_2, \ + FRONTIER_MON_DEWGONG_2, \ + FRONTIER_MON_GLALIE_2, \ + FRONTIER_MON_LUDICOLO_2, \ + FRONTIER_MON_SLOWBRO_2, \ + FRONTIER_MON_SLOWKING_2, \ + FRONTIER_MON_GOLDUCK_2, \ + FRONTIER_MON_WAILORD_2, \ + FRONTIER_MON_MACHAMP_2, \ + FRONTIER_MON_TENTACRUEL_2, \ + FRONTIER_MON_STARMIE_2, \ + FRONTIER_MON_VAPOREON_2, \ + FRONTIER_MON_BLASTOISE_2, \ + FRONTIER_MON_FERALIGATR_2, \ + FRONTIER_MON_WALREIN_2, \ + FRONTIER_MON_LAPRAS_2, \ + FRONTIER_MON_SWAMPERT_2, \ + FRONTIER_MON_GYARADOS_2, \ + FRONTIER_MON_KINGDRA_2, \ + FRONTIER_MON_MILOTIC_2, \ + FRONTIER_MON_MEDICHAM_3, \ + FRONTIER_MON_JYNX_3, \ + FRONTIER_MON_HARIYAMA_3, \ + FRONTIER_MON_DEWGONG_3, \ + FRONTIER_MON_GLALIE_3, \ + FRONTIER_MON_MACHAMP_3, \ + FRONTIER_MON_WALREIN_3, \ + FRONTIER_MON_LAPRAS_3, \ + FRONTIER_MON_MEDICHAM_4, \ + FRONTIER_MON_JYNX_4, \ + FRONTIER_MON_HARIYAMA_4, \ + FRONTIER_MON_DEWGONG_4, \ + FRONTIER_MON_GLALIE_4, \ + FRONTIER_MON_MACHAMP_4, \ + FRONTIER_MON_WALREIN_4, \ + FRONTIER_MON_LAPRAS_4, \ + FRONTIER_MON_MACHAMP_5, \ + FRONTIER_MON_MACHAMP_6, \ + FRONTIER_MON_MACHAMP_7, \ + FRONTIER_MON_MACHAMP_8, \ + FRONTIER_MON_STARMIE_5, \ + FRONTIER_MON_STARMIE_6, \ + FRONTIER_MON_STARMIE_7, \ + FRONTIER_MON_STARMIE_8, \ + FRONTIER_MON_LAPRAS_5, \ + FRONTIER_MON_LAPRAS_6, \ + FRONTIER_MON_LAPRAS_7, \ + FRONTIER_MON_LAPRAS_8, \ + -1 + +#define FRONTIER_MONS_BUG_MANIAC_4 \ + FRONTIER_MON_SHEDINJA, \ + FRONTIER_MON_NINJASK_1, \ + FRONTIER_MON_PARASECT_2, \ + FRONTIER_MON_MASQUERAIN_2, \ + FRONTIER_MON_VENOMOTH_2, \ + FRONTIER_MON_NINJASK_2, \ + FRONTIER_MON_SCYTHER_2, \ + FRONTIER_MON_PINSIR_2, \ + FRONTIER_MON_FORRETRESS_1, \ + FRONTIER_MON_ARMALDO_1, \ + FRONTIER_MON_SCIZOR_1, \ + FRONTIER_MON_HERACROSS_1, \ + FRONTIER_MON_SHUCKLE_1, \ + FRONTIER_MON_FORRETRESS_2, \ + FRONTIER_MON_ARMALDO_2, \ + FRONTIER_MON_SCIZOR_2, \ + FRONTIER_MON_HERACROSS_2, \ + FRONTIER_MON_SHUCKLE_2, \ + FRONTIER_MON_FORRETRESS_3, \ + FRONTIER_MON_ARMALDO_3, \ + FRONTIER_MON_SCIZOR_3, \ + FRONTIER_MON_HERACROSS_3, \ + FRONTIER_MON_SHUCKLE_3, \ + FRONTIER_MON_FORRETRESS_4, \ + FRONTIER_MON_ARMALDO_4, \ + FRONTIER_MON_SCIZOR_4, \ + FRONTIER_MON_HERACROSS_4, \ + FRONTIER_MON_SHUCKLE_4, \ + -1 + +#define FRONTIER_MONS_FISHERMAN_3 \ + FRONTIER_MON_SEAKING_2, \ + FRONTIER_MON_SHARPEDO_2, \ + FRONTIER_MON_MANTINE_2, \ + FRONTIER_MON_CRAWDAUNT_2, \ + FRONTIER_MON_KINGLER_2, \ + FRONTIER_MON_OCTILLERY_2, \ + FRONTIER_MON_HUNTAIL_2, \ + FRONTIER_MON_GOREBYSS_2, \ + FRONTIER_MON_RELICANTH_2, \ + FRONTIER_MON_CLOYSTER_2, \ + FRONTIER_MON_LANTURN_1, \ + FRONTIER_MON_WHISCASH_1, \ + FRONTIER_MON_WAILORD_1, \ + FRONTIER_MON_TENTACRUEL_1, \ + FRONTIER_MON_STARMIE_1, \ + FRONTIER_MON_LANTURN_2, \ + FRONTIER_MON_WHISCASH_2, \ + FRONTIER_MON_WAILORD_2, \ + FRONTIER_MON_TENTACRUEL_2, \ + FRONTIER_MON_STARMIE_2, \ + FRONTIER_MON_LANTURN_3, \ + FRONTIER_MON_WHISCASH_3, \ + FRONTIER_MON_WAILORD_3, \ + FRONTIER_MON_TENTACRUEL_3, \ + FRONTIER_MON_STARMIE_3, \ + FRONTIER_MON_LANTURN_4, \ + FRONTIER_MON_WHISCASH_4, \ + FRONTIER_MON_WAILORD_4, \ + FRONTIER_MON_TENTACRUEL_4, \ + FRONTIER_MON_STARMIE_4, \ + FRONTIER_MON_STARMIE_5, \ + FRONTIER_MON_STARMIE_6, \ + FRONTIER_MON_STARMIE_7, \ + FRONTIER_MON_STARMIE_8, \ + -1 + +#define FRONTIER_MONS_RUIN_MANIAC_4 \ + FRONTIER_MON_FORRETRESS_1, \ + FRONTIER_MON_SKARMORY_1, \ + FRONTIER_MON_GOLEM_1, \ + FRONTIER_MON_RHYDON_1, \ + FRONTIER_MON_CRADILY_1, \ + FRONTIER_MON_ARMALDO_1, \ + FRONTIER_MON_SCIZOR_1, \ + FRONTIER_MON_SHUCKLE_1, \ + FRONTIER_MON_STEELIX_1, \ + FRONTIER_MON_AERODACTYL_1, \ + FRONTIER_MON_AGGRON_1, \ + FRONTIER_MON_METAGROSS_1, \ + FRONTIER_MON_FORRETRESS_2, \ + FRONTIER_MON_SKARMORY_2, \ + FRONTIER_MON_GOLEM_2, \ + FRONTIER_MON_RHYDON_2, \ + FRONTIER_MON_CRADILY_2, \ + FRONTIER_MON_ARMALDO_2, \ + FRONTIER_MON_SCIZOR_2, \ + FRONTIER_MON_SHUCKLE_2, \ + FRONTIER_MON_STEELIX_2, \ + FRONTIER_MON_AERODACTYL_2, \ + FRONTIER_MON_AGGRON_2, \ + FRONTIER_MON_METAGROSS_2, \ + FRONTIER_MON_FORRETRESS_3, \ + FRONTIER_MON_SKARMORY_3, \ + FRONTIER_MON_GOLEM_3, \ + FRONTIER_MON_RHYDON_3, \ + FRONTIER_MON_CRADILY_3, \ + FRONTIER_MON_ARMALDO_3, \ + FRONTIER_MON_SCIZOR_3, \ + FRONTIER_MON_SHUCKLE_3, \ + FRONTIER_MON_STEELIX_3, \ + FRONTIER_MON_AERODACTYL_3, \ + FRONTIER_MON_AGGRON_3, \ + FRONTIER_MON_METAGROSS_3, \ + FRONTIER_MON_FORRETRESS_4, \ + FRONTIER_MON_SKARMORY_4, \ + FRONTIER_MON_GOLEM_4, \ + FRONTIER_MON_RHYDON_4, \ + FRONTIER_MON_CRADILY_4, \ + FRONTIER_MON_ARMALDO_4, \ + FRONTIER_MON_SCIZOR_4, \ + FRONTIER_MON_SHUCKLE_4, \ + FRONTIER_MON_STEELIX_4, \ + FRONTIER_MON_AERODACTYL_4, \ + FRONTIER_MON_AGGRON_4, \ + FRONTIER_MON_METAGROSS_4, \ + FRONTIER_MON_REGIROCK_1, \ + FRONTIER_MON_REGICE_1, \ + FRONTIER_MON_REGISTEEL_1, \ + FRONTIER_MON_REGIROCK_2, \ + FRONTIER_MON_REGICE_2, \ + FRONTIER_MON_REGISTEEL_2, \ + FRONTIER_MON_REGIROCK_3, \ + FRONTIER_MON_REGICE_3, \ + FRONTIER_MON_REGISTEEL_3, \ + FRONTIER_MON_REGIROCK_4, \ + FRONTIER_MON_REGICE_4, \ + FRONTIER_MON_REGISTEEL_4, \ + FRONTIER_MON_METAGROSS_5, \ + FRONTIER_MON_METAGROSS_6, \ + FRONTIER_MON_METAGROSS_7, \ + FRONTIER_MON_METAGROSS_8, \ + FRONTIER_MON_REGIROCK_5, \ + FRONTIER_MON_REGIROCK_6, \ + FRONTIER_MON_REGICE_5, \ + FRONTIER_MON_REGICE_6, \ + FRONTIER_MON_REGISTEEL_5, \ + FRONTIER_MON_REGISTEEL_6, \ + -1 + +#define FRONTIER_MONS_COLLECTOR_3 \ + FRONTIER_MON_VENUSAUR_1, \ + FRONTIER_MON_MEGANIUM_1, \ + FRONTIER_MON_BLASTOISE_1, \ + FRONTIER_MON_FERALIGATR_1, \ + FRONTIER_MON_BLAZIKEN_1, \ + FRONTIER_MON_SCEPTILE_1, \ + FRONTIER_MON_CHARIZARD_1, \ + FRONTIER_MON_TYPHLOSION_1, \ + FRONTIER_MON_SWAMPERT_1, \ + FRONTIER_MON_VENUSAUR_2, \ + FRONTIER_MON_MEGANIUM_2, \ + FRONTIER_MON_BLASTOISE_2, \ + FRONTIER_MON_FERALIGATR_2, \ + FRONTIER_MON_BLAZIKEN_2, \ + FRONTIER_MON_SCEPTILE_2, \ + FRONTIER_MON_CHARIZARD_2, \ + FRONTIER_MON_TYPHLOSION_2, \ + FRONTIER_MON_SWAMPERT_2, \ + FRONTIER_MON_VENUSAUR_3, \ + FRONTIER_MON_MEGANIUM_3, \ + FRONTIER_MON_BLASTOISE_3, \ + FRONTIER_MON_FERALIGATR_3, \ + FRONTIER_MON_BLAZIKEN_3, \ + FRONTIER_MON_SCEPTILE_3, \ + FRONTIER_MON_CHARIZARD_3, \ + FRONTIER_MON_TYPHLOSION_3, \ + FRONTIER_MON_SWAMPERT_3, \ + FRONTIER_MON_VENUSAUR_4, \ + FRONTIER_MON_MEGANIUM_4, \ + FRONTIER_MON_BLASTOISE_4, \ + FRONTIER_MON_FERALIGATR_4, \ + FRONTIER_MON_BLAZIKEN_4, \ + FRONTIER_MON_SCEPTILE_4, \ + FRONTIER_MON_CHARIZARD_4, \ + FRONTIER_MON_TYPHLOSION_4, \ + FRONTIER_MON_SWAMPERT_4, \ + -1 + +#define FRONTIER_MONS_GUITARIST_3A \ + FRONTIER_MON_ABSOL_2, \ + FRONTIER_MON_LANTURN_1, \ + FRONTIER_MON_RAICHU_1, \ + FRONTIER_MON_MANECTRIC_1, \ + FRONTIER_MON_ELECTRODE_1, \ + FRONTIER_MON_SHIFTRY_1, \ + FRONTIER_MON_ELECTABUZZ_1, \ + FRONTIER_MON_AMPHAROS_1, \ + FRONTIER_MON_HOUNDOOM_1, \ + FRONTIER_MON_JOLTEON_1, \ + FRONTIER_MON_UMBREON_1, \ + FRONTIER_MON_LANTURN_2, \ + FRONTIER_MON_RAICHU_2, \ + FRONTIER_MON_MANECTRIC_2, \ + FRONTIER_MON_ELECTRODE_2, \ + FRONTIER_MON_SHIFTRY_2, \ + FRONTIER_MON_ELECTABUZZ_2, \ + FRONTIER_MON_AMPHAROS_2, \ + FRONTIER_MON_HOUNDOOM_2, \ + FRONTIER_MON_JOLTEON_2, \ + FRONTIER_MON_UMBREON_2, \ + FRONTIER_MON_LANTURN_3, \ + FRONTIER_MON_RAICHU_3, \ + FRONTIER_MON_MANECTRIC_3, \ + FRONTIER_MON_ELECTRODE_3, \ + FRONTIER_MON_SHIFTRY_3, \ + FRONTIER_MON_ELECTABUZZ_3, \ + FRONTIER_MON_AMPHAROS_3, \ + FRONTIER_MON_HOUNDOOM_3, \ + FRONTIER_MON_JOLTEON_3, \ + FRONTIER_MON_UMBREON_3, \ + FRONTIER_MON_LANTURN_4, \ + FRONTIER_MON_RAICHU_4, \ + FRONTIER_MON_MANECTRIC_4, \ + FRONTIER_MON_ELECTRODE_4, \ + FRONTIER_MON_SHIFTRY_4, \ + FRONTIER_MON_ELECTABUZZ_4, \ + FRONTIER_MON_AMPHAROS_4, \ + FRONTIER_MON_HOUNDOOM_4, \ + FRONTIER_MON_JOLTEON_4, \ + FRONTIER_MON_UMBREON_4, \ + FRONTIER_MON_ARTICUNO_1, \ + FRONTIER_MON_ZAPDOS_1, \ + FRONTIER_MON_MOLTRES_1, \ + FRONTIER_MON_ARTICUNO_2, \ + FRONTIER_MON_ZAPDOS_2, \ + FRONTIER_MON_MOLTRES_2, \ + FRONTIER_MON_ARTICUNO_3, \ + FRONTIER_MON_ZAPDOS_3, \ + FRONTIER_MON_MOLTRES_3, \ + FRONTIER_MON_ARTICUNO_4, \ + FRONTIER_MON_ZAPDOS_4, \ + FRONTIER_MON_MOLTRES_4, \ + FRONTIER_MON_ARTICUNO_5, \ + FRONTIER_MON_ARTICUNO_6, \ + FRONTIER_MON_ZAPDOS_5, \ + FRONTIER_MON_ZAPDOS_6, \ + FRONTIER_MON_MOLTRES_5, \ + FRONTIER_MON_MOLTRES_6, \ + -1 + +#define FRONTIER_MONS_GUITARIST_3B \ + FRONTIER_MON_MISDREAVUS_1, \ + FRONTIER_MON_GRANBULL_1, \ + FRONTIER_MON_LANTURN_1, \ + FRONTIER_MON_ALAKAZAM_1, \ + FRONTIER_MON_ELECTABUZZ_1, \ + FRONTIER_MON_AMPHAROS_1, \ + FRONTIER_MON_STARMIE_1, \ + FRONTIER_MON_JOLTEON_1, \ + FRONTIER_MON_GYARADOS_1, \ + FRONTIER_MON_MISDREAVUS_2, \ + FRONTIER_MON_ALAKAZAM_2, \ + FRONTIER_MON_SLOWKING_2, \ + FRONTIER_MON_MILTANK_2, \ + FRONTIER_MON_AMPHAROS_2, \ + FRONTIER_MON_PORYGON2_2, \ + FRONTIER_MON_AGGRON_2, \ + FRONTIER_MON_MISDREAVUS_3, \ + FRONTIER_MON_MANECTRIC_3, \ + FRONTIER_MON_ELECTRODE_3, \ + FRONTIER_MON_PORYGON2_3, \ + FRONTIER_MON_JOLTEON_3, \ + FRONTIER_MON_RAICHU_4, \ + FRONTIER_MON_MANECTRIC_4, \ + FRONTIER_MON_ELECTRODE_4, \ + FRONTIER_MON_AMPHAROS_4, \ + FRONTIER_MON_JOLTEON_4, \ + FRONTIER_MON_REGICE_3, \ + FRONTIER_MON_REGIROCK_4, \ + FRONTIER_MON_REGICE_4, \ + FRONTIER_MON_REGISTEEL_4, \ + FRONTIER_MON_STARMIE_6, \ + FRONTIER_MON_LATIAS_5, \ + FRONTIER_MON_LATIAS_6, \ + FRONTIER_MON_LATIOS_5, \ + FRONTIER_MON_LATIOS_6, \ + -1 + +#define FRONTIER_MONS_BIRD_KEEPER_3 \ + FRONTIER_MON_PIDGEOT_2, \ + FRONTIER_MON_FEAROW_1, \ + FRONTIER_MON_DODRIO_1, \ + FRONTIER_MON_XATU_1, \ + FRONTIER_MON_SKARMORY_1, \ + FRONTIER_MON_ALTARIA_1, \ + FRONTIER_MON_AERODACTYL_1, \ + FRONTIER_MON_FLYGON_1, \ + FRONTIER_MON_CHARIZARD_1, \ + FRONTIER_MON_CROBAT_1, \ + FRONTIER_MON_GYARADOS_1, \ + FRONTIER_MON_SALAMENCE_1, \ + FRONTIER_MON_FEAROW_2, \ + FRONTIER_MON_DODRIO_2, \ + FRONTIER_MON_SKARMORY_2, \ + FRONTIER_MON_XATU_2, \ + FRONTIER_MON_ALTARIA_2, \ + FRONTIER_MON_AERODACTYL_2, \ + FRONTIER_MON_FLYGON_2, \ + FRONTIER_MON_CHARIZARD_2, \ + FRONTIER_MON_CROBAT_2, \ + FRONTIER_MON_GYARADOS_2, \ + FRONTIER_MON_SALAMENCE_2, \ + FRONTIER_MON_FEAROW_3, \ + FRONTIER_MON_DODRIO_3, \ + FRONTIER_MON_XATU_3, \ + FRONTIER_MON_SKARMORY_3, \ + FRONTIER_MON_ALTARIA_3, \ + FRONTIER_MON_AERODACTYL_3, \ + FRONTIER_MON_FLYGON_3, \ + FRONTIER_MON_CHARIZARD_3, \ + FRONTIER_MON_CROBAT_3, \ + FRONTIER_MON_GYARADOS_3, \ + FRONTIER_MON_SALAMENCE_3, \ + FRONTIER_MON_FEAROW_4, \ + FRONTIER_MON_DODRIO_4, \ + FRONTIER_MON_XATU_4, \ + FRONTIER_MON_SKARMORY_4, \ + FRONTIER_MON_ALTARIA_4, \ + FRONTIER_MON_AERODACTYL_4, \ + FRONTIER_MON_FLYGON_4, \ + FRONTIER_MON_CHARIZARD_4, \ + FRONTIER_MON_CROBAT_4, \ + FRONTIER_MON_GYARADOS_4, \ + FRONTIER_MON_SALAMENCE_4, \ + FRONTIER_MON_ARTICUNO_1, \ + FRONTIER_MON_ZAPDOS_1, \ + FRONTIER_MON_MOLTRES_1, \ + FRONTIER_MON_ARTICUNO_2, \ + FRONTIER_MON_ZAPDOS_2, \ + FRONTIER_MON_MOLTRES_2, \ + FRONTIER_MON_ARTICUNO_3, \ + FRONTIER_MON_ZAPDOS_3, \ + FRONTIER_MON_MOLTRES_3, \ + FRONTIER_MON_ARTICUNO_4, \ + FRONTIER_MON_ZAPDOS_4, \ + FRONTIER_MON_MOLTRES_4, \ + FRONTIER_MON_SALAMENCE_5, \ + FRONTIER_MON_SALAMENCE_6, \ + FRONTIER_MON_SALAMENCE_7, \ + FRONTIER_MON_SALAMENCE_8, \ + -1 + +#define FRONTIER_MONS_SAILOR_3 \ + FRONTIER_MON_MEDICHAM_1, \ + FRONTIER_MON_QUAGSIRE_1, \ + FRONTIER_MON_HARIYAMA_1, \ + FRONTIER_MON_DEWGONG_1, \ + FRONTIER_MON_LUDICOLO_1, \ + FRONTIER_MON_SLOWBRO_1, \ + FRONTIER_MON_SLOWKING_1, \ + FRONTIER_MON_GOLDUCK_1, \ + FRONTIER_MON_MACHAMP_1, \ + FRONTIER_MON_VAPOREON_1, \ + FRONTIER_MON_BLASTOISE_1, \ + FRONTIER_MON_FERALIGATR_1, \ + FRONTIER_MON_WALREIN_1, \ + FRONTIER_MON_LAPRAS_1, \ + FRONTIER_MON_SWAMPERT_1, \ + FRONTIER_MON_GYARADOS_1, \ + FRONTIER_MON_KINGDRA_1, \ + FRONTIER_MON_MILOTIC_1, \ + FRONTIER_MON_MEDICHAM_2, \ + FRONTIER_MON_QUAGSIRE_2, \ + FRONTIER_MON_HARIYAMA_2, \ + FRONTIER_MON_DEWGONG_2, \ + FRONTIER_MON_LUDICOLO_2, \ + FRONTIER_MON_SLOWBRO_2, \ + FRONTIER_MON_SLOWKING_2, \ + FRONTIER_MON_GOLDUCK_2, \ + FRONTIER_MON_MACHAMP_2, \ + FRONTIER_MON_VAPOREON_2, \ + FRONTIER_MON_BLASTOISE_2, \ + FRONTIER_MON_FERALIGATR_2, \ + FRONTIER_MON_WALREIN_2, \ + FRONTIER_MON_LAPRAS_2, \ + FRONTIER_MON_SWAMPERT_2, \ + FRONTIER_MON_GYARADOS_2, \ + FRONTIER_MON_KINGDRA_2, \ + FRONTIER_MON_MILOTIC_2, \ + FRONTIER_MON_MEDICHAM_3, \ + FRONTIER_MON_QUAGSIRE_3, \ + FRONTIER_MON_HARIYAMA_3, \ + FRONTIER_MON_DEWGONG_3, \ + FRONTIER_MON_LUDICOLO_3, \ + FRONTIER_MON_SLOWBRO_3, \ + FRONTIER_MON_SLOWKING_3, \ + FRONTIER_MON_GOLDUCK_3, \ + FRONTIER_MON_MACHAMP_3, \ + FRONTIER_MON_VAPOREON_3, \ + FRONTIER_MON_BLASTOISE_3, \ + FRONTIER_MON_FERALIGATR_3, \ + FRONTIER_MON_WALREIN_3, \ + FRONTIER_MON_LAPRAS_3, \ + FRONTIER_MON_SWAMPERT_3, \ + FRONTIER_MON_GYARADOS_3, \ + FRONTIER_MON_KINGDRA_3, \ + FRONTIER_MON_MILOTIC_3, \ + FRONTIER_MON_MEDICHAM_4, \ + FRONTIER_MON_QUAGSIRE_4, \ + FRONTIER_MON_HARIYAMA_4, \ + FRONTIER_MON_DEWGONG_4, \ + FRONTIER_MON_LUDICOLO_4, \ + FRONTIER_MON_SLOWBRO_4, \ + FRONTIER_MON_SLOWKING_4, \ + FRONTIER_MON_GOLDUCK_4, \ + FRONTIER_MON_MACHAMP_4, \ + FRONTIER_MON_VAPOREON_4, \ + FRONTIER_MON_BLASTOISE_4, \ + FRONTIER_MON_FERALIGATR_4, \ + FRONTIER_MON_WALREIN_4, \ + FRONTIER_MON_LAPRAS_4, \ + FRONTIER_MON_SWAMPERT_4, \ + FRONTIER_MON_GYARADOS_4, \ + FRONTIER_MON_KINGDRA_4, \ + FRONTIER_MON_MILOTIC_4, \ + FRONTIER_MON_MACHAMP_5, \ + FRONTIER_MON_MACHAMP_6, \ + FRONTIER_MON_MACHAMP_7, \ + FRONTIER_MON_MACHAMP_8, \ + FRONTIER_MON_LAPRAS_5, \ + FRONTIER_MON_LAPRAS_6, \ + FRONTIER_MON_LAPRAS_7, \ + FRONTIER_MON_LAPRAS_8, \ + -1 + +#define FRONTIER_MONS_HIKER_3 \ + FRONTIER_MON_DUGTRIO_1, \ + FRONTIER_MON_MAROWAK_1, \ + FRONTIER_MON_GOLEM_1, \ + FRONTIER_MON_RHYDON_1, \ + FRONTIER_MON_NIDOQUEEN_1, \ + FRONTIER_MON_NIDOKING_1, \ + FRONTIER_MON_CRADILY_1, \ + FRONTIER_MON_ARMALDO_1, \ + FRONTIER_MON_DONPHAN_1, \ + FRONTIER_MON_CLAYDOL_1, \ + FRONTIER_MON_SHUCKLE_1, \ + FRONTIER_MON_STEELIX_1, \ + FRONTIER_MON_AERODACTYL_1, \ + FRONTIER_MON_FLYGON_1, \ + FRONTIER_MON_AGGRON_1, \ + FRONTIER_MON_METAGROSS_1, \ + FRONTIER_MON_DUGTRIO_2, \ + FRONTIER_MON_MAROWAK_2, \ + FRONTIER_MON_GOLEM_2, \ + FRONTIER_MON_RHYDON_2, \ + FRONTIER_MON_NIDOQUEEN_2, \ + FRONTIER_MON_NIDOKING_2, \ + FRONTIER_MON_CRADILY_2, \ + FRONTIER_MON_ARMALDO_2, \ + FRONTIER_MON_DONPHAN_2, \ + FRONTIER_MON_CLAYDOL_2, \ + FRONTIER_MON_SHUCKLE_2, \ + FRONTIER_MON_STEELIX_2, \ + FRONTIER_MON_AERODACTYL_2, \ + FRONTIER_MON_FLYGON_2, \ + FRONTIER_MON_AGGRON_2, \ + FRONTIER_MON_METAGROSS_2, \ + FRONTIER_MON_DUGTRIO_3, \ + FRONTIER_MON_MAROWAK_3, \ + FRONTIER_MON_GOLEM_3, \ + FRONTIER_MON_RHYDON_3, \ + FRONTIER_MON_NIDOQUEEN_3, \ + FRONTIER_MON_NIDOKING_3, \ + FRONTIER_MON_CRADILY_3, \ + FRONTIER_MON_ARMALDO_3, \ + FRONTIER_MON_DONPHAN_3, \ + FRONTIER_MON_CLAYDOL_3, \ + FRONTIER_MON_SHUCKLE_3, \ + FRONTIER_MON_STEELIX_3, \ + FRONTIER_MON_AERODACTYL_3, \ + FRONTIER_MON_FLYGON_3, \ + FRONTIER_MON_AGGRON_3, \ + FRONTIER_MON_METAGROSS_3, \ + FRONTIER_MON_DUGTRIO_4, \ + FRONTIER_MON_MAROWAK_4, \ + FRONTIER_MON_GOLEM_4, \ + FRONTIER_MON_RHYDON_4, \ + FRONTIER_MON_NIDOQUEEN_4, \ + FRONTIER_MON_NIDOKING_4, \ + FRONTIER_MON_CRADILY_4, \ + FRONTIER_MON_ARMALDO_4, \ + FRONTIER_MON_DONPHAN_4, \ + FRONTIER_MON_CLAYDOL_4, \ + FRONTIER_MON_SHUCKLE_4, \ + FRONTIER_MON_STEELIX_4, \ + FRONTIER_MON_AERODACTYL_4, \ + FRONTIER_MON_FLYGON_4, \ + FRONTIER_MON_AGGRON_4, \ + FRONTIER_MON_METAGROSS_4, \ + FRONTIER_MON_METAGROSS_5, \ + FRONTIER_MON_METAGROSS_6, \ + FRONTIER_MON_METAGROSS_7, \ + FRONTIER_MON_METAGROSS_8, \ + FRONTIER_MON_TYRANITAR_1, \ + FRONTIER_MON_TYRANITAR_2, \ + FRONTIER_MON_TYRANITAR_3, \ + FRONTIER_MON_TYRANITAR_4, \ + FRONTIER_MON_TYRANITAR_5, \ + FRONTIER_MON_TYRANITAR_6, \ + FRONTIER_MON_TYRANITAR_7, \ + FRONTIER_MON_TYRANITAR_8, \ + FRONTIER_MON_TYRANITAR_9, \ + FRONTIER_MON_TYRANITAR_10, \ + -1 + +#define FRONTIER_MONS_KINDLER_3 \ + FRONTIER_MON_MISDREAVUS_1, \ + FRONTIER_MON_DUSCLOPS_1, \ + FRONTIER_MON_MAGMAR_1, \ + FRONTIER_MON_RAPIDASH_1, \ + FRONTIER_MON_GENGAR_1, \ + FRONTIER_MON_HOUNDOOM_1, \ + FRONTIER_MON_NINETALES_1, \ + FRONTIER_MON_FLAREON_1, \ + FRONTIER_MON_BLAZIKEN_1, \ + FRONTIER_MON_CHARIZARD_1, \ + FRONTIER_MON_TYPHLOSION_1, \ + FRONTIER_MON_ARCANINE_1, \ + FRONTIER_MON_MISDREAVUS_2, \ + FRONTIER_MON_DUSCLOPS_2, \ + FRONTIER_MON_MAGMAR_2, \ + FRONTIER_MON_RAPIDASH_2, \ + FRONTIER_MON_GENGAR_2, \ + FRONTIER_MON_HOUNDOOM_2, \ + FRONTIER_MON_NINETALES_2, \ + FRONTIER_MON_FLAREON_2, \ + FRONTIER_MON_BLAZIKEN_2, \ + FRONTIER_MON_CHARIZARD_2, \ + FRONTIER_MON_TYPHLOSION_2, \ + FRONTIER_MON_ARCANINE_2, \ + FRONTIER_MON_MISDREAVUS_3, \ + FRONTIER_MON_DUSCLOPS_3, \ + FRONTIER_MON_MAGMAR_3, \ + FRONTIER_MON_RAPIDASH_3, \ + FRONTIER_MON_GENGAR_3, \ + FRONTIER_MON_HOUNDOOM_3, \ + FRONTIER_MON_NINETALES_3, \ + FRONTIER_MON_FLAREON_3, \ + FRONTIER_MON_BLAZIKEN_3, \ + FRONTIER_MON_CHARIZARD_3, \ + FRONTIER_MON_TYPHLOSION_3, \ + FRONTIER_MON_ARCANINE_3, \ + FRONTIER_MON_MISDREAVUS_4, \ + FRONTIER_MON_DUSCLOPS_4, \ + FRONTIER_MON_MAGMAR_4, \ + FRONTIER_MON_RAPIDASH_4, \ + FRONTIER_MON_GENGAR_4, \ + FRONTIER_MON_HOUNDOOM_4, \ + FRONTIER_MON_NINETALES_4, \ + FRONTIER_MON_FLAREON_4, \ + FRONTIER_MON_BLAZIKEN_4, \ + FRONTIER_MON_CHARIZARD_4, \ + FRONTIER_MON_TYPHLOSION_4, \ + FRONTIER_MON_ARCANINE_4, \ + FRONTIER_MON_GENGAR_5, \ + FRONTIER_MON_GENGAR_6, \ + FRONTIER_MON_GENGAR_7, \ + FRONTIER_MON_GENGAR_8, \ + FRONTIER_MON_DRAGONITE_1, \ + FRONTIER_MON_DRAGONITE_2, \ + FRONTIER_MON_DRAGONITE_3, \ + FRONTIER_MON_DRAGONITE_4, \ + FRONTIER_MON_DRAGONITE_5, \ + FRONTIER_MON_DRAGONITE_6, \ + FRONTIER_MON_DRAGONITE_7, \ + FRONTIER_MON_DRAGONITE_8, \ + FRONTIER_MON_DRAGONITE_9, \ + FRONTIER_MON_DRAGONITE_10, \ + -1 + +#define FRONTIER_MONS_PARASOL_LADY_3 \ + FRONTIER_MON_GLALIE_1, \ + FRONTIER_MON_LUDICOLO_1, \ + FRONTIER_MON_SLOWBRO_1, \ + FRONTIER_MON_AMPHAROS_1, \ + FRONTIER_MON_EXEGGUTOR_1, \ + FRONTIER_MON_VENUSAUR_1, \ + FRONTIER_MON_MEGANIUM_1, \ + FRONTIER_MON_BLASTOISE_1, \ + FRONTIER_MON_FERALIGATR_1, \ + FRONTIER_MON_BLAZIKEN_1, \ + FRONTIER_MON_WALREIN_1, \ + FRONTIER_MON_CHARIZARD_1, \ + FRONTIER_MON_TYPHLOSION_1, \ + FRONTIER_MON_MANECTRIC_2, \ + FRONTIER_MON_ELECTRODE_2, \ + FRONTIER_MON_EXPLOUD_2, \ + FRONTIER_MON_ELECTABUZZ_2, \ + FRONTIER_MON_NINETALES_2, \ + FRONTIER_MON_PORYGON2_2, \ + FRONTIER_MON_STARMIE_2, \ + FRONTIER_MON_FLYGON_2, \ + FRONTIER_MON_ARCANINE_2, \ + FRONTIER_MON_LANTURN_3, \ + FRONTIER_MON_RAICHU_3, \ + FRONTIER_MON_SHIFTRY_3, \ + FRONTIER_MON_LUDICOLO_3, \ + FRONTIER_MON_CRADILY_3, \ + FRONTIER_MON_RAPIDASH_3, \ + FRONTIER_MON_CLAYDOL_3, \ + FRONTIER_MON_GYARADOS_3, \ + FRONTIER_MON_VILEPLUME_4, \ + FRONTIER_MON_LUDICOLO_4, \ + FRONTIER_MON_HOUNDOOM_4, \ + FRONTIER_MON_VENUSAUR_4, \ + FRONTIER_MON_FLAREON_4, \ + -1 + +// Only used by one Beauty +#define FRONTIER_MONS_EEVEELUTIONS \ + FRONTIER_MON_VAPOREON_1, \ + FRONTIER_MON_JOLTEON_1, \ + FRONTIER_MON_FLAREON_1, \ + FRONTIER_MON_ESPEON_1, \ + FRONTIER_MON_UMBREON_1, \ + FRONTIER_MON_VAPOREON_2, \ + FRONTIER_MON_JOLTEON_2, \ + FRONTIER_MON_FLAREON_2, \ + FRONTIER_MON_ESPEON_2, \ + FRONTIER_MON_UMBREON_2, \ + FRONTIER_MON_VAPOREON_3, \ + FRONTIER_MON_JOLTEON_3, \ + FRONTIER_MON_FLAREON_3, \ + FRONTIER_MON_ESPEON_3, \ + FRONTIER_MON_UMBREON_3, \ + FRONTIER_MON_VAPOREON_4, \ + FRONTIER_MON_JOLTEON_4, \ + FRONTIER_MON_FLAREON_4, \ + FRONTIER_MON_ESPEON_4, \ + FRONTIER_MON_UMBREON_4, \ + -1 + +#define FRONTIER_MONS_BEAUTY_2 \ + FRONTIER_MON_JYNX_1, \ + FRONTIER_MON_LANTURN_1, \ + FRONTIER_MON_SLOWKING_1, \ + FRONTIER_MON_GENGAR_1, \ + FRONTIER_MON_AMPHAROS_1, \ + FRONTIER_MON_JOLTEON_1, \ + FRONTIER_MON_LAPRAS_1, \ + FRONTIER_MON_SNORLAX_1, \ + FRONTIER_MON_KINGDRA_1, \ + FRONTIER_MON_QUAGSIRE_2, \ + FRONTIER_MON_MISDREAVUS_2, \ + FRONTIER_MON_FEAROW_2, \ + FRONTIER_MON_XATU_2, \ + FRONTIER_MON_VICTREEBEL_2, \ + FRONTIER_MON_KANGASKHAN_2, \ + FRONTIER_MON_ELECTABUZZ_2, \ + FRONTIER_MON_MILTANK_2, \ + FRONTIER_MON_ALTARIA_2, \ + FRONTIER_MON_RAPIDASH_2, \ + FRONTIER_MON_HERACROSS_2, \ + FRONTIER_MON_FLAREON_2, \ + FRONTIER_MON_SCEPTILE_2, \ + FRONTIER_MON_JYNX_3, \ + FRONTIER_MON_BRELOOM_3, \ + FRONTIER_MON_RAICHU_3, \ + FRONTIER_MON_VILEPLUME_3, \ + FRONTIER_MON_SLOWBRO_3, \ + FRONTIER_MON_NINETALES_3, \ + FRONTIER_MON_SHUCKLE_3, \ + FRONTIER_MON_UMBREON_3, \ + FRONTIER_MON_WALREIN_3, \ + FRONTIER_MON_MILOTIC_3, \ + FRONTIER_MON_ESPEON_4, \ + FRONTIER_MON_URSARING_5, \ + FRONTIER_MON_MACHAMP_7, \ + FRONTIER_MON_GARDEVOIR_8, \ + FRONTIER_MON_LAPRAS_8, \ + FRONTIER_MON_SALAMENCE_8, \ + FRONTIER_MON_LATIAS_6, \ + -1 + +#define FRONTIER_MONS_AROMA_LADY_3 \ + FRONTIER_MON_WOBBUFFET_1, \ + FRONTIER_MON_WOBBUFFET_2, \ + FRONTIER_MON_SUNFLORA_2, \ + FRONTIER_MON_JUMPLUFF_2, \ + FRONTIER_MON_TROPIUS_2, \ + FRONTIER_MON_CACTURNE_2, \ + FRONTIER_MON_BELLOSSOM_2, \ + FRONTIER_MON_JYNX_1, \ + FRONTIER_MON_MR_MIME_1, \ + FRONTIER_MON_BRELOOM_1, \ + FRONTIER_MON_XATU_1, \ + FRONTIER_MON_VILEPLUME_1, \ + FRONTIER_MON_VICTREEBEL_1, \ + FRONTIER_MON_SHIFTRY_1, \ + FRONTIER_MON_LUDICOLO_1, \ + FRONTIER_MON_HYPNO_1, \ + FRONTIER_MON_ALAKAZAM_1, \ + FRONTIER_MON_SLOWBRO_1, \ + FRONTIER_MON_SLOWKING_1, \ + FRONTIER_MON_CRADILY_1, \ + FRONTIER_MON_GARDEVOIR_1, \ + FRONTIER_MON_EXEGGUTOR_1, \ + FRONTIER_MON_STARMIE_1, \ + FRONTIER_MON_VENUSAUR_1, \ + FRONTIER_MON_MEGANIUM_1, \ + FRONTIER_MON_ESPEON_1, \ + FRONTIER_MON_SCEPTILE_1, \ + FRONTIER_MON_JYNX_2, \ + FRONTIER_MON_MR_MIME_2, \ + FRONTIER_MON_BRELOOM_2, \ + FRONTIER_MON_XATU_2, \ + FRONTIER_MON_VILEPLUME_2, \ + FRONTIER_MON_VICTREEBEL_2, \ + FRONTIER_MON_SHIFTRY_2, \ + FRONTIER_MON_LUDICOLO_2, \ + FRONTIER_MON_HYPNO_2, \ + FRONTIER_MON_ALAKAZAM_2, \ + FRONTIER_MON_SLOWBRO_2, \ + FRONTIER_MON_SLOWKING_2, \ + FRONTIER_MON_CRADILY_2, \ + FRONTIER_MON_GARDEVOIR_2, \ + FRONTIER_MON_EXEGGUTOR_2, \ + FRONTIER_MON_STARMIE_2, \ + FRONTIER_MON_VENUSAUR_2, \ + FRONTIER_MON_MEGANIUM_2, \ + FRONTIER_MON_ESPEON_2, \ + FRONTIER_MON_SCEPTILE_2, \ + FRONTIER_MON_JYNX_3, \ + FRONTIER_MON_MR_MIME_3, \ + FRONTIER_MON_BRELOOM_3, \ + FRONTIER_MON_XATU_3, \ + FRONTIER_MON_VILEPLUME_3, \ + FRONTIER_MON_VICTREEBEL_3, \ + FRONTIER_MON_SHIFTRY_3, \ + FRONTIER_MON_LUDICOLO_3, \ + FRONTIER_MON_HYPNO_3, \ + FRONTIER_MON_ALAKAZAM_3, \ + FRONTIER_MON_SLOWBRO_3, \ + FRONTIER_MON_SLOWKING_3, \ + FRONTIER_MON_CRADILY_3, \ + FRONTIER_MON_GARDEVOIR_3, \ + FRONTIER_MON_EXEGGUTOR_3, \ + FRONTIER_MON_STARMIE_3, \ + FRONTIER_MON_VENUSAUR_3, \ + FRONTIER_MON_MEGANIUM_3, \ + FRONTIER_MON_ESPEON_3, \ + FRONTIER_MON_SCEPTILE_3, \ + FRONTIER_MON_JYNX_4, \ + FRONTIER_MON_MR_MIME_4, \ + FRONTIER_MON_BRELOOM_4, \ + FRONTIER_MON_XATU_4, \ + FRONTIER_MON_VILEPLUME_4, \ + FRONTIER_MON_VICTREEBEL_4, \ + FRONTIER_MON_SHIFTRY_4, \ + FRONTIER_MON_LUDICOLO_4, \ + FRONTIER_MON_HYPNO_4, \ + FRONTIER_MON_ALAKAZAM_4, \ + FRONTIER_MON_SLOWBRO_4, \ + FRONTIER_MON_SLOWKING_4, \ + FRONTIER_MON_CRADILY_4, \ + FRONTIER_MON_GARDEVOIR_4, \ + FRONTIER_MON_EXEGGUTOR_4, \ + FRONTIER_MON_STARMIE_4, \ + FRONTIER_MON_VENUSAUR_4, \ + FRONTIER_MON_MEGANIUM_4, \ + FRONTIER_MON_ESPEON_4, \ + FRONTIER_MON_SCEPTILE_4, \ + FRONTIER_MON_GARDEVOIR_5, \ + FRONTIER_MON_GARDEVOIR_6, \ + FRONTIER_MON_GARDEVOIR_7, \ + FRONTIER_MON_GARDEVOIR_8, \ + FRONTIER_MON_STARMIE_5, \ + FRONTIER_MON_STARMIE_6, \ + FRONTIER_MON_STARMIE_7, \ + FRONTIER_MON_STARMIE_8, \ + -1 + const u16 gBattleFrontierTrainerMons_Brady[] = { - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 10, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - -1 + FRONTIER_MONS_YOUNGSTER_LASS_1 }; const u16 gBattleFrontierTrainerMons_Conner[] = { - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 10, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - -1 + FRONTIER_MONS_YOUNGSTER_LASS_1 }; const u16 gBattleFrontierTrainerMons_Bradley[] = { - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 10, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - -1 + FRONTIER_MONS_YOUNGSTER_LASS_1 }; const u16 gBattleFrontierTrainerMons_Cybil[] = { - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 10, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - -1 + FRONTIER_MONS_YOUNGSTER_LASS_1 }; const u16 gBattleFrontierTrainerMons_Rodette[] = { - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 10, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - -1 + FRONTIER_MONS_YOUNGSTER_LASS_1 }; const u16 gBattleFrontierTrainerMons_Peggy[] = { - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 10, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - -1 + FRONTIER_MONS_YOUNGSTER_LASS_1 }; const u16 gBattleFrontierTrainerMons_Keith[] = { - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - -1 + FRONTIER_MONS_SCHOOL_KID_1 }; const u16 gBattleFrontierTrainerMons_Grayson[] = { - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - -1 + FRONTIER_MONS_SCHOOL_KID_1 }; const u16 gBattleFrontierTrainerMons_Glenn[] = { - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - -1 + FRONTIER_MONS_SCHOOL_KID_1 }; const u16 gBattleFrontierTrainerMons_Liliana[] = { - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - -1 + FRONTIER_MONS_SCHOOL_KID_1 }; const u16 gBattleFrontierTrainerMons_Elise[] = { - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - -1 + FRONTIER_MONS_SCHOOL_KID_1 }; const u16 gBattleFrontierTrainerMons_Zoey[] = { - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - -1 + FRONTIER_MONS_SCHOOL_KID_1 }; const u16 gBattleFrontierTrainerMons_Manuel[] = { - 5, - 20, - 21, - 25, - 27, - 35, - 46, - 47, - 48, - 50, - 53, - 62, - 63, - 69, - 75, - 78, - 79, - 80, - 84, - 90, - 92, - 99, - 100, - 102, - 106, - 110, - 112, - 114, - 119, - 121, - 124, - 127, - 146, - 147, - 154, - 158, - 160, - -1 + FRONTIER_MONS_RICH_BOY_LADY_1 }; const u16 gBattleFrontierTrainerMons_Russ[] = { - 5, - 20, - 21, - 25, - 27, - 35, - 46, - 47, - 48, - 50, - 53, - 62, - 63, - 69, - 75, - 78, - 79, - 80, - 84, - 90, - 92, - 99, - 100, - 102, - 106, - 110, - 112, - 114, - 119, - 121, - 124, - 127, - 146, - 147, - 154, - 158, - 160, - -1 + FRONTIER_MONS_RICH_BOY_LADY_1 }; const u16 gBattleFrontierTrainerMons_Dustin[] = { - 5, - 20, - 21, - 25, - 27, - 35, - 46, - 47, - 48, - 50, - 53, - 62, - 63, - 69, - 75, - 78, - 79, - 80, - 84, - 90, - 92, - 99, - 100, - 102, - 106, - 110, - 112, - 114, - 119, - 121, - 124, - 127, - 146, - 147, - 154, - 158, - 160, - -1 + FRONTIER_MONS_RICH_BOY_LADY_1 }; const u16 gBattleFrontierTrainerMons_Tina[] = { - 5, - 20, - 21, - 25, - 27, - 35, - 46, - 47, - 48, - 50, - 53, - 62, - 63, - 69, - 75, - 78, - 79, - 80, - 84, - 90, - 92, - 99, - 100, - 102, - 106, - 110, - 112, - 114, - 119, - 121, - 124, - 127, - 146, - 147, - 154, - 158, - 160, - -1 + FRONTIER_MONS_RICH_BOY_LADY_1 }; const u16 gBattleFrontierTrainerMons_Gillian[] = { - 5, - 20, - 21, - 25, - 27, - 35, - 46, - 47, - 48, - 50, - 53, - 62, - 63, - 69, - 75, - 78, - 79, - 80, - 84, - 90, - 92, - 99, - 100, - 102, - 106, - 110, - 112, - 114, - 119, - 121, - 124, - 127, - 146, - 147, - 154, - 158, - 160, - -1 + FRONTIER_MONS_RICH_BOY_LADY_1 }; const u16 gBattleFrontierTrainerMons_Zoe[] = { - 5, - 20, - 21, - 25, - 27, - 35, - 46, - 47, - 48, - 50, - 53, - 62, - 63, - 69, - 75, - 78, - 79, - 80, - 84, - 90, - 92, - 99, - 100, - 102, - 106, - 110, - 112, - 114, - 119, - 121, - 124, - 127, - 146, - 147, - 154, - 158, - 160, - -1 + FRONTIER_MONS_RICH_BOY_LADY_1 }; const u16 gBattleFrontierTrainerMons_Chen[] = { - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - -1 + FRONTIER_MONS_CAMPER_PICNICKER_1 }; const u16 gBattleFrontierTrainerMons_Al[] = { - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - -1 + FRONTIER_MONS_CAMPER_PICNICKER_1 }; const u16 gBattleFrontierTrainerMons_Mitch[] = { - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - -1 + FRONTIER_MONS_CAMPER_PICNICKER_1 }; const u16 gBattleFrontierTrainerMons_Anne[] = { - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - -1 + FRONTIER_MONS_CAMPER_PICNICKER_1 }; const u16 gBattleFrontierTrainerMons_Alize[] = { - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - -1 + FRONTIER_MONS_CAMPER_PICNICKER_1 }; const u16 gBattleFrontierTrainerMons_Lauren[] = { - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - -1 + FRONTIER_MONS_CAMPER_PICNICKER_1 }; const u16 gBattleFrontierTrainerMons_Kipp[] = { - 5, - 6, - 7, - 14, - 19, - 28, - 35, - 42, - 45, - 48, - 50, - 55, - 59, - 60, - 68, - 73, - 83, - 84, - 86, - 87, - 90, - 96, - 97, - 98, - 99, - 103, - 105, - 106, - 109, - 112, - 114, - 121, - -1 + FRONTIER_MONS_TUBER_1 }; const u16 gBattleFrontierTrainerMons_Jason[] = { - 5, - 6, - 7, - 14, - 19, - 28, - 35, - 42, - 45, - 48, - 50, - 55, - 59, - 60, - 68, - 73, - 83, - 84, - 86, - 87, - 90, - 96, - 97, - 98, - 99, - 103, - 105, - 106, - 109, - 112, - 114, - 121, - -1 + FRONTIER_MONS_TUBER_1 }; const u16 gBattleFrontierTrainerMons_John[] = { - 5, - 6, - 7, - 14, - 19, - 28, - 35, - 42, - 45, - 48, - 50, - 55, - 59, - 60, - 68, - 73, - 83, - 84, - 86, - 87, - 90, - 96, - 97, - 98, - 99, - 103, - 105, - 106, - 109, - 112, - 114, - 121, - -1 + FRONTIER_MONS_TUBER_1 }; const u16 gBattleFrontierTrainerMons_Ann[] = { - 5, - 6, - 7, - 14, - 19, - 28, - 35, - 42, - 45, - 48, - 50, - 55, - 59, - 60, - 68, - 73, - 83, - 84, - 86, - 87, - 90, - 96, - 97, - 98, - 99, - 103, - 105, - 106, - 109, - 112, - 114, - 121, - -1 + FRONTIER_MONS_TUBER_1 }; const u16 gBattleFrontierTrainerMons_Eileen[] = { - 5, - 6, - 7, - 14, - 19, - 28, - 35, - 42, - 45, - 48, - 50, - 55, - 59, - 60, - 68, - 73, - 83, - 84, - 86, - 87, - 90, - 96, - 97, - 98, - 99, - 103, - 105, - 106, - 109, - 112, - 114, - 121, - -1 + FRONTIER_MONS_TUBER_1 }; const u16 gBattleFrontierTrainerMons_Carlie[] = { - 5, - 6, - 7, - 14, - 19, - 28, - 35, - 42, - 45, - 48, - 50, - 55, - 59, - 60, - 68, - 73, - 83, - 84, - 86, - 87, - 90, - 96, - 97, - 98, - 99, - 103, - 105, - 106, - 109, - 112, - 114, - 121, - -1 + FRONTIER_MONS_TUBER_1 }; const u16 gBattleFrontierTrainerMons_Gordon[] = { - 1, - 13, - 15, - 16, - 17, - 22, - 23, - 24, - 26, - 32, - 34, - 36, - 43, - 50, - 51, - 54, - 56, - 68, - 72, - 73, - 81, - 82, - 83, - 86, - 87, - 96, - 97, - 98, - 99, - 103, - 105, - 107, - 109, - 111, - 113, - 116, - 117, - 123, - 124, - 128, - 131, - 134, - 138, - 139, - 142, - 144, - 145, - 151, - 152, - 155, - -1 + FRONTIER_MONS_SWIMMER_M_1 }; const u16 gBattleFrontierTrainerMons_Ayden[] = { - 1, - 13, - 15, - 16, - 17, - 22, - 23, - 24, - 26, - 32, - 34, - 36, - 43, - 50, - 51, - 54, - 56, - 68, - 72, - 73, - 81, - 82, - 83, - 86, - 87, - 96, - 97, - 98, - 99, - 103, - 105, - 107, - 109, - 111, - 113, - 116, - 117, - 123, - 124, - 128, - 131, - 134, - 138, - 139, - 142, - 144, - 145, - 151, - 152, - 155, - -1 + FRONTIER_MONS_SWIMMER_M_1 }; const u16 gBattleFrontierTrainerMons_Marco[] = { - 1, - 13, - 15, - 16, - 17, - 22, - 23, - 24, - 26, - 32, - 34, - 36, - 43, - 50, - 51, - 54, - 56, - 68, - 72, - 73, - 81, - 82, - 83, - 86, - 87, - 96, - 97, - 98, - 99, - 103, - 105, - 107, - 109, - 111, - 113, - 116, - 117, - 123, - 124, - 128, - 131, - 134, - 138, - 139, - 142, - 144, - 145, - 151, - 152, - 155, - -1 + FRONTIER_MONS_SWIMMER_M_1 }; const u16 gBattleFrontierTrainerMons_Cierra[] = { - 1, - 13, - 16, - 17, - 23, - 24, - 26, - 32, - 34, - 36, - 43, - 51, - 54, - 56, - 68, - 72, - 73, - 76, - 83, - 84, - 86, - 87, - 96, - 97, - 98, - 99, - 103, - 105, - 107, - 109, - 111, - 113, - 116, - 117, - 118, - 123, - 124, - 128, - 131, - 134, - 138, - 139, - 142, - 144, - 145, - 151, - 155, - -1 + FRONTIER_MONS_SWIMMER_F_1 }; const u16 gBattleFrontierTrainerMons_Marcy[] = { - 1, - 13, - 16, - 17, - 23, - 24, - 26, - 32, - 34, - 36, - 43, - 51, - 54, - 56, - 68, - 72, - 73, - 76, - 83, - 84, - 86, - 87, - 96, - 97, - 98, - 99, - 103, - 105, - 107, - 109, - 111, - 113, - 116, - 117, - 118, - 123, - 124, - 128, - 131, - 134, - 138, - 139, - 142, - 144, - 145, - 151, - 155, - -1 + FRONTIER_MONS_SWIMMER_F_1 }; const u16 gBattleFrontierTrainerMons_Kathy[] = { - 1, - 13, - 16, - 17, - 23, - 24, - 26, - 32, - 34, - 36, - 43, - 51, - 54, - 56, - 68, - 72, - 73, - 76, - 83, - 84, - 86, - 87, - 96, - 97, - 98, - 99, - 103, - 105, - 107, - 109, - 111, - 113, - 116, - 117, - 118, - 123, - 124, - 128, - 131, - 134, - 138, - 139, - 142, - 144, - 145, - 151, - 155, - -1 + FRONTIER_MONS_SWIMMER_F_1 }; const u16 gBattleFrontierTrainerMons_Peyton[] = { - 84, - 85, - 87, - 88, - 89, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 105, - 106, - 107, - 109, - 112, - 113, - 117, - 120, - 121, - 123, - 129, - 134, - 142, - 143, - 145, - 148, - 149, - 151, - 152, - 155, - -1 + FRONTIER_MONS_POKEFAN_M_1 }; const u16 gBattleFrontierTrainerMons_Julian[] = { - 84, - 85, - 87, - 88, - 89, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 105, - 106, - 107, - 109, - 112, - 113, - 117, - 120, - 121, - 123, - 129, - 134, - 142, - 143, - 145, - 148, - 149, - 151, - 152, - 155, - -1 + FRONTIER_MONS_POKEFAN_M_1 }; const u16 gBattleFrontierTrainerMons_Quinn[] = { - 84, - 85, - 87, - 88, - 89, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 105, - 106, - 107, - 109, - 112, - 113, - 117, - 120, - 121, - 123, - 129, - 134, - 142, - 143, - 145, - 148, - 149, - 151, - 152, - 155, - -1 + FRONTIER_MONS_POKEFAN_M_1 }; const u16 gBattleFrontierTrainerMons_Haylee[] = { - 1, - 5, - 6, - 10, - 13, - 14, - 16, - 17, - 18, - 19, - 20, - 23, - 24, - 26, - 28, - 29, - 31, - 32, - 33, - 34, - 35, - 36, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 54, - 56, - 59, - 61, - 65, - 66, - 67, - 68, - 71, - 72, - 79, - -1 + FRONTIER_MONS_POKEFAN_F_1 }; const u16 gBattleFrontierTrainerMons_Amanda[] = { - 1, - 5, - 6, - 10, - 13, - 14, - 16, - 17, - 18, - 19, - 20, - 23, - 24, - 26, - 28, - 29, - 31, - 32, - 33, - 34, - 35, - 36, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 54, - 56, - 59, - 61, - 65, - 66, - 67, - 68, - 71, - 72, - 79, - -1 + FRONTIER_MONS_POKEFAN_F_1 }; const u16 gBattleFrontierTrainerMons_Stacy[] = { - 1, - 5, - 6, - 10, - 13, - 14, - 16, - 17, - 18, - 19, - 20, - 23, - 24, - 26, - 28, - 29, - 31, - 32, - 33, - 34, - 35, - 36, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 54, - 56, - 59, - 61, - 65, - 66, - 67, - 68, - 71, - 72, - 79, - -1 + FRONTIER_MONS_POKEFAN_F_1 }; +// The below 6 are the early Pkmn Breeder class trainers, which use groups from other general classes const u16 gBattleFrontierTrainerMons_Rafael[] = { - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 10, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - -1 + FRONTIER_MONS_YOUNGSTER_LASS_1 }; const u16 gBattleFrontierTrainerMons_Oliver[] = { - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - -1 + FRONTIER_MONS_SCHOOL_KID_1 }; const u16 gBattleFrontierTrainerMons_Payton[] = { - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - -1 + FRONTIER_MONS_CAMPER_PICNICKER_1 }; const u16 gBattleFrontierTrainerMons_Pamela[] = { - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 10, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - -1 + FRONTIER_MONS_YOUNGSTER_LASS_1 }; const u16 gBattleFrontierTrainerMons_Eliza[] = { - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - -1 + FRONTIER_MONS_SCHOOL_KID_1 }; const u16 gBattleFrontierTrainerMons_Marisa[] = { - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - -1 + FRONTIER_MONS_CAMPER_PICNICKER_1 }; const u16 gBattleFrontierTrainerMons_Lewis[] = { - 2, - 3, - 4, - 8, - 9, - 21, - 27, - 39, - 40, - 41, - 42, - 52, - 57, - 58, - 80, - 112, - 132, - 141, - 153, - 154, - 157, - 158, - 159, - 160, - 161, - -1 + FRONTIER_MONS_BUG_CATCHER_1_EXTRA(METAPOD, KAKUNA) }; const u16 gBattleFrontierTrainerMons_Yoshi[] = { - 2, - 3, - 4, - 11, - 12, - 21, - 27, - 39, - 40, - 41, - 42, - 52, - 57, - 58, - 80, - 112, - 132, - 141, - 153, - 154, - 157, - 158, - 159, - 160, - 161, - -1 + FRONTIER_MONS_BUG_CATCHER_1_EXTRA(SILCOON, CASCOON) }; const u16 gBattleFrontierTrainerMons_Destin[] = { - 2, - 3, - 4, - 21, - 27, - 39, - 40, - 41, - 42, - 52, - 57, - 58, - 80, - 112, - 132, - 141, - 153, - 154, - 157, - 158, - 159, - 160, - 161, - -1 + FRONTIER_MONS_BUG_CATCHER_1 }; const u16 gBattleFrontierTrainerMons_Keon[] = { - 5, - 21, - 25, - 27, - 35, - 39, - 40, - 41, - 42, - 46, - 47, - 48, - 50, - 52, - 53, - 57, - 58, - 62, - 63, - 69, - 75, - 78, - 79, - 80, - 84, - 90, - 92, - 99, - 100, - 102, - 106, - 110, - 112, - 114, - 121, - 124, - 127, - 132, - 141, - 146, - 147, - 153, - 154, - 157, - 158, - 159, - 160, - 161, - -1 + FRONTIER_MONS_NINJA_BOY_1 }; const u16 gBattleFrontierTrainerMons_Stuart[] = { - 5, - 21, - 25, - 27, - 35, - 39, - 40, - 41, - 42, - 46, - 47, - 48, - 50, - 52, - 53, - 57, - 58, - 62, - 63, - 69, - 75, - 78, - 79, - 80, - 84, - 90, - 92, - 99, - 100, - 102, - 106, - 110, - 112, - 114, - 121, - 124, - 127, - 132, - 141, - 146, - 147, - 153, - 154, - 157, - 158, - 159, - 160, - 161, - -1 + FRONTIER_MONS_NINJA_BOY_1 }; const u16 gBattleFrontierTrainerMons_Nestor[] = { - 5, - 21, - 25, - 27, - 35, - 39, - 40, - 41, - 42, - 46, - 47, - 48, - 50, - 52, - 53, - 57, - 58, - 62, - 63, - 69, - 75, - 78, - 79, - 80, - 84, - 90, - 92, - 99, - 100, - 102, - 106, - 110, - 112, - 114, - 121, - 124, - 127, - 132, - 141, - 146, - 147, - 153, - 154, - 157, - 158, - 159, - 160, - 161, - -1 + FRONTIER_MONS_NINJA_BOY_1 }; const u16 gBattleFrontierTrainerMons_Derrick[] = { - 21, - 27, - 29, - 39, - 40, - 41, - 42, - 52, - 57, - 58, - 61, - 62, - 63, - 69, - 80, - 92, - 102, - 112, - 125, - 129, - 132, - 140, - 141, - 153, - 154, - 157, - 158, - 159, - 160, - 161, - -1 + FRONTIER_MONS_BUG_MANIAC_1 }; const u16 gBattleFrontierTrainerMons_Bryson[] = { - 21, - 27, - 29, - 39, - 40, - 41, - 42, - 52, - 57, - 58, - 61, - 62, - 63, - 69, - 80, - 92, - 102, - 112, - 125, - 129, - 132, - 140, - 141, - 153, - 154, - 157, - 158, - 159, - 160, - 161, - -1 + FRONTIER_MONS_BUG_MANIAC_1 }; const u16 gBattleFrontierTrainerMons_Clayton[] = { - 21, - 27, - 29, - 39, - 40, - 41, - 42, - 52, - 57, - 58, - 61, - 62, - 63, - 69, - 80, - 92, - 102, - 112, - 125, - 129, - 132, - 140, - 141, - 153, - 154, - 157, - 158, - 159, - 160, - 161, - -1 + FRONTIER_MONS_BUG_MANIAC_1 }; const u16 gBattleFrontierTrainerMons_Trenton[] = { - 6, - 7, - 55, - 60, - 68, - 73, - 83, - 86, - 87, - 105, - 111, - 116, - 123, - 124, - 128, - 134, - 138, - 139, - 151, - -1 + FRONTIER_MONS_FISHERMAN_1 }; const u16 gBattleFrontierTrainerMons_Jenson[] = { - 6, - 7, - 55, - 60, - 68, - 73, - 83, - 86, - 87, - 105, - 111, - 116, - 123, - 124, - 128, - 134, - 138, - 139, - 151, - -1 + FRONTIER_MONS_FISHERMAN_1 }; const u16 gBattleFrontierTrainerMons_Wesley[] = { - 6, - 7, - 55, - 60, - 68, - 73, - 83, - 86, - 87, - 105, - 111, - 116, - 123, - 124, - 128, - 134, - 138, - 139, - 151, - -1 + FRONTIER_MONS_FISHERMAN_1 }; const u16 gBattleFrontierTrainerMons_Anton[] = { - 31, - 39, - 58, - 67, - 70, - 74, - 75, - 78, - 85, - 104, - 108, - 120, - 122, - 133, - 138, - 139, - 140, - 141, - 150, - 151, - 152, - 156, - -1 + FRONTIER_MONS_RUIN_MANIAC_1 }; const u16 gBattleFrontierTrainerMons_Lawson[] = { - 31, - 39, - 58, - 67, - 70, - 74, - 75, - 78, - 85, - 104, - 108, - 120, - 122, - 133, - 138, - 139, - 140, - 141, - 150, - 151, - 152, - 156, - -1 + FRONTIER_MONS_RUIN_MANIAC_1 }; const u16 gBattleFrontierTrainerMons_Sammy[] = { - 31, - 39, - 58, - 67, - 70, - 74, - 75, - 78, - 85, - 104, - 108, - 120, - 122, - 133, - 138, - 139, - 140, - 141, - 150, - 151, - 152, - 156, - -1 + FRONTIER_MONS_RUIN_MANIAC_1 }; +// The below 3 are the early Collector class trainers, which use groups from other general classes const u16 gBattleFrontierTrainerMons_Arnie[] = { - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 10, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - -1 + FRONTIER_MONS_YOUNGSTER_LASS_1 }; const u16 gBattleFrontierTrainerMons_Adrian[] = { - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - -1 + FRONTIER_MONS_SCHOOL_KID_1 }; const u16 gBattleFrontierTrainerMons_Tristan[] = { - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - -1 + FRONTIER_MONS_CAMPER_PICNICKER_1 }; const u16 gBattleFrontierTrainerMons_Juliana[] = { - 0, - 14, - 19, - 28, - 42, - 58, - 59, - 67, - 68, - 85, - 118, - 120, - 123, - 155, - 156, - 193, - -1 + FRONTIER_MONS_PARASOL_LADY_1 }; const u16 gBattleFrontierTrainerMons_Rylee[] = { - 0, - 14, - 19, - 28, - 42, - 58, - 59, - 67, - 68, - 85, - 118, - 120, - 123, - 155, - 156, - 193, - -1 + FRONTIER_MONS_PARASOL_LADY_1 }; const u16 gBattleFrontierTrainerMons_Chelsea[] = { - 0, - 14, - 19, - 28, - 42, - 58, - 59, - 67, - 68, - 85, - 118, - 120, - 123, - 155, - 156, - 193, - -1 + FRONTIER_MONS_PARASOL_LADY_1 }; +// The below 3 are the early Beauty class trainers, which use groups from other general classes const u16 gBattleFrontierTrainerMons_Danela[] = { - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 10, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - -1 + FRONTIER_MONS_YOUNGSTER_LASS_1 }; const u16 gBattleFrontierTrainerMons_Lizbeth[] = { - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - -1 + FRONTIER_MONS_SCHOOL_KID_1 }; const u16 gBattleFrontierTrainerMons_Amelia[] = { - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - -1 + FRONTIER_MONS_CAMPER_PICNICKER_1 }; const u16 gBattleFrontierTrainerMons_Jillian[] = { - 0, - 5, - 18, - 19, - 29, - 35, - 48, - 50, - 52, - 61, - 69, - 75, - 78, - 84, - 90, - 94, - 99, - 100, - 101, - 102, - 106, - 112, - 114, - 121, - 125, - 129, - 130, - 131, - 140, - -1 + FRONTIER_MONS_AROMA_LADY_1 }; const u16 gBattleFrontierTrainerMons_Abbie[] = { - 0, - 5, - 18, - 19, - 29, - 35, - 48, - 50, - 52, - 61, - 69, - 75, - 78, - 84, - 90, - 94, - 99, - 100, - 101, - 102, - 106, - 112, - 114, - 121, - 125, - 129, - 130, - 131, - 140, - -1 + FRONTIER_MONS_AROMA_LADY_1 }; const u16 gBattleFrontierTrainerMons_Briana[] = { - 0, - 5, - 18, - 19, - 29, - 35, - 48, - 50, - 52, - 61, - 69, - 75, - 78, - 84, - 90, - 94, - 99, - 100, - 101, - 102, - 106, - 112, - 114, - 121, - 125, - 129, - 130, - 131, - 140, - -1 + FRONTIER_MONS_AROMA_LADY_1 }; const u16 gBattleFrontierTrainerMons_Antonio[] = { - 5, - 10, - 20, - 35, - 48, - 49, - 50, - 62, - 63, - 64, - 66, - 71, - 75, - 77, - 78, - 84, - 90, - 92, - 99, - 106, - 108, - 112, - 114, - 115, - 116, - 119, - 121, - 122, - 143, - 148, - 152, - -1 + FRONTIER_MONS_GUITARIST_1 }; const u16 gBattleFrontierTrainerMons_Jaden[] = { - 5, - 10, - 20, - 35, - 48, - 49, - 50, - 62, - 63, - 64, - 66, - 71, - 75, - 77, - 78, - 84, - 90, - 92, - 99, - 106, - 108, - 112, - 114, - 115, - 116, - 119, - 121, - 122, - 143, - 148, - 152, - -1 + FRONTIER_MONS_GUITARIST_1 }; const u16 gBattleFrontierTrainerMons_Dakota[] = { - 5, - 10, - 20, - 35, - 48, - 49, - 50, - 62, - 63, - 64, - 66, - 71, - 75, - 77, - 78, - 84, - 90, - 92, - 99, - 106, - 108, - 112, - 114, - 115, - 116, - 119, - 121, - 122, - 143, - 148, - 152, - -1 + FRONTIER_MONS_GUITARIST_1 }; const u16 gBattleFrontierTrainerMons_Brayden[] = { - 1, - 13, - 16, - 17, - 23, - 24, - 25, - 26, - 32, - 33, - 34, - 36, - 37, - 38, - 43, - 44, - 45, - 51, - 54, - 56, - 72, - 91, - 93, - 95, - 106, - 107, - 113, - 117, - 118, - 135, - 137, - 142, - 144, - 145, - -1 + FRONTIER_MONS_BIRD_KEEPER_1 }; const u16 gBattleFrontierTrainerMons_Corson[] = { - 1, - 13, - 16, - 17, - 23, - 24, - 25, - 26, - 32, - 33, - 34, - 36, - 37, - 38, - 43, - 44, - 45, - 51, - 54, - 56, - 72, - 91, - 93, - 95, - 106, - 107, - 113, - 117, - 118, - 135, - 137, - 142, - 144, - 145, - -1 + FRONTIER_MONS_BIRD_KEEPER_1 }; const u16 gBattleFrontierTrainerMons_Trevin[] = { - 1, - 13, - 16, - 17, - 23, - 24, - 25, - 26, - 32, - 33, - 34, - 36, - 37, - 38, - 43, - 44, - 45, - 51, - 54, - 56, - 72, - 91, - 93, - 95, - 106, - 107, - 113, - 117, - 118, - 135, - 137, - 142, - 144, - 145, - -1 + FRONTIER_MONS_BIRD_KEEPER_1 }; const u16 gBattleFrontierTrainerMons_Patrick[] = { - 15, - 22, - 50, - 67, - 70, - 71, - 74, - 77, - 81, - 82, - 83, - 86, - 87, - 96, - 97, - 98, - 99, - 103, - 104, - 109, - 111, - 120, - 124, - 128, - 131, - 133, - 134, - 138, - 139, - 151, - 155, - 156, - -1 + FRONTIER_MONS_SAILOR_1 }; const u16 gBattleFrontierTrainerMons_Kaden[] = { - 15, - 22, - 50, - 67, - 70, - 71, - 74, - 77, - 81, - 82, - 83, - 86, - 87, - 96, - 97, - 98, - 99, - 103, - 104, - 109, - 111, - 120, - 124, - 128, - 131, - 133, - 134, - 138, - 139, - 151, - 155, - 156, - -1 + FRONTIER_MONS_SAILOR_1 }; const u16 gBattleFrontierTrainerMons_Maxwell[] = { - 15, - 22, - 50, - 67, - 70, - 71, - 74, - 77, - 81, - 82, - 83, - 86, - 87, - 96, - 97, - 98, - 99, - 103, - 104, - 109, - 111, - 120, - 124, - 128, - 131, - 133, - 134, - 138, - 139, - 151, - 155, - 156, - -1 + FRONTIER_MONS_SAILOR_1 }; const u16 gBattleFrontierTrainerMons_Daryl[] = { - 15, - 22, - 31, - 39, - 50, - 51, - 58, - 67, - 70, - 74, - 75, - 81, - 82, - 85, - 104, - 120, - 122, - 132, - 133, - 138, - 139, - 140, - 141, - 142, - 144, - 150, - 156, - -1 + FRONTIER_MONS_HIKER_1 }; const u16 gBattleFrontierTrainerMons_Kenneth[] = { - 15, - 22, - 31, - 39, - 50, - 51, - 58, - 67, - 70, - 74, - 75, - 81, - 82, - 85, - 104, - 120, - 122, - 132, - 133, - 138, - 139, - 140, - 141, - 142, - 144, - 150, - 156, - -1 + FRONTIER_MONS_HIKER_1 }; const u16 gBattleFrontierTrainerMons_Rich[] = { - 15, - 22, - 31, - 39, - 50, - 51, - 58, - 67, - 70, - 74, - 75, - 81, - 82, - 85, - 104, - 120, - 122, - 132, - 133, - 138, - 139, - 140, - 141, - 142, - 144, - 150, - 156, - -1 + FRONTIER_MONS_HIKER_1 }; const u16 gBattleFrontierTrainerMons_Caden[] = { - 30, - 62, - 63, - 65, - 70, - 74, - 77, - 78, - 85, - 88, - 89, - 95, - 108, - 119, - 122, - 133, - 136, - 149, - 150, - 152, - 156, - -1 + FRONTIER_MONS_KINDLER_1 }; const u16 gBattleFrontierTrainerMons_Marlon[] = { - 30, - 62, - 63, - 65, - 70, - 74, - 77, - 78, - 85, - 88, - 89, - 95, - 108, - 119, - 122, - 133, - 136, - 149, - 150, - 152, - 156, - -1 + FRONTIER_MONS_KINDLER_1 }; const u16 gBattleFrontierTrainerMons_Nash[] = { - 30, - 62, - 63, - 65, - 70, - 74, - 77, - 78, - 85, - 88, - 89, - 95, - 108, - 119, - 122, - 133, - 136, - 149, - 150, - 152, - 156, - -1 + FRONTIER_MONS_KINDLER_1 }; const u16 gBattleFrontierTrainerMons_Robby[] = { - 1, - 13, - 15, - 16, - 17, - 22, - 23, - 24, - 26, - 32, - 33, - 34, - 36, - 37, - 38, - 43, - 44, - 50, - 51, - 54, - 56, - 67, - 70, - 72, - 74, - 75, - 81, - 82, - 85, - 91, - 93, - 104, - 107, - 113, - 117, - 120, - 132, - 133, - 135, - 137, - 142, - 144, - 145, - 156, - -1 + FRONTIER_MONS_RUNNING_TRIATHLETE_1 }; const u16 gBattleFrontierTrainerMons_Reece[] = { - 1, - 13, - 15, - 16, - 17, - 22, - 23, - 24, - 26, - 32, - 33, - 34, - 36, - 37, - 38, - 43, - 44, - 50, - 51, - 54, - 56, - 67, - 70, - 72, - 74, - 75, - 81, - 82, - 85, - 91, - 93, - 104, - 107, - 113, - 117, - 120, - 132, - 133, - 135, - 137, - 142, - 144, - 145, - 156, - -1 + FRONTIER_MONS_RUNNING_TRIATHLETE_1 }; const u16 gBattleFrontierTrainerMons_Kathryn[] = { - 1, - 13, - 15, - 16, - 17, - 22, - 23, - 24, - 26, - 32, - 33, - 34, - 36, - 37, - 38, - 43, - 44, - 50, - 51, - 54, - 56, - 67, - 70, - 72, - 74, - 75, - 81, - 82, - 85, - 91, - 93, - 104, - 107, - 113, - 117, - 120, - 132, - 133, - 135, - 137, - 142, - 144, - 145, - 156, - -1 + FRONTIER_MONS_RUNNING_TRIATHLETE_1 }; const u16 gBattleFrontierTrainerMons_Ellen[] = { - 1, - 13, - 15, - 16, - 17, - 22, - 23, - 24, - 26, - 32, - 33, - 34, - 36, - 37, - 38, - 43, - 44, - 50, - 51, - 54, - 56, - 67, - 70, - 72, - 74, - 75, - 81, - 82, - 85, - 91, - 93, - 104, - 107, - 113, - 117, - 120, - 132, - 133, - 135, - 137, - 142, - 144, - 145, - 156, - -1 + FRONTIER_MONS_RUNNING_TRIATHLETE_1 }; const u16 gBattleFrontierTrainerMons_Ramon[] = { - 15, - 22, - 50, - 71, - 72, - 76, - 77, - 81, - 82, - 83, - 84, - 87, - 96, - 97, - 98, - 99, - 103, - 107, - 109, - 111, - 113, - 117, - 118, - 131, - 134, - 138, - 139, - 142, - 144, - 145, - 151, - 155, - -1 + FRONTIER_MONS_SWIMMING_TRIATHLETE_1 }; const u16 gBattleFrontierTrainerMons_Arthur[] = { - 15, - 22, - 50, - 71, - 72, - 76, - 77, - 81, - 82, - 83, - 84, - 87, - 96, - 97, - 98, - 99, - 103, - 107, - 109, - 111, - 113, - 117, - 118, - 131, - 134, - 138, - 139, - 142, - 144, - 145, - 151, - 155, - -1 + FRONTIER_MONS_SWIMMING_TRIATHLETE_1 }; const u16 gBattleFrontierTrainerMons_Alondra[] = { - 15, - 22, - 50, - 71, - 72, - 76, - 77, - 81, - 82, - 83, - 84, - 87, - 96, - 97, - 98, - 99, - 103, - 107, - 109, - 111, - 113, - 117, - 118, - 131, - 134, - 138, - 139, - 142, - 144, - 145, - 151, - 155, - -1 + FRONTIER_MONS_SWIMMING_TRIATHLETE_1 }; const u16 gBattleFrontierTrainerMons_Adriana[] = { - 15, - 22, - 50, - 71, - 72, - 76, - 77, - 81, - 82, - 83, - 84, - 87, - 96, - 97, - 98, - 99, - 103, - 107, - 109, - 111, - 113, - 117, - 118, - 131, - 134, - 138, - 139, - 142, - 144, - 145, - 151, - 155, - -1 + FRONTIER_MONS_SWIMMING_TRIATHLETE_1 }; const u16 gBattleFrontierTrainerMons_Malik[] = { - 10, - 15, - 22, - 49, - 50, - 64, - 66, - 71, - 72, - 77, - 78, - 81, - 82, - 91, - 93, - 107, - 108, - 113, - 115, - 117, - 122, - 135, - 137, - 142, - 143, - 144, - 145, - 148, - 152, - -1 + FRONTIER_MONS_CYCLING_TRIATHLETE_1 }; const u16 gBattleFrontierTrainerMons_Jill[] = { - 10, - 15, - 22, - 49, - 50, - 64, - 66, - 71, - 72, - 77, - 78, - 81, - 82, - 91, - 93, - 107, - 108, - 113, - 115, - 117, - 122, - 135, - 137, - 142, - 143, - 144, - 145, - 148, - 152, - -1 + FRONTIER_MONS_CYCLING_TRIATHLETE_1 }; const u16 gBattleFrontierTrainerMons_Erik[] = { - 162, - 164, - 168, - 178, - 183, - 184, - 189, - 197, - 199, - 200, - 203, - 204, - 207, - 210, - 213, - 214, - 218, - 220, - 221, - 224, - 227, - 231, - 232, - 233, - 234, - 235, - 236, - 238, - 240, - 243, - 245, - 246, - 250, - 263, - -1 + FRONTIER_MONS_RUNNING_TRIATHLETE_2 }; const u16 gBattleFrontierTrainerMons_Yazmin[] = { - 162, - 164, - 168, - 178, - 183, - 184, - 189, - 197, - 199, - 200, - 203, - 204, - 207, - 210, - 213, - 214, - 218, - 220, - 221, - 224, - 227, - 231, - 232, - 233, - 234, - 235, - 236, - 238, - 240, - 243, - 245, - 246, - 250, - 263, - -1 + FRONTIER_MONS_RUNNING_TRIATHLETE_2 }; const u16 gBattleFrontierTrainerMons_Jamal[] = { - 170, - 176, - 178, - 182, - 189, - 190, - 192, - 196, - 211, - 212, - 213, - 219, - 228, - 230, - 232, - 233, - 234, - 236, - 242, - 245, - 249, - 253, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 265, - 266, - -1 + FRONTIER_MONS_SWIMMING_TRIATHLETE_2 }; const u16 gBattleFrontierTrainerMons_Leslie[] = { - 170, - 176, - 178, - 182, - 189, - 190, - 192, - 196, - 211, - 212, - 213, - 219, - 228, - 230, - 232, - 233, - 234, - 236, - 242, - 245, - 249, - 253, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 265, - 266, - -1 + FRONTIER_MONS_SWIMMING_TRIATHLETE_2 }; const u16 gBattleFrontierTrainerMons_Dave[] = { - 162, - 164, - 168, - 178, - 183, - 186, - 187, - 189, - 197, - 199, - 200, - 203, - 204, - 206, - 207, - 214, - 215, - 218, - 220, - 221, - 224, - 227, - 232, - 233, - 234, - 235, - 236, - 240, - 244, - 246, - 250, - -1 + FRONTIER_MONS_CYCLING_TRIATHLETE_2 }; const u16 gBattleFrontierTrainerMons_Carlo[] = { - 162, - 164, - 168, - 178, - 183, - 186, - 187, - 189, - 197, - 199, - 200, - 203, - 204, - 206, - 207, - 214, - 215, - 218, - 220, - 221, - 224, - 227, - 232, - 233, - 234, - 235, - 236, - 240, - 244, - 246, - 250, - -1 + FRONTIER_MONS_CYCLING_TRIATHLETE_2 }; const u16 gBattleFrontierTrainerMons_Emilia[] = { - 162, - 164, - 168, - 178, - 183, - 186, - 187, - 189, - 197, - 199, - 200, - 203, - 204, - 206, - 207, - 214, - 215, - 218, - 220, - 221, - 224, - 227, - 232, - 233, - 234, - 235, - 236, - 240, - 244, - 246, - 250, - -1 + FRONTIER_MONS_CYCLING_TRIATHLETE_2 }; const u16 gBattleFrontierTrainerMons_Dalia[] = { - 162, - 164, - 168, - 178, - 183, - 186, - 187, - 189, - 197, - 199, - 200, - 203, - 204, - 206, - 207, - 214, - 215, - 218, - 220, - 221, - 224, - 227, - 232, - 233, - 234, - 235, - 236, - 240, - 244, - 246, - 250, - -1 + FRONTIER_MONS_CYCLING_TRIATHLETE_2 }; const u16 gBattleFrontierTrainerMons_Hitomi[] = { - 164, - 166, - 175, - 178, - 181, - 189, - 191, - 193, - 194, - 195, - 197, - 199, - 200, - 202, - 203, - 205, - 206, - 207, - 210, - 215, - 218, - 220, - 221, - 222, - 223, - 225, - 227, - 230, - 232, - 233, - 234, - 235, - 236, - 240, - 241, - 246, - 247, - 252, - 254, - 262, - -1 + FRONTIER_MONS_BLACK_BELT_BATTLE_GIRL_1 }; const u16 gBattleFrontierTrainerMons_Ricardo[] = { - 164, - 166, - 175, - 178, - 181, - 189, - 191, - 193, - 194, - 195, - 197, - 199, - 200, - 202, - 203, - 205, - 206, - 207, - 210, - 215, - 218, - 220, - 221, - 222, - 223, - 225, - 227, - 230, - 232, - 233, - 234, - 235, - 236, - 240, - 241, - 246, - 247, - 252, - 254, - 262, - -1 + FRONTIER_MONS_BLACK_BELT_BATTLE_GIRL_1 }; const u16 gBattleFrontierTrainerMons_Shizuka[] = { - 164, - 166, - 175, - 178, - 181, - 189, - 191, - 193, - 194, - 195, - 197, - 199, - 200, - 202, - 203, - 205, - 206, - 207, - 210, - 215, - 218, - 220, - 221, - 222, - 223, - 225, - 227, - 230, - 232, - 233, - 234, - 235, - 236, - 240, - 241, - 246, - 247, - 252, - 254, - 262, - -1 + FRONTIER_MONS_BLACK_BELT_BATTLE_GIRL_1 }; const u16 gBattleFrontierTrainerMons_Joana[] = { - 164, - 166, - 175, - 178, - 181, - 189, - 191, - 193, - 194, - 195, - 197, - 199, - 200, - 202, - 203, - 205, - 206, - 207, - 210, - 215, - 218, - 220, - 221, - 222, - 223, - 225, - 227, - 230, - 232, - 233, - 234, - 235, - 236, - 240, - 241, - 246, - 247, - 252, - 254, - 262, - -1 + FRONTIER_MONS_BLACK_BELT_BATTLE_GIRL_1 }; const u16 gBattleFrontierTrainerMons_Kelly[] = { - 164, - 166, - 175, - 178, - 181, - 189, - 191, - 193, - 194, - 195, - 197, - 199, - 200, - 202, - 203, - 205, - 206, - 207, - 210, - 215, - 218, - 220, - 221, - 222, - 223, - 225, - 227, - 230, - 232, - 233, - 234, - 235, - 236, - 240, - 241, - 246, - 247, - 252, - 254, - 262, - -1 + FRONTIER_MONS_BLACK_BELT_BATTLE_GIRL_1 }; const u16 gBattleFrontierTrainerMons_Rayna[] = { - 164, - 166, - 175, - 178, - 181, - 189, - 191, - 193, - 194, - 195, - 197, - 199, - 200, - 202, - 203, - 205, - 206, - 207, - 210, - 215, - 218, - 220, - 221, - 222, - 223, - 225, - 227, - 230, - 232, - 233, - 234, - 235, - 236, - 240, - 241, - 246, - 247, - 252, - 254, - 262, - -1 + FRONTIER_MONS_BLACK_BELT_BATTLE_GIRL_1 }; const u16 gBattleFrontierTrainerMons_Evan[] = { - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - -1 + FRONTIER_MONS_EXPERT_1A }; const u16 gBattleFrontierTrainerMons_Jordan[] = { - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - -1 + FRONTIER_MONS_EXPERT_1B }; const u16 gBattleFrontierTrainerMons_Joel[] = { - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - -1 + FRONTIER_MONS_EXPERT_1C }; const u16 gBattleFrontierTrainerMons_Kristen[] = { - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - -1 + FRONTIER_MONS_EXPERT_1A }; const u16 gBattleFrontierTrainerMons_Selphy[] = { - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - -1 + FRONTIER_MONS_EXPERT_1B }; const u16 gBattleFrontierTrainerMons_Chloe[] = { - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - -1 + FRONTIER_MONS_EXPERT_1C }; const u16 gBattleFrontierTrainerMons_Norton[] = { - 267, - 268, - 273, - 274, - 276, - 284, - 289, - 290, - 291, - 292, - 307, - 308, - 311, - 312, - 314, - 317, - 325, - 327, - 328, - 329, - 331, - 332, - 340, - 342, - 347, - 349, - 351, - 352, - 354, - 356, - 359, - 363, - 370, - -1 + FRONTIER_MONS_PSYCHIC_1 }; const u16 gBattleFrontierTrainerMons_Lukas[] = { - 267, - 268, - 273, - 274, - 276, - 284, - 289, - 290, - 291, - 292, - 307, - 308, - 311, - 312, - 314, - 317, - 325, - 327, - 328, - 329, - 331, - 332, - 340, - 342, - 347, - 349, - 351, - 352, - 354, - 356, - 359, - 363, - 370, - -1 + FRONTIER_MONS_PSYCHIC_1 }; const u16 gBattleFrontierTrainerMons_Zach[] = { - 267, - 268, - 273, - 274, - 276, - 284, - 289, - 290, - 291, - 292, - 307, - 308, - 311, - 312, - 314, - 317, - 325, - 327, - 328, - 329, - 331, - 332, - 340, - 342, - 347, - 349, - 351, - 352, - 354, - 356, - 359, - 363, - 370, - -1 + FRONTIER_MONS_PSYCHIC_1 }; const u16 gBattleFrontierTrainerMons_Kaitlyn[] = { - 267, - 268, - 273, - 274, - 276, - 284, - 289, - 290, - 291, - 292, - 307, - 308, - 311, - 312, - 314, - 317, - 325, - 327, - 328, - 329, - 331, - 332, - 340, - 342, - 347, - 349, - 351, - 352, - 354, - 356, - 359, - 363, - 370, - -1 + FRONTIER_MONS_PSYCHIC_1 }; const u16 gBattleFrontierTrainerMons_Breanna[] = { - 267, - 268, - 273, - 274, - 276, - 284, - 289, - 290, - 291, - 292, - 307, - 308, - 311, - 312, - 314, - 317, - 325, - 327, - 328, - 329, - 331, - 332, - 340, - 342, - 347, - 349, - 351, - 352, - 354, - 356, - 359, - 363, - 370, - -1 + FRONTIER_MONS_PSYCHIC_1 }; const u16 gBattleFrontierTrainerMons_Kendra[] = { - 267, - 268, - 273, - 274, - 276, - 284, - 289, - 290, - 291, - 292, - 307, - 308, - 311, - 312, - 314, - 317, - 325, - 327, - 328, - 329, - 331, - 332, - 340, - 342, - 347, - 349, - 351, - 352, - 354, - 356, - 359, - 363, - 370, - -1 + FRONTIER_MONS_PSYCHIC_1 }; const u16 gBattleFrontierTrainerMons_Molly[] = { - 268, - 270, - 272, - 274, - 282, - 284, - 289, - 290, - 303, - 307, - 311, - 314, - 317, - 322, - 327, - 328, - 331, - 336, - 340, - 342, - 344, - 347, - 352, - 353, - 354, - 356, - 359, - -1 + FRONTIER_MONS_HEX_MANIAC_1 }; const u16 gBattleFrontierTrainerMons_Jazmin[] = { - 268, - 270, - 272, - 274, - 282, - 284, - 289, - 290, - 303, - 307, - 311, - 314, - 317, - 322, - 327, - 328, - 331, - 336, - 340, - 342, - 344, - 347, - 352, - 353, - 354, - 356, - 359, - -1 + FRONTIER_MONS_HEX_MANIAC_1 }; const u16 gBattleFrontierTrainerMons_Kelsey[] = { - 268, - 270, - 272, - 274, - 282, - 284, - 289, - 290, - 303, - 307, - 311, - 314, - 317, - 322, - 327, - 328, - 331, - 336, - 340, - 342, - 344, - 347, - 352, - 353, - 354, - 356, - 359, - -1 + FRONTIER_MONS_HEX_MANIAC_1 }; const u16 gBattleFrontierTrainerMons_Jalen[] = { - 269, - 271, - 275, - 279, - 280, - 281, - 283, - 285, - 286, - 287, - 293, - 294, - 295, - 300, - 302, - 307, - 310, - 311, - 320, - 322, - 326, - 330, - 332, - 335, - 344, - 345, - 346, - 348, - 350, - 353, - 357, - -1 + FRONTIER_MONS_POKEMANIAC_1 }; const u16 gBattleFrontierTrainerMons_Griffen[] = { - 269, - 271, - 275, - 279, - 280, - 281, - 283, - 285, - 286, - 287, - 293, - 294, - 295, - 300, - 302, - 307, - 310, - 311, - 320, - 322, - 326, - 330, - 332, - 335, - 344, - 345, - 346, - 348, - 350, - 353, - 357, - -1 + FRONTIER_MONS_POKEMANIAC_1 }; const u16 gBattleFrontierTrainerMons_Xander[] = { - 269, - 271, - 275, - 279, - 280, - 281, - 283, - 285, - 286, - 287, - 293, - 294, - 295, - 300, - 302, - 307, - 310, - 311, - 320, - 322, - 326, - 330, - 332, - 335, - 344, - 345, - 346, - 348, - 350, - 353, - 357, - -1 + FRONTIER_MONS_POKEMANIAC_1 }; const u16 gBattleFrontierTrainerMons_Marvin[] = { - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - -1 + FRONTIER_MONS_GENTLEMAN_1A }; const u16 gBattleFrontierTrainerMons_Brennan[] = { - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - -1 + FRONTIER_MONS_GENTLEMAN_1B }; const u16 gBattleFrontierTrainerMons_Baley[] = { - 159, - 160, - 161, - 172, - 173, - 177, - 198, - 226, - 238, - 263, - 264, - 277, - 278, - 282, - 303, - 331, - 343, - 368, - 369, - -1 + FRONTIER_MONS_BUG_MANIAC_2 }; const u16 gBattleFrontierTrainerMons_Zackary[] = { - 271, - 283, - 294, - 295, - 298, - 299, - 300, - 311, - 315, - 320, - 327, - 328, - 330, - 335, - 337, - 338, - 339, - 341, - 346, - 364, - 365, - 366, - -1 + FRONTIER_MONS_RUIN_MANIAC_2 }; const u16 gBattleFrontierTrainerMons_Gabriel[] = { - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - -1 + FRONTIER_MONS_COLLECTOR_1 }; const u16 gBattleFrontierTrainerMons_Emily[] = { - 272, - 301, - 309, - 330, - 348, - 349, - 350, - 359, - 360, - 362, - 363, - 365, - -1 + FRONTIER_MONS_PARASOL_LADY_2 }; const u16 gBattleFrontierTrainerMons_Jordyn[] = { - 267, - 269, - 270, - 272, - 273, - 276, - 279, - 284, - 288, - 302, - 304, - 305, - 308, - 309, - 312, - 316, - 319, - 322, - 323, - 325, - 326, - 329, - 331, - 332, - 336, - 340, - 344, - 345, - 351, - 353, - 355, - -1 + FRONTIER_MONS_BEAUTY_1 }; const u16 gBattleFrontierTrainerMons_Sofia[] = { - 270, - 272, - 274, - 276, - 279, - 282, - 285, - 290, - 293, - 313, - 314, - 321, - 334, - 340, - 348, - 356, - 359, - 360, - -1 + FRONTIER_MONS_AROMA_LADY_2 }; const u16 gBattleFrontierTrainerMons_Braden[] = { - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - -1 + FRONTIER_MONS_COOLTRAINER_1A }; const u16 gBattleFrontierTrainerMons_Kayden[] = { - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - -1 + FRONTIER_MONS_COOLTRAINER_1B }; const u16 gBattleFrontierTrainerMons_Cooper[] = { - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - -1 + FRONTIER_MONS_COOLTRAINER_1C }; const u16 gBattleFrontierTrainerMons_Julia[] = { - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - -1 + FRONTIER_MONS_COOLTRAINER_1A }; const u16 gBattleFrontierTrainerMons_Amara[] = { - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - -1 + FRONTIER_MONS_COOLTRAINER_1B }; const u16 gBattleFrontierTrainerMons_Lynn[] = { - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - -1 + FRONTIER_MONS_COOLTRAINER_1C }; const u16 gBattleFrontierTrainerMons_Jovan[] = { - 238, - 331, - 343, - 368, - 369, - 375, - 376, - 379, - 382, - 383, - 389, - 394, - 395, - 397, - 398, - 400, - 406, - 408, - 411, - 416, - 417, - 423, - 424, - 425, - 432, - 436, - 438, - 441, - 445, - 453, - 460, - 462, - 467, - -1 + FRONTIER_MONS_PKMN_RANGER_1 }; const u16 gBattleFrontierTrainerMons_Dominic[] = { - 238, - 331, - 343, - 368, - 369, - 375, - 376, - 379, - 382, - 383, - 389, - 394, - 395, - 397, - 398, - 400, - 406, - 408, - 411, - 416, - 417, - 423, - 424, - 425, - 432, - 436, - 438, - 441, - 445, - 453, - 460, - 462, - 467, - -1 + FRONTIER_MONS_PKMN_RANGER_1 }; const u16 gBattleFrontierTrainerMons_Nikolas[] = { - 238, - 331, - 343, - 368, - 369, - 375, - 376, - 379, - 382, - 383, - 389, - 394, - 395, - 397, - 398, - 400, - 406, - 408, - 411, - 416, - 417, - 423, - 424, - 425, - 432, - 436, - 438, - 441, - 445, - 453, - 460, - 462, - 467, - -1 + FRONTIER_MONS_PKMN_RANGER_1 }; const u16 gBattleFrontierTrainerMons_Valeria[] = { - 238, - 331, - 343, - 368, - 369, - 375, - 376, - 379, - 382, - 383, - 389, - 394, - 395, - 397, - 398, - 400, - 406, - 408, - 411, - 416, - 417, - 423, - 424, - 425, - 432, - 436, - 438, - 441, - 445, - 453, - 460, - 462, - 467, - -1 + FRONTIER_MONS_PKMN_RANGER_1 }; const u16 gBattleFrontierTrainerMons_Delaney[] = { - 238, - 331, - 343, - 368, - 369, - 375, - 376, - 379, - 382, - 383, - 389, - 394, - 395, - 397, - 398, - 400, - 406, - 408, - 411, - 416, - 417, - 423, - 424, - 425, - 432, - 436, - 438, - 441, - 445, - 453, - 460, - 462, - 467, - -1 + FRONTIER_MONS_PKMN_RANGER_1 }; const u16 gBattleFrontierTrainerMons_Meghan[] = { - 238, - 331, - 343, - 368, - 369, - 375, - 376, - 379, - 382, - 383, - 389, - 394, - 395, - 397, - 398, - 400, - 406, - 408, - 411, - 416, - 417, - 423, - 424, - 425, - 432, - 436, - 438, - 441, - 445, - 453, - 460, - 462, - 467, - -1 + FRONTIER_MONS_PKMN_RANGER_1 }; const u16 gBattleFrontierTrainerMons_Roberto[] = { - 386, - 403, - 412, - 413, - 414, - 433, - 435, - 440, - 450, - 453, - 454, - 456, - 459, - 461, - 463, - 464, - 465, - -1 + FRONTIER_MONS_DRAGON_TAMER_1 }; const u16 gBattleFrontierTrainerMons_Damian[] = { - 386, - 403, - 412, - 413, - 414, - 433, - 435, - 440, - 450, - 453, - 454, - 456, - 459, - 461, - 463, - 464, - 465, - -1 + FRONTIER_MONS_DRAGON_TAMER_1 }; const u16 gBattleFrontierTrainerMons_Brody[] = { - 386, - 403, - 412, - 413, - 414, - 433, - 435, - 440, - 450, - 453, - 454, - 456, - 459, - 461, - 463, - 464, - 465, - -1 + FRONTIER_MONS_DRAGON_TAMER_1 }; const u16 gBattleFrontierTrainerMons_Graham[] = { - 386, - 403, - 412, - 413, - 414, - 433, - 435, - 440, - 450, - 453, - 454, - 456, - 459, - 461, - 463, - 464, - 465, - -1 + FRONTIER_MONS_DRAGON_TAMER_1 }; const u16 gBattleFrontierTrainerMons_Tylor[] = { - 374, - 381, - 382, - 385, - 388, - 389, - 391, - 392, - 394, - 409, - 411, - 412, - 419, - 430, - 432, - 436, - 440, - 456, - 460, - 462, - 463, - 467, - -1 + FRONTIER_MONS_POKEFAN_2 }; const u16 gBattleFrontierTrainerMons_Jaren[] = { - 374, - 381, - 382, - 385, - 388, - 389, - 391, - 392, - 394, - 409, - 411, - 412, - 419, - 430, - 432, - 436, - 440, - 456, - 460, - 462, - 463, - 467, - -1 + FRONTIER_MONS_POKEFAN_2 }; const u16 gBattleFrontierTrainerMons_Cordell[] = { - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - -1 + FRONTIER_MONS_PKMN_BREEDER_M_1 }; const u16 gBattleFrontierTrainerMons_Jazlyn[] = { - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - -1 + FRONTIER_MONS_PKMN_BREEDER_F_1 }; const u16 gBattleFrontierTrainerMons_Zachery[] = { - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500, - -1 + FRONTIER_MONS_YOUNGSTER_LASS_2 }; const u16 gBattleFrontierTrainerMons_Johan[] = { - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500, - -1 + FRONTIER_MONS_YOUNGSTER_LASS_2_NO_DUGTRIO }; const u16 gBattleFrontierTrainerMons_Shea[] = { - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500, - -1 + FRONTIER_MONS_YOUNGSTER_LASS_2 }; const u16 gBattleFrontierTrainerMons_Kaila[] = { - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500, - -1 + FRONTIER_MONS_YOUNGSTER_LASS_2 }; const u16 gBattleFrontierTrainerMons_Isiah[] = { - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520, - 521, - 522, - 523, - 524, - 525, - 526, - 527, - 528, - 529, - 530, - 531, - 532, - 533, - -1 + FRONTIER_MONS_SCHOOL_KID_2 }; const u16 gBattleFrontierTrainerMons_Garrett[] = { - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520, - 521, - 522, - 523, - 524, - 525, - 526, - 527, - 528, - 529, - 530, - 531, - 532, - 533, - -1 + FRONTIER_MONS_SCHOOL_KID_2 }; const u16 gBattleFrontierTrainerMons_Haylie[] = { - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520, - 521, - 522, - 523, - 524, - 525, - 526, - 527, - 528, - 529, - 530, - 531, - 532, - 533, - -1 + FRONTIER_MONS_SCHOOL_KID_2 }; const u16 gBattleFrontierTrainerMons_Megan[] = { - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520, - 521, - 522, - 523, - 524, - 525, - 526, - 527, - 528, - 529, - 530, - 531, - 532, - 533, - -1 + FRONTIER_MONS_SCHOOL_KID_2 }; const u16 gBattleFrontierTrainerMons_Issac[] = { - 534, - 535, - 536, - 537, - 538, - 539, - 540, - 541, - 542, - 543, - 544, - 545, - 546, - 547, - 548, - 549, - 550, - 551, - 552, - 553, - 554, - 555, - 556, - 557, - 558, - 559, - 560, - 561, - 562, - 563, - -1 + FRONTIER_MONS_RICH_BOY_LADY_2 }; const u16 gBattleFrontierTrainerMons_Quinton[] = { - 534, - 535, - 536, - 537, - 538, - 539, - 540, - 541, - 542, - 543, - 544, - 545, - 546, - 547, - 548, - 549, - 550, - 551, - 552, - 553, - 554, - 555, - 556, - 557, - 558, - 559, - 560, - 561, - 562, - 563, - -1 + FRONTIER_MONS_RICH_BOY_LADY_2 }; const u16 gBattleFrontierTrainerMons_Salma[] = { - 534, - 535, - 536, - 537, - 538, - 539, - 540, - 541, - 542, - 543, - 544, - 545, - 546, - 547, - 548, - 549, - 550, - 551, - 552, - 553, - 554, - 555, - 556, - 557, - 558, - 559, - 560, - 561, - 562, - 563, - -1 + FRONTIER_MONS_RICH_BOY_LADY_2 }; const u16 gBattleFrontierTrainerMons_Ansley[] = { - 534, - 535, - 536, - 537, - 538, - 539, - 540, - 541, - 542, - 543, - 544, - 545, - 546, - 547, - 548, - 549, - 550, - 551, - 552, - 553, - 554, - 555, - 556, - 557, - 558, - 559, - 560, - 561, - 562, - 563, - -1 + FRONTIER_MONS_RICH_BOY_LADY_2 }; const u16 gBattleFrontierTrainerMons_Holden[] = { - 343, - 368, - 369, - 383, - 417, - 423, - 424, - 432, - 480, - 481, - 490, - 491, - 494, - 496, - 512, - 513, - 519, - 520, - 528, - 534, - 537, - 541, - 549, - -1 + FRONTIER_MONS_BUG_CATCHER_2 }; const u16 gBattleFrontierTrainerMons_Luca[] = { - 343, - 368, - 369, - 383, - 417, - 423, - 424, - 432, - 480, - 481, - 490, - 491, - 494, - 496, - 512, - 513, - 519, - 520, - 528, - 534, - 537, - 541, - 549, - -1 + FRONTIER_MONS_BUG_CATCHER_2 }; const u16 gBattleFrontierTrainerMons_Jamison[] = { - 282, - 331, - 343, - 368, - 369, - 469, - 472, - 475, - 476, - 478, - 481, - 484, - 490, - 491, - 497, - 500, - 501, - 509, - 510, - 513, - 516, - 517, - 519, - 520, - 524, - 528, - 530, - 533, - 534, - 537, - 542, - 553, - -1 + FRONTIER_MONS_NINJA_BOY_2 }; const u16 gBattleFrontierTrainerMons_Gunnar[] = { - 282, - 331, - 343, - 368, - 369, - 469, - 472, - 475, - 476, - 478, - 481, - 484, - 490, - 491, - 497, - 500, - 501, - 509, - 510, - 513, - 516, - 517, - 519, - 520, - 524, - 528, - 530, - 533, - 534, - 537, - 542, - 553, - -1 + FRONTIER_MONS_NINJA_BOY_2 }; const u16 gBattleFrontierTrainerMons_Craig[] = { - 471, - 474, - 475, - 479, - 483, - 485, - 488, - 493, - 495, - 496, - 502, - 504, - 505, - 506, - 507, - 514, - 521, - 525, - 530, - 532, - 535, - 538, - 544, - 545, - 548, - 552, - 554, - 555, - 556, - 557, - 558, - 559, - 563, - -1 + FRONTIER_MONS_TUBER_2 }; const u16 gBattleFrontierTrainerMons_Pierce[] = { - 471, - 474, - 475, - 479, - 483, - 485, - 488, - 493, - 495, - 496, - 502, - 504, - 505, - 506, - 507, - 514, - 521, - 525, - 530, - 532, - 535, - 538, - 544, - 545, - 548, - 552, - 554, - 555, - 556, - 557, - 558, - 559, - 563, - -1 + FRONTIER_MONS_TUBER_2 }; const u16 gBattleFrontierTrainerMons_Regina[] = { - 471, - 474, - 475, - 479, - 483, - 485, - 488, - 493, - 495, - 496, - 502, - 504, - 505, - 506, - 507, - 514, - 521, - 525, - 530, - 532, - 535, - 538, - 544, - 545, - 548, - 552, - 554, - 555, - 556, - 557, - 558, - 559, - 563, - -1 + FRONTIER_MONS_TUBER_2 }; const u16 gBattleFrontierTrainerMons_Alison[] = { - 471, - 474, - 475, - 479, - 483, - 485, - 488, - 493, - 495, - 496, - 502, - 504, - 505, - 506, - 507, - 514, - 521, - 525, - 530, - 532, - 535, - 538, - 544, - 545, - 548, - 552, - 554, - 555, - 556, - 557, - 558, - 559, - 563, - -1 + FRONTIER_MONS_TUBER_2 }; const u16 gBattleFrontierTrainerMons_Hank[] = { - 277, - 278, - 282, - 303, - 331, - 343, - 368, - 369, - 383, - 417, - 423, - 424, - 432, - 481, - 513, - 519, - 520, - 528, - 575, - 609, - 615, - 616, - 624, - -1 + FRONTIER_MONS_BUG_MANIAC_3 }; const u16 gBattleFrontierTrainerMons_Earl[] = { - 277, - 278, - 282, - 303, - 331, - 343, - 368, - 369, - 383, - 417, - 423, - 424, - 432, - 481, - 513, - 519, - 520, - 528, - 575, - 609, - 615, - 616, - 624, - -1 + FRONTIER_MONS_BUG_MANIAC_3 }; const u16 gBattleFrontierTrainerMons_Ramiro[] = { - 316, - 333, - 347, - 350, - 354, - 358, - 361, - 362, - 363, - 364, - 573, - 576, - 621, - 626, - 631, - -1 + FRONTIER_MONS_FISHERMAN_2 }; const u16 gBattleFrontierTrainerMons_Hunter[] = { - 316, - 333, - 347, - 350, - 354, - 358, - 361, - 362, - 363, - 364, - 573, - 576, - 621, - 626, - 631, - -1 + FRONTIER_MONS_FISHERMAN_2 }; const u16 gBattleFrontierTrainerMons_Aiden[] = { - 564, - 575, - 576, - 578, - 579, - 580, - 594, - 595, - 605, - 606, - 608, - 609, - 615, - 619, - 620, - 624, - 625, - 627, - 632, - 642, - 650, - 658, - -1 + FRONTIER_MONS_RUIN_MANIAC_3 }; const u16 gBattleFrontierTrainerMons_Xavier[] = { - 564, - 575, - 576, - 578, - 579, - 580, - 594, - 595, - 605, - 606, - 608, - 609, - 615, - 619, - 620, - 624, - 625, - 627, - 632, - 642, - 650, - 658, - -1 + FRONTIER_MONS_RUIN_MANIAC_3 }; const u16 gBattleFrontierTrainerMons_Clinton[] = { - 564, - 565, - 566, - 567, - 568, - 569, - 570, - 571, - 572, - 573, - 574, - 575, - 576, - 577, - 578, - 579, - 580, - 581, - 582, - 583, - 584, - 585, - 586, - 587, - 588, - 589, - 590, - 591, - 592, - 593, - 594, - 595, - 596, - 597, - 598, - 599, - 600, - 601, - 602, - 603, - 604, - 605, - 606, - 607, - 608, - 609, - 610, - 611, - -1 + FRONTIER_MONS_COLLECTOR_2 }; const u16 gBattleFrontierTrainerMons_Jesse[] = { - 564, - 565, - 566, - 567, - 568, - 569, - 570, - 571, - 572, - 573, - 574, - 575, - 576, - 577, - 578, - 579, - 580, - 581, - 582, - 583, - 584, - 585, - 586, - 587, - 588, - 589, - 590, - 591, - 592, - 593, - 594, - 595, - 596, - 597, - 598, - 599, - 600, - 601, - 602, - 603, - 604, - 605, - 606, - 607, - 608, - 609, - 610, - 611, - -1 + FRONTIER_MONS_COLLECTOR_2 }; const u16 gBattleFrontierTrainerMons_Eduardo[] = { - 268, - 307, - 317, - 349, - 352, - 573, - 583, - 585, - 588, - 590, - 599, - 614, - 618, - 635, - 639, - -1 + FRONTIER_MONS_GUITARIST_2 }; const u16 gBattleFrontierTrainerMons_Hal[] = { - 268, - 307, - 317, - 349, - 352, - 573, - 583, - 585, - 588, - 590, - 599, - 614, - 618, - 635, - 639, - -1 + FRONTIER_MONS_GUITARIST_2 }; const u16 gBattleFrontierTrainerMons_Gage[] = { - 289, - 318, - 319, - 329, - 355, - 375, - 379, - 385, - 386, - 457, - 473, - 477, - 482, - 484, - 553, - 567, - 571, - 577, - 578, - 649, - -1 + FRONTIER_MONS_BIRD_KEEPER_2 }; const u16 gBattleFrontierTrainerMons_Arnold[] = { - 289, - 318, - 319, - 329, - 355, - 375, - 379, - 385, - 386, - 457, - 473, - 477, - 482, - 484, - 553, - 567, - 571, - 577, - 578, - 649, - -1 + FRONTIER_MONS_BIRD_KEEPER_2 }; const u16 gBattleFrontierTrainerMons_Jarrett[] = { - 565, - 573, - 576, - 580, - 582, - 584, - 592, - 601, - 602, - 610, - 621, - 623, - 626, - 631, - 634, - 640, - 641, - 644, - 648, - 650, - 651, - 653, - 655, - -1 + FRONTIER_MONS_SAILOR_2 }; const u16 gBattleFrontierTrainerMons_Garett[] = { - 565, - 573, - 576, - 580, - 582, - 584, - 592, - 601, - 602, - 610, - 621, - 623, - 626, - 631, - 634, - 640, - 641, - 644, - 648, - 650, - 651, - 653, - 655, - -1 + FRONTIER_MONS_SAILOR_2 }; const u16 gBattleFrontierTrainerMons_Emanuel[] = { - 564, - 565, - 574, - 579, - 582, - 594, - 595, - 605, - 606, - 608, - 609, - 616, - 619, - 620, - 623, - 624, - 625, - 627, - 642, - 643, - -1 + FRONTIER_MONS_HIKER_2 }; const u16 gBattleFrontierTrainerMons_Gustavo[] = { - 564, - 565, - 574, - 579, - 582, - 594, - 595, - 605, - 606, - 608, - 609, - 616, - 619, - 620, - 623, - 624, - 625, - 627, - 642, - 643, - -1 + FRONTIER_MONS_HIKER_2 }; const u16 gBattleFrontierTrainerMons_Kameron[] = { - 568, - 581, - 589, - 598, - 600, - 603, - 607, - 611, - 617, - 618, - 622, - 636, - 643, - 646, - 647, - 652, - 654, - 656, - 659, - -1 + FRONTIER_MONS_KINDLER_2 }; const u16 gBattleFrontierTrainerMons_Alfredo[] = { - 568, - 581, - 589, - 598, - 600, - 603, - 607, - 611, - 617, - 618, - 622, - 636, - 643, - 646, - 647, - 652, - 654, - 656, - 659, - -1 + FRONTIER_MONS_KINDLER_2 }; const u16 gBattleFrontierTrainerMons_Ruben[] = { - 612, - 613, - 614, - 615, - 616, - 617, - 618, - 619, - 620, - 621, - 622, - 623, - 624, - 625, - 626, - 627, - 628, - 629, - 630, - 631, - 632, - 633, - 634, - 635, - 636, - 637, - 638, - 639, - 640, - 641, - 642, - 643, - 644, - 645, - 646, - 647, - 648, - 649, - 650, - 651, - 652, - 653, - 654, - 655, - 656, - 657, - 658, - 659, - -1 + FRONTIER_MONS_GENTLEMAN_2 }; const u16 gBattleFrontierTrainerMons_Lamar[] = { - 612, - 613, - 614, - 615, - 616, - 617, - 618, - 619, - 620, - 621, - 622, - 623, - 624, - 625, - 626, - 627, - 628, - 629, - 630, - 631, - 632, - 633, - 634, - 635, - 636, - 637, - 638, - 639, - 640, - 641, - 642, - 643, - 644, - 645, - 646, - 647, - 648, - 649, - 650, - 651, - 652, - 653, - 654, - 655, - 656, - 657, - 658, - 659, - -1 + FRONTIER_MONS_GENTLEMAN_2 }; const u16 gBattleFrontierTrainerMons_Jaxon[] = { - 660, - 661, - 662, - 663, - 664, - 665, - 666, - 667, - 668, - 669, - 670, - 671, - 672, - 673, - 674, - 675, - 676, - 677, - 678, - 679, - 680, - 681, - 682, - 683, - 684, - 685, - 686, - 687, - 688, - 689, - 690, - 691, - 692, - -1 + FRONTIER_MONS_YOUNGSTER_LASS_3 }; const u16 gBattleFrontierTrainerMons_Logan[] = { - 660, - 661, - 662, - 663, - 664, - 665, - 666, - 667, - 668, - 669, - 670, - 671, - 672, - 673, - 674, - 675, - 676, - 677, - 678, - 679, - 680, - 681, - 682, - 683, - 684, - 685, - 686, - 687, - 688, - 689, - 690, - 691, - 692, - -1 + FRONTIER_MONS_YOUNGSTER_LASS_3 }; const u16 gBattleFrontierTrainerMons_Emilee[] = { - 660, - 661, - 662, - 663, - 664, - 665, - 666, - 667, - 668, - 669, - 670, - 671, - 672, - 673, - 674, - 675, - 676, - 677, - 678, - 679, - 680, - 681, - 682, - 683, - 684, - 685, - 686, - 687, - 688, - 689, - 690, - 691, - 692, - -1 + FRONTIER_MONS_YOUNGSTER_LASS_3 }; const u16 gBattleFrontierTrainerMons_Josie[] = { - 660, - 661, - 662, - 663, - 664, - 665, - 666, - 667, - 668, - 669, - 670, - 671, - 672, - 673, - 674, - 675, - 676, - 677, - 678, - 679, - 680, - 681, - 682, - 683, - 684, - 685, - 686, - 687, - 688, - 689, - 690, - 691, - 692, - -1 + FRONTIER_MONS_YOUNGSTER_LASS_3 }; const u16 gBattleFrontierTrainerMons_Armando[] = { - 693, - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - -1 + FRONTIER_MONS_CAMPER_PICNICKER_2 }; const u16 gBattleFrontierTrainerMons_Skyler[] = { - 693, - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - -1 + FRONTIER_MONS_CAMPER_PICNICKER_2 }; const u16 gBattleFrontierTrainerMons_Ruth[] = { - 693, - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - -1 + FRONTIER_MONS_CAMPER_PICNICKER_2 }; const u16 gBattleFrontierTrainerMons_Melody[] = { - 693, - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - -1 + FRONTIER_MONS_CAMPER_PICNICKER_2 }; const u16 gBattleFrontierTrainerMons_Pedro[] = { - 347, - 661, - 664, - 669, - 672, - 676, - 677, - 678, - 680, - 685, - 688, - 694, - 696, - 697, - 698, - 699, - 706, - 713, - 717, - 719, - 722, - 724, - 727, - 730, - 736, - 737, - 740, - 744, - 746, - 747, - 748, - 749, - 750, - 751, - 755, - -1 + FRONTIER_MONS_SWIMMER_M_2 }; const u16 gBattleFrontierTrainerMons_Erick[] = { - 347, - 661, - 664, - 669, - 672, - 676, - 677, - 678, - 680, - 685, - 688, - 694, - 696, - 697, - 698, - 699, - 706, - 713, - 717, - 719, - 722, - 724, - 727, - 730, - 736, - 737, - 740, - 744, - 746, - 747, - 748, - 749, - 750, - 751, - 755, - -1 + FRONTIER_MONS_SWIMMER_M_2 }; const u16 gBattleFrontierTrainerMons_Elaine[] = { - 664, - 665, - 669, - 672, - 676, - 677, - 680, - 685, - 687, - 688, - 694, - 696, - 697, - 698, - 699, - 706, - 713, - 717, - 722, - 724, - 727, - 730, - 736, - 737, - 740, - 744, - 746, - 747, - 748, - 749, - 750, - 751, - 755, - -1 + FRONTIER_MONS_SWIMMER_F_2 }; const u16 gBattleFrontierTrainerMons_Joyce[] = { - 664, - 665, - 669, - 672, - 676, - 677, - 680, - 685, - 687, - 688, - 694, - 696, - 697, - 698, - 699, - 706, - 713, - 717, - 722, - 724, - 727, - 730, - 736, - 737, - 740, - 744, - 746, - 747, - 748, - 749, - 750, - 751, - 755, - -1 + FRONTIER_MONS_SWIMMER_F_2 }; const u16 gBattleFrontierTrainerMons_Todd[] = { - 267, - 273, - 305, - 312, - 325, - 332, - 352, - 662, - 665, - 668, - 669, - 670, - 672, - 673, - 676, - 677, - 679, - 680, - 682, - 688, - 697, - 698, - 699, - 700, - 707, - 710, - 718, - 720, - 724, - 725, - 728, - 730, - 731, - 732, - 734, - 735, - 744, - 748, - 750, - 751, - -1 + FRONTIER_MONS_POKEFAN_3 }; const u16 gBattleFrontierTrainerMons_Gavin[] = { - 267, - 273, - 305, - 312, - 325, - 332, - 352, - 662, - 665, - 668, - 669, - 670, - 672, - 673, - 676, - 677, - 679, - 680, - 682, - 688, - 697, - 698, - 699, - 700, - 707, - 710, - 718, - 720, - 724, - 725, - 728, - 730, - 731, - 732, - 734, - 735, - 744, - 748, - 750, - 751, - -1 + FRONTIER_MONS_POKEFAN_3 }; const u16 gBattleFrontierTrainerMons_Malory[] = { - 267, - 273, - 305, - 312, - 325, - 332, - 352, - 662, - 665, - 668, - 669, - 670, - 672, - 673, - 676, - 677, - 679, - 680, - 682, - 688, - 697, - 698, - 699, - 700, - 707, - 710, - 718, - 720, - 724, - 725, - 728, - 730, - 731, - 732, - 734, - 735, - 744, - 748, - 750, - 751, - -1 + FRONTIER_MONS_POKEFAN_3 }; const u16 gBattleFrontierTrainerMons_Esther[] = { - 267, - 273, - 305, - 312, - 325, - 332, - 352, - 662, - 665, - 668, - 669, - 670, - 672, - 673, - 676, - 677, - 679, - 680, - 682, - 688, - 697, - 698, - 699, - 700, - 707, - 710, - 718, - 720, - 724, - 725, - 728, - 730, - 731, - 732, - 734, - 735, - 744, - 748, - 750, - 751, - -1 + FRONTIER_MONS_POKEFAN_3 }; const u16 gBattleFrontierTrainerMons_Oscar[] = { - 726, - 727, - 728, - 729, - 730, - 731, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - -1 + FRONTIER_MONS_PKMN_BREEDER_2 }; const u16 gBattleFrontierTrainerMons_Wilson[] = { - 726, - 727, - 728, - 729, - 730, - 731, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - -1 + FRONTIER_MONS_PKMN_BREEDER_2 }; const u16 gBattleFrontierTrainerMons_Clare[] = { - 726, - 727, - 728, - 729, - 730, - 731, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - -1 + FRONTIER_MONS_PKMN_BREEDER_2 }; const u16 gBattleFrontierTrainerMons_Tess[] = { - 726, - 727, - 728, - 729, - 730, - 731, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - -1 + FRONTIER_MONS_PKMN_BREEDER_2 }; const u16 gBattleFrontierTrainerMons_Leon[] = { - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 516, - 517, - 518, - 519, - 520, - 521, - 522, - 523, - 524, - 525, - 526, - 527, - 528, - 529, - 530, - 531, - 532, - 533, - 534, - 535, - 536, - 537, - 538, - 539, - 612, - 613, - 614, - 615, - 616, - 617, - 618, - 619, - 620, - 621, - 622, - 623, - 624, - 625, - 626, - 627, - 628, - 629, - 630, - 631, - 632, - 633, - 634, - 635, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - 726, - 727, - 728, - 729, - 730, - 731, - -1 + FRONTIER_MONS_COOLTRAINER_M_2A }; const u16 gBattleFrontierTrainerMons_Alonzo[] = { - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 540, - 541, - 542, - 543, - 544, - 545, - 546, - 547, - 548, - 549, - 550, - 551, - 552, - 553, - 554, - 555, - 556, - 557, - 558, - 559, - 560, - 561, - 562, - 563, - 636, - 637, - 638, - 639, - 640, - 641, - 642, - 643, - 644, - 645, - 646, - 647, - 648, - 649, - 650, - 651, - 652, - 653, - 654, - 655, - 656, - 657, - 658, - 659, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - -1 + FRONTIER_MONS_COOLTRAINER_M_2B }; const u16 gBattleFrontierTrainerMons_Vince[] = { - 421, - 425, - 431, - 437, - 439, - 456, - 460, - 465, - 466, - 517, - 521, - 527, - 533, - 535, - 552, - 556, - 561, - 562, - 613, - 617, - 623, - 629, - 631, - 648, - 652, - 657, - 658, - 709, - 713, - 719, - 725, - 727, - 744, - 748, - 753, - 754, - 766, - 777, - 788, - 799, - 800, - 801, - 802, - 803, - 804, - 805, - 806, - 807, - 808, - 809, - 810, - 811, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 820, - 821, - 822, - 823, - 824, - 825, - 826, - 827, - 828, - 829, - 830, - 831, - 832, - 833, - 834, - 835, - 846, - 847, - 848, - 849, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - -1 + FRONTIER_MONS_COOLTRAINER_2C(LATIOS) }; const u16 gBattleFrontierTrainerMons_Bryon[] = { - 756, - 757, - 758, - 759, - 760, - 761, - 762, - 763, - 764, - 766, - 767, - 768, - 769, - 770, - 771, - 772, - 773, - 774, - 775, - 777, - 778, - 779, - 780, - 781, - 782, - 783, - 784, - 785, - 786, - 788, - 789, - 790, - 791, - 792, - 793, - 794, - 795, - 796, - 797, - 799, - 836, - 837, - 838, - 839, - 840, - 841, - 846, - 847, - 848, - 849, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - -1 + FRONTIER_MONS_COOLTRAINER_2D(LATIOS) }; const u16 gBattleFrontierTrainerMons_Ava[] = { - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 564, - 565, - 566, - 567, - 568, - 569, - 570, - 571, - 572, - 573, - 574, - 575, - 576, - 577, - 578, - 579, - 580, - 581, - 582, - 583, - 584, - 585, - 586, - 587, - 660, - 661, - 662, - 663, - 664, - 665, - 666, - 667, - 668, - 669, - 670, - 671, - 672, - 673, - 674, - 675, - 676, - 677, - 678, - 679, - 680, - 681, - 682, - 683, - -1 + FRONTIER_MONS_COOLTRAINER_F_2A }; const u16 gBattleFrontierTrainerMons_Miriam[] = { - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500, - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 588, - 589, - 590, - 591, - 592, - 593, - 594, - 595, - 596, - 597, - 598, - 599, - 600, - 601, - 602, - 603, - 604, - 605, - 606, - 607, - 608, - 609, - 610, - 611, - 684, - 685, - 686, - 687, - 688, - 689, - 690, - 691, - 692, - 693, - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - -1 + FRONTIER_MONS_COOLTRAINER_F_2B }; const u16 gBattleFrontierTrainerMons_Carrie[] = { - 421, - 425, - 431, - 437, - 439, - 456, - 460, - 465, - 466, - 517, - 521, - 527, - 533, - 535, - 552, - 556, - 561, - 562, - 613, - 617, - 623, - 629, - 631, - 648, - 652, - 657, - 658, - 709, - 713, - 719, - 725, - 727, - 744, - 748, - 753, - 754, - 765, - 776, - 787, - 798, - 800, - 801, - 802, - 803, - 804, - 805, - 806, - 807, - 808, - 809, - 810, - 811, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 820, - 821, - 822, - 823, - 824, - 825, - 826, - 827, - 828, - 829, - 830, - 831, - 832, - 833, - 834, - 835, - 842, - 843, - 844, - 845, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - -1 + FRONTIER_MONS_COOLTRAINER_2C(LATIAS) }; const u16 gBattleFrontierTrainerMons_Gillian2[] = { - 756, - 757, - 758, - 759, - 760, - 761, - 762, - 763, - 764, - 765, - 767, - 768, - 769, - 770, - 771, - 772, - 773, - 774, - 775, - 776, - 778, - 779, - 780, - 781, - 782, - 783, - 784, - 785, - 786, - 787, - 789, - 790, - 791, - 792, - 793, - 794, - 795, - 796, - 797, - 798, - 836, - 837, - 838, - 839, - 840, - 841, - 842, - 843, - 844, - 845, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - -1 + FRONTIER_MONS_COOLTRAINER_2D(LATIAS) }; const u16 gBattleFrontierTrainerMons_Tyler[] = { - 660, - 661, - 662, - 663, - 664, - 665, - 666, - 667, - 668, - 669, - 670, - 671, - 672, - 673, - 674, - 675, - 676, - 677, - 678, - 679, - 680, - 681, - 682, - 683, - 684, - 685, - 686, - 687, - 688, - 689, - 690, - 691, - 692, - 693, - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - 726, - 727, - 728, - 729, - 730, - 731, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - -1 + FRONTIER_MONS_GENERAL_A }; const u16 gBattleFrontierTrainerMons_Chaz[] = { - 564, - 565, - 566, - 567, - 568, - 569, - 570, - 571, - 572, - 573, - 574, - 575, - 576, - 577, - 578, - 579, - 580, - 581, - 582, - 583, - 584, - 585, - 586, - 587, - 588, - 589, - 590, - 591, - 592, - 593, - 594, - 595, - 596, - 597, - 598, - 599, - 600, - 601, - 602, - 603, - 604, - 605, - 606, - 607, - 608, - 609, - 610, - 611, - 612, - 613, - 614, - 615, - 616, - 617, - 618, - 619, - 620, - 621, - 622, - 623, - 624, - 625, - 626, - 627, - 628, - 629, - 630, - 631, - 632, - 633, - 634, - 635, - 636, - 637, - 638, - 639, - 640, - 641, - 642, - 643, - 644, - 645, - 646, - 647, - 648, - 649, - 650, - 651, - 652, - 653, - 654, - 655, - 656, - 657, - 658, - 659, - -1 + FRONTIER_MONS_GENERAL_B }; const u16 gBattleFrontierTrainerMons_Nelson[] = { - 756, - 757, - 758, - 759, - 760, - 761, - 762, - 763, - 764, - 766, - 767, - 768, - 769, - 770, - 771, - 772, - 773, - 774, - 775, - 777, - 778, - 779, - 780, - 781, - 782, - 783, - 784, - 785, - 786, - 788, - 789, - 790, - 791, - 792, - 793, - 794, - 795, - 796, - 797, - 799, - 836, - 837, - 838, - 839, - 840, - 841, - 846, - 847, - 848, - 849, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - -1 + FRONTIER_MONS_COOLTRAINER_2D(LATIOS) }; const u16 gBattleFrontierTrainerMons_Shania[] = { - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500, - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520, - 521, - 522, - 523, - 524, - 525, - 526, - 527, - 528, - 529, - 530, - 531, - 532, - 533, - 534, - 535, - 536, - 537, - 538, - 539, - 540, - 541, - 542, - 543, - 544, - 545, - 546, - 547, - 548, - 549, - 550, - 551, - 552, - 553, - 554, - 555, - 556, - 557, - 558, - 559, - 560, - 561, - 562, - 563, - -1 + FRONTIER_MONS_GENERAL_C }; const u16 gBattleFrontierTrainerMons_Stella[] = { - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - -1 + FRONTIER_MONS_GENERAL_D }; const u16 gBattleFrontierTrainerMons_Dorine[] = { - 756, - 757, - 758, - 759, - 760, - 761, - 762, - 763, - 764, - 765, - 767, - 768, - 769, - 770, - 771, - 772, - 773, - 774, - 775, - 776, - 778, - 779, - 780, - 781, - 782, - 783, - 784, - 785, - 786, - 787, - 789, - 790, - 791, - 792, - 793, - 794, - 795, - 796, - 797, - 798, - 836, - 837, - 838, - 839, - 840, - 841, - 842, - 843, - 844, - 845, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - -1 + FRONTIER_MONS_COOLTRAINER_2D(LATIAS) }; const u16 gBattleFrontierTrainerMons_Maddox[] = { - 403, - 412, - 413, - 414, - 433, - 435, - 440, - 450, - 454, - 456, - 459, - 461, - 463, - 465, - 499, - 508, - 509, - 510, - 529, - 531, - 536, - 546, - 550, - 552, - 555, - 557, - 559, - 561, - 595, - 604, - 605, - 606, - 625, - 627, - 632, - 642, - 646, - 648, - 651, - 653, - 655, - 657, - 691, - 700, - 701, - 702, - 721, - 723, - 728, - 738, - 742, - 744, - 747, - 749, - 751, - 753, - 765, - 766, - 776, - 777, - 787, - 788, - 798, - 799, - 828, - 829, - 830, - 831, - 842, - 843, - 844, - 845, - 846, - 847, - 848, - 849, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - -1 + FRONTIER_MONS_DRAGON_TAMER_2 }; const u16 gBattleFrontierTrainerMons_Davin[] = { - 403, - 412, - 413, - 414, - 433, - 435, - 440, - 450, - 454, - 456, - 459, - 461, - 463, - 465, - 499, - 508, - 509, - 510, - 529, - 531, - 536, - 546, - 550, - 552, - 555, - 557, - 559, - 561, - 595, - 604, - 605, - 606, - 625, - 627, - 632, - 642, - 646, - 648, - 651, - 653, - 655, - 657, - 691, - 700, - 701, - 702, - 721, - 723, - 728, - 738, - 742, - 744, - 747, - 749, - 751, - 753, - 765, - 766, - 776, - 777, - 787, - 788, - 798, - 799, - 828, - 829, - 830, - 831, - 842, - 843, - 844, - 845, - 846, - 847, - 848, - 849, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - -1 + FRONTIER_MONS_DRAGON_TAMER_2 }; const u16 gBattleFrontierTrainerMons_Trevon[] = { - 403, - 412, - 413, - 414, - 433, - 435, - 440, - 450, - 454, - 456, - 459, - 461, - 463, - 465, - 499, - 508, - 509, - 510, - 529, - 531, - 536, - 546, - 550, - 552, - 555, - 557, - 559, - 561, - 595, - 604, - 605, - 606, - 625, - 627, - 632, - 642, - 646, - 648, - 651, - 653, - 655, - 657, - 691, - 700, - 701, - 702, - 721, - 723, - 728, - 738, - 742, - 744, - 747, - 749, - 751, - 753, - 765, - 766, - 776, - 777, - 787, - 788, - 798, - 799, - 828, - 829, - 830, - 831, - 842, - 843, - 844, - 845, - 846, - 847, - 848, - 849, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - -1 + FRONTIER_MONS_DRAGON_TAMER_2 }; const u16 gBattleFrontierTrainerMons_Mateo[] = { - 373, - 382, - 390, - 402, - 403, - 416, - 417, - 424, - 431, - 432, - 435, - 450, - 451, - 469, - 480, - 486, - 498, - 499, - 512, - 513, - 520, - 527, - 528, - 531, - 546, - 547, - 565, - 574, - 582, - 594, - 595, - 608, - 609, - 616, - 623, - 624, - 627, - 642, - 643, - 661, - 670, - 678, - 690, - 691, - 704, - 705, - 712, - 719, - 720, - 723, - 738, - 739, - 808, - 809, - 810, - 811, - -1 + FRONTIER_MONS_BLACK_BELT_2A }; const u16 gBattleFrontierTrainerMons_Bret[] = { - 373, - 382, - 390, - 415, - 419, - 424, - 426, - 430, - 431, - 444, - 451, - 454, - 455, - 464, - 469, - 480, - 486, - 511, - 515, - 520, - 522, - 526, - 527, - 540, - 547, - 550, - 551, - 560, - 565, - 574, - 582, - 607, - 611, - 616, - 618, - 622, - 623, - 636, - 643, - 646, - 647, - 656, - 661, - 670, - 678, - 703, - 707, - 712, - 714, - 718, - 719, - 732, - 739, - 742, - 743, - 752, - 808, - 809, - 810, - 811, - -1 + FRONTIER_MONS_BLACK_BELT_BATTLE_GIRL_2B }; const u16 gBattleFrontierTrainerMons_Raul[] = { - 373, - 382, - 383, - 386, - 390, - 423, - 424, - 431, - 433, - 450, - 451, - 466, - 469, - 480, - 481, - 482, - 486, - 519, - 520, - 527, - 529, - 546, - 547, - 562, - 565, - 574, - 575, - 578, - 582, - 615, - 616, - 623, - 625, - 642, - 643, - 658, - 661, - 670, - 671, - 674, - 678, - 711, - 712, - 719, - 721, - 738, - 739, - 754, - 808, - 809, - 810, - 811, - 832, - 833, - 834, - 835, - -1 + FRONTIER_MONS_BLACK_BELT_BATTLE_GIRL_2C }; const u16 gBattleFrontierTrainerMons_Kay[] = { - 373, - 382, - 387, - 390, - 402, - 403, - 413, - 414, - 424, - 427, - 431, - 433, - 451, - 469, - 470, - 480, - 486, - 498, - 499, - 509, - 510, - 520, - 523, - 527, - 529, - 547, - 565, - 574, - 579, - 582, - 594, - 595, - 605, - 606, - 616, - 619, - 623, - 625, - 643, - 661, - 670, - 675, - 678, - 690, - 691, - 701, - 702, - 712, - 715, - 719, - 721, - 739, - 808, - 809, - 810, - 811, - -1 + FRONTIER_MONS_BATTLE_GIRL_2A }; const u16 gBattleFrontierTrainerMons_Elena[] = { - 373, - 382, - 390, - 415, - 419, - 424, - 426, - 430, - 431, - 444, - 451, - 454, - 455, - 464, - 469, - 480, - 486, - 511, - 515, - 520, - 522, - 526, - 527, - 540, - 547, - 550, - 551, - 560, - 565, - 574, - 582, - 607, - 611, - 616, - 618, - 622, - 623, - 636, - 643, - 646, - 647, - 656, - 661, - 670, - 678, - 703, - 707, - 712, - 714, - 718, - 719, - 732, - 739, - 742, - 743, - 752, - 808, - 809, - 810, - 811, - -1 + FRONTIER_MONS_BLACK_BELT_BATTLE_GIRL_2B }; const u16 gBattleFrontierTrainerMons_Alana[] = { - 373, - 382, - 383, - 386, - 390, - 423, - 424, - 431, - 433, - 450, - 451, - 466, - 469, - 480, - 481, - 482, - 486, - 519, - 520, - 527, - 529, - 546, - 547, - 562, - 565, - 574, - 575, - 578, - 582, - 615, - 616, - 623, - 625, - 642, - 643, - 658, - 661, - 670, - 671, - 674, - 678, - 711, - 712, - 719, - 721, - 738, - 739, - 754, - 808, - 809, - 810, - 811, - 832, - 833, - 834, - 835, - -1 + FRONTIER_MONS_BLACK_BELT_BATTLE_GIRL_2C }; const u16 gBattleFrontierTrainerMons_Alexas[] = { - 382, - 387, - 403, - 423, - 424, - 425, - 431, - 433, - 435, - 450, - 459, - 461, - 465, - 466, - 470, - 480, - 499, - 519, - 520, - 521, - 527, - 529, - 531, - 546, - 555, - 557, - 561, - 562, - 574, - 579, - 595, - 615, - 616, - 617, - 623, - 625, - 627, - 642, - 651, - 653, - 657, - 658, - 670, - 675, - 691, - 711, - 712, - 713, - 719, - 721, - 723, - 738, - 747, - 749, - 753, - 754, - 762, - 763, - 764, - 773, - 774, - 775, - 784, - 785, - 786, - 795, - 796, - 797, - 804, - 805, - 806, - 807, - 808, - 809, - 810, - 811, - 828, - 829, - 830, - 831, - 832, - 833, - 834, - 835, - 836, - 837, - 838, - 839, - 840, - 841, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - -1 + FRONTIER_MONS_EXPERT_2A(TYRANITAR) }; const u16 gBattleFrontierTrainerMons_Weston[] = { - 374, - 377, - 404, - 421, - 422, - 426, - 437, - 439, - 446, - 451, - 453, - 457, - 458, - 472, - 475, - 500, - 517, - 518, - 522, - 533, - 535, - 542, - 547, - 549, - 553, - 554, - 566, - 569, - 596, - 613, - 614, - 618, - 629, - 631, - 638, - 643, - 645, - 649, - 650, - 662, - 665, - 692, - 709, - 710, - 714, - 725, - 727, - 734, - 739, - 741, - 745, - 746, - 762, - 763, - 764, - 766, - 773, - 774, - 775, - 777, - 784, - 785, - 786, - 788, - 795, - 796, - 797, - 799, - 800, - 801, - 802, - 803, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 836, - 837, - 838, - 839, - 840, - 841, - 846, - 847, - 848, - 849, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - -1 + FRONTIER_MONS_EXPERT_2B(LATIOS) }; const u16 gBattleFrontierTrainerMons_Jasper[] = { - 378, - 388, - 400, - 409, - 410, - 411, - 416, - 429, - 432, - 438, - 447, - 452, - 456, - 460, - 462, - 463, - 471, - 476, - 496, - 505, - 506, - 507, - 512, - 525, - 528, - 534, - 543, - 548, - 552, - 556, - 558, - 559, - 570, - 580, - 592, - 601, - 602, - 603, - 608, - 621, - 624, - 630, - 639, - 644, - 648, - 652, - 654, - 655, - 666, - 676, - 688, - 697, - 698, - 699, - 704, - 717, - 720, - 726, - 735, - 740, - 744, - 748, - 750, - 751, - 762, - 763, - 764, - 773, - 774, - 775, - 784, - 785, - 786, - 795, - 796, - 797, - 820, - 821, - 822, - 823, - 824, - 825, - 826, - 827, - 836, - 837, - 838, - 839, - 840, - 841, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - -1 + FRONTIER_MONS_EXPERT_2C(TYRANITAR) }; const u16 gBattleFrontierTrainerMons_Nadia[] = { - 382, - 387, - 403, - 423, - 424, - 425, - 431, - 433, - 435, - 450, - 459, - 461, - 465, - 466, - 470, - 480, - 499, - 519, - 520, - 521, - 527, - 529, - 531, - 546, - 555, - 557, - 561, - 562, - 574, - 579, - 595, - 615, - 616, - 617, - 623, - 625, - 627, - 642, - 651, - 653, - 657, - 658, - 670, - 675, - 691, - 711, - 712, - 713, - 719, - 721, - 723, - 738, - 747, - 749, - 753, - 754, - 762, - 763, - 764, - 773, - 774, - 775, - 784, - 785, - 786, - 795, - 796, - 797, - 804, - 805, - 806, - 807, - 808, - 809, - 810, - 811, - 828, - 829, - 830, - 831, - 832, - 833, - 834, - 835, - 836, - 837, - 838, - 839, - 840, - 841, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - -1 + FRONTIER_MONS_EXPERT_2A(DRAGONITE) }; const u16 gBattleFrontierTrainerMons_Miranda[] = { - 374, - 377, - 404, - 421, - 422, - 426, - 437, - 439, - 446, - 451, - 453, - 457, - 458, - 472, - 475, - 500, - 517, - 518, - 522, - 533, - 535, - 542, - 547, - 549, - 553, - 554, - 566, - 569, - 596, - 613, - 614, - 618, - 629, - 631, - 638, - 643, - 645, - 649, - 650, - 662, - 665, - 692, - 709, - 710, - 714, - 725, - 727, - 734, - 739, - 741, - 745, - 746, - 762, - 763, - 764, - 765, - 773, - 774, - 775, - 776, - 784, - 785, - 786, - 787, - 795, - 796, - 797, - 798, - 800, - 801, - 802, - 803, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 836, - 837, - 838, - 839, - 840, - 841, - 842, - 843, - 844, - 845, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - -1 + FRONTIER_MONS_EXPERT_2B(LATIAS) }; const u16 gBattleFrontierTrainerMons_Emma[] = { - 378, - 388, - 400, - 409, - 410, - 411, - 416, - 429, - 432, - 438, - 447, - 452, - 456, - 460, - 462, - 463, - 471, - 476, - 496, - 505, - 506, - 507, - 512, - 525, - 528, - 534, - 543, - 548, - 552, - 556, - 558, - 559, - 570, - 580, - 592, - 601, - 602, - 603, - 608, - 621, - 624, - 630, - 639, - 644, - 648, - 652, - 654, - 655, - 666, - 676, - 688, - 697, - 698, - 699, - 704, - 717, - 720, - 726, - 735, - 740, - 744, - 748, - 750, - 751, - 762, - 763, - 764, - 773, - 774, - 775, - 784, - 785, - 786, - 795, - 796, - 797, - 820, - 821, - 822, - 823, - 824, - 825, - 826, - 827, - 836, - 837, - 838, - 839, - 840, - 841, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - -1 + FRONTIER_MONS_EXPERT_2C(DRAGONITE) }; const u16 gBattleFrontierTrainerMons_Rolando[] = { - 185, - 290, - 377, - 380, - 385, - 401, - 404, - 409, - 410, - 428, - 437, - 438, - 439, - 446, - 466, - 475, - 478, - 484, - 497, - 500, - 505, - 506, - 524, - 533, - 534, - 535, - 542, - 562, - 569, - 572, - 577, - 593, - 596, - 601, - 602, - 620, - 629, - 630, - 631, - 638, - 658, - 665, - 668, - 673, - 689, - 692, - 697, - 698, - 716, - 725, - 726, - 727, - 734, - 754, - 756, - 757, - 758, - 766, - 767, - 768, - 769, - 777, - 778, - 779, - 780, - 788, - 789, - 790, - 791, - 799, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 832, - 833, - 834, - 835, - 846, - 847, - 848, - 849, - 870, - 871, - 872, - 873, - 874, - 875, - -1 + FRONTIER_MONS_PSYCHIC_2A(LATIOS) }; const u16 gBattleFrontierTrainerMons_Stanly[] = { - 185, - 290, - 377, - 380, - 385, - 401, - 404, - 409, - 410, - 428, - 437, - 438, - 439, - 446, - 466, - 475, - 478, - 484, - 497, - 500, - 505, - 506, - 524, - 533, - 534, - 535, - 542, - 562, - 569, - 572, - 577, - 593, - 596, - 601, - 602, - 620, - 629, - 630, - 631, - 638, - 658, - 665, - 668, - 673, - 689, - 692, - 697, - 698, - 716, - 725, - 726, - 727, - 734, - 754, - 759, - 760, - 761, - 766, - 770, - 771, - 772, - 777, - 781, - 782, - 783, - 788, - 792, - 793, - 794, - 799, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 832, - 833, - 834, - 835, - 846, - 847, - 848, - 849, - 876, - 877, - 878, - 879, - 880, - 881, - -1 + FRONTIER_MONS_PSYCHIC_2B(LATIOS) }; const u16 gBattleFrontierTrainerMons_Dario[] = { - 185, - 290, - 377, - 380, - 385, - 401, - 404, - 409, - 410, - 428, - 437, - 438, - 439, - 446, - 466, - 475, - 478, - 484, - 497, - 500, - 505, - 506, - 524, - 533, - 534, - 535, - 542, - 562, - 569, - 572, - 577, - 593, - 596, - 601, - 602, - 620, - 629, - 630, - 631, - 638, - 658, - 665, - 668, - 673, - 689, - 692, - 697, - 698, - 716, - 725, - 726, - 727, - 734, - 754, - 762, - 763, - 764, - 766, - 773, - 774, - 775, - 777, - 784, - 785, - 786, - 788, - 795, - 796, - 797, - 799, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 832, - 833, - 834, - 835, - 836, - 837, - 838, - 839, - 840, - 841, - 846, - 847, - 848, - 849, - -1 + FRONTIER_MONS_PSYCHIC_2C(LATIOS) }; const u16 gBattleFrontierTrainerMons_Karlee[] = { - 185, - 290, - 377, - 380, - 385, - 401, - 404, - 409, - 410, - 428, - 437, - 438, - 439, - 446, - 466, - 475, - 478, - 484, - 497, - 500, - 505, - 506, - 524, - 533, - 534, - 535, - 542, - 562, - 569, - 572, - 577, - 593, - 596, - 601, - 602, - 620, - 629, - 630, - 631, - 638, - 658, - 665, - 668, - 673, - 689, - 692, - 697, - 698, - 716, - 725, - 726, - 727, - 734, - 754, - 756, - 757, - 758, - 765, - 767, - 768, - 769, - 776, - 778, - 779, - 780, - 787, - 789, - 790, - 791, - 798, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 832, - 833, - 834, - 835, - 842, - 843, - 844, - 845, - 870, - 871, - 872, - 873, - 874, - 875, - -1 + FRONTIER_MONS_PSYCHIC_2A(LATIAS) }; const u16 gBattleFrontierTrainerMons_Jaylin[] = { - 185, - 290, - 377, - 380, - 385, - 401, - 404, - 409, - 410, - 428, - 437, - 438, - 439, - 446, - 466, - 475, - 478, - 484, - 497, - 500, - 505, - 506, - 524, - 533, - 534, - 535, - 542, - 562, - 569, - 572, - 577, - 593, - 596, - 601, - 602, - 620, - 629, - 630, - 631, - 638, - 658, - 665, - 668, - 673, - 689, - 692, - 697, - 698, - 716, - 725, - 726, - 727, - 734, - 754, - 759, - 760, - 761, - 765, - 770, - 771, - 772, - 776, - 781, - 782, - 783, - 787, - 792, - 793, - 794, - 798, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 832, - 833, - 834, - 835, - 842, - 843, - 844, - 845, - 876, - 877, - 878, - 879, - 880, - 881, - -1 + FRONTIER_MONS_PSYCHIC_2B(LATIAS) }; const u16 gBattleFrontierTrainerMons_Ingrid[] = { - 185, - 290, - 377, - 380, - 385, - 401, - 404, - 409, - 410, - 428, - 437, - 438, - 439, - 446, - 466, - 475, - 478, - 484, - 497, - 500, - 505, - 506, - 524, - 533, - 534, - 535, - 542, - 562, - 569, - 572, - 577, - 593, - 596, - 601, - 602, - 620, - 629, - 630, - 631, - 638, - 658, - 665, - 668, - 673, - 689, - 692, - 697, - 698, - 716, - 725, - 726, - 727, - 734, - 754, - 762, - 763, - 764, - 765, - 773, - 774, - 775, - 776, - 784, - 785, - 786, - 787, - 795, - 796, - 797, - 798, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 832, - 833, - 834, - 835, - 836, - 837, - 838, - 839, - 840, - 841, - 842, - 843, - 844, - 845, - -1 + FRONTIER_MONS_PSYCHIC_2C(LATIAS) }; const u16 gBattleFrontierTrainerMons_Delilah[] = { - 347, - 352, - 374, - 378, - 398, - 421, - 426, - 447, - 472, - 476, - 494, - 517, - 522, - 543, - 566, - 570, - 590, - 613, - 618, - 639, - 662, - 666, - 686, - 709, - 714, - 735, - 800, - 801, - 802, - 803, - -1 + FRONTIER_MONS_HEX_MANIAC_2A }; const u16 gBattleFrontierTrainerMons_Carly[] = { - 344, - 374, - 378, - 394, - 395, - 405, - 413, - 414, - 420, - 421, - 434, - 441, - 457, - 472, - 476, - 490, - 491, - 501, - 509, - 510, - 516, - 517, - 530, - 537, - 553, - 566, - 570, - 586, - 587, - 597, - 605, - 606, - 612, - 613, - 626, - 633, - 649, - 662, - 666, - 682, - 683, - 693, - 701, - 702, - 708, - 709, - 722, - 729, - 745, - 800, - 801, - 802, - 803, - -1 + FRONTIER_MONS_HEX_MANIAC_2B }; const u16 gBattleFrontierTrainerMons_Lexie[] = { - 344, - 347, - 352, - 394, - 395, - 398, - 405, - 413, - 414, - 420, - 421, - 426, - 434, - 441, - 447, - 457, - 490, - 491, - 494, - 501, - 509, - 510, - 516, - 517, - 522, - 530, - 537, - 543, - 553, - 586, - 587, - 590, - 597, - 605, - 606, - 612, - 613, - 618, - 626, - 633, - 639, - 649, - 682, - 683, - 686, - 693, - 701, - 702, - 708, - 709, - 714, - 722, - 729, - 735, - 745, - 800, - 801, - 802, - 803, - -1 + FRONTIER_MONS_HEX_MANIAC_2C }; const u16 gBattleFrontierTrainerMons_Miller[] = { - 345, - 376, - 386, - 387, - 397, - 399, - 402, - 403, - 406, - 408, - 411, - 413, - 414, - 425, - 427, - 429, - 433, - 435, - 440, - 441, - 445, - 448, - 449, - 450, - 452, - 454, - 456, - 458, - 459, - 460, - 462, - 465, - 466, - 467, - 470, - 474, - 482, - 493, - 495, - 498, - 499, - 502, - 504, - 507, - 509, - 510, - 521, - 523, - 525, - 529, - 531, - 536, - 537, - 541, - 544, - 545, - 546, - 548, - 550, - 552, - 554, - 555, - 556, - 558, - 561, - 562, - 563, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - -1 + FRONTIER_MONS_POKEMANIAC_2A }; const u16 gBattleFrontierTrainerMons_Marv[] = { - 345, - 568, - 578, - 579, - 589, - 591, - 594, - 595, - 598, - 600, - 603, - 605, - 606, - 617, - 619, - 621, - 625, - 627, - 632, - 633, - 637, - 640, - 641, - 642, - 644, - 646, - 648, - 650, - 651, - 652, - 654, - 657, - 658, - 659, - 664, - 674, - 675, - 685, - 687, - 690, - 691, - 694, - 696, - 699, - 701, - 702, - 713, - 715, - 717, - 721, - 723, - 728, - 729, - 733, - 736, - 737, - 738, - 740, - 742, - 744, - 746, - 747, - 748, - 750, - 753, - 754, - 755, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - -1 + FRONTIER_MONS_POKEMANIAC_2B }; const u16 gBattleFrontierTrainerMons_Layton[] = { - 345, - 425, - 433, - 435, - 445, - 450, - 454, - 456, - 458, - 459, - 460, - 465, - 466, - 521, - 529, - 531, - 541, - 546, - 550, - 552, - 554, - 555, - 556, - 561, - 562, - 617, - 625, - 627, - 637, - 642, - 646, - 648, - 650, - 651, - 652, - 657, - 658, - 713, - 721, - 723, - 733, - 738, - 742, - 744, - 746, - 747, - 748, - 753, - 754, - 804, - 805, - 806, - 807, - 820, - 821, - 822, - 823, - 824, - 825, - 826, - 827, - 828, - 829, - 830, - 831, - 832, - 833, - 834, - 835, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - -1 + FRONTIER_MONS_POKEMANIAC_2C }; const u16 gBattleFrontierTrainerMons_Brooks[] = { - 660, - 661, - 662, - 663, - 664, - 665, - 666, - 667, - 668, - 669, - 670, - 671, - 672, - 673, - 674, - 675, - 676, - 677, - 678, - 679, - 680, - 681, - 682, - 683, - 684, - 685, - 686, - 687, - 688, - 689, - 690, - 691, - 692, - 693, - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - 726, - 727, - 728, - 729, - 730, - 731, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - -1 + FRONTIER_MONS_GENERAL_A }; const u16 gBattleFrontierTrainerMons_Gregory[] = { - 421, - 425, - 431, - 437, - 439, - 456, - 460, - 465, - 466, - 517, - 521, - 527, - 533, - 535, - 552, - 556, - 561, - 562, - 613, - 617, - 623, - 629, - 631, - 648, - 652, - 657, - 658, - 709, - 713, - 719, - 725, - 727, - 744, - 748, - 753, - 754, - 765, - 766, - 776, - 777, - 787, - 788, - 798, - 799, - 800, - 801, - 802, - 803, - 804, - 805, - 806, - 807, - 808, - 809, - 810, - 811, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 820, - 821, - 822, - 823, - 824, - 825, - 826, - 827, - 828, - 829, - 830, - 831, - 832, - 833, - 834, - 835, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - -1 + FRONTIER_MONS_GENTLEMAN_3A }; const u16 gBattleFrontierTrainerMons_Reese[] = { - 756, - 757, - 758, - 759, - 760, - 761, - 762, - 763, - 764, - 765, - 766, - 767, - 768, - 769, - 770, - 771, - 772, - 773, - 774, - 775, - 776, - 777, - 778, - 779, - 780, - 781, - 782, - 783, - 784, - 785, - 786, - 787, - 788, - 789, - 790, - 791, - 792, - 793, - 794, - 795, - 796, - 797, - 798, - 799, - 836, - 837, - 838, - 839, - 840, - 841, - 842, - 843, - 844, - 845, - 846, - 847, - 848, - 849, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - -1 + FRONTIER_MONS_GENTLEMAN_3B }; const u16 gBattleFrontierTrainerMons_Mason[] = { - 660, - 661, - 662, - 663, - 664, - 665, - 666, - 667, - 668, - 669, - 670, - 671, - 672, - 673, - 674, - 675, - 676, - 677, - 678, - 679, - 680, - 681, - 682, - 683, - 684, - 685, - 686, - 687, - 688, - 689, - 690, - 691, - 692, - 693, - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - 726, - 727, - 728, - 729, - 730, - 731, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - -1 + FRONTIER_MONS_GENERAL_A }; const u16 gBattleFrontierTrainerMons_Toby[] = { - 564, - 565, - 566, - 567, - 568, - 569, - 570, - 571, - 572, - 573, - 574, - 575, - 576, - 577, - 578, - 579, - 580, - 581, - 582, - 583, - 584, - 585, - 586, - 587, - 588, - 589, - 590, - 591, - 592, - 593, - 594, - 595, - 596, - 597, - 598, - 599, - 600, - 601, - 602, - 603, - 604, - 605, - 606, - 607, - 608, - 609, - 610, - 611, - 612, - 613, - 614, - 615, - 616, - 617, - 618, - 619, - 620, - 621, - 622, - 623, - 624, - 625, - 626, - 627, - 628, - 629, - 630, - 631, - 632, - 633, - 634, - 635, - 636, - 637, - 638, - 639, - 640, - 641, - 642, - 643, - 644, - 645, - 646, - 647, - 648, - 649, - 650, - 651, - 652, - 653, - 654, - 655, - 656, - 657, - 658, - 659, - -1 + FRONTIER_MONS_GENERAL_B }; const u16 gBattleFrontierTrainerMons_Dorothy[] = { - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500, - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520, - 521, - 522, - 523, - 524, - 525, - 526, - 527, - 528, - 529, - 530, - 531, - 532, - 533, - 534, - 535, - 536, - 537, - 538, - 539, - 540, - 541, - 542, - 543, - 544, - 545, - 546, - 547, - 548, - 549, - 550, - 551, - 552, - 553, - 554, - 555, - 556, - 557, - 558, - 559, - 560, - 561, - 562, - 563, - -1 + FRONTIER_MONS_GENERAL_C }; const u16 gBattleFrontierTrainerMons_Piper[] = { - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - -1 + FRONTIER_MONS_GENERAL_D }; const u16 gBattleFrontierTrainerMons_Finn[] = { - 317, - 371, - 373, - 377, - 390, - 392, - 399, - 431, - 452, - 456, - 469, - 475, - 486, - 488, - 495, - 527, - 548, - 552, - 565, - 569, - 573, - 576, - 580, - 582, - 584, - 591, - 592, - 601, - 602, - 610, - 621, - 623, - 626, - 631, - 634, - 640, - 641, - 644, - 648, - 650, - 651, - 653, - 655, - 661, - 665, - 669, - 672, - 676, - 678, - 680, - 687, - 688, - 697, - 698, - 706, - 717, - 719, - 722, - 727, - 730, - 736, - 737, - 740, - 744, - 746, - 747, - 749, - 751, - 808, - 809, - 810, - 811, - 816, - 817, - 818, - 819, - 820, - 821, - 822, - 823, - -1 + FRONTIER_MONS_SWIMMING_TRIATHLETE_M_3 }; const u16 gBattleFrontierTrainerMons_Samir[] = { - 317, - 371, - 373, - 377, - 390, - 392, - 399, - 431, - 452, - 456, - 469, - 475, - 486, - 488, - 495, - 527, - 548, - 552, - 565, - 569, - 573, - 576, - 580, - 582, - 584, - 591, - 592, - 601, - 602, - 610, - 621, - 623, - 626, - 631, - 634, - 640, - 641, - 644, - 648, - 650, - 651, - 653, - 655, - 661, - 665, - 669, - 672, - 676, - 678, - 680, - 687, - 688, - 697, - 698, - 706, - 717, - 719, - 722, - 727, - 730, - 736, - 737, - 740, - 744, - 746, - 747, - 749, - 751, - 808, - 809, - 810, - 811, - 816, - 817, - 818, - 819, - 820, - 821, - 822, - 823, - -1 + FRONTIER_MONS_SWIMMING_TRIATHLETE_M_3 }; const u16 gBattleFrontierTrainerMons_Fiona[] = { - 317, - 371, - 373, - 377, - 381, - 384, - 388, - 390, - 392, - 399, - 400, - 409, - 410, - 418, - 429, - 431, - 434, - 439, - 442, - 448, - 449, - 452, - 456, - 458, - 459, - 461, - 463, - 469, - 471, - 475, - 479, - 483, - 486, - 488, - 495, - 496, - 505, - 506, - 514, - 525, - 527, - 530, - 535, - 538, - 544, - 545, - 548, - 552, - 554, - 555, - 557, - 559, - 565, - 569, - 582, - 584, - 591, - 623, - 644, - 648, - 661, - 665, - 678, - 680, - 687, - 719, - 740, - 744, - 808, - 809, - 810, - 811, - 816, - 817, - 818, - 819, - 820, - 821, - 822, - 823, - -1 + FRONTIER_MONS_SWIMMING_TRIATHLETE_F_3 }; const u16 gBattleFrontierTrainerMons_Gloria[] = { - 317, - 371, - 373, - 377, - 381, - 384, - 388, - 390, - 392, - 399, - 400, - 409, - 410, - 418, - 429, - 431, - 434, - 439, - 442, - 448, - 449, - 452, - 456, - 458, - 459, - 461, - 463, - 469, - 471, - 475, - 479, - 483, - 486, - 488, - 495, - 496, - 505, - 506, - 514, - 525, - 527, - 530, - 535, - 538, - 544, - 545, - 548, - 552, - 554, - 555, - 557, - 559, - 565, - 569, - 582, - 584, - 591, - 623, - 644, - 648, - 661, - 665, - 678, - 680, - 687, - 719, - 740, - 744, - 808, - 809, - 810, - 811, - 816, - 817, - 818, - 819, - 820, - 821, - 822, - 823, - -1 + FRONTIER_MONS_SWIMMING_TRIATHLETE_F_3 }; const u16 gBattleFrontierTrainerMons_Nico[] = { - 660, - 661, - 662, - 663, - 664, - 665, - 666, - 667, - 668, - 669, - 670, - 671, - 672, - 673, - 674, - 675, - 676, - 677, - 678, - 679, - 680, - 681, - 682, - 683, - 684, - 685, - 686, - 687, - 688, - 689, - 690, - 691, - 692, - 693, - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - 726, - 727, - 728, - 729, - 730, - 731, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - -1 + FRONTIER_MONS_GENERAL_A }; const u16 gBattleFrontierTrainerMons_Jeremy[] = { - 564, - 565, - 566, - 567, - 568, - 569, - 570, - 571, - 572, - 573, - 574, - 575, - 576, - 577, - 578, - 579, - 580, - 581, - 582, - 583, - 584, - 585, - 586, - 587, - 588, - 589, - 590, - 591, - 592, - 593, - 594, - 595, - 596, - 597, - 598, - 599, - 600, - 601, - 602, - 603, - 604, - 605, - 606, - 607, - 608, - 609, - 610, - 611, - 612, - 613, - 614, - 615, - 616, - 617, - 618, - 619, - 620, - 621, - 622, - 623, - 624, - 625, - 626, - 627, - 628, - 629, - 630, - 631, - 632, - 633, - 634, - 635, - 636, - 637, - 638, - 639, - 640, - 641, - 642, - 643, - 644, - 645, - 646, - 647, - 648, - 649, - 650, - 651, - 652, - 653, - 654, - 655, - 656, - 657, - 658, - 659, - -1 + FRONTIER_MONS_GENERAL_B }; const u16 gBattleFrontierTrainerMons_Caitlin[] = { - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500, - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520, - 521, - 522, - 523, - 524, - 525, - 526, - 527, - 528, - 529, - 530, - 531, - 532, - 533, - 534, - 535, - 536, - 537, - 538, - 539, - 540, - 541, - 542, - 543, - 544, - 545, - 546, - 547, - 548, - 549, - 550, - 551, - 552, - 553, - 554, - 555, - 556, - 557, - 558, - 559, - 560, - 561, - 562, - 563, - -1 + FRONTIER_MONS_GENERAL_C }; const u16 gBattleFrontierTrainerMons_Reena[] = { - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - -1 + FRONTIER_MONS_GENERAL_D }; const u16 gBattleFrontierTrainerMons_Avery[] = { - 21, - 238, - 282, - 303, - 331, - 343, - 368, - 369, - 383, - 417, - 423, - 424, - 432, - 481, - 513, - 519, - 520, - 528, - 575, - 609, - 615, - 616, - 624, - 671, - 705, - 711, - 712, - 720, - -1 + FRONTIER_MONS_BUG_MANIAC_4 }; const u16 gBattleFrontierTrainerMons_Liam[] = { - 21, - 238, - 282, - 303, - 331, - 343, - 368, - 369, - 383, - 417, - 423, - 424, - 432, - 481, - 513, - 519, - 520, - 528, - 575, - 609, - 615, - 616, - 624, - 671, - 705, - 711, - 712, - 720, - -1 + FRONTIER_MONS_BUG_MANIAC_4 }; const u16 gBattleFrontierTrainerMons_Theo[] = { - 333, - 347, - 350, - 354, - 358, - 361, - 362, - 363, - 364, - 371, - 381, - 384, - 429, - 434, - 439, - 479, - 483, - 525, - 530, - 535, - 573, - 576, - 621, - 626, - 631, - 669, - 672, - 717, - 722, - 727, - 816, - 817, - 818, - 819, - -1 + FRONTIER_MONS_FISHERMAN_3 }; const u16 gBattleFrontierTrainerMons_Bailey[] = { - 333, - 347, - 350, - 354, - 358, - 361, - 362, - 363, - 364, - 371, - 381, - 384, - 429, - 434, - 439, - 479, - 483, - 525, - 530, - 535, - 573, - 576, - 621, - 626, - 631, - 669, - 672, - 717, - 722, - 727, - 816, - 817, - 818, - 819, - -1 + FRONTIER_MONS_FISHERMAN_3 }; const u16 gBattleFrontierTrainerMons_Hugo[] = { - 383, - 386, - 402, - 403, - 416, - 417, - 423, - 432, - 433, - 435, - 450, - 466, - 481, - 482, - 498, - 499, - 512, - 513, - 519, - 528, - 529, - 531, - 546, - 562, - 575, - 578, - 594, - 595, - 608, - 609, - 615, - 624, - 625, - 627, - 642, - 658, - 671, - 674, - 690, - 691, - 704, - 705, - 711, - 720, - 721, - 723, - 738, - 754, - 762, - 763, - 764, - 773, - 774, - 775, - 784, - 785, - 786, - 795, - 796, - 797, - 832, - 833, - 834, - 835, - 836, - 837, - 838, - 839, - 840, - 841, - -1 + FRONTIER_MONS_RUIN_MANIAC_4 }; const u16 gBattleFrontierTrainerMons_Bryce[] = { - 383, - 386, - 402, - 403, - 416, - 417, - 423, - 432, - 433, - 435, - 450, - 466, - 481, - 482, - 498, - 499, - 512, - 513, - 519, - 528, - 529, - 531, - 546, - 562, - 575, - 578, - 594, - 595, - 608, - 609, - 615, - 624, - 625, - 627, - 642, - 658, - 671, - 674, - 690, - 691, - 704, - 705, - 711, - 720, - 721, - 723, - 738, - 754, - 762, - 763, - 764, - 773, - 774, - 775, - 784, - 785, - 786, - 795, - 796, - 797, - 832, - 833, - 834, - 835, - 836, - 837, - 838, - 839, - 840, - 841, - -1 + FRONTIER_MONS_RUIN_MANIAC_4 }; const u16 gBattleFrontierTrainerMons_Gideon[] = { - 441, - 445, - 448, - 449, - 451, - 453, - 454, - 455, - 458, - 537, - 541, - 544, - 545, - 547, - 549, - 550, - 551, - 554, - 633, - 637, - 640, - 641, - 643, - 645, - 646, - 647, - 650, - 729, - 733, - 736, - 737, - 739, - 741, - 742, - 743, - 746, - -1 + FRONTIER_MONS_COLLECTOR_3 }; const u16 gBattleFrontierTrainerMons_Triston[] = { - 441, - 445, - 448, - 449, - 451, - 453, - 454, - 455, - 458, - 537, - 541, - 544, - 545, - 547, - 549, - 550, - 551, - 554, - 633, - 637, - 640, - 641, - 643, - 645, - 646, - 647, - 650, - 729, - 733, - 736, - 737, - 739, - 741, - 742, - 743, - 746, - -1 + FRONTIER_MONS_COLLECTOR_3 }; const u16 gBattleFrontierTrainerMons_Charles[] = { - 352, - 381, - 391, - 393, - 396, - 398, - 407, - 422, - 426, - 443, - 447, - 479, - 487, - 489, - 492, - 494, - 503, - 518, - 522, - 539, - 543, - 573, - 583, - 585, - 588, - 590, - 599, - 614, - 618, - 635, - 639, - 669, - 679, - 681, - 684, - 686, - 695, - 710, - 714, - 731, - 735, - 756, - 757, - 758, - 767, - 768, - 769, - 778, - 779, - 780, - 789, - 790, - 791, - 870, - 871, - 872, - 873, - 874, - 875, - -1 + FRONTIER_MONS_GUITARIST_3A }; const u16 gBattleFrontierTrainerMons_Raymond[] = { - 374, - 376, - 381, - 404, - 407, - 422, - 439, - 443, - 459, - 472, - 500, - 506, - 507, - 518, - 532, - 546, - 566, - 585, - 588, - 628, - 635, - 679, - 681, - 684, - 710, - 731, - 785, - 795, - 796, - 797, - 817, - 842, - 843, - 846, - 847, - -1 + FRONTIER_MONS_GUITARIST_3B }; const u16 gBattleFrontierTrainerMons_Dirk[] = { - 355, - 375, - 379, - 385, - 386, - 412, - 435, - 440, - 454, - 457, - 459, - 465, - 473, - 477, - 482, - 484, - 508, - 531, - 536, - 550, - 553, - 555, - 561, - 567, - 571, - 577, - 578, - 604, - 627, - 632, - 646, - 649, - 651, - 657, - 663, - 667, - 673, - 674, - 700, - 723, - 728, - 742, - 745, - 747, - 753, - 756, - 757, - 758, - 767, - 768, - 769, - 778, - 779, - 780, - 789, - 790, - 791, - 828, - 829, - 830, - 831, - -1 + FRONTIER_MONS_BIRD_KEEPER_3 }; const u16 gBattleFrontierTrainerMons_Harold[] = { - 355, - 375, - 379, - 385, - 386, - 412, - 435, - 440, - 454, - 457, - 459, - 465, - 473, - 477, - 482, - 484, - 508, - 531, - 536, - 550, - 553, - 555, - 561, - 567, - 571, - 577, - 578, - 604, - 627, - 632, - 646, - 649, - 651, - 657, - 663, - 667, - 673, - 674, - 700, - 723, - 728, - 742, - 745, - 747, - 753, - 756, - 757, - 758, - 767, - 768, - 769, - 778, - 779, - 780, - 789, - 790, - 791, - 828, - 829, - 830, - 831, - -1 + FRONTIER_MONS_BIRD_KEEPER_3 }; const u16 gBattleFrontierTrainerMons_Omar[] = { - 373, - 388, - 390, - 392, - 400, - 409, - 410, - 418, - 431, - 442, - 448, - 449, - 452, - 456, - 458, - 459, - 461, - 463, - 469, - 471, - 486, - 488, - 496, - 505, - 506, - 514, - 527, - 538, - 544, - 545, - 548, - 552, - 554, - 555, - 557, - 559, - 565, - 580, - 582, - 584, - 592, - 601, - 602, - 610, - 623, - 634, - 640, - 641, - 644, - 648, - 650, - 651, - 653, - 655, - 661, - 676, - 678, - 680, - 688, - 697, - 698, - 706, - 719, - 730, - 736, - 737, - 740, - 744, - 746, - 747, - 749, - 751, - 808, - 809, - 810, - 811, - 820, - 821, - 822, - 823, - -1 + FRONTIER_MONS_SAILOR_3 }; const u16 gBattleFrontierTrainerMons_Peter[] = { - 373, - 388, - 390, - 392, - 400, - 409, - 410, - 418, - 431, - 442, - 448, - 449, - 452, - 456, - 458, - 459, - 461, - 463, - 469, - 471, - 486, - 488, - 496, - 505, - 506, - 514, - 527, - 538, - 544, - 545, - 548, - 552, - 554, - 555, - 557, - 559, - 565, - 580, - 582, - 584, - 592, - 601, - 602, - 610, - 623, - 634, - 640, - 641, - 644, - 648, - 650, - 651, - 653, - 655, - 661, - 676, - 678, - 680, - 688, - 697, - 698, - 706, - 719, - 730, - 736, - 737, - 740, - 744, - 746, - 747, - 749, - 751, - 808, - 809, - 810, - 811, - 820, - 821, - 822, - 823, - -1 + FRONTIER_MONS_SAILOR_3 }; const u16 gBattleFrontierTrainerMons_Dev[] = { - 372, - 387, - 402, - 403, - 413, - 414, - 416, - 417, - 427, - 428, - 432, - 433, - 435, - 440, - 450, - 466, - 468, - 470, - 498, - 499, - 509, - 510, - 512, - 513, - 523, - 524, - 528, - 529, - 531, - 536, - 546, - 562, - 564, - 579, - 594, - 595, - 605, - 606, - 608, - 609, - 619, - 620, - 624, - 625, - 627, - 632, - 642, - 658, - 660, - 675, - 690, - 691, - 701, - 702, - 704, - 705, - 715, - 716, - 720, - 721, - 723, - 728, - 738, - 754, - 832, - 833, - 834, - 835, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - -1 + FRONTIER_MONS_HIKER_3 }; const u16 gBattleFrontierTrainerMons_Corey[] = { - 372, - 387, - 402, - 403, - 413, - 414, - 416, - 417, - 427, - 428, - 432, - 433, - 435, - 440, - 450, - 466, - 468, - 470, - 498, - 499, - 509, - 510, - 512, - 513, - 523, - 524, - 528, - 529, - 531, - 536, - 546, - 562, - 564, - 579, - 594, - 595, - 605, - 606, - 608, - 609, - 619, - 620, - 624, - 625, - 627, - 632, - 642, - 658, - 660, - 675, - 690, - 691, - 701, - 702, - 704, - 705, - 715, - 716, - 720, - 721, - 723, - 728, - 738, - 754, - 832, - 833, - 834, - 835, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - -1 + FRONTIER_MONS_HIKER_3 }; const u16 gBattleFrontierTrainerMons_Andre[] = { - 374, - 378, - 415, - 419, - 421, - 426, - 430, - 444, - 451, - 454, - 455, - 464, - 472, - 476, - 511, - 515, - 517, - 522, - 526, - 540, - 547, - 550, - 551, - 560, - 566, - 570, - 607, - 611, - 613, - 618, - 622, - 636, - 643, - 646, - 647, - 656, - 662, - 666, - 703, - 707, - 709, - 714, - 718, - 732, - 739, - 742, - 743, - 752, - 800, - 801, - 802, - 803, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - -1 + FRONTIER_MONS_KINDLER_3 }; const u16 gBattleFrontierTrainerMons_Ferris[] = { - 374, - 378, - 415, - 419, - 421, - 426, - 430, - 444, - 451, - 454, - 455, - 464, - 472, - 476, - 511, - 515, - 517, - 522, - 526, - 540, - 547, - 550, - 551, - 560, - 566, - 570, - 607, - 611, - 613, - 618, - 622, - 636, - 643, - 646, - 647, - 656, - 662, - 666, - 703, - 707, - 709, - 714, - 718, - 732, - 739, - 742, - 743, - 752, - 800, - 801, - 802, - 803, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - -1 + FRONTIER_MONS_KINDLER_3 }; const u16 gBattleFrontierTrainerMons_Alivia[] = { - 399, - 400, - 409, - 422, - 438, - 441, - 445, - 448, - 449, - 451, - 452, - 454, - 455, - 489, - 492, - 493, - 503, - 526, - 532, - 535, - 536, - 560, - 573, - 583, - 590, - 592, - 608, - 611, - 620, - 651, - 682, - 688, - 714, - 729, - 732, - -1 + FRONTIER_MONS_PARASOL_LADY_3 }; const u16 gBattleFrontierTrainerMons_Paige[] = { - 399, - 400, - 409, - 422, - 438, - 441, - 445, - 448, - 449, - 451, - 452, - 454, - 455, - 489, - 492, - 493, - 503, - 526, - 532, - 535, - 536, - 560, - 573, - 583, - 590, - 592, - 608, - 611, - 620, - 651, - 682, - 688, - 714, - 729, - 732, - -1 + FRONTIER_MONS_PARASOL_LADY_3 }; const u16 gBattleFrontierTrainerMons_Anya[] = { - 442, - 443, - 444, - 446, - 447, - 538, - 539, - 540, - 542, - 543, - 634, - 635, - 636, - 638, - 639, - 730, - 731, - 732, - 734, - 735, - -1 + FRONTIER_MONS_EEVEELUTIONS }; const u16 gBattleFrontierTrainerMons_Dawn[] = { - 377, - 381, - 410, - 421, - 422, - 443, - 456, - 460, - 461, - 471, - 472, - 473, - 484, - 491, - 502, - 503, - 507, - 508, - 515, - 520, - 540, - 549, - 569, - 574, - 583, - 586, - 601, - 622, - 624, - 639, - 644, - 655, - 734, - 804, - 810, - 815, - 823, - 831, - 843, - -1 + FRONTIER_MONS_BEAUTY_2 }; const u16 gBattleFrontierTrainerMons_Abby[] = { - 185, - 290, - 313, - 334, - 348, - 359, - 360, - 377, - 380, - 382, - 385, - 394, - 395, - 398, - 400, - 401, - 404, - 409, - 410, - 416, - 437, - 438, - 439, - 441, - 445, - 446, - 453, - 475, - 478, - 480, - 484, - 490, - 491, - 494, - 496, - 497, - 500, - 505, - 506, - 512, - 533, - 534, - 535, - 537, - 541, - 542, - 549, - 569, - 572, - 574, - 577, - 586, - 587, - 590, - 592, - 593, - 596, - 601, - 602, - 608, - 629, - 630, - 631, - 633, - 637, - 638, - 645, - 665, - 668, - 670, - 673, - 682, - 683, - 686, - 688, - 689, - 692, - 697, - 698, - 704, - 725, - 726, - 727, - 729, - 733, - 734, - 741, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - -1 + FRONTIER_MONS_AROMA_LADY_3 }; const u16 gBattleFrontierTrainerMons_Gretel[] = { - 185, - 290, - 313, - 334, - 348, - 359, - 360, - 377, - 380, - 382, - 385, - 394, - 395, - 398, - 400, - 401, - 404, - 409, - 410, - 416, - 437, - 438, - 439, - 441, - 445, - 446, - 453, - 475, - 478, - 480, - 484, - 490, - 491, - 494, - 496, - 497, - 500, - 505, - 506, - 512, - 533, - 534, - 535, - 537, - 541, - 542, - 549, - 569, - 572, - 574, - 577, - 586, - 587, - 590, - 592, - 593, - 596, - 601, - 602, - 608, - 629, - 630, - 631, - 633, - 637, - 638, - 645, - 665, - 668, - 670, - 673, - 682, - 683, - 686, - 688, - 689, - 692, - 697, - 698, - 704, - 725, - 726, - 727, - 729, - 733, - 734, - 741, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - -1 + FRONTIER_MONS_AROMA_LADY_3 }; diff --git a/src/data/battle_frontier/battle_frontier_trainers.h b/src/data/battle_frontier/battle_frontier_trainers.h index 7977852b2..bbd88d76f 100644 --- a/src/data/battle_frontier/battle_frontier_trainers.h +++ b/src/data/battle_frontier/battle_frontier_trainers.h @@ -1,2403 +1,2403 @@ -const struct BattleFrontierTrainer gBattleFrontierTrainers[] = +const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COUNT] = { - [0] = { + [FRONTIER_TRAINER_BRADY] = { .facilityClass = FACILITY_CLASS_YOUNGSTER, .trainerName = _("BRADY"), .speechBefore = {EC_WORD_I_AM, EC_WORD_NEVER, EC_WORD_GOING, EC_WORD_TO, EC_WORD_LOSE, EC_WORD_EXCL}, .speechWin = {EC_WORD_I_AM, EC_WORD_STRONG, EC_WORD_AREN_T, EC_WORD_I, EC_WORD_QUES, 0xFFFF}, .speechLose = {EC_WORD_WHAT, EC_WORD_QUES, 0xFFFF, EC_WORD_BUT, EC_WORD_HOW, EC_WORD_QUES}, - .monSets = gBattleFrontierTrainerMons_Brady + .monSet = gBattleFrontierTrainerMons_Brady }, - [1] = { + [FRONTIER_TRAINER_CONNER] = { .facilityClass = FACILITY_CLASS_YOUNGSTER, .trainerName = _("CONNER"), .speechBefore = {EC_WORD_LOSING, EC_WORD_DOESN_T, EC_WORD_BUG, EC_WORD_ME, 0xFFFF, 0xFFFF}, .speechWin = {EC_WORD_A, EC_WORD_WIN, EC_WORD_IS, EC_WORD_JUST, EC_WORD_AWESOME, 0xFFFF}, .speechLose = {EC_WORD_DARN, EC_WORD_ELLIPSIS, EC_WORD_LOSING, EC_WORD_DOES, EC_WORD_BUG, EC_WORD_ME}, - .monSets = gBattleFrontierTrainerMons_Conner + .monSet = gBattleFrontierTrainerMons_Conner }, - [2] = { + [FRONTIER_TRAINER_BRADLEY] = { .facilityClass = FACILITY_CLASS_YOUNGSTER, .trainerName = _("BRADLEY"), .speechBefore = {EC_WORD_HEY_THERE, EC_WORD_EXCL, EC_WORD_YOU_RE, EC_WORD_MY, EC_WORD_OPPONENT, EC_WORD_TODAY}, .speechWin = {EC_WORD_HAHAHA, EC_WORD_EXCL, 0xFFFF, EC_WORD_SEE_YA, EC_WORD_LATER, EC_WORD_EXCL}, .speechLose = {EC_WORD_TOMORROW, EC_WORD_IS, EC_WORD_WHEN, EC_WORD_WE, EC_WORD_REALLY, EC_WORD_BATTLE}, - .monSets = gBattleFrontierTrainerMons_Bradley + .monSet = gBattleFrontierTrainerMons_Bradley }, - [3] = { + [FRONTIER_TRAINER_CYBIL] = { .facilityClass = FACILITY_CLASS_LASS, .trainerName = _("CYBIL"), .speechBefore = {EC_WORD_YOU_RE, EC_WORD_REALLY, EC_WORD_NOT_VERY, EC_WORD_SCARY, EC_WORD_AT, EC_WORD_ALL}, .speechWin = {EC_WORD_IT_S, EC_WORD_SAD, EC_WORD_TO, EC_WORD_SEE, EC_WORD_YOU, EC_MOVE2(STRUGGLE)}, .speechLose = {EC_WORD_THIS, EC_WORD_CAN_T, EC_WORD_BE, EC_WORD_HAPPENING, EC_WORD_TO_ME, EC_WORD_EXCL}, - .monSets = gBattleFrontierTrainerMons_Cybil + .monSet = gBattleFrontierTrainerMons_Cybil }, - [4] = { + [FRONTIER_TRAINER_RODETTE] = { .facilityClass = FACILITY_CLASS_LASS, .trainerName = _("RODETTE"), .speechBefore = {EC_WORD_OH, EC_WORD_THIS, EC_WORD_IS, EC_WORD_SO, EC_WORD_EXCITING, EC_WORD_EXCL}, .speechWin = {EC_WORD_IT_S, EC_WORD_INCREDIBLE, EC_WORD_HOW, EC_WORD_STRONG, EC_WORD_I_AM, EC_WORD_EXCL}, .speechLose = {EC_WORD_OH_DEAR, EC_WORD_ELLIPSIS, EC_WORD_I_AM, EC_WORD_JUST, EC_WORD_NO, EC_WORD_GOOD}, - .monSets = gBattleFrontierTrainerMons_Rodette + .monSet = gBattleFrontierTrainerMons_Rodette }, - [5] = { + [FRONTIER_TRAINER_PEGGY] = { .facilityClass = FACILITY_CLASS_LASS, .trainerName = _("PEGGY"), .speechBefore = {EC_WORD_GET, EC_WORD_READY, EC_WORD_TO, EC_WORD_BE, EC_WORD_DESTROYED, EC_WORD_EXCL}, .speechWin = {EC_WORD_HAHAHA, EC_WORD_EXCL_EXCL, 0xFFFF, EC_WORD_I_AM, EC_WORD_LOLLING, EC_WORD_EXCL}, .speechLose = {EC_WORD_I_AM, EC_WORD_FEELING, EC_WORD_SAD, EC_WORD_THANKS, EC_WORD_TO, EC_WORD_YOU}, - .monSets = gBattleFrontierTrainerMons_Peggy + .monSet = gBattleFrontierTrainerMons_Peggy }, - [6] = { + [FRONTIER_TRAINER_KEITH] = { .facilityClass = FACILITY_CLASS_SCHOOL_KID_M, .trainerName = _("KEITH"), .speechBefore = {EC_WORD_I, EC_WORD_DON_T, EC_WORD_JUST, EC_WORD_STUDY, EC_WORD_YOU, EC_WORD_KNOW}, .speechWin = {EC_WORD_YOU, EC_WORD_DON_T, EC_WORD_STUDY, EC_WORD_ENOUGH, EC_WORD_ELLIPSIS, 0xFFFF}, .speechLose = {EC_WORD_I, EC_WORD_NEED, EC_WORD_TO, EC_WORD_STUDY, EC_WORD_MORE, EC_WORD_ELLIPSIS}, - .monSets = gBattleFrontierTrainerMons_Keith + .monSet = gBattleFrontierTrainerMons_Keith }, - [7] = { + [FRONTIER_TRAINER_GRAYSON] = { .facilityClass = FACILITY_CLASS_SCHOOL_KID_M, .trainerName = _("GRAYSON"), .speechBefore = {EC_WORD_A, EC_WORD_POKEMON, EC_WORD_BATTLE, EC_WORD_ISN_T, EC_WORD_CHILD_S_PLAY, EC_WORD_EXCL}, .speechWin = {EC_WORD_YOU_RE, EC_WORD_DONE, EC_WORD_AREN_T, EC_WORD_YOU, EC_WORD_QUES, 0xFFFF}, .speechLose = {EC_WORD_WE, EC_WORD_WERE, EC_WORD_LIKE, EC_WORD_TOYS, EC_WORD_TO, EC_WORD_YOU}, - .monSets = gBattleFrontierTrainerMons_Grayson + .monSet = gBattleFrontierTrainerMons_Grayson }, - [8] = { + [FRONTIER_TRAINER_GLENN] = { .facilityClass = FACILITY_CLASS_SCHOOL_KID_M, .trainerName = _("GLENN"), .speechBefore = {EC_WORD_I, EC_WORD_WOULD, EC_WORD_BE, EC_WORD_COOL, EC_WORD_IF_I_WIN, 0xFFFF}, .speechWin = {EC_WORD_COOL, EC_WORD_EXCL, 0xFFFF, EC_WORD_THAT_S, EC_WORD_WHAT, EC_WORD_I_AM}, .speechLose = {EC_WORD_I_AM, EC_WORD_NOT, EC_WORD_GOING, EC_WORD_TO, EC_WORD_BE, EC_WORD_COOL}, - .monSets = gBattleFrontierTrainerMons_Glenn + .monSet = gBattleFrontierTrainerMons_Glenn }, - [9] = { + [FRONTIER_TRAINER_LILIANA] = { .facilityClass = FACILITY_CLASS_SCHOOL_KID_F, .trainerName = _("LILIANA"), .speechBefore = {EC_WORD_I, EC_WORD_WON_T, EC_WORD_GIVE_UP, EC_WORD_UNTIL, EC_WORD_I, EC_WORD_WIN}, .speechWin = {EC_WORD_THERE, EC_WORD_IS, EC_WORD_NO, EC_WORD_SURRENDER, EC_WORD_IN, EC_WORD_ME}, .speechLose = {EC_WORD_THAT_S, EC_WORD_IT, EC_WORD_ELLIPSIS, EC_WORD_I, EC_WORD_GIVE_UP, EC_WORD_ELLIPSIS}, - .monSets = gBattleFrontierTrainerMons_Liliana + .monSet = gBattleFrontierTrainerMons_Liliana }, - [10] = { + [FRONTIER_TRAINER_ELISE] = { .facilityClass = FACILITY_CLASS_SCHOOL_KID_F, .trainerName = _("ELISE"), .speechBefore = {EC_WORD_MY, EC_WORD_STRATEGY, EC_WORD_IS, EC_WORD_FROM, EC_WORD_MY, EC_WORD_FATHER}, .speechWin = {EC_WORD_I, EC_WORD_WIN, EC_WORD_EXCL, EC_WORD_FATHER, EC_WORD_I_VE, EC_WORD_WON}, .speechLose = {EC_WORD_FORGIVE, EC_WORD_ME, EC_WORD_FATHER, EC_WORD_FOR, EC_WORD_I_VE, EC_WORD_LOST}, - .monSets = gBattleFrontierTrainerMons_Elise + .monSet = gBattleFrontierTrainerMons_Elise }, - [11] = { + [FRONTIER_TRAINER_ZOEY] = { .facilityClass = FACILITY_CLASS_SCHOOL_KID_F, .trainerName = _("ZOEY"), .speechBefore = {EC_WORD_PLEASE, EC_WORD_BATTLE, EC_WORD_LIKE, EC_WORD_YOU, EC_WORD_MEAN, EC_WORD_IT}, .speechWin = {EC_WORD_THANK_YOU, EC_WORD_EXCL_EXCL, 0xFFFF, EC_WORD_THANK_YOU, EC_WORD_SO, EC_WORD_MUCH}, .speechLose = {EC_WORD_WERE, EC_WORD_YOU, EC_WORD_REALLY, EC_WORD_BEING, EC_WORD_SERIOUS, EC_WORD_QUES}, - .monSets = gBattleFrontierTrainerMons_Zoey + .monSet = gBattleFrontierTrainerMons_Zoey }, - [12] = { + [FRONTIER_TRAINER_MANUEL] = { .facilityClass = FACILITY_CLASS_RICH_BOY, .trainerName = _("MANUEL"), .speechBefore = {EC_WORD_ME, EC_WORD_LOSE, EC_WORD_QUES, EC_WORD_THAT_S, EC_WORD_PREPOSTEROUS, EC_WORD_EXCL}, .speechWin = {EC_WORD_NATURALLY, EC_WORD_I, EC_WORD_WIN, 0xFFFF, 0xFFFF, 0xFFFF}, .speechLose = {EC_WORD_WAAAH, EC_WORD_EXCL, 0xFFFF, EC_WORD_I, EC_WORD_LOST, EC_WORD_MOTHER}, - .monSets = gBattleFrontierTrainerMons_Manuel + .monSet = gBattleFrontierTrainerMons_Manuel }, - [13] = { + [FRONTIER_TRAINER_RUSS] = { .facilityClass = FACILITY_CLASS_RICH_BOY, .trainerName = _("RUSS"), .speechBefore = {EC_WORD_THEY, EC_WORD_ALL, EC_WORD_WANT, EC_WORD_MY, EC_WORD_FABULOUS, EC_WORD_POKEMON}, .speechWin = {EC_WORD_I, EC_WORD_WILL, EC_WORD_HAVE, EC_WORD_A, EC_WORD_POKEMON, EC_WORD_PARTY}, .speechLose = {EC_WORD_HOW, EC_WORD_COULD, EC_WORD_YOU, EC_WORD_DO, EC_WORD_THAT, EC_WORD_QUES}, - .monSets = gBattleFrontierTrainerMons_Russ + .monSet = gBattleFrontierTrainerMons_Russ }, - [14] = { + [FRONTIER_TRAINER_DUSTIN] = { .facilityClass = FACILITY_CLASS_RICH_BOY, .trainerName = _("DUSTIN"), .speechBefore = {EC_WORD_I, EC_WORD_REALLY, EC_WORD_LIKE, EC_WORD_COOL, EC_WORD_POKEMON, 0xFFFF}, .speechWin = {EC_WORD_I, EC_WORD_LIKE, EC_WORD_MYSELF, EC_WORD_WHEN_I_WIN, EC_WORD_EXCL, 0xFFFF}, .speechLose = {EC_WORD_I, EC_WORD_LIKE, EC_WORD_MYSELF, EC_WORD_IF_I_LOSE, EC_WORD_TOO, 0xFFFF}, - .monSets = gBattleFrontierTrainerMons_Dustin + .monSet = gBattleFrontierTrainerMons_Dustin }, - [15] = { + [FRONTIER_TRAINER_TINA] = { .facilityClass = FACILITY_CLASS_LADY, .trainerName = _("TINA"), .speechBefore = {EC_WORD_IF_I_WIN, EC_WORD_YOU, EC_WORD_CAN, EC_WORD_HAVE, EC_WORD_A, EC_MOVE2(SWEET_KISS)}, .speechWin = {EC_WORD_HERE_IT_IS, EC_WORD_YOUR, EC_MOVE2(SWEET_KISS), EC_WORD_FROM, EC_WORD_MY, EC_POKEMON2(JYNX)}, .speechLose = {EC_WORD_YOU, EC_WORD_WANT, EC_WORD_A, EC_MOVE(SWIFT), EC_MOVE2(MEGA_KICK), EC_WORD_INSTEAD}, - .monSets = gBattleFrontierTrainerMons_Tina + .monSet = gBattleFrontierTrainerMons_Tina }, - [16] = { + [FRONTIER_TRAINER_GILLIAN1] = { .facilityClass = FACILITY_CLASS_LADY, .trainerName = _("GILLIAN"), .speechBefore = {EC_WORD_THE, EC_WORD_GOURMET, EC_WORD_THING, EC_WORD_IS, EC_WORD_SO, EC_WORD_YESTERDAY}, .speechWin = {EC_WORD_POKEMON, EC_WORD_NEVER, EC_WORD_GO, EC_WORD_OUT, EC_WORD_OF, EC_WORD_FASHION}, .speechLose = {EC_WORD_LOSING, EC_WORD_DOESN_T, EC_WORD_DISAPPOINT, EC_WORD_ME, 0xFFFF, 0xFFFF}, - .monSets = gBattleFrontierTrainerMons_Gillian + .monSet = gBattleFrontierTrainerMons_Gillian }, - [17] = { + [FRONTIER_TRAINER_ZOE] = { .facilityClass = FACILITY_CLASS_LADY, .trainerName = _("ZOE"), .speechBefore = {EC_WORD_I, EC_WORD_HAVEN_T, EC_WORD_A, EC_WORD_WORRY, EC_WORD_AT, EC_WORD_ALL}, .speechWin = {EC_WORD_LIFE, EC_WORD_IS, EC_WORD_ALWAYS, EC_WORD_GOOD, EC_WORD_TO_ME, 0xFFFF}, .speechLose = {EC_WORD_I, EC_WORD_WORRY, EC_WORD_ABOUT, EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_SKILL}, - .monSets = gBattleFrontierTrainerMons_Zoe + .monSet = gBattleFrontierTrainerMons_Zoe }, - [18] = { + [FRONTIER_TRAINER_CHEN] = { .facilityClass = FACILITY_CLASS_CAMPER, .trainerName = _("CHEN"), .speechBefore = {EC_WORD_I_AM, EC_WORD_TOTALLY, EC_WORD_READY, EC_WORD_TO, EC_WORD_ROCK, EC_WORD_TODAY}, .speechWin = {EC_WORD_I_AM, EC_WORD_READY, EC_WORD_TO, EC_WORD_GO, EC_WORD_ON, EC_WORD_EXCL}, .speechLose = {EC_WORD_I_VE, EC_WORD_LOST, EC_WORD_MY, EC_MOVE(FOCUS_ENERGY), EC_WORD_AND, EC_WORD_TOUGHNESS}, - .monSets = gBattleFrontierTrainerMons_Chen + .monSet = gBattleFrontierTrainerMons_Chen }, - [19] = { + [FRONTIER_TRAINER_AL] = { .facilityClass = FACILITY_CLASS_CAMPER, .trainerName = _("AL"), .speechBefore = {EC_WORD_YOUR, EC_WORD_LOOK, EC_WORD_SAYS, EC_WORD_YOU_RE, EC_WORD_REALLY, EC_WORD_TOUGH}, .speechWin = {EC_WORD_IT_S, EC_WORD_ME, EC_WORD_WHO_IS, EC_WORD_REALLY, EC_WORD_TOUGH, 0xFFFF}, .speechLose = {EC_WORD_I_AM, EC_WORD_RIGHT, EC_WORD_EXCL, EC_WORD_YOU_RE, EC_WORD_REALLY, EC_WORD_TOUGH}, - .monSets = gBattleFrontierTrainerMons_Al + .monSet = gBattleFrontierTrainerMons_Al }, - [20] = { + [FRONTIER_TRAINER_MITCH] = { .facilityClass = FACILITY_CLASS_CAMPER, .trainerName = _("MITCH"), .speechBefore = {EC_WORD_MOTHER, EC_WORD_NATURE, EC_WORD_IS, EC_WORD_MY, EC_WORD_ALLY, EC_WORD_EXCL}, .speechWin = {EC_WORD_WAS, EC_WORD_THAT, EC_WORD_ENOUGH, EC_WORD_FOR, EC_WORD_YOU, EC_WORD_QUES}, .speechLose = {EC_WORD_MOTHER, EC_WORD_NATURE, EC_WORD_DIDN_T, EC_WORD_LET_ME_WIN, EC_WORD_QUES, 0xFFFF}, - .monSets = gBattleFrontierTrainerMons_Mitch + .monSet = gBattleFrontierTrainerMons_Mitch }, - [21] = { + [FRONTIER_TRAINER_ANNE] = { .facilityClass = FACILITY_CLASS_PICNICKER, .trainerName = _("ANNE"), .speechBefore = {EC_WORD_I, EC_WORD_CAN_T, EC_WORD_WAIT, EC_WORD_LET_S, EC_WORD_BATTLE, EC_WORD_NOW}, .speechWin = {EC_WORD_MY, EC_WORD_HAPPINESS, EC_WORD_IS, EC_WORD_OVERWHELMING, EC_WORD_EXCL, 0xFFFF}, .speechLose = {EC_WORD_YOU_VE, EC_WORD_DESTROYED, EC_WORD_MY, EC_WORD_HAPPINESS, EC_WORD_ELLIPSIS, 0xFFFF}, - .monSets = gBattleFrontierTrainerMons_Anne + .monSet = gBattleFrontierTrainerMons_Anne }, - [22] = { + [FRONTIER_TRAINER_ALIZE] = { .facilityClass = FACILITY_CLASS_PICNICKER, .trainerName = _("ALIZE"), .speechBefore = {EC_WORD_CUTE, EC_WORD_AND, EC_WORD_AWFULLY, EC_WORD_STRONG, EC_WORD_THAT_S, EC_WORD_ME}, .speechWin = {EC_WORD_YUP, EC_WORD_I_AM, EC_WORD_CUTE, EC_WORD_AND, EC_WORD_AWFULLY, EC_WORD_STRONG}, .speechLose = {EC_WORD_I_AM, EC_WORD_WEAK, EC_WORD_ELLIPSIS, EC_WORD_BUT, EC_WORD_I_AM, EC_WORD_CUTE}, - .monSets = gBattleFrontierTrainerMons_Alize + .monSet = gBattleFrontierTrainerMons_Alize }, - [23] = { + [FRONTIER_TRAINER_LAUREN] = { .facilityClass = FACILITY_CLASS_PICNICKER, .trainerName = _("LAUREN"), .speechBefore = {EC_WORD_I_AM, EC_WORD_OLD, EC_WORD_BUT, EC_WORD_I_AM, EC_WORD_ALSO, EC_WORD_GOOD}, .speechWin = {EC_WORD_I, EC_WORD_SAID, EC_WORD_I_WAS, EC_WORD_OLD, EC_WORD_BUT, EC_WORD_GOOD}, .speechLose = {EC_WORD_WHAT, EC_WORD_A, EC_WORD_WEIRD, EC_WORD_DREAM, EC_WORD_THAT_WAS, EC_WORD_EXCL}, - .monSets = gBattleFrontierTrainerMons_Lauren + .monSet = gBattleFrontierTrainerMons_Lauren }, - [24] = { + [FRONTIER_TRAINER_KIPP] = { .facilityClass = FACILITY_CLASS_TUBER_M, .trainerName = _("KIPP"), .speechBefore = {EC_WORD_IF_I_WIN, EC_WORD_I_AM, EC_WORD_GOING, EC_WORD_TO, EC_WORD_GO, EC_MOVE2(SURF)}, .speechWin = {EC_WORD_YEAH, EC_WORD_EXCL, EC_WORD_I_AM, EC_WORD_OFF, EC_WORD_TO, EC_MOVE2(SURF)}, .speechLose = {EC_WORD_OH, EC_WORD_NO, EC_WORD_EXCL, EC_WORD_A, EC_MOVE(WHIRLPOOL), EC_WORD_EXCL}, - .monSets = gBattleFrontierTrainerMons_Kipp + .monSet = gBattleFrontierTrainerMons_Kipp }, - [25] = { + [FRONTIER_TRAINER_JASON] = { .facilityClass = FACILITY_CLASS_TUBER_M, .trainerName = _("JASON"), .speechBefore = {EC_WORD_TEACH, EC_WORD_ME, EC_WORD_A, EC_WORD_GOOD, EC_WORD_STRATEGY, 0xFFFF}, .speechWin = {EC_WORD_THAT_WAS, EC_WORD_YOUR, EC_WORD_GOOD, EC_WORD_STRATEGY, EC_WORD_QUES_EXCL, 0xFFFF}, .speechLose = {EC_WORD_WOW, EC_WORD_THAT, EC_WORD_IS, EC_WORD_AN, EC_WORD_AWESOME, EC_WORD_STRATEGY}, - .monSets = gBattleFrontierTrainerMons_Jason + .monSet = gBattleFrontierTrainerMons_Jason }, - [26] = { + [FRONTIER_TRAINER_JOHN] = { .facilityClass = FACILITY_CLASS_TUBER_M, .trainerName = _("JOHN"), .speechBefore = {EC_WORD_I_AM, EC_WORD_A, EC_WORD_PRETTY, EC_WORD_NEW, EC_WORD_TRAINER, 0xFFFF}, .speechWin = {EC_WORD_I_AM, EC_WORD_NEW, EC_WORD_BUT, EC_WORD_I, EC_WORD_WON, EC_WORD_EXCL}, .speechLose = {EC_WORD_I_AM, EC_WORD_NEW, EC_WORD_SO, EC_WORD_WHAT, EC_WORD_IF_I_LOSE, EC_WORD_QUES}, - .monSets = gBattleFrontierTrainerMons_John + .monSet = gBattleFrontierTrainerMons_John }, - [27] = { + [FRONTIER_TRAINER_ANN] = { .facilityClass = FACILITY_CLASS_TUBER_F, .trainerName = _("ANN"), .speechBefore = {EC_WORD_IT_S, EC_WORD_SO, EC_WORD_EXCITING, EC_WORD_IT, EC_WORD_REALLY, EC_WORD_IS}, .speechWin = {EC_WORD_I_AM, EC_WORD_SO, EC_WORD_HAPPY, EC_WORD_I, EC_WORD_CAN, EC_WORD_CRY}, .speechLose = {EC_WORD_I_AM, EC_WORD_SO, EC_WORD_SAD, EC_WORD_I, EC_WORD_WILL, EC_WORD_CRY}, - .monSets = gBattleFrontierTrainerMons_Ann + .monSet = gBattleFrontierTrainerMons_Ann }, - [28] = { + [FRONTIER_TRAINER_EILEEN] = { .facilityClass = FACILITY_CLASS_TUBER_F, .trainerName = _("EILEEN"), .speechBefore = {EC_WORD_LET_S, EC_WORD_PRETEND, EC_WORD_I_AM, EC_WORD_AN, EC_WORD_ADULT, EC_WORD_OK_QUES}, .speechWin = {EC_WORD_SO, EC_WORD_THIS, EC_WORD_IS, EC_WORD_AN, EC_WORD_ADULT, EC_WORD_FEELING}, .speechLose = {EC_WORD_AN, EC_WORD_ADULT, EC_WORD_CAN_T, EC_WORD_BEAT, EC_WORD_YOU, EC_WORD_QUES}, - .monSets = gBattleFrontierTrainerMons_Eileen + .monSet = gBattleFrontierTrainerMons_Eileen }, - [29] = { + [FRONTIER_TRAINER_CARLIE] = { .facilityClass = FACILITY_CLASS_TUBER_F, .trainerName = _("CARLIE"), .speechBefore = {EC_WORD_MY, EC_WORD_SUMMER, EC_WORD_VACATION, EC_WORD_IS, EC_WORD_FOR, EC_WORD_POKEMON}, .speechWin = {EC_WORD_MY, EC_WORD_SUMMER, EC_WORD_VACATION, EC_WORD_WILL, EC_WORD_BE, EC_WORD_AWESOME}, .speechLose = {EC_WORD_I, EC_WORD_CAN_T_WIN, EC_WORD_LIKE, EC_WORD_THIS, EC_WORD_ELLIPSIS, 0xFFFF}, - .monSets = gBattleFrontierTrainerMons_Carlie + .monSet = gBattleFrontierTrainerMons_Carlie }, - [30] = { + [FRONTIER_TRAINER_GORDON] = { .facilityClass = FACILITY_CLASS_SWIMMER_M, .trainerName = _("GORDON"), .speechBefore = {EC_WORD_VICTORY, EC_WORD_WILL, EC_WORD_COME, EC_WORD_TO_ME, EC_WORD_EXCL, 0xFFFF}, .speechWin = {EC_WORD_OH_YEAH, EC_WORD_EXCL, 0xFFFF, EC_WORD_I, EC_WORD_REALLY, EC_WORD_WON}, .speechLose = {EC_WORD_NOTHING, EC_WORD_IS, EC_WORD_WORKING, EC_WORD_OUT, EC_WORD_FOR, EC_WORD_ME}, - .monSets = gBattleFrontierTrainerMons_Gordon + .monSet = gBattleFrontierTrainerMons_Gordon }, - [31] = { + [FRONTIER_TRAINER_AYDEN] = { .facilityClass = FACILITY_CLASS_SWIMMER_M, .trainerName = _("AYDEN"), .speechBefore = {EC_WORD_COME_ON, EC_WORD_I, EC_WORD_NEED, EC_WORD_A, EC_WORD_HOT, EC_WORD_BATTLE}, .speechWin = {EC_WORD_I, EC_WORD_NEED, EC_WORD_WATER, EC_WORD_TO, EC_WORD_COOL, EC_WORD_DOWN}, .speechLose = {EC_WORD_YOU, EC_WORD_HAVE, EC_WORD_ME, EC_WORD_FEELING, EC_WORD_ICE, EC_WORD_COLD}, - .monSets = gBattleFrontierTrainerMons_Ayden + .monSet = gBattleFrontierTrainerMons_Ayden }, - [32] = { + [FRONTIER_TRAINER_MARCO] = { .facilityClass = FACILITY_CLASS_SWIMMER_M, .trainerName = _("MARCO"), .speechBefore = {EC_WORD_I, EC_MOVE2(SURF), EC_WORD_IN, EC_WORD_THE, EC_WORD_WINTER, EC_WORD_TOO}, .speechWin = {EC_WORD_I, EC_WORD_WILL, EC_WORD_GO, EC_MOVE2(SURF), EC_WORD_RIGHT, EC_WORD_NOW}, .speechLose = {EC_WORD_I, EC_WORD_WILL, EC_MOVE2(BEAT_UP), EC_WORD_MY, EC_MOVE2(SURF), EC_WORD_BOARD}, - .monSets = gBattleFrontierTrainerMons_Marco + .monSet = gBattleFrontierTrainerMons_Marco }, - [33] = { + [FRONTIER_TRAINER_CIERRA] = { .facilityClass = FACILITY_CLASS_SWIMMER_F, .trainerName = _("CIERRA"), .speechBefore = {EC_WORD_I, EC_WORD_LIKE, EC_WORD_TO, EC_WORD_SYNCHRONIZE, EC_WORD_MY, EC_WORD_SWIFT_SWIM}, .speechWin = {EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_SYNCHRONIZE, EC_WORD_WITH, EC_WORD_ME, 0xFFFF}, .speechLose = {EC_WORD_I, EC_WORD_NEED, EC_WORD_TO, EC_WORD_SYNCHRONIZE, EC_WORD_BETTER, EC_WORD_ELLIPSIS}, - .monSets = gBattleFrontierTrainerMons_Cierra + .monSet = gBattleFrontierTrainerMons_Cierra }, - [34] = { + [FRONTIER_TRAINER_MARCY] = { .facilityClass = FACILITY_CLASS_SWIMMER_F, .trainerName = _("MARCY"), .speechBefore = {EC_WORD_I_AM, EC_WORD_A, EC_WORD_KNOCKOUT, EC_WORD_YOU, EC_WORD_CAN_T_WIN, EC_WORD_EXCL}, .speechWin = {EC_WORD_AFTER, EC_WORD_ALL, EC_WORD_I_AM, EC_WORD_A, EC_WORD_KNOCKOUT, EC_WORD_EXCL}, .speechLose = {EC_WORD_THAT_S, EC_WORD_NOT, EC_WORD_THE, EC_WORD_KNOCKOUT, EC_WORD_I, EC_WORD_MEAN}, - .monSets = gBattleFrontierTrainerMons_Marcy + .monSet = gBattleFrontierTrainerMons_Marcy }, - [35] = { + [FRONTIER_TRAINER_KATHY] = { .facilityClass = FACILITY_CLASS_SWIMMER_F, .trainerName = _("KATHY"), .speechBefore = {EC_WORD_I_VE, EC_WORD_WON, EC_WORD_EVERY, EC_WORD_MATCH, EC_WORD_TODAY, EC_WORD_EXCL}, .speechWin = {EC_WORD_IT_S, EC_WORD_SO, EC_WORD_GREAT, EC_WORD_TO, EC_WORD_WIN, EC_WORD_EXCL}, .speechLose = {EC_WORD_HUH_QUES, EC_WORD_I, EC_WORD_SHOULD, EC_WORD_NOT, EC_WORD_HAVE, EC_WORD_LOST}, - .monSets = gBattleFrontierTrainerMons_Kathy + .monSet = gBattleFrontierTrainerMons_Kathy }, - [36] = { + [FRONTIER_TRAINER_PEYTON] = { .facilityClass = FACILITY_CLASS_POKEFAN_M, .trainerName = _("PEYTON"), .speechBefore = {EC_WORD_I_AM, EC_WORD_NEVER, EC_WORD_DISAPPOINTED, EC_WORD_WITH, EC_WORD_MY, EC_WORD_POKEMON}, .speechWin = {EC_WORD_I_AM, EC_WORD_HAPPY, EC_WORD_IF, EC_WORD_WE, EC_WORD_WIN, EC_WORD_TOGETHER}, .speechLose = {EC_WORD_I, EC_WORD_ADORE, EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_MORE, EC_WORD_IF_I_LOSE}, - .monSets = gBattleFrontierTrainerMons_Peyton + .monSet = gBattleFrontierTrainerMons_Peyton }, - [37] = { + [FRONTIER_TRAINER_JULIAN] = { .facilityClass = FACILITY_CLASS_POKEFAN_M, .trainerName = _("JULIAN"), .speechBefore = {EC_WORD_YOU, EC_WORD_ADORE, EC_WORD_YOUR, EC_WORD_POKEMON, EC_WORD_RIGHT, EC_WORD_QUES}, .speechWin = {EC_WORD_YOU_RE, EC_WORD_TOTALLY, EC_WORD_OUT, EC_WORD_OF, EC_WORD_THE, EC_WORD_QUESTION}, .speechLose = {EC_WORD_YOU, EC_WORD_DO, EC_WORD_ADORE, EC_WORD_YOUR, EC_WORD_POKEMON, EC_WORD_EXCL}, - .monSets = gBattleFrontierTrainerMons_Julian + .monSet = gBattleFrontierTrainerMons_Julian }, - [38] = { + [FRONTIER_TRAINER_QUINN] = { .facilityClass = FACILITY_CLASS_POKEFAN_M, .trainerName = _("QUINN"), .speechBefore = {EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_ARE, EC_WORD_BUT, EC_WORD_A, EC_WORD_DREAM}, .speechWin = {EC_WORD_THIS, EC_WORD_IS, EC_WORD_A, EC_WORD_BEAUTIFUL, EC_WORD_DREAM, EC_WORD_EXCL}, .speechLose = {EC_WORD_THIS, EC_WORD_IS, EC_WORD_AN, EC_WORD_AWFUL, EC_MOVE(NIGHTMARE), EC_WORD_EXCL}, - .monSets = gBattleFrontierTrainerMons_Quinn + .monSet = gBattleFrontierTrainerMons_Quinn }, - [39] = { + [FRONTIER_TRAINER_HAYLEE] = { .facilityClass = FACILITY_CLASS_POKEFAN_F, .trainerName = _("HAYLEE"), .speechBefore = {EC_WORD_I, EC_WORD_DON_T, EC_WORD_KNOW, EC_WORD_HOW, EC_WORD_I_AM, EC_WORD_FEELING}, .speechWin = {EC_WORD_I_AM, EC_WORD_FEELING, EC_WORD_OVERWHELMING, EC_WORD_JOY, EC_WORD_OVER, EC_WORD_THIS}, .speechLose = {EC_WORD_DESTROYED, EC_WORD_IS, EC_WORD_THE, EC_WORD_WAY, EC_WORD_I_AM, EC_WORD_FEELING}, - .monSets = gBattleFrontierTrainerMons_Haylee + .monSet = gBattleFrontierTrainerMons_Haylee }, - [40] = { + [FRONTIER_TRAINER_AMANDA] = { .facilityClass = FACILITY_CLASS_POKEFAN_F, .trainerName = _("AMANDA"), .speechBefore = {EC_WORD_I, EC_WORD_COME, EC_WORD_FROM, EC_WORD_A, EC_WORD_TRAINER, EC_WORD_FAMILY}, .speechWin = {EC_WORD_I, EC_WORD_WILL, EC_WORD_TREASURE, EC_WORD_THIS, EC_WORD_WIN, 0xFFFF}, .speechLose = {EC_WORD_I, EC_WORD_WANT, EC_WORD_TO, EC_WORD_GO_HOME, EC_WORD_RIGHT, EC_WORD_NOW}, - .monSets = gBattleFrontierTrainerMons_Amanda + .monSet = gBattleFrontierTrainerMons_Amanda }, - [41] = { + [FRONTIER_TRAINER_STACY] = { .facilityClass = FACILITY_CLASS_POKEFAN_F, .trainerName = _("STACY"), .speechBefore = {EC_WORD_ALL, EC_WORD_POKEMON, EC_WORD_HAVE, EC_WORD_THEIR, EC_WORD_OWN, EC_WORD_CUTE_CHARM}, .speechWin = {EC_WORD_YOU, EC_WORD_SEE, EC_WORD_WHAT, EC_WORD_I, EC_WORD_MEAN, EC_WORD_QUES}, .speechLose = {EC_WORD_SHOULD, EC_WORD_I, EC_WORD_NOT, EC_WORD_ADORE, EC_WORD_POKEMON, EC_WORD_QUES}, - .monSets = gBattleFrontierTrainerMons_Stacy + .monSet = gBattleFrontierTrainerMons_Stacy }, - [42] = { + [FRONTIER_TRAINER_RAFAEL] = { .facilityClass = FACILITY_CLASS_PKMN_BREEDER_M, .trainerName = _("RAFAEL"), .speechBefore = {EC_WORD_COME_ON, EC_WORD_EXCL, EC_WORD_LET_S, EC_WORD_SEE, EC_WORD_SOME, EC_WORD_SPIRIT}, .speechWin = {EC_WORD_THAT_S_IT_EXCL, EC_WORD_THAT_S, EC_WORD_THE, EC_WORD_SPIRIT, EC_WORD_EXCL, 0xFFFF}, .speechLose = {EC_WORD_WELL, EC_WORD_SO, EC_WORD_MUCH, EC_WORD_FOR, EC_WORD_OUR, EC_WORD_SPIRIT}, - .monSets = gBattleFrontierTrainerMons_Rafael + .monSet = gBattleFrontierTrainerMons_Rafael }, - [43] = { + [FRONTIER_TRAINER_OLIVER] = { .facilityClass = FACILITY_CLASS_PKMN_BREEDER_M, .trainerName = _("OLIVER"), .speechBefore = {EC_WORD_A, EC_WORD_GENIUS, EC_WORD_THAT_S, EC_WORD_WHAT, EC_WORD_I_AM, EC_WORD_EXCL}, .speechWin = {EC_WORD_THAT_S, EC_WORD_HOW, EC_WORD_A, EC_WORD_GENIUS, EC_WORD_WORKS, EC_WORD_EXCL}, .speechLose = {EC_WORD_YOU_RE, EC_WORD_MORE, EC_WORD_A, EC_WORD_GENIUS, EC_WORD_THAN, EC_WORD_I_AM}, - .monSets = gBattleFrontierTrainerMons_Oliver + .monSet = gBattleFrontierTrainerMons_Oliver }, - [44] = { + [FRONTIER_TRAINER_PAYTON] = { .facilityClass = FACILITY_CLASS_PKMN_BREEDER_M, .trainerName = _("PAYTON"), .speechBefore = {EC_WORD_I, EC_WORD_TRAIN, EC_WORD_FROM, EC_WORD_THE, EC_WORD_EGG, EC_WORD_UP}, .speechWin = {EC_WORD_WELL, EC_WORD_DONE, EC_WORD_EXCL, 0xFFFF, 0xFFFF, 0xFFFF}, .speechLose = {EC_WORD_THAT_WAS, EC_WORD_A, EC_MOVE2(SOFT_BOILED), EC_WORD_LOSS, EC_WORD_ELLIPSIS, 0xFFFF}, - .monSets = gBattleFrontierTrainerMons_Payton + .monSet = gBattleFrontierTrainerMons_Payton }, - [45] = { + [FRONTIER_TRAINER_PAMELA] = { .facilityClass = FACILITY_CLASS_PKMN_BREEDER_F, .trainerName = _("PAMELA"), .speechBefore = {EC_WORD_ALL, EC_WORD_POKEMON, EC_WORD_ADORE, EC_WORD_A, EC_WORD_KIND, EC_WORD_TRAINER}, .speechWin = {EC_WORD_IT_S, EC_WORD_TOO, EC_WORD_BAD, EC_WORD_YOU, EC_WORD_LOST, 0xFFFF}, .speechLose = {EC_WORD_YOU_RE, EC_WORD_KIND, EC_WORD_AND, EC_WORD_YOU_RE, EC_WORD_ALSO, EC_WORD_STRONG}, - .monSets = gBattleFrontierTrainerMons_Pamela + .monSet = gBattleFrontierTrainerMons_Pamela }, - [46] = { + [FRONTIER_TRAINER_ELIZA] = { .facilityClass = FACILITY_CLASS_PKMN_BREEDER_F, .trainerName = _("ELIZA"), .speechBefore = {EC_WORD_I, EC_WORD_ADORE, EC_WORD_POKEMON, EC_WORD_LIKE, EC_WORD_MY, EC_WORD_CHILDREN}, .speechWin = {EC_WORD_I_AM, EC_WORD_SO, EC_WORD_HAPPY, EC_WORD_FOR, EC_WORD_MY, EC_WORD_POKEMON}, .speechLose = {EC_WORD_OH_DEAR, EC_WORD_I_AM, EC_WORD_SO, EC_WORD_SORRY, EC_WORD_ABOUT, EC_WORD_THIS}, - .monSets = gBattleFrontierTrainerMons_Eliza + .monSet = gBattleFrontierTrainerMons_Eliza }, - [47] = { + [FRONTIER_TRAINER_MARISA] = { .facilityClass = FACILITY_CLASS_PKMN_BREEDER_F, .trainerName = _("MARISA"), .speechBefore = {EC_WORD_I, EC_WORD_PROMISE, EC_WORD_TO, EC_WORD_BATTLE, EC_WORD_SERIOUSLY, 0xFFFF}, .speechWin = {EC_WORD_PROMISE, EC_WORD_ME, EC_WORD_YOU, EC_WORD_WILL, EC_WORD_DO, EC_WORD_BETTER}, .speechLose = {EC_WORD_PROMISE, EC_WORD_ME, EC_WORD_ANOTHER, EC_WORD_BATTLE, EC_WORD_PLEASE, EC_WORD_EXCL}, - .monSets = gBattleFrontierTrainerMons_Marisa + .monSet = gBattleFrontierTrainerMons_Marisa }, - [48] = { + [FRONTIER_TRAINER_LEWIS] = { .facilityClass = FACILITY_CLASS_BUG_CATCHER, .trainerName = _("LEWIS"), .speechBefore = {EC_WORD_A_LITTLE, EC_WORD_BUG, EC_WORD_IS, EC_WORD_SCARY, EC_WORD_QUES, EC_WORD_HAHAHA}, .speechWin = {EC_WORD_LOOK, EC_WORD_LOOK, EC_WORD_EXCL, EC_WORD_A, EC_WORD_SCARY, EC_WORD_BUG}, .speechLose = {EC_WORD_OH, EC_WORD_A, EC_WORD_BUG, EC_WORD_ISN_T, EC_WORD_SCARY, EC_WORD_ELLIPSIS}, - .monSets = gBattleFrontierTrainerMons_Lewis + .monSet = gBattleFrontierTrainerMons_Lewis }, - [49] = { + [FRONTIER_TRAINER_YOSHI] = { .facilityClass = FACILITY_CLASS_BUG_CATCHER, .trainerName = _("YOSHI"), .speechBefore = {EC_WORD_BUG, EC_WORD_POKEMON, EC_WORD_MAKE, EC_WORD_ME, EC_WORD_FEELING, EC_WORD_LOVEY_DOVEY}, .speechWin = {EC_WORD_BUG, EC_WORD_POKEMON, EC_WORD_ARE, EC_WORD_THE, EC_WORD_BEST, EC_WORD_EXCL}, .speechLose = {EC_WORD_YOU_RE, EC_WORD_IGNORANT, EC_WORD_ABOUT, EC_WORD_BUG, EC_WORD_POKEMON, 0xFFFF}, - .monSets = gBattleFrontierTrainerMons_Yoshi + .monSet = gBattleFrontierTrainerMons_Yoshi }, - [50] = { + [FRONTIER_TRAINER_DESTIN] = { .facilityClass = FACILITY_CLASS_BUG_CATCHER, .trainerName = _("DESTIN"), .speechBefore = {EC_WORD_IT_S, EC_WORD_WAY, EC_WORD_TOO, EC_WORD_HOT, EC_WORD_HERE, 0xFFFF}, .speechWin = {EC_WORD_I_AM, EC_WORD_ABOUT, EC_WORD_TO, EC_MOVE(OVERHEAT), 0xFFFF, 0xFFFF}, .speechLose = {EC_WORD_PLEASE, EC_WORD_I, EC_WORD_NEED, EC_WORD_SOME, EC_WORD_WATER, 0xFFFF}, - .monSets = gBattleFrontierTrainerMons_Destin + .monSet = gBattleFrontierTrainerMons_Destin }, - [51] = { + [FRONTIER_TRAINER_KEON] = { .facilityClass = FACILITY_CLASS_NINJA_BOY, .trainerName = _("KEON"), .speechBefore = {EC_WORD_FORGIVE, EC_WORD_ME, EC_WORD_BUT, EC_WORD_HERE_I_COME, EC_WORD_EXCL, 0xFFFF}, .speechWin = {EC_WORD_FORGIVE, EC_WORD_ME, EC_WORD_FOR, EC_WORD_MY, EC_WORD_OVERWHELMING, EC_WORD_POWER}, .speechLose = {EC_WORD_I_AM, EC_WORD_SORRY, EC_WORD_ELLIPSIS, 0xFFFF, 0xFFFF, 0xFFFF}, - .monSets = gBattleFrontierTrainerMons_Keon + .monSet = gBattleFrontierTrainerMons_Keon }, - [52] = { + [FRONTIER_TRAINER_STUART] = { .facilityClass = FACILITY_CLASS_NINJA_BOY, .trainerName = _("STUART"), .speechBefore = {EC_WORD_I, EC_WORD_PROMISE, EC_WORD_YOU, EC_WORD_A, EC_WORD_HOT, EC_WORD_BATTLE}, .speechWin = {EC_WORD_THE, EC_WORD_MASTER, EC_WORD_OF, EC_WORD_COOL, EC_WORD_THAT_S, EC_WORD_ME}, .speechLose = {EC_WORD_I, EC_WORD_SEE, EC_WORD_I_AM, EC_WORD_NOT, EC_WORD_SO, EC_WORD_COOL}, - .monSets = gBattleFrontierTrainerMons_Stuart + .monSet = gBattleFrontierTrainerMons_Stuart }, - [53] = { + [FRONTIER_TRAINER_NESTOR] = { .facilityClass = FACILITY_CLASS_NINJA_BOY, .trainerName = _("NESTOR"), .speechBefore = {EC_WORD_SHOW, EC_WORD_ME, EC_WORD_A, EC_WORD_REALLY, EC_WORD_SMOOTH, EC_WORD_MOVE}, .speechWin = {EC_WORD_THERE, EC_WORD_WAS, EC_WORD_NOTHING, EC_WORD_SMOOTH, EC_WORD_ABOUT, EC_WORD_THAT}, .speechLose = {EC_WORD_YOU, EC_WORD_REALLY, EC_WORD_ARE, EC_WORD_SMOOTH, EC_WORD_EXCL, 0xFFFF}, - .monSets = gBattleFrontierTrainerMons_Nestor + .monSet = gBattleFrontierTrainerMons_Nestor }, - [54] = { + [FRONTIER_TRAINER_DERRICK] = { .facilityClass = FACILITY_CLASS_BUG_MANIAC, .trainerName = _("DERRICK"), .speechBefore = {EC_WORD_LET_S, EC_WORD_SEE, EC_WORD_YOU, EC_MOVE2(MEDITATE), EC_WORD_LIKE, EC_WORD_ME}, .speechWin = {EC_WORD_HOW, EC_WORD_I, EC_MOVE2(MEDITATE), EC_WORD_IS, EC_WORD_JUST, EC_WORD_BEAUTIFUL}, .speechLose = {EC_WORD_I, EC_WORD_WILL, EC_MOVE2(MEDITATE), EC_WORD_FOR, EC_WORD_A, EC_MOVE2(CALM_MIND)}, - .monSets = gBattleFrontierTrainerMons_Derrick + .monSet = gBattleFrontierTrainerMons_Derrick }, - [55] = { + [FRONTIER_TRAINER_BRYSON] = { .facilityClass = FACILITY_CLASS_BUG_MANIAC, .trainerName = _("BRYSON"), .speechBefore = {EC_MOVE2(POISON_POWDER), EC_WORD_IS, EC_WORD_IN, EC_WORD_OUR, EC_MOVE2(COTTON_SPORE), EC_WORD_MOVE}, .speechWin = {EC_WORD_HOW_DO, EC_WORD_YOU, EC_WORD_LIKE, EC_WORD_OUR, EC_MOVE2(POISON_POWDER), EC_WORD_QUES}, .speechLose = {EC_WORD_MY, EC_MOVE2(COTTON_SPORE), EC_WORD_WAS, EC_WORD_USELESS, 0xFFFF, 0xFFFF}, - .monSets = gBattleFrontierTrainerMons_Bryson + .monSet = gBattleFrontierTrainerMons_Bryson }, - [56] = { + [FRONTIER_TRAINER_CLAYTON] = { .facilityClass = FACILITY_CLASS_BUG_MANIAC, .trainerName = _("CLAYTON"), .speechBefore = {EC_WORD_HUH_QUES, 0xFFFF, 0xFFFF, EC_WORD_WHERE, EC_WORD_IS_IT_QUES, 0xFFFF}, .speechWin = {EC_WORD_WHERE, EC_WORD_IS_IT_QUES, EC_WORD_I_VE, EC_WORD_LOST, EC_WORD_MY, EC_WORD_POKENAV}, .speechLose = {EC_WORD_WHERE, EC_WORD_IS_IT_QUES, EC_WORD_I_VE, EC_WORD_LOST, EC_WORD_MY, EC_WORD_SENSE}, - .monSets = gBattleFrontierTrainerMons_Clayton + .monSet = gBattleFrontierTrainerMons_Clayton }, - [57] = { + [FRONTIER_TRAINER_TRENTON] = { .facilityClass = FACILITY_CLASS_FISHERMAN, .trainerName = _("TRENTON"), .speechBefore = {EC_WORD_COME_OVER, EC_WORD_FOR, EC_WORD_SOME, EC_WORD_TASTY, EC_WORD_WATER, 0xFFFF}, .speechWin = {EC_WORD_MMM, EC_WORD_DO, EC_WORD_YOU, EC_WORD_WANT, EC_WORD_SOME, EC_WORD_QUES}, .speechLose = {EC_WORD_I, EC_WORD_GOT, EC_WORD_THIS, EC_WORD_TASTY, EC_WORD_WATER, EC_WORD_SHOPPING}, - .monSets = gBattleFrontierTrainerMons_Trenton + .monSet = gBattleFrontierTrainerMons_Trenton }, - [58] = { + [FRONTIER_TRAINER_JENSON] = { .facilityClass = FACILITY_CLASS_FISHERMAN, .trainerName = _("JENSON"), .speechBefore = {EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_WILL, EC_WORD_MAKE, EC_WORD_YOU, EC_WORD_DOWNCAST}, .speechWin = {EC_WORD_YOUR, EC_WORD_POKEMON, EC_WORD_DON_T, EC_WORD_MAKE, EC_WORD_THE, EC_MOVE(CUT)}, .speechLose = {EC_WORD_I_AM, EC_WORD_THE, EC_WORD_TRAINER, EC_WORD_WHO_IS, EC_WORD_FEELING, EC_WORD_DOWNCAST}, - .monSets = gBattleFrontierTrainerMons_Jenson + .monSet = gBattleFrontierTrainerMons_Jenson }, - [59] = { + [FRONTIER_TRAINER_WESLEY] = { .facilityClass = FACILITY_CLASS_FISHERMAN, .trainerName = _("WESLEY"), .speechBefore = {EC_POKEMON2(MEW), EC_POKEMON2(MEW), EC_WORD_IS, EC_WORD_HOW, EC_WORD_I, EC_WORD_CRY}, .speechWin = {EC_WORD_YES, EC_WORD_I, EC_WORD_KNOW, EC_WORD_I_AM, EC_WORD_CUTE, EC_WORD_EXCL}, .speechLose = {EC_POKEMON2(MEW), EC_POKEMON2(MEW), EC_WORD_EXCL, EC_POKEMON2(MEW), EC_WORD_EXCL_EXCL, 0xFFFF}, - .monSets = gBattleFrontierTrainerMons_Wesley + .monSet = gBattleFrontierTrainerMons_Wesley }, - [60] = { + [FRONTIER_TRAINER_ANTON] = { .facilityClass = FACILITY_CLASS_RUIN_MANIAC, .trainerName = _("ANTON"), .speechBefore = {EC_WORD_GET, EC_WORD_READY, EC_WORD_FOR, EC_WORD_ME, EC_WORD_TO, EC_MOVE(THRASH)}, .speechWin = {EC_WORD_WAHAHAHA, EC_WORD_EXCL, EC_WORD_SORRY, EC_WORD_ABOUT, EC_WORD_THAT, EC_WORD_EXCL}, .speechLose = {EC_WORD_IT_S, EC_WORD_A, EC_WORD_TOUGH, EC_WORD_LOSS, EC_WORD_TO, EC_MOVE2(SWALLOW)}, - .monSets = gBattleFrontierTrainerMons_Anton + .monSet = gBattleFrontierTrainerMons_Anton }, - [61] = { + [FRONTIER_TRAINER_LAWSON] = { .facilityClass = FACILITY_CLASS_RUIN_MANIAC, .trainerName = _("LAWSON"), .speechBefore = {EC_WORD_I_AM, EC_WORD_YOUNG, EC_WORD_AT, EC_WORD_HEART, EC_WORD_EXCL, 0xFFFF}, .speechWin = {EC_WORD_NOT, EC_WORD_COOL, EC_WORD_EXCL, EC_WORD_NOT, EC_WORD_AT, EC_WORD_ALL}, .speechLose = {EC_WORD_I_AM, EC_WORD_OLD, EC_WORD_AND, EC_WORD_FEELING, EC_WORD_SHAKY, EC_WORD_ELLIPSIS}, - .monSets = gBattleFrontierTrainerMons_Lawson + .monSet = gBattleFrontierTrainerMons_Lawson }, - [62] = { + [FRONTIER_TRAINER_SAMMY] = { .facilityClass = FACILITY_CLASS_RUIN_MANIAC, .trainerName = _("SAMMY"), .speechBefore = {EC_WORD_MY, EC_WORD_PARTY, EC_WORD_IS, EC_WORD_READY, EC_WORD_TO, EC_WORD_ROCK}, .speechWin = {EC_WORD_MY, EC_WORD_PARTY, EC_WORD_IS, EC_WORD_JUST, EC_WORD_INCREDIBLE, EC_WORD_EXCL}, .speechLose = {EC_WORD_I, EC_WORD_CRY, EC_WORD_FOR, EC_WORD_MY, EC_WORD_PARTY, EC_WORD_ELLIPSIS}, - .monSets = gBattleFrontierTrainerMons_Sammy + .monSet = gBattleFrontierTrainerMons_Sammy }, - [63] = { + [FRONTIER_TRAINER_ARNIE] = { .facilityClass = FACILITY_CLASS_COLLECTOR, .trainerName = _("ARNIE"), .speechBefore = {EC_WORD_I_AM, EC_WORD_NO_1, EC_WORD_I, EC_WORD_HAVE, EC_WORD_NO, EC_WORD_RIVAL}, .speechWin = {EC_WORD_YOU, EC_WORD_SEE, EC_WORD_QUES, EC_WORD_I, EC_WORD_CAN_T, EC_WORD_LOSE}, .speechLose = {EC_WORD_NO, EC_WORD_EXCL, EC_WORD_I, EC_WORD_WON_T, EC_WORD_ACCEPT, EC_WORD_THIS}, - .monSets = gBattleFrontierTrainerMons_Arnie + .monSet = gBattleFrontierTrainerMons_Arnie }, - [64] = { + [FRONTIER_TRAINER_ADRIAN] = { .facilityClass = FACILITY_CLASS_COLLECTOR, .trainerName = _("ADRIAN"), .speechBefore = {EC_WORD_YAHOO, EC_WORD_EXCL, 0xFFFF, EC_WORD_YAHOO, EC_WORD_EXCL_EXCL, 0xFFFF}, .speechWin = {EC_WORD_THANK_YOU, EC_WORD_EXCL, 0xFFFF, EC_WORD_THANK_YOU, EC_WORD_EXCL_EXCL, 0xFFFF}, .speechLose = {EC_WORD_GOOD_BYE, EC_WORD_EXCL, 0xFFFF, EC_WORD_GOOD_BYE, EC_WORD_EXCL_EXCL, 0xFFFF}, - .monSets = gBattleFrontierTrainerMons_Adrian + .monSet = gBattleFrontierTrainerMons_Adrian }, - [65] = { + [FRONTIER_TRAINER_TRISTAN] = { .facilityClass = FACILITY_CLASS_COLLECTOR, .trainerName = _("TRISTAN"), .speechBefore = {EC_WORD_CONFUSED, EC_WORD_QUES, 0xFFFF, EC_WORD_I_AM, EC_WORD_A, EC_WORD_GENIUS}, .speechWin = {EC_WORD_SEE, EC_WORD_QUES, 0xFFFF, EC_WORD_I_AM, EC_WORD_A, EC_WORD_GENIUS}, .speechLose = {EC_WORD_I_AM, EC_WORD_NOT, EC_WORD_A, EC_WORD_GENIUS, EC_WORD_IN, EC_WORD_BATTLE}, - .monSets = gBattleFrontierTrainerMons_Tristan + .monSet = gBattleFrontierTrainerMons_Tristan }, - [66] = { + [FRONTIER_TRAINER_JULIANA] = { .facilityClass = FACILITY_CLASS_PARASOL_LADY, .trainerName = _("JULIANA"), .speechBefore = {EC_WORD_I, EC_WORD_THINK, EC_WORD_I_AM, EC_WORD_SHOPPING, EC_WORD_TOO, EC_WORD_MUCH}, .speechWin = {EC_WORD_BUT, EC_WORD_I, EC_WORD_WANT, EC_WORD_A, EC_WORD_POKEMON, EC_WORD_PLUSH_DOLL}, .speechLose = {EC_WORD_I, EC_WORD_SO, EC_WORD_WANT, EC_WORD_ANOTHER, EC_WORD_POKEMON, EC_WORD_PLUSH_DOLL}, - .monSets = gBattleFrontierTrainerMons_Juliana + .monSet = gBattleFrontierTrainerMons_Juliana }, - [67] = { + [FRONTIER_TRAINER_RYLEE] = { .facilityClass = FACILITY_CLASS_PARASOL_LADY, .trainerName = _("RYLEE"), .speechBefore = {EC_WORD_SHOW, EC_WORD_ME, EC_WORD_THAT, EC_WORD_YOU, EC_WORD_HAVE, EC_WORD_GUTS}, .speechWin = {EC_WORD_BYE_BYE, EC_WORD_EXCL, EC_WORD_YOU, EC_WORD_HAVE, EC_WORD_NO, EC_WORD_GUTS}, .speechLose = {EC_WORD_THAT_WAS, EC_WORD_GUTSY, EC_WORD_ELLIPSIS, EC_WORD_YOU_RE, EC_WORD_QUITE, EC_WORD_SUPER}, - .monSets = gBattleFrontierTrainerMons_Rylee + .monSet = gBattleFrontierTrainerMons_Rylee }, - [68] = { + [FRONTIER_TRAINER_CHELSEA] = { .facilityClass = FACILITY_CLASS_PARASOL_LADY, .trainerName = _("CHELSEA"), .speechBefore = {EC_WORD_I, EC_WORD_SERIOUSLY, EC_WORD_MEAN, EC_WORD_TO, EC_WORD_WIN, EC_WORD_EXCL}, .speechWin = {EC_WORD_THAT_WAS, EC_WORD_MY, EC_WORD_WILL, EC_WORD_TO, EC_WORD_WIN, 0xFFFF}, .speechLose = {EC_WORD_YOU_RE, EC_WORD_FAR, EC_WORD_TOO_STRONG, EC_WORD_FOR, EC_WORD_ME, 0xFFFF}, - .monSets = gBattleFrontierTrainerMons_Chelsea + .monSet = gBattleFrontierTrainerMons_Chelsea }, - [69] = { + [FRONTIER_TRAINER_DANELA] = { .facilityClass = FACILITY_CLASS_BEAUTY, .trainerName = _("DANELA"), .speechBefore = {EC_WORD_YOU, EC_WORD_MUST_BE, EC_WORD_MY, EC_WORD_OPPONENT, EC_WORD_NOW, EC_WORD_EXCL}, .speechWin = {EC_WORD_OH_DEAR, EC_WORD_TOO_WEAK, EC_WORD_EXCL, EC_WORD_DON_T, EC_WORD_GIVE_UP, EC_WORD_EXCL}, .speechLose = {EC_WORD_THAT_WAS, EC_WORD_GOOD, EC_WORD_AND, EC_WORD_THIS, EC_WORD_IS, EC_WORD_GOOD_BYE}, - .monSets = gBattleFrontierTrainerMons_Danela + .monSet = gBattleFrontierTrainerMons_Danela }, - [70] = { + [FRONTIER_TRAINER_LIZBETH] = { .facilityClass = FACILITY_CLASS_BEAUTY, .trainerName = _("LIZBETH"), .speechBefore = {EC_WORD_IF_I_LOSE, EC_WORD_YOU, EC_WORD_CAN, EC_WORD_HAVE, EC_WORD_A, EC_MOVE2(PRESENT)}, .speechWin = {EC_WORD_HERE_IT_IS, EC_WORD_A_LITTLE, EC_WORD_PRAISE, EC_WORD_AS, EC_WORD_YOUR, EC_MOVE2(PRESENT)}, .speechLose = {EC_WORD_YOUR, EC_MOVE2(PRESENT), EC_WORD_QUES_EXCL, EC_WORD_HERE_IT_IS, EC_WORD_A, EC_MOVE(DOUBLE_SLAP)}, - .monSets = gBattleFrontierTrainerMons_Lizbeth + .monSet = gBattleFrontierTrainerMons_Lizbeth }, - [71] = { + [FRONTIER_TRAINER_AMELIA] = { .facilityClass = FACILITY_CLASS_BEAUTY, .trainerName = _("AMELIA"), .speechBefore = {EC_WORD_I, EC_WORD_BELIEVE, EC_WORD_IN, EC_WORD_CUTE, EC_WORD_FASHION, EC_WORD_APPEAL}, .speechWin = {EC_WORD_YOUR, EC_WORD_FASHION, EC_WORD_SENSE, EC_WORD_IS, EC_WORD_A, EC_WORD_DISASTER}, .speechLose = {EC_WORD_THAT_WAS, EC_WORD_AWFUL, EC_WORD_EXCL, EC_WORD_I_AM, EC_WORD_GOING, EC_WORD_HOME}, - .monSets = gBattleFrontierTrainerMons_Amelia + .monSet = gBattleFrontierTrainerMons_Amelia }, - [72] = { + [FRONTIER_TRAINER_JILLIAN] = { .facilityClass = FACILITY_CLASS_AROMA_LADY, .trainerName = _("JILLIAN"), .speechBefore = {EC_WORD_WHAT, EC_WORD_IS, EC_WORD_THAT, EC_WORD_I, EC_WORD_SMELL, EC_WORD_QUES}, .speechWin = {EC_WORD_IT_S, EC_WORD_THE, EC_MOVE(SWEET_SCENT), EC_WORD_OF, EC_WORD_TASTY, EC_WORD_WATER}, .speechLose = {EC_WORD_IT_S, EC_WORD_YOUR, EC_WORD_OFFENSIVE, EC_WORD_STENCH, EC_WORD_THAT_S, EC_WORD_WHAT}, - .monSets = gBattleFrontierTrainerMons_Jillian + .monSet = gBattleFrontierTrainerMons_Jillian }, - [73] = { + [FRONTIER_TRAINER_ABBIE] = { .facilityClass = FACILITY_CLASS_AROMA_LADY, .trainerName = _("ABBIE"), .speechBefore = {EC_WORD_YOU, EC_WORD_TRY, EC_WORD_MY, EC_WORD_SECRET, EC_MOVE(AROMATHERAPY), EC_WORD_OK_QUES}, .speechWin = {EC_WORD_MY, EC_MOVE(AROMATHERAPY), EC_WORD_IS, EC_WORD_TERRIBLE, EC_WORD_FOR, EC_WORD_YOU}, .speechLose = {EC_WORD_DIDN_T, EC_WORD_YOU, EC_WORD_SMELL, EC_WORD_A, EC_WORD_THING, EC_WORD_QUES_EXCL}, - .monSets = gBattleFrontierTrainerMons_Abbie + .monSet = gBattleFrontierTrainerMons_Abbie }, - [74] = { + [FRONTIER_TRAINER_BRIANA] = { .facilityClass = FACILITY_CLASS_AROMA_LADY, .trainerName = _("BRIANA"), .speechBefore = {EC_WORD_MY, EC_WORD_BOY, EC_WORD_FRIEND, EC_WORD_WORKS, EC_WORD_TOO, EC_WORD_MUCH}, .speechWin = {EC_WORD_I, EC_WORD_ONLY, EC_WORD_MISS, EC_WORD_HIM, EC_WORD_MORE, EC_WORD_ELLIPSIS}, .speechLose = {EC_WORD_I_AM, EC_WORD_SO, EC_WORD_LONESOME, EC_WORD_WITHOUT, EC_WORD_HIM, EC_WORD_ELLIPSIS}, - .monSets = gBattleFrontierTrainerMons_Briana + .monSet = gBattleFrontierTrainerMons_Briana }, - [75] = { + [FRONTIER_TRAINER_ANTONIO] = { .facilityClass = FACILITY_CLASS_GUITARIST, .trainerName = _("ANTONIO"), .speechBefore = {EC_WORD_I, EC_WORD_KNOW, EC_WORD_HOW, EC_WORD_TO, EC_WORD_GO, EC_WORD_GO}, .speechWin = {EC_WORD_BUT, EC_WORD_I, EC_WORD_DON_T, EC_WORD_LIKE, EC_WORD_TO, EC_WORD_DANCE}, .speechLose = {EC_WORD_GO, EC_WORD_GO, EC_WORD_ELLIPSIS, EC_WORD_JUST, EC_MOVE(FLAIL), EC_WORD_ABOUT}, - .monSets = gBattleFrontierTrainerMons_Antonio + .monSet = gBattleFrontierTrainerMons_Antonio }, - [76] = { + [FRONTIER_TRAINER_JADEN] = { .facilityClass = FACILITY_CLASS_GUITARIST, .trainerName = _("JADEN"), .speechBefore = {EC_WORD_HELLO, EC_WORD_I, EC_WORD_THINK, EC_WORD_I, EC_WORD_ADORE, EC_WORD_YOU}, .speechWin = {EC_WORD_YOU, EC_WORD_MAKE, EC_WORD_ME, EC_MOVE(THRASH), EC_WORD_IN, EC_MOVE2(FRUSTRATION)}, .speechLose = {EC_WORD_THIS_IS_IT_EXCL, 0xFFFF, 0xFFFF, EC_WORD_GOOD_BYE, EC_WORD_FOREVER, EC_WORD_EXCL}, - .monSets = gBattleFrontierTrainerMons_Jaden + .monSet = gBattleFrontierTrainerMons_Jaden }, - [77] = { + [FRONTIER_TRAINER_DAKOTA] = { .facilityClass = FACILITY_CLASS_GUITARIST, .trainerName = _("DAKOTA"), .speechBefore = {EC_WORD_YOU, EC_WORD_HAVE, EC_WORD_TO, EC_WORD_DANCE, EC_WORD_WITH, EC_WORD_POWER}, .speechWin = {EC_WORD_GOT, EC_WORD_IT, EC_WORD_QUES, EC_WORD_DANCE, EC_WORD_WITH, EC_WORD_POWER}, .speechLose = {EC_WORD_OKAY, EC_WORD_YOU, EC_WORD_UNDERSTAND, EC_WORD_ALL_RIGHT, EC_WORD_EXCL, 0xFFFF}, - .monSets = gBattleFrontierTrainerMons_Dakota + .monSet = gBattleFrontierTrainerMons_Dakota }, - [78] = { + [FRONTIER_TRAINER_BRAYDEN] = { .facilityClass = FACILITY_CLASS_BIRD_KEEPER, .trainerName = _("BRAYDEN"), .speechBefore = {EC_WORD_COLOR_CHANGE, EC_WORD_VERSION, EC_WORD_TOYS, EC_WORD_ARE, EC_WORD_USELESS, EC_WORD_EXCL}, .speechWin = {EC_WORD_I, EC_WORD_ONLY, EC_WORD_COLLECT, EC_WORD_NORMAL, EC_WORD_VERSION, EC_WORD_TOYS}, .speechLose = {EC_WORD_I, EC_MOVE2(ATTRACT), EC_WORD_COLOR_CHANGE, EC_WORD_VERSION, EC_WORD_TOYS, EC_WORD_ELLIPSIS}, - .monSets = gBattleFrontierTrainerMons_Brayden + .monSet = gBattleFrontierTrainerMons_Brayden }, - [79] = { + [FRONTIER_TRAINER_CORSON] = { .facilityClass = FACILITY_CLASS_BIRD_KEEPER, .trainerName = _("CORSON"), .speechBefore = {EC_WORD_I, EC_WORD_GET, EC_WORD_TO, EC_MOVE2(BEAT_UP), EC_WORD_ON, EC_WORD_YOU}, .speechWin = {EC_WORD_TOO, EC_WORD_EASY, EC_WORD_EXCL, EC_WORD_I_AM, EC_WORD_SO, EC_WORD_COOL}, .speechLose = {EC_WORD_WHY, EC_WORD_QUES_EXCL, 0xFFFF, EC_WORD_I, EC_MOVE2(CURSE), EC_WORD_YOU}, - .monSets = gBattleFrontierTrainerMons_Corson + .monSet = gBattleFrontierTrainerMons_Corson }, - [80] = { + [FRONTIER_TRAINER_TREVIN] = { .facilityClass = FACILITY_CLASS_BIRD_KEEPER, .trainerName = _("TREVIN"), .speechBefore = {EC_WORD_THERE, EC_WORD_IS, EC_WORD_NONE, EC_WORD_BETTER, EC_WORD_THAN, EC_WORD_ME}, .speechWin = {EC_WORD_YES_SIR_EXCL, 0xFFFF, 0xFFFF, EC_WORD_I_AM, EC_WORD_THE, EC_WORD_BEST}, .speechLose = {EC_WORD_SERIOUS, EC_WORD_QUES_EXCL, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}, - .monSets = gBattleFrontierTrainerMons_Trevin + .monSet = gBattleFrontierTrainerMons_Trevin }, - [81] = { + [FRONTIER_TRAINER_PATRICK] = { .facilityClass = FACILITY_CLASS_SAILOR, .trainerName = _("PATRICK"), .speechBefore = {EC_WORD_I_AM, EC_WORD_PERFECT, EC_WORD_EXCL, EC_WORD_GIVE_UP, EC_WORD_NOW, 0xFFFF}, .speechWin = {EC_WORD_DON_T, EC_WORD_BE, EC_WORD_DISAPPOINTED, EC_WORD_I_AM, EC_WORD_PERFECT, 0xFFFF}, .speechLose = {EC_WORD_BUT, EC_WORD_HOW, EC_WORD_QUES, EC_WORD_I_AM, EC_WORD_PERFECT, EC_WORD_ELLIPSIS}, - .monSets = gBattleFrontierTrainerMons_Patrick + .monSet = gBattleFrontierTrainerMons_Patrick }, - [82] = { + [FRONTIER_TRAINER_KADEN] = { .facilityClass = FACILITY_CLASS_SAILOR, .trainerName = _("KADEN"), .speechBefore = {EC_WORD_WHAT, EC_WORD_ARE, EC_WORD_YOU, EC_WORD_UP, EC_WORD_TO, EC_WORD_QUES}, .speechWin = {EC_WORD_YOU, EC_WORD_WERE, EC_WORD_A, EC_WORD_SURPRISE, EC_WORD_TO_ME, EC_WORD_EXCL}, .speechLose = {EC_WORD_I, EC_WORD_DON_T, EC_WORD_KNOW, EC_WORD_WHO, EC_WORD_I_AM, EC_WORD_ELLIPSIS}, - .monSets = gBattleFrontierTrainerMons_Kaden + .monSet = gBattleFrontierTrainerMons_Kaden }, - [83] = { + [FRONTIER_TRAINER_MAXWELL] = { .facilityClass = FACILITY_CLASS_SAILOR, .trainerName = _("MAXWELL"), .speechBefore = {EC_WORD_HEY_THERE, EC_WORD_WHO_IS, EC_WORD_YOUR, EC_WORD_RIVAL, EC_WORD_QUES, 0xFFFF}, .speechWin = {EC_WORD_MY, EC_WORD_RIVAL, EC_WORD_IS, EC_WORD_MY, EC_WORD_GIRL, EC_WORD_FRIEND}, .speechLose = {EC_WORD_I_AM, EC_WORD_MAKING, EC_WORD_YOU, EC_WORD_MY, EC_WORD_RIVAL, 0xFFFF}, - .monSets = gBattleFrontierTrainerMons_Maxwell + .monSet = gBattleFrontierTrainerMons_Maxwell }, - [84] = { + [FRONTIER_TRAINER_DARYL] = { .facilityClass = FACILITY_CLASS_HIKER, .trainerName = _("DARYL"), .speechBefore = {EC_WORD_I, EC_WORD_ONLY, EC_WORD_KNOW, EC_WORD_HOW, EC_WORD_TO, EC_MOVE(CHARGE)}, .speechWin = {EC_WORD_AM, EC_WORD_I, EC_WORD_OVERWHELMING, EC_WORD_OR, EC_WORD_WHAT, EC_WORD_QUES}, .speechLose = {EC_WORD_YOU_RE, EC_WORD_GOING, EC_WORD_TO, EC_WORD_A, EC_WORD_LEGEND, EC_WORD_EXCL}, - .monSets = gBattleFrontierTrainerMons_Daryl + .monSet = gBattleFrontierTrainerMons_Daryl }, - [85] = { + [FRONTIER_TRAINER_KENNETH] = { .facilityClass = FACILITY_CLASS_HIKER, .trainerName = _("KENNETH"), .speechBefore = {EC_WORD_YOU, EC_WORD_BETTER, EC_WORD_NOT, EC_MOVE2(SLACK_OFF), EC_WORD_WITH, EC_WORD_ME}, .speechWin = {EC_WORD_DID, EC_WORD_MY, EC_MOVE2(TAUNT), EC_WORD_INTIMIDATE, EC_WORD_YOU, EC_WORD_QUES}, .speechLose = {EC_WORD_I_AM, EC_WORD_SORRY, EC_WORD_ELLIPSIS, 0xFFFF, 0xFFFF, 0xFFFF}, - .monSets = gBattleFrontierTrainerMons_Kenneth + .monSet = gBattleFrontierTrainerMons_Kenneth }, - [86] = { + [FRONTIER_TRAINER_RICH] = { .facilityClass = FACILITY_CLASS_HIKER, .trainerName = _("RICH"), .speechBefore = {EC_WORD_YOUR, EC_MOVE(FACADE), EC_WORD_DOESN_T, EC_MOVE2(TRICK), EC_WORD_ME, 0xFFFF}, .speechWin = {EC_WORD_SERIOUSLY, EC_WORD_ARE, EC_WORD_YOU, EC_WORD_REALLY, EC_WORD_OK_QUES, 0xFFFF}, .speechLose = {EC_WORD_THAT_WAS, EC_WORD_REALLY, EC_WORD_TOUGH, EC_WORD_ON, EC_WORD_ME, 0xFFFF}, - .monSets = gBattleFrontierTrainerMons_Rich + .monSet = gBattleFrontierTrainerMons_Rich }, - [87] = { + [FRONTIER_TRAINER_CADEN] = { .facilityClass = FACILITY_CLASS_KINDLER, .trainerName = _("CADEN"), .speechBefore = {EC_WORD_I, EC_WORD_CAN_T, EC_WORD_BE, EC_WORD_DEFEATED, EC_WORD_EXCL, 0xFFFF}, .speechWin = {EC_WORD_FIRE, EC_WORD_EXCL, 0xFFFF, EC_WORD_FIRE, EC_WORD_EXCL_EXCL, 0xFFFF}, .speechLose = {EC_WORD_I_AM, EC_WORD_TIRED, EC_WORD_ELLIPSIS, EC_WORD_IT_S, EC_WORD_SO, EC_WORD_HOT}, - .monSets = gBattleFrontierTrainerMons_Caden + .monSet = gBattleFrontierTrainerMons_Caden }, - [88] = { + [FRONTIER_TRAINER_MARLON] = { .facilityClass = FACILITY_CLASS_KINDLER, .trainerName = _("MARLON"), .speechBefore = {EC_WORD_A, EC_WORD_POKEDEX, EC_WORD_IS, EC_WORD_A_LITTLE, EC_WORD_RADIO, EC_WORD_QUES}, .speechWin = {EC_WORD_A_LITTLE, EC_WORD_RADIO, EC_WORD_HUH_QUES, EC_WORD_THAT_S, EC_WORD_TOTALLY, EC_WORD_COOL}, .speechLose = {EC_WORD_IT_S, EC_WORD_NOT, EC_WORD_QUES, EC_WORD_IS, EC_WORD_POKENAV, EC_WORD_QUES}, - .monSets = gBattleFrontierTrainerMons_Marlon + .monSet = gBattleFrontierTrainerMons_Marlon }, - [89] = { + [FRONTIER_TRAINER_NASH] = { .facilityClass = FACILITY_CLASS_KINDLER, .trainerName = _("NASH"), .speechBefore = {EC_WORD_I_AM, EC_WORD_ON, EC_WORD_FIRE, EC_WORD_BABY, EC_WORD_EXCL, 0xFFFF}, .speechWin = {EC_WORD_I, EC_WORD_LEFT, EC_WORD_YOU, EC_WORD_JUST, EC_WORD_AN, EC_MOVE2(EMBER)}, .speechLose = {EC_WORD_AIYEEH, EC_WORD_EXCL_EXCL, 0xFFFF, EC_WORD_NO, EC_WORD_WATER, EC_WORD_PLEASE}, - .monSets = gBattleFrontierTrainerMons_Nash + .monSet = gBattleFrontierTrainerMons_Nash }, - [90] = { + [FRONTIER_TRAINER_ROBBY] = { .facilityClass = FACILITY_CLASS_RUNNING_TRIATHLETE_M, .trainerName = _("ROBBY"), .speechBefore = {EC_WORD_HAHAHA, EC_WORD_EXCL, EC_WORD_HAPPY, EC_WORD_TO, EC_WORD_MEET_YOU, EC_WORD_EXCL}, .speechWin = {EC_WORD_I_AM, EC_WORD_THE, EC_WORD_LEADER, EC_WORD_WITH, EC_WORD_REFRESHING, EC_WORD_SERENE_GRACE}, .speechLose = {EC_WORD_I, EC_WORD_WILL, EC_MOVE(THRASH), EC_WORD_MY, EC_WORD_TOYS, EC_WORD_EXCL}, - .monSets = gBattleFrontierTrainerMons_Robby + .monSet = gBattleFrontierTrainerMons_Robby }, - [91] = { + [FRONTIER_TRAINER_REECE] = { .facilityClass = FACILITY_CLASS_RUNNING_TRIATHLETE_M, .trainerName = _("REECE"), .speechBefore = {EC_WORD_MY, EC_MOVE2(QUICK_ATTACK), EC_WORD_CAN, EC_WORD_BEAT, EC_WORD_A, EC_MOVE2(TELEPORT)}, .speechWin = {EC_WORD_LIKE, EC_WORD_I, EC_WORD_SAID, EC_WORD_I_AM, EC_WORD_DARN, EC_WORD_FAST}, .speechLose = {EC_WORD_I_WAS, EC_WORD_KIDDING, EC_WORD_ABOUT, EC_WORD_THAT, EC_MOVE2(TELEPORT), EC_WORD_THING}, - .monSets = gBattleFrontierTrainerMons_Reece + .monSet = gBattleFrontierTrainerMons_Reece }, - [92] = { + [FRONTIER_TRAINER_KATHRYN] = { .facilityClass = FACILITY_CLASS_RUNNING_TRIATHLETE_F, .trainerName = _("KATHRYN"), .speechBefore = {EC_WORD_I, EC_WORD_DON_T, EC_WORD_TRAIN, EC_WORD_GOOD, EC_WORD_ENOUGH, EC_WORD_QUES}, .speechWin = {EC_WORD_DON_T, EC_MOVE2(TAUNT), EC_WORD_ME, EC_WORD_LIKE, EC_WORD_THAT, EC_WORD_OK_QUES}, .speechLose = {EC_WORD_WHY, EC_WORD_COULDN_T, EC_WORD_I, EC_WORD_WIN, EC_WORD_THIS, EC_WORD_QUES}, - .monSets = gBattleFrontierTrainerMons_Kathryn + .monSet = gBattleFrontierTrainerMons_Kathryn }, - [93] = { + [FRONTIER_TRAINER_ELLEN] = { .facilityClass = FACILITY_CLASS_RUNNING_TRIATHLETE_F, .trainerName = _("ELLEN"), .speechBefore = {EC_WORD_CRUSH, EC_WORD_YOU, EC_WORD_LIKE, EC_WORD_AN, EC_WORD_EGG, EC_WORD_EXCL}, .speechWin = {EC_WORD_THAT_WAS, EC_WORD_A, EC_WORD_TASTY, EC_WORD_VICTORY, EC_WORD_FOR, EC_WORD_ME}, .speechLose = {EC_WORD_TOO, EC_WORD_TOUGH, EC_WORD_TO, EC_WORD_CRUSH, EC_WORD_EXCL, 0xFFFF}, - .monSets = gBattleFrontierTrainerMons_Ellen + .monSet = gBattleFrontierTrainerMons_Ellen }, - [94] = { + [FRONTIER_TRAINER_RAMON] = { .facilityClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_M, .trainerName = _("RAMON"), .speechBefore = {EC_WORD_OKAY, EC_WORD_EXCL, 0xFFFF, EC_WORD_THIS, EC_WORD_IS, EC_WORD_PERFECTION}, .speechWin = {EC_WORD_I_AM, EC_WORD_HAPPY, EC_WORD_THAT, EC_WORD_I, EC_WORD_WON, EC_WORD_EXCL}, .speechLose = {EC_WORD_IT_S, EC_WORD_A, EC_WORD_SECRET, EC_WORD_WHY, EC_WORD_I_AM, EC_WORD_HAPPY}, - .monSets = gBattleFrontierTrainerMons_Ramon + .monSet = gBattleFrontierTrainerMons_Ramon }, - [95] = { + [FRONTIER_TRAINER_ARTHUR] = { .facilityClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_M, .trainerName = _("ARTHUR"), .speechBefore = {EC_WORD_HERE_I_COME, EC_WORD_FEELING, EC_WORD_READY, EC_WORD_FOR, EC_WORD_IT, EC_WORD_ALL}, .speechWin = {EC_WORD_THAT_S_IT_EXCL, 0xFFFF, 0xFFFF, EC_WORD_THAT_WAS, EC_WORD_FABULOUS, EC_WORD_EXCL}, .speechLose = {EC_WORD_THAT_WAS, EC_WORD_NOT, EC_WORD_WHAT, EC_WORD_I, EC_WORD_NEED, 0xFFFF}, - .monSets = gBattleFrontierTrainerMons_Arthur + .monSet = gBattleFrontierTrainerMons_Arthur }, - [96] = { + [FRONTIER_TRAINER_ALONDRA] = { .facilityClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_F, .trainerName = _("ALONDRA"), .speechBefore = {EC_WORD_EVERY, EC_WORD_DAY, EC_WORD_IS, EC_WORD_A, EC_WORD_GREAT, EC_WORD_DAY}, .speechWin = {EC_WORD_MY, EC_MOVE2(DIVE), EC_WORD_WILL, EC_WORD_BE, EC_WORD_A, EC_WORD_LEGEND}, .speechLose = {EC_WORD_MY, EC_MOVE2(DIVE), EC_WORD_LEFT, EC_WORD_ME, EC_WORD_COLD, EC_WORD_ELLIPSIS}, - .monSets = gBattleFrontierTrainerMons_Alondra + .monSet = gBattleFrontierTrainerMons_Alondra }, - [97] = { + [FRONTIER_TRAINER_ADRIANA] = { .facilityClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_F, .trainerName = _("ADRIANA"), .speechBefore = {EC_WORD_COME, EC_WORD_SEE, EC_WORD_AN, EC_WORD_INCREDIBLE, EC_WORD_SWIFT_SWIM, EC_WORD_EXCL}, .speechWin = {EC_WORD_I, EC_WORD_MAKE, EC_WORD_IT, EC_WORD_LOOK, EC_WORD_SO, EC_WORD_EASY}, .speechLose = {EC_WORD_I_AM, EC_WORD_FEELING, EC_MOVE2(BEAT_UP), EC_WORD_AND, EC_WORD_TIRED, 0xFFFF}, - .monSets = gBattleFrontierTrainerMons_Adriana + .monSet = gBattleFrontierTrainerMons_Adriana }, - [98] = { + [FRONTIER_TRAINER_MALIK] = { .facilityClass = FACILITY_CLASS_CYCLING_TRIATHLETE_M, .trainerName = _("MALIK"), .speechBefore = {EC_WORD_OH, EC_WORD_NOT, EC_WORD_ANOTHER, EC_WORD_BATTLE, EC_WORD_PLEASE, EC_WORD_ELLIPSIS}, .speechWin = {EC_WORD_I, EC_WORD_FINALLY, EC_WORD_WON, EC_WORD_ELLIPSIS, EC_WORD_I_AM, EC_WORD_TIRED}, .speechLose = {EC_WORD_I, EC_WORD_FINALLY, EC_WORD_LOST, EC_WORD_ELLIPSIS, EC_WORD_I_AM, EC_WORD_TIRED}, - .monSets = gBattleFrontierTrainerMons_Malik + .monSet = gBattleFrontierTrainerMons_Malik }, - [99] = { + [FRONTIER_TRAINER_JILL] = { .facilityClass = FACILITY_CLASS_CYCLING_TRIATHLETE_F, .trainerName = _("JILL"), .speechBefore = {EC_WORD_I_AM, EC_WORD_THE, EC_MOVE2(QUICK_ATTACK), EC_WORD_TRAINER, EC_WORD_EXCL, 0xFFFF}, .speechWin = {EC_WORD_THE, EC_MOVE2(QUICK_ATTACK), EC_WORD_TRAINER, EC_WORD_WINS, EC_WORD_EXCL, 0xFFFF}, .speechLose = {EC_WORD_THE, EC_MOVE2(QUICK_ATTACK), EC_WORD_TRAINER, EC_WORD_GIVES, EC_WORD_UP, EC_WORD_EXCL}, - .monSets = gBattleFrontierTrainerMons_Jill + .monSet = gBattleFrontierTrainerMons_Jill }, - [100] = { + [FRONTIER_TRAINER_ERIK] = { .facilityClass = FACILITY_CLASS_RUNNING_TRIATHLETE_M, .trainerName = _("ERIK"), .speechBefore = {EC_WORD_I_AM, EC_WORD_THE, EC_WORD_SPEED_BOOST, EC_WORD_HERO, EC_WORD_EXCL, 0xFFFF}, .speechWin = {EC_WORD_THANK_YOU, EC_WORD_FROM, EC_WORD_THE, EC_WORD_SPEED_BOOST, EC_WORD_HERO, EC_WORD_EXCL}, .speechLose = {EC_WORD_WAAAH, EC_WORD_EXCL_EXCL, 0xFFFF, EC_WORD_NO, EC_WORD_NO, EC_WORD_EXCL_EXCL}, - .monSets = gBattleFrontierTrainerMons_Erik + .monSet = gBattleFrontierTrainerMons_Erik }, - [101] = { + [FRONTIER_TRAINER_YAZMIN] = { .facilityClass = FACILITY_CLASS_RUNNING_TRIATHLETE_F, .trainerName = _("YAZMIN"), .speechBefore = {EC_WORD_I, EC_WORD_WOULD, EC_WORD_RATHER, EC_WORD_RUN, EC_WORD_THAN, EC_WORD_BIKE}, .speechWin = {EC_WORD_YES, EC_WORD_I, EC_WORD_WOULD, EC_WORD_MUCH, EC_WORD_RATHER, EC_WORD_RUN}, .speechLose = {EC_WORD_BYE_BYE, EC_WORD_EXCL, EC_WORD_I_AM, EC_WORD_GOING, EC_WORD_TO, EC_WORD_RUN_AWAY}, - .monSets = gBattleFrontierTrainerMons_Yazmin + .monSet = gBattleFrontierTrainerMons_Yazmin }, - [102] = { + [FRONTIER_TRAINER_JAMAL] = { .facilityClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_M, .trainerName = _("JAMAL"), .speechBefore = {EC_WORD_I_AM, EC_WORD_GOING, EC_WORD_TO, EC_WORD_BE, EC_WORD_A, EC_WORD_FATHER}, .speechWin = {EC_WORD_I, EC_WORD_CAN_T, EC_WORD_WAIT, EC_WORD_FOR, EC_WORD_MY, EC_WORD_BABY}, .speechLose = {EC_WORD_MY, EC_WORD_BABY, EC_WORD_WILL, EC_WORD_BE, EC_WORD_TOTALLY, EC_WORD_AWESOME}, - .monSets = gBattleFrontierTrainerMons_Jamal + .monSet = gBattleFrontierTrainerMons_Jamal }, - [103] = { + [FRONTIER_TRAINER_LESLIE] = { .facilityClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_F, .trainerName = _("LESLIE"), .speechBefore = {EC_WORD_I_AM, EC_WORD_GOING, EC_WORD_TO, EC_WORD_BE, EC_WORD_A, EC_WORD_MOTHER}, .speechWin = {EC_WORD_A, EC_WORD_BABY, EC_WORD_WILL, EC_WORD_BE, EC_WORD_A_LITTLE, EC_WORD_CHALLENGE}, .speechLose = {EC_WORD_I_AM, EC_WORD_TOO, EC_WORD_HAPPY, EC_WORD_TO, EC_WORD_BE, EC_WORD_ANGRY}, - .monSets = gBattleFrontierTrainerMons_Leslie + .monSet = gBattleFrontierTrainerMons_Leslie }, - [104] = { + [FRONTIER_TRAINER_DAVE] = { .facilityClass = FACILITY_CLASS_CYCLING_TRIATHLETE_M, .trainerName = _("DAVE"), .speechBefore = {EC_WORD_WHAT, EC_WORD_SHOULD, EC_WORD_I, EC_WORD_DO, EC_WORD_TODAY, EC_WORD_QUES}, .speechWin = {EC_WORD_I, EC_WORD_SHOULD, EC_WORD_ENJOY, EC_WORD_SOME, EC_WORD_SPORTS, EC_WORD_EXCL}, .speechLose = {EC_WORD_I, EC_WORD_WILL, EC_WORD_GO, EC_WORD_PLAY, EC_WORD_A, EC_WORD_GAME}, - .monSets = gBattleFrontierTrainerMons_Dave + .monSet = gBattleFrontierTrainerMons_Dave }, - [105] = { + [FRONTIER_TRAINER_CARLO] = { .facilityClass = FACILITY_CLASS_CYCLING_TRIATHLETE_M, .trainerName = _("CARLO"), .speechBefore = {EC_WORD_HAH, EC_WORD_EXCL_EXCL, 0xFFFF, EC_WORD_YEAH, EC_WORD_EXCL_EXCL, 0xFFFF}, .speechWin = {EC_WORD_I, EC_WORD_DO, EC_WORD_THINGS, EC_WORD_AT, EC_MOVE(EXTREME_SPEED), EC_WORD_EXCL}, .speechLose = {EC_WORD_I, EC_WORD_LOST, EC_WORD_AT, EC_MOVE(EXTREME_SPEED), EC_WORD_ELLIPSIS, 0xFFFF}, - .monSets = gBattleFrontierTrainerMons_Carlo + .monSet = gBattleFrontierTrainerMons_Carlo }, - [106] = { + [FRONTIER_TRAINER_EMILIA] = { .facilityClass = FACILITY_CLASS_CYCLING_TRIATHLETE_F, .trainerName = _("EMILIA"), .speechBefore = {EC_WORD_ME, EC_WORD_WORRY, EC_WORD_QUES, EC_WORD_I, EC_WORD_HAVE, EC_WORD_NONE}, .speechWin = {EC_WORD_AHAHA, EC_WORD_SEE, EC_WORD_QUES, EC_WORD_THAT_WAS, EC_WORD_FANTASTIC, EC_WORD_EXCL}, .speechLose = {EC_WORD_AHAHA, EC_WORD_SEE, EC_WORD_QUES, EC_WORD_THAT_WAS, EC_WORD_ENTERTAINING, EC_WORD_EXCL}, - .monSets = gBattleFrontierTrainerMons_Emilia + .monSet = gBattleFrontierTrainerMons_Emilia }, - [107] = { + [FRONTIER_TRAINER_DALIA] = { .facilityClass = FACILITY_CLASS_CYCLING_TRIATHLETE_F, .trainerName = _("DALIA"), .speechBefore = {EC_WORD_MY, EC_WORD_BIKE, EC_WORD_IS, EC_WORD_VERY, EC_WORD_EXPENSIVE, 0xFFFF}, .speechWin = {EC_WORD_DON_T, EC_WORD_COME, EC_WORD_NEAR, EC_WORD_MY, EC_WORD_BIKE, EC_WORD_EXCL}, .speechLose = {EC_WORD_MY, EC_WORD_BIKE, EC_WORD_IS, EC_WORD_MY, EC_WORD_BEST, EC_WORD_FRIEND}, - .monSets = gBattleFrontierTrainerMons_Dalia + .monSet = gBattleFrontierTrainerMons_Dalia }, - [108] = { + [FRONTIER_TRAINER_HITOMI] = { .facilityClass = FACILITY_CLASS_BLACK_BELT, .trainerName = _("HITOMI"), .speechBefore = {EC_WORD_YEAH, EC_WORD_EXCL_EXCL, 0xFFFF, EC_WORD_HAH, EC_WORD_EXCL_EXCL, 0xFFFF}, .speechWin = {EC_WORD_WHAT, EC_WORD_QUES_EXCL, 0xFFFF, EC_WORD_I, EC_WORD_WON, EC_WORD_QUES_EXCL}, .speechLose = {EC_WORD_AIYEEH, EC_WORD_EXCL_EXCL, 0xFFFF, EC_WORD_I_AM, EC_WORD_SORRY, EC_WORD_EXCL_EXCL}, - .monSets = gBattleFrontierTrainerMons_Hitomi + .monSet = gBattleFrontierTrainerMons_Hitomi }, - [109] = { + [FRONTIER_TRAINER_RICARDO] = { .facilityClass = FACILITY_CLASS_BLACK_BELT, .trainerName = _("RICARDO"), .speechBefore = {EC_WORD_COME_ON, EC_WORD_EXCL, EC_WORD_PLAY, EC_WORD_TIME, EC_WORD_IS, EC_WORD_OVER}, .speechWin = {EC_WORD_YOU_RE, EC_WORD_OUT, EC_WORD_OF, EC_WORD_HERE, EC_WORD_EXCL, 0xFFFF}, .speechLose = {EC_WORD_PLEASE, EC_WORD_DON_T, EC_WORD_HIT, EC_WORD_ME, EC_WORD_EXCL, 0xFFFF}, - .monSets = gBattleFrontierTrainerMons_Ricardo + .monSet = gBattleFrontierTrainerMons_Ricardo }, - [110] = { + [FRONTIER_TRAINER_SHIZUKA] = { .facilityClass = FACILITY_CLASS_BLACK_BELT, .trainerName = _("SHIZUKA"), .speechBefore = {EC_WORD_SHOW, EC_WORD_ME, EC_WORD_THAT, EC_WORD_YOU_RE, EC_WORD_SERIOUS, EC_WORD_EXCL}, .speechWin = {EC_WORD_I, EC_WORD_WON_T, EC_WORD_FORGET, EC_WORD_ABOUT, EC_WORD_YOU, 0xFFFF}, .speechLose = {EC_WORD_YOU_RE, EC_WORD_PERFECT, EC_WORD_IN, EC_WORD_EVERY, EC_WORD_WAY, EC_WORD_EXCL}, - .monSets = gBattleFrontierTrainerMons_Shizuka + .monSet = gBattleFrontierTrainerMons_Shizuka }, - [111] = { + [FRONTIER_TRAINER_JOANA] = { .facilityClass = FACILITY_CLASS_BATTLE_GIRL, .trainerName = _("JOANA"), .speechBefore = {EC_WORD_YOU_RE, EC_WORD_GOING, EC_WORD_TO, EC_WORD_LOSE, EC_WORD_RIGHT, EC_WORD_AWAY}, .speechWin = {EC_WORD_I_AM, EC_WORD_THE, EC_WORD_WINNER, EC_WORD_HEAR, EC_WORD_ME, EC_MOVE2(ROAR)}, .speechLose = {EC_WORD_I, EC_WORD_REFUSE, EC_WORD_TO, EC_WORD_ACCEPT, EC_WORD_THAT, EC_MOVE(OUTRAGE)}, - .monSets = gBattleFrontierTrainerMons_Joana + .monSet = gBattleFrontierTrainerMons_Joana }, - [112] = { + [FRONTIER_TRAINER_KELLY] = { .facilityClass = FACILITY_CLASS_BATTLE_GIRL, .trainerName = _("KELLY"), .speechBefore = {EC_WORD_MY, EC_WORD_NIGHT, EC_WORD_SCHOOL, EC_WORD_IS, EC_WORD_REALLY, EC_WORD_SCARY}, .speechWin = {EC_WORD_A, EC_WORD_LADY, EC_WORD_GHOST, EC_WORD_APPEARS, EC_WORD_THERE, 0xFFFF}, .speechLose = {EC_WORD_THE, EC_WORD_HOME, EC_WORD_WORK, EC_WORD_IS, EC_WORD_AWFULLY, EC_WORD_SCARY}, - .monSets = gBattleFrontierTrainerMons_Kelly + .monSet = gBattleFrontierTrainerMons_Kelly }, - [113] = { + [FRONTIER_TRAINER_RAYNA] = { .facilityClass = FACILITY_CLASS_BATTLE_GIRL, .trainerName = _("RAYNA"), .speechBefore = {EC_WORD_I_AM, EC_WORD_NO_1, EC_WORD_WHEN, EC_WORD_IT_S, EC_WORD_ABOUT, EC_WORD_POWER}, .speechWin = {EC_WORD_UNDERSTAND, EC_WORD_MY, EC_WORD_POWER, EC_WORD_NOW, EC_WORD_QUES, 0xFFFF}, .speechLose = {EC_WORD_TERRIBLE, EC_WORD_ELLIPSIS, 0xFFFF, EC_WORD_I_AM, EC_WORD_TERRIBLE, EC_WORD_ELLIPSIS}, - .monSets = gBattleFrontierTrainerMons_Rayna + .monSet = gBattleFrontierTrainerMons_Rayna }, - [114] = { + [FRONTIER_TRAINER_EVAN] = { .facilityClass = FACILITY_CLASS_EXPERT_M, .trainerName = _("EVAN"), .speechBefore = {EC_WORD_EVERY, EC_WORD_BATTLE, EC_WORD_HAS, EC_WORD_A, EC_WORD_SMELL, 0xFFFF}, .speechWin = {EC_WORD_OH, EC_WORD_EXCL, EC_WORD_THE, EC_MOVE(SWEET_SCENT), EC_WORD_OF, EC_WORD_VICTORY}, .speechLose = {EC_WORD_THE, EC_WORD_AWFUL, EC_WORD_STENCH, EC_WORD_OF, EC_WORD_A, EC_WORD_LOSS}, - .monSets = gBattleFrontierTrainerMons_Evan + .monSet = gBattleFrontierTrainerMons_Evan }, - [115] = { + [FRONTIER_TRAINER_JORDAN] = { .facilityClass = FACILITY_CLASS_EXPERT_M, .trainerName = _("JORDAN"), .speechBefore = {EC_WORD_GOOD, EC_WORD_EXCL, 0xFFFF, EC_WORD_COME_ON, EC_WORD_EXCL_EXCL, 0xFFFF}, .speechWin = {EC_WORD_YOU, EC_WORD_CAN_T, EC_WORD_BEAT, EC_WORD_ME, EC_WORD_EXCL, 0xFFFF}, .speechLose = {EC_WORD_WHAT, EC_WORD_QUES_EXCL, 0xFFFF, EC_WORD_BUT, EC_WORD_HOW, EC_WORD_QUES}, - .monSets = gBattleFrontierTrainerMons_Jordan + .monSet = gBattleFrontierTrainerMons_Jordan }, - [116] = { + [FRONTIER_TRAINER_JOEL] = { .facilityClass = FACILITY_CLASS_EXPERT_M, .trainerName = _("JOEL"), .speechBefore = {EC_WORD_FUFUFU, EC_WORD_ELLIPSIS, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}, .speechWin = {EC_WORD_GIGGLE, EC_WORD_ELLIPSIS, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}, .speechLose = {EC_WORD_HAHAHA, EC_WORD_ELLIPSIS, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}, - .monSets = gBattleFrontierTrainerMons_Joel + .monSet = gBattleFrontierTrainerMons_Joel }, - [117] = { + [FRONTIER_TRAINER_KRISTEN] = { .facilityClass = FACILITY_CLASS_EXPERT_F, .trainerName = _("KRISTEN"), .speechBefore = {EC_WORD_HAHAHA, EC_WORD_ELLIPSIS, 0xFFFF, EC_WORD_A, EC_WORD_KID, EC_WORD_ELLIPSIS}, .speechWin = {EC_WORD_JUST, EC_WORD_A_LITTLE, EC_WORD_KID, EC_WORD_AFTER, EC_WORD_ALL, EC_WORD_EXCL}, .speechLose = {EC_WORD_A, EC_WORD_TOUGH, EC_WORD_KID, EC_WORD_HUH_QUES, EC_WORD_HUMPH, EC_WORD_EXCL}, - .monSets = gBattleFrontierTrainerMons_Kristen + .monSet = gBattleFrontierTrainerMons_Kristen }, - [118] = { + [FRONTIER_TRAINER_SELPHY] = { .facilityClass = FACILITY_CLASS_EXPERT_F, .trainerName = _("SELPHY"), .speechBefore = {EC_WORD_HUH_QUES, EC_WORD_WHAT, EC_WORD_IS_IT_QUES, 0xFFFF, 0xFFFF, 0xFFFF}, .speechWin = {EC_WORD_OH, EC_WORD_YES, EC_WORD_EXCL, EC_WORD_WHY, EC_WORD_NOT, EC_WORD_QUES}, .speechLose = {EC_WORD_OH, EC_WORD_NO, EC_WORD_EXCL, EC_WORD_WHY, EC_WORD_NOT, EC_WORD_QUES}, - .monSets = gBattleFrontierTrainerMons_Selphy + .monSet = gBattleFrontierTrainerMons_Selphy }, - [119] = { + [FRONTIER_TRAINER_CHLOE] = { .facilityClass = FACILITY_CLASS_EXPERT_F, .trainerName = _("CHLOE"), .speechBefore = {EC_WORD_COME, EC_WORD_WE, EC_WORD_WILL, EC_WORD_DO, EC_WORD_BATTLE, EC_WORD_NOW}, .speechWin = {EC_WORD_MORE, EC_WORD_EXCL, 0xFFFF, EC_WORD_ANOTHER, EC_WORD_BATTLE, EC_WORD_EXCL}, .speechLose = {EC_WORD_OH, EC_WORD_EXCL, 0xFFFF, EC_WORD_STRONG, EC_WORD_YOU, EC_WORD_ARE}, - .monSets = gBattleFrontierTrainerMons_Chloe + .monSet = gBattleFrontierTrainerMons_Chloe }, - [120] = { + [FRONTIER_TRAINER_NORTON] = { .facilityClass = FACILITY_CLASS_PSYCHIC_M, .trainerName = _("NORTON"), .speechBefore = {EC_WORD_I, EC_WORD_KNOW, EC_WORD_ONLY, EC_WORD_YOU, 0xFFFF, 0xFFFF}, .speechWin = {EC_WORD_EXCUSE_ME, EC_WORD_BUT, EC_WORD_YOU_RE, EC_WORD_A, EC_WORD_PUSHOVER, EC_WORD_EXCL}, .speechLose = {EC_WORD_YOU_RE, EC_WORD_SOME, EC_WORD_KIND, EC_WORD_OF, EC_WORD_AWESOME, EC_WORD_EXCL}, - .monSets = gBattleFrontierTrainerMons_Norton + .monSet = gBattleFrontierTrainerMons_Norton }, - [121] = { + [FRONTIER_TRAINER_LUKAS] = { .facilityClass = FACILITY_CLASS_PSYCHIC_M, .trainerName = _("LUKAS"), .speechBefore = {EC_WORD_MY, EC_WORD_JOKING, EC_WORD_IS, EC_WORD_PRETTY, EC_WORD_TERRIBLE, EC_WORD_ELLIPSIS}, .speechWin = {EC_WORD_YOUR, EC_WORD_ROCK_HEAD, EC_WORD_EXISTS, EC_WORD_TO, EC_WORD_SHINE, EC_WORD_EXCL}, .speechLose = {EC_WORD_YOUR, EC_WORD_ROCK_HEAD, EC_WORD_COME, EC_WORD_TO, EC_WORD_SHINE, 0xFFFF}, - .monSets = gBattleFrontierTrainerMons_Lukas + .monSet = gBattleFrontierTrainerMons_Lukas }, - [122] = { + [FRONTIER_TRAINER_ZACH] = { .facilityClass = FACILITY_CLASS_PSYCHIC_M, .trainerName = _("ZACH"), .speechBefore = {EC_WORD_I_AM, EC_WORD_AN, EC_WORD_EXCELLENT, EC_MOVE2(MIMIC), EC_WORD_OF, EC_WORD_POKEMON}, .speechWin = {EC_WORD_I_AM, EC_WORD_HAPPY, EC_WORD_LIKE, EC_WORD_A_LITTLE, EC_POKEMON2(TOGEPI), EC_WORD_EXCL}, .speechLose = {EC_WORD_I_AM, EC_WORD_ANGRY, EC_WORD_LIKE, EC_WORD_A, EC_POKEMON2(MANKEY), EC_WORD_EXCL}, - .monSets = gBattleFrontierTrainerMons_Zach + .monSet = gBattleFrontierTrainerMons_Zach }, - [123] = { + [FRONTIER_TRAINER_KAITLYN] = { .facilityClass = FACILITY_CLASS_PSYCHIC_F, .trainerName = _("KAITLYN"), .speechBefore = {EC_WORD_I, EC_WORD_CRUSH, EC_WORD_THINGS, EC_WORD_WITH, EC_WORD_PSYCHIC, EC_WORD_POWER}, .speechWin = {EC_WORD_MY, EC_WORD_VICTORY, EC_WORD_WILL, EC_WORD_MAKE, EC_WORD_THE, EC_WORD_NEWS}, .speechLose = {EC_WORD_NO, EC_WORD_NO, EC_WORD_ELLIPSIS, EC_WORD_THIS, EC_WORD_WON_T, EC_WORD_DO}, - .monSets = gBattleFrontierTrainerMons_Kaitlyn + .monSet = gBattleFrontierTrainerMons_Kaitlyn }, - [124] = { + [FRONTIER_TRAINER_BREANNA] = { .facilityClass = FACILITY_CLASS_PSYCHIC_F, .trainerName = _("BREANNA"), .speechBefore = {EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_WILL, EC_WORD_CRUSH, EC_WORD_YOU, EC_WORD_EXCL}, .speechWin = {EC_WORD_HAVE, EC_WORD_SOME, EC_WORD_MORE, EC_WORD_OF, EC_WORD_THIS, EC_WORD_EXCL}, .speechLose = {EC_WORD_YOU, EC_WORD_HAVE, EC_WORD_GUTS, EC_WORD_AND, EC_WORD_SKILL, 0xFFFF}, - .monSets = gBattleFrontierTrainerMons_Breanna + .monSet = gBattleFrontierTrainerMons_Breanna }, - [125] = { + [FRONTIER_TRAINER_KENDRA] = { .facilityClass = FACILITY_CLASS_PSYCHIC_F, .trainerName = _("KENDRA"), .speechBefore = {EC_WORD_IF, EC_WORD_YOU_RE, EC_WORD_SMART, EC_WORD_STOP, EC_WORD_RIGHT, EC_WORD_NOW}, .speechWin = {EC_WORD_I, EC_WORD_SAID, EC_WORD_THAT, EC_WORD_YOU, EC_WORD_SHOULD, EC_WORD_STOP}, .speechLose = {EC_WORD_WHY, EC_WORD_DIDN_T, EC_WORD_YOU, EC_WORD_STOP, EC_WORD_QUES, 0xFFFF}, - .monSets = gBattleFrontierTrainerMons_Kendra + .monSet = gBattleFrontierTrainerMons_Kendra }, - [126] = { + [FRONTIER_TRAINER_MOLLY] = { .facilityClass = FACILITY_CLASS_HEX_MANIAC, .trainerName = _("MOLLY"), .speechBefore = {EC_WORD_WILL, EC_WORD_MY, EC_WORD_CUTE_CHARM, EC_MOVE2(ATTRACT), EC_WORD_YOU, EC_WORD_QUES}, .speechWin = {EC_WORD_YOUR, EC_WORD_POKEMON, EC_WORD_ARE, EC_WORD_MY, EC_WORD_TOYS, EC_WORD_NOW}, .speechLose = {EC_WORD_OH, EC_WORD_HOW, EC_WORD_COULD, EC_WORD_YOU, EC_WORD_QUES, 0xFFFF}, - .monSets = gBattleFrontierTrainerMons_Molly + .monSet = gBattleFrontierTrainerMons_Molly }, - [127] = { + [FRONTIER_TRAINER_JAZMIN] = { .facilityClass = FACILITY_CLASS_HEX_MANIAC, .trainerName = _("JAZMIN"), .speechBefore = {EC_WORD_I, EC_WORD_FORECAST, EC_WORD_TERRIBLE, EC_WORD_THINGS, EC_WORD_FOR, EC_WORD_YOU}, .speechWin = {EC_WORD_THERE, EC_WORD_WASN_T, EC_WORD_MY, EC_WORD_FORECAST, EC_WORD_RIGHT, EC_WORD_QUES}, .speechLose = {EC_WORD_MY, EC_MOVE2(FORESIGHT), EC_WORD_DIDN_T, EC_WORD_SHOW, EC_WORD_ME, EC_WORD_THIS}, - .monSets = gBattleFrontierTrainerMons_Jazmin + .monSet = gBattleFrontierTrainerMons_Jazmin }, - [128] = { + [FRONTIER_TRAINER_KELSEY] = { .facilityClass = FACILITY_CLASS_HEX_MANIAC, .trainerName = _("KELSEY"), .speechBefore = {EC_WORD_I, EC_WORD_HAVEN_T, EC_WORD_SLEPT, EC_WORD_IN, EC_WORD_DAYS, EC_WORD_ELLIPSIS}, .speechWin = {EC_WORD_MY, EC_WORD_SLEEP, EC_WORD_WILL, EC_WORD_BE, EC_WORD_EXCELLENT, EC_WORD_NOW}, .speechLose = {EC_WORD_YOU, EC_WORD_HAVE, EC_WORD_DESTROYED, EC_WORD_MY, EC_WORD_SLEEP, EC_WORD_ELLIPSIS}, - .monSets = gBattleFrontierTrainerMons_Kelsey + .monSet = gBattleFrontierTrainerMons_Kelsey }, - [129] = { + [FRONTIER_TRAINER_JALEN] = { .facilityClass = FACILITY_CLASS_POKEMANIAC, .trainerName = _("JALEN"), .speechBefore = {EC_WORD_I, EC_WORD_DON_T, EC_WORD_ALLOW, EC_WORD_POKEMON, EC_WORD_TO, EC_MOVE(THRASH)}, .speechWin = {EC_WORD_HAHAHA, EC_WORD_EXCL, EC_WORD_ARE, EC_WORD_YOU, EC_WORD_ANGRY, EC_WORD_QUES}, .speechLose = {EC_WORD_WHY, EC_WORD_IS, EC_WORD_THIS, EC_WORD_SO, EC_WORD_HARD, EC_WORD_QUES}, - .monSets = gBattleFrontierTrainerMons_Jalen + .monSet = gBattleFrontierTrainerMons_Jalen }, - [130] = { + [FRONTIER_TRAINER_GRIFFEN] = { .facilityClass = FACILITY_CLASS_POKEMANIAC, .trainerName = _("GRIFFEN"), .speechBefore = {EC_WORD_I, EC_MOVE2(SWALLOW), EC_MOVE2(SLUDGE), EC_WORD_TO, EC_MOVE2(TRANSFORM), EC_WORD_MYSELF}, .speechWin = {EC_WORD_I, EC_WORD_HAVE, EC_WORD_A, EC_MOVE(GROWTH), EC_WORD_OF, EC_MOVE2(ACID_ARMOR)}, .speechLose = {EC_WORD_I, EC_WORD_HAVE, EC_WORD_A, EC_MOVE(GROWTH), EC_WORD_OF, EC_WORD_SUCTION_CUPS}, - .monSets = gBattleFrontierTrainerMons_Griffen + .monSet = gBattleFrontierTrainerMons_Griffen }, - [131] = { + [FRONTIER_TRAINER_XANDER] = { .facilityClass = FACILITY_CLASS_POKEMANIAC, .trainerName = _("XANDER"), .speechBefore = {EC_WORD_I, EC_WORD_GOT, EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_ON, EC_WORD_RENTAL}, .speechWin = {EC_WORD_IT_S, EC_WORD_INCREDIBLE, EC_WORD_MY, EC_WORD_RENTAL, EC_WORD_POKEMON, EC_WORD_WON}, .speechLose = {EC_WORD_RENTAL, EC_WORD_POKEMON, EC_WORD_AREN_T, EC_WORD_UP, EC_WORD_TO, EC_MOVE2(SCRATCH)}, - .monSets = gBattleFrontierTrainerMons_Xander + .monSet = gBattleFrontierTrainerMons_Xander }, - [132] = { + [FRONTIER_TRAINER_MARVIN] = { .facilityClass = FACILITY_CLASS_GENTLEMAN, .trainerName = _("MARVIN"), .speechBefore = {EC_WORD_YOU_RE, EC_WORD_UP, EC_WORD_TO, EC_WORD_THE, EC_WORD_CHALLENGE, EC_WORD_QUES}, .speechWin = {EC_WORD_I, EC_WORD_DIDN_T, EC_WORD_THINK, EC_WORD_YOU_RE, EC_WORD_GOOD, EC_WORD_ENOUGH}, .speechLose = {EC_WORD_I_AM, EC_WORD_FEELING, EC_WORD_PERFECT, EC_WORD_THANK_YOU, EC_WORD_SO, EC_WORD_MUCH}, - .monSets = gBattleFrontierTrainerMons_Marvin + .monSet = gBattleFrontierTrainerMons_Marvin }, - [133] = { + [FRONTIER_TRAINER_BRENNAN] = { .facilityClass = FACILITY_CLASS_GENTLEMAN, .trainerName = _("BRENNAN"), .speechBefore = {EC_WORD_I, EC_MOVE2(WISH), EC_WORD_TO, EC_WORD_SEE, EC_WORD_THE, EC_WORD_NEWS}, .speechWin = {EC_WORD_COMICS, EC_WORD_GET, EC_WORD_DAMP, EC_WORD_FROM, EC_WORD_DRIZZLE, EC_WORD_QUES}, .speechLose = {EC_WORD_THE, EC_WORD_TIGHT, EC_WORD_MONEY, EC_WORD_LIVING, EC_WORD_CHANNEL, EC_WORD_QUES_EXCL}, - .monSets = gBattleFrontierTrainerMons_Brennan + .monSet = gBattleFrontierTrainerMons_Brennan }, - [134] = { + [FRONTIER_TRAINER_BALEY] = { .facilityClass = FACILITY_CLASS_BUG_MANIAC, .trainerName = _("BALEY"), .speechBefore = {EC_MOVE(SCREECH), EC_WORD_IS, EC_WORD_LIKE, EC_WORD_MUSIC, EC_WORD_TO_ME, EC_WORD_EXCL}, .speechWin = {EC_WORD_MY, EC_MOVE(SCREECH), EC_WORD_STRATEGY, EC_WORD_IS, EC_WORD_THE, EC_WORD_BEST}, .speechLose = {EC_WORD_YOU_RE, EC_WORD_SOUNDPROOF, EC_WORD_QUES, 0xFFFF, 0xFFFF, 0xFFFF}, - .monSets = gBattleFrontierTrainerMons_Baley + .monSet = gBattleFrontierTrainerMons_Baley }, - [135] = { + [FRONTIER_TRAINER_ZACKARY] = { .facilityClass = FACILITY_CLASS_RUIN_MANIAC, .trainerName = _("ZACKARY"), .speechBefore = {EC_WORD_CAN, EC_WORD_YOU, EC_MOVE(DIG), EC_WORD_IT, EC_WORD_YO, EC_WORD_QUES}, .speechWin = {EC_MOVE2(TAKE_DOWN), EC_WORD_TAKE, EC_WORD_A, EC_MOVE2(DIVE), EC_WORD_YO, EC_WORD_YO}, .speechLose = {EC_WORD_BREAK, EC_WORD_DOWN, EC_MOVE2(DIVE), EC_WORD_TIME, EC_WORD_FOR, EC_WORD_ME}, - .monSets = gBattleFrontierTrainerMons_Zackary + .monSet = gBattleFrontierTrainerMons_Zackary }, - [136] = { + [FRONTIER_TRAINER_GABRIEL] = { .facilityClass = FACILITY_CLASS_COLLECTOR, .trainerName = _("GABRIEL"), .speechBefore = {EC_MOVE2(POUND), EC_WORD_THE, EC_WORD_THICK_FAT, EC_WORD_ON, EC_WORD_MY, EC_MOVE2(BELLY_DRUM)}, .speechWin = {EC_MOVE2(POUND), EC_WORD_MY, EC_MOVE2(BELLY_DRUM), EC_MOVE2(POUND), EC_WORD_MY, EC_MOVE2(BELLY_DRUM)}, .speechLose = {EC_WORD_MY, EC_MOVE2(BELLY_DRUM), EC_WORD_WAS, EC_WORD_TOO_WEAK, EC_WORD_ELLIPSIS, 0xFFFF}, - .monSets = gBattleFrontierTrainerMons_Gabriel + .monSet = gBattleFrontierTrainerMons_Gabriel }, - [137] = { + [FRONTIER_TRAINER_EMILY] = { .facilityClass = FACILITY_CLASS_PARASOL_LADY, .trainerName = _("EMILY"), .speechBefore = {EC_WORD_HOW, EC_WORD_ABOUT, EC_WORD_A_TINY_BIT, EC_WORD_OF, EC_MOVE(HYPNOSIS), EC_WORD_QUES}, .speechWin = {EC_WORD_MY, EC_MOVE(HYPNOSIS), EC_WORD_STRATEGY, EC_WORD_WORKS, EC_WORD_TO, EC_WORD_PERFECTION}, .speechLose = {EC_WORD_MY, EC_MOVE(HYPNOSIS), EC_WORD_STRATEGY, EC_WORD_WENT, EC_WORD_BADLY, EC_WORD_ELLIPSIS}, - .monSets = gBattleFrontierTrainerMons_Emily + .monSet = gBattleFrontierTrainerMons_Emily }, - [138] = { + [FRONTIER_TRAINER_JORDYN] = { .facilityClass = FACILITY_CLASS_BEAUTY, .trainerName = _("JORDYN"), .speechBefore = {EC_WORD_YOU, EC_WORD_DON_T, EC_WORD_KNOW, EC_WORD_MY, EC_WORD_SECRET, EC_WORD_ELLIPSIS}, .speechWin = {EC_WORD_I_AM, EC_WORD_NOT, EC_WORD_AS, EC_WORD_I, EC_WORD_APPEAR, EC_WORD_ELLIPSIS}, .speechLose = {EC_WORD_BUT, EC_WORD_HOW, EC_WORD_DID, EC_WORD_YOU, EC_WORD_KNOW, EC_WORD_QUES}, - .monSets = gBattleFrontierTrainerMons_Jordyn + .monSet = gBattleFrontierTrainerMons_Jordyn }, - [139] = { + [FRONTIER_TRAINER_SOFIA] = { .facilityClass = FACILITY_CLASS_AROMA_LADY, .trainerName = _("SOFIA"), .speechBefore = {EC_POKEMON(LOUDRED), EC_WORD_PROBABLY, EC_WORD_HAS, EC_WORD_A, EC_MOVE(SWEET_SCENT), 0xFFFF}, .speechWin = {EC_WORD_THAT_S, EC_WORD_THE, EC_WORD_FEELING, EC_WORD_THAT, EC_WORD_I, EC_WORD_GET}, .speechLose = {EC_WORD_I, EC_WORD_WORK, EC_WORD_AT, EC_WORD_THE, EC_WORD_DEPT_STORE, 0xFFFF}, - .monSets = gBattleFrontierTrainerMons_Sofia + .monSet = gBattleFrontierTrainerMons_Sofia }, - [140] = { + [FRONTIER_TRAINER_BRADEN] = { .facilityClass = FACILITY_CLASS_COOLTRAINER_M, .trainerName = _("BRADEN"), .speechBefore = {EC_WORD_I_CHOOSE_YOU, EC_WORD_EXCL, 0xFFFF, EC_WORD_THIS_IS_IT_EXCL, 0xFFFF, 0xFFFF}, .speechWin = {EC_WORD_I_AM, EC_WORD_FEELING, EC_WORD_PRETTY, EC_WORD_AWESOME, EC_WORD_ABOUT, EC_WORD_MYSELF}, .speechLose = {EC_WORD_ALL_RIGHT, EC_WORD_EXCL, 0xFFFF, EC_WORD_I, EC_WORD_SURRENDER, EC_WORD_EXCL}, - .monSets = gBattleFrontierTrainerMons_Braden + .monSet = gBattleFrontierTrainerMons_Braden }, - [141] = { + [FRONTIER_TRAINER_KAYDEN] = { .facilityClass = FACILITY_CLASS_COOLTRAINER_M, .trainerName = _("KAYDEN"), .speechBefore = {EC_WORD_THEY, EC_WORD_OVERDO, EC_WORD_THAT, EC_WORD_GOURMET, EC_WORD_THING, EC_WORD_ELLIPSIS}, .speechWin = {EC_WORD_THAT, EC_WORD_GOURMET, EC_WORD_THING, EC_WORD_ISN_T, EC_WORD_FOR, EC_WORD_ME}, .speechLose = {EC_WORD_HEY, EC_WORD_THIS, EC_WORD_IS, EC_WORD_PRETTY, EC_WORD_TASTY, 0xFFFF}, - .monSets = gBattleFrontierTrainerMons_Kayden + .monSet = gBattleFrontierTrainerMons_Kayden }, - [142] = { + [FRONTIER_TRAINER_COOPER] = { .facilityClass = FACILITY_CLASS_COOLTRAINER_M, .trainerName = _("COOPER"), .speechBefore = {EC_WORD_THIS, EC_WORD_SHOULD, EC_WORD_ABSOLUTELY, EC_WORD_BE, EC_WORD_A, EC_WORD_PUSHOVER}, .speechWin = {EC_WORD_THAT_WAS, EC_WORD_TOO, EC_WORD_EXCITING, EC_WORD_FOR, EC_WORD_ME, EC_WORD_ELLIPSIS}, .speechLose = {EC_WORD_PLEASE, EC_WORD_EXCL, 0xFFFF, EC_WORD_SORRY, EC_WORD_I_AM, EC_WORD_SORRY}, - .monSets = gBattleFrontierTrainerMons_Cooper + .monSet = gBattleFrontierTrainerMons_Cooper }, - [143] = { + [FRONTIER_TRAINER_JULIA] = { .facilityClass = FACILITY_CLASS_COOLTRAINER_F, .trainerName = _("JULIA"), .speechBefore = {EC_WORD_SPIRIT, EC_WORD_ALONE, EC_WORD_WON_T, EC_WORD_MAKE, EC_WORD_YOU, EC_WORD_WIN}, .speechWin = {EC_WORD_YOU, EC_WORD_SHOULD, EC_WORD_ACCEPT, EC_WORD_THIS, EC_WORD_WITH, EC_WORD_SERENE_GRACE}, .speechLose = {EC_WORD_FOR_NOW, EC_WORD_GOOD_BYE, EC_WORD_BUT, EC_WORD_IT_S, EC_WORD_NOT, EC_WORD_OVER}, - .monSets = gBattleFrontierTrainerMons_Julia + .monSet = gBattleFrontierTrainerMons_Julia }, - [144] = { + [FRONTIER_TRAINER_AMARA] = { .facilityClass = FACILITY_CLASS_COOLTRAINER_F, .trainerName = _("AMARA"), .speechBefore = {EC_WORD_WROOOAAR_EXCL, EC_WORD_EXCL_EXCL, EC_WORD_I_AM, EC_WORD_SO, EC_WORD_READY, EC_WORD_EXCL_EXCL}, .speechWin = {EC_WORD_I, EC_WORD_LOSE, EC_WORD_MYSELF, EC_WORD_IF, EC_WORD_IT_S, EC_WORD_EXCITING}, .speechLose = {EC_WORD_THAT_S, EC_WORD_TOO, EC_WORD_MUCH, EC_WORD_TO, EC_MOVE2(TACKLE), EC_WORD_EXCL}, - .monSets = gBattleFrontierTrainerMons_Amara + .monSet = gBattleFrontierTrainerMons_Amara }, - [145] = { + [FRONTIER_TRAINER_LYNN] = { .facilityClass = FACILITY_CLASS_COOLTRAINER_F, .trainerName = _("LYNN"), .speechBefore = {EC_WORD_YOUR, EC_WORD_SECRET, EC_WORD_CAN_T, EC_WORD_BE, EC_WORD_HIDDEN, EC_WORD_FOREVER}, .speechWin = {EC_WORD_I, EC_WORD_KNOW, EC_WORD_YOUR, EC_WORD_SECRET, EC_WORD_NOW, EC_WORD_EXCL}, .speechLose = {EC_WORD_YOU, EC_WORD_CAN_T, EC_MOVE(SAFEGUARD), EC_WORD_YOUR, EC_WORD_OWN, EC_WORD_SECRET}, - .monSets = gBattleFrontierTrainerMons_Lynn + .monSet = gBattleFrontierTrainerMons_Lynn }, - [146] = { + [FRONTIER_TRAINER_JOVAN] = { .facilityClass = FACILITY_CLASS_PKMN_RANGER_M, .trainerName = _("JOVAN"), .speechBefore = {EC_WORD_YOUR, EC_WORD_BATTLE, EC_WORD_SENSE, EC_WORD_IS, EC_WORD_SADLY, EC_WORD_LACKING}, .speechWin = {EC_WORD_MY, EC_WORD_BATTLE, EC_WORD_SENSE, EC_WORD_IS, EC_WORD_COOL, EC_WORD_ISN_T_IT_QUES}, .speechLose = {EC_WORD_I_WAS, EC_WORD_MINUS, EC_WORD_MY, EC_WORD_NORMAL, EC_WORD_POWER, EC_WORD_TODAY}, - .monSets = gBattleFrontierTrainerMons_Jovan + .monSet = gBattleFrontierTrainerMons_Jovan }, - [147] = { + [FRONTIER_TRAINER_DOMINIC] = { .facilityClass = FACILITY_CLASS_PKMN_RANGER_M, .trainerName = _("DOMINIC"), .speechBefore = {EC_WORD_I, EC_WORD_HAVE, EC_WORD_THIS, EC_WORD_EXCELLENT, EC_WORD_CAMERA, 0xFFFF}, .speechWin = {EC_WORD_MY, EC_WORD_CAMERA, EC_WORD_WAS, EC_WORD_AWFULLY, EC_WORD_EXPENSIVE, 0xFFFF}, .speechLose = {EC_WORD_MY, EC_WORD_CAMERA, EC_WORD_DOESN_T, EC_WORD_MISS, EC_WORD_A, EC_WORD_THING}, - .monSets = gBattleFrontierTrainerMons_Dominic + .monSet = gBattleFrontierTrainerMons_Dominic }, - [148] = { + [FRONTIER_TRAINER_NIKOLAS] = { .facilityClass = FACILITY_CLASS_PKMN_RANGER_M, .trainerName = _("NIKOLAS"), .speechBefore = {EC_WORD_I, EC_MOVE2(MIMIC), EC_WORD_POKEMON, EC_WORD_AFTER, EC_WORD_EVERY, EC_WORD_BATTLE}, .speechWin = {EC_WORD_IF_I_WIN, EC_WORD_I, EC_WORD_PRETEND, EC_WORD_I_AM, EC_WORD_A, EC_POKEMON2(TAUROS)}, .speechLose = {EC_WORD_IF_I_LOSE, EC_WORD_I, EC_WORD_PRETEND, EC_WORD_I_AM, EC_WORD_A, EC_POKEMON2(MILTANK)}, - .monSets = gBattleFrontierTrainerMons_Nikolas + .monSet = gBattleFrontierTrainerMons_Nikolas }, - [149] = { + [FRONTIER_TRAINER_VALERIA] = { .facilityClass = FACILITY_CLASS_PKMN_RANGER_F, .trainerName = _("VALERIA"), .speechBefore = {EC_WORD_I, EC_MOVE2(WISH), EC_WORD_YOU, EC_WORD_WOULD, EC_WORD_NOT, EC_MOVE2(GLARE)}, .speechWin = {EC_WORD_YOU_RE, EC_WORD_MEAN, EC_WORD_EXCL, EC_WORD_I, EC_WORD_MEAN, EC_WORD_REALLY}, .speechLose = {EC_WORD_YOU, EC_WORD_HAVE, EC_WORD_A, EC_WORD_REALLY, EC_MOVE(SCARY_FACE), EC_WORD_EXCL}, - .monSets = gBattleFrontierTrainerMons_Valeria + .monSet = gBattleFrontierTrainerMons_Valeria }, - [150] = { + [FRONTIER_TRAINER_DELANEY] = { .facilityClass = FACILITY_CLASS_PKMN_RANGER_F, .trainerName = _("DELANEY"), .speechBefore = {EC_WORD_SCHOOL, EC_WORD_IS, EC_WORD_OVER, EC_WORD_TIME, EC_WORD_TO, EC_WORD_PLAY}, .speechWin = {EC_WORD_MY, EC_WORD_BOY, EC_WORD_FRIEND, EC_WORD_IS, EC_WORD_FROM, EC_WORD_SCHOOL}, .speechLose = {EC_WORD_I, EC_WORD_HAVE, EC_WORD_TO, EC_WORD_WORK, EC_WORD_NEXT, EC_WORD_WEEK}, - .monSets = gBattleFrontierTrainerMons_Delaney + .monSet = gBattleFrontierTrainerMons_Delaney }, - [151] = { + [FRONTIER_TRAINER_MEGHAN] = { .facilityClass = FACILITY_CLASS_PKMN_RANGER_F, .trainerName = _("MEGHAN"), .speechBefore = {EC_WORD_SCHOOL, EC_WORD_IS, EC_WORD_OUT, EC_WORD_TIME, EC_WORD_TO, EC_WORD_PLAY}, .speechWin = {EC_WORD_MY, EC_WORD_BOY, EC_WORD_FRIEND, EC_WORD_LIKES, EC_WORD_COMICS, 0xFFFF}, .speechLose = {EC_WORD_IT_S, EC_WORD_BACK, EC_WORD_TO, EC_WORD_SCHOOL, EC_WORD_SOON, 0xFFFF}, - .monSets = gBattleFrontierTrainerMons_Meghan + .monSet = gBattleFrontierTrainerMons_Meghan }, - [152] = { + [FRONTIER_TRAINER_ROBERTO] = { .facilityClass = FACILITY_CLASS_DRAGON_TAMER, .trainerName = _("ROBERTO"), .speechBefore = {EC_WORD_DRAGON, EC_WORD_POKEMON, EC_WORD_ARE, EC_WORD_INVINCIBLE, EC_WORD_EXCL, 0xFFFF}, .speechWin = {EC_WORD_YOU, EC_WORD_WEREN_T, EC_WORD_BAD, EC_WORD_I_WAS, EC_WORD_JUST, EC_WORD_BETTER}, .speechLose = {EC_WORD_AREN_T, EC_WORD_YOU, EC_WORD_SATISFIED, EC_WORD_YET, EC_WORD_QUES, 0xFFFF}, - .monSets = gBattleFrontierTrainerMons_Roberto + .monSet = gBattleFrontierTrainerMons_Roberto }, - [153] = { + [FRONTIER_TRAINER_DAMIAN] = { .facilityClass = FACILITY_CLASS_DRAGON_TAMER, .trainerName = _("DAMIAN"), .speechBefore = {EC_WORD_MY, EC_WORD_PURE_POWER, EC_WORD_IS, EC_WORD_MACHINE, EC_WORD_LIKE, EC_WORD_EXCL}, .speechWin = {EC_WORD_MY, EC_MOVE2(MACH_PUNCH), EC_WORD_WILL, EC_WORD_MAKE, EC_WORD_A, EC_MOVE(BRICK_BREAK)}, .speechLose = {EC_WORD_ARRGH, EC_WORD_EXCL, 0xFFFF, EC_WORD_NO, EC_WORD_EXCL_EXCL, 0xFFFF}, - .monSets = gBattleFrontierTrainerMons_Damian + .monSet = gBattleFrontierTrainerMons_Damian }, - [154] = { + [FRONTIER_TRAINER_BRODY] = { .facilityClass = FACILITY_CLASS_DRAGON_TAMER, .trainerName = _("BRODY"), .speechBefore = {EC_WORD_MY, EC_WORD_FASHION, EC_WORD_SENSE, EC_WORD_SEEMS, EC_POKEMON(ODDISH), EC_WORD_QUES}, .speechWin = {EC_WORD_IT_S, EC_WORD_MY, EC_WORD_FAMILY, EC_WORD_STAY_AT_HOME, EC_WORD_LOOK, EC_WORD_EXCL}, .speechLose = {EC_WORD_I, EC_WORD_QUESTION, EC_WORD_YOUR, EC_WORD_FASHION, EC_WORD_SENSE, EC_WORD_SERIOUSLY}, - .monSets = gBattleFrontierTrainerMons_Brody + .monSet = gBattleFrontierTrainerMons_Brody }, - [155] = { + [FRONTIER_TRAINER_GRAHAM] = { .facilityClass = FACILITY_CLASS_DRAGON_TAMER, .trainerName = _("GRAHAM"), .speechBefore = {EC_WORD_YEAH, EC_WORD_EXCL, 0xFFFF, EC_WORD_YEAH_YEAH, EC_WORD_EXCL_EXCL, 0xFFFF}, .speechWin = {EC_WORD_WAHAHAHA, EC_WORD_WAHAHAHA, EC_WORD_EXCL, EC_WORD_WAHAHAHA, EC_WORD_WAHAHAHA, EC_WORD_EXCL_EXCL}, .speechLose = {EC_WORD_I_AM, EC_WORD_SORRY, EC_WORD_ELLIPSIS, EC_WORD_IT_S, EC_WORD_MY, EC_WORD_BAD}, - .monSets = gBattleFrontierTrainerMons_Graham + .monSet = gBattleFrontierTrainerMons_Graham }, - [156] = { + [FRONTIER_TRAINER_TYLOR] = { .facilityClass = FACILITY_CLASS_POKEFAN_M, .trainerName = _("TYLOR"), .speechBefore = {EC_WORD_ARE, EC_WORD_YOU, EC_WORD_FEELING, EC_WORD_MY, EC_MOVE2(HEAT_WAVE), EC_WORD_QUES}, .speechWin = {EC_WORD_YES, EC_WORD_I_AM, EC_WORD_ON, EC_WORD_FIRE, EC_WORD_EXCL, 0xFFFF}, .speechLose = {EC_WORD_BUT, EC_WORD_I_WAS, EC_WORD_ON, EC_WORD_FIRE, EC_WORD_FOR, EC_WORD_YOU}, - .monSets = gBattleFrontierTrainerMons_Tylor + .monSet = gBattleFrontierTrainerMons_Tylor }, - [157] = { + [FRONTIER_TRAINER_JAREN] = { .facilityClass = FACILITY_CLASS_POKEFAN_F, .trainerName = _("JAREN"), .speechBefore = {EC_WORD_FIGHTING, EC_WORD_SPIRIT, EC_WORD_QUES, EC_WORD_ME, EC_WORD_QUES, 0xFFFF}, .speechWin = {EC_WORD_I, EC_WORD_WANT, EC_WORD_MORE, EC_WORD_CUTE, EC_WORD_POKEMON, 0xFFFF}, .speechLose = {EC_WORD_YOUR, EC_WORD_POKEMON, EC_WORD_LOOK, EC_WORD_QUITE, EC_WORD_CUTE, 0xFFFF}, - .monSets = gBattleFrontierTrainerMons_Jaren + .monSet = gBattleFrontierTrainerMons_Jaren }, - [158] = { + [FRONTIER_TRAINER_CORDELL] = { .facilityClass = FACILITY_CLASS_PKMN_BREEDER_M, .trainerName = _("CORDELL"), .speechBefore = {EC_WORD_A, EC_WORD_BATTLE, EC_WORD_IS, EC_WORD_DECIDED, EC_WORD_ON, EC_WORD_SPIRIT}, .speechWin = {EC_WORD_CAN_T, EC_WORD_YOU, EC_WORD_ACCEPT, EC_WORD_THAT, EC_WORD_QUES, 0xFFFF}, .speechLose = {EC_WORD_I, EC_WORD_WILL, EC_WORD_BE, EC_WORD_ON, EC_WORD_MY, EC_WORD_WAY}, - .monSets = gBattleFrontierTrainerMons_Cordell + .monSet = gBattleFrontierTrainerMons_Cordell }, - [159] = { + [FRONTIER_TRAINER_JAZLYN] = { .facilityClass = FACILITY_CLASS_PKMN_BREEDER_F, .trainerName = _("JAZLYN"), .speechBefore = {EC_WORD_IS, EC_WORD_YOUR, EC_WORD_POKEDEX, EC_WORD_REALLY, EC_WORD_AWESOME, EC_WORD_QUES}, .speechWin = {EC_WORD_OH_YEAH, EC_WORD_WOW, EC_WORD_YOUR, EC_WORD_POKEDEX, EC_WORD_IS, EC_WORD_SUPER}, .speechLose = {EC_WORD_AN, EC_WORD_AVANT_GARDE, EC_WORD_POKEDEX, EC_WORD_WOULD, EC_WORD_BE, EC_WORD_AWESOME}, - .monSets = gBattleFrontierTrainerMons_Jazlyn + .monSet = gBattleFrontierTrainerMons_Jazlyn }, - [160] = { + [FRONTIER_TRAINER_ZACHERY] = { .facilityClass = FACILITY_CLASS_YOUNGSTER, .trainerName = _("ZACHERY"), .speechBefore = {EC_WORD_I, EC_WORD_HAVE, EC_WORD_MY, EC_WORD_OWN, EC_WORD_PLACE, EC_WORD_YEEHAW_EXCL}, .speechWin = {EC_WORD_IT_S, EC_WORD_AN, EC_WORD_EXCITING, EC_WORD_TIME, EC_WORD_FOR, EC_WORD_ME}, .speechLose = {EC_WORD_YOU, EC_WORD_CAN_T, EC_WORD_FLATTEN, EC_WORD_MY, EC_WORD_HAPPINESS, EC_WORD_EXCL}, - .monSets = gBattleFrontierTrainerMons_Zachery + .monSet = gBattleFrontierTrainerMons_Zachery }, - [161] = { + [FRONTIER_TRAINER_JOHAN] = { .facilityClass = FACILITY_CLASS_YOUNGSTER, .trainerName = _("JOHAN"), .speechBefore = {EC_WORD_WINTER, EC_WORD_WILL, EC_WORD_SOON, EC_WORD_BE, EC_WORD_HERE, 0xFFFF}, .speechWin = {EC_WORD_MY, EC_WORD_ALLOWANCE, EC_WORD_COULD, EC_WORD_USE, EC_WORD_A, EC_MOVE2(HELPING_HAND)}, .speechLose = {EC_WORD_I, EC_WORD_ALWAYS, EC_WORD_USE, EC_WORD_MY, EC_WORD_ALLOWANCE, EC_WORD_UP}, - .monSets = gBattleFrontierTrainerMons_Johan + .monSet = gBattleFrontierTrainerMons_Johan }, - [162] = { + [FRONTIER_TRAINER_SHEA] = { .facilityClass = FACILITY_CLASS_LASS, .trainerName = _("SHEA"), .speechBefore = {EC_WORD_DO, EC_WORD_YOU, EC_WORD_BATTLE, EC_WORD_WITH, EC_WORD_BEAUTY, EC_WORD_QUES}, .speechWin = {EC_WORD_YOU, EC_WORD_BATTLE, EC_WORD_IN, EC_WORD_AN, EC_WORD_UGLY, EC_WORD_WAY}, .speechLose = {EC_WORD_WHAT, EC_WORD_IS, EC_WORD_BEAUTY, EC_WORD_TO, EC_WORD_YOU, EC_WORD_QUES}, - .monSets = gBattleFrontierTrainerMons_Shea + .monSet = gBattleFrontierTrainerMons_Shea }, - [163] = { + [FRONTIER_TRAINER_KAILA] = { .facilityClass = FACILITY_CLASS_LASS, .trainerName = _("KAILA"), .speechBefore = {EC_WORD_I_AM, EC_WORD_FEELING, EC_WORD_THIRSTY, EC_WORD_RIGHT, EC_WORD_NOW, EC_WORD_ELLIPSIS}, .speechWin = {EC_WORD_I, EC_WORD_COULD, EC_WORD_USE, EC_WORD_A, EC_WORD_COLD, EC_WORD_DRINK}, .speechLose = {EC_WORD_THAT, EC_WORD_LOSS, EC_WORD_IS, EC_WORD_HARD, EC_WORD_TO, EC_MOVE2(SWALLOW)}, - .monSets = gBattleFrontierTrainerMons_Kaila + .monSet = gBattleFrontierTrainerMons_Kaila }, - [164] = { + [FRONTIER_TRAINER_ISIAH] = { .facilityClass = FACILITY_CLASS_SCHOOL_KID_M, .trainerName = _("ISIAH"), .speechBefore = {EC_WORD_I, EC_WORD_PRETEND, EC_WORD_TO, EC_WORD_STUDY, EC_WORD_A_LOT, 0xFFFF}, .speechWin = {EC_WORD_I, EC_MOVE2(TRICK), EC_WORD_MOTHER, EC_WORD_FOR, EC_WORD_MY, EC_WORD_ALLOWANCE}, .speechLose = {EC_WORD_I, EC_WORD_DON_T, EC_WORD_WANT, EC_WORD_TO, EC_WORD_STUDY, EC_WORD_MORE}, - .monSets = gBattleFrontierTrainerMons_Isiah + .monSet = gBattleFrontierTrainerMons_Isiah }, - [165] = { + [FRONTIER_TRAINER_GARRETT] = { .facilityClass = FACILITY_CLASS_SCHOOL_KID_M, .trainerName = _("GARRETT"), .speechBefore = {EC_WORD_I, EC_WORD_ENJOY, EC_WORD_COMICS, EC_WORD_AND, EC_WORD_THIS, EC_WORD_GAME}, .speechWin = {EC_WORD_I, EC_WORD_LIKE, EC_WORD_THIS, EC_WORD_MUSIC, EC_WORD_IDOL, EC_WORD_TOO}, .speechLose = {EC_WORD_BUT, EC_WORD_I, EC_WORD_HAVE, EC_WORD_TO, EC_WORD_STUDY, EC_WORD_MORE}, - .monSets = gBattleFrontierTrainerMons_Garrett + .monSet = gBattleFrontierTrainerMons_Garrett }, - [166] = { + [FRONTIER_TRAINER_HAYLIE] = { .facilityClass = FACILITY_CLASS_SCHOOL_KID_F, .trainerName = _("HAYLIE"), .speechBefore = {EC_WORD_I, EC_WORD_WORRY, EC_WORD_TOO, EC_WORD_MUCH, EC_WORD_TO, EC_WORD_SLEEP}, .speechWin = {EC_WORD_A, EC_WORD_WIN, EC_WORD_GIVES, EC_WORD_ME, EC_WORD_A, EC_MOVE2(CALM_MIND)}, .speechLose = {EC_WORD_MY, EC_WORD_INSOMNIA, EC_WORD_WILL, EC_WORD_GET, EC_WORD_BAD, EC_WORD_ELLIPSIS}, - .monSets = gBattleFrontierTrainerMons_Haylie + .monSet = gBattleFrontierTrainerMons_Haylie }, - [167] = { + [FRONTIER_TRAINER_MEGAN] = { .facilityClass = FACILITY_CLASS_SCHOOL_KID_F, .trainerName = _("MEGAN"), .speechBefore = {EC_WORD_I, EC_WORD_BELIEVE, EC_WORD_IN, EC_WORD_AN, EC_MOVE(AROMATHERAPY), EC_WORD_BATH}, .speechWin = {EC_WORD_I, EC_WORD_WANT, EC_WORD_A, EC_WORD_HEALTHY, EC_WORD_CLEAR_BODY, 0xFFFF}, .speechLose = {EC_WORD_IF, EC_WORD_ONLY, EC_MOVE(AROMATHERAPY), EC_WORD_WERE, EC_WORD_LESS, EC_WORD_EXPENSIVE}, - .monSets = gBattleFrontierTrainerMons_Megan + .monSet = gBattleFrontierTrainerMons_Megan }, - [168] = { + [FRONTIER_TRAINER_ISSAC] = { .facilityClass = FACILITY_CLASS_RICH_BOY, .trainerName = _("ISSAC"), .speechBefore = {EC_WORD_MY, EC_WORD_HOBBY, EC_WORD_QUES, 0xFFFF, 0xFFFF, 0xFFFF}, .speechWin = {EC_WORD_I, EC_WORD_LIKE, EC_WORD_ANY, EC_WORD_KIND, EC_WORD_OF, EC_MOVE2(WATER_SPORT)}, .speechLose = {EC_WORD_I, EC_WORD_DISLIKE, EC_WORD_ANY, EC_WORD_KIND, EC_WORD_OF, EC_MOVE2(MUD_SPORT)}, - .monSets = gBattleFrontierTrainerMons_Issac + .monSet = gBattleFrontierTrainerMons_Issac }, - [169] = { + [FRONTIER_TRAINER_QUINTON] = { .facilityClass = FACILITY_CLASS_RICH_BOY, .trainerName = _("QUINTON"), .speechBefore = {EC_WORD_I_AM, EC_WORD_SAD, EC_WORD_CAUSE, EC_WORD_I_AM, EC_WORD_TOO_WEAK, 0xFFFF}, .speechWin = {EC_WORD_YOU, EC_WORD_AREN_T, EC_WORD_TOO_STRONG, EC_WORD_FOR, EC_WORD_ME, 0xFFFF}, .speechLose = {EC_WORD_HEY, EC_WORD_WHAT, EC_WORD_DID, EC_WORD_I, EC_WORD_DO, EC_WORD_QUES}, - .monSets = gBattleFrontierTrainerMons_Quinton + .monSet = gBattleFrontierTrainerMons_Quinton }, - [170] = { + [FRONTIER_TRAINER_SALMA] = { .facilityClass = FACILITY_CLASS_LADY, .trainerName = _("SALMA"), .speechBefore = {EC_WORD_YOU_VE, EC_WORD_GOT, EC_WORD_YOUR, EC_WORD_HUSTLE, EC_WORD_ON, EC_WORD_EXCL}, .speechWin = {EC_WORD_I, EC_WORD_WIN, EC_WORD_YOU, EC_WORD_HUSTLE, EC_WORD_ON, EC_WORD_OUT}, .speechLose = {EC_WORD_I, EC_WORD_DON_T, EC_WORD_GET, EC_WORD_HOW, EC_WORD_I, EC_WORD_LOST}, - .monSets = gBattleFrontierTrainerMons_Salma + .monSet = gBattleFrontierTrainerMons_Salma }, - [171] = { + [FRONTIER_TRAINER_ANSLEY] = { .facilityClass = FACILITY_CLASS_LADY, .trainerName = _("ANSLEY"), .speechBefore = {EC_WORD_I_AM, EC_WORD_BORED, EC_WORD_ELLIPSIS, EC_WORD_DANCE, EC_WORD_FOR, EC_WORD_ME}, .speechWin = {EC_WORD_YOU_VE, EC_WORD_BORED, EC_WORD_ME, EC_WORD_SOME, EC_WORD_MORE, 0xFFFF}, .speechLose = {EC_WORD_TAKE, EC_WORD_YOUR, EC_MOVE2(FRUSTRATION), EC_WORD_SOME, EC_WORD_OTHER, EC_WORD_PLACE}, - .monSets = gBattleFrontierTrainerMons_Ansley + .monSet = gBattleFrontierTrainerMons_Ansley }, - [172] = { + [FRONTIER_TRAINER_HOLDEN] = { .facilityClass = FACILITY_CLASS_BUG_CATCHER, .trainerName = _("HOLDEN"), .speechBefore = {EC_WORD_LET_S, EC_WORD_COMMEMORATE, EC_WORD_MY, EC_WORD_COOLNESS, EC_WORD_IN, EC_WORD_BATTLE}, .speechWin = {EC_WORD_YOU_RE, EC_WORD_TOO_WEAK, EC_WORD_FOR, EC_WORD_ANY, EC_WORD_PRAISE, 0xFFFF}, .speechLose = {EC_WORD_YOUR, EC_WORD_BATTLE, EC_WORD_SENSE, EC_WORD_IS, EC_WORD_AMUSING, 0xFFFF}, - .monSets = gBattleFrontierTrainerMons_Holden + .monSet = gBattleFrontierTrainerMons_Holden }, - [173] = { + [FRONTIER_TRAINER_LUCA] = { .facilityClass = FACILITY_CLASS_BUG_CATCHER, .trainerName = _("LUCA"), .speechBefore = {EC_WORD_WE, EC_WORD_WILL, EC_WORD_HAVE, EC_WORD_A, EC_WORD_COOL, EC_WORD_BATTLE}, .speechWin = {EC_WORD_I, EC_WORD_WON, EC_WORD_IN, EC_WORD_A, EC_WORD_COOL, EC_WORD_WAY}, .speechLose = {EC_WORD_HELLO, EC_WORD_QUES, EC_WORD_I_AM, EC_WORD_JUST, EC_WORD_A, EC_WORD_KID}, - .monSets = gBattleFrontierTrainerMons_Luca + .monSet = gBattleFrontierTrainerMons_Luca }, - [174] = { + [FRONTIER_TRAINER_JAMISON] = { .facilityClass = FACILITY_CLASS_NINJA_BOY, .trainerName = _("JAMISON"), .speechBefore = {EC_WORD_MY, EC_MOVE2(SECRET_POWER), EC_WORD_IS, EC_WORD_OVERWHELMING, EC_WORD_TO, EC_WORD_POKEMON}, .speechWin = {EC_WORD_DID, EC_WORD_YOU, EC_WORD_SEE, EC_WORD_THAT, EC_WORD_QUES, 0xFFFF}, .speechLose = {EC_WORD_I, EC_WORD_WILL, EC_WORD_USE, EC_MOVE(SMOKESCREEN), EC_WORD_TO, EC_WORD_ESCAPE}, - .monSets = gBattleFrontierTrainerMons_Jamison + .monSet = gBattleFrontierTrainerMons_Jamison }, - [175] = { + [FRONTIER_TRAINER_GUNNAR] = { .facilityClass = FACILITY_CLASS_NINJA_BOY, .trainerName = _("GUNNAR"), .speechBefore = {EC_WORD_I, EC_MOVE(CUT), EC_WORD_DOWN, EC_WORD_EVERY, EC_WORD_OPPONENT, 0xFFFF}, .speechWin = {EC_WORD_DON_T, EC_MOVE(GRUDGE), EC_WORD_ME, EC_WORD_FOR, EC_WORD_YOUR, EC_WORD_LOSS}, .speechLose = {EC_WORD_PLEASE, EC_WORD_LOSE, EC_WORD_THAT, EC_MOVE(SCARY_FACE), EC_WORD_OF, EC_WORD_YOURS}, - .monSets = gBattleFrontierTrainerMons_Gunnar + .monSet = gBattleFrontierTrainerMons_Gunnar }, - [176] = { + [FRONTIER_TRAINER_CRAIG] = { .facilityClass = FACILITY_CLASS_TUBER_M, .trainerName = _("CRAIG"), .speechBefore = {EC_WORD_I, EC_WORD_CAN_T, EC_WORD_WAIT, EC_WORD_FOR, EC_WORD_MY, EC_WORD_TRAIN}, .speechWin = {EC_WORD_MY, EC_WORD_TRAIN, EC_WORD_ISN_T, EC_WORD_HERE, EC_WORD_YET, EC_WORD_ELLIPSIS}, .speechLose = {EC_WORD_HERE_IT_IS, EC_WORD_MY, EC_WORD_TRAIN, EC_WORD_SEE_YA, EC_WORD_EXCL, 0xFFFF}, - .monSets = gBattleFrontierTrainerMons_Craig + .monSet = gBattleFrontierTrainerMons_Craig }, - [177] = { + [FRONTIER_TRAINER_PIERCE] = { .facilityClass = FACILITY_CLASS_TUBER_M, .trainerName = _("PIERCE"), .speechBefore = {EC_WORD_THERE, EC_WORD_WAS, EC_WORD_A, EC_MOVE2(HEAT_WAVE), EC_WORD_LAST, EC_WORD_WEEK}, .speechWin = {EC_WORD_I, EC_WORD_CAN_T, EC_WORD_TAKE, EC_WORD_A, EC_MOVE2(HEAT_WAVE), 0xFFFF}, .speechLose = {EC_WORD_DIDN_T, EC_WORD_IT, EC_MOVE(HAIL), EC_WORD_TOO, EC_WORD_QUES, 0xFFFF}, - .monSets = gBattleFrontierTrainerMons_Pierce + .monSet = gBattleFrontierTrainerMons_Pierce }, - [178] = { + [FRONTIER_TRAINER_REGINA] = { .facilityClass = FACILITY_CLASS_TUBER_F, .trainerName = _("REGINA"), .speechBefore = {EC_WORD_I, EC_WORD_LIKE, EC_WORD_TO, EC_WORD_PLAY, EC_WORD_IN, EC_WORD_WATER}, .speechWin = {EC_WORD_I, EC_WORD_REFUSE, EC_WORD_TO, EC_WORD_COME, EC_WORD_OUT, 0xFFFF}, .speechLose = {EC_WORD_YOU_RE, EC_WORD_NOT, EC_WORD_MUCH, EC_WORD_GOOD, EC_WORD_IN, EC_WORD_WATER}, - .monSets = gBattleFrontierTrainerMons_Regina + .monSet = gBattleFrontierTrainerMons_Regina }, - [179] = { + [FRONTIER_TRAINER_ALISON] = { .facilityClass = FACILITY_CLASS_TUBER_F, .trainerName = _("ALISON"), .speechBefore = {EC_WORD_THIS, EC_WORD_KINDERGARTEN, EC_WORD_MAGAZINE, EC_WORD_IS, EC_WORD_TOO, EC_WORD_MUCH}, .speechWin = {EC_WORD_HOW, EC_WORD_TO, EC_WORD_BUG, EC_WORD_YOUR, EC_WORD_TEACHER, EC_WORD_QUES}, .speechLose = {EC_WORD_ENJOY, EC_WORD_A, EC_WORD_TASTY, EC_WORD_SCHOOL, EC_WORD_DIET, EC_WORD_QUES}, - .monSets = gBattleFrontierTrainerMons_Alison + .monSet = gBattleFrontierTrainerMons_Alison }, - [180] = { + [FRONTIER_TRAINER_HANK] = { .facilityClass = FACILITY_CLASS_BUG_MANIAC, .trainerName = _("HANK"), .speechBefore = {EC_WORD_THERE, EC_WORD_IS, EC_WORD_A, EC_WORD_BUG, EC_WORD_EVENT, EC_WORD_SOON}, .speechWin = {EC_WORD_IT_S, EC_WORD_A, EC_WORD_BUG, EC_WORD_FASHION, EC_WORD_SHOW, EC_WORD_EXCL}, .speechLose = {EC_WORD_DON_T, EC_WORD_YOU, EC_WORD_LIKE, EC_WORD_BUG, EC_WORD_POKEMON, EC_WORD_QUES}, - .monSets = gBattleFrontierTrainerMons_Hank + .monSet = gBattleFrontierTrainerMons_Hank }, - [181] = { + [FRONTIER_TRAINER_EARL] = { .facilityClass = FACILITY_CLASS_BUG_MANIAC, .trainerName = _("EARL"), .speechBefore = {EC_WORD_THE, EC_WORD_INVINCIBLE, EC_WORD_BUG, EC_WORD_TRAINER, EC_WORD_IS, EC_WORD_HERE}, .speechWin = {EC_WORD_THE, EC_WORD_INVINCIBLE, EC_WORD_BUG, EC_WORD_TRAINER, EC_WORD_AM, EC_WORD_I}, .speechLose = {EC_WORD_SEE, EC_WORD_HOW, EC_WORD_FAST, EC_WORD_I, EC_WORD_RUN_AWAY, EC_WORD_EXCL}, - .monSets = gBattleFrontierTrainerMons_Earl + .monSet = gBattleFrontierTrainerMons_Earl }, - [182] = { + [FRONTIER_TRAINER_RAMIRO] = { .facilityClass = FACILITY_CLASS_FISHERMAN, .trainerName = _("RAMIRO"), .speechBefore = {EC_WORD_I, EC_WORD_WENT, EC_WORD_TO, EC_WORD_A, EC_WORD_FISHING, EC_WORD_SCHOOL}, .speechWin = {EC_WORD_SERIOUSLY, EC_WORD_I_AM, EC_WORD_IN, EC_WORD_THE, EC_WORD_FISHING, EC_WORD_HALL_OF_FAME}, .speechLose = {EC_WORD_I, EC_WORD_WANT, EC_WORD_TO, EC_WORD_GO, EC_WORD_BACK, EC_WORD_ELLIPSIS}, - .monSets = gBattleFrontierTrainerMons_Ramiro + .monSet = gBattleFrontierTrainerMons_Ramiro }, - [183] = { + [FRONTIER_TRAINER_HUNTER] = { .facilityClass = FACILITY_CLASS_FISHERMAN, .trainerName = _("HUNTER"), .speechBefore = {EC_WORD_SHOW, EC_WORD_ME, EC_WORD_A, EC_WORD_TOTALLY, EC_WORD_COOL, EC_MOVE(CROSS_CHOP)}, .speechWin = {EC_WORD_YOU_RE, EC_WORD_TOO_WEAK, EC_WORD_TO, EC_WORD_DO, EC_WORD_A, EC_MOVE(CROSS_CHOP)}, .speechLose = {EC_WORD_WAS, EC_WORD_IT, EC_WORD_A, EC_WORD_MISTAKE, EC_WORD_QUES, 0xFFFF}, - .monSets = gBattleFrontierTrainerMons_Hunter + .monSet = gBattleFrontierTrainerMons_Hunter }, - [184] = { + [FRONTIER_TRAINER_AIDEN] = { .facilityClass = FACILITY_CLASS_RUIN_MANIAC, .trainerName = _("AIDEN"), .speechBefore = {EC_WORD_MY, EC_WORD_WORK, EC_WORD_IS, EC_WORD_MAKING, EC_WORD_ME, EC_WORD_HEALTHY}, .speechWin = {EC_WORD_YOU, EC_WORD_SEE, EC_WORD_QUES, EC_WORD_I_AM, EC_WORD_HEALTHY, EC_WORD_EXCL}, .speechLose = {EC_WORD_YOU_RE, EC_WORD_MORE, EC_WORD_HEALTHY, EC_WORD_THAN, EC_WORD_I_AM, EC_WORD_ELLIPSIS}, - .monSets = gBattleFrontierTrainerMons_Aiden + .monSet = gBattleFrontierTrainerMons_Aiden }, - [185] = { + [FRONTIER_TRAINER_XAVIER] = { .facilityClass = FACILITY_CLASS_RUIN_MANIAC, .trainerName = _("XAVIER"), .speechBefore = {EC_WORD_HEY_THERE, EC_WORD_EXCL, 0xFFFF, EC_WORD_LOOK, EC_WORD_LOOK, EC_WORD_EXCL_EXCL}, .speechWin = {EC_WORD_GOOD_BYE, EC_WORD_AND, EC_WORD_THANK_YOU, EC_WORD_THAT_WAS, EC_WORD_FUNNY, 0xFFFF}, .speechLose = {EC_WORD_WOWEE, EC_WORD_EXCL, 0xFFFF, EC_WORD_NO, EC_WORD_NO, EC_WORD_EXCL_EXCL}, - .monSets = gBattleFrontierTrainerMons_Xavier + .monSet = gBattleFrontierTrainerMons_Xavier }, - [186] = { + [FRONTIER_TRAINER_CLINTON] = { .facilityClass = FACILITY_CLASS_COLLECTOR, .trainerName = _("CLINTON"), .speechBefore = {EC_WORD_WANT, EC_WORD_TO, EC_WORD_SEE, EC_WORD_MY, EC_MOVE(HYPNOSIS), EC_WORD_QUES}, .speechWin = {EC_WORD_YOUR, EC_MOVE2(FURY_SWIPES), EC_WORD_YOUR, EC_MOVE(STRENGTH), EC_WORD_YOUNG, EC_WORD_TRAINER}, .speechLose = {EC_WORD_TCH, EC_WORD_ELLIPSIS, 0xFFFF, EC_WORD_I_AM, EC_WORD_TOO_WEAK, EC_WORD_ELLIPSIS}, - .monSets = gBattleFrontierTrainerMons_Clinton + .monSet = gBattleFrontierTrainerMons_Clinton }, - [187] = { + [FRONTIER_TRAINER_JESSE] = { .facilityClass = FACILITY_CLASS_COLLECTOR, .trainerName = _("JESSE"), .speechBefore = {EC_WORD_THIS, EC_WORD_BATTLE, EC_WORD_IS, EC_WORD_FOR, EC_WORD_MY, EC_WORD_MOTHER}, .speechWin = {EC_WORD_MOTHER, EC_WORD_WILL, EC_WORD_BE, EC_WORD_HAPPY, EC_WORD_FOR, EC_WORD_ME}, .speechLose = {EC_WORD_I, EC_WORD_WANT, EC_WORD_MY, EC_WORD_MOTHER, EC_WORD_EXCL, 0xFFFF}, - .monSets = gBattleFrontierTrainerMons_Jesse + .monSet = gBattleFrontierTrainerMons_Jesse }, - [188] = { + [FRONTIER_TRAINER_EDUARDO] = { .facilityClass = FACILITY_CLASS_GUITARIST, .trainerName = _("EDUARDO"), .speechBefore = {EC_WORD_OUR, EC_WORD_MUSIC, EC_WORD_WILL, EC_WORD_PLAY, EC_WORD_ALL, EC_WORD_NIGHT}, .speechWin = {EC_WORD_NIGHTTIME, EC_WORD_IS, EC_WORD_WHEN, EC_WORD_I, EC_WORD_PLAY, EC_WORD_BEST}, .speechLose = {EC_WORD_LET_S, EC_WORD_PARTY, EC_WORD_UNTIL, EC_WORD_THE, EC_MOVE(MORNING_SUN), EC_WORD_EXCL}, - .monSets = gBattleFrontierTrainerMons_Eduardo + .monSet = gBattleFrontierTrainerMons_Eduardo }, - [189] = { + [FRONTIER_TRAINER_HAL] = { .facilityClass = FACILITY_CLASS_GUITARIST, .trainerName = _("HAL"), .speechBefore = {EC_WORD_I_AM, EC_WORD_TRENDY, EC_WORD_AREN_T, EC_WORD_I, EC_WORD_QUES, 0xFFFF}, .speechWin = {EC_WORD_I_AM, EC_WORD_FEELING, EC_WORD_HIP_AND, EC_WORD_HAPPENING, EC_WORD_OH_YEAH, EC_WORD_EXCL}, .speechLose = {EC_WORD_I_AM, EC_WORD_ALWAYS, EC_WORD_TRENDY, EC_WORD_THANK_YOU, EC_WORD_VERY, EC_WORD_MUCH}, - .monSets = gBattleFrontierTrainerMons_Hal + .monSet = gBattleFrontierTrainerMons_Hal }, - [190] = { + [FRONTIER_TRAINER_GAGE] = { .facilityClass = FACILITY_CLASS_BIRD_KEEPER, .trainerName = _("GAGE"), .speechBefore = {EC_WORD_HERE_IT_IS, EC_WORD_A, EC_WORD_FLYING, EC_WORD_TYPE, EC_WORD_HIDDEN, EC_WORD_MOVE}, .speechWin = {EC_WORD_IT_S, EC_WORD_A, EC_WORD_FLYING, EC_WORD_TYPE, EC_WORD_VICTORY, EC_WORD_EXCL}, .speechLose = {EC_WORD_IF_I_LOSE, EC_WORD_I, EC_WORD_JUST, EC_MOVE(FLY), EC_WORD_AWAY, 0xFFFF}, - .monSets = gBattleFrontierTrainerMons_Gage + .monSet = gBattleFrontierTrainerMons_Gage }, - [191] = { + [FRONTIER_TRAINER_ARNOLD] = { .facilityClass = FACILITY_CLASS_BIRD_KEEPER, .trainerName = _("ARNOLD"), .speechBefore = {EC_WORD_I_AM, EC_WORD_FEELING, EC_WORD_WEIRD, EC_WORD_FROM, EC_WORD_A, EC_WORD_DREAM}, .speechWin = {EC_WORD_YOUR, EC_MOVE(SCARY_FACE), EC_WORD_WAS, EC_WORD_IN, EC_WORD_MY, EC_WORD_DREAM}, .speechLose = {EC_WORD_MY, EC_WORD_INCREDIBLE, EC_WORD_DREAM, EC_WORD_WAS, EC_WORD_SO, EC_WORD_WEIRD}, - .monSets = gBattleFrontierTrainerMons_Arnold + .monSet = gBattleFrontierTrainerMons_Arnold }, - [192] = { + [FRONTIER_TRAINER_JARRETT] = { .facilityClass = FACILITY_CLASS_SAILOR, .trainerName = _("JARRETT"), .speechBefore = {EC_WORD_COME_ON, EC_WORD_LET_S, EC_WORD_DANCE, EC_WORD_LIKE, EC_WORD_IT_S, EC_WORD_YESTERDAY}, .speechWin = {EC_WORD_YOU, EC_WORD_LIKE, EC_WORD_HOW, EC_WORD_I, EC_WORD_DANCE, EC_WORD_QUES}, .speechLose = {EC_WORD_YOU, EC_WORD_DON_T, EC_WORD_APPRECIATE, EC_WORD_HOW, EC_WORD_I, EC_WORD_DANCE}, - .monSets = gBattleFrontierTrainerMons_Jarrett + .monSet = gBattleFrontierTrainerMons_Jarrett }, - [193] = { + [FRONTIER_TRAINER_GARETT] = { .facilityClass = FACILITY_CLASS_SAILOR, .trainerName = _("GARETT"), .speechBefore = {EC_WORD_MY, EC_WORD_GIRL, EC_WORD_GIVES, EC_WORD_ME, EC_WORD_A_LITTLE, EC_MOVE2(SWEET_KISS)}, .speechWin = {EC_WORD_MY, EC_WORD_GIRL, EC_WORD_FRIEND, EC_WORD_IS, EC_WORD_MY, EC_WORD_TREASURE}, .speechLose = {EC_WORD_A, EC_WORD_TREASURE, EC_WORD_ISN_T, EC_WORD_ALWAYS, EC_WORD_ABOUT, EC_WORD_MONEY}, - .monSets = gBattleFrontierTrainerMons_Garett + .monSet = gBattleFrontierTrainerMons_Garett }, - [194] = { + [FRONTIER_TRAINER_EMANUEL] = { .facilityClass = FACILITY_CLASS_HIKER, .trainerName = _("EMANUEL"), .speechBefore = {EC_WORD_SMARTNESS, EC_WORD_ALONE, EC_WORD_WON_T, EC_WORD_MAKE, EC_WORD_YOU, EC_WORD_WIN}, .speechWin = {EC_WORD_I_AM, EC_WORD_NOT_VERY, EC_WORD_SMART, EC_WORD_BUT, EC_WORD_I, EC_WORD_WON}, .speechLose = {EC_WORD_HOW, EC_WORD_DID, EC_WORD_YOU, EC_MOVE2(FAKE_OUT), EC_WORD_ME, EC_WORD_QUES}, - .monSets = gBattleFrontierTrainerMons_Emanuel + .monSet = gBattleFrontierTrainerMons_Emanuel }, - [195] = { + [FRONTIER_TRAINER_GUSTAVO] = { .facilityClass = FACILITY_CLASS_HIKER, .trainerName = _("GUSTAVO"), .speechBefore = {EC_MOVE(CHARGE), EC_WORD_EXCL, 0xFFFF, EC_MOVE(CHARGE), EC_WORD_EXCL_EXCL, 0xFFFF}, .speechWin = {EC_WORD_SURRENDER, EC_WORD_QUES, 0xFFFF, EC_WORD_SO, EC_WORD_SOON, EC_WORD_QUES}, .speechLose = {EC_WORD_YOU, EC_WORD_CAN_T, EC_WORD_MAKE, EC_WORD_ME, EC_WORD_SURRENDER, EC_WORD_YET}, - .monSets = gBattleFrontierTrainerMons_Gustavo + .monSet = gBattleFrontierTrainerMons_Gustavo }, - [196] = { + [FRONTIER_TRAINER_KAMERON] = { .facilityClass = FACILITY_CLASS_KINDLER, .trainerName = _("KAMERON"), .speechBefore = {EC_WORD_TAKE_THAT, EC_WORD_EXCL, EC_WORD_IT_S, EC_WORD_MY, EC_WORD_FIERY, EC_MOVE2(TRICK)}, .speechWin = {EC_WORD_DID, EC_WORD_MY, EC_WORD_FIERY, EC_MOVE2(TRICK), EC_MOVE(ASTONISH), EC_WORD_QUES}, .speechLose = {EC_WORD_YOU, EC_WORD_DIDN_T, EC_WORD_FALL, EC_WORD_FOR, EC_WORD_MY, EC_MOVE2(TRICK)}, - .monSets = gBattleFrontierTrainerMons_Kameron + .monSet = gBattleFrontierTrainerMons_Kameron }, - [197] = { + [FRONTIER_TRAINER_ALFREDO] = { .facilityClass = FACILITY_CLASS_KINDLER, .trainerName = _("ALFREDO"), .speechBefore = {EC_WORD_A, EC_WORD_FIERY, EC_WORD_GOURMET, EC_WORD_AM, EC_WORD_I, EC_WORD_EXCL}, .speechWin = {EC_WORD_IT_S, EC_WORD_A, EC_WORD_TASTY, EC_WORD_GOURMET, EC_WORD_VICTORY, EC_WORD_EXCL}, .speechLose = {EC_WORD_WHAT, EC_WORD_A, EC_WORD_DISASTER, EC_WORD_THAT_WAS, EC_WORD_EXCL, 0xFFFF}, - .monSets = gBattleFrontierTrainerMons_Alfredo + .monSet = gBattleFrontierTrainerMons_Alfredo }, - [198] = { + [FRONTIER_TRAINER_RUBEN] = { .facilityClass = FACILITY_CLASS_GENTLEMAN, .trainerName = _("RUBEN"), .speechBefore = {EC_WORD_I, EC_WORD_CAN_T, EC_WORD_WAIT, EC_WORD_TO, EC_WORD_GET, EC_WORD_GOING}, .speechWin = {EC_WORD_GET, EC_WORD_GOING, EC_WORD_EXCL, EC_WORD_THIS, EC_WORD_IS, EC_WORD_GOOD_BYE}, .speechLose = {EC_WORD_I_VE, EC_WORD_GOT, EC_WORD_TO, EC_WORD_GET, EC_WORD_GOING, 0xFFFF}, - .monSets = gBattleFrontierTrainerMons_Ruben + .monSet = gBattleFrontierTrainerMons_Ruben }, - [199] = { + [FRONTIER_TRAINER_LAMAR] = { .facilityClass = FACILITY_CLASS_GENTLEMAN, .trainerName = _("LAMAR"), .speechBefore = {EC_WORD_A, EC_MOVE2(PRESENT), EC_WORD_FOR, EC_WORD_ME, EC_WORD_QUES, 0xFFFF}, .speechWin = {EC_WORD_MMM, EC_WORD_THIS, EC_WORD_IS, EC_WORD_QUITE, EC_WORD_TASTY, EC_WORD_ELLIPSIS}, .speechLose = {EC_WORD_OH, EC_WORD_IT_S, EC_WORD_A, EC_WORD_GAME, EC_WORD_IS_IT_QUES, 0xFFFF}, - .monSets = gBattleFrontierTrainerMons_Lamar + .monSet = gBattleFrontierTrainerMons_Lamar }, - [200] = { + [FRONTIER_TRAINER_JAXON] = { .facilityClass = FACILITY_CLASS_YOUNGSTER, .trainerName = _("JAXON"), .speechBefore = {EC_WORD_A, EC_WORD_SHELL_ARMOR, EC_WORD_IS, EC_WORD_WHAT, EC_WORD_I, EC_WORD_WANT}, .speechWin = {EC_WORD_MY, EC_WORD_FATHER, EC_WORD_AND, EC_WORD_MOTHER, EC_WORD_WON_T, EC_WORD_ACCEPT}, .speechLose = {EC_WORD_PLEASE, EC_WORD_I, EC_WORD_NEED, EC_WORD_A, EC_WORD_SHELL_ARMOR, EC_WORD_EXCL}, - .monSets = gBattleFrontierTrainerMons_Jaxon + .monSet = gBattleFrontierTrainerMons_Jaxon }, - [201] = { + [FRONTIER_TRAINER_LOGAN] = { .facilityClass = FACILITY_CLASS_YOUNGSTER, .trainerName = _("LOGAN"), .speechBefore = {EC_WORD_IF_I_LOSE, EC_WORD_I, EC_WORD_WILL, EC_WORD_STUDY, EC_WORD_FOR, EC_WORD_SCHOOL}, .speechWin = {EC_WORD_ME, EC_WORD_STUDY, EC_WORD_QUES, EC_WORD_NOT_VERY, EC_WORD_LIKELY_TO, EC_WORD_SEE}, .speechLose = {EC_WORD_NO, EC_WORD_THANKS, EC_WORD_I_AM, EC_WORD_GOING, EC_WORD_TO, EC_WORD_SLEEP}, - .monSets = gBattleFrontierTrainerMons_Logan + .monSet = gBattleFrontierTrainerMons_Logan }, - [202] = { + [FRONTIER_TRAINER_EMILEE] = { .facilityClass = FACILITY_CLASS_LASS, .trainerName = _("EMILEE"), .speechBefore = {EC_WORD_IS, EC_WORD_THIS, EC_WORD_KIND, EC_WORD_OF, EC_WORD_BATTLE, EC_WORD_OK_QUES}, .speechWin = {EC_WORD_LET_S, EC_WORD_GO, EC_WORD_FOR, EC_WORD_AN, EC_MOVE(ICY_WIND), EC_MOVE2(SURF)}, .speechLose = {EC_WORD_HOW, EC_WORD_ABOUT, EC_WORD_A, EC_MOVE(ROCK_SLIDE), EC_WORD_SHOW, EC_WORD_QUES}, - .monSets = gBattleFrontierTrainerMons_Emilee + .monSet = gBattleFrontierTrainerMons_Emilee }, - [203] = { + [FRONTIER_TRAINER_JOSIE] = { .facilityClass = FACILITY_CLASS_LASS, .trainerName = _("JOSIE"), .speechBefore = {EC_WORD_A, EC_WORD_POKEMON, EC_WORD_FASHION, EC_WORD_CONTEST, EC_WORD_IS, EC_WORD_PRETTY}, .speechWin = {EC_WORD_I, EC_WORD_REALLY, EC_WORD_LIKE, EC_WORD_MODE, EC_WORD_FASHION, EC_WORD_THINGS}, .speechLose = {EC_WORD_YOU_RE, EC_WORD_TOTALLY, EC_WORD_LACKING, EC_WORD_IN, EC_WORD_FASHION, EC_WORD_SENSE}, - .monSets = gBattleFrontierTrainerMons_Josie + .monSet = gBattleFrontierTrainerMons_Josie }, - [204] = { + [FRONTIER_TRAINER_ARMANDO] = { .facilityClass = FACILITY_CLASS_CAMPER, .trainerName = _("ARMANDO"), .speechBefore = {EC_WORD_I, EC_WORD_NEED, EC_WORD_MORE, EC_WORD_GRASS, EC_WORD_TYPE, EC_WORD_POKEMON}, .speechWin = {EC_WORD_TRADE, EC_WORD_ME, EC_WORD_A, EC_WORD_GRASS, EC_WORD_POKEMON, EC_WORD_PLEASE}, .speechLose = {EC_WORD_THERE, EC_WORD_AREN_T, EC_WORD_ENOUGH, EC_WORD_GRASS, EC_WORD_TYPE, EC_WORD_POKEMON}, - .monSets = gBattleFrontierTrainerMons_Armando + .monSet = gBattleFrontierTrainerMons_Armando }, - [205] = { + [FRONTIER_TRAINER_SKYLER] = { .facilityClass = FACILITY_CLASS_CAMPER, .trainerName = _("SKYLER"), .speechBefore = {EC_MOVE2(INGRAIN), EC_WORD_IS, EC_WORD_MY, EC_WORD_CHOICE, EC_WORD_BATTLE, EC_WORD_MOVE}, .speechWin = {EC_WORD_YOU, EC_WORD_CAN_T, EC_WORD_MOVE, EC_WORD_ME, EC_WORD_NOW, EC_WORD_EXCL}, .speechLose = {EC_WORD_YOU, EC_MOVE(CUT), EC_WORD_ME, EC_WORD_DOWN, EC_WORD_ELLIPSIS, 0xFFFF}, - .monSets = gBattleFrontierTrainerMons_Skyler + .monSet = gBattleFrontierTrainerMons_Skyler }, - [206] = { + [FRONTIER_TRAINER_RUTH] = { .facilityClass = FACILITY_CLASS_PICNICKER, .trainerName = _("RUTH"), .speechBefore = {EC_WORD_I, EC_WORD_WANT, EC_WORD_TO, EC_WORD_ENJOY, EC_WORD_THIS, EC_WORD_BATTLE}, .speechWin = {EC_WORD_THAT_WAS, EC_WORD_MUCH, EC_WORD_TOO, EC_WORD_EASY, EC_WORD_EXCL, 0xFFFF}, .speechLose = {EC_WORD_PLEASE, EC_WORD_STOP, EC_WORD_I, EC_WORD_DON_T, EC_WORD_ENJOY, EC_WORD_THIS}, - .monSets = gBattleFrontierTrainerMons_Ruth + .monSet = gBattleFrontierTrainerMons_Ruth }, - [207] = { + [FRONTIER_TRAINER_MELODY] = { .facilityClass = FACILITY_CLASS_PICNICKER, .trainerName = _("MELODY"), .speechBefore = {EC_WORD_I, EC_MOVE2(WISH), EC_WORD_SUNDAY, EC_WORD_IS, EC_WORD_A, EC_MOVE2(SUNNY_DAY)}, .speechWin = {EC_WORD_SUNDAY, EC_WORD_SEEMS, EC_WORD_FOREVER, EC_WORD_TO, EC_WORD_COME, EC_WORD_ELLIPSIS}, .speechLose = {EC_WORD_THE, EC_WORD_FORECAST, EC_WORD_SAYS, EC_WORD_IT, EC_WORD_WILL, EC_MOVE(HAIL)}, - .monSets = gBattleFrontierTrainerMons_Melody + .monSet = gBattleFrontierTrainerMons_Melody }, - [208] = { + [FRONTIER_TRAINER_PEDRO] = { .facilityClass = FACILITY_CLASS_SWIMMER_M, .trainerName = _("PEDRO"), .speechBefore = {EC_WORD_A, EC_WORD_SWIFT_SWIM, EC_WORD_WILL, EC_WORD_DO, EC_WORD_YOU, EC_WORD_GOOD}, .speechWin = {EC_WORD_THAT_S, EC_WORD_HOW, EC_WORD_I, EC_WORD_SINK, EC_WORD_AN, EC_WORD_OPPONENT}, .speechLose = {EC_WORD_UH_OH, EC_WORD_EXCL, 0xFFFF, EC_WORD_A, EC_MOVE(WHIRLPOOL), EC_WORD_EXCL}, - .monSets = gBattleFrontierTrainerMons_Pedro + .monSet = gBattleFrontierTrainerMons_Pedro }, - [209] = { + [FRONTIER_TRAINER_ERICK] = { .facilityClass = FACILITY_CLASS_SWIMMER_M, .trainerName = _("ERICK"), .speechBefore = {EC_WORD_I, EC_WORD_WILL, EC_MOVE2(TACKLE), EC_WORD_YOU, EC_WORD_DOWN, EC_WORD_EXCL}, .speechWin = {EC_WORD_DON_T, EC_WORD_YOU, EC_WORD_RUN_AWAY, EC_WORD_YOU, EC_WORD_LOSER, EC_WORD_EXCL}, .speechLose = {EC_WORD_I, EC_WORD_DIDN_T, EC_WORD_THINK, EC_WORD_YOU, EC_WORD_WOULD, EC_MOVE(COUNTER)}, - .monSets = gBattleFrontierTrainerMons_Erick + .monSet = gBattleFrontierTrainerMons_Erick }, - [210] = { + [FRONTIER_TRAINER_ELAINE] = { .facilityClass = FACILITY_CLASS_SWIMMER_F, .trainerName = _("ELAINE"), .speechBefore = {EC_WORD_MY, EC_WORD_HEROINE, EC_WORD_ADVENTURE, EC_WORD_ISN_T, EC_WORD_GOING, EC_WORD_WELL}, .speechWin = {EC_WORD_THANK_YOU, EC_WORD_EXCL, EC_WORD_THAT_S, EC_WORD_WHAT, EC_WORD_I, EC_WORD_NEED}, .speechLose = {EC_WORD_I, EC_WORD_KNOW, EC_WORD_I_AM, EC_WORD_NOT, EC_WORD_A, EC_WORD_HEROINE}, - .monSets = gBattleFrontierTrainerMons_Elaine + .monSet = gBattleFrontierTrainerMons_Elaine }, - [211] = { + [FRONTIER_TRAINER_JOYCE] = { .facilityClass = FACILITY_CLASS_SWIMMER_F, .trainerName = _("JOYCE"), .speechBefore = {EC_WORD_YOU, EC_WORD_MAKE, EC_WORD_ME, EC_WORD_GO, EC_WORD_AHAHA, EC_WORD_EXCL}, .speechWin = {EC_WORD_LALALA, EC_WORD_NO, EC_WORD_LOSING, EC_WORD_FOR, EC_WORD_ME, EC_WORD_EXCL}, .speechLose = {EC_WORD_LALALA, EC_WORD_ELLIPSIS, 0xFFFF, EC_WORD_HUH_QUES, 0xFFFF, 0xFFFF}, - .monSets = gBattleFrontierTrainerMons_Joyce + .monSet = gBattleFrontierTrainerMons_Joyce }, - [212] = { + [FRONTIER_TRAINER_TODD] = { .facilityClass = FACILITY_CLASS_POKEFAN_M, .trainerName = _("TODD"), .speechBefore = {EC_WORD_YOU_RE, EC_WORD_A, EC_WORD_LIGHTNINGROD, EC_WORD_FOR, EC_WORD_MY, EC_WORD_POWER}, .speechWin = {EC_WORD_THAT_S, EC_WORD_ALL, EC_WORD_YOU, EC_WORD_COULD, EC_MOVE(ABSORB), EC_WORD_QUES}, .speechLose = {EC_WORD_YOU, EC_MOVE2(REFLECT), EC_WORD_MY, EC_WORD_POWER, EC_WORD_BACK, EC_WORD_QUES}, - .monSets = gBattleFrontierTrainerMons_Todd + .monSet = gBattleFrontierTrainerMons_Todd }, - [213] = { + [FRONTIER_TRAINER_GAVIN] = { .facilityClass = FACILITY_CLASS_POKEFAN_M, .trainerName = _("GAVIN"), .speechBefore = {EC_WORD_I, EC_WORD_WILL, EC_MOVE(BIDE), EC_WORD_MY, EC_WORD_TIME, 0xFFFF}, .speechWin = {EC_WORD_IT_S, EC_WORD_OVER, EC_WORD_SO, EC_WORD_SOON, EC_WORD_QUES, 0xFFFF}, .speechLose = {EC_WORD_MY, EC_WORD_MISTAKE, EC_WORD_WAS, EC_WORD_TOO, EC_WORD_EXPENSIVE, EC_WORD_ELLIPSIS}, - .monSets = gBattleFrontierTrainerMons_Gavin + .monSet = gBattleFrontierTrainerMons_Gavin }, - [214] = { + [FRONTIER_TRAINER_MALORY] = { .facilityClass = FACILITY_CLASS_POKEFAN_F, .trainerName = _("MALORY"), .speechBefore = {EC_WORD_PROMISE, EC_WORD_TO, EC_WORD_SHOW, EC_WORD_ME, EC_WORD_CUTE, EC_WORD_POKEMON}, .speechWin = {EC_WORD_GIGGLE, EC_WORD_ELLIPSIS, 0xFFFF, EC_WORD_THANK_YOU, EC_WORD_SO, EC_WORD_MUCH}, .speechLose = {EC_WORD_TCH, EC_WORD_YOUR, EC_WORD_POKEMON, EC_WORD_AREN_T, EC_WORD_VERY, EC_WORD_NICE}, - .monSets = gBattleFrontierTrainerMons_Malory + .monSet = gBattleFrontierTrainerMons_Malory }, - [215] = { + [FRONTIER_TRAINER_ESTHER] = { .facilityClass = FACILITY_CLASS_POKEFAN_F, .trainerName = _("ESTHER"), .speechBefore = {EC_WORD_I, EC_WORD_WANT, EC_WORD_A, EC_WORD_NICE, EC_MOVE2(PRESENT), EC_WORD_ELLIPSIS}, .speechWin = {EC_WORD_PLEASE, EC_WORD_GET, EC_WORD_ME, EC_WORD_A, EC_WORD_POKEMON, EC_WORD_GAME}, .speechLose = {EC_WORD_MESSAGE, EC_WORD_CARDS, EC_WORD_MAKE, EC_WORD_A, EC_WORD_WEAK, EC_MOVE2(PRESENT)}, - .monSets = gBattleFrontierTrainerMons_Esther + .monSet = gBattleFrontierTrainerMons_Esther }, - [216] = { + [FRONTIER_TRAINER_OSCAR] = { .facilityClass = FACILITY_CLASS_PKMN_BREEDER_M, .trainerName = _("OSCAR"), .speechBefore = {EC_WORD_LET_S, EC_WORD_SEE, EC_WORD_YOUR, EC_WORD_POWER, EC_WORD_IN, EC_WORD_FULL}, .speechWin = {EC_WORD_THAT_WAS, EC_WORD_NOT, EC_WORD_YOUR, EC_WORD_FULL, EC_WORD_POWER, EC_WORD_EXCL}, .speechLose = {EC_WORD_NOT, EC_WORD_FUNNY, EC_WORD_ELLIPSIS, EC_WORD_YOU_RE, EC_WORD_TOO_STRONG, 0xFFFF}, - .monSets = gBattleFrontierTrainerMons_Oscar + .monSet = gBattleFrontierTrainerMons_Oscar }, - [217] = { + [FRONTIER_TRAINER_WILSON] = { .facilityClass = FACILITY_CLASS_PKMN_BREEDER_M, .trainerName = _("WILSON"), .speechBefore = {EC_WORD_WORK, EC_WORD_IS, EC_WORD_MAKING, EC_WORD_ME, EC_WORD_AN, EC_WORD_EARLY_BIRD}, .speechWin = {EC_WORD_ALL, EC_WORD_WORK, EC_WORD_AND, EC_WORD_NO, EC_WORD_PLAY, EC_WORD_ELLIPSIS}, .speechLose = {EC_MOVE(ENDURE), EC_WORD_IS, EC_WORD_ALL, EC_WORD_I, EC_WORD_CAN, EC_WORD_DO}, - .monSets = gBattleFrontierTrainerMons_Wilson + .monSet = gBattleFrontierTrainerMons_Wilson }, - [218] = { + [FRONTIER_TRAINER_CLARE] = { .facilityClass = FACILITY_CLASS_PKMN_BREEDER_F, .trainerName = _("CLARE"), .speechBefore = {EC_WORD_YAY, EC_WORD_EXCL, EC_WORD_A, EC_WORD_TOUGH, EC_WORD_TRAINER, EC_WORD_EXCL}, .speechWin = {EC_WORD_AWW, EC_WORD_EXCL, EC_WORD_A, EC_WORD_WIMPY, EC_WORD_TRAINER, EC_WORD_EXCL}, .speechLose = {EC_WORD_COOL, EC_WORD_EXCL, EC_WORD_A, EC_WORD_GENIUS, EC_WORD_TRAINER, EC_WORD_EXCL}, - .monSets = gBattleFrontierTrainerMons_Clare + .monSet = gBattleFrontierTrainerMons_Clare }, - [219] = { + [FRONTIER_TRAINER_TESS] = { .facilityClass = FACILITY_CLASS_PKMN_BREEDER_F, .trainerName = _("TESS"), .speechBefore = {EC_WORD_WANT, EC_WORD_SOME, EC_POKEMON(GULPIN), EC_WORD_DESIGN, EC_WORD_SWEETS, EC_WORD_QUES}, .speechWin = {EC_WORD_THEY_RE, EC_WORD_A, EC_WORD_SECRET, EC_WORD_POKEMON, EC_WORD_GOURMET, EC_WORD_ITEM}, .speechLose = {EC_WORD_THEY_RE, EC_WORD_TASTY, EC_WORD_EXCL, EC_WORD_REFRESHING, EC_WORD_TOO, EC_WORD_EXCL}, - .monSets = gBattleFrontierTrainerMons_Tess + .monSet = gBattleFrontierTrainerMons_Tess }, - [220] = { + [FRONTIER_TRAINER_LEON] = { .facilityClass = FACILITY_CLASS_COOLTRAINER_M, .trainerName = _("LEON"), .speechBefore = {EC_WORD_I_AM, EC_WORD_BETTER, EC_WORD_THAN, EC_WORD_ANY, EC_WORD_OTHER, EC_WORD_TRAINER}, .speechWin = {EC_WORD_I, EC_WORD_DID, EC_WORD_IT, EC_MOVE2(JUMP_KICK), EC_WORD_FOR, EC_WORD_JOY}, .speechLose = {EC_WORD_BACK, EC_WORD_HOME, EC_WORD_I, EC_WORD_WILL, EC_WORD_GO, EC_WORD_ELLIPSIS}, - .monSets = gBattleFrontierTrainerMons_Leon + .monSet = gBattleFrontierTrainerMons_Leon }, - [221] = { + [FRONTIER_TRAINER_ALONZO] = { .facilityClass = FACILITY_CLASS_COOLTRAINER_M, .trainerName = _("ALONZO"), .speechBefore = {EC_WORD_I_VE, EC_WORD_NOT, EC_WORD_LOST, EC_WORD_ONCE, EC_WORD_YET, EC_WORD_EXCL}, .speechWin = {EC_WORD_YOUR, EC_WORD_SAD, EC_WORD_LOOK, EC_WORD_BECOMES, EC_WORD_YOU, 0xFFFF}, .speechLose = {EC_WORD_I, EC_WORD_DON_T, EC_WORD_BELIEVE, EC_WORD_THIS, EC_WORD_ELLIPSIS, 0xFFFF}, - .monSets = gBattleFrontierTrainerMons_Alonzo + .monSet = gBattleFrontierTrainerMons_Alonzo }, - [222] = { + [FRONTIER_TRAINER_VINCE] = { .facilityClass = FACILITY_CLASS_COOLTRAINER_M, .trainerName = _("VINCE"), .speechBefore = {EC_WORD_THE, EC_WORD_TOP, EC_WORD_TRAINER, EC_WORD_THAT_S, EC_WORD_ME, EC_WORD_EXCL}, .speechWin = {EC_WORD_THE, EC_WORD_TOP, EC_WORD_RANK, EC_WORD_BELONGS_TO, EC_WORD_ME, EC_WORD_EXCL}, .speechLose = {EC_WORD_I, EC_WORD_WILL, EC_WORD_APPEAL, EC_WORD_THIS, EC_MOVE(OUTRAGE), EC_WORD_EXCL}, - .monSets = gBattleFrontierTrainerMons_Vince + .monSet = gBattleFrontierTrainerMons_Vince }, - [223] = { + [FRONTIER_TRAINER_BRYON] = { .facilityClass = FACILITY_CLASS_COOLTRAINER_M, .trainerName = _("BRYON"), .speechBefore = {EC_WORD_MY, EC_MOVE2(BARRAGE), EC_WORD_WILL, EC_MOVE2(SLAM), EC_WORD_YOU, EC_WORD_EXCL}, .speechWin = {EC_WORD_YOU, EC_WORD_DIDN_T, EC_WORD_COUNT_ON, EC_WORD_ANY, EC_WORD_LESS, EC_WORD_QUES}, .speechLose = {EC_WORD_I, EC_WORD_JUST, EC_WORD_DON_T, EC_WORD_GET, EC_WORD_IT, EC_WORD_ELLIPSIS}, - .monSets = gBattleFrontierTrainerMons_Bryon + .monSet = gBattleFrontierTrainerMons_Bryon }, - [224] = { + [FRONTIER_TRAINER_AVA] = { .facilityClass = FACILITY_CLASS_COOLTRAINER_F, .trainerName = _("AVA"), .speechBefore = {EC_WORD_I_AM, EC_WORD_A, EC_WORD_TREASURE, EC_WORD_OF, EC_WORD_THIS, EC_WORD_WORLD}, .speechWin = {EC_WORD_MY, EC_WORD_WORLD, EC_WORD_IS, EC_WORD_FULL, EC_WORD_OF, EC_WORD_WONDER}, .speechLose = {EC_WORD_WHY, EC_WORD_ARE, EC_WORD_YOU, EC_WORD_SO, EC_WORD_TERRIBLE, EC_WORD_QUES}, - .monSets = gBattleFrontierTrainerMons_Ava + .monSet = gBattleFrontierTrainerMons_Ava }, - [225] = { + [FRONTIER_TRAINER_MIRIAM] = { .facilityClass = FACILITY_CLASS_COOLTRAINER_F, .trainerName = _("MIRIAM"), .speechBefore = {EC_WORD_OH, EC_WORD_A, EC_WORD_TRAINER, EC_WORD_WITH, EC_WORD_A, EC_MOVE(SCARY_FACE)}, .speechWin = {EC_WORD_AHAHA, EC_WORD_YOU, EC_WORD_ONLY, EC_WORD_LOOK, EC_WORD_SCARY, EC_WORD_EXCL}, .speechLose = {EC_WORD_AIYEEH, EC_WORD_EXCL, EC_WORD_YOU, EC_WORD_REALLY, EC_WORD_ARE, EC_WORD_SCARY}, - .monSets = gBattleFrontierTrainerMons_Miriam + .monSet = gBattleFrontierTrainerMons_Miriam }, - [226] = { + [FRONTIER_TRAINER_CARRIE] = { .facilityClass = FACILITY_CLASS_COOLTRAINER_F, .trainerName = _("CARRIE"), .speechBefore = {EC_WORD_I, EC_WORD_WILL, EC_WORD_SHOW, EC_WORD_YOU, EC_WORD_GUTSY, EC_WORD_EXCL}, .speechWin = {EC_WORD_IT_S, EC_WORD_ALL, EC_WORD_ABOUT, EC_WORD_GUTS, EC_WORD_EXCL, 0xFFFF}, .speechLose = {EC_WORD_OH, EC_WORD_NO, EC_WORD_ELLIPSIS, EC_MOVE(SELF_DESTRUCT), EC_WORD_MODE, EC_WORD_EXCL}, - .monSets = gBattleFrontierTrainerMons_Carrie + .monSet = gBattleFrontierTrainerMons_Carrie }, - [227] = { + [FRONTIER_TRAINER_GILLIAN2] = { .facilityClass = FACILITY_CLASS_COOLTRAINER_F, .trainerName = _("GILLIAN"), .speechBefore = {EC_WORD_I, EC_WORD_SEEK, EC_WORD_A, EC_WORD_TRULY, EC_WORD_GREAT, EC_WORD_BATTLE}, .speechWin = {EC_WORD_I, EC_WORD_NEED, EC_WORD_A_LOT, EC_WORD_BETTER, EC_WORD_BATTLE, EC_WORD_ELLIPSIS}, .speechLose = {EC_WORD_THAT_WAS, EC_WORD_A_LITTLE, EC_WORD_TOO, EC_WORD_MUCH, EC_WORD_TO, EC_WORD_TAKE}, - .monSets = gBattleFrontierTrainerMons_Gillian2 + .monSet = gBattleFrontierTrainerMons_Gillian2 }, - [228] = { + [FRONTIER_TRAINER_TYLER] = { .facilityClass = FACILITY_CLASS_PKMN_RANGER_M, .trainerName = _("TYLER"), .speechBefore = {EC_WORD_YO, EC_WORD_EXCL, 0xFFFF, EC_WORD_LET_S, EC_WORD_GO, EC_WORD_EXCL_EXCL}, .speechWin = {EC_WORD_YO, EC_WORD_EXCL, 0xFFFF, EC_WORD_I, EC_WORD_WON, EC_WORD_YO}, .speechLose = {EC_WORD_YO, EC_WORD_EXCL, 0xFFFF, EC_WORD_I, EC_WORD_LOST, EC_WORD_YO}, - .monSets = gBattleFrontierTrainerMons_Tyler + .monSet = gBattleFrontierTrainerMons_Tyler }, - [229] = { + [FRONTIER_TRAINER_CHAZ] = { .facilityClass = FACILITY_CLASS_PKMN_RANGER_M, .trainerName = _("CHAZ"), .speechBefore = {EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_HAVE, EC_WORD_TOO, EC_WORD_MUCH, EC_WORD_POWER}, .speechWin = {EC_WORD_THEY, EC_WORD_HAVE, EC_WORD_MORE, EC_WORD_POWER, EC_WORD_NOW, EC_WORD_EXCL}, .speechLose = {EC_WORD_YEAH, EC_MOVE2(TAKE_DOWN), EC_WORD_THEIR, EC_WORD_POWER, EC_WORD_A_TINY_BIT, EC_WORD_PLEASE}, - .monSets = gBattleFrontierTrainerMons_Chaz + .monSet = gBattleFrontierTrainerMons_Chaz }, - [230] = { + [FRONTIER_TRAINER_NELSON] = { .facilityClass = FACILITY_CLASS_PKMN_RANGER_M, .trainerName = _("NELSON"), .speechBefore = {EC_WORD_WELL_THEN, EC_WORD_WILL, EC_WORD_THIS, EC_WORD_POKEMON, EC_WORD_WORK, EC_WORD_QUES}, .speechWin = {EC_WORD_I, EC_WORD_SEE, EC_WORD_THAT, EC_WORD_IT, EC_WORD_WAS, EC_WORD_TOO_STRONG}, .speechLose = {EC_WORD_IT, EC_WORD_DIDN_T, EC_WORD_MATCH_UP, EC_WORD_WELL, EC_WORD_I, EC_WORD_THINK}, - .monSets = gBattleFrontierTrainerMons_Nelson + .monSet = gBattleFrontierTrainerMons_Nelson }, - [231] = { + [FRONTIER_TRAINER_SHANIA] = { .facilityClass = FACILITY_CLASS_PKMN_RANGER_F, .trainerName = _("SHANIA"), .speechBefore = {EC_WORD_ALL, EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_ABSOLUTELY, EC_WORD_ADORE, EC_WORD_ME}, .speechWin = {EC_WORD_HAPPINESS, EC_WORD_IS, EC_WORD_A, EC_WORD_POKEMON, EC_WORD_WITH, EC_WORD_CUTE_CHARM}, .speechLose = {EC_WORD_YOU_RE, EC_WORD_SO, EC_WORD_MEAN, EC_WORD_TO, EC_WORD_CUTE, EC_WORD_POKEMON}, - .monSets = gBattleFrontierTrainerMons_Shania + .monSet = gBattleFrontierTrainerMons_Shania }, - [232] = { + [FRONTIER_TRAINER_STELLA] = { .facilityClass = FACILITY_CLASS_PKMN_RANGER_F, .trainerName = _("STELLA"), .speechBefore = {EC_WORD_I, EC_WORD_WANT, EC_WORD_TO, EC_WORD_SEE, EC_WORD_YOUR, EC_WORD_POKEMON}, .speechWin = {EC_WORD_WELL, EC_WORD_AREN_T, EC_WORD_THEY, EC_WORD_BORING, EC_WORD_QUES, EC_WORD_AHAHA}, .speechLose = {EC_WORD_YOUR, EC_WORD_POKEMON, EC_WORD_ARE, EC_WORD_SOMETHING, EC_WORD_ELSE, EC_WORD_ALL_RIGHT}, - .monSets = gBattleFrontierTrainerMons_Stella + .monSet = gBattleFrontierTrainerMons_Stella }, - [233] = { + [FRONTIER_TRAINER_DORINE] = { .facilityClass = FACILITY_CLASS_PKMN_RANGER_F, .trainerName = _("DORINE"), .speechBefore = {EC_WORD_I_AM, EC_WORD_YOUNG, EC_WORD_AND, EC_WORD_STRONG, EC_WORD_EXCL, 0xFFFF}, .speechWin = {EC_WORD_SEE, EC_WORD_QUES, EC_WORD_AREN_T, EC_WORD_I, EC_WORD_GOOD, EC_WORD_QUES}, .speechLose = {EC_WORD_THIS, EC_WORD_ISN_T, EC_WORD_WORKING, EC_WORD_OUT, EC_WORD_AT, EC_WORD_ALL}, - .monSets = gBattleFrontierTrainerMons_Dorine + .monSet = gBattleFrontierTrainerMons_Dorine }, - [234] = { + [FRONTIER_TRAINER_MADDOX] = { .facilityClass = FACILITY_CLASS_DRAGON_TAMER, .trainerName = _("MADDOX"), .speechBefore = {EC_WORD_DRAGON, EC_WORD_POKEMON, EC_WORD_ARE, EC_WORD_MY, EC_WORD_NO_1, EC_WORD_CHOICE}, .speechWin = {EC_WORD_IT_S, EC_WORD_NO, EC_WORD_SECRET, EC_WORD_DRAGON, EC_WORD_POKEMON, EC_WORD_WIN}, .speechLose = {EC_WORD_DRAGON, EC_WORD_POKEMON, EC_WORD_SHOULD, EC_WORD_NOT, EC_WORD_LOSE, EC_WORD_EXCL}, - .monSets = gBattleFrontierTrainerMons_Maddox + .monSet = gBattleFrontierTrainerMons_Maddox }, - [235] = { + [FRONTIER_TRAINER_DAVIN] = { .facilityClass = FACILITY_CLASS_DRAGON_TAMER, .trainerName = _("DAVIN"), .speechBefore = {EC_WORD_LET_S, EC_WORD_HEAR, EC_WORD_YOU, EC_MOVE2(ROAR), EC_WORD_EXCL, 0xFFFF}, .speechWin = {EC_WORD_WROOOAAR_EXCL, 0xFFFF, 0xFFFF, EC_WORD_VICTORY, EC_WORD_EXCL_EXCL, 0xFFFF}, .speechLose = {EC_WORD_WROOOAAR_EXCL, 0xFFFF, 0xFFFF, EC_WORD_WHY, EC_WORD_QUES_EXCL, 0xFFFF}, - .monSets = gBattleFrontierTrainerMons_Davin + .monSet = gBattleFrontierTrainerMons_Davin }, - [236] = { + [FRONTIER_TRAINER_TREVON] = { .facilityClass = FACILITY_CLASS_DRAGON_TAMER, .trainerName = _("TREVON"), .speechBefore = {EC_WORD_I_AM, EC_WORD_LIVING, EC_WORD_ONLY, EC_WORD_WITH, EC_WORD_DRAGON, EC_WORD_POKEMON}, .speechWin = {EC_WORD_THE, EC_WORD_WAY, EC_WORD_I_AM, EC_WORD_LIVING, EC_WORD_IS, EC_WORD_PERFECT}, .speechLose = {EC_WORD_YOU_VE, EC_WORD_DESTROYED, EC_WORD_THE, EC_WORD_WAY, EC_WORD_I_AM, EC_WORD_LIVING}, - .monSets = gBattleFrontierTrainerMons_Trevon + .monSet = gBattleFrontierTrainerMons_Trevon }, - [237] = { + [FRONTIER_TRAINER_MATEO] = { .facilityClass = FACILITY_CLASS_BLACK_BELT, .trainerName = _("MATEO"), .speechBefore = {EC_WORD_THIS, EC_WORD_SHOULD, EC_WORD_BE, EC_WORD_OVER, EC_WORD_SOON, EC_WORD_ENOUGH}, .speechWin = {EC_WORD_WELL, EC_WORD_THAT, EC_WORD_DIDN_T, EC_WORD_TAKE, EC_WORD_VERY, EC_WORD_MUCH}, .speechLose = {EC_WORD_I, EC_WORD_CAN_T, EC_WORD_LOSE, EC_WORD_SO, EC_WORD_SOON, EC_WORD_EXCL}, - .monSets = gBattleFrontierTrainerMons_Mateo + .monSet = gBattleFrontierTrainerMons_Mateo }, - [238] = { + [FRONTIER_TRAINER_BRET] = { .facilityClass = FACILITY_CLASS_BLACK_BELT, .trainerName = _("BRET"), .speechBefore = {EC_WORD_I, EC_WORD_LIKE, EC_WORD_ROCK_SOLID, EC_WORD_POKEMON, EC_WORD_THE, EC_WORD_BEST}, .speechWin = {EC_WORD_TOUGHNESS, EC_WORD_IS, EC_WORD_THE, EC_WORD_WAY, EC_WORD_TO, EC_WORD_GO}, .speechLose = {EC_WORD_I, EC_WORD_ALSO, EC_WORD_HAVE, EC_WORD_A, EC_WORD_PLUSH_DOLL, EC_WORD_COLLECTION}, - .monSets = gBattleFrontierTrainerMons_Bret + .monSet = gBattleFrontierTrainerMons_Bret }, - [239] = { + [FRONTIER_TRAINER_RAUL] = { .facilityClass = FACILITY_CLASS_BLACK_BELT, .trainerName = _("RAUL"), .speechBefore = {EC_WORD_I, EC_WORD_REJECT, EC_WORD_EVERY, EC_WORD_WEAK, EC_WORD_TRAINER, 0xFFFF}, .speechWin = {EC_WORD_HUMPH, EC_WORD_EXCL, EC_WORD_ANOTHER, EC_WORD_WEAK, EC_WORD_TRAINER, EC_WORD_ELLIPSIS}, .speechLose = {EC_WORD_THERE, EC_WORD_IS, EC_WORD_NOTHING, EC_WORD_WEAK, EC_WORD_ABOUT, EC_WORD_YOU}, - .monSets = gBattleFrontierTrainerMons_Raul + .monSet = gBattleFrontierTrainerMons_Raul }, - [240] = { + [FRONTIER_TRAINER_KAY] = { .facilityClass = FACILITY_CLASS_BATTLE_GIRL, .trainerName = _("KAY"), .speechBefore = {EC_WORD_AND, EC_WORD_YET, EC_WORD_ANOTHER, EC_WORD_BATTLE, EC_WORD_QUES, 0xFFFF}, .speechWin = {EC_WORD_I, EC_WORD_WON, EC_WORD_BUT, EC_WORD_I_AM, EC_WORD_TIRED, EC_WORD_ELLIPSIS}, .speechLose = {EC_WORD_GOOD, EC_WORD_IT_S, EC_WORD_OVER, EC_WORD_AT, EC_WORD_LAST, EC_WORD_ELLIPSIS}, - .monSets = gBattleFrontierTrainerMons_Kay + .monSet = gBattleFrontierTrainerMons_Kay }, - [241] = { + [FRONTIER_TRAINER_ELENA] = { .facilityClass = FACILITY_CLASS_BATTLE_GIRL, .trainerName = _("ELENA"), .speechBefore = {EC_WORD_A, EC_WORD_BATTLE, EC_WORD_GIRL, EC_WORD_THAT_S, EC_WORD_ME, EC_WORD_EXCL}, .speechWin = {EC_WORD_ISN_T, EC_WORD_A, EC_WORD_BATTLE, EC_WORD_GIRL, EC_WORD_AWESOME, EC_WORD_QUES}, .speechLose = {EC_WORD_YOU, EC_WORD_DISLIKE, EC_WORD_A, EC_WORD_BATTLE, EC_WORD_GIRL, EC_WORD_QUES}, - .monSets = gBattleFrontierTrainerMons_Elena + .monSet = gBattleFrontierTrainerMons_Elena }, - [242] = { + [FRONTIER_TRAINER_ALANA] = { .facilityClass = FACILITY_CLASS_BATTLE_GIRL, .trainerName = _("ALANA"), .speechBefore = {EC_WORD_EAT, EC_WORD_MY, EC_WORD_INVINCIBLE, EC_WORD_ATTACK, EC_WORD_YOU, EC_WORD_EXCL}, .speechWin = {EC_WORD_YOU, EC_WORD_HAVE, EC_WORD_MUCH, EC_WORD_TO, EC_WORD_LEARN, 0xFFFF}, .speechLose = {EC_WORD_SO, EC_WORD_MUCH, EC_WORD_FOR, EC_WORD_MY, EC_WORD_INVINCIBLE, EC_WORD_ATTACK}, - .monSets = gBattleFrontierTrainerMons_Alana + .monSet = gBattleFrontierTrainerMons_Alana }, - [243] = { + [FRONTIER_TRAINER_ALEXAS] = { .facilityClass = FACILITY_CLASS_EXPERT_M, .trainerName = _("ALEXAS"), .speechBefore = {EC_WORD_GOOD, EC_WORD_TO, EC_WORD_MEET_YOU, EC_WORD_YOUNG, EC_WORD_TRAINER, EC_WORD_EXCL}, .speechWin = {EC_WORD_WAHAHAHA, EC_WORD_EXCL, 0xFFFF, EC_WORD_GIVE, EC_WORD_IT, EC_WORD_UP}, .speechLose = {EC_WORD_YOU, EC_WORD_ARE, EC_WORD_A, EC_WORD_STRONG, EC_WORD_TRAINER, EC_WORD_KID}, - .monSets = gBattleFrontierTrainerMons_Alexas + .monSet = gBattleFrontierTrainerMons_Alexas }, - [244] = { + [FRONTIER_TRAINER_WESTON] = { .facilityClass = FACILITY_CLASS_EXPERT_M, .trainerName = _("WESTON"), .speechBefore = {EC_WORD_I, EC_WORD_DON_T, EC_WORD_PLAY, EC_WORD_DOWN, EC_WORD_ALL_RIGHT, EC_WORD_QUES}, .speechWin = {EC_WORD_YOU_RE, EC_WORD_FAR, EC_WORD_TOO, EC_WORD_EASY, EC_WORD_TO, EC_WORD_ATTACK}, .speechLose = {EC_WORD_WELL, EC_WORD_WELL, EC_WORD_ELLIPSIS, EC_WORD_I, EC_WORD_SURRENDER, EC_WORD_ELLIPSIS}, - .monSets = gBattleFrontierTrainerMons_Weston + .monSet = gBattleFrontierTrainerMons_Weston }, - [245] = { + [FRONTIER_TRAINER_JASPER] = { .facilityClass = FACILITY_CLASS_EXPERT_M, .trainerName = _("JASPER"), .speechBefore = {EC_WORD_I_AM, EC_WORD_NOT, EC_WORD_OLD, EC_WORD_I_AM, EC_WORD_SKILLED, EC_WORD_EXCL}, .speechWin = {EC_WORD_SKILLED, EC_WORD_THAT_S, EC_WORD_WHAT, EC_WORD_I_AM, EC_WORD_EXCL, 0xFFFF}, .speechLose = {EC_WORD_I_AM, EC_WORD_SHOCKED, EC_WORD_EXCL, EC_WORD_DOWN, EC_WORD_I, EC_WORD_GO}, - .monSets = gBattleFrontierTrainerMons_Jasper + .monSet = gBattleFrontierTrainerMons_Jasper }, - [246] = { + [FRONTIER_TRAINER_NADIA] = { .facilityClass = FACILITY_CLASS_EXPERT_F, .trainerName = _("NADIA"), .speechBefore = {EC_WORD_YOU, EC_WORD_CAN_T, EC_WORD_BEAT, EC_WORD_ME, EC_WORD_DOWN, EC_WORD_EXCL}, .speechWin = {EC_WORD_HAH, EC_WORD_EXCL, 0xFFFF, EC_WORD_I, EC_WORD_BEAT, EC_WORD_YOU}, .speechLose = {EC_WORD_I_AM, EC_MOVE2(BEAT_UP), EC_WORD_AND, EC_WORD_DOWNCAST, EC_WORD_ELLIPSIS, 0xFFFF}, - .monSets = gBattleFrontierTrainerMons_Nadia + .monSet = gBattleFrontierTrainerMons_Nadia }, - [247] = { + [FRONTIER_TRAINER_MIRANDA] = { .facilityClass = FACILITY_CLASS_EXPERT_F, .trainerName = _("MIRANDA"), .speechBefore = {EC_WORD_WELL, EC_WORD_WELL, 0xFFFF, EC_WORD_LET_S, EC_WORD_START, 0xFFFF}, .speechWin = {EC_WORD_WHAT, EC_WORD_QUES, EC_WORD_DONE, EC_WORD_SO, EC_WORD_SOON, EC_WORD_QUES}, .speechLose = {EC_WORD_WELL, EC_WORD_I, EC_WORD_SEE, EC_WORD_THAT, EC_WORD_I_AM, EC_WORD_TOO_WEAK}, - .monSets = gBattleFrontierTrainerMons_Miranda + .monSet = gBattleFrontierTrainerMons_Miranda }, - [248] = { + [FRONTIER_TRAINER_EMMA] = { .facilityClass = FACILITY_CLASS_EXPERT_F, .trainerName = _("EMMA"), .speechBefore = {EC_WORD_I_VE, EC_WORD_BEEN, EC_WORD_HEARING, EC_WORD_ABOUT, EC_WORD_YOU, 0xFFFF}, .speechWin = {EC_WORD_I, EC_WORD_THINK, EC_WORD_I_VE, EC_WORD_MISHEARD, EC_WORD_THINGS, 0xFFFF}, .speechLose = {EC_WORD_WHAT, EC_WORD_I_VE, EC_WORD_BEEN, EC_WORD_HEARING, EC_WORD_IS, EC_WORD_RIGHT}, - .monSets = gBattleFrontierTrainerMons_Emma + .monSet = gBattleFrontierTrainerMons_Emma }, - [249] = { + [FRONTIER_TRAINER_ROLANDO] = { .facilityClass = FACILITY_CLASS_PSYCHIC_M, .trainerName = _("ROLANDO"), .speechBefore = {EC_WORD_I_AM, EC_WORD_A, EC_WORD_SUPER, EC_WORD_POKEMON, EC_WORD_HERO, EC_WORD_EXCL}, .speechWin = {EC_WORD_WAS, EC_WORD_THAT, EC_WORD_ENOUGH, EC_WORD_FOR, EC_WORD_YOU, EC_WORD_QUES}, .speechLose = {EC_WORD_YOU, EC_WORD_SHOULD, EC_WORD_NOT, EC_WORD_BEAT, EC_WORD_A, EC_WORD_HERO}, - .monSets = gBattleFrontierTrainerMons_Rolando + .monSet = gBattleFrontierTrainerMons_Rolando }, - [250] = { + [FRONTIER_TRAINER_STANLY] = { .facilityClass = FACILITY_CLASS_PSYCHIC_M, .trainerName = _("STANLY"), .speechBefore = {EC_WORD_THIS, EC_WORD_SHOULD, EC_WORD_BE, EC_WORD_AN, EC_WORD_EASY, EC_WORD_MATCH}, .speechWin = {EC_WORD_IT, EC_WORD_REALLY, EC_WORD_WAS, EC_WORD_EASY, 0xFFFF, 0xFFFF}, .speechLose = {EC_WORD_ARE, EC_WORD_YOU, EC_WORD_HAPPY, EC_WORD_NOW, EC_WORD_QUES, 0xFFFF}, - .monSets = gBattleFrontierTrainerMons_Stanly + .monSet = gBattleFrontierTrainerMons_Stanly }, - [251] = { + [FRONTIER_TRAINER_DARIO] = { .facilityClass = FACILITY_CLASS_PSYCHIC_M, .trainerName = _("DARIO"), .speechBefore = {EC_WORD_MY, EC_MOVE2(FORESIGHT), EC_WORD_SAYS, EC_WORD_I, EC_WORD_WILL, EC_WORD_WIN}, .speechWin = {EC_WORD_MY, EC_MOVE2(FORESIGHT), EC_WORD_HAS, EC_WORD_BEEN, EC_WORD_PERFECT, 0xFFFF}, .speechLose = {EC_WORD_I, EC_WORD_DIDN_T, EC_WORD_SEE, EC_WORD_THIS, EC_MOVE(REVERSAL), EC_WORD_ELLIPSIS}, - .monSets = gBattleFrontierTrainerMons_Dario + .monSet = gBattleFrontierTrainerMons_Dario }, - [252] = { + [FRONTIER_TRAINER_KARLEE] = { .facilityClass = FACILITY_CLASS_PSYCHIC_F, .trainerName = _("KARLEE"), .speechBefore = {EC_WORD_SOMETHING, EC_WORD_GOOD, EC_WORD_WILL, EC_WORD_COME, EC_WORD_OF, EC_WORD_THIS}, .speechWin = {EC_WORD_YOU, EC_WORD_SEE, EC_WORD_QUES, EC_WORD_FANTASTIC, EC_WORD_EXCL, 0xFFFF}, .speechLose = {EC_WORD_THAT, EC_WORD_SOMETHING, EC_WORD_GOOD, EC_WORD_WENT, EC_WORD_TO, EC_WORD_YOU}, - .monSets = gBattleFrontierTrainerMons_Karlee + .monSet = gBattleFrontierTrainerMons_Karlee }, - [253] = { + [FRONTIER_TRAINER_JAYLIN] = { .facilityClass = FACILITY_CLASS_PSYCHIC_F, .trainerName = _("JAYLIN"), .speechBefore = {EC_WORD_EVERY, EC_WORD_TRAINER, EC_WORD_HAS, EC_WORD_BEEN, EC_WORD_TOO_WEAK, EC_WORD_ELLIPSIS}, .speechWin = {EC_WORD_IT_S, EC_WORD_MAKING, EC_WORD_ME, EC_MOVE(YAWN), EC_WORD_THAT, EC_WORD_BATTLE}, .speechLose = {EC_WORD_I, EC_WORD_SLEPT, EC_WORD_AND, EC_WORD_SO, EC_WORD_I, EC_WORD_LOST}, - .monSets = gBattleFrontierTrainerMons_Jaylin + .monSet = gBattleFrontierTrainerMons_Jaylin }, - [254] = { + [FRONTIER_TRAINER_INGRID] = { .facilityClass = FACILITY_CLASS_PSYCHIC_F, .trainerName = _("INGRID"), .speechBefore = {EC_WORD_I_AM, EC_WORD_NOT, EC_WORD_A, EC_WORD_VERY, EC_WORD_MEAN, EC_WORD_TRAINER}, .speechWin = {EC_WORD_WASN_T, EC_WORD_THAT, EC_WORD_A, EC_WORD_GOOD, EC_WORD_MATCH, EC_WORD_QUES}, .speechLose = {EC_WORD_I, EC_WORD_LOST, EC_WORD_CAUSE, EC_WORD_YOU_RE, EC_WORD_MEAN, EC_WORD_ELLIPSIS}, - .monSets = gBattleFrontierTrainerMons_Ingrid + .monSet = gBattleFrontierTrainerMons_Ingrid }, - [255] = { + [FRONTIER_TRAINER_DELILAH] = { .facilityClass = FACILITY_CLASS_HEX_MANIAC, .trainerName = _("DELILAH"), .speechBefore = {EC_WORD_DON_T, EC_MOVE(GRUDGE), EC_WORD_ME, EC_WORD_IF_I_WIN, EC_WORD_OK_QUES, 0xFFFF}, .speechWin = {EC_WORD_I_AM, EC_WORD_SORRY, EC_WORD_TO, EC_WORD_SEE, EC_WORD_YOU, EC_WORD_ANGRY}, .speechLose = {EC_WORD_I, EC_WORD_HAVE, EC_WORD_A, EC_MOVE(GRUDGE), EC_WORD_WITH, EC_WORD_YOU}, - .monSets = gBattleFrontierTrainerMons_Delilah + .monSet = gBattleFrontierTrainerMons_Delilah }, - [256] = { + [FRONTIER_TRAINER_CARLY] = { .facilityClass = FACILITY_CLASS_HEX_MANIAC, .trainerName = _("CARLY"), .speechBefore = {EC_WORD_I, EC_WORD_WILL, EC_WORD_SCATTER, EC_WORD_SOME, EC_MOVE2(POISON_POWDER), EC_WORD_ABOUT}, .speechWin = {EC_WORD_IT_S, EC_WORD_SCARY, EC_WORD_HOW, EC_WORD_MY, EC_WORD_STRATEGY, EC_WORD_WORKS}, .speechLose = {EC_WORD_I, EC_WORD_DISLIKE, EC_WORD_YOU, EC_WORD_AND, EC_WORD_YOUR, EC_WORD_POKEMON}, - .monSets = gBattleFrontierTrainerMons_Carly + .monSet = gBattleFrontierTrainerMons_Carly }, - [257] = { + [FRONTIER_TRAINER_LEXIE] = { .facilityClass = FACILITY_CLASS_HEX_MANIAC, .trainerName = _("LEXIE"), .speechBefore = {EC_WORD_WANT, EC_WORD_TO, EC_WORD_SEE, EC_WORD_SCARY, EC_WORD_POKEMON, EC_WORD_QUES}, .speechWin = {EC_WORD_WASN_T, EC_WORD_THAT, EC_WORD_SCARY, EC_WORD_EH_QUES, 0xFFFF, 0xFFFF}, .speechLose = {EC_WORD_YOU_RE, EC_WORD_MORE, EC_WORD_SCARY, EC_WORD_THAN, EC_WORD_MY, EC_WORD_POKEMON}, - .monSets = gBattleFrontierTrainerMons_Lexie + .monSet = gBattleFrontierTrainerMons_Lexie }, - [258] = { + [FRONTIER_TRAINER_MILLER] = { .facilityClass = FACILITY_CLASS_POKEMANIAC, .trainerName = _("MILLER"), .speechBefore = {EC_WORD_HELLO, EC_WORD_QUES, 0xFFFF, EC_WORD_HELLO, EC_WORD_QUES_EXCL, 0xFFFF}, .speechWin = {EC_WORD_HELLO, EC_WORD_MOTHER, EC_WORD_EXCL, EC_WORD_I, EC_WORD_WON, EC_WORD_EXCL}, .speechLose = {EC_WORD_MY, EC_WORD_PHONE, EC_WORD_ISN_T, EC_WORD_WORKING, EC_WORD_ELLIPSIS, 0xFFFF}, - .monSets = gBattleFrontierTrainerMons_Miller + .monSet = gBattleFrontierTrainerMons_Miller }, - [259] = { + [FRONTIER_TRAINER_MARV] = { .facilityClass = FACILITY_CLASS_POKEMANIAC, .trainerName = _("MARV"), .speechBefore = {EC_WORD_YOU, EC_WORD_CAN, EC_WORD_LOSE, EC_WORD_YOUR, EC_MOVE(SWAGGER), EC_WORD_NOW}, .speechWin = {EC_WORD_THERE, EC_WORD_IS, EC_WORD_NO, EC_MOVE(SWAGGER), EC_WORD_LEFT, EC_WORD_EH_QUES}, .speechLose = {EC_WORD_GO, EC_WORD_ON, EC_MOVE(SWAGGER), EC_WORD_ALL, EC_WORD_YOU, EC_WORD_WANT}, - .monSets = gBattleFrontierTrainerMons_Marv + .monSet = gBattleFrontierTrainerMons_Marv }, - [260] = { + [FRONTIER_TRAINER_LAYTON] = { .facilityClass = FACILITY_CLASS_POKEMANIAC, .trainerName = _("LAYTON"), .speechBefore = {EC_WORD_I, EC_WORD_KNOW, EC_WORD_I_AM, EC_WORD_TOTALLY, EC_WORD_COOL, EC_WORD_EXCL}, .speechWin = {EC_WORD_YOU, EC_WORD_CAN, EC_WORD_LOOK, EC_WORD_UP, EC_WORD_TO, EC_WORD_ME}, .speechLose = {EC_WORD_YOU_RE, EC_WORD_COOL, EC_WORD_EXCL, EC_WORD_NO, EC_WORD_REALLY, EC_WORD_EXCL}, - .monSets = gBattleFrontierTrainerMons_Layton + .monSet = gBattleFrontierTrainerMons_Layton }, - [261] = { + [FRONTIER_TRAINER_BROOKS] = { .facilityClass = FACILITY_CLASS_GENTLEMAN, .trainerName = _("BROOKS"), .speechBefore = {EC_WORD_THIS, EC_WORD_IS, EC_WORD_A, EC_WORD_HIGH, EC_WORD_LEVEL, EC_WORD_BATTLE}, .speechWin = {EC_WORD_THAT_WAS, EC_WORD_HIGH, EC_WORD_LEVEL, EC_WORD_AND, EC_WORD_EXCITING, EC_WORD_TOO}, .speechLose = {EC_WORD_YOU_RE, EC_WORD_TOO, EC_WORD_HIGH, EC_WORD_IN, EC_WORD_LEVEL, EC_WORD_ELLIPSIS}, - .monSets = gBattleFrontierTrainerMons_Brooks + .monSet = gBattleFrontierTrainerMons_Brooks }, - [262] = { + [FRONTIER_TRAINER_GREGORY] = { .facilityClass = FACILITY_CLASS_GENTLEMAN, .trainerName = _("GREGORY"), .speechBefore = {EC_WORD_I_AM, EC_WORD_NOT, EC_WORD_THAT, EC_WORD_OLD, EC_WORD_YET, 0xFFFF}, .speechWin = {EC_WORD_WHO, EC_WORD_SAYS, EC_WORD_I_AM, EC_WORD_TOO, EC_WORD_OLD, EC_WORD_QUES}, .speechLose = {EC_WORD_PLEASE, EC_WORD_I_AM, EC_WORD_REALLY, EC_WORD_NOT, EC_WORD_THAT, EC_WORD_OLD}, - .monSets = gBattleFrontierTrainerMons_Gregory + .monSet = gBattleFrontierTrainerMons_Gregory }, - [263] = { + [FRONTIER_TRAINER_REESE] = { .facilityClass = FACILITY_CLASS_GENTLEMAN, .trainerName = _("REESE"), .speechBefore = {EC_WORD_I_VE, EC_WORD_A, EC_WORD_COUPLE, EC_WORD_THINGS, 0xFFFF, 0xFFFF}, .speechWin = {EC_WORD_DON_T, EC_WORD_DIET, EC_WORD_PLAY, EC_WORD_SPORTS, EC_WORD_INSTEAD, 0xFFFF}, .speechLose = {EC_WORD_INSTEAD, EC_WORD_OF, EC_WORD_TELEVISION, EC_WORD_GET, EC_WORD_A, EC_WORD_BOOK}, - .monSets = gBattleFrontierTrainerMons_Reese + .monSet = gBattleFrontierTrainerMons_Reese }, - [264] = { + [FRONTIER_TRAINER_MASON] = { .facilityClass = FACILITY_CLASS_RUNNING_TRIATHLETE_M, .trainerName = _("MASON"), .speechBefore = {EC_WORD_PLEASE, EC_WORD_DON_T, EC_WORD_MAKE, EC_WORD_THIS, EC_WORD_SCARY, 0xFFFF}, .speechWin = {EC_WORD_THANK_YOU, EC_WORD_ELLIPSIS, 0xFFFF, EC_WORD_I_AM, EC_WORD_HAPPY, EC_WORD_NOW}, .speechLose = {EC_WORD_I_AM, EC_WORD_DISAPPOINTED, EC_WORD_ELLIPSIS, 0xFFFF, 0xFFFF, 0xFFFF}, - .monSets = gBattleFrontierTrainerMons_Mason + .monSet = gBattleFrontierTrainerMons_Mason }, - [265] = { + [FRONTIER_TRAINER_TOBY] = { .facilityClass = FACILITY_CLASS_RUNNING_TRIATHLETE_M, .trainerName = _("TOBY"), .speechBefore = {EC_WORD_LISTEN, EC_WORD_UP, 0xFFFF, EC_WORD_I, EC_WORD_ALWAYS, EC_WORD_WIN}, .speechWin = {EC_WORD_I_AM, EC_WORD_A, EC_WORD_GENIUS, EC_WORD_OR, EC_WORD_WHAT, EC_WORD_QUES}, .speechLose = {EC_WORD_I, EC_WORD_CAN, EC_WORD_BEAT, EC_WORD_YOU, EC_WORD_AT, EC_WORD_SMARTNESS}, - .monSets = gBattleFrontierTrainerMons_Toby + .monSet = gBattleFrontierTrainerMons_Toby }, - [266] = { + [FRONTIER_TRAINER_DOROTHY] = { .facilityClass = FACILITY_CLASS_RUNNING_TRIATHLETE_F, .trainerName = _("DOROTHY"), .speechBefore = {EC_WORD_THE, EC_WORD_SPORTS, EC_WORD_WORLD, EC_WORD_SHOULD, EC_WORD_ACCEPT, EC_WORD_POKEMON}, .speechWin = {EC_WORD_THANK_YOU, EC_WORD_EXCL, EC_WORD_THAT, EC_WORD_WIN, EC_WORD_WAS, EC_WORD_REFRESHING}, .speechLose = {EC_WORD_THANK_YOU, EC_WORD_EXCL, EC_WORD_THAT, EC_WORD_LOSS, EC_WORD_WAS, EC_WORD_REFRESHING}, - .monSets = gBattleFrontierTrainerMons_Dorothy + .monSet = gBattleFrontierTrainerMons_Dorothy }, - [267] = { + [FRONTIER_TRAINER_PIPER] = { .facilityClass = FACILITY_CLASS_RUNNING_TRIATHLETE_F, .trainerName = _("PIPER"), .speechBefore = {EC_WORD_COME_ON, EC_WORD_YOU, EC_WORD_NEED, EC_WORD_A, EC_WORD_SPEED_BOOST, EC_WORD_QUES}, .speechWin = {EC_WORD_YOU, EC_WORD_NEED, EC_WORD_TO, EC_WORD_SHOW, EC_WORD_MORE, EC_WORD_GUTS}, .speechLose = {EC_WORD_OH, EC_WORD_YOU, EC_WORD_EXCL, 0xFFFF, 0xFFFF, 0xFFFF}, - .monSets = gBattleFrontierTrainerMons_Piper + .monSet = gBattleFrontierTrainerMons_Piper }, - [268] = { + [FRONTIER_TRAINER_FINN] = { .facilityClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_M, .trainerName = _("FINN"), .speechBefore = {EC_WORD_NOT, EC_WORD_ANOTHER, EC_WORD_TRAINER, EC_WORD_BATTLE, EC_WORD_ELLIPSIS, 0xFFFF}, .speechWin = {EC_WORD_WON_T, EC_WORD_THIS, EC_WORD_EVER, EC_WORD_END, EC_WORD_QUES, 0xFFFF}, .speechLose = {EC_WORD_I, EC_WORD_FINALLY, EC_WORD_GET, EC_WORD_TO, EC_MOVE2(REST), EC_WORD_A_LITTLE}, - .monSets = gBattleFrontierTrainerMons_Finn + .monSet = gBattleFrontierTrainerMons_Finn }, - [269] = { + [FRONTIER_TRAINER_SAMIR] = { .facilityClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_M, .trainerName = _("SAMIR"), .speechBefore = {EC_WORD_I, EC_MOVE2(DIVE), EC_WORD_BELOW, EC_WORD_THE, EC_MOVE2(SURF), EC_WORD_EXCL}, .speechWin = {EC_WORD_YAHOO, EC_WORD_TAKE, EC_WORD_A, EC_MOVE2(DIVE), EC_WORD_YOU, EC_WORD_EXCL}, .speechLose = {EC_WORD_I_AM, EC_WORD_GOING, EC_WORD_TO, EC_WORD_SINK, EC_WORD_ELLIPSIS, 0xFFFF}, - .monSets = gBattleFrontierTrainerMons_Samir + .monSet = gBattleFrontierTrainerMons_Samir }, - [270] = { + [FRONTIER_TRAINER_FIONA] = { .facilityClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_F, .trainerName = _("FIONA"), .speechBefore = {EC_WORD_DID, EC_WORD_YOU, EC_WORD_LIMBER, EC_WORD_UP, EC_WORD_BEFORE, EC_WORD_QUES}, .speechWin = {EC_WORD_YOU, EC_WORD_NEED, EC_WORD_TO, EC_WORD_BE, EC_WORD_MORE, EC_WORD_READY}, .speechLose = {EC_WORD_BEING, EC_WORD_LIMBER, EC_WORD_DIDN_T, EC_WORD_WORK, EC_WORD_FOR, EC_WORD_ME}, - .monSets = gBattleFrontierTrainerMons_Fiona + .monSet = gBattleFrontierTrainerMons_Fiona }, - [271] = { + [FRONTIER_TRAINER_GLORIA] = { .facilityClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_F, .trainerName = _("GLORIA"), .speechBefore = {EC_WORD_I, EC_WORD_LIKE, EC_WORD_TO, EC_WORD_ATTACK, EC_WORD_WITH, EC_WORD_SUCTION_CUPS}, .speechWin = {EC_WORD_GIGGLE, EC_WORD_ELLIPSIS, EC_WORD_IT_S, EC_WORD_OVER, EC_WORD_FOR, EC_WORD_YOU}, .speechLose = {EC_WORD_I, EC_WORD_DON_T, EC_WORD_GET, EC_WORD_HOW, EC_WORD_SUCTION_CUPS, EC_WORD_WORK}, - .monSets = gBattleFrontierTrainerMons_Gloria + .monSet = gBattleFrontierTrainerMons_Gloria }, - [272] = { + [FRONTIER_TRAINER_NICO] = { .facilityClass = FACILITY_CLASS_CYCLING_TRIATHLETE_M, .trainerName = _("NICO"), .speechBefore = {EC_WORD_LIKE, EC_WORD_A, EC_MOVE(SONIC_BOOM), EC_WORD_I_VE_ARRIVED, 0xFFFF, 0xFFFF}, .speechWin = {EC_WORD_SORRY, EC_WORD_TO, EC_WORD_MAKE, EC_WORD_YOU, EC_WORD_SO, EC_WORD_DOWNCAST}, .speechLose = {EC_WORD_I_AM, EC_WORD_GOING, EC_WORD_WITH, EC_WORD_A, EC_MOVE2(SUPERSONIC), EC_WORD_SPEED_BOOST}, - .monSets = gBattleFrontierTrainerMons_Nico + .monSet = gBattleFrontierTrainerMons_Nico }, - [273] = { + [FRONTIER_TRAINER_JEREMY] = { .facilityClass = FACILITY_CLASS_CYCLING_TRIATHLETE_M, .trainerName = _("JEREMY"), .speechBefore = {EC_WORD_A, EC_WORD_POKEMON, EC_WORD_MASTER, EC_WORD_THAT_S, EC_WORD_MY, EC_WORD_DREAM}, .speechWin = {EC_WORD_MY, EC_WORD_DREAM, EC_WORD_ISN_T, EC_WORD_FAR, EC_WORD_OFF, EC_WORD_EXCL}, .speechLose = {EC_WORD_WHAT, EC_WORD_I, EC_WORD_DREAM, EC_WORD_ISN_T, EC_WORD_HAPPENING, EC_WORD_ELLIPSIS}, - .monSets = gBattleFrontierTrainerMons_Jeremy + .monSet = gBattleFrontierTrainerMons_Jeremy }, - [274] = { + [FRONTIER_TRAINER_CAITLIN] = { .facilityClass = FACILITY_CLASS_CYCLING_TRIATHLETE_F, .trainerName = _("CAITLIN"), .speechBefore = {EC_WORD_DON_T, EC_WORD_YOU, EC_WORD_THINK, EC_WORD_I_AM, EC_WORD_CUTE, EC_WORD_QUES}, .speechWin = {EC_WORD_THERE, EC_WORD_IS, EC_WORD_MORE, EC_WORD_TO_ME, EC_WORD_THAN, EC_WORD_CUTENESS}, .speechLose = {EC_WORD_MY, EC_WORD_CUTE_CHARM, EC_WORD_DOESN_T, EC_MOVE2(ATTRACT), EC_WORD_YOU, EC_WORD_QUES}, - .monSets = gBattleFrontierTrainerMons_Caitlin + .monSet = gBattleFrontierTrainerMons_Caitlin }, - [275] = { + [FRONTIER_TRAINER_REENA] = { .facilityClass = FACILITY_CLASS_CYCLING_TRIATHLETE_F, .trainerName = _("REENA"), .speechBefore = {EC_WORD_I_AM, EC_WORD_ALWAYS, EC_WORD_HAPPY, EC_WORD_HAPPY, EC_WORD_HAPPY, EC_WORD_EXCL}, .speechWin = {EC_WORD_OH, EC_WORD_YAY, EC_WORD_EXCL, EC_WORD_YAHOO, EC_WORD_FOR, EC_WORD_ME}, .speechLose = {EC_WORD_YAHOO, EC_WORD_EXCL, EC_WORD_I_AM, EC_WORD_HAPPY, EC_WORD_FOR, EC_WORD_YOU}, - .monSets = gBattleFrontierTrainerMons_Reena + .monSet = gBattleFrontierTrainerMons_Reena }, - [276] = { + [FRONTIER_TRAINER_AVERY] = { .facilityClass = FACILITY_CLASS_BUG_MANIAC, .trainerName = _("AVERY"), .speechBefore = {EC_WORD_I_VE, EC_WORD_GOT, EC_WORD_A_LOT, EC_WORD_OF, EC_WORD_BUG, EC_WORD_POKEMON}, .speechWin = {EC_WORD_MY, EC_WORD_BUG, EC_WORD_POKEMON, EC_WORD_ARE, EC_WORD_ALL, EC_WORD_UNBELIEVABLE}, .speechLose = {EC_WORD_MY, EC_WORD_BUG, EC_WORD_POKEMON, EC_WORD_ARE, EC_WORD_ALL, EC_WORD_UPSIDE_DOWN}, - .monSets = gBattleFrontierTrainerMons_Avery + .monSet = gBattleFrontierTrainerMons_Avery }, - [277] = { + [FRONTIER_TRAINER_LIAM] = { .facilityClass = FACILITY_CLASS_BUG_MANIAC, .trainerName = _("LIAM"), .speechBefore = {EC_WORD_WE, EC_WORD_REALLY, EC_WORD_DISLIKE, EC_WORD_FIRE, EC_WORD_AND, EC_WORD_FLYING}, .speechWin = {EC_WORD_BUG, EC_WORD_POKEMON, EC_WORD_AREN_T, EC_WORD_BAD, EC_WORD_HEY_QUES, 0xFFFF}, .speechLose = {EC_WORD_YOU, EC_WORD_KNOW, EC_WORD_WHAT, EC_WORD_WE, EC_WORD_DISLIKE, EC_WORD_HEY_QUES}, - .monSets = gBattleFrontierTrainerMons_Liam + .monSet = gBattleFrontierTrainerMons_Liam }, - [278] = { + [FRONTIER_TRAINER_THEO] = { .facilityClass = FACILITY_CLASS_FISHERMAN, .trainerName = _("THEO"), .speechBefore = {EC_WORD_FISHING, EC_WORD_IS, EC_WORD_MY, EC_WORD_CHOICE, EC_WORD_IN, EC_WORD_LIFE}, .speechWin = {EC_WORD_WATER, EC_WORD_POKEMON, EC_MOVE2(ATTRACT), EC_WORD_ME, EC_WORD_WITHOUT, EC_WORD_END}, .speechLose = {EC_WORD_DON_T, EC_WORD_COUNT_ON, EC_WORD_THAT, EC_WORD_HAPPENING, EC_WORD_ANOTHER, EC_WORD_TIME}, - .monSets = gBattleFrontierTrainerMons_Theo + .monSet = gBattleFrontierTrainerMons_Theo }, - [279] = { + [FRONTIER_TRAINER_BAILEY] = { .facilityClass = FACILITY_CLASS_FISHERMAN, .trainerName = _("BAILEY"), .speechBefore = {EC_WORD_I_AM, EC_WORD_AN, EC_WORD_ADULT, EC_WORD_I, EC_WORD_BATTLE, EC_WORD_EASY}, .speechWin = {EC_WORD_I_AM, EC_WORD_AN, EC_WORD_ADULT, EC_WORD_I, EC_MOVE2(SWALLOW), EC_WORD_JOY}, .speechLose = {EC_WORD_I_AM, EC_WORD_AN, EC_WORD_ADULT, EC_WORD_I, EC_MOVE2(SWALLOW), EC_MOVE2(FRUSTRATION)}, - .monSets = gBattleFrontierTrainerMons_Bailey + .monSet = gBattleFrontierTrainerMons_Bailey }, - [280] = { + [FRONTIER_TRAINER_HUGO] = { .facilityClass = FACILITY_CLASS_RUIN_MANIAC, .trainerName = _("HUGO"), .speechBefore = {EC_WORD_I, EC_WORD_TRY, EC_WORD_THE, EC_WORD_BEST, EC_WORD_I, EC_WORD_CAN}, .speechWin = {EC_WORD_I, EC_WORD_CAN_WIN, EC_WORD_IF, EC_WORD_I, EC_WORD_TRY, EC_WORD_ENOUGH}, .speechLose = {EC_WORD_I, EC_WORD_DID, EC_WORD_TRY, EC_WORD_DIDN_T, EC_WORD_I, EC_WORD_QUES}, - .monSets = gBattleFrontierTrainerMons_Hugo + .monSet = gBattleFrontierTrainerMons_Hugo }, - [281] = { + [FRONTIER_TRAINER_BRYCE] = { .facilityClass = FACILITY_CLASS_RUIN_MANIAC, .trainerName = _("BRYCE"), .speechBefore = {EC_WORD_I_WAS, EC_WORD_ON, EC_WORD_VACATION, EC_WORD_UNTIL, EC_WORD_ONLY, EC_WORD_YESTERDAY}, .speechWin = {EC_WORD_I, EC_WORD_HAVEN_T, EC_WORD_LOST, EC_WORD_MY, EC_WORD_SKILL, EC_WORD_YET}, .speechLose = {EC_WORD_THAT_S, EC_WORD_IT, EC_WORD_ELLIPSIS, EC_WORD_I, EC_WORD_NEED, EC_WORD_SLEEP}, - .monSets = gBattleFrontierTrainerMons_Bryce + .monSet = gBattleFrontierTrainerMons_Bryce }, - [282] = { + [FRONTIER_TRAINER_GIDEON] = { .facilityClass = FACILITY_CLASS_COLLECTOR, .trainerName = _("GIDEON"), .speechBefore = {EC_WORD_WHAT_S_UP_QUES, EC_WORD_YOU, EC_WORD_THINK, EC_WORD_I_AM, EC_WORD_SCARY, EC_WORD_QUES}, .speechWin = {EC_WORD_I_AM, EC_WORD_COOL, EC_WORD_BUT, EC_WORD_NOT, EC_WORD_SCARY, EC_WORD_EXCL}, .speechLose = {EC_WORD_LOOK, EC_WORD_AT, EC_WORD_MY, EC_WORD_FABULOUS, EC_WORD_FASHION, EC_WORD_SENSE}, - .monSets = gBattleFrontierTrainerMons_Gideon + .monSet = gBattleFrontierTrainerMons_Gideon }, - [283] = { + [FRONTIER_TRAINER_TRISTON] = { .facilityClass = FACILITY_CLASS_COLLECTOR, .trainerName = _("TRISTON"), .speechBefore = {EC_WORD_I, EC_WORD_WOULD, EC_WORD_RATHER, EC_WORD_LOOK, EC_WORD_AT, EC_WORD_POKEMON}, .speechWin = {EC_WORD_HUH_QUES, EC_WORD_YOU, EC_WORD_MEAN, EC_WORD_I, EC_WORD_WON, EC_WORD_QUES_EXCL}, .speechLose = {EC_WORD_SEE, EC_WORD_QUES, 0xFFFF, EC_WORD_I, EC_WORD_ALWAYS, EC_WORD_LOSE}, - .monSets = gBattleFrontierTrainerMons_Triston + .monSet = gBattleFrontierTrainerMons_Triston }, - [284] = { + [FRONTIER_TRAINER_CHARLES] = { .facilityClass = FACILITY_CLASS_GUITARIST, .trainerName = _("CHARLES"), .speechBefore = {EC_WORD_IT_S, EC_WORD_HOPELESS, EC_WORD_TO, EC_MOVE2(STRUGGLE), EC_WORD_WITH, EC_WORD_ME}, .speechWin = {EC_MOVE(SUBMISSION), EC_WORD_WAS, EC_WORD_YOUR, EC_WORD_ONLY, EC_WORD_CHOICE, 0xFFFF}, .speechLose = {EC_WORD_I_AM, EC_WORD_GOING, EC_WORD_DOWN, EC_WORD_DOWN, EC_WORD_DOWN, EC_WORD_EXCL}, - .monSets = gBattleFrontierTrainerMons_Charles + .monSet = gBattleFrontierTrainerMons_Charles }, - [285] = { + [FRONTIER_TRAINER_RAYMOND] = { .facilityClass = FACILITY_CLASS_GUITARIST, .trainerName = _("RAYMOND"), .speechBefore = {EC_WORD_WANT, EC_WORD_TO, EC_WORD_HEAR, EC_WORD_MY, EC_WORD_SONG, EC_WORD_QUES}, .speechWin = {EC_WORD_SATISFIED, EC_WORD_THAT_S, EC_WORD_WHAT, EC_WORD_I_AM, EC_WORD_EXCL, 0xFFFF}, .speechLose = {EC_WORD_SATISFIED, EC_WORD_IS, EC_WORD_WHAT, EC_WORD_I, EC_WORD_CAN_T, EC_WORD_BE}, - .monSets = gBattleFrontierTrainerMons_Raymond + .monSet = gBattleFrontierTrainerMons_Raymond }, - [286] = { + [FRONTIER_TRAINER_DIRK] = { .facilityClass = FACILITY_CLASS_BIRD_KEEPER, .trainerName = _("DIRK"), .speechBefore = {EC_WORD_FLYING, EC_WORD_POKEMON, EC_WORD_ARE, EC_WORD_ABOVE, EC_WORD_THE, EC_MOVE2(REST)}, .speechWin = {EC_WORD_YOU, EC_WORD_CAN_T_WIN, EC_WORD_EXCL, EC_WORD_FLYING, EC_WORD_POKEMON, EC_WORD_RULE}, .speechLose = {EC_WORD_AREN_T, EC_WORD_THERE, EC_WORD_MORE, EC_WORD_FLYING, EC_WORD_POKEMON, EC_WORD_QUES}, - .monSets = gBattleFrontierTrainerMons_Dirk + .monSet = gBattleFrontierTrainerMons_Dirk }, - [287] = { + [FRONTIER_TRAINER_HAROLD] = { .facilityClass = FACILITY_CLASS_BIRD_KEEPER, .trainerName = _("HAROLD"), .speechBefore = {EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_APPEAL, EC_WORD_TO, EC_WORD_YOU, EC_WORD_QUES}, .speechWin = {EC_WORD_YOU, EC_WORD_DO, EC_WORD_LIKE, EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_QUES}, .speechLose = {EC_WORD_SO, EC_WORD_YOU, EC_WORD_DISLIKE, EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_QUES}, - .monSets = gBattleFrontierTrainerMons_Harold + .monSet = gBattleFrontierTrainerMons_Harold }, - [288] = { + [FRONTIER_TRAINER_OMAR] = { .facilityClass = FACILITY_CLASS_SAILOR, .trainerName = _("OMAR"), .speechBefore = {EC_WORD_LET_ME_WIN, EC_WORD_IN, EC_MOVE(RETURN), EC_WORD_FOR, EC_WORD_A, EC_MOVE2(PRESENT)}, .speechWin = {EC_WORD_HERE, EC_WORD_YOU, EC_WORD_ARE, EC_WORD_SOME, EC_MOVE2(TOXIC), EC_WORD_SWEETS}, .speechLose = {EC_WORD_YOUR, EC_MOVE2(PRESENT), EC_WORD_QUES, EC_WORD_WHAT, EC_WORD_FOR, EC_WORD_QUES_EXCL}, - .monSets = gBattleFrontierTrainerMons_Omar + .monSet = gBattleFrontierTrainerMons_Omar }, - [289] = { + [FRONTIER_TRAINER_PETER] = { .facilityClass = FACILITY_CLASS_SAILOR, .trainerName = _("PETER"), .speechBefore = {EC_WORD_I, EC_WORD_BRAG, EC_WORD_ABOUT, EC_WORD_MY, EC_WORD_HAPPINESS, EC_WORD_OK_QUES}, .speechWin = {EC_WORD_YOU, EC_WORD_HAVE, EC_WORD_TO, EC_WORD_LISTEN, EC_WORD_TO_ME, EC_WORD_BRAG}, .speechLose = {EC_WORD_I_AM, EC_WORD_DISAPPOINTED, EC_WORD_YOU, EC_WORD_WON_T, EC_WORD_LISTEN, EC_WORD_TO_ME}, - .monSets = gBattleFrontierTrainerMons_Peter + .monSet = gBattleFrontierTrainerMons_Peter }, - [290] = { + [FRONTIER_TRAINER_DEV] = { .facilityClass = FACILITY_CLASS_HIKER, .trainerName = _("DEV"), .speechBefore = {EC_WORD_COME_ON, EC_WORD_LET_S, EC_WORD_GET, EC_WORD_A, EC_WORD_MOVE, EC_WORD_ON}, .speechWin = {EC_WORD_I, EC_WORD_GET, EC_WORD_TO, EC_WORD_NAP, EC_WORD_AFTER, EC_WORD_THAT}, .speechLose = {EC_WORD_I, EC_WORD_NEED, EC_WORD_TO, EC_WORD_NAP, EC_WORD_AFTER, EC_WORD_THAT}, - .monSets = gBattleFrontierTrainerMons_Dev + .monSet = gBattleFrontierTrainerMons_Dev }, - [291] = { + [FRONTIER_TRAINER_COREY] = { .facilityClass = FACILITY_CLASS_HIKER, .trainerName = _("COREY"), .speechBefore = {EC_WORD_LET_S, EC_WORD_TEACH, EC_WORD_YOU, EC_WORD_HOW, EC_WORD_TOUGH, EC_WORD_I_AM}, .speechWin = {EC_WORD_LOOK, EC_WORD_AT, EC_WORD_ME, EC_WORD_MAKE, EC_WORD_A, EC_MOVE(BRICK_BREAK)}, .speechLose = {EC_WORD_MY, EC_MOVE2(FRUSTRATION), EC_WORD_IS, EC_WORD_CLOSE, EC_WORD_TO, EC_MOVE2(ERUPTION)}, - .monSets = gBattleFrontierTrainerMons_Corey + .monSet = gBattleFrontierTrainerMons_Corey }, - [292] = { + [FRONTIER_TRAINER_ANDRE] = { .facilityClass = FACILITY_CLASS_KINDLER, .trainerName = _("ANDRE"), .speechBefore = {EC_WORD_NOW, EC_WORD_THIS, EC_WORD_IS, EC_WORD_A, EC_WORD_PERFECT, EC_WORD_FLAME_BODY}, .speechWin = {EC_WORD_LOOK, EC_WORD_AT, EC_WORD_MY, EC_WORD_FIERY, EC_WORD_DANCE, EC_WORD_EXCL}, .speechLose = {EC_WORD_YOU, EC_WORD_WANT, EC_WORD_AN, EC_MOVE2(EXPLOSION), EC_WORD_HERE, EC_WORD_QUES}, - .monSets = gBattleFrontierTrainerMons_Andre + .monSet = gBattleFrontierTrainerMons_Andre }, - [293] = { + [FRONTIER_TRAINER_FERRIS] = { .facilityClass = FACILITY_CLASS_KINDLER, .trainerName = _("FERRIS"), .speechBefore = {EC_WORD_I_AM, EC_WORD_NO_1, EC_WORD_IN, EC_WORD_THE, EC_WORD_OLD, EC_WORD_CLASS}, .speechWin = {EC_WORD_NO_1, EC_WORD_THAT_S, EC_WORD_WHAT, EC_WORD_I_AM, EC_WORD_EXCL, 0xFFFF}, .speechLose = {EC_WORD_I_AM, EC_WORD_NOT, EC_WORD_NO_1, EC_WORD_ANY, EC_WORD_MORE, EC_WORD_ELLIPSIS}, - .monSets = gBattleFrontierTrainerMons_Ferris + .monSet = gBattleFrontierTrainerMons_Ferris }, - [294] = { + [FRONTIER_TRAINER_ALIVIA] = { .facilityClass = FACILITY_CLASS_PARASOL_LADY, .trainerName = _("ALIVIA"), .speechBefore = {EC_WORD_I_AM, EC_WORD_FEELING, EC_WORD_GIDDY, EC_WORD_SO, EC_WORD_SHOULD, EC_WORD_YOU}, .speechWin = {EC_WORD_IT, EC_WORD_WAS, EC_WORD_ALL, EC_WORD_TOGETHER, EC_WORD_TOO, EC_WORD_EASY}, .speechLose = {EC_WORD_I, EC_WORD_WILL, EC_WORD_GIDDY, EC_WORD_UP, EC_WORD_AND, EC_WORD_AWAY}, - .monSets = gBattleFrontierTrainerMons_Alivia + .monSet = gBattleFrontierTrainerMons_Alivia }, - [295] = { + [FRONTIER_TRAINER_PAIGE] = { .facilityClass = FACILITY_CLASS_PARASOL_LADY, .trainerName = _("PAIGE"), .speechBefore = {EC_WORD_LET_S, EC_WORD_ENJOY, EC_WORD_OUR, EC_WORD_BATTLE, EC_WORD_TOGETHER, 0xFFFF}, .speechWin = {EC_WORD_THAT_S_IT_EXCL, 0xFFFF, 0xFFFF, EC_WORD_THANK_YOU, EC_WORD_VERY, EC_WORD_MUCH}, .speechLose = {EC_WORD_THAT_S_IT_EXCL, 0xFFFF, 0xFFFF, EC_WORD_DO, EC_WORD_GO, EC_WORD_ON}, - .monSets = gBattleFrontierTrainerMons_Paige + .monSet = gBattleFrontierTrainerMons_Paige }, - [296] = { + [FRONTIER_TRAINER_ANYA] = { .facilityClass = FACILITY_CLASS_BEAUTY, .trainerName = _("ANYA"), .speechBefore = {EC_WORD_I, EC_WORD_DISLIKE, EC_WORD_OH, EC_WORD_SO, EC_WORD_PRETTY, EC_WORD_FASHION}, .speechWin = {EC_WORD_FASHION, EC_WORD_SHOULD, EC_WORD_MATCH, EC_WORD_THE, EC_WORD_PERSON, 0xFFFF}, .speechLose = {EC_WORD_PRETTY, EC_WORD_COULD, EC_WORD_BE, EC_WORD_GOOD, 0xFFFF, 0xFFFF}, - .monSets = gBattleFrontierTrainerMons_Anya + .monSet = gBattleFrontierTrainerMons_Anya }, - [297] = { + [FRONTIER_TRAINER_DAWN] = { .facilityClass = FACILITY_CLASS_BEAUTY, .trainerName = _("DAWN"), .speechBefore = {EC_WORD_I, EC_WORD_GO, EC_WORD_ALL, EC_WORD_OUT, EC_WORD_EXCL, 0xFFFF}, .speechWin = {EC_WORD_DON_T, EC_WORD_BE, EC_WORD_A, EC_WORD_BABY, EC_WORD_EXCL, 0xFFFF}, .speechLose = {EC_WORD_YOU, EC_WORD_WON, EC_WORD_EXCL, EC_WORD_MOVE, EC_WORD_ON, EC_WORD_EXCL}, - .monSets = gBattleFrontierTrainerMons_Dawn + .monSet = gBattleFrontierTrainerMons_Dawn }, - [298] = { + [FRONTIER_TRAINER_ABBY] = { .facilityClass = FACILITY_CLASS_AROMA_LADY, .trainerName = _("ABBY"), .speechBefore = {EC_WORD_I, EC_WORD_LIKE, EC_WORD_A, EC_WORD_TRAINER, EC_WORD_THAT_S, EC_WORD_REFRESHING}, .speechWin = {EC_WORD_VICTORY, EC_WORD_HAS, EC_WORD_A, EC_MOVE(SWEET_SCENT), EC_WORD_EXCL, 0xFFFF}, .speechLose = {EC_WORD_WHAT, EC_WORD_AN, EC_WORD_AWFUL, EC_WORD_STENCH, EC_WORD_EXCL, 0xFFFF}, - .monSets = gBattleFrontierTrainerMons_Abby + .monSet = gBattleFrontierTrainerMons_Abby }, - [299] = { + [FRONTIER_TRAINER_GRETEL] = { .facilityClass = FACILITY_CLASS_AROMA_LADY, .trainerName = _("GRETEL"), .speechBefore = {EC_WORD_I, EC_WORD_CAUSE, EC_MOVE(OUTRAGE), EC_WORD_AS, EC_WORD_A, EC_WORD_TRAINER}, .speechWin = {EC_WORD_IT_S, EC_WORD_ONLY, EC_WORD_NATURAL, EC_WORD_SEE_YA, EC_WORD_BYE_BYE, EC_WORD_EXCL}, .speechLose = {EC_WORD_IT_S, EC_WORD_HARD, EC_WORD_TO, EC_WORD_BELIEVE, EC_WORD_BUT, EC_WORD_CONGRATS}, - .monSets = gBattleFrontierTrainerMons_Gretel + .monSet = gBattleFrontierTrainerMons_Gretel } }; diff --git a/src/data/battle_frontier/battle_tent.h b/src/data/battle_frontier/battle_tent.h index 946ca0187..bf89c5bc3 100644 --- a/src/data/battle_frontier/battle_tent.h +++ b/src/data/battle_frontier/battle_tent.h @@ -1,1242 +1,1242 @@ // Slateport Battle Tent. const u16 gSlateportBattleTentTrainerMons_Jolie[] = { - 9, - 10, - 13, - 27, - 35, - 37, - 42, - 44, - 45, - 46, - 63, + SLATEPORT_TENT_MON_CACNEA_1, + SLATEPORT_TENT_MON_LOMBRE_1, + SLATEPORT_TENT_MON_NUZLEAF, + SLATEPORT_TENT_MON_CACNEA_2, + SLATEPORT_TENT_MON_MAKUHITA, + SLATEPORT_TENT_MON_BARBOACH, + SLATEPORT_TENT_MON_SOLROCK, + SLATEPORT_TENT_MON_KECLEON_2, + SLATEPORT_TENT_MON_SHROOMISH_1, + SLATEPORT_TENT_MON_SHROOMISH_2, + SLATEPORT_TENT_MON_BRELOOM, -1 }; const u16 gSlateportBattleTentTrainerMons_Malachi[] = { - 9, - 16, - 17, - 27, - 36, - 39, - 42, - 45, - 48, - 49, - 53, + SLATEPORT_TENT_MON_CACNEA_1, + SLATEPORT_TENT_MON_GRAVELER, + SLATEPORT_TENT_MON_BALTOY, + SLATEPORT_TENT_MON_CACNEA_2, + SLATEPORT_TENT_MON_NUMEL_1, + SLATEPORT_TENT_MON_VIGOROTH, + SLATEPORT_TENT_MON_SOLROCK, + SLATEPORT_TENT_MON_SHROOMISH_1, + SLATEPORT_TENT_MON_NUMEL_2, + SLATEPORT_TENT_MON_TRAPINCH_2, + SLATEPORT_TENT_MON_SKITTY, -1 }; const u16 gSlateportBattleTentTrainerMons_Kelsie[] = { - 4, - 5, - 6, - 11, - 28, - 34, - 35, - 37, - 43, - 51, - 53, + SLATEPORT_TENT_MON_WAILMER_1, + SLATEPORT_TENT_MON_WAILMER_2, + SLATEPORT_TENT_MON_MARILL_1, + SLATEPORT_TENT_MON_LOTAD, + SLATEPORT_TENT_MON_TAILLOW, + SLATEPORT_TENT_MON_WHISMUR, + SLATEPORT_TENT_MON_MAKUHITA, + SLATEPORT_TENT_MON_BARBOACH, + SLATEPORT_TENT_MON_KECLEON_1, + SLATEPORT_TENT_MON_WINGULL_2, + SLATEPORT_TENT_MON_SKITTY, -1 }; const u16 gSlateportBattleTentTrainerMons_Davon[] = { - 4, - 5, - 6, - 12, - 26, - 36, - 37, - 38, - 40, - 44, - 46, - 50, + SLATEPORT_TENT_MON_WAILMER_1, + SLATEPORT_TENT_MON_WAILMER_2, + SLATEPORT_TENT_MON_MARILL_1, + SLATEPORT_TENT_MON_SEEDOT, + SLATEPORT_TENT_MON_TRAPINCH_1, + SLATEPORT_TENT_MON_NUMEL_1, + SLATEPORT_TENT_MON_BARBOACH, + SLATEPORT_TENT_MON_TENTACOOL, + SLATEPORT_TENT_MON_MAGIKARP, + SLATEPORT_TENT_MON_KECLEON_2, + SLATEPORT_TENT_MON_SHROOMISH_2, + SLATEPORT_TENT_MON_PELIPPER_2, -1 }; const u16 gSlateportBattleTentTrainerMons_Glenda[] = { - 0, - 1, - 17, - 18, - 19, - 22, - 23, - 33, - 42, - 61, - 64, - 65, - 66, + SLATEPORT_TENT_MON_ZIGZAGOON_1, + SLATEPORT_TENT_MON_ZIGZAGOON_2, + SLATEPORT_TENT_MON_BALTOY, + SLATEPORT_TENT_MON_MIGHTYENA_1, + SLATEPORT_TENT_MON_MIGHTYENA_2, + SLATEPORT_TENT_MON_ELECTRIKE_1, + SLATEPORT_TENT_MON_VOLTORB, + SLATEPORT_TENT_MON_MAGNEMITE, + SLATEPORT_TENT_MON_SOLROCK, + SLATEPORT_TENT_MON_KADABRA, + SLATEPORT_TENT_MON_PLUSLE_1, + SLATEPORT_TENT_MON_PLUSLE_2, + SLATEPORT_TENT_MON_ELECTRIKE_2, -1 }; const u16 gSlateportBattleTentTrainerMons_Helena[] = { - 18, - 19, - 21, - 38, - 39, - 41, - 42, - 52, - 54, - 58, - 63, + SLATEPORT_TENT_MON_MIGHTYENA_1, + SLATEPORT_TENT_MON_MIGHTYENA_2, + SLATEPORT_TENT_MON_GOLDEEN, + SLATEPORT_TENT_MON_TENTACOOL, + SLATEPORT_TENT_MON_VIGOROTH, + SLATEPORT_TENT_MON_SEVIPER_1, + SLATEPORT_TENT_MON_SOLROCK, + SLATEPORT_TENT_MON_MARILL_2, + SLATEPORT_TENT_MON_SEVIPER_2, + SLATEPORT_TENT_MON_SWALOT, + SLATEPORT_TENT_MON_BRELOOM, -1 }; const u16 gSlateportBattleTentTrainerMons_Rodolfo[] = { - 0, - 1, - 4, - 5, - 7, - 8, - 18, - 20, - 21, - 37, - 38, - 40, - 62, + SLATEPORT_TENT_MON_ZIGZAGOON_1, + SLATEPORT_TENT_MON_ZIGZAGOON_2, + SLATEPORT_TENT_MON_WAILMER_1, + SLATEPORT_TENT_MON_WAILMER_2, + SLATEPORT_TENT_MON_WINGULL_1, + SLATEPORT_TENT_MON_PELIPPER_1, + SLATEPORT_TENT_MON_MIGHTYENA_1, + SLATEPORT_TENT_MON_LINOONE, + SLATEPORT_TENT_MON_GOLDEEN, + SLATEPORT_TENT_MON_BARBOACH, + SLATEPORT_TENT_MON_TENTACOOL, + SLATEPORT_TENT_MON_MAGIKARP, + SLATEPORT_TENT_MON_KIRLIA, -1 }; const u16 gSlateportBattleTentTrainerMons_Davion[] = { - 17, - 23, - 24, - 25, - 31, - 32, - 33, - 34, - 39, - 43, - 44, - 49, - 57, - 69, + SLATEPORT_TENT_MON_BALTOY, + SLATEPORT_TENT_MON_VOLTORB, + SLATEPORT_TENT_MON_ARON_1, + SLATEPORT_TENT_MON_ARON_2, + SLATEPORT_TENT_MON_LOUDRED, + SLATEPORT_TENT_MON_SPINDA, + SLATEPORT_TENT_MON_MAGNEMITE, + SLATEPORT_TENT_MON_WHISMUR, + SLATEPORT_TENT_MON_VIGOROTH, + SLATEPORT_TENT_MON_KECLEON_1, + SLATEPORT_TENT_MON_KECLEON_2, + SLATEPORT_TENT_MON_TRAPINCH_2, + SLATEPORT_TENT_MON_SANDSHREW, + SLATEPORT_TENT_MON_MACHOKE, -1 }; const u16 gSlateportBattleTentTrainerMons_Kendall[] = { - 4, - 7, - 8, - 9, - 11, - 12, - 13, - 27, - 38, - 40, - 45, - 46, - 47, - 63, + SLATEPORT_TENT_MON_WAILMER_1, + SLATEPORT_TENT_MON_WINGULL_1, + SLATEPORT_TENT_MON_PELIPPER_1, + SLATEPORT_TENT_MON_CACNEA_1, + SLATEPORT_TENT_MON_LOTAD, + SLATEPORT_TENT_MON_SEEDOT, + SLATEPORT_TENT_MON_NUZLEAF, + SLATEPORT_TENT_MON_CACNEA_2, + SLATEPORT_TENT_MON_TENTACOOL, + SLATEPORT_TENT_MON_MAGIKARP, + SLATEPORT_TENT_MON_SHROOMISH_1, + SLATEPORT_TENT_MON_SHROOMISH_2, + SLATEPORT_TENT_MON_LOMBRE_2, + SLATEPORT_TENT_MON_BRELOOM, -1 }; const u16 gSlateportBattleTentTrainerMons_Colten[] = { - 0, - 2, - 12, - 22, - 28, - 30, - 35, - 38, - 43, - 44, - 56, - 57, + SLATEPORT_TENT_MON_ZIGZAGOON_1, + SLATEPORT_TENT_MON_BEAUTIFLY, + SLATEPORT_TENT_MON_SEEDOT, + SLATEPORT_TENT_MON_ELECTRIKE_1, + SLATEPORT_TENT_MON_TAILLOW, + SLATEPORT_TENT_MON_GOLBAT_1, + SLATEPORT_TENT_MON_MAKUHITA, + SLATEPORT_TENT_MON_TENTACOOL, + SLATEPORT_TENT_MON_KECLEON_1, + SLATEPORT_TENT_MON_KECLEON_2, + SLATEPORT_TENT_MON_RALTS, + SLATEPORT_TENT_MON_SANDSHREW, -1 }; const u16 gSlateportBattleTentTrainerMons_Irvin[] = { - 0, - 1, - 2, - 3, - 14, - 15, - 24, - 25, - 32, - 34, - 39, - 59, - 60, + SLATEPORT_TENT_MON_ZIGZAGOON_1, + SLATEPORT_TENT_MON_ZIGZAGOON_2, + SLATEPORT_TENT_MON_BEAUTIFLY, + SLATEPORT_TENT_MON_DUSTOX, + SLATEPORT_TENT_MON_NINJASK_1, + SLATEPORT_TENT_MON_NINJASK_2, + SLATEPORT_TENT_MON_ARON_1, + SLATEPORT_TENT_MON_ARON_2, + SLATEPORT_TENT_MON_SPINDA, + SLATEPORT_TENT_MON_WHISMUR, + SLATEPORT_TENT_MON_VIGOROTH, + SLATEPORT_TENT_MON_VOLBEAT, + SLATEPORT_TENT_MON_ILLUMISE, -1 }; const u16 gSlateportBattleTentTrainerMons_Shaun[] = { - 17, - 18, - 19, - 22, - 29, - 36, - 42, - 48, - 61, - 62, - 66, - 68, - 69, + SLATEPORT_TENT_MON_BALTOY, + SLATEPORT_TENT_MON_MIGHTYENA_1, + SLATEPORT_TENT_MON_MIGHTYENA_2, + SLATEPORT_TENT_MON_ELECTRIKE_1, + SLATEPORT_TENT_MON_SWELLOW, + SLATEPORT_TENT_MON_NUMEL_1, + SLATEPORT_TENT_MON_SOLROCK, + SLATEPORT_TENT_MON_NUMEL_2, + SLATEPORT_TENT_MON_KADABRA, + SLATEPORT_TENT_MON_KIRLIA, + SLATEPORT_TENT_MON_ELECTRIKE_2, + SLATEPORT_TENT_MON_MACHOP, + SLATEPORT_TENT_MON_MACHOKE, -1 }; const u16 gSlateportBattleTentTrainerMons_Kyler[] = { - 22, - 23, - 28, - 29, - 31, - 32, - 34, - 39, - 55, - 64, - 65, - 67, + SLATEPORT_TENT_MON_ELECTRIKE_1, + SLATEPORT_TENT_MON_VOLTORB, + SLATEPORT_TENT_MON_TAILLOW, + SLATEPORT_TENT_MON_SWELLOW, + SLATEPORT_TENT_MON_LOUDRED, + SLATEPORT_TENT_MON_SPINDA, + SLATEPORT_TENT_MON_WHISMUR, + SLATEPORT_TENT_MON_VIGOROTH, + SLATEPORT_TENT_MON_GOLBAT_2, + SLATEPORT_TENT_MON_PLUSLE_1, + SLATEPORT_TENT_MON_PLUSLE_2, + SLATEPORT_TENT_MON_SWABLU, -1 }; const u16 gSlateportBattleTentTrainerMons_Maggie[] = { - 10, - 13, - 17, - 27, - 45, - 46, - 53, - 56, - 61, - 62, - 63, + SLATEPORT_TENT_MON_LOMBRE_1, + SLATEPORT_TENT_MON_NUZLEAF, + SLATEPORT_TENT_MON_BALTOY, + SLATEPORT_TENT_MON_CACNEA_2, + SLATEPORT_TENT_MON_SHROOMISH_1, + SLATEPORT_TENT_MON_SHROOMISH_2, + SLATEPORT_TENT_MON_SKITTY, + SLATEPORT_TENT_MON_RALTS, + SLATEPORT_TENT_MON_KADABRA, + SLATEPORT_TENT_MON_KIRLIA, + SLATEPORT_TENT_MON_BRELOOM, -1 }; const u16 gSlateportBattleTentTrainerMons_Stephon[] = { - 8, - 10, - 16, - 23, - 29, - 43, - 44, - 60, - 62, - 63, - 68, + SLATEPORT_TENT_MON_PELIPPER_1, + SLATEPORT_TENT_MON_LOMBRE_1, + SLATEPORT_TENT_MON_GRAVELER, + SLATEPORT_TENT_MON_VOLTORB, + SLATEPORT_TENT_MON_SWELLOW, + SLATEPORT_TENT_MON_KECLEON_1, + SLATEPORT_TENT_MON_KECLEON_2, + SLATEPORT_TENT_MON_ILLUMISE, + SLATEPORT_TENT_MON_KIRLIA, + SLATEPORT_TENT_MON_BRELOOM, + SLATEPORT_TENT_MON_MACHOP, -1 }; const u16 gSlateportBattleTentTrainerMons_Rebecca[] = { - 8, - 13, - 21, - 29, - 33, - 41, - 48, - 54, - 59, - 61, - 68, + SLATEPORT_TENT_MON_PELIPPER_1, + SLATEPORT_TENT_MON_NUZLEAF, + SLATEPORT_TENT_MON_GOLDEEN, + SLATEPORT_TENT_MON_SWELLOW, + SLATEPORT_TENT_MON_MAGNEMITE, + SLATEPORT_TENT_MON_SEVIPER_1, + SLATEPORT_TENT_MON_NUMEL_2, + SLATEPORT_TENT_MON_SEVIPER_2, + SLATEPORT_TENT_MON_VOLBEAT, + SLATEPORT_TENT_MON_KADABRA, + SLATEPORT_TENT_MON_MACHOP, -1 }; const u16 gSlateportBattleTentTrainerMons_Reggie[] = { - 6, - 7, - 17, - 23, - 24, - 26, - 32, - 36, - 52, - 53, - 57, - 65, + SLATEPORT_TENT_MON_MARILL_1, + SLATEPORT_TENT_MON_WINGULL_1, + SLATEPORT_TENT_MON_BALTOY, + SLATEPORT_TENT_MON_VOLTORB, + SLATEPORT_TENT_MON_ARON_1, + SLATEPORT_TENT_MON_TRAPINCH_1, + SLATEPORT_TENT_MON_SPINDA, + SLATEPORT_TENT_MON_NUMEL_1, + SLATEPORT_TENT_MON_MARILL_2, + SLATEPORT_TENT_MON_SKITTY, + SLATEPORT_TENT_MON_SANDSHREW, + SLATEPORT_TENT_MON_PLUSLE_2, -1 }; const u16 gSlateportBattleTentTrainerMons_Janae[] = { - 0, - 1, - 27, - 28, - 32, - 34, - 36, - 37, - 52, - 53, - 57, - 65, + SLATEPORT_TENT_MON_ZIGZAGOON_1, + SLATEPORT_TENT_MON_ZIGZAGOON_2, + SLATEPORT_TENT_MON_CACNEA_2, + SLATEPORT_TENT_MON_TAILLOW, + SLATEPORT_TENT_MON_SPINDA, + SLATEPORT_TENT_MON_WHISMUR, + SLATEPORT_TENT_MON_NUMEL_1, + SLATEPORT_TENT_MON_BARBOACH, + SLATEPORT_TENT_MON_MARILL_2, + SLATEPORT_TENT_MON_SKITTY, + SLATEPORT_TENT_MON_SANDSHREW, + SLATEPORT_TENT_MON_PLUSLE_2, -1 }; const u16 gSlateportBattleTentTrainerMons_Caiden[] = { - 10, - 14, - 15, - 16, - 20, - 21, - 25, - 30, - 35, - 47, - 48, - 50, - 69, + SLATEPORT_TENT_MON_LOMBRE_1, + SLATEPORT_TENT_MON_NINJASK_1, + SLATEPORT_TENT_MON_NINJASK_2, + SLATEPORT_TENT_MON_GRAVELER, + SLATEPORT_TENT_MON_LINOONE, + SLATEPORT_TENT_MON_GOLDEEN, + SLATEPORT_TENT_MON_ARON_2, + SLATEPORT_TENT_MON_GOLBAT_1, + SLATEPORT_TENT_MON_MAKUHITA, + SLATEPORT_TENT_MON_LOMBRE_2, + SLATEPORT_TENT_MON_NUMEL_2, + SLATEPORT_TENT_MON_PELIPPER_2, + SLATEPORT_TENT_MON_MACHOKE, -1 }; const u16 gSlateportBattleTentTrainerMons_Kirsten[] = { - 10, - 16, - 18, - 19, - 20, - 21, - 25, - 30, - 35, - 39, - 41, - 48, - 69, + SLATEPORT_TENT_MON_LOMBRE_1, + SLATEPORT_TENT_MON_GRAVELER, + SLATEPORT_TENT_MON_MIGHTYENA_1, + SLATEPORT_TENT_MON_MIGHTYENA_2, + SLATEPORT_TENT_MON_LINOONE, + SLATEPORT_TENT_MON_GOLDEEN, + SLATEPORT_TENT_MON_ARON_2, + SLATEPORT_TENT_MON_GOLBAT_1, + SLATEPORT_TENT_MON_MAKUHITA, + SLATEPORT_TENT_MON_VIGOROTH, + SLATEPORT_TENT_MON_SEVIPER_1, + SLATEPORT_TENT_MON_NUMEL_2, + SLATEPORT_TENT_MON_MACHOKE, -1 }; const u16 gSlateportBattleTentTrainerMons_Kurtis[] = { - 0, - 1, - 36, - 37, - 40, - 46, - 49, - 51, - 64, - 67, - 68, + SLATEPORT_TENT_MON_ZIGZAGOON_1, + SLATEPORT_TENT_MON_ZIGZAGOON_2, + SLATEPORT_TENT_MON_NUMEL_1, + SLATEPORT_TENT_MON_BARBOACH, + SLATEPORT_TENT_MON_MAGIKARP, + SLATEPORT_TENT_MON_SHROOMISH_2, + SLATEPORT_TENT_MON_TRAPINCH_2, + SLATEPORT_TENT_MON_WINGULL_2, + SLATEPORT_TENT_MON_PLUSLE_1, + SLATEPORT_TENT_MON_SWABLU, + SLATEPORT_TENT_MON_MACHOP, -1 }; const u16 gSlateportBattleTentTrainerMons_Stefan[] = { - 4, - 5, - 21, - 33, - 37, - 38, - 40, - 51, - 52, - 64, - 65, + SLATEPORT_TENT_MON_WAILMER_1, + SLATEPORT_TENT_MON_WAILMER_2, + SLATEPORT_TENT_MON_GOLDEEN, + SLATEPORT_TENT_MON_MAGNEMITE, + SLATEPORT_TENT_MON_BARBOACH, + SLATEPORT_TENT_MON_TENTACOOL, + SLATEPORT_TENT_MON_MAGIKARP, + SLATEPORT_TENT_MON_WINGULL_2, + SLATEPORT_TENT_MON_MARILL_2, + SLATEPORT_TENT_MON_PLUSLE_1, + SLATEPORT_TENT_MON_PLUSLE_2, -1 }; const u16 gSlateportBattleTentTrainerMons_Avery[] = { - 2, - 3, - 7, - 8, - 22, - 23, - 28, - 29, - 30, - 51, - 67, + SLATEPORT_TENT_MON_BEAUTIFLY, + SLATEPORT_TENT_MON_DUSTOX, + SLATEPORT_TENT_MON_WINGULL_1, + SLATEPORT_TENT_MON_PELIPPER_1, + SLATEPORT_TENT_MON_ELECTRIKE_1, + SLATEPORT_TENT_MON_VOLTORB, + SLATEPORT_TENT_MON_TAILLOW, + SLATEPORT_TENT_MON_SWELLOW, + SLATEPORT_TENT_MON_GOLBAT_1, + SLATEPORT_TENT_MON_WINGULL_2, + SLATEPORT_TENT_MON_SWABLU, -1 }; const u16 gSlateportBattleTentTrainerMons_Dwane[] = { - 14, - 15, - 30, - 43, - 44, - 45, - 46, - 55, - 58, - 59, - 63, + SLATEPORT_TENT_MON_NINJASK_1, + SLATEPORT_TENT_MON_NINJASK_2, + SLATEPORT_TENT_MON_GOLBAT_1, + SLATEPORT_TENT_MON_KECLEON_1, + SLATEPORT_TENT_MON_KECLEON_2, + SLATEPORT_TENT_MON_SHROOMISH_1, + SLATEPORT_TENT_MON_SHROOMISH_2, + SLATEPORT_TENT_MON_GOLBAT_2, + SLATEPORT_TENT_MON_SWALOT, + SLATEPORT_TENT_MON_VOLBEAT, + SLATEPORT_TENT_MON_BRELOOM, -1 }; const u16 gSlateportBattleTentTrainerMons_Mckenna[] = { - 27, - 29, - 30, - 32, - 36, - 48, - 51, - 52, - 53, - 57, - 67, + SLATEPORT_TENT_MON_CACNEA_2, + SLATEPORT_TENT_MON_SWELLOW, + SLATEPORT_TENT_MON_GOLBAT_1, + SLATEPORT_TENT_MON_SPINDA, + SLATEPORT_TENT_MON_NUMEL_1, + SLATEPORT_TENT_MON_NUMEL_2, + SLATEPORT_TENT_MON_WINGULL_2, + SLATEPORT_TENT_MON_MARILL_2, + SLATEPORT_TENT_MON_SKITTY, + SLATEPORT_TENT_MON_SANDSHREW, + SLATEPORT_TENT_MON_SWABLU, -1 }; const u16 gSlateportBattleTentTrainerMons_Camryn[] = { - 5, - 6, - 7, - 8, - 10, - 16, - 17, - 20, - 21, - 37, - 43, - 44, + SLATEPORT_TENT_MON_WAILMER_2, + SLATEPORT_TENT_MON_MARILL_1, + SLATEPORT_TENT_MON_WINGULL_1, + SLATEPORT_TENT_MON_PELIPPER_1, + SLATEPORT_TENT_MON_LOMBRE_1, + SLATEPORT_TENT_MON_GRAVELER, + SLATEPORT_TENT_MON_BALTOY, + SLATEPORT_TENT_MON_LINOONE, + SLATEPORT_TENT_MON_GOLDEEN, + SLATEPORT_TENT_MON_BARBOACH, + SLATEPORT_TENT_MON_KECLEON_1, + SLATEPORT_TENT_MON_KECLEON_2, -1 }; const u16 gSlateportBattleTentTrainerMons_Natasha[] = { - 1, - 3, - 4, - 5, - 9, - 11, - 12, - 20, - 21, - 22, - 51, + SLATEPORT_TENT_MON_ZIGZAGOON_2, + SLATEPORT_TENT_MON_DUSTOX, + SLATEPORT_TENT_MON_WAILMER_1, + SLATEPORT_TENT_MON_WAILMER_2, + SLATEPORT_TENT_MON_CACNEA_1, + SLATEPORT_TENT_MON_LOTAD, + SLATEPORT_TENT_MON_SEEDOT, + SLATEPORT_TENT_MON_LINOONE, + SLATEPORT_TENT_MON_GOLDEEN, + SLATEPORT_TENT_MON_ELECTRIKE_1, + SLATEPORT_TENT_MON_WINGULL_2, -1 }; const u16 gSlateportBattleTentTrainerMons_Austyn[] = { - 25, - 31, - 35, - 37, - 38, - 39, - 50, - 51, - 52, - 58, - 68, - 69, + SLATEPORT_TENT_MON_ARON_2, + SLATEPORT_TENT_MON_LOUDRED, + SLATEPORT_TENT_MON_MAKUHITA, + SLATEPORT_TENT_MON_BARBOACH, + SLATEPORT_TENT_MON_TENTACOOL, + SLATEPORT_TENT_MON_VIGOROTH, + SLATEPORT_TENT_MON_PELIPPER_2, + SLATEPORT_TENT_MON_WINGULL_2, + SLATEPORT_TENT_MON_MARILL_2, + SLATEPORT_TENT_MON_SWALOT, + SLATEPORT_TENT_MON_MACHOP, + SLATEPORT_TENT_MON_MACHOKE, -1 }; const u16 gSlateportBattleTentTrainerMons_Donovan[] = { - 10, - 16, - 17, - 24, - 25, - 43, - 44, - 47, - 49, - 53, - 59, - 60, - 64, - 65, + SLATEPORT_TENT_MON_LOMBRE_1, + SLATEPORT_TENT_MON_GRAVELER, + SLATEPORT_TENT_MON_BALTOY, + SLATEPORT_TENT_MON_ARON_1, + SLATEPORT_TENT_MON_ARON_2, + SLATEPORT_TENT_MON_KECLEON_1, + SLATEPORT_TENT_MON_KECLEON_2, + SLATEPORT_TENT_MON_LOMBRE_2, + SLATEPORT_TENT_MON_TRAPINCH_2, + SLATEPORT_TENT_MON_SKITTY, + SLATEPORT_TENT_MON_VOLBEAT, + SLATEPORT_TENT_MON_ILLUMISE, + SLATEPORT_TENT_MON_PLUSLE_1, + SLATEPORT_TENT_MON_PLUSLE_2, -1 }; const u16 gSlateportBattleTentTrainerMons_Tamia[] = { - 2, - 6, - 9, - 13, - 17, - 19, - 20, - 24, - 27, - 29, - 30, + SLATEPORT_TENT_MON_BEAUTIFLY, + SLATEPORT_TENT_MON_MARILL_1, + SLATEPORT_TENT_MON_CACNEA_1, + SLATEPORT_TENT_MON_NUZLEAF, + SLATEPORT_TENT_MON_BALTOY, + SLATEPORT_TENT_MON_MIGHTYENA_2, + SLATEPORT_TENT_MON_LINOONE, + SLATEPORT_TENT_MON_ARON_1, + SLATEPORT_TENT_MON_CACNEA_2, + SLATEPORT_TENT_MON_SWELLOW, + SLATEPORT_TENT_MON_GOLBAT_1, -1 }; -const struct BattleFrontierTrainer gSlateportBattleTentTrainers[] = +const struct BattleFrontierTrainer gSlateportBattleTentTrainers[NUM_BATTLE_TENT_TRAINERS] = { - [0] = { + [SLATEPORT_TENT_TRAINER_JOLIE] = { .facilityClass = FACILITY_CLASS_AROMA_LADY, .trainerName = _("JOLIE"), .speechBefore = {EC_WORD_WHAT, EC_WORD_WILL, EC_WORD_I, EC_WORD_BE, EC_WORD_TOMORROW, EC_WORD_QUES}, .speechWin = {EC_WORD_I_AM, EC_WORD_FEELING, EC_WORD_LIKE, EC_WORD_IT_S, EC_WORD_FRIDAY, EC_WORD_EXCL}, .speechLose = {EC_WORD_I_AM, EC_WORD_FEELING, EC_WORD_LIKE, EC_WORD_IT_S, EC_WORD_MONDAY, EC_WORD_ELLIPSIS}, - .monSets = gSlateportBattleTentTrainerMons_Jolie + .monSet = gSlateportBattleTentTrainerMons_Jolie }, - [1] = { + [SLATEPORT_TENT_TRAINER_MALACHI] = { .facilityClass = FACILITY_CLASS_RUIN_MANIAC, .trainerName = _("MALACHI"), .speechBefore = {EC_WORD_BAD, EC_WORD_NEWS, EC_WORD_EXCL, EC_WORD_IT_S, EC_WORD_A, EC_MOVE(SAND_TOMB)}, .speechWin = {EC_WORD_YEEHAW_EXCL, -1, -1, EC_WORD_I_VE, EC_WORD_DONE, EC_WORD_IT}, .speechLose = {EC_WORD_I_VE, EC_WORD_LOST, EC_WORD_IN, EC_WORD_THIS, EC_MOVE(SAND_TOMB), EC_WORD_ELLIPSIS}, - .monSets = gSlateportBattleTentTrainerMons_Malachi + .monSet = gSlateportBattleTentTrainerMons_Malachi }, - [2] = { + [SLATEPORT_TENT_TRAINER_KELSIE] = { .facilityClass = FACILITY_CLASS_TUBER_F, .trainerName = _("KELSIE"), .speechBefore = {EC_WORD_GO, EC_WORD_EXCL_EXCL, EC_WORD_MY, EC_WORD_BATH, EC_WORD_POKEMON, EC_WORD_EXCL_EXCL}, .speechWin = {EC_WORD_YAHOO, EC_WORD_EXCL_EXCL, EC_WORD_MY, EC_WORD_BATH, EC_WORD_POKEMON, EC_WORD_EXCL_EXCL}, .speechLose = {EC_WORD_GWAH, EC_WORD_EXCL_EXCL, EC_WORD_MY, EC_WORD_BATH, EC_WORD_POKEMON, EC_WORD_EXCL_EXCL}, - .monSets = gSlateportBattleTentTrainerMons_Kelsie + .monSet = gSlateportBattleTentTrainerMons_Kelsie }, - [3] = { + [SLATEPORT_TENT_TRAINER_DAVON] = { .facilityClass = FACILITY_CLASS_TUBER_M, .trainerName = _("DAVON"), .speechBefore = {EC_WORD_YEAH_YEAH, EC_WORD_EXCL_EXCL, -1, EC_WORD_GREAT, EC_MOVE(WHIRLPOOL), EC_WORD_ISN_T_IT_QUES}, .speechWin = {EC_WORD_THAT_WAS, EC_WORD_LIKE, EC_WORD_A, EC_MOVE(WHIRLPOOL), EC_WORD_YEAH_YEAH, EC_WORD_EXCL_EXCL}, .speechLose = {EC_WORD_DON_T, EC_WORD_GET, EC_MOVE2(BEAT_UP), EC_WORD_IN, EC_WORD_THAT, EC_MOVE(WHIRLPOOL)}, - .monSets = gSlateportBattleTentTrainerMons_Davon + .monSet = gSlateportBattleTentTrainerMons_Davon }, - [4] = { + [SLATEPORT_TENT_TRAINER_GLENDA] = { .facilityClass = FACILITY_CLASS_LADY, .trainerName = _("GLENDA"), .speechBefore = {EC_WORD_CONVERSATION, EC_WORD_CAN, EC_WORD_WAIT, EC_WORD_UNTIL, EC_WORD_I, EC_WORD_WIN}, .speechWin = {EC_WORD_FABULOUS, EC_WORD_EXCL, EC_WORD_I_AM, EC_WORD_GOING, EC_WORD_TO, EC_WORD_ROCK}, .speechLose = {EC_WORD_NO, EC_WORD_EXCL, -1, EC_WORD_I, EC_WORD_WASN_T, EC_WORD_SERIOUS}, - .monSets = gSlateportBattleTentTrainerMons_Glenda + .monSet = gSlateportBattleTentTrainerMons_Glenda }, - [5] = { + [SLATEPORT_TENT_TRAINER_HELENA] = { .facilityClass = FACILITY_CLASS_BEAUTY, .trainerName = _("HELENA"), .speechBefore = {EC_WORD_DOES, EC_WORD_MY, EC_WORD_BEAUTY, EC_WORD_INTIMIDATE, EC_WORD_YOU, EC_WORD_QUES}, .speechWin = {EC_WORD_I_AM, EC_WORD_SO, EC_WORD_SORRY, EC_WORD_BUT, EC_WORD_YOU_RE, EC_WORD_BORING}, .speechLose = {EC_WORD_I, EC_WORD_DO, EC_WORD_SO, EC_WORD_ENJOY, EC_WORD_THIS, EC_WORD_EXCL}, - .monSets = gSlateportBattleTentTrainerMons_Helena + .monSet = gSlateportBattleTentTrainerMons_Helena }, - [6] = { + [SLATEPORT_TENT_TRAINER_RODOLFO] = { .facilityClass = FACILITY_CLASS_RICH_BOY, .trainerName = _("RODOLFO"), .speechBefore = {EC_WORD_GO, EC_WORD_GET, EC_WORD_A, EC_POKEMON(WHISCASH), EC_WORD_FOR, EC_WORD_ME}, .speechWin = {EC_WORD_AWW, EC_WORD_YOU, EC_WORD_DON_T, EC_WORD_HAVE, EC_WORD_A, EC_POKEMON(WHISCASH)}, .speechLose = {EC_WORD_PLEASE, EC_WORD_I, EC_WORD_NEED, EC_WORD_A, EC_POKEMON(WHISCASH), EC_WORD_BADLY}, - .monSets = gSlateportBattleTentTrainerMons_Rodolfo + .monSet = gSlateportBattleTentTrainerMons_Rodolfo }, - [7] = { + [SLATEPORT_TENT_TRAINER_DAVION] = { .facilityClass = FACILITY_CLASS_POKEMANIAC, .trainerName = _("DAVION"), .speechBefore = {EC_WORD_GRAAAH, EC_WORD_GRAAAH, EC_WORD_EXCL_EXCL, EC_WORD_GRAAAH, EC_WORD_GRAAAH, EC_WORD_EXCL_EXCL}, .speechWin = {EC_MOVE2(ROAR), EC_WORD_EXCL, -1, EC_MOVE2(ROAR), EC_WORD_EXCL_EXCL, -1}, .speechLose = {EC_WORD_URGH, EC_WORD_WAAAH, EC_WORD_EXCL_EXCL, -1, -1, -1}, - .monSets = gSlateportBattleTentTrainerMons_Davion + .monSet = gSlateportBattleTentTrainerMons_Davion }, - [8] = { + [SLATEPORT_TENT_TRAINER_KENDALL] = { .facilityClass = FACILITY_CLASS_SWIMMER_M, .trainerName = _("KENDALL"), .speechBefore = {EC_WORD_A_LITTLE, EC_MOVE2(PETAL_DANCE), EC_WORD_TO, EC_WORD_PLEASE, EC_WORD_YOU, EC_WORD_EXCL}, .speechWin = {EC_WORD_I, EC_WORD_DO, EC_WORD_THIS, EC_WORD_ONLY, EC_WORD_FOR, EC_WORD_WORK}, .speechLose = {EC_WORD_HOW, EC_WORD_COULD, EC_WORD_YOU, EC_MOVE2(POUND), EC_WORD_ME, EC_WORD_QUES}, - .monSets = gSlateportBattleTentTrainerMons_Kendall + .monSet = gSlateportBattleTentTrainerMons_Kendall }, - [9] = { + [SLATEPORT_TENT_TRAINER_COLTEN] = { .facilityClass = FACILITY_CLASS_CAMPER, .trainerName = _("COLTEN"), .speechBefore = {EC_WORD_I, EC_WORD_WANT, EC_WORD_TO, EC_WORD_GO, EC_WORD_RUN, EC_WORD_AROUND}, .speechWin = {EC_WORD_YAY, EC_WORD_EXCL, EC_WORD_WANT, EC_WORD_TO, EC_WORD_RUN, EC_WORD_QUES}, .speechLose = {EC_WORD_A, EC_WORD_SWIFT_SWIM, EC_WORD_WOULD, EC_WORD_BE, EC_WORD_GOOD, EC_WORD_TOO}, - .monSets = gSlateportBattleTentTrainerMons_Colten + .monSet = gSlateportBattleTentTrainerMons_Colten }, - [10] = { + [SLATEPORT_TENT_TRAINER_IRVIN] = { .facilityClass = FACILITY_CLASS_BUG_MANIAC, .trainerName = _("IRVIN"), .speechBefore = {EC_WORD_HAVE, EC_WORD_A, EC_WORD_LOOK, EC_WORD_AT, EC_WORD_MY, EC_MOVE(CONFUSE_RAY)}, .speechWin = {EC_WORD_YAHOO, EC_WORD_MY, EC_MOVE(CONFUSE_RAY), EC_WORD_IS, EC_WORD_THE, EC_WORD_BEST}, .speechLose = {EC_WORD_GWAH, EC_WORD_EXCL_EXCL, -1, EC_WORD_I_AM, EC_WORD_SORRY, EC_WORD_EXCL}, - .monSets = gSlateportBattleTentTrainerMons_Irvin + .monSet = gSlateportBattleTentTrainerMons_Irvin }, - [11] = { + [SLATEPORT_TENT_TRAINER_SHAUN] = { .facilityClass = FACILITY_CLASS_GENTLEMAN, .trainerName = _("SHAUN"), .speechBefore = {EC_WORD_LISTEN, EC_WORD_ELLIPSIS, EC_WORD_YOU, EC_WORD_AREN_T, EC_WORD_VERY, EC_WORD_GOOD}, .speechWin = {EC_WORD_YOU, EC_WORD_SEE, EC_WORD_QUES, EC_WORD_I, EC_WORD_WAS, EC_WORD_RIGHT}, .speechLose = {EC_WORD_YES, EC_WORD_YES, EC_WORD_ELLIPSIS, EC_WORD_YOU_RE, EC_WORD_QUITE, EC_WORD_SOMETHING}, - .monSets = gSlateportBattleTentTrainerMons_Shaun + .monSet = gSlateportBattleTentTrainerMons_Shaun }, - [12] = { + [SLATEPORT_TENT_TRAINER_KYLER] = { .facilityClass = FACILITY_CLASS_GUITARIST, .trainerName = _("KYLER"), .speechBefore = {EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, EC_WORD_QUES}, .speechWin = {EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, EC_WORD_YAY}, .speechLose = {EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, EC_WORD_WOW}, - .monSets = gSlateportBattleTentTrainerMons_Kyler + .monSet = gSlateportBattleTentTrainerMons_Kyler }, - [13] = { + [SLATEPORT_TENT_TRAINER_MAGGIE] = { .facilityClass = FACILITY_CLASS_SCHOOL_KID_F, .trainerName = _("MAGGIE"), .speechBefore = {EC_POKEMON(VULPIX), EC_POKEMON(XATU), EC_POKEMON2(UMBREON), EC_WORD_ELLIPSIS, EC_WORD_UM, EC_WORD_ELLIPSIS}, .speechWin = {EC_POKEMON(NOSEPASS), EC_WORD_ELLIPSIS, EC_WORD_UM, EC_POKEMON(SEVIPER), EC_WORD_EXCL, -1}, .speechLose = {EC_POKEMON(NOSEPASS), EC_WORD_ELLIPSIS, EC_WORD_UM, EC_POKEMON2(SNORLAX), EC_WORD_ELLIPSIS, EC_WORD_UH_OH}, - .monSets = gSlateportBattleTentTrainerMons_Maggie + .monSet = gSlateportBattleTentTrainerMons_Maggie }, - [14] = { + [SLATEPORT_TENT_TRAINER_STEPHON] = { .facilityClass = FACILITY_CLASS_COOLTRAINER_M, .trainerName = _("STEPHON"), .speechBefore = {EC_WORD_I_AM, EC_WORD_GOING, EC_WORD_TO, EC_WORD_ENJOY, EC_WORD_AN, EC_WORD_EGG}, .speechWin = {EC_WORD_I, EC_WORD_WILL, EC_WORD_ENJOY, EC_WORD_THIS, EC_WORD_TASTY, EC_WORD_VICTORY}, .speechLose = {EC_WORD_AWFUL, EC_WORD_EXCL_EXCL, -1, EC_WORD_JUST, EC_WORD_AWFUL, EC_WORD_EXCL_EXCL}, - .monSets = gSlateportBattleTentTrainerMons_Stephon + .monSet = gSlateportBattleTentTrainerMons_Stephon }, - [15] = { + [SLATEPORT_TENT_TRAINER_REBECCA] = { .facilityClass = FACILITY_CLASS_COOLTRAINER_F, .trainerName = _("REBECCA"), .speechBefore = {EC_WORD_THAT, EC_WORD_EGG, EC_WORD_HAS, EC_WORD_A, EC_WORD_TASTY, EC_WORD_SHINE}, .speechWin = {EC_WORD_I, EC_WORD_CAN_T, EC_WORD_EXCL, EC_WORD_SMELL, EC_WORD_THAT, EC_WORD_STENCH}, .speechLose = {EC_WORD_YOU, EC_WORD_CAN_T, EC_WORD_MAKE, EC_WORD_ME, EC_WORD_STOP, EC_WORD_ELLIPSIS}, - .monSets = gSlateportBattleTentTrainerMons_Rebecca + .monSet = gSlateportBattleTentTrainerMons_Rebecca }, - [16] = { + [SLATEPORT_TENT_TRAINER_REGGIE] = { .facilityClass = FACILITY_CLASS_POKEFAN_M, .trainerName = _("REGGIE"), .speechBefore = {EC_WORD_POKEMON, EC_WORD_COME, EC_WORD_BEFORE, EC_WORD_MONEY, EC_WORD_OR, EC_WORD_FAMILY}, .speechWin = {EC_WORD_THAT_S, EC_WORD_WHAT, EC_WORD_IS, EC_WORD_MAKING, EC_WORD_ME, EC_WORD_STRONG}, .speechLose = {EC_WORD_THAT_S, EC_WORD_WHY, EC_WORD_I_AM, EC_WORD_SO, EC_WORD_THICK, EC_WORD_ELLIPSIS}, - .monSets = gSlateportBattleTentTrainerMons_Reggie + .monSet = gSlateportBattleTentTrainerMons_Reggie }, - [17] = { + [SLATEPORT_TENT_TRAINER_JANAE] = { .facilityClass = FACILITY_CLASS_POKEFAN_F, .trainerName = _("JANAE"), .speechBefore = {EC_WORD_I, EC_WORD_JUST, EC_WORD_ADORE, EC_WORD_YOUR, EC_WORD_TOUGH, EC_WORD_LOOK}, .speechWin = {EC_WORD_I, EC_WORD_LIKE, EC_WORD_HOW, EC_WORD_YOU, EC_MOVE2(STRUGGLE), -1}, .speechLose = {EC_WORD_YOU_RE, EC_WORD_A, EC_WORD_MEAN, EC_WORD_AND, EC_WORD_AWFUL, EC_WORD_TRAINER}, - .monSets = gSlateportBattleTentTrainerMons_Janae + .monSet = gSlateportBattleTentTrainerMons_Janae }, - [18] = { + [SLATEPORT_TENT_TRAINER_CAIDEN] = { .facilityClass = FACILITY_CLASS_EXPERT_M, .trainerName = _("CAIDEN"), .speechBefore = {EC_WORD_MY, EC_MOVE2(CURSE), EC_WORD_WILL, EC_WORD_BREAK, EC_WORD_YOUR, EC_WORD_SPIRIT}, .speechWin = {EC_MOVE2(CURSE), EC_WORD_QUES, EC_WORD_IT_S, EC_WORD_A, EC_WORD_LIE, EC_WORD_ELLIPSIS}, .speechLose = {EC_WORD_MY, EC_MOVE2(CURSE), EC_WORD_WILL, EC_WORD_LAST, EC_WORD_FOREVER, -1}, - .monSets = gSlateportBattleTentTrainerMons_Caiden + .monSet = gSlateportBattleTentTrainerMons_Caiden }, - [19] = { + [SLATEPORT_TENT_TRAINER_KIRSTEN] = { .facilityClass = FACILITY_CLASS_EXPERT_F, .trainerName = _("KIRSTEN"), .speechBefore = {EC_WORD_HUH_QUES, EC_WORD_A, EC_WORD_BATTLE, EC_WORD_YOU, EC_WORD_SAID, EC_WORD_QUES}, .speechWin = {EC_WORD_HUH_QUES, EC_WORD_STRONG, EC_WORD_BUT, EC_WORD_NOT, EC_WORD_STRONG, EC_WORD_ENOUGH}, .speechLose = {EC_WORD_HUH_QUES, EC_WORD_I, EC_WORD_SURRENDER, EC_WORD_TO, EC_WORD_YOUR, EC_MOVE(STRENGTH)}, - .monSets = gSlateportBattleTentTrainerMons_Kirsten + .monSet = gSlateportBattleTentTrainerMons_Kirsten }, - [20] = { + [SLATEPORT_TENT_TRAINER_KURTIS] = { .facilityClass = FACILITY_CLASS_YOUNGSTER, .trainerName = _("KURTIS"), .speechBefore = {EC_WORD_SORRY, EC_WORD_YOU_RE, EC_WORD_GOING, EC_WORD_TO, EC_WORD_GET, EC_MOVE2(BEAT_UP)}, .speechWin = {EC_WORD_I, EC_WORD_SAID, EC_WORD_WE, EC_WORD_WOULD, EC_MOVE2(POUND), EC_WORD_YOU}, .speechLose = {EC_WORD_HOW, EC_WORD_DID, EC_WORD_I, EC_WORD_GET, EC_MOVE2(BEAT_UP), EC_WORD_QUES}, - .monSets = gSlateportBattleTentTrainerMons_Kurtis + .monSet = gSlateportBattleTentTrainerMons_Kurtis }, - [21] = { + [SLATEPORT_TENT_TRAINER_STEFAN] = { .facilityClass = FACILITY_CLASS_FISHERMAN, .trainerName = _("STEFAN"), .speechBefore = {EC_WORD_I, EC_WORD_ONLY, EC_WORD_WANT, EC_WORD_CUTE, EC_WORD_POKEMON, -1}, .speechWin = {EC_WORD_WHAT, EC_WORD_IS, EC_WORD_IT, EC_WORD_TO, EC_WORD_YOU, EC_WORD_QUES}, .speechLose = {EC_WORD_YOU_RE, EC_WORD_KIND, EC_WORD_OF, EC_WORD_AWESOME, EC_WORD_ELLIPSIS, -1}, - .monSets = gSlateportBattleTentTrainerMons_Stefan + .monSet = gSlateportBattleTentTrainerMons_Stefan }, - [22] = { + [SLATEPORT_TENT_TRAINER_AVERY] = { .facilityClass = FACILITY_CLASS_BIRD_KEEPER, .trainerName = _("AVERY"), .speechBefore = {EC_WORD_TOYS, EC_WORD_EXCL, EC_WORD_I, EC_WORD_NEED, EC_WORD_MORE, EC_WORD_TOYS}, .speechWin = {EC_WORD_I, EC_WORD_NEED, EC_WORD_SOME, EC_WORD_EASY, EC_WORD_MONEY, EC_WORD_FAST}, .speechLose = {EC_WORD_I, EC_WORD_NEED, EC_WORD_TO, EC_WORD_WORK, EC_WORD_FOR, EC_WORD_MONEY}, - .monSets = gSlateportBattleTentTrainerMons_Avery + .monSet = gSlateportBattleTentTrainerMons_Avery }, - [23] = { + [SLATEPORT_TENT_TRAINER_DWANE] = { .facilityClass = FACILITY_CLASS_NINJA_BOY, .trainerName = _("DWANE"), .speechBefore = {EC_WORD_MMM, EC_WORD_TASTY, EC_WORD_ELLIPSIS, EC_WORD_WONDER, EC_WORD_WHAT, EC_WORD_QUES}, .speechWin = {EC_WORD_MMM, EC_WORD_MMM, EC_WORD_ELLIPSIS, EC_WORD_YOU, EC_WORD_DON_T, EC_WORD_KNOW}, .speechLose = {EC_WORD_MMM, EC_WORD_MMM, EC_WORD_ELLIPSIS, EC_WORD_OH_YEAH, EC_WORD_THIS_IS_IT_EXCL, -1}, - .monSets = gSlateportBattleTentTrainerMons_Dwane + .monSet = gSlateportBattleTentTrainerMons_Dwane }, - [24] = { + [SLATEPORT_TENT_TRAINER_MCKENNA] = { .facilityClass = FACILITY_CLASS_PARASOL_LADY, .trainerName = _("MCKENNA"), .speechBefore = {EC_WORD_I, EC_WORD_DISLIKE, EC_WORD_SMALL, EC_WORD_TALK, EC_WORD_LET_S, EC_WORD_GO}, .speechWin = {EC_WORD_YUP, EC_WORD_THAT_S, EC_WORD_THAT, -1, -1, -1}, .speechLose = {EC_WORD_KTHX_BYE, -1, -1, -1, -1, -1}, - .monSets = gSlateportBattleTentTrainerMons_Mckenna + .monSet = gSlateportBattleTentTrainerMons_Mckenna }, - [25] = { + [SLATEPORT_TENT_TRAINER_CAMRYN] = { .facilityClass = FACILITY_CLASS_SWIMMER_F, .trainerName = _("CAMRYN"), .speechBefore = {EC_WORD_MR, EC_WORD_JUDGE, EC_WORD_YOU, EC_WORD_HAVE, EC_WORD_OUR, EC_WORD_TRUST}, .speechWin = {EC_WORD_YES_SIR_EXCL, EC_WORD_WE_RE, EC_WORD_NO_1, EC_WORD_IN, EC_WORD_THIS, EC_WORD_CONTEST}, .speechLose = {EC_WORD_I, EC_WORD_WON_T, EC_WORD_GIVE_UP, EC_WORD_MY, EC_WORD_IDOL, EC_WORD_DREAM}, - .monSets = gSlateportBattleTentTrainerMons_Camryn + .monSet = gSlateportBattleTentTrainerMons_Camryn }, - [26] = { + [SLATEPORT_TENT_TRAINER_NATASHA] = { .facilityClass = FACILITY_CLASS_PICNICKER, .trainerName = _("NATASHA"), .speechBefore = {EC_WORD_COME_OVER, EC_WORD_TO, EC_WORD_MY, EC_WORD_PLACE, EC_WORD_OK_QUES, -1}, .speechWin = {EC_WORD_COME_ON, EC_WORD_OVER, EC_WORD_IT, EC_WORD_WILL, EC_WORD_BE, EC_WORD_GREAT}, .speechLose = {EC_WORD_AWW, EC_WORD_WON_T, EC_WORD_YOU, EC_WORD_COME_OVER, EC_WORD_QUES, -1}, - .monSets = gSlateportBattleTentTrainerMons_Natasha + .monSet = gSlateportBattleTentTrainerMons_Natasha }, - [27] = { + [SLATEPORT_TENT_TRAINER_AUSTYN] = { .facilityClass = FACILITY_CLASS_SAILOR, .trainerName = _("AUSTYN"), .speechBefore = {EC_WORD_I, EC_WORD_DON_T, EC_WORD_CARE, EC_WORD_HOW, EC_WORD_WE, EC_WORD_MATCH_UP}, .speechWin = {EC_WORD_HAH, EC_WORD_BACK, EC_WORD_TO, EC_WORD_SCHOOL, EC_WORD_FOR, EC_WORD_YOU}, .speechLose = {EC_WORD_I, EC_WORD_NEED, EC_WORD_TO, EC_WORD_STUDY, EC_WORD_MY, EC_WORD_LESSONS}, - .monSets = gSlateportBattleTentTrainerMons_Austyn + .monSet = gSlateportBattleTentTrainerMons_Austyn }, - [28] = { + [SLATEPORT_TENT_TRAINER_DONOVAN] = { .facilityClass = FACILITY_CLASS_COLLECTOR, .trainerName = _("DONOVAN"), .speechBefore = {EC_WORD_OH, EC_WORD_I_AM, EC_WORD_FEELING, EC_WORD_SLIMY, EC_WORD_ALL, EC_WORD_OVER}, .speechWin = {EC_WORD_YOU_RE, EC_WORD_GOING, EC_WORD_DOWN, EC_WORD_THE, EC_MOVE2(MEGA_DRAIN), EC_WORD_HAHAHA}, .speechLose = {EC_WORD_I_AM, EC_WORD_NATURALLY, EC_WORD_SLIMY, EC_WORD_THAT_S, EC_WORD_WHAT, EC_WORD_I_AM}, - .monSets = gSlateportBattleTentTrainerMons_Donovan + .monSet = gSlateportBattleTentTrainerMons_Donovan }, - [29] = { + [SLATEPORT_TENT_TRAINER_TAMIA] = { .facilityClass = FACILITY_CLASS_LASS, .trainerName = _("TAMIA"), .speechBefore = {EC_WORD_I_AM, EC_WORD_ANGRY, EC_WORD_WITH, EC_WORD_MY, EC_WORD_FATHER, EC_WORD_ELLIPSIS}, .speechWin = {EC_WORD_I, EC_WORD_REALLY, EC_WORD_DISLIKE, EC_WORD_MY, EC_WORD_FATHER, EC_WORD_EXCL}, .speechLose = {EC_WORD_I, EC_WORD_JUST, EC_WORD_SO, EC_WORD_ADORE, EC_WORD_MY, EC_WORD_FATHER}, - .monSets = gSlateportBattleTentTrainerMons_Tamia + .monSet = gSlateportBattleTentTrainerMons_Tamia } }; -const struct FacilityMon gSlateportBattleTentMons[] = +const struct FacilityMon gSlateportBattleTentMons[NUM_SLATEPORT_TENT_MONS] = { - [0] = { + [SLATEPORT_TENT_MON_ZIGZAGOON_1] = { .species = SPECIES_ZIGZAGOON, .moves = {MOVE_TACKLE, MOVE_CHARM, MOVE_ODOR_SLEUTH, MOVE_PIN_MISSILE}, .itemTableId = BATTLE_FRONTIER_ITEM_CHOICE_BAND, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_JOLLY }, - [1] = { + [SLATEPORT_TENT_MON_ZIGZAGOON_2] = { .species = SPECIES_ZIGZAGOON, .moves = {MOVE_DIG, MOVE_MUD_SPORT, MOVE_TAIL_WHIP, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_JOLLY }, - [2] = { + [SLATEPORT_TENT_MON_BEAUTIFLY] = { .species = SPECIES_BEAUTIFLY, .moves = {MOVE_STUN_SPORE, MOVE_MEGA_DRAIN, MOVE_GUST, MOVE_HARDEN}, .itemTableId = BATTLE_FRONTIER_ITEM_NONE, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [3] = { + [SLATEPORT_TENT_MON_DUSTOX] = { .species = SPECIES_DUSTOX, .moves = {MOVE_POISON_STING, MOVE_MOONLIGHT, MOVE_PROTECT, MOVE_GUST}, .itemTableId = BATTLE_FRONTIER_ITEM_ORAN_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [4] = { + [SLATEPORT_TENT_MON_WAILMER_1] = { .species = SPECIES_WAILMER, .moves = {MOVE_ROLLOUT, MOVE_CURSE, MOVE_GROWL, MOVE_WHIRLPOOL}, .itemTableId = BATTLE_FRONTIER_ITEM_RAWST_BERRY, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [5] = { + [SLATEPORT_TENT_MON_WAILMER_2] = { .species = SPECIES_WAILMER, .moves = {MOVE_ROLLOUT, MOVE_GROWL, MOVE_WHIRLPOOL, MOVE_WATER_PULSE}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [6] = { + [SLATEPORT_TENT_MON_MARILL_1] = { .species = SPECIES_MARILL, .moves = {MOVE_ROLLOUT, MOVE_DEFENSE_CURL, MOVE_TAIL_WHIP, MOVE_BUBBLE_BEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_IMPISH }, - [7] = { + [SLATEPORT_TENT_MON_WINGULL_1] = { .species = SPECIES_WINGULL, .moves = {MOVE_SUPERSONIC, MOVE_GROWL, MOVE_WING_ATTACK, MOVE_STEEL_WING}, .itemTableId = BATTLE_FRONTIER_ITEM_METAL_COAT, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_NAIVE }, - [8] = { + [SLATEPORT_TENT_MON_PELIPPER_1] = { .species = SPECIES_PELIPPER, .moves = {MOVE_TWISTER, MOVE_WATER_SPORT, MOVE_GROWL, MOVE_WING_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_DRAGON_FANG, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, .nature = NATURE_MODEST }, - [9] = { + [SLATEPORT_TENT_MON_CACNEA_1] = { .species = SPECIES_CACNEA, .moves = {MOVE_SANDSTORM, MOVE_LEER, MOVE_LEECH_SEED, MOVE_PIN_MISSILE}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_SPEED, .nature = NATURE_JOLLY }, - [10] = { + [SLATEPORT_TENT_MON_LOMBRE_1] = { .species = SPECIES_LOMBRE, .moves = {MOVE_ASTONISH, MOVE_WATER_GUN, MOVE_FAKE_OUT, MOVE_ABSORB}, .itemTableId = BATTLE_FRONTIER_ITEM_MIRACLE_SEED, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [11] = { + [SLATEPORT_TENT_MON_LOTAD] = { .species = SPECIES_LOTAD, .moves = {MOVE_SYNTHESIS, MOVE_NATURE_POWER, MOVE_RAIN_DANCE, MOVE_MEGA_DRAIN}, .itemTableId = BATTLE_FRONTIER_ITEM_MYSTIC_WATER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [12] = { + [SLATEPORT_TENT_MON_SEEDOT] = { .species = SPECIES_SEEDOT, .moves = {MOVE_SUNNY_DAY, MOVE_SYNTHESIS, MOVE_LEECH_SEED, MOVE_BIDE}, .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_TIMID }, - [13] = { + [SLATEPORT_TENT_MON_NUZLEAF] = { .species = SPECIES_NUZLEAF, .moves = {MOVE_FAKE_OUT, MOVE_NATURE_POWER, MOVE_HARDEN, MOVE_ATTRACT}, .itemTableId = BATTLE_FRONTIER_ITEM_NONE, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_LONELY }, - [14] = { + [SLATEPORT_TENT_MON_NINJASK_1] = { .species = SPECIES_NINJASK, .moves = {MOVE_FURY_CUTTER, MOVE_SCREECH, MOVE_SWORDS_DANCE, MOVE_DOUBLE_TEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_NONE, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [15] = { + [SLATEPORT_TENT_MON_NINJASK_2] = { .species = SPECIES_NINJASK, .moves = {MOVE_FURY_CUTTER, MOVE_DOUBLE_TEAM, MOVE_SCREECH, MOVE_SAND_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_SILVER_POWDER, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_NAUGHTY }, - [16] = { + [SLATEPORT_TENT_MON_GRAVELER] = { .species = SPECIES_GRAVELER, .moves = {MOVE_MUD_SPORT, MOVE_BLOCK, MOVE_ROCK_TOMB, MOVE_MAGNITUDE}, .itemTableId = BATTLE_FRONTIER_ITEM_NONE, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_BRAVE }, - [17] = { + [SLATEPORT_TENT_MON_BALTOY] = { .species = SPECIES_BALTOY, .moves = {MOVE_SELF_DESTRUCT, MOVE_ANCIENT_POWER, MOVE_PSYBEAM, MOVE_REFLECT}, .itemTableId = BATTLE_FRONTIER_ITEM_NONE, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_NAIVE }, - [18] = { + [SLATEPORT_TENT_MON_MIGHTYENA_1] = { .species = SPECIES_MIGHTYENA, .moves = {MOVE_BITE, MOVE_ROAR, MOVE_SWAGGER, MOVE_TACKLE}, .itemTableId = BATTLE_FRONTIER_ITEM_BLACK_GLASSES, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, .nature = NATURE_CALM }, - [19] = { + [SLATEPORT_TENT_MON_MIGHTYENA_2] = { .species = SPECIES_MIGHTYENA, .moves = {MOVE_ODOR_SLEUTH, MOVE_HOWL, MOVE_SAND_ATTACK, MOVE_POISON_FANG}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_LONELY }, - [20] = { + [SLATEPORT_TENT_MON_LINOONE] = { .species = SPECIES_LINOONE, .moves = {MOVE_HEADBUTT, MOVE_TICKLE, MOVE_TAIL_WHIP, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_MENTAL_HERB, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_JOLLY }, - [21] = { + [SLATEPORT_TENT_MON_GOLDEEN] = { .species = SPECIES_GOLDEEN, .moves = {MOVE_WATER_SPORT, MOVE_HORN_ATTACK, MOVE_WATERFALL, MOVE_SUPERSONIC}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, .nature = NATURE_CALM }, - [22] = { + [SLATEPORT_TENT_MON_ELECTRIKE_1] = { .species = SPECIES_ELECTRIKE, .moves = {MOVE_BITE, MOVE_SPARK, MOVE_ROAR, MOVE_FLASH}, .itemTableId = BATTLE_FRONTIER_ITEM_MAGNET, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_MODEST }, - [23] = { + [SLATEPORT_TENT_MON_VOLTORB] = { .species = SPECIES_VOLTORB, .moves = {MOVE_SPARK, MOVE_ROLLOUT, MOVE_CHARGE, MOVE_SCREECH}, .itemTableId = BATTLE_FRONTIER_ITEM_NONE, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK, .nature = NATURE_MILD }, - [24] = { + [SLATEPORT_TENT_MON_ARON_1] = { .species = SPECIES_ARON, .moves = {MOVE_DIG, MOVE_METAL_CLAW, MOVE_IRON_DEFENSE, MOVE_ENDEAVOR}, .itemTableId = BATTLE_FRONTIER_ITEM_NONE, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_NAUGHTY }, - [25] = { + [SLATEPORT_TENT_MON_ARON_2] = { .species = SPECIES_ARON, .moves = {MOVE_MUD_SLAP, MOVE_IRON_TAIL, MOVE_HARDEN, MOVE_ROAR}, .itemTableId = BATTLE_FRONTIER_ITEM_LEPPA_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [26] = { + [SLATEPORT_TENT_MON_TRAPINCH_1] = { .species = SPECIES_TRAPINCH, .moves = {MOVE_BODY_SLAM, MOVE_FOCUS_ENERGY, MOVE_SAND_TOMB, MOVE_SAND_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_NONE, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_BRAVE }, - [27] = { + [SLATEPORT_TENT_MON_CACNEA_2] = { .species = SPECIES_CACNEA, .moves = {MOVE_INGRAIN, MOVE_SANDSTORM, MOVE_POISON_STING, MOVE_DESTINY_BOND}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, .nature = NATURE_TIMID }, - [28] = { + [SLATEPORT_TENT_MON_TAILLOW] = { .species = SPECIES_TAILLOW, .moves = {MOVE_GROWL, MOVE_AERIAL_ACE, MOVE_AGILITY, MOVE_ENDEAVOR}, .itemTableId = BATTLE_FRONTIER_ITEM_SHARP_BEAK, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [29] = { + [SLATEPORT_TENT_MON_SWELLOW] = { .species = SPECIES_SWELLOW, .moves = {MOVE_SUPERSONIC, MOVE_GROWL, MOVE_FOCUS_ENERGY, MOVE_PECK}, .itemTableId = BATTLE_FRONTIER_ITEM_NONE, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_IMPISH }, - [30] = { + [SLATEPORT_TENT_MON_GOLBAT_1] = { .species = SPECIES_GOLBAT, .moves = {MOVE_ASTONISH, MOVE_GUST, MOVE_MEAN_LOOK, MOVE_CONFUSE_RAY}, .itemTableId = BATTLE_FRONTIER_ITEM_SPELL_TAG, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE, .nature = NATURE_TIMID }, - [31] = { + [SLATEPORT_TENT_MON_LOUDRED] = { .species = SPECIES_LOUDRED, .moves = {MOVE_ASTONISH, MOVE_SCREECH, MOVE_UPROAR, MOVE_SUPERSONIC}, .itemTableId = BATTLE_FRONTIER_ITEM_NONE, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [32] = { + [SLATEPORT_TENT_MON_SPINDA] = { .species = SPECIES_SPINDA, .moves = {MOVE_DIZZY_PUNCH, MOVE_FAINT_ATTACK, MOVE_HYPNOSIS, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [33] = { + [SLATEPORT_TENT_MON_MAGNEMITE] = { .species = SPECIES_MAGNEMITE, .moves = {MOVE_METAL_SOUND, MOVE_SUPERSONIC, MOVE_THUNDER_WAVE, MOVE_SPARK}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_SERIOUS }, - [34] = { + [SLATEPORT_TENT_MON_WHISMUR] = { .species = SPECIES_WHISMUR, .moves = {MOVE_REST, MOVE_SLEEP_TALK, MOVE_HOWL, MOVE_BODY_SLAM}, .itemTableId = BATTLE_FRONTIER_ITEM_SILK_SCARF, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [35] = { + [SLATEPORT_TENT_MON_MAKUHITA] = { .species = SPECIES_MAKUHITA, .moves = {MOVE_SAND_ATTACK, MOVE_KNOCK_OFF, MOVE_ARM_THRUST, MOVE_BELLY_DRUM}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [36] = { + [SLATEPORT_TENT_MON_NUMEL_1] = { .species = SPECIES_NUMEL, .moves = {MOVE_EMBER, MOVE_TAKE_DOWN, MOVE_GROWL, MOVE_FOCUS_ENERGY}, .itemTableId = BATTLE_FRONTIER_ITEM_NONE, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_MODEST }, - [37] = { + [SLATEPORT_TENT_MON_BARBOACH] = { .species = SPECIES_BARBOACH, .moves = {MOVE_MAGNITUDE, MOVE_MUD_SPORT, MOVE_WATER_SPORT, MOVE_WATER_GUN}, .itemTableId = BATTLE_FRONTIER_ITEM_SEA_INCENSE, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_JOLLY }, - [38] = { + [SLATEPORT_TENT_MON_TENTACOOL] = { .species = SPECIES_TENTACOOL, .moves = {MOVE_SCREECH, MOVE_BUBBLE_BEAM, MOVE_ACID, MOVE_BARRIER}, .itemTableId = BATTLE_FRONTIER_ITEM_POISON_BARB, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [39] = { + [SLATEPORT_TENT_MON_VIGOROTH] = { .species = SPECIES_VIGOROTH, .moves = {MOVE_FOCUS_ENERGY, MOVE_FURY_SWIPES, MOVE_ENDURE, MOVE_YAWN}, .itemTableId = BATTLE_FRONTIER_ITEM_AGUAV_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [40] = { + [SLATEPORT_TENT_MON_MAGIKARP] = { .species = SPECIES_MAGIKARP, .moves = {MOVE_TACKLE, MOVE_FLAIL, MOVE_SPLASH, MOVE_NONE}, .itemTableId = BATTLE_FRONTIER_ITEM_DRAGON_SCALE, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [41] = { + [SLATEPORT_TENT_MON_SEVIPER_1] = { .species = SPECIES_SEVIPER, .moves = {MOVE_LICK, MOVE_POISON_FANG, MOVE_GLARE, MOVE_WRAP}, .itemTableId = BATTLE_FRONTIER_ITEM_NONE, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [42] = { + [SLATEPORT_TENT_MON_SOLROCK] = { .species = SPECIES_SOLROCK, .moves = {MOVE_ROCK_THROW, MOVE_HARDEN, MOVE_PSYWAVE, MOVE_TACKLE}, .itemTableId = BATTLE_FRONTIER_ITEM_HARD_STONE, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [43] = { + [SLATEPORT_TENT_MON_KECLEON_1] = { .species = SPECIES_KECLEON, .moves = {MOVE_PSYBEAM, MOVE_SUBSTITUTE, MOVE_THIEF, MOVE_TAIL_WHIP}, .itemTableId = BATTLE_FRONTIER_ITEM_NONE, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [44] = { + [SLATEPORT_TENT_MON_KECLEON_2] = { .species = SPECIES_KECLEON, .moves = {MOVE_FAINT_ATTACK, MOVE_ASTONISH, MOVE_LICK, MOVE_SCREECH}, .itemTableId = BATTLE_FRONTIER_ITEM_IAPAPA_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_CALM }, - [45] = { + [SLATEPORT_TENT_MON_SHROOMISH_1] = { .species = SPECIES_SHROOMISH, .moves = {MOVE_STUN_SPORE, MOVE_TACKLE, MOVE_LEECH_SEED, MOVE_MEGA_DRAIN}, .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [46] = { + [SLATEPORT_TENT_MON_SHROOMISH_2] = { .species = SPECIES_SHROOMISH, .moves = {MOVE_ABSORB, MOVE_STUN_SPORE, MOVE_SPORE, MOVE_LEECH_SEED}, .itemTableId = BATTLE_FRONTIER_ITEM_FIGY_BERRY, .evSpread = F_EV_SPREAD_ATTACK, .nature = NATURE_BRAVE }, - [47] = { + [SLATEPORT_TENT_MON_LOMBRE_2] = { .species = SPECIES_LOMBRE, .moves = {MOVE_NATURE_POWER, MOVE_ASTONISH, MOVE_GROWL, MOVE_ABSORB}, .itemTableId = BATTLE_FRONTIER_ITEM_NONE, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_LONELY }, - [48] = { + [SLATEPORT_TENT_MON_NUMEL_2] = { .species = SPECIES_NUMEL, .moves = {MOVE_EMBER, MOVE_GROWL, MOVE_EARTHQUAKE, MOVE_SUNNY_DAY}, .itemTableId = BATTLE_FRONTIER_ITEM_CHARCOAL, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, .nature = NATURE_MODEST }, - [49] = { + [SLATEPORT_TENT_MON_TRAPINCH_2] = { .species = SPECIES_TRAPINCH, .moves = {MOVE_FAINT_ATTACK, MOVE_DIG, MOVE_BITE, MOVE_QUICK_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_ASPEAR_BERRY, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_BRAVE }, - [50] = { + [SLATEPORT_TENT_MON_PELIPPER_2] = { .species = SPECIES_PELIPPER, .moves = {MOVE_WING_ATTACK, MOVE_SUPERSONIC, MOVE_MIST, MOVE_AGILITY}, .itemTableId = BATTLE_FRONTIER_ITEM_WIKI_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [51] = { + [SLATEPORT_TENT_MON_WINGULL_2] = { .species = SPECIES_WINGULL, .moves = {MOVE_WATER_GUN, MOVE_SUPERSONIC, MOVE_GROWL, MOVE_ICY_WIND}, .itemTableId = BATTLE_FRONTIER_ITEM_NEVER_MELT_ICE, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [52] = { + [SLATEPORT_TENT_MON_MARILL_2] = { .species = SPECIES_MARILL, .moves = {MOVE_DOUBLE_EDGE, MOVE_RAIN_DANCE, MOVE_TAIL_WHIP, MOVE_WATER_GUN}, .itemTableId = BATTLE_FRONTIER_ITEM_GANLON_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [53] = { + [SLATEPORT_TENT_MON_SKITTY] = { .species = SPECIES_SKITTY, .moves = {MOVE_ASSIST, MOVE_ATTRACT, MOVE_SING, MOVE_CHARM}, .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_CAREFUL }, - [54] = { + [SLATEPORT_TENT_MON_SEVIPER_2] = { .species = SPECIES_SEVIPER, .moves = {MOVE_SWAGGER, MOVE_WRAP, MOVE_POISON_TAIL, MOVE_HAZE}, .itemTableId = BATTLE_FRONTIER_ITEM_NONE, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, .nature = NATURE_BRAVE }, - [55] = { + [SLATEPORT_TENT_MON_GOLBAT_2] = { .species = SPECIES_GOLBAT, .moves = {MOVE_BITE, MOVE_TORMENT, MOVE_SCREECH, MOVE_POISON_FANG}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [56] = { + [SLATEPORT_TENT_MON_RALTS] = { .species = SPECIES_RALTS, .moves = {MOVE_HYPNOSIS, MOVE_IMPRISON, MOVE_PSYCHIC, MOVE_DREAM_EATER}, .itemTableId = BATTLE_FRONTIER_ITEM_MAGO_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_TIMID }, - [57] = { + [SLATEPORT_TENT_MON_SANDSHREW] = { .species = SPECIES_SANDSHREW, .moves = {MOVE_SLASH, MOVE_SAND_ATTACK, MOVE_SAND_TOMB, MOVE_DEFENSE_CURL}, .itemTableId = BATTLE_FRONTIER_ITEM_SOFT_SAND, .evSpread = 0, .nature = NATURE_HARDY }, - [58] = { + [SLATEPORT_TENT_MON_SWALOT] = { .species = SPECIES_SWALOT, .moves = {MOVE_YAWN, MOVE_SLUDGE, MOVE_ENCORE, MOVE_POUND}, .itemTableId = BATTLE_FRONTIER_ITEM_NONE, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_IMPISH }, - [59] = { + [SLATEPORT_TENT_MON_VOLBEAT] = { .species = SPECIES_VOLBEAT, .moves = {MOVE_TACKLE, MOVE_CONFUSE_RAY, MOVE_QUICK_ATTACK, MOVE_DOUBLE_TEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_NONE, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [60] = { + [SLATEPORT_TENT_MON_ILLUMISE] = { .species = SPECIES_ILLUMISE, .moves = {MOVE_CHARM, MOVE_TACKLE, MOVE_ENCORE, MOVE_MOONLIGHT}, .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [61] = { + [SLATEPORT_TENT_MON_KADABRA] = { .species = SPECIES_KADABRA, .moves = {MOVE_DISABLE, MOVE_CONFUSION, MOVE_REFLECT, MOVE_RECOVER}, .itemTableId = BATTLE_FRONTIER_ITEM_NONE, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_QUIRKY }, - [62] = { + [SLATEPORT_TENT_MON_KIRLIA] = { .species = SPECIES_KIRLIA, .moves = {MOVE_CALM_MIND, MOVE_CONFUSION, MOVE_DOUBLE_TEAM, MOVE_GROWL}, .itemTableId = BATTLE_FRONTIER_ITEM_TWISTED_SPOON, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_CAREFUL }, - [63] = { + [SLATEPORT_TENT_MON_BRELOOM] = { .species = SPECIES_BRELOOM, .moves = {MOVE_ABSORB, MOVE_TACKLE, MOVE_STUN_SPORE, MOVE_MEGA_DRAIN}, .itemTableId = BATTLE_FRONTIER_ITEM_NONE, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_NAIVE }, - [64] = { + [SLATEPORT_TENT_MON_PLUSLE_1] = { .species = SPECIES_PLUSLE, .moves = {MOVE_SPARK, MOVE_ENCORE, MOVE_THUNDER_WAVE, MOVE_GROWL}, .itemTableId = BATTLE_FRONTIER_ITEM_LIECHI_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_LONELY }, - [65] = { + [SLATEPORT_TENT_MON_PLUSLE_2] = { .species = SPECIES_PLUSLE, .moves = {MOVE_SPARK, MOVE_FAKE_TEARS, MOVE_SUBSTITUTE, MOVE_QUICK_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_PECHA_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_MILD }, - [66] = { + [SLATEPORT_TENT_MON_ELECTRIKE_2] = { .species = SPECIES_ELECTRIKE, .moves = {MOVE_SPARK, MOVE_CHARGE, MOVE_ROAR, MOVE_THUNDER_WAVE}, .itemTableId = BATTLE_FRONTIER_ITEM_APICOT_BERRY, .evSpread = F_EV_SPREAD_SPEED, .nature = NATURE_TIMID }, - [67] = { + [SLATEPORT_TENT_MON_SWABLU] = { .species = SPECIES_SWABLU, .moves = {MOVE_SING, MOVE_PECK, MOVE_STEEL_WING, MOVE_SAFEGUARD}, .itemTableId = BATTLE_FRONTIER_ITEM_NONE, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_JOLLY }, - [68] = { + [SLATEPORT_TENT_MON_MACHOP] = { .species = SPECIES_MACHOP, .moves = {MOVE_FOCUS_ENERGY, MOVE_VITAL_THROW, MOVE_SEISMIC_TOSS, MOVE_FORESIGHT}, .itemTableId = BATTLE_FRONTIER_ITEM_BLACK_BELT, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [69] = { + [SLATEPORT_TENT_MON_MACHOKE] = { .species = SPECIES_MACHOKE, .moves = {MOVE_FOCUS_ENERGY, MOVE_LEER, MOVE_KARATE_CHOP, MOVE_FORESIGHT}, .itemTableId = BATTLE_FRONTIER_ITEM_NONE, @@ -1248,873 +1248,873 @@ const struct FacilityMon gSlateportBattleTentMons[] = // Verdanturf Battle Tent. const u16 gVerdanturfBattleTentTrainerMons_Brenna[] = { - 4, - 11, - 13, - 18, - 26, + VERDANTURF_TENT_MON_SHROOMISH, + VERDANTURF_TENT_MON_SWALOT, + VERDANTURF_TENT_MON_BALTOY, + VERDANTURF_TENT_MON_LOTAD, + VERDANTURF_TENT_MON_NUZLEAF, -1 }; const u16 gVerdanturfBattleTentTrainerMons_Dilan[] = { - 30, - 37, - 13, - 29, - 42, + VERDANTURF_TENT_MON_GRAVELER, + VERDANTURF_TENT_MON_TRAPINCH, + VERDANTURF_TENT_MON_BALTOY, + VERDANTURF_TENT_MON_SOLROCK, + VERDANTURF_TENT_MON_MACHOKE, -1 }; const u16 gVerdanturfBattleTentTrainerMons_Eliana[] = { - 6, - 7, - 17, - 18, - 40, + VERDANTURF_TENT_MON_MAGIKARP, + VERDANTURF_TENT_MON_BARBOACH, + VERDANTURF_TENT_MON_GOLDEEN_1, + VERDANTURF_TENT_MON_LOTAD, + VERDANTURF_TENT_MON_WAILMER, -1 }; const u16 gVerdanturfBattleTentTrainerMons_Markus[] = { - 6, - 7, - 18, - 24, - 38, + VERDANTURF_TENT_MON_MAGIKARP, + VERDANTURF_TENT_MON_BARBOACH, + VERDANTURF_TENT_MON_LOTAD, + VERDANTURF_TENT_MON_GOLDEEN_2, + VERDANTURF_TENT_MON_TENTACOOL, -1 }; const u16 gVerdanturfBattleTentTrainerMons_Caitlyn[] = { - 0, - 12, - 25, - 28, - 22, - 44, + VERDANTURF_TENT_MON_POOCHYENA, + VERDANTURF_TENT_MON_KECLEON, + VERDANTURF_TENT_MON_ELECTRIKE, + VERDANTURF_TENT_MON_MIGHTYENA, + VERDANTURF_TENT_MON_SKARMORY, + VERDANTURF_TENT_MON_CACNEA, -1 }; const u16 gVerdanturfBattleTentTrainerMons_Desiree[] = { - 8, - 12, - 21, - 22, - 31, + VERDANTURF_TENT_MON_WINGULL, + VERDANTURF_TENT_MON_KECLEON, + VERDANTURF_TENT_MON_SEVIPER, + VERDANTURF_TENT_MON_SKARMORY, + VERDANTURF_TENT_MON_KADABRA, -1 }; const u16 gVerdanturfBattleTentTrainerMons_Ronald[] = { - 1, - 20, - 23, - 25, - 32, + VERDANTURF_TENT_MON_ZIGZAGOON, + VERDANTURF_TENT_MON_LINOONE, + VERDANTURF_TENT_MON_SWELLOW, + VERDANTURF_TENT_MON_ELECTRIKE, + VERDANTURF_TENT_MON_VOLTORB, -1 }; const u16 gVerdanturfBattleTentTrainerMons_Ashten[] = { - 9, - 12, - 27, - 37, - 43, + VERDANTURF_TENT_MON_ARON_1, + VERDANTURF_TENT_MON_KECLEON, + VERDANTURF_TENT_MON_ARON_2, + VERDANTURF_TENT_MON_TRAPINCH, + VERDANTURF_TENT_MON_WHISMUR, -1 }; const u16 gVerdanturfBattleTentTrainerMons_Gerard[] = { - 36, - 7, - 34, - 6, - 40, + VERDANTURF_TENT_MON_MARILL, + VERDANTURF_TENT_MON_BARBOACH, + VERDANTURF_TENT_MON_PELIPPER, + VERDANTURF_TENT_MON_MAGIKARP, + VERDANTURF_TENT_MON_WAILMER, -1 }; const u16 gVerdanturfBattleTentTrainerMons_Bradly[] = { - 26, - 3, - 0, - 2, - 17, + VERDANTURF_TENT_MON_NUZLEAF, + VERDANTURF_TENT_MON_TAILLOW, + VERDANTURF_TENT_MON_POOCHYENA, + VERDANTURF_TENT_MON_DUSTOX, + VERDANTURF_TENT_MON_GOLDEEN_1, -1 }; const u16 gVerdanturfBattleTentTrainerMons_Dennis[] = { - 14, - 37, - 2, - 38, - 27, + VERDANTURF_TENT_MON_NINJASK, + VERDANTURF_TENT_MON_TRAPINCH, + VERDANTURF_TENT_MON_DUSTOX, + VERDANTURF_TENT_MON_TENTACOOL, + VERDANTURF_TENT_MON_ARON_2, -1 }; const u16 gVerdanturfBattleTentTrainerMons_Prestin[] = { - 31, - 28, - 22, - 25, - 44, - 43, - 41, + VERDANTURF_TENT_MON_KADABRA, + VERDANTURF_TENT_MON_MIGHTYENA, + VERDANTURF_TENT_MON_SKARMORY, + VERDANTURF_TENT_MON_ELECTRIKE, + VERDANTURF_TENT_MON_CACNEA, + VERDANTURF_TENT_MON_WHISMUR, + VERDANTURF_TENT_MON_ILLUMISE, -1 }; const u16 gVerdanturfBattleTentTrainerMons_Ernesto[] = { - 33, - 32, - 25, - 35, - 34, + VERDANTURF_TENT_MON_MAGNEMITE, + VERDANTURF_TENT_MON_VOLTORB, + VERDANTURF_TENT_MON_ELECTRIKE, + VERDANTURF_TENT_MON_LOUDRED, + VERDANTURF_TENT_MON_PELIPPER, -1 }; const u16 gVerdanturfBattleTentTrainerMons_Nala[] = { - 1, - 4, - 8, - 11, - 17, - 40, - 34, + VERDANTURF_TENT_MON_ZIGZAGOON, + VERDANTURF_TENT_MON_SHROOMISH, + VERDANTURF_TENT_MON_WINGULL, + VERDANTURF_TENT_MON_SWALOT, + VERDANTURF_TENT_MON_GOLDEEN_1, + VERDANTURF_TENT_MON_WAILMER, + VERDANTURF_TENT_MON_PELIPPER, -1 }; const u16 gVerdanturfBattleTentTrainerMons_Darnell[] = { - 0, - 29, - 35, - 37, - 39, - 43, + VERDANTURF_TENT_MON_POOCHYENA, + VERDANTURF_TENT_MON_SOLROCK, + VERDANTURF_TENT_MON_LOUDRED, + VERDANTURF_TENT_MON_TRAPINCH, + VERDANTURF_TENT_MON_VIGOROTH, + VERDANTURF_TENT_MON_WHISMUR, -1 }; const u16 gVerdanturfBattleTentTrainerMons_Ashlyn[] = { - 29, - 36, - 32, - 30, - 17, - 6, - 44, + VERDANTURF_TENT_MON_SOLROCK, + VERDANTURF_TENT_MON_MARILL, + VERDANTURF_TENT_MON_VOLTORB, + VERDANTURF_TENT_MON_GRAVELER, + VERDANTURF_TENT_MON_GOLDEEN_1, + VERDANTURF_TENT_MON_MAGIKARP, + VERDANTURF_TENT_MON_CACNEA, -1 }; const u16 gVerdanturfBattleTentTrainerMons_Addison[] = { - 0, - 1, - 16, - 31, - 6, + VERDANTURF_TENT_MON_POOCHYENA, + VERDANTURF_TENT_MON_ZIGZAGOON, + VERDANTURF_TENT_MON_SWABLU, + VERDANTURF_TENT_MON_KADABRA, + VERDANTURF_TENT_MON_MAGIKARP, -1 }; const u16 gVerdanturfBattleTentTrainerMons_Justine[] = { - 0, - 1, - 16, - 36, - 18, + VERDANTURF_TENT_MON_POOCHYENA, + VERDANTURF_TENT_MON_ZIGZAGOON, + VERDANTURF_TENT_MON_SWABLU, + VERDANTURF_TENT_MON_MARILL, + VERDANTURF_TENT_MON_LOTAD, -1 }; const u16 gVerdanturfBattleTentTrainerMons_Tyson[] = { - 5, - 15, - 22, - 30, - 16, - 39, - 43, + VERDANTURF_TENT_MON_MACHOP, + VERDANTURF_TENT_MON_MAKUHITA, + VERDANTURF_TENT_MON_SKARMORY, + VERDANTURF_TENT_MON_GRAVELER, + VERDANTURF_TENT_MON_SWABLU, + VERDANTURF_TENT_MON_VIGOROTH, + VERDANTURF_TENT_MON_WHISMUR, -1 }; const u16 gVerdanturfBattleTentTrainerMons_Laila[] = { - 5, - 15, - 19, - 24, - 41, - 43, + VERDANTURF_TENT_MON_MACHOP, + VERDANTURF_TENT_MON_MAKUHITA, + VERDANTURF_TENT_MON_NUMEL_2, + VERDANTURF_TENT_MON_GOLDEEN_2, + VERDANTURF_TENT_MON_ILLUMISE, + VERDANTURF_TENT_MON_WHISMUR, -1 }; const u16 gVerdanturfBattleTentTrainerMons_Waren[] = { - 0, - 9, - 10, - 11, - 23, + VERDANTURF_TENT_MON_POOCHYENA, + VERDANTURF_TENT_MON_ARON_1, + VERDANTURF_TENT_MON_NUMEL_1, + VERDANTURF_TENT_MON_SWALOT, + VERDANTURF_TENT_MON_SWELLOW, -1 }; const u16 gVerdanturfBattleTentTrainerMons_Tobias[] = { - 6, - 7, - 24, - 38, - 40, + VERDANTURF_TENT_MON_MAGIKARP, + VERDANTURF_TENT_MON_BARBOACH, + VERDANTURF_TENT_MON_GOLDEEN_2, + VERDANTURF_TENT_MON_TENTACOOL, + VERDANTURF_TENT_MON_WAILMER, -1 }; const u16 gVerdanturfBattleTentTrainerMons_Josiah[] = { - 8, - 16, - 23, - 34, - 3, + VERDANTURF_TENT_MON_WINGULL, + VERDANTURF_TENT_MON_SWABLU, + VERDANTURF_TENT_MON_SWELLOW, + VERDANTURF_TENT_MON_PELIPPER, + VERDANTURF_TENT_MON_TAILLOW, -1 }; const u16 gVerdanturfBattleTentTrainerMons_Dion[] = { - 14, - 2, - 11, - 39, - 21, - 38, + VERDANTURF_TENT_MON_NINJASK, + VERDANTURF_TENT_MON_DUSTOX, + VERDANTURF_TENT_MON_SWALOT, + VERDANTURF_TENT_MON_VIGOROTH, + VERDANTURF_TENT_MON_SEVIPER, + VERDANTURF_TENT_MON_TENTACOOL, -1 }; const u16 gVerdanturfBattleTentTrainerMons_Kenzie[] = { - 18, - 10, - 16, - 26, - 25, - 27, + VERDANTURF_TENT_MON_LOTAD, + VERDANTURF_TENT_MON_NUMEL_1, + VERDANTURF_TENT_MON_SWABLU, + VERDANTURF_TENT_MON_NUZLEAF, + VERDANTURF_TENT_MON_ELECTRIKE, + VERDANTURF_TENT_MON_ARON_2, -1 }; const u16 gVerdanturfBattleTentTrainerMons_Lillian[] = { - 24, - 34, - 36, - 38, - 5, + VERDANTURF_TENT_MON_GOLDEEN_2, + VERDANTURF_TENT_MON_PELIPPER, + VERDANTURF_TENT_MON_MARILL, + VERDANTURF_TENT_MON_TENTACOOL, + VERDANTURF_TENT_MON_MACHOP, -1 }; const u16 gVerdanturfBattleTentTrainerMons_Lesley[] = { - 26, - 0, - 18, - 13, - 25, + VERDANTURF_TENT_MON_NUZLEAF, + VERDANTURF_TENT_MON_POOCHYENA, + VERDANTURF_TENT_MON_LOTAD, + VERDANTURF_TENT_MON_BALTOY, + VERDANTURF_TENT_MON_ELECTRIKE, -1 }; const u16 gVerdanturfBattleTentTrainerMons_Marquis[] = { - 24, - 34, - 5, - 15, - 7, - 42, + VERDANTURF_TENT_MON_GOLDEEN_2, + VERDANTURF_TENT_MON_PELIPPER, + VERDANTURF_TENT_MON_MACHOP, + VERDANTURF_TENT_MON_MAKUHITA, + VERDANTURF_TENT_MON_BARBOACH, + VERDANTURF_TENT_MON_MACHOKE, -1 }; const u16 gVerdanturfBattleTentTrainerMons_Freddy[] = { - 18, - 21, - 26, - 29, - 41, + VERDANTURF_TENT_MON_LOTAD, + VERDANTURF_TENT_MON_SEVIPER, + VERDANTURF_TENT_MON_NUZLEAF, + VERDANTURF_TENT_MON_SOLROCK, + VERDANTURF_TENT_MON_ILLUMISE, -1 }; const u16 gVerdanturfBattleTentTrainerMons_Cecilia[] = { - 23, - 26, - 27, - 28, - 31, + VERDANTURF_TENT_MON_SWELLOW, + VERDANTURF_TENT_MON_NUZLEAF, + VERDANTURF_TENT_MON_ARON_2, + VERDANTURF_TENT_MON_MIGHTYENA, + VERDANTURF_TENT_MON_KADABRA, -1 }; -const struct BattleFrontierTrainer gVerdanturfBattleTentTrainers[] = +const struct BattleFrontierTrainer gVerdanturfBattleTentTrainers[NUM_BATTLE_TENT_TRAINERS] = { - [0] = { + [VERDANTURF_TENT_TRAINER_BRENNA] = { .facilityClass = FACILITY_CLASS_AROMA_LADY, .trainerName = _("BRENNA"), .speechBefore = {EC_WORD_NO, EC_WORD_DAYS, EC_WORD_GO, EC_WORD_WITHOUT, EC_WORD_MY, EC_MOVE(FAKE_TEARS)}, .speechWin = {EC_WORD_OH, EC_WORD_THAT_WAS, EC_WORD_SO, EC_WORD_REFRESHING, EC_WORD_EXCL, -1}, .speechLose = {EC_WORD_ALL, EC_WORD_I, EC_WORD_EVER, EC_WORD_GET, EC_WORD_IS, EC_MOVE(TORMENT)}, - .monSets = gVerdanturfBattleTentTrainerMons_Brenna + .monSet = gVerdanturfBattleTentTrainerMons_Brenna }, - [1] = { + [VERDANTURF_TENT_TRAINER_DILAN] = { .facilityClass = FACILITY_CLASS_RUIN_MANIAC, .trainerName = _("DILAN"), .speechBefore = {EC_WORD_YOU, EC_WORD_DON_T, EC_WORD_KNOW, EC_WORD_HOW, EC_WORD_BORED, EC_WORD_I_AM}, .speechWin = {EC_WORD_LOSING, EC_WORD_ISN_T, EC_WORD_EXCITING, EC_WORD_AT, EC_WORD_ALL, EC_WORD_ELLIPSIS}, .speechLose = {EC_WORD_EXCITING, EC_WORD_EXCL_EXCL, EC_WORD_BYE_BYE, EC_WORD_TO, EC_WORD_BEING, EC_WORD_BORED}, - .monSets = gVerdanturfBattleTentTrainerMons_Dilan + .monSet = gVerdanturfBattleTentTrainerMons_Dilan }, - [2] = { + [VERDANTURF_TENT_TRAINER_ELIANA] = { .facilityClass = FACILITY_CLASS_TUBER_F, .trainerName = _("ELIANA"), .speechBefore = {EC_WORD_I_AM, EC_WORD_GOING, EC_WORD_ON, EC_WORD_A, EC_WORD_VACATION, EC_WORD_SOON}, .speechWin = {EC_WORD_I, EC_WORD_NEED, EC_WORD_TO, EC_WORD_GET, EC_WORD_SOME, EC_WORD_MONEY}, .speechLose = {EC_WORD_NO, EC_WORD_SLEEP, EC_WORD_UNTIL, EC_WORD_I, EC_WORD_GET, EC_WORD_HOME}, - .monSets = gVerdanturfBattleTentTrainerMons_Eliana + .monSet = gVerdanturfBattleTentTrainerMons_Eliana }, - [3] = { + [VERDANTURF_TENT_TRAINER_MARKUS] = { .facilityClass = FACILITY_CLASS_TUBER_M, .trainerName = _("MARKUS"), .speechBefore = {EC_WORD_I_AM, EC_WORD_SMART, EC_WORD_EXCL, EC_WORD_IF_I_LOSE, EC_WORD_I, EC_MOVE(SELF_DESTRUCT)}, .speechWin = {EC_WORD_IT_S, EC_WORD_A, EC_WORD_NON_STOP, EC_MOVE2(EXPLOSION), EC_WORD_OF, EC_WORD_JOY}, .speechLose = {EC_WORD_I_VE, EC_WORD_LOST, EC_WORD_ELLIPSIS, EC_WORD_TIME, EC_WORD_TO, EC_MOVE(SELF_DESTRUCT)}, - .monSets = gVerdanturfBattleTentTrainerMons_Markus + .monSet = gVerdanturfBattleTentTrainerMons_Markus }, - [4] = { + [VERDANTURF_TENT_TRAINER_CAITLYN] = { .facilityClass = FACILITY_CLASS_LADY, .trainerName = _("CAITLYN"), .speechBefore = {EC_WORD_I_AM, EC_WORD_BORED, EC_WORD_OF, EC_WORD_BEING, EC_WORD_AN, EC_WORD_IDOL}, .speechWin = {EC_WORD_A, EC_WORD_BATTLE, EC_WORD_IS, EC_WORD_BEST, EC_WORD_FOR, EC_WORD_HAPPINESS}, .speechLose = {EC_WORD_LOSING, EC_WORD_DOESN_T, EC_WORD_BUG, EC_WORD_ME, EC_WORD_AT, EC_WORD_ALL}, - .monSets = gVerdanturfBattleTentTrainerMons_Caitlyn + .monSet = gVerdanturfBattleTentTrainerMons_Caitlyn }, - [5] = { + [VERDANTURF_TENT_TRAINER_DESIREE] = { .facilityClass = FACILITY_CLASS_BEAUTY, .trainerName = _("DESIREE"), .speechBefore = {EC_WORD_DOESN_T, EC_WORD_MY, EC_WORD_BEAUTY, EC_MOVE(ASTONISH), EC_WORD_YOU, EC_WORD_QUES}, .speechWin = {EC_WORD_DID, EC_WORD_I, EC_WORD_INTIMIDATE, EC_WORD_YOU, EC_WORD_QUES, -1}, .speechLose = {EC_WORD_MY, EC_WORD_BEAUTY, EC_WORD_DID, EC_WORD_NOTHING, EC_WORD_FOR, EC_WORD_YOU}, - .monSets = gVerdanturfBattleTentTrainerMons_Desiree + .monSet = gVerdanturfBattleTentTrainerMons_Desiree }, - [6] = { + [VERDANTURF_TENT_TRAINER_RONALD] = { .facilityClass = FACILITY_CLASS_RICH_BOY, .trainerName = _("RONALD"), .speechBefore = {EC_WORD_COME_ON, EC_WORD_I, EC_WORD_WILL, EC_WORD_BATTLE, EC_WORD_SERIOUSLY, -1}, .speechWin = {EC_WORD_GIVE_UP, EC_WORD_QUES, -1, EC_WORD_THAT_S, EC_WORD_REALLY, EC_WORD_WEAK}, .speechLose = {EC_WORD_I, EC_WORD_NEED, EC_WORD_TO, EC_WORD_DO, EC_WORD_A, EC_MOVE2(BATON_PASS)}, - .monSets = gVerdanturfBattleTentTrainerMons_Ronald + .monSet = gVerdanturfBattleTentTrainerMons_Ronald }, - [7] = { + [VERDANTURF_TENT_TRAINER_ASHTEN] = { .facilityClass = FACILITY_CLASS_POKEMANIAC, .trainerName = _("ASHTEN"), .speechBefore = {EC_WORD_OH_YEAH, EC_WORD_ANOTHER, EC_WORD_EXCITING, EC_WORD_BATTLE, EC_WORD_EXCL, -1}, .speechWin = {EC_WORD_YOUR, EC_WORD_POKEMON, EC_WORD_ARE, EC_WORD_WIMPY, EC_WORD_AND, EC_WORD_BORING}, .speechLose = {EC_WORD_THAT_WAS, EC_WORD_AN, EC_WORD_EXCITING, EC_WORD_LOSS, EC_WORD_WOW, EC_WORD_EXCL}, - .monSets = gVerdanturfBattleTentTrainerMons_Ashten + .monSet = gVerdanturfBattleTentTrainerMons_Ashten }, - [8] = { + [VERDANTURF_TENT_TRAINER_GERARD] = { .facilityClass = FACILITY_CLASS_SWIMMER_M, .trainerName = _("GERARD"), .speechBefore = {EC_WORD_LOOK, EC_WORD_AT, EC_WORD_MY, EC_WORD_SUPER, EC_MOVE2(TEETER_DANCE), EC_WORD_EXCL}, .speechWin = {EC_WORD_THAT_WAS, EC_WORD_HARD, EC_WORD_ELLIPSIS, EC_WORD_AM, EC_WORD_I, EC_WORD_OK_QUES}, .speechLose = {EC_WORD_I, EC_WORD_WON_T, EC_WORD_FORGIVE, EC_WORD_YOU, EC_WORD_FOR, EC_WORD_THAT}, - .monSets = gVerdanturfBattleTentTrainerMons_Gerard + .monSet = gVerdanturfBattleTentTrainerMons_Gerard }, - [9] = { + [VERDANTURF_TENT_TRAINER_BRADLY] = { .facilityClass = FACILITY_CLASS_CAMPER, .trainerName = _("BRADLY"), .speechBefore = {EC_WORD_IT_S, EC_WORD_LONESOME, EC_WORD_BUT, EC_WORD_I, EC_WORD_VACATION, EC_WORD_ALONE}, .speechWin = {EC_WORD_I, EC_WORD_WILL, EC_MOVE(WITHDRAW), EC_WORD_INSIDE, EC_WORD_MY, EC_WORD_SHELL_ARMOR}, .speechLose = {EC_WORD_OH, EC_WORD_ELLIPSIS, -1, EC_WORD_ALONE, EC_WORD_AS, EC_WORD_ALWAYS}, - .monSets = gVerdanturfBattleTentTrainerMons_Bradly + .monSet = gVerdanturfBattleTentTrainerMons_Bradly }, - [10] = { + [VERDANTURF_TENT_TRAINER_DENNIS] = { .facilityClass = FACILITY_CLASS_BUG_MANIAC, .trainerName = _("DENNIS"), .speechBefore = {EC_WORD_ARE, EC_WORD_YOU, EC_WORD_REALLY, EC_WORD_STRONG, EC_WORD_QUES, -1}, .speechWin = {EC_WORD_WAHAHAHA, EC_WORD_EXCL, -1, EC_WORD_WAHAHAHA, EC_WORD_EXCL_EXCL, -1}, .speechLose = {EC_WORD_NICE, EC_WORD_GOING, EC_WORD_EXCL, EC_WORD_I, EC_WORD_WAS, EC_WORD_CHILD_S_PLAY}, - .monSets = gVerdanturfBattleTentTrainerMons_Dennis + .monSet = gVerdanturfBattleTentTrainerMons_Dennis }, - [11] = { + [VERDANTURF_TENT_TRAINER_PRESTIN] = { .facilityClass = FACILITY_CLASS_GENTLEMAN, .trainerName = _("PRESTIN"), .speechBefore = {EC_WORD_THIS, EC_WORD_IS, EC_WORD_A, EC_MOVE(NIGHTMARE), EC_WORD_FOR, EC_WORD_YOU}, .speechWin = {EC_WORD_FORGIVE, EC_WORD_ME, EC_WORD_ELLIPSIS, EC_WORD_IT_S, EC_WORD_A, EC_WORD_DREAM}, .speechLose = {EC_WORD_I, EC_WORD_WANT, EC_WORD_TO, EC_WORD_WAKE_UP, EC_WORD_FROM, EC_WORD_THIS}, - .monSets = gVerdanturfBattleTentTrainerMons_Prestin + .monSet = gVerdanturfBattleTentTrainerMons_Prestin }, - [12] = { + [VERDANTURF_TENT_TRAINER_ERNESTO] = { .facilityClass = FACILITY_CLASS_GUITARIST, .trainerName = _("ERNESTO"), .speechBefore = {EC_WORD_THIS, EC_WORD_PARTY, EC_WORD_GOES, EC_WORD_ON, EC_WORD_FOREVER, EC_WORD_EXCL}, .speechWin = {EC_WORD_THE, EC_WORD_MUSIC, EC_WORD_PLAYS, EC_WORD_ON, EC_WORD_WITHOUT, EC_WORD_END}, .speechLose = {EC_WORD_NO, EC_WORD_EXCL, EC_WORD_THE, EC_WORD_MUSIC, EC_WORD_CAN_T, EC_WORD_STOP}, - .monSets = gVerdanturfBattleTentTrainerMons_Ernesto + .monSet = gVerdanturfBattleTentTrainerMons_Ernesto }, - [13] = { + [VERDANTURF_TENT_TRAINER_NALA] = { .facilityClass = FACILITY_CLASS_SCHOOL_KID_F, .trainerName = _("NALA"), .speechBefore = {EC_WORD_I, EC_WORD_WANT, EC_WORD_THE, EC_WORD_WORLD, EC_WORD_MOVIE, EC_WORD_COLLECTION}, .speechWin = {EC_WORD_I, EC_WORD_DON_T, EC_WORD_LIKE, EC_WORD_RADIO, EC_WORD_VERY, EC_WORD_MUCH}, .speechLose = {EC_WORD_I, EC_WORD_REFUSE, EC_WORD_TO, EC_WORD_BELIEVE, EC_WORD_THIS, EC_WORD_EXCL}, - .monSets = gVerdanturfBattleTentTrainerMons_Nala + .monSet = gVerdanturfBattleTentTrainerMons_Nala }, - [14] = { + [VERDANTURF_TENT_TRAINER_DARNELL] = { .facilityClass = FACILITY_CLASS_COOLTRAINER_M, .trainerName = _("DARNELL"), .speechBefore = {EC_WORD_I, EC_WORD_WILL, EC_WORD_GO_EASY, EC_WORD_ON, EC_WORD_YOU, -1}, .speechWin = {EC_WORD_YOUR, EC_MOVE2(FRUSTRATION), EC_WORD_SHOULD, EC_WORD_BE, EC_WORD_HIDDEN, EC_WORD_AWAY}, .speechLose = {EC_WORD_YOU_RE, EC_WORD_TOO, EC_WORD_MUCH, EC_WORD_TO, EC_WORD_TAKE, EC_WORD_ELLIPSIS}, - .monSets = gVerdanturfBattleTentTrainerMons_Darnell + .monSet = gVerdanturfBattleTentTrainerMons_Darnell }, - [15] = { + [VERDANTURF_TENT_TRAINER_ASHLYN] = { .facilityClass = FACILITY_CLASS_COOLTRAINER_F, .trainerName = _("ASHLYN"), .speechBefore = {EC_WORD_I, EC_WORD_LOOK, EC_WORD_TOUGH, EC_WORD_DO, EC_WORD_I, EC_WORD_QUES}, .speechWin = {EC_WORD_I_AM, EC_WORD_NOT, EC_WORD_OVER, EC_WORD_YOUR, EC_MOVE2(TAUNT), EC_WORD_YET}, .speechLose = {EC_WORD_YOU_RE, EC_WORD_MEAN, EC_WORD_EXCL_EXCL, -1, -1, -1}, - .monSets = gVerdanturfBattleTentTrainerMons_Ashlyn + .monSet = gVerdanturfBattleTentTrainerMons_Ashlyn }, - [16] = { + [VERDANTURF_TENT_TRAINER_ADDISON] = { .facilityClass = FACILITY_CLASS_POKEFAN_M, .trainerName = _("ADDISON"), .speechBefore = {EC_WORD_YES, EC_WORD_EXCL, -1, EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_EXCL}, .speechWin = {EC_WORD_WELL, EC_WORD_WASN_T, EC_WORD_THAT, EC_WORD_EASY, EC_WORD_QUES, -1}, .speechLose = {EC_WORD_WAAAH, EC_WORD_EXCL, -1, EC_WORD_BUT, EC_WORD_WHY, EC_WORD_QUES}, - .monSets = gVerdanturfBattleTentTrainerMons_Addison + .monSet = gVerdanturfBattleTentTrainerMons_Addison }, - [17] = { + [VERDANTURF_TENT_TRAINER_JUSTINE] = { .facilityClass = FACILITY_CLASS_POKEFAN_F, .trainerName = _("JUSTINE"), .speechBefore = {EC_WORD_YES, EC_WORD_EXCL, -1, EC_WORD_COME_ON, EC_WORD_I_AM, EC_WORD_READY}, .speechWin = {EC_WORD_YOU_RE, EC_WORD_JUST, EC_WORD_NOT, EC_WORD_GOOD, EC_WORD_ENOUGH, EC_WORD_EXCL}, .speechLose = {EC_WORD_WOWEE, EC_WORD_EXCL_EXCL, -1, -1, -1, -1}, - .monSets = gVerdanturfBattleTentTrainerMons_Justine + .monSet = gVerdanturfBattleTentTrainerMons_Justine }, - [18] = { + [VERDANTURF_TENT_TRAINER_TYSON] = { .facilityClass = FACILITY_CLASS_EXPERT_M, .trainerName = _("TYSON"), .speechBefore = {EC_WORD_YOU_RE, EC_WORD_GOING, EC_WORD_TO, EC_WORD_PRESSURE, EC_WORD_ME, EC_WORD_QUES}, .speechWin = {EC_WORD_WHAT, EC_WORD_QUES, EC_WORD_YOU_RE, EC_WORD_MUCH, EC_WORD_TOO_WEAK, EC_WORD_EXCL}, .speechLose = {EC_WORD_THIS, EC_WORD_DOESN_T, EC_WORD_MAKE, EC_WORD_ME, EC_WORD_HAPPY, EC_WORD_EXCL}, - .monSets = gVerdanturfBattleTentTrainerMons_Tyson + .monSet = gVerdanturfBattleTentTrainerMons_Tyson }, - [19] = { + [VERDANTURF_TENT_TRAINER_LAILA] = { .facilityClass = FACILITY_CLASS_EXPERT_F, .trainerName = _("LAILA"), .speechBefore = {EC_WORD_A, EC_MOVE2(STRUGGLE), EC_WORD_ISN_T, EC_WORD_VERY, EC_WORD_COOL, -1}, .speechWin = {EC_WORD_NOPE, EC_WORD_NOT_VERY, EC_WORD_COOL, EC_WORD_AT, EC_WORD_ALL, EC_WORD_EXCL}, .speechLose = {EC_WORD_YOU_RE, EC_WORD_NOT, EC_WORD_COOL, EC_WORD_BUT, EC_WORD_YOU, EC_WORD_WON}, - .monSets = gVerdanturfBattleTentTrainerMons_Laila + .monSet = gVerdanturfBattleTentTrainerMons_Laila }, - [20] = { + [VERDANTURF_TENT_TRAINER_WAREN] = { .facilityClass = FACILITY_CLASS_YOUNGSTER, .trainerName = _("WAREN"), .speechBefore = {EC_WORD_DANGER, EC_WORD_EXCL, -1, EC_WORD_I, EC_WORD_SENSE, EC_WORD_DANGER}, .speechWin = {EC_WORD_DID, EC_WORD_YOU, EC_WORD_BELIEVE, EC_WORD_MY, EC_WORD_LIE, EC_WORD_QUES_EXCL}, .speechLose = {EC_WORD_I, EC_WORD_REALLY, EC_WORD_DID, EC_WORD_SENSE, EC_WORD_DANGER, EC_WORD_ELLIPSIS}, - .monSets = gVerdanturfBattleTentTrainerMons_Waren + .monSet = gVerdanturfBattleTentTrainerMons_Waren }, - [21] = { + [VERDANTURF_TENT_TRAINER_TOBIAS] = { .facilityClass = FACILITY_CLASS_FISHERMAN, .trainerName = _("TOBIAS"), .speechBefore = {EC_MOVE2(BARRIER), EC_WORD_EXCL_EXCL, -1, EC_WORD_NOW, EC_WORD_COME_ON, EC_WORD_EXCL}, .speechWin = {EC_WORD_HUH_QUES, EC_WORD_YOU, EC_WORD_MEAN, EC_WORD_I, EC_WORD_WON, EC_WORD_QUES}, .speechLose = {EC_WORD_I, EC_WORD_SHOULD, EC_WORD_KNOW, EC_WORD_THAT, EC_WORD_IT_S, EC_WORD_HOPELESS}, - .monSets = gVerdanturfBattleTentTrainerMons_Tobias + .monSet = gVerdanturfBattleTentTrainerMons_Tobias }, - [22] = { + [VERDANTURF_TENT_TRAINER_JOSIAH] = { .facilityClass = FACILITY_CLASS_BIRD_KEEPER, .trainerName = _("JOSIAH"), .speechBefore = {EC_WORD_I, EC_WORD_PROMISE, EC_WORD_TO, EC_MOVE(FLY), EC_WORD_IF_I_LOSE, -1}, .speechWin = {EC_WORD_TOO_WEAK, EC_WORD_ELLIPSIS, -1, EC_WORD_YOU, EC_MOVE(FLY), EC_WORD_INSTEAD}, .speechLose = {EC_WORD_I, EC_WORD_PROMISE, EC_WORD_TO, EC_MOVE(FLY), EC_WORD_SOMETIME, EC_WORD_SOON}, - .monSets = gVerdanturfBattleTentTrainerMons_Josiah + .monSet = gVerdanturfBattleTentTrainerMons_Josiah }, - [23] = { + [VERDANTURF_TENT_TRAINER_DION] = { .facilityClass = FACILITY_CLASS_NINJA_BOY, .trainerName = _("DION"), .speechBefore = {EC_WORD_IT_S, EC_WORD_TRENDY, EC_WORD_UM, EC_WORD_BATTLE, EC_WORD_SOMETHING, -1}, .speechWin = {EC_WORD_WAS, EC_WORD_IT, EC_WORD_ELLIPSIS, EC_WORD_BATTLE, EC_WORD_DATE, EC_WORD_QUES}, .speechLose = {EC_WORD_WAS, EC_WORD_IT, EC_WORD_ELLIPSIS, EC_WORD_BATTLE, EC_WORD_GOURMET, EC_WORD_QUES}, - .monSets = gVerdanturfBattleTentTrainerMons_Dion + .monSet = gVerdanturfBattleTentTrainerMons_Dion }, - [24] = { + [VERDANTURF_TENT_TRAINER_KENZIE] = { .facilityClass = FACILITY_CLASS_PARASOL_LADY, .trainerName = _("KENZIE"), .speechBefore = {EC_WORD_THE, EC_MOVE(MORNING_SUN), EC_WORD_GIVES, EC_WORD_ME, EC_MOVE(STRENGTH), -1}, .speechWin = {EC_WORD_BUT, EC_WORD_I, EC_WORD_LIKE, EC_MOVE2(MOONLIGHT), EC_WORD_TOO, -1}, .speechLose = {EC_WORD_YOU_RE, EC_WORD_LIKE, EC_WORD_A, EC_WORD_TERRIBLE, EC_MOVE(SANDSTORM), EC_WORD_ELLIPSIS}, - .monSets = gVerdanturfBattleTentTrainerMons_Kenzie + .monSet = gVerdanturfBattleTentTrainerMons_Kenzie }, - [25] = { + [VERDANTURF_TENT_TRAINER_LILLIAN] = { .facilityClass = FACILITY_CLASS_SWIMMER_F, .trainerName = _("LILLIAN"), .speechBefore = {EC_WORD_I, EC_WORD_DO, EC_WORD_THINGS, EC_WORD_AT, EC_WORD_MY, EC_WORD_OWN_TEMPO}, .speechWin = {EC_WORD_I, EC_WORD_WON, EC_WORD_QUES, EC_WORD_WHAT, EC_WORD_A, EC_WORD_SURPRISE}, .speechLose = {EC_WORD_AWW, EC_WORD_ELLIPSIS, EC_WORD_I, EC_WORD_NEED, EC_WORD_A, EC_WORD_NAP}, - .monSets = gVerdanturfBattleTentTrainerMons_Lillian + .monSet = gVerdanturfBattleTentTrainerMons_Lillian }, - [26] = { + [VERDANTURF_TENT_TRAINER_LESLEY] = { .facilityClass = FACILITY_CLASS_PICNICKER, .trainerName = _("LESLEY"), .speechBefore = {EC_WORD_YOU, EC_WORD_SHOULD, EC_WORD_NOT, EC_WORD_BE, EC_WORD_LOLLING, EC_WORD_ABOUT}, .speechWin = {EC_WORD_YOU, EC_WORD_SHOULD, EC_WORD_GET, EC_WORD_UP, EC_WORD_EARLIER, -1}, .speechLose = {EC_WORD_THIS, EC_WORD_SHOULD, EC_WORD_NOT, EC_WORD_BE, EC_WORD_HAPPENING, EC_WORD_EXCL}, - .monSets = gVerdanturfBattleTentTrainerMons_Lesley + .monSet = gVerdanturfBattleTentTrainerMons_Lesley }, - [27] = { + [VERDANTURF_TENT_TRAINER_MARQUIS] = { .facilityClass = FACILITY_CLASS_SAILOR, .trainerName = _("MARQUIS"), .speechBefore = {EC_WORD_NONE, EC_WORD_OF, EC_WORD_THIS, EC_WORD_IS, EC_WORD_MAKING, EC_WORD_SENSE}, .speechWin = {EC_WORD_SEE, EC_WORD_QUES, EC_WORD_THIS, EC_WORD_JUST, EC_WORD_ISN_T, EC_WORD_NORMAL}, .speechLose = {EC_WORD_SHOULD, EC_WORD_I, EC_WORD_CAUSE, EC_WORD_AN, EC_MOVE(UPROAR), EC_WORD_QUES}, - .monSets = gVerdanturfBattleTentTrainerMons_Marquis + .monSet = gVerdanturfBattleTentTrainerMons_Marquis }, - [28] = { + [VERDANTURF_TENT_TRAINER_FREDDY] = { .facilityClass = FACILITY_CLASS_COLLECTOR, .trainerName = _("FREDDY"), .speechBefore = {EC_WORD_I, EC_WORD_ADORE, EC_WORD_THIS, EC_WORD_CUTE, EC_WORD_TELEVISION, EC_WORD_IDOL}, .speechWin = {EC_WORD_YOU_RE, EC_WORD_SO, EC_WORD_FUNNY, EC_WORD_WHEN, EC_WORD_YOU_RE, EC_WORD_ANGRY}, .speechLose = {EC_WORD_LATE, EC_WORD_NIGHT, EC_WORD_TELEVISION, EC_WORD_IS, EC_WORD_MY, EC_WORD_LIFE}, - .monSets = gVerdanturfBattleTentTrainerMons_Freddy + .monSet = gVerdanturfBattleTentTrainerMons_Freddy }, - [29] = { + [VERDANTURF_TENT_TRAINER_CECILIA] = { .facilityClass = FACILITY_CLASS_LASS, .trainerName = _("CECILIA"), .speechBefore = {EC_WORD_MY, EC_WORD_FABULOUS, EC_WORD_CUTENESS, EC_WORD_IS, EC_WORD_IN, EC_WORD_FASHION}, .speechWin = {EC_WORD_YOU_RE, EC_WORD_NO, EC_WORD_MATCH, EC_WORD_FOR, EC_WORD_MY, EC_WORD_CUTE_CHARM}, .speechLose = {EC_WORD_DON_T, EC_WORD_YOU, EC_WORD_HAVE, EC_WORD_FASHION, EC_WORD_SENSE, EC_WORD_QUES}, - .monSets = gVerdanturfBattleTentTrainerMons_Cecilia + .monSet = gVerdanturfBattleTentTrainerMons_Cecilia } }; -const struct FacilityMon gVerdanturfBattleTentMons[] = +const struct FacilityMon gVerdanturfBattleTentMons[NUM_VERDANTURF_TENT_MONS] = { - [0] = { + [VERDANTURF_TENT_MON_POOCHYENA] = { .species = SPECIES_POOCHYENA, .moves = {MOVE_ROAR, MOVE_THIEF, MOVE_BITE, MOVE_HOWL}, .itemTableId = BATTLE_FRONTIER_ITEM_BLACK_GLASSES, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_NAUGHTY }, - [1] = { + [VERDANTURF_TENT_MON_ZIGZAGOON] = { .species = SPECIES_ZIGZAGOON, .moves = {MOVE_COVET, MOVE_GROWL, MOVE_PIN_MISSILE, MOVE_MUD_SPORT}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [2] = { + [VERDANTURF_TENT_MON_DUSTOX] = { .species = SPECIES_DUSTOX, .moves = {MOVE_CONFUSION, MOVE_MOONLIGHT, MOVE_PROTECT, MOVE_FLASH}, .itemTableId = BATTLE_FRONTIER_ITEM_SILVER_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE, .nature = NATURE_MODEST }, - [3] = { + [VERDANTURF_TENT_MON_TAILLOW] = { .species = SPECIES_TAILLOW, .moves = {MOVE_AGILITY, MOVE_DOUBLE_TEAM, MOVE_WING_ATTACK, MOVE_GROWL}, .itemTableId = BATTLE_FRONTIER_ITEM_ORAN_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [4] = { + [VERDANTURF_TENT_MON_SHROOMISH] = { .species = SPECIES_SHROOMISH, .moves = {MOVE_HEADBUTT, MOVE_STUN_SPORE, MOVE_LEECH_SEED, MOVE_FLASH}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, .nature = NATURE_RASH }, - [5] = { + [VERDANTURF_TENT_MON_MACHOP] = { .species = SPECIES_MACHOP, .moves = {MOVE_LOW_KICK, MOVE_LEER, MOVE_FOCUS_ENERGY, MOVE_ENCORE}, .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_LONELY }, - [6] = { + [VERDANTURF_TENT_MON_MAGIKARP] = { .species = SPECIES_MAGIKARP, .moves = {MOVE_SPLASH, MOVE_FLAIL, MOVE_TACKLE, MOVE_NONE}, .itemTableId = BATTLE_FRONTIER_ITEM_SILK_SCARF, .evSpread = F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [7] = { + [VERDANTURF_TENT_MON_BARBOACH] = { .species = SPECIES_BARBOACH, .moves = {MOVE_MUD_SLAP, MOVE_WATER_GUN, MOVE_RAIN_DANCE, MOVE_SPARK}, .itemTableId = BATTLE_FRONTIER_ITEM_ASPEAR_BERRY, .evSpread = F_EV_SPREAD_SPEED, .nature = NATURE_HASTY }, - [8] = { + [VERDANTURF_TENT_MON_WINGULL] = { .species = SPECIES_WINGULL, .moves = {MOVE_ATTRACT, MOVE_TWISTER, MOVE_WING_ATTACK, MOVE_SUPERSONIC}, .itemTableId = BATTLE_FRONTIER_ITEM_DRAGON_FANG, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_IMPISH }, - [9] = { + [VERDANTURF_TENT_MON_ARON_1] = { .species = SPECIES_ARON, .moves = {MOVE_ENDEAVOR, MOVE_METAL_CLAW, MOVE_TACKLE, MOVE_ATTRACT}, .itemTableId = BATTLE_FRONTIER_ITEM_PECHA_BERRY, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [10] = { + [VERDANTURF_TENT_MON_NUMEL_1] = { .species = SPECIES_NUMEL, .moves = {MOVE_EMBER, MOVE_ROCK_SLIDE, MOVE_ROLLOUT, MOVE_GROWL}, .itemTableId = BATTLE_FRONTIER_ITEM_CHARCOAL, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_SASSY }, - [11] = { + [VERDANTURF_TENT_MON_SWALOT] = { .species = SPECIES_SWALOT, .moves = {MOVE_YAWN, MOVE_SLUDGE, MOVE_ACID_ARMOR, MOVE_AMNESIA}, .itemTableId = BATTLE_FRONTIER_ITEM_POISON_BARB, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_BOLD }, - [12] = { + [VERDANTURF_TENT_MON_KECLEON] = { .species = SPECIES_KECLEON, .moves = {MOVE_SUBSTITUTE, MOVE_FAINT_ATTACK, MOVE_DOUBLE_TEAM, MOVE_BIND}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_QUIET }, - [13] = { + [VERDANTURF_TENT_MON_BALTOY] = { .species = SPECIES_BALTOY, .moves = {MOVE_SANDSTORM, MOVE_FLASH, MOVE_SELF_DESTRUCT, MOVE_HARDEN}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_NAUGHTY }, - [14] = { + [VERDANTURF_TENT_MON_NINJASK] = { .species = SPECIES_NINJASK, .moves = {MOVE_DIG, MOVE_SCREECH, MOVE_SWORDS_DANCE, MOVE_LEECH_LIFE}, .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_SASSY }, - [15] = { + [VERDANTURF_TENT_MON_MAKUHITA] = { .species = SPECIES_MAKUHITA, .moves = {MOVE_BULK_UP, MOVE_ARM_THRUST, MOVE_SMELLING_SALT, MOVE_SAND_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_NAUGHTY }, - [16] = { + [VERDANTURF_TENT_MON_SWABLU] = { .species = SPECIES_SWABLU, .moves = {MOVE_REFRESH, MOVE_SAFEGUARD, MOVE_ATTRACT, MOVE_MIRROR_MOVE}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MILD }, - [17] = { + [VERDANTURF_TENT_MON_GOLDEEN_1] = { .species = SPECIES_GOLDEEN, .moves = {MOVE_WATERFALL, MOVE_MUD_SPORT, MOVE_SUPERSONIC, MOVE_DOUBLE_TEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_MYSTIC_WATER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_GENTLE }, - [18] = { + [VERDANTURF_TENT_MON_LOTAD] = { .species = SPECIES_LOTAD, .moves = {MOVE_GROWL, MOVE_WATER_GUN, MOVE_MEGA_DRAIN, MOVE_PROTECT}, .itemTableId = BATTLE_FRONTIER_ITEM_IAPAPA_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [19] = { + [VERDANTURF_TENT_MON_NUMEL_2] = { .species = SPECIES_NUMEL, .moves = {MOVE_MAGNITUDE, MOVE_EMBER, MOVE_GROWL, MOVE_DEFENSE_CURL}, .itemTableId = BATTLE_FRONTIER_ITEM_CHARCOAL, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_RELAXED }, - [20] = { + [VERDANTURF_TENT_MON_LINOONE] = { .species = SPECIES_LINOONE, .moves = {MOVE_HEADBUTT, MOVE_TICKLE, MOVE_PROTECT, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_IMPISH }, - [21] = { + [VERDANTURF_TENT_MON_SEVIPER] = { .species = SPECIES_SEVIPER, .moves = {MOVE_WRAP, MOVE_GLARE, MOVE_POISON_FANG, MOVE_SWAGGER}, .itemTableId = BATTLE_FRONTIER_ITEM_ASPEAR_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_LONELY }, - [22] = { + [VERDANTURF_TENT_MON_SKARMORY] = { .species = SPECIES_SKARMORY, .moves = {MOVE_AIR_CUTTER, MOVE_SANDSTORM, MOVE_LEER, MOVE_AGILITY}, .itemTableId = BATTLE_FRONTIER_ITEM_MACHO_BRACE, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_BASHFUL }, - [23] = { + [VERDANTURF_TENT_MON_SWELLOW] = { .species = SPECIES_SWELLOW, .moves = {MOVE_AGILITY, MOVE_WING_ATTACK, MOVE_DOUBLE_TEAM, MOVE_SUPERSONIC}, .itemTableId = BATTLE_FRONTIER_ITEM_SHARP_BEAK, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_NAUGHTY }, - [24] = { + [VERDANTURF_TENT_MON_GOLDEEN_2] = { .species = SPECIES_GOLDEEN, .moves = {MOVE_PECK, MOVE_SUPERSONIC, MOVE_PSYBEAM, MOVE_RAIN_DANCE}, .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, .nature = NATURE_GENTLE }, - [25] = { + [VERDANTURF_TENT_MON_ELECTRIKE] = { .species = SPECIES_ELECTRIKE, .moves = {MOVE_SHOCK_WAVE, MOVE_TACKLE, MOVE_CHARGE, MOVE_THUNDER_WAVE}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_MILD }, - [26] = { + [VERDANTURF_TENT_MON_NUZLEAF] = { .species = SPECIES_NUZLEAF, .moves = {MOVE_SUNNY_DAY, MOVE_TORMENT, MOVE_FAKE_OUT, MOVE_THIEF}, .itemTableId = BATTLE_FRONTIER_ITEM_BLACK_GLASSES, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_BOLD }, - [27] = { + [VERDANTURF_TENT_MON_ARON_2] = { .species = SPECIES_ARON, .moves = {MOVE_TAKE_DOWN, MOVE_METAL_CLAW, MOVE_IRON_DEFENSE, MOVE_ATTRACT}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [28] = { + [VERDANTURF_TENT_MON_MIGHTYENA] = { .species = SPECIES_MIGHTYENA, .moves = {MOVE_HOWL, MOVE_TAKE_DOWN, MOVE_ODOR_SLEUTH, MOVE_SAND_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [29] = { + [VERDANTURF_TENT_MON_SOLROCK] = { .species = SPECIES_SOLROCK, .moves = {MOVE_HARDEN, MOVE_FIRE_SPIN, MOVE_MIMIC, MOVE_PSYWAVE}, .itemTableId = BATTLE_FRONTIER_ITEM_TWISTED_SPOON, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [30] = { + [VERDANTURF_TENT_MON_GRAVELER] = { .species = SPECIES_GRAVELER, .moves = {MOVE_ROLLOUT, MOVE_ROCK_SMASH, MOVE_SANDSTORM, MOVE_BLOCK}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_IMPISH }, - [31] = { + [VERDANTURF_TENT_MON_KADABRA] = { .species = SPECIES_KADABRA, .moves = {MOVE_ENCORE, MOVE_PSYBEAM, MOVE_DISABLE, MOVE_KINESIS}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, .nature = NATURE_QUIET }, - [32] = { + [VERDANTURF_TENT_MON_VOLTORB] = { .species = SPECIES_VOLTORB, .moves = {MOVE_PROTECT, MOVE_SELF_DESTRUCT, MOVE_SPARK, MOVE_SCREECH}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_BASHFUL }, - [33] = { + [VERDANTURF_TENT_MON_MAGNEMITE] = { .species = SPECIES_MAGNEMITE, .moves = {MOVE_METAL_SOUND, MOVE_SUPERSONIC, MOVE_THUNDER_WAVE, MOVE_SHOCK_WAVE}, .itemTableId = BATTLE_FRONTIER_ITEM_MAGNET, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_SERIOUS }, - [34] = { + [VERDANTURF_TENT_MON_PELIPPER] = { .species = SPECIES_PELIPPER, .moves = {MOVE_WING_ATTACK, MOVE_MIST, MOVE_AGILITY, MOVE_PROTECT}, .itemTableId = BATTLE_FRONTIER_ITEM_FIGY_BERRY, .evSpread = 0, .nature = NATURE_BRAVE }, - [35] = { + [VERDANTURF_TENT_MON_LOUDRED] = { .species = SPECIES_LOUDRED, .moves = {MOVE_HOWL, MOVE_UPROAR, MOVE_REST, MOVE_SCREECH}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_CALM }, - [36] = { + [VERDANTURF_TENT_MON_MARILL] = { .species = SPECIES_MARILL, .moves = {MOVE_ROLLOUT, MOVE_DEFENSE_CURL, MOVE_TAIL_WHIP, MOVE_BUBBLE_BEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_RAWST_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_JOLLY }, - [37] = { + [VERDANTURF_TENT_MON_TRAPINCH] = { .species = SPECIES_TRAPINCH, .moves = {MOVE_DIG, MOVE_ROCK_TOMB, MOVE_SANDSTORM, MOVE_FAINT_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_NONE, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_NAUGHTY }, - [38] = { + [VERDANTURF_TENT_MON_TENTACOOL] = { .species = SPECIES_TENTACOOL, .moves = {MOVE_SCREECH, MOVE_CONFUSE_RAY, MOVE_WRAP, MOVE_ATTRACT}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [39] = { + [VERDANTURF_TENT_MON_VIGOROTH] = { .species = SPECIES_VIGOROTH, .moves = {MOVE_ENCORE, MOVE_SLACK_OFF, MOVE_YAWN, MOVE_SECRET_POWER}, .itemTableId = BATTLE_FRONTIER_ITEM_MENTAL_HERB, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_QUIRKY }, - [40] = { + [VERDANTURF_TENT_MON_WAILMER] = { .species = SPECIES_WAILMER, .moves = {MOVE_WATER_PULSE, MOVE_ROLLOUT, MOVE_CURSE, MOVE_PROTECT}, .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, .evSpread = F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [41] = { + [VERDANTURF_TENT_MON_ILLUMISE] = { .species = SPECIES_ILLUMISE, .moves = {MOVE_TACKLE, MOVE_SWEET_SCENT, MOVE_WISH, MOVE_ENCORE}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [42] = { + [VERDANTURF_TENT_MON_MACHOKE] = { .species = SPECIES_MACHOKE, .moves = {MOVE_LEER, MOVE_KARATE_CHOP, MOVE_BULK_UP, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_CALM }, - [43] = { + [VERDANTURF_TENT_MON_WHISMUR] = { .species = SPECIES_WHISMUR, .moves = {MOVE_SECRET_POWER, MOVE_SUPERSONIC, MOVE_STOMP, MOVE_ROAR}, .itemTableId = BATTLE_FRONTIER_ITEM_RAWST_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_QUIRKY }, - [44] = { + [VERDANTURF_TENT_MON_CACNEA] = { .species = SPECIES_CACNEA, .moves = {MOVE_INGRAIN, MOVE_LEECH_SEED, MOVE_NEEDLE_ARM, MOVE_GROWTH}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, @@ -2126,876 +2126,876 @@ const struct FacilityMon gVerdanturfBattleTentMons[] = // Fallarbor Battle Tent. const u16 gFallarborBattleTentTrainerMons_Amber[] = { - 39, - 40, - 41, - 42, - 43, - 44, + FALLARBOR_TENT_MON_SWALOT, + FALLARBOR_TENT_MON_SHROOMISH, + FALLARBOR_TENT_MON_KIRLIA, + FALLARBOR_TENT_MON_LOMBRE, + FALLARBOR_TENT_MON_NUZLEAF, + FALLARBOR_TENT_MON_CACNEA, -1 }; const u16 gFallarborBattleTentTrainerMons_Javier[] = { - 6, - 35, - 36, - 37, - 38, - 44, + FALLARBOR_TENT_MON_SOLROCK, + FALLARBOR_TENT_MON_TRAPINCH, + FALLARBOR_TENT_MON_BALTOY, + FALLARBOR_TENT_MON_GRAVELER, + FALLARBOR_TENT_MON_SANDSHREW, + FALLARBOR_TENT_MON_CACNEA, -1 }; const u16 gFallarborBattleTentTrainerMons_Natalie[] = { - 5, - 29, - 30, - 32, - 34, + FALLARBOR_TENT_MON_MAGIKARP, + FALLARBOR_TENT_MON_PELIPPER, + FALLARBOR_TENT_MON_BARBOACH, + FALLARBOR_TENT_MON_MARILL, + FALLARBOR_TENT_MON_GOLDEEN_2, -1 }; const u16 gFallarborBattleTentTrainerMons_Treve[] = { - 28, - 29, - 30, - 32, - 33, + FALLARBOR_TENT_MON_WINGULL, + FALLARBOR_TENT_MON_PELIPPER, + FALLARBOR_TENT_MON_BARBOACH, + FALLARBOR_TENT_MON_MARILL, + FALLARBOR_TENT_MON_GOLDEEN_1, -1 }; const u16 gFallarborBattleTentTrainerMons_Arianna[] = { - 18, - 23, - 24, - 27, - 44, + FALLARBOR_TENT_MON_ELECTRIKE, + FALLARBOR_TENT_MON_LINOONE_2, + FALLARBOR_TENT_MON_MIGHTYENA, + FALLARBOR_TENT_MON_GOLBAT, + FALLARBOR_TENT_MON_CACNEA, -1 }; const u16 gFallarborBattleTentTrainerMons_Jadyn[] = { - 0, - 22, - 24, - 27, - 32, - 39, + FALLARBOR_TENT_MON_NUMEL, + FALLARBOR_TENT_MON_LOUDRED, + FALLARBOR_TENT_MON_MIGHTYENA, + FALLARBOR_TENT_MON_GOLBAT, + FALLARBOR_TENT_MON_MARILL, + FALLARBOR_TENT_MON_SWALOT, -1 }; const u16 gFallarborBattleTentTrainerMons_Gerardo[] = { - 6, - 18, - 23, - 24, - 29, + FALLARBOR_TENT_MON_SOLROCK, + FALLARBOR_TENT_MON_ELECTRIKE, + FALLARBOR_TENT_MON_LINOONE_2, + FALLARBOR_TENT_MON_MIGHTYENA, + FALLARBOR_TENT_MON_PELIPPER, -1 }; const u16 gFallarborBattleTentTrainerMons_Jonn[] = { - 16, - 17, - 21, - 22, - 37, + FALLARBOR_TENT_MON_ARON_1, + FALLARBOR_TENT_MON_ARON_2, + FALLARBOR_TENT_MON_WHISMUR, + FALLARBOR_TENT_MON_LOUDRED, + FALLARBOR_TENT_MON_GRAVELER, -1 }; const u16 gFallarborBattleTentTrainerMons_Esteban[] = { - 5, - 28, - 30, - 33, - 42, + FALLARBOR_TENT_MON_MAGIKARP, + FALLARBOR_TENT_MON_WINGULL, + FALLARBOR_TENT_MON_BARBOACH, + FALLARBOR_TENT_MON_GOLDEEN_1, + FALLARBOR_TENT_MON_LOMBRE, -1 }; const u16 gFallarborBattleTentTrainerMons_Jameson[] = { - 1, - 2, - 3, - 5, - 9, + FALLARBOR_TENT_MON_LINOONE_1, + FALLARBOR_TENT_MON_PLUSLE, + FALLARBOR_TENT_MON_POOCHYENA, + FALLARBOR_TENT_MON_MAGIKARP, + FALLARBOR_TENT_MON_NINCADA, -1 }; const u16 gFallarborBattleTentTrainerMons_Alanzo[] = { - 9, - 10, - 11, - 12, - 13, - 14, - 15, + FALLARBOR_TENT_MON_NINCADA, + FALLARBOR_TENT_MON_BEAUTIFLY, + FALLARBOR_TENT_MON_DUSTOX, + FALLARBOR_TENT_MON_ILLUMISE, + FALLARBOR_TENT_MON_VOLBEAT, + FALLARBOR_TENT_MON_NINJASK_1, + FALLARBOR_TENT_MON_NINJASK_2, -1 }; const u16 gFallarborBattleTentTrainerMons_Howard[] = { - 18, - 23, - 31, - 38, - 43, + FALLARBOR_TENT_MON_ELECTRIKE, + FALLARBOR_TENT_MON_LINOONE_2, + FALLARBOR_TENT_MON_WAILMER, + FALLARBOR_TENT_MON_SANDSHREW, + FALLARBOR_TENT_MON_NUZLEAF, -1 }; const u16 gFallarborBattleTentTrainerMons_Conrad[] = { - 18, - 19, - 20, - 21, - 22, + FALLARBOR_TENT_MON_ELECTRIKE, + FALLARBOR_TENT_MON_MAGNEMITE, + FALLARBOR_TENT_MON_VOLTORB, + FALLARBOR_TENT_MON_WHISMUR, + FALLARBOR_TENT_MON_LOUDRED, -1 }; const u16 gFallarborBattleTentTrainerMons_Makenna[] = { - 4, - 21, - 25, - 36, - 40, + FALLARBOR_TENT_MON_KECLEON, + FALLARBOR_TENT_MON_WHISMUR, + FALLARBOR_TENT_MON_SWABLU, + FALLARBOR_TENT_MON_BALTOY, + FALLARBOR_TENT_MON_SHROOMISH, -1 }; const u16 gFallarborBattleTentTrainerMons_Brayan[] = { - 0, - 4, - 6, - 12, - 19, - 23, - 28, + FALLARBOR_TENT_MON_NUMEL, + FALLARBOR_TENT_MON_KECLEON, + FALLARBOR_TENT_MON_SOLROCK, + FALLARBOR_TENT_MON_ILLUMISE, + FALLARBOR_TENT_MON_MAGNEMITE, + FALLARBOR_TENT_MON_LINOONE_2, + FALLARBOR_TENT_MON_WINGULL, -1 }; const u16 gFallarborBattleTentTrainerMons_Mariana[] = { - 0, - 4, - 13, - 19, - 28, - 30, - 37, + FALLARBOR_TENT_MON_NUMEL, + FALLARBOR_TENT_MON_KECLEON, + FALLARBOR_TENT_MON_VOLBEAT, + FALLARBOR_TENT_MON_MAGNEMITE, + FALLARBOR_TENT_MON_WINGULL, + FALLARBOR_TENT_MON_BARBOACH, + FALLARBOR_TENT_MON_GRAVELER, -1 }; const u16 gFallarborBattleTentTrainerMons_Sheldon[] = { - 2, - 3, - 21, - 31, - 39, + FALLARBOR_TENT_MON_PLUSLE, + FALLARBOR_TENT_MON_POOCHYENA, + FALLARBOR_TENT_MON_WHISMUR, + FALLARBOR_TENT_MON_WAILMER, + FALLARBOR_TENT_MON_SWALOT, -1 }; const u16 gFallarborBattleTentTrainerMons_Gianna[] = { - 1, - 2, - 30, - 32, - 41, + FALLARBOR_TENT_MON_LINOONE_1, + FALLARBOR_TENT_MON_PLUSLE, + FALLARBOR_TENT_MON_BARBOACH, + FALLARBOR_TENT_MON_MARILL, + FALLARBOR_TENT_MON_KIRLIA, -1 }; const u16 gFallarborBattleTentTrainerMons_Yahir[] = { - 4, - 8, - 15, - 17, - 22, - 24, + FALLARBOR_TENT_MON_KECLEON, + FALLARBOR_TENT_MON_MACHOKE, + FALLARBOR_TENT_MON_NINJASK_2, + FALLARBOR_TENT_MON_ARON_2, + FALLARBOR_TENT_MON_LOUDRED, + FALLARBOR_TENT_MON_MIGHTYENA, -1 }; const u16 gFallarborBattleTentTrainerMons_Britney[] = { - 4, - 7, - 14, - 20, - 23, - 43, + FALLARBOR_TENT_MON_KECLEON, + FALLARBOR_TENT_MON_MAKUHITA, + FALLARBOR_TENT_MON_NINJASK_1, + FALLARBOR_TENT_MON_VOLTORB, + FALLARBOR_TENT_MON_LINOONE_2, + FALLARBOR_TENT_MON_NUZLEAF, -1 }; const u16 gFallarborBattleTentTrainerMons_Hecter[] = { - 0, - 1, - 2, - 5, - 9, - 35, + FALLARBOR_TENT_MON_NUMEL, + FALLARBOR_TENT_MON_LINOONE_1, + FALLARBOR_TENT_MON_PLUSLE, + FALLARBOR_TENT_MON_MAGIKARP, + FALLARBOR_TENT_MON_NINCADA, + FALLARBOR_TENT_MON_TRAPINCH, -1 }; const u16 gFallarborBattleTentTrainerMons_Tannor[] = { - 5, - 30, - 31, - 33, - 34, + FALLARBOR_TENT_MON_MAGIKARP, + FALLARBOR_TENT_MON_BARBOACH, + FALLARBOR_TENT_MON_WAILMER, + FALLARBOR_TENT_MON_GOLDEEN_1, + FALLARBOR_TENT_MON_GOLDEEN_2, -1 }; const u16 gFallarborBattleTentTrainerMons_Benji[] = { - 25, - 26, - 27, - 28, - 29, + FALLARBOR_TENT_MON_SWABLU, + FALLARBOR_TENT_MON_SKARMORY, + FALLARBOR_TENT_MON_GOLBAT, + FALLARBOR_TENT_MON_WINGULL, + FALLARBOR_TENT_MON_PELIPPER, -1 }; const u16 gFallarborBattleTentTrainerMons_Rory[] = { - 9, - 11, - 14, - 15, - 27, - 39, + FALLARBOR_TENT_MON_NINCADA, + FALLARBOR_TENT_MON_DUSTOX, + FALLARBOR_TENT_MON_NINJASK_1, + FALLARBOR_TENT_MON_NINJASK_2, + FALLARBOR_TENT_MON_GOLBAT, + FALLARBOR_TENT_MON_SWALOT, -1 }; const u16 gFallarborBattleTentTrainerMons_Eleanor[] = { - 23, - 28, - 31, - 36, - 38, - 42, - 44, + FALLARBOR_TENT_MON_LINOONE_2, + FALLARBOR_TENT_MON_WINGULL, + FALLARBOR_TENT_MON_WAILMER, + FALLARBOR_TENT_MON_BALTOY, + FALLARBOR_TENT_MON_SANDSHREW, + FALLARBOR_TENT_MON_LOMBRE, + FALLARBOR_TENT_MON_CACNEA, -1 }; const u16 gFallarborBattleTentTrainerMons_Evelyn[] = { - 29, - 31, - 32, - 33, - 34, + FALLARBOR_TENT_MON_PELIPPER, + FALLARBOR_TENT_MON_WAILMER, + FALLARBOR_TENT_MON_MARILL, + FALLARBOR_TENT_MON_GOLDEEN_1, + FALLARBOR_TENT_MON_GOLDEEN_2, -1 }; const u16 gFallarborBattleTentTrainerMons_Arielle[] = { - 1, - 3, - 38, - 39, - 41, + FALLARBOR_TENT_MON_LINOONE_1, + FALLARBOR_TENT_MON_POOCHYENA, + FALLARBOR_TENT_MON_SANDSHREW, + FALLARBOR_TENT_MON_SWALOT, + FALLARBOR_TENT_MON_KIRLIA, -1 }; const u16 gFallarborBattleTentTrainerMons_Connar[] = { - 7, - 8, - 28, - 29, - 31, - 32, + FALLARBOR_TENT_MON_MAKUHITA, + FALLARBOR_TENT_MON_MACHOKE, + FALLARBOR_TENT_MON_WINGULL, + FALLARBOR_TENT_MON_PELIPPER, + FALLARBOR_TENT_MON_WAILMER, + FALLARBOR_TENT_MON_MARILL, -1 }; const u16 gFallarborBattleTentTrainerMons_Maurice[] = { - 4, - 5, - 6, - 12, - 13, + FALLARBOR_TENT_MON_KECLEON, + FALLARBOR_TENT_MON_MAGIKARP, + FALLARBOR_TENT_MON_SOLROCK, + FALLARBOR_TENT_MON_ILLUMISE, + FALLARBOR_TENT_MON_VOLBEAT, -1 }; const u16 gFallarborBattleTentTrainerMons_Kianna[] = { - 22, - 24, - 26, - 27, - 34, - 37, + FALLARBOR_TENT_MON_LOUDRED, + FALLARBOR_TENT_MON_MIGHTYENA, + FALLARBOR_TENT_MON_SKARMORY, + FALLARBOR_TENT_MON_GOLBAT, + FALLARBOR_TENT_MON_GOLDEEN_2, + FALLARBOR_TENT_MON_GRAVELER, -1 }; -const struct BattleFrontierTrainer gFallarborBattleTentTrainers[] = +const struct BattleFrontierTrainer gFallarborBattleTentTrainers[NUM_BATTLE_TENT_TRAINERS] = { - [0] = { + [FALLARBOR_TENT_TRAINER_AMBER] = { .facilityClass = FACILITY_CLASS_AROMA_LADY, .trainerName = _("AMBER"), .speechBefore = {EC_WORD_I, EC_WORD_HAVE, EC_WORD_TO, EC_WORD_DIET, EC_WORD_EVERY, EC_WORD_DAY}, .speechWin = {EC_WORD_A, EC_MOVE(NIGHTMARE), EC_WORD_OF, EC_WORD_SWEETS, EC_WORD_SHOCKED, EC_WORD_ME}, .speechLose = {EC_WORD_IF, EC_WORD_YOU, EC_WORD_GIVE_UP, EC_WORD_YOU, EC_WORD_WILL, EC_WORD_LOSE}, - .monSets = gFallarborBattleTentTrainerMons_Amber + .monSet = gFallarborBattleTentTrainerMons_Amber }, - [1] = { + [FALLARBOR_TENT_TRAINER_JAVIER] = { .facilityClass = FACILITY_CLASS_RUIN_MANIAC, .trainerName = _("JAVIER"), .speechBefore = {EC_WORD_I, EC_WORD_NEVER, EC_WORD_EVER, EC_WORD_HAVE, EC_WORD_ENOUGH, EC_WORD_MONEY}, .speechWin = {EC_WORD_I, EC_WORD_WON, EC_WORD_BUT, EC_WORD_I, EC_WORD_NEED, EC_WORD_MONEY}, .speechLose = {EC_WORD_I, EC_WORD_NEED, EC_WORD_MONEY, EC_WORD_FOR, EC_WORD_A, EC_WORD_BIKE}, - .monSets = gFallarborBattleTentTrainerMons_Javier + .monSet = gFallarborBattleTentTrainerMons_Javier }, - [2] = { + [FALLARBOR_TENT_TRAINER_NATALIA] = { .facilityClass = FACILITY_CLASS_TUBER_F, .trainerName = _("NATALIE"), .speechBefore = {EC_WORD_THE, EC_WORD_WAY, EC_WORD_I, EC_WORD_BATTLE, EC_WORD_IS, EC_WORD_WEIRD}, .speechWin = {EC_WORD_YOU_RE, EC_WORD_MUCH, EC_WORD_TOO_WEAK, EC_WORD_FOR, EC_WORD_THIS, EC_WORD_PLACE}, .speechLose = {EC_WORD_GIVE_ME, EC_WORD_AN, EC_WORD_EASY, EC_WORD_MATCH, EC_WORD_NEXT, EC_WORD_TIME}, - .monSets = gFallarborBattleTentTrainerMons_Natalie + .monSet = gFallarborBattleTentTrainerMons_Natalie }, - [3] = { + [FALLARBOR_TENT_TRAINER_TREVE] = { .facilityClass = FACILITY_CLASS_TUBER_M, .trainerName = _("TREVE"), .speechBefore = {EC_WORD_LOOK, EC_WORD_AT, EC_WORD_MY, EC_MOVE2(METRONOME), EC_WORD_AND, EC_WORD_SLEEP}, .speechWin = {EC_WORD_YEAH, EC_WORD_EXCL, EC_MOVE(HYPNOSIS), EC_WORD_IS, EC_WORD_TOTALLY, EC_WORD_GREAT}, .speechLose = {EC_WORD_MY, EC_MOVE(HYPNOSIS), EC_WORD_DIDN_T, EC_WORD_WORK, EC_WORD_ELLIPSIS, -1}, - .monSets = gFallarborBattleTentTrainerMons_Treve + .monSet = gFallarborBattleTentTrainerMons_Treve }, - [4] = { + [FALLARBOR_TENT_TRAINER_ARIANNA] = { .facilityClass = FACILITY_CLASS_LADY, .trainerName = _("ARIANNA"), .speechBefore = {EC_WORD_IF_I_WIN, EC_WORD_GIVE_ME, EC_WORD_POKEMON, EC_WORD_FOR, EC_WORD_MY, EC_WORD_COLLECTION}, .speechWin = {EC_WORD_YOUR, EC_WORD_POKEMON, EC_WORD_ARE, EC_WORD_TOO_WEAK, EC_WORD_TO, EC_WORD_COLLECT}, .speechLose = {EC_WORD_YOUR, EC_WORD_POKEMON, EC_WORD_ARE, EC_WORD_SOMETHING, EC_WORD_ELSE, EC_WORD_ELLIPSIS}, - .monSets = gFallarborBattleTentTrainerMons_Arianna + .monSet = gFallarborBattleTentTrainerMons_Arianna }, - [5] = { + [FALLARBOR_TENT_TRAINER_JADYN] = { .facilityClass = FACILITY_CLASS_BEAUTY, .trainerName = _("JADYN"), .speechBefore = {EC_WORD_MY, EC_WORD_NAME, EC_WORD_IS, EC_WORD_REALLY, EC_WORD_A, EC_WORD_MYSTERY}, .speechWin = {EC_WORD_MY, EC_WORD_NAME, EC_WORD_GOES, EC_WORD_ON, EC_WORD_A, EC_WORD_MYSTERY}, .speechLose = {EC_WORD_MY, EC_WORD_NAME, EC_WORD_QUES, EC_WORD_I_AM, EC_WORD_YOUR, EC_WORD_MOTHER}, - .monSets = gFallarborBattleTentTrainerMons_Jadyn + .monSet = gFallarborBattleTentTrainerMons_Jadyn }, - [6] = { + [FALLARBOR_TENT_TRAINER_GERARDO] = { .facilityClass = FACILITY_CLASS_RICH_BOY, .trainerName = _("GERARDO"), .speechBefore = {EC_WORD_I_AM, EC_WORD_THE, EC_WORD_BEST, EC_WORD_HERO, EC_WORD_EVER, EC_WORD_EXCL}, .speechWin = {EC_WORD_SEE, EC_WORD_WHAT, EC_WORD_I, EC_WORD_MEAN, EC_WORD_QUES, -1}, .speechLose = {EC_WORD_HUH_QUES, EC_WORD_YOU, EC_WORD_WERE, EC_WORD_RIGHT, EC_WORD_QUES, -1}, - .monSets = gFallarborBattleTentTrainerMons_Gerardo + .monSet = gFallarborBattleTentTrainerMons_Gerardo }, - [7] = { + [FALLARBOR_TENT_TRAINER_JONN] = { .facilityClass = FACILITY_CLASS_POKEMANIAC, .trainerName = _("JONN"), .speechBefore = {EC_WORD_THE, EC_WORD_WORLD, EC_MOVE2(SUPERPOWER), EC_MOVE2(STOMP), EC_WORD_CONTEST, EC_WORD_EXCL_EXCL}, .speechWin = {EC_WORD_I_AM, EC_WORD_NO_1, EC_WORD_EXCL_EXCL, EC_WORD_HEAR, EC_WORD_ME, EC_MOVE2(ROAR)}, .speechLose = {EC_WORD_I, EC_WORD_GIVE_UP, EC_WORD_EXCL, EC_WORD_YOU_RE, EC_WORD_NO_1, EC_WORD_EXCL}, - .monSets = gFallarborBattleTentTrainerMons_Jonn + .monSet = gFallarborBattleTentTrainerMons_Jonn }, - [8] = { + [FALLARBOR_TENT_TRAINER_ESTEBAN] = { .facilityClass = FACILITY_CLASS_SWIMMER_M, .trainerName = _("ESTEBAN"), .speechBefore = {EC_WORD_YOU_RE, EC_WORD_A, EC_WORD_GOOD, EC_WORD_TRAINER, EC_WORD_QUES, EC_WORD_UNBELIEVABLE}, .speechWin = {EC_WORD_YOU_RE, EC_WORD_SOME, EC_WORD_PUSHOVER, EC_WORD_OF, EC_WORD_A, EC_WORD_TRAINER}, .speechLose = {EC_WORD_YOU_RE, EC_WORD_MUCH, EC_WORD_TOO, EC_WORD_MUCH, EC_WORD_FOR, EC_WORD_ME}, - .monSets = gFallarborBattleTentTrainerMons_Esteban + .monSet = gFallarborBattleTentTrainerMons_Esteban }, - [9] = { + [FALLARBOR_TENT_TRAINER_JAMESON] = { .facilityClass = FACILITY_CLASS_CAMPER, .trainerName = _("JAMESON"), .speechBefore = {EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_ARE, EC_WORD_SILKY, EC_WORD_SMOOTH, EC_WORD_EXCL}, .speechWin = {EC_WORD_MY, EC_WORD_SILKY, EC_WORD_SMOOTH, EC_WORD_POKEMON, EC_WORD_RULE, EC_WORD_EXCL}, .speechLose = {EC_WORD_MY, EC_WORD_POKEMON, EC_MOVE2(STRUGGLE), EC_WORD_IN, EC_WORD_YOUR, EC_WORD_STICKY_HOLD}, - .monSets = gFallarborBattleTentTrainerMons_Jameson + .monSet = gFallarborBattleTentTrainerMons_Jameson }, - [10] = { + [FALLARBOR_TENT_TRAINER_ALANZO] = { .facilityClass = FACILITY_CLASS_BUG_MANIAC, .trainerName = _("ALANZO"), .speechBefore = {EC_MOVE2(FORESIGHT), EC_WORD_IS, EC_WORD_A, EC_WORD_POWER, EC_WORD_I, EC_WORD_HAVE}, .speechWin = {EC_WORD_YOU_RE, EC_WORD_OBLIVIOUS, EC_WORD_ABOUT, EC_MOVE2(FORESIGHT), EC_WORD_EXCL, -1}, .speechLose = {EC_WORD_MY, EC_MOVE2(FORESIGHT), EC_WORD_IS, EC_WORD_ALWAYS, EC_WORD_RIGHT, EC_WORD_EXCL}, - .monSets = gFallarborBattleTentTrainerMons_Alanzo + .monSet = gFallarborBattleTentTrainerMons_Alanzo }, - [11] = { + [FALLARBOR_TENT_TRAINER_HOWARD] = { .facilityClass = FACILITY_CLASS_GENTLEMAN, .trainerName = _("HOWARD"), .speechBefore = {EC_WORD_YOUR, EC_WORD_POKEMON, EC_WORD_CAN_T, EC_WORD_BEAT, EC_WORD_ME, -1}, .speechWin = {EC_WORD_YOU, EC_WORD_COULDN_T, EC_WORD_WIN, EC_WORD_COULD, EC_WORD_YOU, EC_WORD_QUES}, .speechLose = {EC_WORD_YOU, EC_WORD_WOULD, EC_WORD_GO, EC_WORD_ALL, EC_WORD_OUT, EC_WORD_ELLIPSIS}, - .monSets = gFallarborBattleTentTrainerMons_Howard + .monSet = gFallarborBattleTentTrainerMons_Howard }, - [12] = { + [FALLARBOR_TENT_TRAINER_CONRAD] = { .facilityClass = FACILITY_CLASS_GUITARIST, .trainerName = _("CONRAD"), .speechBefore = {EC_WORD_YOUR, EC_WORD_POKEMON, EC_WORD_ARE, EC_WORD_PRETTY, EC_WORD_WILD, EC_WORD_EXCL}, .speechWin = {EC_WORD_WHOAH, EC_WORD_EXCL_EXCL, -1, EC_WORD_LET_S, EC_WORD_DANCE, EC_WORD_EXCL}, .speechLose = {EC_WORD_MY, EC_WORD_MUSIC, EC_WORD_WILL, EC_WORD_PLAY, EC_WORD_ON, EC_WORD_ELLIPSIS}, - .monSets = gFallarborBattleTentTrainerMons_Conrad + .monSet = gFallarborBattleTentTrainerMons_Conrad }, - [13] = { + [FALLARBOR_TENT_TRAINER_MAKENNA] = { .facilityClass = FACILITY_CLASS_SCHOOL_KID_F, .trainerName = _("MAKENNA"), .speechBefore = {EC_WORD_SHOW, EC_WORD_ME, EC_WORD_THAT, EC_WORD_YOU, EC_WORD_MEAN, EC_WORD_IT}, .speechWin = {EC_WORD_THAT_S, EC_WORD_WHY, EC_WORD_I, EC_WORD_STUDY, EC_WORD_EVERY, EC_WORD_DAY}, .speechLose = {EC_WORD_AWW, EC_WORD_I, EC_WORD_STUDY, EC_WORD_EVERY, EC_WORD_DAY, EC_WORD_TOO}, - .monSets = gFallarborBattleTentTrainerMons_Makenna + .monSet = gFallarborBattleTentTrainerMons_Makenna }, - [14] = { + [FALLARBOR_TENT_TRAINER_BRAYAN] = { .facilityClass = FACILITY_CLASS_COOLTRAINER_M, .trainerName = _("BRAYAN"), .speechBefore = {EC_WORD_CAN, EC_WORD_YOU, EC_WORD_SEE, EC_WORD_MY, EC_WORD_POWER, EC_WORD_QUES}, .speechWin = {EC_WORD_HOW, EC_WORD_BORING, EC_WORD_ELLIPSIS, EC_WORD_THIS, EC_WORD_IS, EC_WORD_GOOD_BYE}, .speechLose = {EC_WORD_AM, EC_WORD_I, EC_WORD_THE, EC_WORD_WEAK, EC_WORD_TRAINER, EC_WORD_QUES}, - .monSets = gFallarborBattleTentTrainerMons_Brayan + .monSet = gFallarborBattleTentTrainerMons_Brayan }, - [15] = { + [FALLARBOR_TENT_TRAINER_MARIANA] = { .facilityClass = FACILITY_CLASS_COOLTRAINER_F, .trainerName = _("MARIANA"), .speechBefore = {EC_WORD_A, EC_WORD_LIE, EC_WORD_CAN, EC_WORD_BE, EC_WORD_KIND, EC_WORD_ELLIPSIS}, .speechWin = {EC_WORD_THIS, EC_WORD_IS, EC_WORD_LIKE, EC_WORD_THE, EC_WORD_SUNDAY, EC_WORD_COMICS}, .speechLose = {EC_WORD_THIS, EC_WORD_IS, EC_WORD_LIKE, EC_WORD_FROM, EC_WORD_A, EC_WORD_MOVIE}, - .monSets = gFallarborBattleTentTrainerMons_Mariana + .monSet = gFallarborBattleTentTrainerMons_Mariana }, - [16] = { + [FALLARBOR_TENT_TRAINER_SHELDON] = { .facilityClass = FACILITY_CLASS_POKEFAN_M, .trainerName = _("SHELDON"), .speechBefore = {EC_WORD_A, EC_WORD_POKEMON, EC_WORD_TEACHER, EC_WORD_GETS, EC_WORD_NO, EC_MOVE2(REST)}, .speechWin = {EC_WORD_MY, EC_WORD_SMARTNESS, EC_WORD_GETS, EC_WORD_ME, EC_WORD_EASY, EC_WORD_WINS}, .speechLose = {EC_WORD_I, EC_WORD_HAVE, EC_WORD_TO, EC_WORD_GO, EC_WORD_WORK, EC_WORD_BYE_BYE}, - .monSets = gFallarborBattleTentTrainerMons_Sheldon + .monSet = gFallarborBattleTentTrainerMons_Sheldon }, - [17] = { + [FALLARBOR_TENT_TRAINER_GIANNA] = { .facilityClass = FACILITY_CLASS_POKEFAN_F, .trainerName = _("GIANNA"), .speechBefore = {EC_WORD_AHAHA, EC_WORD_YES, EC_WORD_EXCL, EC_WORD_LOVEY_DOVEY, EC_WORD_POKEMON, EC_WORD_WORLD}, .speechWin = {EC_WORD_MY, EC_WORD_SHINE, EC_WORD_IS, EC_WORD_MAKING, EC_WORD_THINGS, EC_WORD_BETTER}, .speechLose = {EC_WORD_DO, EC_WORD_YOU, EC_WORD_DISLIKE, EC_WORD_POKEMON, EC_WORD_QUES, -1}, - .monSets = gFallarborBattleTentTrainerMons_Gianna + .monSet = gFallarborBattleTentTrainerMons_Gianna }, - [18] = { + [FALLARBOR_TENT_TRAINER_YAHIR] = { .facilityClass = FACILITY_CLASS_EXPERT_M, .trainerName = _("YAHIR"), .speechBefore = {EC_WORD_YOU, EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, EC_WORD_COME_ON, EC_WORD_EXCL}, .speechWin = {EC_WORD_YOU, EC_WORD_NEED, EC_WORD_TO, EC_WORD_TRAIN, EC_WORD_A_LOT, EC_WORD_MORE}, .speechLose = {EC_WORD_NOT, EC_WORD_ENOUGH, EC_WORD_ELLIPSIS, EC_WORD_JUST, EC_WORD_NOT, EC_WORD_ENOUGH}, - .monSets = gFallarborBattleTentTrainerMons_Yahir + .monSet = gFallarborBattleTentTrainerMons_Yahir }, - [19] = { + [FALLARBOR_TENT_TRAINER_BRITNEY] = { .facilityClass = FACILITY_CLASS_EXPERT_F, .trainerName = _("BRITNEY"), .speechBefore = {EC_WORD_IT, EC_WORD_SEEMS, EC_WORD_THAT, EC_WORD_YOU_RE, EC_WORD_QUITE, EC_WORD_GOOD}, .speechWin = {EC_WORD_YOU_RE, EC_WORD_A, EC_WORD_LUKEWARM, EC_WORD_TALENT, EC_WORD_AT, EC_WORD_BEST}, .speechLose = {EC_WORD_YOU_RE, EC_WORD_A, EC_WORD_COOL, EC_WORD_HERO, EC_WORD_AT, EC_WORD_THIS}, - .monSets = gFallarborBattleTentTrainerMons_Britney + .monSet = gFallarborBattleTentTrainerMons_Britney }, - [20] = { + [FALLARBOR_TENT_TRAINER_HECTER] = { .facilityClass = FACILITY_CLASS_YOUNGSTER, .trainerName = _("HECTER"), .speechBefore = {EC_WORD_MY, EC_MOVE2(HIDDEN_POWER), EC_WORD_IS, EC_WORD_EXCITING, EC_WORD_ME, EC_WORD_EXCL}, .speechWin = {EC_WORD_YEEHAW_EXCL, EC_WORD_LET_S, EC_WORD_HAVE, EC_WORD_A, EC_MOVE2(HIDDEN_POWER), EC_WORD_PARTY}, .speechLose = {EC_WORD_WAAAH, EC_WORD_EXCL, EC_WORD_DON_T, EC_WORD_YOU, EC_MOVE2(MIMIC), EC_WORD_ME}, - .monSets = gFallarborBattleTentTrainerMons_Hecter + .monSet = gFallarborBattleTentTrainerMons_Hecter }, - [21] = { + [FALLARBOR_TENT_TRAINER_TANNOR] = { .facilityClass = FACILITY_CLASS_FISHERMAN, .trainerName = _("TANNOR"), .speechBefore = {EC_WORD_YOU, EC_WORD_HAVE, EC_WORD_GOT, EC_WORD_TO, EC_WORD_BE, EC_WORD_JOKING}, .speechWin = {EC_WORD_YOU_RE, EC_WORD_THE, EC_WORD_BEST, EC_WORD_AT, EC_WORD_BEING, EC_WORD_FUNNY}, .speechLose = {EC_WORD_YOU, EC_WORD_WEREN_T, EC_WORD_BEING, EC_WORD_FUNNY, EC_WORD_AT, EC_WORD_ALL}, - .monSets = gFallarborBattleTentTrainerMons_Tannor + .monSet = gFallarborBattleTentTrainerMons_Tannor }, - [22] = { + [FALLARBOR_TENT_TRAINER_BENJI] = { .facilityClass = FACILITY_CLASS_BIRD_KEEPER, .trainerName = _("BENJI"), .speechBefore = {EC_WORD_YOU, EC_WORD_DON_T, EC_WORD_THINK, EC_WORD_VERY, EC_WORD_FAST, EC_WORD_HUH_QUES}, .speechWin = {EC_WORD_SORRY, EC_WORD_EXCL, EC_WORD_I, EC_WORD_DIDN_T, EC_WORD_MEAN, EC_WORD_YOU}, .speechLose = {EC_WORD_YOU, EC_WORD_LEFT, EC_WORD_ME, EC_WORD_FEELING, EC_WORD_SAD, EC_WORD_ELLIPSIS}, - .monSets = gFallarborBattleTentTrainerMons_Benji + .monSet = gFallarborBattleTentTrainerMons_Benji }, - [23] = { + [FALLARBOR_TENT_TRAINER_RORY] = { .facilityClass = FACILITY_CLASS_NINJA_BOY, .trainerName = _("RORY"), .speechBefore = {EC_WORD_DON_T, EC_WORD_CAUSE, EC_WORD_AN, EC_MOVE(UPROAR), EC_WORD_YOU, EC_WORD_EXCL}, .speechWin = {EC_WORD_I, EC_WORD_DON_T, EC_WORD_NEED, EC_WORD_AN, EC_MOVE(UPROAR), EC_WORD_EXCL}, .speechLose = {EC_WORD_I_AM, EC_WORD_GOING, EC_WORD_TO, EC_WORD_CAUSE, EC_WORD_AN, EC_MOVE(UPROAR)}, - .monSets = gFallarborBattleTentTrainerMons_Rory + .monSet = gFallarborBattleTentTrainerMons_Rory }, - [24] = { + [FALLARBOR_TENT_TRAINER_ELEANOR] = { .facilityClass = FACILITY_CLASS_PARASOL_LADY, .trainerName = _("ELEANOR"), .speechBefore = {EC_WORD_I, EC_WORD_REALLY, EC_WORD_WANT, EC_WORD_TO, EC_WORD_PARTY, -1}, .speechWin = {EC_WORD_A, EC_WORD_TRENDY, EC_WORD_PARTY, EC_WORD_WOULD, EC_WORD_BE, EC_WORD_REFRESHING}, .speechLose = {EC_WORD_DON_T, EC_WORD_YOU, EC_WORD_LIKE, EC_WORD_TO, EC_WORD_PARTY, EC_WORD_QUES}, - .monSets = gFallarborBattleTentTrainerMons_Eleanor + .monSet = gFallarborBattleTentTrainerMons_Eleanor }, - [25] = { + [FALLARBOR_TENT_TRAINER_EVELYN] = { .facilityClass = FACILITY_CLASS_SWIMMER_F, .trainerName = _("EVELYN"), .speechBefore = {EC_WORD_MY, EC_WORD_PC, EC_WORD_IS, EC_WORD_MY, EC_WORD_SECRET_BASE, EC_WORD_EXCL}, .speechWin = {EC_WORD_IT_S, EC_WORD_ALL, EC_WORD_SECRET, EC_WORD_ON, EC_WORD_MY, EC_WORD_PC}, .speechLose = {EC_WORD_NO, EC_WORD_EXCL, -1, EC_WORD_I, EC_WORD_REJECT, EC_WORD_THIS}, - .monSets = gFallarborBattleTentTrainerMons_Evelyn + .monSet = gFallarborBattleTentTrainerMons_Evelyn }, - [26] = { + [FALLARBOR_TENT_TRAINER_ARIELLE] = { .facilityClass = FACILITY_CLASS_PICNICKER, .trainerName = _("ARIELLE"), .speechBefore = {EC_WORD_IT_S, EC_WORD_NOT_VERY, EC_WORD_PRETTY, EC_WORD_BUT, EC_WORD_I, EC_WORD_TRY}, .speechWin = {EC_WORD_WE_RE, EC_WORD_NOT_VERY, EC_WORD_PRETTY, EC_WORD_BUT, EC_WORD_WE_RE, EC_WORD_GREAT}, .speechLose = {EC_WORD_THAT_WAS, EC_WORD_PRETTY, EC_WORD_MEAN, EC_WORD_OF, EC_WORD_YOU, EC_WORD_EXCL}, - .monSets = gFallarborBattleTentTrainerMons_Arielle + .monSet = gFallarborBattleTentTrainerMons_Arielle }, - [27] = { + [FALLARBOR_TENT_TRAINER_CONNAR] = { .facilityClass = FACILITY_CLASS_SAILOR, .trainerName = _("CONNAR"), .speechBefore = {EC_WORD_I_AM, EC_WORD_NOT, EC_WORD_STRONG, EC_WORD_ENOUGH, EC_WORD_FOR, EC_WORD_THIS}, .speechWin = {EC_WORD_DO, EC_WORD_YOU, EC_WORD_THINK, EC_WORD_YOU_RE, EC_WORD_OK_QUES, -1}, .speechLose = {EC_WORD_GOOD_BYE, EC_WORD_AND, EC_WORD_THANK_YOU, -1, -1, -1}, - .monSets = gFallarborBattleTentTrainerMons_Connar + .monSet = gFallarborBattleTentTrainerMons_Connar }, - [28] = { + [FALLARBOR_TENT_TRAINER_MAURICE] = { .facilityClass = FACILITY_CLASS_COLLECTOR, .trainerName = _("MAURICE"), .speechBefore = {EC_WORD_THERE, EC_WORD_IS, EC_WORD_NO, EC_WORD_RADIO, EC_WORD_OR, EC_WORD_TELEVISION}, .speechWin = {EC_WORD_BUT, EC_WORD_THERE, EC_WORD_IS, EC_WORD_A_LOT, EC_WORD_OF, EC_WORD_POKEMON}, .speechLose = {EC_WORD_I, EC_WORD_CAN_T, EC_WORD_ENJOY, EC_WORD_MYSELF, EC_WORD_WITHOUT, EC_WORD_MONEY}, - .monSets = gFallarborBattleTentTrainerMons_Maurice + .monSet = gFallarborBattleTentTrainerMons_Maurice }, - [29] = { + [FALLARBOR_TENT_TRAINER_KIANNA] = { .facilityClass = FACILITY_CLASS_LASS, .trainerName = _("KIANNA"), .speechBefore = {EC_WORD_I, EC_WORD_WANT, EC_WORD_TO, EC_WORD_GO, EC_WORD_DEPT_STORE, EC_WORD_SHOPPING}, .speechWin = {EC_WORD_I, EC_WORD_DISLIKE, EC_WORD_SHOPPING, EC_WORD_ALONE, -1, -1}, .speechLose = {EC_WORD_WANT, EC_WORD_TO, EC_WORD_GO, EC_WORD_SHOPPING, EC_WORD_TOGETHER, EC_WORD_QUES}, - .monSets = gFallarborBattleTentTrainerMons_Kianna + .monSet = gFallarborBattleTentTrainerMons_Kianna } }; -const struct FacilityMon gFallarborBattleTentMons[] = +const struct FacilityMon gFallarborBattleTentMons[NUM_FALLARBOR_TENT_MONS] = { - [0] = { + [FALLARBOR_TENT_MON_NUMEL] = { .species = SPECIES_NUMEL, .moves = {MOVE_GROWL, MOVE_FLAMETHROWER, MOVE_TACKLE, MOVE_SUNNY_DAY}, .itemTableId = BATTLE_FRONTIER_ITEM_CHARCOAL, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIET }, - [1] = { + [FALLARBOR_TENT_MON_LINOONE_1] = { .species = SPECIES_LINOONE, .moves = {MOVE_ODOR_SLEUTH, MOVE_COVET, MOVE_ROCK_SMASH, MOVE_CHARM}, .itemTableId = BATTLE_FRONTIER_ITEM_SILK_SCARF, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_SASSY }, - [2] = { + [FALLARBOR_TENT_MON_PLUSLE] = { .species = SPECIES_PLUSLE, .moves = {MOVE_SPARK, MOVE_GROWL, MOVE_QUICK_ATTACK, MOVE_FAKE_TEARS}, .itemTableId = BATTLE_FRONTIER_ITEM_MENTAL_HERB, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [3] = { + [FALLARBOR_TENT_MON_POOCHYENA] = { .species = SPECIES_POOCHYENA, .moves = {MOVE_YAWN, MOVE_ODOR_SLEUTH, MOVE_HOWL, MOVE_FRUSTRATION}, .itemTableId = BATTLE_FRONTIER_ITEM_LEPPA_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_NAUGHTY }, - [4] = { + [FALLARBOR_TENT_MON_KECLEON] = { .species = SPECIES_KECLEON, .moves = {MOVE_LICK, MOVE_SLASH, MOVE_FAINT_ATTACK, MOVE_PSYBEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_WIKI_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_MODEST }, - [5] = { + [FALLARBOR_TENT_MON_MAGIKARP] = { .species = SPECIES_MAGIKARP, .moves = {MOVE_SPLASH, MOVE_TACKLE, MOVE_FLAIL, MOVE_NONE}, .itemTableId = BATTLE_FRONTIER_ITEM_DRAGON_SCALE, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [6] = { + [FALLARBOR_TENT_MON_SOLROCK] = { .species = SPECIES_SOLROCK, .moves = {MOVE_ROCK_THROW, MOVE_FLASH, MOVE_SANDSTORM, MOVE_PSYWAVE}, .itemTableId = BATTLE_FRONTIER_ITEM_HARD_STONE, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_SASSY }, - [7] = { + [FALLARBOR_TENT_MON_MAKUHITA] = { .species = SPECIES_MAKUHITA, .moves = {MOVE_DETECT, MOVE_ARM_THRUST, MOVE_FAKE_OUT, MOVE_SMELLING_SALT}, .itemTableId = BATTLE_FRONTIER_ITEM_BLACK_BELT, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [8] = { + [FALLARBOR_TENT_MON_MACHOKE] = { .species = SPECIES_MACHOKE, .moves = {MOVE_COUNTER, MOVE_REVENGE, MOVE_BULK_UP, MOVE_FOCUS_ENERGY}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_NAIVE }, - [9] = { + [FALLARBOR_TENT_MON_NINCADA] = { .species = SPECIES_NINCADA, .moves = {MOVE_FURY_SWIPES, MOVE_ENDURE, MOVE_MUD_SLAP, MOVE_DIG}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_SERIOUS }, - [10] = { + [FALLARBOR_TENT_MON_BEAUTIFLY] = { .species = SPECIES_BEAUTIFLY, .moves = {MOVE_FLASH, MOVE_MORNING_SUN, MOVE_HARDEN, MOVE_MEGA_DRAIN}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_QUIRKY }, - [11] = { + [FALLARBOR_TENT_MON_DUSTOX] = { .species = SPECIES_DUSTOX, .moves = {MOVE_MOONLIGHT, MOVE_HARDEN, MOVE_POISON_STING, MOVE_PSYBEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE, .nature = NATURE_DOCILE }, - [12] = { + [FALLARBOR_TENT_MON_ILLUMISE] = { .species = SPECIES_ILLUMISE, .moves = {MOVE_METRONOME, MOVE_FLATTER, MOVE_WISH, MOVE_ATTRACT}, .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [13] = { + [FALLARBOR_TENT_MON_VOLBEAT] = { .species = SPECIES_VOLBEAT, .moves = {MOVE_TACKLE, MOVE_MOONLIGHT, MOVE_SIGNAL_BEAM, MOVE_TAIL_GLOW}, .itemTableId = BATTLE_FRONTIER_ITEM_LEPPA_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [14] = { + [FALLARBOR_TENT_MON_NINJASK_1] = { .species = SPECIES_NINJASK, .moves = {MOVE_DOUBLE_TEAM, MOVE_PROTECT, MOVE_DIG, MOVE_SAND_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_TIMID }, - [15] = { + [FALLARBOR_TENT_MON_NINJASK_2] = { .species = SPECIES_NINJASK, .moves = {MOVE_SWORDS_DANCE, MOVE_CUT, MOVE_FURY_CUTTER, MOVE_LEECH_LIFE}, .itemTableId = BATTLE_FRONTIER_ITEM_SILVER_POWDER, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [16] = { + [FALLARBOR_TENT_MON_ARON_1] = { .species = SPECIES_ARON, .moves = {MOVE_METAL_CLAW, MOVE_PROTECT, MOVE_SHOCK_WAVE, MOVE_METAL_SOUND}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_LONELY }, - [17] = { + [FALLARBOR_TENT_MON_ARON_2] = { .species = SPECIES_ARON, .moves = {MOVE_SECRET_POWER, MOVE_METAL_CLAW, MOVE_IRON_DEFENSE, MOVE_MUD_SLAP}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_GENTLE }, - [18] = { + [FALLARBOR_TENT_MON_ELECTRIKE] = { .species = SPECIES_ELECTRIKE, .moves = {MOVE_CRUNCH, MOVE_THUNDER_WAVE, MOVE_HOWL, MOVE_QUICK_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_SEA_INCENSE, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_HASTY }, - [19] = { + [FALLARBOR_TENT_MON_MAGNEMITE] = { .species = SPECIES_MAGNEMITE, .moves = {MOVE_THUNDER_WAVE, MOVE_SUPERSONIC, MOVE_ENDURE, MOVE_SPARK}, .itemTableId = BATTLE_FRONTIER_ITEM_MAGNET, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIET }, - [20] = { + [FALLARBOR_TENT_MON_VOLTORB] = { .species = SPECIES_VOLTORB, .moves = {MOVE_CHARGE, MOVE_SPARK, MOVE_SCREECH, MOVE_SONIC_BOOM}, .itemTableId = BATTLE_FRONTIER_ITEM_ASPEAR_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [21] = { + [FALLARBOR_TENT_MON_WHISMUR] = { .species = SPECIES_WHISMUR, .moves = {MOVE_REST, MOVE_SLEEP_TALK, MOVE_HYPER_VOICE, MOVE_ATTRACT}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [22] = { + [FALLARBOR_TENT_MON_LOUDRED] = { .species = SPECIES_LOUDRED, .moves = {MOVE_STOMP, MOVE_REST, MOVE_SCREECH, MOVE_UPROAR}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [23] = { + [FALLARBOR_TENT_MON_LINOONE_2] = { .species = SPECIES_LINOONE, .moves = {MOVE_FURY_SWIPES, MOVE_SAND_ATTACK, MOVE_SHOCK_WAVE, MOVE_GROWL}, .itemTableId = BATTLE_FRONTIER_ITEM_MAGNET, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [24] = { + [FALLARBOR_TENT_MON_MIGHTYENA] = { .species = SPECIES_MIGHTYENA, .moves = {MOVE_SAND_ATTACK, MOVE_HOWL, MOVE_SWAGGER, MOVE_SECRET_POWER}, .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_JOLLY }, - [25] = { + [FALLARBOR_TENT_MON_SWABLU] = { .species = SPECIES_SWABLU, .moves = {MOVE_TAKE_DOWN, MOVE_SING, MOVE_GROWL, MOVE_SAFEGUARD}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [26] = { + [FALLARBOR_TENT_MON_SKARMORY] = { .species = SPECIES_SKARMORY, .moves = {MOVE_AGILITY, MOVE_STEEL_WING, MOVE_SAND_ATTACK, MOVE_TORMENT}, .itemTableId = BATTLE_FRONTIER_ITEM_METAL_COAT, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_BOLD }, - [27] = { + [FALLARBOR_TENT_MON_GOLBAT] = { .species = SPECIES_GOLBAT, .moves = {MOVE_CONFUSE_RAY, MOVE_BITE, MOVE_DOUBLE_TEAM, MOVE_SUBSTITUTE}, .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_BOLD }, - [28] = { + [FALLARBOR_TENT_MON_WINGULL] = { .species = SPECIES_WINGULL, .moves = {MOVE_WING_ATTACK, MOVE_HAIL, MOVE_DOUBLE_TEAM, MOVE_SUPERSONIC}, .itemTableId = BATTLE_FRONTIER_ITEM_RAWST_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [29] = { + [FALLARBOR_TENT_MON_PELIPPER] = { .species = SPECIES_PELIPPER, .moves = {MOVE_TWISTER, MOVE_ICY_WIND, MOVE_DOUBLE_TEAM, MOVE_WATER_GUN}, .itemTableId = BATTLE_FRONTIER_ITEM_DRAGON_FANG, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [30] = { + [FALLARBOR_TENT_MON_BARBOACH] = { .species = SPECIES_BARBOACH, .moves = {MOVE_SPARK, MOVE_WATER_GUN, MOVE_EARTHQUAKE, MOVE_WATER_SPORT}, .itemTableId = BATTLE_FRONTIER_ITEM_LIECHI_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [31] = { + [FALLARBOR_TENT_MON_WAILMER] = { .species = SPECIES_WAILMER, .moves = {MOVE_WATER_PULSE, MOVE_RAIN_DANCE, MOVE_SPLASH, MOVE_CURSE}, .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_QUIET }, - [32] = { + [FALLARBOR_TENT_MON_MARILL] = { .species = SPECIES_MARILL, .moves = {MOVE_DEFENSE_CURL, MOVE_ROLLOUT, MOVE_BUBBLE_BEAM, MOVE_ATTRACT}, .itemTableId = BATTLE_FRONTIER_ITEM_HARD_STONE, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [33] = { + [FALLARBOR_TENT_MON_GOLDEEN_1] = { .species = SPECIES_GOLDEEN, .moves = {MOVE_WATERFALL, MOVE_RAIN_DANCE, MOVE_FLAIL, MOVE_PROTECT}, .itemTableId = BATTLE_FRONTIER_ITEM_GANLON_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_HASTY }, - [34] = { + [FALLARBOR_TENT_MON_GOLDEEN_2] = { .species = SPECIES_GOLDEEN, .moves = {MOVE_SLEEP_TALK, MOVE_HORN_DRILL, MOVE_REST, MOVE_SUPERSONIC}, .itemTableId = BATTLE_FRONTIER_ITEM_MENTAL_HERB, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_CAREFUL }, - [35] = { + [FALLARBOR_TENT_MON_TRAPINCH] = { .species = SPECIES_TRAPINCH, .moves = {MOVE_RETURN, MOVE_SAND_ATTACK, MOVE_ATTRACT, MOVE_STRENGTH}, .itemTableId = BATTLE_FRONTIER_ITEM_MAGO_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [36] = { + [FALLARBOR_TENT_MON_BALTOY] = { .species = SPECIES_BALTOY, .moves = {MOVE_SELF_DESTRUCT, MOVE_SANDSTORM, MOVE_RAPID_SPIN, MOVE_MIMIC}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_JOLLY }, - [37] = { + [FALLARBOR_TENT_MON_GRAVELER] = { .species = SPECIES_GRAVELER, .moves = {MOVE_ROCK_BLAST, MOVE_DEFENSE_CURL, MOVE_MAGNITUDE, MOVE_MUD_SPORT}, .itemTableId = BATTLE_FRONTIER_ITEM_HARD_STONE, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [38] = { + [FALLARBOR_TENT_MON_SANDSHREW] = { .species = SPECIES_SANDSHREW, .moves = {MOVE_SAND_TOMB, MOVE_SANDSTORM, MOVE_DOUBLE_TEAM, MOVE_FOCUS_PUNCH}, .itemTableId = BATTLE_FRONTIER_ITEM_SOFT_SAND, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_JOLLY }, - [39] = { + [FALLARBOR_TENT_MON_SWALOT] = { .species = SPECIES_SWALOT, .moves = {MOVE_YAWN, MOVE_ENCORE, MOVE_BULLET_SEED, MOVE_SLUDGE}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_BRAVE }, - [40] = { + [FALLARBOR_TENT_MON_SHROOMISH] = { .species = SPECIES_SHROOMISH, .moves = {MOVE_HEADBUTT, MOVE_SPORE, MOVE_SWAGGER, MOVE_LEECH_SEED}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_IMPISH }, - [41] = { + [FALLARBOR_TENT_MON_KIRLIA] = { .species = SPECIES_KIRLIA, .moves = {MOVE_HYPNOSIS, MOVE_GROWL, MOVE_ATTRACT, MOVE_DREAM_EATER}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [42] = { + [FALLARBOR_TENT_MON_LOMBRE] = { .species = SPECIES_LOMBRE, .moves = {MOVE_NATURE_POWER, MOVE_WATER_GUN, MOVE_RAIN_DANCE, MOVE_FLASH}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_BASHFUL }, - [43] = { + [FALLARBOR_TENT_MON_NUZLEAF] = { .species = SPECIES_NUZLEAF, .moves = {MOVE_NATURE_POWER, MOVE_TORMENT, MOVE_SWAGGER, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [44] = { + [FALLARBOR_TENT_MON_CACNEA] = { .species = SPECIES_CACNEA, .moves = {MOVE_SANDSTORM, MOVE_NEEDLE_ARM, MOVE_TEETER_DANCE, MOVE_LEECH_SEED}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, diff --git a/src/decoration.c b/src/decoration.c index da7e169cb..e141e43b3 100644 --- a/src/decoration.c +++ b/src/decoration.c @@ -2154,7 +2154,8 @@ void sub_8129708(void) } } -void sub_81297AC(void) +// Unused +void GetEventObjectLocalIdByFlag(void) { u8 i; diff --git a/src/dewford_trend.c b/src/dewford_trend.c index 57a97d8f3..9c5e69d99 100644 --- a/src/dewford_trend.c +++ b/src/dewford_trend.c @@ -25,12 +25,12 @@ void InitDewfordTrend(void) for (i = 0; i < 5; i++) { - gSaveBlock1Ptr->easyChatPairs[i].words[0] = sub_811EE38(EC_GROUP_CONDITIONS); + gSaveBlock1Ptr->easyChatPairs[i].words[0] = GetRandomEasyChatWordFromGroup(EC_GROUP_CONDITIONS); if (Random() & 1) - gSaveBlock1Ptr->easyChatPairs[i].words[1] = sub_811EE38(EC_GROUP_LIFESTYLE); + gSaveBlock1Ptr->easyChatPairs[i].words[1] = GetRandomEasyChatWordFromGroup(EC_GROUP_LIFESTYLE); else - gSaveBlock1Ptr->easyChatPairs[i].words[1] = sub_811EE38(EC_GROUP_HOBBIES); + gSaveBlock1Ptr->easyChatPairs[i].words[1] = GetRandomEasyChatWordFromGroup(EC_GROUP_HOBBIES); gSaveBlock1Ptr->easyChatPairs[i].unk1_6 = Random() & 1; sub_8122B28(&(gSaveBlock1Ptr->easyChatPairs[i])); diff --git a/src/easy_chat.c b/src/easy_chat.c index 3aa709732..05e366420 100644 --- a/src/easy_chat.c +++ b/src/easy_chat.c @@ -222,7 +222,7 @@ static void sub_811E1A4(s8, s8); static void sub_811E2DC(struct Sprite *); static void sub_811E34C(u8, u8); static bool8 EasyChatIsNationalPokedexEnabled(void); -static u16 sub_811F108(void); +static u16 GetRandomUnlockedEasyChatPokemon(void); static void sub_811F2D4(void); static void sub_811F46C(void); static u8 *CopyEasyChatWordPadded(u8 *, u16, u16); @@ -5039,24 +5039,24 @@ static u16 GetEasyChatWordStringLength(u16 easyChatWord) } } -bool8 sub_811EDC4(const u16 *easyChatWords, u8 arg1, u8 arg2, u16 arg3) +static bool8 CanPhraseFitInXRowsYCols(const u16 *easyChatWords, u8 numRows, u8 numColumns, u16 maxLength) { u8 i, j; - for (i = 0; i < arg2; i++) + for (i = 0; i < numColumns; i++) { - u16 totalLength = arg1 - 1; - for (j = 0; j < arg1; j++) + u16 totalLength = numRows - 1; + for (j = 0; j < numRows; j++) totalLength += GetEasyChatWordStringLength(*(easyChatWords++)); - if (totalLength > arg3) + if (totalLength > maxLength) return TRUE; } return FALSE; } -u16 sub_811EE38(u16 groupId) +u16 GetRandomEasyChatWordFromGroup(u16 groupId) { u16 index = Random() % gEasyChatGroups[groupId].numWords; if (groupId == EC_GROUP_POKEMON @@ -5070,18 +5070,18 @@ u16 sub_811EE38(u16 groupId) return EC_WORD(groupId, index); } -u16 sub_811EE90(u16 groupId) +u16 GetRandomEasyChatWordFromUnlockedGroup(u16 groupId) { if (!IsEasyChatGroupUnlocked(groupId)) return 0xFFFF; if (groupId == EC_GROUP_POKEMON) - return sub_811F108(); + return GetRandomUnlockedEasyChatPokemon(); - return sub_811EE38(groupId); + return GetRandomEasyChatWordFromGroup(groupId); } -void sub_811EECC(void) +void ShowEasyChatProfile(void) { u16 *easyChatWords; int columns, rows; @@ -5094,7 +5094,7 @@ void sub_811EECC(void) break; case 1: easyChatWords = gSaveBlock1Ptr->easyChatBattleStart; - if (sub_811EDC4(gSaveBlock1Ptr->easyChatBattleStart, 3, 2, 18)) + if (CanPhraseFitInXRowsYCols(gSaveBlock1Ptr->easyChatBattleStart, 3, 2, 18)) { columns = 2; rows = 3; @@ -5123,10 +5123,11 @@ void sub_811EECC(void) ShowFieldAutoScrollMessage(gStringVar4); } -void sub_811EF6C(void) +// The phrase that a man in Dewford Hall suggests has a "deep link" to the current trendy phrase +void BufferDeepLinkPhrase(void) { int groupId = Random() & 1 ? EC_GROUP_HOBBIES : EC_GROUP_LIFESTYLE; - u16 easyChatWord = sub_811EE90(groupId); + u16 easyChatWord = GetRandomEasyChatWordFromUnlockedGroup(groupId); CopyEasyChatWord(gStringVar2, easyChatWord); } @@ -5217,7 +5218,7 @@ static bool8 EasyChatIsNationalPokedexEnabled(void) return IsNationalPokedexEnabled(); } -static u16 sub_811F108(void) +static u16 GetRandomUnlockedEasyChatPokemon(void) { u16 i; u16 numWords; diff --git a/src/ereader_helpers.c b/src/ereader_helpers.c index 2419c2806..bdfbebf6b 100755 --- a/src/ereader_helpers.c +++ b/src/ereader_helpers.c @@ -473,7 +473,7 @@ static bool32 TryWriteTrainerHill_r(struct EReaderTrainerHillSet *ttdata, struct } buffer2->checksum = CalcByteArraySum((u8 *)buffer2->floors, 4 * sizeof(struct TrHillFloor)); - if (TryWriteSpecialSaveSection(SECTOR_ID_TRAINER_HILL, (u8 *)buffer2) != 1) + if (TryWriteSpecialSaveSection(SECTOR_ID_TRAINER_HILL, (u8 *)buffer2) != SAVE_STATUS_OK) return FALSE; return TRUE; @@ -487,13 +487,13 @@ bool32 TryWriteTrainerHill(struct EReaderTrainerHillSet *arg0) return result; } -static bool32 TryReadTrainerHill_r(struct EReaderTrainerHillSet *arg0, u8 *arg1) +static bool32 TryReadTrainerHill_r(struct EReaderTrainerHillSet *dst, u8 *buffer) { - if (TryReadSpecialSaveSection(SECTOR_ID_TRAINER_HILL, arg1) != 1) + if (TryReadSpecialSaveSection(SECTOR_ID_TRAINER_HILL, buffer) != SAVE_STATUS_OK) return FALSE; - memcpy(arg0, arg1, sizeof(struct EReaderTrainerHillSet)); - if (!TrainerHill_VerifyChecksum(arg0)) + memcpy(dst, buffer, sizeof(struct EReaderTrainerHillSet)); + if (!TrainerHill_VerifyChecksum(dst)) return FALSE; return TRUE; diff --git a/src/field_control_avatar.c b/src/field_control_avatar.c index 6d60c30b3..e41b5a69a 100644 --- a/src/field_control_avatar.c +++ b/src/field_control_avatar.c @@ -423,23 +423,23 @@ static const u8 *GetInteractedMetatileScript(struct MapPosition *position, u8 me return SecretBase_EventScript_ShieldOrToyTV; if (MetatileBehavior_IsMB_C6(metatileBehavior) == TRUE) { - SetSecretBaseSecretsTvFlags_MiscFurnature(); + CheckInteractedWithFriendsFurnitureBottom(); return NULL; } if (MetatileBehavior_HoldsLargeDecoration(metatileBehavior) == TRUE) { - SetSecretBaseSecretsTvFlags_LargeDecorationSpot(); + CheckInteractedWithFriendsFurnitureMiddle(); return NULL; } if (MetatileBehavior_HoldsSmallDecoration(metatileBehavior) == TRUE) { - SetSecretBaseSecretsTvFlags_SmallDecorationSpot(); + CheckInteractedWithFriendsFurnitureTop(); return NULL; } } else if (MetatileBehavior_IsSecretBasePoster(metatileBehavior) == TRUE) { - SetSecretBaseSecretsTvFlags_Poster(); + CheckInteractedWithFriendsPosterDecor(); return NULL; } diff --git a/src/field_specials.c b/src/field_specials.c index 3101f0b2a..8699bce78 100644 --- a/src/field_specials.c +++ b/src/field_specials.c @@ -995,7 +995,7 @@ u16 GetWeekCount(void) u8 GetLeadMonFriendshipScore(void) { struct Pokemon *pokemon = &gPlayerParty[GetLeadMonIndex()]; - if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) == 255) + if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) == MAX_FRIENDSHIP) { return 6; } @@ -1221,18 +1221,18 @@ void EndLotteryCornerComputerEffect(void) DrawWholeMapView(); } -void SetTrickHouseEndRoomFlag(void) +void SetTrickHouseNuggetFlag(void) { u16 *specVar = &gSpecialVar_0x8004; - u16 flag = FLAG_TRICK_HOUSE_END_ROOM; + u16 flag = FLAG_HIDDEN_ITEM_TRICK_HOUSE_NUGGET; *specVar = flag; FlagSet(flag); } -void ResetTrickHouseEndRoomFlag(void) +void ResetTrickHouseNuggetFlag(void) { u16 *specVar = &gSpecialVar_0x8004; - u16 flag = FLAG_TRICK_HOUSE_END_ROOM; + u16 flag = FLAG_HIDDEN_ITEM_TRICK_HOUSE_NUGGET; *specVar = flag; FlagClear(flag); } diff --git a/src/fldeff_misc.c b/src/fldeff_misc.c index ab20713d2..95c7123b3 100644 --- a/src/fldeff_misc.c +++ b/src/fldeff_misc.c @@ -20,9 +20,11 @@ #include "string_util.h" #include "constants/field_effects.h" #include "constants/metatile_behaviors.h" +#include "constants/metatile_labels.h" #include "constants/songs.h" +#include "constants/tv.h" #include "constants/vars.h" -#include "constants/metatile_labels.h" + EWRAM_DATA struct MapPosition gPlayerFacingPosition = {0}; @@ -801,16 +803,16 @@ static void Task_SecretBasePCTurnOn(u8 taskId) { case 4: case 12: - MapGridSetMetatileIdAt(data[0], data[1], 0x224); + MapGridSetMetatileIdAt(data[0], data[1], METATILE_SecretBase_PC_On); CurrentMapDrawMetatileAt(data[0], data[1]); break; case 8: case 16: - MapGridSetMetatileIdAt(data[0], data[1], 0x220); + MapGridSetMetatileIdAt(data[0], data[1], METATILE_SecretBase_PC); CurrentMapDrawMetatileAt(data[0], data[1]); break; case 20: - MapGridSetMetatileIdAt(data[0], data[1], 0x224); + MapGridSetMetatileIdAt(data[0], data[1], METATILE_SecretBase_PC_On); CurrentMapDrawMetatileAt(data[0], data[1]); FieldEffectActiveListRemove(FLDEFF_PCTURN_ON); EnableBothScriptContexts(); @@ -829,9 +831,9 @@ void DoSecretBasePCTurnOffEffect(void) PlaySE(SE_PC_OFF); if (!VarGet(VAR_CURRENT_SECRET_BASE)) - MapGridSetMetatileIdAt(x, y, 0x220 | METATILE_COLLISION_MASK); + MapGridSetMetatileIdAt(x, y, METATILE_SecretBase_PC | METATILE_COLLISION_MASK); else - MapGridSetMetatileIdAt(x, y, 0x221 | METATILE_COLLISION_MASK); + MapGridSetMetatileIdAt(x, y, METATILE_SecretBase_RegisterPC | METATILE_COLLISION_MASK); CurrentMapDrawMetatileAt(x, y); } @@ -875,16 +877,16 @@ static void DoBalloonSoundEffect(s16 metatileId) { switch (metatileId) { - case 824: + case METATILE_SecretBase_RedBalloon: PlaySE(SE_FUUSEN1); break; - case 828: + case METATILE_SecretBase_BlueBalloon: PlaySE(SE_FUUSEN2); break; - case 832: + case METATILE_SecretBase_YellowBalloon: PlaySE(SE_FUUSEN3); break; - case 552: + case METATILE_SecretBase_MudBall: PlaySE(SE_TOY_DANGO); break; } @@ -903,8 +905,8 @@ bool8 FldEff_NopA700(void) static void DoSecretBaseBreakableDoorEffect(s16 x, s16 y) { PlaySE(SE_TOY_KABE); - MapGridSetMetatileIdAt(x, y, 0x276); - MapGridSetMetatileIdAt(x, y - 1, 0x26E); + MapGridSetMetatileIdAt(x, y, METATILE_SecretBase_BreakableDoor_BottomOpen); + MapGridSetMetatileIdAt(x, y - 1, METATILE_SecretBase_BreakableDoor_TopOpen); CurrentMapDrawMetatileAt(x, y); CurrentMapDrawMetatileAt(x, y - 1); } @@ -946,28 +948,28 @@ static void Task_SecretBaseMusicNoteMatSound(u8 taskId) { switch (gTasks[taskId].tMetatileID) { - case 632: + case METATILE_SecretBase_NoteMat_C: PlaySE(SE_TOY_C); break; - case 633: + case METATILE_SecretBase_NoteMat_D: PlaySE(SE_TOY_D); break; - case 634: + case METATILE_SecretBase_NoteMat_E: PlaySE(SE_TOY_E); break; - case 635: + case METATILE_SecretBase_NoteMat_F: PlaySE(SE_TOY_F); break; - case 636: + case METATILE_SecretBase_NoteMat_G: PlaySE(SE_TOY_G); break; - case 637: + case METATILE_SecretBase_NoteMat_A: PlaySE(SE_TOY_A); break; - case 638: + case METATILE_SecretBase_NoteMat_B: PlaySE(SE_TOY_B); break; - case 691: + case METATILE_SecretBase_NoteMat_C_Sharp: PlaySE(SE_TOY_C1); break; } @@ -1071,12 +1073,12 @@ static void SpriteCB_SandPillar_0(struct Sprite *sprite) { PlaySE(SE_W088); - if (MapGridGetMetatileIdAt(gFieldEffectArguments[5], gFieldEffectArguments[6] - 1) == 646) - MapGridSetMetatileIdAt(gFieldEffectArguments[5], gFieldEffectArguments[6] - 1, 3586); + if (MapGridGetMetatileIdAt(gFieldEffectArguments[5], gFieldEffectArguments[6] - 1) == METATILE_SecretBase_SandOrnament_TopWall) + MapGridSetMetatileIdAt(gFieldEffectArguments[5], gFieldEffectArguments[6] - 1, METATILE_SecretBase_Wall_TopMid | METATILE_COLLISION_MASK); else - MapGridSetMetatileIdAt(gFieldEffectArguments[5], gFieldEffectArguments[6] - 1, 644); + MapGridSetMetatileIdAt(gFieldEffectArguments[5], gFieldEffectArguments[6] - 1, METATILE_SecretBase_SandOrnament_BrokenTop); - MapGridSetMetatileIdAt(gFieldEffectArguments[5], gFieldEffectArguments[6], 522); + MapGridSetMetatileIdAt(gFieldEffectArguments[5], gFieldEffectArguments[6], METATILE_SecretBase_Ground); CurrentMapDrawMetatileAt(gFieldEffectArguments[5], gFieldEffectArguments[6] - 1); CurrentMapDrawMetatileAt(gFieldEffectArguments[5], gFieldEffectArguments[6]); @@ -1092,7 +1094,7 @@ static void SpriteCB_SandPillar_1(struct Sprite *sprite) } else { - MapGridSetMetatileIdAt(gFieldEffectArguments[5], gFieldEffectArguments[6], 3724); + MapGridSetMetatileIdAt(gFieldEffectArguments[5], gFieldEffectArguments[6], METATILE_SecretBase_SandOrnament_BrokenBase | METATILE_COLLISION_MASK); CurrentMapDrawMetatileAt(gFieldEffectArguments[5], gFieldEffectArguments[6]); sprite->data[0] = 0; sprite->callback = SpriteCB_SandPillar_2; @@ -1105,7 +1107,7 @@ static void SpriteCB_SandPillar_2(struct Sprite *sprite) EnableBothScriptContexts(); } -void GetShieldToyTVDecorationInfo(void) +void InteractWithShieldOrTVDecoration(void) { s16 x, y; s32 metatileId; @@ -1116,7 +1118,7 @@ void GetShieldToyTVDecorationInfo(void) switch (metatileId) { - case 822: + case METATILE_SecretBase_GoldShield_Base1: ConvertIntToDecimalStringN(gStringVar1, 100, STR_CONV_MODE_LEFT_ALIGN, 3); StringCopy(gStringVar2, gText_Gold); @@ -1125,9 +1127,9 @@ void GetShieldToyTVDecorationInfo(void) if (!VarGet(VAR_CURRENT_SECRET_BASE)) return; - VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x10); + VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | SECRET_BASE_USED_GOLD_SHIELD); break; - case 734: + case METATILE_SecretBase_SilverShield_Base1: ConvertIntToDecimalStringN(gStringVar1, 50, STR_CONV_MODE_LEFT_ALIGN, 2); StringCopy(gStringVar2, gText_Silver); @@ -1136,31 +1138,31 @@ void GetShieldToyTVDecorationInfo(void) if (!VarGet(VAR_CURRENT_SECRET_BASE)) return; - VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x20); + VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | SECRET_BASE_USED_SILVER_SHIELD); break; - case 756: + case METATILE_SecretBase_TV: gSpecialVar_Result = 1; if (!VarGet(VAR_CURRENT_SECRET_BASE)) return; - VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x80); + VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | SECRET_BASE_USED_TV); break; - case 757: + case METATILE_SecretBase_RoundTV: gSpecialVar_Result = 2; if (!VarGet(VAR_CURRENT_SECRET_BASE)) return; - VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x80); + VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | SECRET_BASE_USED_TV); break; - case 758: + case METATILE_SecretBase_CuteTV: gSpecialVar_Result = 3; if (!VarGet(VAR_CURRENT_SECRET_BASE)) return; - VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x80); + VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | SECRET_BASE_USED_TV); break; } } @@ -1172,16 +1174,16 @@ bool8 sub_80FADE4(u16 metatileId, u8 arg1) if (!arg1) { - if (metatileId == 0x285 || metatileId == 0x286) + if (metatileId == METATILE_SecretBase_SandOrnament_Top || metatileId == METATILE_SecretBase_SandOrnament_TopWall) return TRUE; - if (metatileId == 0x237) + if (metatileId == METATILE_SecretBase_BreakableDoor_TopClosed) return TRUE; } else { - if (metatileId == 0x28d) + if (metatileId == METATILE_SecretBase_SandOrnament_Base1) return TRUE; - if (metatileId == 0x23F) + if (metatileId == METATILE_SecretBase_BreakableDoor_BottomClosed) return TRUE; } diff --git a/src/frontier_util.c b/src/frontier_util.c index c77a2a838..f46c60391 100644 --- a/src/frontier_util.c +++ b/src/frontier_util.c @@ -1701,7 +1701,7 @@ void CopyFrontierTrainerText(u8 whichText, u16 trainerId) FrontierSpeechToString(gSaveBlock2Ptr->frontier.ereaderTrainer.greeting); else if (trainerId == TRAINER_FRONTIER_BRAIN) CopyFrontierBrainText(FALSE); - else if (trainerId < TRAINER_RECORD_MIXING_FRIEND) + else if (trainerId < FRONTIER_TRAINERS_COUNT) FrontierSpeechToString(gFacilityTrainers[trainerId].speechBefore); else if (trainerId < TRAINER_RECORD_MIXING_APPRENTICE) FrontierSpeechToString(gSaveBlock2Ptr->frontier.towerRecords[trainerId - TRAINER_RECORD_MIXING_FRIEND].greeting); @@ -1717,7 +1717,7 @@ void CopyFrontierTrainerText(u8 whichText, u16 trainerId) { CopyFrontierBrainText(FALSE); } - else if (trainerId < TRAINER_RECORD_MIXING_FRIEND) + else if (trainerId < FRONTIER_TRAINERS_COUNT) { FrontierSpeechToString(gFacilityTrainers[trainerId].speechWin); } @@ -1745,7 +1745,7 @@ void CopyFrontierTrainerText(u8 whichText, u16 trainerId) { CopyFrontierBrainText(TRUE); } - else if (trainerId < TRAINER_RECORD_MIXING_FRIEND) + else if (trainerId < FRONTIER_TRAINERS_COUNT) { FrontierSpeechToString(gFacilityTrainers[trainerId].speechLose); } @@ -2490,7 +2490,7 @@ void SetFrontierBrainObjEventGfx_2(void) void CreateFrontierBrainPokemon(void) { s32 i, j; - s32 monCountInBits; + s32 selectedMonBits; s32 monPartyId; s32 monLevel = 0; u8 friendship; @@ -2498,16 +2498,16 @@ void CreateFrontierBrainPokemon(void) s32 symbol = GetFronterBrainSymbol(); if (facility == FRONTIER_FACILITY_DOME) - monCountInBits = GetDomeTrainerMonCountInBits(TrainerIdToDomeTournamentId(TRAINER_FRONTIER_BRAIN)); + selectedMonBits = GetDomeTrainerSelectedMons(TrainerIdToDomeTournamentId(TRAINER_FRONTIER_BRAIN)); else - monCountInBits = 7; + selectedMonBits = (1 << FRONTIER_PARTY_SIZE) - 1; // all 3 mons selected ZeroEnemyPartyMons(); monPartyId = 0; monLevel = SetFacilityPtrsGetLevel(); - for (i = 0; i < 3; monCountInBits >>= 1, i++) + for (i = 0; i < FRONTIER_PARTY_SIZE; selectedMonBits >>= 1, i++) { - if (!(monCountInBits & 1)) + if (!(selectedMonBits & 1)) continue; do @@ -2523,7 +2523,7 @@ void CreateFrontierBrainPokemon(void) 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]); - friendship = 0xFF; + friendship = MAX_FRIENDSHIP; for (j = 0; j < MAX_MON_MOVES; j++) { SetMonMoveSlot(&gEnemyParty[monPartyId], sFrontierBrainsMons[facility][symbol][i].moves[j], j); @@ -2560,7 +2560,7 @@ void CreateFrontierBrainPokemon(void) bl TrainerIdToDomeTournamentId\n\ lsls r0, 16\n\ lsrs r0, 16\n\ - bl GetDomeTrainerMonCountInBits\n\ + bl GetDomeTrainerSelectedMons\n\ adds r4, r0, 0\n\ b _081A4E46\n\ .pool\n\ diff --git a/src/graphics.c b/src/graphics.c index 82765e913..eeeba56c9 100644 --- a/src/graphics.c +++ b/src/graphics.c @@ -964,25 +964,19 @@ const u32 gVsLettersGfx[] = INCBIN_U32("graphics/battle_transitions/vs.4bpp.lz") #include "data/graphics/battle_terrain.h" -const u32 gUnknown_08D82F10[] = INCBIN_U32("graphics/battle_frontier/tourney_bg.4bpp.lz"); -const u32 gUnknown_08D834FC[] = INCBIN_U32("graphics/battle_frontier/tourney_line.4bpp.lz"); // the red glow mask for the tourney advancement lines - -const u32 gUnknown_08D83900[] = INCBIN_U32("graphics/unknown/unknown_D83900.bin.lz"); // tilemaps likely - -const u32 gUnknown_08D83B2C[] = INCBIN_U32("graphics/unknown/unknown_D83B2C.bin.lz"); - -const u32 gUnknown_08D83C3C[] = INCBIN_U32("graphics/unknown/unknown_D83C3C.bin.lz"); - -const u32 gUnknown_08D83D50[] = INCBIN_U32("graphics/battle_frontier/misc1.4bpp.lz"); - -const u32 gUnknown_08D84970[] = INCBIN_U32("graphics/unknown/unknown_D84970.bin.lz"); - -const u32 gUnknown_08D84F00[] = INCBIN_U32("graphics/unknown/unknown_D84F00.bin.lz"); - -const u32 gBattleFrontierGfx_DomeOptions[] = INCBIN_U32("graphics/battle_frontier/options.4bpp.lz"); -const u32 gUnknown_08D85358[] = INCBIN_U32("graphics/battle_frontier/options_pal1.gbapal.lz"); -const u32 gUnknown_08D85444[] = INCBIN_U32("graphics/battle_frontier/options_pal2.gbapal.lz"); // pokeball pal -const u32 gUnknown_08D854C8[] = INCBIN_U32("graphics/battle_frontier/options_pal3.gbapal.lz"); // arrow pal +// Battle Dome +const u32 gDomeTourneyBg_Gfx[] = INCBIN_U32("graphics/battle_frontier/tourney_bg.4bpp.lz"); +const u32 gDomeTourneyLine_Gfx[] = INCBIN_U32("graphics/battle_frontier/tourney_line.4bpp.lz"); // the red glow mask for the tourney advancement lines +const u32 gDomeTourneyLineMask_Tilemap[] = INCBIN_U32("graphics/battle_frontier/tourney_line_mask_map.bin.lz"); +const u32 gDomeTourneyLineDown_Tilemap[] = INCBIN_U32("graphics/battle_frontier/tourney_line_down_map.bin.lz"); +const u32 gDomeTourneyLineUp_Tilemap[] = INCBIN_U32("graphics/battle_frontier/tourney_line_up_map.bin.lz"); +const u32 gDomeTourneyInfoCard_Gfx[] = INCBIN_U32("graphics/battle_frontier/tourney_info_card.4bpp.lz"); +const u32 gDomeTourneyInfoCard_Tilemap[] = INCBIN_U32("graphics/battle_frontier/tourney_info_card_tilemap.bin.lz"); +const u32 gDomeTourneyInfoCardBg_Tilemap[] = INCBIN_U32("graphics/battle_frontier/tourney_info_card_bg.bin.lz"); +const u32 gDomeTourneyTreeButtons_Gfx[] = INCBIN_U32("graphics/battle_frontier/tourney_buttons.4bpp.lz"); // exit/cancel and pokeball buttons +const u32 gDomeTourneyTree_Pal[] = INCBIN_U32("graphics/battle_frontier/tourney.gbapal.lz"); +const u32 gDomeTourneyTreeButtons_Pal[] = INCBIN_U32("graphics/battle_frontier/tourney_buttons.gbapal.lz"); +const u32 gDomeTourneyMatchCardBg_Pal[] = INCBIN_U32("graphics/battle_frontier/tourney_match_card_bg.gbapal.lz"); const u32 gBattleArenaJudgementSymbolsGfx[] = INCBIN_U32("graphics/battle_frontier/arena_judgement_symbols.4bpp.lz"); const u32 gBattleArenaJudgementSymbolsPalette[] = INCBIN_U32("graphics/battle_frontier/arena_judgement_symbols.gbapal.lz"); diff --git a/src/hall_of_fame.c b/src/hall_of_fame.c index 95cbc11ef..065d25582 100644 --- a/src/hall_of_fame.c +++ b/src/hall_of_fame.c @@ -101,7 +101,7 @@ static void SpriteCB_GetOnScreenAndAnimate(struct Sprite *sprite); static void HallOfFame_PrintMonInfo(struct HallofFameMon* currMon, u8 unused1, u8 unused2); static void HallOfFame_PrintWelcomeText(u8 unusedPossiblyWindowId, u8 unused2); static void HallOfFame_PrintPlayerInfo(u8 unused1, u8 unused2); -static void sub_8175364(u8 taskId); +static void Task_DoConfettiEffect(u8 taskId); static void sub_81751A4(struct Sprite* sprite); // const rom data @@ -467,7 +467,7 @@ static void Task_Hof_InitTeamSaveData(u8 taskId) } else { - if (Save_LoadGameData(3) != TRUE) + if (Save_LoadGameData(SAVE_HALL_OF_FAME) != SAVE_STATUS_OK) memset(gDecompressionBuffer, 0, 0x2000); } @@ -498,7 +498,7 @@ static void Task_Hof_InitTeamSaveData(u8 taskId) static void Task_Hof_TrySaveData(u8 taskId) { gGameContinueCallback = CB2_DoHallOfFameScreenDontSaveData; - if (TrySavingData(SAVE_HALL_OF_FAME) == 0xFF && gDamagedSaveSectors != 0) + if (TrySavingData(SAVE_HALL_OF_FAME) == SAVE_STATUS_ERROR && gDamagedSaveSectors != 0) { UnsetBgTilemapBuffer(1); UnsetBgTilemapBuffer(3); @@ -836,7 +836,7 @@ void CB2_DoHallOfFamePC(void) static void Task_HofPC_CopySaveData(u8 taskId) { sub_81980F0(0, 0x1E, 0, 0xC, 0x226); - if (Save_LoadGameData(3) != 1) + if (Save_LoadGameData(SAVE_HALL_OF_FAME) != SAVE_STATUS_OK) { gTasks[taskId].func = Task_HofPC_PrintDataIsCorrupted; } @@ -1387,12 +1387,13 @@ static bool8 sub_81751FC(void) return FALSE; } -void sub_8175280(void) +// Used when a Battle Dome tourney is won +void DoConfettiEffect(void) { u8 taskId; gSpecialVar_0x8004 = 180; - taskId = CreateTask(sub_8175364, 0); + taskId = CreateTask(Task_DoConfettiEffect, 0); if (taskId != 0xFF) { gTasks[taskId].data[1] = gSpecialVar_0x8004; @@ -1400,11 +1401,11 @@ void sub_8175280(void) } } -static void sub_81752C0(void) +static void StopConfettiEffect(void) { u8 taskId; - if ((taskId = FindTaskIdByFunc(sub_8175364)) != 0xFF) + if ((taskId = FindTaskIdByFunc(Task_DoConfettiEffect)) != 0xFF) DestroyTask(taskId); sub_8152254(); @@ -1437,7 +1438,7 @@ static void sub_81752F4(struct UnkStruct_81520A8 *structPtr) } } -static void sub_8175364(u8 taskId) +static void Task_DoConfettiEffect(u8 taskId) { u32 var = 0; u16 *data = gTasks[taskId].data; @@ -1475,7 +1476,7 @@ static void sub_8175364(u8 taskId) data[0] = 0xFF; break; case 0xFF: - sub_81752C0(); + StopConfettiEffect(); gSpecialVar_0x8004 = var; gSpecialVar_0x8005 = 0xFFFF; break; diff --git a/src/intro.c b/src/intro.c index 539b07a75..7c2303dcc 100644 --- a/src/intro.c +++ b/src/intro.c @@ -1070,7 +1070,7 @@ void CB2_InitCopyrightScreenAfterBootup(void) ResetMenuAndMonGlobals(); Save_ResetSaveCounters(); Save_LoadGameData(SAVE_NORMAL); - if (gSaveFileStatus == 0 || gSaveFileStatus == 2) + if (gSaveFileStatus == SAVE_STATUS_EMPTY || gSaveFileStatus == SAVE_STATUS_CORRUPT) Sav2_ClearSetDefault(); SetPokemonCryStereo(gSaveBlock2Ptr->optionsSound); InitHeap(gHeap, HEAP_SIZE); diff --git a/src/item.c b/src/item.c index 7b8b37c06..61069ca73 100644 --- a/src/item.c +++ b/src/item.c @@ -14,6 +14,7 @@ #include "battle_pyramid_bag.h" #include "constants/items.h" #include "constants/hold_effects.h" +#include "constants/tv.h" extern u16 gUnknown_0203CF30[]; @@ -542,7 +543,7 @@ bool8 RemoveBagItem(u16 itemId, u16 count) if (CurMapIsSecretBase() == TRUE) { - VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x200); + VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | SECRET_BASE_USED_BAG); VarSet(VAR_SECRET_BASE_LAST_ITEM_USED, itemId); } diff --git a/src/link.c b/src/link.c index d6ed9f5f3..939a4afc8 100644 --- a/src/link.c +++ b/src/link.c @@ -1349,7 +1349,7 @@ bool8 sub_800AA60(void) { if (gLinkPlayers[i].trainerId == gSavedLinkPlayers[i].trainerId) { - if (gLinkType == LINKTYPE_0x2288) + if (gLinkType == LINKTYPE_BATTLE_TOWER) { if (gLinkType == gLinkPlayers[i].linkType) { @@ -1902,7 +1902,8 @@ bool32 sub_800B504(void) return FALSE; } -u8 sub_800B518(void) +// Unused +u8 GetWirelessCommType(void) { return gWirelessCommType; } diff --git a/src/mail.c b/src/mail.c index be2b1dc95..f6f96b012 100644 --- a/src/mail.c +++ b/src/mail.c @@ -542,7 +542,7 @@ static void CB2_ExitMailReadFreeVars(void) case 1: case 2: FreeMonIconPalette(sub_80D2E84(sMailRead->mail->species)); - sub_80D2EF8(&gSprites[sMailRead->monIconSprite]); + FreeAndDestroyMonIconSprite(&gSprites[sMailRead->monIconSprite]); } memset(sMailRead, 0, sizeof(*sMailRead)); ResetPaletteFade(); diff --git a/src/main_menu.c b/src/main_menu.c index 01d9dfe4b..7c4e82c76 100644 --- a/src/main_menu.c +++ b/src/main_menu.c @@ -643,30 +643,30 @@ static void Task_MainMenuCheckSaveFile(u8 taskId) tWirelessAdapterConnected = TRUE; switch (gSaveFileStatus) { - case 1: + case SAVE_STATUS_OK: tMenuType = HAS_SAVED_GAME; if (IsMysteryGiftEnabled()) tMenuType++; gTasks[taskId].func = Task_MainMenuCheckBattery; break; - case 2: + case SAVE_STATUS_CORRUPT: CreateMainMenuErrorWindow(gText_SaveFileErased); tMenuType = HAS_NO_SAVED_GAME; gTasks[taskId].func = Task_WaitForSaveFileErrorWindow; break; - case 0xFF: + case SAVE_STATUS_ERROR: CreateMainMenuErrorWindow(gText_SaveFileCorrupted); gTasks[taskId].func = Task_WaitForSaveFileErrorWindow; tMenuType = HAS_SAVED_GAME; if (IsMysteryGiftEnabled() == TRUE) tMenuType++; break; - case 0: + case SAVE_STATUS_EMPTY: default: tMenuType = HAS_NO_SAVED_GAME; gTasks[taskId].func = Task_MainMenuCheckBattery; break; - case 4: + case SAVE_STATUS_NO_FLASH: CreateMainMenuErrorWindow(gJPText_No1MSubCircuit); gTasks[taskId].tMenuType = HAS_NO_SAVED_GAME; gTasks[taskId].func = Task_WaitForSaveFileErrorWindow; diff --git a/src/mauville_old_man.c b/src/mauville_old_man.c index 8fea7c098..dc5a0b335 100644 --- a/src/mauville_old_man.c +++ b/src/mauville_old_man.c @@ -360,7 +360,7 @@ static void InitGiddyTaleList(void) break; if (r1 == 6) r1 = 0; - giddy->randomWords[i] = sub_811EE90(arr[r1][0]); + giddy->randomWords[i] = GetRandomEasyChatWordFromUnlockedGroup(arr[r1][0]); } } } diff --git a/src/mevent_801BAAC.c b/src/mevent_801BAAC.c index bc32cda30..8596b43cd 100644 --- a/src/mevent_801BAAC.c +++ b/src/mevent_801BAAC.c @@ -445,7 +445,7 @@ void sub_801C61C(void) { u8 r6 = 0; if (sWonderCardData->unk_017C != 0xFF) - sub_80D2EF8(&gSprites[sWonderCardData->unk_017C]); + FreeAndDestroyMonIconSprite(&gSprites[sWonderCardData->unk_017C]); if (sWonderCardData->unk_0000.unk_09 != 0 && sWonderCardData->unk_0000.unk_08_0 == 1) { for (; r6 < sWonderCardData->unk_0000.unk_09; r6++) @@ -456,7 +456,7 @@ void sub_801C61C(void) } if (sWonderCardData->unk_017D[r6][1] != 0xFF) { - sub_80D2EF8(&gSprites[sWonderCardData->unk_017D[r6][1]]); + FreeAndDestroyMonIconSprite(&gSprites[sWonderCardData->unk_017D[r6][1]]); } } FreeSpriteTilesByTag(0x8000); diff --git a/src/mevent_news.c b/src/mevent_news.c index 192bb0fc7..9e78cf406 100644 --- a/src/mevent_news.c +++ b/src/mevent_news.c @@ -53,6 +53,7 @@ void sub_801DBDC(void) } } +// Unused u16 sub_801DC20(void) { u16 *r6 = &gSpecialVar_Result; diff --git a/src/new_game.c b/src/new_game.c index b24114f77..464da6414 100644 --- a/src/new_game.c +++ b/src/new_game.c @@ -150,7 +150,7 @@ void ResetMenuAndMonGlobals(void) void NewGameInitData(void) { - if (gSaveFileStatus == 0 || gSaveFileStatus == 2) + if (gSaveFileStatus == SAVE_STATUS_EMPTY || gSaveFileStatus == SAVE_STATUS_CORRUPT) RtcReset(); gDifferentSaveFile = 1; diff --git a/src/overworld.c b/src/overworld.c index fdccc3521..81b8efa1b 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -863,7 +863,7 @@ static void mli0_load_map(u32 a1) isOutdoors = IsMapTypeOutdoors(gMapHeader.mapType); isIndoors = IsMapTypeIndoors(gMapHeader.mapType); - sub_80EB218(); + CheckLeftFriendsSecretBase(); TrySetMapSaveWarpStatus(); ClearTempFieldEventData(); ResetCyclingRoadChallengeData(); @@ -1714,7 +1714,7 @@ void CB2_ContinueSavedGame(void) FieldClearVBlankHBlankCallbacks(); StopMapMusic(); ResetSafariZoneFlag_(); - if (gSaveFileStatus == 0xFF) + if (gSaveFileStatus == SAVE_STATUS_ERROR) ResetWinStreaks(); LoadSaveblockMapHeader(); diff --git a/src/pokemon.c b/src/pokemon.c index 15427e6ea..5a4e6df08 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -1334,7 +1334,7 @@ const struct SpindaSpot gSpindaSpotGraphics[] = #include "data/pokemon/item_effects.h" -const s8 gNatureStatTable[][5] = +const s8 gNatureStatTable[][NUM_EV_STATS] = { // Atk Def Spd Sp.Atk Sp.Def { 0, 0, 0, 0, 0}, // Hardy @@ -5086,8 +5086,8 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov } if (friendship < 0) friendship = 0; - if (friendship > 255) - friendship = 255; + if (friendship > MAX_FRIENDSHIP) + friendship = MAX_FRIENDSHIP; SetMonData(mon, MON_DATA_FRIENDSHIP, &friendship); retVal = FALSE; } @@ -5112,8 +5112,8 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov } if (friendship < 0) friendship = 0; - if (friendship > 255) - friendship = 255; + if (friendship > MAX_FRIENDSHIP) + friendship = MAX_FRIENDSHIP; SetMonData(mon, MON_DATA_FRIENDSHIP, &friendship); retVal = FALSE; } @@ -5137,8 +5137,8 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov } if (friendship < 0) friendship = 0; - if (friendship > 255) - friendship = 255; + if (friendship > MAX_FRIENDSHIP) + friendship = MAX_FRIENDSHIP; SetMonData(mon, MON_DATA_FRIENDSHIP, &friendship); retVal = FALSE; } @@ -5717,7 +5717,8 @@ u8 GetTrainerEncounterMusicId(u16 trainerOpponentId) u16 ModifyStatByNature(u8 nature, u16 n, u8 statIndex) { - if (statIndex < 1 || statIndex > 5) + // Dont modify HP, Accuracy, or Evasion by nature + if (statIndex <= STAT_HP || statIndex > NUM_EV_STATS) { // Should just be "return n", but it wouldn't match without this. u16 retVal = n; @@ -5788,8 +5789,8 @@ void AdjustFriendship(struct Pokemon *mon, u8 event) } if (friendship < 0) friendship = 0; - if (friendship > 255) - friendship = 255; + if (friendship > MAX_FRIENDSHIP) + friendship = MAX_FRIENDSHIP; SetMonData(mon, MON_DATA_FRIENDSHIP, &friendship); } } diff --git a/src/pokemon_icon.c b/src/pokemon_icon.c index 2c11ca293..7d8c65d7c 100644 --- a/src/pokemon_icon.c +++ b/src/pokemon_icon.c @@ -1128,7 +1128,7 @@ const u8 *GetMonIconPtr(u16 species, u32 personality, bool32 handleDeoxys) return GetMonIconTiles(GetIconSpecies(species, personality), handleDeoxys); } -void sub_80D2EF8(struct Sprite *sprite) +void FreeAndDestroyMonIconSprite(struct Sprite *sprite) { sub_80D328C(sprite); } diff --git a/src/recorded_battle.c b/src/recorded_battle.c index 1533fd5ad..5a0579f70 100644 --- a/src/recorded_battle.c +++ b/src/recorded_battle.c @@ -323,7 +323,7 @@ static bool32 RecordedBattleToSave(struct RecordedBattleSave *battleSave, struct saveSection->checksum = CalcByteArraySum((void*)(saveSection), sizeof(*saveSection) - 4); - if (TryWriteSpecialSaveSection(SECTOR_ID_RECORDED_BATTLE, (void*)(saveSection)) != 1) + if (TryWriteSpecialSaveSection(SECTOR_ID_RECORDED_BATTLE, (void*)(saveSection)) != SAVE_STATUS_OK) return FALSE; else return TRUE; @@ -492,7 +492,7 @@ bool32 MoveRecordedBattleToSaveData(void) static bool32 TryCopyRecordedBattleSaveData(struct RecordedBattleSave *dst, struct SaveSection *saveBuffer) { - if (TryReadSpecialSaveSection(SECTOR_ID_RECORDED_BATTLE, (void*)(saveBuffer)) != 1) + if (TryReadSpecialSaveSection(SECTOR_ID_RECORDED_BATTLE, (void*)(saveBuffer)) != SAVE_STATUS_OK) return FALSE; memcpy(dst, saveBuffer, sizeof(struct RecordedBattleSave)); diff --git a/src/reset_rtc_screen.c b/src/reset_rtc_screen.c index 8c4843ab5..efad640e3 100644 --- a/src/reset_rtc_screen.c +++ b/src/reset_rtc_screen.c @@ -559,7 +559,7 @@ static void Task_ResetRtcScreen(u8 taskId) case 1: if (!gPaletteFade.active) { - if (gSaveFileStatus == 0 || gSaveFileStatus == 2) + if (gSaveFileStatus == SAVE_STATUS_EMPTY || gSaveFileStatus == SAVE_STATUS_CORRUPT) { ShowMessage(gText_NoSaveFileCantSetTime); data[0] = 5; @@ -608,7 +608,7 @@ static void Task_ResetRtcScreen(u8 taskId) } break; case 4: - if (TrySavingData(SAVE_NORMAL) == 1) + if (TrySavingData(SAVE_NORMAL) == SAVE_STATUS_OK) { ShowMessage(gText_SaveCompleted); PlaySE(SE_PINPON); diff --git a/src/reset_save_heap.c b/src/reset_save_heap.c index 5a54a2177..577a48b0d 100644 --- a/src/reset_save_heap.c +++ b/src/reset_save_heap.c @@ -21,8 +21,8 @@ void sub_81700F8(void) SetSaveBlocksPointers(sub_815355C()); ResetMenuAndMonGlobals(); Save_ResetSaveCounters(); - Save_LoadGameData(0); - if (gSaveFileStatus == 0 || gSaveFileStatus == 2) + Save_LoadGameData(SAVE_NORMAL); + if (gSaveFileStatus == SAVE_STATUS_EMPTY || gSaveFileStatus == SAVE_STATUS_CORRUPT) Sav2_ClearSetDefault(); SetPokemonCryStereo(gSaveBlock2Ptr->optionsSound); InitHeap(gHeap, HEAP_SIZE); diff --git a/src/save.c b/src/save.c index e1f5a6fff..c19aff4d8 100644 --- a/src/save.c +++ b/src/save.c @@ -14,7 +14,7 @@ #include "constants/game_stat.h" static u16 CalculateChecksum(void *data, u16 size); -static u8 DoReadFlashWholeSection(u8 sector, struct SaveSection *section); +static bool8 DoReadFlashWholeSection(u8 sector, struct SaveSection *section); static u8 GetSaveValidStatus(const struct SaveSectionLocation *location); static u8 sub_8152E10(u16 a1, const struct SaveSectionLocation *location); static u8 ClearSaveData_2(u16 a1, const struct SaveSectionLocation *location); @@ -53,7 +53,7 @@ static u8 HandleWriteSector(u16 a1, const struct SaveSectionLocation *location); min(sizeof(structure) - chunkNum * SECTOR_DATA_SIZE, SECTOR_DATA_SIZE) \ } \ -const struct SaveSectionOffsets gSaveSectionOffsets[] = +static const struct SaveSectionOffsets sSaveSectionOffsets[] = { SAVEBLOCK_CHUNK(gSaveblock2, 0), @@ -84,9 +84,9 @@ u16 gUnknown_03006208; u16 gSaveUnusedVar; u16 gSaveFileStatus; void (*gGameContinueCallback)(void); -struct SaveSectionLocation gRamSaveSectionLocations[0xE]; +struct SaveSectionLocation gRamSaveSectionLocations[SECTOR_SAVE_SLOT_LENGTH]; u16 gSaveUnusedVar2; -u16 gUnknown_03006294; +u16 gSaveAttemptStatus; EWRAM_DATA struct SaveSection gSaveDataBuffer = {0}; EWRAM_DATA static u8 sUnusedVar = 0; @@ -130,16 +130,16 @@ static bool32 SetDamagedSectorBits(u8 op, u8 bit) return retVal; } -static u8 save_write_to_flash(u16 a1, const struct SaveSectionLocation *location) +static u8 SaveWriteToFlash(u16 a1, const struct SaveSectionLocation *location) { - u32 retVal; + u32 status; u16 i; gFastSaveSection = &gSaveDataBuffer; if (a1 != 0xFFFF) // for link { - retVal = HandleWriteSector(a1, location); + status = HandleWriteSector(a1, location); } else { @@ -148,41 +148,41 @@ static u8 save_write_to_flash(u16 a1, const struct SaveSectionLocation *location gLastWrittenSector++; gLastWrittenSector = gLastWrittenSector % SECTOR_SAVE_SLOT_LENGTH; // array count save sector locations gSaveCounter++; - retVal = 1; + status = SAVE_STATUS_OK; for (i = 0; i < SECTOR_SAVE_SLOT_LENGTH; i++) HandleWriteSector(i, location); if (gDamagedSaveSectors != 0) // skip the damaged sector. { - retVal = 0xFF; + status = SAVE_STATUS_ERROR; gLastWrittenSector = gLastKnownGoodSector; gSaveCounter = gLastSaveCounter; } } - return retVal; + return status; } -static u8 HandleWriteSector(u16 a1, const struct SaveSectionLocation *location) +static u8 HandleWriteSector(u16 sectorId, const struct SaveSectionLocation *location) { u16 i; u16 sector; u8 *data; u16 size; - sector = a1 + gLastWrittenSector; + sector = sectorId + gLastWrittenSector; sector %= SECTOR_SAVE_SLOT_LENGTH; sector += SECTOR_SAVE_SLOT_LENGTH * (gSaveCounter % 2); - data = location[a1].data; - size = location[a1].size; + data = location[sectorId].data; + size = location[sectorId].size; // clear save section. for (i = 0; i < sizeof(struct SaveSection); i++) ((char *)gFastSaveSection)[i] = 0; - gFastSaveSection->id = a1; + gFastSaveSection->id = sectorId; gFastSaveSection->security = UNKNOWN_CHECK_VALUE; gFastSaveSection->counter = gSaveCounter; @@ -215,12 +215,12 @@ static u8 TryWriteSector(u8 sector, u8 *data) if (ProgramFlashSectorAndVerify(sector, data) != 0) // is damaged? { SetDamagedSectorBits(ENABLE, sector); // set damaged sector bits. - return 0xFF; + return SAVE_STATUS_ERROR; } else { SetDamagedSectorBits(DISABLE, sector); // unset damaged sector bits. it's safe now. - return 1; + return SAVE_STATUS_OK; } } @@ -247,46 +247,46 @@ static u32 RestoreSaveBackupVars(const struct SaveSectionLocation *location) // return 0; } -static u8 sub_81529D4(u16 a1, const struct SaveSectionLocation *location) +static u8 sub_81529D4(u16 sectorId, const struct SaveSectionLocation *location) { - u8 retVal; + u8 status; - if (gUnknown_03006208 < a1 - 1) + if (gUnknown_03006208 < sectorId - 1) { - retVal = 1; + status = SAVE_STATUS_OK; HandleWriteSector(gUnknown_03006208, location); gUnknown_03006208++; if (gDamagedSaveSectors) { - retVal = 0xFF; + status = SAVE_STATUS_ERROR; gLastWrittenSector = gLastKnownGoodSector; gSaveCounter = gLastSaveCounter; } } else { - retVal = 0xFF; + status = SAVE_STATUS_ERROR; } - return retVal; + return status; } -static u8 sub_8152A34(u16 a1, const struct SaveSectionLocation *location) +static u8 sub_8152A34(u16 sectorId, const struct SaveSectionLocation *location) { - u8 retVal = 1; + u8 status = SAVE_STATUS_OK; - ClearSaveData_2(a1 - 1, location); + ClearSaveData_2(sectorId - 1, location); if (gDamagedSaveSectors) { - retVal = 0xFF; + status = SAVE_STATUS_ERROR; gLastWrittenSector = gLastKnownGoodSector; gSaveCounter = gLastSaveCounter; } - return retVal; + return status; } -static u8 ClearSaveData_2(u16 a1, const struct SaveSectionLocation *location) +static u8 ClearSaveData_2(u16 sectorId, const struct SaveSectionLocation *location) { u16 i; u16 sector; @@ -294,18 +294,18 @@ static u8 ClearSaveData_2(u16 a1, const struct SaveSectionLocation *location) u16 size; u8 status; - sector = a1 + gLastWrittenSector; + sector = sectorId + gLastWrittenSector; sector %= SECTOR_SAVE_SLOT_LENGTH; sector += SECTOR_SAVE_SLOT_LENGTH * (gSaveCounter % 2); - data = location[a1].data; - size = location[a1].size; + data = location[sectorId].data; + size = location[sectorId].size; // clear temp save section. for (i = 0; i < sizeof(struct SaveSection); i++) ((char *)gFastSaveSection)[i] = 0; - gFastSaveSection->id = a1; + gFastSaveSection->id = sectorId; gFastSaveSection->security = UNKNOWN_CHECK_VALUE; gFastSaveSection->counter = gSaveCounter; @@ -318,53 +318,53 @@ static u8 ClearSaveData_2(u16 a1, const struct SaveSectionLocation *location) EraseFlashSector(sector); - status = 1; + status = SAVE_STATUS_OK; for (i = 0; i < sizeof(struct UnkSaveSection); i++) { if (ProgramFlashByte(sector, i, ((u8 *)gFastSaveSection)[i])) { - status = 0xFF; + status = SAVE_STATUS_ERROR; break; } } - if (status == 0xFF) + if (status == SAVE_STATUS_ERROR) { SetDamagedSectorBits(ENABLE, sector); - return 0xFF; + return SAVE_STATUS_ERROR; } else { - status = 1; + status = SAVE_STATUS_OK; for (i = 0; i < 7; i++) { if (ProgramFlashByte(sector, 0xFF9 + i, ((u8 *)gFastSaveSection)[0xFF9 + i])) { - status = 0xFF; + status = SAVE_STATUS_ERROR; break; } } - if (status == 0xFF) + if (status == SAVE_STATUS_ERROR) { SetDamagedSectorBits(ENABLE, sector); - return 0xFF; + return SAVE_STATUS_ERROR; } else { SetDamagedSectorBits(DISABLE, sector); - return 1; + return SAVE_STATUS_OK; } } } -static u8 sav12_xor_get(u16 a1, const struct SaveSectionLocation *location) +static u8 sav12_xor_get(u16 sectorId, const struct SaveSectionLocation *location) { u16 sector; - sector = a1 + gLastWrittenSector; // no sub 1? + sector = sectorId + gLastWrittenSector; // no sub 1? sector %= SECTOR_SAVE_SLOT_LENGTH; sector += SECTOR_SAVE_SLOT_LENGTH * (gSaveCounter % 2); @@ -374,20 +374,20 @@ static u8 sav12_xor_get(u16 a1, const struct SaveSectionLocation *location) SetDamagedSectorBits(ENABLE, sector); gLastWrittenSector = gLastKnownGoodSector; gSaveCounter = gLastSaveCounter; - return 0xFF; + return SAVE_STATUS_ERROR; } else { SetDamagedSectorBits(DISABLE, sector); - return 1; + return SAVE_STATUS_OK; } } -static u8 sub_8152CAC(u16 a1, const struct SaveSectionLocation *location) +static u8 sub_8152CAC(u16 sectorId, const struct SaveSectionLocation *location) { u16 sector; - sector = a1 + gLastWrittenSector - 1; + sector = sectorId + gLastWrittenSector - 1; sector %= SECTOR_SAVE_SLOT_LENGTH; sector += SECTOR_SAVE_SLOT_LENGTH * (gSaveCounter % 2); @@ -397,20 +397,20 @@ static u8 sub_8152CAC(u16 a1, const struct SaveSectionLocation *location) SetDamagedSectorBits(ENABLE, sector); gLastWrittenSector = gLastKnownGoodSector; gSaveCounter = gLastSaveCounter; - return 0xFF; + return SAVE_STATUS_ERROR; } else { SetDamagedSectorBits(DISABLE, sector); - return 1; + return SAVE_STATUS_OK; } } -static u8 sub_8152D44(u16 a1, const struct SaveSectionLocation *location) +static u8 sub_8152D44(u16 sectorId, const struct SaveSectionLocation *location) { u16 sector; - sector = a1 + gLastWrittenSector - 1; // no sub 1? + sector = sectorId + gLastWrittenSector - 1; // no sub 1? sector %= SECTOR_SAVE_SLOT_LENGTH; sector += SECTOR_SAVE_SLOT_LENGTH * (gSaveCounter % 2); @@ -420,30 +420,30 @@ static u8 sub_8152D44(u16 a1, const struct SaveSectionLocation *location) SetDamagedSectorBits(ENABLE, sector); gLastWrittenSector = gLastKnownGoodSector; gSaveCounter = gLastSaveCounter; - return 0xFF; + return SAVE_STATUS_ERROR; } else { SetDamagedSectorBits(DISABLE, sector); - return 1; + return SAVE_STATUS_OK; } } static u8 sub_8152DD0(u16 a1, const struct SaveSectionLocation *location) { - u8 retVal; + u8 status; gFastSaveSection = &gSaveDataBuffer; if (a1 != 0xFFFF) { - retVal = 0xFF; + status = SAVE_STATUS_ERROR; } else { - retVal = GetSaveValidStatus(location); + status = GetSaveValidStatus(location); sub_8152E10(0xFFFF, location); } - return retVal; + return status; } static u8 sub_8152E10(u16 a1, const struct SaveSectionLocation *location) @@ -469,7 +469,7 @@ static u8 sub_8152E10(u16 a1, const struct SaveSectionLocation *location) } } - return 1; + return SAVE_STATUS_OK; } static u8 GetSaveValidStatus(const struct SaveSectionLocation *location) @@ -502,13 +502,13 @@ static u8 GetSaveValidStatus(const struct SaveSectionLocation *location) if (securityPassed) { if (slotCheckField == 0x3FFF) - saveSlot1Status = 1; + saveSlot1Status = SAVE_STATUS_OK; else - saveSlot1Status = 255; + saveSlot1Status = SAVE_STATUS_ERROR; } else { - saveSlot1Status = 0; + saveSlot1Status = SAVE_STATUS_EMPTY; } slotCheckField = 0; @@ -533,16 +533,16 @@ static u8 GetSaveValidStatus(const struct SaveSectionLocation *location) if (securityPassed) { if (slotCheckField == 0x3FFF) - saveSlot2Status = 1; + saveSlot2Status = SAVE_STATUS_OK; else - saveSlot2Status = 255; + saveSlot2Status = SAVE_STATUS_ERROR; } else { - saveSlot2Status = 0; + saveSlot2Status = SAVE_STATUS_EMPTY; } - if (saveSlot1Status == 1 && saveSlot2Status == 1) + if (saveSlot1Status == SAVE_STATUS_OK && saveSlot2Status == SAVE_STATUS_OK) { if ((saveSlot1Counter == -1 && saveSlot2Counter == 0) || (saveSlot1Counter == 0 && saveSlot2Counter == -1)) { @@ -558,42 +558,42 @@ static u8 GetSaveValidStatus(const struct SaveSectionLocation *location) else gSaveCounter = saveSlot1Counter; } - return 1; + return SAVE_STATUS_OK; } - if (saveSlot1Status == 1) + if (saveSlot1Status == SAVE_STATUS_OK) { gSaveCounter = saveSlot1Counter; - if (saveSlot2Status == 255) - return 255; - return 1; + if (saveSlot2Status == SAVE_STATUS_ERROR) + return SAVE_STATUS_ERROR; + return SAVE_STATUS_OK; } - if (saveSlot2Status == 1) + if (saveSlot2Status == SAVE_STATUS_OK) { gSaveCounter = saveSlot2Counter; - if (saveSlot1Status == 255) - return 255; - return 1; + if (saveSlot1Status == SAVE_STATUS_ERROR) + return SAVE_STATUS_ERROR; + return SAVE_STATUS_OK; } - if (saveSlot1Status == 0 && saveSlot2Status == 0) + if (saveSlot1Status == SAVE_STATUS_EMPTY && saveSlot2Status == SAVE_STATUS_EMPTY) { gSaveCounter = 0; gLastWrittenSector = 0; - return 0; + return SAVE_STATUS_EMPTY; } gSaveCounter = 0; gLastWrittenSector = 0; - return 2; + return SAVE_STATUS_CORRUPT; } -static u8 sub_81530DC(u8 a1, u8 *data, u16 size) +static u8 sub_81530DC(u8 sectorId, u8 *data, u16 size) { u16 i; struct SaveSection *section = &gSaveDataBuffer; - DoReadFlashWholeSection(a1, section); + DoReadFlashWholeSection(sectorId, section); if (section->security == UNKNOWN_CHECK_VALUE) { u16 checksum = CalculateChecksum(section->data, size); @@ -601,23 +601,24 @@ static u8 sub_81530DC(u8 a1, u8 *data, u16 size) { for (i = 0; i < size; i++) data[i] = section->data[i]; - return 1; + return SAVE_STATUS_OK; } else { - return 2; + return SAVE_STATUS_CORRUPT; } } else { - return 0; + return SAVE_STATUS_EMPTY; } } -static u8 DoReadFlashWholeSection(u8 sector, struct SaveSection *section) +// Return value always ignored +static bool8 DoReadFlashWholeSection(u8 sector, struct SaveSection *section) { ReadFlash(sector, 0, section->data, sizeof(struct SaveSection)); - return 1; + return TRUE; } static u16 CalculateChecksum(void *data, u16 size) @@ -638,19 +639,19 @@ static void UpdateSaveAddresses(void) { int i = 0; - gRamSaveSectionLocations[i].data = (void*)(gSaveBlock2Ptr) + gSaveSectionOffsets[i].toAdd; - gRamSaveSectionLocations[i].size = gSaveSectionOffsets[i].size; + gRamSaveSectionLocations[i].data = (void*)(gSaveBlock2Ptr) + sSaveSectionOffsets[i].toAdd; + gRamSaveSectionLocations[i].size = sSaveSectionOffsets[i].size; - for (i = 1; i < 5; i++) + for (i = SECTOR_ID_SAVEBLOCK1_START; i <= SECTOR_ID_SAVEBLOCK1_END; i++) { - gRamSaveSectionLocations[i].data = (void*)(gSaveBlock1Ptr) + gSaveSectionOffsets[i].toAdd; - gRamSaveSectionLocations[i].size = gSaveSectionOffsets[i].size; + gRamSaveSectionLocations[i].data = (void*)(gSaveBlock1Ptr) + sSaveSectionOffsets[i].toAdd; + gRamSaveSectionLocations[i].size = sSaveSectionOffsets[i].size; } - for (i = 5; i < 14; i++) + for (i = SECTOR_ID_PKMN_STORAGE_START; i <= SECTOR_ID_PKMN_STORAGE_END; i++) { - gRamSaveSectionLocations[i].data = (void*)(gPokemonStoragePtr) + gSaveSectionOffsets[i].toAdd; - gRamSaveSectionLocations[i].size = gSaveSectionOffsets[i].size; + gRamSaveSectionLocations[i].data = (void*)(gPokemonStoragePtr) + sSaveSectionOffsets[i].toAdd; + gRamSaveSectionLocations[i].size = sSaveSectionOffsets[i].size; i++;i--; // needed to match } @@ -673,36 +674,36 @@ u8 HandleSavingData(u8 saveType) if (GetGameStat(GAME_STAT_ENTERED_HOF) < 999) IncrementGameStat(GAME_STAT_ENTERED_HOF); SaveSerializedGame(); - save_write_to_flash(0xFFFF, gRamSaveSectionLocations); + SaveWriteToFlash(0xFFFF, gRamSaveSectionLocations); tempAddr = gDecompressionBuffer; - HandleWriteSectorNBytes(SECTOR_ID_HOF_1, tempAddr, 0xF80); - HandleWriteSectorNBytes(SECTOR_ID_HOF_2, tempAddr + 0xF80, 0xF80); + HandleWriteSectorNBytes(SECTOR_ID_HOF_1, tempAddr, SECTOR_DATA_SIZE); + HandleWriteSectorNBytes(SECTOR_ID_HOF_2, tempAddr + SECTOR_DATA_SIZE, SECTOR_DATA_SIZE); break; case SAVE_NORMAL: // normal save. also called by overwriting your own save. default: SaveSerializedGame(); - save_write_to_flash(0xFFFF, gRamSaveSectionLocations); + SaveWriteToFlash(0xFFFF, gRamSaveSectionLocations); break; case SAVE_LINK: // Link and Battle Frontier case SAVE_LINK2: // Unused SaveSerializedGame(); - for(i = 0; i < 5; i++) + for(i = SECTOR_ID_SAVEBLOCK2; i <= SECTOR_ID_SAVEBLOCK1_END; i++) ClearSaveData_2(i, gRamSaveSectionLocations); - for(i = 0; i < 5; i++) + for(i = SECTOR_ID_SAVEBLOCK2; i <= SECTOR_ID_SAVEBLOCK1_END; i++) sav12_xor_get(i, gRamSaveSectionLocations); break; // Support for Ereader was removed in Emerald. /* case EREADER_SAVE: // used in mossdeep "game corner" before/after battling old man e-reader trainer SaveSerializedGame(); - save_write_to_flash(0, gRamSaveSectionLocations); + SaveWriteToFlash(0, gRamSaveSectionLocations); break; */ case SAVE_OVERWRITE_DIFFERENT_FILE: for (i = SECTOR_ID_HOF_1; i < SECTORS_COUNT; i++) EraseFlashSector(i); // erase HOF. SaveSerializedGame(); - save_write_to_flash(0xFFFF, gRamSaveSectionLocations); + SaveWriteToFlash(0xFFFF, gRamSaveSectionLocations); break; } gTrainerHillVBlankCounter = backupVar; @@ -713,25 +714,25 @@ u8 TrySavingData(u8 saveType) { if (gFlashMemoryPresent != TRUE) { - gUnknown_03006294 = 0xFF; - return 0xFF; + gSaveAttemptStatus = SAVE_STATUS_ERROR; + return SAVE_STATUS_ERROR; } HandleSavingData(saveType); if (!gDamagedSaveSectors) { - gUnknown_03006294 = 1; - return 1; + gSaveAttemptStatus = SAVE_STATUS_OK; + return SAVE_STATUS_OK; } else { DoSaveFailedScreen(saveType); - gUnknown_03006294 = 0xFF; - return 0xFF; + gSaveAttemptStatus = SAVE_STATUS_ERROR; + return SAVE_STATUS_ERROR; } } -bool8 sub_8153380(void) // trade.s save +bool8 sub_8153380(void) // trade.c { if (gFlashMemoryPresent != TRUE) return TRUE; @@ -741,92 +742,92 @@ bool8 sub_8153380(void) // trade.s save return FALSE; } -bool8 sub_81533AC(void) // trade.s save +bool8 sub_81533AC(void) // trade.c { - u8 retVal = sub_81529D4(SECTOR_SAVE_SLOT_LENGTH, gRamSaveSectionLocations); + u8 status = sub_81529D4(SECTOR_SAVE_SLOT_LENGTH, gRamSaveSectionLocations); if (gDamagedSaveSectors) - DoSaveFailedScreen(0); - if (retVal == 0xFF) + DoSaveFailedScreen(SAVE_NORMAL); + if (status == SAVE_STATUS_ERROR) return TRUE; else return FALSE; } -u8 sub_81533E0(void) // trade.s save +bool8 sub_81533E0(void) // trade.c { sub_8152A34(SECTOR_SAVE_SLOT_LENGTH, gRamSaveSectionLocations); if (gDamagedSaveSectors) - DoSaveFailedScreen(0); - return 0; + DoSaveFailedScreen(SAVE_NORMAL); + return FALSE; } -u8 sub_8153408(void) // trade.s save +bool8 sub_8153408(void) // trade.c { sub_8152CAC(SECTOR_SAVE_SLOT_LENGTH, gRamSaveSectionLocations); if (gDamagedSaveSectors) - DoSaveFailedScreen(0); - return 0; + DoSaveFailedScreen(SAVE_NORMAL); + return FALSE; } u8 FullSaveGame(void) { if (gFlashMemoryPresent != TRUE) - return 1; + return TRUE; UpdateSaveAddresses(); SaveSerializedGame(); RestoreSaveBackupVars(gRamSaveSectionLocations); sub_8152A34(gUnknown_03006208 + 1, gRamSaveSectionLocations); - return 0; + return FALSE; } bool8 CheckSaveFile(void) { u8 retVal = FALSE; - u16 val = ++gUnknown_03006208; - if (val <= 4) + u16 sectorId = ++gUnknown_03006208; + if (sectorId <= SECTOR_ID_SAVEBLOCK1_END) { sub_8152A34(gUnknown_03006208 + 1, gRamSaveSectionLocations); - sub_8152D44(val, gRamSaveSectionLocations); + sub_8152D44(sectorId, gRamSaveSectionLocations); } else { - sub_8152D44(val, gRamSaveSectionLocations); + sub_8152D44(sectorId, gRamSaveSectionLocations); retVal = TRUE; } if (gDamagedSaveSectors) - DoSaveFailedScreen(1); + DoSaveFailedScreen(SAVE_LINK); return retVal; } -u8 Save_LoadGameData(u8 a1) +u8 Save_LoadGameData(u8 saveType) { - u8 result; + u8 status; if (gFlashMemoryPresent != TRUE) { - gSaveFileStatus = 4; - return 0xFF; + gSaveFileStatus = SAVE_STATUS_NO_FLASH; + return SAVE_STATUS_ERROR; } UpdateSaveAddresses(); - switch (a1) + switch (saveType) { - case 0: + case SAVE_NORMAL: default: - result = sub_8152DD0(0xFFFF, gRamSaveSectionLocations); + status = sub_8152DD0(0xFFFF, gRamSaveSectionLocations); LoadSerializedGame(); - gSaveFileStatus = result; + gSaveFileStatus = status; gGameContinueCallback = 0; break; - case 3: - result = sub_81530DC(0x1C, gDecompressionBuffer, 0xF80); - if(result == 1) - result = sub_81530DC(0x1D, gDecompressionBuffer + 0xF80, 0xF80); + case SAVE_HALL_OF_FAME: + status = sub_81530DC(SECTOR_ID_HOF_1, gDecompressionBuffer, SECTOR_DATA_SIZE); + if (status == SAVE_STATUS_OK) + status = sub_81530DC(SECTOR_ID_HOF_2, gDecompressionBuffer + SECTOR_DATA_SIZE, SECTOR_DATA_SIZE); break; } - return result; + return status; } u16 sub_815355C(void) @@ -836,7 +837,7 @@ u16 sub_815355C(void) savSection = gFastSaveSection = &gSaveDataBuffer; if (gFlashMemoryPresent != TRUE) - return 0; + return SAVE_STATUS_EMPTY; UpdateSaveAddresses(); GetSaveValidStatus(gRamSaveSectionLocations); v3 = SECTOR_SAVE_SLOT_LENGTH * (gSaveCounter % 2); @@ -849,7 +850,7 @@ u16 sub_815355C(void) savSection->data[12] + savSection->data[13]; } - return 0; + return SAVE_STATUS_EMPTY; } u32 TryReadSpecialSaveSection(u8 sector, u8* dst) @@ -859,17 +860,17 @@ u32 TryReadSpecialSaveSection(u8 sector, u8* dst) u8* savData; if (sector != SECTOR_ID_TRAINER_HILL && sector != SECTOR_ID_RECORDED_BATTLE) - return 0xFF; + return SAVE_STATUS_ERROR; ReadFlash(sector, 0, (u8 *)&gSaveDataBuffer, sizeof(struct SaveSection)); if (*(u32*)(&gSaveDataBuffer.data[0]) != SPECIAL_SECTION_SENTINEL) - return 0xFF; + return SAVE_STATUS_ERROR; // copies whole save section except u32 counter i = 0; size = 0xFFB; savData = &gSaveDataBuffer.data[4]; for (; i <= size; i++) dst[i] = savData[i]; - return 1; + return SAVE_STATUS_OK; } u32 TryWriteSpecialSaveSection(u8 sector, u8* src) @@ -880,7 +881,7 @@ u32 TryWriteSpecialSaveSection(u8 sector, u8* src) void* savDataBuffer; if (sector != SECTOR_ID_TRAINER_HILL && sector != SECTOR_ID_RECORDED_BATTLE) - return 0xFF; + return SAVE_STATUS_ERROR; savDataBuffer = &gSaveDataBuffer; *(u32*)(savDataBuffer) = SPECIAL_SECTION_SENTINEL; @@ -892,8 +893,8 @@ u32 TryWriteSpecialSaveSection(u8 sector, u8* src) for (; i <= size; i++) savData[i] = src[i]; if (ProgramFlashSectorAndVerify(sector, savDataBuffer) != 0) - return 0xFF; - return 1; + return SAVE_STATUS_ERROR; + return SAVE_STATUS_OK; } void sub_8153688(u8 taskId) diff --git a/src/script_pokemon_util_80F87D8.c b/src/script_pokemon_util_80F87D8.c index 00605d858..243125448 100755 --- a/src/script_pokemon_util_80F87D8.c +++ b/src/script_pokemon_util_80F87D8.c @@ -52,6 +52,7 @@ void SetContestTrainerGfxIds(void) gSaveBlock1Ptr->vars[VAR_OBJ_GFX_ID_2 - VARS_START] = gContestMons[2].trainerGfxId; } +// Unused void sub_80F8814(void) { u16 var1; @@ -82,7 +83,8 @@ void BufferContestTrainerAndMonNames(void) BufferContestantMonSpecies(); } -void sub_80F8864(void) +// Unused +void DoesContestCategoryHaveWinner(void) { int contestWinner; switch (gSpecialVar_ContestCategory) @@ -105,10 +107,10 @@ void sub_80F8864(void) break; } - if (!gSaveBlock1Ptr->contestWinners[contestWinner].species) - gSpecialVar_0x8004 = 0; + if (gSaveBlock1Ptr->contestWinners[contestWinner].species == SPECIES_NONE) + gSpecialVar_0x8004 = FALSE; else - gSpecialVar_0x8004 = 1; + gSpecialVar_0x8004 = TRUE; } void SaveMuseumContestPainting(void) @@ -144,9 +146,10 @@ u8 CountPlayerContestPaintings(void) return count; } +// Unused void sub_80F8970(void) { - s16 sp[4]; + s16 conditions[CONTESTANT_COUNT]; int i, j; s16 condition; s8 var0; @@ -154,28 +157,27 @@ void sub_80F8970(void) u8 r8; u8 r7; - for (i = 0; i < 4; i++) - sp[i] = gContestMonConditions[i]; + for (i = 0; i < CONTESTANT_COUNT; i++) + conditions[i] = gContestMonConditions[i]; - for (i = 0; i < 3; i++) + for (i = 0; i < CONTESTANT_COUNT - 1; i++) { - for (j = 3; j > i; j--) + for (j = CONTESTANT_COUNT - 1; j > i; j--) { - if (sp[j - 1] < sp[j]) + if (conditions[j - 1] < conditions[j]) { - int temp = sp[j]; - sp[j] = sp[j - 1]; - sp[j - 1] = temp; + int temp; + SWAP(conditions[j], conditions[j - 1], temp) } } } - condition = sp[gSpecialVar_0x8006]; + condition = conditions[gSpecialVar_0x8006]; var0 = 0; r8 = 0; - for (i = 0; i < 4; i++) + for (i = 0; i < CONTESTANT_COUNT; i++) { - if (sp[i] == condition) + if (conditions[i] == condition) { var0++; if (i == gSpecialVar_0x8006) @@ -183,15 +185,15 @@ void sub_80F8970(void) } } - for (i = 0; i < 4; i++) + for (i = 0; i < CONTESTANT_COUNT; i++) { - if (sp[i] == condition) + if (conditions[i] == condition) break; } r7 = i; var2 = r8; - for (i = 0; i < 4; i++) + for (i = 0; i < CONTESTANT_COUNT; i++) { if (condition == gContestMonConditions[i]) { @@ -704,20 +706,20 @@ static void CB2_ReturnFromChooseBattleFrontierParty(void) void ReducePlayerPartyToSelectedMons(void) { - struct Pokemon party[4]; + struct Pokemon party[MAX_FRONTIER_PARTY_SIZE]; int i; CpuFill32(0, party, sizeof party); // copy the selected pokemon according to the order. - for (i = 0; i < 4; i++) + for (i = 0; i < MAX_FRONTIER_PARTY_SIZE; i++) if (gSelectedOrderFromParty[i]) // as long as the order keeps going (did the player select 1 mon? 2? 3?), do not stop party[i] = gPlayerParty[gSelectedOrderFromParty[i] - 1]; // index is 0 based, not literal CpuFill32(0, gPlayerParty, sizeof gPlayerParty); // overwrite the first 4 with the order copied to. - for (i = 0; i < 4; i++) + for (i = 0; i < MAX_FRONTIER_PARTY_SIZE; i++) gPlayerParty[i] = party[i]; CalculatePlayerPartyCount(); diff --git a/src/secret_base.c b/src/secret_base.c index 8f954c6e8..31fd901e0 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -41,11 +41,13 @@ #include "constants/maps.h" #include "constants/map_types.h" #include "constants/metatile_behaviors.h" +#include "constants/metatile_labels.h" #include "constants/moves.h" #include "constants/secret_bases.h" #include "constants/songs.h" #include "constants/species.h" #include "constants/trainers.h" +#include "constants/tv.h" struct SecretBaseRegistryMenu { @@ -88,13 +90,13 @@ static u8 GetSecretBaseOwnerType(u8 secretBaseId); static const struct SecretBaseEntranceMetatiles sSecretBaseEntranceMetatiles[] = { - {.closedMetatileId = 0x0026, .openMetatileId = 0x0036}, - {.closedMetatileId = 0x0027, .openMetatileId = 0x0037}, - {.closedMetatileId = 0x01a0, .openMetatileId = 0x01a1}, - {.closedMetatileId = 0x01a8, .openMetatileId = 0x01a9}, - {.closedMetatileId = 0x01b0, .openMetatileId = 0x01b1}, - {.closedMetatileId = 0x0208, .openMetatileId = 0x0210}, - {.closedMetatileId = 0x0271, .openMetatileId = 0x0278}, + {.closedMetatileId = METATILE_General_SecretBase_TreeLeft, .openMetatileId = METATILE_General_SecretBase_VineLeft}, + {.closedMetatileId = METATILE_General_SecretBase_TreeRight, .openMetatileId = METATILE_General_SecretBase_VineRight}, + {.closedMetatileId = METATILE_General_RedCaveIndent, .openMetatileId = METATILE_General_RedCaveOpen}, + {.closedMetatileId = METATILE_General_YellowCaveIndent, .openMetatileId = METATILE_General_YellowCaveOpen}, + {.closedMetatileId = METATILE_General_BlueCaveIndent, .openMetatileId = METATILE_General_BlueCaveOpen}, + {.closedMetatileId = METATILE_Fallarbor_BrownCaveIndent, .openMetatileId = METATILE_Fallarbor_BrownCaveOpen}, + {.closedMetatileId = METATILE_Fortree_SecretBase_Shrub, .openMetatileId = METATILE_Fortree_SecretBase_ShrubOpen}, }; // mapNum, warpId, x, y @@ -452,10 +454,10 @@ static void EnterNewlyCreatedSecretBase_StartFadeIn(void) ScriptContext2_Enable(); HideMapNamePopUpWindow(); - FindMetatileIdMapCoords(&x, &y, 0x220); + FindMetatileIdMapCoords(&x, &y, METATILE_SecretBase_PC); x += 7; y += 7; - MapGridSetMetatileIdAt(x, y, 0x220 | METATILE_COLLISION_MASK); + MapGridSetMetatileIdAt(x, y, METATILE_SecretBase_PC | METATILE_COLLISION_MASK); CurrentMapDrawMetatileAt(x, y); FadeInFromBlack(); CreateTask(EnterNewlyCreatedSecretBase_WaitFadeIn, 0); @@ -506,7 +508,7 @@ void InitSecretBaseAppearance(bool8 hidePC) secretBaseId = VarGet(VAR_CURRENT_SECRET_BASE); decorations = gSaveBlock1Ptr->secretBases[secretBaseId].decorations; decorPos = gSaveBlock1Ptr->secretBases[secretBaseId].decorationPositions; - for (x = 0; x < 16; x++) + for (x = 0; x < DECOR_MAX_SECRET_BASE; x++) { if (decorations[x] > 0 && decorations[x] <= NUM_DECORATIONS && gDecorations[decorations[x]].permission != DECORPERM_SPRITE) ShowDecorationOnMap((decorPos[x] >> 4) + 7, (decorPos[x] & 0xF) + 7, decorations[x]); @@ -515,14 +517,14 @@ void InitSecretBaseAppearance(bool8 hidePC) if (secretBaseId != 0) { // Another player's secret base. Change PC type to the "Register" PC. - FindMetatileIdMapCoords(&x, &y, 0x220); - MapGridSetMetatileIdAt(x + 7, y + 7, 0x221 | METATILE_COLLISION_MASK); + FindMetatileIdMapCoords(&x, &y, METATILE_SecretBase_PC); + MapGridSetMetatileIdAt(x + 7, y + 7, METATILE_SecretBase_RegisterPC | METATILE_COLLISION_MASK); } else if (hidePC == TRUE && VarGet(VAR_SECRET_BASE_INITIALIZED) == 1) { // Change PC to regular ground tile. - FindMetatileIdMapCoords(&x, &y, 0x220); - MapGridSetMetatileIdAt(x + 7, y + 7, 0x20a | METATILE_COLLISION_MASK); + FindMetatileIdMapCoords(&x, &y, METATILE_SecretBase_PC); + MapGridSetMetatileIdAt(x + 7, y + 7, METATILE_SecretBase_Ground | METATILE_COLLISION_MASK); } } } @@ -1174,48 +1176,60 @@ void SecretBasePerStepCallback(u8 taskId) VarSet(VAR_SECRET_BASE_STEP_COUNTER, VarGet(VAR_SECRET_BASE_STEP_COUNTER) + 1); behavior = MapGridGetMetatileBehaviorAt(x, y); tileId = MapGridGetMetatileIdAt(x, y); - if (tileId == 0x234 || tileId == 0x23C) + if (tileId == METATILE_SecretBase_Board_Top || tileId == METATILE_SecretBase_Board_Bottom) { if (sInFriendSecretBase == TRUE) { - VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x20); + VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | SECRET_BASE_USED_SOLID_BOARD); } } - else if (tileId == 0x2b8 || tileId == 0x2b9 || tileId == 0x2ba || tileId == 0x2c0 || tileId == 0x2c1 || tileId == 0x2c2 || tileId == 0x2c8 || tileId == 0x2c9 || tileId == 0x2ca) + else if (tileId == METATILE_SecretBase_SmallChair + || tileId == METATILE_SecretBase_PokemonChair + || tileId == METATILE_SecretBase_HeavyChair + || tileId == METATILE_SecretBase_PrettyChair + || tileId == METATILE_SecretBase_ComfortChair + || tileId == METATILE_SecretBase_RaggedChair + || tileId == METATILE_SecretBase_BrickChair + || tileId == METATILE_SecretBase_CampChair + || tileId == METATILE_SecretBase_HardChair) { if (sInFriendSecretBase == TRUE) - VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x01); + VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | SECRET_BASE_USED_CHAIR); } - else if (tileId == 0x239 || tileId == 0x241 || tileId == 0x251 || tileId == 0x259) + else if (tileId == METATILE_SecretBase_RedTent_DoorTop + || tileId == METATILE_SecretBase_RedTent_Door + || tileId == METATILE_SecretBase_BlueTent_DoorTop + || tileId == METATILE_SecretBase_BlueTent_Door) { if (sInFriendSecretBase == TRUE) - VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x04); + VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | SECRET_BASE_USED_TENT); } - else if ((behavior == 0x34 && tileId == 0x26d) || (behavior == 0x35 && MapGridGetMetatileIdAt(x, y) == 0x26a)) + else if ((behavior == MB_IMPASSABLE_NORTHEAST && tileId == METATILE_SecretBase_Stand_RightCorner) + || (behavior == MB_IMPASSABLE_NORTHWEST && MapGridGetMetatileIdAt(x, y) == METATILE_SecretBase_Stand_LeftCorner)) { if (sInFriendSecretBase == TRUE) - VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x200); + VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | SECRET_BASE_USED_STAND); } - else if (behavior == 0xc1 && tileId == 0x23d) + else if (behavior == MB_IMPASSABLE_WEST_AND_EAST && tileId == METATILE_SecretBase_Slide_Stairs) { if (sInFriendSecretBase == TRUE) { - VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) ^ 0x1000); - VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x2000); + VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) ^ SECRET_BASE_USED_SLIDE); + VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | SECRET_BASE_DECLINED_SLIDE); } } - else if (behavior == 0x47 && tileId == 0x23e) + else if (behavior == MB_SLIDE_SOUTH && tileId == METATILE_SecretBase_Slide) { if (sInFriendSecretBase == TRUE) { - VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x1000); - VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) ^ 0x2000); + VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | SECRET_BASE_USED_SLIDE); + VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) ^ SECRET_BASE_DECLINED_SLIDE); } } else if (MetatileBehavior_IsSecretBaseGlitterMat(behavior) == TRUE) { if (sInFriendSecretBase == TRUE) - VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x80); + VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | SECRET_BASE_USED_GLITTER_MAT); } else if (MetatileBehavior_IsSecretBaseBalloon(behavior) == TRUE) { @@ -1224,13 +1238,13 @@ void SecretBasePerStepCallback(u8 taskId) { switch ((int)MapGridGetMetatileIdAt(x, y)) { - case 0x338: - case 0x33c: - case 0x340: - VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x02); + case METATILE_SecretBase_RedBalloon: + case METATILE_SecretBase_BlueBalloon: + case METATILE_SecretBase_YellowBalloon: + VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | SECRET_BASE_USED_BALLOON); break; - case 0x228: - VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x100); + case METATILE_SecretBase_MudBall: + VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | SECRET_BASE_USED_MUD_BALL); break; } } @@ -1238,23 +1252,23 @@ void SecretBasePerStepCallback(u8 taskId) else if (MetatileBehavior_IsSecretBaseBreakableDoor(behavior) == TRUE) { if (sInFriendSecretBase == TRUE) - VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x400); + VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | SECRET_BASE_USED_BREAKABLE_DOOR); ShatterSecretBaseBreakableDoor(x, y); } else if (MetatileBehavior_IsSecretBaseSoundMat(behavior) == TRUE){ if (sInFriendSecretBase == TRUE) - VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x8000); + VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | SECRET_BASE_USED_NOTE_MAT); } else if (MetatileBehavior_IsSecretBaseJumpMat(behavior) == TRUE) { if (sInFriendSecretBase == TRUE) - VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x4000); + VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | SECRET_BASE_USED_JUMP_MAT); } else if (MetatileBehavior_IsSecretBaseSpinMat(behavior) == TRUE) { if (sInFriendSecretBase == TRUE) - VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x02); + VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | SECRET_BASE_USED_SPIN_MAT); } } break; @@ -1417,9 +1431,8 @@ static void SortSecretBasesByRegistryStatus(void) { if ((secretBases[i].registryStatus == 0 && secretBases[j].registryStatus == 1) || (secretBases[i].registryStatus == 2 && secretBases[j].registryStatus != 2)) { - struct SecretBase temp = secretBases[i]; - secretBases[i] = secretBases[j]; - secretBases[j] = temp; + struct SecretBase temp; + SWAP(secretBases[i], secretBases[j], temp) } } } @@ -1461,48 +1474,57 @@ bool8 SecretBaseBelongsToPlayer(struct SecretBase *secretBase) return TRUE; } +#define DELETED_BASE_A (1 << 0) +#define DELETED_BASE_B (1 << 1) +#define DELETED_BASE_C (1 << 2) + void DeleteFirstOldBaseFromPlayerInRecordMixingFriendsRecords(struct SecretBase *basesA, struct SecretBase *basesB, struct SecretBase *basesC) { u8 i; - u8 sbFlags = 0x0; + u8 sbFlags = 0; for (i = 0; i < SECRET_BASES_COUNT; i++) { - if (!(sbFlags & 0x1)) // 001 + if (!(sbFlags & DELETED_BASE_A)) { if (SecretBaseBelongsToPlayer(&basesA[i]) == TRUE) { ClearSecretBase(&basesA[i]); - sbFlags |= 1; + sbFlags |= DELETED_BASE_A; } } - if (!(sbFlags & 0x2)) // 010 + if (!(sbFlags & DELETED_BASE_B)) { if (SecretBaseBelongsToPlayer(&basesB[i]) == TRUE) { ClearSecretBase(&basesB[i]); - sbFlags |= 2; + sbFlags |= DELETED_BASE_B; } } - if (!(sbFlags & 0x4)) // 100 + if (!(sbFlags & DELETED_BASE_C)) { if (SecretBaseBelongsToPlayer(&basesC[i]) == TRUE) { ClearSecretBase(&basesC[i]); - sbFlags |= 4; + sbFlags |= DELETED_BASE_C; } } - if (sbFlags == 0x7) // 111 + if (sbFlags == (DELETED_BASE_A | DELETED_BASE_B | DELETED_BASE_C)) { break; } } } -bool8 sub_80EAD14(struct SecretBase *secretBase, struct SecretBase *secretBases, u8 c) +#undef DELETED_BASE_A +#undef DELETED_BASE_B +#undef DELETED_BASE_C + +// returns TRUE if secretBase was deleted, FALSE otherwise +static bool8 ClearDuplicateOwnedSecretBases(struct SecretBase *secretBase, struct SecretBase *secretBases, u8 c) { u8 i; @@ -1546,11 +1568,11 @@ void sub_80EAD94(struct SecretBase *basesA, struct SecretBase *basesB, struct Se { basesA[i].sbr_field_1_0 = 1; } - if (!sub_80EAD14(&basesA[i], basesB, i)) + if (!ClearDuplicateOwnedSecretBases(&basesA[i], basesB, i)) { - if (!sub_80EAD14(&basesA[i], basesC, i)) + if (!ClearDuplicateOwnedSecretBases(&basesA[i], basesC, i)) { - sub_80EAD14(&basesA[i], basesD, i); + ClearDuplicateOwnedSecretBases(&basesA[i], basesD, i); } } } @@ -1560,9 +1582,9 @@ void sub_80EAD94(struct SecretBase *basesA, struct SecretBase *basesB, struct Se if (basesB[i].secretBaseId) { basesB[i].battledOwnerToday = 0; - if (!sub_80EAD14(&basesB[i], basesC, i)) + if (!ClearDuplicateOwnedSecretBases(&basesB[i], basesC, i)) { - sub_80EAD14(&basesB[i], basesD, i); + ClearDuplicateOwnedSecretBases(&basesB[i], basesD, i); } } } @@ -1571,7 +1593,7 @@ void sub_80EAD94(struct SecretBase *basesA, struct SecretBase *basesB, struct Se if (basesC[i].secretBaseId) { basesC[i].battledOwnerToday = 0; - sub_80EAD14(&basesC[i], basesD, i); + ClearDuplicateOwnedSecretBases(&basesC[i], basesD, i); } if (basesD[i].secretBaseId) { @@ -1617,6 +1639,17 @@ void sub_80EAEF4(struct SecretBaseRecordMixer *mixers) sub_80EABA4(&mixers[2], 0); } +#define INIT_SECRET_BASE_RECORD_MIXER(linkId1, linkId2, linkId3) \ + mixers[0].secretBases = secretBases + linkId1 * recordSize; \ + mixers[0].version = gLinkPlayers[linkId1].version & 0xFF; \ + mixers[0].language = gLinkPlayers[linkId1].language; \ + mixers[1].secretBases = secretBases + linkId2 * recordSize; \ + mixers[1].version = gLinkPlayers[linkId2].version & 0xFF; \ + mixers[1].language = gLinkPlayers[linkId2].language; \ + mixers[2].secretBases = secretBases + linkId3 * recordSize; \ + mixers[2].version = gLinkPlayers[linkId3].version & 0xFF; \ + mixers[2].language = gLinkPlayers[linkId3].language; + void ReceiveSecretBasesData(void *secretBases, size_t recordSize, u8 linkIdx) { struct SecretBaseRecordMixer mixers[3]; @@ -1638,48 +1671,16 @@ void ReceiveSecretBasesData(void *secretBases, size_t recordSize, u8 linkIdx) switch (linkIdx) { case 0: - mixers[0].secretBases = secretBases + 1 * recordSize; - mixers[0].version = gLinkPlayers[1].version & 0xFF; - mixers[0].language = gLinkPlayers[1].language; - mixers[1].secretBases = secretBases + 2 * recordSize; - mixers[1].version = gLinkPlayers[2].version & 0xFF; - mixers[1].language = gLinkPlayers[2].language; - mixers[2].secretBases = secretBases + 3 * recordSize; - mixers[2].version = gLinkPlayers[3].version & 0xFF; - mixers[2].language = gLinkPlayers[3].language; + INIT_SECRET_BASE_RECORD_MIXER(1, 2, 3) break; case 1: - mixers[0].secretBases = secretBases + 2 * recordSize; - mixers[0].version = gLinkPlayers[2].version & 0xFF; - mixers[0].language = gLinkPlayers[2].language; - mixers[1].secretBases = secretBases + 3 * recordSize; - mixers[1].version = gLinkPlayers[3].version & 0xFF; - mixers[1].language = gLinkPlayers[3].language; - mixers[2].secretBases = secretBases + 0 * recordSize; - mixers[2].version = gLinkPlayers[0].version & 0xFF; - mixers[2].language = gLinkPlayers[0].language; + INIT_SECRET_BASE_RECORD_MIXER(2, 3, 0) break; case 2: - mixers[0].secretBases = secretBases + 3 * recordSize; - mixers[0].version = gLinkPlayers[3].version & 0xFF; - mixers[0].language = gLinkPlayers[3].language; - mixers[1].secretBases = secretBases + 0 * recordSize; - mixers[1].version = gLinkPlayers[0].version & 0xFF; - mixers[1].language = gLinkPlayers[0].language; - mixers[2].secretBases = secretBases + 1 * recordSize; - mixers[2].version = gLinkPlayers[1].version & 0xFF; - mixers[2].language = gLinkPlayers[1].language; + INIT_SECRET_BASE_RECORD_MIXER(3, 0, 1) break; case 3: - mixers[0].secretBases = secretBases + 0 * recordSize; - mixers[0].version = gLinkPlayers[0].version & 0xFF; - mixers[0].language = gLinkPlayers[0].language; - mixers[1].secretBases = secretBases + 1 * recordSize; - mixers[1].version = gLinkPlayers[1].version & 0xFF; - mixers[1].language = gLinkPlayers[1].language; - mixers[2].secretBases = secretBases + 2 * recordSize; - mixers[2].version = gLinkPlayers[2].version & 0xFF; - mixers[2].language = gLinkPlayers[2].language; + INIT_SECRET_BASE_RECORD_MIXER(0, 1, 2) break; } @@ -1734,13 +1735,13 @@ void InitSecretBaseVars(void) sInFriendSecretBase = FALSE; } -void sub_80EB218(void) +void CheckLeftFriendsSecretBase(void) { if (VarGet(VAR_SECRET_BASE_IS_NOT_LOCAL) && sInFriendSecretBase == TRUE && !CurMapIsSecretBase()) { VarSet(VAR_SECRET_BASE_IS_NOT_LOCAL, FALSE); sInFriendSecretBase = FALSE; - sub_80EEA70(); + TryPutSecretBaseSecretsOnAir(); VarSet(VAR_SECRET_BASE_STEP_COUNTER, 0); VarSet(VAR_SECRET_BASE_LAST_ITEM_USED, 0); VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, 0); @@ -1749,252 +1750,245 @@ void sub_80EB218(void) } } -void sub_80EB290(void) +void CheckInteractedWithFriendsDollDecor(void) { if (VarGet(VAR_CURRENT_SECRET_BASE) != 0) - VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x800); + VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | SECRET_BASE_USED_DOLL); } -void sub_80EB2C8(void) +void CheckInteractedWithFriendsCushionDecor(void) { if (VarGet(VAR_CURRENT_SECRET_BASE) != 0) - VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x400); + VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | SECRET_BASE_USED_CUSHION); } -void sub_80EB300(void) +void DeclinedSecretBaseBattle(void) { if (VarGet(VAR_CURRENT_SECRET_BASE) != 0) { - VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) & ~0x3800); - VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) & ~0x001); - VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x2000); + VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) & ~(SECRET_BASE_BATTLED_WON | SECRET_BASE_BATTLED_LOST | SECRET_BASE_DECLINED_BATTLE)); + VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) & ~(SECRET_BASE_BATTLED_DRAW)); + VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | SECRET_BASE_DECLINED_BATTLE); } } -void sub_80EB368(void) +void WonSecretBaseBattle(void) { if (VarGet(VAR_CURRENT_SECRET_BASE) != 0) { - VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) & ~0x3800); - VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) & ~0x001); - VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x800); + VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) & ~(SECRET_BASE_BATTLED_WON | SECRET_BASE_BATTLED_LOST | SECRET_BASE_DECLINED_BATTLE)); + VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) & ~(SECRET_BASE_BATTLED_DRAW)); + VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | SECRET_BASE_BATTLED_WON); } } -void sub_80EB3D0(void) +void LostSecretBaseBattle(void) { if (VarGet(VAR_CURRENT_SECRET_BASE) != 0) { - VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) & ~0x3800); - VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) & ~0x001); - VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x1000); + VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) & ~(SECRET_BASE_BATTLED_WON | SECRET_BASE_BATTLED_LOST | SECRET_BASE_DECLINED_BATTLE)); + VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) & ~(SECRET_BASE_BATTLED_DRAW)); + VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | SECRET_BASE_BATTLED_LOST); } } -void sub_80EB438(void) +void DrewSecretBaseBattle(void) { if (VarGet(VAR_CURRENT_SECRET_BASE) != 0) { - VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) & ~0x3800); - VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) & ~0x001); - VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x001); + VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) & ~(SECRET_BASE_BATTLED_WON | SECRET_BASE_BATTLED_LOST | SECRET_BASE_DECLINED_BATTLE)); + VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) & ~(SECRET_BASE_BATTLED_DRAW)); + VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | SECRET_BASE_BATTLED_DRAW); } } -void SetSecretBaseSecretsTvFlags_Poster(void) +void CheckInteractedWithFriendsPosterDecor(void) { s16 x, y; GetXYCoordsOneStepInFrontOfPlayer(&x, &y); switch (MapGridGetMetatileIdAt(x, y)) { - case 0x31C: - case 0x31D: - case 0x31E: - case 0x31F: - case 0x324: - case 0x325: - case 0x326: - case 0x327: - case 0x32C: - case 0x32D: - case 0x330: - case 0x331: - case 0x332: - case 0x333: - case 0x334: + case METATILE_SecretBase_PikaPoster_Left: + case METATILE_SecretBase_PikaPoster_Right: + case METATILE_SecretBase_LongPoster_Left: + case METATILE_SecretBase_LongPoster_Right: + case METATILE_SecretBase_SeaPoster_Left: + case METATILE_SecretBase_SeaPoster_Right: + case METATILE_SecretBase_SkyPoster_Left: + case METATILE_SecretBase_SkyPoster_Right: + case METATILE_SecretBase_KissPoster_Left: + case METATILE_SecretBase_KissPoster_Right: + case METATILE_SecretBase_BallPoster: + case METATILE_SecretBase_GreenPoster: + case METATILE_SecretBase_RedPoster: + case METATILE_SecretBase_BluePoster: + case METATILE_SecretBase_CutePoster: if (VarGet(VAR_CURRENT_SECRET_BASE) != 0) - VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x4000); + VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | SECRET_BASE_USED_POSTER); break; } } -void SetSecretBaseSecretsTvFlags_MiscFurnature(void) +void CheckInteractedWithFriendsFurnitureBottom(void) { s16 x, y; GetXYCoordsOneStepInFrontOfPlayer(&x, &y); switch (MapGridGetMetatileIdAt(x, y)) { - case 0x28a: - case 0x28b: - // Bird Statue + case METATILE_SecretBase_GlassOrnament_Base1: + case METATILE_SecretBase_GlassOrnament_Base2: if (VarGet(VAR_CURRENT_SECRET_BASE) != 0) - VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x40); + VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | SECRET_BASE_USED_GLASS_ORNAMENT); break; - case 0x2d8: - case 0x2d9: - case 0x2da: - case 0x2db: - case 0x2dc: - case 0x2dd: - case 0x2e8: - case 0x2e9: - case 0x2ea: - case 0x2eb: - case 0x2ec: - case 0x2ed: - case 0x2ee: - case 0x2ef: - case 0x2f8: - case 0x2f9: - case 0x2fa: - case 0x2fb: - // Plants + case METATILE_SecretBase_RedPlant_Base1: + case METATILE_SecretBase_RedPlant_Base2: + case METATILE_SecretBase_TropicalPlant_Base1: + case METATILE_SecretBase_TropicalPlant_Base2: + case METATILE_SecretBase_PrettyFlower_Base1: + case METATILE_SecretBase_PrettyFlower_Base2: + case METATILE_SecretBase_ColorfulFlowers_BaseLeft1: + case METATILE_SecretBase_ColorfulFlowers_BaseRight1: + case METATILE_SecretBase_ColorfulFlowers_BaseLeft2: + case METATILE_SecretBase_ColorfulFlowers_BaseRight2: + case METATILE_SecretBase_BigPlant_BaseLeft1: + case METATILE_SecretBase_BigPlant_BaseRight1: + case METATILE_SecretBase_BigPlant_BaseLeft2: + case METATILE_SecretBase_BigPlant_BaseRight2: + case METATILE_SecretBase_GorgeousPlant_BaseLeft1: + case METATILE_SecretBase_GorgeousPlant_BaseRight1: + case METATILE_SecretBase_GorgeousPlant_BaseLeft2: + case METATILE_SecretBase_GorgeousPlant_BaseRight2: if (VarGet(VAR_CURRENT_SECRET_BASE) != 0) - VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x8); + VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | SECRET_BASE_USED_PLANT); break; - case 0x22c: - case 0x233: - // Fence + case METATILE_SecretBase_Fence_Horizontal: + case METATILE_SecretBase_Fence_Vertical: if (VarGet(VAR_CURRENT_SECRET_BASE) != 0) - VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x40); + VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | SECRET_BASE_USED_FENCE); break; - case 0x288: - case 0x289: - // Tire + case METATILE_SecretBase_Tire_BottomLeft: + case METATILE_SecretBase_Tire_BottomRight: if (VarGet(VAR_CURRENT_SECRET_BASE) != 0) - VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x100); + VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | SECRET_BASE_USED_TIRE); break; - case 0x22d: - case 0x22e: - case 0x22f: - // Bricks + case METATILE_SecretBase_RedBrick_Bottom: + case METATILE_SecretBase_YellowBrick_Bottom: + case METATILE_SecretBase_BlueBrick_Bottom: if (VarGet(VAR_CURRENT_SECRET_BASE) != 0) - VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x10); + VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | SECRET_BASE_USED_BRICK); break; - case 0x287: - case 0x28f: - case 0x298: - case 0x299: - case 0x29a: - case 0x29b: - case 0x29c: - case 0x29d: - case 0x29e: - case 0x29f: - case 0x2ab: - case 0x2b0: - case 0x2b1: - case 0x2b2: - case 0x2b4: - case 0x2b5: - case 0x2b6: - case 0x2b7: - case 0x2cb: - case 0x2cc: - case 0x2cd: - case 0x2ce: - case 0x2cf: - // Tables + case METATILE_SecretBase_SmallDesk: + case METATILE_SecretBase_PokemonDesk: + case METATILE_SecretBase_HeavyDesk_BottomLeft: + case METATILE_SecretBase_HeavyDesk_BottomMid: + case METATILE_SecretBase_HeavyDesk_BottomRight: + case METATILE_SecretBase_RaggedDesk_BottomLeft: + case METATILE_SecretBase_RaggedDesk_BottomMid: + case METATILE_SecretBase_RaggedDesk_BottomRight: + case METATILE_SecretBase_ComfortDesk_BottomLeft: + case METATILE_SecretBase_ComfortDesk_BottomMid: + case METATILE_SecretBase_ComfortDesk_BottomRight: + case METATILE_SecretBase_BrickDesk_BottomLeft: + case METATILE_SecretBase_BrickDesk_BottomMid: + case METATILE_SecretBase_BrickDesk_BottomRight: + case METATILE_SecretBase_CampDesk_BottomLeft: + case METATILE_SecretBase_CampDesk_BottomMid: + case METATILE_SecretBase_CampDesk_BottomRight: + case METATILE_SecretBase_HardDesk_BottomLeft: + case METATILE_SecretBase_HardDesk_BottomMid: + case METATILE_SecretBase_HardDesk_BottomRight: + case METATILE_SecretBase_PrettyDesk_BottomLeft: + case METATILE_SecretBase_PrettyDesk_BottomMid: + case METATILE_SecretBase_PrettyDesk_BottomRight: if (VarGet(VAR_CURRENT_SECRET_BASE) != 0) - VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x8); + VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | SECRET_BASE_USED_DESK); break; } } -void SetSecretBaseSecretsTvFlags_LargeDecorationSpot(void) +void CheckInteractedWithFriendsFurnitureMiddle(void) { s16 x, y; GetXYCoordsOneStepInFrontOfPlayer(&x, &y); switch (MapGridGetMetatileIdAt(x, y)) { - case 0x291: - case 0x294: - case 0x297: - case 0x2a1: - case 0x2a5: - case 0x2a9: - case 0x2ad: - case 0x2bb: - case 0x2be: - case 0x2c3: - case 0x2c6: + case METATILE_SecretBase_HeavyDesk_TopMid: + case METATILE_SecretBase_RaggedDesk_TopMid: + case METATILE_SecretBase_ComfortDesk_TopMid: + case METATILE_SecretBase_BrickDesk_TopMid: + case METATILE_SecretBase_BrickDesk_Center: + case METATILE_SecretBase_CampDesk_TopMid: + case METATILE_SecretBase_CampDesk_Center: + case METATILE_SecretBase_HardDesk_TopMid: + case METATILE_SecretBase_HardDesk_Center: + case METATILE_SecretBase_PrettyDesk_TopMid: + case METATILE_SecretBase_PrettyDesk_Center: if (VarGet(VAR_CURRENT_SECRET_BASE) != 0) - VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x8); + VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | SECRET_BASE_USED_DESK); break; } } -void SetSecretBaseSecretsTvFlags_SmallDecorationSpot(void) +void CheckInteractedWithFriendsFurnitureTop(void) { s16 x, y; GetXYCoordsOneStepInFrontOfPlayer(&x, &y); switch (MapGridGetMetatileIdAt(x, y)) { - case 0x290: - case 0x292: - case 0x293: - case 0x295: - case 0x296: - case 0x2a0: - case 0x2a2: - case 0x2a3: - case 0x2a4: - case 0x2a6: - case 0x2a7: - case 0x2a8: - case 0x2aa: - case 0x2ac: - case 0x2ae: - case 0x2af: - case 0x2bc: - case 0x2bd: - case 0x2bf: - case 0x2c4: - case 0x2c5: - case 0x2c7: + case METATILE_SecretBase_HeavyDesk_TopLeft: + case METATILE_SecretBase_HeavyDesk_TopRight: + case METATILE_SecretBase_RaggedDesk_TopLeft: + case METATILE_SecretBase_RaggedDesk_TopRight: + case METATILE_SecretBase_ComfortDesk_TopLeft: + case METATILE_SecretBase_ComfortDesk_TopRight: + case METATILE_SecretBase_BrickDesk_TopLeft: + case METATILE_SecretBase_BrickDesk_TopRight: + case METATILE_SecretBase_BrickDesk_MidLeft: + case METATILE_SecretBase_BrickDesk_MidRight: + case METATILE_SecretBase_CampDesk_TopLeft: + case METATILE_SecretBase_CampDesk_TopRight: + case METATILE_SecretBase_CampDesk_MidLeft: + case METATILE_SecretBase_CampDesk_MidRight: + case METATILE_SecretBase_HardDesk_TopLeft: + case METATILE_SecretBase_HardDesk_TopRight: + case METATILE_SecretBase_HardDesk_MidLeft: + case METATILE_SecretBase_HardDesk_MidRight: + case METATILE_SecretBase_PrettyDesk_TopLeft: + case METATILE_SecretBase_PrettyDesk_TopRight: + case METATILE_SecretBase_PrettyDesk_MidLeft: + case METATILE_SecretBase_PrettyDesk_MidRight: if (VarGet(VAR_CURRENT_SECRET_BASE) != 0) - VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x8); + VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | SECRET_BASE_USED_DESK); break; - case 0x280: - case 0x281: + case METATILE_SecretBase_Tire_TopLeft: + case METATILE_SecretBase_Tire_TopRight: if (VarGet(VAR_CURRENT_SECRET_BASE) != 0) - VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x100); + VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | SECRET_BASE_USED_TIRE); break; - case 0x225: - case 0x226: - case 0x227: + case METATILE_SecretBase_RedBrick_Top: + case METATILE_SecretBase_YellowBrick_Top: + case METATILE_SecretBase_BlueBrick_Top: if (VarGet(VAR_CURRENT_SECRET_BASE) != 0) - VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x10); + VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | SECRET_BASE_USED_BRICK); break; } } -void SetSecretBaseSecretsTvFlags_SandOrnament(void) +void CheckInteractedWithFriendsSandOrnament(void) { s16 x, y; GetXYCoordsOneStepInFrontOfPlayer(&x, &y); switch ((int)MapGridGetMetatileIdAt(x, y)) { - case 0x28d: - case 0x28e: - // Sand Ornament + case METATILE_SecretBase_SandOrnament_Base1: + case METATILE_SecretBase_SandOrnament_Base2: if (VarGet(VAR_CURRENT_SECRET_BASE) != 0) - VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x4); + VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | SECRET_BASE_USED_SAND_ORNAMENT); break; } } diff --git a/src/start_menu.c b/src/start_menu.c index 8aacd8065..f6cad8aec 100644 --- a/src/start_menu.c +++ b/src/start_menu.c @@ -966,8 +966,8 @@ static u8 SaveConfirmInputCallback(void) case 0: // Yes switch (gSaveFileStatus) { - case 0: - case 2: + case SAVE_STATUS_EMPTY: + case SAVE_STATUS_CORRUPT: if (gDifferentSaveFile == FALSE) { sSaveDialogCallback = SaveFileExistsCallback; @@ -1059,14 +1059,10 @@ static u8 SaveDoSaveCallback(void) saveStatus = TrySavingData(SAVE_NORMAL); } - if (saveStatus == 1) // Save succeded - { + if (saveStatus == SAVE_STATUS_OK) ShowSaveMessage(gText_PlayerSavedGame, SaveSuccessCallback); - } - else // Save error - { + else ShowSaveMessage(gText_SaveError, SaveErrorCallback); - } SaveStartTimer(); return SAVE_IN_PROGRESS; diff --git a/src/trade.c b/src/trade.c index af60d64c9..a9a0b9b2a 100644 --- a/src/trade.c +++ b/src/trade.c @@ -217,7 +217,7 @@ static void sub_807E55C(struct Sprite *sprite); static void sub_807E5D8(struct Sprite *sprite); static void sub_807E64C(struct Sprite *sprite); static void sub_807E6AC(struct Sprite *sprite); -static void BuffeInGameTradeMonName(void); +static void BufferInGameTradeMonName(void); static void SetInGameTradeMail(struct MailStruct *mail, const struct InGameTrade *trade); static void CB2_UpdateLinkTrade(void); static void CB2_TryFinishTrade(void); @@ -3761,7 +3761,7 @@ static bool8 AnimateTradeSequenceCable(void) FREE_AND_SET_NULL(sTradeData); } SetMainCallback2(CB2_ReturnToField); - BuffeInGameTradeMonName(); + BufferInGameTradeMonName(); } break; } @@ -4276,7 +4276,7 @@ static bool8 AnimateTradeSequenceWireless(void) FREE_AND_SET_NULL(sTradeData); } SetMainCallback2(CB2_ReturnToField); - BuffeInGameTradeMonName(); + BufferInGameTradeMonName(); } break; } @@ -4418,7 +4418,7 @@ u16 GetInGameTradeSpeciesInfo(void) return inGameTrade->requestedSpecies; } -static void BuffeInGameTradeMonName(void) +static void BufferInGameTradeMonName(void) { u8 nickname[32]; const struct InGameTrade *inGameTrade = &sIngameTrades[gSpecialVar_0x8004]; @@ -637,50 +637,51 @@ static const u8 *const sTVWhatsNo1InHoennTodayTextGroup[] = { gTVWhatsNo1InHoennTodayText08 }; -static const u8 *const sTVSecretBaseSecretsTextGroup[] = { - gTVSecretBaseSecretsText00, - gTVSecretBaseSecretsText01, - gTVSecretBaseSecretsText02, - gTVSecretBaseSecretsText03, - gTVSecretBaseSecretsText04, - gTVSecretBaseSecretsText05, - gTVSecretBaseSecretsText06, - gTVSecretBaseSecretsText07, - gTVSecretBaseSecretsText08, - gTVSecretBaseSecretsText09, - gTVSecretBaseSecretsText10, - gTVSecretBaseSecretsText11, - gTVSecretBaseSecretsText12, - gTVSecretBaseSecretsText13, - gTVSecretBaseSecretsText14, - gTVSecretBaseSecretsText15, - gTVSecretBaseSecretsText16, - gTVSecretBaseSecretsText17, - gTVSecretBaseSecretsText18, - gTVSecretBaseSecretsText19, - gTVSecretBaseSecretsText20, - gTVSecretBaseSecretsText21, - gTVSecretBaseSecretsText22, - gTVSecretBaseSecretsText23, - gTVSecretBaseSecretsText24, - gTVSecretBaseSecretsText25, - gTVSecretBaseSecretsText26, - gTVSecretBaseSecretsText27, - gTVSecretBaseSecretsText28, - gTVSecretBaseSecretsText29, - gTVSecretBaseSecretsText30, - gTVSecretBaseSecretsText31, - gTVSecretBaseSecretsText32, - gTVSecretBaseSecretsText33, - gTVSecretBaseSecretsText34, - gTVSecretBaseSecretsText35, - gTVSecretBaseSecretsText36, - gTVSecretBaseSecretsText37, - gTVSecretBaseSecretsText38, - gTVSecretBaseSecretsText39, - gTVSecretBaseSecretsText40, - gTVSecretBaseSecretsText41, - gTVSecretBaseSecretsText42 +static const u8 *const sTVSecretBaseSecretsTextGroup[SBSECRETS_NUM_STATES] = +{ + [SBSECRETS_STATE_INTRO] = TVSecretBaseSecrets_Text_Intro, + [SBSECRETS_STATE_DO_NEXT1] = TVSecretBaseSecrets_Text_WhatWillPlayerDoNext1, + [SBSECRETS_STATE_DO_NEXT2] = TVSecretBaseSecrets_Text_WhatWillPlayerDoNext2, + [SBSECRETS_STATE_TOOK_X_STEPS] = TVSecretBaseSecrets_Text_TookXStepsBeforeLeaving, + [SBSECRETS_STATE_BASE_INTEREST_LOW] = TVSecretBaseSecrets_Text_BaseFailedToInterestPlayer, + [SBSECRETS_STATE_BASE_INTEREST_MED] = TVSecretBaseSecrets_Text_PlayerEnjoyedBase, + [SBSECRETS_STATE_BASE_INTEREST_HIGH] = TVSecretBaseSecrets_Text_PlayerHugeFanOfBase, + [SBSECRETS_STATE_OUTRO] = TVSecretBaseSecrets_Text_Outro, + [SBSECRETS_STATE_NOTHING_USED1] = TVSecretBaseSecrets_Text_StoppedMoving1, + [SBSECRETS_STATE_NOTHING_USED2] = TVSecretBaseSecrets_Text_StoppedMoving2, + [SBSECRETS_STATE_USED_CHAIR] = TVSecretBaseSecrets_Text_UsedChair, + [SBSECRETS_STATE_USED_BALLOON] = TVSecretBaseSecrets_Text_UsedBalloon, + [SBSECRETS_STATE_USED_TENT] = TVSecretBaseSecrets_Text_UsedTent, + [SBSECRETS_STATE_USED_PLANT] = TVSecretBaseSecrets_Text_UsedPlant, + [SBSECRETS_STATE_USED_GOLD_SHIELD] = TVSecretBaseSecrets_Text_UsedGoldShield, + [SBSECRETS_STATE_USED_SILVER_SHIELD] = TVSecretBaseSecrets_Text_UsedSilverShield, + [SBSECRETS_STATE_USED_GLASS_ORNAMENT] = TVSecretBaseSecrets_Text_UsedGlassOrnament, + [SBSECRETS_STATE_USED_TV] = TVSecretBaseSecrets_Text_UsedTV, + [SBSECRETS_STATE_USED_MUD_BALL] = TVSecretBaseSecrets_Text_UsedMudBall, + [SBSECRETS_STATE_USED_BAG] = TVSecretBaseSecrets_Text_UsedBag, + [SBSECRETS_STATE_USED_CUSHION] = TVSecretBaseSecrets_Text_UsedCushion, + [SBSECRETS_STATE_HIT_CUSHION] = TVSecretBaseSecrets_Text_HitCushion, + [SBSECRETS_STATE_HUGGED_CUSHION] = TVSecretBaseSecrets_Text_HuggedCushion, + [SBSECRETS_STATE_BATTLED_WON] = TVSecretBaseSecrets_Text_BattledWon, + [SBSECRETS_STATE_BATTLED_LOST] = TVSecretBaseSecrets_Text_BattledLost, + [SBSECRETS_STATE_DECLINED_BATTLE] = TVSecretBaseSecrets_Text_DeclinedBattle, + [SBSECRETS_STATE_USED_POSTER] = TVSecretBaseSecrets_Text_UsedPoster, + [SBSECRETS_STATE_USED_NOTE_MAT] = TVSecretBaseSecrets_Text_UsedNoteMat, + [SBSECRETS_STATE_BATTLED_DRAW] = TVSecretBaseSecrets_Text_BattledDraw, + [SBSECRETS_STATE_USED_SPIN_MAT] = TVSecretBaseSecrets_Text_UsedSpinMat, + [SBSECRETS_STATE_USED_SAND_ORNAMENT] = TVSecretBaseSecrets_Text_UsedSandOrnament, + [SBSECRETS_STATE_USED_DESK] = TVSecretBaseSecrets_Text_UsedDesk, + [SBSECRETS_STATE_USED_BRICK] = TVSecretBaseSecrets_Text_UsedBrick, + [SBSECRETS_STATE_USED_SOLID_BOARD] = TVSecretBaseSecrets_Text_UsedSolidBoard, + [SBSECRETS_STATE_USED_FENCE] = TVSecretBaseSecrets_Text_UsedFence, + [SBSECRETS_STATE_USED_GLITTER_MAT] = TVSecretBaseSecrets_Text_UsedGlitterMat, + [SBSECRETS_STATE_USED_TIRE] = TVSecretBaseSecrets_Text_UsedTire, + [SBSECRETS_STATE_USED_STAND] = TVSecretBaseSecrets_Text_UsedStand, + [SBSECRETS_STATE_USED_BREAKABLE_DOOR] = TVSecretBaseSecrets_Text_BrokeDoor, + [SBSECRETS_STATE_USED_DOLL] = TVSecretBaseSecrets_Text_UsedDoll, + [SBSECRETS_STATE_USED_SLIDE] = TVSecretBaseSecrets_Text_UsedSlide, + [SBSECRETS_STATE_DECLINED_SLIDE] = TVSecretBaseSecrets_Text_UsedSlideButDidntGoDown, + [SBSECRETS_STATE_USED_JUMP_MAT] = TVSecretBaseSecrets_Text_UsedJumpMat }; static const u8 *const sTVSafariFanClubTextGroup[] = { @@ -709,39 +710,42 @@ static const u8 *const sTVInSearchOfTrainersTextGroup[] = { gTVInSearchOfTrainersText08 }; -const u8 sTVSecretBaseSecretsStateLookup[] = { - 0x0a, - 0x0b, - 0x0c, - 0x0d, - 0x0e, - 0x0f, - 0x10, - 0x11, - 0x12, - 0x13, - 0x14, - 0x17, - 0x18, - 0x19, - 0x1a, - 0x1b, - 0x1c, - 0x1d, - 0x1e, - 0x1f, - 0x20, - 0x21, - 0x22, - 0x23, - 0x24, - 0x25, - 0x26, - 0x27, - 0x28, - 0x29, - 0x2a, - 0x2b +// Secret Base Secrets TV Show states for actions that can be taken in a secret base +// The flags that determine whether or not the action was taken are commented +const u8 sTVSecretBaseSecretsActions[NUM_SECRET_BASE_FLAGS] = +{ + SBSECRETS_STATE_USED_CHAIR, // SECRET_BASE_USED_CHAIR + SBSECRETS_STATE_USED_BALLOON, // SECRET_BASE_USED_BALLOON + SBSECRETS_STATE_USED_TENT, // SECRET_BASE_USED_TENT + SBSECRETS_STATE_USED_PLANT, // SECRET_BASE_USED_PLANT + SBSECRETS_STATE_USED_GOLD_SHIELD, // SECRET_BASE_USED_GOLD_SHIELD + SBSECRETS_STATE_USED_SILVER_SHIELD, // SECRET_BASE_USED_SILVER_SHIELD + SBSECRETS_STATE_USED_GLASS_ORNAMENT, // SECRET_BASE_USED_GLASS_ORNAMENT + SBSECRETS_STATE_USED_TV, // SECRET_BASE_USED_TV + SBSECRETS_STATE_USED_MUD_BALL, // SECRET_BASE_USED_MUD_BALL + SBSECRETS_STATE_USED_BAG, // SECRET_BASE_USED_BAG + SBSECRETS_STATE_USED_CUSHION, // SECRET_BASE_USED_CUSHION + SBSECRETS_STATE_BATTLED_WON, // SECRET_BASE_BATTLED_WON + SBSECRETS_STATE_BATTLED_LOST, // SECRET_BASE_BATTLED_LOST + SBSECRETS_STATE_DECLINED_BATTLE, // SECRET_BASE_DECLINED_BATTLE + SBSECRETS_STATE_USED_POSTER, // SECRET_BASE_USED_POSTER + SBSECRETS_STATE_USED_NOTE_MAT, // SECRET_BASE_USED_NOTE_MAT + SBSECRETS_STATE_BATTLED_DRAW, // SECRET_BASE_BATTLED_DRAW + SBSECRETS_STATE_USED_SPIN_MAT, // SECRET_BASE_USED_SPIN_MAT + SBSECRETS_STATE_USED_SAND_ORNAMENT, // SECRET_BASE_USED_SAND_ORNAMENT + SBSECRETS_STATE_USED_DESK, // SECRET_BASE_USED_DESK + SBSECRETS_STATE_USED_BRICK, // SECRET_BASE_USED_BRICK + SBSECRETS_STATE_USED_SOLID_BOARD, // SECRET_BASE_USED_SOLID_BOARD + SBSECRETS_STATE_USED_FENCE, // SECRET_BASE_USED_FENCE + SBSECRETS_STATE_USED_GLITTER_MAT, // SECRET_BASE_USED_GLITTER_MAT + SBSECRETS_STATE_USED_TIRE, // SECRET_BASE_USED_TIRE + SBSECRETS_STATE_USED_STAND, // SECRET_BASE_USED_STAND + SBSECRETS_STATE_USED_BREAKABLE_DOOR, // SECRET_BASE_USED_BREAKABLE_DOOR + SBSECRETS_STATE_USED_DOLL, // SECRET_BASE_USED_DOLL + SBSECRETS_STATE_USED_SLIDE, // SECRET_BASE_USED_SLIDE + SBSECRETS_STATE_DECLINED_SLIDE, // SECRET_BASE_DECLINED_SLIDE + SBSECRETS_STATE_USED_JUMP_MAT, // SECRET_BASE_USED_JUMP_MAT + SBSECRETS_NUM_STATES // SECRET_BASE_UNUSED_FLAG. Odd that this is included, if it were used it would overflow sTVSecretBaseSecretsTextGroup }; // .text @@ -2544,7 +2548,7 @@ void TryPutFrontierTVShowOnAir(u16 winStreak, u8 facilityAndMode) } } -void sub_80EEA70(void) +void TryPutSecretBaseSecretsOnAir(void) { TVShow *show; u8 strbuf[32]; @@ -3591,7 +3595,7 @@ void GetMomOrDadStringForTVMessage(void) } } -void sub_80F01B8(void) +void HideBattleTowerReporter(void) { VarSet(VAR_BRAVO_TRAINER_BATTLE_TOWER_ON, 0); RemoveObjectEventByLocalIdAndMap(5, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup); @@ -7340,35 +7344,32 @@ static void DoTVShowWhatsNo1InHoennToday(void) ShowFieldMessage(sTVWhatsNo1InHoennTodayTextGroup[state]); } -u8 TVShowGetFlagCount(TVShow *show) +u8 SecretBaseSecrets_GetNumActionsTaken(TVShow *show) { u8 i; - u8 tot; + u8 flagsSet; - for (i = 0, tot = 0; i < 32; i ++) + for (i = 0, flagsSet = 0; i < NUM_SECRET_BASE_FLAGS; i ++) { if ((show->secretBaseSecrets.flags >> i) & 1) - { - tot ++; - } + flagsSet++; } - return tot; + return flagsSet; } -static u8 SecretBaseSecrets_GetStateForFlagNumber(TVShow *show, u8 a1) +static u8 SecretBaseSecrets_GetStateByFlagNumber(TVShow *show, u8 flagId) { u8 i; - u8 tot; + u8 flagsSet; - for (i = 0, tot = 0; i < 32; i ++) + for (i = 0, flagsSet = 0; i < NUM_SECRET_BASE_FLAGS; i ++) { if ((show->secretBaseSecrets.flags >> i) & 1) { - if (tot == a1) - { - return sTVSecretBaseSecretsStateLookup[i]; - } - tot ++; + if (flagsSet == flagId) + return sTVSecretBaseSecretsActions[i]; + + flagsSet++; } } return 0; @@ -7378,7 +7379,7 @@ static void DoTVShowSecretBaseSecrets(void) { TVShow *show; u8 state; - u8 bitCount; + u8 numActions; u16 i; show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; @@ -7386,226 +7387,128 @@ static void DoTVShowSecretBaseSecrets(void) state = sTVShowState; switch (state) { - case 0: + case SBSECRETS_STATE_INTRO: TVShowConvertInternationalString(gStringVar1, show->secretBaseSecrets.baseOwnersName, show->secretBaseSecrets.baseOwnersNameLanguage); TVShowConvertInternationalString(gStringVar2, show->secretBaseSecrets.playerName, show->secretBaseSecrets.language); - bitCount = TVShowGetFlagCount(show); - if (bitCount == 0) + numActions = SecretBaseSecrets_GetNumActionsTaken(show); + if (numActions == 0) { - sTVShowState = 8; + sTVShowState = SBSECRETS_STATE_NOTHING_USED1; } else { - show->secretBaseSecrets.savedState = 1; - sTVSecretBaseSecretsRandomValues[0] = Random() % bitCount; - sTVShowState = SecretBaseSecrets_GetStateForFlagNumber(show, sTVSecretBaseSecretsRandomValues[0]); + show->secretBaseSecrets.savedState = SBSECRETS_STATE_DO_NEXT1; + sTVSecretBaseSecretsRandomValues[0] = Random() % numActions; + sTVShowState = SecretBaseSecrets_GetStateByFlagNumber(show, sTVSecretBaseSecretsRandomValues[0]); } break; - case 1: + case SBSECRETS_STATE_DO_NEXT1: TVShowConvertInternationalString(gStringVar2, show->secretBaseSecrets.playerName, show->secretBaseSecrets.language); - bitCount = TVShowGetFlagCount(show); - switch (bitCount) + numActions = SecretBaseSecrets_GetNumActionsTaken(show); + switch (numActions) { case 1: - sTVShowState = 9; + sTVShowState = SBSECRETS_STATE_NOTHING_USED2; break; case 2: - show->secretBaseSecrets.savedState = 2; + show->secretBaseSecrets.savedState = SBSECRETS_STATE_DO_NEXT2; if (sTVSecretBaseSecretsRandomValues[0] == 0) { - sTVShowState = SecretBaseSecrets_GetStateForFlagNumber(show, 1); + sTVShowState = SecretBaseSecrets_GetStateByFlagNumber(show, 1); } else { - sTVShowState = SecretBaseSecrets_GetStateForFlagNumber(show, 0); + sTVShowState = SecretBaseSecrets_GetStateByFlagNumber(show, 0); } break; default: for (i = 0; i < 0xFFFF; i ++) { - sTVSecretBaseSecretsRandomValues[1] = Random() % bitCount; + sTVSecretBaseSecretsRandomValues[1] = Random() % numActions; if (sTVSecretBaseSecretsRandomValues[1] != sTVSecretBaseSecretsRandomValues[0]) { break; } } - show->secretBaseSecrets.savedState = 2; - sTVShowState = SecretBaseSecrets_GetStateForFlagNumber(show, sTVSecretBaseSecretsRandomValues[1]); + show->secretBaseSecrets.savedState = SBSECRETS_STATE_DO_NEXT2; + sTVShowState = SecretBaseSecrets_GetStateByFlagNumber(show, sTVSecretBaseSecretsRandomValues[1]); break; } break; - case 2: + case SBSECRETS_STATE_DO_NEXT2: TVShowConvertInternationalString(gStringVar2, show->secretBaseSecrets.playerName, show->secretBaseSecrets.language); - bitCount = TVShowGetFlagCount(show); - if (bitCount == 2) + numActions = SecretBaseSecrets_GetNumActionsTaken(show); + if (numActions == 2) { - sTVShowState = 9; + sTVShowState = SBSECRETS_STATE_NOTHING_USED2; } else { for (i = 0; i < 0xFFFF; i ++) { - sTVSecretBaseSecretsRandomValues[2] = Random() % bitCount; + sTVSecretBaseSecretsRandomValues[2] = Random() % numActions; if (sTVSecretBaseSecretsRandomValues[2] != sTVSecretBaseSecretsRandomValues[0] && sTVSecretBaseSecretsRandomValues[2] != sTVSecretBaseSecretsRandomValues[1]) { break; } } - show->secretBaseSecrets.savedState = 3; - sTVShowState = SecretBaseSecrets_GetStateForFlagNumber(show, sTVSecretBaseSecretsRandomValues[2]); + show->secretBaseSecrets.savedState = SBSECRETS_STATE_TOOK_X_STEPS; + sTVShowState = SecretBaseSecrets_GetStateByFlagNumber(show, sTVSecretBaseSecretsRandomValues[2]); } break; - case 3: + case SBSECRETS_STATE_TOOK_X_STEPS: TVShowConvertInternationalString(gStringVar1, show->secretBaseSecrets.baseOwnersName, show->secretBaseSecrets.baseOwnersNameLanguage); TVShowConvertInternationalString(gStringVar2, show->secretBaseSecrets.playerName, show->secretBaseSecrets.language); TV_PrintIntToStringVar(2, show->secretBaseSecrets.stepsInBase); if (show->secretBaseSecrets.stepsInBase <= 30) { - sTVShowState = 4; + sTVShowState = SBSECRETS_STATE_BASE_INTEREST_LOW; } else if (show->secretBaseSecrets.stepsInBase <= 100) { - sTVShowState = 5; + sTVShowState = SBSECRETS_STATE_BASE_INTEREST_MED; } else { - sTVShowState = 6; + sTVShowState = SBSECRETS_STATE_BASE_INTEREST_HIGH; } break; - case 4: - TVShowConvertInternationalString(gStringVar1, show->secretBaseSecrets.baseOwnersName, show->secretBaseSecrets.baseOwnersNameLanguage); - TVShowConvertInternationalString(gStringVar2, show->secretBaseSecrets.playerName, show->secretBaseSecrets.language); - sTVShowState = 7; - break; - case 5: - TVShowConvertInternationalString(gStringVar1, show->secretBaseSecrets.baseOwnersName, show->secretBaseSecrets.baseOwnersNameLanguage); - TVShowConvertInternationalString(gStringVar2, show->secretBaseSecrets.playerName, show->secretBaseSecrets.language); - sTVShowState = 7; - break; - case 6: + case SBSECRETS_STATE_BASE_INTEREST_LOW ... SBSECRETS_STATE_BASE_INTEREST_HIGH: TVShowConvertInternationalString(gStringVar1, show->secretBaseSecrets.baseOwnersName, show->secretBaseSecrets.baseOwnersNameLanguage); TVShowConvertInternationalString(gStringVar2, show->secretBaseSecrets.playerName, show->secretBaseSecrets.language); - sTVShowState = 7; + sTVShowState = SBSECRETS_STATE_OUTRO; break; - case 7: + case SBSECRETS_STATE_OUTRO: TVShowConvertInternationalString(gStringVar1, show->secretBaseSecrets.baseOwnersName, show->secretBaseSecrets.baseOwnersNameLanguage); TVShowConvertInternationalString(gStringVar2, show->secretBaseSecrets.playerName, show->secretBaseSecrets.language); TVShowDone(); break; - case 8: - sTVShowState = 3; - break; - case 9: - sTVShowState = 3; + // All below states are descriptions of what the player interacted with while in the secret base + case SBSECRETS_STATE_NOTHING_USED1: + sTVShowState = SBSECRETS_STATE_TOOK_X_STEPS; break; - case 10: - sTVShowState = show->secretBaseSecrets.savedState; + case SBSECRETS_STATE_NOTHING_USED2: + sTVShowState = SBSECRETS_STATE_TOOK_X_STEPS; break; - case 11: + case SBSECRETS_STATE_USED_CHAIR ... SBSECRETS_STATE_USED_MUD_BALL: sTVShowState = show->secretBaseSecrets.savedState; break; - case 12: - sTVShowState = show->secretBaseSecrets.savedState; - break; - case 13: - sTVShowState = show->secretBaseSecrets.savedState; - break; - case 14: - sTVShowState = show->secretBaseSecrets.savedState; - break; - case 15: - sTVShowState = show->secretBaseSecrets.savedState; - break; - case 16: - sTVShowState = show->secretBaseSecrets.savedState; - break; - case 17: - sTVShowState = show->secretBaseSecrets.savedState; - break; - case 18: - sTVShowState = show->secretBaseSecrets.savedState; - break; - case 19: + case SBSECRETS_STATE_USED_BAG: StringCopy(gStringVar2, ItemId_GetName(show->secretBaseSecrets.item)); sTVShowState = show->secretBaseSecrets.savedState; break; - case 20: + case SBSECRETS_STATE_USED_CUSHION: + // Randomly decide based on trainer ID if the player hugged or hit the cushion if (show->common.trainerIdLo & 1) { - sTVShowState = 22; + sTVShowState = SBSECRETS_STATE_HUGGED_CUSHION; } else { - sTVShowState = 21; + sTVShowState = SBSECRETS_STATE_HIT_CUSHION; } break; - case 21: - sTVShowState = show->secretBaseSecrets.savedState; - break; - case 22: - sTVShowState = show->secretBaseSecrets.savedState; - break; - case 23: - sTVShowState = show->secretBaseSecrets.savedState; - break; - case 24: - sTVShowState = show->secretBaseSecrets.savedState; - break; - case 25: - sTVShowState = show->secretBaseSecrets.savedState; - break; - case 26: - sTVShowState = show->secretBaseSecrets.savedState; - break; - case 27: - sTVShowState = show->secretBaseSecrets.savedState; - break; - case 28: - sTVShowState = show->secretBaseSecrets.savedState; - break; - case 29: - sTVShowState = show->secretBaseSecrets.savedState; - break; - case 30: - sTVShowState = show->secretBaseSecrets.savedState; - break; - case 31: - sTVShowState = show->secretBaseSecrets.savedState; - break; - case 32: - sTVShowState = show->secretBaseSecrets.savedState; - break; - case 33: - sTVShowState = show->secretBaseSecrets.savedState; - break; - case 34: - sTVShowState = show->secretBaseSecrets.savedState; - break; - case 35: - sTVShowState = show->secretBaseSecrets.savedState; - break; - case 36: - sTVShowState = show->secretBaseSecrets.savedState; - break; - case 37: - sTVShowState = show->secretBaseSecrets.savedState; - break; - case 38: - sTVShowState = show->secretBaseSecrets.savedState; - break; - case 39: - sTVShowState = show->secretBaseSecrets.savedState; - break; - case 40: - sTVShowState = show->secretBaseSecrets.savedState; - break; - case 41: - sTVShowState = show->secretBaseSecrets.savedState; - break; - case 42: - sTVShowState = show->secretBaseSecrets.savedState; - break; - case 43: + case SBSECRETS_STATE_HIT_CUSHION ... SBSECRETS_NUM_STATES: sTVShowState = show->secretBaseSecrets.savedState; break; } |