diff options
34 files changed, 2805 insertions, 2840 deletions
diff --git a/asm/macros/battle_frontier/battle_dome.inc b/asm/macros/battle_frontier/battle_dome.inc index 07d6534eb..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 @@ -35,7 +33,7 @@ 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 @@ -47,19 +45,19 @@ 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 @@ -71,7 +69,7 @@ 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 @@ -121,7 +119,7 @@ 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 @@ -139,7 +137,7 @@ 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/data/maps/BattleFrontier_BattleDomeBattleRoom/scripts.inc b/data/maps/BattleFrontier_BattleDomeBattleRoom/scripts.inc index 3804f0a43..9603935ec 100644 --- a/data/maps/BattleFrontier_BattleDomeBattleRoom/scripts.inc +++ b/data/maps/BattleFrontier_BattleDomeBattleRoom/scripts.inc @@ -116,7 +116,7 @@ BattleFrontier_BattleDomeBattleRoom_EventScript_LostToOpponent:: @ 824BE4F playse SE_W227B call BattleFrontier_BattleDomeBattleRoom_EventScript_AudienceLookAround delay 60 -BattleFrontier_BattleDomeBattleRoom_EventScript_24BE8D:: @ 824BE8D +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 @@ -452,7 +452,7 @@ BattleFrontier_BattleDomeBattleRoom_EventScript_LostToTucker:: @ 824C420 playse SE_W227B call BattleFrontier_BattleDomeBattleRoom_EventScript_AudienceLookAround waitse - goto BattleFrontier_BattleDomeBattleRoom_EventScript_24BE8D + goto BattleFrontier_BattleDomeBattleRoom_EventScript_LostTourney BattleFrontier_BattleDomeBattleRoom_EventScript_TuckerDraw:: @ 824C436 setvar VAR_TEMP_2, DRAW_TUCKER diff --git a/data/maps/BattleFrontier_BattleDomeLobby/map.json b/data/maps/BattleFrontier_BattleDomeLobby/map.json index f39fee696..3559d6e1d 100644 --- a/data/maps/BattleFrontier_BattleDomeLobby/map.json +++ b/data/maps/BattleFrontier_BattleDomeLobby/map.json @@ -125,7 +125,7 @@ "y": 10, "elevation": 0, "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY", - "script": "BattleFrontier_BattleDomeLobby_EventScript_ShowLastTourneyTree" + "script": "BattleFrontier_BattleDomeLobby_EventScript_ShowPrevTourneyTree" }, { "type": "sign", diff --git a/data/maps/BattleFrontier_BattleDomeLobby/scripts.inc b/data/maps/BattleFrontier_BattleDomeLobby/scripts.inc index 5428c1e8f..d15b2ebee 100644 --- a/data/maps/BattleFrontier_BattleDomeLobby/scripts.inc +++ b/data/maps/BattleFrontier_BattleDomeLobby/scripts.inc @@ -352,35 +352,35 @@ BattleFrontier_BattleDomeLobby_EventScript_ShowDoublesResults:: @ 8249D6B releaseall end -BattleFrontier_BattleDomeLobby_EventScript_ShowLastTourneyTree:: @ 8249D84 - dome_get DOME_DATA_LAST_TOURNEY_TYPE +BattleFrontier_BattleDomeLobby_EventScript_ShowPrevTourneyTree:: @ 8249D84 + dome_get DOME_DATA_PREV_TOURNEY_TYPE compare VAR_RESULT, 0 - call_if_eq BattleFrontier_BattleDomeLobby_EventScript_LastTourneyResultsSinglesLv50 + call_if_eq BattleFrontier_BattleDomeLobby_EventScript_PrevTourneyResultsSinglesLv50 compare VAR_RESULT, 1 - call_if_eq BattleFrontier_BattleDomeLobby_EventScript_LastTourneyResultsDoublesLv50 + call_if_eq BattleFrontier_BattleDomeLobby_EventScript_PrevTourneyResultsDoublesLv50 compare VAR_RESULT, 2 - call_if_eq BattleFrontier_BattleDomeLobby_EventScript_LastTourneyResultsSinglesLvOpen + call_if_eq BattleFrontier_BattleDomeLobby_EventScript_PrevTourneyResultsSinglesLvOpen compare VAR_RESULT, 3 - call_if_eq BattleFrontier_BattleDomeLobby_EventScript_LastTourneyResultsDoublesLvOpen + call_if_eq BattleFrontier_BattleDomeLobby_EventScript_PrevTourneyResultsDoublesLvOpen fadescreen FADE_TO_BLACK - dome_showresultstree + dome_showprevtourneytree waitstate end -BattleFrontier_BattleDomeLobby_EventScript_LastTourneyResultsSinglesLv50:: @ 8249DC9 - msgbox BattleFrontier_BattleDomeLobby_Text_LastTourneyResultsSinglesLv50, MSGBOX_SIGN +BattleFrontier_BattleDomeLobby_EventScript_PrevTourneyResultsSinglesLv50:: @ 8249DC9 + msgbox BattleFrontier_BattleDomeLobby_Text_PrevTourneyResultsSinglesLv50, MSGBOX_SIGN return -BattleFrontier_BattleDomeLobby_EventScript_LastTourneyResultsDoublesLv50:: @ 8249DD2 - msgbox BattleFrontier_BattleDomeLobby_Text_LastTourneyResultsDoublesLv50, MSGBOX_SIGN +BattleFrontier_BattleDomeLobby_EventScript_PrevTourneyResultsDoublesLv50:: @ 8249DD2 + msgbox BattleFrontier_BattleDomeLobby_Text_PrevTourneyResultsDoublesLv50, MSGBOX_SIGN return -BattleFrontier_BattleDomeLobby_EventScript_LastTourneyResultsSinglesLvOpen:: @ 8249DDB - msgbox BattleFrontier_BattleDomeLobby_Text_LastTourneyResultsSinglesLvOpen, MSGBOX_SIGN +BattleFrontier_BattleDomeLobby_EventScript_PrevTourneyResultsSinglesLvOpen:: @ 8249DDB + msgbox BattleFrontier_BattleDomeLobby_Text_PrevTourneyResultsSinglesLvOpen, MSGBOX_SIGN return -BattleFrontier_BattleDomeLobby_EventScript_LastTourneyResultsDoublesLvOpen:: @ 8249DE4 - msgbox BattleFrontier_BattleDomeLobby_Text_LastTourneyResultsDoublesLvOpen, MSGBOX_SIGN +BattleFrontier_BattleDomeLobby_EventScript_PrevTourneyResultsDoublesLvOpen:: @ 8249DE4 + msgbox BattleFrontier_BattleDomeLobby_Text_PrevTourneyResultsDoublesLvOpen, MSGBOX_SIGN return BattleFrontier_BattleDomeLobby_EventScript_Maniac:: @ 8249DED @@ -595,19 +595,19 @@ BattleFrontier_BattleDomeLobby_Text_ExplainDoublesChallenge: @ 824A721 .string "If you don't save before interrupting,\n" .string "you will be disqualified.$" -BattleFrontier_BattleDomeLobby_Text_LastTourneyResultsSinglesLv50: @ 824A966 +BattleFrontier_BattleDomeLobby_Text_PrevTourneyResultsSinglesLv50: @ 824A966 .string "They're the results of the last\n" .string "Level 50 SINGLE BATTLE Tournament.$" -BattleFrontier_BattleDomeLobby_Text_LastTourneyResultsDoublesLv50: @ 824A9A9 +BattleFrontier_BattleDomeLobby_Text_PrevTourneyResultsDoublesLv50: @ 824A9A9 .string "They're the results of the last\n" .string "Level 50 DOUBLE BATTLE Tournament.$" -BattleFrontier_BattleDomeLobby_Text_LastTourneyResultsSinglesLvOpen: @ 824A9EC +BattleFrontier_BattleDomeLobby_Text_PrevTourneyResultsSinglesLvOpen: @ 824A9EC .string "They're the results of the last\n" .string "Open Level SINGLE BATTLE Tournament.$" -BattleFrontier_BattleDomeLobby_Text_LastTourneyResultsDoublesLvOpen: @ 824AA31 +BattleFrontier_BattleDomeLobby_Text_PrevTourneyResultsDoublesLvOpen: @ 824AA31 .string "They're the results of the last\n" .string "Open Level DOUBLE BATTLE Tournament.$" diff --git a/data/text/battle_dome.inc b/data/text/battle_dome.inc index 80cf4980f..8a26ff5ff 100644 --- a/data/text/battle_dome.inc +++ b/data/text/battle_dome.inc @@ -160,182 +160,182 @@ BattleDome_Text_EmphasizesHPAndSpAtk:: 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.$" 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.$" 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.$" 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.$" 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/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/battle_frontier/unknown_D84F00.bin b/graphics/battle_frontier/tourney_info_card_bg.bin index c38088d34..c38088d34 100644 --- a/graphics/battle_frontier/unknown_D84F00.bin +++ b/graphics/battle_frontier/tourney_info_card_bg.bin diff --git a/graphics/battle_frontier/unknown_D84970.bin b/graphics/battle_frontier/tourney_info_card_tilemap.bin Binary files differindex d102290e4..d102290e4 100644 --- a/graphics/battle_frontier/unknown_D84970.bin +++ b/graphics/battle_frontier/tourney_info_card_tilemap.bin diff --git a/graphics/battle_frontier/unknown_D83B2C.bin b/graphics/battle_frontier/tourney_line_down_map.bin Binary files differindex 34175237e..34175237e 100644 --- a/graphics/battle_frontier/unknown_D83B2C.bin +++ b/graphics/battle_frontier/tourney_line_down_map.bin diff --git a/graphics/battle_frontier/unknown_D83900.bin b/graphics/battle_frontier/tourney_line_mask_map.bin Binary files differindex 7f3e36737..7f3e36737 100644 --- a/graphics/battle_frontier/unknown_D83900.bin +++ b/graphics/battle_frontier/tourney_line_mask_map.bin diff --git a/graphics/battle_frontier/unknown_D83C3C.bin b/graphics/battle_frontier/tourney_line_up_map.bin Binary files differindex acf7cf6ad..acf7cf6ad 100644 --- a/graphics/battle_frontier/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_tower.h b/include/battle_tower.h index fe4cd938a..0cc4d7025 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 @@ -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); diff --git a/include/constants/battle_dome.h b/include/constants/battle_dome.h index 46310c6ce..ea7310e55 100644 --- a/include/constants/battle_dome.h +++ b/include/constants/battle_dome.h @@ -7,7 +7,7 @@ #define DOME_FINAL 3 #define DOME_ROUNDS_COUNT 4 -//#define DOME_TOURNAMENT_TRAINERS_COUNT 16 : defined in global +//#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 @@ -24,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 @@ -49,37 +49,82 @@ #define DOME_DATA_ATTEMPTED_CHALLENGE 6 #define DOME_DATA_HAS_WON_CHALLENGE 7 #define DOME_DATA_SELECTED_MONS 8 -#define DOME_DATA_LAST_TOURNEY_TYPE 9 - -//TODO: -#define DOME_WINTEXT_NO_WINNER_YET 0 -#define DOME_WINTEXT_USED_MOVE 1 -#define DOME_WINTEXT_CHAMP 2 -#define DOME_WINTEXT_FORFEIT 3 - -#define DOME_STATTEXT_GOOD_DOUBLE_STAT 0 -#define DOME_STATTEXT_GOOD_SINGLE_STAT 15 -#define DOME_STATTEXT_WELL_BALANCED 42 - -// Move quality indexes, to determine Battle Dome trainers battle styles -#define MOVE_QUALITY_COMBO 0 // Moves that work well in combination (e.g. Rain Dance + Hydro Pump) -#define MOVE_QUALITY_STAT_RAISE 1 -#define MOVE_QUALITY_STAT_LOWER 2 -#define MOVE_QUALITY_RARE 3 // Uncommon moves. Mostly arbitrary -#define MOVE_QUALITY_HEAL 4 -#define MOVE_QUALITY_RISKY 5 -#define MOVE_QUALITY_STATUS 6 -#define MOVE_QUALITY_DMG 7 -#define MOVE_QUALITY_DEF 8 // Defensive moves, like Amnesia, Light Screen, or accuracy-lowers -#define MOVE_QUALITY_ACCURATE 9 -#define MOVE_QUALITY_POWERFUL 10 // Most of the moves that are >= 100 power -#define MOVE_QUALITY_POPULAR 11 // Group seems arbitrary. All using it are TM/HMs, but its only 11/58 -#define MOVE_QUALITY_LUCK 12 -#define MOVE_QUALITY_STRONG 13 // Most of the moves that are >= 90 power -#define MOVE_QUALITY_LOW_PP 14 -#define MOVE_QUALITY_EFFECT 15 // Moves with additional effects -#define NUM_MOVE_QUALITIES 16 +#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 @@ -90,7 +135,7 @@ #define DOME_BATTLE_STYLE_STORE_POWER 7 #define DOME_BATTLE_STYLE_ENFEEBLE_LOW 8 #define DOME_BATTLE_STYLE_LUCK 9 -#define DOME_BATTLE_STYLE_10 10 +#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 diff --git a/include/constants/battle_frontier_mons.h b/include/constants/battle_frontier_mons.h index 64367272d..10e68980a 100644 --- a/include/constants/battle_frontier_mons.h +++ b/include/constants/battle_frontier_mons.h @@ -859,6 +859,8 @@ #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 diff --git a/include/constants/pokemon.h b/include/constants/pokemon.h index 181a84023..97e3f0686 100644 --- a/include/constants/pokemon.h +++ b/include/constants/pokemon.h @@ -80,7 +80,8 @@ #define STAT_ACC 6 // Only in battles. #define STAT_EVASION 7 // Only in battles. -#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 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/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/strings.h b/include/strings.h index f3d9aed98..c56940bbe 100644 --- a/include/strings.h +++ b/include/strings.h @@ -1759,66 +1759,66 @@ 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 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 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 gBattleDomeOpponentStatsText17[]; -extern const u8 gBattleDomeOpponentStatsText18[]; -extern const u8 gBattleDomeOpponentStatsText19[]; -extern const u8 gBattleDomeOpponentStatsText20[]; -extern const u8 gBattleDomeOpponentStatsText21[]; +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 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 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 gBattleDomeOpponentStatsText38[]; -extern const u8 gBattleDomeOpponentStatsText39[]; -extern const u8 gBattleDomeOpponentStatsText40[]; -extern const u8 gBattleDomeOpponentStatsText41[]; -extern const u8 gBattleDomeOpponentStatsText42[]; +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 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_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/src/battle_dome.c b/src/battle_dome.c index b220e9c19..25b2d995d 100644 --- a/src/battle_dome.c +++ b/src/battle_dome.c @@ -42,14 +42,19 @@ #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[2]; + u8 spriteIds[NUM_INFOCARD_SPRITES]; + u8 pos; + u8 tournamentIds[NUM_INFOCARD_TRAINERS]; }; -struct UnkStruct_860DD10 +struct TourneyTreeLineSection { u8 x; u8 y; @@ -59,40 +64,51 @@ struct UnkStruct_860DD10 #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 SelectOpponentMonsFromParty(int *arr, bool8 arg1); -static void Task_ShowOpponentInfo(u8 taskId); -static void sub_8190CD4(u8 taskId); -static u8 sub_819221C(u8 taskId); +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 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); @@ -101,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); @@ -119,400 +135,401 @@ static void InitDomeTrainers(void); // EWRAM variables. EWRAM_DATA u32 gPlayerPartyLostHP = 0; // never read static EWRAM_DATA u32 sPlayerPartyMaxHP = 0; // never read -static EWRAM_DATA struct BattleDomeStruct *sBattleDomeStruct = {0}; +static EWRAM_DATA struct TourneyTreeInfoCard *sInfoCard = {0}; static EWRAM_DATA u8 *sTilemapBuffer = NULL; -// Each move has an array of flags for different move qualities which contribute to a tourney trainers listed battle style (see sBattleStyleThresholds) -static const u8 sBattleStyleMoveQualities[MOVES_COUNT][NUM_MOVE_QUALITIES] = +// 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_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_KARATE_CHOP] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_DOUBLE_SLAP] = {[MOVE_QUALITY_DMG] = 1}, - [MOVE_COMET_PUNCH] = {[MOVE_QUALITY_DMG] = 1}, - [MOVE_MEGA_PUNCH] = {[MOVE_QUALITY_DMG] = 1}, - [MOVE_PAY_DAY] = {[MOVE_QUALITY_RARE] = 1, [MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_FIRE_PUNCH] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_ICE_PUNCH] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_THUNDER_PUNCH] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_SCRATCH] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_VICE_GRIP] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_GUILLOTINE] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_LOW_PP] = 1}, - [MOVE_RAZOR_WIND] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_SWORDS_DANCE] = {[MOVE_QUALITY_COMBO] = 1, [MOVE_QUALITY_STAT_RAISE] = 1, [MOVE_QUALITY_POPULAR] = 1}, - [MOVE_CUT] = {[MOVE_QUALITY_DMG] = 1}, - [MOVE_GUST] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_WING_ATTACK] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_WHIRLWIND] = {[MOVE_QUALITY_COMBO] = 1, [MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_FLY] = {[MOVE_QUALITY_DMG] = 1}, - [MOVE_BIND] = {[MOVE_QUALITY_STATUS] = 1, [MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_SLAM] = {[MOVE_QUALITY_DMG] = 1}, - [MOVE_VINE_WHIP] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_STOMP] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_DOUBLE_KICK] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_MEGA_KICK] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_LOW_PP] = 1}, - [MOVE_JUMP_KICK] = {[MOVE_QUALITY_DMG] = 1}, - [MOVE_ROLLING_KICK] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_SAND_ATTACK] = {[MOVE_QUALITY_STAT_LOWER] = 1, [MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_HEADBUTT] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_HORN_ATTACK] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_FURY_ATTACK] = {[MOVE_QUALITY_DMG] = 1}, - [MOVE_HORN_DRILL] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_LOW_PP] = 1}, - [MOVE_TACKLE] = {[MOVE_QUALITY_DMG] = 1}, - [MOVE_BODY_SLAM] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_WRAP] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_TAKE_DOWN] = {[MOVE_QUALITY_DMG] = 1}, - [MOVE_THRASH] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_DOUBLE_EDGE] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_TAIL_WHIP] = {[MOVE_QUALITY_STAT_LOWER] = 1, [MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_POISON_STING] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_TWINEEDLE] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_PIN_MISSILE] = {[MOVE_QUALITY_DMG] = 1}, - [MOVE_LEER] = {[MOVE_QUALITY_STAT_LOWER] = 1, [MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_BITE] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_GROWL] = {[MOVE_QUALITY_STAT_LOWER] = 1, [MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_ROAR] = {[MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_SING] = {[MOVE_QUALITY_STATUS] = 1}, - [MOVE_SUPERSONIC] = {[MOVE_QUALITY_STATUS] = 1}, - [MOVE_SONIC_BOOM] = {[MOVE_QUALITY_DMG] = 1}, - [MOVE_DISABLE] = {[MOVE_QUALITY_STATUS] = 1}, - [MOVE_ACID] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_EMBER] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_FLAMETHROWER] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_POPULAR] = 1, [MOVE_QUALITY_STRONG] = 1, [MOVE_QUALITY_EFFECT] = 1}, + [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_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_HYDRO_PUMP] = {[MOVE_QUALITY_COMBO] = 1, [MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_POWERFUL] = 1, [MOVE_QUALITY_LOW_PP] = 1}, - [MOVE_SURF] = {[MOVE_QUALITY_COMBO] = 1, [MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_POPULAR] = 1, [MOVE_QUALITY_STRONG] = 1}, - [MOVE_ICE_BEAM] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_POPULAR] = 1, [MOVE_QUALITY_STRONG] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_BLIZZARD] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_POWERFUL] = 1, [MOVE_QUALITY_LOW_PP] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_PSYBEAM] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_BUBBLE_BEAM] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_AURORA_BEAM] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_HYPER_BEAM] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_POWERFUL] = 1, [MOVE_QUALITY_POPULAR] = 1, [MOVE_QUALITY_STRONG] = 1, [MOVE_QUALITY_LOW_PP] = 1}, - [MOVE_PECK] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_DRILL_PECK] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_SUBMISSION] = {[MOVE_QUALITY_DMG] = 1}, - [MOVE_LOW_KICK] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_COUNTER] = {[MOVE_QUALITY_DEF] = 1, [MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_LUCK] = 1}, - [MOVE_SEISMIC_TOSS] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_STRENGTH] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_ABSORB] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_MEGA_DRAIN] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_LEECH_SEED] = {[MOVE_QUALITY_COMBO] = 1, [MOVE_QUALITY_STATUS] = 1}, - [MOVE_GROWTH] = {[MOVE_QUALITY_STAT_RAISE] = 1}, - [MOVE_RAZOR_LEAF] = {[MOVE_QUALITY_DMG] = 1}, - [MOVE_SOLAR_BEAM] = {[MOVE_QUALITY_COMBO] = 1, [MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_POWERFUL] = 1, [MOVE_QUALITY_POPULAR] = 1, [MOVE_QUALITY_STRONG] = 1}, - [MOVE_POISON_POWDER] = {[MOVE_QUALITY_STATUS] = 1}, - [MOVE_STUN_SPORE] = {[MOVE_QUALITY_STATUS] = 1}, - [MOVE_SLEEP_POWDER] = {[MOVE_QUALITY_STATUS] = 1}, - [MOVE_PETAL_DANCE] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_STRING_SHOT] = {[MOVE_QUALITY_STAT_LOWER] = 1}, - [MOVE_DRAGON_RAGE] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_FIRE_SPIN] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_THUNDER_SHOCK] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_THUNDERBOLT] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_POPULAR] = 1, [MOVE_QUALITY_STRONG] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_THUNDER_WAVE] = {[MOVE_QUALITY_STATUS] = 1, [MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_THUNDER] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_POWERFUL] = 1, [MOVE_QUALITY_STRONG] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_ROCK_THROW] = {[MOVE_QUALITY_DMG] = 1}, - [MOVE_EARTHQUAKE] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_POWERFUL] = 1, [MOVE_QUALITY_POPULAR] = 1, [MOVE_QUALITY_STRONG] = 1}, - [MOVE_FISSURE] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_LUCK] = 1, [MOVE_QUALITY_LOW_PP] = 1}, - [MOVE_DIG] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_TOXIC] = {[MOVE_QUALITY_STATUS] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_CONFUSION] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_PSYCHIC] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_POPULAR] = 1, [MOVE_QUALITY_STRONG] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_HYPNOSIS] = {[MOVE_QUALITY_COMBO] = 1}, - [MOVE_MEDITATE] = {[MOVE_QUALITY_COMBO] = 1, [MOVE_QUALITY_STAT_RAISE] = 1}, - [MOVE_AGILITY] = {[MOVE_QUALITY_STAT_RAISE] = 1}, - [MOVE_QUICK_ATTACK] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_RAGE] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1}, + [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_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_MIMIC] = {[MOVE_QUALITY_RARE] = 1, [MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_SCREECH] = {[MOVE_QUALITY_STAT_LOWER] = 1}, - [MOVE_DOUBLE_TEAM] = {[MOVE_QUALITY_STAT_RAISE] = 1, [MOVE_QUALITY_DEF] = 1}, + [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_QUALITY_STAT_RAISE] = 1, [MOVE_QUALITY_DEF] = 1}, - [MOVE_MINIMIZE] = {[MOVE_QUALITY_STAT_RAISE] = 1, [MOVE_QUALITY_DEF] = 1}, - [MOVE_SMOKESCREEN] = {[MOVE_QUALITY_STAT_LOWER] = 1, [MOVE_QUALITY_DEF] = 1, [MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_CONFUSE_RAY] = {[MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_WITHDRAW] = {[MOVE_QUALITY_STAT_RAISE] = 1, [MOVE_QUALITY_DEF] = 1}, - [MOVE_DEFENSE_CURL] = {[MOVE_QUALITY_STAT_RAISE] = 1, [MOVE_QUALITY_DEF] = 1}, - [MOVE_BARRIER] = {[MOVE_QUALITY_DEF] = 1}, - [MOVE_LIGHT_SCREEN] = {[MOVE_QUALITY_DEF] = 1}, + [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_QUALITY_DEF] = 1}, - [MOVE_FOCUS_ENERGY] = {[MOVE_QUALITY_COMBO] = 1}, - [MOVE_BIDE] = {[MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_METRONOME] = {[MOVE_QUALITY_RARE] = 1, [MOVE_QUALITY_LUCK] = 1}, - [MOVE_MIRROR_MOVE] = {[MOVE_QUALITY_RARE] = 1, [MOVE_QUALITY_LUCK] = 1}, - [MOVE_SELF_DESTRUCT] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_POWERFUL] = 1, [MOVE_QUALITY_STRONG] = 1, [MOVE_QUALITY_LOW_PP] = 1}, - [MOVE_EGG_BOMB] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_POWERFUL] = 1, [MOVE_QUALITY_STRONG] = 1}, - [MOVE_LICK] = {[MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_SMOG] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_SLUDGE] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_BONE_CLUB] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_FIRE_BLAST] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_POWERFUL] = 1, [MOVE_QUALITY_STRONG] = 1, [MOVE_QUALITY_LOW_PP] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_WATERFALL] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_CLAMP] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_SWIFT] = {[MOVE_QUALITY_DMG] = 1}, - [MOVE_SKULL_BASH] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_STRONG] = 1}, - [MOVE_SPIKE_CANNON] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_CONSTRICT] = {[MOVE_QUALITY_STATUS] = 1, [MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_AMNESIA] = {[MOVE_QUALITY_STAT_RAISE] = 1, [MOVE_QUALITY_DEF] = 1}, - [MOVE_KINESIS] = {[MOVE_QUALITY_STAT_LOWER] = 1}, - [MOVE_SOFT_BOILED] = {[MOVE_QUALITY_HEAL] = 1, [MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_HI_JUMP_KICK] = {[MOVE_QUALITY_DMG] = 1}, - [MOVE_GLARE] = {[MOVE_QUALITY_STAT_LOWER] = 1}, - [MOVE_DREAM_EATER] = {[MOVE_QUALITY_COMBO] = 1, [MOVE_QUALITY_RARE] = 1, [MOVE_QUALITY_HEAL] = 1, [MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_STRONG] = 1}, - [MOVE_POISON_GAS] = {[MOVE_QUALITY_STATUS] = 1}, - [MOVE_BARRAGE] = {[MOVE_QUALITY_DMG] = 1}, - [MOVE_LEECH_LIFE] = {[MOVE_QUALITY_HEAL] = 1, [MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_LOVELY_KISS] = {[MOVE_QUALITY_STATUS] = 1}, - [MOVE_SKY_ATTACK] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_POWERFUL] = 1, [MOVE_QUALITY_STRONG] = 1, [MOVE_QUALITY_LOW_PP] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_TRANSFORM] = {[MOVE_QUALITY_RARE] = 1}, - [MOVE_BUBBLE] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_DIZZY_PUNCH] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_SPORE] = {[MOVE_QUALITY_STATUS] = 1, [MOVE_QUALITY_ACCURATE] = 1}, + [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_QUALITY_DMG] = 1}, - [MOVE_SPLASH] = {[MOVE_QUALITY_RARE] = 1}, - [MOVE_ACID_ARMOR] = {[MOVE_QUALITY_STAT_RAISE] = 1, [MOVE_QUALITY_DEF] = 1}, - [MOVE_CRABHAMMER] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_STRONG] = 1}, - [MOVE_EXPLOSION] = {[MOVE_QUALITY_RISKY] = 1, [MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_POWERFUL] = 1, [MOVE_QUALITY_POPULAR] = 1, [MOVE_QUALITY_STRONG] = 1, [MOVE_QUALITY_LOW_PP] = 1}, - [MOVE_FURY_SWIPES] = {[MOVE_QUALITY_DMG] = 1}, - [MOVE_BONEMERANG] = {[MOVE_QUALITY_DMG] = 1}, - [MOVE_REST] = {[MOVE_QUALITY_COMBO] = 1, [MOVE_QUALITY_HEAL] = 1}, - [MOVE_ROCK_SLIDE] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_HYPER_FANG] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_SHARPEN] = {[MOVE_QUALITY_STAT_RAISE] = 1, [MOVE_QUALITY_DEF] = 1}, - [MOVE_CONVERSION] = {[MOVE_QUALITY_DEF] = 1}, - [MOVE_TRI_ATTACK] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_SUPER_FANG] = {[MOVE_QUALITY_DMG] = 1}, - [MOVE_SLASH] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_SUBSTITUTE] = {[MOVE_QUALITY_RARE] = 1, [MOVE_QUALITY_DEF] = 1}, - [MOVE_STRUGGLE] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_LOW_PP] = 1}, // Odd that this is assigned qualities - [MOVE_SKETCH] = {[MOVE_QUALITY_RARE] = 1, [MOVE_QUALITY_LUCK] = 1, [MOVE_QUALITY_LOW_PP] = 1}, - [MOVE_TRIPLE_KICK] = {[MOVE_QUALITY_DMG] = 1}, - [MOVE_THIEF] = {[MOVE_QUALITY_RARE] = 1, [MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_SPIDER_WEB] = {[MOVE_QUALITY_STAT_LOWER] = 1, [MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_MIND_READER] = {[MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_LOW_PP] = 1}, - [MOVE_NIGHTMARE] = {[MOVE_QUALITY_COMBO] = 1, [MOVE_QUALITY_STATUS] = 1, [MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_FLAME_WHEEL] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_SNORE] = {[MOVE_QUALITY_COMBO] = 1, [MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_CURSE] = {[MOVE_QUALITY_STATUS] = 1}, - [MOVE_FLAIL] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_CONVERSION_2] = {[MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_AEROBLAST] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_POWERFUL] = 1, [MOVE_QUALITY_STRONG] = 1, [MOVE_QUALITY_LOW_PP] = 1}, - [MOVE_COTTON_SPORE] = {[MOVE_QUALITY_STAT_LOWER] = 1}, - [MOVE_REVERSAL] = {[MOVE_QUALITY_COMBO] = 1, [MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_SPITE] = {[MOVE_QUALITY_RARE] = 1, [MOVE_QUALITY_RISKY] = 1, [MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_POWDER_SNOW] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_PROTECT] = {[MOVE_QUALITY_DEF] = 1, [MOVE_QUALITY_POPULAR] = 1}, - [MOVE_MACH_PUNCH] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1}, + [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_QUALITY_DMG] = 1}, + [MOVE_FAINT_ATTACK] = {[MOVE_POINTS_DMG] = 1}, [MOVE_SWEET_KISS] = {0}, - [MOVE_BELLY_DRUM] = {[MOVE_QUALITY_COMBO] = 1, [MOVE_QUALITY_STAT_RAISE] = 1}, - [MOVE_SLUDGE_BOMB] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_STRONG] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_MUD_SLAP] = {[MOVE_QUALITY_STAT_LOWER] = 1, [MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_OCTAZOOKA] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_SPIKES] = {[MOVE_QUALITY_COMBO] = 1}, - [MOVE_ZAP_CANNON] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_POWERFUL] = 1, [MOVE_QUALITY_LUCK] = 1, [MOVE_QUALITY_STRONG] = 1, [MOVE_QUALITY_LOW_PP] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_FORESIGHT] = {[MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_DESTINY_BOND] = {[MOVE_QUALITY_RISKY] = 1, [MOVE_QUALITY_LOW_PP] = 1}, - [MOVE_PERISH_SONG] = {[MOVE_QUALITY_RISKY] = 1, [MOVE_QUALITY_LOW_PP] = 1}, - [MOVE_ICY_WIND] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_DETECT] = {[MOVE_QUALITY_DEF] = 1, [MOVE_QUALITY_LOW_PP] = 1}, - [MOVE_BONE_RUSH] = {[MOVE_QUALITY_DMG] = 1}, - [MOVE_LOCK_ON] = {[MOVE_QUALITY_COMBO] = 1, [MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_LOW_PP] = 1}, - [MOVE_OUTRAGE] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_STRONG] = 1, [MOVE_QUALITY_EFFECT] = 1}, + [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_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_LOW_PP] = 1}, - [MOVE_ENDURE] = {[MOVE_QUALITY_DEF] = 1}, - [MOVE_CHARM] = {[MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_ROLLOUT] = {[MOVE_QUALITY_DMG] = 1}, - [MOVE_FALSE_SWIPE] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_SWAGGER] = {[MOVE_QUALITY_EFFECT] = 1}, - [MOVE_MILK_DRINK] = {[MOVE_QUALITY_HEAL] = 1}, - [MOVE_SPARK] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_FURY_CUTTER] = {[MOVE_QUALITY_DMG] = 1}, - [MOVE_STEEL_WING] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_MEAN_LOOK] = {[MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_LOW_PP] = 1}, - [MOVE_ATTRACT] = {[MOVE_QUALITY_STATUS] = 1, [MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_SLEEP_TALK] = {[MOVE_QUALITY_COMBO] = 1, [MOVE_QUALITY_LUCK] = 1}, - [MOVE_HEAL_BELL] = {[MOVE_QUALITY_LOW_PP] = 1}, - [MOVE_RETURN] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_PRESENT] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_LUCK] = 1}, - [MOVE_FRUSTRATION] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_SAFEGUARD] = {[MOVE_QUALITY_DEF] = 1}, - [MOVE_PAIN_SPLIT] = {[MOVE_QUALITY_RARE] = 1, [MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_SACRED_FIRE] = {[MOVE_QUALITY_POWERFUL] = 1, [MOVE_QUALITY_STRONG] = 1, [MOVE_QUALITY_LOW_PP] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_MAGNITUDE] = {[MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_DYNAMIC_PUNCH] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_LUCK] = 1, [MOVE_QUALITY_STRONG] = 1, [MOVE_QUALITY_LOW_PP] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_MEGAHORN] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_STRONG] = 1}, - [MOVE_DRAGON_BREATH] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_BATON_PASS] = {[MOVE_QUALITY_COMBO] = 1, [MOVE_QUALITY_RARE] = 1}, - [MOVE_ENCORE] = {[MOVE_QUALITY_STATUS] = 1, [MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_LOW_PP] = 1}, - [MOVE_PURSUIT] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_RAPID_SPIN] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_SWEET_SCENT] = {[MOVE_QUALITY_STAT_LOWER] = 1, [MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_IRON_TAIL] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_STRONG] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_METAL_CLAW] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_VITAL_THROW] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_MORNING_SUN] = {[MOVE_QUALITY_COMBO] = 1, [MOVE_QUALITY_HEAL] = 1, [MOVE_QUALITY_LOW_PP] = 1}, - [MOVE_SYNTHESIS] = {[MOVE_QUALITY_COMBO] = 1, [MOVE_QUALITY_HEAL] = 1, [MOVE_QUALITY_LOW_PP] = 1}, - [MOVE_MOONLIGHT] = {[MOVE_QUALITY_COMBO] = 1, [MOVE_QUALITY_HEAL] = 1, [MOVE_QUALITY_LOW_PP] = 1}, - [MOVE_HIDDEN_POWER] = {[MOVE_QUALITY_RARE] = 1, [MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_CROSS_CHOP] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_STRONG] = 1, [MOVE_QUALITY_LOW_PP] = 1}, - [MOVE_TWISTER] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_RAIN_DANCE] = {[MOVE_QUALITY_COMBO] = 1, [MOVE_QUALITY_LOW_PP] = 1}, - [MOVE_SUNNY_DAY] = {[MOVE_QUALITY_COMBO] = 1, [MOVE_QUALITY_LOW_PP] = 1}, - [MOVE_CRUNCH] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_MIRROR_COAT] = {[MOVE_QUALITY_DEF] = 1, [MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_PSYCH_UP] = {[MOVE_QUALITY_STAT_RAISE] = 1}, - [MOVE_EXTREME_SPEED] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_LOW_PP] = 1}, - [MOVE_ANCIENT_POWER] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_LOW_PP] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_SHADOW_BALL] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_FUTURE_SIGHT] = {[MOVE_QUALITY_RARE] = 1, [MOVE_QUALITY_DMG] = 1}, - [MOVE_ROCK_SMASH] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_WHIRLPOOL] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_BEAT_UP] = {[MOVE_QUALITY_RARE] = 1, [MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_FAKE_OUT] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_UPROAR] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_STOCKPILE] = {[MOVE_QUALITY_COMBO] = 1}, - [MOVE_SPIT_UP] = {[MOVE_QUALITY_COMBO] = 1, [MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_STRONG] = 1}, - [MOVE_SWALLOW] = {[MOVE_QUALITY_COMBO] = 1, [MOVE_QUALITY_HEAL] = 1}, - [MOVE_HEAT_WAVE] = {[MOVE_QUALITY_STRONG] = 1, [MOVE_QUALITY_EFFECT] = 1}, + [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_QUALITY_STATUS] = 1, [MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_FLATTER] = {[MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_WILL_O_WISP] = {[MOVE_QUALITY_STATUS] = 1}, - [MOVE_MEMENTO] = {[MOVE_QUALITY_RARE] = 1, [MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_FACADE] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_FOCUS_PUNCH] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_STRONG] = 1}, - [MOVE_SMELLING_SALT] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_FOLLOW_ME] = {[MOVE_QUALITY_RARE] = 1, [MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_NATURE_POWER] = {[MOVE_QUALITY_DMG] = 1}, - [MOVE_CHARGE] = {[MOVE_QUALITY_COMBO] = 1, [MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_TAUNT] = {[MOVE_QUALITY_STATUS] = 1, [MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_HELPING_HAND] = {[MOVE_QUALITY_RARE] = 1, [MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_TRICK] = {[MOVE_QUALITY_RARE] = 1, [MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_ROLE_PLAY] = {[MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_WISH] = {[MOVE_QUALITY_HEAL] = 1, [MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_ASSIST] = {[MOVE_QUALITY_RARE] = 1, [MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_LUCK] = 1}, - [MOVE_INGRAIN] = {[MOVE_QUALITY_COMBO] = 1, [MOVE_QUALITY_HEAL] = 1, [MOVE_QUALITY_DEF] = 1, [MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_SUPERPOWER] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_STRONG] = 1, [MOVE_QUALITY_LOW_PP] = 1}, - [MOVE_MAGIC_COAT] = {[MOVE_QUALITY_DEF] = 1, [MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_LUCK] = 1}, - [MOVE_RECYCLE] = {[MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_REVENGE] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_LUCK] = 1}, - [MOVE_BRICK_BREAK] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_YAWN] = {[MOVE_QUALITY_COMBO] = 1, [MOVE_QUALITY_STATUS] = 1, [MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_KNOCK_OFF] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_ENDEAVOR] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_LOW_PP] = 1}, - [MOVE_ERUPTION] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_POWERFUL] = 1, [MOVE_QUALITY_STRONG] = 1, [MOVE_QUALITY_LOW_PP] = 1}, - [MOVE_SKILL_SWAP] = {[MOVE_QUALITY_RARE] = 1, [MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_IMPRISON] = {[MOVE_QUALITY_RARE] = 1, [MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_LUCK] = 1}, - [MOVE_REFRESH] = {[MOVE_QUALITY_HEAL] = 1, [MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_GRUDGE] = {[MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_LOW_PP] = 1}, - [MOVE_SNATCH] = {[MOVE_QUALITY_RARE] = 1, [MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_LUCK] = 1}, - [MOVE_SECRET_POWER] = {[MOVE_QUALITY_RARE] = 1, [MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_DIVE] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_ARM_THRUST] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_CAMOUFLAGE] = {[MOVE_QUALITY_RARE] = 1, [MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_TAIL_GLOW] = {[MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_LUSTER_PURGE] = {[MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_LOW_PP] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_MIST_BALL] = {[MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_LOW_PP] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_FEATHER_DANCE] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_TEETER_DANCE] = {[MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_BLAZE_KICK] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_MUD_SPORT] = {[MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_ICE_BALL] = {[MOVE_QUALITY_DMG] = 1}, - [MOVE_NEEDLE_ARM] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_SLACK_OFF] = {[MOVE_QUALITY_HEAL] = 1, [MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_HYPER_VOICE] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_STRONG] = 1}, - [MOVE_POISON_FANG] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_CRUSH_CLAW] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_BLAST_BURN] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_POWERFUL] = 1, [MOVE_QUALITY_STRONG] = 1, [MOVE_QUALITY_LOW_PP] = 1}, - [MOVE_HYDRO_CANNON] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_POWERFUL] = 1, [MOVE_QUALITY_STRONG] = 1, [MOVE_QUALITY_LOW_PP] = 1}, - [MOVE_METEOR_MASH] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_POWERFUL] = 1, [MOVE_QUALITY_STRONG] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_ASTONISH] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_WEATHER_BALL] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_AROMATHERAPY] = {[MOVE_QUALITY_LOW_PP] = 1}, - [MOVE_FAKE_TEARS] = {[MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_AIR_CUTTER] = {[MOVE_QUALITY_DMG] = 1}, - [MOVE_OVERHEAT] = {[MOVE_QUALITY_POWERFUL] = 1, [MOVE_QUALITY_STRONG] = 1, [MOVE_QUALITY_LOW_PP] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_ODOR_SLEUTH] = {[MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_ROCK_TOMB] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_SILVER_WIND] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_LOW_PP] = 1, [MOVE_QUALITY_EFFECT] = 1}, + [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_QUALITY_ACCURATE] = 1}, + [MOVE_TICKLE] = {[MOVE_POINTS_ACCURATE] = 1}, [MOVE_COSMIC_POWER] = {0}, - [MOVE_WATER_SPOUT] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_POWERFUL] = 1, [MOVE_QUALITY_STRONG] = 1, [MOVE_QUALITY_LOW_PP] = 1}, - [MOVE_SIGNAL_BEAM] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_SHADOW_PUNCH] = {[MOVE_QUALITY_DMG] = 1}, - [MOVE_EXTRASENSORY] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_SKY_UPPERCUT] = {[MOVE_QUALITY_DMG] = 1}, - [MOVE_SAND_TOMB] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_SHEER_COLD] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_LUCK] = 1, [MOVE_QUALITY_LOW_PP] = 1}, - [MOVE_MUDDY_WATER] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_STRONG] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_BULLET_SEED] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_AERIAL_ACE] = {[MOVE_QUALITY_DMG] = 1}, - [MOVE_ICICLE_SPEAR] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_IRON_DEFENSE] = {[MOVE_QUALITY_DEF] = 1}, - [MOVE_BLOCK] = {[MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_LOW_PP] = 1}, + [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_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_FRENZY_PLANT] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_POWERFUL] = 1, [MOVE_QUALITY_STRONG] = 1, [MOVE_QUALITY_LOW_PP] = 1}, - [MOVE_BULK_UP] = {[MOVE_QUALITY_COMBO] = 1}, - [MOVE_BOUNCE] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_LOW_PP] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_MUD_SHOT] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_POISON_TAIL] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_COVET] = {[MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_VOLT_TACKLE] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_POWERFUL] = 1, [MOVE_QUALITY_STRONG] = 1}, - [MOVE_MAGICAL_LEAF] = {[MOVE_QUALITY_DMG] = 1}, - [MOVE_WATER_SPORT] = {[MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_CALM_MIND] = {[MOVE_QUALITY_COMBO] = 1, [MOVE_QUALITY_STAT_RAISE] = 1}, - [MOVE_LEAF_BLADE] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1}, - [MOVE_DRAGON_DANCE] = {[MOVE_QUALITY_COMBO] = 1, [MOVE_QUALITY_STAT_RAISE] = 1}, - [MOVE_ROCK_BLAST] = {[MOVE_QUALITY_DMG] = 1}, - [MOVE_SHOCK_WAVE] = {[MOVE_QUALITY_DMG] = 1}, - [MOVE_WATER_PULSE] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_ACCURATE] = 1, [MOVE_QUALITY_EFFECT] = 1}, - [MOVE_DOOM_DESIRE] = {[MOVE_QUALITY_RARE] = 1, [MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_POWERFUL] = 1, [MOVE_QUALITY_STRONG] = 1, [MOVE_QUALITY_LOW_PP] = 1}, - [MOVE_PSYCHO_BOOST] = {[MOVE_QUALITY_DMG] = 1, [MOVE_QUALITY_POWERFUL] = 1, [MOVE_QUALITY_STRONG] = 1, [MOVE_QUALITY_LOW_PP] = 1, [MOVE_QUALITY_EFFECT] = 1}, + [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}, }; // This array is searched in-order to determine what battle style a tourney trainer uses. -// If the sum of the quality flags 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_QUALITIES] = -{ - [DOME_BATTLE_STYLE_RISKY] = {[MOVE_QUALITY_RISKY] = 1}, - [DOME_BATTLE_STYLE_STALL] = {[MOVE_QUALITY_HEAL] = 2, [MOVE_QUALITY_STATUS] = 1, [MOVE_QUALITY_DEF] = 2}, - [DOME_BATTLE_STYLE_VARIED] = {[MOVE_QUALITY_COMBO] = 1, [MOVE_QUALITY_STAT_RAISE] = 1, [MOVE_QUALITY_STAT_LOWER] = 1, [MOVE_QUALITY_HEAL] = 1, [MOVE_QUALITY_STATUS] = 1, [MOVE_QUALITY_DEF] = 1}, - [DOME_BATTLE_STYLE_COMBO_HIGH] = {[MOVE_QUALITY_COMBO] = 3}, - [DOME_BATTLE_STYLE_RARE_MOVES] = {[MOVE_QUALITY_RARE] = 2}, - [DOME_BATTLE_STYLE_RARE_MOVE] = {[MOVE_QUALITY_RARE] = 1}, - [DOME_BATTLE_STYLE_HP] = {[MOVE_QUALITY_HEAL] = 3}, - [DOME_BATTLE_STYLE_STORE_POWER] = {[MOVE_QUALITY_STAT_RAISE] = 1, [MOVE_QUALITY_HEAL] = 1}, - [DOME_BATTLE_STYLE_ENFEEBLE_LOW] = {[MOVE_QUALITY_STAT_LOWER] = 1, [MOVE_QUALITY_STATUS] = 1}, - [DOME_BATTLE_STYLE_LUCK] = {[MOVE_QUALITY_LUCK] = 2}, - [DOME_BATTLE_STYLE_10] = {[MOVE_QUALITY_STAT_RAISE] = 1, [MOVE_QUALITY_HEAL] = 1, [MOVE_QUALITY_DEF] = 1, [MOVE_QUALITY_POPULAR] = 1, [MOVE_QUALITY_STRONG] = 1}, - [DOME_BATTLE_STYLE_LOW_PP] = {[MOVE_QUALITY_LOW_PP] = 3}, - [DOME_BATTLE_STYLE_STATUS_ATK] = {[MOVE_QUALITY_STAT_RAISE] = 1, [MOVE_QUALITY_STATUS] = 1}, - [DOME_BATTLE_STYLE_ENDURE] = {[MOVE_QUALITY_HEAL] = 2, [MOVE_QUALITY_DEF] = 2}, - [DOME_BATTLE_STYLE_STATUS] = {[MOVE_QUALITY_STATUS] = 2}, - [DOME_BATTLE_STYLE_STRAIGHTFORWARD] = {[MOVE_QUALITY_ACCURATE] = 3, [MOVE_QUALITY_STRONG] = 3}, - [DOME_BATTLE_STYLE_AGGRESSIVE] = {[MOVE_QUALITY_STRONG] = 4}, - [DOME_BATTLE_STYLE_DEF] = {[MOVE_QUALITY_DEF] = 3}, - [DOME_BATTLE_STYLE_ENFEEBLE_HIGH] = {[MOVE_QUALITY_STAT_LOWER] = 2, [MOVE_QUALITY_STATUS] = 2}, // BUG: This battle style is unobtainable; DOME_BATTLE_STYLE_ENFEEBLE_LOW will always succeed before it - [DOME_BATTLE_STYLE_POPULAR_POWER] = {[MOVE_QUALITY_POWERFUL] = 3, [MOVE_QUALITY_POPULAR] = 3}, - [DOME_BATTLE_STYLE_COMBO_LOW] = {[MOVE_QUALITY_COMBO] = 2}, - [DOME_BATTLE_STYLE_ACCURATE] = {[MOVE_QUALITY_HEAL] = 1, [MOVE_QUALITY_ACCURATE] = 3}, - [DOME_BATTLE_STYLE_POWERFUL] = {[MOVE_QUALITY_POWERFUL] = 4}, - [DOME_BATTLE_STYLE_ATK_OVER_DEF] = {[MOVE_QUALITY_DMG] = 7}, - [DOME_BATTLE_STYLE_DEF_OVER_ATK] = {[MOVE_QUALITY_DEF] = 4}, // BUG: This battle style is unobtainable; DOME_BATTLE_STYLE_DEF will always succeed before it - [DOME_BATTLE_STYLE_POPULAR_STRONG] = {[MOVE_QUALITY_POPULAR] = 2, [MOVE_QUALITY_STRONG] = 4}, - [DOME_BATTLE_STYLE_EFFECTS] = {[MOVE_QUALITY_EFFECT] = 4}, +// 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}, @@ -531,40 +548,44 @@ 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 sTourneyTreeBgTemplates[4] = @@ -607,7 +628,7 @@ static const struct BgTemplate sTourneyTreeBgTemplates[4] = }, }; -static const struct BgTemplate sOpponentInfoBgTemplates[4] = +static const struct BgTemplate sInfoCardBgTemplates[4] = { { .bg = 0, @@ -679,7 +700,7 @@ static const struct WindowTemplate sTourneyTreeWindowTemplates[] = DUMMY_WIN_TEMPLATE, }; -static const struct WindowTemplate sOpponentInfoWindowTemplates[] = +static const struct WindowTemplate sInfoCardWindowTemplates[] = { { .bg = 0, @@ -853,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, @@ -882,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, @@ -899,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, @@ -916,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, @@ -933,161 +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 }; // 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 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) = { @@ -1099,7 +1114,7 @@ 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, @@ -1128,66 +1143,52 @@ 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[DOME_TOURNAMENT_TRAINERS_COUNT] = -{ - 0, - 8, - 4, - 12, - 7, - 15, - 3, - 11, - 2, - 10, - 6, - 14, - 5, - 13, - 1, - 9}; - -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[DOME_ROUNDS_COUNT] = +static const u8 sLastMatchCardNum[DOME_ROUNDS_COUNT] = { [DOME_ROUND1] = 23, [DOME_ROUND2] = 27, @@ -1195,7 +1196,7 @@ static const u8 gUnknown_0860D19C[DOME_ROUNDS_COUNT] = [DOME_FINAL] = 30 }; -static const u8 gUnknown_0860D1A0[][DOME_ROUNDS_COUNT] = +static const u8 gUnknown_0860D1A0[DOME_TOURNAMENT_TRAINERS_COUNT / 2][DOME_ROUNDS_COUNT] = { {16, 24, 28, 30}, {17, 24, 28, 30}, @@ -1209,7 +1210,7 @@ static const u8 gUnknown_0860D1A0[][DOME_ROUNDS_COUNT] = 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, depending on their seed ranking for the current tourney +// 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] = { @@ -1232,6 +1233,7 @@ static const u8 *const sBattleDomePotentialTexts[DOME_TOURNAMENT_TRAINERS_COUNT BattleDome_Text_PotentialDomeAceTucker, }; +// 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, @@ -1244,7 +1246,7 @@ static const u8 *const sBattleDomeOpponentStyleTexts[NUM_BATTLE_STYLES] = [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_10] = BattleDome_Text_StyleRegalAtmosphere, + [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, @@ -1268,1024 +1270,814 @@ static const u8 *const sBattleDomeOpponentStyleTexts[NUM_BATTLE_STYLES] = [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[] = { - BattleDome_Text_EmphasizesHPAndAtk, + 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, - gBattleDomeOpponentStatsText6, - gBattleDomeOpponentStatsText7, - gBattleDomeOpponentStatsText8, - gBattleDomeOpponentStatsText9, - gBattleDomeOpponentStatsText10, - gBattleDomeOpponentStatsText11, - gBattleDomeOpponentStatsText12, - gBattleDomeOpponentStatsText13, - gBattleDomeOpponentStatsText14, - gBattleDomeOpponentStatsText15, - BattleDome_Text_EmphasizesHP, - gBattleDomeOpponentStatsText17, - gBattleDomeOpponentStatsText18, - gBattleDomeOpponentStatsText19, - gBattleDomeOpponentStatsText20, - gBattleDomeOpponentStatsText21, - BattleDome_Text_NeglectsHPAndAtk, - gBattleDomeOpponentStatsText23, - gBattleDomeOpponentStatsText24, - gBattleDomeOpponentStatsText25, - gBattleDomeOpponentStatsText26, - gBattleDomeOpponentStatsText27, - gBattleDomeOpponentStatsText28, - gBattleDomeOpponentStatsText29, - gBattleDomeOpponentStatsText30, - gBattleDomeOpponentStatsText31, - gBattleDomeOpponentStatsText32, - gBattleDomeOpponentStatsText33, - gBattleDomeOpponentStatsText34, - gBattleDomeOpponentStatsText35, - gBattleDomeOpponentStatsText36, - BattleDome_Text_NeglectsHP, - gBattleDomeOpponentStatsText38, - gBattleDomeOpponentStatsText39, - gBattleDomeOpponentStatsText40, - gBattleDomeOpponentStatsText41, - gBattleDomeOpponentStatsText42, - BattleDome_Text_RaisesMonsWellBalanced, + 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[] = {0x68, 0x88, 0x68}; -static const u8 sInfoTrainerMonY[] = {0x26, 0x3e, 0x4e}; +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}; -static const u8 gUnknown_0860D349[] = {0x00, 0x05, 0x09, 0x0c, 0x0e, 0x00, 0x00}; +// 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 *const sBattleDomeMatchNumberTexts[DOME_TOURNAMENT_MATCHES_COUNT] = { - gBattleDomeMatchNumberText1, - gBattleDomeMatchNumberText2, - gBattleDomeMatchNumberText3, - gBattleDomeMatchNumberText4, - gBattleDomeMatchNumberText5, - gBattleDomeMatchNumberText6, - gBattleDomeMatchNumberText7, - gBattleDomeMatchNumberText8, - gBattleDomeMatchNumberText9, - gBattleDomeMatchNumberText10, - gBattleDomeMatchNumberText11, - gBattleDomeMatchNumberText12, - gBattleDomeMatchNumberText13, - gBattleDomeMatchNumberText14, - gBattleDomeMatchNumberText15, + 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[DOME_TOURNAMENT_TRAINERS_COUNT] = {0, 8, 12, 4, 7, 15, 11, 3, 2, 10, 14, 6, 5, 13, 9, 1}; - -static const u8 gUnknown_0860D3C4[DOME_TOURNAMENT_MATCHES_COUNT][3] = -{ - { 0, 2, DOME_ROUND1}, - { 2, 2, DOME_ROUND1}, - { 4, 2, DOME_ROUND1}, - { 6, 2, DOME_ROUND1}, - { 8, 2, DOME_ROUND1}, - {10, 2, DOME_ROUND1}, - {12, 2, DOME_ROUND1}, - {14, 2, DOME_ROUND1}, - { 0, 4, DOME_ROUND2}, - { 4, 4, DOME_ROUND2}, - { 8, 4, DOME_ROUND2}, - {12, 4, DOME_ROUND2}, - { 0, 8, DOME_SEMIFINAL}, - { 8, 8, DOME_SEMIFINAL}, - { 0, 16, DOME_FINAL}, +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[DOME_TOURNAMENT_TRAINERS_COUNT][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][DOME_ROUNDS_COUNT] = -{ - {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][DOME_ROUNDS_COUNT] = -{ - {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 @@ -2372,7 +2164,7 @@ static void GetDomeData(void) gSelectedOrderFromParty[0] = gSaveBlock2Ptr->frontier.selectedPartyMons[3]; gSelectedOrderFromParty[1] = gSaveBlock2Ptr->frontier.selectedPartyMons[3] >> 8; break; - case DOME_DATA_LAST_TOURNEY_TYPE: + case DOME_DATA_PREV_TOURNEY_TYPE: gSpecialVar_Result = (gSaveBlock2Ptr->frontier.domeLvlMode * 2) - 3 + gSaveBlock2Ptr->frontier.domeBattleMode; break; } @@ -2451,7 +2243,7 @@ static void InitDomeTrainers(void) int species[FRONTIER_PARTY_SIZE]; int monTypesBits, monTypesCount; int trainerId; - int monSetId; + int monId; u16 *rankingScores; int *statValues; u8 ivs = 0; @@ -2484,7 +2276,7 @@ static void InitDomeTrainers(void) // Populate the tourney roster with random frontier trainers (dependent on streak) for (i = 1; i < DOME_TOURNAMENT_TRAINERS_COUNT; i++) { - // First 5/16 trainers are easier than the rest + // Choose trainer. First 5/16 trainers are easier than the rest if (i > 5) { do @@ -2512,25 +2304,26 @@ static void InitDomeTrainers(void) 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 = DOME_MONS[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); - DOME_MONS[i][j] = monSetId; - species[j] = gFacilityTrainerMons[monSetId].species; + DOME_MONS[i][j] = monId; + species[j] = gFacilityTrainerMons[monId].species; } DOME_TRAINERS[i].isEliminated = FALSE; @@ -2633,8 +2426,7 @@ static void InitDomeTrainers(void) break; } - // if i != 0, the below conditional is always TRUE - if (gUnknown_0860D3F1[i][0] != 0) + if (sTrainerNamePositions[i][0] != 0) { j = 0; DOME_TRAINERS[j].trainerId = TRAINER_FRONTIER_BRAIN; @@ -2735,7 +2527,7 @@ static void CreateDomeOpponentMon(u8 monPartyId, u16 tournamentTrainerId, u8 tou { int i; 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 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[DOME_MONS[tournamentTrainerId][tournamentMonId]].species, @@ -2801,21 +2593,23 @@ int GetDomeTrainerSelectedMons(u16 tournamentTrainerId) int selectedMonBits; if (Random() & 1) { - selectedMonBits = sub_818FCBC(tournamentTrainerId, FALSE); + selectedMonBits = SelectOpponentMonsUsingPersonality(tournamentTrainerId, FALSE); if (selectedMonBits == 0) - selectedMonBits = sub_818FDB8(tournamentTrainerId, TRUE); + selectedMonBits = SelectOpponentMonsUsingOtId(tournamentTrainerId, TRUE); } else { - selectedMonBits = sub_818FDB8(tournamentTrainerId, FALSE); + selectedMonBits = SelectOpponentMonsUsingOtId(tournamentTrainerId, FALSE); if (selectedMonBits == 0) - selectedMonBits = sub_818FCBC(tournamentTrainerId, TRUE); + selectedMonBits = SelectOpponentMonsUsingPersonality(tournamentTrainerId, TRUE); } return selectedMonBits; } -static int sub_818FCBC(u16 tournamentTrainerId, bool8 allowRandom) +// 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 partyMovePoints[FRONTIER_PARTY_SIZE]; @@ -2843,7 +2637,8 @@ static int sub_818FCBC(u16 tournamentTrainerId, bool8 allowRandom) return SelectOpponentMonsFromParty(partyMovePoints, allowRandom); } -static int sub_818FDB8(u16 tournamentTrainerId, bool8 allowRandom) +// See above function, identical but uses MON_DATA_OT_ID +static int SelectOpponentMonsUsingOtId(u16 tournamentTrainerId, bool8 allowRandom) { int i, moveId, playerMonId; int partyMovePoints[FRONTIER_PARTY_SIZE]; @@ -3297,6 +3092,7 @@ _08190156:\n\ // 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; @@ -3321,41 +3117,43 @@ static u8 GetDomeTrainerMonIvs(u16 trainerId) return fixedIv; } -// TODO: if 0xFF is returned, overflow in TrainerIdOfPlayerOpponent 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 (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 && !DOME_TRAINERS[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 (!DOME_TRAINERS[sIdToOpponentId[i][roundId]].isEliminated) return sIdToOpponentId[i][roundId]; else - return 0xFF; + return 0xFF; // Already eliminated } } @@ -3364,6 +3162,7 @@ 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 DOME_TRAINERS[TournamentIdOfOpponent(gSaveBlock2Ptr->frontier.curChallengeBattleNum, TRAINER_PLAYER)].trainerId; @@ -3396,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); @@ -3422,8 +3223,8 @@ static void Task_ShowOpponentInfo(u8 taskId) EnableInterrupts(INTR_FLAG_VBLANK); CpuFill32(0, (void *)VRAM, VRAM_SIZE); ResetBgsAndClearDma3BusyFlags(0); - InitBgsFromTemplates(0, sOpponentInfoBgTemplates, ARRAY_COUNT(sOpponentInfoBgTemplates)); - InitWindows(sOpponentInfoWindowTemplates); + InitBgsFromTemplates(0, sInfoCardBgTemplates, ARRAY_COUNT(sInfoCardBgTemplates)); + InitWindows(sInfoCardWindowTemplates); DeactivateAllTextPrinters(); gBattle_BG0_X = 0; gBattle_BG0_Y = 0; @@ -3431,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); @@ -3453,67 +3254,71 @@ static void Task_ShowOpponentInfo(u8 taskId) 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; @@ -3523,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; @@ -3538,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]); } } @@ -3558,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]); } } @@ -3578,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]); } } @@ -3598,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]); } } @@ -3628,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); } } } @@ -3650,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); } } } @@ -3672,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); } } } @@ -3694,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]; @@ -3712,12 +3516,12 @@ static void sub_8190B40(struct Sprite *sprite) if (sprite->data[1]) { if ((DOME_TRAINERS[tournmanetTrainerId].isEliminated - && sBattleDomeStruct->unk_10 - 1 < DOME_TRAINERS[tournmanetTrainerId].eliminatedAt)) + && sInfoCard->pos - 1 < DOME_TRAINERS[tournmanetTrainerId].eliminatedAt)) { sprite->invisible = FALSE; } else if (!DOME_TRAINERS[tournmanetTrainerId].isEliminated - && sBattleDomeStruct->unk_10 - 1 < roundId) + && sInfoCard->pos - 1 < roundId) { sprite->invisible = FALSE; } @@ -3729,7 +3533,7 @@ static void sub_8190B40(struct Sprite *sprite) } else { - if (sBattleDomeStruct->unk_10 != 0) + if (sInfoCard->pos != 0) { sprite->invisible = FALSE; } @@ -3744,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; @@ -3756,7 +3560,7 @@ static void sub_8190B40(struct Sprite *sprite) } else { - if (sBattleDomeStruct->unk_10 != 0) + if (sInfoCard->pos != 0) { sprite->invisible = FALSE; } @@ -3769,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; @@ -3787,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; @@ -3799,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; @@ -3841,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; @@ -3868,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; - BufferDomeWinString(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; - BufferDomeWinString(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; @@ -3984,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; - BufferDomeWinString(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; - BufferDomeWinString(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; @@ -4099,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; @@ -4182,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; @@ -4265,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; @@ -4275,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; @@ -4346,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; @@ -4424,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; @@ -4436,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; @@ -4448,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; @@ -4460,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); } @@ -4504,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); } @@ -4515,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 = DOME_TOURNAMENT_TRAINERS_COUNT - 1; + 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 == DOME_TOURNAMENT_TRAINERS_COUNT - 1) - 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 (DOME_TRAINERS[r10].isEliminated && sBattleDomeStruct->unk_10 - 1 < DOME_TRAINERS[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 (!DOME_TRAINERS[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 == DOME_TOURNAMENT_TRAINERS_COUNT) - 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 = DOME_TOURNAMENT_TRAINERS_COUNT; + 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; @@ -4634,64 +4479,64 @@ 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 = DOME_TRAINERS[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; // Create party mon icons for (i = 0; i < FRONTIER_PARTY_SIZE; i++) { if (trainerId == TRAINER_PLAYER) { - sBattleDomeStruct->arr[2 + i + arrId] = CreateMonIcon(DOME_MONS[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(DOME_MONS[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[DOME_MONS[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 @@ -4750,11 +4595,11 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId) { textPrinter.currentY = sSpeciesNameTextYCoords[i]; if (trainerId == TRAINER_PLAYER) - textPrinter.currentChar = gSpeciesNames[DOME_MONS[trainerTournamentId][i]]; + textPrinter.currentChar = gSpeciesNames[DOME_MONS[trainerTourneyId][i]]; else if (trainerId == TRAINER_FRONTIER_BRAIN) - textPrinter.currentChar = gSpeciesNames[DOME_MONS[trainerTournamentId][i]]; + textPrinter.currentChar = gSpeciesNames[DOME_MONS[trainerTourneyId][i]]; else - textPrinter.currentChar = gSpeciesNames[gFacilityTrainerMons[DOME_MONS[trainerTournamentId][i]].species]; + textPrinter.currentChar = gSpeciesNames[gFacilityTrainerMons[DOME_MONS[trainerTourneyId][i]].species]; textPrinter.windowId = 1 + i + windowId; if (i == 1) @@ -4774,7 +4619,7 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId) if (trainerId == TRAINER_FRONTIER_BRAIN) textPrinter.currentChar = sBattleDomePotentialTexts[DOME_TOURNAMENT_TRAINERS_COUNT]; else - textPrinter.currentChar = sBattleDomePotentialTexts[trainerTournamentId]; + textPrinter.currentChar = sBattleDomePotentialTexts[trainerTourneyId]; textPrinter.fontId = 1; textPrinter.windowId = windowId + 4; @@ -4788,14 +4633,14 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId) { for (j = 0; j < MAX_MON_MOVES; j++) { - for (k = 0; k < NUM_MOVE_QUALITIES; k++) + for (k = 0; k < NUM_MOVE_POINT_TYPES; k++) { if (trainerId == TRAINER_FRONTIER_BRAIN) - allocatedArray[k] += sBattleStyleMoveQualities[GetFrontierBrainMonMove(i, j)][k]; + allocatedArray[k] += sBattleStyleMovePoints[GetFrontierBrainMonMove(i, j)][k]; else if (trainerId == TRAINER_PLAYER) - allocatedArray[k] += sBattleStyleMoveQualities[gSaveBlock2Ptr->frontier.domePlayerPartyData[i].moves[j]][k]; + allocatedArray[k] += sBattleStyleMovePoints[gSaveBlock2Ptr->frontier.domePlayerPartyData[i].moves[j]][k]; else - allocatedArray[k] += sBattleStyleMoveQualities[gFacilityTrainerMons[DOME_MONS[trainerTournamentId][i]].moves[j]][k]; + allocatedArray[k] += sBattleStyleMovePoints[gFacilityTrainerMons[DOME_MONS[trainerTourneyId][i]].moves[j]][k]; } } } @@ -4807,7 +4652,7 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId) { int thresholdStatCount = 0; - for (k = 0, j = 0; j < NUM_MOVE_QUALITIES; j++) + for (k = 0, j = 0; j < NUM_MOVE_POINT_TYPES; j++) { if (sBattleStyleThresholds[i][j] != 0) { @@ -4826,7 +4671,7 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId) 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 @@ -4834,6 +4679,7 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId) { for (i = 0; i < FRONTIER_PARTY_SIZE; i++) { + // Add the EVs for this mon for (j = 0; j < NUM_STATS; j++) { if (trainerId == TRAINER_FRONTIER_BRAIN) @@ -4841,8 +4687,12 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId) else allocatedArray[j] = gSaveBlock2Ptr->frontier.domePlayerPartyData[i].evs[j]; } - allocatedArray[NUM_STATS] += 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); @@ -4851,16 +4701,16 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId) 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]; } } } @@ -4869,11 +4719,12 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId) 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 < FRONTIER_PARTY_SIZE; i++) { - int evBits = gFacilityTrainerMons[DOME_MONS[trainerTournamentId][i]].evSpread; + int evBits = gFacilityTrainerMons[DOME_MONS[trainerTourneyId][i]].evSpread; for (k = 0, j = 0; j < NUM_STATS; j++) { allocatedArray[j] = 0; @@ -4882,7 +4733,7 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId) evBits >>= 1; } k = MAX_TOTAL_EVS / k; - evBits = gFacilityTrainerMons[DOME_MONS[trainerTournamentId][i]].evSpread; + evBits = gFacilityTrainerMons[DOME_MONS[trainerTourneyId][i]].evSpread; for (j = 0; j < NUM_STATS; j++) { if (evBits & 1) @@ -4890,22 +4741,22 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId) evBits >>= 1; } - allocatedArray[NUM_STATS] += allocatedArray[0]; - for (j = 0; j < 5; j++) + allocatedArray[NUM_STATS] += allocatedArray[STAT_HP]; + for (j = 0; j < NUM_EV_STATS; j++) { - nature = gFacilityTrainerMons[DOME_MONS[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]; } } } @@ -4915,12 +4766,17 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId) 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]) @@ -4953,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 @@ -4983,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 = DOME_STATTEXT_WELL_BALANCED; + i = DOME_TEXT_WELL_BALANCED; + // Print the stat text textPrinter.currentChar = sBattleDomeOpponentStatsTexts[i]; textPrinter.y = 36; textPrinter.currentY = 36; @@ -5001,20 +4862,20 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId) Free(allocatedArray); } -// TODO: -static int BufferDomeWinString(u8 matchNum, u8 *arg1) +static int BufferDomeWinString(u8 matchNum, u8 *tournamentIds) { int i; u8 tournamentId; int winStringId = 0; int count = 0; - for (i = gUnknown_0860D3C4[matchNum][0]; i < gUnknown_0860D3C4[matchNum][0] + gUnknown_0860D3C4[matchNum][1]; i++) + // Get winners name + for (i = sCompetitorRangeByMatch[matchNum][0]; i < sCompetitorRangeByMatch[matchNum][0] + sCompetitorRangeByMatch[matchNum][1]; i++) { - tournamentId = gUnknown_0860D3B4[i]; + tournamentId = sTourneyTreeTrainerIds2[i]; if (!DOME_TRAINERS[tournamentId].isEliminated) { - arg1[count] = tournamentId; + tournamentIds[count] = tournamentId; if (DOME_TRAINERS[tournamentId].trainerId == TRAINER_PLAYER) StringCopy(gStringVar1, gSaveBlock2Ptr->playerName); else if (DOME_TRAINERS[tournamentId].trainerId == TRAINER_FRONTIER_BRAIN) @@ -5027,23 +4888,26 @@ static int BufferDomeWinString(u8 matchNum, u8 *arg1) // 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[matchNum][0]; i < gUnknown_0860D3C4[matchNum][0] + gUnknown_0860D3C4[matchNum][1]; i++) + for (i = sCompetitorRangeByMatch[matchNum][0]; i < sCompetitorRangeByMatch[matchNum][0] + sCompetitorRangeByMatch[matchNum][1]; i++) { - tournamentId = gUnknown_0860D3B4[i]; + tournamentId = sTourneyTreeTrainerIds2[i]; + if (DOME_TRAINERS[tournamentId].isEliminated - && DOME_TRAINERS[tournamentId].eliminatedAt >= gUnknown_0860D3C4[matchNum][2]) + && DOME_TRAINERS[tournamentId].eliminatedAt >= sCompetitorRangeByMatch[matchNum][2]) { - arg1[count] = tournamentId; + tournamentIds[count] = tournamentId; count++; - if (DOME_TRAINERS[tournamentId].eliminatedAt == gUnknown_0860D3C4[matchNum][2]) + + if (DOME_TRAINERS[tournamentId].eliminatedAt == sCompetitorRangeByMatch[matchNum][2]) { + // Set initial winStringId offset StringCopy(gStringVar2, gMoveNames[gSaveBlock2Ptr->frontier.domeWinningMoves[tournamentId]]); - winStringId = DOME_TRAINERS[tournamentId].forfeited * 2; + 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 = 4; + winStringId = DOME_TEXT_WON_NO_MOVES - 1; } else { @@ -5060,10 +4924,10 @@ static int BufferDomeWinString(u8 matchNum, u8 *arg1) break; } - if (matchNum == 14) - return winStringId + 2; + if (matchNum == DOME_TOURNAMENT_MATCHES_COUNT - 1) + return winStringId + 2; // use DOME_TEXT_CHAMP_* else - return winStringId + 1; + return winStringId + 1; // use DOME_TEXT_WON_* } static void DisplayMatchInfoOnCard(u8 flags, u8 matchNo) @@ -5079,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 = BufferDomeWinString(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]; + tournamentIds[i] = sInfoCard->tournamentIds[i]; trainerIds[i] = DOME_TRAINERS[tournamentIds[i]].trainerId; - if (DOME_TRAINERS[tournamentIds[i]].eliminatedAt <= gUnknown_0860D3C4[matchNo][2] + 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. + // 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(DOME_MONS[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(DOME_MONS[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[DOME_MONS[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. + // 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(DOME_MONS[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(DOME_MONS[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[DOME_MONS[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; @@ -5230,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) @@ -5248,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) @@ -5278,14 +5142,15 @@ 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; @@ -5293,88 +5158,96 @@ static void ShowPreviousDomeResultsTourneyTree(void) 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(); @@ -5388,63 +5261,87 @@ 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 < 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) @@ -5456,6 +5353,8 @@ static void ResolveDomeRoundWinners(void) 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); } @@ -5464,13 +5363,17 @@ static void ResolveDomeRoundWinners(void) 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; @@ -5590,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); @@ -5612,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); @@ -5628,41 +5531,42 @@ static void Task_ShowTourneyTree(u8 taskId) 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 < ARRAY_COUNT(gUnknown_0860D411); 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; @@ -5684,48 +5588,48 @@ static void Task_ShowTourneyTree(u8 taskId) int roundId, var2; CopyDomeTrainerName(gDisplayedStringBattle, DOME_TRAINERS[i].trainerId); - if (r10 == 1) + if (notInteractive == TRUE) { if (DOME_TRAINERS[i].isEliminated) { if (DOME_TRAINERS[i].eliminatedAt != DOME_ROUND1) { var2 = DOME_TRAINERS[i].eliminatedAt - 1; - sub_81948EC(i, var2); + 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 (DOME_TRAINERS[i].isEliminated) { if (DOME_TRAINERS[i].eliminatedAt != DOME_ROUND1) { var2 = DOME_TRAINERS[i].eliminatedAt - 1; - sub_81948EC(i, var2); + 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 && DOME_TRAINERS[i].eliminatedAt < gSaveBlock2Ptr->frontier.curChallengeBattleNum - 1) - || (r10 == 0 && DOME_TRAINERS[i].eliminatedAt <= roundId)) + if ( ((notInteractive == TRUE && DOME_TRAINERS[i].eliminatedAt < gSaveBlock2Ptr->frontier.curChallengeBattleNum - 1) + || (notInteractive == FALSE && DOME_TRAINERS[i].eliminatedAt <= roundId)) && DOME_TRAINERS[i].isEliminated) { if (DOME_TRAINERS[i].trainerId == TRAINER_PLAYER) @@ -5753,16 +5657,16 @@ static void Task_ShowTourneyTree(u8 taskId) } } - 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); @@ -5771,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(); @@ -5816,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; @@ -5852,42 +5763,44 @@ static void sub_8194950(u8 taskId) 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, 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 (!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); @@ -5897,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(); @@ -5906,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); @@ -5926,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; @@ -5990,7 +5909,7 @@ static void HblankCb_BattleDome(void) 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); @@ -6014,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; @@ -6055,6 +5974,7 @@ static void ReduceDomePlayerPartyToSelectedMons(void) static void GetPlayerSeededBeforeOpponent(void) { + // A higher tournament ID is a worse seed if (TrainerIdToTournamentId(gTrainerBattleOpponent_A) > TrainerIdToTournamentId(TRAINER_PLAYER)) gSpecialVar_Result = 1; else @@ -6082,7 +6002,7 @@ static void InitRandomTourneyTreeResults(void) int species[FRONTIER_PARTY_SIZE]; int monTypesBits; int trainerId; - int monSetId; + int monId; u8 lvlMode; u16 *statSums; int *statValues; @@ -6126,23 +6046,23 @@ static void InitRandomTourneyTreeResults(void) 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 = DOME_MONS[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); - DOME_MONS[i][j] = monSetId; - species[j] = gFacilityTrainerMons[monSetId].species; + DOME_MONS[i][j] = monId; + species[j] = gFacilityTrainerMons[monId].species; } DOME_TRAINERS[i].isEliminated = FALSE; DOME_TRAINERS[i].eliminatedAt = 0; @@ -6235,16 +6155,18 @@ int TrainerIdToDomeTournamentId(u16 trainerId) return i; } +// TODO: static u8 sub_81953E8(u8 tournamentId, u8 round) { - u8 arr[2]; - BufferDomeWinString(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; diff --git a/src/battle_factory.c b/src/battle_factory.c index 9216e2416..569d665e1 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" @@ -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_tent.c b/src/battle_tent.c index eebca1d07..7cde528ab 100644 --- a/src/battle_tent.c +++ b/src/battle_tent.c @@ -353,10 +353,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; @@ -374,21 +374,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 4f6c1d163..879e5f3e3 100644 --- a/src/battle_tower.c +++ b/src/battle_tower.c @@ -1895,14 +1895,14 @@ static void FillTrainerParty(u16 trainerId, u8 firstMonId, u8 monCount) u8 level = SetFacilityPtrsGetLevel(); u8 fixedIV = 0; u8 bfMonCount; - const u16 *monSets = NULL; + const u16 *monSet = NULL; u32 otID = 0; 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) { @@ -1940,20 +1940,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) @@ -1963,7 +1963,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) @@ -1973,34 +1973,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 = 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. @@ -2041,27 +2041,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 numMonSets = 0; - u32 monSetId = monSets[numMonSets]; + const u16 *monSet = gFacilityTrainers[trainerId].monSet; + u8 numMons = 0; + u32 monId = monSet[numMons]; - while (monSetId != 0xFFFF) + while (monId != 0xFFFF) { - numMonSets++; - monSetId = monSets[numMonSets]; - if (monSetId == 0xFFFF) + numMons++; + monId = monSet[numMons]; + if (monId == 0xFFFF) break; } do { - monSetId = monSets[Random() % numMonSets]; - } 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) @@ -2111,21 +2111,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]); } } @@ -2139,25 +2139,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]); } } @@ -2520,7 +2520,7 @@ static void sub_81642A0(void) u32 spArray[5]; s32 r10; u16 trainerId; - u16 monSetId; + u16 monId; u32 lvlMode, battleMode; s32 challengeNum; u32 species1, species2; @@ -2562,24 +2562,24 @@ static void sub_81642A0(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++; } } @@ -2660,7 +2660,7 @@ static void sub_81642A0(void) } } -static void sub_81646BC(u16 trainerId, u16 monSetId) +static void sub_81646BC(u16 trainerId, u16 monId) { u16 move = 0; u16 species = 0; @@ -2670,8 +2670,8 @@ static void sub_81646BC(u16 trainerId, u16 monSetId) { 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) { @@ -2698,7 +2698,7 @@ static void sub_81646BC(u16 trainerId, u16 monSetId) static void sub_8164828(void) { s32 i, j, arrId; - s32 monSetId; + s32 monId; s32 level = SetFacilityPtrsGetLevel(); u16 winStreak = GetCurrentFacilityWinStreak(); s32 challengeNum = winStreak / 7; @@ -2736,12 +2736,12 @@ static void sub_8164828(void) } break; case 1: - monSetId = gSaveBlock2Ptr->frontier.trainerIds[8 + k * 2]; - sub_81646BC(trainerId, monSetId); + monId = gSaveBlock2Ptr->frontier.trainerIds[8 + k * 2]; + sub_81646BC(trainerId, monId); break; case 2: - monSetId = gSaveBlock2Ptr->frontier.trainerIds[9 + k * 2]; - sub_81646BC(trainerId, monSetId); + monId = gSaveBlock2Ptr->frontier.trainerIds[9 + k * 2]; + sub_81646BC(trainerId, monId); break; case 3: gPartnerTrainerId = trainerId; @@ -3191,7 +3191,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(); @@ -3232,23 +3232,23 @@ static void FillPartnerParty(u16 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 = 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); @@ -3606,19 +3606,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; } @@ -3626,12 +3626,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) @@ -3641,7 +3641,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) @@ -3651,34 +3651,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 = 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/data/battle_frontier/battle_frontier_trainer_mons.h b/src/data/battle_frontier/battle_frontier_trainer_mons.h index 19ed09788..183964f2d 100644 --- a/src/data/battle_frontier/battle_frontier_trainer_mons.h +++ b/src/data/battle_frontier/battle_frontier_trainer_mons.h @@ -3679,6 +3679,65 @@ 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, \ @@ -3801,65 +3860,6 @@ FRONTIER_MON_METAGROSS_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 - // For this group, Expert M uses Tyranitar, Expert F uses Dragonite #define FRONTIER_MONS_EXPERT_2A(lastmon) \ FRONTIER_MON_BRELOOM_1, \ diff --git a/src/data/battle_frontier/battle_frontier_trainers.h b/src/data/battle_frontier/battle_frontier_trainers.h index 081090aac..bbd88d76f 100644 --- a/src/data/battle_frontier/battle_frontier_trainers.h +++ b/src/data/battle_frontier/battle_frontier_trainers.h @@ -6,7 +6,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_CONNER] = { .facilityClass = FACILITY_CLASS_YOUNGSTER, @@ -14,7 +14,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_BRADLEY] = { .facilityClass = FACILITY_CLASS_YOUNGSTER, @@ -22,7 +22,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_CYBIL] = { .facilityClass = FACILITY_CLASS_LASS, @@ -30,7 +30,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_RODETTE] = { .facilityClass = FACILITY_CLASS_LASS, @@ -38,7 +38,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_PEGGY] = { .facilityClass = FACILITY_CLASS_LASS, @@ -46,7 +46,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_KEITH] = { .facilityClass = FACILITY_CLASS_SCHOOL_KID_M, @@ -54,7 +54,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_GRAYSON] = { .facilityClass = FACILITY_CLASS_SCHOOL_KID_M, @@ -62,7 +62,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_GLENN] = { .facilityClass = FACILITY_CLASS_SCHOOL_KID_M, @@ -70,7 +70,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_LILIANA] = { .facilityClass = FACILITY_CLASS_SCHOOL_KID_F, @@ -78,7 +78,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_ELISE] = { .facilityClass = FACILITY_CLASS_SCHOOL_KID_F, @@ -86,7 +86,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_ZOEY] = { .facilityClass = FACILITY_CLASS_SCHOOL_KID_F, @@ -94,7 +94,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_MANUEL] = { .facilityClass = FACILITY_CLASS_RICH_BOY, @@ -102,7 +102,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_RUSS] = { .facilityClass = FACILITY_CLASS_RICH_BOY, @@ -110,7 +110,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_DUSTIN] = { .facilityClass = FACILITY_CLASS_RICH_BOY, @@ -118,7 +118,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_TINA] = { .facilityClass = FACILITY_CLASS_LADY, @@ -126,7 +126,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_GILLIAN1] = { .facilityClass = FACILITY_CLASS_LADY, @@ -134,7 +134,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_ZOE] = { .facilityClass = FACILITY_CLASS_LADY, @@ -142,7 +142,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_CHEN] = { .facilityClass = FACILITY_CLASS_CAMPER, @@ -150,7 +150,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_AL] = { .facilityClass = FACILITY_CLASS_CAMPER, @@ -158,7 +158,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_MITCH] = { .facilityClass = FACILITY_CLASS_CAMPER, @@ -166,7 +166,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_ANNE] = { .facilityClass = FACILITY_CLASS_PICNICKER, @@ -174,7 +174,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_ALIZE] = { .facilityClass = FACILITY_CLASS_PICNICKER, @@ -182,7 +182,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_LAUREN] = { .facilityClass = FACILITY_CLASS_PICNICKER, @@ -190,7 +190,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_KIPP] = { .facilityClass = FACILITY_CLASS_TUBER_M, @@ -198,7 +198,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_JASON] = { .facilityClass = FACILITY_CLASS_TUBER_M, @@ -206,7 +206,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_JOHN] = { .facilityClass = FACILITY_CLASS_TUBER_M, @@ -214,7 +214,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_ANN] = { .facilityClass = FACILITY_CLASS_TUBER_F, @@ -222,7 +222,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_EILEEN] = { .facilityClass = FACILITY_CLASS_TUBER_F, @@ -230,7 +230,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_CARLIE] = { .facilityClass = FACILITY_CLASS_TUBER_F, @@ -238,7 +238,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_GORDON] = { .facilityClass = FACILITY_CLASS_SWIMMER_M, @@ -246,7 +246,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_AYDEN] = { .facilityClass = FACILITY_CLASS_SWIMMER_M, @@ -254,7 +254,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_MARCO] = { .facilityClass = FACILITY_CLASS_SWIMMER_M, @@ -262,7 +262,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_CIERRA] = { .facilityClass = FACILITY_CLASS_SWIMMER_F, @@ -270,7 +270,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_MARCY] = { .facilityClass = FACILITY_CLASS_SWIMMER_F, @@ -278,7 +278,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_KATHY] = { .facilityClass = FACILITY_CLASS_SWIMMER_F, @@ -286,7 +286,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_PEYTON] = { .facilityClass = FACILITY_CLASS_POKEFAN_M, @@ -294,7 +294,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_JULIAN] = { .facilityClass = FACILITY_CLASS_POKEFAN_M, @@ -302,7 +302,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_QUINN] = { .facilityClass = FACILITY_CLASS_POKEFAN_M, @@ -310,7 +310,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_HAYLEE] = { .facilityClass = FACILITY_CLASS_POKEFAN_F, @@ -318,7 +318,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_AMANDA] = { .facilityClass = FACILITY_CLASS_POKEFAN_F, @@ -326,7 +326,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_STACY] = { .facilityClass = FACILITY_CLASS_POKEFAN_F, @@ -334,7 +334,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_RAFAEL] = { .facilityClass = FACILITY_CLASS_PKMN_BREEDER_M, @@ -342,7 +342,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_OLIVER] = { .facilityClass = FACILITY_CLASS_PKMN_BREEDER_M, @@ -350,7 +350,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_PAYTON] = { .facilityClass = FACILITY_CLASS_PKMN_BREEDER_M, @@ -358,7 +358,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_PAMELA] = { .facilityClass = FACILITY_CLASS_PKMN_BREEDER_F, @@ -366,7 +366,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_ELIZA] = { .facilityClass = FACILITY_CLASS_PKMN_BREEDER_F, @@ -374,7 +374,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_MARISA] = { .facilityClass = FACILITY_CLASS_PKMN_BREEDER_F, @@ -382,7 +382,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_LEWIS] = { .facilityClass = FACILITY_CLASS_BUG_CATCHER, @@ -390,7 +390,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_YOSHI] = { .facilityClass = FACILITY_CLASS_BUG_CATCHER, @@ -398,7 +398,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_DESTIN] = { .facilityClass = FACILITY_CLASS_BUG_CATCHER, @@ -406,7 +406,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_KEON] = { .facilityClass = FACILITY_CLASS_NINJA_BOY, @@ -414,7 +414,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_STUART] = { .facilityClass = FACILITY_CLASS_NINJA_BOY, @@ -422,7 +422,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_NESTOR] = { .facilityClass = FACILITY_CLASS_NINJA_BOY, @@ -430,7 +430,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_DERRICK] = { .facilityClass = FACILITY_CLASS_BUG_MANIAC, @@ -438,7 +438,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_BRYSON] = { .facilityClass = FACILITY_CLASS_BUG_MANIAC, @@ -446,7 +446,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_CLAYTON] = { .facilityClass = FACILITY_CLASS_BUG_MANIAC, @@ -454,7 +454,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_TRENTON] = { .facilityClass = FACILITY_CLASS_FISHERMAN, @@ -462,7 +462,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_JENSON] = { .facilityClass = FACILITY_CLASS_FISHERMAN, @@ -470,7 +470,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_WESLEY] = { .facilityClass = FACILITY_CLASS_FISHERMAN, @@ -478,7 +478,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_ANTON] = { .facilityClass = FACILITY_CLASS_RUIN_MANIAC, @@ -486,7 +486,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_LAWSON] = { .facilityClass = FACILITY_CLASS_RUIN_MANIAC, @@ -494,7 +494,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_SAMMY] = { .facilityClass = FACILITY_CLASS_RUIN_MANIAC, @@ -502,7 +502,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_ARNIE] = { .facilityClass = FACILITY_CLASS_COLLECTOR, @@ -510,7 +510,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_ADRIAN] = { .facilityClass = FACILITY_CLASS_COLLECTOR, @@ -518,7 +518,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_TRISTAN] = { .facilityClass = FACILITY_CLASS_COLLECTOR, @@ -526,7 +526,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_JULIANA] = { .facilityClass = FACILITY_CLASS_PARASOL_LADY, @@ -534,7 +534,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_RYLEE] = { .facilityClass = FACILITY_CLASS_PARASOL_LADY, @@ -542,7 +542,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_CHELSEA] = { .facilityClass = FACILITY_CLASS_PARASOL_LADY, @@ -550,7 +550,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_DANELA] = { .facilityClass = FACILITY_CLASS_BEAUTY, @@ -558,7 +558,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_LIZBETH] = { .facilityClass = FACILITY_CLASS_BEAUTY, @@ -566,7 +566,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_AMELIA] = { .facilityClass = FACILITY_CLASS_BEAUTY, @@ -574,7 +574,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_JILLIAN] = { .facilityClass = FACILITY_CLASS_AROMA_LADY, @@ -582,7 +582,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_ABBIE] = { .facilityClass = FACILITY_CLASS_AROMA_LADY, @@ -590,7 +590,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_BRIANA] = { .facilityClass = FACILITY_CLASS_AROMA_LADY, @@ -598,7 +598,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_ANTONIO] = { .facilityClass = FACILITY_CLASS_GUITARIST, @@ -606,7 +606,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_JADEN] = { .facilityClass = FACILITY_CLASS_GUITARIST, @@ -614,7 +614,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_DAKOTA] = { .facilityClass = FACILITY_CLASS_GUITARIST, @@ -622,7 +622,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_BRAYDEN] = { .facilityClass = FACILITY_CLASS_BIRD_KEEPER, @@ -630,7 +630,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_CORSON] = { .facilityClass = FACILITY_CLASS_BIRD_KEEPER, @@ -638,7 +638,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_TREVIN] = { .facilityClass = FACILITY_CLASS_BIRD_KEEPER, @@ -646,7 +646,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_PATRICK] = { .facilityClass = FACILITY_CLASS_SAILOR, @@ -654,7 +654,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_KADEN] = { .facilityClass = FACILITY_CLASS_SAILOR, @@ -662,7 +662,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_MAXWELL] = { .facilityClass = FACILITY_CLASS_SAILOR, @@ -670,7 +670,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_DARYL] = { .facilityClass = FACILITY_CLASS_HIKER, @@ -678,7 +678,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_KENNETH] = { .facilityClass = FACILITY_CLASS_HIKER, @@ -686,7 +686,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_RICH] = { .facilityClass = FACILITY_CLASS_HIKER, @@ -694,7 +694,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_CADEN] = { .facilityClass = FACILITY_CLASS_KINDLER, @@ -702,7 +702,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_MARLON] = { .facilityClass = FACILITY_CLASS_KINDLER, @@ -710,7 +710,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_NASH] = { .facilityClass = FACILITY_CLASS_KINDLER, @@ -718,7 +718,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_ROBBY] = { .facilityClass = FACILITY_CLASS_RUNNING_TRIATHLETE_M, @@ -726,7 +726,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_REECE] = { .facilityClass = FACILITY_CLASS_RUNNING_TRIATHLETE_M, @@ -734,7 +734,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_KATHRYN] = { .facilityClass = FACILITY_CLASS_RUNNING_TRIATHLETE_F, @@ -742,7 +742,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_ELLEN] = { .facilityClass = FACILITY_CLASS_RUNNING_TRIATHLETE_F, @@ -750,7 +750,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_RAMON] = { .facilityClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_M, @@ -758,7 +758,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_ARTHUR] = { .facilityClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_M, @@ -766,7 +766,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_ALONDRA] = { .facilityClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_F, @@ -774,7 +774,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_ADRIANA] = { .facilityClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_F, @@ -782,7 +782,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_MALIK] = { .facilityClass = FACILITY_CLASS_CYCLING_TRIATHLETE_M, @@ -790,7 +790,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_JILL] = { .facilityClass = FACILITY_CLASS_CYCLING_TRIATHLETE_F, @@ -798,7 +798,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_ERIK] = { .facilityClass = FACILITY_CLASS_RUNNING_TRIATHLETE_M, @@ -806,7 +806,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_YAZMIN] = { .facilityClass = FACILITY_CLASS_RUNNING_TRIATHLETE_F, @@ -814,7 +814,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_JAMAL] = { .facilityClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_M, @@ -822,7 +822,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_LESLIE] = { .facilityClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_F, @@ -830,7 +830,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_DAVE] = { .facilityClass = FACILITY_CLASS_CYCLING_TRIATHLETE_M, @@ -838,7 +838,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_CARLO] = { .facilityClass = FACILITY_CLASS_CYCLING_TRIATHLETE_M, @@ -846,7 +846,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_EMILIA] = { .facilityClass = FACILITY_CLASS_CYCLING_TRIATHLETE_F, @@ -854,7 +854,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_DALIA] = { .facilityClass = FACILITY_CLASS_CYCLING_TRIATHLETE_F, @@ -862,7 +862,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_HITOMI] = { .facilityClass = FACILITY_CLASS_BLACK_BELT, @@ -870,7 +870,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_RICARDO] = { .facilityClass = FACILITY_CLASS_BLACK_BELT, @@ -878,7 +878,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_SHIZUKA] = { .facilityClass = FACILITY_CLASS_BLACK_BELT, @@ -886,7 +886,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_JOANA] = { .facilityClass = FACILITY_CLASS_BATTLE_GIRL, @@ -894,7 +894,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_KELLY] = { .facilityClass = FACILITY_CLASS_BATTLE_GIRL, @@ -902,7 +902,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_RAYNA] = { .facilityClass = FACILITY_CLASS_BATTLE_GIRL, @@ -910,7 +910,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_EVAN] = { .facilityClass = FACILITY_CLASS_EXPERT_M, @@ -918,7 +918,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_JORDAN] = { .facilityClass = FACILITY_CLASS_EXPERT_M, @@ -926,7 +926,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_JOEL] = { .facilityClass = FACILITY_CLASS_EXPERT_M, @@ -934,7 +934,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_KRISTEN] = { .facilityClass = FACILITY_CLASS_EXPERT_F, @@ -942,7 +942,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_SELPHY] = { .facilityClass = FACILITY_CLASS_EXPERT_F, @@ -950,7 +950,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_CHLOE] = { .facilityClass = FACILITY_CLASS_EXPERT_F, @@ -958,7 +958,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_NORTON] = { .facilityClass = FACILITY_CLASS_PSYCHIC_M, @@ -966,7 +966,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_LUKAS] = { .facilityClass = FACILITY_CLASS_PSYCHIC_M, @@ -974,7 +974,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_ZACH] = { .facilityClass = FACILITY_CLASS_PSYCHIC_M, @@ -982,7 +982,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_KAITLYN] = { .facilityClass = FACILITY_CLASS_PSYCHIC_F, @@ -990,7 +990,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_BREANNA] = { .facilityClass = FACILITY_CLASS_PSYCHIC_F, @@ -998,7 +998,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_KENDRA] = { .facilityClass = FACILITY_CLASS_PSYCHIC_F, @@ -1006,7 +1006,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_MOLLY] = { .facilityClass = FACILITY_CLASS_HEX_MANIAC, @@ -1014,7 +1014,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_JAZMIN] = { .facilityClass = FACILITY_CLASS_HEX_MANIAC, @@ -1022,7 +1022,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_KELSEY] = { .facilityClass = FACILITY_CLASS_HEX_MANIAC, @@ -1030,7 +1030,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_JALEN] = { .facilityClass = FACILITY_CLASS_POKEMANIAC, @@ -1038,7 +1038,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_GRIFFEN] = { .facilityClass = FACILITY_CLASS_POKEMANIAC, @@ -1046,7 +1046,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_XANDER] = { .facilityClass = FACILITY_CLASS_POKEMANIAC, @@ -1054,7 +1054,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_MARVIN] = { .facilityClass = FACILITY_CLASS_GENTLEMAN, @@ -1062,7 +1062,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_BRENNAN] = { .facilityClass = FACILITY_CLASS_GENTLEMAN, @@ -1070,7 +1070,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_BALEY] = { .facilityClass = FACILITY_CLASS_BUG_MANIAC, @@ -1078,7 +1078,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_ZACKARY] = { .facilityClass = FACILITY_CLASS_RUIN_MANIAC, @@ -1086,7 +1086,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_GABRIEL] = { .facilityClass = FACILITY_CLASS_COLLECTOR, @@ -1094,7 +1094,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_EMILY] = { .facilityClass = FACILITY_CLASS_PARASOL_LADY, @@ -1102,7 +1102,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_JORDYN] = { .facilityClass = FACILITY_CLASS_BEAUTY, @@ -1110,7 +1110,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_SOFIA] = { .facilityClass = FACILITY_CLASS_AROMA_LADY, @@ -1118,7 +1118,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_BRADEN] = { .facilityClass = FACILITY_CLASS_COOLTRAINER_M, @@ -1126,7 +1126,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_KAYDEN] = { .facilityClass = FACILITY_CLASS_COOLTRAINER_M, @@ -1134,7 +1134,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_COOPER] = { .facilityClass = FACILITY_CLASS_COOLTRAINER_M, @@ -1142,7 +1142,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_JULIA] = { .facilityClass = FACILITY_CLASS_COOLTRAINER_F, @@ -1150,7 +1150,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_AMARA] = { .facilityClass = FACILITY_CLASS_COOLTRAINER_F, @@ -1158,7 +1158,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_LYNN] = { .facilityClass = FACILITY_CLASS_COOLTRAINER_F, @@ -1166,7 +1166,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_JOVAN] = { .facilityClass = FACILITY_CLASS_PKMN_RANGER_M, @@ -1174,7 +1174,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_DOMINIC] = { .facilityClass = FACILITY_CLASS_PKMN_RANGER_M, @@ -1182,7 +1182,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_NIKOLAS] = { .facilityClass = FACILITY_CLASS_PKMN_RANGER_M, @@ -1190,7 +1190,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_VALERIA] = { .facilityClass = FACILITY_CLASS_PKMN_RANGER_F, @@ -1198,7 +1198,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_DELANEY] = { .facilityClass = FACILITY_CLASS_PKMN_RANGER_F, @@ -1206,7 +1206,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_MEGHAN] = { .facilityClass = FACILITY_CLASS_PKMN_RANGER_F, @@ -1214,7 +1214,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_ROBERTO] = { .facilityClass = FACILITY_CLASS_DRAGON_TAMER, @@ -1222,7 +1222,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_DAMIAN] = { .facilityClass = FACILITY_CLASS_DRAGON_TAMER, @@ -1230,7 +1230,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_BRODY] = { .facilityClass = FACILITY_CLASS_DRAGON_TAMER, @@ -1238,7 +1238,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_GRAHAM] = { .facilityClass = FACILITY_CLASS_DRAGON_TAMER, @@ -1246,7 +1246,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_TYLOR] = { .facilityClass = FACILITY_CLASS_POKEFAN_M, @@ -1254,7 +1254,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_JAREN] = { .facilityClass = FACILITY_CLASS_POKEFAN_F, @@ -1262,7 +1262,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_CORDELL] = { .facilityClass = FACILITY_CLASS_PKMN_BREEDER_M, @@ -1270,7 +1270,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_JAZLYN] = { .facilityClass = FACILITY_CLASS_PKMN_BREEDER_F, @@ -1278,7 +1278,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_ZACHERY] = { .facilityClass = FACILITY_CLASS_YOUNGSTER, @@ -1286,7 +1286,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_JOHAN] = { .facilityClass = FACILITY_CLASS_YOUNGSTER, @@ -1294,7 +1294,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_SHEA] = { .facilityClass = FACILITY_CLASS_LASS, @@ -1302,7 +1302,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_KAILA] = { .facilityClass = FACILITY_CLASS_LASS, @@ -1310,7 +1310,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_ISIAH] = { .facilityClass = FACILITY_CLASS_SCHOOL_KID_M, @@ -1318,7 +1318,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_GARRETT] = { .facilityClass = FACILITY_CLASS_SCHOOL_KID_M, @@ -1326,7 +1326,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_HAYLIE] = { .facilityClass = FACILITY_CLASS_SCHOOL_KID_F, @@ -1334,7 +1334,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_MEGAN] = { .facilityClass = FACILITY_CLASS_SCHOOL_KID_F, @@ -1342,7 +1342,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_ISSAC] = { .facilityClass = FACILITY_CLASS_RICH_BOY, @@ -1350,7 +1350,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_QUINTON] = { .facilityClass = FACILITY_CLASS_RICH_BOY, @@ -1358,7 +1358,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_SALMA] = { .facilityClass = FACILITY_CLASS_LADY, @@ -1366,7 +1366,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_ANSLEY] = { .facilityClass = FACILITY_CLASS_LADY, @@ -1374,7 +1374,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_HOLDEN] = { .facilityClass = FACILITY_CLASS_BUG_CATCHER, @@ -1382,7 +1382,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_LUCA] = { .facilityClass = FACILITY_CLASS_BUG_CATCHER, @@ -1390,7 +1390,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_JAMISON] = { .facilityClass = FACILITY_CLASS_NINJA_BOY, @@ -1398,7 +1398,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_GUNNAR] = { .facilityClass = FACILITY_CLASS_NINJA_BOY, @@ -1406,7 +1406,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_CRAIG] = { .facilityClass = FACILITY_CLASS_TUBER_M, @@ -1414,7 +1414,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_PIERCE] = { .facilityClass = FACILITY_CLASS_TUBER_M, @@ -1422,7 +1422,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_REGINA] = { .facilityClass = FACILITY_CLASS_TUBER_F, @@ -1430,7 +1430,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_ALISON] = { .facilityClass = FACILITY_CLASS_TUBER_F, @@ -1438,7 +1438,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_HANK] = { .facilityClass = FACILITY_CLASS_BUG_MANIAC, @@ -1446,7 +1446,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_EARL] = { .facilityClass = FACILITY_CLASS_BUG_MANIAC, @@ -1454,7 +1454,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_RAMIRO] = { .facilityClass = FACILITY_CLASS_FISHERMAN, @@ -1462,7 +1462,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_HUNTER] = { .facilityClass = FACILITY_CLASS_FISHERMAN, @@ -1470,7 +1470,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_AIDEN] = { .facilityClass = FACILITY_CLASS_RUIN_MANIAC, @@ -1478,7 +1478,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_XAVIER] = { .facilityClass = FACILITY_CLASS_RUIN_MANIAC, @@ -1486,7 +1486,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_CLINTON] = { .facilityClass = FACILITY_CLASS_COLLECTOR, @@ -1494,7 +1494,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_JESSE] = { .facilityClass = FACILITY_CLASS_COLLECTOR, @@ -1502,7 +1502,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_EDUARDO] = { .facilityClass = FACILITY_CLASS_GUITARIST, @@ -1510,7 +1510,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_HAL] = { .facilityClass = FACILITY_CLASS_GUITARIST, @@ -1518,7 +1518,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_GAGE] = { .facilityClass = FACILITY_CLASS_BIRD_KEEPER, @@ -1526,7 +1526,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_ARNOLD] = { .facilityClass = FACILITY_CLASS_BIRD_KEEPER, @@ -1534,7 +1534,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_JARRETT] = { .facilityClass = FACILITY_CLASS_SAILOR, @@ -1542,7 +1542,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_GARETT] = { .facilityClass = FACILITY_CLASS_SAILOR, @@ -1550,7 +1550,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_EMANUEL] = { .facilityClass = FACILITY_CLASS_HIKER, @@ -1558,7 +1558,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_GUSTAVO] = { .facilityClass = FACILITY_CLASS_HIKER, @@ -1566,7 +1566,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_KAMERON] = { .facilityClass = FACILITY_CLASS_KINDLER, @@ -1574,7 +1574,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_ALFREDO] = { .facilityClass = FACILITY_CLASS_KINDLER, @@ -1582,7 +1582,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_RUBEN] = { .facilityClass = FACILITY_CLASS_GENTLEMAN, @@ -1590,7 +1590,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_LAMAR] = { .facilityClass = FACILITY_CLASS_GENTLEMAN, @@ -1598,7 +1598,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_JAXON] = { .facilityClass = FACILITY_CLASS_YOUNGSTER, @@ -1606,7 +1606,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_LOGAN] = { .facilityClass = FACILITY_CLASS_YOUNGSTER, @@ -1614,7 +1614,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_EMILEE] = { .facilityClass = FACILITY_CLASS_LASS, @@ -1622,7 +1622,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_JOSIE] = { .facilityClass = FACILITY_CLASS_LASS, @@ -1630,7 +1630,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_ARMANDO] = { .facilityClass = FACILITY_CLASS_CAMPER, @@ -1638,7 +1638,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_SKYLER] = { .facilityClass = FACILITY_CLASS_CAMPER, @@ -1646,7 +1646,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_RUTH] = { .facilityClass = FACILITY_CLASS_PICNICKER, @@ -1654,7 +1654,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_MELODY] = { .facilityClass = FACILITY_CLASS_PICNICKER, @@ -1662,7 +1662,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_PEDRO] = { .facilityClass = FACILITY_CLASS_SWIMMER_M, @@ -1670,7 +1670,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_ERICK] = { .facilityClass = FACILITY_CLASS_SWIMMER_M, @@ -1678,7 +1678,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_ELAINE] = { .facilityClass = FACILITY_CLASS_SWIMMER_F, @@ -1686,7 +1686,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_JOYCE] = { .facilityClass = FACILITY_CLASS_SWIMMER_F, @@ -1694,7 +1694,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_TODD] = { .facilityClass = FACILITY_CLASS_POKEFAN_M, @@ -1702,7 +1702,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_GAVIN] = { .facilityClass = FACILITY_CLASS_POKEFAN_M, @@ -1710,7 +1710,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_MALORY] = { .facilityClass = FACILITY_CLASS_POKEFAN_F, @@ -1718,7 +1718,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_ESTHER] = { .facilityClass = FACILITY_CLASS_POKEFAN_F, @@ -1726,7 +1726,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_OSCAR] = { .facilityClass = FACILITY_CLASS_PKMN_BREEDER_M, @@ -1734,7 +1734,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_WILSON] = { .facilityClass = FACILITY_CLASS_PKMN_BREEDER_M, @@ -1742,7 +1742,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_CLARE] = { .facilityClass = FACILITY_CLASS_PKMN_BREEDER_F, @@ -1750,7 +1750,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_TESS] = { .facilityClass = FACILITY_CLASS_PKMN_BREEDER_F, @@ -1758,7 +1758,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_LEON] = { .facilityClass = FACILITY_CLASS_COOLTRAINER_M, @@ -1766,7 +1766,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_ALONZO] = { .facilityClass = FACILITY_CLASS_COOLTRAINER_M, @@ -1774,7 +1774,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_VINCE] = { .facilityClass = FACILITY_CLASS_COOLTRAINER_M, @@ -1782,7 +1782,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_BRYON] = { .facilityClass = FACILITY_CLASS_COOLTRAINER_M, @@ -1790,7 +1790,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_AVA] = { .facilityClass = FACILITY_CLASS_COOLTRAINER_F, @@ -1798,7 +1798,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_MIRIAM] = { .facilityClass = FACILITY_CLASS_COOLTRAINER_F, @@ -1806,7 +1806,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_CARRIE] = { .facilityClass = FACILITY_CLASS_COOLTRAINER_F, @@ -1814,7 +1814,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_GILLIAN2] = { .facilityClass = FACILITY_CLASS_COOLTRAINER_F, @@ -1822,7 +1822,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_TYLER] = { .facilityClass = FACILITY_CLASS_PKMN_RANGER_M, @@ -1830,7 +1830,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_CHAZ] = { .facilityClass = FACILITY_CLASS_PKMN_RANGER_M, @@ -1838,7 +1838,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_NELSON] = { .facilityClass = FACILITY_CLASS_PKMN_RANGER_M, @@ -1846,7 +1846,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_SHANIA] = { .facilityClass = FACILITY_CLASS_PKMN_RANGER_F, @@ -1854,7 +1854,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_STELLA] = { .facilityClass = FACILITY_CLASS_PKMN_RANGER_F, @@ -1862,7 +1862,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_DORINE] = { .facilityClass = FACILITY_CLASS_PKMN_RANGER_F, @@ -1870,7 +1870,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_MADDOX] = { .facilityClass = FACILITY_CLASS_DRAGON_TAMER, @@ -1878,7 +1878,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_DAVIN] = { .facilityClass = FACILITY_CLASS_DRAGON_TAMER, @@ -1886,7 +1886,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_TREVON] = { .facilityClass = FACILITY_CLASS_DRAGON_TAMER, @@ -1894,7 +1894,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_MATEO] = { .facilityClass = FACILITY_CLASS_BLACK_BELT, @@ -1902,7 +1902,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_BRET] = { .facilityClass = FACILITY_CLASS_BLACK_BELT, @@ -1910,7 +1910,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_RAUL] = { .facilityClass = FACILITY_CLASS_BLACK_BELT, @@ -1918,7 +1918,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_KAY] = { .facilityClass = FACILITY_CLASS_BATTLE_GIRL, @@ -1926,7 +1926,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_ELENA] = { .facilityClass = FACILITY_CLASS_BATTLE_GIRL, @@ -1934,7 +1934,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_ALANA] = { .facilityClass = FACILITY_CLASS_BATTLE_GIRL, @@ -1942,7 +1942,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_ALEXAS] = { .facilityClass = FACILITY_CLASS_EXPERT_M, @@ -1950,7 +1950,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_WESTON] = { .facilityClass = FACILITY_CLASS_EXPERT_M, @@ -1958,7 +1958,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_JASPER] = { .facilityClass = FACILITY_CLASS_EXPERT_M, @@ -1966,7 +1966,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_NADIA] = { .facilityClass = FACILITY_CLASS_EXPERT_F, @@ -1974,7 +1974,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_MIRANDA] = { .facilityClass = FACILITY_CLASS_EXPERT_F, @@ -1982,7 +1982,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_EMMA] = { .facilityClass = FACILITY_CLASS_EXPERT_F, @@ -1990,7 +1990,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_ROLANDO] = { .facilityClass = FACILITY_CLASS_PSYCHIC_M, @@ -1998,7 +1998,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_STANLY] = { .facilityClass = FACILITY_CLASS_PSYCHIC_M, @@ -2006,7 +2006,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_DARIO] = { .facilityClass = FACILITY_CLASS_PSYCHIC_M, @@ -2014,7 +2014,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_KARLEE] = { .facilityClass = FACILITY_CLASS_PSYCHIC_F, @@ -2022,7 +2022,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_JAYLIN] = { .facilityClass = FACILITY_CLASS_PSYCHIC_F, @@ -2030,7 +2030,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_INGRID] = { .facilityClass = FACILITY_CLASS_PSYCHIC_F, @@ -2038,7 +2038,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_DELILAH] = { .facilityClass = FACILITY_CLASS_HEX_MANIAC, @@ -2046,7 +2046,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_CARLY] = { .facilityClass = FACILITY_CLASS_HEX_MANIAC, @@ -2054,7 +2054,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_LEXIE] = { .facilityClass = FACILITY_CLASS_HEX_MANIAC, @@ -2062,7 +2062,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_MILLER] = { .facilityClass = FACILITY_CLASS_POKEMANIAC, @@ -2070,7 +2070,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_MARV] = { .facilityClass = FACILITY_CLASS_POKEMANIAC, @@ -2078,7 +2078,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_LAYTON] = { .facilityClass = FACILITY_CLASS_POKEMANIAC, @@ -2086,7 +2086,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_BROOKS] = { .facilityClass = FACILITY_CLASS_GENTLEMAN, @@ -2094,7 +2094,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_GREGORY] = { .facilityClass = FACILITY_CLASS_GENTLEMAN, @@ -2102,7 +2102,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_REESE] = { .facilityClass = FACILITY_CLASS_GENTLEMAN, @@ -2110,7 +2110,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_MASON] = { .facilityClass = FACILITY_CLASS_RUNNING_TRIATHLETE_M, @@ -2118,7 +2118,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_TOBY] = { .facilityClass = FACILITY_CLASS_RUNNING_TRIATHLETE_M, @@ -2126,7 +2126,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_DOROTHY] = { .facilityClass = FACILITY_CLASS_RUNNING_TRIATHLETE_F, @@ -2134,7 +2134,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_PIPER] = { .facilityClass = FACILITY_CLASS_RUNNING_TRIATHLETE_F, @@ -2142,7 +2142,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_FINN] = { .facilityClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_M, @@ -2150,7 +2150,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_SAMIR] = { .facilityClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_M, @@ -2158,7 +2158,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_FIONA] = { .facilityClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_F, @@ -2166,7 +2166,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_GLORIA] = { .facilityClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_F, @@ -2174,7 +2174,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_NICO] = { .facilityClass = FACILITY_CLASS_CYCLING_TRIATHLETE_M, @@ -2182,7 +2182,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_JEREMY] = { .facilityClass = FACILITY_CLASS_CYCLING_TRIATHLETE_M, @@ -2190,7 +2190,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_CAITLIN] = { .facilityClass = FACILITY_CLASS_CYCLING_TRIATHLETE_F, @@ -2198,7 +2198,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_REENA] = { .facilityClass = FACILITY_CLASS_CYCLING_TRIATHLETE_F, @@ -2206,7 +2206,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_AVERY] = { .facilityClass = FACILITY_CLASS_BUG_MANIAC, @@ -2214,7 +2214,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_LIAM] = { .facilityClass = FACILITY_CLASS_BUG_MANIAC, @@ -2222,7 +2222,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_THEO] = { .facilityClass = FACILITY_CLASS_FISHERMAN, @@ -2230,7 +2230,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_BAILEY] = { .facilityClass = FACILITY_CLASS_FISHERMAN, @@ -2238,7 +2238,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_HUGO] = { .facilityClass = FACILITY_CLASS_RUIN_MANIAC, @@ -2246,7 +2246,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_BRYCE] = { .facilityClass = FACILITY_CLASS_RUIN_MANIAC, @@ -2254,7 +2254,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_GIDEON] = { .facilityClass = FACILITY_CLASS_COLLECTOR, @@ -2262,7 +2262,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_TRISTON] = { .facilityClass = FACILITY_CLASS_COLLECTOR, @@ -2270,7 +2270,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_CHARLES] = { .facilityClass = FACILITY_CLASS_GUITARIST, @@ -2278,7 +2278,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_RAYMOND] = { .facilityClass = FACILITY_CLASS_GUITARIST, @@ -2286,7 +2286,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_DIRK] = { .facilityClass = FACILITY_CLASS_BIRD_KEEPER, @@ -2294,7 +2294,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_HAROLD] = { .facilityClass = FACILITY_CLASS_BIRD_KEEPER, @@ -2302,7 +2302,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_OMAR] = { .facilityClass = FACILITY_CLASS_SAILOR, @@ -2310,7 +2310,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_PETER] = { .facilityClass = FACILITY_CLASS_SAILOR, @@ -2318,7 +2318,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_DEV] = { .facilityClass = FACILITY_CLASS_HIKER, @@ -2326,7 +2326,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_COREY] = { .facilityClass = FACILITY_CLASS_HIKER, @@ -2334,7 +2334,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_ANDRE] = { .facilityClass = FACILITY_CLASS_KINDLER, @@ -2342,7 +2342,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_FERRIS] = { .facilityClass = FACILITY_CLASS_KINDLER, @@ -2350,7 +2350,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_ALIVIA] = { .facilityClass = FACILITY_CLASS_PARASOL_LADY, @@ -2358,7 +2358,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_PAIGE] = { .facilityClass = FACILITY_CLASS_PARASOL_LADY, @@ -2366,7 +2366,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_ANYA] = { .facilityClass = FACILITY_CLASS_BEAUTY, @@ -2374,7 +2374,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_DAWN] = { .facilityClass = FACILITY_CLASS_BEAUTY, @@ -2382,7 +2382,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_ABBY] = { .facilityClass = FACILITY_CLASS_AROMA_LADY, @@ -2390,7 +2390,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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 }, [FRONTIER_TRAINER_GRETEL] = { .facilityClass = FACILITY_CLASS_AROMA_LADY, @@ -2398,6 +2398,6 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COU .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..a6d59c8b7 100644 --- a/src/data/battle_frontier/battle_tent.h +++ b/src/data/battle_frontier/battle_tent.h @@ -515,7 +515,7 @@ const struct BattleFrontierTrainer gSlateportBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_RUIN_MANIAC, @@ -523,7 +523,7 @@ const struct BattleFrontierTrainer gSlateportBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_TUBER_F, @@ -531,7 +531,7 @@ const struct BattleFrontierTrainer gSlateportBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_TUBER_M, @@ -539,7 +539,7 @@ const struct BattleFrontierTrainer gSlateportBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_LADY, @@ -547,7 +547,7 @@ const struct BattleFrontierTrainer gSlateportBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_BEAUTY, @@ -555,7 +555,7 @@ const struct BattleFrontierTrainer gSlateportBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_RICH_BOY, @@ -563,7 +563,7 @@ const struct BattleFrontierTrainer gSlateportBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_POKEMANIAC, @@ -571,7 +571,7 @@ const struct BattleFrontierTrainer gSlateportBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_SWIMMER_M, @@ -579,7 +579,7 @@ const struct BattleFrontierTrainer gSlateportBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_CAMPER, @@ -587,7 +587,7 @@ const struct BattleFrontierTrainer gSlateportBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_BUG_MANIAC, @@ -595,7 +595,7 @@ const struct BattleFrontierTrainer gSlateportBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_GENTLEMAN, @@ -603,7 +603,7 @@ const struct BattleFrontierTrainer gSlateportBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_GUITARIST, @@ -611,7 +611,7 @@ const struct BattleFrontierTrainer gSlateportBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_SCHOOL_KID_F, @@ -619,7 +619,7 @@ const struct BattleFrontierTrainer gSlateportBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_COOLTRAINER_M, @@ -627,7 +627,7 @@ const struct BattleFrontierTrainer gSlateportBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_COOLTRAINER_F, @@ -635,7 +635,7 @@ const struct BattleFrontierTrainer gSlateportBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_POKEFAN_M, @@ -643,7 +643,7 @@ const struct BattleFrontierTrainer gSlateportBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_POKEFAN_F, @@ -651,7 +651,7 @@ const struct BattleFrontierTrainer gSlateportBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_EXPERT_M, @@ -659,7 +659,7 @@ const struct BattleFrontierTrainer gSlateportBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_EXPERT_F, @@ -667,7 +667,7 @@ const struct BattleFrontierTrainer gSlateportBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_YOUNGSTER, @@ -675,7 +675,7 @@ const struct BattleFrontierTrainer gSlateportBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_FISHERMAN, @@ -683,7 +683,7 @@ const struct BattleFrontierTrainer gSlateportBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_BIRD_KEEPER, @@ -691,7 +691,7 @@ const struct BattleFrontierTrainer gSlateportBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_NINJA_BOY, @@ -699,7 +699,7 @@ const struct BattleFrontierTrainer gSlateportBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_PARASOL_LADY, @@ -707,7 +707,7 @@ const struct BattleFrontierTrainer gSlateportBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_SWIMMER_F, @@ -715,7 +715,7 @@ const struct BattleFrontierTrainer gSlateportBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_PICNICKER, @@ -723,7 +723,7 @@ const struct BattleFrontierTrainer gSlateportBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_SAILOR, @@ -731,7 +731,7 @@ const struct BattleFrontierTrainer gSlateportBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_COLLECTOR, @@ -739,7 +739,7 @@ const struct BattleFrontierTrainer gSlateportBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_LASS, @@ -747,7 +747,7 @@ const struct BattleFrontierTrainer gSlateportBattleTentTrainers[] = .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 } }; @@ -1568,7 +1568,7 @@ const struct BattleFrontierTrainer gVerdanturfBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_RUIN_MANIAC, @@ -1576,7 +1576,7 @@ const struct BattleFrontierTrainer gVerdanturfBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_TUBER_F, @@ -1584,7 +1584,7 @@ const struct BattleFrontierTrainer gVerdanturfBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_TUBER_M, @@ -1592,7 +1592,7 @@ const struct BattleFrontierTrainer gVerdanturfBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_LADY, @@ -1600,7 +1600,7 @@ const struct BattleFrontierTrainer gVerdanturfBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_BEAUTY, @@ -1608,7 +1608,7 @@ const struct BattleFrontierTrainer gVerdanturfBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_RICH_BOY, @@ -1616,7 +1616,7 @@ const struct BattleFrontierTrainer gVerdanturfBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_POKEMANIAC, @@ -1624,7 +1624,7 @@ const struct BattleFrontierTrainer gVerdanturfBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_SWIMMER_M, @@ -1632,7 +1632,7 @@ const struct BattleFrontierTrainer gVerdanturfBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_CAMPER, @@ -1640,7 +1640,7 @@ const struct BattleFrontierTrainer gVerdanturfBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_BUG_MANIAC, @@ -1648,7 +1648,7 @@ const struct BattleFrontierTrainer gVerdanturfBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_GENTLEMAN, @@ -1656,7 +1656,7 @@ const struct BattleFrontierTrainer gVerdanturfBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_GUITARIST, @@ -1664,7 +1664,7 @@ const struct BattleFrontierTrainer gVerdanturfBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_SCHOOL_KID_F, @@ -1672,7 +1672,7 @@ const struct BattleFrontierTrainer gVerdanturfBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_COOLTRAINER_M, @@ -1680,7 +1680,7 @@ const struct BattleFrontierTrainer gVerdanturfBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_COOLTRAINER_F, @@ -1688,7 +1688,7 @@ const struct BattleFrontierTrainer gVerdanturfBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_POKEFAN_M, @@ -1696,7 +1696,7 @@ const struct BattleFrontierTrainer gVerdanturfBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_POKEFAN_F, @@ -1704,7 +1704,7 @@ const struct BattleFrontierTrainer gVerdanturfBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_EXPERT_M, @@ -1712,7 +1712,7 @@ const struct BattleFrontierTrainer gVerdanturfBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_EXPERT_F, @@ -1720,7 +1720,7 @@ const struct BattleFrontierTrainer gVerdanturfBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_YOUNGSTER, @@ -1728,7 +1728,7 @@ const struct BattleFrontierTrainer gVerdanturfBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_FISHERMAN, @@ -1736,7 +1736,7 @@ const struct BattleFrontierTrainer gVerdanturfBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_BIRD_KEEPER, @@ -1744,7 +1744,7 @@ const struct BattleFrontierTrainer gVerdanturfBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_NINJA_BOY, @@ -1752,7 +1752,7 @@ const struct BattleFrontierTrainer gVerdanturfBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_PARASOL_LADY, @@ -1760,7 +1760,7 @@ const struct BattleFrontierTrainer gVerdanturfBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_SWIMMER_F, @@ -1768,7 +1768,7 @@ const struct BattleFrontierTrainer gVerdanturfBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_PICNICKER, @@ -1776,7 +1776,7 @@ const struct BattleFrontierTrainer gVerdanturfBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_SAILOR, @@ -1784,7 +1784,7 @@ const struct BattleFrontierTrainer gVerdanturfBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_COLLECTOR, @@ -1792,7 +1792,7 @@ const struct BattleFrontierTrainer gVerdanturfBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_LASS, @@ -1800,7 +1800,7 @@ const struct BattleFrontierTrainer gVerdanturfBattleTentTrainers[] = .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 } }; @@ -2449,7 +2449,7 @@ const struct BattleFrontierTrainer gFallarborBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_RUIN_MANIAC, @@ -2457,7 +2457,7 @@ const struct BattleFrontierTrainer gFallarborBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_TUBER_F, @@ -2465,7 +2465,7 @@ const struct BattleFrontierTrainer gFallarborBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_TUBER_M, @@ -2473,7 +2473,7 @@ const struct BattleFrontierTrainer gFallarborBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_LADY, @@ -2481,7 +2481,7 @@ const struct BattleFrontierTrainer gFallarborBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_BEAUTY, @@ -2489,7 +2489,7 @@ const struct BattleFrontierTrainer gFallarborBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_RICH_BOY, @@ -2497,7 +2497,7 @@ const struct BattleFrontierTrainer gFallarborBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_POKEMANIAC, @@ -2505,7 +2505,7 @@ const struct BattleFrontierTrainer gFallarborBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_SWIMMER_M, @@ -2513,7 +2513,7 @@ const struct BattleFrontierTrainer gFallarborBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_CAMPER, @@ -2521,7 +2521,7 @@ const struct BattleFrontierTrainer gFallarborBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_BUG_MANIAC, @@ -2529,7 +2529,7 @@ const struct BattleFrontierTrainer gFallarborBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_GENTLEMAN, @@ -2537,7 +2537,7 @@ const struct BattleFrontierTrainer gFallarborBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_GUITARIST, @@ -2545,7 +2545,7 @@ const struct BattleFrontierTrainer gFallarborBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_SCHOOL_KID_F, @@ -2553,7 +2553,7 @@ const struct BattleFrontierTrainer gFallarborBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_COOLTRAINER_M, @@ -2561,7 +2561,7 @@ const struct BattleFrontierTrainer gFallarborBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_COOLTRAINER_F, @@ -2569,7 +2569,7 @@ const struct BattleFrontierTrainer gFallarborBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_POKEFAN_M, @@ -2577,7 +2577,7 @@ const struct BattleFrontierTrainer gFallarborBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_POKEFAN_F, @@ -2585,7 +2585,7 @@ const struct BattleFrontierTrainer gFallarborBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_EXPERT_M, @@ -2593,7 +2593,7 @@ const struct BattleFrontierTrainer gFallarborBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_EXPERT_F, @@ -2601,7 +2601,7 @@ const struct BattleFrontierTrainer gFallarborBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_YOUNGSTER, @@ -2609,7 +2609,7 @@ const struct BattleFrontierTrainer gFallarborBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_FISHERMAN, @@ -2617,7 +2617,7 @@ const struct BattleFrontierTrainer gFallarborBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_BIRD_KEEPER, @@ -2625,7 +2625,7 @@ const struct BattleFrontierTrainer gFallarborBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_NINJA_BOY, @@ -2633,7 +2633,7 @@ const struct BattleFrontierTrainer gFallarborBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_PARASOL_LADY, @@ -2641,7 +2641,7 @@ const struct BattleFrontierTrainer gFallarborBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_SWIMMER_F, @@ -2649,7 +2649,7 @@ const struct BattleFrontierTrainer gFallarborBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_PICNICKER, @@ -2657,7 +2657,7 @@ const struct BattleFrontierTrainer gFallarborBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_SAILOR, @@ -2665,7 +2665,7 @@ const struct BattleFrontierTrainer gFallarborBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_COLLECTOR, @@ -2673,7 +2673,7 @@ const struct BattleFrontierTrainer gFallarborBattleTentTrainers[] = .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] = { .facilityClass = FACILITY_CLASS_LASS, @@ -2681,7 +2681,7 @@ const struct BattleFrontierTrainer gFallarborBattleTentTrainers[] = .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 } }; diff --git a/src/graphics.c b/src/graphics.c index 30e5a8121..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/battle_frontier/unknown_D83900.bin.lz"); // tilemaps likely - -const u32 gUnknown_08D83B2C[] = INCBIN_U32("graphics/battle_frontier/unknown_D83B2C.bin.lz"); - -const u32 gUnknown_08D83C3C[] = INCBIN_U32("graphics/battle_frontier/unknown_D83C3C.bin.lz"); - -const u32 gUnknown_08D83D50[] = INCBIN_U32("graphics/battle_frontier/misc1.4bpp.lz"); - -const u32 gUnknown_08D84970[] = INCBIN_U32("graphics/battle_frontier/unknown_D84970.bin.lz"); - -const u32 gUnknown_08D84F00[] = INCBIN_U32("graphics/battle_frontier/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/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/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/pokemon.c b/src/pokemon.c index 82da96f7d..94002dc7b 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 @@ -5715,7 +5715,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; 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); } |