From 711e7d884c481bf5d048716a71da81ef033a9d6c Mon Sep 17 00:00:00 2001 From: tustin2121 Date: Tue, 10 Sep 2019 13:40:28 -0400 Subject: [PATCH 01/37] Document cave transition code. --- include/fldeff.h | 2 +- src/fldeff_flash.c | 151 +++++++++++++++++++++++---------------------- src/overworld.c | 2 +- 3 files changed, 78 insertions(+), 77 deletions(-) diff --git a/include/fldeff.h b/include/fldeff.h index ff6c9823fb..0a2bad6293 100644 --- a/include/fldeff.h +++ b/include/fldeff.h @@ -33,7 +33,7 @@ void sub_8161560(u8 taskId); // flash bool8 SetUpFieldMove_Flash(void); -void c2_change_map(void); +void CB2_DoChangeMap(void); bool8 GetMapPairFadeToType(u8 a1, u8 a2); bool8 GetMapPairFadeFromType(u8 a1, u8 a2); diff --git a/src/fldeff_flash.c b/src/fldeff_flash.c index a2457307b1..665e11deb0 100644 --- a/src/fldeff_flash.c +++ b/src/fldeff_flash.c @@ -14,12 +14,13 @@ #include "sprite.h" #include "task.h" #include "constants/songs.h" +#include "constants/map_types.h" // structures struct FlashStruct { - u8 unk0; - u8 unk1; + u8 fromType; + u8 toType; bool8 unk2; bool8 unk3; void (*func)(void); @@ -28,38 +29,38 @@ struct FlashStruct // static functions static void hm2_flash(void); static void sub_81371B4(void); -static bool8 sub_8137304(void); -static void sub_81373F0(void); -static void sub_8137404(u8 taskId); -static void sub_8137420(u8 taskId); -static void sub_81374C4(u8 taskId); -static void sub_813750C(u8 taskId); -static void sub_8137574(u8 taskId); -static void sub_81375A8(void); -static void sub_81375BC(u8 taskId); -static void sub_81375D8(u8 taskId); -static void sub_8137678(u8 taskId); -static void sub_81376DC(u8 taskId); +static bool8 MaybeDoMapTransition(void); +static void DoExitCaveTransition(void); +static void Task_ExitCaveTransition1(u8 taskId); +static void Task_ExitCaveTransition2(u8 taskId); +static void Task_ExitCaveTransition3(u8 taskId); +static void Task_ExitCaveTransition4(u8 taskId); +static void Task_ExitCaveTransition5(u8 taskId); +static void DoEnterCaveTransition(void); +static void Task_EnterCaveTransition1(u8 taskId); +static void Task_EnterCaveTransition2(u8 taskId); +static void Task_EnterCaveTransition3(u8 taskId); +static void Task_EnterCaveTransition4(u8 taskId); // rodata -static const struct FlashStruct gUnknown_085B27C8[] = +static const struct FlashStruct sTransitionTypes[] = { - {1, 4, 1, 0, sub_81375A8}, - {2, 4, 1, 0, sub_81375A8}, - {3, 4, 1, 0, sub_81375A8}, - {5, 4, 1, 0, sub_81375A8}, - {6, 4, 1, 0, sub_81375A8}, - {7, 4, 1, 0, sub_81375A8}, - {8, 4, 1, 0, sub_81375A8}, - {9, 4, 1, 0, sub_81375A8}, - {4, 1, 0, 1, sub_81373F0}, - {4, 2, 0, 1, sub_81373F0}, - {4, 3, 0, 1, sub_81373F0}, - {4, 5, 0, 1, sub_81373F0}, - {4, 6, 0, 1, sub_81373F0}, - {4, 7, 0, 1, sub_81373F0}, - {4, 8, 0, 1, sub_81373F0}, - {4, 9, 0, 1, sub_81373F0}, + {MAP_TYPE_TOWN, MAP_TYPE_UNDERGROUND, 1, 0, DoEnterCaveTransition}, + {MAP_TYPE_CITY, MAP_TYPE_UNDERGROUND, 1, 0, DoEnterCaveTransition}, + {MAP_TYPE_ROUTE, MAP_TYPE_UNDERGROUND, 1, 0, DoEnterCaveTransition}, + {MAP_TYPE_UNDERWATER, MAP_TYPE_UNDERGROUND, 1, 0, DoEnterCaveTransition}, + {MAP_TYPE_OCEAN_ROUTE, MAP_TYPE_UNDERGROUND, 1, 0, DoEnterCaveTransition}, + {MAP_TYPE_UNUSED_2, MAP_TYPE_UNDERGROUND, 1, 0, DoEnterCaveTransition}, + {MAP_TYPE_INDOOR, MAP_TYPE_UNDERGROUND, 1, 0, DoEnterCaveTransition}, + {MAP_TYPE_SECRET_BASE, MAP_TYPE_UNDERGROUND, 1, 0, DoEnterCaveTransition}, + {MAP_TYPE_UNDERGROUND, MAP_TYPE_TOWN, 0, 1, DoExitCaveTransition}, + {MAP_TYPE_UNDERGROUND, MAP_TYPE_CITY, 0, 1, DoExitCaveTransition}, + {MAP_TYPE_UNDERGROUND, MAP_TYPE_ROUTE, 0, 1, DoExitCaveTransition}, + {MAP_TYPE_UNDERGROUND, MAP_TYPE_UNDERWATER, 0, 1, DoExitCaveTransition}, + {MAP_TYPE_UNDERGROUND, MAP_TYPE_OCEAN_ROUTE, 0, 1, DoExitCaveTransition}, + {MAP_TYPE_UNDERGROUND, MAP_TYPE_UNUSED_2, 0, 1, DoExitCaveTransition}, + {MAP_TYPE_UNDERGROUND, MAP_TYPE_INDOOR, 0, 1, DoExitCaveTransition}, + {MAP_TYPE_UNDERGROUND, MAP_TYPE_SECRET_BASE, 0, 1, DoExitCaveTransition}, {0, 0, 0, 0, NULL}, }; @@ -108,7 +109,7 @@ static void sub_81371B4(void) ScriptContext1_SetupScript(EventScript_2926F8); } -static void sub_81371D4(void) +static void CB2_ChangeMapMain(void) { RunTasks(); AnimateSprites(); @@ -116,14 +117,14 @@ static void sub_81371D4(void) UpdatePaletteFade(); } -static void sub_81371EC(void) +static void VBC_ChangeMapVBlank(void) { LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); } -void c2_change_map(void) +void CB2_DoChangeMap(void) { u16 ime; @@ -148,23 +149,23 @@ void c2_change_map(void) REG_IME = 0; REG_IE |= INTR_FLAG_VBLANK; REG_IME = ime; - SetVBlankCallback(sub_81371EC); - SetMainCallback2(sub_81371D4); - if (!sub_8137304()) + SetVBlankCallback(VBC_ChangeMapVBlank); + SetMainCallback2(CB2_ChangeMapMain); + if (!MaybeDoMapTransition()) SetMainCallback2(gMain.savedCallback); } -static bool8 sub_8137304(void) +static bool8 MaybeDoMapTransition(void) { u8 i; - u8 v0 = GetLastUsedWarpMapType(); - u8 v1 = GetCurrentMapType(); + u8 fromType = GetLastUsedWarpMapType(); + u8 toType = GetCurrentMapType(); - for (i = 0; gUnknown_085B27C8[i].unk0; i++) + for (i = 0; sTransitionTypes[i].fromType; i++) { - if (gUnknown_085B27C8[i].unk0 == v0 && gUnknown_085B27C8[i].unk1 == v1) + if (sTransitionTypes[i].fromType == fromType && sTransitionTypes[i].toType == toType) { - gUnknown_085B27C8[i].func(); + sTransitionTypes[i].func(); return TRUE; } } @@ -172,51 +173,51 @@ static bool8 sub_8137304(void) return FALSE; } -bool8 GetMapPairFadeToType(u8 a1, u8 a2) +bool8 GetMapPairFadeToType(u8 _fromType, u8 _toType) { u8 i; - u8 v0 = a1; - u8 v1 = a2; + u8 fromType = _fromType; + u8 toType = _toType; - for (i = 0; gUnknown_085B27C8[i].unk0; i++) + for (i = 0; sTransitionTypes[i].fromType; i++) { - if (gUnknown_085B27C8[i].unk0 == v0 && gUnknown_085B27C8[i].unk1 == v1) + if (sTransitionTypes[i].fromType == fromType && sTransitionTypes[i].toType == toType) { - return gUnknown_085B27C8[i].unk2; + return sTransitionTypes[i].unk2; } } return FALSE; } -bool8 GetMapPairFadeFromType(u8 a1, u8 a2) +bool8 GetMapPairFadeFromType(u8 _fromType, u8 _toType) { u8 i; - u8 v0 = a1; - u8 v1 = a2; + u8 fromType = _fromType; + u8 toType = _toType; - for (i = 0; gUnknown_085B27C8[i].unk0; i++) + for (i = 0; sTransitionTypes[i].fromType; i++) { - if (gUnknown_085B27C8[i].unk0 == v0 && gUnknown_085B27C8[i].unk1 == v1) + if (sTransitionTypes[i].fromType == fromType && sTransitionTypes[i].toType == toType) { - return gUnknown_085B27C8[i].unk3; + return sTransitionTypes[i].unk3; } } return FALSE; } -static void sub_81373F0(void) +static void DoExitCaveTransition(void) { - CreateTask(sub_8137404, 0); + CreateTask(Task_ExitCaveTransition1, 0); } -static void sub_8137404(u8 taskId) +static void Task_ExitCaveTransition1(u8 taskId) { - gTasks[taskId].func = sub_8137420; + gTasks[taskId].func = Task_ExitCaveTransition2; } -static void sub_8137420(u8 taskId) +static void Task_ExitCaveTransition2(u8 taskId) { SetGpuReg(REG_OFFSET_DISPCNT, 0); LZ77UnCompVram(gCaveTransitionTiles, (void *)(VRAM + 0xC000)); @@ -241,12 +242,12 @@ static void sub_8137420(u8 taskId) | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_OBJ_ON); - gTasks[taskId].func = sub_81374C4; + gTasks[taskId].func = Task_ExitCaveTransition3; gTasks[taskId].data[0] = 16; gTasks[taskId].data[1] = 0; } -static void sub_81374C4(u8 taskId) +static void Task_ExitCaveTransition3(u8 taskId) { u16 count = gTasks[taskId].data[1]; u16 blend = count + 0x1000; @@ -259,11 +260,11 @@ static void sub_81374C4(u8 taskId) else { gTasks[taskId].data[2] = 0; - gTasks[taskId].func = sub_813750C; + gTasks[taskId].func = Task_ExitCaveTransition4; } } -static void sub_813750C(u8 taskId) +static void Task_ExitCaveTransition4(u8 taskId) { u16 count; @@ -278,12 +279,12 @@ static void sub_813750C(u8 taskId) else { LoadPalette(gCaveTransitionPalette_White, 0, 0x20); - gTasks[taskId].func = sub_8137574; + gTasks[taskId].func = Task_ExitCaveTransition5; gTasks[taskId].data[2] = 8; } } -static void sub_8137574(u8 taskId) +static void Task_ExitCaveTransition5(u8 taskId) { if (gTasks[taskId].data[2]) gTasks[taskId].data[2]--; @@ -291,17 +292,17 @@ static void sub_8137574(u8 taskId) SetMainCallback2(gMain.savedCallback); } -static void sub_81375A8(void) +static void DoEnterCaveTransition(void) { - CreateTask(sub_81375BC, 0); + CreateTask(Task_EnterCaveTransition1, 0); } -static void sub_81375BC(u8 taskId) +static void Task_EnterCaveTransition1(u8 taskId) { - gTasks[taskId].func = sub_81375D8; + gTasks[taskId].func = Task_EnterCaveTransition2; } -static void sub_81375D8(u8 taskId) +static void Task_EnterCaveTransition2(u8 taskId) { SetGpuReg(REG_OFFSET_DISPCNT, 0); LZ77UnCompVram(gCaveTransitionTiles, (void *)(VRAM + 0xC000)); @@ -320,13 +321,13 @@ static void sub_81375D8(u8 taskId) | DISPCNT_OBJ_ON); LoadPalette(gCaveTransitionPalette_White, 0xE0, 0x20); LoadPalette(gCaveTransitionPalette_Black, 0, 0x20); - gTasks[taskId].func = sub_8137678; + gTasks[taskId].func = Task_EnterCaveTransition3; gTasks[taskId].data[0] = 16; gTasks[taskId].data[1] = 0; gTasks[taskId].data[2] = 0; } -static void sub_8137678(u8 taskId) +static void Task_EnterCaveTransition3(u8 taskId) { u16 count = gTasks[taskId].data[2]; @@ -346,11 +347,11 @@ static void sub_8137678(u8 taskId) | BLDCNT_TGT2_BG3 | BLDCNT_TGT2_OBJ | BLDCNT_TGT2_BD); - gTasks[taskId].func = sub_81376DC; + gTasks[taskId].func = Task_EnterCaveTransition4; } } -static void sub_81376DC(u8 taskId) +static void Task_EnterCaveTransition4(u8 taskId) { u16 count = 16 - gTasks[taskId].data[1]; u16 blend = count + 0x1000; diff --git a/src/overworld.c b/src/overworld.c index cefbd8159d..819f9ac4e0 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -1579,7 +1579,7 @@ void CB2_LoadMap(void) ScriptContext1_Init(); ScriptContext2_Disable(); SetMainCallback1(NULL); - SetMainCallback2(c2_change_map); + SetMainCallback2(CB2_DoChangeMap); gMain.savedCallback = CB2_LoadMap2; } From 5007d279fea5326b41b877703c74fcaa56223364 Mon Sep 17 00:00:00 2001 From: Tustin2121 Date: Sun, 29 Sep 2019 16:33:13 -0400 Subject: [PATCH 02/37] Review fixes --- src/fldeff_flash.c | 48 +++++++++++++++++++++++----------------------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/src/fldeff_flash.c b/src/fldeff_flash.c index 665e11deb0..46b1da6d8b 100644 --- a/src/fldeff_flash.c +++ b/src/fldeff_flash.c @@ -21,15 +21,15 @@ struct FlashStruct { u8 fromType; u8 toType; - bool8 unk2; - bool8 unk3; + bool8 isEnter; + bool8 isExit; void (*func)(void); }; // static functions static void hm2_flash(void); static void sub_81371B4(void); -static bool8 MaybeDoMapTransition(void); +static bool8 TryDoMapTransition(void); static void DoExitCaveTransition(void); static void Task_ExitCaveTransition1(u8 taskId); static void Task_ExitCaveTransition2(u8 taskId); @@ -45,23 +45,23 @@ static void Task_EnterCaveTransition4(u8 taskId); // rodata static const struct FlashStruct sTransitionTypes[] = { - {MAP_TYPE_TOWN, MAP_TYPE_UNDERGROUND, 1, 0, DoEnterCaveTransition}, - {MAP_TYPE_CITY, MAP_TYPE_UNDERGROUND, 1, 0, DoEnterCaveTransition}, - {MAP_TYPE_ROUTE, MAP_TYPE_UNDERGROUND, 1, 0, DoEnterCaveTransition}, - {MAP_TYPE_UNDERWATER, MAP_TYPE_UNDERGROUND, 1, 0, DoEnterCaveTransition}, - {MAP_TYPE_OCEAN_ROUTE, MAP_TYPE_UNDERGROUND, 1, 0, DoEnterCaveTransition}, - {MAP_TYPE_UNUSED_2, MAP_TYPE_UNDERGROUND, 1, 0, DoEnterCaveTransition}, - {MAP_TYPE_INDOOR, MAP_TYPE_UNDERGROUND, 1, 0, DoEnterCaveTransition}, - {MAP_TYPE_SECRET_BASE, MAP_TYPE_UNDERGROUND, 1, 0, DoEnterCaveTransition}, - {MAP_TYPE_UNDERGROUND, MAP_TYPE_TOWN, 0, 1, DoExitCaveTransition}, - {MAP_TYPE_UNDERGROUND, MAP_TYPE_CITY, 0, 1, DoExitCaveTransition}, - {MAP_TYPE_UNDERGROUND, MAP_TYPE_ROUTE, 0, 1, DoExitCaveTransition}, - {MAP_TYPE_UNDERGROUND, MAP_TYPE_UNDERWATER, 0, 1, DoExitCaveTransition}, - {MAP_TYPE_UNDERGROUND, MAP_TYPE_OCEAN_ROUTE, 0, 1, DoExitCaveTransition}, - {MAP_TYPE_UNDERGROUND, MAP_TYPE_UNUSED_2, 0, 1, DoExitCaveTransition}, - {MAP_TYPE_UNDERGROUND, MAP_TYPE_INDOOR, 0, 1, DoExitCaveTransition}, - {MAP_TYPE_UNDERGROUND, MAP_TYPE_SECRET_BASE, 0, 1, DoExitCaveTransition}, - {0, 0, 0, 0, NULL}, + {MAP_TYPE_TOWN, MAP_TYPE_UNDERGROUND, TRUE, FALSE, DoEnterCaveTransition}, + {MAP_TYPE_CITY, MAP_TYPE_UNDERGROUND, TRUE, FALSE, DoEnterCaveTransition}, + {MAP_TYPE_ROUTE, MAP_TYPE_UNDERGROUND, TRUE, FALSE, DoEnterCaveTransition}, + {MAP_TYPE_UNDERWATER, MAP_TYPE_UNDERGROUND, TRUE, FALSE, DoEnterCaveTransition}, + {MAP_TYPE_OCEAN_ROUTE, MAP_TYPE_UNDERGROUND, TRUE, FALSE, DoEnterCaveTransition}, + {MAP_TYPE_UNUSED_2, MAP_TYPE_UNDERGROUND, TRUE, FALSE, DoEnterCaveTransition}, + {MAP_TYPE_INDOOR, MAP_TYPE_UNDERGROUND, TRUE, FALSE, DoEnterCaveTransition}, + {MAP_TYPE_SECRET_BASE, MAP_TYPE_UNDERGROUND, TRUE, FALSE, DoEnterCaveTransition}, + {MAP_TYPE_UNDERGROUND, MAP_TYPE_TOWN, FALSE, TRUE, DoExitCaveTransition}, + {MAP_TYPE_UNDERGROUND, MAP_TYPE_CITY, FALSE, TRUE, DoExitCaveTransition}, + {MAP_TYPE_UNDERGROUND, MAP_TYPE_ROUTE, FALSE, TRUE, DoExitCaveTransition}, + {MAP_TYPE_UNDERGROUND, MAP_TYPE_UNDERWATER, FALSE, TRUE, DoExitCaveTransition}, + {MAP_TYPE_UNDERGROUND, MAP_TYPE_OCEAN_ROUTE, FALSE, TRUE, DoExitCaveTransition}, + {MAP_TYPE_UNDERGROUND, MAP_TYPE_UNUSED_2, FALSE, TRUE, DoExitCaveTransition}, + {MAP_TYPE_UNDERGROUND, MAP_TYPE_INDOOR, FALSE, TRUE, DoExitCaveTransition}, + {MAP_TYPE_UNDERGROUND, MAP_TYPE_SECRET_BASE, FALSE, TRUE, DoExitCaveTransition}, + {0, 0, FALSE, FALSE, NULL}, }; static const u16 gCaveTransitionPalette_White[] = INCBIN_U16("graphics/misc/cave_transition_white.gbapal"); @@ -151,11 +151,11 @@ void CB2_DoChangeMap(void) REG_IME = ime; SetVBlankCallback(VBC_ChangeMapVBlank); SetMainCallback2(CB2_ChangeMapMain); - if (!MaybeDoMapTransition()) + if (!TryDoMapTransition()) SetMainCallback2(gMain.savedCallback); } -static bool8 MaybeDoMapTransition(void) +static bool8 TryDoMapTransition(void) { u8 i; u8 fromType = GetLastUsedWarpMapType(); @@ -183,7 +183,7 @@ bool8 GetMapPairFadeToType(u8 _fromType, u8 _toType) { if (sTransitionTypes[i].fromType == fromType && sTransitionTypes[i].toType == toType) { - return sTransitionTypes[i].unk2; + return sTransitionTypes[i].isEnter; } } @@ -200,7 +200,7 @@ bool8 GetMapPairFadeFromType(u8 _fromType, u8 _toType) { if (sTransitionTypes[i].fromType == fromType && sTransitionTypes[i].toType == toType) { - return sTransitionTypes[i].unk3; + return sTransitionTypes[i].isExit; } } From ddfa0c6298f4c4dcde9b40782bbdf41867bff761 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Sat, 14 Dec 2019 03:58:20 -0500 Subject: [PATCH 03/37] Document Battle Tower scripts --- asm/macros/battle_frontier/battle_tower.inc | 31 +- data/event_scripts.s | 4 +- .../border.bin | Bin .../map.bin | Bin .../border.bin | Bin .../map.bin | Bin data/layouts/layouts.json | 16 +- .../scripts.inc | 12 +- .../scripts.inc | 4 +- .../scripts.inc | 2 +- .../scripts.inc | 4 +- .../scripts.inc | 6 +- .../scripts.inc | 4 +- .../scripts.inc | 4 +- .../scripts.inc | 10 +- .../scripts.inc | 12 +- .../scripts.inc | 4 +- .../scripts.inc | 412 ++- .../map.json | 99 - .../scripts.inc | 507 ---- .../scripts.inc | 43 +- .../scripts.inc | 172 -- .../scripts.inc | 60 +- .../BattleFrontier_BattleTowerLobby/map.json | 24 +- .../scripts.inc | 868 ++++--- .../map.json | 143 +- .../scripts.inc | 2251 ++++------------- .../map.json | 6 +- .../scripts.inc | 176 ++ .../map.json | 138 + .../scripts.inc | 1809 +++++++++++++ .../SlateportCity_BattleTentLobby/scripts.inc | 2 +- data/maps/map_groups.json | 4 +- data/specials.inc | 2 +- include/constants/apprentice.h | 2 + include/constants/battle_tower.h | 24 +- include/constants/flags.h | 12 +- include/constants/frontier_util.h | 2 +- include/constants/layouts.h | 4 +- include/constants/map_groups.h | 178 +- include/field_specials.h | 2 +- include/global.h | 2 +- include/strings.h | 662 ++--- src/battle_arena.c | 2 +- src/battle_controller_link_opponent.c | 2 +- src/battle_controller_link_partner.c | 2 +- src/battle_controller_player.c | 2 +- src/battle_controllers.c | 4 +- src/battle_dome.c | 2 +- src/battle_factory.c | 2 +- src/battle_main.c | 12 +- src/battle_palace.c | 2 +- src/battle_tower.c | 772 ++---- src/data/battle_frontier/apprentice.h | 2 +- src/field_door.c | 14 +- src/field_specials.c | 42 +- src/frontier_pass.c | 2 +- src/frontier_util.c | 10 +- src/item_menu.c | 2 +- src/party_menu.c | 2 +- src/start_menu.c | 8 +- 61 files changed, 4192 insertions(+), 4409 deletions(-) rename data/layouts/{BattleFrontier_BattleTowerCorridor2 => BattleFrontier_BattleTowerMultiCorridor}/border.bin (100%) rename data/layouts/{BattleFrontier_BattleTowerCorridor2 => BattleFrontier_BattleTowerMultiCorridor}/map.bin (100%) rename data/layouts/{BattleFrontier_BattleTowerMultiBattleRoom => BattleFrontier_BattleTowerMultiPartnerRoom}/border.bin (100%) rename data/layouts/{BattleFrontier_BattleTowerMultiBattleRoom => BattleFrontier_BattleTowerMultiPartnerRoom}/map.bin (100%) delete mode 100644 data/maps/BattleFrontier_BattleTowerBattleRoom2/map.json delete mode 100644 data/maps/BattleFrontier_BattleTowerBattleRoom2/scripts.inc delete mode 100644 data/maps/BattleFrontier_BattleTowerCorridor2/scripts.inc rename data/maps/{BattleFrontier_BattleTowerCorridor2 => BattleFrontier_BattleTowerMultiCorridor}/map.json (90%) create mode 100644 data/maps/BattleFrontier_BattleTowerMultiCorridor/scripts.inc create mode 100644 data/maps/BattleFrontier_BattleTowerMultiPartnerRoom/map.json create mode 100644 data/maps/BattleFrontier_BattleTowerMultiPartnerRoom/scripts.inc diff --git a/asm/macros/battle_frontier/battle_tower.inc b/asm/macros/battle_frontier/battle_tower.inc index d5a02ea21f..71e795b1d1 100644 --- a/asm/macros/battle_frontier/battle_tower.inc +++ b/asm/macros/battle_frontier/battle_tower.inc @@ -53,7 +53,36 @@ special CallBattleTowerFunc .endm - @ TODO: Document and add macros for BATTLE_TOWER_FUNC_10 - BATTLE_TOWER_FUNC_14 + @ Load the parties, gfx, and other data (like Apprentice id) for the multi partner candidates + .macro tower_loadpartners + setvar VAR_0x8004, BATTLE_TOWER_FUNC_LOAD_PARTNERS + special CallBattleTowerFunc + .endm + + @ Print message from potential multi partner. msgId is any PARTNER_MSGID_* + .macro tower_dopartnermsg msgId:req + setvar VAR_0x8004, BATTLE_TOWER_FUNC_PARTNER_MSG + setvar VAR_0x8005, \msgId + special CallBattleTowerFunc + .endm + + @ Receives/loads the opponent data for a link multi challenge. Returns 6 when finished, and finishes immediately if not doing a link multi battle. + .macro tower_loadlinkopponents + setvar VAR_0x8004, BATTLE_TOWER_FUNC_LOAD_LINK_OPPONENTS + special CallBattleTowerFunc + .endm + + @ Unknown. Destroys some link task if using wireless link. Wait for link? + .macro tower_unklink + setvar VAR_0x8004, BATTLE_TOWER_FUNC_13 + special CallBattleTowerFunc + .endm + + @ Set VAR_OBJ_GFX_ID_E to the gfx id of the selected multi partner + .macro tower_setpartnergfx + setvar VAR_0x8004, BATTLE_TOWER_FUNC_SET_PARTNER_GFX + special CallBattleTowerFunc + .endm @ Set the data used for the post-challenge Battle Tower interview .macro tower_setinterviewdata diff --git a/data/event_scripts.s b/data/event_scripts.s index 605cf23ac7..79592caa64 100644 --- a/data/event_scripts.s +++ b/data/event_scripts.s @@ -472,9 +472,9 @@ gStdScripts_End:: @ 81DC2CC .include "data/maps/SafariZone_Northeast/scripts.inc" .include "data/maps/SafariZone_Southeast/scripts.inc" .include "data/maps/BattleFrontier_OutsideEast/scripts.inc" + .include "data/maps/BattleFrontier_BattleTowerMultiPartnerRoom/scripts.inc" + .include "data/maps/BattleFrontier_BattleTowerMultiCorridor/scripts.inc" .include "data/maps/BattleFrontier_BattleTowerMultiBattleRoom/scripts.inc" - .include "data/maps/BattleFrontier_BattleTowerCorridor2/scripts.inc" - .include "data/maps/BattleFrontier_BattleTowerBattleRoom2/scripts.inc" .include "data/maps/BattleFrontier_BattleDomeLobby/scripts.inc" .include "data/maps/BattleFrontier_BattleDomeCorridor/scripts.inc" .include "data/maps/BattleFrontier_BattleDomePreBattleRoom/scripts.inc" diff --git a/data/layouts/BattleFrontier_BattleTowerCorridor2/border.bin b/data/layouts/BattleFrontier_BattleTowerMultiCorridor/border.bin similarity index 100% rename from data/layouts/BattleFrontier_BattleTowerCorridor2/border.bin rename to data/layouts/BattleFrontier_BattleTowerMultiCorridor/border.bin diff --git a/data/layouts/BattleFrontier_BattleTowerCorridor2/map.bin b/data/layouts/BattleFrontier_BattleTowerMultiCorridor/map.bin similarity index 100% rename from data/layouts/BattleFrontier_BattleTowerCorridor2/map.bin rename to data/layouts/BattleFrontier_BattleTowerMultiCorridor/map.bin diff --git a/data/layouts/BattleFrontier_BattleTowerMultiBattleRoom/border.bin b/data/layouts/BattleFrontier_BattleTowerMultiPartnerRoom/border.bin similarity index 100% rename from data/layouts/BattleFrontier_BattleTowerMultiBattleRoom/border.bin rename to data/layouts/BattleFrontier_BattleTowerMultiPartnerRoom/border.bin diff --git a/data/layouts/BattleFrontier_BattleTowerMultiBattleRoom/map.bin b/data/layouts/BattleFrontier_BattleTowerMultiPartnerRoom/map.bin similarity index 100% rename from data/layouts/BattleFrontier_BattleTowerMultiBattleRoom/map.bin rename to data/layouts/BattleFrontier_BattleTowerMultiPartnerRoom/map.bin diff --git a/data/layouts/layouts.json b/data/layouts/layouts.json index ffa394fa1a..c41bf92bd2 100644 --- a/data/layouts/layouts.json +++ b/data/layouts/layouts.json @@ -3892,24 +3892,24 @@ "blockdata_filepath": "data/layouts/DesertUnderpass/map.bin" }, { - "id": "LAYOUT_BATTLE_FRONTIER_BATTLE_TOWER_MULTI_BATTLE_ROOM", - "name": "BattleFrontier_BattleTowerMultiBattleRoom_Layout", + "id": "LAYOUT_BATTLE_FRONTIER_BATTLE_TOWER_MULTI_PARTNER_ROOM", + "name": "BattleFrontier_BattleTowerMultiPartnerRoom_Layout", "width": 21, "height": 15, "primary_tileset": "gTileset_Building", "secondary_tileset": "gTileset_BattleFrontier", - "border_filepath": "data/layouts/BattleFrontier_BattleTowerMultiBattleRoom/border.bin", - "blockdata_filepath": "data/layouts/BattleFrontier_BattleTowerMultiBattleRoom/map.bin" + "border_filepath": "data/layouts/BattleFrontier_BattleTowerMultiPartnerRoom/border.bin", + "blockdata_filepath": "data/layouts/BattleFrontier_BattleTowerMultiPartnerRoom/map.bin" }, { - "id": "LAYOUT_BATTLE_FRONTIER_BATTLE_TOWER_CORRIDOR2", - "name": "BattleFrontier_BattleTowerCorridor2_Layout", + "id": "LAYOUT_BATTLE_FRONTIER_BATTLE_TOWER_MULTI_CORRIDOR", + "name": "BattleFrontier_BattleTowerMultiCorridor_Layout", "width": 17, "height": 5, "primary_tileset": "gTileset_Building", "secondary_tileset": "gTileset_BattleFrontier", - "border_filepath": "data/layouts/BattleFrontier_BattleTowerCorridor2/border.bin", - "blockdata_filepath": "data/layouts/BattleFrontier_BattleTowerCorridor2/map.bin" + "border_filepath": "data/layouts/BattleFrontier_BattleTowerMultiCorridor/border.bin", + "blockdata_filepath": "data/layouts/BattleFrontier_BattleTowerMultiCorridor/map.bin" }, { "id": "LAYOUT_ROUTE111_NO_MIRAGE_TOWER", diff --git a/data/maps/BattleFrontier_BattleArenaBattleRoom/scripts.inc b/data/maps/BattleFrontier_BattleArenaBattleRoom/scripts.inc index f2251165cb..a4aa938363 100644 --- a/data/maps/BattleFrontier_BattleArenaBattleRoom/scripts.inc +++ b/data/maps/BattleFrontier_BattleArenaBattleRoom/scripts.inc @@ -48,7 +48,7 @@ BattleFrontier_BattleArenaBattleRoom_EventScript_EnterRoom:: @ 82574DC applymovement 5, BattleFrontier_BattleArenaBattleRoom_Movement_WalkInPlaceDown applymovement 8, BattleFrontier_BattleArenaBattleRoom_Movement_WalkInPlaceLeft setvar VAR_TEMP_2, 1 - frontier_set FRONTIER_DATA_6, 1 + frontier_set FRONTIER_DATA_RECORD_DISABLED, TRUE goto BattleFrontier_BattleArenaBattleRoom_EventScript_AskReadyForOpponent BattleFrontier_BattleArenaBattleRoom_EventScript_AnnounceTrainers:: @ 825752E @@ -143,8 +143,8 @@ BattleFrontier_BattleArenaBattleRoom_EventScript_AskReadyForOpponent:: @ 82576B0 call_if_eq BattleFrontier_BattleArenaBattleRoom_EventScript_ReadyFor6thOpponent compare VAR_RESULT, 6 call_if_eq BattleFrontier_BattleArenaBattleRoom_EventScript_ReadyFor7thOpponent - call BattleFrontier_BattleArenaBattleRoom_EventScript_23E8E0 - compare VAR_RESULT, 1 + call BattleFrontier_EventScript_GetCantRecordBattle + compare VAR_RESULT, TRUE goto_if_eq BattleFrontier_BattleArenaBattleRoom_EventScript_AskReadyForOpponentNoRecord multichoice 19, 4, MULTI_GO_ON_RECORD_REST_RETIRE, 1 switch VAR_RESULT @@ -252,8 +252,8 @@ BattleFrontier_BattleArenaBattleRoom_EventScript_TycoonUpNext:: @ 82578BC BattleFrontier_BattleArenaBattleRoom_EventScript_AskReadyForTycoon:: @ 82578D4 message BattleFrontier_BattleArenaBattleRoom_Text_PreparedForTycoon waitmessage - call BattleFrontier_BattleArenaBattleRoom_EventScript_23E8E0 - compare VAR_RESULT, 1 + call BattleFrontier_EventScript_GetCantRecordBattle + compare VAR_RESULT, TRUE goto_if_eq BattleFrontier_BattleArenaBattleRoom_EventScript_AskReadyForTycoonNoRecord multichoice 19, 4, MULTI_GO_ON_RECORD_REST_RETIRE, 1 switch VAR_RESULT @@ -380,7 +380,7 @@ BattleFrontier_BattleArenaBattleRoom_EventScript_StartArenaBattle:: @ 8257B5E BattleFrontier_BattleArenaBattleRoom_EventScript_DoArenaBattle:: @ 8257B6C closemessage setvar VAR_TEMP_2, 0 - frontier_set FRONTIER_DATA_6, 0 + frontier_set FRONTIER_DATA_RECORD_DISABLED, FALSE special HealPlayerParty setvar VAR_0x8004, SPECIAL_BATTLE_ARENA setvar VAR_0x8005, 0 diff --git a/data/maps/BattleFrontier_BattleArenaLobby/scripts.inc b/data/maps/BattleFrontier_BattleArenaLobby/scripts.inc index d6c3a3ca51..b9e79fb103 100644 --- a/data/maps/BattleFrontier_BattleArenaLobby/scripts.inc +++ b/data/maps/BattleFrontier_BattleArenaLobby/scripts.inc @@ -77,8 +77,8 @@ BattleFrontier_BattleArenaLobby_EventScript_SaveAfterChallenge:: @ 8255D59 arena_save 0 playse SE_SAVE waitse - call BattleFrontier_BattleArenaLobby_EventScript_23E8E0 - compare VAR_RESULT, 1 + call BattleFrontier_EventScript_GetCantRecordBattle + compare VAR_RESULT, TRUE goto_if_eq BattleFrontier_BattleArenaLobby_EventScript_EndSaveAfterChallenge message BattleFrontier_BattleArenaLobby_Text_RecordLastMatch waitmessage diff --git a/data/maps/BattleFrontier_BattleDomeBattleRoom/scripts.inc b/data/maps/BattleFrontier_BattleDomeBattleRoom/scripts.inc index ff11ac75ac..6edc0e1d59 100644 --- a/data/maps/BattleFrontier_BattleDomeBattleRoom/scripts.inc +++ b/data/maps/BattleFrontier_BattleDomeBattleRoom/scripts.inc @@ -465,7 +465,7 @@ BattleFrontier_BattleDomeBattleRoom_EventScript_24C436:: @ 824C436 goto BattleFrontier_BattleDomeBattleRoom_EventScript_24BDF7 BattleFrontier_BattleDomeBattleRoom_EventScript_24C440:: @ 824C440 - frontier_set FRONTIER_DATA_6, 0 + frontier_set FRONTIER_DATA_RECORD_DISABLED, FALSE special HealPlayerParty setvar VAR_0x8004, SPECIAL_BATTLE_DOME setvar VAR_0x8005, 0 diff --git a/data/maps/BattleFrontier_BattleDomeLobby/scripts.inc b/data/maps/BattleFrontier_BattleDomeLobby/scripts.inc index 8d594695c7..c0b5426b9b 100644 --- a/data/maps/BattleFrontier_BattleDomeLobby/scripts.inc +++ b/data/maps/BattleFrontier_BattleDomeLobby/scripts.inc @@ -87,8 +87,8 @@ BattleFrontier_BattleDomeLobby_EventScript_249991:: @ 8249991 dome_save 0 playse SE_SAVE waitse - call BattleFrontier_BattleDomeLobby_EventScript_23E8E0 - compare VAR_RESULT, 1 + call BattleFrontier_EventScript_GetCantRecordBattle + compare VAR_RESULT, TRUE goto_if_eq BattleFrontier_BattleDomeLobby_EventScript_2499E9 message BattleFrontier_BattleDomeLobby_Text_24AE17 waitmessage diff --git a/data/maps/BattleFrontier_BattleDomePreBattleRoom/scripts.inc b/data/maps/BattleFrontier_BattleDomePreBattleRoom/scripts.inc index 56d8e2e642..a083a6079b 100644 --- a/data/maps/BattleFrontier_BattleDomePreBattleRoom/scripts.inc +++ b/data/maps/BattleFrontier_BattleDomePreBattleRoom/scripts.inc @@ -19,7 +19,7 @@ BattleFrontier_BattleDomePreBattleRoom_MapScript2_24B218: @ 824B218 BattleFrontier_BattleDomePreBattleRoom_EventScript_24B222:: @ 824B222 compare VAR_0x8006, 1 goto_if_eq BattleFrontier_BattleDomePreBattleRoom_EventScript_24B5C7 - frontier_set FRONTIER_DATA_6, 1 + frontier_set FRONTIER_DATA_RECORD_DISABLED, TRUE setvar VAR_TEMP_0, 1 applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleDomePreBattleRoom_Movement_24B652 waitmovement 0 @@ -29,8 +29,8 @@ BattleFrontier_BattleDomePreBattleRoom_EventScript_24B24F:: @ 824B24F call BattleFrontier_BattleDomePreBattleRoom_EventScript_24B4FB waitmessage switch VAR_RESULT - call BattleFrontier_BattleDomePreBattleRoom_EventScript_23E8E0 - compare VAR_RESULT, 1 + call BattleFrontier_EventScript_GetCantRecordBattle + compare VAR_RESULT, TRUE goto_if_eq BattleFrontier_BattleDomePreBattleRoom_EventScript_24B2C1 multichoice 16, 0, MULTI_TOURNEY_WITH_RECORD, 1 switch VAR_RESULT diff --git a/data/maps/BattleFrontier_BattleFactoryBattleRoom/scripts.inc b/data/maps/BattleFrontier_BattleFactoryBattleRoom/scripts.inc index f1b3e3b913..526048d55d 100644 --- a/data/maps/BattleFrontier_BattleFactoryBattleRoom/scripts.inc +++ b/data/maps/BattleFrontier_BattleFactoryBattleRoom/scripts.inc @@ -81,7 +81,7 @@ BattleFrontier_BattleFactoryBattleRoom_EventScript_25AEA7:: @ 825AEA7 msgbox gStringVar4, MSGBOX_DEFAULT waitmessage closemessage - frontier_set FRONTIER_DATA_6, 0 + frontier_set FRONTIER_DATA_RECORD_DISABLED, FALSE special HealPlayerParty setvar VAR_0x8004, SPECIAL_BATTLE_FACTORY setvar VAR_0x8005, 0 @@ -181,7 +181,7 @@ BattleFrontier_BattleFactoryBattleRoom_EventScript_25B09B:: @ 825B09B BattleFrontier_BattleFactoryBattleRoom_EventScript_25B0E0:: @ 825B0E0 closemessage - frontier_set FRONTIER_DATA_6, 0 + frontier_set FRONTIER_DATA_RECORD_DISABLED, FALSE special HealPlayerParty setvar VAR_0x8004, SPECIAL_BATTLE_FACTORY setvar VAR_0x8005, 0 diff --git a/data/maps/BattleFrontier_BattleFactoryLobby/scripts.inc b/data/maps/BattleFrontier_BattleFactoryLobby/scripts.inc index fec051025e..67ab1bdda2 100644 --- a/data/maps/BattleFrontier_BattleFactoryLobby/scripts.inc +++ b/data/maps/BattleFrontier_BattleFactoryLobby/scripts.inc @@ -76,8 +76,8 @@ BattleFrontier_BattleFactoryLobby_EventScript_258506:: @ 8258506 waitse BattleFrontier_BattleFactoryLobby_EventScript_25853B:: @ 825853B - call BattleFrontier_BattleFactoryLobby_EventScript_23E8E0 - compare VAR_RESULT, 1 + call BattleFrontier_EventScript_GetCantRecordBattle + compare VAR_RESULT, TRUE goto_if_eq BattleFrontier_BattleFactoryLobby_EventScript_258582 message BattleFrontier_BattleFactoryLobby_Text_259388 waitmessage diff --git a/data/maps/BattleFrontier_BattleFactoryPreBattleRoom/scripts.inc b/data/maps/BattleFrontier_BattleFactoryPreBattleRoom/scripts.inc index 98589b97b2..d7399298d3 100644 --- a/data/maps/BattleFrontier_BattleFactoryPreBattleRoom/scripts.inc +++ b/data/maps/BattleFrontier_BattleFactoryPreBattleRoom/scripts.inc @@ -102,8 +102,8 @@ BattleFrontier_BattleFactoryPreBattleRoom_EventScript_259C26:: @ 8259C26 call_if_eq BattleFrontier_BattleFactoryPreBattleRoom_EventScript_259E39 compare VAR_RESULT, 6 call_if_eq BattleFrontier_BattleFactoryPreBattleRoom_EventScript_259E40 - call BattleFrontier_BattleFactoryPreBattleRoom_EventScript_23E8E0 - compare VAR_RESULT, 1 + call BattleFrontier_EventScript_GetCantRecordBattle + compare VAR_RESULT, TRUE goto_if_eq BattleFrontier_BattleFactoryPreBattleRoom_EventScript_259CC6 multichoice 19, 4, MULTI_GO_ON_RECORD_REST_RETIRE, 1 switch VAR_RESULT @@ -217,7 +217,7 @@ BattleFrontier_BattleFactoryPreBattleRoom_EventScript_259E47:: @ 8259E47 BattleFrontier_BattleFactoryPreBattleRoom_EventScript_259E69:: @ 8259E69 special SavePlayerParty factory_setparties 0 - frontier_set FRONTIER_DATA_6, 1 + frontier_set FRONTIER_DATA_RECORD_DISABLED, TRUE special CalculatePlayerPartyCount goto BattleFrontier_BattleFactoryPreBattleRoom_EventScript_259C13 @@ -393,8 +393,8 @@ BattleFrontier_BattleFactoryPreBattleRoom_EventScript_25A0B0:: @ 825A0B0 BattleFrontier_BattleFactoryPreBattleRoom_EventScript_25A0B9:: @ 825A0B9 message BattleFrontier_BattleFactoryPreBattleRoom_Text_25AD20 waitmessage - call BattleFrontier_BattleFactoryPreBattleRoom_EventScript_23E8E0 - compare VAR_RESULT, 1 + call BattleFrontier_EventScript_GetCantRecordBattle + compare VAR_RESULT, TRUE goto_if_eq BattleFrontier_BattleFactoryPreBattleRoom_EventScript_25A110 multichoice 19, 4, MULTI_GO_ON_RECORD_REST_RETIRE, 1 switch VAR_RESULT diff --git a/data/maps/BattleFrontier_BattlePalaceBattleRoom/scripts.inc b/data/maps/BattleFrontier_BattlePalaceBattleRoom/scripts.inc index 3f635767d3..83d1f99367 100644 --- a/data/maps/BattleFrontier_BattlePalaceBattleRoom/scripts.inc +++ b/data/maps/BattleFrontier_BattlePalaceBattleRoom/scripts.inc @@ -45,7 +45,7 @@ BattleFrontier_BattlePalaceBattleRoom_EventScript_EnterRoom:: @ 824F86B waitmovement 0 applymovement 3, BattleFrontier_BattlePalaceBattleRoom_Movement_FaceDown setvar VAR_TEMP_2, 1 - frontier_set FRONTIER_DATA_6, 1 + frontier_set FRONTIER_DATA_RECORD_DISABLED, TRUE goto BattleFrontier_BattlePalaceBattleRoom_EventScript_AskReadyForOpponent BattleFrontier_BattlePalaceBattleRoom_EventScript_BeginChallenge:: @ 824F8B5 @@ -104,8 +104,8 @@ BattleFrontier_BattlePalaceBattleRoom_EventScript_AskReadyForOpponent:: @ 824F98 call_if_eq BattleFrontier_BattlePalaceBattleRoom_EventScript_ReadyFor6thOpponent compare VAR_RESULT, 6 call_if_eq BattleFrontier_BattlePalaceBattleRoom_EventScript_ReadyFor7thOpponent - call BattleFrontier_BattlePalaceBattleRoom_EventScript_23E8E0 - compare VAR_RESULT, 1 + call BattleFrontier_EventScript_GetCantRecordBattle + compare VAR_RESULT, TRUE goto_if_eq BattleFrontier_BattlePalaceBattleRoom_EventScript_AskReadyForOpponentNoRecord multichoice 19, 4, MULTI_GO_ON_RECORD_REST_RETIRE, 1 switch VAR_RESULT @@ -180,8 +180,8 @@ BattleFrontier_BattlePalaceBattleRoom_EventScript_MavenUpNext:: @ 824FB61 BattleFrontier_BattlePalaceBattleRoom_EventScript_AskReadyForMaven:: @ 824FB79 message BattleFrontier_BattlePalaceBattleRoom_Text_ReadyForPalaceMaven waitmessage - call BattleFrontier_BattlePalaceBattleRoom_EventScript_23E8E0 - compare VAR_RESULT, 1 + call BattleFrontier_EventScript_GetCantRecordBattle + compare VAR_RESULT, TRUE goto_if_eq BattleFrontier_BattlePalaceBattleRoom_EventScript_AskReadyForMavenNoRecord multichoice 19, 4, MULTI_GO_ON_RECORD_REST_RETIRE, 1 switch VAR_RESULT @@ -290,7 +290,7 @@ BattleFrontier_BattlePalaceBattleRoom_EventScript_DefeatedSpenserGold:: @ 824FD8 BattleFrontier_BattlePalaceBattleRoom_EventScript_DoPalaceBattle:: @ 824FDF7 closemessage setvar VAR_TEMP_2, 0 - frontier_set FRONTIER_DATA_6, 0 + frontier_set FRONTIER_DATA_RECORD_DISABLED, FALSE special HealPlayerParty setvar VAR_0x8004, SPECIAL_BATTLE_PALACE setvar VAR_0x8005, 0 diff --git a/data/maps/BattleFrontier_BattlePalaceLobby/scripts.inc b/data/maps/BattleFrontier_BattlePalaceLobby/scripts.inc index 64000a6ac6..97f0b69153 100644 --- a/data/maps/BattleFrontier_BattlePalaceLobby/scripts.inc +++ b/data/maps/BattleFrontier_BattlePalaceLobby/scripts.inc @@ -77,8 +77,8 @@ BattleFrontier_BattlePalaceLobby_EventScript_SaveAfterChallenge:: @ 824D8A1 palace_save 0 playse SE_SAVE waitse - call BattleFrontier_BattlePalaceLobby_EventScript_23E8E0 - compare VAR_RESULT, 1 + call BattleFrontier_EventScript_GetCantRecordBattle + compare VAR_RESULT, TRUE goto_if_eq BattleFrontier_BattlePalaceLobby_EventScript_EndSaveAfterChallenge message BattleFrontier_BattlePalaceLobby_Text_LikeToRecordMatch waitmessage diff --git a/data/maps/BattleFrontier_BattleTowerBattleRoom/scripts.inc b/data/maps/BattleFrontier_BattleTowerBattleRoom/scripts.inc index 9c40126042..f0ab1f58ae 100644 --- a/data/maps/BattleFrontier_BattleTowerBattleRoom/scripts.inc +++ b/data/maps/BattleFrontier_BattleTowerBattleRoom/scripts.inc @@ -1,147 +1,145 @@ BattleFrontier_BattleTowerBattleRoom_MapScripts:: @ 8241B40 - map_script MAP_SCRIPT_ON_FRAME_TABLE, BattleFrontier_BattleTowerBattleRoom_MapScript2_241B62 - map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, BattleFrontier_BattleTowerBattleRoom_MapScript2_241B4B + map_script MAP_SCRIPT_ON_FRAME_TABLE, BattleFrontier_BattleTowerBattleRoom_OnFrame + map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, BattleFrontier_BattleTowerBattleRoom_OnWarp .byte 0 -BattleFrontier_BattleTowerBattleRoom_MapScript2_241B4B: @ 8241B4B - map_script_2 VAR_TEMP_1, 0, BattleFrontier_BattleTowerBattleRoom_EventScript_241B55 +BattleFrontier_BattleTowerBattleRoom_OnWarp: @ 8241B4B + map_script_2 VAR_TEMP_1, 0, BattleFrontier_BattleTowerBattleRoom_EventScript_SetUpObjects .2byte 0 -BattleFrontier_BattleTowerBattleRoom_EventScript_241B55:: @ 8241B55 +BattleFrontier_BattleTowerBattleRoom_EventScript_SetUpObjects:: @ 8241B55 setvar VAR_TEMP_1, 1 - applymovement 3, BattleFrontier_BattleTowerBattleRoom_Movement_242198 + applymovement 3, BattleFrontier_BattleTowerBattleRoom_Movement_SetInvisible end -BattleFrontier_BattleTowerBattleRoom_MapScript2_241B62: @ 8241B62 - map_script_2 VAR_TEMP_0, 0, BattleFrontier_BattleTowerBattleRoom_EventScript_241B6C +BattleFrontier_BattleTowerBattleRoom_OnFrame: @ 8241B62 + map_script_2 VAR_TEMP_0, 0, BattleFrontier_BattleTowerBattleRoom_EventScript_EnterRoom .2byte 0 -BattleFrontier_BattleTowerBattleRoom_EventScript_241B6C:: @ 8241B6C +BattleFrontier_BattleTowerBattleRoom_EventScript_EnterRoom:: @ 8241B6C setvar VAR_TEMP_0, 1 - applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleTowerBattleRoom_Movement_242179 + applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleTowerBattleRoom_Movement_PlayerEnter waitmovement 0 frontier_get FRONTIER_DATA_BATTLE_NUM compare VAR_RESULT, 0 - goto_if_eq BattleFrontier_BattleTowerBattleRoom_EventScript_241BC3 - applymovement 2, BattleFrontier_BattleTowerBattleRoom_Movement_24218D + goto_if_eq BattleFrontier_BattleTowerBattleRoom_EventScript_OpponentEnter + applymovement 2, BattleFrontier_BattleTowerBattleRoom_Movement_AttendantApproachPlayer waitmovement 0 - applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleTowerBattleRoom_Movement_24217E + applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleTowerBattleRoom_Movement_PlayerFaceAttendant waitmovement 0 setvar VAR_TEMP_2, 1 - frontier_set FRONTIER_DATA_6, 1 - goto BattleFrontier_BattleTowerBattleRoom_EventScript_241C8F + frontier_set FRONTIER_DATA_RECORD_DISABLED, TRUE + goto BattleFrontier_BattleTowerBattleRoom_EventScript_AskReadyForOpponent -BattleFrontier_BattleTowerBattleRoom_EventScript_241BC3:: @ 8241BC3 +BattleFrontier_BattleTowerBattleRoom_EventScript_OpponentEnter:: @ 8241BC3 tower_setopponent addobject 1 - applymovement 1, BattleFrontier_BattleTowerBattleRoom_Movement_242182 + applymovement 1, BattleFrontier_BattleTowerBattleRoom_Movement_OpponentEnter waitmovement 0 tower_getopponentintro 0 msgbox gStringVar4, MSGBOX_DEFAULT waitmessage - call BattleFrontier_BattleTowerBattleRoom_EventScript_24210E + call BattleFrontier_BattleTowerBattleRoom_EventScript_DoTowerBattle switch VAR_RESULT - case B_OUTCOME_WON, BattleFrontier_BattleTowerBattleRoom_EventScript_241C2F -BattleFrontier_BattleTowerBattleRoom_EventScript_241C03:: @ 8241C03 -BattleFrontier_BattleTowerMultiBattleRoom_EventScript_241C03:: @ 8241C03 + case B_OUTCOME_WON, BattleFrontier_BattleTowerBattleRoom_EventScript_DefeatedOpponent +BattleFrontier_BattleTower_EventScript_WarpToLobbyLost:: @ 8241C03 frontier_set FRONTIER_DATA_CHALLENGE_STATUS, CHALLENGE_STATUS_LOST tower_set TOWER_DATA_LVL_MODE setvar VAR_0x8004, 3 special Script_TryGainNewFanFromCounter - goto BattleFrontier_BattleTowerBattleRoom_EventScript_2421B8 + goto BattleFrontier_BattleTowerBattleRoom_EventScript_WarpToLobby -BattleFrontier_BattleTowerBattleRoom_EventScript_241C2F:: @ 8241C2F +BattleFrontier_BattleTowerBattleRoom_EventScript_DefeatedOpponent:: @ 8241C2F call BattleFrontier_EventScript_IncrementWinStreak tower_setbattlewon switch VAR_RESULT - case 7, BattleFrontier_BattleTowerBattleRoom_EventScript_241DF6 - applymovement 1, BattleFrontier_BattleTowerBattleRoom_Movement_242188 + case 7, BattleFrontier_BattleTowerBattleRoom_EventScript_WarpToLobbyWon + applymovement 1, BattleFrontier_BattleTowerBattleRoom_Movement_OpponentExit waitmovement 0 removeobject 1 frontier_getbrainstatus compare VAR_RESULT, FRONTIER_BRAIN_NOT_READY - call_if_ne BattleFrontier_BattleTowerBattleRoom_EventScript_241EC3 - applymovement 2, BattleFrontier_BattleTowerBattleRoom_Movement_24218D + call_if_ne BattleFrontier_BattleTowerBattleRoom_EventScript_SecondAttendantEnter + applymovement 2, BattleFrontier_BattleTowerBattleRoom_Movement_AttendantApproachPlayer waitmovement 0 - applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleTowerBattleRoom_Movement_24217E + applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleTowerBattleRoom_Movement_PlayerFaceAttendant waitmovement 0 - msgbox BattleFrontier_BattleTowerBattleRoom_Text_242217, MSGBOX_DEFAULT + msgbox BattleFrontier_BattleTowerBattleRoom_Text_RestoreMonsToFullHealth, MSGBOX_DEFAULT playfanfare MUS_ME_ASA waitfanfare special HealPlayerParty - -BattleFrontier_BattleTowerBattleRoom_EventScript_241C8F:: @ 8241C8F +BattleFrontier_BattleTowerBattleRoom_EventScript_AskReadyForOpponent:: @ 8241C8F frontier_getbrainstatus copyvar VAR_TEMP_F, VAR_RESULT compare VAR_RESULT, FRONTIER_BRAIN_NOT_READY - goto_if_ne BattleFrontier_BattleTowerBattleRoom_EventScript_241F0A + goto_if_ne BattleFrontier_BattleTowerBattleRoom_EventScript_MaidenUpNext frontier_get FRONTIER_DATA_BATTLE_NUM - call BattleFrontier_BattleTowerBattleRoom_EventScript_241E44 - call BattleFrontier_BattleTowerBattleRoom_EventScript_23E8E0 - compare VAR_RESULT, 1 - goto_if_eq BattleFrontier_BattleTowerBattleRoom_EventScript_241D0A + call BattleFrontier_BattleTowerBattleRoom_EventScript_ReadyForOpponent + call BattleFrontier_EventScript_GetCantRecordBattle + compare VAR_RESULT, TRUE + goto_if_eq BattleFrontier_BattleTowerBattleRoom_EventScript_AskReadyForOpponentNoRecord multichoice 19, 4, MULTI_GO_ON_RECORD_REST_RETIRE, 1 switch VAR_RESULT - case 0, BattleFrontier_BattleTowerBattleRoom_EventScript_241DDC - case 1, BattleFrontier_BattleTowerBattleRoom_EventScript_241D40 - case 2, BattleFrontier_BattleTowerBattleRoom_EventScript_241D7C - case 3, BattleFrontier_BattleTowerBattleRoom_EventScript_241DAA - case MULTI_B_PRESSED, BattleFrontier_BattleTowerBattleRoom_EventScript_241C8F + case 0, BattleFrontier_BattleTowerBattleRoom_EventScript_ContinueChallenge + case 1, BattleFrontier_BattleTowerBattleRoom_EventScript_AskRecordBattle + case 2, BattleFrontier_BattleTowerBattleRoom_EventScript_AskPauseChallenge + case 3, BattleFrontier_BattleTowerBattleRoom_EventScript_AskRetireChallenge + case MULTI_B_PRESSED, BattleFrontier_BattleTowerBattleRoom_EventScript_AskReadyForOpponent -BattleFrontier_BattleTowerBattleRoom_EventScript_241D0A:: @ 8241D0A +BattleFrontier_BattleTowerBattleRoom_EventScript_AskReadyForOpponentNoRecord:: @ 8241D0A multichoice 20, 6, MULTI_GO_ON_REST_RETIRE, 1 switch VAR_RESULT - case 0, BattleFrontier_BattleTowerBattleRoom_EventScript_241DDC - case 1, BattleFrontier_BattleTowerBattleRoom_EventScript_241D7C - case 2, BattleFrontier_BattleTowerBattleRoom_EventScript_241DAA - case MULTI_B_PRESSED, BattleFrontier_BattleTowerBattleRoom_EventScript_241C8F + case 0, BattleFrontier_BattleTowerBattleRoom_EventScript_ContinueChallenge + case 1, BattleFrontier_BattleTowerBattleRoom_EventScript_AskPauseChallenge + case 2, BattleFrontier_BattleTowerBattleRoom_EventScript_AskRetireChallenge + case MULTI_B_PRESSED, BattleFrontier_BattleTowerBattleRoom_EventScript_AskReadyForOpponent -BattleFrontier_BattleTowerBattleRoom_EventScript_241D40:: @ 8241D40 - message BattleFrontier_BattleTowerBattleRoom_Text_2423A3 +BattleFrontier_BattleTowerBattleRoom_EventScript_AskRecordBattle:: @ 8241D40 + message BattleFrontier_BattleTowerBattleRoom_Text_RecordYourBattle waitmessage multichoicedefault 20, 8, MULTI_YESNO, 1, 0 switch VAR_RESULT - case 1, BattleFrontier_BattleTowerBattleRoom_EventScript_241C8F - case 0, BattleFrontier_BattleTowerBattleRoom_EventScript_241D72 - case MULTI_B_PRESSED, BattleFrontier_BattleTowerBattleRoom_EventScript_241C8F + case 1, BattleFrontier_BattleTowerBattleRoom_EventScript_AskReadyForOpponent + case 0, BattleFrontier_BattleTowerBattleRoom_EventScript_RecordBattle + case MULTI_B_PRESSED, BattleFrontier_BattleTowerBattleRoom_EventScript_AskReadyForOpponent -BattleFrontier_BattleTowerBattleRoom_EventScript_241D72:: @ 8241D72 +BattleFrontier_BattleTowerBattleRoom_EventScript_RecordBattle:: @ 8241D72 call BattleFrontier_EventScript_SaveBattle - goto BattleFrontier_BattleTowerBattleRoom_EventScript_241C8F + goto BattleFrontier_BattleTowerBattleRoom_EventScript_AskReadyForOpponent -BattleFrontier_BattleTowerBattleRoom_EventScript_241D7C:: @ 8241D7C - msgbox BattleFrontier_BattleTowerBattleRoom_Text_2423FC, MSGBOX_YESNO +BattleFrontier_BattleTowerBattleRoom_EventScript_AskPauseChallenge:: @ 8241D7C + msgbox BattleFrontier_BattleTowerBattleRoom_Text_SaveAndQuitGame, MSGBOX_YESNO switch VAR_RESULT - case NO, BattleFrontier_BattleTowerBattleRoom_EventScript_241C8F - case YES, BattleFrontier_BattleTowerBattleRoom_EventScript_241E22 - case MULTI_B_PRESSED, BattleFrontier_BattleTowerBattleRoom_EventScript_241C8F + case NO, BattleFrontier_BattleTowerBattleRoom_EventScript_AskReadyForOpponent + case YES, BattleFrontier_BattleTowerBattleRoom_EventScript_PauseChallenge + case MULTI_B_PRESSED, BattleFrontier_BattleTowerBattleRoom_EventScript_AskReadyForOpponent -BattleFrontier_BattleTowerBattleRoom_EventScript_241DAA:: @ 8241DAA - message BattleFrontier_BattleTowerBattleRoom_Text_24244C +BattleFrontier_BattleTowerBattleRoom_EventScript_AskRetireChallenge:: @ 8241DAA + message BattleFrontier_BattleTowerBattleRoom_Text_CancelYourChallenge waitmessage multichoicedefault 20, 8, MULTI_YESNO, 1, 0 switch VAR_RESULT - case 1, BattleFrontier_BattleTowerBattleRoom_EventScript_241C8F - case 0, BattleFrontier_BattleTowerBattleRoom_EventScript_24220E - case MULTI_B_PRESSED, BattleFrontier_BattleTowerBattleRoom_EventScript_241C8F + case 1, BattleFrontier_BattleTowerBattleRoom_EventScript_AskReadyForOpponent + case 0, BattleFrontier_BattleTowerBattleRoom_EventScript_RetireChallenge + case MULTI_B_PRESSED, BattleFrontier_BattleTowerBattleRoom_EventScript_AskReadyForOpponent -BattleFrontier_BattleTowerBattleRoom_EventScript_241DDC:: @ 8241DDC +BattleFrontier_BattleTowerBattleRoom_EventScript_ContinueChallenge:: @ 8241DDC closemessage - applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleTowerBattleRoom_Movement_242180 + applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleTowerBattleRoom_Movement_PlayerFaceBattle waitmovement 0 - applymovement 2, BattleFrontier_BattleTowerBattleRoom_Movement_242192 + applymovement 2, BattleFrontier_BattleTowerBattleRoom_Movement_AttendantReturnToPos waitmovement 0 - goto BattleFrontier_BattleTowerBattleRoom_EventScript_241BC3 + goto BattleFrontier_BattleTowerBattleRoom_EventScript_OpponentEnter -BattleFrontier_BattleTowerBattleRoom_EventScript_241DF6:: @ 8241DF6 +BattleFrontier_BattleTowerBattleRoom_EventScript_WarpToLobbyWon:: @ 8241DF6 frontier_set FRONTIER_DATA_CHALLENGE_STATUS, CHALLENGE_STATUS_WON tower_set TOWER_DATA_LVL_MODE setvar VAR_0x8004, 3 special Script_TryGainNewFanFromCounter - goto BattleFrontier_BattleTowerBattleRoom_EventScript_2421B8 + goto BattleFrontier_BattleTowerBattleRoom_EventScript_WarpToLobby -BattleFrontier_BattleTowerBattleRoom_EventScript_241E22:: @ 8241E22 - message BattleFrontier_BattleTowerBattleRoom_Text_242426 +BattleFrontier_BattleTowerBattleRoom_EventScript_PauseChallenge:: @ 8241E22 + message BattleFrontier_BattleTowerBattleRoom_Text_SavingPleaseWait waitmessage tower_save CHALLENGE_STATUS_PAUSED playse SE_SAVE @@ -150,43 +148,43 @@ BattleFrontier_BattleTowerBattleRoom_EventScript_241E22:: @ 8241E22 frontier_reset end -BattleFrontier_BattleTowerBattleRoom_EventScript_241E44:: @ 8241E44 +BattleFrontier_BattleTowerBattleRoom_EventScript_ReadyForOpponent:: @ 8241E44 copyvar VAR_TEMP_F, VAR_RESULT switch VAR_TEMP_F - case 1, BattleFrontier_BattleTowerBattleRoom_EventScript_241E90 - case 2, BattleFrontier_BattleTowerBattleRoom_EventScript_241E97 - case 3, BattleFrontier_BattleTowerBattleRoom_EventScript_241E9E - case 4, BattleFrontier_BattleTowerBattleRoom_EventScript_241EA5 - case 5, BattleFrontier_BattleTowerBattleRoom_EventScript_241EAC - case 6, BattleFrontier_BattleTowerBattleRoom_EventScript_241EB3 + case 1, BattleFrontier_BattleTowerBattleRoom_EventScript_ReadyFor2ndOpponent + case 2, BattleFrontier_BattleTowerBattleRoom_EventScript_ReadyFor3rdOpponent + case 3, BattleFrontier_BattleTowerBattleRoom_EventScript_ReadyFor4thOpponent + case 4, BattleFrontier_BattleTowerBattleRoom_EventScript_ReadyFor5thOpponent + case 5, BattleFrontier_BattleTowerBattleRoom_EventScript_ReadyFor6thOpponent + case 6, BattleFrontier_BattleTowerBattleRoom_EventScript_ReadyFor7thOpponent -BattleFrontier_BattleTowerBattleRoom_EventScript_241E90:: @ 8241E90 - message BattleFrontier_BattleTowerBattleRoom_Text_242277 +BattleFrontier_BattleTowerBattleRoom_EventScript_ReadyFor2ndOpponent:: @ 8241E90 + message BattleFrontier_BattleTowerBattleRoom_Text_ReadyFor2ndOpponent waitmessage return -BattleFrontier_BattleTowerBattleRoom_EventScript_241E97:: @ 8241E97 - message BattleFrontier_BattleTowerBattleRoom_Text_2422A9 +BattleFrontier_BattleTowerBattleRoom_EventScript_ReadyFor3rdOpponent:: @ 8241E97 + message BattleFrontier_BattleTowerBattleRoom_Text_ReadyFor3rdOpponent waitmessage return -BattleFrontier_BattleTowerBattleRoom_EventScript_241E9E:: @ 8241E9E - message BattleFrontier_BattleTowerBattleRoom_Text_2422DB +BattleFrontier_BattleTowerBattleRoom_EventScript_ReadyFor4thOpponent:: @ 8241E9E + message BattleFrontier_BattleTowerBattleRoom_Text_ReadyFor4thOpponent waitmessage return -BattleFrontier_BattleTowerBattleRoom_EventScript_241EA5:: @ 8241EA5 - message BattleFrontier_BattleTowerBattleRoom_Text_24230D +BattleFrontier_BattleTowerBattleRoom_EventScript_ReadyFor5thOpponent:: @ 8241EA5 + message BattleFrontier_BattleTowerBattleRoom_Text_ReadyFor5thOpponent waitmessage return -BattleFrontier_BattleTowerBattleRoom_EventScript_241EAC:: @ 8241EAC - message BattleFrontier_BattleTowerBattleRoom_Text_24233F +BattleFrontier_BattleTowerBattleRoom_EventScript_ReadyFor6thOpponent:: @ 8241EAC + message BattleFrontier_BattleTowerBattleRoom_Text_ReadyFor6thOpponent waitmessage return -BattleFrontier_BattleTowerBattleRoom_EventScript_241EB3:: @ 8241EB3 - message BattleFrontier_BattleTowerBattleRoom_Text_242371 +BattleFrontier_BattleTowerBattleRoom_EventScript_ReadyFor7thOpponent:: @ 8241EB3 + message BattleFrontier_BattleTowerBattleRoom_Text_ReadyFor7thOpponent waitmessage return @@ -194,8 +192,8 @@ BattleFrontier_EventScript_IncrementWinStreak:: @ 8241EBA frontier_incrementstreak return -BattleFrontier_BattleTowerBattleRoom_EventScript_241EC3:: @ 8241EC3 - applymovement 3, BattleFrontier_BattleTowerBattleRoom_Movement_24219A +BattleFrontier_BattleTowerBattleRoom_EventScript_SecondAttendantEnter:: @ 8241EC3 + applymovement 3, BattleFrontier_BattleTowerBattleRoom_Movement_SecondAttendantEnter waitmovement 0 applymovement 3, Common_Movement_WalkInPlaceLeft waitmovement 0 @@ -204,113 +202,111 @@ BattleFrontier_BattleTowerBattleRoom_EventScript_241EC3:: @ 8241EC3 waitmovement 0 applymovement 2, Common_Movement_Delay48 waitmovement 0 - applymovement 3, BattleFrontier_BattleTowerBattleRoom_Movement_2421A6 - applymovement 2, BattleFrontier_BattleTowerBattleRoom_Movement_2421AB + applymovement 3, BattleFrontier_BattleTowerBattleRoom_Movement_SecondAttendantDelay + applymovement 2, BattleFrontier_BattleTowerBattleRoom_Movement_AttendantFaceSecondAttendant waitmovement 0 - applymovement 3, BattleFrontier_BattleTowerBattleRoom_Movement_2421A1 + applymovement 3, BattleFrontier_BattleTowerBattleRoom_Movement_SecondAttendantExit waitmovement 0 return -BattleFrontier_BattleTowerBattleRoom_EventScript_241F0A:: @ 8241F0A +BattleFrontier_BattleTowerBattleRoom_EventScript_MaidenUpNext:: @ 8241F0A compare VAR_TEMP_2, 1 - goto_if_eq BattleFrontier_BattleTowerBattleRoom_EventScript_241F22 - msgbox BattleFrontier_BattleTowerBattleRoom_Text_2424C2, MSGBOX_DEFAULT + goto_if_eq BattleFrontier_BattleTowerBattleRoom_EventScript_AskReadyForMaiden + msgbox BattleFrontier_BattleTowerBattleRoom_Text_SalonMaidenOnHerWay, MSGBOX_DEFAULT setvar VAR_TEMP_2, 1 - -BattleFrontier_BattleTowerBattleRoom_EventScript_241F22:: @ 8241F22 - message BattleFrontier_BattleTowerBattleRoom_Text_242542 +BattleFrontier_BattleTowerBattleRoom_EventScript_AskReadyForMaiden:: @ 8241F22 + message BattleFrontier_BattleTowerBattleRoom_Text_ReadyForSalonMaiden waitmessage - call BattleFrontier_BattleTowerBattleRoom_EventScript_23E8E0 - compare VAR_RESULT, 1 - goto_if_eq BattleFrontier_BattleTowerBattleRoom_EventScript_241F79 + call BattleFrontier_EventScript_GetCantRecordBattle + compare VAR_RESULT, TRUE + goto_if_eq BattleFrontier_BattleTowerBattleRoom_EventScript_AskReadyForMaidenNoRecord multichoice 19, 4, MULTI_GO_ON_RECORD_REST_RETIRE, 1 switch VAR_RESULT - case 0, BattleFrontier_BattleTowerBattleRoom_EventScript_241FAF - case 1, BattleFrontier_BattleTowerBattleRoom_EventScript_241D40 - case 2, BattleFrontier_BattleTowerBattleRoom_EventScript_241D7C - case 3, BattleFrontier_BattleTowerBattleRoom_EventScript_241DAA - case MULTI_B_PRESSED, BattleFrontier_BattleTowerBattleRoom_EventScript_241F22 + case 0, BattleFrontier_BattleTowerBattleRoom_EventScript_BattleAnabel + case 1, BattleFrontier_BattleTowerBattleRoom_EventScript_AskRecordBattle + case 2, BattleFrontier_BattleTowerBattleRoom_EventScript_AskPauseChallenge + case 3, BattleFrontier_BattleTowerBattleRoom_EventScript_AskRetireChallenge + case MULTI_B_PRESSED, BattleFrontier_BattleTowerBattleRoom_EventScript_AskReadyForMaiden -BattleFrontier_BattleTowerBattleRoom_EventScript_241F79:: @ 8241F79 +BattleFrontier_BattleTowerBattleRoom_EventScript_AskReadyForMaidenNoRecord:: @ 8241F79 multichoice 20, 6, MULTI_GO_ON_REST_RETIRE, 1 switch VAR_RESULT - case 0, BattleFrontier_BattleTowerBattleRoom_EventScript_241FAF - case 1, BattleFrontier_BattleTowerBattleRoom_EventScript_241D7C - case 2, BattleFrontier_BattleTowerBattleRoom_EventScript_241DAA - case MULTI_B_PRESSED, BattleFrontier_BattleTowerBattleRoom_EventScript_241F22 + case 0, BattleFrontier_BattleTowerBattleRoom_EventScript_BattleAnabel + case 1, BattleFrontier_BattleTowerBattleRoom_EventScript_AskPauseChallenge + case 2, BattleFrontier_BattleTowerBattleRoom_EventScript_AskRetireChallenge + case MULTI_B_PRESSED, BattleFrontier_BattleTowerBattleRoom_EventScript_AskReadyForMaiden -BattleFrontier_BattleTowerBattleRoom_EventScript_241FAF:: @ 8241FAF +BattleFrontier_BattleTowerBattleRoom_EventScript_BattleAnabel:: @ 8241FAF call BattleFrontier_EventScript_SetBrainObjectGfx closemessage - applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleTowerBattleRoom_Movement_242180 + applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleTowerBattleRoom_Movement_PlayerFaceBattle waitmovement 0 - applymovement 2, BattleFrontier_BattleTowerBattleRoom_Movement_242192 + applymovement 2, BattleFrontier_BattleTowerBattleRoom_Movement_AttendantReturnToPos waitmovement 0 addobject 1 - applymovement 1, BattleFrontier_BattleTowerBattleRoom_Movement_2421B2 + applymovement 1, BattleFrontier_BattleTowerBattleRoom_Movement_AnabelEnter waitmovement 0 switch VAR_TEMP_F - case FRONTIER_BRAIN_GOLD, BattleFrontier_BattleTowerBattleRoom_EventScript_242085 - case FRONTIER_BRAIN_STREAK, BattleFrontier_BattleTowerBattleRoom_EventScript_242029 - case FRONTIER_BRAIN_STREAK_LONG, BattleFrontier_BattleTowerBattleRoom_EventScript_2420B2 + case FRONTIER_BRAIN_GOLD, BattleFrontier_BattleTowerBattleRoom_EventScript_AnabelGoldIntro + case FRONTIER_BRAIN_STREAK, BattleFrontier_BattleTowerBattleRoom_EventScript_BattleAnabelSilver + case FRONTIER_BRAIN_STREAK_LONG, BattleFrontier_BattleTowerBattleRoom_EventScript_BattleAnabelGold frontier_get FRONTIER_DATA_HEARD_BRAIN_SPEECH compare VAR_RESULT, FALSE - goto_if_ne BattleFrontier_BattleTowerBattleRoom_EventScript_242029 - msgbox BattleFrontier_BattleTowerBattleRoom_Text_242579, MSGBOX_DEFAULT + goto_if_ne BattleFrontier_BattleTowerBattleRoom_EventScript_BattleAnabelSilver + msgbox BattleFrontier_BattleTowerBattleRoom_Text_GreetingsImAnabel, MSGBOX_DEFAULT frontier_set FRONTIER_DATA_HEARD_BRAIN_SPEECH -BattleFrontier_BattleTowerBattleRoom_EventScript_242029:: @ 8242029 - msgbox BattleFrontier_BattleTowerBattleRoom_Text_24268C, MSGBOX_DEFAULT - call BattleFrontier_BattleTowerBattleRoom_EventScript_24210E - compare VAR_RESULT, 1 - goto_if_eq BattleFrontier_BattleTowerBattleRoom_EventScript_242046 - goto BattleFrontier_BattleTowerBattleRoom_EventScript_241C03 +BattleFrontier_BattleTowerBattleRoom_EventScript_BattleAnabelSilver:: @ 8242029 + msgbox BattleFrontier_BattleTowerBattleRoom_Text_LetMeSeeYourTalent, MSGBOX_DEFAULT + call BattleFrontier_BattleTowerBattleRoom_EventScript_DoTowerBattle + compare VAR_RESULT, B_OUTCOME_WON + goto_if_eq BattleFrontier_BattleTowerBattleRoom_EventScript_DefeatedAnabelSilver + goto BattleFrontier_BattleTower_EventScript_WarpToLobbyLost -BattleFrontier_BattleTowerBattleRoom_EventScript_242046:: @ 8242046 +BattleFrontier_BattleTowerBattleRoom_EventScript_DefeatedAnabelSilver:: @ 8242046 call BattleFrontier_EventScript_IncrementWinStreak frontier_getsymbols compare VAR_RESULT, 0 - goto_if_ne BattleFrontier_BattleTowerBattleRoom_EventScript_241DF6 - msgbox BattleFrontier_BattleTowerBattleRoom_Text_2426B4, MSGBOX_DEFAULT + goto_if_ne BattleFrontier_BattleTowerBattleRoom_EventScript_WarpToLobbyWon + msgbox BattleFrontier_BattleTowerBattleRoom_Text_AnabelTalentShallBeRecognized, MSGBOX_DEFAULT playfanfare MUS_ME_SYMBOLGET - message BattleFrontier_BattleTowerBattleRoom_Text_24270E + message BattleFrontier_BattleTowerBattleRoom_Text_ReceivedAbilitySymbol waitmessage waitfanfare frontier_givesymbol - msgbox BattleFrontier_BattleTowerBattleRoom_Text_242744, MSGBOX_DEFAULT - goto BattleFrontier_BattleTowerBattleRoom_EventScript_241DF6 + msgbox BattleFrontier_BattleTowerBattleRoom_Text_UntilNextTime, MSGBOX_DEFAULT + goto BattleFrontier_BattleTowerBattleRoom_EventScript_WarpToLobbyWon -BattleFrontier_BattleTowerBattleRoom_EventScript_242085:: @ 8242085 +BattleFrontier_BattleTowerBattleRoom_EventScript_AnabelGoldIntro:: @ 8242085 frontier_get FRONTIER_DATA_HEARD_BRAIN_SPEECH compare VAR_RESULT, FALSE - goto_if_ne BattleFrontier_BattleTowerBattleRoom_EventScript_2420B2 - msgbox BattleFrontier_BattleTowerBattleRoom_Text_2427F9, MSGBOX_DEFAULT + goto_if_ne BattleFrontier_BattleTowerBattleRoom_EventScript_BattleAnabelGold + msgbox BattleFrontier_BattleTowerBattleRoom_Text_AnabelYouCameBack, MSGBOX_DEFAULT frontier_set FRONTIER_DATA_HEARD_BRAIN_SPEECH -BattleFrontier_BattleTowerBattleRoom_EventScript_2420B2:: @ 82420B2 - msgbox BattleFrontier_BattleTowerBattleRoom_Text_2428E0, MSGBOX_DEFAULT - call BattleFrontier_BattleTowerBattleRoom_EventScript_24210E - compare VAR_RESULT, 1 - goto_if_eq BattleFrontier_BattleTowerBattleRoom_EventScript_2420CF - goto BattleFrontier_BattleTowerBattleRoom_EventScript_241C03 +BattleFrontier_BattleTowerBattleRoom_EventScript_BattleAnabelGold:: @ 82420B2 + msgbox BattleFrontier_BattleTowerBattleRoom_Text_LetsBeginShallWe, MSGBOX_DEFAULT + call BattleFrontier_BattleTowerBattleRoom_EventScript_DoTowerBattle + compare VAR_RESULT, B_OUTCOME_WON + goto_if_eq BattleFrontier_BattleTowerBattleRoom_EventScript_DefeatedAnabelGold + goto BattleFrontier_BattleTower_EventScript_WarpToLobbyLost -BattleFrontier_BattleTowerBattleRoom_EventScript_2420CF:: @ 82420CF +BattleFrontier_BattleTowerBattleRoom_EventScript_DefeatedAnabelGold:: @ 82420CF call BattleFrontier_EventScript_IncrementWinStreak frontier_getsymbols compare VAR_RESULT, 2 - goto_if_eq BattleFrontier_BattleTowerBattleRoom_EventScript_241DF6 - msgbox BattleFrontier_BattleTowerBattleRoom_Text_2428F7, MSGBOX_DEFAULT + goto_if_eq BattleFrontier_BattleTowerBattleRoom_EventScript_WarpToLobbyWon + msgbox BattleFrontier_BattleTowerBattleRoom_Text_AnabelCongratsYourPassPlease, MSGBOX_DEFAULT playfanfare MUS_ME_SYMBOLGET - message BattleFrontier_BattleTowerBattleRoom_Text_242932 + message BattleFrontier_BattleTowerBattleRoom_Text_AbilitySymbolTookGoldenShine waitmessage waitfanfare frontier_givesymbol - msgbox BattleFrontier_BattleTowerBattleRoom_Text_24295D, MSGBOX_DEFAULT - goto BattleFrontier_BattleTowerBattleRoom_EventScript_241DF6 + msgbox BattleFrontier_BattleTowerBattleRoom_Text_WishICouldBattleYouAgain, MSGBOX_DEFAULT + goto BattleFrontier_BattleTowerBattleRoom_EventScript_WarpToLobbyWon -BattleFrontier_BattleTowerBattleRoom2_EventScript_24210E:: @ 824210E -BattleFrontier_BattleTowerBattleRoom_EventScript_24210E:: @ 824210E +BattleFrontier_BattleTowerBattleRoom_EventScript_DoTowerBattle:: @ 824210E closemessage setvar VAR_TEMP_2, 0 - frontier_set FRONTIER_DATA_6, 0 + frontier_set FRONTIER_DATA_RECORD_DISABLED, FALSE special HealPlayerParty setvar VAR_0x8004, SPECIAL_BATTLE_TOWER setvar VAR_0x8005, 0 @@ -318,11 +314,11 @@ BattleFrontier_BattleTowerBattleRoom_EventScript_24210E:: @ 824210E waitstate copyvar VAR_0x8004, VAR_FRONTIER_BATTLE_MODE compare VAR_0x8004, FRONTIER_MODE_LINK_MULTIS - goto_if_eq BattleFrontier_BattleTowerBattleRoom_EventScript_24215A + goto_if_eq BattleFrontier_BattleTowerBattleRoom_EventScript_EndTowerBattle frontier_restorehelditems special HealPlayerParty frontier_resetsketch -BattleFrontier_BattleTowerBattleRoom_EventScript_24215A:: @ 824215A +BattleFrontier_BattleTowerBattleRoom_EventScript_EndTowerBattle:: @ 824215A tower_setinterviewdata frontier_get FRONTIER_DATA_BATTLE_OUTCOME return @@ -331,22 +327,22 @@ BattleFrontier_EventScript_SetBrainObjectGfx:: @ 8242170 frontier_setbrainobj return -BattleFrontier_BattleTowerBattleRoom_Movement_242179: @ 8242179 +BattleFrontier_BattleTowerBattleRoom_Movement_PlayerEnter: @ 8242179 walk_up walk_up walk_up face_right step_end -BattleFrontier_BattleTowerBattleRoom_Movement_24217E: @ 824217E +BattleFrontier_BattleTowerBattleRoom_Movement_PlayerFaceAttendant: @ 824217E face_down step_end -BattleFrontier_BattleTowerBattleRoom_Movement_242180: @ 8242180 +BattleFrontier_BattleTowerBattleRoom_Movement_PlayerFaceBattle: @ 8242180 face_right step_end -BattleFrontier_BattleTowerBattleRoom_Movement_242182: @ 8242182 +BattleFrontier_BattleTowerBattleRoom_Movement_OpponentEnter: @ 8242182 walk_down walk_down walk_down @@ -354,21 +350,21 @@ BattleFrontier_BattleTowerBattleRoom_Movement_242182: @ 8242182 face_left step_end -BattleFrontier_BattleTowerBattleRoom_Movement_242188: @ 8242188 +BattleFrontier_BattleTowerBattleRoom_Movement_OpponentExit: @ 8242188 walk_up walk_up walk_up walk_up step_end -BattleFrontier_BattleTowerBattleRoom_Movement_24218D: @ 824218D +BattleFrontier_BattleTowerBattleRoom_Movement_AttendantApproachPlayer: @ 824218D walk_right walk_right walk_right walk_up step_end -BattleFrontier_BattleTowerBattleRoom_Movement_242192: @ 8242192 +BattleFrontier_BattleTowerBattleRoom_Movement_AttendantReturnToPos: @ 8242192 walk_down walk_left walk_left @@ -376,11 +372,11 @@ BattleFrontier_BattleTowerBattleRoom_Movement_242192: @ 8242192 face_right step_end -BattleFrontier_BattleTowerBattleRoom_Movement_242198: @ 8242198 +BattleFrontier_BattleTowerBattleRoom_Movement_SetInvisible: @ 8242198 set_invisible step_end -BattleFrontier_BattleTowerBattleRoom_Movement_24219A: @ 824219A +BattleFrontier_BattleTowerBattleRoom_Movement_SecondAttendantEnter: @ 824219A set_visible delay_16 walk_up @@ -389,21 +385,21 @@ BattleFrontier_BattleTowerBattleRoom_Movement_24219A: @ 824219A delay_8 step_end -BattleFrontier_BattleTowerBattleRoom_Movement_2421A1: @ 82421A1 +BattleFrontier_BattleTowerBattleRoom_Movement_SecondAttendantExit: @ 82421A1 walk_right walk_right walk_down set_invisible step_end -BattleFrontier_BattleTowerBattleRoom_Movement_2421A6: @ 82421A6 +BattleFrontier_BattleTowerBattleRoom_Movement_SecondAttendantDelay: @ 82421A6 delay_16 delay_16 delay_16 delay_16 step_end -BattleFrontier_BattleTowerBattleRoom_Movement_2421AB: @ 82421AB +BattleFrontier_BattleTowerBattleRoom_Movement_AttendantFaceSecondAttendant: @ 82421AB face_right delay_16 delay_16 @@ -412,7 +408,7 @@ BattleFrontier_BattleTowerBattleRoom_Movement_2421AB: @ 82421AB walk_in_place_right step_end -BattleFrontier_BattleTowerBattleRoom_Movement_2421B2: @ 82421B2 +BattleFrontier_BattleTowerBattleRoom_Movement_AnabelEnter: @ 82421B2 walk_slow_down walk_slow_down walk_slow_down @@ -420,113 +416,107 @@ BattleFrontier_BattleTowerBattleRoom_Movement_2421B2: @ 82421B2 face_left step_end -BattleFrontier_BattleTowerBattleRoom2_EventScript_2421B8:: @ 82421B8 -BattleFrontier_BattleTowerBattleRoom_EventScript_2421B8:: @ 82421B8 +BattleFrontier_BattleTowerBattleRoom_EventScript_WarpToLobby:: @ 82421B8 copyvar VAR_RESULT, VAR_FRONTIER_BATTLE_MODE compare VAR_RESULT, FRONTIER_MODE_DOUBLES - goto_if_eq BattleFrontier_BattleTowerBattleRoom_EventScript_2421E8 + goto_if_eq BattleFrontier_BattleTowerBattleRoom_EventScript_WarpToLobbyDoubles compare VAR_RESULT, FRONTIER_MODE_MULTIS - goto_if_eq BattleFrontier_BattleTowerBattleRoom_EventScript_2421F2 + goto_if_eq BattleFrontier_BattleTowerBattleRoom_EventScript_WarpToLobbyMultis compare VAR_RESULT, FRONTIER_MODE_LINK_MULTIS - goto_if_eq BattleFrontier_BattleTowerBattleRoom_EventScript_2421FC + goto_if_eq BattleFrontier_BattleTowerBattleRoom_EventScript_WarpToLobbyLinkMultis warp MAP_BATTLE_FRONTIER_BATTLE_TOWER_LOBBY, 255, 6, 6 waitstate end -BattleFrontier_BattleTowerBattleRoom_EventScript_2421E8:: @ 82421E8 +BattleFrontier_BattleTowerBattleRoom_EventScript_WarpToLobbyDoubles:: @ 82421E8 warp MAP_BATTLE_FRONTIER_BATTLE_TOWER_LOBBY, 255, 10, 6 waitstate end -BattleFrontier_BattleTowerBattleRoom_EventScript_2421F2:: @ 82421F2 +BattleFrontier_BattleTowerBattleRoom_EventScript_WarpToLobbyMultis:: @ 82421F2 warp MAP_BATTLE_FRONTIER_BATTLE_TOWER_LOBBY, 255, 14, 6 waitstate end -BattleFrontier_BattleTowerBattleRoom_EventScript_2421FC:: @ 82421FC - setvar VAR_0x8004, BATTLE_TOWER_FUNC_13 - special CallBattleTowerFunc +BattleFrontier_BattleTowerBattleRoom_EventScript_WarpToLobbyLinkMultis:: @ 82421FC + tower_unklink warp MAP_BATTLE_FRONTIER_BATTLE_TOWER_LOBBY, 255, 18, 6 waitstate end -BattleFrontier_BattleTowerBattleRoom_EventScript_24220E:: @ 824220E +BattleFrontier_BattleTowerBattleRoom_EventScript_RetireChallenge:: @ 824220E setflag FLAG_CANCEL_BATTLE_ROOM_CHALLENGE - goto BattleFrontier_BattleTowerBattleRoom_EventScript_241C03 + goto BattleFrontier_BattleTower_EventScript_WarpToLobbyLost end -BattleFrontier_BattleTowerBattleRoom2_Text_242217: @ 8242217 -BattleFrontier_BattleTowerBattleRoom_Text_242217: @ 8242217 +BattleFrontier_BattleTowerBattleRoom_Text_RestoreMonsToFullHealth: @ 8242217 .string "We will restore your POKéMON to\n" .string "full health.$" -BattleFrontier_BattleTowerBattleRoom_Text_242244: @ 8242244 +@ Unused +BattleFrontier_BattleTowerBattleRoom_Text_ReadyForOpponent: @ 8242244 .string "You will be facing opponent no. {STR_VAR_1}.\n" .string "Are you ready?$" -BattleFrontier_BattleTowerBattleRoom_Text_242277: @ 8242277 +BattleFrontier_BattleTowerBattleRoom_Text_ReadyFor2ndOpponent: @ 8242277 .string "You will be facing opponent no. 2.\n" .string "Are you ready?$" -BattleFrontier_BattleTowerBattleRoom_Text_2422A9: @ 82422A9 +BattleFrontier_BattleTowerBattleRoom_Text_ReadyFor3rdOpponent: @ 82422A9 .string "You will be facing opponent no. 3.\n" .string "Are you ready?$" -BattleFrontier_BattleTowerBattleRoom_Text_2422DB: @ 82422DB +BattleFrontier_BattleTowerBattleRoom_Text_ReadyFor4thOpponent: @ 82422DB .string "You will be facing opponent no. 4.\n" .string "Are you ready?$" -BattleFrontier_BattleTowerBattleRoom_Text_24230D: @ 824230D +BattleFrontier_BattleTowerBattleRoom_Text_ReadyFor5thOpponent: @ 824230D .string "You will be facing opponent no. 5.\n" .string "Are you ready?$" -BattleFrontier_BattleTowerBattleRoom_Text_24233F: @ 824233F +BattleFrontier_BattleTowerBattleRoom_Text_ReadyFor6thOpponent: @ 824233F .string "You will be facing opponent no. 6.\n" .string "Are you ready?$" -BattleFrontier_BattleTowerBattleRoom_Text_242371: @ 8242371 +BattleFrontier_BattleTowerBattleRoom_Text_ReadyFor7thOpponent: @ 8242371 .string "You will be facing opponent no. 7.\n" .string "Are you ready?$" -BattleFrontier_BattleTowerBattleRoom2_Text_2423A3: @ 82423A3 -BattleFrontier_BattleTowerBattleRoom_Text_2423A3: @ 82423A3 +BattleFrontier_BattleTowerBattleRoom_Text_RecordYourBattle: @ 82423A3 .string "Record your battle on your\n" .string "FRONTIER PASS?$" -BattleFrontier_BattleTowerLobby_Text_2423CD: @ 82423CD +BattleFrontier_BattleTowerLobby_Text_BattleRecordedOnPass: @ 82423CD .string "{PLAYER}'s battle was recorded\n" .string "on the FRONTIER PASS.$" -BattleFrontier_BattleTowerBattleRoom2_Text_2423FC: @ 82423FC -BattleFrontier_BattleTowerBattleRoom_Text_2423FC: @ 82423FC +BattleFrontier_BattleTowerBattleRoom_Text_SaveAndQuitGame: @ 82423FC .string "Would you like to save and\n" .string "quit the game?$" -BattleFrontier_BattleTowerBattleRoom2_Text_242426: @ 8242426 -BattleFrontier_BattleTowerBattleRoom_Text_242426: @ 8242426 +BattleFrontier_BattleTowerBattleRoom_Text_SavingPleaseWait: @ 8242426 .string "Saving your battle data.\n" .string "Please wait.$" -BattleFrontier_BattleTowerBattleRoom2_Text_24244C: @ 824244C -BattleFrontier_BattleTowerBattleRoom_Text_24244C: @ 824244C +BattleFrontier_BattleTowerBattleRoom_Text_CancelYourChallenge: @ 824244C .string "Would you like to cancel your BATTLE\n" .string "ROOM challenge?$" -gText_BattleRecordCouldntBeSaved:: @ 8242481 +BattleFrontier_BattleTowerBattleRoom_Text_RecordCouldntBeSaved:: @ 8242481 .string "There was an error of some sort.\n" .string "Your record could not be saved.$" -BattleFrontier_BattleTowerBattleRoom_Text_2424C2: @ 82424C2 +BattleFrontier_BattleTowerBattleRoom_Text_SalonMaidenOnHerWay: @ 82424C2 .string "Excuse me, but…\p" .string "Our leader, the SALON MAIDEN, is on\n" .string "her way here in hopes of battling you.\p" .string "She should be arriving very shortly.$" -BattleFrontier_BattleTowerBattleRoom_Text_242542: @ 8242542 +BattleFrontier_BattleTowerBattleRoom_Text_ReadyForSalonMaiden: @ 8242542 .string "You will be facing the SALON MAIDEN.\n" .string "Are you prepared?$" -BattleFrontier_BattleTowerBattleRoom_Text_242579: @ 8242579 +BattleFrontier_BattleTowerBattleRoom_Text_GreetingsImAnabel: @ 8242579 .string "Greetings…\n" .string "My name is ANABEL.\p" .string "I am the SALON MAIDEN, and I am in\n" @@ -538,20 +528,20 @@ BattleFrontier_BattleTowerBattleRoom_Text_242579: @ 8242579 .string "The reason I've come to see you…\n" .string "Well, there is but one reason…$" -BattleFrontier_BattleTowerBattleRoom_Text_24268C: @ 824268C +BattleFrontier_BattleTowerBattleRoom_Text_LetMeSeeYourTalent: @ 824268C .string "Let me see your talent in\n" .string "its entirety…$" -BattleFrontier_BattleTowerBattleRoom_Text_2426B4: @ 82426B4 +BattleFrontier_BattleTowerBattleRoom_Text_AnabelTalentShallBeRecognized: @ 82426B4 .string "ANABEL: Fufufu, nicely done…\p" .string "Your FRONTIER PASS, please…\n" .string "Your talent shall be recognized.$" -BattleFrontier_BattleTowerBattleRoom_Text_24270E: @ 824270E +BattleFrontier_BattleTowerBattleRoom_Text_ReceivedAbilitySymbol: @ 824270E .string "The Ability Symbol was embossed on\n" .string "the FRONTIER PASS!$" -BattleFrontier_BattleTowerBattleRoom_Text_242744: @ 8242744 +BattleFrontier_BattleTowerBattleRoom_Text_UntilNextTime: @ 8242744 .string "… … … … … …\p" .string "You have confidence in your POKéMON\n" .string "battling talent, don't you?\p" @@ -560,7 +550,7 @@ BattleFrontier_BattleTowerBattleRoom_Text_242744: @ 8242744 .string "I will be waiting for you.\n" .string "Until the next time we meet…$" -BattleFrontier_BattleTowerBattleRoom_Text_2427F9: @ 82427F9 +BattleFrontier_BattleTowerBattleRoom_Text_AnabelYouCameBack: @ 82427F9 .string "ANABEL: You really did come back to\n" .string "see me…\p" .string "… … … … … …\p" @@ -570,18 +560,18 @@ BattleFrontier_BattleTowerBattleRoom_Text_2427F9: @ 82427F9 .string "Too long since I've been able to battle\n" .string "without thinking about anything…$" -BattleFrontier_BattleTowerBattleRoom_Text_2428E0: @ 82428E0 +BattleFrontier_BattleTowerBattleRoom_Text_LetsBeginShallWe: @ 82428E0 .string "Let's begin, shall we?$" -BattleFrontier_BattleTowerBattleRoom_Text_2428F7: @ 82428F7 +BattleFrontier_BattleTowerBattleRoom_Text_AnabelCongratsYourPassPlease: @ 82428F7 .string "ANABEL: Fufu, congratulations…\n" .string "Your FRONTIER PASS, please…$" -BattleFrontier_BattleTowerBattleRoom_Text_242932: @ 8242932 +BattleFrontier_BattleTowerBattleRoom_Text_AbilitySymbolTookGoldenShine: @ 8242932 .string "The Ability Symbol took on\n" .string "a golden shine!$" -BattleFrontier_BattleTowerBattleRoom_Text_24295D: @ 824295D +BattleFrontier_BattleTowerBattleRoom_Text_WishICouldBattleYouAgain: @ 824295D .string "That was fun…\p" .string "I have never had a POKéMON battle\n" .string "so enjoyable before…\p" diff --git a/data/maps/BattleFrontier_BattleTowerBattleRoom2/map.json b/data/maps/BattleFrontier_BattleTowerBattleRoom2/map.json deleted file mode 100644 index 698edcc65b..0000000000 --- a/data/maps/BattleFrontier_BattleTowerBattleRoom2/map.json +++ /dev/null @@ -1,99 +0,0 @@ -{ - "id": "MAP_BATTLE_FRONTIER_BATTLE_TOWER_BATTLE_ROOM2", - "name": "BattleFrontier_BattleTowerBattleRoom2", - "layout": "LAYOUT_BATTLE_FRONTIER_BATTLE_TOWER_BATTLE_ROOM", - "music": "MUS_SATTOWER", - "region_map_section": "MAPSEC_BATTLE_FRONTIER", - "requires_flash": false, - "weather": "WEATHER_NONE", - "map_type": "MAP_TYPE_INDOOR", - "allow_bike": false, - "allow_escape_rope": false, - "allow_running": false, - "show_map_name": false, - "battle_scene": "MAP_BATTLE_SCENE_FRONTIER", - "connections": null, - "object_events": [ - { - "graphics_id": "EVENT_OBJ_GFX_VAR_0", - "x": 5, - "y": 1, - "elevation": 3, - "movement_type": "MOVEMENT_TYPE_FACE_DOWN", - "movement_range_x": 0, - "movement_range_y": 0, - "trainer_type": "0", - "trainer_sight_or_berry_tree_id": "0", - "script": "0x0", - "flag": "FLAG_HIDE_BATTLE_TOWER_OPPONENT" - }, - { - "graphics_id": "EVENT_OBJ_GFX_TEALA", - "x": 1, - "y": 4, - "elevation": 3, - "movement_type": "MOVEMENT_TYPE_FACE_RIGHT", - "movement_range_x": 0, - "movement_range_y": 0, - "trainer_type": "0", - "trainer_sight_or_berry_tree_id": "0", - "script": "0x0", - "flag": "0" - }, - { - "graphics_id": "EVENT_OBJ_GFX_TEALA", - "x": 1, - "y": 5, - "elevation": 3, - "movement_type": "MOVEMENT_TYPE_FACE_RIGHT", - "movement_range_x": 0, - "movement_range_y": 0, - "trainer_type": "0", - "trainer_sight_or_berry_tree_id": "0", - "script": "0x0", - "flag": "0" - }, - { - "graphics_id": "EVENT_OBJ_GFX_VAR_1", - "x": 4, - "y": 1, - "elevation": 3, - "movement_type": "MOVEMENT_TYPE_FACE_DOWN", - "movement_range_x": 0, - "movement_range_y": 0, - "trainer_type": "0", - "trainer_sight_or_berry_tree_id": "0", - "script": "0x0", - "flag": "FLAG_HIDE_BATTLE_TOWER_OPPONENT" - }, - { - "graphics_id": "EVENT_OBJ_GFX_VAR_F", - "x": 4, - "y": 8, - "elevation": 3, - "movement_type": "MOVEMENT_TYPE_FACE_UP", - "movement_range_x": 0, - "movement_range_y": 0, - "trainer_type": "0", - "trainer_sight_or_berry_tree_id": "0", - "script": "0x0", - "flag": "0" - }, - { - "graphics_id": "EVENT_OBJ_GFX_VAR_E", - "x": 5, - "y": 8, - "elevation": 3, - "movement_type": "MOVEMENT_TYPE_FACE_UP", - "movement_range_x": 0, - "movement_range_y": 0, - "trainer_type": "0", - "trainer_sight_or_berry_tree_id": "0", - "script": "0x0", - "flag": "0" - } - ], - "warp_events": [], - "coord_events": [], - "bg_events": [] -} \ No newline at end of file diff --git a/data/maps/BattleFrontier_BattleTowerBattleRoom2/scripts.inc b/data/maps/BattleFrontier_BattleTowerBattleRoom2/scripts.inc deleted file mode 100644 index c0c6fa9003..0000000000 --- a/data/maps/BattleFrontier_BattleTowerBattleRoom2/scripts.inc +++ /dev/null @@ -1,507 +0,0 @@ -BattleFrontier_BattleTowerBattleRoom2_MapScripts:: @ 8248EE8 - map_script MAP_SCRIPT_ON_TRANSITION, BattleFrontier_BattleTowerBattleRoom2_MapScript1_248EF8 - map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, BattleFrontier_BattleTowerBattleRoom2_MapScript2_248F33 - map_script MAP_SCRIPT_ON_FRAME_TABLE, BattleFrontier_BattleTowerBattleRoom2_MapScript2_248F43 - .byte 0 - -BattleFrontier_BattleTowerBattleRoom2_MapScript1_248EF8: @ 8248EF8 - compare VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_MULTIS - call_if_eq BattleFrontier_BattleTowerBattleRoom2_EventScript_248F0F - compare VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_LINK_MULTIS - call_if_eq BattleFrontier_BattleTowerBattleRoom2_EventScript_248F2F - end - -BattleFrontier_BattleTowerBattleRoom2_EventScript_248F0F:: @ 8248F0F - setvar VAR_0x8004, BATTLE_TOWER_FUNC_14 - special CallBattleTowerFunc - checkplayergender - compare VAR_RESULT, FEMALE - goto_if_eq BattleFrontier_BattleTowerBattleRoom2_EventScript_248F29 - setvar VAR_OBJ_GFX_ID_F, EVENT_OBJ_GFX_BRENDAN_NORMAL - return - -BattleFrontier_BattleTowerBattleRoom2_EventScript_248F29:: @ 8248F29 - setvar VAR_OBJ_GFX_ID_F, EVENT_OBJ_GFX_MAY_NORMAL - return - -BattleFrontier_BattleTowerBattleRoom2_EventScript_248F2F:: @ 8248F2F - special SetBattleTowerLinkPlayerGfx - return - -BattleFrontier_BattleTowerBattleRoom2_MapScript2_248F33: @ 8248F33 - map_script_2 VAR_TEMP_1, 0, BattleFrontier_BattleTowerBattleRoom2_EventScript_248F3D - .2byte 0 - -BattleFrontier_BattleTowerBattleRoom2_EventScript_248F3D:: @ 8248F3D - hideobjectat EVENT_OBJ_ID_PLAYER, MAP_BATTLE_FRONTIER_BATTLE_TOWER_BATTLE_ROOM2 - end - -BattleFrontier_BattleTowerBattleRoom2_MapScript2_248F43: @ 8248F43 - map_script_2 VAR_TEMP_0, 0, BattleFrontier_BattleTowerBattleRoom2_EventScript_248F4D - .2byte 0 - -BattleFrontier_BattleTowerBattleRoom2_EventScript_248F4D:: @ 8248F4D - setvar VAR_TEMP_0, 1 - applymovement 5, BattleFrontier_BattleTowerBattleRoom2_Movement_249518 - applymovement 6, BattleFrontier_BattleTowerBattleRoom2_Movement_24951E - waitmovement 0 - frontier_get FRONTIER_DATA_BATTLE_NUM - compare VAR_RESULT, 0 - goto_if_eq BattleFrontier_BattleTowerBattleRoom2_EventScript_248FB4 - applymovement 2, BattleFrontier_BattleTowerBattleRoom2_Movement_24953E - applymovement 3, BattleFrontier_BattleTowerBattleRoom2_Movement_24953E - waitmovement 0 - applymovement 5, BattleFrontier_BattleTowerBattleRoom2_Movement_249524 - applymovement 6, BattleFrontier_BattleTowerBattleRoom2_Movement_249524 - waitmovement 0 - frontier_set FRONTIER_DATA_6, 1 - goto BattleFrontier_BattleTowerBattleRoom2_EventScript_249143 - -BattleFrontier_BattleTowerBattleRoom2_EventScript_248FB4:: @ 8248FB4 - tower_setopponent - addobject 1 - addobject 4 - applymovement 1, BattleFrontier_BattleTowerBattleRoom2_Movement_249528 - applymovement 4, BattleFrontier_BattleTowerBattleRoom2_Movement_24952E - waitmovement 0 - compare VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_LINK_MULTIS - goto_if_eq BattleFrontier_BattleTowerBattleRoom2_EventScript_249026 - tower_getopponentintro 0 - delay 15 - applymovement 1, BattleFrontier_BattleTowerBattleRoom2_Movement_249545 - waitmovement 0 - msgbox gStringVar4, MSGBOX_DEFAULT - waitmessage - tower_getopponentintro 1 - applymovement 4, BattleFrontier_BattleTowerBattleRoom2_Movement_249545 - waitmovement 0 - msgbox gStringVar4, MSGBOX_DEFAULT - waitmessage - goto BattleFrontier_BattleTowerBattleRoom2_EventScript_249069 - -BattleFrontier_BattleTowerBattleRoom2_EventScript_249026:: @ 8249026 - tower_getopponentintro 0 - delay 15 - applymovement 1, BattleFrontier_BattleTowerBattleRoom2_Movement_249545 - waitmovement 0 - messageautoscroll gStringVar4 - waitmessage - delay 48 - tower_getopponentintro 1 - applymovement 4, BattleFrontier_BattleTowerBattleRoom2_Movement_249545 - waitmovement 0 - messageautoscroll gStringVar4 - waitmessage - delay 48 - -BattleFrontier_BattleTowerBattleRoom2_EventScript_249069:: @ 8249069 - call BattleFrontier_BattleTowerBattleRoom2_EventScript_24210E - switch VAR_RESULT - case 1, BattleFrontier_BattleTowerBattleRoom2_EventScript_2490AA - -BattleFrontier_BattleTowerBattleRoom2_EventScript_24907E:: @ 824907E - frontier_set FRONTIER_DATA_CHALLENGE_STATUS, CHALLENGE_STATUS_LOST - tower_set TOWER_DATA_LVL_MODE - setvar VAR_0x8004, 3 - special Script_TryGainNewFanFromCounter - goto BattleFrontier_BattleTowerBattleRoom2_EventScript_2421B8 - -BattleFrontier_BattleTowerBattleRoom2_EventScript_2490AA:: @ 82490AA - call BattleFrontier_EventScript_IncrementWinStreak - tower_setbattlewon - switch VAR_RESULT - case 7, BattleFrontier_BattleTowerBattleRoom2_EventScript_2492AF - applymovement 4, BattleFrontier_BattleTowerBattleRoom2_Movement_249534 - applymovement 1, BattleFrontier_BattleTowerBattleRoom2_Movement_249539 - waitmovement 0 - removeobject 1 - removeobject 4 - applymovement 2, BattleFrontier_BattleTowerBattleRoom2_Movement_24953E - applymovement 3, BattleFrontier_BattleTowerBattleRoom2_Movement_24953E - waitmovement 0 - applymovement 5, BattleFrontier_BattleTowerBattleRoom2_Movement_249524 - applymovement 6, BattleFrontier_BattleTowerBattleRoom2_Movement_249524 - waitmovement 0 - compare VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_LINK_MULTIS - goto_if_eq BattleFrontier_BattleTowerBattleRoom2_EventScript_249118 - msgbox BattleFrontier_BattleTowerBattleRoom2_Text_242217, MSGBOX_DEFAULT - goto BattleFrontier_BattleTowerBattleRoom2_EventScript_249121 - -BattleFrontier_BattleTowerBattleRoom2_EventScript_249118:: @ 8249118 - messageautoscroll BattleFrontier_BattleTowerBattleRoom2_Text_242217 - waitmessage - delay 48 - -BattleFrontier_BattleTowerBattleRoom2_EventScript_249121:: @ 8249121 - special LoadPlayerParty - frontier_setpartyorder FRONTIER_MULTI_PARTY_SIZE - compare VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_LINK_MULTIS - call_if_eq BattleFrontier_BattleTowerBattleRoom2_EventScript_249514 - playfanfare MUS_ME_ASA - waitfanfare - special HealPlayerParty - -BattleFrontier_BattleTowerBattleRoom2_EventScript_249143:: @ 8249143 - frontier_get FRONTIER_DATA_BATTLE_NUM - call BattleFrontier_BattleTowerBattleRoom2_EventScript_2492FD - compare VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_LINK_MULTIS - goto_if_eq BattleFrontier_BattleTowerBattleRoom2_EventScript_249283 - call BattleFrontier_BattleTowerBattleRoom2_EventScript_23E8E0 - compare VAR_RESULT, 1 - goto_if_eq BattleFrontier_BattleTowerBattleRoom2_EventScript_2491B1 - multichoice 19, 4, MULTI_GO_ON_RECORD_REST_RETIRE, 1 - switch VAR_RESULT - case 0, BattleFrontier_BattleTowerBattleRoom2_EventScript_249283 - case 1, BattleFrontier_BattleTowerBattleRoom2_EventScript_2491E7 - case 2, BattleFrontier_BattleTowerBattleRoom2_EventScript_249223 - case 3, BattleFrontier_BattleTowerBattleRoom2_EventScript_249251 - case MULTI_B_PRESSED, BattleFrontier_BattleTowerBattleRoom2_EventScript_249143 - -BattleFrontier_BattleTowerBattleRoom2_EventScript_2491B1:: @ 82491B1 - multichoice 20, 6, MULTI_GO_ON_REST_RETIRE, 1 - switch VAR_RESULT - case 0, BattleFrontier_BattleTowerBattleRoom2_EventScript_249283 - case 1, BattleFrontier_BattleTowerBattleRoom2_EventScript_249223 - case 2, BattleFrontier_BattleTowerBattleRoom2_EventScript_249251 - case MULTI_B_PRESSED, BattleFrontier_BattleTowerBattleRoom2_EventScript_249143 - -BattleFrontier_BattleTowerBattleRoom2_EventScript_2491E7:: @ 82491E7 - message BattleFrontier_BattleTowerBattleRoom2_Text_2423A3 - waitmessage - multichoicedefault 20, 8, MULTI_YESNO, 1, 0 - switch VAR_RESULT - case 1, BattleFrontier_BattleTowerBattleRoom2_EventScript_249143 - case 0, BattleFrontier_BattleTowerBattleRoom2_EventScript_249219 - case MULTI_B_PRESSED, BattleFrontier_BattleTowerBattleRoom2_EventScript_249143 - -BattleFrontier_BattleTowerBattleRoom2_EventScript_249219:: @ 8249219 - call BattleFrontier_EventScript_SaveBattle - goto BattleFrontier_BattleTowerBattleRoom2_EventScript_249143 - -BattleFrontier_BattleTowerBattleRoom2_EventScript_249223:: @ 8249223 - msgbox BattleFrontier_BattleTowerBattleRoom2_Text_2423FC, MSGBOX_YESNO - switch VAR_RESULT - case NO, BattleFrontier_BattleTowerBattleRoom2_EventScript_249143 - case YES, BattleFrontier_BattleTowerBattleRoom2_EventScript_2492DB - case MULTI_B_PRESSED, BattleFrontier_BattleTowerBattleRoom2_EventScript_249143 - -BattleFrontier_BattleTowerBattleRoom2_EventScript_249251:: @ 8249251 - message BattleFrontier_BattleTowerBattleRoom2_Text_24244C - waitmessage - multichoicedefault 20, 8, MULTI_YESNO, 1, 0 - switch VAR_RESULT - case 1, BattleFrontier_BattleTowerBattleRoom2_EventScript_249143 - case 0, BattleFrontier_BattleTowerBattleRoom2_EventScript_24907E - case MULTI_B_PRESSED, BattleFrontier_BattleTowerBattleRoom2_EventScript_249143 - -BattleFrontier_BattleTowerBattleRoom2_EventScript_249283:: @ 8249283 - closemessage - clearflag FLAG_TEMP_2 - applymovement 5, BattleFrontier_BattleTowerBattleRoom2_Movement_249526 - applymovement 6, BattleFrontier_BattleTowerBattleRoom2_Movement_249526 - waitmovement 0 - applymovement 2, BattleFrontier_BattleTowerBattleRoom2_Movement_249541 - applymovement 3, BattleFrontier_BattleTowerBattleRoom2_Movement_249541 - waitmovement 0 - goto BattleFrontier_BattleTowerBattleRoom2_EventScript_248FB4 - end - -BattleFrontier_BattleTowerBattleRoom2_EventScript_2492AF:: @ 82492AF - frontier_set FRONTIER_DATA_CHALLENGE_STATUS, CHALLENGE_STATUS_WON - tower_set TOWER_DATA_LVL_MODE - setvar VAR_0x8004, 3 - special Script_TryGainNewFanFromCounter - goto BattleFrontier_BattleTowerBattleRoom2_EventScript_2421B8 - -BattleFrontier_BattleTowerBattleRoom2_EventScript_2492DB:: @ 82492DB - message BattleFrontier_BattleTowerBattleRoom2_Text_242426 - waitmessage - tower_save CHALLENGE_STATUS_PAUSED - playse SE_SAVE - waitse - fadescreen 1 - frontier_reset - end - -BattleFrontier_BattleTowerBattleRoom2_EventScript_2492FD:: @ 82492FD - compare VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_LINK_MULTIS - goto_if_eq BattleFrontier_BattleTowerBattleRoom2_EventScript_24937E - copyvar VAR_TEMP_F, VAR_RESULT - switch VAR_TEMP_F - case 1, BattleFrontier_BattleTowerBattleRoom2_EventScript_249354 - case 2, BattleFrontier_BattleTowerBattleRoom2_EventScript_24935B - case 3, BattleFrontier_BattleTowerBattleRoom2_EventScript_249362 - case 4, BattleFrontier_BattleTowerBattleRoom2_EventScript_249369 - case 5, BattleFrontier_BattleTowerBattleRoom2_EventScript_249370 - case 6, BattleFrontier_BattleTowerBattleRoom2_EventScript_249377 - -BattleFrontier_BattleTowerBattleRoom2_EventScript_249354:: @ 8249354 - message BattleFrontier_BattleTowerBattleRoom2_Text_249547 - waitmessage - return - -BattleFrontier_BattleTowerBattleRoom2_EventScript_24935B:: @ 824935B - message BattleFrontier_BattleTowerBattleRoom2_Text_249578 - waitmessage - return - -BattleFrontier_BattleTowerBattleRoom2_EventScript_249362:: @ 8249362 - message BattleFrontier_BattleTowerBattleRoom2_Text_2495A9 - waitmessage - return - -BattleFrontier_BattleTowerBattleRoom2_EventScript_249369:: @ 8249369 - message BattleFrontier_BattleTowerBattleRoom2_Text_2495DA - waitmessage - return - -BattleFrontier_BattleTowerBattleRoom2_EventScript_249370:: @ 8249370 - message BattleFrontier_BattleTowerBattleRoom2_Text_24960B - waitmessage - return - -BattleFrontier_BattleTowerBattleRoom2_EventScript_249377:: @ 8249377 - message BattleFrontier_BattleTowerBattleRoom2_Text_24963C - waitmessage - return - -BattleFrontier_BattleTowerBattleRoom2_EventScript_24937E:: @ 824937E - copyvar VAR_TEMP_F, VAR_RESULT - switch VAR_TEMP_F - case 1, BattleFrontier_BattleTowerBattleRoom2_EventScript_2493CA - case 2, BattleFrontier_BattleTowerBattleRoom2_EventScript_2493D6 - case 3, BattleFrontier_BattleTowerBattleRoom2_EventScript_2493E2 - case 4, BattleFrontier_BattleTowerBattleRoom2_EventScript_2493EE - case 5, BattleFrontier_BattleTowerBattleRoom2_EventScript_2493FA - case 6, BattleFrontier_BattleTowerBattleRoom2_EventScript_249406 - -BattleFrontier_BattleTowerBattleRoom2_EventScript_2493CA:: @ 82493CA - message BattleFrontier_BattleTowerBattleRoom2_Text_249547 - waitmessage - goto BattleFrontier_BattleTowerBattleRoom2_EventScript_249417 - end - -BattleFrontier_BattleTowerBattleRoom2_EventScript_2493D6:: @ 82493D6 - message BattleFrontier_BattleTowerBattleRoom2_Text_249578 - waitmessage - goto BattleFrontier_BattleTowerBattleRoom2_EventScript_249417 - end - -BattleFrontier_BattleTowerBattleRoom2_EventScript_2493E2:: @ 82493E2 - message BattleFrontier_BattleTowerBattleRoom2_Text_2495A9 - waitmessage - goto BattleFrontier_BattleTowerBattleRoom2_EventScript_249417 - end - -BattleFrontier_BattleTowerBattleRoom2_EventScript_2493EE:: @ 82493EE - message BattleFrontier_BattleTowerBattleRoom2_Text_2495DA - waitmessage - goto BattleFrontier_BattleTowerBattleRoom2_EventScript_249417 - end - -BattleFrontier_BattleTowerBattleRoom2_EventScript_2493FA:: @ 82493FA - message BattleFrontier_BattleTowerBattleRoom2_Text_24960B - waitmessage - goto BattleFrontier_BattleTowerBattleRoom2_EventScript_249417 - end - -BattleFrontier_BattleTowerBattleRoom2_EventScript_249406:: @ 8249406 - message BattleFrontier_BattleTowerBattleRoom2_Text_24963C - waitmessage - goto BattleFrontier_BattleTowerBattleRoom2_EventScript_249417 - end - -BattleFrontier_BattleTowerBattleRoom2_EventScript_249412:: @ 8249412 - waitmessage - delay 48 - return - -BattleFrontier_BattleTowerBattleRoom2_EventScript_249417:: @ 8249417 - goto_if_set FLAG_TEMP_2, BattleFrontier_BattleTowerBattleRoom2_EventScript_249457 - multichoice 19, 6, MULTI_GO_ON_RECORD_RETIRE, 1 - switch VAR_RESULT - case 0, BattleFrontier_BattleTowerBattleRoom2_EventScript_249483 - case 1, BattleFrontier_BattleTowerBattleRoom2_EventScript_2494A8 - case 2, BattleFrontier_BattleTowerBattleRoom2_EventScript_2494DD - case MULTI_B_PRESSED, BattleFrontier_BattleTowerBattleRoom2_EventScript_2494DD - end - -BattleFrontier_BattleTowerBattleRoom2_EventScript_249457:: @ 8249457 - multichoice 20, 8, MULTI_GO_ON_RETIRE, 1 - switch VAR_RESULT - case 0, BattleFrontier_BattleTowerBattleRoom2_EventScript_249483 - case 1, BattleFrontier_BattleTowerBattleRoom2_EventScript_2494DD - case MULTI_B_PRESSED, BattleFrontier_BattleTowerBattleRoom2_EventScript_2494DD - end - -BattleFrontier_BattleTowerBattleRoom2_EventScript_249483:: @ 8249483 - setvar VAR_0x8004, 0 - setvar VAR_0x8005, 0 - message gText_LinkStandby3 - waitmessage - special sub_813B568 - waitstate - compare VAR_RESULT, 0 - goto_if_ne BattleFrontier_BattleTowerBattleRoom2_EventScript_24907E - goto BattleFrontier_BattleTowerBattleRoom2_EventScript_249412 - end - -BattleFrontier_BattleTowerBattleRoom2_EventScript_2494A8:: @ 82494A8 - message BattleFrontier_BattleTowerBattleRoom2_Text_2423A3 - waitmessage - multichoicedefault 20, 8, MULTI_YESNO, 1, 0 - switch VAR_RESULT - case 1, BattleFrontier_BattleTowerBattleRoom2_EventScript_249143 - case MULTI_B_PRESSED, BattleFrontier_BattleTowerBattleRoom2_EventScript_249143 - call BattleFrontier_EventScript_SaveBattle - setflag FLAG_TEMP_2 - goto BattleFrontier_BattleTowerBattleRoom2_EventScript_249143 - end - -BattleFrontier_BattleTowerBattleRoom2_EventScript_2494DD:: @ 82494DD - message BattleFrontier_BattleTowerBattleRoom2_Text_24244C - waitmessage - multichoicedefault 20, 8, MULTI_YESNO, 1, 0 - compare VAR_RESULT, 0 - goto_if_eq BattleFrontier_BattleTowerBattleRoom2_EventScript_2494FA - goto BattleFrontier_BattleTowerBattleRoom2_EventScript_249143 - end - -BattleFrontier_BattleTowerBattleRoom2_EventScript_2494FA:: @ 82494FA - setvar VAR_0x8004, 1 - setvar VAR_0x8005, 0 - message gText_LinkStandby3 - waitmessage - special sub_813B568 - waitstate - goto BattleFrontier_BattleTowerBattleRoom2_EventScript_24907E - end - -BattleFrontier_BattleTowerBattleRoom2_EventScript_249514:: @ 8249514 - special sub_813B534 - return - -BattleFrontier_BattleTowerBattleRoom2_Movement_249518: @ 8249518 - walk_up - walk_up - walk_up - walk_up - face_right - step_end - -BattleFrontier_BattleTowerBattleRoom2_Movement_24951E: @ 824951E - walk_left - walk_up - walk_up - walk_up - face_right - step_end - -BattleFrontier_BattleTowerBattleRoom2_Movement_249524: @ 8249524 - face_left - step_end - -BattleFrontier_BattleTowerBattleRoom2_Movement_249526: @ 8249526 - walk_in_place_fastest_right - step_end - -BattleFrontier_BattleTowerBattleRoom2_Movement_249528: @ 8249528 - walk_down - walk_down - walk_down - walk_down - face_left - step_end - -BattleFrontier_BattleTowerBattleRoom2_Movement_24952E: @ 824952E - walk_right - walk_down - walk_down - walk_down - face_left - step_end - -BattleFrontier_BattleTowerBattleRoom2_Movement_249534: @ 8249534 - walk_up - walk_up - walk_up - set_invisible - step_end - -BattleFrontier_BattleTowerBattleRoom2_Movement_249539: @ 8249539 - walk_up - walk_up - walk_up - walk_up - step_end - -BattleFrontier_BattleTowerBattleRoom2_Movement_24953E: @ 824953E - walk_right - walk_right - step_end - -BattleFrontier_BattleTowerBattleRoom2_Movement_249541: @ 8249541 - walk_left - walk_left - walk_in_place_fastest_right - step_end - -BattleFrontier_BattleTowerBattleRoom2_Movement_249545: @ 8249545 - walk_in_place_left - step_end - -BattleFrontier_BattleTowerBattleRoom2_Text_249547: @ 8249547 - .string "The 2nd set of opponents is next.\n" - .string "Are you ready?$" - -BattleFrontier_BattleTowerBattleRoom2_Text_249578: @ 8249578 - .string "The 3rd set of opponents is next.\n" - .string "Are you ready?$" - -BattleFrontier_BattleTowerBattleRoom2_Text_2495A9: @ 82495A9 - .string "The 4th set of opponents is next.\n" - .string "Are you ready?$" - -BattleFrontier_BattleTowerBattleRoom2_Text_2495DA: @ 82495DA - .string "The 5th set of opponents is next.\n" - .string "Are you ready?$" - -BattleFrontier_BattleTowerBattleRoom2_Text_24960B: @ 824960B - .string "The 6th set of opponents is next.\n" - .string "Are you ready?$" - -BattleFrontier_BattleTowerBattleRoom2_Text_24963C: @ 824963C - .string "The 7th set of opponents is next.\n" - .string "Are you ready?$" - -BattleFrontier_BattleTowerBattleRoom2_Text_24966D: @ 824966D - .string "The 2nd set of opponents is next.\n" - .string "Do your best!$" - -BattleFrontier_BattleTowerBattleRoom2_Text_24969D: @ 824969D - .string "The 3rd set of opponents is next.\n" - .string "Do your best!$" - -BattleFrontier_BattleTowerBattleRoom2_Text_2496CD: @ 82496CD - .string "The 4th set of opponents is next.\n" - .string "Do your best!$" - -BattleFrontier_BattleTowerBattleRoom2_Text_2496FD: @ 82496FD - .string "The 5th set of opponents is next.\n" - .string "Do your best!$" - -BattleFrontier_BattleTowerBattleRoom2_Text_24972D: @ 824972D - .string "The 6th set of opponents is next.\n" - .string "Do your best!$" - -BattleFrontier_BattleTowerBattleRoom2_Text_24975D: @ 824975D - .string "The 7th set of opponents is next.\n" - .string "Do your best!$" - -gText_LinkStandby3:: @ 824978D - .string "Link standby…$" - -gText_YourPartnerHasRetired:: @ 824979B - .string "Your partner has retired.\p" - .string "Your BATTLE ROOM challenge\n" - .string "will be canceled.$" diff --git a/data/maps/BattleFrontier_BattleTowerCorridor/scripts.inc b/data/maps/BattleFrontier_BattleTowerCorridor/scripts.inc index a729615626..6957079da5 100644 --- a/data/maps/BattleFrontier_BattleTowerCorridor/scripts.inc +++ b/data/maps/BattleFrontier_BattleTowerCorridor/scripts.inc @@ -1,55 +1,52 @@ BattleFrontier_BattleTowerCorridor_MapScripts:: @ 8241AAA - map_script MAP_SCRIPT_ON_LOAD, BattleFrontier_BattleTowerCorridor_MapScript1_241AB5 - map_script MAP_SCRIPT_ON_FRAME_TABLE, BattleFrontier_BattleTowerCorridor_MapScript2_241AE6 + map_script MAP_SCRIPT_ON_LOAD, BattleFrontier_BattleTowerCorridor_OnLoad + map_script MAP_SCRIPT_ON_FRAME_TABLE, BattleFrontier_BattleTowerCorridor_OnFrame .byte 0 -BattleFrontier_BattleTowerCorridor_MapScript1_241AB5: @ 8241AB5 +BattleFrontier_BattleTowerCorridor_OnLoad: @ 8241AB5 compare VAR_0x8006, 1 - goto_if_eq BattleFrontier_BattleTowerCorridor_EventScript_241AD3 + goto_if_eq BattleFrontier_BattleTowerCorridor_EventScript_OpenFarDoor setmetatile 12, 0, METATILE_BattleFrontier_CorridorOpenDoor_Top, 0 setmetatile 12, 1, METATILE_BattleFrontier_CorridorOpenDoor_Bottom, 0 end -BattleFrontier_BattleTowerCorridor_EventScript_241AD3:: @ 8241AD3 +BattleFrontier_BattleTowerCorridor_EventScript_OpenFarDoor:: @ 8241AD3 setmetatile 15, 0, METATILE_BattleFrontier_CorridorOpenDoor_Top, 0 setmetatile 15, 1, METATILE_BattleFrontier_CorridorOpenDoor_Bottom, 0 end -BattleFrontier_BattleTowerCorridor_MapScript2_241AE6: @ 8241AE6 - map_script_2 VAR_TEMP_0, 0, BattleFrontier_BattleTowerCorridor_EventScript_241AF0 +BattleFrontier_BattleTowerCorridor_OnFrame: @ 8241AE6 + map_script_2 VAR_TEMP_0, 0, BattleFrontier_BattleTowerCorridor_EventScript_EnterCorridor .2byte 0 -BattleFrontier_BattleTowerCorridor_EventScript_241AF0:: @ 8241AF0 +BattleFrontier_BattleTowerCorridor_EventScript_EnterCorridor:: @ 8241AF0 setvar VAR_TEMP_0, 1 compare VAR_0x8006, 1 - goto_if_eq BattleFrontier_BattleTowerCorridor_EventScript_241B16 - applymovement 1, BattleFrontier_BattleTowerCorridor_Movement_241B3A - applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleTowerCorridor_Movement_241B39 + goto_if_eq BattleFrontier_BattleTowerCorridor_EventScript_WalkToFarDoor + applymovement 1, BattleFrontier_BattleTowerCorridor_Movement_AttendantWalkToDoor + applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleTowerCorridor_Movement_PlayerWalkToDoor waitmovement 0 - goto BattleFrontier_BattleTowerCorridor_EventScript_241B27 + goto BattleFrontier_BattleTowerCorridor_EventScript_WarpToBattleRoom -BattleFrontier_BattleTowerCorridor_EventScript_241B16:: @ 8241B16 - applymovement 1, BattleFrontier_BattleTowerCorridor_Movement_241B37 - applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleTowerCorridor_Movement_241B36 +BattleFrontier_BattleTowerCorridor_EventScript_WalkToFarDoor:: @ 8241B16 + applymovement 1, BattleFrontier_BattleTowerCorridor_Movement_AttendantWalkToFarDoor + applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleTowerCorridor_Movement_PlayerWalkToFarDoor waitmovement 0 -BattleFrontier_BattleTowerCorridor_EventScript_241B27:: @ 8241B27 +BattleFrontier_BattleTowerCorridor_EventScript_WarpToBattleRoom:: @ 8241B27 setvar VAR_TEMP_0, 0 warp MAP_BATTLE_FRONTIER_BATTLE_TOWER_BATTLE_ROOM, 255, 4, 8 waitstate end -BattleFrontier_BattleTowerCorridor_Movement_241B36: @ 8241B36 +BattleFrontier_BattleTowerCorridor_Movement_PlayerWalkToFarDoor: @ 8241B36 walk_right - -BattleFrontier_BattleTowerCorridor_Movement_241B37: @ 8241B37 +BattleFrontier_BattleTowerCorridor_Movement_AttendantWalkToFarDoor: @ 8241B37 walk_right walk_right - -BattleFrontier_BattleTowerCorridor_Movement_241B39: @ 8241B39 +BattleFrontier_BattleTowerCorridor_Movement_PlayerWalkToDoor: @ 8241B39 walk_right - -BattleFrontier_BattleTowerCorridor_Movement_241B3A: @ 8241B3A +BattleFrontier_BattleTowerCorridor_Movement_AttendantWalkToDoor: @ 8241B3A walk_right walk_right walk_right diff --git a/data/maps/BattleFrontier_BattleTowerCorridor2/scripts.inc b/data/maps/BattleFrontier_BattleTowerCorridor2/scripts.inc deleted file mode 100644 index 305013b906..0000000000 --- a/data/maps/BattleFrontier_BattleTowerCorridor2/scripts.inc +++ /dev/null @@ -1,172 +0,0 @@ -BattleFrontier_BattleTowerCorridor2_MapScripts:: @ 8248D4A - map_script MAP_SCRIPT_ON_TRANSITION, BattleFrontier_BattleTowerCorridor2_MapScript1_248D5A - map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, BattleFrontier_BattleTowerCorridor2_MapScript2_248D95 - map_script MAP_SCRIPT_ON_FRAME_TABLE, BattleFrontier_BattleTowerCorridor2_MapScript2_248DB2 - .byte 0 - -BattleFrontier_BattleTowerCorridor2_MapScript1_248D5A: @ 8248D5A - compare VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_MULTIS - call_if_eq BattleFrontier_BattleTowerCorridor2_EventScript_248D71 - compare VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_LINK_MULTIS - call_if_eq BattleFrontier_BattleTowerCorridor2_EventScript_248D91 - end - -BattleFrontier_BattleTowerCorridor2_EventScript_248D71:: @ 8248D71 - setvar VAR_0x8004, BATTLE_TOWER_FUNC_14 - special CallBattleTowerFunc - checkplayergender - compare VAR_RESULT, FEMALE - goto_if_eq BattleFrontier_BattleTowerCorridor2_EventScript_248D8B - setvar VAR_OBJ_GFX_ID_F, EVENT_OBJ_GFX_BRENDAN_NORMAL - return - -BattleFrontier_BattleTowerCorridor2_EventScript_248D8B:: @ 8248D8B - setvar VAR_OBJ_GFX_ID_F, EVENT_OBJ_GFX_MAY_NORMAL - return - -BattleFrontier_BattleTowerCorridor2_EventScript_248D91:: @ 8248D91 - special SetBattleTowerLinkPlayerGfx - return - -BattleFrontier_BattleTowerCorridor2_MapScript2_248D95: @ 8248D95 - map_script_2 VAR_TEMP_1, 0, BattleFrontier_BattleTowerCorridor2_EventScript_248D9F - .2byte 0 - -BattleFrontier_BattleTowerCorridor2_EventScript_248D9F:: @ 8248D9F - hideobjectat EVENT_OBJ_ID_PLAYER, MAP_BATTLE_FRONTIER_BATTLE_TOWER_CORRIDOR2 - hideobjectat 1, MAP_BATTLE_FRONTIER_BATTLE_TOWER_CORRIDOR2 - hideobjectat 4, MAP_BATTLE_FRONTIER_BATTLE_TOWER_CORRIDOR2 - special OffsetCameraForBattle - end - -BattleFrontier_BattleTowerCorridor2_MapScript2_248DB2: @ 8248DB2 - map_script_2 VAR_TEMP_1, 0, BattleFrontier_BattleTowerCorridor2_EventScript_248DBC - .2byte 0 - -BattleFrontier_BattleTowerCorridor2_EventScript_248DBC:: @ 8248DBC - lockall - setflag FLAG_SPECIAL_FLAG_0x4002 - setvar VAR_0x8004, 14 - setvar VAR_0x8005, 1 - opendoor 1, 1 - waitdooranim - clearflag FLAG_SPECIAL_FLAG_0x4002 - showobjectat 1, MAP_BATTLE_FRONTIER_BATTLE_TOWER_CORRIDOR2 - showobjectat 4, MAP_BATTLE_FRONTIER_BATTLE_TOWER_CORRIDOR2 - applymovement 1, BattleFrontier_BattleTowerCorridor2_Movement_248EE6 - applymovement 4, BattleFrontier_BattleTowerCorridor2_Movement_248EE6 - waitmovement 0 - setflag FLAG_SPECIAL_FLAG_0x4002 - setvar VAR_0x8004, 14 - setvar VAR_0x8005, 1 - closedoor 1, 1 - waitdooranim - clearflag FLAG_SPECIAL_FLAG_0x4002 - applymovement 1, BattleFrontier_BattleTowerCorridor2_Movement_248EBC - applymovement 4, BattleFrontier_BattleTowerCorridor2_Movement_248EC4 - applymovement 3, BattleFrontier_BattleTowerCorridor2_Movement_248ECC - applymovement 2, BattleFrontier_BattleTowerCorridor2_Movement_248ED5 - waitmovement 0 - delay 40 - applymovement 3, Common_Movement_WalkInPlaceFastestUp - applymovement 2, Common_Movement_WalkInPlaceFastestUp - waitmovement 0 - opendoor 7, 1 - waitdooranim - applymovement 3, BattleFrontier_BattleTowerCorridor2_Movement_248EE3 - applymovement 2, BattleFrontier_BattleTowerCorridor2_Movement_248EE3 - applymovement 1, BattleFrontier_BattleTowerCorridor2_Movement_248EDE - applymovement 4, BattleFrontier_BattleTowerCorridor2_Movement_248EDE - waitmovement 0 - closedoor 7, 1 - waitdooranim - delay 30 - setvar VAR_TEMP_1, 1 - call BattleFrontier_BattleTowerCorridor2_EventScript_248E71 - releaseall - end - -BattleFrontier_BattleTowerCorridor2_EventScript_248E71:: @ 8248E71 - compare VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_SINGLES - call_if_eq BattleFrontier_BattleTowerCorridor2_EventScript_248E9E - compare VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_DOUBLES - call_if_eq BattleFrontier_BattleTowerCorridor2_EventScript_248E9E - compare VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_MULTIS - call_if_eq BattleFrontier_BattleTowerCorridor2_EventScript_248EA8 - compare VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_LINK_MULTIS - call_if_eq BattleFrontier_BattleTowerCorridor2_EventScript_248EB2 - return - -BattleFrontier_BattleTowerCorridor2_EventScript_248E9E:: @ 8248E9E - warp MAP_BATTLE_FRONTIER_BATTLE_TOWER_BATTLE_ROOM, 255, 4, 8 - waitstate - return - -BattleFrontier_BattleTowerCorridor2_EventScript_248EA8:: @ 8248EA8 - warp MAP_BATTLE_FRONTIER_BATTLE_TOWER_BATTLE_ROOM2, 255, 4, 5 - waitstate - return - -BattleFrontier_BattleTowerCorridor2_EventScript_248EB2:: @ 8248EB2 - warp MAP_BATTLE_FRONTIER_BATTLE_TOWER_BATTLE_ROOM2, 255, 4, 5 - waitstate - return - -BattleFrontier_BattleTowerCorridor2_Movement_248EBC: @ 8248EBC - walk_down - walk_right - walk_right - walk_right - walk_right - walk_right - walk_right - step_end - -BattleFrontier_BattleTowerCorridor2_Movement_248EC4: @ 8248EC4 - walk_down - walk_left - walk_left - walk_left - walk_left - walk_left - walk_left - step_end - -BattleFrontier_BattleTowerCorridor2_Movement_248ECC: @ 8248ECC - walk_right - walk_right - walk_right - walk_right - walk_right - walk_right - walk_up - walk_in_place_fastest_right - step_end - -BattleFrontier_BattleTowerCorridor2_Movement_248ED5: @ 8248ED5 - walk_left - walk_left - walk_left - walk_left - walk_left - walk_left - walk_up - walk_in_place_fastest_left - step_end - -BattleFrontier_BattleTowerCorridor2_Movement_248EDE: @ 8248EDE - delay_16 - walk_up - walk_up - set_invisible - step_end - -BattleFrontier_BattleTowerCorridor2_Movement_248EE3: @ 8248EE3 - walk_up - set_invisible - step_end - -BattleFrontier_BattleTowerCorridor2_Movement_248EE6: @ 8248EE6 - walk_down - step_end - diff --git a/data/maps/BattleFrontier_BattleTowerElevator/scripts.inc b/data/maps/BattleFrontier_BattleTowerElevator/scripts.inc index 43dbc07917..320520bb81 100644 --- a/data/maps/BattleFrontier_BattleTowerElevator/scripts.inc +++ b/data/maps/BattleFrontier_BattleTowerElevator/scripts.inc @@ -1,89 +1,89 @@ BattleFrontier_BattleTowerElevator_MapScripts:: @ 82419DB - map_script MAP_SCRIPT_ON_FRAME_TABLE, BattleFrontier_BattleTowerElevator_MapScript2_2419E6 - map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, BattleFrontier_BattleTowerElevator_MapScript2_241A96 + map_script MAP_SCRIPT_ON_FRAME_TABLE, BattleFrontier_BattleTowerElevator_OnFrame + map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, BattleFrontier_BattleTowerElevator_OnWarp .byte 0 -BattleFrontier_BattleTowerElevator_MapScript2_2419E6: @ 82419E6 - map_script_2 VAR_TEMP_0, 0, BattleFrontier_BattleTowerElevator_EventScript_2419F0 +BattleFrontier_BattleTowerElevator_OnFrame: @ 82419E6 + map_script_2 VAR_TEMP_0, 0, BattleFrontier_BattleTowerElevator_EventScript_EnterElevator .2byte 0 -BattleFrontier_BattleTowerElevator_EventScript_2419F0:: @ 82419F0 +BattleFrontier_BattleTowerElevator_EventScript_EnterElevator:: @ 82419F0 setvar VAR_TEMP_0, 1 - applymovement 1, BattleFrontier_BattleTowerElevator_Movement_241A86 - applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleTowerElevator_Movement_241A8A + applymovement 1, BattleFrontier_BattleTowerElevator_Movement_AttendantEnter + applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleTowerElevator_Movement_PlayerEnter waitmovement 0 special BufferBattleTowerElevatorFloors waitse special MoveElevator waitstate delay 48 - applymovement 1, BattleFrontier_BattleTowerElevator_Movement_241A8E - applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleTowerElevator_Movement_241A92 + applymovement 1, BattleFrontier_BattleTowerElevator_Movement_AttendantExit + applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleTowerElevator_Movement_PlayerExit waitmovement 0 - call BattleFrontier_BattleTowerElevator_EventScript_241A28 + call BattleFrontier_BattleTowerElevator_EventScript_WarpToNextRoom end -BattleFrontier_BattleTowerElevator_EventScript_241A28:: @ 8241A28 +BattleFrontier_BattleTowerElevator_EventScript_WarpToNextRoom:: @ 8241A28 compare VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_SINGLES - call_if_eq BattleFrontier_BattleTowerElevator_EventScript_241A55 + call_if_eq BattleFrontier_BattleTowerElevator_EventScript_WarpToCorridor compare VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_DOUBLES - call_if_eq BattleFrontier_BattleTowerElevator_EventScript_241A55 + call_if_eq BattleFrontier_BattleTowerElevator_EventScript_WarpToCorridor compare VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_MULTIS - call_if_eq BattleFrontier_BattleTowerElevator_EventScript_241A5F + call_if_eq BattleFrontier_BattleTowerElevator_EventScript_WarpToNextRoomMulti compare VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_LINK_MULTIS - call_if_eq BattleFrontier_BattleTowerElevator_EventScript_241A72 + call_if_eq BattleFrontier_BattleTowerElevator_EventScript_WarpToCorridorMulti return -BattleFrontier_BattleTowerElevator_EventScript_241A55:: @ 8241A55 +BattleFrontier_BattleTowerElevator_EventScript_WarpToCorridor:: @ 8241A55 warp MAP_BATTLE_FRONTIER_BATTLE_TOWER_CORRIDOR, 255, 8, 1 waitstate return -BattleFrontier_BattleTowerElevator_EventScript_241A5F:: @ 8241A5F - goto_if_unset FLAG_CHOSEN_MULTI_BATTLE_NPC_PARTNER, BattleFrontier_BattleTowerElevator_EventScript_241A7C - warp MAP_BATTLE_FRONTIER_BATTLE_TOWER_CORRIDOR2, 255, 7, 2 +BattleFrontier_BattleTowerElevator_EventScript_WarpToNextRoomMulti:: @ 8241A5F + goto_if_unset FLAG_CHOSEN_MULTI_BATTLE_NPC_PARTNER, BattleFrontier_BattleTowerElevator_EventScript_WarpToPartnerRoom + warp MAP_BATTLE_FRONTIER_BATTLE_TOWER_MULTI_CORRIDOR, 255, 7, 2 waitstate return -BattleFrontier_BattleTowerElevator_EventScript_241A72:: @ 8241A72 - warp MAP_BATTLE_FRONTIER_BATTLE_TOWER_CORRIDOR2, 255, 7, 2 +BattleFrontier_BattleTowerElevator_EventScript_WarpToCorridorMulti:: @ 8241A72 + warp MAP_BATTLE_FRONTIER_BATTLE_TOWER_MULTI_CORRIDOR, 255, 7, 2 waitstate return -BattleFrontier_BattleTowerElevator_EventScript_241A7C:: @ 8241A7C - warp MAP_BATTLE_FRONTIER_BATTLE_TOWER_MULTI_BATTLE_ROOM, 255, 10, 1 +BattleFrontier_BattleTowerElevator_EventScript_WarpToPartnerRoom:: @ 8241A7C + warp MAP_BATTLE_FRONTIER_BATTLE_TOWER_MULTI_PARTNER_ROOM, 255, 10, 1 waitstate return -BattleFrontier_BattleTowerElevator_Movement_241A86: @ 8241A86 +BattleFrontier_BattleTowerElevator_Movement_AttendantEnter: @ 8241A86 walk_up walk_right face_down step_end -BattleFrontier_BattleTowerElevator_Movement_241A8A: @ 8241A8A +BattleFrontier_BattleTowerElevator_Movement_PlayerEnter: @ 8241A8A walk_up walk_up face_down step_end -BattleFrontier_BattleTowerElevator_Movement_241A8E: @ 8241A8E +BattleFrontier_BattleTowerElevator_Movement_AttendantExit: @ 8241A8E walk_down walk_down set_invisible step_end -BattleFrontier_BattleTowerElevator_Movement_241A92: @ 8241A92 +BattleFrontier_BattleTowerElevator_Movement_PlayerExit: @ 8241A92 walk_right walk_down walk_down step_end -BattleFrontier_BattleTowerElevator_MapScript2_241A96: @ 8241A96 - map_script_2 VAR_TEMP_1, 0, BattleFrontier_BattleTowerElevator_EventScript_241AA0 +BattleFrontier_BattleTowerElevator_OnWarp: @ 8241A96 + map_script_2 VAR_TEMP_1, 0, BattleFrontier_BattleTowerElevator_EventScript_TurnPlayerNorth .2byte 0 -BattleFrontier_BattleTowerElevator_EventScript_241AA0:: @ 8241AA0 +BattleFrontier_BattleTowerElevator_EventScript_TurnPlayerNorth:: @ 8241AA0 setvar VAR_TEMP_1, 1 turnobject EVENT_OBJ_ID_PLAYER, DIR_NORTH end diff --git a/data/maps/BattleFrontier_BattleTowerLobby/map.json b/data/maps/BattleFrontier_BattleTowerLobby/map.json index 32aa116362..4b83c34a0c 100644 --- a/data/maps/BattleFrontier_BattleTowerLobby/map.json +++ b/data/maps/BattleFrontier_BattleTowerLobby/map.json @@ -24,7 +24,7 @@ "movement_range_y": 0, "trainer_type": "0", "trainer_sight_or_berry_tree_id": "0", - "script": "BattleFrontier_BattleTowerLobby_EventScript_23E936", + "script": "BattleFrontier_BattleTowerLobby_EventScript_SinglesAttendant", "flag": "0" }, { @@ -37,7 +37,7 @@ "movement_range_y": 0, "trainer_type": "0", "trainer_sight_or_berry_tree_id": "0", - "script": "BattleFrontier_BattleTowerLobby_EventScript_23EEE7", + "script": "BattleFrontier_BattleTowerLobby_EventScript_FeelingsMan", "flag": "0" }, { @@ -50,7 +50,7 @@ "movement_range_y": 1, "trainer_type": "0", "trainer_sight_or_berry_tree_id": "0", - "script": "BattleFrontier_BattleTowerLobby_EventScript_23EFB5", + "script": "BattleFrontier_BattleTowerLobby_EventScript_Woman", "flag": "0" }, { @@ -63,7 +63,7 @@ "movement_range_y": 1, "trainer_type": "0", "trainer_sight_or_berry_tree_id": "0", - "script": "BattleFrontier_BattleTowerLobby_EventScript_23EFBE", + "script": "BattleFrontier_BattleTowerLobby_EventScript_Boy", "flag": "0" }, { @@ -102,7 +102,7 @@ "movement_range_y": 0, "trainer_type": "0", "trainer_sight_or_berry_tree_id": "0", - "script": "BattleFrontier_BattleTowerLobby_EventScript_23EA9F", + "script": "BattleFrontier_BattleTowerLobby_EventScript_DoublesAttendant", "flag": "0" }, { @@ -115,7 +115,7 @@ "movement_range_y": 0, "trainer_type": "0", "trainer_sight_or_berry_tree_id": "0", - "script": "BattleFrontier_BattleTowerLobby_EventScript_23EC08", + "script": "BattleFrontier_BattleTowerLobby_EventScript_MultisAttendant", "flag": "0" }, { @@ -128,7 +128,7 @@ "movement_range_y": 0, "trainer_type": "0", "trainer_sight_or_berry_tree_id": "0", - "script": "BattleFrontier_BattleTowerLobby_EventScript_23ED74", + "script": "BattleFrontier_BattleTowerLobby_EventScript_LinkMultisAttendant", "flag": "0" } ], @@ -163,7 +163,7 @@ "y": 5, "elevation": 0, "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH", - "script": "BattleFrontier_BattleTowerLobby_EventScript_23EFC7" + "script": "BattleFrontier_BattleTowerLobby_EventScript_ShowSinglesResults" }, { "type": "sign", @@ -171,7 +171,7 @@ "y": 5, "elevation": 0, "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH", - "script": "BattleFrontier_BattleTowerLobby_EventScript_23EFE0" + "script": "BattleFrontier_BattleTowerLobby_EventScript_ShowDoublesResults" }, { "type": "sign", @@ -179,7 +179,7 @@ "y": 5, "elevation": 0, "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH", - "script": "BattleFrontier_BattleTowerLobby_EventScript_23EFF9" + "script": "BattleFrontier_BattleTowerLobby_EventScript_ShowMultisResults" }, { "type": "sign", @@ -187,7 +187,7 @@ "y": 5, "elevation": 0, "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH", - "script": "BattleFrontier_BattleTowerLobby_EventScript_23F012" + "script": "BattleFrontier_BattleTowerLobby_EventScript_ShowLinkMultisResults" }, { "type": "sign", @@ -195,7 +195,7 @@ "y": 1, "elevation": 0, "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY", - "script": "BattleFrontier_BattleTowerLobby_EventScript_23F4BE" + "script": "BattleFrontier_BattleTowerLobby_EventScript_RulesBoard" } ] } \ No newline at end of file diff --git a/data/maps/BattleFrontier_BattleTowerLobby/scripts.inc b/data/maps/BattleFrontier_BattleTowerLobby/scripts.inc index e7842de51f..d4e5e8bb04 100644 --- a/data/maps/BattleFrontier_BattleTowerLobby/scripts.inc +++ b/data/maps/BattleFrontier_BattleTowerLobby/scripts.inc @@ -35,21 +35,21 @@ BattleFrontier_BattleTowerLobby_EventScript_PlayerFaceNorth:: @ 823E6D3 end BattleFrontier_BattleTowerLobby_OnFrame: @ 823E6DD - map_script_2 VAR_TEMP_0, 0, BattleFrontier_BattleTowerLobby_EventScript_23E707 - map_script_2 VAR_TEMP_0, CHALLENGE_STATUS_SAVING, BattleFrontier_BattleTowerLobby_EventScript_23E710 - map_script_2 VAR_TEMP_0, CHALLENGE_STATUS_PAUSED, BattleFrontier_BattleTowerLobby_EventScript_23E8EE - map_script_2 VAR_TEMP_0, CHALLENGE_STATUS_WON, BattleFrontier_BattleTowerLobby_EventScript_23E758 - map_script_2 VAR_TEMP_0, CHALLENGE_STATUS_LOST, BattleFrontier_BattleTowerLobby_EventScript_23E7F2 + map_script_2 VAR_TEMP_0, 0, BattleFrontier_BattleTowerLobby_EventScript_GetChallengeStatus + map_script_2 VAR_TEMP_0, CHALLENGE_STATUS_SAVING, BattleFrontier_BattleTowerLobby_EventScript_QuitWithoutSaving + map_script_2 VAR_TEMP_0, CHALLENGE_STATUS_PAUSED, BattleFrontier_BattleTowerLobby_EventScript_ResumeChallenge + map_script_2 VAR_TEMP_0, CHALLENGE_STATUS_WON, BattleFrontier_BattleTowerLobby_EventScript_WonChallenge + map_script_2 VAR_TEMP_0, CHALLENGE_STATUS_LOST, BattleFrontier_BattleTowerLobby_EventScript_LostChallenge .2byte 0 -BattleFrontier_BattleTowerLobby_EventScript_23E707:: @ 823E707 +BattleFrontier_BattleTowerLobby_EventScript_GetChallengeStatus:: @ 823E707 frontier_getstatus end -BattleFrontier_BattleTowerLobby_EventScript_23E710:: @ 823E710 +BattleFrontier_BattleTowerLobby_EventScript_QuitWithoutSaving:: @ 823E710 lock faceplayer - msgbox BattleFrontier_BattleTowerLobby_Text_23F583, MSGBOX_DEFAULT + msgbox BattleFrontier_BattleTowerLobby_Text_DidntSaveBeforeQuitting, MSGBOX_DEFAULT closemessage tower_set TOWER_DATA_WIN_STREAK, 0 tower_set TOWER_DATA_WIN_STREAK_ACTIVE, FALSE @@ -58,69 +58,66 @@ BattleFrontier_BattleTowerLobby_EventScript_23E710:: @ 823E710 release end -BattleFrontier_BattleTowerLobby_EventScript_23E758:: @ 823E758 +BattleFrontier_BattleTowerLobby_EventScript_WonChallenge:: @ 823E758 lock faceplayer frontier_isbrain compare VAR_RESULT, TRUE - goto_if_eq BattleFrontier_BattleTowerLobby_EventScript_23E778 - message BattleFrontier_BattleTowerLobby_Text_23F60D + goto_if_eq BattleFrontier_BattleTowerLobby_EventScript_DefeatedMaiden + message BattleFrontier_BattleTowerLobby_Text_CongratsBeatenSeven waitmessage - goto BattleFrontier_BattleTowerLobby_EventScript_23E780 + goto BattleFrontier_BattleTowerLobby_EventScript_GiveRibbons -BattleFrontier_BattleTowerLobby_EventScript_23E778:: @ 823E778 - msgbox BattleFrontier_BattleTowerLobby_Text_241486, MSGBOX_DEFAULT - -BattleFrontier_BattleTowerLobby_EventScript_23E780:: @ 823E780 +BattleFrontier_BattleTowerLobby_EventScript_DefeatedMaiden:: @ 823E778 + msgbox BattleFrontier_BattleTowerLobby_Text_CongratsDefeatedMaiden, MSGBOX_DEFAULT +BattleFrontier_BattleTowerLobby_EventScript_GiveRibbons:: @ 823E780 tower_giveribbons compare VAR_RESULT, FALSE - goto_if_eq BattleFrontier_BattleTowerLobby_EventScript_23E7A5 - message BattleFrontier_BattleTowerLobby_Text_23F844 + goto_if_eq BattleFrontier_BattleTowerLobby_EventScript_GiveBattlePoints + message BattleFrontier_BattleTowerLobby_Text_HereAreSomeRibbons waitmessage playfanfare MUS_FANFA4 waitfanfare - msgbox BattleFrontier_BattleTowerLobby_Text_23F89F, MSGBOX_DEFAULT -BattleFrontier_BattleTowerLobby_EventScript_23E7A5:: @ 823E7A5 - msgbox BattleFrontier_BattleTowerLobby_Text_2414D4, MSGBOX_DEFAULT + msgbox BattleFrontier_BattleTowerLobby_Text_PutRibbonOnMons, MSGBOX_DEFAULT +BattleFrontier_BattleTowerLobby_EventScript_GiveBattlePoints:: @ 823E7A5 + msgbox BattleFrontier_BattleTowerLobby_Text_AwardYouTheseBattlePoints, MSGBOX_DEFAULT frontier_givepoints msgbox BattleFrontier_Text_ObtainedXBattlePoints, MSGBOX_GETPOINTS - call BattleFrontier_BattleTowerLobby_EventScript_23E84D + call BattleFrontier_BattleTowerLobby_EventScript_AskSaveBattle tower_get TOWER_DATA_WIN_STREAK compare VAR_RESULT, 49 - goto_if_ne BattleFrontier_BattleTowerLobby_EventScript_23E7E2 - msgbox BattleFrontier_BattleTowerLobby_Text_23F79D, MSGBOX_DEFAULT - -BattleFrontier_BattleTowerLobby_EventScript_23E7E2:: @ 823E7E2 - msgbox BattleFrontier_BattleTowerLobby_Text_23FD07, MSGBOX_DEFAULT + goto_if_ne BattleFrontier_BattleTowerLobby_EventScript_LookForwardToChallenge + msgbox BattleFrontier_BattleTowerLobby_Text_AboutToFace50thTrainer, MSGBOX_DEFAULT +BattleFrontier_BattleTowerLobby_EventScript_LookForwardToChallenge:: @ 823E7E2 + msgbox BattleFrontier_BattleTowerLobby_Text_LookForwardToAnotherChallenge, MSGBOX_DEFAULT closemessage setvar VAR_TEMP_0, 255 release end -BattleFrontier_BattleTowerLobby_EventScript_23E7F2:: @ 823E7F2 +BattleFrontier_BattleTowerLobby_EventScript_LostChallenge:: @ 823E7F2 compare VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_MULTIS - goto_if_ne BattleFrontier_BattleTowerLobby_EventScript_23E81E - goto_if_set FLAG_CHOSEN_MULTI_BATTLE_NPC_PARTNER, BattleFrontier_BattleTowerLobby_EventScript_23E81E + goto_if_ne BattleFrontier_BattleTowerLobby_EventScript_CancelWinStreak + goto_if_set FLAG_CHOSEN_MULTI_BATTLE_NPC_PARTNER, BattleFrontier_BattleTowerLobby_EventScript_CancelWinStreak tower_get TOWER_DATA_WIN_STREAK compare VAR_RESULT, 0 - goto_if_ne BattleFrontier_BattleTowerLobby_EventScript_23E830 - -BattleFrontier_BattleTowerLobby_EventScript_23E81E:: @ 823E81E + goto_if_ne BattleFrontier_BattleTowerLobby_EventScript_LostThanksForPlaying +BattleFrontier_BattleTowerLobby_EventScript_CancelWinStreak:: @ 823E81E tower_set TOWER_DATA_WIN_STREAK_ACTIVE, FALSE -BattleFrontier_BattleTowerLobby_EventScript_23E830:: @ 823E830 +BattleFrontier_BattleTowerLobby_EventScript_LostThanksForPlaying:: @ 823E830 lock faceplayer - message BattleFrontier_BattleTowerLobby_Text_23F6F7 + message BattleFrontier_BattleTowerLobby_Text_ThankYouForPlaying waitmessage - call BattleFrontier_BattleTowerLobby_EventScript_23E84D - msgbox BattleFrontier_BattleTowerLobby_Text_23FD07, MSGBOX_DEFAULT + call BattleFrontier_BattleTowerLobby_EventScript_AskSaveBattle + msgbox BattleFrontier_BattleTowerLobby_Text_LookForwardToAnotherChallenge, MSGBOX_DEFAULT closemessage setvar VAR_TEMP_0, 255 release end -BattleFrontier_BattleTowerLobby_EventScript_23E84D:: @ 823E84D - message BattleFrontier_BattleTowerLobby_Text_23F70F +BattleFrontier_BattleTowerLobby_EventScript_AskSaveBattle:: @ 823E84D + message BattleFrontier_BattleTowerLobby_Text_RecordWillBeSaved waitmessage frontier_checkairshow special LoadPlayerParty @@ -128,94 +125,83 @@ BattleFrontier_BattleTowerLobby_EventScript_23E84D:: @ 823E84D tower_save 0 playse SE_SAVE waitse - call BattleFrontier_BattleTowerLobby_EventScript_23E8E0 - compare VAR_RESULT, 1 - goto_if_eq BattleFrontier_BattleTowerLobby_EventScript_23E8DF - message BattleFrontier_BattleTowerLobby_Text_23FE3C + call BattleFrontier_EventScript_GetCantRecordBattle + compare VAR_RESULT, TRUE + goto_if_eq BattleFrontier_BattleTowerLobby_EventScript_EndSaveBattle + message BattleFrontier_BattleTowerLobby_Text_RecordLastMatch waitmessage multichoicedefault 20, 8, MULTI_YESNO, 1, 0 switch VAR_RESULT - case 1, BattleFrontier_BattleTowerLobby_EventScript_23E8DF + case 1, BattleFrontier_BattleTowerLobby_EventScript_EndSaveBattle case 0, BattleFrontier_EventScript_SaveBattle - case MULTI_B_PRESSED, BattleFrontier_BattleTowerLobby_EventScript_23E8DF + case MULTI_B_PRESSED, BattleFrontier_BattleTowerLobby_EventScript_EndSaveBattle BattleFrontier_EventScript_SaveBattle:: @ 823E8B4 frontier_savebattle compare VAR_RESULT, FALSE goto_if_eq BattleFrontier_EventScript_BattleSaveFailed playse SE_SAVE - msgbox BattleFrontier_BattleTowerLobby_Text_2423CD, MSGBOX_DEFAULT - goto BattleFrontier_BattleTowerLobby_EventScript_23E8DF + msgbox BattleFrontier_BattleTowerLobby_Text_BattleRecordedOnPass, MSGBOX_DEFAULT + goto BattleFrontier_BattleTowerLobby_EventScript_EndSaveBattle BattleFrontier_EventScript_BattleSaveFailed:: @ 823E8D7 - msgbox gText_BattleRecordCouldntBeSaved, MSGBOX_DEFAULT -BattleFrontier_BattleTowerLobby_EventScript_23E8DF:: @ 823E8DF + msgbox BattleFrontier_BattleTowerBattleRoom_Text_RecordCouldntBeSaved, MSGBOX_DEFAULT +BattleFrontier_BattleTowerLobby_EventScript_EndSaveBattle:: @ 823E8DF return -BattleFrontier_BattleArenaBattleRoom_EventScript_23E8E0:: @ 823E8E0 -BattleFrontier_BattleArenaLobby_EventScript_23E8E0:: @ 823E8E0 -BattleFrontier_BattleDomeLobby_EventScript_23E8E0:: @ 823E8E0 -BattleFrontier_BattleDomePreBattleRoom_EventScript_23E8E0:: @ 823E8E0 -BattleFrontier_BattleFactoryLobby_EventScript_23E8E0:: @ 823E8E0 -BattleFrontier_BattleFactoryPreBattleRoom_EventScript_23E8E0:: @ 823E8E0 -BattleFrontier_BattlePalaceBattleRoom_EventScript_23E8E0:: @ 823E8E0 -BattleFrontier_BattlePalaceLobby_EventScript_23E8E0:: @ 823E8E0 -BattleFrontier_BattleTowerBattleRoom2_EventScript_23E8E0:: @ 823E8E0 -BattleFrontier_BattleTowerBattleRoom_EventScript_23E8E0:: @ 823E8E0 -BattleFrontier_BattleTowerLobby_EventScript_23E8E0:: @ 823E8E0 - frontier_get FRONTIER_DATA_6 +BattleFrontier_EventScript_GetCantRecordBattle:: @ 823E8E0 + frontier_get FRONTIER_DATA_RECORD_DISABLED return -BattleFrontier_BattleTowerLobby_EventScript_23E8EE:: @ 823E8EE +BattleFrontier_BattleTowerLobby_EventScript_ResumeChallenge:: @ 823E8EE lock faceplayer compare VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_SINGLES - call_if_eq BattleFrontier_BattleTowerLobby_EventScript_23E930 - message BattleFrontier_BattleTowerLobby_Text_23F737 + call_if_eq BattleFrontier_BattleTowerLobby_EventScript_SetBravoTrainerOn + message BattleFrontier_BattleTowerLobby_Text_WeveBeenWaitingForYou waitmessage - message BattleFrontier_BattleTowerLobby_Text_23F754 + message BattleFrontier_BattleTowerLobby_Text_ProgressWillBeSaved waitmessage tower_save CHALLENGE_STATUS_SAVING playse SE_SAVE waitse frontier_set FRONTIER_DATA_PAUSED, FALSE - goto BattleFrontier_BattleTowerLobby_EventScript_23F0F3 + goto BattleFrontier_BattleTowerLobby_EventScript_EnterElevator end -BattleFrontier_BattleTowerLobby_EventScript_23E930:: @ 823E930 - setvar VAR_BRAVO_TRAINER_BATTLE_TOWER_ON, 1 +BattleFrontier_BattleTowerLobby_EventScript_SetBravoTrainerOn:: @ 823E930 + setvar VAR_BRAVO_TRAINER_BATTLE_TOWER_ON, TRUE return -BattleFrontier_BattleTowerLobby_EventScript_23E936:: @ 823E936 +BattleFrontier_BattleTowerLobby_EventScript_SinglesAttendant:: @ 823E936 lock faceplayer setvar VAR_FRONTIER_FACILITY, FRONTIER_FACILITY_TOWER special SavePlayerParty - msgbox BattleFrontier_BattleTowerLobby_Text_240537, MSGBOX_DEFAULT - -BattleFrontier_BattleTowerLobby_EventScript_23E948:: @ 823E948 - message BattleFrontier_BattleTowerLobby_Text_2405B3 + msgbox BattleFrontier_BattleTowerLobby_Text_WelcomSingleBattle, MSGBOX_DEFAULT +BattleFrontier_BattleTowerLobby_EventScript_AskEnterSinglesChallenge:: @ 823E948 + message BattleFrontier_BattleTowerLobby_Text_TakeSinglesChallenge waitmessage multichoice 17, 6, MULTI_CHALLENGEINFO, 0 switch VAR_RESULT - case 0, BattleFrontier_BattleTowerLobby_EventScript_23E984 - case 1, BattleFrontier_BattleTowerLobby_EventScript_23EA91 - case 2, BattleFrontier_BattleTowerLobby_EventScript_23F0E6 - case MULTI_B_PRESSED, BattleFrontier_BattleTowerLobby_EventScript_23F0E6 + case 0, BattleFrontier_BattleTowerLobby_EventScript_TryEnterSinglesChallenge + case 1, BattleFrontier_BattleTowerLobby_EventScript_ExplainSinglesChallenge + case 2, BattleFrontier_BattleTowerLobby_EventScript_CancelChallenge + case MULTI_B_PRESSED, BattleFrontier_BattleTowerLobby_EventScript_CancelChallenge -BattleFrontier_BattleTowerLobby_EventScript_23E984:: @ 823E984 +BattleFrontier_BattleTowerLobby_EventScript_TryEnterSinglesChallenge:: @ 823E984 setvar VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_SINGLES - message BattleFrontier_BattleTowerLobby_Text_23FD3B + message BattleFrontier_BattleTowerLobby_Text_WhichLevelMode waitmessage multichoice 17, 6, MULTI_LEVEL_MODE, 0 switch VAR_RESULT - case 2, BattleFrontier_BattleTowerLobby_EventScript_23F0E6 - case MULTI_B_PRESSED, BattleFrontier_BattleTowerLobby_EventScript_23F0E6 + case 2, BattleFrontier_BattleTowerLobby_EventScript_CancelChallenge + case MULTI_B_PRESSED, BattleFrontier_BattleTowerLobby_EventScript_CancelChallenge frontier_checkineligible compare VAR_0x8004, TRUE - goto_if_eq BattleFrontier_BattleTowerLobby_EventScript_23F02B + goto_if_eq BattleFrontier_BattleTowerLobby_EventScript_NotEnoughValidMons frontier_set FRONTIER_DATA_LVL_MODE, VAR_RESULT - msgbox BattleFrontier_BattleTowerLobby_Text_2407A6, MSGBOX_DEFAULT + msgbox BattleFrontier_BattleTowerLobby_Text_SelectThreeMons, MSGBOX_DEFAULT fadescreen 1 call BattleFrontier_EventScript_GetLvlMode copyvar VAR_0x8004, VAR_RESULT @@ -223,14 +209,14 @@ BattleFrontier_BattleTowerLobby_EventScript_23E984:: @ 823E984 special ChoosePartyForBattleFrontier waitstate compare VAR_RESULT, 0 - goto_if_eq BattleFrontier_BattleTowerLobby_EventScript_23F0E3 - msgbox BattleFrontier_BattleTowerLobby_Text_23FDC7, MSGBOX_YESNO + goto_if_eq BattleFrontier_BattleTowerLobby_EventScript_LoadPartyCancelChallenge + msgbox BattleFrontier_BattleTowerLobby_Text_OkayToSaveBeforeEntering, MSGBOX_YESNO switch VAR_RESULT - case NO, BattleFrontier_BattleTowerLobby_EventScript_23F0E3 - case YES, BattleFrontier_BattleTowerLobby_EventScript_23EA2A - case MULTI_B_PRESSED, BattleFrontier_BattleTowerLobby_EventScript_23F0E3 + case NO, BattleFrontier_BattleTowerLobby_EventScript_LoadPartyCancelChallenge + case YES, BattleFrontier_BattleTowerLobby_EventScript_SaveBeforeSinglesChallenge + case MULTI_B_PRESSED, BattleFrontier_BattleTowerLobby_EventScript_LoadPartyCancelChallenge -BattleFrontier_BattleTowerLobby_EventScript_23EA2A:: @ 823EA2A +BattleFrontier_BattleTowerLobby_EventScript_SaveBeforeSinglesChallenge:: @ 823EA2A frontier_set FRONTIER_DATA_SELECTED_MON_ORDER setvar VAR_TEMP_0, 0 tower_init @@ -242,47 +228,46 @@ BattleFrontier_BattleTowerLobby_EventScript_23EA2A:: @ 823EA2A call Common_EventScript_SaveGame setvar VAR_TEMP_0, 255 compare VAR_RESULT, 0 - goto_if_eq BattleFrontier_BattleTowerLobby_EventScript_23F0D0 + goto_if_eq BattleFrontier_BattleTowerLobby_EventScript_CancelChallengeSaveFailed incrementgamestat GAME_STAT_ENTERED_BATTLE_TOWER - setvar VAR_BRAVO_TRAINER_BATTLE_TOWER_ON, 1 - goto BattleFrontier_BattleTowerLobby_EventScript_23F0F3 + setvar VAR_BRAVO_TRAINER_BATTLE_TOWER_ON, TRUE + goto BattleFrontier_BattleTowerLobby_EventScript_EnterElevator end -BattleFrontier_BattleTowerLobby_EventScript_23EA91:: @ 823EA91 - msgbox BattleFrontier_BattleTowerLobby_Text_2405EC, MSGBOX_DEFAULT - goto BattleFrontier_BattleTowerLobby_EventScript_23E948 +BattleFrontier_BattleTowerLobby_EventScript_ExplainSinglesChallenge:: @ 823EA91 + msgbox BattleFrontier_BattleTowerLobby_Text_ExplainSinglesChallenge, MSGBOX_DEFAULT + goto BattleFrontier_BattleTowerLobby_EventScript_AskEnterSinglesChallenge end -BattleFrontier_BattleTowerLobby_EventScript_23EA9F:: @ 823EA9F +BattleFrontier_BattleTowerLobby_EventScript_DoublesAttendant:: @ 823EA9F lock faceplayer setvar VAR_FRONTIER_FACILITY, FRONTIER_FACILITY_TOWER special SavePlayerParty - msgbox BattleFrontier_BattleTowerLobby_Text_2407E2, MSGBOX_DEFAULT - -BattleFrontier_BattleTowerLobby_EventScript_23EAB1:: @ 823EAB1 - message BattleFrontier_BattleTowerLobby_Text_24085E + msgbox BattleFrontier_BattleTowerLobby_Text_WelcomeDoubleBattle, MSGBOX_DEFAULT +BattleFrontier_BattleTowerLobby_EventScript_AskEnterDoublesChallenge:: @ 823EAB1 + message BattleFrontier_BattleTowerLobby_Text_TakeDoublesChallenge waitmessage multichoice 17, 6, MULTI_CHALLENGEINFO, 0 switch VAR_RESULT - case 0, BattleFrontier_BattleTowerLobby_EventScript_23EAED - case 1, BattleFrontier_BattleTowerLobby_EventScript_23EBFA - case 2, BattleFrontier_BattleTowerLobby_EventScript_23F0E6 - case MULTI_B_PRESSED, BattleFrontier_BattleTowerLobby_EventScript_23F0E6 + case 0, BattleFrontier_BattleTowerLobby_EventScript_TryEnterDoublesChallenge + case 1, BattleFrontier_BattleTowerLobby_EventScript_ExplainDoublesChallenge + case 2, BattleFrontier_BattleTowerLobby_EventScript_CancelChallenge + case MULTI_B_PRESSED, BattleFrontier_BattleTowerLobby_EventScript_CancelChallenge -BattleFrontier_BattleTowerLobby_EventScript_23EAED:: @ 823EAED +BattleFrontier_BattleTowerLobby_EventScript_TryEnterDoublesChallenge:: @ 823EAED setvar VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_DOUBLES - message BattleFrontier_BattleTowerLobby_Text_23FD3B + message BattleFrontier_BattleTowerLobby_Text_WhichLevelMode waitmessage multichoice 17, 6, MULTI_LEVEL_MODE, 0 switch VAR_RESULT - case 2, BattleFrontier_BattleTowerLobby_EventScript_23F0E6 - case MULTI_B_PRESSED, BattleFrontier_BattleTowerLobby_EventScript_23F0E6 + case 2, BattleFrontier_BattleTowerLobby_EventScript_CancelChallenge + case MULTI_B_PRESSED, BattleFrontier_BattleTowerLobby_EventScript_CancelChallenge frontier_checkineligible compare VAR_0x8004, TRUE - goto_if_eq BattleFrontier_BattleTowerLobby_EventScript_23F02B + goto_if_eq BattleFrontier_BattleTowerLobby_EventScript_NotEnoughValidMons frontier_set FRONTIER_DATA_LVL_MODE, VAR_RESULT - msgbox BattleFrontier_BattleTowerLobby_Text_240A50, MSGBOX_DEFAULT + msgbox BattleFrontier_BattleTowerLobby_Text_PleaseSelectFourMons, MSGBOX_DEFAULT fadescreen 1 call BattleFrontier_EventScript_GetLvlMode copyvar VAR_0x8004, VAR_RESULT @@ -290,14 +275,14 @@ BattleFrontier_BattleTowerLobby_EventScript_23EAED:: @ 823EAED special ChoosePartyForBattleFrontier waitstate compare VAR_RESULT, 0 - goto_if_eq BattleFrontier_BattleTowerLobby_EventScript_23F0E3 - msgbox BattleFrontier_BattleTowerLobby_Text_23FDC7, MSGBOX_YESNO + goto_if_eq BattleFrontier_BattleTowerLobby_EventScript_LoadPartyCancelChallenge + msgbox BattleFrontier_BattleTowerLobby_Text_OkayToSaveBeforeEntering, MSGBOX_YESNO switch VAR_RESULT - case NO, BattleFrontier_BattleTowerLobby_EventScript_23F0E3 - case YES, BattleFrontier_BattleTowerLobby_EventScript_23EB93 - case MULTI_B_PRESSED, BattleFrontier_BattleTowerLobby_EventScript_23F0E3 + case NO, BattleFrontier_BattleTowerLobby_EventScript_LoadPartyCancelChallenge + case YES, BattleFrontier_BattleTowerLobby_EventScript_SaveBeforeDoublesChallenge + case MULTI_B_PRESSED, BattleFrontier_BattleTowerLobby_EventScript_LoadPartyCancelChallenge -BattleFrontier_BattleTowerLobby_EventScript_23EB93:: @ 823EB93 +BattleFrontier_BattleTowerLobby_EventScript_SaveBeforeDoublesChallenge:: @ 823EB93 frontier_set FRONTIER_DATA_SELECTED_MON_ORDER setvar VAR_TEMP_0, 0 tower_init @@ -309,48 +294,47 @@ BattleFrontier_BattleTowerLobby_EventScript_23EB93:: @ 823EB93 call Common_EventScript_SaveGame setvar VAR_TEMP_0, 255 compare VAR_RESULT, 0 - goto_if_eq BattleFrontier_BattleTowerLobby_EventScript_23F0D0 + goto_if_eq BattleFrontier_BattleTowerLobby_EventScript_CancelChallengeSaveFailed incrementgamestat GAME_STAT_ENTERED_BATTLE_TOWER - setvar VAR_BRAVO_TRAINER_BATTLE_TOWER_ON, 0 - goto BattleFrontier_BattleTowerLobby_EventScript_23F0F3 + setvar VAR_BRAVO_TRAINER_BATTLE_TOWER_ON, FALSE + goto BattleFrontier_BattleTowerLobby_EventScript_EnterElevator end -BattleFrontier_BattleTowerLobby_EventScript_23EBFA:: @ 823EBFA - msgbox BattleFrontier_BattleTowerLobby_Text_240897, MSGBOX_DEFAULT - goto BattleFrontier_BattleTowerLobby_EventScript_23EAB1 +BattleFrontier_BattleTowerLobby_EventScript_ExplainDoublesChallenge:: @ 823EBFA + msgbox BattleFrontier_BattleTowerLobby_Text_ExplainDoublesChallenge, MSGBOX_DEFAULT + goto BattleFrontier_BattleTowerLobby_EventScript_AskEnterDoublesChallenge end -BattleFrontier_BattleTowerLobby_EventScript_23EC08:: @ 823EC08 +BattleFrontier_BattleTowerLobby_EventScript_MultisAttendant:: @ 823EC08 lock faceplayer setvar VAR_FRONTIER_FACILITY, FRONTIER_FACILITY_TOWER clearflag FLAG_CHOSEN_MULTI_BATTLE_NPC_PARTNER special SavePlayerParty - msgbox BattleFrontier_BattleTowerLobby_Text_240A8B, MSGBOX_DEFAULT - -BattleFrontier_BattleTowerLobby_EventScript_23EC1D:: @ 823EC1D - message BattleFrontier_BattleTowerLobby_Text_240B06 + msgbox BattleFrontier_BattleTowerLobby_Text_WelcomeMultiBattle, MSGBOX_DEFAULT +BattleFrontier_BattleTowerLobby_EventScript_AskEnterMultisChallenge:: @ 823EC1D + message BattleFrontier_BattleTowerLobby_Text_TakeMultisChallenge waitmessage multichoice 17, 6, MULTI_CHALLENGEINFO, 0 switch VAR_RESULT - case 0, BattleFrontier_BattleTowerLobby_EventScript_23EC59 - case 1, BattleFrontier_BattleTowerLobby_EventScript_23ED66 - case 2, BattleFrontier_BattleTowerLobby_EventScript_23F0E6 - case MULTI_B_PRESSED, BattleFrontier_BattleTowerLobby_EventScript_23F0E6 + case 0, BattleFrontier_BattleTowerLobby_EventScript_TryEnterMultisChallenge + case 1, BattleFrontier_BattleTowerLobby_EventScript_ExplainMultisChallenge + case 2, BattleFrontier_BattleTowerLobby_EventScript_CancelChallenge + case MULTI_B_PRESSED, BattleFrontier_BattleTowerLobby_EventScript_CancelChallenge -BattleFrontier_BattleTowerLobby_EventScript_23EC59:: @ 823EC59 +BattleFrontier_BattleTowerLobby_EventScript_TryEnterMultisChallenge:: @ 823EC59 setvar VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_MULTIS - message BattleFrontier_BattleTowerLobby_Text_23FD3B + message BattleFrontier_BattleTowerLobby_Text_WhichLevelMode waitmessage multichoice 17, 6, MULTI_LEVEL_MODE, 0 switch VAR_RESULT - case 2, BattleFrontier_BattleTowerLobby_EventScript_23F0E6 - case MULTI_B_PRESSED, BattleFrontier_BattleTowerLobby_EventScript_23F0E6 + case 2, BattleFrontier_BattleTowerLobby_EventScript_CancelChallenge + case MULTI_B_PRESSED, BattleFrontier_BattleTowerLobby_EventScript_CancelChallenge frontier_checkineligible compare VAR_0x8004, TRUE - goto_if_eq BattleFrontier_BattleTowerLobby_EventScript_23F02B + goto_if_eq BattleFrontier_BattleTowerLobby_EventScript_NotEnoughValidMons frontier_set FRONTIER_DATA_LVL_MODE, VAR_RESULT - msgbox BattleFrontier_BattleTowerLobby_Text_240DDB, MSGBOX_DEFAULT + msgbox BattleFrontier_BattleTowerLobby_Text_PleaseSelectTwoMons, MSGBOX_DEFAULT fadescreen 1 call BattleFrontier_EventScript_GetLvlMode copyvar VAR_0x8004, VAR_RESULT @@ -358,14 +342,14 @@ BattleFrontier_BattleTowerLobby_EventScript_23EC59:: @ 823EC59 special ChoosePartyForBattleFrontier waitstate compare VAR_RESULT, 0 - goto_if_eq BattleFrontier_BattleTowerLobby_EventScript_23F0E3 - msgbox BattleFrontier_BattleTowerLobby_Text_23FDC7, MSGBOX_YESNO + goto_if_eq BattleFrontier_BattleTowerLobby_EventScript_LoadPartyCancelChallenge + msgbox BattleFrontier_BattleTowerLobby_Text_OkayToSaveBeforeEntering, MSGBOX_YESNO switch VAR_RESULT - case NO, BattleFrontier_BattleTowerLobby_EventScript_23F0E3 - case YES, BattleFrontier_BattleTowerLobby_EventScript_23ECFF - case MULTI_B_PRESSED, BattleFrontier_BattleTowerLobby_EventScript_23F0E3 + case NO, BattleFrontier_BattleTowerLobby_EventScript_LoadPartyCancelChallenge + case YES, BattleFrontier_BattleTowerLobby_EventScript_SaveBeforeMultisChallenge + case MULTI_B_PRESSED, BattleFrontier_BattleTowerLobby_EventScript_LoadPartyCancelChallenge -BattleFrontier_BattleTowerLobby_EventScript_23ECFF:: @ 823ECFF +BattleFrontier_BattleTowerLobby_EventScript_SaveBeforeMultisChallenge:: @ 823ECFF frontier_set FRONTIER_DATA_SELECTED_MON_ORDER setvar VAR_TEMP_0, 0 tower_init @@ -377,47 +361,46 @@ BattleFrontier_BattleTowerLobby_EventScript_23ECFF:: @ 823ECFF call Common_EventScript_SaveGame setvar VAR_TEMP_0, 255 compare VAR_RESULT, 0 - goto_if_eq BattleFrontier_BattleTowerLobby_EventScript_23F0D0 + goto_if_eq BattleFrontier_BattleTowerLobby_EventScript_CancelChallengeSaveFailed incrementgamestat GAME_STAT_ENTERED_BATTLE_TOWER - setvar VAR_BRAVO_TRAINER_BATTLE_TOWER_ON, 0 - goto BattleFrontier_BattleTowerLobby_EventScript_23F0F3 + setvar VAR_BRAVO_TRAINER_BATTLE_TOWER_ON, FALSE + goto BattleFrontier_BattleTowerLobby_EventScript_EnterElevator end -BattleFrontier_BattleTowerLobby_EventScript_23ED66:: @ 823ED66 - msgbox BattleFrontier_BattleTowerLobby_Text_240B3E, MSGBOX_DEFAULT - goto BattleFrontier_BattleTowerLobby_EventScript_23EC1D +BattleFrontier_BattleTowerLobby_EventScript_ExplainMultisChallenge:: @ 823ED66 + msgbox BattleFrontier_BattleTowerLobby_Text_ExplainMultisChallenge, MSGBOX_DEFAULT + goto BattleFrontier_BattleTowerLobby_EventScript_AskEnterMultisChallenge end -BattleFrontier_BattleTowerLobby_EventScript_23ED74:: @ 823ED74 +BattleFrontier_BattleTowerLobby_EventScript_LinkMultisAttendant:: @ 823ED74 lock faceplayer setvar VAR_FRONTIER_FACILITY, FRONTIER_FACILITY_TOWER special SavePlayerParty - msgbox BattleFrontier_BattleTowerLobby_Text_240E15, MSGBOX_DEFAULT - -BattleFrontier_BattleTowerLobby_EventScript_23ED86:: @ 823ED86 - message BattleFrontier_BattleTowerLobby_Text_240E95 + msgbox BattleFrontier_BattleTowerLobby_Text_WelcomeLinkMultiBattle, MSGBOX_DEFAULT +BattleFrontier_BattleTowerLobby_EventScript_AskEnterLinkMultisChallenge:: @ 823ED86 + message BattleFrontier_BattleTowerLobby_Text_TakeLinkMultisChallenge waitmessage multichoice 17, 6, MULTI_CHALLENGEINFO, 0 switch VAR_RESULT - case 0, BattleFrontier_BattleTowerLobby_EventScript_23EDC2 - case 1, BattleFrontier_BattleTowerLobby_EventScript_23F3DA - case 2, BattleFrontier_BattleTowerLobby_EventScript_23F0E6 - case MULTI_B_PRESSED, BattleFrontier_BattleTowerLobby_EventScript_23F0E6 + case 0, BattleFrontier_BattleTowerLobby_EventScript_TryEnterLinkMultisChallenge + case 1, BattleFrontier_BattleTowerLobby_EventScript_ExplainLinkMultisChallenge + case 2, BattleFrontier_BattleTowerLobby_EventScript_CancelChallenge + case MULTI_B_PRESSED, BattleFrontier_BattleTowerLobby_EventScript_CancelChallenge -BattleFrontier_BattleTowerLobby_EventScript_23EDC2:: @ 823EDC2 +BattleFrontier_BattleTowerLobby_EventScript_TryEnterLinkMultisChallenge:: @ 823EDC2 setvar VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_LINK_MULTIS - message BattleFrontier_BattleTowerLobby_Text_23FD3B + message BattleFrontier_BattleTowerLobby_Text_WhichLevelMode waitmessage multichoice 17, 6, MULTI_LEVEL_MODE, 0 switch VAR_RESULT - case 2, BattleFrontier_BattleTowerLobby_EventScript_23F0E6 - case MULTI_B_PRESSED, BattleFrontier_BattleTowerLobby_EventScript_23F0E6 + case 2, BattleFrontier_BattleTowerLobby_EventScript_CancelChallenge + case MULTI_B_PRESSED, BattleFrontier_BattleTowerLobby_EventScript_CancelChallenge frontier_checkineligible compare VAR_0x8004, TRUE - goto_if_eq BattleFrontier_BattleTowerLobby_EventScript_23F02B + goto_if_eq BattleFrontier_BattleTowerLobby_EventScript_NotEnoughValidMons frontier_set FRONTIER_DATA_LVL_MODE, VAR_RESULT - msgbox BattleFrontier_BattleTowerLobby_Text_24115E, MSGBOX_DEFAULT + msgbox BattleFrontier_BattleTowerLobby_Text_PleaseSelectTwoMons2, MSGBOX_DEFAULT fadescreen 1 call BattleFrontier_EventScript_GetLvlMode copyvar VAR_0x8004, VAR_RESULT @@ -425,14 +408,14 @@ BattleFrontier_BattleTowerLobby_EventScript_23EDC2:: @ 823EDC2 special ChoosePartyForBattleFrontier waitstate compare VAR_RESULT, 0 - goto_if_eq BattleFrontier_BattleTowerLobby_EventScript_23F0E3 - msgbox BattleFrontier_BattleTowerLobby_Text_23FDC7, MSGBOX_YESNO + goto_if_eq BattleFrontier_BattleTowerLobby_EventScript_LoadPartyCancelChallenge + msgbox BattleFrontier_BattleTowerLobby_Text_OkayToSaveBeforeEntering, MSGBOX_YESNO switch VAR_RESULT - case NO, BattleFrontier_BattleTowerLobby_EventScript_23F0E3 - case YES, BattleFrontier_BattleTowerLobby_EventScript_23EE68 - case MULTI_B_PRESSED, BattleFrontier_BattleTowerLobby_EventScript_23F0E3 + case NO, BattleFrontier_BattleTowerLobby_EventScript_LoadPartyCancelChallenge + case YES, BattleFrontier_BattleTowerLobby_EventScript_SaveBeforeLinkMultisChallenge + case MULTI_B_PRESSED, BattleFrontier_BattleTowerLobby_EventScript_LoadPartyCancelChallenge -BattleFrontier_BattleTowerLobby_EventScript_23EE68:: @ 823EE68 +BattleFrontier_BattleTowerLobby_EventScript_SaveBeforeLinkMultisChallenge:: @ 823EE68 frontier_set FRONTIER_DATA_SELECTED_MON_ORDER setvar VAR_TEMP_0, 0 tower_init @@ -445,87 +428,87 @@ BattleFrontier_BattleTowerLobby_EventScript_23EE68:: @ 823EE68 call Common_EventScript_SaveGame setvar VAR_TEMP_0, 255 compare VAR_RESULT, 0 - goto_if_eq BattleFrontier_BattleTowerLobby_EventScript_23F0D0 + goto_if_eq BattleFrontier_BattleTowerLobby_EventScript_CancelChallengeSaveFailed incrementgamestat GAME_STAT_ENTERED_BATTLE_TOWER specialvar VAR_RESULT, IsWirelessAdapterConnected - compare VAR_RESULT, 1 - goto_if_eq BattleFrontier_BattleTowerLobby_EventScript_23F3E8 - goto BattleFrontier_BattleTowerLobby_EventScript_23F2C5 + compare VAR_RESULT, TRUE + goto_if_eq BattleFrontier_BattleTowerLobby_EventScript_TryWirelessLink + goto BattleFrontier_BattleTowerLobby_EventScript_TryCableLink end -BattleFrontier_BattleTowerLobby_EventScript_23EEE7:: @ 823EEE7 +BattleFrontier_BattleTowerLobby_EventScript_FeelingsMan:: @ 823EEE7 lock faceplayer - message BattleFrontier_BattleTowerLobby_Text_23F8CD + message BattleFrontier_BattleTowerLobby_Text_DescribeFeelingsAboutBattleTower waitmessage multichoice 16, 4, MULTI_BATTLE_TOWER_FEELINGS, 0 switch VAR_RESULT - case 0, BattleFrontier_BattleTowerLobby_EventScript_23EF32 - case 1, BattleFrontier_BattleTowerLobby_EventScript_23EF4C - case 2, BattleFrontier_BattleTowerLobby_EventScript_23EF66 - case 3, BattleFrontier_BattleTowerLobby_EventScript_23EF80 - case MULTI_B_PRESSED, BattleFrontier_BattleTowerLobby_EventScript_23EF80 + case 0, BattleFrontier_BattleTowerLobby_EventScript_FeelingsBattleNow + case 1, BattleFrontier_BattleTowerLobby_EventScript_FeelingsIWon + case 2, BattleFrontier_BattleTowerLobby_EventScript_FeelingsILost + case 3, BattleFrontier_BattleTowerLobby_EventScript_FeelingsWontTell + case MULTI_B_PRESSED, BattleFrontier_BattleTowerLobby_EventScript_FeelingsWontTell release end -BattleFrontier_BattleTowerLobby_EventScript_23EF32:: @ 823EF32 - msgbox BattleFrontier_BattleTowerLobby_Text_23F969, MSGBOX_DEFAULT +BattleFrontier_BattleTowerLobby_EventScript_FeelingsBattleNow:: @ 823EF32 + msgbox BattleFrontier_BattleTowerLobby_Text_FeelWhatWhenYouBegin, MSGBOX_DEFAULT setvar VAR_0x8004, EASY_CHAT_TYPE_BATTLE_START call Common_ShowEasyChatScreen lock faceplayer - goto BattleFrontier_BattleTowerLobby_EventScript_23EF8A + goto BattleFrontier_BattleTowerLobby_EventScript_CheckFeelings end -BattleFrontier_BattleTowerLobby_EventScript_23EF4C:: @ 823EF4C - msgbox BattleFrontier_BattleTowerLobby_Text_23F9AA, MSGBOX_DEFAULT +BattleFrontier_BattleTowerLobby_EventScript_FeelingsIWon:: @ 823EF4C + msgbox BattleFrontier_BattleTowerLobby_Text_FeelWhatWhenYouveWon, MSGBOX_DEFAULT setvar VAR_0x8004, EASY_CHAT_TYPE_BATTLE_WON call Common_ShowEasyChatScreen lock faceplayer - goto BattleFrontier_BattleTowerLobby_EventScript_23EF8A + goto BattleFrontier_BattleTowerLobby_EventScript_CheckFeelings end -BattleFrontier_BattleTowerLobby_EventScript_23EF66:: @ 823EF66 - msgbox BattleFrontier_BattleTowerLobby_Text_23F9D4, MSGBOX_DEFAULT +BattleFrontier_BattleTowerLobby_EventScript_FeelingsILost:: @ 823EF66 + msgbox BattleFrontier_BattleTowerLobby_Text_FeelWhatWhenYouveLost, MSGBOX_DEFAULT setvar VAR_0x8004, EASY_CHAT_TYPE_BATTLE_LOST call Common_ShowEasyChatScreen lock faceplayer - goto BattleFrontier_BattleTowerLobby_EventScript_23EF8A + goto BattleFrontier_BattleTowerLobby_EventScript_CheckFeelings end -BattleFrontier_BattleTowerLobby_EventScript_23EF80:: @ 823EF80 - msgbox BattleFrontier_BattleTowerLobby_Text_23FA0F, MSGBOX_DEFAULT +BattleFrontier_BattleTowerLobby_EventScript_FeelingsWontTell:: @ 823EF80 + msgbox BattleFrontier_BattleTowerLobby_Text_DontThinkMuchAboutIt, MSGBOX_DEFAULT release end -BattleFrontier_BattleTowerLobby_EventScript_23EF8A:: @ 823EF8A +BattleFrontier_BattleTowerLobby_EventScript_CheckFeelings:: @ 823EF8A compare VAR_RESULT, 0 - goto_if_eq BattleFrontier_BattleTowerLobby_EventScript_23EFA1 + goto_if_eq BattleFrontier_BattleTowerLobby_EventScript_CanceledEasyChat compare VAR_RESULT, 1 - goto_if_eq BattleFrontier_BattleTowerLobby_EventScript_23EFAB + goto_if_eq BattleFrontier_BattleTowerLobby_EventScript_SubmittedFeelings end -BattleFrontier_BattleTowerLobby_EventScript_23EFA1:: @ 823EFA1 - msgbox BattleFrontier_BattleTowerLobby_Text_23FA4F, MSGBOX_DEFAULT +BattleFrontier_BattleTowerLobby_EventScript_CanceledEasyChat:: @ 823EFA1 + msgbox BattleFrontier_BattleTowerLobby_Text_ChangedYourMind, MSGBOX_DEFAULT release end -BattleFrontier_BattleTowerLobby_EventScript_23EFAB:: @ 823EFAB - msgbox BattleFrontier_BattleTowerLobby_Text_23FA83, MSGBOX_DEFAULT +BattleFrontier_BattleTowerLobby_EventScript_SubmittedFeelings:: @ 823EFAB + msgbox BattleFrontier_BattleTowerLobby_Text_ThatsHowYouFeel, MSGBOX_DEFAULT release end -BattleFrontier_BattleTowerLobby_EventScript_23EFB5:: @ 823EFB5 - msgbox BattleFrontier_BattleTowerLobby_Text_23FAC0, MSGBOX_NPC +BattleFrontier_BattleTowerLobby_EventScript_Woman:: @ 823EFB5 + msgbox BattleFrontier_BattleTowerLobby_Text_WinsInRowRecorded, MSGBOX_NPC end -BattleFrontier_BattleTowerLobby_EventScript_23EFBE:: @ 823EFBE - msgbox BattleFrontier_BattleTowerLobby_Text_23FB26, MSGBOX_NPC +BattleFrontier_BattleTowerLobby_EventScript_Boy:: @ 823EFBE + msgbox BattleFrontier_BattleTowerLobby_Text_CanLeaveUntilLossOrSevenWins, MSGBOX_NPC end -BattleFrontier_BattleTowerLobby_EventScript_23EFC7:: @ 823EFC7 +BattleFrontier_BattleTowerLobby_EventScript_ShowSinglesResults:: @ 823EFC7 lockall frontier_results FRONTIER_FACILITY_TOWER, FRONTIER_MODE_SINGLES waitbuttonpress @@ -533,7 +516,7 @@ BattleFrontier_BattleTowerLobby_EventScript_23EFC7:: @ 823EFC7 releaseall end -BattleFrontier_BattleTowerLobby_EventScript_23EFE0:: @ 823EFE0 +BattleFrontier_BattleTowerLobby_EventScript_ShowDoublesResults:: @ 823EFE0 lockall frontier_results FRONTIER_FACILITY_TOWER, FRONTIER_MODE_DOUBLES waitbuttonpress @@ -541,7 +524,7 @@ BattleFrontier_BattleTowerLobby_EventScript_23EFE0:: @ 823EFE0 releaseall end -BattleFrontier_BattleTowerLobby_EventScript_23EFF9:: @ 823EFF9 +BattleFrontier_BattleTowerLobby_EventScript_ShowMultisResults:: @ 823EFF9 lockall frontier_results FRONTIER_FACILITY_TOWER, FRONTIER_MODE_MULTIS waitbuttonpress @@ -549,7 +532,7 @@ BattleFrontier_BattleTowerLobby_EventScript_23EFF9:: @ 823EFF9 releaseall end -BattleFrontier_BattleTowerLobby_EventScript_23F012:: @ 823F012 +BattleFrontier_BattleTowerLobby_EventScript_ShowLinkMultisResults:: @ 823F012 lockall frontier_results FRONTIER_FACILITY_TOWER, FRONTIER_MODE_LINK_MULTIS waitbuttonpress @@ -557,127 +540,125 @@ BattleFrontier_BattleTowerLobby_EventScript_23F012:: @ 823F012 releaseall end -BattleFrontier_BattleTowerLobby_EventScript_23F02B:: @ 823F02B +BattleFrontier_BattleTowerLobby_EventScript_NotEnoughValidMons:: @ 823F02B switch VAR_RESULT - case FRONTIER_LVL_50, BattleFrontier_BattleTowerLobby_EventScript_23F046 - case FRONTIER_LVL_OPEN, BattleFrontier_BattleTowerLobby_EventScript_23F08B + case FRONTIER_LVL_50, BattleFrontier_BattleTowerLobby_EventScript_NotEnoughValidMonsLv50 + case FRONTIER_LVL_OPEN, BattleFrontier_BattleTowerLobby_EventScript_NotEnoughValidMonsLvOpen -BattleFrontier_BattleTowerLobby_EventScript_23F046:: @ 823F046 +BattleFrontier_BattleTowerLobby_EventScript_NotEnoughValidMonsLv50:: @ 823F046 switch VAR_FRONTIER_BATTLE_MODE - case FRONTIER_MODE_SINGLES, BattleFrontier_BattleTowerLobby_EventScript_23F06F - case FRONTIER_MODE_DOUBLES, BattleFrontier_BattleTowerLobby_EventScript_23F07D - msgbox BattleFrontier_BattleTowerLobby_Text_24038B, MSGBOX_DEFAULT - goto BattleFrontier_BattleTowerLobby_EventScript_23F0F1 + case FRONTIER_MODE_SINGLES, BattleFrontier_BattleTowerLobby_EventScript_NotEnoughValidMonsLv50Singles + case FRONTIER_MODE_DOUBLES, BattleFrontier_BattleTowerLobby_EventScript_NotEnoughValidMonsLv50Doubles + msgbox BattleFrontier_BattleTowerLobby_Text_NotEnoughValidMonsLv50Multis, MSGBOX_DEFAULT + goto BattleFrontier_BattleTowerLobby_EventScript_EndCancelChallenge end -BattleFrontier_BattleTowerLobby_EventScript_23F06F:: @ 823F06F - msgbox BattleFrontier_BattleTowerLobby_Text_240027, MSGBOX_DEFAULT - goto BattleFrontier_BattleTowerLobby_EventScript_23F0F1 +BattleFrontier_BattleTowerLobby_EventScript_NotEnoughValidMonsLv50Singles:: @ 823F06F + msgbox BattleFrontier_BattleTowerLobby_Text_NotEnoughValidMonsLv50Singles, MSGBOX_DEFAULT + goto BattleFrontier_BattleTowerLobby_EventScript_EndCancelChallenge end -BattleFrontier_BattleTowerLobby_EventScript_23F07D:: @ 823F07D - msgbox BattleFrontier_BattleTowerLobby_Text_2401DB, MSGBOX_DEFAULT - goto BattleFrontier_BattleTowerLobby_EventScript_23F0F1 +BattleFrontier_BattleTowerLobby_EventScript_NotEnoughValidMonsLv50Doubles:: @ 823F07D + msgbox BattleFrontier_BattleTowerLobby_Text_NotEnoughValidMonsLv50Doubles, MSGBOX_DEFAULT + goto BattleFrontier_BattleTowerLobby_EventScript_EndCancelChallenge end -BattleFrontier_BattleTowerLobby_EventScript_23F08B:: @ 823F08B +BattleFrontier_BattleTowerLobby_EventScript_NotEnoughValidMonsLvOpen:: @ 823F08B switch VAR_FRONTIER_BATTLE_MODE - case FRONTIER_MODE_SINGLES, BattleFrontier_BattleTowerLobby_EventScript_23F0B4 - case FRONTIER_MODE_DOUBLES, BattleFrontier_BattleTowerLobby_EventScript_23F0C2 - msgbox BattleFrontier_BattleTowerLobby_Text_24046B, MSGBOX_DEFAULT - goto BattleFrontier_BattleTowerLobby_EventScript_23F0F1 + case FRONTIER_MODE_SINGLES, BattleFrontier_BattleTowerLobby_EventScript_NotEnoughValidMonsLvOpenSingles + case FRONTIER_MODE_DOUBLES, BattleFrontier_BattleTowerLobby_EventScript_NotEnoughValidMonsLvOpenDoubles + msgbox BattleFrontier_BattleTowerLobby_Text_NotEnoughValidMonsLvOpenMultis, MSGBOX_DEFAULT + goto BattleFrontier_BattleTowerLobby_EventScript_EndCancelChallenge end -BattleFrontier_BattleTowerLobby_EventScript_23F0B4:: @ 823F0B4 - msgbox BattleFrontier_BattleTowerLobby_Text_24010B, MSGBOX_DEFAULT - goto BattleFrontier_BattleTowerLobby_EventScript_23F0F1 +BattleFrontier_BattleTowerLobby_EventScript_NotEnoughValidMonsLvOpenSingles:: @ 823F0B4 + msgbox BattleFrontier_BattleTowerLobby_Text_NotEnoughValidMonsLvOpenSingles, MSGBOX_DEFAULT + goto BattleFrontier_BattleTowerLobby_EventScript_EndCancelChallenge end -BattleFrontier_BattleTowerLobby_EventScript_23F0C2:: @ 823F0C2 - msgbox BattleFrontier_BattleTowerLobby_Text_2402BD, MSGBOX_DEFAULT - goto BattleFrontier_BattleTowerLobby_EventScript_23F0F1 +BattleFrontier_BattleTowerLobby_EventScript_NotEnoughValidMonsLvOpenDoubles:: @ 823F0C2 + msgbox BattleFrontier_BattleTowerLobby_Text_NotEnoughValidMonsLvOpenDoubles, MSGBOX_DEFAULT + goto BattleFrontier_BattleTowerLobby_EventScript_EndCancelChallenge end -BattleFrontier_BattleTowerLobby_EventScript_23F0D0:: @ 823F0D0 +BattleFrontier_BattleTowerLobby_EventScript_CancelChallengeSaveFailed:: @ 823F0D0 frontier_set FRONTIER_DATA_CHALLENGE_STATUS @ No status provided, so it relies on VAR_0x8006 being 0 already - goto BattleFrontier_BattleTowerLobby_EventScript_23F0E6 + goto BattleFrontier_BattleTowerLobby_EventScript_CancelChallenge end -BattleFrontier_BattleTowerLobby_EventScript_23F0E3:: @ 823F0E3 +BattleFrontier_BattleTowerLobby_EventScript_LoadPartyCancelChallenge:: @ 823F0E3 special LoadPlayerParty -BattleFrontier_BattleTowerLobby_EventScript_23F0E6:: @ 823F0E6 +BattleFrontier_BattleTowerLobby_EventScript_CancelChallenge:: @ 823F0E6 special CloseLink - msgbox BattleFrontier_BattleTowerLobby_Text_23FD07, MSGBOX_DEFAULT -BattleFrontier_BattleTowerLobby_EventScript_23F0F1:: @ 823F0F1 + msgbox BattleFrontier_BattleTowerLobby_Text_LookForwardToAnotherChallenge, MSGBOX_DEFAULT +BattleFrontier_BattleTowerLobby_EventScript_EndCancelChallenge:: @ 823F0F1 release end -BattleFrontier_BattleTowerLobby_EventScript_23F0F3:: @ 823F0F3 +BattleFrontier_BattleTowerLobby_EventScript_EnterElevator:: @ 823F0F3 special SavePlayerParty setvar VAR_0x8004, FRONTIER_UTIL_FUNC_SET_PARTY_ORDER call BattleFrontier_BattleTowerLobby_EventScript_GetPartySize special CallFrontierUtilFunc setvar VAR_RESULT, 0 - -BattleFrontier_BattleTowerLobby_EventScript_23F108:: @ 823F108 - setvar VAR_0x8004, BATTLE_TOWER_FUNC_12 - special CallBattleTowerFunc +BattleFrontier_BattleTowerLobby_EventScript_WaitForLinkOpponentLoad:: @ 823F108 + tower_loadlinkopponents delay 1 compare VAR_RESULT, 6 - goto_if_ne BattleFrontier_BattleTowerLobby_EventScript_23F108 - call BattleFrontier_BattleTowerLobby_EventScript_23F135 + goto_if_ne BattleFrontier_BattleTowerLobby_EventScript_WaitForLinkOpponentLoad + call BattleFrontier_BattleTowerLobby_EventScript_ShowYouToBattleRoom clearflag FLAG_CANCEL_BATTLE_ROOM_CHALLENGE warp MAP_BATTLE_FRONTIER_BATTLE_TOWER_ELEVATOR, 255, 1, 6 setvar VAR_TEMP_0, 0 waitstate end -BattleFrontier_BattleTowerLobby_EventScript_23F135:: @ 823F135 - call BattleFrontier_BattleTowerLobby_EventScript_23F1A7 +BattleFrontier_BattleTowerLobby_EventScript_ShowYouToBattleRoom:: @ 823F135 + call BattleFrontier_BattleTowerLobby_EventScript_BufferModeText compare VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_LINK_MULTIS - goto_if_eq BattleFrontier_BattleTowerLobby_EventScript_23F152 - msgbox BattleFrontier_BattleTowerLobby_Text_23FE11, MSGBOX_DEFAULT - goto BattleFrontier_BattleTowerLobby_EventScript_23F15B + goto_if_eq BattleFrontier_BattleTowerLobby_EventScript_ShowYouToLinkMultiBattleRoom + msgbox BattleFrontier_BattleTowerLobby_Text_ShowYouToBattleRoom, MSGBOX_DEFAULT + goto BattleFrontier_BattleTowerLobby_EventScript_WalkToElevator -BattleFrontier_BattleTowerLobby_EventScript_23F152:: @ 823F152 - messageautoscroll BattleFrontier_BattleTowerLobby_Text_23FE11 +BattleFrontier_BattleTowerLobby_EventScript_ShowYouToLinkMultiBattleRoom:: @ 823F152 + messageautoscroll BattleFrontier_BattleTowerLobby_Text_ShowYouToBattleRoom waitmessage delay 48 - -BattleFrontier_BattleTowerLobby_EventScript_23F15B:: @ 823F15B +BattleFrontier_BattleTowerLobby_EventScript_WalkToElevator:: @ 823F15B closemessage - call BattleFrontier_BattleTowerLobby_EventScript_23F1E8 - call BattleFrontier_BattleTowerLobby_EventScript_23F22D - applymovement VAR_LAST_TALKED, BattleFrontier_BattleTowerLobby_Movement_23F195 - applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleTowerLobby_Movement_23F195 + call BattleFrontier_BattleTowerLobby_EventScript_SetAttendantTalkedTo + call BattleFrontier_BattleTowerLobby_EventScript_GetDoorXCoord + applymovement VAR_LAST_TALKED, BattleFrontier_BattleTowerLobby_Movement_WalkToElevator + applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleTowerLobby_Movement_WalkToElevator waitmovement 0 opendoor VAR_0x8004, 1 waitdooranim - applymovement VAR_LAST_TALKED, BattleFrontier_BattleTowerLobby_Movement_23F199 - applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleTowerLobby_Movement_23F19C + applymovement VAR_LAST_TALKED, BattleFrontier_BattleTowerLobby_Movement_AttendantEnterElevator + applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleTowerLobby_Movement_PlayerEnterElevator waitmovement 0 closedoor VAR_0x8004, 1 waitdooranim return -BattleFrontier_BattleTowerLobby_Movement_23F195: @ 823F195 +BattleFrontier_BattleTowerLobby_Movement_WalkToElevator: @ 823F195 walk_up walk_up walk_up step_end -BattleFrontier_BattleTowerLobby_Movement_23F199: @ 823F199 +BattleFrontier_BattleTowerLobby_Movement_AttendantEnterElevator: @ 823F199 walk_up set_invisible step_end -BattleFrontier_BattleTowerLobby_Movement_23F19C: @ 823F19C +BattleFrontier_BattleTowerLobby_Movement_PlayerEnterElevator: @ 823F19C walk_up walk_up set_invisible step_end -BattleFrontier_BattleTowerLobby_Movement_23F1A0: @ 823F1A0 +@ Unused +BattleFrontier_BattleTowerLobby_Movement_UnusedEnterElevator: @ 823F1A0 walk_fast_up walk_fast_up walk_fast_up @@ -686,84 +667,84 @@ BattleFrontier_BattleTowerLobby_Movement_23F1A0: @ 823F1A0 set_invisible step_end -BattleFrontier_BattleTowerLobby_EventScript_23F1A7:: @ 823F1A7 +BattleFrontier_BattleTowerLobby_EventScript_BufferModeText:: @ 823F1A7 compare VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_SINGLES - call_if_eq BattleFrontier_BattleTowerLobby_EventScript_23F1D4 + call_if_eq BattleFrontier_BattleTowerLobby_EventScript_BufferTextSingle compare VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_DOUBLES - call_if_eq BattleFrontier_BattleTowerLobby_EventScript_23F1D9 + call_if_eq BattleFrontier_BattleTowerLobby_EventScript_BufferTextDouble compare VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_MULTIS - call_if_eq BattleFrontier_BattleTowerLobby_EventScript_23F1DE + call_if_eq BattleFrontier_BattleTowerLobby_EventScript_BufferTextMulti compare VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_LINK_MULTIS - call_if_eq BattleFrontier_BattleTowerLobby_EventScript_23F1E3 + call_if_eq BattleFrontier_BattleTowerLobby_EventScript_BufferTextLinkMulti return -BattleFrontier_BattleTowerLobby_EventScript_23F1D4:: @ 823F1D4 +BattleFrontier_BattleTowerLobby_EventScript_BufferTextSingle:: @ 823F1D4 bufferstdstring 0, STDSTRING_SINGLE return -BattleFrontier_BattleTowerLobby_EventScript_23F1D9:: @ 823F1D9 +BattleFrontier_BattleTowerLobby_EventScript_BufferTextDouble:: @ 823F1D9 bufferstdstring 0, STDSTRING_DOUBLE return -BattleFrontier_BattleTowerLobby_EventScript_23F1DE:: @ 823F1DE +BattleFrontier_BattleTowerLobby_EventScript_BufferTextMulti:: @ 823F1DE bufferstdstring 0, STDSTRING_MULTI return -BattleFrontier_BattleTowerLobby_EventScript_23F1E3:: @ 823F1E3 +BattleFrontier_BattleTowerLobby_EventScript_BufferTextLinkMulti:: @ 823F1E3 bufferstdstring 0, STDSTRING_MULTI_LINK return -BattleFrontier_BattleTowerLobby_EventScript_23F1E8:: @ 823F1E8 +BattleFrontier_BattleTowerLobby_EventScript_SetAttendantTalkedTo:: @ 823F1E8 compare VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_SINGLES - call_if_eq BattleFrontier_BattleTowerLobby_EventScript_23F215 + call_if_eq BattleFrontier_BattleTowerLobby_EventScript_TalkedToSinglesAttendant compare VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_DOUBLES - call_if_eq BattleFrontier_BattleTowerLobby_EventScript_23F21B + call_if_eq BattleFrontier_BattleTowerLobby_EventScript_TalkedToDoublesAttendant compare VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_MULTIS - call_if_eq BattleFrontier_BattleTowerLobby_EventScript_23F221 + call_if_eq BattleFrontier_BattleTowerLobby_EventScript_TalkedToMultisAttendant compare VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_LINK_MULTIS - call_if_eq BattleFrontier_BattleTowerLobby_EventScript_23F227 + call_if_eq BattleFrontier_BattleTowerLobby_EventScript_TalkedToLinkMultisAttendant return -BattleFrontier_BattleTowerLobby_EventScript_23F215:: @ 823F215 +BattleFrontier_BattleTowerLobby_EventScript_TalkedToSinglesAttendant:: @ 823F215 setvar VAR_LAST_TALKED, 1 return -BattleFrontier_BattleTowerLobby_EventScript_23F21B:: @ 823F21B +BattleFrontier_BattleTowerLobby_EventScript_TalkedToDoublesAttendant:: @ 823F21B setvar VAR_LAST_TALKED, 7 return -BattleFrontier_BattleTowerLobby_EventScript_23F221:: @ 823F221 +BattleFrontier_BattleTowerLobby_EventScript_TalkedToMultisAttendant:: @ 823F221 setvar VAR_LAST_TALKED, 8 return -BattleFrontier_BattleTowerLobby_EventScript_23F227:: @ 823F227 +BattleFrontier_BattleTowerLobby_EventScript_TalkedToLinkMultisAttendant:: @ 823F227 setvar VAR_LAST_TALKED, 9 return -BattleFrontier_BattleTowerLobby_EventScript_23F22D:: @ 823F22D +BattleFrontier_BattleTowerLobby_EventScript_GetDoorXCoord:: @ 823F22D compare VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_SINGLES - call_if_eq BattleFrontier_BattleTowerLobby_EventScript_23F25A + call_if_eq BattleFrontier_BattleTowerLobby_EventScript_GetDoorXCoordSingles compare VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_DOUBLES - call_if_eq BattleFrontier_BattleTowerLobby_EventScript_23F260 + call_if_eq BattleFrontier_BattleTowerLobby_EventScript_GetDoorXCoordDoubles compare VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_MULTIS - call_if_eq BattleFrontier_BattleTowerLobby_EventScript_23F266 + call_if_eq BattleFrontier_BattleTowerLobby_EventScript_GetDoorXCoordMultis compare VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_LINK_MULTIS - call_if_eq BattleFrontier_BattleTowerLobby_EventScript_23F26C + call_if_eq BattleFrontier_BattleTowerLobby_EventScript_GetDoorXCoordLinkMultis return -BattleFrontier_BattleTowerLobby_EventScript_23F25A:: @ 823F25A +BattleFrontier_BattleTowerLobby_EventScript_GetDoorXCoordSingles:: @ 823F25A setvar VAR_0x8004, 6 return -BattleFrontier_BattleTowerLobby_EventScript_23F260:: @ 823F260 +BattleFrontier_BattleTowerLobby_EventScript_GetDoorXCoordDoubles:: @ 823F260 setvar VAR_0x8004, 10 return -BattleFrontier_BattleTowerLobby_EventScript_23F266:: @ 823F266 +BattleFrontier_BattleTowerLobby_EventScript_GetDoorXCoordMultis:: @ 823F266 setvar VAR_0x8004, 14 return -BattleFrontier_BattleTowerLobby_EventScript_23F26C:: @ 823F26C +BattleFrontier_BattleTowerLobby_EventScript_GetDoorXCoordLinkMultis:: @ 823F26C setvar VAR_0x8004, 18 return @@ -798,7 +779,7 @@ BattleFrontier_EventScript_GetLvlMode:: @ 823F2B7 frontier_get FRONTIER_DATA_LVL_MODE return -BattleFrontier_BattleTowerLobby_EventScript_23F2C5:: @ 823F2C5 +BattleFrontier_BattleTowerLobby_EventScript_TryCableLink:: @ 823F2C5 setvar VAR_0x8004, USING_BATTLE_TOWER message gText_PleaseWaitForLink waitmessage @@ -806,70 +787,70 @@ BattleFrontier_BattleTowerLobby_EventScript_23F2C5:: @ 823F2C5 special TryBattleLinkup waitstate compare VAR_RESULT, 1 - goto_if_eq BattleFrontier_BattleTowerLobby_EventScript_23F3AF + goto_if_eq BattleFrontier_BattleTowerLobby_EventScript_CableLinkSuccessful compare VAR_RESULT, 2 goto_if_eq CableClub_EventScript_AbortLinkSomeoneNotReady compare VAR_RESULT, 3 - goto_if_eq BattleFrontier_BattleTowerLobby_EventScript_23F327 + goto_if_eq BattleFrontier_BattleTowerLobby_EventScript_AbortLinkDifferentSelections compare VAR_RESULT, 4 - goto_if_eq BattleFrontier_BattleTowerLobby_EventScript_23F351 + goto_if_eq BattleFrontier_BattleTowerLobby_EventScript_AbortLinkIncorrectNumberOfPlayers compare VAR_RESULT, 5 - goto_if_eq BattleFrontier_BattleTowerLobby_EventScript_23F0E6 + goto_if_eq BattleFrontier_BattleTowerLobby_EventScript_CancelChallenge compare VAR_RESULT, 6 goto_if_eq CableClub_EventScript_AbortLinkConnectionError compare VAR_RESULT, 11 - goto_if_eq BattleFrontier_BattleTowerLobby_EventScript_23F366 + goto_if_eq BattleFrontier_BattleTowerLobby_EventScript_AbortLink end -BattleFrontier_BattleTowerLobby_EventScript_23F327:: @ 823F327 +BattleFrontier_BattleTowerLobby_EventScript_AbortLinkDifferentSelections:: @ 823F327 special CloseLink compare VAR_0x8005, 3 - goto_if_eq BattleFrontier_BattleTowerLobby_EventScript_23F33F + goto_if_eq BattleFrontier_BattleTowerLobby_EventScript_FriendDifferentSelection msgbox Text_PlayersMadeDifferentSelections, MSGBOX_DEFAULT release end -BattleFrontier_BattleTowerLobby_EventScript_23F33F:: @ 823F33F - msgbox BattleFrontier_BattleTowerLobby_Text_2412E8, MSGBOX_DEFAULT - msgbox BattleFrontier_BattleTowerLobby_Text_2413DE, MSGBOX_DEFAULT +BattleFrontier_BattleTowerLobby_EventScript_FriendDifferentSelection:: @ 823F33F + msgbox BattleFrontier_BattleTowerLobby_Text_FriendChoseDifferentLvlMode, MSGBOX_DEFAULT + msgbox BattleFrontier_BattleTowerLobby_Text_ChooseDifferentMonsMatchLvlMode, MSGBOX_DEFAULT release end -BattleFrontier_BattleTowerLobby_EventScript_23F351:: @ 823F351 - msgbox BattleFrontier_BattleTowerLobby_Text_241240, MSGBOX_DEFAULT +BattleFrontier_BattleTowerLobby_EventScript_AbortLinkIncorrectNumberOfPlayers:: @ 823F351 + msgbox BattleFrontier_BattleTowerLobby_Text_LinkMultiOnlyForTwoPlayers, MSGBOX_DEFAULT special CloseLink msgbox CableClub_Text_IncorrectNumberOfParticipants, MSGBOX_DEFAULT release end -BattleFrontier_BattleTowerLobby_EventScript_23F366:: @ 823F366 +BattleFrontier_BattleTowerLobby_EventScript_AbortLink:: @ 823F366 special CloseLink compare VAR_0x8005, 0 - call_if_eq BattleFrontier_BattleTowerLobby_EventScript_23F394 + call_if_eq BattleFrontier_BattleTowerLobby_EventScript_FriendChoseDifferentLvlMode compare VAR_0x8005, 1 - call_if_eq BattleFrontier_BattleTowerLobby_EventScript_23F39D + call_if_eq BattleFrontier_BattleTowerLobby_EventScript_FriendAlsoSelectedMon compare VAR_0x8005, 2 - call_if_eq BattleFrontier_BattleTowerLobby_EventScript_23F3A6 - msgbox BattleFrontier_BattleTowerLobby_Text_2413DE, MSGBOX_DEFAULT + call_if_eq BattleFrontier_BattleTowerLobby_EventScript_FriendAlsoSelectedMons + msgbox BattleFrontier_BattleTowerLobby_Text_ChooseDifferentMonsMatchLvlMode, MSGBOX_DEFAULT release end -BattleFrontier_BattleTowerLobby_EventScript_23F394:: @ 823F394 - msgbox BattleFrontier_BattleTowerLobby_Text_2412E8, MSGBOX_DEFAULT +BattleFrontier_BattleTowerLobby_EventScript_FriendChoseDifferentLvlMode:: @ 823F394 + msgbox BattleFrontier_BattleTowerLobby_Text_FriendChoseDifferentLvlMode, MSGBOX_DEFAULT return -BattleFrontier_BattleTowerLobby_EventScript_23F39D:: @ 823F39D - msgbox BattleFrontier_BattleTowerLobby_Text_241285, MSGBOX_DEFAULT +BattleFrontier_BattleTowerLobby_EventScript_FriendAlsoSelectedMon:: @ 823F39D + msgbox BattleFrontier_BattleTowerLobby_Text_FriendAlsoSelectedMon, MSGBOX_DEFAULT return -BattleFrontier_BattleTowerLobby_EventScript_23F3A6:: @ 823F3A6 - msgbox BattleFrontier_BattleTowerLobby_Text_2412B3, MSGBOX_DEFAULT +BattleFrontier_BattleTowerLobby_EventScript_FriendAlsoSelectedMons:: @ 823F3A6 + msgbox BattleFrontier_BattleTowerLobby_Text_FriendAlsoSelectedMons, MSGBOX_DEFAULT return -BattleFrontier_BattleTowerLobby_EventScript_23F3AF:: @ 823F3AF +BattleFrontier_BattleTowerLobby_EventScript_CableLinkSuccessful:: @ 823F3AF incrementgamestat GAME_STAT_ENTERED_BATTLE_TOWER - setvar VAR_BRAVO_TRAINER_BATTLE_TOWER_ON, 0 - message BattleFrontier_BattleTowerLobby_Text_24144D + setvar VAR_BRAVO_TRAINER_BATTLE_TOWER_ON, FALSE + message BattleFrontier_BattleTowerLobby_Text_SaveGameBeforeShowingIn waitmessage tower_save CHALLENGE_STATUS_SAVING special sub_80A08CC @@ -877,158 +858,161 @@ BattleFrontier_BattleTowerLobby_EventScript_23F3AF:: @ 823F3AF playse SE_SAVE waitse special sub_80B3BC4 - goto BattleFrontier_BattleTowerLobby_EventScript_23F0F3 + goto BattleFrontier_BattleTowerLobby_EventScript_EnterElevator end -BattleFrontier_BattleTowerLobby_EventScript_23F3DA:: @ 823F3DA - msgbox BattleFrontier_BattleTowerLobby_Text_240ED2, MSGBOX_DEFAULT - goto BattleFrontier_BattleTowerLobby_EventScript_23ED86 +BattleFrontier_BattleTowerLobby_EventScript_ExplainLinkMultisChallenge:: @ 823F3DA + msgbox BattleFrontier_BattleTowerLobby_Text_ExplainLinkMultisChallenge, MSGBOX_DEFAULT + goto BattleFrontier_BattleTowerLobby_EventScript_AskEnterLinkMultisChallenge end -BattleFrontier_BattleTowerLobby_EventScript_23F3E8:: @ 823F3E8 +BattleFrontier_BattleTowerLobby_EventScript_TryWirelessLink:: @ 823F3E8 setvar VAR_0x8004, LINK_GROUP_BATTLE_TOWER - goto BattleFrontier_BattleTowerLobby_EventScript_23F3F3 + goto BattleFrontier_BattleTowerLobby_EventScript_ChooseLeader end -BattleFrontier_BattleTowerLobby_EventScript_23F3F3:: @ 823F3F3 +BattleFrontier_BattleTowerLobby_EventScript_ChooseLeader:: @ 823F3F3 message CableClub_Text_ChooseGroupLeaderOfTwo waitmessage multichoice 16, 6, MULTI_LINK_LEADER, 0 switch VAR_RESULT - case 0, BattleFrontier_BattleTowerLobby_EventScript_23F463 - case 1, BattleFrontier_BattleTowerLobby_EventScript_23F430 - case 2, BattleFrontier_BattleTowerLobby_EventScript_23F0E6 - case MULTI_B_PRESSED, BattleFrontier_BattleTowerLobby_EventScript_23F0E6 + case 0, BattleFrontier_BattleTowerLobby_EventScript_TryJoinGroup + case 1, BattleFrontier_BattleTowerLobby_EventScript_TryBecomeLeader + case 2, BattleFrontier_BattleTowerLobby_EventScript_CancelChallenge + case MULTI_B_PRESSED, BattleFrontier_BattleTowerLobby_EventScript_CancelChallenge end -BattleFrontier_BattleTowerLobby_EventScript_23F430:: @ 823F430 +BattleFrontier_BattleTowerLobby_EventScript_TryBecomeLeader:: @ 823F430 call CableClub_EventScript_TryBecomeLinkLeader compare VAR_RESULT, 1 - goto_if_eq BattleFrontier_BattleTowerLobby_EventScript_23F496 + goto_if_eq BattleFrontier_BattleTowerLobby_EventScript_WirelessLinkSuccessful compare VAR_RESULT, 5 - goto_if_eq BattleFrontier_BattleTowerLobby_EventScript_23F3F3 + goto_if_eq BattleFrontier_BattleTowerLobby_EventScript_ChooseLeader compare VAR_RESULT, 8 - goto_if_eq BattleFrontier_BattleTowerLobby_EventScript_23F430 + goto_if_eq BattleFrontier_BattleTowerLobby_EventScript_TryBecomeLeader compare VAR_RESULT, 11 - goto_if_eq BattleFrontier_BattleTowerLobby_EventScript_23F366 + goto_if_eq BattleFrontier_BattleTowerLobby_EventScript_AbortLink release return -BattleFrontier_BattleTowerLobby_EventScript_23F463:: @ 823F463 +BattleFrontier_BattleTowerLobby_EventScript_TryJoinGroup:: @ 823F463 call CableClub_EventScript_TryJoinLinkGroup compare VAR_RESULT, 1 - goto_if_eq BattleFrontier_BattleTowerLobby_EventScript_23F496 + goto_if_eq BattleFrontier_BattleTowerLobby_EventScript_WirelessLinkSuccessful compare VAR_RESULT, 5 - goto_if_eq BattleFrontier_BattleTowerLobby_EventScript_23F3F3 + goto_if_eq BattleFrontier_BattleTowerLobby_EventScript_ChooseLeader compare VAR_RESULT, 8 - goto_if_eq BattleFrontier_BattleTowerLobby_EventScript_23F463 + goto_if_eq BattleFrontier_BattleTowerLobby_EventScript_TryJoinGroup compare VAR_RESULT, 11 - goto_if_eq BattleFrontier_BattleTowerLobby_EventScript_23F366 + goto_if_eq BattleFrontier_BattleTowerLobby_EventScript_AbortLink release return -BattleFrontier_BattleTowerLobby_EventScript_23F496:: @ 823F496 +BattleFrontier_BattleTowerLobby_EventScript_WirelessLinkSuccessful:: @ 823F496 incrementgamestat GAME_STAT_ENTERED_BATTLE_TOWER - setvar VAR_BRAVO_TRAINER_BATTLE_TOWER_ON, 0 - message BattleFrontier_BattleTowerLobby_Text_24144D + setvar VAR_BRAVO_TRAINER_BATTLE_TOWER_ON, FALSE + message BattleFrontier_BattleTowerLobby_Text_SaveGameBeforeShowingIn waitmessage tower_save CHALLENGE_STATUS_SAVING special sub_80A08CC waitstate playse SE_SAVE waitse - goto BattleFrontier_BattleTowerLobby_EventScript_23F0F3 + goto BattleFrontier_BattleTowerLobby_EventScript_EnterElevator end -BattleFrontier_BattleTowerLobby_EventScript_23F4BE:: @ 823F4BE +BattleFrontier_BattleTowerLobby_EventScript_RulesBoard:: @ 823F4BE lockall - msgbox BattleFrontier_BattleTowerLobby_Text_241540, MSGBOX_DEFAULT - goto BattleFrontier_BattleTowerLobby_EventScript_23F4CD + msgbox BattleFrontier_BattleTowerLobby_Text_RulesAreListed, MSGBOX_DEFAULT + goto BattleFrontier_BattleTowerLobby_EventScript_ReadRulesBoard end -BattleFrontier_BattleTowerLobby_EventScript_23F4CD:: @ 823F4CD - message BattleFrontier_BattleTowerLobby_Text_241563 +BattleFrontier_BattleTowerLobby_EventScript_ReadRulesBoard:: @ 823F4CD + message BattleFrontier_BattleTowerLobby_Text_ReadWhichHeading waitmessage multichoice 17, 2, MULTI_BATTLE_TOWER_RULES, 0 switch VAR_RESULT - case 0, BattleFrontier_BattleTowerLobby_EventScript_23F520 - case 1, BattleFrontier_BattleTowerLobby_EventScript_23F52E - case 2, BattleFrontier_BattleTowerLobby_EventScript_23F53C - case 3, BattleFrontier_BattleTowerLobby_EventScript_23F54A - case 4, BattleFrontier_BattleTowerLobby_EventScript_23F558 - case MULTI_B_PRESSED, BattleFrontier_BattleTowerLobby_EventScript_23F558 + case 0, BattleFrontier_BattleTowerLobby_EventScript_RulesTower + case 1, BattleFrontier_BattleTowerLobby_EventScript_RulesMons + case 2, BattleFrontier_BattleTowerLobby_EventScript_RulesSalon + case 3, BattleFrontier_BattleTowerLobby_EventScript_RulesMultiLink + case 4, BattleFrontier_BattleTowerLobby_EventScript_ExitRules + case MULTI_B_PRESSED, BattleFrontier_BattleTowerLobby_EventScript_ExitRules end -BattleFrontier_BattleTowerLobby_EventScript_23F520:: @ 823F520 - msgbox BattleFrontier_BattleTowerLobby_Text_241586, MSGBOX_DEFAULT - goto BattleFrontier_BattleTowerLobby_EventScript_23F4CD +BattleFrontier_BattleTowerLobby_EventScript_RulesTower:: @ 823F520 + msgbox BattleFrontier_BattleTowerLobby_Text_ExplainTowerRules, MSGBOX_DEFAULT + goto BattleFrontier_BattleTowerLobby_EventScript_ReadRulesBoard end -BattleFrontier_BattleTowerLobby_EventScript_23F52E:: @ 823F52E - msgbox BattleFrontier_BattleTowerLobby_Text_241693, MSGBOX_DEFAULT - goto BattleFrontier_BattleTowerLobby_EventScript_23F4CD +BattleFrontier_BattleTowerLobby_EventScript_RulesMons:: @ 823F52E + msgbox BattleFrontier_BattleTowerLobby_Text_ExplainMonRules, MSGBOX_DEFAULT + goto BattleFrontier_BattleTowerLobby_EventScript_ReadRulesBoard end -BattleFrontier_BattleTowerLobby_EventScript_23F53C:: @ 823F53C - msgbox BattleFrontier_BattleTowerLobby_Text_241777, MSGBOX_DEFAULT - goto BattleFrontier_BattleTowerLobby_EventScript_23F4CD +BattleFrontier_BattleTowerLobby_EventScript_RulesSalon:: @ 823F53C + msgbox BattleFrontier_BattleTowerLobby_Text_ExplainSalonRules, MSGBOX_DEFAULT + goto BattleFrontier_BattleTowerLobby_EventScript_ReadRulesBoard end -BattleFrontier_BattleTowerLobby_EventScript_23F54A:: @ 823F54A - msgbox BattleFrontier_BattleTowerLobby_Text_24187E, MSGBOX_DEFAULT - goto BattleFrontier_BattleTowerLobby_EventScript_23F4CD +BattleFrontier_BattleTowerLobby_EventScript_RulesMultiLink:: @ 823F54A + msgbox BattleFrontier_BattleTowerLobby_Text_ExplainMultiLinkRules, MSGBOX_DEFAULT + goto BattleFrontier_BattleTowerLobby_EventScript_ReadRulesBoard end -BattleFrontier_BattleTowerLobby_EventScript_23F558:: @ 823F558 +BattleFrontier_BattleTowerLobby_EventScript_ExitRules:: @ 823F558 releaseall end -BattleFrontier_BattleTowerLobby_EventScript_23F55A: @ 823F55A +@ Unused +BattleFrontier_BattleTowerLobby_EventScript_DirectYouToBattleRoom: @ 823F55A .string "I'll direct you to your BATTLE ROOM now.$" -BattleFrontier_BattleTowerLobby_Text_23F583: @ 823F583 +BattleFrontier_BattleTowerLobby_Text_DidntSaveBeforeQuitting: @ 823F583 .string "Excuse me!\p" .string "You didn't save before you quit your\n" .string "challenge last time.\p" .string "Because of that, your challenge so far\n" .string "has been disqualified. Sorry!$" -BattleFrontier_BattleTowerLobby_Text_23F60D: @ 823F60D +BattleFrontier_BattleTowerLobby_Text_CongratsBeatenSeven: @ 823F60D .string "Congratulations!\n" .string "You've beaten all seven TRAINERS!\p" .string "$" -BattleFrontier_BattleTowerLobby_Text_23F641: @ 823F641 +@ Unused +BattleFrontier_BattleTowerLobby_Text_EarnedFabulousPrize: @ 823F641 .string "For beating seven TRAINERS in a row,\n" .string "you have earned this fabulous prize!\p" .string "$" -SlateportCity_BattleTentLobby_Text_23F68C: @ 823F68C +BattleFrontier_BattleTowerLobby_Text_ReceivedPrize: @ 823F68C .string "{PLAYER} received the prize\n" .string "{STR_VAR_1}.$" -SlateportCity_BattleTentLobby_Text_23F6A6: @ 823F6A6 +@ Unused +SlateportCity_BattleTentLobby_Text_BagAppearsToBeFull: @ 823F6A6 .string "Oh, your BAG appears to be full.\p" .string "Please make room in your BAG, then come\n" .string "see me.$" -BattleFrontier_BattleTowerLobby_Text_23F6F7: @ 823F6F7 +BattleFrontier_BattleTowerLobby_Text_ThankYouForPlaying: @ 823F6F7 .string "Thank you for playing!\p" .string "$" -BattleFrontier_BattleTowerLobby_Text_23F70F: @ 823F70F +BattleFrontier_BattleTowerLobby_Text_RecordWillBeSaved: @ 823F70F .string "Your record will be saved.\n" .string "Please wait.$" -BattleFrontier_BattleTowerLobby_Text_23F737: @ 823F737 +BattleFrontier_BattleTowerLobby_Text_WeveBeenWaitingForYou: @ 823F737 .string "We've been waiting for you!\p" .string "$" -BattleFrontier_BattleTowerLobby_Text_23F754: @ 823F754 +BattleFrontier_BattleTowerLobby_Text_ProgressWillBeSaved: @ 823F754 .string "Before entering a BATTLE ROOM, your\n" .string "progress will be saved. Please wait.$" -BattleFrontier_BattleTowerLobby_Text_23F79D: @ 823F79D +BattleFrontier_BattleTowerLobby_Text_AboutToFace50thTrainer: @ 823F79D .string "You're finally about to face the\n" .string "50th TRAINER.\p" .string "From here on, every time you beat seven\n" @@ -1036,61 +1020,62 @@ BattleFrontier_BattleTowerLobby_Text_23F79D: @ 823F79D .string "receive a commemorative RIBBON.\p" .string "Good luck!$" -BattleFrontier_BattleTowerLobby_Text_23F844: @ 823F844 +BattleFrontier_BattleTowerLobby_Text_HereAreSomeRibbons: @ 823F844 .string "Here are some RIBBONS for beating\n" .string "seven tough TRAINERS in a row.\p" .string "{PLAYER} received some RIBBONS!$" -BattleFrontier_BattleTowerLobby_Text_23F89F: @ 823F89F +BattleFrontier_BattleTowerLobby_Text_PutRibbonOnMons: @ 823F89F .string "{PLAYER} put the RIBBONS on\n" .string "the challenger POKéMON.$" -BattleFrontier_BattleTowerLobby_Text_23F8CD: @ 823F8CD +BattleFrontier_BattleTowerLobby_Text_DescribeFeelingsAboutBattleTower: @ 823F8CD .string "Excuse me, do you have a moment?\p" .string "Can you describe your feelings when\n" .string "you're about to begin a BATTLE TOWER\l" .string "match, or when you've either won or\l" .string "lost a match?$" -BattleFrontier_BattleTowerLobby_Text_23F969: @ 823F969 +BattleFrontier_BattleTowerLobby_Text_FeelWhatWhenYouBegin: @ 823F969 .string "Okay, what are your feelings when\n" .string "you're about to begin a match?$" -BattleFrontier_BattleTowerLobby_Text_23F9AA: @ 823F9AA +BattleFrontier_BattleTowerLobby_Text_FeelWhatWhenYouveWon: @ 823F9AA .string "What do you feel when you've won\n" .string "a match?$" -BattleFrontier_BattleTowerLobby_Text_23F9D4: @ 823F9D4 +BattleFrontier_BattleTowerLobby_Text_FeelWhatWhenYouveLost: @ 823F9D4 .string "Can I hear about your feelings when\n" .string "you have lost a match?$" -BattleFrontier_BattleTowerLobby_Text_23FA0F: @ 823FA0F +BattleFrontier_BattleTowerLobby_Text_DontThinkMuchAboutIt: @ 823FA0F .string "Oh, so you don't think much about it?\n" .string "You're one cool customer.$" -BattleFrontier_BattleTowerLobby_Text_23FA4F: @ 823FA4F +BattleFrontier_BattleTowerLobby_Text_ChangedYourMind: @ 823FA4F .string "Hunh? You changed your mind?\n" .string "I guess you're fickle.$" -BattleFrontier_BattleTowerLobby_Text_23FA83: @ 823FA83 +BattleFrontier_BattleTowerLobby_Text_ThatsHowYouFeel: @ 823FA83 .string "Okay, so that's how you feel?\n" .string "That's quite original.\p" .string "Thanks!$" -BattleFrontier_BattleTowerLobby_Text_23FAC0: @ 823FAC0 +BattleFrontier_BattleTowerLobby_Text_WinsInRowRecorded: @ 823FAC0 .string "The number of matches you win in a row\n" .string "is recorded.\p" .string "I'd better not get beaten in\n" .string "an embarrassing way!$" -BattleFrontier_BattleTowerLobby_Text_23FB26: @ 823FB26 +BattleFrontier_BattleTowerLobby_Text_CanLeaveUntilLossOrSevenWins: @ 823FB26 .string "Once you've entered the BATTLE TOWER,\n" .string "you can't leave until you either lose\l" .string "or you beat seven TRAINERS in a row.\p" .string "You'd best be certain that you're up\n" .string "to the challenge.$" -BattleFrontier_BattleTowerLobby_Text_23FBCE: @ 823FBCE +@ Unused +BattleFrontier_BattleTowerLobby_Text_DoubleBattleRoomConstruction: @ 823FBCE .string "Welcome to the BATTLE TOWER\n" .string "DOUBLE BATTLE CORNER!\p" .string "Unfortunately, the BATTLE ROOMS\n" @@ -1098,7 +1083,8 @@ BattleFrontier_BattleTowerLobby_Text_23FBCE: @ 823FBCE .string "Please come back when the work\n" .string "is completed.$" -BattleFrontier_BattleTowerLobby_Text_23FC6B: @ 823FC6B +@ Unused +BattleFrontier_BattleTowerLobby_Text_MultiBattleRoomConstruction: @ 823FC6B .string "Welcome to the BATTLE TOWER\n" .string "MULTI BATTLE CORNER!\p" .string "Unfortunately, the BATTLE ROOMS\n" @@ -1106,32 +1092,34 @@ BattleFrontier_BattleTowerLobby_Text_23FC6B: @ 823FC6B .string "Please come back when the work\n" .string "is completed.$" -BattleFrontier_BattleTowerLobby_Text_23FD07: @ 823FD07 +BattleFrontier_BattleTowerLobby_Text_LookForwardToAnotherChallenge: @ 823FD07 .string "We look forward to seeing you on\n" .string "another challenge!$" -BattleFrontier_BattleTowerLobby_Text_23FD3B: @ 823FD3B +BattleFrontier_BattleTowerLobby_Text_WhichLevelMode: @ 823FD3B .string "The BATTLE ROOM offers two levels\n" .string "of challenge, Level 50 and Open Level.\l" .string "Which is your choice?$" -BattleFrontier_BattleTowerLobby_Text_23FD9A: @ 823FD9A +@ Unused +BattleFrontier_BattleTowerLobby_Text_PleaseSelectMons: @ 823FD9A .string "Please select the POKéMON you wish\n" .string "to enter.$" -BattleFrontier_BattleTowerLobby_Text_23FDC7: @ 823FDC7 +BattleFrontier_BattleTowerLobby_Text_OkayToSaveBeforeEntering: @ 823FDC7 .string "Before entering a BATTLE ROOM, your\n" .string "progress must be saved. Is that okay?$" -BattleFrontier_BattleTowerLobby_Text_23FE11: @ 823FE11 +BattleFrontier_BattleTowerLobby_Text_ShowYouToBattleRoom: @ 823FE11 .string "I will now show you to the\n" .string "{STR_VAR_1} BATTLE ROOM.$" -BattleFrontier_BattleTowerLobby_Text_23FE3C: @ 823FE3C +BattleFrontier_BattleTowerLobby_Text_RecordLastMatch: @ 823FE3C .string "Shall I record your last BATTLE TOWER\n" .string "match on your FRONTIER PASS?$" -BattleFrontier_BattleTowerLobby_Text_23FE7F: @ 823FE7F +@ Unused +BattleFrontier_BattleTowerLobby_Text_NotEnoughValidMonsLv50: @ 823FE7F .string "Excuse me!\p" .string "You don't have {STR_VAR_2} eligible POKéMON.\p" .string "You must have {STR_VAR_2} different POKéMON\n" @@ -1141,7 +1129,8 @@ BattleFrontier_BattleTowerLobby_Text_23FE7F: @ 823FE7F .string "EGGS{STR_VAR_1} ineligible.\p" .string "Please come see me when you are ready.$" -BattleFrontier_BattleTowerLobby_Text_23FF5D: @ 823FF5D +@ Unused +BattleFrontier_BattleTowerLobby_Text_NotEnoughValidMonsLvOpen: @ 823FF5D .string "Excuse me!\p" .string "You don't have {STR_VAR_2} eligible POKéMON.\p" .string "You must have {STR_VAR_2} different POKéMON\n" @@ -1151,7 +1140,7 @@ BattleFrontier_BattleTowerLobby_Text_23FF5D: @ 823FF5D .string "EGGS{STR_VAR_1} ineligible.\p" .string "Please come see me when you are ready.$" -BattleFrontier_BattleTowerLobby_Text_240027: @ 8240027 +BattleFrontier_BattleTowerLobby_Text_NotEnoughValidMonsLv50Singles: @ 8240027 .string "Excuse me!\p" .string "You don't have three eligible POKéMON.\p" .string "You must have three different POKéMON\n" @@ -1161,7 +1150,7 @@ BattleFrontier_BattleTowerLobby_Text_240027: @ 8240027 .string "EGGS{STR_VAR_1} ineligible.\p" .string "Please come see me when you are ready.$" -BattleFrontier_BattleTowerLobby_Text_24010B: @ 824010B +BattleFrontier_BattleTowerLobby_Text_NotEnoughValidMonsLvOpenSingles: @ 824010B .string "Excuse me!\p" .string "You don't have three eligible POKéMON.\p" .string "You must have three different POKéMON\n" @@ -1171,7 +1160,7 @@ BattleFrontier_BattleTowerLobby_Text_24010B: @ 824010B .string "EGGS{STR_VAR_1} ineligible.\p" .string "Please come see me when you are ready.$" -BattleFrontier_BattleTowerLobby_Text_2401DB: @ 82401DB +BattleFrontier_BattleTowerLobby_Text_NotEnoughValidMonsLv50Doubles: @ 82401DB .string "Excuse me!\p" .string "You don't have four eligible POKéMON.\p" .string "You must have four different POKéMON\n" @@ -1181,7 +1170,7 @@ BattleFrontier_BattleTowerLobby_Text_2401DB: @ 82401DB .string "EGGS{STR_VAR_1} ineligible.\p" .string "Please come see me when you are ready.$" -BattleFrontier_BattleTowerLobby_Text_2402BD: @ 82402BD +BattleFrontier_BattleTowerLobby_Text_NotEnoughValidMonsLvOpenDoubles: @ 82402BD .string "Excuse me!\p" .string "You don't have four eligible POKéMON.\p" .string "You must have four different POKéMON\n" @@ -1191,7 +1180,7 @@ BattleFrontier_BattleTowerLobby_Text_2402BD: @ 82402BD .string "EGGS{STR_VAR_1} ineligible.\p" .string "Please come see me when you are ready.$" -BattleFrontier_BattleTowerLobby_Text_24038B: @ 824038B +BattleFrontier_BattleTowerLobby_Text_NotEnoughValidMonsLv50Multis: @ 824038B .string "Excuse me!\p" .string "You don't have two eligible POKéMON.\p" .string "You must have two different POKéMON\n" @@ -1201,7 +1190,7 @@ BattleFrontier_BattleTowerLobby_Text_24038B: @ 824038B .string "EGGS{STR_VAR_1} ineligible.\p" .string "Please come see me when you are ready.$" -BattleFrontier_BattleTowerLobby_Text_24046B: @ 824046B +BattleFrontier_BattleTowerLobby_Text_NotEnoughValidMonsLvOpenMultis: @ 824046B .string "Excuse me!\p" .string "You don't have two eligible POKéMON.\p" .string "You must have two different POKéMON\n" @@ -1211,18 +1200,18 @@ BattleFrontier_BattleTowerLobby_Text_24046B: @ 824046B .string "EGGS{STR_VAR_1} ineligible.\p" .string "Please come see me when you are ready.$" -BattleFrontier_BattleTowerLobby_Text_240537: @ 8240537 +BattleFrontier_BattleTowerLobby_Text_WelcomSingleBattle: @ 8240537 .string "Where the talents of TRAINERS\n" .string "are put to the test!\p" .string "Welcome to the BATTLE TOWER!\p" .string "I am your guide to the SINGLE\n" .string "BATTLE ROOMS.$" -BattleFrontier_BattleTowerLobby_Text_2405B3: @ 82405B3 +BattleFrontier_BattleTowerLobby_Text_TakeSinglesChallenge: @ 82405B3 .string "Would you like to take the SINGLE\n" .string "BATTLE ROOM challenge?$" -BattleFrontier_BattleTowerLobby_Text_2405EC: @ 82405EC +BattleFrontier_BattleTowerLobby_Text_ExplainSinglesChallenge: @ 82405EC .string "The BATTLE TOWER's SINGLE BATTLE\n" .string "ROOMS are facilities for conducting\l" .string "SINGLE BATTLES with three POKéMON.\p" @@ -1237,22 +1226,22 @@ BattleFrontier_BattleTowerLobby_Text_2405EC: @ 82405EC .string "If you don't save before interrupting,\n" .string "you will be disqualified.$" -BattleFrontier_BattleTowerLobby_Text_2407A6: @ 82407A6 +BattleFrontier_BattleTowerLobby_Text_SelectThreeMons: @ 82407A6 .string "Now please select the three POKéMON\n" .string "that are to be entered.$" -BattleFrontier_BattleTowerLobby_Text_2407E2: @ 82407E2 +BattleFrontier_BattleTowerLobby_Text_WelcomeDoubleBattle: @ 82407E2 .string "Where the talents of TRAINERS\n" .string "are put to the test!\p" .string "Welcome to the BATTLE TOWER!\p" .string "I am your guide to the DOUBLE\n" .string "BATTLE ROOMS.$" -BattleFrontier_BattleTowerLobby_Text_24085E: @ 824085E +BattleFrontier_BattleTowerLobby_Text_TakeDoublesChallenge: @ 824085E .string "Would you like to take the DOUBLE\n" .string "BATTLE ROOM challenge?$" -BattleFrontier_BattleTowerLobby_Text_240897: @ 8240897 +BattleFrontier_BattleTowerLobby_Text_ExplainDoublesChallenge: @ 8240897 .string "The BATTLE TOWER's DOUBLE BATTLE\n" .string "ROOMS are facilities for conducting\l" .string "DOUBLE BATTLES with four POKéMON.\p" @@ -1267,22 +1256,22 @@ BattleFrontier_BattleTowerLobby_Text_240897: @ 8240897 .string "If you don't save before interrupting,\n" .string "you will be disqualified.$" -BattleFrontier_BattleTowerLobby_Text_240A50: @ 8240A50 +BattleFrontier_BattleTowerLobby_Text_PleaseSelectFourMons: @ 8240A50 .string "Now please select the four POKéMON\n" .string "that are to be entered.$" -BattleFrontier_BattleTowerLobby_Text_240A8B: @ 8240A8B +BattleFrontier_BattleTowerLobby_Text_WelcomeMultiBattle: @ 8240A8B .string "Where the talents of TRAINERS\n" .string "are put to the test!\p" .string "Welcome to the BATTLE TOWER!\p" .string "I am your guide to the MULTI\n" .string "BATTLE ROOMS.$" -BattleFrontier_BattleTowerLobby_Text_240B06: @ 8240B06 +BattleFrontier_BattleTowerLobby_Text_TakeMultisChallenge: @ 8240B06 .string "Would you like to take the MULTI\n" .string "BATTLE ROOM challenge?$" -BattleFrontier_BattleTowerLobby_Text_240B3E: @ 8240B3E +BattleFrontier_BattleTowerLobby_Text_ExplainMultisChallenge: @ 8240B3E .string "The BATTLE TOWER's MULTI BATTLE\n" .string "ROOMS are facilities for conducting\l" .string "MULTI BATTLES.\p" @@ -1305,22 +1294,22 @@ BattleFrontier_BattleTowerLobby_Text_240B3E: @ 8240B3E .string "If you don't save before interrupting,\n" .string "you will be disqualified.$" -BattleFrontier_BattleTowerLobby_Text_240DDB: @ 8240DDB +BattleFrontier_BattleTowerLobby_Text_PleaseSelectTwoMons: @ 8240DDB .string "Now please select the two POKéMON\n" .string "that are to be entered.$" -BattleFrontier_BattleTowerLobby_Text_240E15: @ 8240E15 +BattleFrontier_BattleTowerLobby_Text_WelcomeLinkMultiBattle: @ 8240E15 .string "Where the talents of TRAINERS\n" .string "are put to the test!\p" .string "Welcome to the BATTLE TOWER!\p" .string "I am your guide to the LINK MULTI\n" .string "BATTLE ROOMS.$" -BattleFrontier_BattleTowerLobby_Text_240E95: @ 8240E95 +BattleFrontier_BattleTowerLobby_Text_TakeLinkMultisChallenge: @ 8240E95 .string "Would you like to take the LINK MULTI\n" .string "BATTLE ROOM challenge?$" -BattleFrontier_BattleTowerLobby_Text_240ED2: @ 8240ED2 +BattleFrontier_BattleTowerLobby_Text_ExplainLinkMultisChallenge: @ 8240ED2 .string "The BATTLE TOWER's MULTI BATTLE\n" .string "ROOMS are facilities for conducting\l" .string "MULTI BATTLES with a friend.\p" @@ -1341,73 +1330,76 @@ BattleFrontier_BattleTowerLobby_Text_240ED2: @ 8240ED2 .string "Once you start, you must battle seven\n" .string "MULTI BATTLES in a row nonstop.$" -BattleFrontier_BattleTowerLobby_Text_24115E: @ 824115E +BattleFrontier_BattleTowerLobby_Text_PleaseSelectTwoMons2: @ 824115E .string "Now please select the two POKéMON\n" .string "that are to be entered.$" -BattleFrontier_BattleTowerLobby_Text_241198: @ 8241198 +@ Unused +BattleFrontier_BattleTowerLobby_Text_ChoseSameMonAsFriend: @ 8241198 .string "You have chosen the same kind of\n" .string "POKéMON as your friend.\p" .string "Please choose two POKéMON different\n" .string "from your friend's, match the level\l" .string "you wish to enter, and register again.$" -BattleFrontier_BattleTowerLobby_Text_241240: @ 8241240 +BattleFrontier_BattleTowerLobby_Text_LinkMultiOnlyForTwoPlayers: @ 8241240 .string "The LINK MULTI BATTLE ROOM challenge\n" .string "is only for two linked players.$" -BattleFrontier_BattleTowerLobby_Text_241285: @ 8241285 +BattleFrontier_BattleTowerLobby_Text_FriendAlsoSelectedMon: @ 8241285 .string "Your friend has also selected\n" .string "the POKéMON {STR_VAR_1}.$" -BattleFrontier_BattleTowerLobby_Text_2412B3: @ 82412B3 +BattleFrontier_BattleTowerLobby_Text_FriendAlsoSelectedMons: @ 82412B3 .string "Your friend has also selected the\n" .string "POKéMON {STR_VAR_1} and {STR_VAR_2}.$" -BattleFrontier_BattleTowerLobby_Text_2412E8: @ 82412E8 +BattleFrontier_BattleTowerLobby_Text_FriendChoseDifferentLvlMode: @ 82412E8 .string "Your friend has chosen a different\n" .string "battle level.$" -BattleFrontier_BattleTowerLobby_Text_241319: @ 8241319 +@ Unused +BattleFrontier_BattleTowerLobby_Text_FriendChoseDifferentLvlModeSameMon: @ 8241319 .string "Your friend has chosen a different\n" .string "battle level.\p" .string "Your friend has also selected\n" .string "the POKéMON {STR_VAR_1}.$" -BattleFrontier_BattleTowerLobby_Text_241378: @ 8241378 +@ Unused +BattleFrontier_BattleTowerLobby_Text_FriendChoseDifferentLvlModeSameMons: @ 8241378 .string "Your friend has chosen a different\n" .string "battle level.\p" .string "Your friend has also selected the\n" .string "POKéMON {STR_VAR_1} and {STR_VAR_2}.$" -BattleFrontier_BattleTowerLobby_Text_2413DE: @ 82413DE +BattleFrontier_BattleTowerLobby_Text_ChooseDifferentMonsMatchLvlMode: @ 82413DE .string "Please choose two POKéMON different\n" .string "from your friend's, match the level\l" .string "you wish to enter, and register again.$" -BattleFrontier_BattleTowerLobby_Text_24144D: @ 824144D +BattleFrontier_BattleTowerLobby_Text_SaveGameBeforeShowingIn: @ 824144D .string "I will save the game before\n" .string "showing you in. Please wait.$" -BattleFrontier_BattleTowerLobby_Text_241486: @ 8241486 +BattleFrontier_BattleTowerLobby_Text_CongratsDefeatedMaiden: @ 8241486 .string "Congratulations!\n" .string "You have defeated the SALON MAIDEN\l" .string "and swept seven TRAINERS!$" -BattleFrontier_BattleTowerLobby_Text_2414D4: @ 82414D4 +BattleFrontier_BattleTowerLobby_Text_AwardYouTheseBattlePoints: @ 82414D4 .string "In recognition of your infinite talent,\n" .string "we award you these Battle Point(s).$" BattleFrontier_Text_ObtainedXBattlePoints: @ 8241520 .string "{PLAYER} obtained {STR_VAR_1} Battle Point(s).$" -BattleFrontier_BattleTowerLobby_Text_241540: @ 8241540 +BattleFrontier_BattleTowerLobby_Text_RulesAreListed: @ 8241540 .string "The BATTLE TOWER rules are listed.$" -BattleFrontier_BattleTowerLobby_Text_241563: @ 8241563 +BattleFrontier_BattleTowerLobby_Text_ReadWhichHeading: @ 8241563 .string "Which heading do you want to read?$" -BattleFrontier_BattleTowerLobby_Text_241586: @ 8241586 +BattleFrontier_BattleTowerLobby_Text_ExplainTowerRules: @ 8241586 .string "The BATTLE TOWER is a facility where\n" .string "four types of battles are waged--\l" .string "SINGLE BATTLE, DOUBLE BATTLE, MULTI\l" @@ -1417,7 +1409,7 @@ BattleFrontier_BattleTowerLobby_Text_241586: @ 8241586 .string "Please speak with a guide offering\n" .string "the type of battle you wish to enter.$" -BattleFrontier_BattleTowerLobby_Text_241693: @ 8241693 +BattleFrontier_BattleTowerLobby_Text_ExplainMonRules: @ 8241693 .string "Depending on the BATTLE ROOM you are\n" .string "entering, you will be required to take\l" .string "a certain number of POKéMON.\p" @@ -1426,7 +1418,7 @@ BattleFrontier_BattleTowerLobby_Text_241693: @ 8241693 .string "The DOUBLE BATTLE mode requires four,\n" .string "and the MULTI modes both require two.$" -BattleFrontier_BattleTowerLobby_Text_241777: @ 8241777 +BattleFrontier_BattleTowerLobby_Text_ExplainSalonRules: @ 8241777 .string "The BATTLE SALON is where you must\n" .string "find a partner to form a tag team for\l" .string "the MULTI BATTLE ROOM challenge.\p" @@ -1436,7 +1428,7 @@ BattleFrontier_BattleTowerLobby_Text_241777: @ 8241777 .string "You may choose a new tag partner\n" .string "after winning seven straight matches.$" -BattleFrontier_BattleTowerLobby_Text_24187E: @ 824187E +BattleFrontier_BattleTowerLobby_Text_ExplainMultiLinkRules: @ 824187E .string "The LINK MULTI BATTLE Mode is for two\n" .string "friends to mount a challenge together.\p" .string "You and your friend must be linked with\n" diff --git a/data/maps/BattleFrontier_BattleTowerMultiBattleRoom/map.json b/data/maps/BattleFrontier_BattleTowerMultiBattleRoom/map.json index f3b0807320..842da9c00e 100644 --- a/data/maps/BattleFrontier_BattleTowerMultiBattleRoom/map.json +++ b/data/maps/BattleFrontier_BattleTowerMultiBattleRoom/map.json @@ -1,7 +1,7 @@ { "id": "MAP_BATTLE_FRONTIER_BATTLE_TOWER_MULTI_BATTLE_ROOM", "name": "BattleFrontier_BattleTowerMultiBattleRoom", - "layout": "LAYOUT_BATTLE_FRONTIER_BATTLE_TOWER_MULTI_BATTLE_ROOM", + "layout": "LAYOUT_BATTLE_FRONTIER_BATTLE_TOWER_BATTLE_ROOM", "music": "MUS_SATTOWER", "region_map_section": "MAPSEC_BATTLE_FRONTIER", "requires_flash": false, @@ -9,127 +9,88 @@ "map_type": "MAP_TYPE_INDOOR", "allow_bike": false, "allow_escape_rope": false, - "allow_running": true, + "allow_running": false, "show_map_name": false, - "battle_scene": "MAP_BATTLE_SCENE_NORMAL", + "battle_scene": "MAP_BATTLE_SCENE_FRONTIER", "connections": null, "object_events": [ { - "graphics_id": "EVENT_OBJ_GFX_TEALA", - "x": 11, - "y": 2, + "graphics_id": "EVENT_OBJ_GFX_VAR_0", + "x": 5, + "y": 1, "elevation": 3, "movement_type": "MOVEMENT_TYPE_FACE_DOWN", - "movement_range_x": 1, - "movement_range_y": 1, + "movement_range_x": 0, + "movement_range_y": 0, "trainer_type": "0", "trainer_sight_or_berry_tree_id": "0", - "script": "BattleFrontier_BattleTowerMultiBattleRoom_EventScript_243E7A", + "script": "0x0", + "flag": "FLAG_HIDE_BATTLE_TOWER_OPPONENT" + }, + { + "graphics_id": "EVENT_OBJ_GFX_TEALA", + "x": 1, + "y": 4, + "elevation": 3, + "movement_type": "MOVEMENT_TYPE_FACE_RIGHT", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "0", + "trainer_sight_or_berry_tree_id": "0", + "script": "0x0", "flag": "0" }, { - "graphics_id": "EVENT_OBJ_GFX_VAR_0", - "x": 2, - "y": 10, + "graphics_id": "EVENT_OBJ_GFX_TEALA", + "x": 1, + "y": 5, "elevation": 3, - "movement_type": "MOVEMENT_TYPE_LOOK_AROUND", - "movement_range_x": 1, - "movement_range_y": 1, + "movement_type": "MOVEMENT_TYPE_FACE_RIGHT", + "movement_range_x": 0, + "movement_range_y": 0, "trainer_type": "0", "trainer_sight_or_berry_tree_id": "0", - "script": "BattleFrontier_BattleTowerMultiBattleRoom_EventScript_243F29", - "flag": "FLAG_HIDE_BATTLE_TOWER_MULTI_BATTLE_PARTNER_1" + "script": "0x0", + "flag": "0" }, { "graphics_id": "EVENT_OBJ_GFX_VAR_1", - "x": 17, - "y": 11, + "x": 4, + "y": 1, "elevation": 3, - "movement_type": "MOVEMENT_TYPE_FACE_LEFT_AND_RIGHT", - "movement_range_x": 1, - "movement_range_y": 1, + "movement_type": "MOVEMENT_TYPE_FACE_DOWN", + "movement_range_x": 0, + "movement_range_y": 0, "trainer_type": "0", "trainer_sight_or_berry_tree_id": "0", - "script": "BattleFrontier_BattleTowerMultiBattleRoom_EventScript_243FFB", - "flag": "FLAG_HIDE_BATTLE_TOWER_MULTI_BATTLE_PARTNER_2" + "script": "0x0", + "flag": "FLAG_HIDE_BATTLE_TOWER_OPPONENT" }, { - "graphics_id": "EVENT_OBJ_GFX_VAR_2", - "x": 6, - "y": 9, - "elevation": 3, - "movement_type": "MOVEMENT_TYPE_LOOK_AROUND", - "movement_range_x": 1, - "movement_range_y": 1, - "trainer_type": "0", - "trainer_sight_or_berry_tree_id": "0", - "script": "BattleFrontier_BattleTowerMultiBattleRoom_EventScript_244008", - "flag": "FLAG_HIDE_BATTLE_TOWER_MULTI_BATTLE_PARTNER_3" - }, - { - "graphics_id": "EVENT_OBJ_GFX_VAR_3", - "x": 8, - "y": 13, - "elevation": 3, - "movement_type": "MOVEMENT_TYPE_LOOK_AROUND", - "movement_range_x": 1, - "movement_range_y": 1, - "trainer_type": "0", - "trainer_sight_or_berry_tree_id": "0", - "script": "BattleFrontier_BattleTowerMultiBattleRoom_EventScript_244015", - "flag": "FLAG_HIDE_BATTLE_TOWER_MULTI_BATTLE_PARTNER_4" - }, - { - "graphics_id": "EVENT_OBJ_GFX_VAR_4", - "x": 10, - "y": 11, + "graphics_id": "EVENT_OBJ_GFX_VAR_F", + "x": 4, + "y": 8, "elevation": 3, "movement_type": "MOVEMENT_TYPE_FACE_UP", - "movement_range_x": 1, - "movement_range_y": 1, + "movement_range_x": 0, + "movement_range_y": 0, "trainer_type": "0", "trainer_sight_or_berry_tree_id": "0", - "script": "BattleFrontier_BattleTowerMultiBattleRoom_EventScript_244022", - "flag": "FLAG_HIDE_BATTLE_TOWER_MULTI_BATTLE_PARTNER_5" + "script": "0x0", + "flag": "0" }, { - "graphics_id": "EVENT_OBJ_GFX_VAR_5", - "x": 13, - "y": 10, + "graphics_id": "EVENT_OBJ_GFX_VAR_E", + "x": 5, + "y": 8, "elevation": 3, - "movement_type": "MOVEMENT_TYPE_FACE_RIGHT", - "movement_range_x": 1, - "movement_range_y": 1, + "movement_type": "MOVEMENT_TYPE_FACE_UP", + "movement_range_x": 0, + "movement_range_y": 0, "trainer_type": "0", "trainer_sight_or_berry_tree_id": "0", - "script": "BattleFrontier_BattleTowerMultiBattleRoom_EventScript_24402F", - "flag": "FLAG_HIDE_BATTLE_TOWER_MULTI_BATTLE_PARTNER_6" - }, - { - "graphics_id": "EVENT_OBJ_GFX_VAR_6", - "x": 15, - "y": 13, - "elevation": 3, - "movement_type": "MOVEMENT_TYPE_FACE_UP_AND_LEFT", - "movement_range_x": 1, - "movement_range_y": 1, - "trainer_type": "0", - "trainer_sight_or_berry_tree_id": "0", - "script": "BattleFrontier_BattleTowerMultiBattleRoom_EventScript_24403C", - "flag": "FLAG_HIDE_BATTLE_TOWER_MULTI_BATTLE_PARTNER_ALT_1" - }, - { - "graphics_id": "EVENT_OBJ_GFX_VAR_7", - "x": 4, - "y": 12, - "elevation": 3, - "movement_type": "MOVEMENT_TYPE_FACE_RIGHT", - "movement_range_x": 1, - "movement_range_y": 1, - "trainer_type": "0", - "trainer_sight_or_berry_tree_id": "0", - "script": "BattleFrontier_BattleTowerMultiBattleRoom_EventScript_244049", - "flag": "FLAG_HIDE_BATTLE_TOWER_MULTI_BATTLE_PARTNER_ALT_2" + "script": "0x0", + "flag": "0" } ], "warp_events": [], diff --git a/data/maps/BattleFrontier_BattleTowerMultiBattleRoom/scripts.inc b/data/maps/BattleFrontier_BattleTowerMultiBattleRoom/scripts.inc index 4a3d9cb96c..f991d5fe62 100644 --- a/data/maps/BattleFrontier_BattleTowerMultiBattleRoom/scripts.inc +++ b/data/maps/BattleFrontier_BattleTowerMultiBattleRoom/scripts.inc @@ -1,1816 +1,513 @@ -BattleFrontier_BattleTowerMultiBattleRoom_MapScripts:: @ 8243D92 - map_script MAP_SCRIPT_ON_RESUME, BattleFrontier_BattleTowerMultiBattleRoom_MapScript1_243DA7 - map_script MAP_SCRIPT_ON_TRANSITION, BattleFrontier_BattleTowerMultiBattleRoom_MapScript1_243DB0 - map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, BattleFrontier_BattleTowerMultiBattleRoom_MapScript2_243E14 - map_script MAP_SCRIPT_ON_FRAME_TABLE, BattleFrontier_BattleTowerMultiBattleRoom_MapScript2_243E23 +BattleFrontier_BattleTowerMultiBattleRoom_MapScripts:: @ 8248EE8 + map_script MAP_SCRIPT_ON_TRANSITION, BattleFrontier_BattleTowerMultiBattleRoom_OnTransition + map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, BattleFrontier_BattleTowerMultiBattleRoom_OnWarp + map_script MAP_SCRIPT_ON_FRAME_TABLE, BattleFrontier_BattleTowerMultiBattleRoom_OnFrame .byte 0 -BattleFrontier_BattleTowerMultiBattleRoom_MapScript1_243DA7: @ 8243DA7 - pyramid_healparty + @ On this map the player (OBJ_EVENT_ID_PLAYER) is hidden + @ The player is represented instead by object event 5, which has the gfx id VAR_OBJ_GFX_ID_F + @ The multi partner is represented by object event 6, which has the gfx id VAR_OBJ_GFX_ID_E + +BattleFrontier_BattleTowerMultiBattleRoom_OnTransition: @ 8248EF8 + compare VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_MULTIS + call_if_eq BattleFrontier_BattleTowerMultiBattleRoom_EventScript_SetObjGfx + compare VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_LINK_MULTIS + call_if_eq BattleFrontier_BattleTowerMultiBattleRoom_EventScript_SetLinkPlayerGfx end -BattleFrontier_BattleTowerMultiBattleRoom_MapScript1_243DB0: @ 8243DB0 - goto_if_set FLAG_CHOSEN_MULTI_BATTLE_NPC_PARTNER, BattleFrontier_BattleTowerMultiBattleRoom_EventScript_243DDA - clearflag FLAG_HIDE_BATTLE_TOWER_MULTI_BATTLE_PARTNER_1 - clearflag FLAG_HIDE_BATTLE_TOWER_MULTI_BATTLE_PARTNER_2 - clearflag FLAG_HIDE_BATTLE_TOWER_MULTI_BATTLE_PARTNER_3 - clearflag FLAG_HIDE_BATTLE_TOWER_MULTI_BATTLE_PARTNER_4 - clearflag FLAG_HIDE_BATTLE_TOWER_MULTI_BATTLE_PARTNER_5 - clearflag FLAG_HIDE_BATTLE_TOWER_MULTI_BATTLE_PARTNER_6 - setflag FLAG_HIDE_BATTLE_TOWER_MULTI_BATTLE_PARTNER_ALT_1 - setflag FLAG_HIDE_BATTLE_TOWER_MULTI_BATTLE_PARTNER_ALT_2 - setvar VAR_0x8004, BATTLE_TOWER_FUNC_10 - special CallBattleTowerFunc - end +BattleFrontier_BattleTowerMultiBattleRoom_EventScript_SetObjGfx:: @ 8248F0F + tower_setpartnergfx + checkplayergender + compare VAR_RESULT, FEMALE + goto_if_eq BattleFrontier_BattleTowerMultiBattleRoom_EventScript_SetPlayerGfxFemale + setvar VAR_OBJ_GFX_ID_F, EVENT_OBJ_GFX_BRENDAN_NORMAL + return -BattleFrontier_BattleTowerMultiBattleRoom_EventScript_243DDA:: @ 8243DDA - setvar VAR_OBJ_GFX_ID_0, EVENT_OBJ_GFX_BOY_1 - setvar VAR_OBJ_GFX_ID_1, EVENT_OBJ_GFX_BOY_1 - setvar VAR_OBJ_GFX_ID_2, EVENT_OBJ_GFX_BOY_1 - setvar VAR_OBJ_GFX_ID_3, EVENT_OBJ_GFX_BOY_1 - setvar VAR_OBJ_GFX_ID_4, EVENT_OBJ_GFX_BOY_1 - setvar VAR_OBJ_GFX_ID_5, EVENT_OBJ_GFX_BOY_1 - setvar VAR_OBJ_GFX_ID_6, EVENT_OBJ_GFX_BOY_1 - setvar VAR_OBJ_GFX_ID_7, EVENT_OBJ_GFX_BOY_1 - setvar VAR_TEMP_1, 1 - setvar VAR_TEMP_3, 1 - setobjectxyperm 1, 10, 2 - end +BattleFrontier_BattleTowerMultiBattleRoom_EventScript_SetPlayerGfxFemale:: @ 8248F29 + setvar VAR_OBJ_GFX_ID_F, EVENT_OBJ_GFX_MAY_NORMAL + return -BattleFrontier_BattleTowerMultiBattleRoom_MapScript2_243E14: @ 8243E14 - map_script_2 VAR_TEMP_3, 1, BattleFrontier_BattleTowerMultiBattleRoom_EventScript_243E1E +BattleFrontier_BattleTowerMultiBattleRoom_EventScript_SetLinkPlayerGfx:: @ 8248F2F + special SetBattleTowerLinkPlayerGfx + return + +BattleFrontier_BattleTowerMultiBattleRoom_OnWarp: @ 8248F33 + map_script_2 VAR_TEMP_1, 0, BattleFrontier_BattleTowerMultiBattleRoom_EventScript_HidePlayerObj .2byte 0 -BattleFrontier_BattleTowerMultiBattleRoom_EventScript_243E1E:: @ 8243E1E - turnobject EVENT_OBJ_ID_PLAYER, DIR_NORTH +BattleFrontier_BattleTowerMultiBattleRoom_EventScript_HidePlayerObj:: @ 8248F3D + hideobjectat EVENT_OBJ_ID_PLAYER, MAP_BATTLE_FRONTIER_BATTLE_TOWER_MULTI_BATTLE_ROOM end -BattleFrontier_BattleTowerMultiBattleRoom_MapScript2_243E23: @ 8243E23 - map_script_2 VAR_TEMP_1, 0, BattleFrontier_BattleTowerMultiBattleRoom_EventScript_243E41 - map_script_2 VAR_TEMP_3, 1, BattleFrontier_BattleTowerMultiBattleRoom_EventScript_243E35 +BattleFrontier_BattleTowerMultiBattleRoom_OnFrame: @ 8248F43 + map_script_2 VAR_TEMP_0, 0, BattleFrontier_BattleTowerMultiBattleRoom_EventScript_EnterRoom .2byte 0 -BattleFrontier_BattleTowerMultiBattleRoom_EventScript_243E35:: @ 8243E35 - lockall - setvar VAR_TEMP_3, 0 - goto BattleFrontier_BattleTowerMultiBattleRoom_EventScript_243EB5 - end - -BattleFrontier_BattleTowerMultiBattleRoom_EventScript_243E41:: @ 8243E41 - lockall - applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleTowerMultiBattleRoom_Movement_243E75 +BattleFrontier_BattleTowerMultiBattleRoom_EventScript_EnterRoom:: @ 8248F4D + setvar VAR_TEMP_0, 1 + applymovement 5, BattleFrontier_BattleTowerMultiBattleRoom_Movement_PlayerEnterRoom + applymovement 6, BattleFrontier_BattleTowerMultiBattleRoom_Movement_PartnerEnterRoom waitmovement 0 - applymovement 1, BattleFrontier_BattleTowerMultiBattleRoom_Movement_243E77 - waitmovement 0 - copyobjectxytoperm 1 - applymovement EVENT_OBJ_ID_PLAYER, Common_Movement_WalkInPlaceFastestUp - waitmovement 0 - msgbox BattleFrontier_BattleTowerMultiBattleRoom_Text_244056, MSGBOX_DEFAULT - special HealPlayerParty - setvar VAR_TEMP_1, 1 - releaseall - end - -BattleFrontier_BattleTowerMultiBattleRoom_Movement_243E75: @ 8243E75 - walk_down - step_end - -BattleFrontier_BattleTowerMultiBattleRoom_Movement_243E77: @ 8243E77 - walk_left - walk_in_place_fastest_down - step_end - -BattleFrontier_BattleTowerMultiBattleRoom_EventScript_243E7A:: @ 8243E7A - lock - faceplayer - message BattleFrontier_BattleTowerMultiBattleRoom_Text_244094 - waitmessage - multichoicedefault 20, 8, MULTI_YESNO, 1, 0 + frontier_get FRONTIER_DATA_BATTLE_NUM compare VAR_RESULT, 0 - goto_if_eq BattleFrontier_BattleTowerMultiBattleRoom_EventScript_243E9D - msgbox BattleFrontier_BattleTowerMultiBattleRoom_Text_24410C, MSGBOX_DEFAULT - release - end - -BattleFrontier_BattleTowerMultiBattleRoom_EventScript_243E9D:: @ 8243E9D - frontier_set FRONTIER_DATA_6, 1 - goto BattleFrontier_BattleTowerMultiBattleRoom_EventScript_241C03 - end - -BattleFrontier_BattleTowerMultiBattleRoom_EventScript_243EB5:: @ 8243EB5 - msgbox BattleFrontier_BattleTowerMultiBattleRoom_Text_244149, MSGBOX_DEFAULT - closemessage - applymovement 1, Common_Movement_WalkInPlaceFastestUp + goto_if_eq BattleFrontier_BattleTowerMultiBattleRoom_EventScript_OpponentsEnter + applymovement 2, BattleFrontier_BattleTowerMultiBattleRoom_Movement_AttendantApproachPlayer + applymovement 3, BattleFrontier_BattleTowerMultiBattleRoom_Movement_AttendantApproachPlayer waitmovement 0 - opendoor 10, 1 - waitdooranim - call BattleFrontier_BattleTowerMultiBattleRoom_EventScript_243EE4 - closedoor 10, 1 - waitdooranim - warp MAP_BATTLE_FRONTIER_BATTLE_TOWER_ELEVATOR, 255, 1, 6 - waitstate - releaseall - end - -BattleFrontier_BattleTowerMultiBattleRoom_EventScript_243EE4:: @ 8243EE4 - applymovement 1, BattleFrontier_BattleTowerMultiBattleRoom_Movement_243F26 - applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleTowerMultiBattleRoom_Movement_243F1A + applymovement 5, BattleFrontier_BattleTowerMultiBattleRoom_Movement_FaceAttendant + applymovement 6, BattleFrontier_BattleTowerMultiBattleRoom_Movement_FaceAttendant waitmovement 0 - return + frontier_set FRONTIER_DATA_RECORD_DISABLED, TRUE + goto BattleFrontier_BattleTowerMultiBattleRoom_EventScript_AskReadyForOpponents -BattleFrontier_BattleTowerMultiBattleRoom_EventScript_243EF6: @ 8243EF6 - applymovement 1, BattleFrontier_BattleTowerMultiBattleRoom_Movement_243F26 - applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleTowerMultiBattleRoom_Movement_243F1E +BattleFrontier_BattleTowerMultiBattleRoom_EventScript_OpponentsEnter:: @ 8248FB4 + tower_setopponent + addobject 1 + addobject 4 + applymovement 1, BattleFrontier_BattleTowerMultiBattleRoom_Movement_Opponent1Enter + applymovement 4, BattleFrontier_BattleTowerMultiBattleRoom_Movement_Opponent2Enter waitmovement 0 - return - -BattleFrontier_BattleTowerMultiBattleRoom_EventScript_243F08: @ 8243F08 - applymovement 1, BattleFrontier_BattleTowerMultiBattleRoom_Movement_243F26 - applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleTowerMultiBattleRoom_Movement_243F22 + compare VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_LINK_MULTIS + goto_if_eq BattleFrontier_BattleTowerMultiBattleRoom_EventScript_DoOpponentIntrosLink + tower_getopponentintro 0 + delay 15 + applymovement 1, BattleFrontier_BattleTowerMultiBattleRoom_Movement_WalkInPlaceLeft waitmovement 0 - return - -BattleFrontier_BattleTowerMultiBattleRoom_Movement_243F1A: @ 8243F1A - walk_up - walk_up - set_invisible - step_end - -BattleFrontier_BattleTowerMultiBattleRoom_Movement_243F1E: @ 8243F1E - walk_right - walk_up - set_invisible - step_end - -BattleFrontier_BattleTowerMultiBattleRoom_Movement_243F22: @ 8243F22 - walk_left - walk_up - set_invisible - step_end - -BattleFrontier_BattleTowerMultiBattleRoom_Movement_243F26: @ 8243F26 - walk_up - set_invisible - step_end - -BattleFrontier_BattleTowerMultiBattleRoom_EventScript_243F29:: @ 8243F29 - lock - faceplayer - setvar VAR_TEMP_2, 0 - goto BattleFrontier_BattleTowerMultiBattleRoom_EventScript_243F36 - end - -BattleFrontier_BattleTowerMultiBattleRoom_EventScript_243F36:: @ 8243F36 - goto_if_set FLAG_CHOSEN_MULTI_BATTLE_NPC_PARTNER, BattleFrontier_BattleTowerMultiBattleRoom_EventScript_243FC3 - setvar VAR_0x8004, BATTLE_TOWER_FUNC_11 - setvar VAR_0x8005, 0 - special CallBattleTowerFunc + msgbox gStringVar4, MSGBOX_DEFAULT waitmessage - waitbuttonpress - setvar VAR_0x8004, BATTLE_TOWER_FUNC_11 - setvar VAR_0x8005, 1 - special CallBattleTowerFunc + tower_getopponentintro 1 + applymovement 4, BattleFrontier_BattleTowerMultiBattleRoom_Movement_WalkInPlaceLeft + waitmovement 0 + msgbox gStringVar4, MSGBOX_DEFAULT waitmessage - waitbuttonpress - setvar VAR_0x8004, BATTLE_TOWER_FUNC_11 - setvar VAR_0x8005, 2 - special CallBattleTowerFunc + goto BattleFrontier_BattleTowerMultiBattleRoom_EventScript_DoTowerBattle + +BattleFrontier_BattleTowerMultiBattleRoom_EventScript_DoOpponentIntrosLink:: @ 8249026 + tower_getopponentintro 0 + delay 15 + applymovement 1, BattleFrontier_BattleTowerMultiBattleRoom_Movement_WalkInPlaceLeft + waitmovement 0 + messageautoscroll gStringVar4 + waitmessage + delay 48 + tower_getopponentintro 1 + applymovement 4, BattleFrontier_BattleTowerMultiBattleRoom_Movement_WalkInPlaceLeft + waitmovement 0 + messageautoscroll gStringVar4 + waitmessage + delay 48 +BattleFrontier_BattleTowerMultiBattleRoom_EventScript_DoTowerBattle:: @ 8249069 + call BattleFrontier_BattleTowerBattleRoom_EventScript_DoTowerBattle + switch VAR_RESULT + case B_OUTCOME_WON, BattleFrontier_BattleTowerMultiBattleRoom_EventScript_DefeatedOpponents +BattleFrontier_BattleTowerMultiBattleRoom_EventScript_WarpToLobbyLost:: @ 824907E + frontier_set FRONTIER_DATA_CHALLENGE_STATUS, CHALLENGE_STATUS_LOST + tower_set TOWER_DATA_LVL_MODE + setvar VAR_0x8004, 3 + special Script_TryGainNewFanFromCounter + goto BattleFrontier_BattleTowerBattleRoom_EventScript_WarpToLobby + +BattleFrontier_BattleTowerMultiBattleRoom_EventScript_DefeatedOpponents:: @ 82490AA + call BattleFrontier_EventScript_IncrementWinStreak + tower_setbattlewon + switch VAR_RESULT + case 7, BattleFrontier_BattleTowerMultiBattleRoom_EventScript_WarpToLobbyWon + applymovement 4, BattleFrontier_BattleTowerMultiBattleRoom_Movement_Opponent2Exit + applymovement 1, BattleFrontier_BattleTowerMultiBattleRoom_Movement_Opponent1Exit + waitmovement 0 + removeobject 1 + removeobject 4 + applymovement 2, BattleFrontier_BattleTowerMultiBattleRoom_Movement_AttendantApproachPlayer + applymovement 3, BattleFrontier_BattleTowerMultiBattleRoom_Movement_AttendantApproachPlayer + waitmovement 0 + applymovement 5, BattleFrontier_BattleTowerMultiBattleRoom_Movement_FaceAttendant + applymovement 6, BattleFrontier_BattleTowerMultiBattleRoom_Movement_FaceAttendant + waitmovement 0 + compare VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_LINK_MULTIS + goto_if_eq BattleFrontier_BattleTowerMultiBattleRoom_EventScript_RetorePartyMsgLink + msgbox BattleFrontier_BattleTowerBattleRoom_Text_RestoreMonsToFullHealth, MSGBOX_DEFAULT + goto BattleFrontier_BattleTowerMultiBattleRoom_EventScript_RestoreParty + +BattleFrontier_BattleTowerMultiBattleRoom_EventScript_RetorePartyMsgLink:: @ 8249118 + messageautoscroll BattleFrontier_BattleTowerBattleRoom_Text_RestoreMonsToFullHealth + waitmessage + delay 48 +BattleFrontier_BattleTowerMultiBattleRoom_EventScript_RestoreParty:: @ 8249121 + special LoadPlayerParty + frontier_setpartyorder FRONTIER_MULTI_PARTY_SIZE + compare VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_LINK_MULTIS + call_if_eq BattleFrontier_BattleTowerMultiBattleRoom_EventScript_249514 + playfanfare MUS_ME_ASA + waitfanfare + special HealPlayerParty +BattleFrontier_BattleTowerMultiBattleRoom_EventScript_AskReadyForOpponents:: @ 8249143 + frontier_get FRONTIER_DATA_BATTLE_NUM + call BattleFrontier_BattleTowerMultiBattleRoom_EventScript_ReadyForNextOpponentSet + compare VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_LINK_MULTIS + goto_if_eq BattleFrontier_BattleTowerMultiBattleRoom_EventScript_ContinueChallenge + call BattleFrontier_EventScript_GetCantRecordBattle + compare VAR_RESULT, TRUE + goto_if_eq BattleFrontier_BattleTowerMultiBattleRoom_EventScript_AskReadyForOpponentsNoRecord + multichoice 19, 4, MULTI_GO_ON_RECORD_REST_RETIRE, 1 + switch VAR_RESULT + case 0, BattleFrontier_BattleTowerMultiBattleRoom_EventScript_ContinueChallenge + case 1, BattleFrontier_BattleTowerMultiBattleRoom_EventScript_AskRecordBattle + case 2, BattleFrontier_BattleTowerMultiBattleRoom_EventScript_AskPauseChallenge + case 3, BattleFrontier_BattleTowerMultiBattleRoom_EventScript_AskRetireChallenge + case MULTI_B_PRESSED, BattleFrontier_BattleTowerMultiBattleRoom_EventScript_AskReadyForOpponents + +BattleFrontier_BattleTowerMultiBattleRoom_EventScript_AskReadyForOpponentsNoRecord:: @ 82491B1 + multichoice 20, 6, MULTI_GO_ON_REST_RETIRE, 1 + switch VAR_RESULT + case 0, BattleFrontier_BattleTowerMultiBattleRoom_EventScript_ContinueChallenge + case 1, BattleFrontier_BattleTowerMultiBattleRoom_EventScript_AskPauseChallenge + case 2, BattleFrontier_BattleTowerMultiBattleRoom_EventScript_AskRetireChallenge + case MULTI_B_PRESSED, BattleFrontier_BattleTowerMultiBattleRoom_EventScript_AskReadyForOpponents + +BattleFrontier_BattleTowerMultiBattleRoom_EventScript_AskRecordBattle:: @ 82491E7 + message BattleFrontier_BattleTowerBattleRoom_Text_RecordYourBattle waitmessage multichoicedefault 20, 8, MULTI_YESNO, 1, 0 switch VAR_RESULT - case 1, BattleFrontier_BattleTowerMultiBattleRoom_EventScript_243FC3 - case MULTI_B_PRESSED, BattleFrontier_BattleTowerMultiBattleRoom_EventScript_243FC3 - setvar VAR_0x8004, BATTLE_TOWER_FUNC_11 - setvar VAR_0x8005, 3 - special CallBattleTowerFunc + case 1, BattleFrontier_BattleTowerMultiBattleRoom_EventScript_AskReadyForOpponents + case 0, BattleFrontier_BattleTowerMultiBattleRoom_EventScript_RecordBattle + case MULTI_B_PRESSED, BattleFrontier_BattleTowerMultiBattleRoom_EventScript_AskReadyForOpponents + +BattleFrontier_BattleTowerMultiBattleRoom_EventScript_RecordBattle:: @ 8249219 + call BattleFrontier_EventScript_SaveBattle + goto BattleFrontier_BattleTowerMultiBattleRoom_EventScript_AskReadyForOpponents + +BattleFrontier_BattleTowerMultiBattleRoom_EventScript_AskPauseChallenge:: @ 8249223 + msgbox BattleFrontier_BattleTowerBattleRoom_Text_SaveAndQuitGame, MSGBOX_YESNO + switch VAR_RESULT + case NO, BattleFrontier_BattleTowerMultiBattleRoom_EventScript_AskReadyForOpponents + case YES, BattleFrontier_BattleTowerMultiBattleRoom_EventScript_PauseChallenge + case MULTI_B_PRESSED, BattleFrontier_BattleTowerMultiBattleRoom_EventScript_AskReadyForOpponents + +BattleFrontier_BattleTowerMultiBattleRoom_EventScript_AskRetireChallenge:: @ 8249251 + message BattleFrontier_BattleTowerBattleRoom_Text_CancelYourChallenge waitmessage - waitbuttonpress + multichoicedefault 20, 8, MULTI_YESNO, 1, 0 + switch VAR_RESULT + case 1, BattleFrontier_BattleTowerMultiBattleRoom_EventScript_AskReadyForOpponents + case 0, BattleFrontier_BattleTowerMultiBattleRoom_EventScript_WarpToLobbyLost + case MULTI_B_PRESSED, BattleFrontier_BattleTowerMultiBattleRoom_EventScript_AskReadyForOpponents + +BattleFrontier_BattleTowerMultiBattleRoom_EventScript_ContinueChallenge:: @ 8249283 closemessage - compare VAR_FACING, DIR_SOUTH - call_if_ne BattleFrontier_BattleTowerMultiBattleRoom_EventScript_243FD4 - compare VAR_FACING, DIR_SOUTH - call_if_eq BattleFrontier_BattleTowerMultiBattleRoom_EventScript_243FDF - removeobject VAR_LAST_TALKED - setflag FLAG_CHOSEN_MULTI_BATTLE_NPC_PARTNER - warpsilent MAP_BATTLE_FRONTIER_BATTLE_TOWER_MULTI_BATTLE_ROOM, 255, 10, 3 - waitstate - release + clearflag FLAG_TEMP_2 + applymovement 5, BattleFrontier_BattleTowerMultiBattleRoom_Movement_FaceBattle + applymovement 6, BattleFrontier_BattleTowerMultiBattleRoom_Movement_FaceBattle + waitmovement 0 + applymovement 2, BattleFrontier_BattleTowerMultiBattleRoom_Movement_AttendantReturnToPos + applymovement 3, BattleFrontier_BattleTowerMultiBattleRoom_Movement_AttendantReturnToPos + waitmovement 0 + goto BattleFrontier_BattleTowerMultiBattleRoom_EventScript_OpponentsEnter end -BattleFrontier_BattleTowerMultiBattleRoom_EventScript_243FC3:: @ 8243FC3 - setvar VAR_0x8004, BATTLE_TOWER_FUNC_11 - setvar VAR_0x8005, 4 - special CallBattleTowerFunc +BattleFrontier_BattleTowerMultiBattleRoom_EventScript_WarpToLobbyWon:: @ 82492AF + frontier_set FRONTIER_DATA_CHALLENGE_STATUS, CHALLENGE_STATUS_WON + tower_set TOWER_DATA_LVL_MODE + setvar VAR_0x8004, 3 + special Script_TryGainNewFanFromCounter + goto BattleFrontier_BattleTowerBattleRoom_EventScript_WarpToLobby + +BattleFrontier_BattleTowerMultiBattleRoom_EventScript_PauseChallenge:: @ 82492DB + message BattleFrontier_BattleTowerBattleRoom_Text_SavingPleaseWait waitmessage - waitbuttonpress - release + tower_save CHALLENGE_STATUS_PAUSED + playse SE_SAVE + waitse + fadescreen 1 + frontier_reset end -BattleFrontier_BattleTowerMultiBattleRoom_EventScript_243FD4:: @ 8243FD4 - applymovement VAR_LAST_TALKED, BattleFrontier_BattleTowerMultiBattleRoom_Movement_243FEA - waitmovement 0 +BattleFrontier_BattleTowerMultiBattleRoom_EventScript_ReadyForNextOpponentSet:: @ 82492FD + compare VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_LINK_MULTIS + goto_if_eq BattleFrontier_BattleTowerMultiBattleRoom_EventScript_ReadyForNextOpponentSetLink + copyvar VAR_TEMP_F, VAR_RESULT + switch VAR_TEMP_F + case 1, BattleFrontier_BattleTowerMultiBattleRoom_EventScript_ReadyFor2ndOpponentSet + case 2, BattleFrontier_BattleTowerMultiBattleRoom_EventScript_ReadyFor3rdOpponentSet + case 3, BattleFrontier_BattleTowerMultiBattleRoom_EventScript_ReadyFor4thOpponentSet + case 4, BattleFrontier_BattleTowerMultiBattleRoom_EventScript_ReadyFor5thOpponentSet + case 5, BattleFrontier_BattleTowerMultiBattleRoom_EventScript_ReadyFor6thOpponentSet + case 6, BattleFrontier_BattleTowerMultiBattleRoom_EventScript_ReadyFor7thOpponentSet + +BattleFrontier_BattleTowerMultiBattleRoom_EventScript_ReadyFor2ndOpponentSet:: @ 8249354 + message BattleFrontier_BattleTowerMultiBattleRoom_Text_ReadyFor2ndOpponentSet + waitmessage return -BattleFrontier_BattleTowerMultiBattleRoom_EventScript_243FDF:: @ 8243FDF - applymovement VAR_LAST_TALKED, BattleFrontier_BattleTowerMultiBattleRoom_Movement_243FF2 - waitmovement 0 +BattleFrontier_BattleTowerMultiBattleRoom_EventScript_ReadyFor3rdOpponentSet:: @ 824935B + message BattleFrontier_BattleTowerMultiBattleRoom_Text_ReadyFor3rdOpponentSet + waitmessage return -BattleFrontier_BattleTowerMultiBattleRoom_Movement_243FEA: @ 8243FEA - walk_fast_up - walk_fast_up - walk_fast_up - walk_fast_up - walk_fast_up - walk_fast_up - walk_fast_up +BattleFrontier_BattleTowerMultiBattleRoom_EventScript_ReadyFor4thOpponentSet:: @ 8249362 + message BattleFrontier_BattleTowerMultiBattleRoom_Text_ReadyFor4thOpponentSet + waitmessage + return + +BattleFrontier_BattleTowerMultiBattleRoom_EventScript_ReadyFor5thOpponentSet:: @ 8249369 + message BattleFrontier_BattleTowerMultiBattleRoom_Text_ReadyFor5thOpponentSet + waitmessage + return + +BattleFrontier_BattleTowerMultiBattleRoom_EventScript_ReadyFor6thOpponentSet:: @ 8249370 + message BattleFrontier_BattleTowerMultiBattleRoom_Text_ReadyFor6thOpponentSet + waitmessage + return + +BattleFrontier_BattleTowerMultiBattleRoom_EventScript_ReadyFor7thOpponentSet:: @ 8249377 + message BattleFrontier_BattleTowerMultiBattleRoom_Text_ReadyFor7thOpponentSet + waitmessage + return + +BattleFrontier_BattleTowerMultiBattleRoom_EventScript_ReadyForNextOpponentSetLink:: @ 824937E + copyvar VAR_TEMP_F, VAR_RESULT + switch VAR_TEMP_F + case 1, BattleFrontier_BattleTowerMultiBattleRoom_EventScript_ReadyFor2ndOpponentSetLink + case 2, BattleFrontier_BattleTowerMultiBattleRoom_EventScript_ReadyFor3rdOpponentSetLink + case 3, BattleFrontier_BattleTowerMultiBattleRoom_EventScript_ReadyFor4thOpponentSetLink + case 4, BattleFrontier_BattleTowerMultiBattleRoom_EventScript_ReadyFor5thOpponentSetLink + case 5, BattleFrontier_BattleTowerMultiBattleRoom_EventScript_ReadyFor6thOpponentSetLink + case 6, BattleFrontier_BattleTowerMultiBattleRoom_EventScript_ReadyFor7thOpponentSetLink + +BattleFrontier_BattleTowerMultiBattleRoom_EventScript_ReadyFor2ndOpponentSetLink:: @ 82493CA + message BattleFrontier_BattleTowerMultiBattleRoom_Text_ReadyFor2ndOpponentSet + waitmessage + goto BattleFrontier_BattleTowerMultiBattleRoom_EventScript_AskReadyForOpponentsLink + end + +BattleFrontier_BattleTowerMultiBattleRoom_EventScript_ReadyFor3rdOpponentSetLink:: @ 82493D6 + message BattleFrontier_BattleTowerMultiBattleRoom_Text_ReadyFor3rdOpponentSet + waitmessage + goto BattleFrontier_BattleTowerMultiBattleRoom_EventScript_AskReadyForOpponentsLink + end + +BattleFrontier_BattleTowerMultiBattleRoom_EventScript_ReadyFor4thOpponentSetLink:: @ 82493E2 + message BattleFrontier_BattleTowerMultiBattleRoom_Text_ReadyFor4thOpponentSet + waitmessage + goto BattleFrontier_BattleTowerMultiBattleRoom_EventScript_AskReadyForOpponentsLink + end + +BattleFrontier_BattleTowerMultiBattleRoom_EventScript_ReadyFor5thOpponentSetLink:: @ 82493EE + message BattleFrontier_BattleTowerMultiBattleRoom_Text_ReadyFor5thOpponentSet + waitmessage + goto BattleFrontier_BattleTowerMultiBattleRoom_EventScript_AskReadyForOpponentsLink + end + +BattleFrontier_BattleTowerMultiBattleRoom_EventScript_ReadyFor6thOpponentSetLink:: @ 82493FA + message BattleFrontier_BattleTowerMultiBattleRoom_Text_ReadyFor6thOpponentSet + waitmessage + goto BattleFrontier_BattleTowerMultiBattleRoom_EventScript_AskReadyForOpponentsLink + end + +BattleFrontier_BattleTowerMultiBattleRoom_EventScript_ReadyFor7thOpponentSetLink:: @ 8249406 + message BattleFrontier_BattleTowerMultiBattleRoom_Text_ReadyFor7thOpponentSet + waitmessage + goto BattleFrontier_BattleTowerMultiBattleRoom_EventScript_AskReadyForOpponentsLink + end + +BattleFrontier_BattleTowerMultiBattleRoom_EventScript_LinkDelayForMsg:: @ 8249412 + waitmessage + delay 48 + return + +BattleFrontier_BattleTowerMultiBattleRoom_EventScript_AskReadyForOpponentsLink:: @ 8249417 + goto_if_set FLAG_TEMP_2, BattleFrontier_BattleTowerMultiBattleRoom_EventScript_AskReadyForOpponentsLinkNoRecord + multichoice 19, 6, MULTI_GO_ON_RECORD_RETIRE, 1 + switch VAR_RESULT + case 0, BattleFrontier_BattleTowerMultiBattleRoom_EventScript_ContinueChallengeLink + case 1, BattleFrontier_BattleTowerMultiBattleRoom_EventScript_AskRecordBattleLink + case 2, BattleFrontier_BattleTowerMultiBattleRoom_EventScript_AskRetireChallengeLink + case MULTI_B_PRESSED, BattleFrontier_BattleTowerMultiBattleRoom_EventScript_AskRetireChallengeLink + end + +BattleFrontier_BattleTowerMultiBattleRoom_EventScript_AskReadyForOpponentsLinkNoRecord:: @ 8249457 + multichoice 20, 8, MULTI_GO_ON_RETIRE, 1 + switch VAR_RESULT + case 0, BattleFrontier_BattleTowerMultiBattleRoom_EventScript_ContinueChallengeLink + case 1, BattleFrontier_BattleTowerMultiBattleRoom_EventScript_AskRetireChallengeLink + case MULTI_B_PRESSED, BattleFrontier_BattleTowerMultiBattleRoom_EventScript_AskRetireChallengeLink + end + +BattleFrontier_BattleTowerMultiBattleRoom_EventScript_ContinueChallengeLink:: @ 8249483 + setvar VAR_0x8004, BATTLE_TOWER_LINK_CONTINUE + setvar VAR_0x8005, 0 + message gText_LinkStandby3 + waitmessage + special LinkRetireStatusWithBattleTowerPartner + waitstate + compare VAR_RESULT, BATTLE_TOWER_LINKSTAT_CONTINUE + goto_if_ne BattleFrontier_BattleTowerMultiBattleRoom_EventScript_WarpToLobbyLost + goto BattleFrontier_BattleTowerMultiBattleRoom_EventScript_LinkDelayForMsg + end + +BattleFrontier_BattleTowerMultiBattleRoom_EventScript_AskRecordBattleLink:: @ 82494A8 + message BattleFrontier_BattleTowerBattleRoom_Text_RecordYourBattle + waitmessage + multichoicedefault 20, 8, MULTI_YESNO, 1, 0 + switch VAR_RESULT + case 1, BattleFrontier_BattleTowerMultiBattleRoom_EventScript_AskReadyForOpponents + case MULTI_B_PRESSED, BattleFrontier_BattleTowerMultiBattleRoom_EventScript_AskReadyForOpponents + call BattleFrontier_EventScript_SaveBattle + setflag FLAG_TEMP_2 + goto BattleFrontier_BattleTowerMultiBattleRoom_EventScript_AskReadyForOpponents + end + +BattleFrontier_BattleTowerMultiBattleRoom_EventScript_AskRetireChallengeLink:: @ 82494DD + message BattleFrontier_BattleTowerBattleRoom_Text_CancelYourChallenge + waitmessage + multichoicedefault 20, 8, MULTI_YESNO, 1, 0 + compare VAR_RESULT, 0 + goto_if_eq BattleFrontier_BattleTowerMultiBattleRoom_EventScript_RetireChallengeLink + goto BattleFrontier_BattleTowerMultiBattleRoom_EventScript_AskReadyForOpponents + end + +BattleFrontier_BattleTowerMultiBattleRoom_EventScript_RetireChallengeLink:: @ 82494FA + setvar VAR_0x8004, BATTLE_TOWER_LINK_RETIRE + setvar VAR_0x8005, 0 + message gText_LinkStandby3 + waitmessage + special LinkRetireStatusWithBattleTowerPartner + waitstate + goto BattleFrontier_BattleTowerMultiBattleRoom_EventScript_WarpToLobbyLost + end + +@ Some link function. Sets battle type flags at least +BattleFrontier_BattleTowerMultiBattleRoom_EventScript_249514:: @ 8249514 + special sub_813B534 + return + +BattleFrontier_BattleTowerMultiBattleRoom_Movement_PlayerEnterRoom: @ 8249518 + walk_up + walk_up + walk_up + walk_up + face_right step_end -BattleFrontier_BattleTowerMultiBattleRoom_Movement_243FF2: @ 8243FF2 - walk_fast_left - walk_fast_up - walk_fast_up - walk_fast_up - walk_fast_up - walk_fast_up - walk_fast_up - walk_fast_up +BattleFrontier_BattleTowerMultiBattleRoom_Movement_PartnerEnterRoom: @ 824951E + walk_left + walk_up + walk_up + walk_up + face_right step_end -BattleFrontier_BattleTowerMultiBattleRoom_EventScript_243FFB:: @ 8243FFB - lock - faceplayer - setvar VAR_TEMP_2, 1 - goto BattleFrontier_BattleTowerMultiBattleRoom_EventScript_243F36 - end - -BattleFrontier_BattleTowerMultiBattleRoom_EventScript_244008:: @ 8244008 - lock - faceplayer - setvar VAR_TEMP_2, 2 - goto BattleFrontier_BattleTowerMultiBattleRoom_EventScript_243F36 - end - -BattleFrontier_BattleTowerMultiBattleRoom_EventScript_244015:: @ 8244015 - lock - faceplayer - setvar VAR_TEMP_2, 3 - goto BattleFrontier_BattleTowerMultiBattleRoom_EventScript_243F36 - end - -BattleFrontier_BattleTowerMultiBattleRoom_EventScript_244022:: @ 8244022 - lock - faceplayer - setvar VAR_TEMP_2, 4 - goto BattleFrontier_BattleTowerMultiBattleRoom_EventScript_243F36 - end - -BattleFrontier_BattleTowerMultiBattleRoom_EventScript_24402F:: @ 824402F - lock - faceplayer - setvar VAR_TEMP_2, 5 - goto BattleFrontier_BattleTowerMultiBattleRoom_EventScript_243F36 - end - -BattleFrontier_BattleTowerMultiBattleRoom_EventScript_24403C:: @ 824403C - lock - faceplayer - setvar VAR_TEMP_2, 6 - goto BattleFrontier_BattleTowerMultiBattleRoom_EventScript_243F36 - end - -BattleFrontier_BattleTowerMultiBattleRoom_EventScript_244049:: @ 8244049 - lock - faceplayer - setvar VAR_TEMP_2, 7 - goto BattleFrontier_BattleTowerMultiBattleRoom_EventScript_243F36 - end - -BattleFrontier_BattleTowerMultiBattleRoom_Text_244056: @ 8244056 - .string "Please find a partner from out of\n" - .string "the TRAINERS gathered here.$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_244094: @ 8244094 - .string "{PLAYER}, you have not found a partner\n" - .string "for your tag team.\p" - .string "Would you like to quit looking and\n" - .string "return to the reception counter?$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_24410C: @ 824410C - .string "Then, please find a partner from\n" - .string "the TRAINERS gathered here.$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_244149:: @ 8244149 - .string "Thank you for choosing a partner.\p" - .string "I will now show you to your\n" - .string "MULTI BATTLE ROOM.$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_24419A:: @ 824419A - .string "I'm {STR_VAR_1}'s no. {STR_VAR_2} apprentice.\n" - .string "You can call me {STR_VAR_3}!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_2441CA:: @ 82441CA - .string "On {STR_VAR_1}'s advice, I brought\n" - .string "one {STR_VAR_3} with {STR_VAR_2} and$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_2441F7:: @ 82441F7 - .string "one {STR_VAR_2} with {STR_VAR_1}.\p" - .string "Please, let me join you as a tag team.$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_24422E:: @ 824422E - .string "Thank you!\n" - .string "I'll go register right now.$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_244255:: @ 8244255 - .string "I really wanted to form a tag team\n" - .string "with you, {PLAYER}…$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_244286:: @ 8244286 - .string "I am {STR_VAR_1}'s no. {STR_VAR_2} apprentice.\n" - .string "My name is {STR_VAR_3}.$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_2442B2:: @ 82442B2 - .string "I got advice from {STR_VAR_1} and chose\n" - .string "one {STR_VAR_3} with {STR_VAR_2} and$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_2442E4:: @ 82442E4 - .string "one {STR_VAR_2} with {STR_VAR_1}.\p" - .string "Please, let's form a tag team!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_244313:: @ 8244313 - .string "Thank you very much!\n" - .string "I'll be done with registration quickly!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_244350:: @ 8244350 - .string "{PLAYER}, I was hoping that I could\n" - .string "partner up with you…$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_244383:: @ 8244383 - .string "Um, my name's {STR_VAR_3}, and I'm\n" - .string "{STR_VAR_1}'s no. {STR_VAR_2} apprentice.\p" - .string "Snivel…\p" - .string "I'm sorry!\n" - .string "This tension is making me cry…$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_2443E7:: @ 82443E7 - .string "{STR_VAR_3} advised me, so I have\n" - .string "one {STR_VAR_2} with {STR_VAR_1} and$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_244413:: @ 8244413 - .string "one {STR_VAR_2} with {STR_VAR_1}.\p" - .string "Snivel…\n" - .string "Please, please team up with me!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_24444B:: @ 824444B - .string "Oh, really? You will?\n" - .string "Awesome! Wicked! Awoooh!\p" - .string "Oh… I'm sorry…\n" - .string "I'm so happy, I'm crying…\p" - .string "I'll go register right away.\n" - .string "Please don't go away!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_2444D6:: @ 82444D6 - .string "Oh, b-but…\n" - .string "Sob… Waaaaah!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_2444EF:: @ 82444EF - .string "Hi, there! I'm {STR_VAR_3}!\n" - .string "I'm {STR_VAR_1}'s no. {STR_VAR_2} apprentice!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_24451E:: @ 824451E - .string "{STR_VAR_3} recommended my crew.\n" - .string "One {STR_VAR_2} with {STR_VAR_1} and$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_244549:: @ 8244549 - .string "one {STR_VAR_2} with {STR_VAR_1},\n" - .string "that's what I have! Cool, huh?\p" - .string "So come on!\n" - .string "Let's form a tag team!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_24459B:: @ 824459B - .string "Yay! Great!\n" - .string "Okay, I'll go register, okay?$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_2445C5:: @ 82445C5 - .string "Aww, why?\n" - .string "I wanted to team up, {PLAYER}!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_2445E8:: @ 82445E8 - .string "I'm {STR_VAR_3}, the no. {STR_VAR_2} apprentice\n" - .string "of the famous {STR_VAR_1}!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_244618:: @ 8244618 - .string "I looked to {STR_VAR_3} for advice.\n" - .string "One {STR_VAR_1}-using {STR_VAR_2}$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_244643:: @ 8244643 - .string "and one {STR_VAR_2} with {STR_VAR_1},\n" - .string "that's my pair.\p" - .string "Please, will you join me in\n" - .string "a tag team?$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_24468F:: @ 824468F - .string "Thank you!\n" - .string "I'll register right away!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_2446B4:: @ 82446B4 - .string "{PLAYER}, I had been hoping to join\n" - .string "you in a tag team…$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_2446E5:: @ 82446E5 - .string "Um… I'm sincerely happy that you\n" - .string "would take the time to talk to me.\p" - .string "I'm {STR_VAR_3}.\n" - .string "I'm {STR_VAR_1}'s no. {STR_VAR_2} apprentice…$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_24474D:: @ 824474D - .string "{STR_VAR_3} gave me advice.\n" - .string "I'm very grateful for it.\p" - .string "I have a team of one {STR_VAR_2}\n" - .string "with {STR_VAR_1} and$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_24479E:: @ 824479E - .string "one {STR_VAR_2} with {STR_VAR_1}.\n" - .string "I know I'm asking a lot…\p" - .string "I don't think you'll be willing to,\n" - .string "but may I join you as a partner?$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_24480C:: @ 824480C - .string "Really? I can't believe it!\n" - .string "I can't believe you'll let me join you!\l" - .string "I… I won't let you down!\p" - .string "Um… If it's really okay, I'll go register\n" - .string "right this instant!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_2448A7:: @ 82448A7 - .string "Oh…\n" - .string "I didn't think I was good enough…$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_2448CD:: @ 82448CD - .string "Hi, I'm {STR_VAR_3}.\n" - .string "I'm {STR_VAR_1}'s no. {STR_VAR_2} apprentice!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_2448F5:: @ 82448F5 - .string "{STR_VAR_3} told me that it would be\n" - .string "good to make this team:\l" - .string "one {STR_VAR_1}-using {STR_VAR_2}$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_244939:: @ 8244939 - .string "and one {STR_VAR_2} that knows how\n" - .string "to use {STR_VAR_1}.\p" - .string "Not bad, huh?\n" - .string "Want me to team up with you?$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_244989:: @ 8244989 - .string "Okay, glad to join you!\n" - .string "I hope you won't mess things up for me!\l" - .string "I'll do my registration now.$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_2449E6:: @ 82449E6 - .string "Huh? Why did you turn me down?\n" - .string "You're no judge of character!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_244A23:: @ 8244A23 - .string "I'm {STR_VAR_3} and I'm a TRIATHLETE.\n" - .string "I'm busy every day what with jogging,\l" - .string "training, and rapping.\p" - .string "I also happen to be {STR_VAR_1}'s\n" - .string "no. {STR_VAR_2} apprentice.$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_244AA9:: @ 8244AA9 - .string "This is what {STR_VAR_3} recommended.\n" - .string "One {STR_VAR_1}-using {STR_VAR_2}$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_244AD6:: @ 8244AD6 - .string "and one {STR_VAR_1}-using\n" - .string "{STR_VAR_2}.\p" - .string "I put a lot of effort into raising\n" - .string "them, even though I'm busy.\p" - .string "Let's form a tag team\n" - .string "and give it a go!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_244B52:: @ 8244B52 - .string "Thanks, that's the spirit!\n" - .string "Hang tight while I go register, okay?$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_244B93:: @ 8244B93 - .string "I took time from my busy schedule\n" - .string "to be here! Give me a break!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_244BD2:: @ 8244BD2 - .string "Hi!\n" - .string "How's it going?\p" - .string "I'm {STR_VAR_3}, {STR_VAR_1}'s\n" - .string "no. {STR_VAR_2} apprentice. Glad to meet you!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_244C18:: @ 8244C18 - .string "Listen, listen! You have to hear about\n" - .string "the POKéMON {STR_VAR_3} recommended.\l" - .string "One {STR_VAR_2} with {STR_VAR_1} and$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_244C6E:: @ 8244C6E - .string "one {STR_VAR_2} with {STR_VAR_1}.\n" - .string "Of course I raised them superbly!\p" - .string "So, want to team up?\n" - .string "I'm sure it'll be a great combo!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_244CD6:: @ 8244CD6 - .string "Yay, I think this will be fun!\n" - .string "I'll go register!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_244D07:: @ 8244D07 - .string "Oh, you're mean!\n" - .string "I come recommended, you know.$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_244D36:: @ 8244D36 - .string "Please let me introduce myself.\n" - .string "I am {STR_VAR_3}.\p" - .string "I serve as {STR_VAR_1}'s\n" - .string "no. {STR_VAR_2} apprentice.$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_244D82:: @ 8244D82 - .string "I sought the sage advice of\n" - .string "{STR_VAR_3} and raised my team\l" - .string "of one {STR_VAR_2} with {STR_VAR_1}$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_244DC6:: @ 8244DC6 - .string "and one {STR_VAR_2} with {STR_VAR_1}.\p" - .string "Please agree to a tag team with me!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_244DFE:: @ 8244DFE - .string "Oh… I'm delighted!\n" - .string "I promise to give you my best!\p" - .string "Of course I will register us!\n" - .string "Please wait!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_244E5B:: @ 8244E5B - .string "I had been hoping to join you,\n" - .string "{PLAYER}…$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_244E7E:: @ 8244E7E - .string "Eek! You spoke to me!\n" - .string "I… I'm overjoyed!\p" - .string "I'm {STR_VAR_3}! I'm {STR_VAR_1}'s\n" - .string "no. {STR_VAR_2} apprentice!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_244ECA:: @ 8244ECA - .string "On {STR_VAR_3}'s advice, I trained\n" - .string "one {STR_VAR_1}-using {STR_VAR_2}$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_244EF4:: @ 8244EF4 - .string "and one {STR_VAR_1}-using\n" - .string "{STR_VAR_2}.\p" - .string "Please, can you grant me my wish?\n" - .string "I want to be your tag-team partner!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_244F4F:: @ 8244F4F - .string "Eek! I… I feel giddy!\n" - .string "Thank you so much!\l" - .string "I'll go register us right away!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_244F98:: @ 8244F98 - .string "Waaah! Don't you feel any pity?\n" - .string "But that makes you cooler…$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_244FD3:: @ 8244FD3 - .string "Yeehaw! I'm {STR_VAR_1}'s\n" - .string "no. {STR_VAR_2} apprentice!\p" - .string "{STR_VAR_3}'s my name, hello, hello!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_245013:: @ 8245013 - .string "My mentor {STR_VAR_3} recommended\n" - .string "one {STR_VAR_1}-master {STR_VAR_2}$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_24503D:: @ 824503D - .string "and one {STR_VAR_1}-master\n" - .string "{STR_VAR_2}.\p" - .string "Good stuff, huh?\n" - .string "You'll partner with me, won't you?$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_245087:: @ 8245087 - .string "Okay, excellent!\n" - .string "I'll get the registration done quickly!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_2450C0:: @ 82450C0 - .string "Gwaaah!\n" - .string "You're a calculating one, {PLAYER}!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_2450E6:: @ 82450E6 - .string "Hey! There's big trouble! This is\n" - .string "the BATTLE TOWER's last day!\p" - .string "… … … … … …\n" - .string "I'm only joking!\p" - .string "People call me {STR_VAR_3} and I do, too!\n" - .string "I'm {STR_VAR_1}'s 1,000th apprentice!\l" - .string "Actually, I'm no. {STR_VAR_2}!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_245196:: @ 8245196 - .string "{STR_VAR_3} gave me some advice.\n" - .string "{STR_VAR_2} with {STR_VAR_1} and$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_2451BD:: @ 82451BD - .string "{STR_VAR_2} with {STR_VAR_1}.\n" - .string "I've got ten of each kind!\l" - .string "Actually, just one of each!\p" - .string "How about it?\n" - .string "Want to try tag battles with me?$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_24522F:: @ 824522F - .string "Yippee!\n" - .string "I'll give you a POKéMON as my thanks!\p" - .string "Just joking! But I will really go do\n" - .string "the registration, okay?$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_24529A:: @ 824529A - .string "Oh, that's so cold! I'll have to wreck\n" - .string "the BATTLE TOWER for that!\p" - .string "Of course I won't!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_2452EF:: @ 82452EF - .string "Hey, there, I'm rockin' and a-rollin'!\n" - .string "POKéMON, I be controllin'!\p" - .string "I'm {STR_VAR_3} the rappin' SAILOR.\n" - .string "Don't be mistakin' me for no wailer!\p" - .string "I'm {STR_VAR_1}'s no. {STR_VAR_2} apprentice.\n" - .string "Me, you shouldn't be quick to dismiss!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_2453B4:: @ 82453B4 - .string "With the advice of {STR_VAR_3} I did\n" - .string "abide, put together my team of pride!\l" - .string "One {STR_VAR_1}-using {STR_VAR_2}$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_245406:: @ 8245406 - .string "and one {STR_VAR_1}-using\n" - .string "{STR_VAR_2}!\p" - .string "Our meeting we should commemorate,\n" - .string "with a tag-team victory to celebrate!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_245464:: @ 8245464 - .string "Hey, hey, I like your style!\n" - .string "Our registration, I will go file!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_2454A3:: @ 82454A3 - .string "Oh, hey, {PLAYER}, now that's cold!\n" - .string "If I may be so bold!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_2454D6:: @ 82454D6 - .string "Yippee-yahoo!\n" - .string "Oh, don't run! I was just having fun!\p" - .string "Howdy! I'm {STR_VAR_3}!\n" - .string "I'm {STR_VAR_1}'s no. {STR_VAR_2} apprentice!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_245535:: @ 8245535 - .string "{STR_VAR_3} told me what to do.\n" - .string "So one {STR_VAR_1}-using {STR_VAR_2}$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_24555F:: @ 824555F - .string "and one {STR_VAR_1}-using\n" - .string "{STR_VAR_2}, I did choose.\p" - .string "So, what do you say?\n" - .string "Come on, make my day!\p" - .string "Please, I'm begging you!\n" - .string "Let me join you, don't leave me blue!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_2455EC:: @ 82455EC - .string "Yeahah! Luck is with me!\n" - .string "It sure makes me happy!\p" - .string "Before we go join the fray,\n" - .string "I'll go register right away!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_245656:: @ 8245656 - .string "You're turning me down?\n" - .string "{PLAYER}, you're making me frown!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_24568A:: @ 824568A - .string "Cough!\p" - .string "Oh, sorry, I have a cold.\n" - .string "My POKéMON are fine, though.\p" - .string "My name's {STR_VAR_3}, {STR_VAR_1}'s\n" - .string "no. {STR_VAR_2} apprentice. Cough!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_2456F5:: @ 82456F5 - .string "I took {STR_VAR_3}'s advice to heart\n" - .string "and put together my team of\l" - .string "one {STR_VAR_2} with {STR_VAR_1} and$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_245740:: @ 8245740 - .string "one {STR_VAR_2} with {STR_VAR_1}.\p" - .string "I trained them every day,\n" - .string "even in wind and rain.\p" - .string "That's why I have this cold,\n" - .string "I think.\p" - .string "That's what I'm about.\n" - .string "Want to be my tag partner?$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_2457D9:: @ 82457D9 - .string "Thanks, I appreciate this!\n" - .string "Cough, cough!\l" - .string "Hang on while I go register.$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_24581F:: @ 824581F - .string "Oh, you won't?\n" - .string "{PLAYER}, I think we'd make a good pair.$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_245851:: @ 8245851 - .string "Oh, hello!\n" - .string "This is nerve-racking.\p" - .string "I'm {STR_VAR_3}.\n" - .string "I'm the no. {STR_VAR_2} apprentice of {STR_VAR_1}.$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_24589C:: @ 824589C - .string "{STR_VAR_3} said this team'll be good--\n" - .string "one {STR_VAR_2} with {STR_VAR_1} and$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_2458CE:: @ 82458CE - .string "one {STR_VAR_2} with {STR_VAR_1}.\p" - .string "I'm feeling self-conscious about this,\n" - .string "but will you let me join you?$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_245923:: @ 8245923 - .string "Oh, gee, thank you!\n" - .string "I feel bashful, but I'll do my best!\p" - .string "I'll go get the registration done.$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_24597F:: @ 824597F - .string "Oh, please don't say no!\n" - .string "I feel self-conscious enough already…$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_2459BE:: @ 82459BE - .string "I am {STR_VAR_3}, and that's no lie.\n" - .string "I am {STR_VAR_1}'s no. {STR_VAR_2} apprentice.$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_2459F7:: @ 82459F7 - .string "{STR_VAR_3} recommended my team.\p" - .string "Since the advice sounded sincere,\n" - .string "I decided to bring with me\l" - .string "my {STR_VAR_1}-using {STR_VAR_2} and$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_245A5F:: @ 8245A5F - .string "my {STR_VAR_1}-using {STR_VAR_2}.\p" - .string "If possible, I would like you to accept\n" - .string "me as your tag-team partner.$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_245AB4:: @ 8245AB4 - .string "You really will accept me?\n" - .string "It would be too terrible otherwise.\p" - .string "But since you've agreed, this is fine.\n" - .string "I shall go register the both of us.$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_245B3E:: @ 8245B3E - .string "Hm? Now why would you refuse?\n" - .string "Is this your idea of a joke?$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_245B79:: @ 8245B79 - .string "I'm {STR_VAR_1}, and I'm a LASS!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_245B91:: @ 8245B91 - .string "What I have are one {STR_VAR_2}\n" - .string "that uses {STR_VAR_1} and one$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_245BBD:: @ 8245BBD - .string "{STR_VAR_2} that uses {STR_VAR_1}.\n" - .string "Those are what I have with me.\p" - .string "Will you be my partner?$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_245C05:: @ 8245C05 - .string "Thank you!\n" - .string "I'll go do the registration!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_245C2D:: @ 8245C2D - .string "You don't want to be my partner?\n" - .string "You'll regret it later!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_245C66:: @ 8245C66 - .string "Hello!\p" - .string "I'm YOUNGSTER {STR_VAR_1}!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_245C7F:: @ 8245C7F - .string "Want to know what I have?\n" - .string "One {STR_VAR_2} with {STR_VAR_1} and$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_245CAC:: @ 8245CAC - .string "one {STR_VAR_2} with {STR_VAR_1}!\p" - .string "You'll be my tag-team partner,\n" - .string "won't you?$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_245CE6:: @ 8245CE6 - .string "Yay!\n" - .string "I'll go and register, okay?$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_245D07:: @ 8245D07 - .string "Aww! If you'd form a tag team with\n" - .string "my POKéMON, we'd be unstoppable!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_245D4B:: @ 8245D4B - .string "Yahoo!\n" - .string "I'm HIKER {STR_VAR_1}!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_245D60:: @ 8245D60 - .string "Know what I have with me?\n" - .string "My {STR_VAR_1}-using {STR_VAR_2} and$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_245D8D:: @ 8245D8D - .string "my {STR_VAR_1}-using {STR_VAR_2}!\p" - .string "Sounds good, eh?\n" - .string "Want to form a tag team?$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_245DC7:: @ 8245DC7 - .string "Yahoo!\n" - .string "I'll go do the registering, then.$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_245DF0:: @ 8245DF0 - .string "I would've liked to battle with you\n" - .string "at my side.$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_245E20:: @ 8245E20 - .string "Hello!\n" - .string "I'm {STR_VAR_1}, and I'm a BEAUTY!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_245E41:: @ 8245E41 - .string "Do you know what I've been raising?\n" - .string "One {STR_VAR_2} with {STR_VAR_1} and$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_245E78:: @ 8245E78 - .string "one {STR_VAR_2} with {STR_VAR_1}!\p" - .string "What do you think?\n" - .string "Want to make a tag team together?$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_245EBD:: @ 8245EBD - .string "Wonderful!\n" - .string "I'll get the registration done now!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_245EEC:: @ 8245EEC - .string "How disappointing!\p" - .string "We two together--we would've been\n" - .string "the best!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_245F2B:: @ 8245F2B - .string "Yo!\p" - .string "You know who I am?\n" - .string "I'm {STR_VAR_1} the FISHERMAN!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_245F58:: @ 8245F58 - .string "I've got with me a team of one\n" - .string "{STR_VAR_1}-using {STR_VAR_2} and$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_245F87:: @ 8245F87 - .string "one {STR_VAR_1}-using {STR_VAR_2}.\p" - .string "So, how about it?\n" - .string "Will you battle at my side?$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_245FC6:: @ 8245FC6 - .string "Good, good!\n" - .string "Leave it up to me!\p" - .string "I'll go and register us now.$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_246002:: @ 8246002 - .string "We matched up perfectly, too…$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_246020:: @ 8246020 - .string "Glad to make your acquaintance.\n" - .string "I am {STR_VAR_1}, a LADY.$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_246051:: @ 8246051 - .string "I am accompanied by a team of\n" - .string "one {STR_VAR_2} with {STR_VAR_1} and$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_246082:: @ 8246082 - .string "one {STR_VAR_2} with {STR_VAR_1}.\p" - .string "I hope I meet your approval.\n" - .string "For I wish to have you as my partner.$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_2460D5:: @ 82460D5 - .string "I thank you sincerely.\n" - .string "I shall handle the registration.$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_24610D:: @ 824610D - .string "I'm sure that you will regret not\n" - .string "having me as your partner.$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_24614A:: @ 824614A - .string "I'm TRIATHLETE {STR_VAR_1}!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_24615D:: @ 824615D - .string "What I have…\n" - .string "One {STR_VAR_2} with {STR_VAR_1} and$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_24617D:: @ 824617D - .string "one {STR_VAR_2} with {STR_VAR_1}!\n" - .string "That's my pair!\p" - .string "Please?\n" - .string "Will you form a tag team with me?$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_2461C7:: @ 82461C7 - .string "Gee, thanks!\n" - .string "I'll go register at the counter.$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_2461F5:: @ 82461F5 - .string "We two together, we would've been\n" - .string "tough for certain!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_24622A:: @ 824622A - .string "Hiya!\n" - .string "I'm BUG CATCHER {STR_VAR_1}!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_246244:: @ 8246244 - .string "Check out what I have!\n" - .string "One {STR_VAR_2} with {STR_VAR_1} and$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_24626E:: @ 824626E - .string "one {STR_VAR_2} with {STR_VAR_1}!\p" - .string "So, listen!\n" - .string "Do you want to form a tag team?$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_2462AA:: @ 82462AA - .string "Gotcha!\p" - .string "I'll go do the registration stuff\n" - .string "at the counter.$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_2462E4:: @ 82462E4 - .string "Aww, my POKéMON are awesome.\n" - .string "I hope you won't regret this!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_24631F:: @ 824631F - .string "Good day!\n" - .string "I'm SCHOOL KID {STR_VAR_1}!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_24633C:: @ 824633C - .string "What I've been raising are one\n" - .string "{STR_VAR_2} that uses {STR_VAR_1}$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_24636B:: @ 824636B - .string "and one {STR_VAR_2} that uses\n" - .string "{STR_VAR_1}.\p" - .string "Not too bad, don't you think?\n" - .string "Would you care to form a tag team?$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_2463C5:: @ 82463C5 - .string "Thank you very much!\n" - .string "I'll get done with the registration.$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_2463FF:: @ 82463FF - .string "That's too bad…\p" - .string "I was hoping that I could learn\n" - .string "from you as your partner…$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_246449:: @ 8246449 - .string "Yo! Let me tell you who I am!\n" - .string "I'm RICH BOY {STR_VAR_1}!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_246478:: @ 8246478 - .string "Guess what I got!\n" - .string "One {STR_VAR_2} with {STR_VAR_1} and$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_24649D:: @ 824649D - .string "one {STR_VAR_2} with {STR_VAR_1}!\p" - .string "I'm willing to offer you the chance\n" - .string "to be in a tag team with me.$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_2464EE:: @ 82464EE - .string "Smart move!\p" - .string "I'll finish up the registration\n" - .string "process quick!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_246529:: @ 8246529 - .string "You'd turn me of all people down?\n" - .string "You'll regret that decision for sure!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_246571:: @ 8246571 - .string "Hiyah!\n" - .string "I am BLACK BELT {STR_VAR_1}.$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_24658C:: @ 824658C - .string "As my companions, I have\n" - .string "one {STR_VAR_2} using {STR_VAR_1}$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_2465B5:: @ 82465B5 - .string "and one {STR_VAR_2} using\n" - .string "{STR_VAR_1}.\p" - .string "Please, grant me my wish!\n" - .string "Allow me to be your tag partner!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_246605:: @ 8246605 - .string "Hiyah!\n" - .string "I will go register forthwith!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_24662A:: @ 824662A - .string "I see… I hope for an opportunity\n" - .string "the next time we meet…$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_246662:: @ 8246662 - .string "Hi, there!\n" - .string "I'm {STR_VAR_1}, and I'm a TUBER!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_246686:: @ 8246686 - .string "I'll tell you what I have.\n" - .string "One {STR_VAR_2} with {STR_VAR_1} and$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_2466B4:: @ 82466B4 - .string "one {STR_VAR_2} with {STR_VAR_1}!\n" - .string "May I please be on your tag team?$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_2466E6:: @ 82466E6 - .string "Thank you!\n" - .string "I'll go register us now!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_24670A:: @ 824670A - .string "If we'd become partners, we could\n" - .string "have been so strong!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_246741:: @ 8246741 - .string "Greetings…\n" - .string "I am HEX MANIAC {STR_VAR_1}…$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_246760:: @ 8246760 - .string "I bear with me one {STR_VAR_1}-using\n" - .string "{STR_VAR_2} together with one$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_246791:: @ 8246791 - .string "{STR_VAR_1}-using {STR_VAR_2}…\p" - .string "I beseech you…\n" - .string "Join me in a tag team…$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_2467C4:: @ 82467C4 - .string "I thank you…\n" - .string "I shall register us…$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_2467E6:: @ 82467E6 - .string "I so longed to join you…$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_2467FF:: @ 82467FF - .string "How do you do? I'm {STR_VAR_1},\n" - .string "and I'm a POKéMON BREEDER!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_246831:: @ 8246831 - .string "I'm raising a couple good ones!\n" - .string "One {STR_VAR_2} with {STR_VAR_1} and$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_246864:: @ 8246864 - .string "one {STR_VAR_2} with {STR_VAR_1}!\p" - .string "How about it?\n" - .string "Feel like making a tag team with me?$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_2468A7:: @ 82468A7 - .string "Thank you kindly!\p" - .string "I'll go take care of the registration\n" - .string "stuff, so you wait right here!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_2468FE:: @ 82468FE - .string "I was looking forward to being\n" - .string "your partner…$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_24692B:: @ 824692B - .string "Well, hello!\n" - .string "I'm TRIATHLETE {STR_VAR_1}!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_24694B:: @ 824694B - .string "Want to know what I run with?\n" - .string "One {STR_VAR_2} with {STR_VAR_1} and$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_24697C:: @ 824697C - .string "one {STR_VAR_2} with {STR_VAR_1}!\p" - .string "Well?\n" - .string "Want to be in a tag team with me?$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_2469B4:: @ 82469B4 - .string "Good going!\p" - .string "I'll be quick and get the registration\n" - .string "all done!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_2469F1:: @ 82469F1 - .string "You and me, we would've been tops.\n" - .string "It's too bad…$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_246A22:: @ 8246A22 - .string "Hey, there! My name's {STR_VAR_1}!\n" - .string "I'm a TRIATHLETE!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_246A4E:: @ 8246A4E - .string "I go on runs with my durable team--\n" - .string "one {STR_VAR_2} with {STR_VAR_1} and$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_246A85:: @ 8246A85 - .string "one {STR_VAR_2} with {STR_VAR_1}!\p" - .string "Not too shabby, huh?\n" - .string "We should be in a tag team together!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_246ACF:: @ 8246ACF - .string "All right!\n" - .string "I'll go register in a flash!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_246AF7:: @ 8246AF7 - .string "I really wanted to battle as your\n" - .string "tag-team partner…$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_246B2B:: @ 8246B2B - .string "I'm BATTLE GIRL {STR_VAR_1}!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_246B3F:: @ 8246B3F - .string "I've been toughening up one\n" - .string "{STR_VAR_1}-using {STR_VAR_2} and$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_246B6B:: @ 8246B6B - .string "one {STR_VAR_1}-using {STR_VAR_2}!\p" - .string "Do you like that combo?\n" - .string "How about you and me join up?$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_246BB2:: @ 8246BB2 - .string "Why, thanks!\p" - .string "I'll get the registration done\n" - .string "right now!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_246BE9:: @ 8246BE9 - .string "With you, I thought we could form\n" - .string "the ultimate tag team…$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_246C22:: @ 8246C22 - .string "I'm TRIATHLETE {STR_VAR_1}!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_246C35:: @ 8246C35 - .string "I've been running with one {STR_VAR_2}\n" - .string "that knows how to use {STR_VAR_1}$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_246C6C:: @ 8246C6C - .string "and one {STR_VAR_2} with {STR_VAR_1}!\p" - .string "We could be in a tag team.\n" - .string "Wouldn't that be great?$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_246CB3:: @ 8246CB3 - .string "Thank you!\p" - .string "I'll go register us, and that's\n" - .string "right now!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_246CE9:: @ 8246CE9 - .string "Aww, that's too bad. We would've been\n" - .string "the toughest tag team around!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_246D2D:: @ 8246D2D - .string "Me?\n" - .string "I'm TUBER {STR_VAR_1}!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_246D3F:: @ 8246D3F - .string "What do I have with me?\n" - .string "One {STR_VAR_2} with {STR_VAR_1} and$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_246D6A:: @ 8246D6A - .string "one {STR_VAR_2} with {STR_VAR_1}!\p" - .string "Hey?\n" - .string "You'll team up with me, right?$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_246D9E:: @ 8246D9E - .string "Okay!\p" - .string "I'll go register!\n" - .string "Let's be excellent together!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_246DD3:: @ 8246DD3 - .string "My POKéMON are tough for sure…\n" - .string "It's too bad you don't want to team up.$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_246E1A:: @ 8246E1A - .string "Yay-hey!\n" - .string "Call me GUITARIST {STR_VAR_1}!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_246E39:: @ 8246E39 - .string "Check out my entourage!\n" - .string "One {STR_VAR_2} with {STR_VAR_1} and$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_246E64:: @ 8246E64 - .string "one {STR_VAR_2} with {STR_VAR_1}!\p" - .string "Yay-hey! Pretty wild, huh?\n" - .string "We'll have to do a duet in a tag team!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_246EB6:: @ 8246EB6 - .string "Yay-hey! Right on!\n" - .string "I'll do that registration stuff now!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_246EEE:: @ 8246EEE - .string "My POKéMON rock hard!\n" - .string "You'll be sorry, I tell you!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_246F21:: @ 8246F21 - .string "Pleased to meet you.\n" - .string "I am {STR_VAR_1}, a GENTLEMAN.$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_246F4C:: @ 8246F4C - .string "I am accompanied by my trusted\n" - .string "{STR_VAR_1}-using {STR_VAR_2} and$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_246F7B:: @ 8246F7B - .string "one {STR_VAR_1}-using {STR_VAR_2}.\p" - .string "May I ask you to join me in a tag-team\n" - .string "partnership arrangement?$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_246FCC:: @ 8246FCC - .string "Ah, I thank you for your trust.\n" - .string "I shall be done with the registration.$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_247013:: @ 8247013 - .string "That is most unfortunate…\p" - .string "I shall look forward to the next\n" - .string "opportunity…$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_24705B:: @ 824705B - .string "Hello, I'm {STR_VAR_1},\n" - .string "and I'm a POKéFAN.$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_24707D:: @ 824707D - .string "I have with me now one {STR_VAR_2}\n" - .string "that knows the move {STR_VAR_1} and$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_2470B2:: @ 82470B2 - .string "one {STR_VAR_2} with {STR_VAR_1}.\p" - .string "Do you like what you see?\n" - .string "Why don't you be my tag partner?$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_2470FD:: @ 82470FD - .string "Thank you!\n" - .string "I'll look after the registration!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_24712A:: @ 824712A - .string "My POKéMON are top grade…\n" - .string "It's too bad you can't appreciate that.$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_24716C:: @ 824716C - .string "Hm!\n" - .string "I am {STR_VAR_1}, and an EXPERT am I!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_24718D:: @ 824718D - .string "The POKéMON that I've toughened up are\n" - .string "one {STR_VAR_2} with {STR_VAR_1} and$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_2471C7:: @ 82471C7 - .string "one {STR_VAR_2} with {STR_VAR_1}!\p" - .string "What say you to a tag team with me?$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_2471FB:: @ 82471FB - .string "Hm!\n" - .string "I shall register us right away!\l" - .string "Let us both do our best!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_247238:: @ 8247238 - .string "I will hope that your choice is\n" - .string "indeed correct…$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_247268:: @ 8247268 - .string "Hello, hello.\n" - .string "I'm {STR_VAR_1}, and I'm an EXPERT.$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_247291:: @ 8247291 - .string "I've raised my POKéMON thoroughly.\n" - .string "One {STR_VAR_2} with {STR_VAR_1} and$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_2472C7:: @ 82472C7 - .string "one {STR_VAR_2} with {STR_VAR_1}--\n" - .string "they're what I have.\p" - .string "Wouldn't you like to team up with me?$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_247313:: @ 8247313 - .string "Good, good.\n" - .string "I'll see to the registration right away.$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_247348:: @ 8247348 - .string "Perhaps we can form a team the next\n" - .string "time we meet.$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_24737A:: @ 824737A - .string "I'm DRAGON TAMER {STR_VAR_1}!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_24738F:: @ 824738F - .string "The team I've been toughening up is\n" - .string "one {STR_VAR_2} with {STR_VAR_1} and$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_2473C6:: @ 82473C6 - .string "one {STR_VAR_2} with {STR_VAR_1}!\p" - .string "How about it?\n" - .string "Want to be my partner?$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_2473FB:: @ 82473FB - .string "Okay, I'll give it my best!\n" - .string "I'll go register now, all right?$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_247438:: @ 8247438 - .string "You're not going to find many tougher\n" - .string "partners than me!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_247470:: @ 8247470 - .string "I'm BIRD KEEPER {STR_VAR_1}!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_247484:: @ 8247484 - .string "What POKéMON do I have?\n" - .string "One {STR_VAR_2} with {STR_VAR_1} and$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_2474AF:: @ 82474AF - .string "one {STR_VAR_2} with {STR_VAR_1}.\p" - .string "Don't you think we'd make a decent\n" - .string "tag team?$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_2474EC:: @ 82474EC - .string "Great, thanks!\n" - .string "I'll look after the registration!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_24751D:: @ 824751D - .string "My POKéMON and I are strong.\n" - .string "What a letdown.$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_24754A:: @ 824754A - .string "I'm NINJA BOY {STR_VAR_1}!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_24755C:: @ 824755C - .string "My POKéMON team consists of one\n" - .string "{STR_VAR_2} with {STR_VAR_1} and$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_24758B:: @ 824758B - .string "one {STR_VAR_2} with {STR_VAR_1}!\p" - .string "Let's be in a tag team together!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_2475BC:: @ 82475BC - .string "Yay!\n" - .string "Let me go register!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_2475D5:: @ 82475D5 - .string "You'll regret not having my tough\n" - .string "POKéMON on your side!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_24760D:: @ 824760D - .string "Hello!\n" - .string "I'm PARASOL LADY {STR_VAR_1}!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_247629:: @ 8247629 - .string "Escorting me now are my {STR_VAR_2}\n" - .string "that uses {STR_VAR_1} and$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_247655:: @ 8247655 - .string "one {STR_VAR_2} that uses\n" - .string "{STR_VAR_1}.\p" - .string "Aren't they nice?\n" - .string "Care to join us in a tag team?$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_24769B:: @ 824769B - .string "Thanks a bunch!\p" - .string "I'll go register at the counter.\n" - .string "Let's not disappoint each other!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_2476ED:: @ 82476ED - .string "My POKéMON are tremendously strong.\n" - .string "How disappointing…$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_247724:: @ 8247724 - .string "Hello.\n" - .string "I'm {STR_VAR_1}, and I'm a BUG MANIAC!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_247749:: @ 8247749 - .string "I have found my POKéMON, yes.\n" - .string "One {STR_VAR_2} with {STR_VAR_1} and$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_24777A:: @ 824777A - .string "one {STR_VAR_2} with {STR_VAR_1}--\n" - .string "they are what I found.\p" - .string "Could I interest you in forming\n" - .string "a tag team?$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_2477CE:: @ 82477CE - .string "Okay!\n" - .string "Understood!\p" - .string "I won't be long with the registration!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_247807:: @ 8247807 - .string "With the POKéMON I found, we wouldn't\n" - .string "have lost…$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_247838:: @ 8247838 - .string "Ahoy, there!\n" - .string "I'm SAILOR {STR_VAR_1}!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_247854:: @ 8247854 - .string "Let me show you my pride and joy!\n" - .string "One {STR_VAR_2} with {STR_VAR_1} and$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_247889:: @ 8247889 - .string "one {STR_VAR_2} with {STR_VAR_1}!\p" - .string "Of course you're not going to turn\n" - .string "me down. We will team up, right?$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_2478DD:: @ 82478DD - .string "I didn't expect any less!\n" - .string "I'll go register now.$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_24790D:: @ 824790D - .string "We would've stormed through\n" - .string "the opposition! Too bad!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_247942:: @ 8247942 - .string "Hi, I'm {STR_VAR_1}.\n" - .string "I'm a COLLECTOR.$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_24795F:: @ 824795F - .string "The jewels in my collection are\n" - .string "my {STR_VAR_2} with {STR_VAR_1} and$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_247991:: @ 8247991 - .string "one {STR_VAR_2} with {STR_VAR_1}!\p" - .string "Swell, huh?\n" - .string "We should be in a team together.$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_2479CE:: @ 82479CE - .string "Oh, yeah!\p" - .string "Well, let's not waste any time.\n" - .string "I'll go register the two of us.$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_247A18:: @ 8247A18 - .string "Well, that's upsetting.\n" - .string "You don't appreciate my POKéMON.$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_247A51:: @ 8247A51 - .string "Howdy, I'm {STR_VAR_1}.\n" - .string "I'm a POKéMON RANGER.$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_247A76:: @ 8247A76 - .string "Keeping me company are one\n" - .string "{STR_VAR_1}-using {STR_VAR_2} and$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_247AA1:: @ 8247AA1 - .string "one {STR_VAR_2} with {STR_VAR_1}!\p" - .string "Don't you think we'd make an impressive\n" - .string "tag team?$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_247AE3:: @ 8247AE3 - .string "That's super!\n" - .string "I'll deal with the registration now.$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_247B16:: @ 8247B16 - .string "Next time, choose my POKéMON,\n" - .string "will you?$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_247B3E:: @ 8247B3E - .string "My name's {STR_VAR_1}.\n" - .string "I'm a POKéMON RANGER!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_247B62:: @ 8247B62 - .string "Let me tell you about my team. I have\n" - .string "one {STR_VAR_2} with {STR_VAR_1} and$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_247B9B:: @ 8247B9B - .string "one {STR_VAR_2} with {STR_VAR_1}!\p" - .string "How would you like to form a tag team\n" - .string "with my little posse?$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_247BE7:: @ 8247BE7 - .string "We'll be at our best!\n" - .string "I'll get the registration done quick!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_247C23:: @ 8247C23 - .string "I hope you'll choose my POKéMON\n" - .string "next time.$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_247C4E:: @ 8247C4E - .string "Pleased to meet you. I'm {STR_VAR_1}.\n" - .string "I consider myself an AROMA LADY.$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_247C8C:: @ 8247C8C - .string "I travel with one {STR_VAR_2}\n" - .string "that uses {STR_VAR_1} and$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_247CB2:: @ 8247CB2 - .string "one {STR_VAR_2} that uses\n" - .string "{STR_VAR_1}.\p" - .string "I hope they strike your fancy.\n" - .string "Would you care to be my partner?$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_247D07:: @ 8247D07 - .string "I'm honored by your acceptance.\n" - .string "I will go register right this instant.$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_247D4E:: @ 8247D4E - .string "It would be wonderful if we could form\n" - .string "a tag team the next time we meet.$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_247D97:: @ 8247D97 - .string "Want to know who I am?\n" - .string "I'm {STR_VAR_1}, the RUIN MANIAC!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_247DC7:: @ 8247DC7 - .string "The POKéMON that I have with me are\n" - .string "one {STR_VAR_2} with {STR_VAR_1} and$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_247DFE:: @ 8247DFE - .string "one {STR_VAR_2} with {STR_VAR_1}!\p" - .string "Intriguing, eh?\n" - .string "How about you and I partner up?$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_247E3E:: @ 8247E3E - .string "That's a sound decision!\n" - .string "I'll go do the registration paperwork.$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_247E7E:: @ 8247E7E - .string "Hmm…\n" - .string "I think my POKéMON are tough…$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_247EA1:: @ 8247EA1 - .string "I'm COOLTRAINER {STR_VAR_1}!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_247EB5:: @ 8247EB5 - .string "The POKéMON I have right now are one\n" - .string "{STR_VAR_2} with {STR_VAR_1} and$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_247EE9:: @ 8247EE9 - .string "one {STR_VAR_2} with {STR_VAR_1}.\n" - .string "Cool, huh?\p" - .string "Don't you think it'd be pretty cool\n" - .string "if we made a tag team?$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_247F3F:: @ 8247F3F - .string "Cool!\n" - .string "I'll go do the registration in a flash!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_247F6D:: @ 8247F6D - .string "I thought that we'd make just\n" - .string "the greatest team ever.$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_247FA3:: @ 8247FA3 - .string "I'm COOLTRAINER {STR_VAR_1}!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_247FB7:: @ 8247FB7 - .string "The team I've been raising has one\n" - .string "{STR_VAR_2} with {STR_VAR_1} and$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_247FE9:: @ 8247FE9 - .string "one {STR_VAR_2} with {STR_VAR_1}.\p" - .string "Does that sound okay?\n" - .string "How about we become tag partners?$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_248031:: @ 8248031 - .string "Sounds A-OK!\n" - .string "I'd better do the registration.$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_24805E:: @ 824805E - .string "I was thinking how we would be\n" - .string "one tough team…$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_24808D:: @ 824808D - .string "Heyo!\n" - .string "I'm {STR_VAR_1}, the POKéMANIAC!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_2480AB:: @ 82480AB - .string "What does a guy like me have?\n" - .string "One {STR_VAR_2} with {STR_VAR_1} and$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_2480DC:: @ 82480DC - .string "one {STR_VAR_2} with {STR_VAR_1},\n" - .string "that's what!\p" - .string "Let's do it!\n" - .string "We'll stomp around as a tag team!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_248128:: @ 8248128 - .string "Good call!\n" - .string "I'll register the both of us!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_248151:: @ 8248151 - .string "My POKéMON are brutal!\n" - .string "It's not my fault if you regret this!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_24818E:: @ 824818E - .string "Yo, there!\n" - .string "I'm KINDLER {STR_VAR_1}!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_2481A9:: @ 82481A9 - .string "You know what my training cooked up?\n" - .string "One {STR_VAR_2} with {STR_VAR_1} and$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_2481E1:: @ 82481E1 - .string "one {STR_VAR_2} with {STR_VAR_1}!\p" - .string "Well, what do you say?\n" - .string "Want to form a tag team?$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_248221:: @ 8248221 - .string "All right!\n" - .string "I'll get on with the registration.$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_24824F:: @ 824824F - .string "Promise you'll partner up with me\n" - .string "the next time we run into each other.$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_248297:: @ 8248297 - .string "I'm {STR_VAR_1}, and I'm a CAMPER!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_2482B1:: @ 82482B1 - .string "I've been raising one {STR_VAR_1}-\n" - .string "using {STR_VAR_2} and one$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_2482DC:: @ 82482DC - .string "{STR_VAR_1}-using {STR_VAR_2}.\p" - .string "Do you think it'd be fun to team up?\n" - .string "I bet it would be!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_248321:: @ 8248321 - .string "Yeah!\n" - .string "Off I go to register!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_24833D:: @ 824833D - .string "Next time, okay?\n" - .string "I want to be on your team.$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_248369:: @ 8248369 - .string "Hello!\n" - .string "I'm {STR_VAR_1}, and I'm a PICNICKER!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_24838D:: @ 824838D - .string "The POKéMON I've been taking are\n" - .string "one {STR_VAR_2} with {STR_VAR_1} and$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_2483C1:: @ 82483C1 - .string "one {STR_VAR_2} with {STR_VAR_1}.\p" - .string "Are you interested in joining me\n" - .string "on a tag team?$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_248401:: @ 8248401 - .string "Why, thank you!\n" - .string "I will do the registration now.$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_248431:: @ 8248431 - .string "It would be nice if I could join you\n" - .string "some other time.$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_248467:: @ 8248467 - .string "I'm PSYCHIC {STR_VAR_1}!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_248477:: @ 8248477 - .string "The twosome I've been raising are\n" - .string "one {STR_VAR_2} with {STR_VAR_1} and$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_2484AC:: @ 82484AC - .string "one {STR_VAR_2} with {STR_VAR_1}.\p" - .string "Would you like to form a tag team\n" - .string "with me?$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_2484E7:: @ 82484E7 - .string "Sure thing!\n" - .string "I'll take care of the registration!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_248517:: @ 8248517 - .string "If we meet again, that's when I'd like\n" - .string "to team up with you.$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_248553:: @ 8248553 - .string "I'm {STR_VAR_1}.\n" - .string "I'm a PSYCHIC.$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_24856A:: @ 824856A - .string "One {STR_VAR_2} with {STR_VAR_1} and$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_24857D:: @ 824857D - .string "one {STR_VAR_2} with {STR_VAR_1}--\n" - .string "they're my disciples.\p" - .string "Doesn't the idea of forming a tag-team\n" - .string "partnership intrigue you?$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_2485E5:: @ 82485E5 - .string "Thank you.\n" - .string "I'll go deal with the registration.$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_248614:: @ 8248614 - .string "I hope there will be another chance\n" - .string "to forge an alliance.$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_24864E:: @ 824864E - .string "I'm SCHOOL KID {STR_VAR_1}!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_248661:: @ 8248661 - .string "One {STR_VAR_1}-using {STR_VAR_2}$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_248671:: @ 8248671 - .string "and one {STR_VAR_1}-using\n" - .string "{STR_VAR_2} are my POKéMON pair.\p" - .string "May I please be your partner on\n" - .string "a tag team?$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_2486C6:: @ 82486C6 - .string "Ooh, thank you!\n" - .string "I'll register at the counter right away!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_2486FF:: @ 82486FF - .string "Please?\n" - .string "May I join you the next time?$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_248725:: @ 8248725 - .string "Hiya! The name's {STR_VAR_1}!\n" - .string "I'm a POKéMON BREEDER!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_248751:: @ 8248751 - .string "The POKéMON I've raised are one\n" - .string "{STR_VAR_1}-using {STR_VAR_2} and$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_248781:: @ 8248781 - .string "one {STR_VAR_1}-using {STR_VAR_2}.\p" - .string "Sound interesting?\n" - .string "How about we form a tag team, then?$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_2487C9:: @ 82487C9 - .string "All righty!\n" - .string "You leave the registration to me!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_2487F7:: @ 82487F7 - .string "You have to team up with me next time,\n" - .string "all right?$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_248829:: @ 8248829 - .string "I'm {STR_VAR_1}, and I'm proud to say\n" - .string "that I am a POKéFAN.$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_24885B:: @ 824885B - .string "The darling POKéMON I've raised are\n" - .string "one {STR_VAR_2} with {STR_VAR_1} and$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_248892:: @ 8248892 - .string "one {STR_VAR_2} with {STR_VAR_1}.\p" - .string "Aren't they just the cutest?\n" - .string "We ought to make a team!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_2488D8:: @ 82488D8 - .string "Thank you, dear!\n" - .string "I'll be on my way to register!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_248908:: @ 8248908 - .string "My darling POKéMON are the best,\n" - .string "I'll have you know. How annoying!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_24894B:: @ 824894B - .string "Hi, I'm SWIMMER {STR_VAR_1}.$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_24895F:: @ 824895F - .string "One {STR_VAR_1}-using {STR_VAR_2}$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_24896F:: @ 824896F - .string "and one {STR_VAR_1}-using\n" - .string "{STR_VAR_2} are what I've trained.\p" - .string "You and me, let's make a tag team.$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_2489BD:: @ 82489BD - .string "That's cool!\n" - .string "I'll register the two of us.$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_2489E7:: @ 82489E7 - .string "If we meet again, you owe me\n" - .string "a tag team!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_248A10:: @ 8248A10 - .string "What's happening?\n" - .string "I'm {STR_VAR_1}, and I'm a TRIATHLETE.$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_248A40:: @ 8248A40 - .string "I got a couple decent POKéMON.\n" - .string "One {STR_VAR_2} with {STR_VAR_1} and$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_248A72:: @ 8248A72 - .string "one {STR_VAR_2} with {STR_VAR_1}!\p" - .string "It'd be neat if we made a tag team\n" - .string "together, so how about it?$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_248AC0:: @ 8248AC0 - .string "Right on!\n" - .string "You wait while I register, okay?$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_248AEB:: @ 8248AEB - .string "I expect you'll let me join you\n" - .string "next time, how's that?$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_248B22:: @ 8248B22 - .string "I'm the TRIATHLETE {STR_VAR_1}!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_248B39:: @ 8248B39 - .string "One {STR_VAR_2} with {STR_VAR_1} and$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_248B4C:: @ 8248B4C - .string "another {STR_VAR_2} that knows how\n" - .string "to use {STR_VAR_1}. That's my pair.\p" - .string "What do you think?\n" - .string "We'd make a good team, I'd say.$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_248BB4:: @ 8248BB4 - .string "I like that answer!\n" - .string "I'll get done with registration fast!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_248BEE:: @ 8248BEE - .string "You'll give me another chance to form\n" - .string "a partnership, won't you?$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_248C2E:: @ 8248C2E - .string "Hi, there! Hello!\n" - .string "I'm {STR_VAR_1}, and I'm a SWIMMER!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_248C5B:: @ 8248C5B - .string "Check out what I've been raising!\n" - .string "One {STR_VAR_2} with {STR_VAR_1} and$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_248C90:: @ 8248C90 - .string "one {STR_VAR_2} with {STR_VAR_1}!\p" - .string "Sweet, huh?\n" - .string "It'd be sweet to form a team, too!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_248CCF:: @ 8248CCF - .string "Much obliged!\n" - .string "I'll get this registration thing done!$" - -BattleFrontier_BattleTowerMultiBattleRoom_Text_248D04:: @ 8248D04 - .string "If we meet again, you have to team up\n" - .string "with me. You'll do that, right?$" - +BattleFrontier_BattleTowerMultiBattleRoom_Movement_FaceAttendant: @ 8249524 + face_left + step_end + +BattleFrontier_BattleTowerMultiBattleRoom_Movement_FaceBattle: @ 8249526 + walk_in_place_fastest_right + step_end + +BattleFrontier_BattleTowerMultiBattleRoom_Movement_Opponent1Enter: @ 8249528 + walk_down + walk_down + walk_down + walk_down + face_left + step_end + +BattleFrontier_BattleTowerMultiBattleRoom_Movement_Opponent2Enter: @ 824952E + walk_right + walk_down + walk_down + walk_down + face_left + step_end + +BattleFrontier_BattleTowerMultiBattleRoom_Movement_Opponent2Exit: @ 8249534 + walk_up + walk_up + walk_up + set_invisible + step_end + +BattleFrontier_BattleTowerMultiBattleRoom_Movement_Opponent1Exit: @ 8249539 + walk_up + walk_up + walk_up + walk_up + step_end + +BattleFrontier_BattleTowerMultiBattleRoom_Movement_AttendantApproachPlayer: @ 824953E + walk_right + walk_right + step_end + +BattleFrontier_BattleTowerMultiBattleRoom_Movement_AttendantReturnToPos: @ 8249541 + walk_left + walk_left + walk_in_place_fastest_right + step_end + +BattleFrontier_BattleTowerMultiBattleRoom_Movement_WalkInPlaceLeft: @ 8249545 + walk_in_place_left + step_end + +BattleFrontier_BattleTowerMultiBattleRoom_Text_ReadyFor2ndOpponentSet: @ 8249547 + .string "The 2nd set of opponents is next.\n" + .string "Are you ready?$" + +BattleFrontier_BattleTowerMultiBattleRoom_Text_ReadyFor3rdOpponentSet: @ 8249578 + .string "The 3rd set of opponents is next.\n" + .string "Are you ready?$" + +BattleFrontier_BattleTowerMultiBattleRoom_Text_ReadyFor4thOpponentSet: @ 82495A9 + .string "The 4th set of opponents is next.\n" + .string "Are you ready?$" + +BattleFrontier_BattleTowerMultiBattleRoom_Text_ReadyFor5thOpponentSet: @ 82495DA + .string "The 5th set of opponents is next.\n" + .string "Are you ready?$" + +BattleFrontier_BattleTowerMultiBattleRoom_Text_ReadyFor6thOpponentSet: @ 824960B + .string "The 6th set of opponents is next.\n" + .string "Are you ready?$" + +BattleFrontier_BattleTowerMultiBattleRoom_Text_ReadyFor7thOpponentSet: @ 824963C + .string "The 7th set of opponents is next.\n" + .string "Are you ready?$" + +@ Unused +BattleFrontier_BattleTowerMultiBattleRoom_Text_2ndOpponentSetNext: @ 824966D + .string "The 2nd set of opponents is next.\n" + .string "Do your best!$" + +@ Unused +BattleFrontier_BattleTowerMultiBattleRoom_Text_3rdOpponentSetNext: @ 824969D + .string "The 3rd set of opponents is next.\n" + .string "Do your best!$" + +@ Unused +BattleFrontier_BattleTowerMultiBattleRoom_Text_4thOpponentSetNext: @ 82496CD + .string "The 4th set of opponents is next.\n" + .string "Do your best!$" + +@ Unused +BattleFrontier_BattleTowerMultiBattleRoom_Text_5thOpponentSetNext: @ 82496FD + .string "The 5th set of opponents is next.\n" + .string "Do your best!$" + +@ Unused +BattleFrontier_BattleTowerMultiBattleRoom_Text_6thOpponentSetNext: @ 824972D + .string "The 6th set of opponents is next.\n" + .string "Do your best!$" + +@ Unused +BattleFrontier_BattleTowerMultiBattleRoom_Text_7thOpponentSetNext: @ 824975D + .string "The 7th set of opponents is next.\n" + .string "Do your best!$" + +gText_LinkStandby3:: @ 824978D + .string "Link standby…$" + +gText_YourPartnerHasRetired:: @ 824979B + .string "Your partner has retired.\p" + .string "Your BATTLE ROOM challenge\n" + .string "will be canceled.$" diff --git a/data/maps/BattleFrontier_BattleTowerCorridor2/map.json b/data/maps/BattleFrontier_BattleTowerMultiCorridor/map.json similarity index 90% rename from data/maps/BattleFrontier_BattleTowerCorridor2/map.json rename to data/maps/BattleFrontier_BattleTowerMultiCorridor/map.json index de898bef45..68de9587c6 100644 --- a/data/maps/BattleFrontier_BattleTowerCorridor2/map.json +++ b/data/maps/BattleFrontier_BattleTowerMultiCorridor/map.json @@ -1,7 +1,7 @@ { - "id": "MAP_BATTLE_FRONTIER_BATTLE_TOWER_CORRIDOR2", - "name": "BattleFrontier_BattleTowerCorridor2", - "layout": "LAYOUT_BATTLE_FRONTIER_BATTLE_TOWER_CORRIDOR2", + "id": "MAP_BATTLE_FRONTIER_BATTLE_TOWER_MULTI_CORRIDOR", + "name": "BattleFrontier_BattleTowerMultiCorridor", + "layout": "LAYOUT_BATTLE_FRONTIER_BATTLE_TOWER_MULTI_CORRIDOR", "music": "MUS_SATTOWER", "region_map_section": "MAPSEC_BATTLE_FRONTIER", "requires_flash": false, diff --git a/data/maps/BattleFrontier_BattleTowerMultiCorridor/scripts.inc b/data/maps/BattleFrontier_BattleTowerMultiCorridor/scripts.inc new file mode 100644 index 0000000000..7af2adfe34 --- /dev/null +++ b/data/maps/BattleFrontier_BattleTowerMultiCorridor/scripts.inc @@ -0,0 +1,176 @@ +BattleFrontier_BattleTowerMultiCorridor_MapScripts:: @ 8248D4A + map_script MAP_SCRIPT_ON_TRANSITION, BattleFrontier_BattleTowerMultiCorridor_OnTransition + map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, BattleFrontier_BattleTowerMultiCorridor_OnWarp + map_script MAP_SCRIPT_ON_FRAME_TABLE, BattleFrontier_BattleTowerMultiCorridor_OnFrame + .byte 0 + + @ On this map the player (OBJ_EVENT_ID_PLAYER) is hidden + @ The player is represented instead by object event 1, which has the gfx id VAR_OBJ_GFX_ID_F + @ The multi partner is represented by object event 4, which has the gfx id VAR_OBJ_GFX_ID_E + +BattleFrontier_BattleTowerMultiCorridor_OnTransition: @ 8248D5A + compare VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_MULTIS + call_if_eq BattleFrontier_BattleTowerMultiCorridor_EventScript_SetObjGfx + compare VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_LINK_MULTIS + call_if_eq BattleFrontier_BattleTowerMultiCorridor_EventScript_SetLinkPlayerGfx + end + +BattleFrontier_BattleTowerMultiCorridor_EventScript_SetObjGfx:: @ 8248D71 + tower_setpartnergfx + checkplayergender + compare VAR_RESULT, FEMALE + goto_if_eq BattleFrontier_BattleTowerMultiCorridor_EventScript_SetPlayerGfxFemale + setvar VAR_OBJ_GFX_ID_F, EVENT_OBJ_GFX_BRENDAN_NORMAL + return + +BattleFrontier_BattleTowerMultiCorridor_EventScript_SetPlayerGfxFemale:: @ 8248D8B + setvar VAR_OBJ_GFX_ID_F, EVENT_OBJ_GFX_MAY_NORMAL + return + +BattleFrontier_BattleTowerMultiCorridor_EventScript_SetLinkPlayerGfx:: @ 8248D91 + special SetBattleTowerLinkPlayerGfx + return + +BattleFrontier_BattleTowerMultiCorridor_OnWarp: @ 8248D95 + map_script_2 VAR_TEMP_1, 0, BattleFrontier_BattleTowerMultiCorridor_EventScript_SetUpObjects + .2byte 0 + +BattleFrontier_BattleTowerMultiCorridor_EventScript_SetUpObjects:: @ 8248D9F + hideobjectat EVENT_OBJ_ID_PLAYER, MAP_BATTLE_FRONTIER_BATTLE_TOWER_MULTI_CORRIDOR + hideobjectat 1, MAP_BATTLE_FRONTIER_BATTLE_TOWER_MULTI_CORRIDOR + hideobjectat 4, MAP_BATTLE_FRONTIER_BATTLE_TOWER_MULTI_CORRIDOR + special OffsetCameraForBattle + end + +BattleFrontier_BattleTowerMultiCorridor_OnFrame: @ 8248DB2 + map_script_2 VAR_TEMP_1, 0, BattleFrontier_BattleTowerMultiCorridor_EventScript_EnterCorridor + .2byte 0 + +BattleFrontier_BattleTowerMultiCorridor_EventScript_EnterCorridor:: @ 8248DBC + lockall + setflag FLAG_ENABLE_MULTI_CORRIDOR_DOOR + setvar VAR_0x8004, 14 @ x coord of far door, used by DrawDoor + setvar VAR_0x8005, 1 @ y coord of far door, used by DrawDoor + opendoor 1, 1 + waitdooranim + clearflag FLAG_ENABLE_MULTI_CORRIDOR_DOOR + showobjectat 1, MAP_BATTLE_FRONTIER_BATTLE_TOWER_MULTI_CORRIDOR + showobjectat 4, MAP_BATTLE_FRONTIER_BATTLE_TOWER_MULTI_CORRIDOR + applymovement 1, BattleFrontier_BattleTowerMultiCorridor_Movement_ExitElevator + applymovement 4, BattleFrontier_BattleTowerMultiCorridor_Movement_ExitElevator + waitmovement 0 + setflag FLAG_ENABLE_MULTI_CORRIDOR_DOOR + setvar VAR_0x8004, 14 @ x coord of far door, used by DrawDoor + setvar VAR_0x8005, 1 @ y coord of far door, used by DrawDoor + closedoor 1, 1 + waitdooranim + clearflag FLAG_ENABLE_MULTI_CORRIDOR_DOOR + applymovement 1, BattleFrontier_BattleTowerMultiCorridor_Movement_PlayerWalkToDoor + applymovement 4, BattleFrontier_BattleTowerMultiCorridor_Movement_PartnerWalkToDoor + applymovement 3, BattleFrontier_BattleTowerMultiCorridor_Movement_PlayerAttendantWalkToDoor + applymovement 2, BattleFrontier_BattleTowerMultiCorridor_Movement_PartnerAttendantWalkToDoor + waitmovement 0 + delay 40 + applymovement 3, Common_Movement_WalkInPlaceFastestUp + applymovement 2, Common_Movement_WalkInPlaceFastestUp + waitmovement 0 + opendoor 7, 1 + waitdooranim + applymovement 3, BattleFrontier_BattleTowerMultiCorridor_Movement_AttendantEnterDoor + applymovement 2, BattleFrontier_BattleTowerMultiCorridor_Movement_AttendantEnterDoor + applymovement 1, BattleFrontier_BattleTowerMultiCorridor_Movement_TrainerEnterDoor + applymovement 4, BattleFrontier_BattleTowerMultiCorridor_Movement_TrainerEnterDoor + waitmovement 0 + closedoor 7, 1 + waitdooranim + delay 30 + setvar VAR_TEMP_1, 1 + call BattleFrontier_BattleTowerMultiCorridor_EventScript_WarpToBattleRoom + releaseall + end + +BattleFrontier_BattleTowerMultiCorridor_EventScript_WarpToBattleRoom:: @ 8248E71 + compare VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_SINGLES + call_if_eq BattleFrontier_BattleTowerMultiCorridor_EventScript_WarpToNormalBattleRoom + compare VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_DOUBLES + call_if_eq BattleFrontier_BattleTowerMultiCorridor_EventScript_WarpToNormalBattleRoom + compare VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_MULTIS + call_if_eq BattleFrontier_BattleTowerMultiCorridor_EventScript_WarpToMultiBattleRoom + compare VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_LINK_MULTIS + call_if_eq BattleFrontier_BattleTowerMultiCorridor_EventScript_WarpToLinkMultiBattleRoom + return + +BattleFrontier_BattleTowerMultiCorridor_EventScript_WarpToNormalBattleRoom:: @ 8248E9E + warp MAP_BATTLE_FRONTIER_BATTLE_TOWER_BATTLE_ROOM, 255, 4, 8 + waitstate + return + +BattleFrontier_BattleTowerMultiCorridor_EventScript_WarpToMultiBattleRoom:: @ 8248EA8 + warp MAP_BATTLE_FRONTIER_BATTLE_TOWER_MULTI_BATTLE_ROOM, 255, 4, 5 + waitstate + return + +@ Unnecessary duplicate of the above +BattleFrontier_BattleTowerMultiCorridor_EventScript_WarpToLinkMultiBattleRoom:: @ 8248EB2 + warp MAP_BATTLE_FRONTIER_BATTLE_TOWER_MULTI_BATTLE_ROOM, 255, 4, 5 + waitstate + return + +BattleFrontier_BattleTowerMultiCorridor_Movement_PlayerWalkToDoor: @ 8248EBC + walk_down + walk_right + walk_right + walk_right + walk_right + walk_right + walk_right + step_end + +BattleFrontier_BattleTowerMultiCorridor_Movement_PartnerWalkToDoor: @ 8248EC4 + walk_down + walk_left + walk_left + walk_left + walk_left + walk_left + walk_left + step_end + +BattleFrontier_BattleTowerMultiCorridor_Movement_PlayerAttendantWalkToDoor: @ 8248ECC + walk_right + walk_right + walk_right + walk_right + walk_right + walk_right + walk_up + walk_in_place_fastest_right + step_end + +BattleFrontier_BattleTowerMultiCorridor_Movement_PartnerAttendantWalkToDoor: @ 8248ED5 + walk_left + walk_left + walk_left + walk_left + walk_left + walk_left + walk_up + walk_in_place_fastest_left + step_end + +BattleFrontier_BattleTowerMultiCorridor_Movement_TrainerEnterDoor: @ 8248EDE + delay_16 + walk_up + walk_up + set_invisible + step_end + +BattleFrontier_BattleTowerMultiCorridor_Movement_AttendantEnterDoor: @ 8248EE3 + walk_up + set_invisible + step_end + +BattleFrontier_BattleTowerMultiCorridor_Movement_ExitElevator: @ 8248EE6 + walk_down + step_end + diff --git a/data/maps/BattleFrontier_BattleTowerMultiPartnerRoom/map.json b/data/maps/BattleFrontier_BattleTowerMultiPartnerRoom/map.json new file mode 100644 index 0000000000..bd292f2c52 --- /dev/null +++ b/data/maps/BattleFrontier_BattleTowerMultiPartnerRoom/map.json @@ -0,0 +1,138 @@ +{ + "id": "MAP_BATTLE_FRONTIER_BATTLE_TOWER_MULTI_PARTNER_ROOM", + "name": "BattleFrontier_BattleTowerMultiPartnerRoom", + "layout": "LAYOUT_BATTLE_FRONTIER_BATTLE_TOWER_MULTI_PARTNER_ROOM", + "music": "MUS_SATTOWER", + "region_map_section": "MAPSEC_BATTLE_FRONTIER", + "requires_flash": false, + "weather": "WEATHER_NONE", + "map_type": "MAP_TYPE_INDOOR", + "allow_bike": false, + "allow_escape_rope": false, + "allow_running": true, + "show_map_name": false, + "battle_scene": "MAP_BATTLE_SCENE_NORMAL", + "connections": null, + "object_events": [ + { + "graphics_id": "EVENT_OBJ_GFX_TEALA", + "x": 11, + "y": 2, + "elevation": 3, + "movement_type": "MOVEMENT_TYPE_FACE_DOWN", + "movement_range_x": 1, + "movement_range_y": 1, + "trainer_type": "0", + "trainer_sight_or_berry_tree_id": "0", + "script": "BattleFrontier_BattleTowerMultiPartnerRoom_EventScript_Attendant", + "flag": "0" + }, + { + "graphics_id": "EVENT_OBJ_GFX_VAR_0", + "x": 2, + "y": 10, + "elevation": 3, + "movement_type": "MOVEMENT_TYPE_LOOK_AROUND", + "movement_range_x": 1, + "movement_range_y": 1, + "trainer_type": "0", + "trainer_sight_or_berry_tree_id": "0", + "script": "BattleFrontier_BattleTowerMultiPartnerRoom_EventScript_Partner1", + "flag": "FLAG_HIDE_BATTLE_TOWER_MULTI_BATTLE_PARTNER_1" + }, + { + "graphics_id": "EVENT_OBJ_GFX_VAR_1", + "x": 17, + "y": 11, + "elevation": 3, + "movement_type": "MOVEMENT_TYPE_FACE_LEFT_AND_RIGHT", + "movement_range_x": 1, + "movement_range_y": 1, + "trainer_type": "0", + "trainer_sight_or_berry_tree_id": "0", + "script": "BattleFrontier_BattleTowerMultiPartnerRoom_EventScript_Partner2", + "flag": "FLAG_HIDE_BATTLE_TOWER_MULTI_BATTLE_PARTNER_2" + }, + { + "graphics_id": "EVENT_OBJ_GFX_VAR_2", + "x": 6, + "y": 9, + "elevation": 3, + "movement_type": "MOVEMENT_TYPE_LOOK_AROUND", + "movement_range_x": 1, + "movement_range_y": 1, + "trainer_type": "0", + "trainer_sight_or_berry_tree_id": "0", + "script": "BattleFrontier_BattleTowerMultiPartnerRoom_EventScript_Partner3", + "flag": "FLAG_HIDE_BATTLE_TOWER_MULTI_BATTLE_PARTNER_3" + }, + { + "graphics_id": "EVENT_OBJ_GFX_VAR_3", + "x": 8, + "y": 13, + "elevation": 3, + "movement_type": "MOVEMENT_TYPE_LOOK_AROUND", + "movement_range_x": 1, + "movement_range_y": 1, + "trainer_type": "0", + "trainer_sight_or_berry_tree_id": "0", + "script": "BattleFrontier_BattleTowerMultiPartnerRoom_EventScript_Partner4", + "flag": "FLAG_HIDE_BATTLE_TOWER_MULTI_BATTLE_PARTNER_4" + }, + { + "graphics_id": "EVENT_OBJ_GFX_VAR_4", + "x": 10, + "y": 11, + "elevation": 3, + "movement_type": "MOVEMENT_TYPE_FACE_UP", + "movement_range_x": 1, + "movement_range_y": 1, + "trainer_type": "0", + "trainer_sight_or_berry_tree_id": "0", + "script": "BattleFrontier_BattleTowerMultiPartnerRoom_EventScript_Partner5", + "flag": "FLAG_HIDE_BATTLE_TOWER_MULTI_BATTLE_PARTNER_5" + }, + { + "graphics_id": "EVENT_OBJ_GFX_VAR_5", + "x": 13, + "y": 10, + "elevation": 3, + "movement_type": "MOVEMENT_TYPE_FACE_RIGHT", + "movement_range_x": 1, + "movement_range_y": 1, + "trainer_type": "0", + "trainer_sight_or_berry_tree_id": "0", + "script": "BattleFrontier_BattleTowerMultiPartnerRoom_EventScript_Partner6", + "flag": "FLAG_HIDE_BATTLE_TOWER_MULTI_BATTLE_PARTNER_6" + }, + { + "graphics_id": "EVENT_OBJ_GFX_VAR_6", + "x": 15, + "y": 13, + "elevation": 3, + "movement_type": "MOVEMENT_TYPE_FACE_UP_AND_LEFT", + "movement_range_x": 1, + "movement_range_y": 1, + "trainer_type": "0", + "trainer_sight_or_berry_tree_id": "0", + "script": "BattleFrontier_BattleTowerMultiPartnerRoom_EventScript_Partner7", + "flag": "FLAG_HIDE_BATTLE_TOWER_MULTI_BATTLE_PARTNER_ALT_1" + }, + { + "graphics_id": "EVENT_OBJ_GFX_VAR_7", + "x": 4, + "y": 12, + "elevation": 3, + "movement_type": "MOVEMENT_TYPE_FACE_RIGHT", + "movement_range_x": 1, + "movement_range_y": 1, + "trainer_type": "0", + "trainer_sight_or_berry_tree_id": "0", + "script": "BattleFrontier_BattleTowerMultiPartnerRoom_EventScript_Partner8", + "flag": "FLAG_HIDE_BATTLE_TOWER_MULTI_BATTLE_PARTNER_ALT_2" + } + ], + "warp_events": [], + "coord_events": [], + "bg_events": [] +} \ No newline at end of file diff --git a/data/maps/BattleFrontier_BattleTowerMultiPartnerRoom/scripts.inc b/data/maps/BattleFrontier_BattleTowerMultiPartnerRoom/scripts.inc new file mode 100644 index 0000000000..e651f785c5 --- /dev/null +++ b/data/maps/BattleFrontier_BattleTowerMultiPartnerRoom/scripts.inc @@ -0,0 +1,1809 @@ +BattleFrontier_BattleTowerMultiPartnerRoom_MapScripts:: @ 8243D92 + map_script MAP_SCRIPT_ON_RESUME, BattleFrontier_BattleTowerMultiPartnerRoom_OnResume + map_script MAP_SCRIPT_ON_TRANSITION, BattleFrontier_BattleTowerMultiPartnerRoom_OnTransition + map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, BattleFrontier_BattleTowerMultiPartnerRoom_OnWarp + map_script MAP_SCRIPT_ON_FRAME_TABLE, BattleFrontier_BattleTowerMultiPartnerRoom_OnFrame + .byte 0 + +BattleFrontier_BattleTowerMultiPartnerRoom_OnResume: @ 8243DA7 + pyramid_healparty + end + +BattleFrontier_BattleTowerMultiPartnerRoom_OnTransition: @ 8243DB0 + goto_if_set FLAG_CHOSEN_MULTI_BATTLE_NPC_PARTNER, BattleFrontier_BattleTowerMultiPartnerRoom_EventScript_ChosePartner + clearflag FLAG_HIDE_BATTLE_TOWER_MULTI_BATTLE_PARTNER_1 + clearflag FLAG_HIDE_BATTLE_TOWER_MULTI_BATTLE_PARTNER_2 + clearflag FLAG_HIDE_BATTLE_TOWER_MULTI_BATTLE_PARTNER_3 + clearflag FLAG_HIDE_BATTLE_TOWER_MULTI_BATTLE_PARTNER_4 + clearflag FLAG_HIDE_BATTLE_TOWER_MULTI_BATTLE_PARTNER_5 + clearflag FLAG_HIDE_BATTLE_TOWER_MULTI_BATTLE_PARTNER_6 + setflag FLAG_HIDE_BATTLE_TOWER_MULTI_BATTLE_PARTNER_ALT_1 + setflag FLAG_HIDE_BATTLE_TOWER_MULTI_BATTLE_PARTNER_ALT_2 + tower_loadpartners + end + +BattleFrontier_BattleTowerMultiPartnerRoom_EventScript_ChosePartner:: @ 8243DDA + setvar VAR_OBJ_GFX_ID_0, EVENT_OBJ_GFX_BOY_1 + setvar VAR_OBJ_GFX_ID_1, EVENT_OBJ_GFX_BOY_1 + setvar VAR_OBJ_GFX_ID_2, EVENT_OBJ_GFX_BOY_1 + setvar VAR_OBJ_GFX_ID_3, EVENT_OBJ_GFX_BOY_1 + setvar VAR_OBJ_GFX_ID_4, EVENT_OBJ_GFX_BOY_1 + setvar VAR_OBJ_GFX_ID_5, EVENT_OBJ_GFX_BOY_1 + setvar VAR_OBJ_GFX_ID_6, EVENT_OBJ_GFX_BOY_1 + setvar VAR_OBJ_GFX_ID_7, EVENT_OBJ_GFX_BOY_1 + setvar VAR_TEMP_1, 1 + setvar VAR_TEMP_3, 1 + setobjectxyperm 1, 10, 2 + end + +BattleFrontier_BattleTowerMultiPartnerRoom_OnWarp: @ 8243E14 + map_script_2 VAR_TEMP_3, 1, BattleFrontier_BattleTowerMultiPartnerRoom_EventScript_TurnPlayerNorth + .2byte 0 + +BattleFrontier_BattleTowerMultiPartnerRoom_EventScript_TurnPlayerNorth:: @ 8243E1E + turnobject EVENT_OBJ_ID_PLAYER, DIR_NORTH + end + +BattleFrontier_BattleTowerMultiPartnerRoom_OnFrame: @ 8243E23 + map_script_2 VAR_TEMP_1, 0, BattleFrontier_BattleTowerMultiPartnerRoom_EventScript_EnterRoom + map_script_2 VAR_TEMP_3, 1, BattleFrontier_BattleTowerMultiPartnerRoom_EventScript_ExitRoom + .2byte 0 + +BattleFrontier_BattleTowerMultiPartnerRoom_EventScript_ExitRoom:: @ 8243E35 + lockall + setvar VAR_TEMP_3, 0 + goto BattleFrontier_BattleTowerMultiPartnerRoom_EventScript_EnterElevator + end + +BattleFrontier_BattleTowerMultiPartnerRoom_EventScript_EnterRoom:: @ 8243E41 + lockall + applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleTowerMultiPartnerRoom_Movement_PlayerEnterRoom + waitmovement 0 + applymovement 1, BattleFrontier_BattleTowerMultiPartnerRoom_Movement_AttendantBlockExit + waitmovement 0 + copyobjectxytoperm 1 + applymovement EVENT_OBJ_ID_PLAYER, Common_Movement_WalkInPlaceFastestUp + waitmovement 0 + msgbox BattleFrontier_BattleTowerMultiPartnerRoom_Text_PleaseFindPartner, MSGBOX_DEFAULT + special HealPlayerParty + setvar VAR_TEMP_1, 1 + releaseall + end + +BattleFrontier_BattleTowerMultiPartnerRoom_Movement_PlayerEnterRoom: @ 8243E75 + walk_down + step_end + +BattleFrontier_BattleTowerMultiPartnerRoom_Movement_AttendantBlockExit: @ 8243E77 + walk_left + walk_in_place_fastest_down + step_end + +BattleFrontier_BattleTowerMultiPartnerRoom_EventScript_Attendant:: @ 8243E7A + lock + faceplayer + message BattleFrontier_BattleTowerMultiPartnerRoom_Text_QuitLookingForPartner + waitmessage + multichoicedefault 20, 8, MULTI_YESNO, 1, 0 + compare VAR_RESULT, 0 + goto_if_eq BattleFrontier_BattleTowerMultiPartnerRoom_EventScript_QuitChallenge + msgbox BattleFrontier_BattleTowerMultiPartnerRoom_Text_PleaseFindPartner2, MSGBOX_DEFAULT + release + end + +BattleFrontier_BattleTowerMultiPartnerRoom_EventScript_QuitChallenge:: @ 8243E9D + frontier_set FRONTIER_DATA_RECORD_DISABLED, TRUE + goto BattleFrontier_BattleTower_EventScript_WarpToLobbyLost + end + +BattleFrontier_BattleTowerMultiPartnerRoom_EventScript_EnterElevator:: @ 8243EB5 + msgbox BattleFrontier_BattleTowerMultiPartnerRoom_Text_ThankYouForChoosingPartner, MSGBOX_DEFAULT + closemessage + applymovement 1, Common_Movement_WalkInPlaceFastestUp + waitmovement 0 + opendoor 10, 1 + waitdooranim + call BattleFrontier_BattleTowerMultiPartnerRoom_EventScript_MoveToElevator + closedoor 10, 1 + waitdooranim + warp MAP_BATTLE_FRONTIER_BATTLE_TOWER_ELEVATOR, 255, 1, 6 + waitstate + releaseall + end + +BattleFrontier_BattleTowerMultiPartnerRoom_EventScript_MoveToElevator:: @ 8243EE4 + applymovement 1, BattleFrontier_BattleTowerMultiPartnerRoom_Movement_AttendantEnterElevator + applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleTowerMultiPartnerRoom_Movement_PlayerEnterElevator + waitmovement 0 + return + +@ Unused +BattleFrontier_BattleTowerMultiPartnerRoom_EventScript_MoveToElevatorEast: @ 8243EF6 + applymovement 1, BattleFrontier_BattleTowerMultiPartnerRoom_Movement_AttendantEnterElevator + applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleTowerMultiPartnerRoom_Movement_PlayerEnterElevatorEast + waitmovement 0 + return + +@ Unused +BattleFrontier_BattleTowerMultiPartnerRoom_EventScript_MoveToElevatorWest: @ 8243F08 + applymovement 1, BattleFrontier_BattleTowerMultiPartnerRoom_Movement_AttendantEnterElevator + applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleTowerMultiPartnerRoom_Movement_PlayerEneterElevatorWest + waitmovement 0 + return + +BattleFrontier_BattleTowerMultiPartnerRoom_Movement_PlayerEnterElevator: @ 8243F1A + walk_up + walk_up + set_invisible + step_end + +@ Functionally unused +BattleFrontier_BattleTowerMultiPartnerRoom_Movement_PlayerEnterElevatorEast: @ 8243F1E + walk_right + walk_up + set_invisible + step_end + +@ Functionally unused +BattleFrontier_BattleTowerMultiPartnerRoom_Movement_PlayerEneterElevatorWest: @ 8243F22 + walk_left + walk_up + set_invisible + step_end + +BattleFrontier_BattleTowerMultiPartnerRoom_Movement_AttendantEnterElevator: @ 8243F26 + walk_up + set_invisible + step_end + +BattleFrontier_BattleTowerMultiPartnerRoom_EventScript_Partner1:: @ 8243F29 + lock + faceplayer + setvar VAR_TEMP_2, 0 + goto BattleFrontier_BattleTowerMultiPartnerRoom_EventScript_TalkToPotentialPartner + end + +BattleFrontier_BattleTowerMultiPartnerRoom_EventScript_TalkToPotentialPartner:: @ 8243F36 + goto_if_set FLAG_CHOSEN_MULTI_BATTLE_NPC_PARTNER, BattleFrontier_BattleTowerMultiPartnerRoom_EventScript_RejectPartner + tower_dopartnermsg PARTNER_MSGID_INTRO + waitmessage + waitbuttonpress + tower_dopartnermsg PARTNER_MSGID_MON1 + waitmessage + waitbuttonpress + tower_dopartnermsg PARTNER_MSGID_MON2_ASK + waitmessage + multichoicedefault 20, 8, MULTI_YESNO, 1, 0 + switch VAR_RESULT + case 1, BattleFrontier_BattleTowerMultiPartnerRoom_EventScript_RejectPartner + case MULTI_B_PRESSED, BattleFrontier_BattleTowerMultiPartnerRoom_EventScript_RejectPartner + tower_dopartnermsg PARTNER_MSGID_ACCEPT + waitmessage + waitbuttonpress + closemessage + compare VAR_FACING, DIR_SOUTH + call_if_ne BattleFrontier_BattleTowerMultiPartnerRoom_EventScript_PartnerExit + compare VAR_FACING, DIR_SOUTH + call_if_eq BattleFrontier_BattleTowerMultiPartnerRoom_EventScript_PartnerExitSouth + removeobject VAR_LAST_TALKED + setflag FLAG_CHOSEN_MULTI_BATTLE_NPC_PARTNER + warpsilent MAP_BATTLE_FRONTIER_BATTLE_TOWER_MULTI_PARTNER_ROOM, 255, 10, 3 + waitstate + release + end + +BattleFrontier_BattleTowerMultiPartnerRoom_EventScript_RejectPartner:: @ 8243FC3 + tower_dopartnermsg PARTNER_MSGID_REJECT + waitmessage + waitbuttonpress + release + end + +BattleFrontier_BattleTowerMultiPartnerRoom_EventScript_PartnerExit:: @ 8243FD4 + applymovement VAR_LAST_TALKED, BattleFrontier_BattleTowerMultiPartnerRoom_Movement_PartnerExit + waitmovement 0 + return + +BattleFrontier_BattleTowerMultiPartnerRoom_EventScript_PartnerExitSouth:: @ 8243FDF + applymovement VAR_LAST_TALKED, BattleFrontier_BattleTowerMultiPartnerRoom_Movement_PartnerExitSouth + waitmovement 0 + return + +BattleFrontier_BattleTowerMultiPartnerRoom_Movement_PartnerExit: @ 8243FEA + walk_fast_up + walk_fast_up + walk_fast_up + walk_fast_up + walk_fast_up + walk_fast_up + walk_fast_up + step_end + +BattleFrontier_BattleTowerMultiPartnerRoom_Movement_PartnerExitSouth: @ 8243FF2 + walk_fast_left + walk_fast_up + walk_fast_up + walk_fast_up + walk_fast_up + walk_fast_up + walk_fast_up + walk_fast_up + step_end + +BattleFrontier_BattleTowerMultiPartnerRoom_EventScript_Partner2:: @ 8243FFB + lock + faceplayer + setvar VAR_TEMP_2, 1 + goto BattleFrontier_BattleTowerMultiPartnerRoom_EventScript_TalkToPotentialPartner + end + +BattleFrontier_BattleTowerMultiPartnerRoom_EventScript_Partner3:: @ 8244008 + lock + faceplayer + setvar VAR_TEMP_2, 2 + goto BattleFrontier_BattleTowerMultiPartnerRoom_EventScript_TalkToPotentialPartner + end + +BattleFrontier_BattleTowerMultiPartnerRoom_EventScript_Partner4:: @ 8244015 + lock + faceplayer + setvar VAR_TEMP_2, 3 + goto BattleFrontier_BattleTowerMultiPartnerRoom_EventScript_TalkToPotentialPartner + end + +BattleFrontier_BattleTowerMultiPartnerRoom_EventScript_Partner5:: @ 8244022 + lock + faceplayer + setvar VAR_TEMP_2, 4 + goto BattleFrontier_BattleTowerMultiPartnerRoom_EventScript_TalkToPotentialPartner + end + +BattleFrontier_BattleTowerMultiPartnerRoom_EventScript_Partner6:: @ 824402F + lock + faceplayer + setvar VAR_TEMP_2, 5 + goto BattleFrontier_BattleTowerMultiPartnerRoom_EventScript_TalkToPotentialPartner + end + +BattleFrontier_BattleTowerMultiPartnerRoom_EventScript_Partner7:: @ 824403C + lock + faceplayer + setvar VAR_TEMP_2, 6 + goto BattleFrontier_BattleTowerMultiPartnerRoom_EventScript_TalkToPotentialPartner + end + +BattleFrontier_BattleTowerMultiPartnerRoom_EventScript_Partner8:: @ 8244049 + lock + faceplayer + setvar VAR_TEMP_2, 7 + goto BattleFrontier_BattleTowerMultiPartnerRoom_EventScript_TalkToPotentialPartner + end + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_PleaseFindPartner: @ 8244056 + .string "Please find a partner from out of\n" + .string "the TRAINERS gathered here.$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_QuitLookingForPartner: @ 8244094 + .string "{PLAYER}, you have not found a partner\n" + .string "for your tag team.\p" + .string "Would you like to quit looking and\n" + .string "return to the reception counter?$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_PleaseFindPartner2: @ 824410C + .string "Then, please find a partner from\n" + .string "the TRAINERS gathered here.$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_ThankYouForChoosingPartner:: @ 8244149 + .string "Thank you for choosing a partner.\p" + .string "I will now show you to your\n" + .string "MULTI BATTLE ROOM.$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_UnusedApprentice1Intro:: @ 824419A + .string "I'm {STR_VAR_1}'s no. {STR_VAR_2} apprentice.\n" + .string "You can call me {STR_VAR_3}!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_UnusedApprentice1Mon1:: @ 82441CA + .string "On {STR_VAR_1}'s advice, I brought\n" + .string "one {STR_VAR_3} with {STR_VAR_2} and$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_UnusedApprentice1Mon2Ask:: @ 82441F7 + .string "one {STR_VAR_2} with {STR_VAR_1}.\p" + .string "Please, let me join you as a tag team.$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_UnusedApprentice1Accept:: @ 824422E + .string "Thank you!\n" + .string "I'll go register right now.$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_UnusedApprentice1Reject:: @ 8244255 + .string "I really wanted to form a tag team\n" + .string "with you, {PLAYER}…$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_UnusedApprentice2Intro:: @ 8244286 + .string "I am {STR_VAR_1}'s no. {STR_VAR_2} apprentice.\n" + .string "My name is {STR_VAR_3}.$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_UnusedApprentice2Mon1:: @ 82442B2 + .string "I got advice from {STR_VAR_1} and chose\n" + .string "one {STR_VAR_3} with {STR_VAR_2} and$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_UnusedApprentice2Mon2Ask:: @ 82442E4 + .string "one {STR_VAR_2} with {STR_VAR_1}.\p" + .string "Please, let's form a tag team!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_UnusedApprentice2Accept:: @ 8244313 + .string "Thank you very much!\n" + .string "I'll be done with registration quickly!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_UnusedApprentice2Reject:: @ 8244350 + .string "{PLAYER}, I was hoping that I could\n" + .string "partner up with you…$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice1Intro:: @ 8244383 + .string "Um, my name's {STR_VAR_3}, and I'm\n" + .string "{STR_VAR_1}'s no. {STR_VAR_2} apprentice.\p" + .string "Snivel…\p" + .string "I'm sorry!\n" + .string "This tension is making me cry…$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice1Mon1:: @ 82443E7 + .string "{STR_VAR_3} advised me, so I have\n" + .string "one {STR_VAR_2} with {STR_VAR_1} and$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice1Mon2Ask:: @ 8244413 + .string "one {STR_VAR_2} with {STR_VAR_1}.\p" + .string "Snivel…\n" + .string "Please, please team up with me!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice1Accept:: @ 824444B + .string "Oh, really? You will?\n" + .string "Awesome! Wicked! Awoooh!\p" + .string "Oh… I'm sorry…\n" + .string "I'm so happy, I'm crying…\p" + .string "I'll go register right away.\n" + .string "Please don't go away!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice1Reject:: @ 82444D6 + .string "Oh, b-but…\n" + .string "Sob… Waaaaah!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice2Intro:: @ 82444EF + .string "Hi, there! I'm {STR_VAR_3}!\n" + .string "I'm {STR_VAR_1}'s no. {STR_VAR_2} apprentice!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice2Mon1:: @ 824451E + .string "{STR_VAR_3} recommended my crew.\n" + .string "One {STR_VAR_2} with {STR_VAR_1} and$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice2Mon2Ask:: @ 8244549 + .string "one {STR_VAR_2} with {STR_VAR_1},\n" + .string "that's what I have! Cool, huh?\p" + .string "So come on!\n" + .string "Let's form a tag team!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice2Accept:: @ 824459B + .string "Yay! Great!\n" + .string "Okay, I'll go register, okay?$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice2Reject:: @ 82445C5 + .string "Aww, why?\n" + .string "I wanted to team up, {PLAYER}!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice3Intro:: @ 82445E8 + .string "I'm {STR_VAR_3}, the no. {STR_VAR_2} apprentice\n" + .string "of the famous {STR_VAR_1}!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice3Mon1:: @ 8244618 + .string "I looked to {STR_VAR_3} for advice.\n" + .string "One {STR_VAR_1}-using {STR_VAR_2}$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice3Mon2Ask:: @ 8244643 + .string "and one {STR_VAR_2} with {STR_VAR_1},\n" + .string "that's my pair.\p" + .string "Please, will you join me in\n" + .string "a tag team?$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice3Accept:: @ 824468F + .string "Thank you!\n" + .string "I'll register right away!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice3Reject:: @ 82446B4 + .string "{PLAYER}, I had been hoping to join\n" + .string "you in a tag team…$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice4Intro:: @ 82446E5 + .string "Um… I'm sincerely happy that you\n" + .string "would take the time to talk to me.\p" + .string "I'm {STR_VAR_3}.\n" + .string "I'm {STR_VAR_1}'s no. {STR_VAR_2} apprentice…$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice4Mon1:: @ 824474D + .string "{STR_VAR_3} gave me advice.\n" + .string "I'm very grateful for it.\p" + .string "I have a team of one {STR_VAR_2}\n" + .string "with {STR_VAR_1} and$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice4Mon2Ask:: @ 824479E + .string "one {STR_VAR_2} with {STR_VAR_1}.\n" + .string "I know I'm asking a lot…\p" + .string "I don't think you'll be willing to,\n" + .string "but may I join you as a partner?$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice4Accept:: @ 824480C + .string "Really? I can't believe it!\n" + .string "I can't believe you'll let me join you!\l" + .string "I… I won't let you down!\p" + .string "Um… If it's really okay, I'll go register\n" + .string "right this instant!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice4Reject:: @ 82448A7 + .string "Oh…\n" + .string "I didn't think I was good enough…$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice5Intro:: @ 82448CD + .string "Hi, I'm {STR_VAR_3}.\n" + .string "I'm {STR_VAR_1}'s no. {STR_VAR_2} apprentice!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice5Mon1:: @ 82448F5 + .string "{STR_VAR_3} told me that it would be\n" + .string "good to make this team:\l" + .string "one {STR_VAR_1}-using {STR_VAR_2}$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice5Mon2Ask:: @ 8244939 + .string "and one {STR_VAR_2} that knows how\n" + .string "to use {STR_VAR_1}.\p" + .string "Not bad, huh?\n" + .string "Want me to team up with you?$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice5Accept:: @ 8244989 + .string "Okay, glad to join you!\n" + .string "I hope you won't mess things up for me!\l" + .string "I'll do my registration now.$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice5Reject:: @ 82449E6 + .string "Huh? Why did you turn me down?\n" + .string "You're no judge of character!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice6Intro:: @ 8244A23 + .string "I'm {STR_VAR_3} and I'm a TRIATHLETE.\n" + .string "I'm busy every day what with jogging,\l" + .string "training, and rapping.\p" + .string "I also happen to be {STR_VAR_1}'s\n" + .string "no. {STR_VAR_2} apprentice.$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice6Mon1:: @ 8244AA9 + .string "This is what {STR_VAR_3} recommended.\n" + .string "One {STR_VAR_1}-using {STR_VAR_2}$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice6Mon2Ask:: @ 8244AD6 + .string "and one {STR_VAR_1}-using\n" + .string "{STR_VAR_2}.\p" + .string "I put a lot of effort into raising\n" + .string "them, even though I'm busy.\p" + .string "Let's form a tag team\n" + .string "and give it a go!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice6Accept:: @ 8244B52 + .string "Thanks, that's the spirit!\n" + .string "Hang tight while I go register, okay?$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice6Reject:: @ 8244B93 + .string "I took time from my busy schedule\n" + .string "to be here! Give me a break!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice7Intro:: @ 8244BD2 + .string "Hi!\n" + .string "How's it going?\p" + .string "I'm {STR_VAR_3}, {STR_VAR_1}'s\n" + .string "no. {STR_VAR_2} apprentice. Glad to meet you!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice7Mon1:: @ 8244C18 + .string "Listen, listen! You have to hear about\n" + .string "the POKéMON {STR_VAR_3} recommended.\l" + .string "One {STR_VAR_2} with {STR_VAR_1} and$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice7Mon2Ask:: @ 8244C6E + .string "one {STR_VAR_2} with {STR_VAR_1}.\n" + .string "Of course I raised them superbly!\p" + .string "So, want to team up?\n" + .string "I'm sure it'll be a great combo!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice7Accept:: @ 8244CD6 + .string "Yay, I think this will be fun!\n" + .string "I'll go register!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice7Reject:: @ 8244D07 + .string "Oh, you're mean!\n" + .string "I come recommended, you know.$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice8Intro:: @ 8244D36 + .string "Please let me introduce myself.\n" + .string "I am {STR_VAR_3}.\p" + .string "I serve as {STR_VAR_1}'s\n" + .string "no. {STR_VAR_2} apprentice.$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice8Mon1:: @ 8244D82 + .string "I sought the sage advice of\n" + .string "{STR_VAR_3} and raised my team\l" + .string "of one {STR_VAR_2} with {STR_VAR_1}$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice8Mon2Ask:: @ 8244DC6 + .string "and one {STR_VAR_2} with {STR_VAR_1}.\p" + .string "Please agree to a tag team with me!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice8Accept:: @ 8244DFE + .string "Oh… I'm delighted!\n" + .string "I promise to give you my best!\p" + .string "Of course I will register us!\n" + .string "Please wait!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice8Reject:: @ 8244E5B + .string "I had been hoping to join you,\n" + .string "{PLAYER}…$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice9Intro:: @ 8244E7E + .string "Eek! You spoke to me!\n" + .string "I… I'm overjoyed!\p" + .string "I'm {STR_VAR_3}! I'm {STR_VAR_1}'s\n" + .string "no. {STR_VAR_2} apprentice!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice9Mon1:: @ 8244ECA + .string "On {STR_VAR_3}'s advice, I trained\n" + .string "one {STR_VAR_1}-using {STR_VAR_2}$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice9Mon2Ask:: @ 8244EF4 + .string "and one {STR_VAR_1}-using\n" + .string "{STR_VAR_2}.\p" + .string "Please, can you grant me my wish?\n" + .string "I want to be your tag-team partner!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice9Accept:: @ 8244F4F + .string "Eek! I… I feel giddy!\n" + .string "Thank you so much!\l" + .string "I'll go register us right away!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice9Reject:: @ 8244F98 + .string "Waaah! Don't you feel any pity?\n" + .string "But that makes you cooler…$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice10Intro:: @ 8244FD3 + .string "Yeehaw! I'm {STR_VAR_1}'s\n" + .string "no. {STR_VAR_2} apprentice!\p" + .string "{STR_VAR_3}'s my name, hello, hello!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice10Mon1:: @ 8245013 + .string "My mentor {STR_VAR_3} recommended\n" + .string "one {STR_VAR_1}-master {STR_VAR_2}$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice10Mon2Ask:: @ 824503D + .string "and one {STR_VAR_1}-master\n" + .string "{STR_VAR_2}.\p" + .string "Good stuff, huh?\n" + .string "You'll partner with me, won't you?$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice10Accept:: @ 8245087 + .string "Okay, excellent!\n" + .string "I'll get the registration done quickly!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice10Reject:: @ 82450C0 + .string "Gwaaah!\n" + .string "You're a calculating one, {PLAYER}!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice11Intro:: @ 82450E6 + .string "Hey! There's big trouble! This is\n" + .string "the BATTLE TOWER's last day!\p" + .string "… … … … … …\n" + .string "I'm only joking!\p" + .string "People call me {STR_VAR_3} and I do, too!\n" + .string "I'm {STR_VAR_1}'s 1,000th apprentice!\l" + .string "Actually, I'm no. {STR_VAR_2}!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice11Mon1:: @ 8245196 + .string "{STR_VAR_3} gave me some advice.\n" + .string "{STR_VAR_2} with {STR_VAR_1} and$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice11Mon2Ask:: @ 82451BD + .string "{STR_VAR_2} with {STR_VAR_1}.\n" + .string "I've got ten of each kind!\l" + .string "Actually, just one of each!\p" + .string "How about it?\n" + .string "Want to try tag battles with me?$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice11Accept:: @ 824522F + .string "Yippee!\n" + .string "I'll give you a POKéMON as my thanks!\p" + .string "Just joking! But I will really go do\n" + .string "the registration, okay?$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice11Reject:: @ 824529A + .string "Oh, that's so cold! I'll have to wreck\n" + .string "the BATTLE TOWER for that!\p" + .string "Of course I won't!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice12Intro:: @ 82452EF + .string "Hey, there, I'm rockin' and a-rollin'!\n" + .string "POKéMON, I be controllin'!\p" + .string "I'm {STR_VAR_3} the rappin' SAILOR.\n" + .string "Don't be mistakin' me for no wailer!\p" + .string "I'm {STR_VAR_1}'s no. {STR_VAR_2} apprentice.\n" + .string "Me, you shouldn't be quick to dismiss!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice12Mon1:: @ 82453B4 + .string "With the advice of {STR_VAR_3} I did\n" + .string "abide, put together my team of pride!\l" + .string "One {STR_VAR_1}-using {STR_VAR_2}$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice12Mon2Ask:: @ 8245406 + .string "and one {STR_VAR_1}-using\n" + .string "{STR_VAR_2}!\p" + .string "Our meeting we should commemorate,\n" + .string "with a tag-team victory to celebrate!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice12Accept:: @ 8245464 + .string "Hey, hey, I like your style!\n" + .string "Our registration, I will go file!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice12Reject:: @ 82454A3 + .string "Oh, hey, {PLAYER}, now that's cold!\n" + .string "If I may be so bold!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice13Intro:: @ 82454D6 + .string "Yippee-yahoo!\n" + .string "Oh, don't run! I was just having fun!\p" + .string "Howdy! I'm {STR_VAR_3}!\n" + .string "I'm {STR_VAR_1}'s no. {STR_VAR_2} apprentice!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice13Mon1:: @ 8245535 + .string "{STR_VAR_3} told me what to do.\n" + .string "So one {STR_VAR_1}-using {STR_VAR_2}$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice13Mon2Ask:: @ 824555F + .string "and one {STR_VAR_1}-using\n" + .string "{STR_VAR_2}, I did choose.\p" + .string "So, what do you say?\n" + .string "Come on, make my day!\p" + .string "Please, I'm begging you!\n" + .string "Let me join you, don't leave me blue!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice13Accept:: @ 82455EC + .string "Yeahah! Luck is with me!\n" + .string "It sure makes me happy!\p" + .string "Before we go join the fray,\n" + .string "I'll go register right away!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice13Reject:: @ 8245656 + .string "You're turning me down?\n" + .string "{PLAYER}, you're making me frown!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice14Intro:: @ 824568A + .string "Cough!\p" + .string "Oh, sorry, I have a cold.\n" + .string "My POKéMON are fine, though.\p" + .string "My name's {STR_VAR_3}, {STR_VAR_1}'s\n" + .string "no. {STR_VAR_2} apprentice. Cough!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice14Mon1:: @ 82456F5 + .string "I took {STR_VAR_3}'s advice to heart\n" + .string "and put together my team of\l" + .string "one {STR_VAR_2} with {STR_VAR_1} and$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice14Mon2Ask:: @ 8245740 + .string "one {STR_VAR_2} with {STR_VAR_1}.\p" + .string "I trained them every day,\n" + .string "even in wind and rain.\p" + .string "That's why I have this cold,\n" + .string "I think.\p" + .string "That's what I'm about.\n" + .string "Want to be my tag partner?$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice14Accept:: @ 82457D9 + .string "Thanks, I appreciate this!\n" + .string "Cough, cough!\l" + .string "Hang on while I go register.$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice14Reject:: @ 824581F + .string "Oh, you won't?\n" + .string "{PLAYER}, I think we'd make a good pair.$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice15Intro:: @ 8245851 + .string "Oh, hello!\n" + .string "This is nerve-racking.\p" + .string "I'm {STR_VAR_3}.\n" + .string "I'm the no. {STR_VAR_2} apprentice of {STR_VAR_1}.$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice15Mon1:: @ 824589C + .string "{STR_VAR_3} said this team'll be good--\n" + .string "one {STR_VAR_2} with {STR_VAR_1} and$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice15Mon2Ask:: @ 82458CE + .string "one {STR_VAR_2} with {STR_VAR_1}.\p" + .string "I'm feeling self-conscious about this,\n" + .string "but will you let me join you?$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice15Accept:: @ 8245923 + .string "Oh, gee, thank you!\n" + .string "I feel bashful, but I'll do my best!\p" + .string "I'll go get the registration done.$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice15Reject:: @ 824597F + .string "Oh, please don't say no!\n" + .string "I feel self-conscious enough already…$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice16Intro:: @ 82459BE + .string "I am {STR_VAR_3}, and that's no lie.\n" + .string "I am {STR_VAR_1}'s no. {STR_VAR_2} apprentice.$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice16Mon1:: @ 82459F7 + .string "{STR_VAR_3} recommended my team.\p" + .string "Since the advice sounded sincere,\n" + .string "I decided to bring with me\l" + .string "my {STR_VAR_1}-using {STR_VAR_2} and$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice16Mon2Ask:: @ 8245A5F + .string "my {STR_VAR_1}-using {STR_VAR_2}.\p" + .string "If possible, I would like you to accept\n" + .string "me as your tag-team partner.$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice16Accept:: @ 8245AB4 + .string "You really will accept me?\n" + .string "It would be too terrible otherwise.\p" + .string "But since you've agreed, this is fine.\n" + .string "I shall go register the both of us.$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice16Reject:: @ 8245B3E + .string "Hm? Now why would you refuse?\n" + .string "Is this your idea of a joke?$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_LassIntro:: @ 8245B79 + .string "I'm {STR_VAR_1}, and I'm a LASS!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_LassMon1:: @ 8245B91 + .string "What I have are one {STR_VAR_2}\n" + .string "that uses {STR_VAR_1} and one$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_LassMon2Ask:: @ 8245BBD + .string "{STR_VAR_2} that uses {STR_VAR_1}.\n" + .string "Those are what I have with me.\p" + .string "Will you be my partner?$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_LassAccept:: @ 8245C05 + .string "Thank you!\n" + .string "I'll go do the registration!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_LassReject:: @ 8245C2D + .string "You don't want to be my partner?\n" + .string "You'll regret it later!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_YoungsterIntro:: @ 8245C66 + .string "Hello!\p" + .string "I'm YOUNGSTER {STR_VAR_1}!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_YoungsterMon1:: @ 8245C7F + .string "Want to know what I have?\n" + .string "One {STR_VAR_2} with {STR_VAR_1} and$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_YoungsterMon2Ask:: @ 8245CAC + .string "one {STR_VAR_2} with {STR_VAR_1}!\p" + .string "You'll be my tag-team partner,\n" + .string "won't you?$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_YoungsterAccept:: @ 8245CE6 + .string "Yay!\n" + .string "I'll go and register, okay?$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_YoungsterReject:: @ 8245D07 + .string "Aww! If you'd form a tag team with\n" + .string "my POKéMON, we'd be unstoppable!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_HikerIntro:: @ 8245D4B + .string "Yahoo!\n" + .string "I'm HIKER {STR_VAR_1}!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_HikerMon1:: @ 8245D60 + .string "Know what I have with me?\n" + .string "My {STR_VAR_1}-using {STR_VAR_2} and$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_HikerMon2Ask:: @ 8245D8D + .string "my {STR_VAR_1}-using {STR_VAR_2}!\p" + .string "Sounds good, eh?\n" + .string "Want to form a tag team?$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_HikerAccept:: @ 8245DC7 + .string "Yahoo!\n" + .string "I'll go do the registering, then.$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_HikerReject:: @ 8245DF0 + .string "I would've liked to battle with you\n" + .string "at my side.$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_BeautyIntro:: @ 8245E20 + .string "Hello!\n" + .string "I'm {STR_VAR_1}, and I'm a BEAUTY!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_BeautyMon1:: @ 8245E41 + .string "Do you know what I've been raising?\n" + .string "One {STR_VAR_2} with {STR_VAR_1} and$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_BeautyMon2Ask:: @ 8245E78 + .string "one {STR_VAR_2} with {STR_VAR_1}!\p" + .string "What do you think?\n" + .string "Want to make a tag team together?$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_BeautyAccept:: @ 8245EBD + .string "Wonderful!\n" + .string "I'll get the registration done now!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_BeautyReject:: @ 8245EEC + .string "How disappointing!\p" + .string "We two together--we would've been\n" + .string "the best!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_FishermanIntro:: @ 8245F2B + .string "Yo!\p" + .string "You know who I am?\n" + .string "I'm {STR_VAR_1} the FISHERMAN!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_FishermanMon1:: @ 8245F58 + .string "I've got with me a team of one\n" + .string "{STR_VAR_1}-using {STR_VAR_2} and$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_FishermanMon2Ask:: @ 8245F87 + .string "one {STR_VAR_1}-using {STR_VAR_2}.\p" + .string "So, how about it?\n" + .string "Will you battle at my side?$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_FishermanAccept:: @ 8245FC6 + .string "Good, good!\n" + .string "Leave it up to me!\p" + .string "I'll go and register us now.$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_FishermanReject:: @ 8246002 + .string "We matched up perfectly, too…$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_LadyIntro:: @ 8246020 + .string "Glad to make your acquaintance.\n" + .string "I am {STR_VAR_1}, a LADY.$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_LadyMon1:: @ 8246051 + .string "I am accompanied by a team of\n" + .string "one {STR_VAR_2} with {STR_VAR_1} and$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_LadyMon2Ask:: @ 8246082 + .string "one {STR_VAR_2} with {STR_VAR_1}.\p" + .string "I hope I meet your approval.\n" + .string "For I wish to have you as my partner.$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_LadyAccept:: @ 82460D5 + .string "I thank you sincerely.\n" + .string "I shall handle the registration.$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_LadyReject:: @ 824610D + .string "I'm sure that you will regret not\n" + .string "having me as your partner.$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_CyclingTriathleteFIntro:: @ 824614A + .string "I'm TRIATHLETE {STR_VAR_1}!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_CyclingTriathleteFMon1:: @ 824615D + .string "What I have…\n" + .string "One {STR_VAR_2} with {STR_VAR_1} and$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_CyclingTriathleteFMon2Ask:: @ 824617D + .string "one {STR_VAR_2} with {STR_VAR_1}!\n" + .string "That's my pair!\p" + .string "Please?\n" + .string "Will you form a tag team with me?$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_CyclingTriathleteFAccept:: @ 82461C7 + .string "Gee, thanks!\n" + .string "I'll go register at the counter.$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_CyclingTriathleteFReject:: @ 82461F5 + .string "We two together, we would've been\n" + .string "tough for certain!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_BugCatcherIntro:: @ 824622A + .string "Hiya!\n" + .string "I'm BUG CATCHER {STR_VAR_1}!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_BugCatcherMon1:: @ 8246244 + .string "Check out what I have!\n" + .string "One {STR_VAR_2} with {STR_VAR_1} and$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_BugCatcherMon2Ask:: @ 824626E + .string "one {STR_VAR_2} with {STR_VAR_1}!\p" + .string "So, listen!\n" + .string "Do you want to form a tag team?$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_BugCatcherAccept:: @ 82462AA + .string "Gotcha!\p" + .string "I'll go do the registration stuff\n" + .string "at the counter.$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_BugCatcherReject:: @ 82462E4 + .string "Aww, my POKéMON are awesome.\n" + .string "I hope you won't regret this!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_SchoolKidMIntro:: @ 824631F + .string "Good day!\n" + .string "I'm SCHOOL KID {STR_VAR_1}!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_SchoolKidMMon1:: @ 824633C + .string "What I've been raising are one\n" + .string "{STR_VAR_2} that uses {STR_VAR_1}$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_SchoolKidMMon2Ask:: @ 824636B + .string "and one {STR_VAR_2} that uses\n" + .string "{STR_VAR_1}.\p" + .string "Not too bad, don't you think?\n" + .string "Would you care to form a tag team?$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_SchoolKidMAccept:: @ 82463C5 + .string "Thank you very much!\n" + .string "I'll get done with the registration.$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_SchoolKidMReject:: @ 82463FF + .string "That's too bad…\p" + .string "I was hoping that I could learn\n" + .string "from you as your partner…$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_RichBoyIntro:: @ 8246449 + .string "Yo! Let me tell you who I am!\n" + .string "I'm RICH BOY {STR_VAR_1}!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_RichBoyMon1:: @ 8246478 + .string "Guess what I got!\n" + .string "One {STR_VAR_2} with {STR_VAR_1} and$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_RichBoyMon2Ask:: @ 824649D + .string "one {STR_VAR_2} with {STR_VAR_1}!\p" + .string "I'm willing to offer you the chance\n" + .string "to be in a tag team with me.$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_RichBoyAccept:: @ 82464EE + .string "Smart move!\p" + .string "I'll finish up the registration\n" + .string "process quick!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_RichBoyReject:: @ 8246529 + .string "You'd turn me of all people down?\n" + .string "You'll regret that decision for sure!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_BlackBeltIntro:: @ 8246571 + .string "Hiyah!\n" + .string "I am BLACK BELT {STR_VAR_1}.$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_BlackBeltMon1:: @ 824658C + .string "As my companions, I have\n" + .string "one {STR_VAR_2} using {STR_VAR_1}$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_BlackBeltMon2Ask:: @ 82465B5 + .string "and one {STR_VAR_2} using\n" + .string "{STR_VAR_1}.\p" + .string "Please, grant me my wish!\n" + .string "Allow me to be your tag partner!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_BlackBeltAccept:: @ 8246605 + .string "Hiyah!\n" + .string "I will go register forthwith!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_BlackBeltReject:: @ 824662A + .string "I see… I hope for an opportunity\n" + .string "the next time we meet…$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_TuberFIntro:: @ 8246662 + .string "Hi, there!\n" + .string "I'm {STR_VAR_1}, and I'm a TUBER!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_TuberFMon1:: @ 8246686 + .string "I'll tell you what I have.\n" + .string "One {STR_VAR_2} with {STR_VAR_1} and$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_TuberFMon2Ask:: @ 82466B4 + .string "one {STR_VAR_2} with {STR_VAR_1}!\n" + .string "May I please be on your tag team?$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_TuberFAccept:: @ 82466E6 + .string "Thank you!\n" + .string "I'll go register us now!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_TuberFReject:: @ 824670A + .string "If we'd become partners, we could\n" + .string "have been so strong!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_HexManiacIntro:: @ 8246741 + .string "Greetings…\n" + .string "I am HEX MANIAC {STR_VAR_1}…$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_HexManiacMon1:: @ 8246760 + .string "I bear with me one {STR_VAR_1}-using\n" + .string "{STR_VAR_2} together with one$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_HexManiacMon2Ask:: @ 8246791 + .string "{STR_VAR_1}-using {STR_VAR_2}…\p" + .string "I beseech you…\n" + .string "Join me in a tag team…$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_HexManiacAccept:: @ 82467C4 + .string "I thank you…\n" + .string "I shall register us…$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_HexManiacReject:: @ 82467E6 + .string "I so longed to join you…$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_PkmnBreederMIntro:: @ 82467FF + .string "How do you do? I'm {STR_VAR_1},\n" + .string "and I'm a POKéMON BREEDER!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_PkmnBreederMMon1:: @ 8246831 + .string "I'm raising a couple good ones!\n" + .string "One {STR_VAR_2} with {STR_VAR_1} and$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_PkmnBreederMMon2Ask:: @ 8246864 + .string "one {STR_VAR_2} with {STR_VAR_1}!\p" + .string "How about it?\n" + .string "Feel like making a tag team with me?$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_PkmnBreederMAccept:: @ 82468A7 + .string "Thank you kindly!\p" + .string "I'll go take care of the registration\n" + .string "stuff, so you wait right here!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_PkmnBreederMReject:: @ 82468FE + .string "I was looking forward to being\n" + .string "your partner…$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_RunningTriathleteFIntro:: @ 824692B + .string "Well, hello!\n" + .string "I'm TRIATHLETE {STR_VAR_1}!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_RunningTriathleteFMon1:: @ 824694B + .string "Want to know what I run with?\n" + .string "One {STR_VAR_2} with {STR_VAR_1} and$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_RunningTriathleteFMon2Ask:: @ 824697C + .string "one {STR_VAR_2} with {STR_VAR_1}!\p" + .string "Well?\n" + .string "Want to be in a tag team with me?$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_RunningTriathleteFAccept:: @ 82469B4 + .string "Good going!\p" + .string "I'll be quick and get the registration\n" + .string "all done!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_RunningTriathleteFReject:: @ 82469F1 + .string "You and me, we would've been tops.\n" + .string "It's too bad…$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_RunningTriathleteMIntro:: @ 8246A22 + .string "Hey, there! My name's {STR_VAR_1}!\n" + .string "I'm a TRIATHLETE!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_RunningTriathleteMMon1:: @ 8246A4E + .string "I go on runs with my durable team--\n" + .string "one {STR_VAR_2} with {STR_VAR_1} and$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_RunningTriathleteMMon2Ask:: @ 8246A85 + .string "one {STR_VAR_2} with {STR_VAR_1}!\p" + .string "Not too shabby, huh?\n" + .string "We should be in a tag team together!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_RunningTriathleteMAccept:: @ 8246ACF + .string "All right!\n" + .string "I'll go register in a flash!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_RunningTriathleteMReject:: @ 8246AF7 + .string "I really wanted to battle as your\n" + .string "tag-team partner…$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_BattleGirlIntro:: @ 8246B2B + .string "I'm BATTLE GIRL {STR_VAR_1}!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_BattleGirlMon1:: @ 8246B3F + .string "I've been toughening up one\n" + .string "{STR_VAR_1}-using {STR_VAR_2} and$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_BattleGirlMon2Ask:: @ 8246B6B + .string "one {STR_VAR_1}-using {STR_VAR_2}!\p" + .string "Do you like that combo?\n" + .string "How about you and me join up?$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_BattleGirlAccept:: @ 8246BB2 + .string "Why, thanks!\p" + .string "I'll get the registration done\n" + .string "right now!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_BattleGirlReject:: @ 8246BE9 + .string "With you, I thought we could form\n" + .string "the ultimate tag team…$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_CyclingTriathleteMIntro:: @ 8246C22 + .string "I'm TRIATHLETE {STR_VAR_1}!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_CyclingTriathleteMMon1:: @ 8246C35 + .string "I've been running with one {STR_VAR_2}\n" + .string "that knows how to use {STR_VAR_1}$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_CyclingTriathleteMMon2Ask:: @ 8246C6C + .string "and one {STR_VAR_2} with {STR_VAR_1}!\p" + .string "We could be in a tag team.\n" + .string "Wouldn't that be great?$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_CyclingTriathleteMAccept:: @ 8246CB3 + .string "Thank you!\p" + .string "I'll go register us, and that's\n" + .string "right now!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_CyclingTriathleteMReject:: @ 8246CE9 + .string "Aww, that's too bad. We would've been\n" + .string "the toughest tag team around!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_TuberMIntro:: @ 8246D2D + .string "Me?\n" + .string "I'm TUBER {STR_VAR_1}!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_TuberMMon1:: @ 8246D3F + .string "What do I have with me?\n" + .string "One {STR_VAR_2} with {STR_VAR_1} and$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_TuberMMon2Ask:: @ 8246D6A + .string "one {STR_VAR_2} with {STR_VAR_1}!\p" + .string "Hey?\n" + .string "You'll team up with me, right?$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_TuberMAccept:: @ 8246D9E + .string "Okay!\p" + .string "I'll go register!\n" + .string "Let's be excellent together!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_TuberMReject:: @ 8246DD3 + .string "My POKéMON are tough for sure…\n" + .string "It's too bad you don't want to team up.$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_GuitaristIntro:: @ 8246E1A + .string "Yay-hey!\n" + .string "Call me GUITARIST {STR_VAR_1}!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_GuitaristMon1:: @ 8246E39 + .string "Check out my entourage!\n" + .string "One {STR_VAR_2} with {STR_VAR_1} and$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_GuitaristMon2Ask:: @ 8246E64 + .string "one {STR_VAR_2} with {STR_VAR_1}!\p" + .string "Yay-hey! Pretty wild, huh?\n" + .string "We'll have to do a duet in a tag team!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_GuitaristAccept:: @ 8246EB6 + .string "Yay-hey! Right on!\n" + .string "I'll do that registration stuff now!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_GuitaristReject:: @ 8246EEE + .string "My POKéMON rock hard!\n" + .string "You'll be sorry, I tell you!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_GentlemanIntro:: @ 8246F21 + .string "Pleased to meet you.\n" + .string "I am {STR_VAR_1}, a GENTLEMAN.$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_GentlemanMon1:: @ 8246F4C + .string "I am accompanied by my trusted\n" + .string "{STR_VAR_1}-using {STR_VAR_2} and$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_GentlemanMon2Ask:: @ 8246F7B + .string "one {STR_VAR_1}-using {STR_VAR_2}.\p" + .string "May I ask you to join me in a tag-team\n" + .string "partnership arrangement?$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_GentlemanAccept:: @ 8246FCC + .string "Ah, I thank you for your trust.\n" + .string "I shall be done with the registration.$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_GentlemanReject:: @ 8247013 + .string "That is most unfortunate…\p" + .string "I shall look forward to the next\n" + .string "opportunity…$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_PokefanMIntro:: @ 824705B + .string "Hello, I'm {STR_VAR_1},\n" + .string "and I'm a POKéFAN.$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_PokefanMMon1:: @ 824707D + .string "I have with me now one {STR_VAR_2}\n" + .string "that knows the move {STR_VAR_1} and$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_PokefanMMon2Ask:: @ 82470B2 + .string "one {STR_VAR_2} with {STR_VAR_1}.\p" + .string "Do you like what you see?\n" + .string "Why don't you be my tag partner?$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_PokefanMAccept:: @ 82470FD + .string "Thank you!\n" + .string "I'll look after the registration!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_PokefanMReject:: @ 824712A + .string "My POKéMON are top grade…\n" + .string "It's too bad you can't appreciate that.$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_ExpertMIntro:: @ 824716C + .string "Hm!\n" + .string "I am {STR_VAR_1}, and an EXPERT am I!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_ExpertMMon1:: @ 824718D + .string "The POKéMON that I've toughened up are\n" + .string "one {STR_VAR_2} with {STR_VAR_1} and$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_ExpertMMon2Ask:: @ 82471C7 + .string "one {STR_VAR_2} with {STR_VAR_1}!\p" + .string "What say you to a tag team with me?$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_ExpertMAccept:: @ 82471FB + .string "Hm!\n" + .string "I shall register us right away!\l" + .string "Let us both do our best!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_ExpertMReject:: @ 8247238 + .string "I will hope that your choice is\n" + .string "indeed correct…$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_ExpertFIntro:: @ 8247268 + .string "Hello, hello.\n" + .string "I'm {STR_VAR_1}, and I'm an EXPERT.$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_ExpertFMon1:: @ 8247291 + .string "I've raised my POKéMON thoroughly.\n" + .string "One {STR_VAR_2} with {STR_VAR_1} and$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_ExpertFMon2Ask:: @ 82472C7 + .string "one {STR_VAR_2} with {STR_VAR_1}--\n" + .string "they're what I have.\p" + .string "Wouldn't you like to team up with me?$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_ExpertFAccept:: @ 8247313 + .string "Good, good.\n" + .string "I'll see to the registration right away.$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_ExpertFReject:: @ 8247348 + .string "Perhaps we can form a team the next\n" + .string "time we meet.$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_DragonTamerIntro:: @ 824737A + .string "I'm DRAGON TAMER {STR_VAR_1}!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_DragonTamerMon1:: @ 824738F + .string "The team I've been toughening up is\n" + .string "one {STR_VAR_2} with {STR_VAR_1} and$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_DragonTamerMon2Ask:: @ 82473C6 + .string "one {STR_VAR_2} with {STR_VAR_1}!\p" + .string "How about it?\n" + .string "Want to be my partner?$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_DragonTamerAccept:: @ 82473FB + .string "Okay, I'll give it my best!\n" + .string "I'll go register now, all right?$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_DragonTamerReject:: @ 8247438 + .string "You're not going to find many tougher\n" + .string "partners than me!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_BirdKeeperIntro:: @ 8247470 + .string "I'm BIRD KEEPER {STR_VAR_1}!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_BirdKeeperMon1:: @ 8247484 + .string "What POKéMON do I have?\n" + .string "One {STR_VAR_2} with {STR_VAR_1} and$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_BirdKeeperMon2Ask:: @ 82474AF + .string "one {STR_VAR_2} with {STR_VAR_1}.\p" + .string "Don't you think we'd make a decent\n" + .string "tag team?$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_BirdKeeperAccept:: @ 82474EC + .string "Great, thanks!\n" + .string "I'll look after the registration!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_BirdKeeperReject:: @ 824751D + .string "My POKéMON and I are strong.\n" + .string "What a letdown.$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_NinjaBoyIntro:: @ 824754A + .string "I'm NINJA BOY {STR_VAR_1}!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_NinjaBoyMon1:: @ 824755C + .string "My POKéMON team consists of one\n" + .string "{STR_VAR_2} with {STR_VAR_1} and$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_NinjaBoyMon2Ask:: @ 824758B + .string "one {STR_VAR_2} with {STR_VAR_1}!\p" + .string "Let's be in a tag team together!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_NinjaBoyAccept:: @ 82475BC + .string "Yay!\n" + .string "Let me go register!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_NinjaBoyReject:: @ 82475D5 + .string "You'll regret not having my tough\n" + .string "POKéMON on your side!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_ParasolLadyIntro:: @ 824760D + .string "Hello!\n" + .string "I'm PARASOL LADY {STR_VAR_1}!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_ParasolLadyMon1:: @ 8247629 + .string "Escorting me now are my {STR_VAR_2}\n" + .string "that uses {STR_VAR_1} and$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_ParasolLadyMon2Ask:: @ 8247655 + .string "one {STR_VAR_2} that uses\n" + .string "{STR_VAR_1}.\p" + .string "Aren't they nice?\n" + .string "Care to join us in a tag team?$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_ParasolLadyAccept:: @ 824769B + .string "Thanks a bunch!\p" + .string "I'll go register at the counter.\n" + .string "Let's not disappoint each other!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_ParasolLadyReject:: @ 82476ED + .string "My POKéMON are tremendously strong.\n" + .string "How disappointing…$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_BugManiacIntro:: @ 8247724 + .string "Hello.\n" + .string "I'm {STR_VAR_1}, and I'm a BUG MANIAC!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_BugManiacMon1:: @ 8247749 + .string "I have found my POKéMON, yes.\n" + .string "One {STR_VAR_2} with {STR_VAR_1} and$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_BugManiacMon2Ask:: @ 824777A + .string "one {STR_VAR_2} with {STR_VAR_1}--\n" + .string "they are what I found.\p" + .string "Could I interest you in forming\n" + .string "a tag team?$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_BugManiacAccept:: @ 82477CE + .string "Okay!\n" + .string "Understood!\p" + .string "I won't be long with the registration!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_BugManiacReject:: @ 8247807 + .string "With the POKéMON I found, we wouldn't\n" + .string "have lost…$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_SailorIntro:: @ 8247838 + .string "Ahoy, there!\n" + .string "I'm SAILOR {STR_VAR_1}!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_SailorMon1:: @ 8247854 + .string "Let me show you my pride and joy!\n" + .string "One {STR_VAR_2} with {STR_VAR_1} and$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_SailorMon2Ask:: @ 8247889 + .string "one {STR_VAR_2} with {STR_VAR_1}!\p" + .string "Of course you're not going to turn\n" + .string "me down. We will team up, right?$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_SailorAccept:: @ 82478DD + .string "I didn't expect any less!\n" + .string "I'll go register now.$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_SailorReject:: @ 824790D + .string "We would've stormed through\n" + .string "the opposition! Too bad!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_CollectorIntro:: @ 8247942 + .string "Hi, I'm {STR_VAR_1}.\n" + .string "I'm a COLLECTOR.$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_CollectorMon1:: @ 824795F + .string "The jewels in my collection are\n" + .string "my {STR_VAR_2} with {STR_VAR_1} and$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_CollectorMon2Ask:: @ 8247991 + .string "one {STR_VAR_2} with {STR_VAR_1}!\p" + .string "Swell, huh?\n" + .string "We should be in a team together.$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_CollectorAccept:: @ 82479CE + .string "Oh, yeah!\p" + .string "Well, let's not waste any time.\n" + .string "I'll go register the two of us.$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_CollectorReject:: @ 8247A18 + .string "Well, that's upsetting.\n" + .string "You don't appreciate my POKéMON.$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_PkmnRangerMIntro:: @ 8247A51 + .string "Howdy, I'm {STR_VAR_1}.\n" + .string "I'm a POKéMON RANGER.$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_PkmnRangerMMon1:: @ 8247A76 + .string "Keeping me company are one\n" + .string "{STR_VAR_1}-using {STR_VAR_2} and$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_PkmnRangerMMon2Ask:: @ 8247AA1 + .string "one {STR_VAR_2} with {STR_VAR_1}!\p" + .string "Don't you think we'd make an impressive\n" + .string "tag team?$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_PkmnRangerMAccept:: @ 8247AE3 + .string "That's super!\n" + .string "I'll deal with the registration now.$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_PkmnRangerMReject:: @ 8247B16 + .string "Next time, choose my POKéMON,\n" + .string "will you?$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_PkmnRangerFIntro:: @ 8247B3E + .string "My name's {STR_VAR_1}.\n" + .string "I'm a POKéMON RANGER!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_PkmnRangerFMon1:: @ 8247B62 + .string "Let me tell you about my team. I have\n" + .string "one {STR_VAR_2} with {STR_VAR_1} and$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_PkmnRangerFMon2Ask:: @ 8247B9B + .string "one {STR_VAR_2} with {STR_VAR_1}!\p" + .string "How would you like to form a tag team\n" + .string "with my little posse?$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_PkmnRangerFAccept:: @ 8247BE7 + .string "We'll be at our best!\n" + .string "I'll get the registration done quick!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_PkmnRangerFReject:: @ 8247C23 + .string "I hope you'll choose my POKéMON\n" + .string "next time.$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_AromaLadyIntro:: @ 8247C4E + .string "Pleased to meet you. I'm {STR_VAR_1}.\n" + .string "I consider myself an AROMA LADY.$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_AromaLadyMon1:: @ 8247C8C + .string "I travel with one {STR_VAR_2}\n" + .string "that uses {STR_VAR_1} and$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_AromaLadyMon2Ask:: @ 8247CB2 + .string "one {STR_VAR_2} that uses\n" + .string "{STR_VAR_1}.\p" + .string "I hope they strike your fancy.\n" + .string "Would you care to be my partner?$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_AromaLadyAccept:: @ 8247D07 + .string "I'm honored by your acceptance.\n" + .string "I will go register right this instant.$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_AromaLadyReject:: @ 8247D4E + .string "It would be wonderful if we could form\n" + .string "a tag team the next time we meet.$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_RuinManiacIntro:: @ 8247D97 + .string "Want to know who I am?\n" + .string "I'm {STR_VAR_1}, the RUIN MANIAC!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_RuinManiacMon1:: @ 8247DC7 + .string "The POKéMON that I have with me are\n" + .string "one {STR_VAR_2} with {STR_VAR_1} and$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_RuinManiacMon2Ask:: @ 8247DFE + .string "one {STR_VAR_2} with {STR_VAR_1}!\p" + .string "Intriguing, eh?\n" + .string "How about you and I partner up?$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_RuinManiacAccept:: @ 8247E3E + .string "That's a sound decision!\n" + .string "I'll go do the registration paperwork.$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_RuinManiacReject:: @ 8247E7E + .string "Hmm…\n" + .string "I think my POKéMON are tough…$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_CoolTrainerMIntro:: @ 8247EA1 + .string "I'm COOLTRAINER {STR_VAR_1}!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_CoolTrainerMMon1:: @ 8247EB5 + .string "The POKéMON I have right now are one\n" + .string "{STR_VAR_2} with {STR_VAR_1} and$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_CoolTrainerMMon2Ask:: @ 8247EE9 + .string "one {STR_VAR_2} with {STR_VAR_1}.\n" + .string "Cool, huh?\p" + .string "Don't you think it'd be pretty cool\n" + .string "if we made a tag team?$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_CoolTrainerMAccept:: @ 8247F3F + .string "Cool!\n" + .string "I'll go do the registration in a flash!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_CoolTrainerMReject:: @ 8247F6D + .string "I thought that we'd make just\n" + .string "the greatest team ever.$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_CoolTrainerFIntro:: @ 8247FA3 + .string "I'm COOLTRAINER {STR_VAR_1}!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_CoolTrainerFMon1:: @ 8247FB7 + .string "The team I've been raising has one\n" + .string "{STR_VAR_2} with {STR_VAR_1} and$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_CoolTrainerFMon2Ask:: @ 8247FE9 + .string "one {STR_VAR_2} with {STR_VAR_1}.\p" + .string "Does that sound okay?\n" + .string "How about we become tag partners?$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_CoolTrainerFAccept:: @ 8248031 + .string "Sounds A-OK!\n" + .string "I'd better do the registration.$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_CoolTrainerFReject:: @ 824805E + .string "I was thinking how we would be\n" + .string "one tough team…$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_PokemaniacIntro:: @ 824808D + .string "Heyo!\n" + .string "I'm {STR_VAR_1}, the POKéMANIAC!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_PokemaniacMon1:: @ 82480AB + .string "What does a guy like me have?\n" + .string "One {STR_VAR_2} with {STR_VAR_1} and$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_PokemaniacMon2Ask:: @ 82480DC + .string "one {STR_VAR_2} with {STR_VAR_1},\n" + .string "that's what!\p" + .string "Let's do it!\n" + .string "We'll stomp around as a tag team!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_PokemaniacAccept:: @ 8248128 + .string "Good call!\n" + .string "I'll register the both of us!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_PokemaniacReject:: @ 8248151 + .string "My POKéMON are brutal!\n" + .string "It's not my fault if you regret this!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_KindlerIntro:: @ 824818E + .string "Yo, there!\n" + .string "I'm KINDLER {STR_VAR_1}!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_KindlerMon1:: @ 82481A9 + .string "You know what my training cooked up?\n" + .string "One {STR_VAR_2} with {STR_VAR_1} and$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_KindlerMon2Ask:: @ 82481E1 + .string "one {STR_VAR_2} with {STR_VAR_1}!\p" + .string "Well, what do you say?\n" + .string "Want to form a tag team?$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_KindlerAccept:: @ 8248221 + .string "All right!\n" + .string "I'll get on with the registration.$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_KindlerReject:: @ 824824F + .string "Promise you'll partner up with me\n" + .string "the next time we run into each other.$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_CamperIntro:: @ 8248297 + .string "I'm {STR_VAR_1}, and I'm a CAMPER!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_CamperMon1:: @ 82482B1 + .string "I've been raising one {STR_VAR_1}-\n" + .string "using {STR_VAR_2} and one$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_CamperMon2Ask:: @ 82482DC + .string "{STR_VAR_1}-using {STR_VAR_2}.\p" + .string "Do you think it'd be fun to team up?\n" + .string "I bet it would be!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_CamperAccept:: @ 8248321 + .string "Yeah!\n" + .string "Off I go to register!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_CamperReject:: @ 824833D + .string "Next time, okay?\n" + .string "I want to be on your team.$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_PicnickerIntro:: @ 8248369 + .string "Hello!\n" + .string "I'm {STR_VAR_1}, and I'm a PICNICKER!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_PicnickerMon1:: @ 824838D + .string "The POKéMON I've been taking are\n" + .string "one {STR_VAR_2} with {STR_VAR_1} and$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_PicnickerMon2Ask:: @ 82483C1 + .string "one {STR_VAR_2} with {STR_VAR_1}.\p" + .string "Are you interested in joining me\n" + .string "on a tag team?$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_PicnickerAccept:: @ 8248401 + .string "Why, thank you!\n" + .string "I will do the registration now.$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_PicnickerReject:: @ 8248431 + .string "It would be nice if I could join you\n" + .string "some other time.$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_PsychicMIntro:: @ 8248467 + .string "I'm PSYCHIC {STR_VAR_1}!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_PsychicMMon1:: @ 8248477 + .string "The twosome I've been raising are\n" + .string "one {STR_VAR_2} with {STR_VAR_1} and$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_PsychicMMon2Ask:: @ 82484AC + .string "one {STR_VAR_2} with {STR_VAR_1}.\p" + .string "Would you like to form a tag team\n" + .string "with me?$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_PsychicMAccept:: @ 82484E7 + .string "Sure thing!\n" + .string "I'll take care of the registration!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_PsychicMReject:: @ 8248517 + .string "If we meet again, that's when I'd like\n" + .string "to team up with you.$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_PsychicFIntro:: @ 8248553 + .string "I'm {STR_VAR_1}.\n" + .string "I'm a PSYCHIC.$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_PsychicFMon1:: @ 824856A + .string "One {STR_VAR_2} with {STR_VAR_1} and$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_PsychicFMon2Ask:: @ 824857D + .string "one {STR_VAR_2} with {STR_VAR_1}--\n" + .string "they're my disciples.\p" + .string "Doesn't the idea of forming a tag-team\n" + .string "partnership intrigue you?$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_PsychicFAccept:: @ 82485E5 + .string "Thank you.\n" + .string "I'll go deal with the registration.$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_PsychicFReject:: @ 8248614 + .string "I hope there will be another chance\n" + .string "to forge an alliance.$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_SchoolKidFIntro:: @ 824864E + .string "I'm SCHOOL KID {STR_VAR_1}!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_SchoolKidFMon1:: @ 8248661 + .string "One {STR_VAR_1}-using {STR_VAR_2}$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_SchoolKidFMon2Ask:: @ 8248671 + .string "and one {STR_VAR_1}-using\n" + .string "{STR_VAR_2} are my POKéMON pair.\p" + .string "May I please be your partner on\n" + .string "a tag team?$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_SchoolKidFAccept:: @ 82486C6 + .string "Ooh, thank you!\n" + .string "I'll register at the counter right away!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_SchoolKidFReject:: @ 82486FF + .string "Please?\n" + .string "May I join you the next time?$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_PkmnBreederFIntro:: @ 8248725 + .string "Hiya! The name's {STR_VAR_1}!\n" + .string "I'm a POKéMON BREEDER!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_PkmnBreederFMon1:: @ 8248751 + .string "The POKéMON I've raised are one\n" + .string "{STR_VAR_1}-using {STR_VAR_2} and$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_PkmnBreederFMon2Ask:: @ 8248781 + .string "one {STR_VAR_1}-using {STR_VAR_2}.\p" + .string "Sound interesting?\n" + .string "How about we form a tag team, then?$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_PkmnBreederFAccept:: @ 82487C9 + .string "All righty!\n" + .string "You leave the registration to me!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_PkmnBreederFReject:: @ 82487F7 + .string "You have to team up with me next time,\n" + .string "all right?$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_PokefanFIntro:: @ 8248829 + .string "I'm {STR_VAR_1}, and I'm proud to say\n" + .string "that I am a POKéFAN.$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_PokefanFMon1:: @ 824885B + .string "The darling POKéMON I've raised are\n" + .string "one {STR_VAR_2} with {STR_VAR_1} and$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_PokefanFMon2Ask:: @ 8248892 + .string "one {STR_VAR_2} with {STR_VAR_1}.\p" + .string "Aren't they just the cutest?\n" + .string "We ought to make a team!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_PokefanFAccept:: @ 82488D8 + .string "Thank you, dear!\n" + .string "I'll be on my way to register!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_PokefanFReject:: @ 8248908 + .string "My darling POKéMON are the best,\n" + .string "I'll have you know. How annoying!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_SwimmerFIntro:: @ 824894B + .string "Hi, I'm SWIMMER {STR_VAR_1}.$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_SwimmerFMon1:: @ 824895F + .string "One {STR_VAR_1}-using {STR_VAR_2}$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_SwimmerFMon2Ask:: @ 824896F + .string "and one {STR_VAR_1}-using\n" + .string "{STR_VAR_2} are what I've trained.\p" + .string "You and me, let's make a tag team.$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_SwimmerFAccept:: @ 82489BD + .string "That's cool!\n" + .string "I'll register the two of us.$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_SwimmerFReject:: @ 82489E7 + .string "If we meet again, you owe me\n" + .string "a tag team!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_SwimmingTriathleteMIntro:: @ 8248A10 + .string "What's happening?\n" + .string "I'm {STR_VAR_1}, and I'm a TRIATHLETE.$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_SwimmingTriathleteMMon1:: @ 8248A40 + .string "I got a couple decent POKéMON.\n" + .string "One {STR_VAR_2} with {STR_VAR_1} and$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_SwimmingTriathleteMMon2Ask:: @ 8248A72 + .string "one {STR_VAR_2} with {STR_VAR_1}!\p" + .string "It'd be neat if we made a tag team\n" + .string "together, so how about it?$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_SwimmingTriathleteMAccept:: @ 8248AC0 + .string "Right on!\n" + .string "You wait while I register, okay?$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_SwimmingTriathleteMReject:: @ 8248AEB + .string "I expect you'll let me join you\n" + .string "next time, how's that?$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_SwimmingTriathleteFIntro:: @ 8248B22 + .string "I'm the TRIATHLETE {STR_VAR_1}!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_SwimmingTriathleteFMon1:: @ 8248B39 + .string "One {STR_VAR_2} with {STR_VAR_1} and$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_SwimmingTriathleteFMon2Ask:: @ 8248B4C + .string "another {STR_VAR_2} that knows how\n" + .string "to use {STR_VAR_1}. That's my pair.\p" + .string "What do you think?\n" + .string "We'd make a good team, I'd say.$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_SwimmingTriathleteFAccept:: @ 8248BB4 + .string "I like that answer!\n" + .string "I'll get done with registration fast!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_SwimmingTriathleteFReject:: @ 8248BEE + .string "You'll give me another chance to form\n" + .string "a partnership, won't you?$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_SwimmerMIntro:: @ 8248C2E + .string "Hi, there! Hello!\n" + .string "I'm {STR_VAR_1}, and I'm a SWIMMER!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_SwimmerMMon1:: @ 8248C5B + .string "Check out what I've been raising!\n" + .string "One {STR_VAR_2} with {STR_VAR_1} and$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_SwimmerMMon2Ask:: @ 8248C90 + .string "one {STR_VAR_2} with {STR_VAR_1}!\p" + .string "Sweet, huh?\n" + .string "It'd be sweet to form a team, too!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_SwimmerMAccept:: @ 8248CCF + .string "Much obliged!\n" + .string "I'll get this registration thing done!$" + +BattleFrontier_BattleTowerMultiPartnerRoom_Text_SwimmerMReject:: @ 8248D04 + .string "If we meet again, you have to team up\n" + .string "with me. You'll do that, right?$" + diff --git a/data/maps/SlateportCity_BattleTentLobby/scripts.inc b/data/maps/SlateportCity_BattleTentLobby/scripts.inc index 1a9801dd16..d846c6028d 100644 --- a/data/maps/SlateportCity_BattleTentLobby/scripts.inc +++ b/data/maps/SlateportCity_BattleTentLobby/scripts.inc @@ -49,7 +49,7 @@ SlateportCity_BattleTentLobby_EventScript_2087E9:: @ 82087E9 switch VAR_RESULT case 0, SlateportCity_BattleTentLobby_EventScript_20882A frontier_set FRONTIER_DATA_CHALLENGE_STATUS, 0 - message SlateportCity_BattleTentLobby_Text_23F68C + message BattleFrontier_BattleTowerLobby_Text_ReceivedPrize waitmessage playfanfare MUS_FANFA4 waitfanfare diff --git a/data/maps/map_groups.json b/data/maps/map_groups.json index 521cc5e037..6ef8f816d4 100644 --- a/data/maps/map_groups.json +++ b/data/maps/map_groups.json @@ -510,9 +510,9 @@ "SafariZone_Northeast", "SafariZone_Southeast", "BattleFrontier_OutsideEast", + "BattleFrontier_BattleTowerMultiPartnerRoom", + "BattleFrontier_BattleTowerMultiCorridor", "BattleFrontier_BattleTowerMultiBattleRoom", - "BattleFrontier_BattleTowerCorridor2", - "BattleFrontier_BattleTowerBattleRoom2", "BattleFrontier_BattleDomeLobby", "BattleFrontier_BattleDomeCorridor", "BattleFrontier_BattleDomePreBattleRoom", diff --git a/data/specials.inc b/data/specials.inc index be9761c032..9d738c1ea9 100644 --- a/data/specials.inc +++ b/data/specials.inc @@ -513,7 +513,7 @@ gSpecials:: @ 81DBA64 def_special TurnOnTVScreen def_special sub_81D4A90 def_special ShouldDistributeEonTicket - def_special sub_813B568 + def_special LinkRetireStatusWithBattleTowerPartner def_special sub_813B534 def_special CallTrainerHillFunction def_special Script_DoRayquazaScene @ Listed twice diff --git a/include/constants/apprentice.h b/include/constants/apprentice.h index 63434a4fcf..f1bea5e8c5 100644 --- a/include/constants/apprentice.h +++ b/include/constants/apprentice.h @@ -6,6 +6,8 @@ #define NUM_WHICH_MON_QUESTIONS MULTI_PARTY_SIZE #define NUM_WHICH_MOVE_QUESTIONS 5 +// + 2 below is 1 each for the lead mon question and the win speech question +#define MAX_APPRENTICE_QUESTIONS NUM_WHICH_MON_QUESTIONS + NUM_WHICH_MOVE_QUESTIONS + 2 #define APPRENTICE_LVL_MODE_50 (FRONTIER_LVL_50 + 1) #define APPRENTICE_LVL_MODE_OPEN (FRONTIER_LVL_OPEN + 1) diff --git a/include/constants/battle_tower.h b/include/constants/battle_tower.h index 6afd8a9491..b372c3ad5c 100644 --- a/include/constants/battle_tower.h +++ b/include/constants/battle_tower.h @@ -11,15 +11,31 @@ #define BATTLE_TOWER_FUNC_GET_OPPONENT_INTRO 7 #define BATTLE_TOWER_FUNC_NOP 8 #define BATTLE_TOWER_FUNC_NOP2 9 -#define BATTLE_TOWER_FUNC_10 10 -#define BATTLE_TOWER_FUNC_11 11 -#define BATTLE_TOWER_FUNC_12 12 +#define BATTLE_TOWER_FUNC_LOAD_PARTNERS 10 +#define BATTLE_TOWER_FUNC_PARTNER_MSG 11 +#define BATTLE_TOWER_FUNC_LOAD_LINK_OPPONENTS 12 #define BATTLE_TOWER_FUNC_13 13 -#define BATTLE_TOWER_FUNC_14 14 +#define BATTLE_TOWER_FUNC_SET_PARTNER_GFX 14 #define BATTLE_TOWER_FUNC_SET_INTERVIEW_DATA 15 #define TOWER_DATA_WIN_STREAK 1 #define TOWER_DATA_WIN_STREAK_ACTIVE 2 #define TOWER_DATA_LVL_MODE 3 +// IDs for the messages printed by potential partners in the Battle Tower Multi Partner Room +#define PARTNER_MSGID_INTRO 0 +#define PARTNER_MSGID_MON1 1 +#define PARTNER_MSGID_MON2_ASK 2 +#define PARTNER_MSGID_ACCEPT 3 +#define PARTNER_MSGID_REJECT 4 + +// IDs for communicating with the Link Multi partner +#define BATTLE_TOWER_LINK_CONTINUE 0 +#define BATTLE_TOWER_LINK_RETIRE 1 + +#define BATTLE_TOWER_LINKSTAT_CONTINUE 0 +#define BATTLE_TOWER_LINKSTAT_BOTH_RETIRE 1 +#define BATTLE_TOWER_LINKSTAT_PARTNER_RETIRE 2 +#define BATTLE_TOWER_LINKSTAT_PLAYER_RETIRE 3 + #endif //GUARD_CONSTANTS_BATTLE_TOWER_H diff --git a/include/constants/flags.h b/include/constants/flags.h index 1eb8a06738..33147f8da4 100644 --- a/include/constants/flags.h +++ b/include/constants/flags.h @@ -1632,11 +1632,11 @@ #define FLAG_0x95F (SYSTEM_FLAGS + 0xFF) // Special Flags (Unknown) -#define SPECIAL_FLAGS_START 0x4000 -#define FLAG_HIDE_MAP_NAME_POPUP 0x4000 -#define FLAG_DONT_TRANSITION_MUSIC 0x4001 -#define FLAG_SPECIAL_FLAG_0x4002 0x4002 -#define FLAG_SPECIAL_FLAG_0x4003 0x4003 -#define FLAG_STORING_ITEMS_IN_PYRAMID_BAG 0x4004 +#define SPECIAL_FLAGS_START 0x4000 +#define FLAG_HIDE_MAP_NAME_POPUP 0x4000 +#define FLAG_DONT_TRANSITION_MUSIC 0x4001 +#define FLAG_ENABLE_MULTI_CORRIDOR_DOOR 0x4002 +#define FLAG_SPECIAL_FLAG_0x4003 0x4003 +#define FLAG_STORING_ITEMS_IN_PYRAMID_BAG 0x4004 #endif // GUARD_CONSTANTS_FLAGS_H diff --git a/include/constants/frontier_util.h b/include/constants/frontier_util.h index d718091691..a310dbb2d5 100644 --- a/include/constants/frontier_util.h +++ b/include/constants/frontier_util.h @@ -42,7 +42,7 @@ #define FRONTIER_DATA_PAUSED 3 #define FRONTIER_DATA_SELECTED_MON_ORDER 4 #define FRONTIER_DATA_BATTLE_OUTCOME 5 -#define FRONTIER_DATA_6 6 +#define FRONTIER_DATA_RECORD_DISABLED 6 #define FRONTIER_DATA_HEARD_BRAIN_SPEECH 7 #define STREAK_TOWER_SINGLES_50 (1 << 0) diff --git a/include/constants/layouts.h b/include/constants/layouts.h index ba20cb3a52..0169d0f6ac 100755 --- a/include/constants/layouts.h +++ b/include/constants/layouts.h @@ -390,8 +390,8 @@ #define LAYOUT_VERDANTURF_TOWN_BATTLE_TENT_BATTLE_ROOM 387 #define LAYOUT_MIRAGE_TOWER_4F 388 #define LAYOUT_DESERT_UNDERPASS 389 -#define LAYOUT_BATTLE_FRONTIER_BATTLE_TOWER_MULTI_BATTLE_ROOM 390 -#define LAYOUT_BATTLE_FRONTIER_BATTLE_TOWER_CORRIDOR2 391 +#define LAYOUT_BATTLE_FRONTIER_BATTLE_TOWER_MULTI_PARTNER_ROOM 390 +#define LAYOUT_BATTLE_FRONTIER_BATTLE_TOWER_MULTI_CORRIDOR 391 #define LAYOUT_ROUTE111_NO_MIRAGE_TOWER 392 #define LAYOUT_UNION_ROOM 393 #define LAYOUT_SAFARI_ZONE_NORTHEAST 394 diff --git a/include/constants/map_groups.h b/include/constants/map_groups.h index 14b3f1d569..f6988c176e 100755 --- a/include/constants/map_groups.h +++ b/include/constants/map_groups.h @@ -461,95 +461,95 @@ #define MAP_UNION_ROOM (60 | (25 << 8)) // Map Group 26 -#define MAP_SAFARI_ZONE_NORTHWEST (0 | (26 << 8)) -#define MAP_SAFARI_ZONE_NORTH (1 | (26 << 8)) -#define MAP_SAFARI_ZONE_SOUTHWEST (2 | (26 << 8)) -#define MAP_SAFARI_ZONE_SOUTH (3 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_OUTSIDE_WEST (4 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_BATTLE_TOWER_LOBBY (5 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_BATTLE_TOWER_ELEVATOR (6 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_BATTLE_TOWER_CORRIDOR (7 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_BATTLE_TOWER_BATTLE_ROOM (8 | (26 << 8)) -#define MAP_SOUTHERN_ISLAND_EXTERIOR (9 | (26 << 8)) -#define MAP_SOUTHERN_ISLAND_INTERIOR (10 | (26 << 8)) -#define MAP_SAFARI_ZONE_REST_HOUSE (11 | (26 << 8)) -#define MAP_SAFARI_ZONE_NORTHEAST (12 | (26 << 8)) -#define MAP_SAFARI_ZONE_SOUTHEAST (13 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_OUTSIDE_EAST (14 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_BATTLE_TOWER_MULTI_BATTLE_ROOM (15 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_BATTLE_TOWER_CORRIDOR2 (16 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_BATTLE_TOWER_BATTLE_ROOM2 (17 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_BATTLE_DOME_LOBBY (18 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_BATTLE_DOME_CORRIDOR (19 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_BATTLE_DOME_PRE_BATTLE_ROOM (20 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_BATTLE_DOME_BATTLE_ROOM (21 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_BATTLE_PALACE_LOBBY (22 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_BATTLE_PALACE_CORRIDOR (23 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_BATTLE_PALACE_BATTLE_ROOM (24 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_BATTLE_PYRAMID_LOBBY (25 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_BATTLE_PYRAMID_EMPTY_SQUARE (26 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_BATTLE_PYRAMID_TOP (27 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_BATTLE_ARENA_LOBBY (28 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_BATTLE_ARENA_CORRIDOR (29 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_BATTLE_ARENA_BATTLE_ROOM (30 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_BATTLE_FACTORY_LOBBY (31 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_BATTLE_FACTORY_PRE_BATTLE_ROOM (32 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_BATTLE_FACTORY_BATTLE_ROOM (33 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_BATTLE_PIKE_LOBBY (34 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_BATTLE_PIKE_CORRIDOR (35 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_BATTLE_PIKE_THREE_PATH_ROOM (36 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_BATTLE_PIKE_ROOM_NORMAL (37 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_BATTLE_PIKE_ROOM_FINAL (38 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_BATTLE_PIKE_ROOM_WILD_MONS (39 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_RANKING_HALL (40 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_LOUNGE1 (41 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_EXCHANGE_SERVICE_CORNER (42 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_LOUNGE2 (43 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_LOUNGE3 (44 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_LOUNGE4 (45 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_SCOTTS_HOUSE (46 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_LOUNGE5 (47 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_LOUNGE6 (48 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_LOUNGE7 (49 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_RECEPTION_GATE (50 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_LOUNGE8 (51 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_LOUNGE9 (52 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_POKEMON_CENTER_1F (53 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_POKEMON_CENTER_2F (54 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_MART (55 | (26 << 8)) -#define MAP_FARAWAY_ISLAND_ENTRANCE (56 | (26 << 8)) -#define MAP_FARAWAY_ISLAND_INTERIOR (57 | (26 << 8)) -#define MAP_BIRTH_ISLAND_EXTERIOR (58 | (26 << 8)) -#define MAP_BIRTH_ISLAND_HARBOR (59 | (26 << 8)) -#define MAP_TRAINER_HILL_ENTRANCE (60 | (26 << 8)) -#define MAP_TRAINER_HILL_1F (61 | (26 << 8)) -#define MAP_TRAINER_HILL_2F (62 | (26 << 8)) -#define MAP_TRAINER_HILL_3F (63 | (26 << 8)) -#define MAP_TRAINER_HILL_4F (64 | (26 << 8)) -#define MAP_TRAINER_HILL_ROOF (65 | (26 << 8)) -#define MAP_NAVEL_ROCK_EXTERIOR (66 | (26 << 8)) -#define MAP_NAVEL_ROCK_HARBOR (67 | (26 << 8)) -#define MAP_NAVEL_ROCK_ENTRANCE (68 | (26 << 8)) -#define MAP_NAVEL_ROCK_B1F (69 | (26 << 8)) -#define MAP_NAVEL_ROCK_FORK (70 | (26 << 8)) -#define MAP_NAVEL_ROCK_UP1 (71 | (26 << 8)) -#define MAP_NAVEL_ROCK_UP2 (72 | (26 << 8)) -#define MAP_NAVEL_ROCK_UP3 (73 | (26 << 8)) -#define MAP_NAVEL_ROCK_UP4 (74 | (26 << 8)) -#define MAP_NAVEL_ROCK_TOP (75 | (26 << 8)) -#define MAP_NAVEL_ROCK_DOWN01 (76 | (26 << 8)) -#define MAP_NAVEL_ROCK_DOWN02 (77 | (26 << 8)) -#define MAP_NAVEL_ROCK_DOWN03 (78 | (26 << 8)) -#define MAP_NAVEL_ROCK_DOWN04 (79 | (26 << 8)) -#define MAP_NAVEL_ROCK_DOWN05 (80 | (26 << 8)) -#define MAP_NAVEL_ROCK_DOWN06 (81 | (26 << 8)) -#define MAP_NAVEL_ROCK_DOWN07 (82 | (26 << 8)) -#define MAP_NAVEL_ROCK_DOWN08 (83 | (26 << 8)) -#define MAP_NAVEL_ROCK_DOWN09 (84 | (26 << 8)) -#define MAP_NAVEL_ROCK_DOWN10 (85 | (26 << 8)) -#define MAP_NAVEL_ROCK_DOWN11 (86 | (26 << 8)) -#define MAP_NAVEL_ROCK_BOTTOM (87 | (26 << 8)) -#define MAP_TRAINER_HILL_ELEVATOR (88 | (26 << 8)) +#define MAP_SAFARI_ZONE_NORTHWEST (0 | (26 << 8)) +#define MAP_SAFARI_ZONE_NORTH (1 | (26 << 8)) +#define MAP_SAFARI_ZONE_SOUTHWEST (2 | (26 << 8)) +#define MAP_SAFARI_ZONE_SOUTH (3 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_OUTSIDE_WEST (4 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_BATTLE_TOWER_LOBBY (5 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_BATTLE_TOWER_ELEVATOR (6 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_BATTLE_TOWER_CORRIDOR (7 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_BATTLE_TOWER_BATTLE_ROOM (8 | (26 << 8)) +#define MAP_SOUTHERN_ISLAND_EXTERIOR (9 | (26 << 8)) +#define MAP_SOUTHERN_ISLAND_INTERIOR (10 | (26 << 8)) +#define MAP_SAFARI_ZONE_REST_HOUSE (11 | (26 << 8)) +#define MAP_SAFARI_ZONE_NORTHEAST (12 | (26 << 8)) +#define MAP_SAFARI_ZONE_SOUTHEAST (13 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_OUTSIDE_EAST (14 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_BATTLE_TOWER_MULTI_PARTNER_ROOM (15 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_BATTLE_TOWER_MULTI_CORRIDOR (16 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_BATTLE_TOWER_MULTI_BATTLE_ROOM (17 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_BATTLE_DOME_LOBBY (18 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_BATTLE_DOME_CORRIDOR (19 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_BATTLE_DOME_PRE_BATTLE_ROOM (20 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_BATTLE_DOME_BATTLE_ROOM (21 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_BATTLE_PALACE_LOBBY (22 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_BATTLE_PALACE_CORRIDOR (23 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_BATTLE_PALACE_BATTLE_ROOM (24 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_BATTLE_PYRAMID_LOBBY (25 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_BATTLE_PYRAMID_EMPTY_SQUARE (26 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_BATTLE_PYRAMID_TOP (27 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_BATTLE_ARENA_LOBBY (28 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_BATTLE_ARENA_CORRIDOR (29 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_BATTLE_ARENA_BATTLE_ROOM (30 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_BATTLE_FACTORY_LOBBY (31 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_BATTLE_FACTORY_PRE_BATTLE_ROOM (32 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_BATTLE_FACTORY_BATTLE_ROOM (33 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_BATTLE_PIKE_LOBBY (34 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_BATTLE_PIKE_CORRIDOR (35 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_BATTLE_PIKE_THREE_PATH_ROOM (36 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_BATTLE_PIKE_ROOM_NORMAL (37 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_BATTLE_PIKE_ROOM_FINAL (38 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_BATTLE_PIKE_ROOM_WILD_MONS (39 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_RANKING_HALL (40 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_LOUNGE1 (41 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_EXCHANGE_SERVICE_CORNER (42 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_LOUNGE2 (43 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_LOUNGE3 (44 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_LOUNGE4 (45 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_SCOTTS_HOUSE (46 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_LOUNGE5 (47 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_LOUNGE6 (48 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_LOUNGE7 (49 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_RECEPTION_GATE (50 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_LOUNGE8 (51 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_LOUNGE9 (52 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_POKEMON_CENTER_1F (53 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_POKEMON_CENTER_2F (54 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_MART (55 | (26 << 8)) +#define MAP_FARAWAY_ISLAND_ENTRANCE (56 | (26 << 8)) +#define MAP_FARAWAY_ISLAND_INTERIOR (57 | (26 << 8)) +#define MAP_BIRTH_ISLAND_EXTERIOR (58 | (26 << 8)) +#define MAP_BIRTH_ISLAND_HARBOR (59 | (26 << 8)) +#define MAP_TRAINER_HILL_ENTRANCE (60 | (26 << 8)) +#define MAP_TRAINER_HILL_1F (61 | (26 << 8)) +#define MAP_TRAINER_HILL_2F (62 | (26 << 8)) +#define MAP_TRAINER_HILL_3F (63 | (26 << 8)) +#define MAP_TRAINER_HILL_4F (64 | (26 << 8)) +#define MAP_TRAINER_HILL_ROOF (65 | (26 << 8)) +#define MAP_NAVEL_ROCK_EXTERIOR (66 | (26 << 8)) +#define MAP_NAVEL_ROCK_HARBOR (67 | (26 << 8)) +#define MAP_NAVEL_ROCK_ENTRANCE (68 | (26 << 8)) +#define MAP_NAVEL_ROCK_B1F (69 | (26 << 8)) +#define MAP_NAVEL_ROCK_FORK (70 | (26 << 8)) +#define MAP_NAVEL_ROCK_UP1 (71 | (26 << 8)) +#define MAP_NAVEL_ROCK_UP2 (72 | (26 << 8)) +#define MAP_NAVEL_ROCK_UP3 (73 | (26 << 8)) +#define MAP_NAVEL_ROCK_UP4 (74 | (26 << 8)) +#define MAP_NAVEL_ROCK_TOP (75 | (26 << 8)) +#define MAP_NAVEL_ROCK_DOWN01 (76 | (26 << 8)) +#define MAP_NAVEL_ROCK_DOWN02 (77 | (26 << 8)) +#define MAP_NAVEL_ROCK_DOWN03 (78 | (26 << 8)) +#define MAP_NAVEL_ROCK_DOWN04 (79 | (26 << 8)) +#define MAP_NAVEL_ROCK_DOWN05 (80 | (26 << 8)) +#define MAP_NAVEL_ROCK_DOWN06 (81 | (26 << 8)) +#define MAP_NAVEL_ROCK_DOWN07 (82 | (26 << 8)) +#define MAP_NAVEL_ROCK_DOWN08 (83 | (26 << 8)) +#define MAP_NAVEL_ROCK_DOWN09 (84 | (26 << 8)) +#define MAP_NAVEL_ROCK_DOWN10 (85 | (26 << 8)) +#define MAP_NAVEL_ROCK_DOWN11 (86 | (26 << 8)) +#define MAP_NAVEL_ROCK_BOTTOM (87 | (26 << 8)) +#define MAP_TRAINER_HILL_ELEVATOR (88 | (26 << 8)) // Map Group 27 #define MAP_ROUTE104_PROTOTYPE (0 | (27 << 8)) diff --git a/include/field_specials.h b/include/field_specials.h index 79fa89bb1d..faf71e9c08 100644 --- a/include/field_specials.h +++ b/include/field_specials.h @@ -7,7 +7,7 @@ extern u8 gBikeCollisions; u8 GetLeadMonIndex(void); u8 IsDestinationBoxFull(void); u16 GetPCBoxToSendMon(void); -bool8 InMultiBattleRoom(void); +bool8 InMultiPartnerRoom(void); void UpdateTrainerFansAfterLinkBattle(void); void IncrementBirthIslandRockStepCount(void); bool8 AbnormalWeatherHasExpired(void); diff --git a/include/global.h b/include/global.h index 557bdc1c5d..447143ef68 100644 --- a/include/global.h +++ b/include/global.h @@ -331,7 +331,7 @@ struct BattleFrontier /*0xCA8*/ u8 challengeStatus; /*0xCA9*/ u8 lvlMode:2; /*0xCA9*/ u8 challengePaused:1; - /*0xCA9*/ u8 field_CA9_b:1; + /*0xCA9*/ u8 disableRecordBattle:1; /*0xCA9*/ u8 unused_CA9_c:1; /*0xCA9*/ u8 unused_CA9_d:1; /*0xCA9*/ u8 unused_CA9_e:1; diff --git a/include/strings.h b/include/strings.h index 0e2646adaa..f20be5c45f 100644 --- a/include/strings.h +++ b/include/strings.h @@ -1357,336 +1357,336 @@ extern const u8 gText_LucyDefeatGold[]; extern const u8 gText_BrandonDefeatGold[]; // Battle Tower. -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2479CE[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248297[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2444D6[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24459B[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2448CD[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24529A[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245CAC[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245E20[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245FC6[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247749[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2453B4[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2476ED[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246864[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247F3F[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2484AC[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248661[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2486FF[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2469B4[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246D9E[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244A23[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246662[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248321[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244F4F[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247B16[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2465B5[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2481E1[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247E7E[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244549[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246244[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2468A7[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2468FE[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245A5F[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24626E[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244383[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246BE9[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2462E4[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246F7B[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247268[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244643[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247EE9[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246D3F[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247AA1[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246D6A[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245D4B[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247348[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24522F[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24617D[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244989[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2470FD[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247C4E[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24754A[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247C8C[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248467[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2474AF[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245BBD[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24503D[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248AC0[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24614A[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244E5B[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245F2B[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248553[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246741[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245656[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2480AB[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248725[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244939[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2471FB[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247291[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24589C[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247B3E[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248614[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2448F5[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2445C5[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247B62[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24777A[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2455EC[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248031[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244AA9[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245464[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2484E7[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247313[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247470[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244D82[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246529[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247238[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247A18[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24597F[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247DFE[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247FB7[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246E64[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247655[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244E7E[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245535[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246FCC[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2482DC[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24808D[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246AF7[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24864E[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247991[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246605[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248B4C[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2448A7[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245C05[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2456F5[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246020[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24670A[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24694B[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2471C7[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248C5B[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246449[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2452EF[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245B91[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245F87[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246831[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247854[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244D07[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246051[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2486C6[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248401[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2450E6[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248671[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2454D6[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24662A[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246EB6[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244FD3[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247484[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2460D5[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24622A[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244DC6[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2485E5[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248BB4[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246DD3[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244B52[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24896F[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247629[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2454A3[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2459BE[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244413[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248C90[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2446B4[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244C18[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24610D[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24838D[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24633C[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24758B[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2458CE[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246E1A[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247EA1[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248369[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245DC7[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247D97[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2483C1[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248892[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2488D8[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247889[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24895F[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2449E6[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248781[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246F21[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24707D[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24818E[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24568A[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248A10[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246791[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246571[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246A4E[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248431[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2462AA[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246B3F[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2473C6[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2473FB[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245CE6[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2445E8[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2487C9[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245D60[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24795F[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245B79[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247B9B[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246B2B[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24451E[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247807[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24636B[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247DC7[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246002[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247838[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248151[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24718D[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2481A9[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247942[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244D36[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246D2D[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248751[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247D07[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246B6B[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244F98[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246BB2[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24705B[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248BEE[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24716C[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2489BD[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245D07[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247724[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248908[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244618[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24468F[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244C6E[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246E39[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24856A[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24894B[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24824F[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245C66[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246C22[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2467C4[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245406[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24737A[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2474EC[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247FE9[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247C23[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2480DC[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24857D[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248B39[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245E41[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245E78[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247D4E[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24615D[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248517[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245087[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2463C5[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247AE3[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245EEC[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24885B[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2470B2[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248B22[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2467E6[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24833D[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248C2E[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248221[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245196[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245740[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24480C[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246A22[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24555F[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24712A[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247A76[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247CB2[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2457D9[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248128[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24631F[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246CE9[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2482B1[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244DFE[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247013[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24790D[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24581F[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247A51[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24479E[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2461C7[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244ECA[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2466E6[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2477CE[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245C2D[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2487F7[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2489E7[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2478DD[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248477[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244CD6[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2466B4[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24805E[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247E3E[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245923[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248829[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2461F5[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24751D[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2475BC[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245013[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2475D5[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246C35[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246686[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247438[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245D8D[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247EB5[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246F4C[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2450C0[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245DF0[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24755C[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24474D[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2444EF[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246082[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2464EE[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2467FF[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244EF4[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247BE7[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245EBD[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24697C[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246A85[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245F58[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245851[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248A72[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2459F7[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2443E7[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245B3E[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248CCF[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24444B[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245C7F[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246C6C[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2472C7[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245AB4[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24769B[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248A40[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244BD2[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246760[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246CB3[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247FA3[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247F6D[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248D04[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2463FF[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246EEE[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244B93[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2446E5[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2469F1[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2451BD[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244AD6[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24738F[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248AEB[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246478[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24760D[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24658C[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24692B[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246ACF[]; -extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24649D[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice1Intro[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice1Mon1[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice1Mon2Ask[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice1Accept[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice1Reject[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice2Intro[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice2Mon1[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice2Mon2Ask[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice2Accept[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice2Reject[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice3Intro[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice3Mon1[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice3Mon2Ask[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice3Accept[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice3Reject[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice4Intro[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice4Mon1[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice4Mon2Ask[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice4Accept[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice4Reject[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice5Intro[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice5Mon1[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice5Mon2Ask[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice5Accept[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice5Reject[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice6Intro[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice6Mon1[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice6Mon2Ask[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice6Accept[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice6Reject[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice7Intro[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice7Mon1[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice7Mon2Ask[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice7Accept[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice7Reject[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice8Intro[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice8Mon1[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice8Mon2Ask[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice8Accept[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice8Reject[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice9Intro[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice9Mon1[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice9Mon2Ask[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice9Accept[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice9Reject[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice10Intro[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice10Mon1[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice10Mon2Ask[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice10Accept[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice10Reject[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice11Intro[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice11Mon1[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice11Mon2Ask[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice11Accept[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice11Reject[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice12Intro[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice12Mon1[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice12Mon2Ask[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice12Accept[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice12Reject[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice13Intro[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice13Mon1[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice13Mon2Ask[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice13Accept[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice13Reject[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice14Intro[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice14Mon1[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice14Mon2Ask[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice14Accept[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice14Reject[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice15Intro[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice15Mon1[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice15Mon2Ask[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice15Accept[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice15Reject[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice16Intro[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice16Mon1[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice16Mon2Ask[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice16Accept[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_Apprentice16Reject[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_LassIntro[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_LassMon1[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_LassMon2Ask[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_LassAccept[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_LassReject[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_YoungsterIntro[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_YoungsterMon1[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_YoungsterMon2Ask[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_YoungsterAccept[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_YoungsterReject[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_HikerIntro[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_HikerMon1[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_HikerMon2Ask[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_HikerAccept[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_HikerReject[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_BeautyIntro[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_BeautyMon1[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_BeautyMon2Ask[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_BeautyAccept[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_BeautyReject[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_FishermanIntro[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_FishermanMon1[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_FishermanMon2Ask[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_FishermanAccept[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_FishermanReject[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_LadyIntro[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_LadyMon1[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_LadyMon2Ask[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_LadyAccept[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_LadyReject[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_CyclingTriathleteFIntro[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_CyclingTriathleteFMon1[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_CyclingTriathleteFMon2Ask[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_CyclingTriathleteFAccept[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_CyclingTriathleteFReject[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_BugCatcherIntro[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_BugCatcherMon1[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_BugCatcherMon2Ask[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_BugCatcherAccept[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_BugCatcherReject[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_SchoolKidMIntro[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_SchoolKidMMon1[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_SchoolKidMMon2Ask[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_SchoolKidMAccept[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_SchoolKidMReject[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_RichBoyIntro[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_RichBoyMon1[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_RichBoyMon2Ask[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_RichBoyAccept[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_RichBoyReject[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_BlackBeltIntro[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_BlackBeltMon1[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_BlackBeltMon2Ask[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_BlackBeltAccept[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_BlackBeltReject[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_TuberFIntro[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_TuberFMon1[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_TuberFMon2Ask[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_TuberFAccept[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_TuberFReject[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_HexManiacIntro[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_HexManiacMon1[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_HexManiacMon2Ask[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_HexManiacAccept[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_HexManiacReject[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_PkmnBreederMIntro[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_PkmnBreederMMon1[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_PkmnBreederMMon2Ask[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_PkmnBreederMAccept[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_PkmnBreederMReject[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_RunningTriathleteFIntro[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_RunningTriathleteFMon1[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_RunningTriathleteFMon2Ask[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_RunningTriathleteFAccept[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_RunningTriathleteFReject[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_RunningTriathleteMIntro[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_RunningTriathleteMMon1[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_RunningTriathleteMMon2Ask[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_RunningTriathleteMAccept[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_RunningTriathleteMReject[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_BattleGirlIntro[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_BattleGirlMon1[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_BattleGirlMon2Ask[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_BattleGirlAccept[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_BattleGirlReject[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_CyclingTriathleteMIntro[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_CyclingTriathleteMMon1[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_CyclingTriathleteMMon2Ask[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_CyclingTriathleteMAccept[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_CyclingTriathleteMReject[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_TuberMIntro[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_TuberMMon1[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_TuberMMon2Ask[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_TuberMAccept[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_TuberMReject[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_GuitaristIntro[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_GuitaristMon1[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_GuitaristMon2Ask[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_GuitaristAccept[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_GuitaristReject[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_GentlemanIntro[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_GentlemanMon1[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_GentlemanMon2Ask[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_GentlemanAccept[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_GentlemanReject[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_PokefanMIntro[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_PokefanMMon1[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_PokefanMMon2Ask[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_PokefanMAccept[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_PokefanMReject[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_ExpertMIntro[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_ExpertMMon1[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_ExpertMMon2Ask[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_ExpertMAccept[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_ExpertMReject[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_ExpertFIntro[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_ExpertFMon1[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_ExpertFMon2Ask[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_ExpertFAccept[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_ExpertFReject[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_DragonTamerIntro[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_DragonTamerMon1[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_DragonTamerMon2Ask[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_DragonTamerAccept[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_DragonTamerReject[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_BirdKeeperIntro[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_BirdKeeperMon1[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_BirdKeeperMon2Ask[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_BirdKeeperAccept[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_BirdKeeperReject[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_NinjaBoyIntro[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_NinjaBoyMon1[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_NinjaBoyMon2Ask[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_NinjaBoyAccept[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_NinjaBoyReject[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_ParasolLadyIntro[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_ParasolLadyMon1[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_ParasolLadyMon2Ask[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_ParasolLadyAccept[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_ParasolLadyReject[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_BugManiacIntro[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_BugManiacMon1[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_BugManiacMon2Ask[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_BugManiacAccept[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_BugManiacReject[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_SailorIntro[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_SailorMon1[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_SailorMon2Ask[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_SailorAccept[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_SailorReject[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_CollectorIntro[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_CollectorMon1[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_CollectorMon2Ask[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_CollectorAccept[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_CollectorReject[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_PkmnRangerMIntro[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_PkmnRangerMMon1[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_PkmnRangerMMon2Ask[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_PkmnRangerMAccept[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_PkmnRangerMReject[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_PkmnRangerFIntro[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_PkmnRangerFMon1[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_PkmnRangerFMon2Ask[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_PkmnRangerFAccept[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_PkmnRangerFReject[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_AromaLadyIntro[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_AromaLadyMon1[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_AromaLadyMon2Ask[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_AromaLadyAccept[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_AromaLadyReject[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_RuinManiacIntro[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_RuinManiacMon1[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_RuinManiacMon2Ask[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_RuinManiacAccept[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_RuinManiacReject[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_CoolTrainerMIntro[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_CoolTrainerMMon1[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_CoolTrainerMMon2Ask[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_CoolTrainerMAccept[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_CoolTrainerMReject[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_CoolTrainerFIntro[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_CoolTrainerFMon1[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_CoolTrainerFMon2Ask[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_CoolTrainerFAccept[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_CoolTrainerFReject[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_PokemaniacIntro[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_PokemaniacMon1[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_PokemaniacMon2Ask[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_PokemaniacAccept[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_PokemaniacReject[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_KindlerIntro[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_KindlerMon1[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_KindlerMon2Ask[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_KindlerAccept[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_KindlerReject[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_CamperIntro[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_CamperMon1[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_CamperMon2Ask[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_CamperAccept[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_CamperReject[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_PicnickerIntro[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_PicnickerMon1[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_PicnickerMon2Ask[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_PicnickerAccept[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_PicnickerReject[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_PsychicMIntro[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_PsychicMMon1[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_PsychicMMon2Ask[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_PsychicMAccept[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_PsychicMReject[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_PsychicFIntro[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_PsychicFMon1[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_PsychicFMon2Ask[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_PsychicFAccept[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_PsychicFReject[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_SchoolKidFIntro[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_SchoolKidFMon1[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_SchoolKidFMon2Ask[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_SchoolKidFAccept[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_SchoolKidFReject[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_PkmnBreederFIntro[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_PkmnBreederFMon1[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_PkmnBreederFMon2Ask[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_PkmnBreederFAccept[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_PkmnBreederFReject[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_PokefanFIntro[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_PokefanFMon1[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_PokefanFMon2Ask[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_PokefanFAccept[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_PokefanFReject[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_SwimmerFIntro[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_SwimmerFMon1[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_SwimmerFMon2Ask[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_SwimmerFAccept[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_SwimmerFReject[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_SwimmingTriathleteMIntro[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_SwimmingTriathleteMMon1[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_SwimmingTriathleteMMon2Ask[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_SwimmingTriathleteMAccept[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_SwimmingTriathleteMReject[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_SwimmingTriathleteFIntro[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_SwimmingTriathleteFMon1[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_SwimmingTriathleteFMon2Ask[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_SwimmingTriathleteFAccept[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_SwimmingTriathleteFReject[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_SwimmerMIntro[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_SwimmerMMon1[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_SwimmerMMon2Ask[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_SwimmerMAccept[]; +extern const u8 BattleFrontier_BattleTowerMultiPartnerRoom_Text_SwimmerMReject[]; // Battle Dome. extern const u8 gBattleDomeOpponentPotentialText1[]; @@ -2010,7 +2010,7 @@ extern const u8 gText_JustOnePkmn[]; // battle main extern const u8 gText_LinkStandby3[]; -extern const u8 gText_BattleRecordCouldntBeSaved[]; +extern const u8 BattleFrontier_BattleTowerBattleRoom_Text_RecordCouldntBeSaved[]; extern const u8 gText_Poison[]; extern const u8 gText_Sleep[]; extern const u8 gText_Paralysis[]; diff --git a/src/battle_arena.c b/src/battle_arena.c index 67f0cc90e1..42a967fc64 100644 --- a/src/battle_arena.c +++ b/src/battle_arena.c @@ -791,7 +791,7 @@ static void InitArenaChallenge(void) gSaveBlock2Ptr->frontier.challengeStatus = 0; gSaveBlock2Ptr->frontier.curChallengeBattleNum = 0; gSaveBlock2Ptr->frontier.challengePaused = FALSE; - gSaveBlock2Ptr->frontier.field_CA9_b = 0; + gSaveBlock2Ptr->frontier.disableRecordBattle = FALSE; if (lvlMode != FRONTIER_LVL_50) isCurrent = gSaveBlock2Ptr->frontier.winStreakActiveFlags & STREAK_ARENA_OPEN; else diff --git a/src/battle_controller_link_opponent.c b/src/battle_controller_link_opponent.c index e888531cb8..6604fa142e 100644 --- a/src/battle_controller_link_opponent.c +++ b/src/battle_controller_link_opponent.c @@ -1846,7 +1846,7 @@ static void LinkOpponentHandleCmd55(void) else gBattleOutcome = gBattleBufferA[gActiveBattler][1] ^ B_OUTCOME_DREW; - gSaveBlock2Ptr->frontier.field_CA9_b = gBattleBufferA[gActiveBattler][2]; + gSaveBlock2Ptr->frontier.disableRecordBattle = gBattleBufferA[gActiveBattler][2]; FadeOutMapMusic(5); BeginFastPaletteFade(3); LinkOpponentBufferExecCompleted(); diff --git a/src/battle_controller_link_partner.c b/src/battle_controller_link_partner.c index 1382e3a8be..ece4c24bc8 100644 --- a/src/battle_controller_link_partner.c +++ b/src/battle_controller_link_partner.c @@ -1676,7 +1676,7 @@ static void LinkPartnerHandleCmd55(void) { sub_81851A8(&gBattleBufferA[gActiveBattler][4]); gBattleOutcome = gBattleBufferA[gActiveBattler][1]; - gSaveBlock2Ptr->frontier.field_CA9_b = gBattleBufferA[gActiveBattler][2]; + gSaveBlock2Ptr->frontier.disableRecordBattle = gBattleBufferA[gActiveBattler][2]; FadeOutMapMusic(5); BeginFastPaletteFade(3); LinkPartnerBufferExecCompleted(); diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c index 0bd1ea3631..161df3b828 100644 --- a/src/battle_controller_player.c +++ b/src/battle_controller_player.c @@ -3093,7 +3093,7 @@ static void PlayerHandleCmd55(void) { sub_81851A8(&gBattleBufferA[gActiveBattler][4]); gBattleOutcome = gBattleBufferA[gActiveBattler][1]; - gSaveBlock2Ptr->frontier.field_CA9_b = gBattleBufferA[gActiveBattler][2]; + gSaveBlock2Ptr->frontier.disableRecordBattle = gBattleBufferA[gActiveBattler][2]; FadeOutMapMusic(5); BeginFastPaletteFade(3); PlayerBufferExecCompleted(); diff --git a/src/battle_controllers.c b/src/battle_controllers.c index d0e76ab1b1..b411c12f67 100644 --- a/src/battle_controllers.c +++ b/src/battle_controllers.c @@ -1509,8 +1509,8 @@ void BtlController_EmitCmd55(u8 bufferId, u8 battleOutcome) { sBattleBuffersTransferData[0] = CONTROLLER_55; sBattleBuffersTransferData[1] = battleOutcome; - sBattleBuffersTransferData[2] = gSaveBlock2Ptr->frontier.field_CA9_b; - sBattleBuffersTransferData[3] = gSaveBlock2Ptr->frontier.field_CA9_b; + sBattleBuffersTransferData[2] = gSaveBlock2Ptr->frontier.disableRecordBattle; + sBattleBuffersTransferData[3] = gSaveBlock2Ptr->frontier.disableRecordBattle; sBattleBuffersTransferData[5] = sBattleBuffersTransferData[4] = sub_81850DC(&sBattleBuffersTransferData[6]); PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, sBattleBuffersTransferData[4] + 6); } diff --git a/src/battle_dome.c b/src/battle_dome.c index 7ff83f328a..897269a304 100644 --- a/src/battle_dome.c +++ b/src/battle_dome.c @@ -2259,7 +2259,7 @@ static void InitDomeChallenge(void) gSaveBlock2Ptr->frontier.challengeStatus = 0; gSaveBlock2Ptr->frontier.curChallengeBattleNum = 0; gSaveBlock2Ptr->frontier.challengePaused = FALSE; - gSaveBlock2Ptr->frontier.field_CA9_b = 0; + gSaveBlock2Ptr->frontier.disableRecordBattle = FALSE; if (!(gSaveBlock2Ptr->frontier.winStreakActiveFlags & sWinStreakFlags[battleMode][lvlMode])) gSaveBlock2Ptr->frontier.domeWinStreaks[battleMode][lvlMode] = 0; diff --git a/src/battle_factory.c b/src/battle_factory.c index b412af2371..b7e43394ec 100644 --- a/src/battle_factory.c +++ b/src/battle_factory.c @@ -193,7 +193,7 @@ static void InitFactoryChallenge(void) gSaveBlock2Ptr->frontier.challengeStatus = 0; gSaveBlock2Ptr->frontier.curChallengeBattleNum = 0; gSaveBlock2Ptr->frontier.challengePaused = FALSE; - gSaveBlock2Ptr->frontier.field_CA9_b = 0; + gSaveBlock2Ptr->frontier.disableRecordBattle = FALSE; if (!(gSaveBlock2Ptr->frontier.winStreakActiveFlags & sWinStreakFlags[battleMode][lvlMode])) { gSaveBlock2Ptr->frontier.factoryWinStreaks[battleMode][lvlMode] = 0; diff --git a/src/battle_main.c b/src/battle_main.c index 196053ad28..bcef3b286a 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -715,7 +715,7 @@ static void CB2_InitBattleInternal(void) } gMain.inBattle = TRUE; - gSaveBlock2Ptr->frontier.field_CA9_b = 0; + gSaveBlock2Ptr->frontier.disableRecordBattle = FALSE; for (i = 0; i < PARTY_SIZE; i++) AdjustFriendship(&gPlayerParty[i], 3); @@ -2315,7 +2315,7 @@ static void sub_8038F34(void) for (i = 0; i < monsCount && (gLinkPlayers[i].version & 0xFF) == VERSION_EMERALD; i++); - if (!gSaveBlock2Ptr->frontier.field_CA9_b && i == monsCount) + if (!gSaveBlock2Ptr->frontier.disableRecordBattle && i == monsCount) { if (FlagGet(FLAG_SYS_FRONTIER_PASS)) { @@ -2594,7 +2594,7 @@ static void sub_803939C(void) } else { - BattleStringExpandPlaceholdersToDisplayedString(gText_BattleRecordCouldntBeSaved); + BattleStringExpandPlaceholdersToDisplayedString(BattleFrontier_BattleTowerBattleRoom_Text_RecordCouldntBeSaved); BattlePutTextOnWindow(gDisplayedStringBattle, 0); gBattleCommunication[1] = 0x80; gBattleCommunication[MULTIUSE_STATE]++; @@ -5070,7 +5070,7 @@ static void HandleEndTurn_BattleLost(void) { gBattlescriptCurrInstr = BattleScript_PrintPlayerForfeitedLinkBattle; gBattleOutcome &= ~(B_OUTCOME_LINK_BATTLE_RAN); - gSaveBlock2Ptr->frontier.field_CA9_b = 1; + gSaveBlock2Ptr->frontier.disableRecordBattle = TRUE; } else { @@ -5102,7 +5102,7 @@ static void HandleEndTurn_RanFromBattle(void) { gBattlescriptCurrInstr = BattleScript_PrintPlayerForfeited; gBattleOutcome = B_OUTCOME_FORFEITED; - gSaveBlock2Ptr->frontier.field_CA9_b = 1; + gSaveBlock2Ptr->frontier.disableRecordBattle = TRUE; } else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER_HILL) { @@ -5721,7 +5721,7 @@ static void HandleAction_Run(void) } gBattleOutcome |= B_OUTCOME_LINK_BATTLE_RAN; - gSaveBlock2Ptr->frontier.field_CA9_b = 1; + gSaveBlock2Ptr->frontier.disableRecordBattle = TRUE; } else { diff --git a/src/battle_palace.c b/src/battle_palace.c index b5da77e35d..56fd04c686 100644 --- a/src/battle_palace.c +++ b/src/battle_palace.c @@ -89,7 +89,7 @@ static void InitPalaceChallenge(void) gSaveBlock2Ptr->frontier.challengeStatus = 0; gSaveBlock2Ptr->frontier.curChallengeBattleNum = 0; gSaveBlock2Ptr->frontier.challengePaused = FALSE; - gSaveBlock2Ptr->frontier.field_CA9_b = 0; + gSaveBlock2Ptr->frontier.disableRecordBattle = FALSE; if (!(gSaveBlock2Ptr->frontier.winStreakActiveFlags & sWinStreakFlags[battleMode][lvlMode])) gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][lvlMode] = 0; diff --git a/src/battle_tower.c b/src/battle_tower.c index 49dd6d32a6..47dc49065c 100644 --- a/src/battle_tower.c +++ b/src/battle_tower.c @@ -23,6 +23,7 @@ #include "field_message_box.h" #include "tv.h" #include "battle_factory.h" +#include "constants/apprentice.h" #include "constants/battle_frontier.h" #include "constants/battle_tower.h" #include "constants/frontier_util.h" @@ -55,11 +56,11 @@ static void SaveTowerChallenge(void); static void GetOpponentIntroSpeech(void); static void nullsub_61(void); static void nullsub_116(void); -static void sub_81642A0(void); -static void sub_8164828(void); -static void sub_8164B74(void); +static void LoadMultiPartnerCandidatesData(void); +static void ShowPartnerCandidateMessage(void); +static void LoadLinkMultiOpponentsData(void); static void sub_8164DCC(void); -static void sub_8164DE4(void); +static void SetMultiPartnerGfx(void); static void SetTowerInterviewData(void); static void ValidateBattleTowerRecordChecksums(void); static void SaveCurrentWinStreak(void); @@ -344,676 +345,419 @@ static const u8 sRubyFacilityClassToEmerald[RS_FACILITY_CLASSES_COUNT - 2][2] = {RS_FACILITY_CLASS_SIS_AND_BRO, FACILITY_CLASS_SIS_AND_BRO}, }; -static const u8 *const gUnknown_085DCFD8[] = +#define PARTNER_TEXTS(name) \ + BattleFrontier_BattleTowerMultiPartnerRoom_Text_##name##Intro, \ + BattleFrontier_BattleTowerMultiPartnerRoom_Text_##name##Mon1, \ + BattleFrontier_BattleTowerMultiPartnerRoom_Text_##name##Mon2Ask, \ + BattleFrontier_BattleTowerMultiPartnerRoom_Text_##name##Accept, \ + BattleFrontier_BattleTowerMultiPartnerRoom_Text_##name##Reject + +static const u8 *const sPartnerApprenticeTexts1[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_244383, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2443E7, - BattleFrontier_BattleTowerMultiBattleRoom_Text_244413, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24444B, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2444D6 + PARTNER_TEXTS(Apprentice1) }; -static const u8 *const gUnknown_085DCFEC[] = +static const u8 *const sPartnerApprenticeTexts2[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_2444EF, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24451E, - BattleFrontier_BattleTowerMultiBattleRoom_Text_244549, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24459B, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2445C5 + PARTNER_TEXTS(Apprentice2) }; -static const u8 *const gUnknown_085DD000[] = +static const u8 *const sPartnerApprenticeTexts3[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_2445E8, - BattleFrontier_BattleTowerMultiBattleRoom_Text_244618, - BattleFrontier_BattleTowerMultiBattleRoom_Text_244643, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24468F, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2446B4 + PARTNER_TEXTS(Apprentice3) }; -static const u8 *const gUnknown_085DD014[] = +static const u8 *const sPartnerApprenticeTexts4[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_2446E5, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24474D, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24479E, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24480C, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2448A7 + PARTNER_TEXTS(Apprentice4) }; -static const u8 *const gUnknown_085DD028[] = +static const u8 *const sPartnerApprenticeTexts5[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_2448CD, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2448F5, - BattleFrontier_BattleTowerMultiBattleRoom_Text_244939, - BattleFrontier_BattleTowerMultiBattleRoom_Text_244989, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2449E6 + PARTNER_TEXTS(Apprentice5) }; -static const u8 *const gUnknown_085DD03C[] = +static const u8 *const sPartnerApprenticeTexts6[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_244A23, - BattleFrontier_BattleTowerMultiBattleRoom_Text_244AA9, - BattleFrontier_BattleTowerMultiBattleRoom_Text_244AD6, - BattleFrontier_BattleTowerMultiBattleRoom_Text_244B52, - BattleFrontier_BattleTowerMultiBattleRoom_Text_244B93 + PARTNER_TEXTS(Apprentice6) }; -static const u8 *const gUnknown_085DD050[] = +static const u8 *const sPartnerApprenticeTexts7[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_244BD2, - BattleFrontier_BattleTowerMultiBattleRoom_Text_244C18, - BattleFrontier_BattleTowerMultiBattleRoom_Text_244C6E, - BattleFrontier_BattleTowerMultiBattleRoom_Text_244CD6, - BattleFrontier_BattleTowerMultiBattleRoom_Text_244D07 + PARTNER_TEXTS(Apprentice7) }; -static const u8 *const gUnknown_085DD064[] = +static const u8 *const sPartnerApprenticeTexts8[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_244D36, - BattleFrontier_BattleTowerMultiBattleRoom_Text_244D82, - BattleFrontier_BattleTowerMultiBattleRoom_Text_244DC6, - BattleFrontier_BattleTowerMultiBattleRoom_Text_244DFE, - BattleFrontier_BattleTowerMultiBattleRoom_Text_244E5B + PARTNER_TEXTS(Apprentice8) }; -static const u8 *const gUnknown_085DD078[] = +static const u8 *const sPartnerApprenticeTexts9[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_244E7E, - BattleFrontier_BattleTowerMultiBattleRoom_Text_244ECA, - BattleFrontier_BattleTowerMultiBattleRoom_Text_244EF4, - BattleFrontier_BattleTowerMultiBattleRoom_Text_244F4F, - BattleFrontier_BattleTowerMultiBattleRoom_Text_244F98 + PARTNER_TEXTS(Apprentice9) }; -static const u8 *const gUnknown_085DD08C[] = +static const u8 *const sPartnerApprenticeTexts10[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_244FD3, - BattleFrontier_BattleTowerMultiBattleRoom_Text_245013, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24503D, - BattleFrontier_BattleTowerMultiBattleRoom_Text_245087, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2450C0 + PARTNER_TEXTS(Apprentice10) }; -static const u8 *const gUnknown_085DD0A0[] = +static const u8 *const sPartnerApprenticeTexts11[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_2450E6, - BattleFrontier_BattleTowerMultiBattleRoom_Text_245196, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2451BD, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24522F, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24529A + PARTNER_TEXTS(Apprentice11) }; -static const u8 *const gUnknown_085DD0B4[] = +static const u8 *const sPartnerApprenticeTexts12[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_2452EF, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2453B4, - BattleFrontier_BattleTowerMultiBattleRoom_Text_245406, - BattleFrontier_BattleTowerMultiBattleRoom_Text_245464, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2454A3 + PARTNER_TEXTS(Apprentice12) }; -static const u8 *const gUnknown_085DD0C8[] = +static const u8 *const sPartnerApprenticeTexts13[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_2454D6, - BattleFrontier_BattleTowerMultiBattleRoom_Text_245535, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24555F, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2455EC, - BattleFrontier_BattleTowerMultiBattleRoom_Text_245656 + PARTNER_TEXTS(Apprentice13) }; -static const u8 *const gUnknown_085DD0DC[] = +static const u8 *const sPartnerApprenticeTexts14[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_24568A, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2456F5, - BattleFrontier_BattleTowerMultiBattleRoom_Text_245740, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2457D9, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24581F + PARTNER_TEXTS(Apprentice14) }; -static const u8 *const gUnknown_085DD0F0[] = +static const u8 *const sPartnerApprenticeTexts15[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_245851, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24589C, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2458CE, - BattleFrontier_BattleTowerMultiBattleRoom_Text_245923, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24597F + PARTNER_TEXTS(Apprentice15) }; -static const u8 *const gUnknown_085DD104[] = +static const u8 *const sPartnerApprenticeTexts16[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_2459BE, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2459F7, - BattleFrontier_BattleTowerMultiBattleRoom_Text_245A5F, - BattleFrontier_BattleTowerMultiBattleRoom_Text_245AB4, - BattleFrontier_BattleTowerMultiBattleRoom_Text_245B3E + PARTNER_TEXTS(Apprentice16) }; -static const u8 *const gUnknown_085DD118[] = +static const u8 *const sPartnerTextsLass[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_245B79, - BattleFrontier_BattleTowerMultiBattleRoom_Text_245B91, - BattleFrontier_BattleTowerMultiBattleRoom_Text_245BBD, - BattleFrontier_BattleTowerMultiBattleRoom_Text_245C05, - BattleFrontier_BattleTowerMultiBattleRoom_Text_245C2D + PARTNER_TEXTS(Lass) }; -static const u8 *const gUnknown_085DD12C[] = +static const u8 *const sPartnerTextsYoungster[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_245C66, - BattleFrontier_BattleTowerMultiBattleRoom_Text_245C7F, - BattleFrontier_BattleTowerMultiBattleRoom_Text_245CAC, - BattleFrontier_BattleTowerMultiBattleRoom_Text_245CE6, - BattleFrontier_BattleTowerMultiBattleRoom_Text_245D07 + PARTNER_TEXTS(Youngster) }; -static const u8 *const gUnknown_085DD140[] = +static const u8 *const sPartnerTextsHiker[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_245D4B, - BattleFrontier_BattleTowerMultiBattleRoom_Text_245D60, - BattleFrontier_BattleTowerMultiBattleRoom_Text_245D8D, - BattleFrontier_BattleTowerMultiBattleRoom_Text_245DC7, - BattleFrontier_BattleTowerMultiBattleRoom_Text_245DF0 + PARTNER_TEXTS(Hiker) }; -static const u8 *const gUnknown_085DD154[] = +static const u8 *const sPartnerTextsBeauty[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_245E20, - BattleFrontier_BattleTowerMultiBattleRoom_Text_245E41, - BattleFrontier_BattleTowerMultiBattleRoom_Text_245E78, - BattleFrontier_BattleTowerMultiBattleRoom_Text_245EBD, - BattleFrontier_BattleTowerMultiBattleRoom_Text_245EEC + PARTNER_TEXTS(Beauty) }; -static const u8 *const gUnknown_085DD168[] = +static const u8 *const sPartnerTextsFisherman[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_245F2B, - BattleFrontier_BattleTowerMultiBattleRoom_Text_245F58, - BattleFrontier_BattleTowerMultiBattleRoom_Text_245F87, - BattleFrontier_BattleTowerMultiBattleRoom_Text_245FC6, - BattleFrontier_BattleTowerMultiBattleRoom_Text_246002 + PARTNER_TEXTS(Fisherman) }; -static const u8 *const gUnknown_085DD17C[] = +static const u8 *const sPartnerTextsLady[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_246020, - BattleFrontier_BattleTowerMultiBattleRoom_Text_246051, - BattleFrontier_BattleTowerMultiBattleRoom_Text_246082, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2460D5, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24610D + PARTNER_TEXTS(Lady) }; -static const u8 *const gUnknown_085DD190[] = +static const u8 *const sPartnerTextsCyclingTriathleteF[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_24614A, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24615D, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24617D, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2461C7, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2461F5 + PARTNER_TEXTS(CyclingTriathleteF) }; -static const u8 *const gUnknown_085DD1A4[] = +static const u8 *const sPartnerTextsBugCatcher[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_24622A, - BattleFrontier_BattleTowerMultiBattleRoom_Text_246244, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24626E, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2462AA, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2462E4 + PARTNER_TEXTS(BugCatcher) }; -static const u8 *const gUnknown_085DD1B8[] = +static const u8 *const sPartnerTextsSchoolKidM[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_24631F, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24633C, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24636B, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2463C5, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2463FF + PARTNER_TEXTS(SchoolKidM) }; -static const u8 *const gUnknown_085DD1CC[] = +static const u8 *const sPartnerTextsRichBoy[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_246449, - BattleFrontier_BattleTowerMultiBattleRoom_Text_246478, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24649D, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2464EE, - BattleFrontier_BattleTowerMultiBattleRoom_Text_246529 + PARTNER_TEXTS(RichBoy) }; -static const u8 *const gUnknown_085DD1E0[] = +static const u8 *const sPartnerTextsBlackBelt[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_246571, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24658C, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2465B5, - BattleFrontier_BattleTowerMultiBattleRoom_Text_246605, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24662A + PARTNER_TEXTS(BlackBelt) }; -static const u8 *const gUnknown_085DD1F4[] = +static const u8 *const sPartnerTextsTuberF[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_246662, - BattleFrontier_BattleTowerMultiBattleRoom_Text_246686, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2466B4, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2466E6, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24670A + PARTNER_TEXTS(TuberF) }; -static const u8 *const gUnknown_085DD208[] = +static const u8 *const sPartnerTextsHexManiac[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_246741, - BattleFrontier_BattleTowerMultiBattleRoom_Text_246760, - BattleFrontier_BattleTowerMultiBattleRoom_Text_246791, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2467C4, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2467E6 + PARTNER_TEXTS(HexManiac) }; -static const u8 *const gUnknown_085DD21C[] = +static const u8 *const sPartnerTextsPkmnBreederM[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_2467FF, - BattleFrontier_BattleTowerMultiBattleRoom_Text_246831, - BattleFrontier_BattleTowerMultiBattleRoom_Text_246864, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2468A7, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2468FE + PARTNER_TEXTS(PkmnBreederM) }; -static const u8 *const gUnknown_085DD230[] = +static const u8 *const sPartnerTextsRunningTriathleteF[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_24692B, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24694B, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24697C, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2469B4, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2469F1 + PARTNER_TEXTS(RunningTriathleteF) }; -static const u8 *const gUnknown_085DD244[] = +static const u8 *const sPartnerTextsRunningTriathleteM[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_246A22, - BattleFrontier_BattleTowerMultiBattleRoom_Text_246A4E, - BattleFrontier_BattleTowerMultiBattleRoom_Text_246A85, - BattleFrontier_BattleTowerMultiBattleRoom_Text_246ACF, - BattleFrontier_BattleTowerMultiBattleRoom_Text_246AF7 + PARTNER_TEXTS(RunningTriathleteM) }; -static const u8 *const gUnknown_085DD258[] = +static const u8 *const sPartnerTextsBattleGirl[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_246B2B, - BattleFrontier_BattleTowerMultiBattleRoom_Text_246B3F, - BattleFrontier_BattleTowerMultiBattleRoom_Text_246B6B, - BattleFrontier_BattleTowerMultiBattleRoom_Text_246BB2, - BattleFrontier_BattleTowerMultiBattleRoom_Text_246BE9 + PARTNER_TEXTS(BattleGirl) }; -static const u8 *const gUnknown_085DD26C[] = +static const u8 *const sPartnerTextsCyclingTriathleteM[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_246C22, - BattleFrontier_BattleTowerMultiBattleRoom_Text_246C35, - BattleFrontier_BattleTowerMultiBattleRoom_Text_246C6C, - BattleFrontier_BattleTowerMultiBattleRoom_Text_246CB3, - BattleFrontier_BattleTowerMultiBattleRoom_Text_246CE9 + PARTNER_TEXTS(CyclingTriathleteM) }; -static const u8 *const gUnknown_085DD280[] = +static const u8 *const sPartnerTextsTuberM[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_246D2D, - BattleFrontier_BattleTowerMultiBattleRoom_Text_246D3F, - BattleFrontier_BattleTowerMultiBattleRoom_Text_246D6A, - BattleFrontier_BattleTowerMultiBattleRoom_Text_246D9E, - BattleFrontier_BattleTowerMultiBattleRoom_Text_246DD3 + PARTNER_TEXTS(TuberM) }; -static const u8 *const gUnknown_085DD294[] = +static const u8 *const sPartnerTextsGuitarist[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_246E1A, - BattleFrontier_BattleTowerMultiBattleRoom_Text_246E39, - BattleFrontier_BattleTowerMultiBattleRoom_Text_246E64, - BattleFrontier_BattleTowerMultiBattleRoom_Text_246EB6, - BattleFrontier_BattleTowerMultiBattleRoom_Text_246EEE + PARTNER_TEXTS(Guitarist) }; -static const u8 *const gUnknown_085DD2A8[] = +static const u8 *const sPartnerTextsGentleman[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_246F21, - BattleFrontier_BattleTowerMultiBattleRoom_Text_246F4C, - BattleFrontier_BattleTowerMultiBattleRoom_Text_246F7B, - BattleFrontier_BattleTowerMultiBattleRoom_Text_246FCC, - BattleFrontier_BattleTowerMultiBattleRoom_Text_247013 + PARTNER_TEXTS(Gentleman) }; -static const u8 *const gUnknown_085DD2BC[] = +static const u8 *const sPartnerTextsPokefanM[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_24705B, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24707D, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2470B2, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2470FD, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24712A + PARTNER_TEXTS(PokefanM) }; -static const u8 *const gUnknown_085DD2D0[] = +static const u8 *const sPartnerTextsExpertM[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_24716C, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24718D, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2471C7, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2471FB, - BattleFrontier_BattleTowerMultiBattleRoom_Text_247238 + PARTNER_TEXTS(ExpertM) }; -static const u8 *const gUnknown_085DD2E4[] = +static const u8 *const sPartnerTextsExpertF[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_247268, - BattleFrontier_BattleTowerMultiBattleRoom_Text_247291, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2472C7, - BattleFrontier_BattleTowerMultiBattleRoom_Text_247313, - BattleFrontier_BattleTowerMultiBattleRoom_Text_247348 + PARTNER_TEXTS(ExpertF) }; -static const u8 *const gUnknown_085DD2F8[] = +static const u8 *const sPartnerTextsDragonTamer[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_24737A, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24738F, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2473C6, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2473FB, - BattleFrontier_BattleTowerMultiBattleRoom_Text_247438 + PARTNER_TEXTS(DragonTamer) }; -static const u8 *const gUnknown_085DD30C[] = +static const u8 *const sPartnerTextsBirdKeeper[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_247470, - BattleFrontier_BattleTowerMultiBattleRoom_Text_247484, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2474AF, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2474EC, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24751D + PARTNER_TEXTS(BirdKeeper) }; -static const u8 *const gUnknown_085DD320[] = +static const u8 *const sPartnerTextsNinjaBoy[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_24754A, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24755C, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24758B, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2475BC, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2475D5 + PARTNER_TEXTS(NinjaBoy) }; -static const u8 *const gUnknown_085DD334[] = +static const u8 *const sPartnerTextsParasolLady[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_24760D, - BattleFrontier_BattleTowerMultiBattleRoom_Text_247629, - BattleFrontier_BattleTowerMultiBattleRoom_Text_247655, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24769B, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2476ED + PARTNER_TEXTS(ParasolLady) }; -static const u8 *const gUnknown_085DD348[] = +static const u8 *const sPartnerTextsBugManiac[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_247724, - BattleFrontier_BattleTowerMultiBattleRoom_Text_247749, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24777A, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2477CE, - BattleFrontier_BattleTowerMultiBattleRoom_Text_247807 + PARTNER_TEXTS(BugManiac) }; -static const u8 *const gUnknown_085DD35C[] = +static const u8 *const sPartnerTextsSailor[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_247838, - BattleFrontier_BattleTowerMultiBattleRoom_Text_247854, - BattleFrontier_BattleTowerMultiBattleRoom_Text_247889, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2478DD, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24790D + PARTNER_TEXTS(Sailor) }; -static const u8 *const gUnknown_085DD370[] = +static const u8 *const sPartnerTextsCollector[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_247942, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24795F, - BattleFrontier_BattleTowerMultiBattleRoom_Text_247991, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2479CE, - BattleFrontier_BattleTowerMultiBattleRoom_Text_247A18 + PARTNER_TEXTS(Collector) }; -static const u8 *const gUnknown_085DD384[] = +static const u8 *const sPartnerTextsPkmnRangerM[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_247A51, - BattleFrontier_BattleTowerMultiBattleRoom_Text_247A76, - BattleFrontier_BattleTowerMultiBattleRoom_Text_247AA1, - BattleFrontier_BattleTowerMultiBattleRoom_Text_247AE3, - BattleFrontier_BattleTowerMultiBattleRoom_Text_247B16 + PARTNER_TEXTS(PkmnRangerM) }; -static const u8 *const gUnknown_085DD398[] = +static const u8 *const sPartnerTextsPkmnRangerF[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_247B3E, - BattleFrontier_BattleTowerMultiBattleRoom_Text_247B62, - BattleFrontier_BattleTowerMultiBattleRoom_Text_247B9B, - BattleFrontier_BattleTowerMultiBattleRoom_Text_247BE7, - BattleFrontier_BattleTowerMultiBattleRoom_Text_247C23 + PARTNER_TEXTS(PkmnRangerF) }; -static const u8 *const gUnknown_085DD3AC[] = +static const u8 *const sPartnerTextsAromaLady[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_247C4E, - BattleFrontier_BattleTowerMultiBattleRoom_Text_247C8C, - BattleFrontier_BattleTowerMultiBattleRoom_Text_247CB2, - BattleFrontier_BattleTowerMultiBattleRoom_Text_247D07, - BattleFrontier_BattleTowerMultiBattleRoom_Text_247D4E + PARTNER_TEXTS(AromaLady) }; -static const u8 *const gUnknown_085DD3C0[] = +static const u8 *const sPartnerTextsRuinManiac[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_247D97, - BattleFrontier_BattleTowerMultiBattleRoom_Text_247DC7, - BattleFrontier_BattleTowerMultiBattleRoom_Text_247DFE, - BattleFrontier_BattleTowerMultiBattleRoom_Text_247E3E, - BattleFrontier_BattleTowerMultiBattleRoom_Text_247E7E + PARTNER_TEXTS(RuinManiac) }; -static const u8 *const gUnknown_085DD3D4[] = +static const u8 *const sPartnerTextsCoolTrainerM[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_247EA1, - BattleFrontier_BattleTowerMultiBattleRoom_Text_247EB5, - BattleFrontier_BattleTowerMultiBattleRoom_Text_247EE9, - BattleFrontier_BattleTowerMultiBattleRoom_Text_247F3F, - BattleFrontier_BattleTowerMultiBattleRoom_Text_247F6D + PARTNER_TEXTS(CoolTrainerM) }; -static const u8 *const gUnknown_085DD3E8[] = +static const u8 *const sPartnerTextsCoolTrainerF[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_247FA3, - BattleFrontier_BattleTowerMultiBattleRoom_Text_247FB7, - BattleFrontier_BattleTowerMultiBattleRoom_Text_247FE9, - BattleFrontier_BattleTowerMultiBattleRoom_Text_248031, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24805E + PARTNER_TEXTS(CoolTrainerF) }; -static const u8 *const gUnknown_085DD3FC[] = +static const u8 *const sPartnerTextsPokemaniac[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_24808D, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2480AB, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2480DC, - BattleFrontier_BattleTowerMultiBattleRoom_Text_248128, - BattleFrontier_BattleTowerMultiBattleRoom_Text_248151 + PARTNER_TEXTS(Pokemaniac) }; -static const u8 *const gUnknown_085DD410[] = +static const u8 *const sPartnerTextsKindler[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_24818E, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2481A9, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2481E1, - BattleFrontier_BattleTowerMultiBattleRoom_Text_248221, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24824F + PARTNER_TEXTS(Kindler) }; -static const u8 *const gUnknown_085DD424[] = +static const u8 *const sPartnerTextsCamper[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_248297, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2482B1, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2482DC, - BattleFrontier_BattleTowerMultiBattleRoom_Text_248321, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24833D + PARTNER_TEXTS(Camper) }; -static const u8 *const gUnknown_085DD438[] = +static const u8 *const sPartnerTextsPicnicker[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_248369, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24838D, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2483C1, - BattleFrontier_BattleTowerMultiBattleRoom_Text_248401, - BattleFrontier_BattleTowerMultiBattleRoom_Text_248431 + PARTNER_TEXTS(Picnicker) }; -static const u8 *const gUnknown_085DD44C[] = +static const u8 *const sPartnerTextsPsychicM[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_248467, - BattleFrontier_BattleTowerMultiBattleRoom_Text_248477, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2484AC, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2484E7, - BattleFrontier_BattleTowerMultiBattleRoom_Text_248517 + PARTNER_TEXTS(PsychicM) }; -static const u8 *const gUnknown_085DD460[] = +static const u8 *const sPartnerTextsPsychicF[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_248553, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24856A, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24857D, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2485E5, - BattleFrontier_BattleTowerMultiBattleRoom_Text_248614 + PARTNER_TEXTS(PsychicF) }; -static const u8 *const gUnknown_085DD474[] = +static const u8 *const sPartnerTextsSchoolKidF[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_24864E, - BattleFrontier_BattleTowerMultiBattleRoom_Text_248661, - BattleFrontier_BattleTowerMultiBattleRoom_Text_248671, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2486C6, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2486FF + PARTNER_TEXTS(SchoolKidF) }; -static const u8 *const gUnknown_085DD488[] = +static const u8 *const sPartnerTextsPkmnBreederF[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_248725, - BattleFrontier_BattleTowerMultiBattleRoom_Text_248751, - BattleFrontier_BattleTowerMultiBattleRoom_Text_248781, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2487C9, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2487F7 + PARTNER_TEXTS(PkmnBreederF) }; -static const u8 *const gUnknown_085DD49C[] = +static const u8 *const sPartnerTextsPokefanF[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_248829, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24885B, - BattleFrontier_BattleTowerMultiBattleRoom_Text_248892, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2488D8, - BattleFrontier_BattleTowerMultiBattleRoom_Text_248908 + PARTNER_TEXTS(PokefanF) }; -static const u8 *const gUnknown_085DD4B0[] = +static const u8 *const sPartnerTextsSwimmerF[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_24894B, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24895F, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24896F, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2489BD, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2489E7 + PARTNER_TEXTS(SwimmerF) }; -static const u8 *const gUnknown_085DD4C4[] = +static const u8 *const sPartnerTextsSwimmingTriathleteM[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_248A10, - BattleFrontier_BattleTowerMultiBattleRoom_Text_248A40, - BattleFrontier_BattleTowerMultiBattleRoom_Text_248A72, - BattleFrontier_BattleTowerMultiBattleRoom_Text_248AC0, - BattleFrontier_BattleTowerMultiBattleRoom_Text_248AEB + PARTNER_TEXTS(SwimmingTriathleteM) }; -static const u8 *const gUnknown_085DD4D8[] = +static const u8 *const sPartnerTextsSwimmingTriathleteF[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_248B22, - BattleFrontier_BattleTowerMultiBattleRoom_Text_248B39, - BattleFrontier_BattleTowerMultiBattleRoom_Text_248B4C, - BattleFrontier_BattleTowerMultiBattleRoom_Text_248BB4, - BattleFrontier_BattleTowerMultiBattleRoom_Text_248BEE + PARTNER_TEXTS(SwimmingTriathleteF) }; -static const u8 *const gUnknown_085DD4EC[] = +static const u8 *const sPartnerTextsSwimmerM[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_248C2E, - BattleFrontier_BattleTowerMultiBattleRoom_Text_248C5B, - BattleFrontier_BattleTowerMultiBattleRoom_Text_248C90, - BattleFrontier_BattleTowerMultiBattleRoom_Text_248CCF, - BattleFrontier_BattleTowerMultiBattleRoom_Text_248D04 + PARTNER_TEXTS(SwimmerM) }; struct { u32 facilityClass; const u8 *const *strings; -} const gUnknown_085DD500[] = +} const sPartnerTrainerTextTables[] = { - {FACILITY_CLASS_LASS, gUnknown_085DD118}, - {FACILITY_CLASS_YOUNGSTER, gUnknown_085DD12C}, - {FACILITY_CLASS_HIKER, gUnknown_085DD140}, - {FACILITY_CLASS_BEAUTY, gUnknown_085DD154}, - {FACILITY_CLASS_FISHERMAN, gUnknown_085DD168}, - {FACILITY_CLASS_LADY, gUnknown_085DD17C}, - {FACILITY_CLASS_CYCLING_TRIATHLETE_F, gUnknown_085DD190}, - {FACILITY_CLASS_BUG_CATCHER, gUnknown_085DD1A4}, - {FACILITY_CLASS_SCHOOL_KID_M, gUnknown_085DD1B8}, - {FACILITY_CLASS_RICH_BOY, gUnknown_085DD1CC}, - {FACILITY_CLASS_BLACK_BELT, gUnknown_085DD1E0}, - {FACILITY_CLASS_TUBER_F, gUnknown_085DD1F4}, - {FACILITY_CLASS_HEX_MANIAC, gUnknown_085DD208}, - {FACILITY_CLASS_PKMN_BREEDER_M, gUnknown_085DD21C}, - {FACILITY_CLASS_RUNNING_TRIATHLETE_F, gUnknown_085DD230}, - {FACILITY_CLASS_RUNNING_TRIATHLETE_M, gUnknown_085DD244}, - {FACILITY_CLASS_BATTLE_GIRL, gUnknown_085DD258}, - {FACILITY_CLASS_CYCLING_TRIATHLETE_M, gUnknown_085DD26C}, - {FACILITY_CLASS_TUBER_M, gUnknown_085DD280}, - {FACILITY_CLASS_GUITARIST, gUnknown_085DD294}, - {FACILITY_CLASS_GENTLEMAN, gUnknown_085DD2A8}, - {FACILITY_CLASS_POKEFAN_M, gUnknown_085DD2BC}, - {FACILITY_CLASS_EXPERT_M, gUnknown_085DD2D0}, - {FACILITY_CLASS_EXPERT_F, gUnknown_085DD2E4}, - {FACILITY_CLASS_DRAGON_TAMER, gUnknown_085DD2F8}, - {FACILITY_CLASS_BIRD_KEEPER, gUnknown_085DD30C}, - {FACILITY_CLASS_NINJA_BOY, gUnknown_085DD320}, - {FACILITY_CLASS_PARASOL_LADY, gUnknown_085DD334}, - {FACILITY_CLASS_BUG_MANIAC, gUnknown_085DD348}, - {FACILITY_CLASS_SAILOR, gUnknown_085DD35C}, - {FACILITY_CLASS_COLLECTOR, gUnknown_085DD370}, - {FACILITY_CLASS_PKMN_RANGER_M, gUnknown_085DD384}, - {FACILITY_CLASS_PKMN_RANGER_F, gUnknown_085DD398}, - {FACILITY_CLASS_AROMA_LADY, gUnknown_085DD3AC}, - {FACILITY_CLASS_RUIN_MANIAC, gUnknown_085DD3C0}, - {FACILITY_CLASS_COOLTRAINER_M, gUnknown_085DD3D4}, - {FACILITY_CLASS_COOLTRAINER_F, gUnknown_085DD3E8}, - {FACILITY_CLASS_POKEMANIAC, gUnknown_085DD3FC}, - {FACILITY_CLASS_KINDLER, gUnknown_085DD410}, - {FACILITY_CLASS_CAMPER, gUnknown_085DD424}, - {FACILITY_CLASS_PICNICKER, gUnknown_085DD438}, - {FACILITY_CLASS_PSYCHIC_M, gUnknown_085DD44C}, - {FACILITY_CLASS_PSYCHIC_F, gUnknown_085DD460}, - {FACILITY_CLASS_SCHOOL_KID_F, gUnknown_085DD474}, - {FACILITY_CLASS_PKMN_BREEDER_F, gUnknown_085DD488}, - {FACILITY_CLASS_POKEFAN_F, gUnknown_085DD49C}, - {FACILITY_CLASS_SWIMMER_F, gUnknown_085DD4B0}, - {FACILITY_CLASS_SWIMMING_TRIATHLETE_M, gUnknown_085DD4C4}, - {FACILITY_CLASS_SWIMMING_TRIATHLETE_F, gUnknown_085DD4D8}, - {FACILITY_CLASS_SWIMMER_M, gUnknown_085DD4EC} + {FACILITY_CLASS_LASS, sPartnerTextsLass}, + {FACILITY_CLASS_YOUNGSTER, sPartnerTextsYoungster}, + {FACILITY_CLASS_HIKER, sPartnerTextsHiker}, + {FACILITY_CLASS_BEAUTY, sPartnerTextsBeauty}, + {FACILITY_CLASS_FISHERMAN, sPartnerTextsFisherman}, + {FACILITY_CLASS_LADY, sPartnerTextsLady}, + {FACILITY_CLASS_CYCLING_TRIATHLETE_F, sPartnerTextsCyclingTriathleteF}, + {FACILITY_CLASS_BUG_CATCHER, sPartnerTextsBugCatcher}, + {FACILITY_CLASS_SCHOOL_KID_M, sPartnerTextsSchoolKidM}, + {FACILITY_CLASS_RICH_BOY, sPartnerTextsRichBoy}, + {FACILITY_CLASS_BLACK_BELT, sPartnerTextsBlackBelt}, + {FACILITY_CLASS_TUBER_F, sPartnerTextsTuberF}, + {FACILITY_CLASS_HEX_MANIAC, sPartnerTextsHexManiac}, + {FACILITY_CLASS_PKMN_BREEDER_M, sPartnerTextsPkmnBreederM}, + {FACILITY_CLASS_RUNNING_TRIATHLETE_F, sPartnerTextsRunningTriathleteF}, + {FACILITY_CLASS_RUNNING_TRIATHLETE_M, sPartnerTextsRunningTriathleteM}, + {FACILITY_CLASS_BATTLE_GIRL, sPartnerTextsBattleGirl}, + {FACILITY_CLASS_CYCLING_TRIATHLETE_M, sPartnerTextsCyclingTriathleteM}, + {FACILITY_CLASS_TUBER_M, sPartnerTextsTuberM}, + {FACILITY_CLASS_GUITARIST, sPartnerTextsGuitarist}, + {FACILITY_CLASS_GENTLEMAN, sPartnerTextsGentleman}, + {FACILITY_CLASS_POKEFAN_M, sPartnerTextsPokefanM}, + {FACILITY_CLASS_EXPERT_M, sPartnerTextsExpertM}, + {FACILITY_CLASS_EXPERT_F, sPartnerTextsExpertF}, + {FACILITY_CLASS_DRAGON_TAMER, sPartnerTextsDragonTamer}, + {FACILITY_CLASS_BIRD_KEEPER, sPartnerTextsBirdKeeper}, + {FACILITY_CLASS_NINJA_BOY, sPartnerTextsNinjaBoy}, + {FACILITY_CLASS_PARASOL_LADY, sPartnerTextsParasolLady}, + {FACILITY_CLASS_BUG_MANIAC, sPartnerTextsBugManiac}, + {FACILITY_CLASS_SAILOR, sPartnerTextsSailor}, + {FACILITY_CLASS_COLLECTOR, sPartnerTextsCollector}, + {FACILITY_CLASS_PKMN_RANGER_M, sPartnerTextsPkmnRangerM}, + {FACILITY_CLASS_PKMN_RANGER_F, sPartnerTextsPkmnRangerF}, + {FACILITY_CLASS_AROMA_LADY, sPartnerTextsAromaLady}, + {FACILITY_CLASS_RUIN_MANIAC, sPartnerTextsRuinManiac}, + {FACILITY_CLASS_COOLTRAINER_M, sPartnerTextsCoolTrainerM}, + {FACILITY_CLASS_COOLTRAINER_F, sPartnerTextsCoolTrainerF}, + {FACILITY_CLASS_POKEMANIAC, sPartnerTextsPokemaniac}, + {FACILITY_CLASS_KINDLER, sPartnerTextsKindler}, + {FACILITY_CLASS_CAMPER, sPartnerTextsCamper}, + {FACILITY_CLASS_PICNICKER, sPartnerTextsPicnicker}, + {FACILITY_CLASS_PSYCHIC_M, sPartnerTextsPsychicM}, + {FACILITY_CLASS_PSYCHIC_F, sPartnerTextsPsychicF}, + {FACILITY_CLASS_SCHOOL_KID_F, sPartnerTextsSchoolKidF}, + {FACILITY_CLASS_PKMN_BREEDER_F, sPartnerTextsPkmnBreederF}, + {FACILITY_CLASS_POKEFAN_F, sPartnerTextsPokefanF}, + {FACILITY_CLASS_SWIMMER_F, sPartnerTextsSwimmerF}, + {FACILITY_CLASS_SWIMMING_TRIATHLETE_M, sPartnerTextsSwimmingTriathleteM}, + {FACILITY_CLASS_SWIMMING_TRIATHLETE_F, sPartnerTextsSwimmingTriathleteF}, + {FACILITY_CLASS_SWIMMER_M, sPartnerTextsSwimmerM} }; -static const u8 *const *const gUnknown_085DD690[] = +static const u8 *const *const sPartnerApprenticeTextTables[NUM_APPRENTICES] = { - gUnknown_085DCFD8, - gUnknown_085DCFEC, - gUnknown_085DD000, - gUnknown_085DD014, - gUnknown_085DD028, - gUnknown_085DD03C, - gUnknown_085DD050, - gUnknown_085DD064, - gUnknown_085DD078, - gUnknown_085DD08C, - gUnknown_085DD0A0, - gUnknown_085DD0B4, - gUnknown_085DD0C8, - gUnknown_085DD0DC, - gUnknown_085DD0F0, - gUnknown_085DD104 + sPartnerApprenticeTexts1, + sPartnerApprenticeTexts2, + sPartnerApprenticeTexts3, + sPartnerApprenticeTexts4, + sPartnerApprenticeTexts5, + sPartnerApprenticeTexts6, + sPartnerApprenticeTexts7, + sPartnerApprenticeTexts8, + sPartnerApprenticeTexts9, + sPartnerApprenticeTexts10, + sPartnerApprenticeTexts11, + sPartnerApprenticeTexts12, + sPartnerApprenticeTexts13, + sPartnerApprenticeTexts14, + sPartnerApprenticeTexts15, + sPartnerApprenticeTexts16 }; struct @@ -1022,9 +766,9 @@ struct u8 fixedIV; u8 level; u8 nature; - u8 evs[6]; + u8 evs[NUM_STATS]; u16 moves[MAX_MON_MOVES]; -} const sStevenMons[3] = +} const sStevenMons[MULTI_PARTY_SIZE] = { { .species = SPECIES_METANG, @@ -1056,22 +800,22 @@ struct static void (* const sBattleTowerFuncs[])(void) = { - [BATTLE_TOWER_FUNC_INIT] = InitTowerChallenge, - [BATTLE_TOWER_FUNC_GET_DATA] = GetTowerData, - [BATTLE_TOWER_FUNC_SET_DATA] = SetTowerData, - [BATTLE_TOWER_FUNC_SET_OPPONENT] = SetNextFacilityOpponent, - [BATTLE_TOWER_FUNC_SET_BATTLE_WON] = SetTowerBattleWon, - [BATTLE_TOWER_FUNC_GIVE_RIBBONS] = AwardBattleTowerRibbons, - [BATTLE_TOWER_FUNC_SAVE] = SaveTowerChallenge, - [BATTLE_TOWER_FUNC_GET_OPPONENT_INTRO] = GetOpponentIntroSpeech, - [BATTLE_TOWER_FUNC_NOP] = nullsub_61, - [BATTLE_TOWER_FUNC_NOP2] = nullsub_116, - [BATTLE_TOWER_FUNC_10] = sub_81642A0, - [BATTLE_TOWER_FUNC_11] = sub_8164828, - [BATTLE_TOWER_FUNC_12] = sub_8164B74, - [BATTLE_TOWER_FUNC_13] = sub_8164DCC, - [BATTLE_TOWER_FUNC_14] = sub_8164DE4, - [BATTLE_TOWER_FUNC_SET_INTERVIEW_DATA] = SetTowerInterviewData, + [BATTLE_TOWER_FUNC_INIT] = InitTowerChallenge, + [BATTLE_TOWER_FUNC_GET_DATA] = GetTowerData, + [BATTLE_TOWER_FUNC_SET_DATA] = SetTowerData, + [BATTLE_TOWER_FUNC_SET_OPPONENT] = SetNextFacilityOpponent, + [BATTLE_TOWER_FUNC_SET_BATTLE_WON] = SetTowerBattleWon, + [BATTLE_TOWER_FUNC_GIVE_RIBBONS] = AwardBattleTowerRibbons, + [BATTLE_TOWER_FUNC_SAVE] = SaveTowerChallenge, + [BATTLE_TOWER_FUNC_GET_OPPONENT_INTRO] = GetOpponentIntroSpeech, + [BATTLE_TOWER_FUNC_NOP] = nullsub_61, + [BATTLE_TOWER_FUNC_NOP2] = nullsub_116, + [BATTLE_TOWER_FUNC_LOAD_PARTNERS] = LoadMultiPartnerCandidatesData, + [BATTLE_TOWER_FUNC_PARTNER_MSG] = ShowPartnerCandidateMessage, + [BATTLE_TOWER_FUNC_LOAD_LINK_OPPONENTS] = LoadLinkMultiOpponentsData, + [BATTLE_TOWER_FUNC_13] = sub_8164DCC, + [BATTLE_TOWER_FUNC_SET_PARTNER_GFX] = SetMultiPartnerGfx, + [BATTLE_TOWER_FUNC_SET_INTERVIEW_DATA] = SetTowerInterviewData, }; static const u32 sWinStreakFlags[][2] = @@ -1090,9 +834,10 @@ static const u32 sWinStreakMasks[][2] = {~(STREAK_TOWER_LINK_MULTIS_50), ~(STREAK_TOWER_LINK_MULTIS_OPEN)}, }; -static const u8 gUnknown_085DF9EC[] = +// The challenge number at which an Apprentice can appear, depending on how many of their questions were answered +static const u8 sApprenticeChallengeThreshold[MAX_APPRENTICE_QUESTIONS] = { - 0x01, 0x02, 0x03, 0x04, 0x05, 0x08, 0x09, 0x0a, 0x0b, 0x0c + 1, 2, 3, 4, 5, 8, 9, 10, 11, 12 }; // Unclear why this was duplicated @@ -1162,7 +907,7 @@ static void InitTowerChallenge(void) gSaveBlock2Ptr->frontier.challengeStatus = CHALLENGE_STATUS_SAVING; gSaveBlock2Ptr->frontier.curChallengeBattleNum = 0; gSaveBlock2Ptr->frontier.challengePaused = FALSE; - gSaveBlock2Ptr->frontier.field_CA9_b = 0; + gSaveBlock2Ptr->frontier.disableRecordBattle = FALSE; ResetFrontierTrainerIds(); if (!(gSaveBlock2Ptr->frontier.winStreakActiveFlags & sWinStreakFlags[battleMode][lvlMode])) gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode] = 0; @@ -1279,7 +1024,7 @@ static bool8 ChooseSpecialBattleTowerTrainer(void) for (i = 0; i < APPRENTICE_COUNT; i++) { if (gSaveBlock2Ptr->apprentices[i].lvlMode != 0 - && gUnknown_085DF9EC[gSaveBlock2Ptr->apprentices[i].numQuestions] == winStreak + && sApprenticeChallengeThreshold[gSaveBlock2Ptr->apprentices[i].numQuestions] == winStreak && gSaveBlock2Ptr->apprentices[i].lvlMode - 1 == lvlMode) { trainerIds[idsCount] = i + TRAINER_RECORD_MIXING_APPRENTICE; @@ -2448,7 +2193,7 @@ static void nullsub_116(void) } -static void sub_81640E0(u16 trainerId) +static void GetApprenticeMultiPartnerParty(u16 trainerId) { s32 i, count; u32 validSpecies[3]; @@ -2473,7 +2218,7 @@ static void sub_81640E0(u16 trainerId) } while (gUnknown_03006298[0] == gUnknown_03006298[1]); } -static void sub_8164188(u16 trainerId) +static void GetRecordMixFriendMultiPartnerParty(u16 trainerId) { s32 i, count; u32 validSpecies[3]; @@ -2501,7 +2246,7 @@ static void sub_8164188(u16 trainerId) } while (gUnknown_03006298[2] == gUnknown_03006298[3]); } -static void sub_81642A0(void) +static void LoadMultiPartnerCandidatesData(void) { s32 i, j, k; u32 spArray[5]; @@ -2576,7 +2321,7 @@ static void sub_81642A0(void) for (i = 0; i < APPRENTICE_COUNT; i++) { if (gSaveBlock2Ptr->apprentices[i].lvlMode != 0 - && gUnknown_085DF9EC[gSaveBlock2Ptr->apprentices[i].numQuestions] / 7 <= challengeNum + && sApprenticeChallengeThreshold[gSaveBlock2Ptr->apprentices[i].numQuestions] / 7 <= challengeNum && gSaveBlock2Ptr->apprentices[i].lvlMode - 1 == lvlMode) { k = 0; @@ -2600,7 +2345,7 @@ static void sub_81642A0(void) gSaveBlock2Ptr->frontier.trainerIds[6] = spArray[Random() % r10]; eventObjTemplates[7].graphicsId = GetBattleFacilityTrainerGfxId(gSaveBlock2Ptr->frontier.trainerIds[6]); FlagClear(FLAG_HIDE_BATTLE_TOWER_MULTI_BATTLE_PARTNER_ALT_1); - sub_81640E0(gSaveBlock2Ptr->frontier.trainerIds[6]); + GetApprenticeMultiPartnerParty(gSaveBlock2Ptr->frontier.trainerIds[6]); } r10 = 0; @@ -2643,7 +2388,7 @@ static void sub_81642A0(void) gSaveBlock2Ptr->frontier.trainerIds[7] = spArray[Random() % r10]; eventObjTemplates[8].graphicsId = GetBattleFacilityTrainerGfxId(gSaveBlock2Ptr->frontier.trainerIds[7]); FlagClear(FLAG_HIDE_BATTLE_TOWER_MULTI_BATTLE_PARTNER_ALT_2); - sub_8164188(gSaveBlock2Ptr->frontier.trainerIds[7]); + GetRecordMixFriendMultiPartnerParty(gSaveBlock2Ptr->frontier.trainerIds[7]); } } @@ -2682,9 +2427,9 @@ static void sub_81646BC(u16 trainerId, u16 monSetId) StringCopy(gStringVar2, gSpeciesNames[species]); } -static void sub_8164828(void) +static void ShowPartnerCandidateMessage(void) { - s32 i, j, arrId; + s32 i, j, partnerId; s32 monSetId; s32 level = SetFacilityPtrsGetLevel(); u16 winStreak = GetCurrentFacilityWinStreak(); @@ -2692,15 +2437,15 @@ static void sub_8164828(void) s32 k = gSpecialVar_LastTalked - 2; s32 trainerId = gSaveBlock2Ptr->frontier.trainerIds[k]; - for (arrId = 0; arrId < ARRAY_COUNT(gUnknown_085DD500); arrId++) + for (partnerId = 0; partnerId < ARRAY_COUNT(sPartnerTrainerTextTables); partnerId++) { - if (gUnknown_085DD500[arrId].facilityClass == GetFrontierTrainerFacilityClass(trainerId)) + if (sPartnerTrainerTextTables[partnerId].facilityClass == GetFrontierTrainerFacilityClass(trainerId)) break; } switch (gSpecialVar_0x8005) { - case 0: + case PARTNER_MSGID_INTRO: if (trainerId == TRAINER_EREADER) return; if (trainerId < TRAINER_RECORD_MIXING_FRIEND) @@ -2722,15 +2467,15 @@ static void sub_8164828(void) GetFrontierTrainerName(gStringVar3, trainerId); } break; - case 1: + case PARTNER_MSGID_MON1: monSetId = gSaveBlock2Ptr->frontier.trainerIds[8 + k * 2]; sub_81646BC(trainerId, monSetId); break; - case 2: + case PARTNER_MSGID_MON2_ASK: monSetId = gSaveBlock2Ptr->frontier.trainerIds[9 + k * 2]; sub_81646BC(trainerId, monSetId); break; - case 3: + case PARTNER_MSGID_ACCEPT: gPartnerTrainerId = trainerId; if (trainerId < TRAINER_RECORD_MIXING_FRIEND) { @@ -2767,29 +2512,31 @@ static void sub_8164828(void) } gSaveBlock2Ptr->frontier.trainerIds[17] = trainerId; break; - case 4: + case PARTNER_MSGID_REJECT: break; } if (trainerId == TRAINER_EREADER) return; + // First check is redundant, only needs to make sure it's not an Apprentice if (trainerId < TRAINER_RECORD_MIXING_FRIEND) { - ShowFieldMessage(gUnknown_085DD500[arrId].strings[gSpecialVar_0x8005]); + ShowFieldMessage(sPartnerTrainerTextTables[partnerId].strings[gSpecialVar_0x8005]); } else if (trainerId < TRAINER_RECORD_MIXING_APPRENTICE) { - ShowFieldMessage(gUnknown_085DD500[arrId].strings[gSpecialVar_0x8005]); + ShowFieldMessage(sPartnerTrainerTextTables[partnerId].strings[gSpecialVar_0x8005]); } + // Trainer is a former/record-mixed Apprentice, do Apprentice message else { - u8 id = gSaveBlock2Ptr->apprentices[trainerId - TRAINER_RECORD_MIXING_APPRENTICE].id; - ShowFieldMessage(gUnknown_085DD690[id][gSpecialVar_0x8005]); + u8 apprenticeId = gSaveBlock2Ptr->apprentices[trainerId - TRAINER_RECORD_MIXING_APPRENTICE].id; + ShowFieldMessage(sPartnerApprenticeTextTables[apprenticeId][gSpecialVar_0x8005]); } } -static void sub_8164B74(void) +static void LoadLinkMultiOpponentsData(void) { s32 challengeNum; s32 i, j; @@ -2884,9 +2631,10 @@ static void sub_8164DCC(void) sub_800AC34(); } -static void sub_8164DE4(void) +static void SetMultiPartnerGfx(void) { - SetBattleFacilityTrainerGfxId(gSaveBlock2Ptr->frontier.trainerIds[17], 0xF); + // 0xF below means use VAR_OBJ_GFX_ID_E + SetBattleFacilityTrainerGfxId(gSaveBlock2Ptr->frontier.trainerIds[17], 0xF); } static void SetTowerInterviewData(void) diff --git a/src/data/battle_frontier/apprentice.h b/src/data/battle_frontier/apprentice.h index 0fdb87f96a..349dc96196 100644 --- a/src/data/battle_frontier/apprentice.h +++ b/src/data/battle_frontier/apprentice.h @@ -934,7 +934,7 @@ static const bool8 sValidApprenticeMoves[MOVES_COUNT] = // WHICH_MOVE has max 5 occurrences, defined as NUM_WHICH_MOVE_QUESTIONS // WHICH_FIRST has max 1 occurrence, lead mon should only be chosen once // WHICH_SPEECH has max 1 occurrence, as the apprentice leaves after its asked -static const u8 sQuestionPossibilities[] = +static const u8 sQuestionPossibilities[MAX_APPRENTICE_QUESTIONS] = { QUESTION_ID_WHAT_ITEM, QUESTION_ID_WHAT_ITEM, diff --git a/src/field_door.c b/src/field_door.c index c197aca147..8fb5cb948b 100644 --- a/src/field_door.c +++ b/src/field_door.c @@ -9,7 +9,7 @@ #include "constants/maps.h" #include "constants/songs.h" -bool8 sub_808A964(void); +static bool8 ShouldUseMultiCorridorDoor(void); const u8 DoorAnimTiles_04[][0x100] = { @@ -698,14 +698,14 @@ static void DrawDoor(const struct DoorGraphics *gfx, const struct DoorAnimFrame if (frame->offset == 0xFFFF) { DrawClosedDoorTiles(gfx, x, y); - if (sub_808A964()) + if (ShouldUseMultiCorridorDoor()) DrawClosedDoorTiles(gfx, gSpecialVar_0x8004 + 7, gSpecialVar_0x8005 + 7); } else { CopyDoorTilesToVram(gfx, frame); DrawCurrentDoorAnimFrame(gfx, x, y, gfx->palette); - if (sub_808A964()) + if (ShouldUseMultiCorridorDoor()) DrawCurrentDoorAnimFrame(gfx, gSpecialVar_0x8004 + 7, gSpecialVar_0x8005 + 7, gfx->palette); } } @@ -885,11 +885,13 @@ u32 GetDoorSoundEffect(u32 x, u32 y) return SE_DOOR; } -bool8 sub_808A964(void) +// Opens the Battle Tower multi partner's door in sync with the player's door +static bool8 ShouldUseMultiCorridorDoor(void) { - if (FlagGet(FLAG_SPECIAL_FLAG_0x4002)) + if (FlagGet(FLAG_ENABLE_MULTI_CORRIDOR_DOOR)) { - if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(BATTLE_FRONTIER_BATTLE_TOWER_CORRIDOR2) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(BATTLE_FRONTIER_BATTLE_TOWER_CORRIDOR2)) + if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(BATTLE_FRONTIER_BATTLE_TOWER_MULTI_CORRIDOR) + && gSaveBlock1Ptr->location.mapNum == MAP_NUM(BATTLE_FRONTIER_BATTLE_TOWER_MULTI_CORRIDOR)) { return TRUE; } diff --git a/src/field_specials.c b/src/field_specials.c index bffb9f5912..aae10e727c 100644 --- a/src/field_specials.c +++ b/src/field_specials.c @@ -46,6 +46,7 @@ #include "wallclock.h" #include "window.h" #include "constants/battle_frontier.h" +#include "constants/battle_tower.h" #include "constants/decorations.h" #include "constants/event_objects.h" #include "constants/event_object_movement_constants.h" @@ -83,7 +84,7 @@ static EWRAM_DATA u8 sScrollableMultichoice_ItemSpriteId = 0; static EWRAM_DATA u8 sBattlePointsWindowId = 0; static EWRAM_DATA u8 sFrontierExchangeCorner_ItemIconWindowId = 0; static EWRAM_DATA u8 sPCBoxToSendMon = 0; -static EWRAM_DATA u32 sUnknown_0203AB70 = 0; +static EWRAM_DATA u32 sBattleTowerMultiBattleTypeFlags = 0; struct ListMenuTemplate gScrollableMultichoice_ListMenuTemplate; @@ -128,7 +129,7 @@ static void ShowFrontierExchangeCornerItemIcon(u16 item); static void Task_DeoxysRockInteraction(u8 taskId); static void ChangeDeoxysRockLevel(u8 a0); static void WaitForDeoxysRockMovement(u8 taskId); -static void sub_813B57C(u8 taskId); +static void Task_LinkRetireStatusWithBattleTowerPartner(u8 taskId); static void Task_LoopWingFlapSE(u8 taskId); static void Task_CloseBattlePikeCurtain(u8 taskId); static u8 DidPlayerGetFirstFans(void); @@ -1701,10 +1702,10 @@ bool8 IsBadEggInParty(void) return FALSE; } -bool8 InMultiBattleRoom(void) +bool8 InMultiPartnerRoom(void) { - if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(BATTLE_FRONTIER_BATTLE_TOWER_MULTI_BATTLE_ROOM) - && gSaveBlock1Ptr->location.mapNum == MAP_NUM(BATTLE_FRONTIER_BATTLE_TOWER_MULTI_BATTLE_ROOM) && + if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(BATTLE_FRONTIER_BATTLE_TOWER_MULTI_PARTNER_ROOM) + && gSaveBlock1Ptr->location.mapNum == MAP_NUM(BATTLE_FRONTIER_BATTLE_TOWER_MULTI_PARTNER_ROOM) && VarGet(VAR_FRONTIER_BATTLE_MODE) == FRONTIER_MODE_MULTIS) return TRUE; return FALSE; @@ -3746,7 +3747,7 @@ bool32 ShouldDistributeEonTicket(void) void sub_813B534(void) { - sUnknown_0203AB70 = gBattleTypeFlags; + sBattleTowerMultiBattleTypeFlags = gBattleTypeFlags; gBattleTypeFlags = 0; if (!gReceivedRemoteLinkPlayers) { @@ -3754,12 +3755,12 @@ void sub_813B534(void) } } -void sub_813B568(void) +void LinkRetireStatusWithBattleTowerPartner(void) { - CreateTask(sub_813B57C, 5); + CreateTask(Task_LinkRetireStatusWithBattleTowerPartner, 5); } -static void sub_813B57C(u8 taskId) +static void Task_LinkRetireStatusWithBattleTowerPartner(u8 taskId) { switch (gTasks[taskId].data[0]) { @@ -3790,21 +3791,24 @@ static void sub_813B57C(u8 taskId) { gSpecialVar_0x8005 = gBlockRecvBuffer[1][0]; ResetBlockReceivedFlag(1); - if (gSpecialVar_0x8004 == 1 && gSpecialVar_0x8005 == 1) + if (gSpecialVar_0x8004 == BATTLE_TOWER_LINK_RETIRE + && gSpecialVar_0x8005 == BATTLE_TOWER_LINK_RETIRE) { - gSpecialVar_Result = 1; + gSpecialVar_Result = BATTLE_TOWER_LINKSTAT_BOTH_RETIRE; } - else if (gSpecialVar_0x8004 == 0 && gSpecialVar_0x8005 == 1) + else if (gSpecialVar_0x8004 == BATTLE_TOWER_LINK_CONTINUE + && gSpecialVar_0x8005 == BATTLE_TOWER_LINK_RETIRE) { - gSpecialVar_Result = 2; + gSpecialVar_Result = BATTLE_TOWER_LINKSTAT_PARTNER_RETIRE; } - else if (gSpecialVar_0x8004 == 1 && gSpecialVar_0x8005 == 0) + else if (gSpecialVar_0x8004 == BATTLE_TOWER_LINK_RETIRE + && gSpecialVar_0x8005 == BATTLE_TOWER_LINK_CONTINUE) { - gSpecialVar_Result = 3; + gSpecialVar_Result = BATTLE_TOWER_LINKSTAT_PLAYER_RETIRE; } else { - gSpecialVar_Result = 0; + gSpecialVar_Result = BATTLE_TOWER_LINKSTAT_CONTINUE; } } gTasks[taskId].data[0]++; @@ -3842,14 +3846,14 @@ static void sub_813B57C(u8 taskId) case 5: if (GetMultiplayerId() == 0) { - if (gSpecialVar_Result == 2) + if (gSpecialVar_Result == BATTLE_TOWER_LINKSTAT_PARTNER_RETIRE) { ShowFieldAutoScrollMessage(gText_YourPartnerHasRetired); } } else { - if (gSpecialVar_Result == 3) + if (gSpecialVar_Result == BATTLE_TOWER_LINKSTAT_PLAYER_RETIRE) { ShowFieldAutoScrollMessage(gText_YourPartnerHasRetired); } @@ -3880,7 +3884,7 @@ static void sub_813B57C(u8 taskId) { sub_800AC34(); } - gBattleTypeFlags = sUnknown_0203AB70; + gBattleTypeFlags = sBattleTowerMultiBattleTypeFlags; EnableBothScriptContexts(); DestroyTask(taskId); break; diff --git a/src/frontier_pass.c b/src/frontier_pass.c index 6832c4f665..7dcd526133 100644 --- a/src/frontier_pass.c +++ b/src/frontier_pass.c @@ -1531,7 +1531,7 @@ static void Task_HandleFrontierMap(u8 taskId) static u8 MapNumToFrontierFacilityId(u16 mapNum) // id + 1, zero means not a frontier map number { if ((mapNum >= MAP_NUM(BATTLE_FRONTIER_BATTLE_TOWER_LOBBY) && mapNum <= MAP_NUM(BATTLE_FRONTIER_BATTLE_TOWER_BATTLE_ROOM)) - || (mapNum >= MAP_NUM(BATTLE_FRONTIER_BATTLE_TOWER_MULTI_BATTLE_ROOM) && mapNum <= MAP_NUM(BATTLE_FRONTIER_BATTLE_TOWER_BATTLE_ROOM2))) + || (mapNum >= MAP_NUM(BATTLE_FRONTIER_BATTLE_TOWER_MULTI_PARTNER_ROOM) && mapNum <= MAP_NUM(BATTLE_FRONTIER_BATTLE_TOWER_MULTI_BATTLE_ROOM))) return FRONTIER_FACILITY_TOWER + 1; else if (mapNum == MAP_NUM(BATTLE_FRONTIER_BATTLE_DOME_LOBBY) || mapNum == MAP_NUM(BATTLE_FRONTIER_BATTLE_DOME_CORRIDOR) diff --git a/src/frontier_util.c b/src/frontier_util.c index 084be4fe23..070de64ed8 100644 --- a/src/frontier_util.c +++ b/src/frontier_util.c @@ -840,8 +840,8 @@ static void GetFrontierData(void) gSpecialVar_Result = gBattleOutcome; gBattleOutcome = 0; break; - case FRONTIER_DATA_6: - gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_CA9_b; + case FRONTIER_DATA_RECORD_DISABLED: + gSpecialVar_Result = gSaveBlock2Ptr->frontier.disableRecordBattle; break; case FRONTIER_DATA_HEARD_BRAIN_SPEECH: gSpecialVar_Result = gSaveBlock2Ptr->frontier.battledBrainFlags & sBattledBrainBitFlags[facility][hasSymbol]; @@ -875,8 +875,8 @@ static void SetFrontierData(void) for (i = 0; i < MAX_FRONTIER_PARTY_SIZE; i++) gSaveBlock2Ptr->frontier.selectedPartyMons[i] = gSelectedOrderFromParty[i]; break; - case FRONTIER_DATA_6: - gSaveBlock2Ptr->frontier.field_CA9_b = gSpecialVar_0x8006; + case FRONTIER_DATA_RECORD_DISABLED: + gSaveBlock2Ptr->frontier.disableRecordBattle = gSpecialVar_0x8006; break; case FRONTIER_DATA_HEARD_BRAIN_SPEECH: gSaveBlock2Ptr->frontier.battledBrainFlags |= sBattledBrainBitFlags[facility][hasSymbol]; @@ -2173,7 +2173,7 @@ static void RestoreHeldItems(void) static void SaveRecordBattle(void) { gSpecialVar_Result = MoveRecordedBattleToSaveData(); - gSaveBlock2Ptr->frontier.field_CA9_b = 1; + gSaveBlock2Ptr->frontier.disableRecordBattle = TRUE; } static void BufferFrontierTrainerName(void) diff --git a/src/item_menu.c b/src/item_menu.c index 6b0226188c..f3ffae90f5 100755 --- a/src/item_menu.c +++ b/src/item_menu.c @@ -1882,7 +1882,7 @@ bool8 UseRegisteredKeyItemOnField(void) { u8 taskId; - if (InUnionRoom() == TRUE || InBattlePyramid() || InBattlePike() || InMultiBattleRoom() == TRUE) + if (InUnionRoom() == TRUE || InBattlePyramid() || InBattlePike() || InMultiPartnerRoom() == TRUE) return FALSE; HideMapNamePopUpWindow(); ChangeBgY_ScreenOff(0, 0, 0); diff --git a/src/party_menu.c b/src/party_menu.c index e8a019d665..a1d988677e 100755 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -2572,7 +2572,7 @@ static u8 GetPartyMenuActionsType(struct Pokemon *mon) switch (gPartyMenu.menuType) { case PARTY_MENU_TYPE_FIELD: - if (InMultiBattleRoom() == TRUE || GetMonData(mon, MON_DATA_IS_EGG)) + if (InMultiPartnerRoom() == TRUE || GetMonData(mon, MON_DATA_IS_EGG)) actionType = ACTIONS_SWITCH; else actionType = ACTIONS_NONE; // actions populated by SetPartyMonFieldSelectionActions diff --git a/src/start_menu.c b/src/start_menu.c index c24497d74f..8f7c21d319 100644 --- a/src/start_menu.c +++ b/src/start_menu.c @@ -203,7 +203,7 @@ static void BuildLinkModeStartMenu(void); static void BuildUnionRoomStartMenu(void); static void BuildBattlePikeStartMenu(void); static void BuildBattlePyramidStartMenu(void); -static void BuildMultiBattleRoomStartMenu(void); +static void BuildMultiPartnerRoomStartMenu(void); static void ShowSafariBallsWindow(void); static void ShowPyramidFloorWindow(void); static void RemoveExtraStartMenuWindows(void); @@ -258,9 +258,9 @@ static void BuildStartMenuActions(void) { BuildBattlePyramidStartMenu(); } - else if (InMultiBattleRoom()) + else if (InMultiPartnerRoom()) { - BuildMultiBattleRoomStartMenu(); + BuildMultiPartnerRoomStartMenu(); } else { @@ -358,7 +358,7 @@ static void BuildBattlePyramidStartMenu(void) AddStartMenuAction(MENU_ACTION_EXIT); } -static void BuildMultiBattleRoomStartMenu(void) +static void BuildMultiPartnerRoomStartMenu(void) { AddStartMenuAction(MENU_ACTION_POKEMON); AddStartMenuAction(MENU_ACTION_PLAYER); From 63c8cf97d1e47573ba8c5bcdf23543013a0f2a14 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Wed, 18 Dec 2019 02:32:52 -0500 Subject: [PATCH 04/37] Document Battle Dome scripts and some battle_dome.c --- asm/macros/battle_frontier/battle_dome.inc | 24 +- data/battle_ai_scripts.s | 2 +- .../scripts.inc | 678 ++++++++------- .../scripts.inc | 51 +- .../BattleFrontier_BattleDomeLobby/map.json | 20 +- .../scripts.inc | 441 +++++----- .../scripts.inc | 306 +++---- data/specials.inc | 2 +- .../unknown_D83900.bin | Bin .../unknown_D83B2C.bin | Bin .../unknown_D83C3C.bin | Bin .../unknown_D84970.bin | Bin .../unknown_D84F00.bin | Bin include/battle_dome.h | 4 +- include/constants/battle_dome.h | 43 +- include/constants/battle_frontier.h | 10 +- include/constants/global.h | 1 + include/constants/pokemon.h | 3 +- include/global.h | 32 +- include/hall_of_fame.h | 2 +- src/battle_controller_player.c | 3 +- src/battle_dome.c | 807 +++++++++--------- src/battle_tower.c | 22 +- src/contest.c | 2 +- src/field_specials.c | 2 +- src/frontier_util.c | 14 +- src/graphics.c | 10 +- src/hall_of_fame.c | 15 +- src/pokemon.c | 16 +- src/script_pokemon_util_80F87D8.c | 6 +- 30 files changed, 1269 insertions(+), 1247 deletions(-) rename graphics/{unknown => battle_frontier}/unknown_D83900.bin (100%) rename graphics/{unknown => battle_frontier}/unknown_D83B2C.bin (100%) rename graphics/{unknown => battle_frontier}/unknown_D83C3C.bin (100%) rename graphics/{unknown => battle_frontier}/unknown_D84970.bin (100%) rename graphics/{unknown => battle_frontier}/unknown_D84F00.bin (100%) diff --git a/asm/macros/battle_frontier/battle_dome.inc b/asm/macros/battle_frontier/battle_dome.inc index 882c82e8b9..836d4eecda 100644 --- a/asm/macros/battle_frontier/battle_dome.inc +++ b/asm/macros/battle_frontier/battle_dome.inc @@ -23,13 +23,13 @@ special CallBattleDomeFunction .endm - @ + @ Buffer the name of the current round to gStringVar1 .macro dome_getroundtext setvar VAR_0x8004, BATTLE_DOME_FUNC_GET_ROUND_TEXT special CallBattleDomeFunction .endm - @ + @ Buffer the name of the opponent to gStringVar2 and the name of the round to gStringVar1 .macro dome_getopponentname setvar VAR_0x8004, BATTLE_DOME_FUNC_GET_OPPONENT_NAME special CallBattleDomeFunction @@ -41,7 +41,7 @@ special CallBattleDomeFunction .endm - @ + @ Show the page that gives information on the next opponent .macro dome_showopponentinfo setvar VAR_0x8004, BATTLE_DOME_FUNC_SHOW_OPPONENT_INFO special CallBattleDomeFunction @@ -65,7 +65,7 @@ special CallBattleDomeFunction .endm - @ + @ Set the object event gfx id for the opponent .macro dome_setopponentgfx setvar VAR_0x8004, BATTLE_DOME_FUNC_SET_OPPONENT_GFX special CallBattleDomeFunction @@ -77,10 +77,10 @@ special CallBattleDomeFunction .endm - @ - .macro dome_resolvewinners arg:req + @ Decides the winners of NPC vs NPC matches, and eliminates either the player or their opponent depending on the playerStatus (DOME_PLAYER_*) + .macro dome_resolvewinners playerStatus:req setvar VAR_0x8004, BATTLE_DOME_FUNC_RESOLVE_WINNERS - setvar VAR_0x8005, \arg + setvar VAR_0x8005, \playerStatus special CallBattleDomeFunction .endm @@ -109,13 +109,13 @@ special CallBattleDomeFunction .endm - @ + @ Reset the held items of the mons that just battled to what they were prior to battling .macro dome_restorehelditems setvar VAR_0x8004, BATTLE_DOME_FUNC_RESTORE_HELD_ITEMS special CallBattleDomeFunction .endm - @ + @ Reduce the players party to the selected mons, used to reduce down to the 2 selected for battle .macro dome_reduceparty setvar VAR_0x8004, BATTLE_DOME_FUNC_REDUCE_PARTY special CallBattleDomeFunction @@ -133,9 +133,9 @@ special CallBattleDomeFunction .endm - @ TODO: Document this macro and its function - .macro dome_21 - setvar VAR_0x8004, BATTLE_DOME_FUNC_21 + @ Performs a random tourney to initialize the results board before the player has entered a challenge + .macro dome_initresultstree + setvar VAR_0x8004, BATTLE_DOME_FUNC_INIT_RESULTS_TREE special CallBattleDomeFunction .endm diff --git a/data/battle_ai_scripts.s b/data/battle_ai_scripts.s index 03f76fe291..633c3b38e2 100644 --- a/data/battle_ai_scripts.s +++ b/data/battle_ai_scripts.s @@ -2395,10 +2395,10 @@ AI_CV_Hail_ScoreDown1: AI_CV_Hail_End: end +@ BUG: Facade score is increased if the target is statused, but should be if the user is. Replace AI_TARGET with AI_USER AI_CV_Facade: if_not_status AI_TARGET, STATUS1_POISON | STATUS1_BURN | STATUS1_PARALYSIS | STATUS1_TOXIC_POISON, AI_CV_Facade_End score +1 - AI_CV_Facade_End: end diff --git a/data/maps/BattleFrontier_BattleDomeBattleRoom/scripts.inc b/data/maps/BattleFrontier_BattleDomeBattleRoom/scripts.inc index ff11ac75ac..3804f0a43d 100644 --- a/data/maps/BattleFrontier_BattleDomeBattleRoom/scripts.inc +++ b/data/maps/BattleFrontier_BattleDomeBattleRoom/scripts.inc @@ -1,16 +1,20 @@ BattleFrontier_BattleDomeBattleRoom_MapScripts:: @ 824BC9C - map_script MAP_SCRIPT_ON_TRANSITION, BattleFrontier_BattleDomeBattleRoom_MapScript1_24BCB1 - map_script MAP_SCRIPT_ON_FRAME_TABLE, BattleFrontier_BattleDomeBattleRoom_MapScript2_24BD00 - map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, BattleFrontier_BattleDomeBattleRoom_MapScript2_24C481 - map_script MAP_SCRIPT_ON_RESUME, BattleFrontier_BattleDomeBattleRoom_MapScript1_24C4F0 + map_script MAP_SCRIPT_ON_TRANSITION, BattleFrontier_BattleDomeBattleRoom_OnTransition + map_script MAP_SCRIPT_ON_FRAME_TABLE, BattleFrontier_BattleDomeBattleRoom_OnFrame + map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, BattleFrontier_BattleDomeBattleRoom_OnWarp + map_script MAP_SCRIPT_ON_RESUME, BattleFrontier_BattleDomeBattleRoom_OnResume .byte 0 -BattleFrontier_BattleDomeBattleRoom_MapScript1_24BCB1: @ 824BCB1 + .set NO_DRAW, 0 + .set DRAW_TRAINER, 1 + .set DRAW_TUCKER, 2 + +BattleFrontier_BattleDomeBattleRoom_OnTransition: @ 824BCB1 dome_setopponentgfx frontier_get FRONTIER_DATA_BATTLE_NUM copyvar VAR_TEMP_F, VAR_RESULT - compare VAR_RESULT, 0 - call_if_eq BattleFrontier_BattleDomeBattleRoom_EventScript_24C919 + compare VAR_RESULT, DOME_ROUND1 + call_if_eq BattleFrontier_BattleDomeBattleRoom_EventScript_SetWalkingAudienceMemberPos call BattleFrontier_BattleDomeBattleRoom_EventScript_SetPlayerGfx end @@ -30,441 +34,431 @@ BattleFrontier_BattleDomeBattleRoom_EventScript_SetPlayerGfxFemale:: @ 824BCFA setvar VAR_OBJ_GFX_ID_1, EVENT_OBJ_GFX_RIVAL_MAY_NORMAL return -BattleFrontier_BattleDomeBattleRoom_MapScript2_24BD00: @ 824BD00 - map_script_2 VAR_TEMP_0, 0, BattleFrontier_BattleDomeBattleRoom_EventScript_24BD0A +BattleFrontier_BattleDomeBattleRoom_OnFrame: @ 824BD00 + map_script_2 VAR_TEMP_0, 0, BattleFrontier_BattleDomeBattleRoom_EventScript_EnterRoom .2byte 0 -BattleFrontier_BattleDomeBattleRoom_EventScript_24BD0A:: @ 824BD0A +BattleFrontier_BattleDomeBattleRoom_EventScript_EnterRoom:: @ 824BD0A lockall - call BattleFrontier_BattleDomeBattleRoom_EventScript_24C1BD - compare VAR_RESULT, 0 - call_if_eq BattleFrontier_BattleDomeBattleRoom_EventScript_24C938 + call BattleFrontier_BattleDomeBattleRoom_EventScript_GetRoundNum + compare VAR_RESULT, DOME_ROUND1 + call_if_eq BattleFrontier_BattleDomeBattleRoom_EventScript_TryDoAudienceMemberWalkToSeat applymovement 1, Common_Movement_WalkInPlaceDown waitmovement 0 - call BattleFrontier_BattleDomeBattleRoom_EventScript_24BFD5 - msgbox BattleFrontier_BattleDomeBattleRoom_Text_24C970, MSGBOX_DEFAULT + call BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayer + msgbox BattleFrontier_BattleDomeBattleRoom_Text_PlayerHasEnteredDome, MSGBOX_DEFAULT closemessage showobjectat 13, MAP_BATTLE_FRONTIER_BATTLE_DOME_BATTLE_ROOM - compare VAR_TEMP_F, 3 - goto_if_ne BattleFrontier_BattleDomeBattleRoom_EventScript_24BD4E + compare VAR_TEMP_F, DOME_FINAL + goto_if_ne BattleFrontier_BattleDomeBattleRoom_EventScript_PlayerEnter compare VAR_TEMP_E, FRONTIER_BRAIN_NOT_READY - goto_if_ne BattleFrontier_BattleDomeBattleRoom_EventScript_24BD5A + goto_if_ne BattleFrontier_BattleDomeBattleRoom_EventScript_PlayerEnterForTucker +BattleFrontier_BattleDomeBattleRoom_EventScript_PlayerEnter:: @ 824BD4E + applymovement 13, BattleFrontier_BattleDomeBattleRoom_Movement_PlayerEnter + goto BattleFrontier_BattleDomeBattleRoom_EventScript_AudienceReactToPlayer -BattleFrontier_BattleDomeBattleRoom_EventScript_24BD4E:: @ 824BD4E - applymovement 13, BattleFrontier_BattleDomeBattleRoom_Movement_24C775 - goto BattleFrontier_BattleDomeBattleRoom_EventScript_24BD61 - -BattleFrontier_BattleDomeBattleRoom_EventScript_24BD5A:: @ 824BD5A - applymovement 13, BattleFrontier_BattleDomeBattleRoom_Movement_24C77F - -BattleFrontier_BattleDomeBattleRoom_EventScript_24BD61:: @ 824BD61 +BattleFrontier_BattleDomeBattleRoom_EventScript_PlayerEnterForTucker:: @ 824BD5A + applymovement 13, BattleFrontier_BattleDomeBattleRoom_Movement_PlayerEnterForTucker +BattleFrontier_BattleDomeBattleRoom_EventScript_AudienceReactToPlayer:: @ 824BD61 playse SE_W227B - call BattleFrontier_BattleDomeBattleRoom_EventScript_24C82E + call BattleFrontier_BattleDomeBattleRoom_EventScript_AudienceLookAround waitmovement 0 - compare VAR_TEMP_F, 3 - goto_if_ne BattleFrontier_BattleDomeBattleRoom_EventScript_24BD82 + compare VAR_TEMP_F, DOME_FINAL + goto_if_ne BattleFrontier_BattleDomeBattleRoom_EventScript_BattleOpponent compare VAR_TEMP_E, FRONTIER_BRAIN_NOT_READY - goto_if_ne BattleFrontier_BattleDomeBattleRoom_EventScript_24C1CB - -BattleFrontier_BattleDomeBattleRoom_EventScript_24BD82:: @ 824BD82 + goto_if_ne BattleFrontier_BattleDomeBattleRoom_EventScript_AnnounceTucker +BattleFrontier_BattleDomeBattleRoom_EventScript_BattleOpponent:: @ 824BD82 dome_getopponentname - msgbox BattleFrontier_BattleDomeBattleRoom_Text_24C990, MSGBOX_DEFAULT + msgbox BattleFrontier_BattleDomeBattleRoom_Text_PlayerVersusTrainer, MSGBOX_DEFAULT closemessage - applymovement 13, BattleFrontier_BattleDomeBattleRoom_Movement_24C77B - applymovement 15, BattleFrontier_BattleDomeBattleRoom_Movement_24C789 + applymovement 13, BattleFrontier_BattleDomeBattleRoom_Movement_PlayerStepForward + applymovement 15, BattleFrontier_BattleDomeBattleRoom_Movement_OpponentStepForward waitmovement 0 tower_getopponentintro 0 msgbox gStringVar4, MSGBOX_DEFAULT closemessage dome_initopponentparty - call BattleFrontier_BattleDomeBattleRoom_EventScript_24C440 - setvar VAR_TEMP_2, 0 + call BattleFrontier_BattleDomeBattleRoom_EventScript_DoDomeBattle + setvar VAR_TEMP_2, NO_DRAW switch VAR_RESULT - case 1, BattleFrontier_BattleDomeBattleRoom_EventScript_24BEE0 - case 2, BattleFrontier_BattleDomeBattleRoom_EventScript_24BE4F - case 9, BattleFrontier_BattleDomeBattleRoom_EventScript_24BE4F - setvar VAR_TEMP_2, 1 - -BattleFrontier_BattleDomeBattleRoom_EventScript_24BDF7:: @ 824BDF7 - msgbox BattleFrontier_BattleDomeBattleRoom_Text_24CA86, MSGBOX_DEFAULT + case B_OUTCOME_WON, BattleFrontier_BattleDomeBattleRoom_EventScript_DefeatedOpponent + case B_OUTCOME_LOST, BattleFrontier_BattleDomeBattleRoom_EventScript_LostToOpponent + case B_OUTCOME_FORFEITED, BattleFrontier_BattleDomeBattleRoom_EventScript_LostToOpponent + setvar VAR_TEMP_2, DRAW_TRAINER +BattleFrontier_BattleDomeBattleRoom_EventScript_Draw:: @ 824BDF7 + msgbox BattleFrontier_BattleDomeBattleRoom_Text_RefereeDecisionPleaseWait, MSGBOX_DEFAULT closemessage playse SE_W227B - call BattleFrontier_BattleDomeBattleRoom_EventScript_24C82E + call BattleFrontier_BattleDomeBattleRoom_EventScript_AudienceLookAround delay 60 - applymovement 9, BattleFrontier_BattleDomeBattleRoom_Movement_24C964 + applymovement 9, BattleFrontier_BattleDomeBattleRoom_Movement_TieRefereeEnter waitmovement 0 - applymovement 1, BattleFrontier_BattleDomeBattleRoom_Movement_24C969 + applymovement 1, BattleFrontier_BattleDomeBattleRoom_Movement_RefereeFaceLeft waitmovement 0 delay 180 - applymovement 9, BattleFrontier_BattleDomeBattleRoom_Movement_24C96B + applymovement 9, BattleFrontier_BattleDomeBattleRoom_Movement_TieRefereeExit waitmovement 0 - compare VAR_TEMP_2, 2 - goto_if_eq BattleFrontier_BattleDomeBattleRoom_EventScript_24BE4F + compare VAR_TEMP_2, DRAW_TUCKER @ Tucker always wins on a draw + goto_if_eq BattleFrontier_BattleDomeBattleRoom_EventScript_LostToOpponent dome_compareseeds switch VAR_RESULT - case 1, BattleFrontier_BattleDomeBattleRoom_EventScript_24BEE0 - -BattleFrontier_BattleDomeBattleRoom_EventScript_24BE4F:: @ 824BE4F + case 1, BattleFrontier_BattleDomeBattleRoom_EventScript_DefeatedOpponent +BattleFrontier_BattleDomeBattleRoom_EventScript_LostToOpponent:: @ 824BE4F applymovement 1, Common_Movement_WalkInPlaceDown waitmovement 0 dome_getopponentname - compare VAR_TEMP_2, 0 - call_if_eq BattleFrontier_BattleDomeBattleRoom_EventScript_24BEB1 - compare VAR_TEMP_2, 1 - call_if_eq BattleFrontier_BattleDomeBattleRoom_EventScript_24BEC5 - compare VAR_TEMP_2, 2 - call_if_eq BattleFrontier_BattleDomeBattleRoom_EventScript_24BED9 + compare VAR_TEMP_2, NO_DRAW + call_if_eq BattleFrontier_BattleDomeBattleRoom_EventScript_OpponentWon + compare VAR_TEMP_2, DRAW_TRAINER + call_if_eq BattleFrontier_BattleDomeBattleRoom_EventScript_OpponentWonDraw + compare VAR_TEMP_2, DRAW_TUCKER + call_if_eq BattleFrontier_BattleDomeBattleRoom_EventScript_TuckerWonDraw playse SE_W227B - call BattleFrontier_BattleDomeBattleRoom_EventScript_24C82E + call BattleFrontier_BattleDomeBattleRoom_EventScript_AudienceLookAround delay 60 - BattleFrontier_BattleDomeBattleRoom_EventScript_24BE8D:: @ 824BE8D - dome_resolvewinners 2 -BattleFrontier_BattleDomePreBattleRoom_EventScript_24BE9A:: @ 824BE9A + dome_resolvewinners DOME_PLAYER_LOST_MATCH +BattleFrontier_BattleDomeBattleRoom_EventScript_WarpToLobbyLost:: @ 824BE9A frontier_set FRONTIER_DATA_CHALLENGE_STATUS, CHALLENGE_STATUS_LOST - goto BattleFrontier_BattleDomeBattleRoom_EventScript_24C8F5 -@ goto BattleFrontier_BattleDomePreBattleRoom_EventScript_24C8F5 + goto BattleFrontier_BattleDomeBattleRoom_EventScript_WarpToLobby -BattleFrontier_BattleDomeBattleRoom_EventScript_24BEB1:: @ 824BEB1 +BattleFrontier_BattleDomeBattleRoom_EventScript_OpponentWon:: @ 824BEB1 frontier_gettrainername 1 - message BattleFrontier_BattleDomeBattleRoom_Text_24C9E1 + message BattleFrontier_BattleDomeBattleRoom_Text_TrainerIsWinner waitmessage return -BattleFrontier_BattleDomeBattleRoom_EventScript_24BEC5:: @ 824BEC5 +BattleFrontier_BattleDomeBattleRoom_EventScript_OpponentWonDraw:: @ 824BEC5 frontier_gettrainername 0 - message BattleFrontier_BattleDomeBattleRoom_Text_24CB34 + message BattleFrontier_BattleDomeBattleRoom_Text_RefereesDecidedWinnerTrainer waitmessage return -BattleFrontier_BattleDomeBattleRoom_EventScript_24BED9:: @ 824BED9 - message BattleFrontier_BattleDomeBattleRoom_Text_24D6BE +BattleFrontier_BattleDomeBattleRoom_EventScript_TuckerWonDraw:: @ 824BED9 + message BattleFrontier_BattleDomeBattleRoom_Text_RefereesDecidedWinnerTucker waitmessage return -BattleFrontier_BattleDomeBattleRoom_EventScript_24BEE0:: @ 824BEE0 +BattleFrontier_BattleDomeBattleRoom_EventScript_DefeatedOpponent:: @ 824BEE0 applymovement 1, Common_Movement_WalkInPlaceDown waitmovement 0 - compare VAR_TEMP_2, 0 - call_if_eq BattleFrontier_BattleDomeBattleRoom_EventScript_24BFC3 - compare VAR_TEMP_2, 1 - call_if_eq BattleFrontier_BattleDomeBattleRoom_EventScript_24BFCC + compare VAR_TEMP_2, NO_DRAW + call_if_eq BattleFrontier_BattleDomeBattleRoom_EventScript_PlayerWon + compare VAR_TEMP_2, DRAW_TRAINER + call_if_eq BattleFrontier_BattleDomeBattleRoom_EventScript_PlayerWonDraw playse SE_W227B - call BattleFrontier_BattleDomeBattleRoom_EventScript_24C82E + call BattleFrontier_BattleDomeBattleRoom_EventScript_AudienceLookAround delay 60 dome_getroundtext - dome_resolvewinners 1 + dome_resolvewinners DOME_PLAYER_WON_MATCH frontier_get FRONTIER_DATA_BATTLE_NUM addvar VAR_RESULT, 1 frontier_set FRONTIER_DATA_BATTLE_NUM, VAR_RESULT switch VAR_RESULT - case 4, BattleFrontier_BattleDomeBattleRoom_EventScript_24BF62 + case DOME_ROUNDS_COUNT, BattleFrontier_BattleDomeBattleRoom_EventScript_WonTourney setvar VAR_0x8006, 1 warp MAP_BATTLE_FRONTIER_BATTLE_DOME_PRE_BATTLE_ROOM, 255, 5, 3 waitstate -BattleFrontier_BattleDomeBattleRoom_EventScript_24BF62:: @ 824BF62 - applymovement 13, BattleFrontier_BattleDomeBattleRoom_Movement_24C77D +BattleFrontier_BattleDomeBattleRoom_EventScript_WonTourney:: @ 824BF62 + applymovement 13, BattleFrontier_BattleDomeBattleRoom_Movement_PlayerApproachAudience waitmovement 0 frontier_get FRONTIER_DATA_LVL_MODE switch VAR_RESULT - case FRONTIER_LVL_OPEN, BattleFrontier_BattleDomeBattleRoom_EventScript_24BF96 - msgbox BattleFrontier_BattleDomeBattleRoom_Text_24CA04, MSGBOX_DEFAULT - goto BattleFrontier_BattleDomeBattleRoom_EventScript_24BF9E + case FRONTIER_LVL_OPEN, BattleFrontier_BattleDomeBattleRoom_EventScript_WonLvOpenTourney + msgbox BattleFrontier_BattleDomeBattleRoom_Text_PlayerIsLv50Champ, MSGBOX_DEFAULT + goto BattleFrontier_BattleDomeBattleRoom_EventScript_CelebrateWin -BattleFrontier_BattleDomeBattleRoom_EventScript_24BF96:: @ 824BF96 - msgbox BattleFrontier_BattleDomeBattleRoom_Text_24CA44, MSGBOX_DEFAULT - -BattleFrontier_BattleDomeBattleRoom_EventScript_24BF9E:: @ 824BF9E - special sub_8175280 +BattleFrontier_BattleDomeBattleRoom_EventScript_WonLvOpenTourney:: @ 824BF96 + msgbox BattleFrontier_BattleDomeBattleRoom_Text_PlayerIsLvOpenChamp, MSGBOX_DEFAULT +BattleFrontier_BattleDomeBattleRoom_EventScript_CelebrateWin:: @ 824BF9E + special DoConfettiEffect playse SE_W227B - call BattleFrontier_BattleDomeBattleRoom_EventScript_24C82E + call BattleFrontier_BattleDomeBattleRoom_EventScript_AudienceLookAround delay 60 frontier_set FRONTIER_DATA_CHALLENGE_STATUS, CHALLENGE_STATUS_WON - goto BattleFrontier_BattleDomeBattleRoom_EventScript_24C8F5 + goto BattleFrontier_BattleDomeBattleRoom_EventScript_WarpToLobby -BattleFrontier_BattleDomeBattleRoom_EventScript_24BFC3:: @ 824BFC3 - msgbox BattleFrontier_BattleDomeBattleRoom_Text_24C9BE, MSGBOX_DEFAULT +BattleFrontier_BattleDomeBattleRoom_EventScript_PlayerWon:: @ 824BFC3 + msgbox BattleFrontier_BattleDomeBattleRoom_Text_PlayerIsWinner, MSGBOX_DEFAULT return -BattleFrontier_BattleDomeBattleRoom_EventScript_24BFCC:: @ 824BFCC - msgbox BattleFrontier_BattleDomeBattleRoom_Text_24CB9D, MSGBOX_DEFAULT +BattleFrontier_BattleDomeBattleRoom_EventScript_PlayerWonDraw:: @ 824BFCC + msgbox BattleFrontier_BattleDomeBattleRoom_Text_RefereesDecidedWinnerPlayer, MSGBOX_DEFAULT return -BattleFrontier_BattleDomeBattleRoom_EventScript_24BFD5:: @ 824BFD5 - dome_get DOME_DATA_6 - compare VAR_RESULT, 0 - goto_if_eq BattleFrontier_BattleDomeBattleRoom_EventScript_24C023 - dome_get DOME_DATA_7 - compare VAR_RESULT, 0 - goto_if_eq BattleFrontier_BattleDomeBattleRoom_EventScript_24C076 +BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayer:: @ 824BFD5 + dome_get DOME_DATA_ATTEMPTED_CHALLENGE + compare VAR_RESULT, FALSE + goto_if_eq BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerFirstAttempt + dome_get DOME_DATA_HAS_WON_CHALLENGE + compare VAR_RESULT, FALSE + goto_if_eq BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerNeverWon dome_get DOME_DATA_WIN_STREAK_ACTIVE compare VAR_RESULT, FALSE - goto_if_eq BattleFrontier_BattleDomeBattleRoom_EventScript_24C16A - goto BattleFrontier_BattleDomeBattleRoom_EventScript_24C0C9 + goto_if_eq BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerBrokenStreak + goto BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerChampion return -BattleFrontier_BattleDomeBattleRoom_EventScript_24C023:: @ 824C023 - call BattleFrontier_BattleDomeBattleRoom_EventScript_24C1BD +BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerFirstAttempt:: @ 824C023 + call BattleFrontier_BattleDomeBattleRoom_EventScript_GetRoundNum switch VAR_RESULT - case 0, BattleFrontier_BattleDomeBattleRoom_EventScript_24C05A - case 1, BattleFrontier_BattleDomeBattleRoom_EventScript_24C061 - case 2, BattleFrontier_BattleDomeBattleRoom_EventScript_24C068 - case 3, BattleFrontier_BattleDomeBattleRoom_EventScript_24C06F + case DOME_ROUND1, BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerFirstAttemptRound1 + case DOME_ROUND2, BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerFirstAttemptRound2 + case DOME_SEMIFINAL, BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerFirstAttemptSemifinal + case DOME_FINAL, BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerFirstAttemptFinal return -BattleFrontier_BattleDomeBattleRoom_EventScript_24C05A:: @ 824C05A - message BattleFrontier_BattleDomeBattleRoom_Text_24CC06 +BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerFirstAttemptRound1:: @ 824C05A + message BattleFrontier_BattleDomeBattleRoom_Text_BrightNewHope waitmessage return -BattleFrontier_BattleDomeBattleRoom_EventScript_24C061:: @ 824C061 - message BattleFrontier_BattleDomeBattleRoom_Text_24CC1C +BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerFirstAttemptRound2:: @ 824C061 + message BattleFrontier_BattleDomeBattleRoom_Text_RisingStar waitmessage return -BattleFrontier_BattleDomeBattleRoom_EventScript_24C068:: @ 824C068 - message BattleFrontier_BattleDomeBattleRoom_Text_24CC2E +BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerFirstAttemptSemifinal:: @ 824C068 + message BattleFrontier_BattleDomeBattleRoom_Text_WillTheyRaceToChampionship waitmessage return -BattleFrontier_BattleDomeBattleRoom_EventScript_24C06F:: @ 824C06F - message BattleFrontier_BattleDomeBattleRoom_Text_24CC5B +BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerFirstAttemptFinal:: @ 824C06F + message BattleFrontier_BattleDomeBattleRoom_Text_CanAchieveChampionFirstTry waitmessage return -BattleFrontier_BattleDomeBattleRoom_EventScript_24C076:: @ 824C076 - call BattleFrontier_BattleDomeBattleRoom_EventScript_24C1BD +BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerNeverWon:: @ 824C076 + call BattleFrontier_BattleDomeBattleRoom_EventScript_GetRoundNum switch VAR_RESULT - case 0, BattleFrontier_BattleDomeBattleRoom_EventScript_24C0AD - case 1, BattleFrontier_BattleDomeBattleRoom_EventScript_24C0B4 - case 2, BattleFrontier_BattleDomeBattleRoom_EventScript_24C0BB - case 3, BattleFrontier_BattleDomeBattleRoom_EventScript_24C0C2 + case DOME_ROUND1, BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerNeverWonRound1 + case DOME_ROUND2, BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerNeverWonRound2 + case DOME_SEMIFINAL, BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerNeverWonSemifinal + case DOME_FINAL, BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerNeverWonFinal return -BattleFrontier_BattleDomeBattleRoom_EventScript_24C0AD:: @ 824C0AD - message BattleFrontier_BattleDomeBattleRoom_Text_24CC99 +BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerNeverWonRound1:: @ 824C0AD + message BattleFrontier_BattleDomeBattleRoom_Text_CanLossBeAvenged waitmessage return -BattleFrontier_BattleDomeBattleRoom_EventScript_24C0B4:: @ 824C0B4 - message BattleFrontier_BattleDomeBattleRoom_Text_24CCC5 +BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerNeverWonRound2:: @ 824C0B4 + message BattleFrontier_BattleDomeBattleRoom_Text_OnFireForChampionship waitmessage return -BattleFrontier_BattleDomeBattleRoom_EventScript_24C0BB:: @ 824C0BB - message BattleFrontier_BattleDomeBattleRoom_Text_24CCFD +BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerNeverWonSemifinal:: @ 824C0BB + message BattleFrontier_BattleDomeBattleRoom_Text_WinHereAdvancesToFinal waitmessage return -BattleFrontier_BattleDomeBattleRoom_EventScript_24C0C2:: @ 824C0C2 - message BattleFrontier_BattleDomeBattleRoom_Text_24CD33 +BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerNeverWonFinal:: @ 824C0C2 + message BattleFrontier_BattleDomeBattleRoom_Text_WillLongHeldDreamComeTrue waitmessage return -BattleFrontier_BattleDomeBattleRoom_EventScript_24C0C9:: @ 824C0C9 - compare VAR_TEMP_F, 3 - goto_if_ne BattleFrontier_BattleDomeBattleRoom_EventScript_24C105 +BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerChampion:: @ 824C0C9 + compare VAR_TEMP_F, DOME_FINAL + goto_if_ne BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerChampionNoTucker switch VAR_TEMP_E - case FRONTIER_BRAIN_SILVER, BattleFrontier_BattleDomeBattleRoom_EventScript_24C158 - case FRONTIER_BRAIN_GOLD, BattleFrontier_BattleDomeBattleRoom_EventScript_24C161 - case FRONTIER_BRAIN_STREAK, BattleFrontier_BattleDomeBattleRoom_EventScript_24C158 - case FRONTIER_BRAIN_STREAK_LONG, BattleFrontier_BattleDomeBattleRoom_EventScript_24C161 - -BattleFrontier_BattleDomeBattleRoom_EventScript_24C105:: @ 824C105 - call BattleFrontier_BattleDomeBattleRoom_EventScript_24C1BD + case FRONTIER_BRAIN_SILVER, BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerPreTuckerSilver + case FRONTIER_BRAIN_GOLD, BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerPreTuckerGold + case FRONTIER_BRAIN_STREAK, BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerPreTuckerSilver + case FRONTIER_BRAIN_STREAK_LONG, BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerPreTuckerGold +BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerChampionNoTucker:: @ 824C105 + call BattleFrontier_BattleDomeBattleRoom_EventScript_GetRoundNum switch VAR_RESULT - case 0, BattleFrontier_BattleDomeBattleRoom_EventScript_24C13C - case 1, BattleFrontier_BattleDomeBattleRoom_EventScript_24C143 - case 2, BattleFrontier_BattleDomeBattleRoom_EventScript_24C14A - case 3, BattleFrontier_BattleDomeBattleRoom_EventScript_24C151 + case DOME_ROUND1, BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerChampionRound1 + case DOME_ROUND2, BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerChampionRound2 + case DOME_SEMIFINAL, BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerChampionSemifinal + case DOME_FINAL, BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerChampionFinal return -BattleFrontier_BattleDomeBattleRoom_EventScript_24C13C:: @ 824C13C - message BattleFrontier_BattleDomeBattleRoom_Text_24CD72 +BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerChampionRound1:: @ 824C13C + message BattleFrontier_BattleDomeBattleRoom_Text_TheInvincibleChampion waitmessage return -BattleFrontier_BattleDomeBattleRoom_EventScript_24C143:: @ 824C143 - message BattleFrontier_BattleDomeBattleRoom_Text_24CD8C +BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerChampionRound2:: @ 824C143 + message BattleFrontier_BattleDomeBattleRoom_Text_CanAnyoneHopeToBeatTrainer waitmessage return -BattleFrontier_BattleDomeBattleRoom_EventScript_24C14A:: @ 824C14A - message BattleFrontier_BattleDomeBattleRoom_Text_24CDB3 +BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerChampionSemifinal:: @ 824C14A + message BattleFrontier_BattleDomeBattleRoom_Text_DoBattlesExistSolelyForTrainer waitmessage return -BattleFrontier_BattleDomeBattleRoom_EventScript_24C151:: @ 824C151 - message BattleFrontier_BattleDomeBattleRoom_Text_24CDDE +BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerChampionFinal:: @ 824C151 + message BattleFrontier_BattleDomeBattleRoom_Text_CurrentChampAimingToRetainTitle waitmessage return -BattleFrontier_BattleDomeBattleRoom_EventScript_24C158:: @ 824C158 - msgbox BattleFrontier_BattleDomeBattleRoom_Text_24CEBE, MSGBOX_DEFAULT +BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerPreTuckerSilver:: @ 824C158 + msgbox BattleFrontier_BattleDomeBattleRoom_Text_FeelGlowOfTrueMaster, MSGBOX_DEFAULT return -BattleFrontier_BattleDomeBattleRoom_EventScript_24C161:: @ 824C161 - msgbox BattleFrontier_BattleDomeBattleRoom_Text_24D232, MSGBOX_DEFAULT +BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerPreTuckerGold:: @ 824C161 + msgbox BattleFrontier_BattleDomeBattleRoom_Text_CanWinStreakBeStretched, MSGBOX_DEFAULT return -BattleFrontier_BattleDomeBattleRoom_EventScript_24C16A:: @ 824C16A - call BattleFrontier_BattleDomeBattleRoom_EventScript_24C1BD +BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerBrokenStreak:: @ 824C16A + call BattleFrontier_BattleDomeBattleRoom_EventScript_GetRoundNum switch VAR_RESULT - case 0, BattleFrontier_BattleDomeBattleRoom_EventScript_24C1A1 - case 1, BattleFrontier_BattleDomeBattleRoom_EventScript_24C1A8 - case 2, BattleFrontier_BattleDomeBattleRoom_EventScript_24C1AF - case 3, BattleFrontier_BattleDomeBattleRoom_EventScript_24C1B6 + case DOME_ROUND1, BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerBrokenStreakRound1 + case DOME_ROUND2, BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerBrokenStreakRound2 + case DOME_SEMIFINAL, BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerBrokenStreakSemifinal + case DOME_FINAL, BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerBrokenStreakFinal return -BattleFrontier_BattleDomeBattleRoom_EventScript_24C1A1:: @ 824C1A1 - message BattleFrontier_BattleDomeBattleRoom_Text_24CE10 +BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerBrokenStreakRound1:: @ 824C1A1 + message BattleFrontier_BattleDomeBattleRoom_Text_FormerChampHasReturned waitmessage return -BattleFrontier_BattleDomeBattleRoom_EventScript_24C1A8:: @ 824C1A8 - message BattleFrontier_BattleDomeBattleRoom_Text_24CE33 +BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerBrokenStreakRound2:: @ 824C1A8 + message BattleFrontier_BattleDomeBattleRoom_Text_FormerToughnessReturned waitmessage return -BattleFrontier_BattleDomeBattleRoom_EventScript_24C1AF:: @ 824C1AF - message BattleFrontier_BattleDomeBattleRoom_Text_24CE57 +BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerBrokenStreakSemifinal:: @ 824C1AF + message BattleFrontier_BattleDomeBattleRoom_Text_WillDoExpectedAdvanceToFinals waitmessage return -BattleFrontier_BattleDomeBattleRoom_EventScript_24C1B6:: @ 824C1B6 - message BattleFrontier_BattleDomeBattleRoom_Text_24CE94 +BattleFrontier_BattleDomeBattleRoom_EventScript_AnnouncePlayerBrokenStreakFinal:: @ 824C1B6 + message BattleFrontier_BattleDomeBattleRoom_Text_WillFormerChampRegainGlory waitmessage return -BattleFrontier_BattleDomeBattleRoom_EventScript_24C1BD:: @ 824C1BD +BattleFrontier_BattleDomeBattleRoom_EventScript_GetRoundNum:: @ 824C1BD frontier_get FRONTIER_DATA_BATTLE_NUM return -BattleFrontier_BattleDomeBattleRoom_EventScript_24C1CB:: @ 824C1CB +BattleFrontier_BattleDomeBattleRoom_EventScript_AnnounceTucker:: @ 824C1CB switch VAR_TEMP_E - case FRONTIER_BRAIN_SILVER, BattleFrontier_BattleDomeBattleRoom_EventScript_24C1FC - case FRONTIER_BRAIN_GOLD, BattleFrontier_BattleDomeBattleRoom_EventScript_24C209 - case FRONTIER_BRAIN_STREAK, BattleFrontier_BattleDomeBattleRoom_EventScript_24C1FC - case FRONTIER_BRAIN_STREAK_LONG, BattleFrontier_BattleDomeBattleRoom_EventScript_24C209 + case FRONTIER_BRAIN_SILVER, BattleFrontier_BattleDomeBattleRoom_EventScript_AnnounceTuckerSilver + case FRONTIER_BRAIN_GOLD, BattleFrontier_BattleDomeBattleRoom_EventScript_AnnounceTuckerGold + case FRONTIER_BRAIN_STREAK, BattleFrontier_BattleDomeBattleRoom_EventScript_AnnounceTuckerSilver + case FRONTIER_BRAIN_STREAK_LONG, BattleFrontier_BattleDomeBattleRoom_EventScript_AnnounceTuckerGold -BattleFrontier_BattleDomeBattleRoom_EventScript_24C1FC:: @ 824C1FC - msgbox BattleFrontier_BattleDomeBattleRoom_Text_24CEDE, MSGBOX_DEFAULT - goto BattleFrontier_BattleDomeBattleRoom_EventScript_24C211 +BattleFrontier_BattleDomeBattleRoom_EventScript_AnnounceTuckerSilver:: @ 824C1FC + msgbox BattleFrontier_BattleDomeBattleRoom_Text_MakeWayForDomeAceTucker, MSGBOX_DEFAULT + goto BattleFrontier_BattleDomeBattleRoom_EventScript_TuckerEnter -BattleFrontier_BattleDomeBattleRoom_EventScript_24C209:: @ 824C209 - msgbox BattleFrontier_BattleDomeBattleRoom_Text_24D26C, MSGBOX_DEFAULT - -BattleFrontier_BattleDomeBattleRoom_EventScript_24C211:: @ 824C211 +BattleFrontier_BattleDomeBattleRoom_EventScript_AnnounceTuckerGold:: @ 824C209 + msgbox BattleFrontier_BattleDomeBattleRoom_Text_LegendHasReturnedDomeAceTucker, MSGBOX_DEFAULT +BattleFrontier_BattleDomeBattleRoom_EventScript_TuckerEnter:: @ 824C211 closemessage - applymovement 2, BattleFrontier_BattleDomeBattleRoom_Movement_24C94B - applymovement 1, BattleFrontier_BattleDomeBattleRoom_Movement_24C7F9 - applymovement 15, BattleFrontier_BattleDomeBattleRoom_Movement_24C78E + applymovement 2, BattleFrontier_BattleDomeBattleRoom_Movement_AudienceTwinJump + applymovement 1, BattleFrontier_BattleDomeBattleRoom_Movement_RefereeMoveForTuckerEntrance + applymovement 15, BattleFrontier_BattleDomeBattleRoom_Movement_TuckerEnterAndDance playse SE_W227B - call BattleFrontier_BattleDomeBattleRoom_EventScript_24C82E + call BattleFrontier_BattleDomeBattleRoom_EventScript_AudienceLookAround waitse playse SE_W227B - call BattleFrontier_BattleDomeBattleRoom_EventScript_24C82E + call BattleFrontier_BattleDomeBattleRoom_EventScript_AudienceLookAround waitse playse SE_W227B - call BattleFrontier_BattleDomeBattleRoom_EventScript_24C82E + call BattleFrontier_BattleDomeBattleRoom_EventScript_AudienceLookAround waitse playse SE_W227B - call BattleFrontier_BattleDomeBattleRoom_EventScript_24C82E + call BattleFrontier_BattleDomeBattleRoom_EventScript_AudienceLookAround waitse playse SE_W227B - call BattleFrontier_BattleDomeBattleRoom_EventScript_24C82E + call BattleFrontier_BattleDomeBattleRoom_EventScript_AudienceLookAround waitse waitmovement 0 - message BattleFrontier_BattleDomeBattleRoom_Text_24CF7A + message BattleFrontier_BattleDomeBattleRoom_Text_SpectatorTuckerChant waitmessage playse SE_W227B - call BattleFrontier_BattleDomeBattleRoom_EventScript_24C82E + call BattleFrontier_BattleDomeBattleRoom_EventScript_AudienceLookAround waitse switch VAR_TEMP_E - case FRONTIER_BRAIN_GOLD, BattleFrontier_BattleDomeBattleRoom_EventScript_24C346 - case FRONTIER_BRAIN_STREAK, BattleFrontier_BattleDomeBattleRoom_EventScript_24C2B9 - case FRONTIER_BRAIN_STREAK_LONG, BattleFrontier_BattleDomeBattleRoom_EventScript_24C373 + case FRONTIER_BRAIN_GOLD, BattleFrontier_BattleDomeBattleRoom_EventScript_TuckerGoldIntro + case FRONTIER_BRAIN_STREAK, BattleFrontier_BattleDomeBattleRoom_EventScript_BattleTuckerSilver + case FRONTIER_BRAIN_STREAK_LONG, BattleFrontier_BattleDomeBattleRoom_EventScript_BattleTuckerGold frontier_get FRONTIER_DATA_HEARD_BRAIN_SPEECH compare VAR_RESULT, FALSE - goto_if_ne BattleFrontier_BattleDomeBattleRoom_EventScript_24C2B9 - msgbox BattleFrontier_BattleDomeBattleRoom_Text_24CFAE, MSGBOX_DEFAULT + goto_if_ne BattleFrontier_BattleDomeBattleRoom_EventScript_BattleTuckerSilver + msgbox BattleFrontier_BattleDomeBattleRoom_Text_TuckerSilverIntro, MSGBOX_DEFAULT frontier_set FRONTIER_DATA_HEARD_BRAIN_SPEECH -BattleFrontier_BattleDomeBattleRoom_EventScript_24C2B9:: @ 824C2B9 - msgbox BattleFrontier_BattleDomeBattleRoom_Text_24D0D9, MSGBOX_DEFAULT - call BattleFrontier_BattleDomeBattleRoom_EventScript_24C400 +BattleFrontier_BattleDomeBattleRoom_EventScript_BattleTuckerSilver:: @ 824C2B9 + msgbox BattleFrontier_BattleDomeBattleRoom_Text_LetsSeeYourStrategy, MSGBOX_DEFAULT + call BattleFrontier_BattleDomeBattleRoom_EventScript_DoTuckerBattle switch VAR_RESULT - case 2, BattleFrontier_BattleDomeBattleRoom_EventScript_24C420 - case 9, BattleFrontier_BattleDomeBattleRoom_EventScript_24C420 - case 3, BattleFrontier_BattleDomeBattleRoom_EventScript_24C436 - msgbox BattleFrontier_BattleDomeBattleRoom_Text_24D0F6, MSGBOX_DEFAULT - dome_resolvewinners 1 + case B_OUTCOME_LOST, BattleFrontier_BattleDomeBattleRoom_EventScript_LostToTucker + case B_OUTCOME_FORFEITED, BattleFrontier_BattleDomeBattleRoom_EventScript_LostToTucker + case B_OUTCOME_DREW, BattleFrontier_BattleDomeBattleRoom_EventScript_TuckerDraw + msgbox BattleFrontier_BattleDomeBattleRoom_Text_IncredibleVictorIsPlayer, MSGBOX_DEFAULT + dome_resolvewinners DOME_PLAYER_WON_MATCH frontier_getsymbols compare VAR_RESULT, 0 - goto_if_ne BattleFrontier_BattleDomeBattleRoom_EventScript_24BF62 + goto_if_ne BattleFrontier_BattleDomeBattleRoom_EventScript_WonTourney closemessage - applymovement 15, BattleFrontier_BattleDomeBattleRoom_Movement_24C82B + applymovement 15, BattleFrontier_BattleDomeBattleRoom_Movement_TuckerApproachPlayer waitmovement 0 - msgbox BattleFrontier_BattleDomeBattleRoom_Text_24D172, MSGBOX_DEFAULT + msgbox BattleFrontier_BattleDomeBattleRoom_Text_SeeYourFrontierPass, MSGBOX_DEFAULT playfanfare MUS_ME_SYMBOLGET - message BattleFrontier_BattleDomeBattleRoom_Text_24D1AA + message BattleFrontier_BattleDomeBattleRoom_Text_ReceivedTacticsSymbol waitmessage waitfanfare frontier_givesymbol - msgbox BattleFrontier_BattleDomeBattleRoom_Text_24D1E0, MSGBOX_DEFAULT - goto BattleFrontier_BattleDomeBattleRoom_EventScript_24BF62 + msgbox BattleFrontier_BattleDomeBattleRoom_Text_WontUnderestimateYouNextTime, MSGBOX_DEFAULT + goto BattleFrontier_BattleDomeBattleRoom_EventScript_WonTourney -BattleFrontier_BattleDomeBattleRoom_EventScript_24C346:: @ 824C346 +BattleFrontier_BattleDomeBattleRoom_EventScript_TuckerGoldIntro:: @ 824C346 frontier_get FRONTIER_DATA_HEARD_BRAIN_SPEECH compare VAR_RESULT, FALSE - goto_if_ne BattleFrontier_BattleDomeBattleRoom_EventScript_24C373 - msgbox BattleFrontier_BattleDomeBattleRoom_Text_24D319, MSGBOX_DEFAULT + goto_if_ne BattleFrontier_BattleDomeBattleRoom_EventScript_BattleTuckerGold + msgbox BattleFrontier_BattleDomeBattleRoom_Text_TuckerGoldIntro, MSGBOX_DEFAULT frontier_set FRONTIER_DATA_HEARD_BRAIN_SPEECH -BattleFrontier_BattleDomeBattleRoom_EventScript_24C373:: @ 824C373 - msgbox BattleFrontier_BattleDomeBattleRoom_Text_24D43E, MSGBOX_DEFAULT - call BattleFrontier_BattleDomeBattleRoom_EventScript_24C400 +BattleFrontier_BattleDomeBattleRoom_EventScript_BattleTuckerGold:: @ 824C373 + msgbox BattleFrontier_BattleDomeBattleRoom_Text_UnleashAllPowerIPossess, MSGBOX_DEFAULT + call BattleFrontier_BattleDomeBattleRoom_EventScript_DoTuckerBattle switch VAR_RESULT - case 2, BattleFrontier_BattleDomeBattleRoom_EventScript_24C420 - case 9, BattleFrontier_BattleDomeBattleRoom_EventScript_24C420 - case 3, BattleFrontier_BattleDomeBattleRoom_EventScript_24C436 - msgbox BattleFrontier_BattleDomeBattleRoom_Text_24D0F6, MSGBOX_DEFAULT - dome_resolvewinners 1 + case B_OUTCOME_LOST, BattleFrontier_BattleDomeBattleRoom_EventScript_LostToTucker + case B_OUTCOME_FORFEITED, BattleFrontier_BattleDomeBattleRoom_EventScript_LostToTucker + case B_OUTCOME_DREW, BattleFrontier_BattleDomeBattleRoom_EventScript_TuckerDraw + msgbox BattleFrontier_BattleDomeBattleRoom_Text_IncredibleVictorIsPlayer, MSGBOX_DEFAULT + dome_resolvewinners DOME_PLAYER_WON_MATCH frontier_getsymbols compare VAR_RESULT, 2 - goto_if_eq BattleFrontier_BattleDomeBattleRoom_EventScript_24BF62 + goto_if_eq BattleFrontier_BattleDomeBattleRoom_EventScript_WonTourney closemessage - applymovement 15, BattleFrontier_BattleDomeBattleRoom_Movement_24C82B + applymovement 15, BattleFrontier_BattleDomeBattleRoom_Movement_TuckerApproachPlayer waitmovement 0 - msgbox BattleFrontier_BattleDomeBattleRoom_Text_24D47F, MSGBOX_DEFAULT + msgbox BattleFrontier_BattleDomeBattleRoom_Text_NeverLostWhenPowerUnleashed, MSGBOX_DEFAULT playfanfare MUS_ME_SYMBOLGET - message BattleFrontier_BattleDomeBattleRoom_Text_24D522 + message BattleFrontier_BattleDomeBattleRoom_Text_TacticsSymbolTookGoldenShine waitmessage waitfanfare frontier_givesymbol - msgbox BattleFrontier_BattleDomeBattleRoom_Text_24D54D, MSGBOX_DEFAULT - goto BattleFrontier_BattleDomeBattleRoom_EventScript_24BF62 + msgbox BattleFrontier_BattleDomeBattleRoom_Text_LookForwardToNextEncounter, MSGBOX_DEFAULT + goto BattleFrontier_BattleDomeBattleRoom_EventScript_WonTourney -BattleFrontier_BattleDomeBattleRoom_EventScript_24C400:: @ 824C400 - msgbox BattleFrontier_BattleDomeBattleRoom_Text_24D677, MSGBOX_DEFAULT +BattleFrontier_BattleDomeBattleRoom_EventScript_DoTuckerBattle:: @ 824C400 + msgbox BattleFrontier_BattleDomeBattleRoom_Text_PlayerVersusTucker, MSGBOX_DEFAULT closemessage - applymovement 13, BattleFrontier_BattleDomeBattleRoom_Movement_24C787 - applymovement 15, BattleFrontier_BattleDomeBattleRoom_Movement_24C829 + applymovement 13, BattleFrontier_BattleDomeBattleRoom_Movement_PlayerStepForward2 + applymovement 15, BattleFrontier_BattleDomeBattleRoom_Movement_TuckerStepForward waitmovement 0 - call BattleFrontier_BattleDomeBattleRoom_EventScript_24C440 + call BattleFrontier_BattleDomeBattleRoom_EventScript_DoDomeBattle return -BattleFrontier_BattleDomeBattleRoom_EventScript_24C420:: @ 824C420 - msgbox BattleFrontier_BattleDomeBattleRoom_Text_24D127, MSGBOX_DEFAULT +BattleFrontier_BattleDomeBattleRoom_EventScript_LostToTucker:: @ 824C420 + msgbox BattleFrontier_BattleDomeBattleRoom_Text_WinnerIsTucker, MSGBOX_DEFAULT playse SE_W227B - call BattleFrontier_BattleDomeBattleRoom_EventScript_24C82E + call BattleFrontier_BattleDomeBattleRoom_EventScript_AudienceLookAround waitse goto BattleFrontier_BattleDomeBattleRoom_EventScript_24BE8D -BattleFrontier_BattleDomeBattleRoom_EventScript_24C436:: @ 824C436 - setvar VAR_TEMP_2, 2 - goto BattleFrontier_BattleDomeBattleRoom_EventScript_24BDF7 +BattleFrontier_BattleDomeBattleRoom_EventScript_TuckerDraw:: @ 824C436 + setvar VAR_TEMP_2, DRAW_TUCKER + goto BattleFrontier_BattleDomeBattleRoom_EventScript_Draw -BattleFrontier_BattleDomeBattleRoom_EventScript_24C440:: @ 824C440 +BattleFrontier_BattleDomeBattleRoom_EventScript_DoDomeBattle:: @ 824C440 frontier_set FRONTIER_DATA_6, 0 special HealPlayerParty setvar VAR_0x8004, SPECIAL_BATTLE_DOME @@ -478,56 +472,56 @@ BattleFrontier_BattleDomeBattleRoom_EventScript_24C440:: @ 824C440 dome_resetsketch return -BattleFrontier_BattleDomeBattleRoom_MapScript2_24C481: @ 824C481 - map_script_2 VAR_TEMP_1, 0, BattleFrontier_BattleDomeBattleRoom_EventScript_24C48B +BattleFrontier_BattleDomeBattleRoom_OnWarp: @ 824C481 + map_script_2 VAR_TEMP_1, 0, BattleFrontier_BattleDomeBattleRoom_EventScript_SetUpObjects .2byte 0 -BattleFrontier_BattleDomeBattleRoom_EventScript_24C48B:: @ 824C48B +BattleFrontier_BattleDomeBattleRoom_EventScript_SetUpObjects:: @ 824C48B hideobjectat 13, MAP_BATTLE_FRONTIER_BATTLE_DOME_BATTLE_ROOM - call BattleFrontier_BattleDomeBattleRoom_EventScript_24C502 + call BattleFrontier_BattleDomeBattleRoom_EventScript_AddAudience call BattleFrontier_BattleDomeBattleRoom_EventScript_SetPlayerGfx setvar VAR_TEMP_1, 1 applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleDomeBattleRoom_Movement_SetInvisible frontier_get FRONTIER_DATA_BATTLE_NUM - compare VAR_RESULT, 3 - goto_if_ne BattleFrontier_BattleDomeBattleRoom_EventScript_24C4EF + compare VAR_RESULT, DOME_FINAL + goto_if_ne BattleFrontier_BattleDomeBattleRoom_EventScript_EndSetUpObjects frontier_getbrainstatus copyvar VAR_TEMP_E, VAR_RESULT compare VAR_RESULT, FRONTIER_BRAIN_NOT_READY - goto_if_eq BattleFrontier_BattleDomeBattleRoom_EventScript_24C4EF + goto_if_eq BattleFrontier_BattleDomeBattleRoom_EventScript_EndSetUpObjects call BattleFrontier_EventScript_SetBrainObjectGfx setobjectxyperm 15, 13, 9 removeobject 15 addobject 15 - applymovement 15, BattleFrontier_BattleDomeBattleRoom_Movement_24C78B - -BattleFrontier_BattleDomeBattleRoom_EventScript_24C4EF:: @ 824C4EF + applymovement 15, BattleFrontier_BattleDomeBattleRoom_Movement_SetInvisibleFacingUp +BattleFrontier_BattleDomeBattleRoom_EventScript_EndSetUpObjects:: @ 824C4EF end -BattleFrontier_BattleDomeBattleRoom_MapScript1_24C4F0: @ 824C4F0 +BattleFrontier_BattleDomeBattleRoom_OnResume: @ 824C4F0 compare VAR_TEMP_9, 1 - call_if_eq BattleFrontier_BattleDomeBattleRoom_EventScript_24C4FC + call_if_eq BattleFrontier_BattleDomeBattleRoom_EventScript_CallAddAudience end -BattleFrontier_BattleDomeBattleRoom_EventScript_24C4FC:: @ 824C4FC - call BattleFrontier_BattleDomeBattleRoom_EventScript_24C502 +BattleFrontier_BattleDomeBattleRoom_EventScript_CallAddAudience:: @ 824C4FC + call BattleFrontier_BattleDomeBattleRoom_EventScript_AddAudience return -BattleFrontier_BattleDomeBattleRoom_EventScript_24C502:: @ 824C502 - compare VAR_TEMP_F, 0 - call_if_eq BattleFrontier_BattleDomeBattleRoom_EventScript_24C52F - compare VAR_TEMP_F, 1 - call_if_eq BattleFrontier_BattleDomeBattleRoom_EventScript_24C530 - compare VAR_TEMP_F, 2 - call_if_eq BattleFrontier_BattleDomeBattleRoom_EventScript_24C594 - compare VAR_TEMP_F, 3 - call_if_eq BattleFrontier_BattleDomeBattleRoom_EventScript_24C652 +@ Add audience members to supplement the permanent object event audience +BattleFrontier_BattleDomeBattleRoom_EventScript_AddAudience:: @ 824C502 + compare VAR_TEMP_F, DOME_ROUND1 + call_if_eq BattleFrontier_BattleDomeBattleRoom_EventScript_AddRound1Audience + compare VAR_TEMP_F, DOME_ROUND2 + call_if_eq BattleFrontier_BattleDomeBattleRoom_EventScript_AddRound2Audience + compare VAR_TEMP_F, DOME_SEMIFINAL + call_if_eq BattleFrontier_BattleDomeBattleRoom_EventScript_AddSemifinalAudience + compare VAR_TEMP_F, DOME_FINAL + call_if_eq BattleFrontier_BattleDomeBattleRoom_EventScript_AddFinalAudience return -BattleFrontier_BattleDomeBattleRoom_EventScript_24C52F:: @ 824C52F +BattleFrontier_BattleDomeBattleRoom_EventScript_AddRound1Audience:: @ 824C52F return -BattleFrontier_BattleDomeBattleRoom_EventScript_24C530:: @ 824C530 +BattleFrontier_BattleDomeBattleRoom_EventScript_AddRound2Audience:: @ 824C530 createvobject EVENT_OBJ_GFX_SCIENTIST_1, 1, 3, 0, 3, DIR_SOUTH createvobject EVENT_OBJ_GFX_EXPERT_F, 4, 6, 0, 3, DIR_SOUTH createvobject EVENT_OBJ_GFX_NINJA_BOY, 6, 8, 0, 3, DIR_SOUTH @@ -541,7 +535,7 @@ BattleFrontier_BattleDomeBattleRoom_EventScript_24C530:: @ 824C530 createvobject EVENT_OBJ_GFX_SCHOOL_KID_M, 29, 5, 1, 3, DIR_SOUTH return -BattleFrontier_BattleDomeBattleRoom_EventScript_24C594:: @ 824C594 +BattleFrontier_BattleDomeBattleRoom_EventScript_AddSemifinalAudience:: @ 824C594 createvobject EVENT_OBJ_GFX_SCIENTIST_1, 1, 3, 0, 3, DIR_SOUTH createvobject EVENT_OBJ_GFX_EXPERT_F, 4, 6, 0, 3, DIR_SOUTH createvobject EVENT_OBJ_GFX_NINJA_BOY, 6, 8, 0, 3, DIR_SOUTH @@ -565,7 +559,7 @@ BattleFrontier_BattleDomeBattleRoom_EventScript_24C594:: @ 824C594 createvobject EVENT_OBJ_GFX_WOMAN_5, 31, 8, 2, 3, 1 return -BattleFrontier_BattleDomeBattleRoom_EventScript_24C652:: @ 824C652 +BattleFrontier_BattleDomeBattleRoom_EventScript_AddFinalAudience:: @ 824C652 createvobject EVENT_OBJ_GFX_NINJA_BOY, 0, 2, 0, 3, DIR_SOUTH createvobject EVENT_OBJ_GFX_SCIENTIST_1, 1, 3, 0, 3, DIR_SOUTH createvobject EVENT_OBJ_GFX_BEAUTY, 2, 15, 0, 3, DIR_SOUTH @@ -604,23 +598,23 @@ BattleFrontier_BattleDomeBattleRoom_Movement_SetInvisible: @ 824C773 set_invisible step_end -BattleFrontier_BattleDomeBattleRoom_Movement_24C775: @ 824C775 +BattleFrontier_BattleDomeBattleRoom_Movement_PlayerEnter: @ 824C775 set_visible delay_16 walk_up walk_up walk_up walk_right - -BattleFrontier_BattleDomeBattleRoom_Movement_24C77B: @ 824C77B +BattleFrontier_BattleDomeBattleRoom_Movement_PlayerStepForward: @ 824C77B walk_right step_end -BattleFrontier_BattleDomeBattleRoom_Movement_24C77D: @ 824C77D +BattleFrontier_BattleDomeBattleRoom_Movement_PlayerApproachAudience: @ 824C77D walk_up step_end -BattleFrontier_BattleDomeBattleRoom_Movement_24C77F: @ 824C77F +@ Identical to Movement_PlayerEnter +BattleFrontier_BattleDomeBattleRoom_Movement_PlayerEnterForTucker: @ 824C77F set_visible delay_16 walk_up @@ -630,20 +624,20 @@ BattleFrontier_BattleDomeBattleRoom_Movement_24C77F: @ 824C77F walk_right step_end -BattleFrontier_BattleDomeBattleRoom_Movement_24C787: @ 824C787 +BattleFrontier_BattleDomeBattleRoom_Movement_PlayerStepForward2: @ 824C787 walk_right step_end -BattleFrontier_BattleDomeBattleRoom_Movement_24C789: @ 824C789 +BattleFrontier_BattleDomeBattleRoom_Movement_OpponentStepForward: @ 824C789 walk_left step_end -BattleFrontier_BattleDomeBattleRoom_Movement_24C78B: @ 824C78B +BattleFrontier_BattleDomeBattleRoom_Movement_SetInvisibleFacingUp: @ 824C78B face_up set_invisible step_end -BattleFrontier_BattleDomeBattleRoom_Movement_24C78E: @ 824C78E +BattleFrontier_BattleDomeBattleRoom_Movement_TuckerEnterAndDance: @ 824C78E set_visible walk_up walk_up @@ -752,7 +746,7 @@ BattleFrontier_BattleDomeBattleRoom_Movement_24C78E: @ 824C78E walk_left step_end -BattleFrontier_BattleDomeBattleRoom_Movement_24C7F9: @ 824C7F9 +BattleFrontier_BattleDomeBattleRoom_Movement_RefereeMoveForTuckerEntrance: @ 824C7F9 delay_16 delay_16 walk_left @@ -802,16 +796,16 @@ BattleFrontier_BattleDomeBattleRoom_Movement_24C7F9: @ 824C7F9 walk_in_place_fastest_down step_end -BattleFrontier_BattleDomeBattleRoom_Movement_24C829: @ 824C829 +BattleFrontier_BattleDomeBattleRoom_Movement_TuckerStepForward: @ 824C829 walk_left step_end -BattleFrontier_BattleDomeBattleRoom_Movement_24C82B: @ 824C82B +BattleFrontier_BattleDomeBattleRoom_Movement_TuckerApproachPlayer: @ 824C82B walk_left walk_left step_end -BattleFrontier_BattleDomeBattleRoom_EventScript_24C82E:: @ 824C82E +BattleFrontier_BattleDomeBattleRoom_EventScript_AudienceLookAround:: @ 824C82E turnvobject 0, DIR_EAST turnvobject 2, DIR_EAST turnvobject 4, DIR_EAST @@ -880,21 +874,21 @@ BattleFrontier_BattleDomeBattleRoom_EventScript_24C82E:: @ 824C82E delay 20 return -BattleFrontier_BattleDomeBattleRoom_EventScript_24C8F5:: @ 824C8F5 -BattleFrontier_BattleDomePreBattleRoom_EventScript_24C8F5:: @ 824C8F5 +BattleFrontier_BattleDomeBattleRoom_EventScript_WarpToLobby:: @ 824C8F5 copyvar VAR_RESULT, VAR_FRONTIER_BATTLE_MODE compare VAR_RESULT, FRONTIER_MODE_DOUBLES - goto_if_eq BattleFrontier_BattleDomePreBattleRoom_EventScript_24C90F + goto_if_eq BattleFrontier_BattleDomePreBattleRoom_EventScript_WarpToLobbyDoubles warp MAP_BATTLE_FRONTIER_BATTLE_DOME_LOBBY, 255, 5, 11 waitstate end -BattleFrontier_BattleDomePreBattleRoom_EventScript_24C90F:: @ 824C90F +BattleFrontier_BattleDomePreBattleRoom_EventScript_WarpToLobbyDoubles:: @ 824C90F warp MAP_BATTLE_FRONTIER_BATTLE_DOME_LOBBY, 255, 17, 11 waitstate end -BattleFrontier_BattleDomeBattleRoom_EventScript_24C919:: @ 824C919 +@ On round 1 there's a 50% chance that a specific audience member will walk to his seat +BattleFrontier_BattleDomeBattleRoom_EventScript_SetWalkingAudienceMemberPos:: @ 824C919 random 2 copyvar VAR_TEMP_D, VAR_RESULT compare VAR_TEMP_D, 0 @@ -903,13 +897,13 @@ BattleFrontier_BattleDomeBattleRoom_EventScript_24C919:: @ 824C919 setobjectmovementtype 6, MOVEMENT_TYPE_FACE_RIGHT return -BattleFrontier_BattleDomeBattleRoom_EventScript_24C938:: @ 824C938 +BattleFrontier_BattleDomeBattleRoom_EventScript_TryDoAudienceMemberWalkToSeat:: @ 824C938 compare VAR_TEMP_D, 0 goto_if_eq Common_EventScript_NopReturn - applymovement 6, BattleFrontier_BattleDomeBattleRoom_Movement_24C95E + applymovement 6, BattleFrontier_BattleDomeBattleRoom_Movement_AudienceMemberWalkToSeat return -BattleFrontier_BattleDomeBattleRoom_Movement_24C94B: @ 824C94B +BattleFrontier_BattleDomeBattleRoom_Movement_AudienceTwinJump: @ 824C94B delay_16 delay_16 delay_16 @@ -930,7 +924,7 @@ BattleFrontier_BattleDomeBattleRoom_Movement_24C94B: @ 824C94B enable_jump_landing_ground_effect step_end -BattleFrontier_BattleDomeBattleRoom_Movement_24C95E: @ 824C95E +BattleFrontier_BattleDomeBattleRoom_Movement_AudienceMemberWalkToSeat: @ 824C95E walk_down walk_down walk_right @@ -938,52 +932,52 @@ BattleFrontier_BattleDomeBattleRoom_Movement_24C95E: @ 824C95E walk_in_place_fastest_down step_end -BattleFrontier_BattleDomeBattleRoom_Movement_24C964: @ 824C964 +BattleFrontier_BattleDomeBattleRoom_Movement_TieRefereeEnter: @ 824C964 walk_right walk_right walk_right walk_right step_end -BattleFrontier_BattleDomeBattleRoom_Movement_24C969: @ 824C969 +BattleFrontier_BattleDomeBattleRoom_Movement_RefereeFaceLeft: @ 824C969 walk_in_place_fastest_left step_end -BattleFrontier_BattleDomeBattleRoom_Movement_24C96B: @ 824C96B +BattleFrontier_BattleDomeBattleRoom_Movement_TieRefereeExit: @ 824C96B walk_left walk_left walk_left walk_left step_end -BattleFrontier_BattleDomeBattleRoom_Text_24C970: @ 824C970 +BattleFrontier_BattleDomeBattleRoom_Text_PlayerHasEnteredDome: @ 824C970 .string "{PLAYER} has entered the BATTLE DOME!$" -BattleFrontier_BattleDomeBattleRoom_Text_24C990: @ 824C990 +BattleFrontier_BattleDomeBattleRoom_Text_PlayerVersusTrainer: @ 824C990 .string "{STR_VAR_1}\n" .string "match!\p" .string "{PLAYER} versus {STR_VAR_2}!\p" .string "Let the battle begin!$" -BattleFrontier_BattleDomeBattleRoom_Text_24C9BE: @ 824C9BE +BattleFrontier_BattleDomeBattleRoom_Text_PlayerIsWinner: @ 824C9BE .string "{PLAYER} is the winner!\n" .string "Congratulations!$" -BattleFrontier_BattleDomeBattleRoom_Text_24C9E1: @ 824C9E1 +BattleFrontier_BattleDomeBattleRoom_Text_TrainerIsWinner: @ 824C9E1 .string "{STR_VAR_2} is the winner!\n" .string "Congratulations!$" -BattleFrontier_BattleDomeBattleRoom_Text_24CA04: @ 824CA04 +BattleFrontier_BattleDomeBattleRoom_Text_PlayerIsLv50Champ: @ 824CA04 .string "{PLAYER} is the Level 50\n" .string "Battle Tournament Champion!\p" .string "Congratulations!$" -BattleFrontier_BattleDomeBattleRoom_Text_24CA44: @ 824CA44 +BattleFrontier_BattleDomeBattleRoom_Text_PlayerIsLvOpenChamp: @ 824CA44 .string "{PLAYER} is the Open Level\n" .string "Battle Tournament Champion!\p" .string "Congratulations!$" -BattleFrontier_BattleDomeBattleRoom_Text_24CA86: @ 824CA86 +BattleFrontier_BattleDomeBattleRoom_Text_RefereeDecisionPleaseWait: @ 824CA86 .string "What an unbelievable finish!\n" .string "We have a double knockout!\p" .string "In this event, the Battle Tournament\n" @@ -991,7 +985,7 @@ BattleFrontier_BattleDomeBattleRoom_Text_24CA86: @ 824CA86 .string "Please wait while the judging\n" .string "is under way.$" -BattleFrontier_BattleDomeBattleRoom_Text_24CB34: @ 824CB34 +BattleFrontier_BattleDomeBattleRoom_Text_RefereesDecidedWinnerTrainer: @ 824CB34 .string "The REFEREES have reached\n" .string "a decision!\p" .string "The winner is…\n" @@ -999,7 +993,7 @@ BattleFrontier_BattleDomeBattleRoom_Text_24CB34: @ 824CB34 .string "The winner is {STR_VAR_1}!\l" .string "Congratulations!$" -BattleFrontier_BattleDomeBattleRoom_Text_24CB9D: @ 824CB9D +BattleFrontier_BattleDomeBattleRoom_Text_RefereesDecidedWinnerPlayer: @ 824CB9D .string "The REFEREES have reached\n" .string "a decision!\p" .string "The winner is…\n" @@ -1007,85 +1001,85 @@ BattleFrontier_BattleDomeBattleRoom_Text_24CB9D: @ 824CB9D .string "The winner is {PLAYER}!\l" .string "Congratulations!$" -BattleFrontier_BattleDomeBattleRoom_Text_24CC06: @ 824CC06 +BattleFrontier_BattleDomeBattleRoom_Text_BrightNewHope: @ 824CC06 .string "The bright new hope!\p" .string "$" -BattleFrontier_BattleDomeBattleRoom_Text_24CC1C: @ 824CC1C +BattleFrontier_BattleDomeBattleRoom_Text_RisingStar: @ 824CC1C .string "The rising star!\p" .string "$" -BattleFrontier_BattleDomeBattleRoom_Text_24CC2E: @ 824CC2E +BattleFrontier_BattleDomeBattleRoom_Text_WillTheyRaceToChampionship: @ 824CC2E .string "Will this TRAINER race to\n" .string "the championship?\p" .string "$" -BattleFrontier_BattleDomeBattleRoom_Text_24CC5B: @ 824CC5B +BattleFrontier_BattleDomeBattleRoom_Text_CanAchieveChampionFirstTry: @ 824CC5B .string "Can the feat of a championship\n" .string "on the first try be achieved?\p" .string "$" -BattleFrontier_BattleDomeBattleRoom_Text_24CC99: @ 824CC99 +BattleFrontier_BattleDomeBattleRoom_Text_CanLossBeAvenged: @ 824CC99 .string "Can the loss of the last match\n" .string "be avenged?\p" .string "$" -BattleFrontier_BattleDomeBattleRoom_Text_24CCC5: @ 824CCC5 +BattleFrontier_BattleDomeBattleRoom_Text_OnFireForChampionship: @ 824CCC5 .string "The TRAINER is on fire for\n" .string "the first championship try!\p" .string "$" -BattleFrontier_BattleDomeBattleRoom_Text_24CCFD: @ 824CCFD +BattleFrontier_BattleDomeBattleRoom_Text_WinHereAdvancesToFinal: @ 824CCFD .string "A win here means this TRAINER\n" .string "advances to the final!\p" .string "$" -BattleFrontier_BattleDomeBattleRoom_Text_24CD33: @ 824CD33 +BattleFrontier_BattleDomeBattleRoom_Text_WillLongHeldDreamComeTrue: @ 824CD33 .string "Will the long-held dream of\n" .string "a championship finally come true?\p" .string "$" -BattleFrontier_BattleDomeBattleRoom_Text_24CD72: @ 824CD72 +BattleFrontier_BattleDomeBattleRoom_Text_TheInvincibleChampion: @ 824CD72 .string "The invincible champion!\p" .string "$" -BattleFrontier_BattleDomeBattleRoom_Text_24CD8C: @ 824CD8C +BattleFrontier_BattleDomeBattleRoom_Text_CanAnyoneHopeToBeatTrainer: @ 824CD8C .string "Can anyone hope to beat this\n" .string "TRAINER?\p" .string "$" -BattleFrontier_BattleDomeBattleRoom_Text_24CDB3: @ 824CDB3 +BattleFrontier_BattleDomeBattleRoom_Text_DoBattlesExistSolelyForTrainer: @ 824CDB3 .string "Do battles exist solely for\n" .string "this TRAINER?\p" .string "$" -BattleFrontier_BattleDomeBattleRoom_Text_24CDDE: @ 824CDDE +BattleFrontier_BattleDomeBattleRoom_Text_CurrentChampAimingToRetainTitle: @ 824CDDE .string "The current champion aiming to\n" .string "retain the title!\p" .string "$" -BattleFrontier_BattleDomeBattleRoom_Text_24CE10: @ 824CE10 +BattleFrontier_BattleDomeBattleRoom_Text_FormerChampHasReturned: @ 824CE10 .string "The former champion has returned!\p" .string "$" -BattleFrontier_BattleDomeBattleRoom_Text_24CE33: @ 824CE33 +BattleFrontier_BattleDomeBattleRoom_Text_FormerToughnessReturned: @ 824CE33 .string "The former toughness has returned!\p" .string "$" -BattleFrontier_BattleDomeBattleRoom_Text_24CE57: @ 824CE57 +BattleFrontier_BattleDomeBattleRoom_Text_WillDoExpectedAdvanceToFinals: @ 824CE57 .string "Will this TRAINER do as expected\n" .string "and advance to the finals?\p" .string "$" -BattleFrontier_BattleDomeBattleRoom_Text_24CE94: @ 824CE94 +BattleFrontier_BattleDomeBattleRoom_Text_WillFormerChampRegainGlory: @ 824CE94 .string "Will the former champ regain\n" .string "lost glory?\p" .string "$" -BattleFrontier_BattleDomeBattleRoom_Text_24CEBE: @ 824CEBE +BattleFrontier_BattleDomeBattleRoom_Text_FeelGlowOfTrueMaster: @ 824CEBE .string "Feel the glow of a true master!$" -BattleFrontier_BattleDomeBattleRoom_Text_24CEDE: @ 824CEDE +BattleFrontier_BattleDomeBattleRoom_Text_MakeWayForDomeAceTucker: @ 824CEDE .string "And now… The TRAINER standing in\n" .string "{PLAYER}'s record-setting path…\p" .string "Yes! The one and only!\n" @@ -1093,11 +1087,11 @@ BattleFrontier_BattleDomeBattleRoom_Text_24CEDE: @ 824CEDE .string "Our very own DOME ACE!\l" .string "Make way for TUCKER!$" -BattleFrontier_BattleDomeBattleRoom_Text_24CF7A: @ 824CF7A +BattleFrontier_BattleDomeBattleRoom_Text_SpectatorTuckerChant: @ 824CF7A .string "Spectators: TUCKER! TUCKER!\n" .string "TUCKER! TUCKER! TUCKER!$" -BattleFrontier_BattleDomeBattleRoom_Text_24CFAE: @ 824CFAE +BattleFrontier_BattleDomeBattleRoom_Text_TuckerSilverIntro: @ 824CFAE .string "TUCKER: Ahahah!\p" .string "Do you hear it? This crowd!\n" .string "They're all itching to see our match!\p" @@ -1109,37 +1103,37 @@ BattleFrontier_BattleDomeBattleRoom_Text_24CFAE: @ 824CFAE .string "I, TUCKER the DOME ACE, will bathe you\l" .string "in my brilliant glow!$" -BattleFrontier_BattleDomeBattleRoom_Text_24D0D9: @ 824D0D9 +BattleFrontier_BattleDomeBattleRoom_Text_LetsSeeYourStrategy: @ 824D0D9 .string "Your strategy!\n" .string "Let's see it!$" -BattleFrontier_BattleDomeBattleRoom_Text_24D0F6: @ 824D0F6 +BattleFrontier_BattleDomeBattleRoom_Text_IncredibleVictorIsPlayer: @ 824D0F6 .string "Unbelievable! It's incredible!\n" .string "The victor is {PLAYER}!$" -BattleFrontier_BattleDomeBattleRoom_Text_24D127: @ 824D127 +BattleFrontier_BattleDomeBattleRoom_Text_WinnerIsTucker: @ 824D127 .string "The winner is TUCKER!\n" .string "The DOME ACE has prevailed!\p" .string "Congratulations, TUCKER!$" -BattleFrontier_BattleDomeBattleRoom_Text_24D172: @ 824D172 +BattleFrontier_BattleDomeBattleRoom_Text_SeeYourFrontierPass: @ 824D172 .string "TUCKER: Rules are rules!\n" .string "Let me see your FRONTIER PASS.$" -BattleFrontier_BattleDomeBattleRoom_Text_24D1AA: @ 824D1AA +BattleFrontier_BattleDomeBattleRoom_Text_ReceivedTacticsSymbol: @ 824D1AA .string "The Tactics Symbol was embossed on\n" .string "the FRONTIER PASS!$" -BattleFrontier_BattleDomeBattleRoom_Text_24D1E0: @ 824D1E0 +BattleFrontier_BattleDomeBattleRoom_Text_WontUnderestimateYouNextTime: @ 824D1E0 .string "… … … … … …\p" .string "I sorely underestimated you. I won't\n" .string "make the same mistake next time…$" -BattleFrontier_BattleDomeBattleRoom_Text_24D232: @ 824D232 +BattleFrontier_BattleDomeBattleRoom_Text_CanWinStreakBeStretched: @ 824D232 .string "Can the win streak be stretched?\n" .string "The confidence is there!$" -BattleFrontier_BattleDomeBattleRoom_Text_24D26C: @ 824D26C +BattleFrontier_BattleDomeBattleRoom_Text_LegendHasReturnedDomeAceTucker: @ 824D26C .string "Ladies and gentlemen!\n" .string "Boys, girls, and POKéMON!\p" .string "Finally!\n" @@ -1148,7 +1142,7 @@ BattleFrontier_BattleDomeBattleRoom_Text_24D26C: @ 824D26C .string "Our very own DOME ACE!\l" .string "It's none other than TUCKER!$" -BattleFrontier_BattleDomeBattleRoom_Text_24D319: @ 824D319 +BattleFrontier_BattleDomeBattleRoom_Text_TuckerGoldIntro: @ 824D319 .string "TUCKER: Ah…\n" .string "The pummeling roar of the crowd…\l" .string "Their furnace-like heat of excitement…\l" @@ -1160,22 +1154,22 @@ BattleFrontier_BattleDomeBattleRoom_Text_24D319: @ 824D319 .string "Brighter and more brilliant!\l" .string "I must light all that gather here!$" -BattleFrontier_BattleDomeBattleRoom_Text_24D43E: @ 824D43E +BattleFrontier_BattleDomeBattleRoom_Text_UnleashAllPowerIPossess: @ 824D43E .string "I will unleash all the power that\n" .string "I possess! Right here and now!$" -BattleFrontier_BattleDomeBattleRoom_Text_24D47F: @ 824D47F +BattleFrontier_BattleDomeBattleRoom_Text_NeverLostWhenPowerUnleashed: @ 824D47F .string "TUCKER: You're genuinely fantastic!\p" .string "Never before! I haven't ever lost in the\n" .string "times I've had to unleash my power.\p" .string "Yes, quite fantastic!\n" .string "Your FRONTIER PASS, please?$" -BattleFrontier_BattleDomeBattleRoom_Text_24D522: @ 824D522 +BattleFrontier_BattleDomeBattleRoom_Text_TacticsSymbolTookGoldenShine: @ 824D522 .string "The Tactics Symbol took on\n" .string "a golden shine!$" -BattleFrontier_BattleDomeBattleRoom_Text_24D54D: @ 824D54D +BattleFrontier_BattleDomeBattleRoom_Text_LookForwardToNextEncounter: @ 824D54D .string "You're strong, but above all,\n" .string "you have a unique charm!\p" .string "In you, I see a definite potential for\n" @@ -1183,22 +1177,24 @@ BattleFrontier_BattleDomeBattleRoom_Text_24D54D: @ 824D54D .string "I will very much look forward to\n" .string "our next encounter!$" -BattleFrontier_BattleDomeBattleRoom_Text_24D5F5: @ 824D5F5 +@ Unused +BattleFrontier_BattleDomeBattleRoom_Text_PlayerIsLv50Champ2: @ 824D5F5 .string "{PLAYER} is the Level 50\n" .string "Battle Tournament Champion!\p" .string "Congratulations!$" -BattleFrontier_BattleDomeBattleRoom_Text_24D635: @ 824D635 +@ Unused +BattleFrontier_BattleDomeBattleRoom_Text_PlayerIsLvOpenChamp2: @ 824D635 .string "{PLAYER} is the Open Level\n" .string "Battle Tournament Champion!\p" .string "Congratulations!$" -BattleFrontier_BattleDomeBattleRoom_Text_24D677: @ 824D677 +BattleFrontier_BattleDomeBattleRoom_Text_PlayerVersusTucker: @ 824D677 .string "The final match!\p" .string "{PLAYER} versus the DOME ACE, TUCKER!\p" .string "Let the battle begin!$" -BattleFrontier_BattleDomeBattleRoom_Text_24D6BE: @ 824D6BE +BattleFrontier_BattleDomeBattleRoom_Text_RefereesDecidedWinnerTucker: @ 824D6BE .string "The REFEREES have reached\n" .string "a decision!\p" .string "The winner is…\n" diff --git a/data/maps/BattleFrontier_BattleDomeCorridor/scripts.inc b/data/maps/BattleFrontier_BattleDomeCorridor/scripts.inc index 92be8bc3e2..be8071c8c9 100644 --- a/data/maps/BattleFrontier_BattleDomeCorridor/scripts.inc +++ b/data/maps/BattleFrontier_BattleDomeCorridor/scripts.inc @@ -1,48 +1,48 @@ BattleFrontier_BattleDomeCorridor_MapScripts:: @ 824B0FE - map_script MAP_SCRIPT_ON_FRAME_TABLE, BattleFrontier_BattleDomeCorridor_MapScript2_24B104 + map_script MAP_SCRIPT_ON_FRAME_TABLE, BattleFrontier_BattleDomeCorridor_OnFrame .byte 0 -BattleFrontier_BattleDomeCorridor_MapScript2_24B104: @ 824B104 - map_script_2 VAR_TEMP_0, 0, BattleFrontier_BattleDomeCorridor_EventScript_24B10E +BattleFrontier_BattleDomeCorridor_OnFrame: @ 824B104 + map_script_2 VAR_TEMP_0, 0, BattleFrontier_BattleDomeCorridor_EventScript_EnterCorridor .2byte 0 -BattleFrontier_BattleDomeCorridor_EventScript_24B10E:: @ 824B10E +BattleFrontier_BattleDomeCorridor_EventScript_EnterCorridor:: @ 824B10E delay 16 setvar VAR_TEMP_0, 1 frontier_get FRONTIER_DATA_LVL_MODE compare VAR_RESULT, FRONTIER_LVL_OPEN - goto_if_eq BattleFrontier_BattleDomeCorridor_EventScript_24B161 - applymovement 1, BattleFrontier_BattleDomeCorridor_Movement_24B1B2 - applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleDomeCorridor_Movement_24B1A1 + goto_if_eq BattleFrontier_BattleDomeCorridor_EventScript_WalkToBattleRoomLvOpen + applymovement 1, BattleFrontier_BattleDomeCorridor_Movement_AttendantWalkToDoorLv50 + applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleDomeCorridor_Movement_PlayerWalkToDoorLv50 waitmovement 0 opendoor 13, 3 waitdooranim - applymovement 1, BattleFrontier_BattleDomeCorridor_Movement_24B1BE - applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleDomeCorridor_Movement_24B1AE + applymovement 1, BattleFrontier_BattleDomeCorridor_Movement_AttendantEnterDoorLv50 + applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleDomeCorridor_Movement_PlayerEnterDoorLv50 waitmovement 0 closedoor 13, 3 waitdooranim - goto BattleFrontier_BattleDomeCorridor_EventScript_24B18F + goto BattleFrontier_BattleDomeCorridor_EventScript_WarpToPreBattleRoom -BattleFrontier_BattleDomeCorridor_EventScript_24B161:: @ 824B161 - applymovement 1, BattleFrontier_BattleDomeCorridor_Movement_24B1D6 - applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleDomeCorridor_Movement_24B1C1 +BattleFrontier_BattleDomeCorridor_EventScript_WalkToBattleRoomLvOpen:: @ 824B161 + applymovement 1, BattleFrontier_BattleDomeCorridor_Movement_AttendantWalkToDoorLvOpen + applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleDomeCorridor_Movement_PlayerWalkToDoorLvOpen waitmovement 0 opendoor 37, 3 waitdooranim - applymovement 1, BattleFrontier_BattleDomeCorridor_Movement_24B1E6 - applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleDomeCorridor_Movement_24B1D2 + applymovement 1, BattleFrontier_BattleDomeCorridor_Movement_AttendantEnterDoorLvOpen + applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleDomeCorridor_Movement_PlayerEnterDoorLvOpen waitmovement 0 closedoor 37, 3 waitdooranim -BattleFrontier_BattleDomeCorridor_EventScript_24B18F:: @ 824B18F +BattleFrontier_BattleDomeCorridor_EventScript_WarpToPreBattleRoom:: @ 824B18F waitmovement 0 setvar VAR_0x8006, 0 warp MAP_BATTLE_FRONTIER_BATTLE_DOME_PRE_BATTLE_ROOM, 255, 5, 7 waitstate end -BattleFrontier_BattleDomeCorridor_Movement_24B1A1: @ 824B1A1 +BattleFrontier_BattleDomeCorridor_Movement_PlayerWalkToDoorLv50: @ 824B1A1 walk_up walk_left walk_left @@ -57,13 +57,13 @@ BattleFrontier_BattleDomeCorridor_Movement_24B1A1: @ 824B1A1 walk_in_place_fastest_up step_end -BattleFrontier_BattleDomeCorridor_Movement_24B1AE: @ 824B1AE +BattleFrontier_BattleDomeCorridor_Movement_PlayerEnterDoorLv50: @ 824B1AE walk_up walk_up set_invisible step_end -BattleFrontier_BattleDomeCorridor_Movement_24B1B2: @ 824B1B2 +BattleFrontier_BattleDomeCorridor_Movement_AttendantWalkToDoorLv50: @ 824B1B2 walk_left walk_left walk_left @@ -77,12 +77,12 @@ BattleFrontier_BattleDomeCorridor_Movement_24B1B2: @ 824B1B2 walk_up step_end -BattleFrontier_BattleDomeCorridor_Movement_24B1BE: @ 824B1BE +BattleFrontier_BattleDomeCorridor_Movement_AttendantEnterDoorLv50: @ 824B1BE walk_up set_invisible step_end -BattleFrontier_BattleDomeCorridor_Movement_24B1C1: @ 824B1C1 +BattleFrontier_BattleDomeCorridor_Movement_PlayerWalkToDoorLvOpen: @ 824B1C1 walk_up walk_right walk_right @@ -101,13 +101,13 @@ BattleFrontier_BattleDomeCorridor_Movement_24B1C1: @ 824B1C1 walk_in_place_fastest_up step_end -BattleFrontier_BattleDomeCorridor_Movement_24B1D2: @ 824B1D2 +BattleFrontier_BattleDomeCorridor_Movement_PlayerEnterDoorLvOpen: @ 824B1D2 walk_up walk_up set_invisible step_end -BattleFrontier_BattleDomeCorridor_Movement_24B1D6: @ 824B1D6 +BattleFrontier_BattleDomeCorridor_Movement_AttendantWalkToDoorLvOpen: @ 824B1D6 walk_right walk_right walk_right @@ -125,12 +125,13 @@ BattleFrontier_BattleDomeCorridor_Movement_24B1D6: @ 824B1D6 walk_up step_end -BattleFrontier_BattleDomeCorridor_Movement_24B1E6: @ 824B1E6 +BattleFrontier_BattleDomeCorridor_Movement_AttendantEnterDoorLvOpen: @ 824B1E6 walk_up set_invisible step_end -BattleFrontier_BattleDomeCorridor_Movement_24B1E9: @ 824B1E9 +@ Unused +BattleFrontier_BattleDomeCorridor_Movement_WalkToBattleRoomMidRight: @ 824B1E9 walk_up walk_right walk_right diff --git a/data/maps/BattleFrontier_BattleDomeLobby/map.json b/data/maps/BattleFrontier_BattleDomeLobby/map.json index 89eeb60e46..f39fee696e 100644 --- a/data/maps/BattleFrontier_BattleDomeLobby/map.json +++ b/data/maps/BattleFrontier_BattleDomeLobby/map.json @@ -24,7 +24,7 @@ "movement_range_y": 1, "trainer_type": "0", "trainer_sight_or_berry_tree_id": "0", - "script": "BattleFrontier_BattleDomeLobby_EventScript_249A35", + "script": "BattleFrontier_BattleDomeLobby_EventScript_SinglesAttendant", "flag": "0" }, { @@ -37,7 +37,7 @@ "movement_range_y": 1, "trainer_type": "0", "trainer_sight_or_berry_tree_id": "0", - "script": "BattleFrontier_BattleDomeLobby_EventScript_249E10", + "script": "BattleFrontier_BattleDomeLobby_EventScript_Man", "flag": "0" }, { @@ -50,7 +50,7 @@ "movement_range_y": 1, "trainer_type": "0", "trainer_sight_or_berry_tree_id": "0", - "script": "BattleFrontier_BattleDomeLobby_EventScript_249DFE", + "script": "BattleFrontier_BattleDomeLobby_EventScript_Lass", "flag": "0" }, { @@ -63,7 +63,7 @@ "movement_range_y": 1, "trainer_type": "0", "trainer_sight_or_berry_tree_id": "0", - "script": "BattleFrontier_BattleDomeLobby_EventScript_249E07", + "script": "BattleFrontier_BattleDomeLobby_EventScript_FatMan", "flag": "0" }, { @@ -76,7 +76,7 @@ "movement_range_y": 1, "trainer_type": "0", "trainer_sight_or_berry_tree_id": "0", - "script": "BattleFrontier_BattleDomeLobby_EventScript_249DED", + "script": "BattleFrontier_BattleDomeLobby_EventScript_Maniac", "flag": "0" }, { @@ -89,7 +89,7 @@ "movement_range_y": 1, "trainer_type": "0", "trainer_sight_or_berry_tree_id": "0", - "script": "BattleFrontier_BattleDomeLobby_EventScript_249A47", + "script": "BattleFrontier_BattleDomeLobby_EventScript_DoublesAttendant", "flag": "0" } ], @@ -117,7 +117,7 @@ "y": 10, "elevation": 0, "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY", - "script": "BattleFrontier_BattleDomeLobby_EventScript_249D52" + "script": "BattleFrontier_BattleDomeLobby_EventScript_ShowSinglesResults" }, { "type": "sign", @@ -125,7 +125,7 @@ "y": 10, "elevation": 0, "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY", - "script": "BattleFrontier_BattleDomeLobby_EventScript_249D84" + "script": "BattleFrontier_BattleDomeLobby_EventScript_ShowLastTourneyTree" }, { "type": "sign", @@ -133,7 +133,7 @@ "y": 10, "elevation": 0, "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY", - "script": "BattleFrontier_BattleDomeLobby_EventScript_249D6B" + "script": "BattleFrontier_BattleDomeLobby_EventScript_ShowDoublesResults" }, { "type": "sign", @@ -141,7 +141,7 @@ "y": 10, "elevation": 0, "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY", - "script": "BattleFrontier_BattleDomeLobby_EventScript_249E34" + "script": "BattleFrontier_BattleDomeLobby_EventScript_RulesBoard" } ] } \ No newline at end of file diff --git a/data/maps/BattleFrontier_BattleDomeLobby/scripts.inc b/data/maps/BattleFrontier_BattleDomeLobby/scripts.inc index b4d0b38712..5428c1e8fa 100644 --- a/data/maps/BattleFrontier_BattleDomeLobby/scripts.inc +++ b/data/maps/BattleFrontier_BattleDomeLobby/scripts.inc @@ -1,171 +1,168 @@ BattleFrontier_BattleDomeLobby_MapScripts:: @ 82497E2 - map_script MAP_SCRIPT_ON_RESUME, BattleFrontier_BattleDomeLobby_MapScript1_2497F2 - map_script MAP_SCRIPT_ON_FRAME_TABLE, BattleFrontier_BattleDomeLobby_MapScript2_24980F + map_script MAP_SCRIPT_ON_RESUME, BattleFrontier_BattleDomeLobby_OnResume + map_script MAP_SCRIPT_ON_FRAME_TABLE, BattleFrontier_BattleDomeLobby_OnFrame map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, BattleFrontier_BattleDomeLobby_OnWarp .byte 0 -BattleFrontier_BattleDomeLobby_MapScript1_2497F2: @ 82497F2 - dome_21 +BattleFrontier_BattleDomeLobby_OnResume: @ 82497F2 + dome_initresultstree end BattleFrontier_BattleDomeLobby_OnWarp: @ 82497FB - map_script_2 VAR_TEMP_1, 0, BattleFrontier_BattleDomeLobby_EventScript_249805 + map_script_2 VAR_TEMP_1, 0, BattleFrontier_BattleDomeLobby_EventScript_TurnPlayerNorth .2byte 0 -BattleFrontier_BattleDomeLobby_EventScript_249805:: @ 8249805 +BattleFrontier_BattleDomeLobby_EventScript_TurnPlayerNorth:: @ 8249805 setvar VAR_TEMP_1, 1 turnobject EVENT_OBJ_ID_PLAYER, DIR_NORTH end -BattleFrontier_BattleDomeLobby_MapScript2_24980F: @ 824980F - map_script_2 VAR_TEMP_0, 0, BattleFrontier_BattleDomeLobby_EventScript_249839 - map_script_2 VAR_TEMP_0, CHALLENGE_STATUS_SAVING, BattleFrontier_BattleDomeLobby_EventScript_249842 - map_script_2 VAR_TEMP_0, CHALLENGE_STATUS_PAUSED, BattleFrontier_BattleDomeLobby_EventScript_2499F9 - map_script_2 VAR_TEMP_0, CHALLENGE_STATUS_WON, BattleFrontier_BattleDomeLobby_EventScript_24989B - map_script_2 VAR_TEMP_0, CHALLENGE_STATUS_LOST, BattleFrontier_BattleDomeLobby_EventScript_249940 +BattleFrontier_BattleDomeLobby_OnFrame: @ 824980F + map_script_2 VAR_TEMP_0, 0, BattleFrontier_BattleDomeLobby_EventScript_GetChallengeStatus + map_script_2 VAR_TEMP_0, CHALLENGE_STATUS_SAVING, BattleFrontier_BattleDomeLobby_EventScript_QuitWithoutSaving + map_script_2 VAR_TEMP_0, CHALLENGE_STATUS_PAUSED, BattleFrontier_BattleDomeLobby_EventScript_ResumeChallenge + map_script_2 VAR_TEMP_0, CHALLENGE_STATUS_WON, BattleFrontier_BattleDomeLobby_EventScript_WonChallenge + map_script_2 VAR_TEMP_0, CHALLENGE_STATUS_LOST, BattleFrontier_BattleDomeLobby_EventScript_LostChallenge .2byte 0 -BattleFrontier_BattleDomeLobby_EventScript_249839:: @ 8249839 +BattleFrontier_BattleDomeLobby_EventScript_GetChallengeStatus:: @ 8249839 frontier_getstatus end -BattleFrontier_BattleDomeLobby_EventScript_249842:: @ 8249842 +BattleFrontier_BattleDomeLobby_EventScript_QuitWithoutSaving:: @ 8249842 lockall - msgbox BattleFrontier_BattleDomeLobby_Text_24A45F, MSGBOX_DEFAULT + msgbox BattleFrontier_BattleDomeLobby_Text_DidntSaveBeforeQuitting, MSGBOX_DEFAULT closemessage dome_set DOME_DATA_WIN_STREAK, 0 dome_set DOME_DATA_WIN_STREAK_ACTIVE, FALSE - dome_set DOME_DATA_6, 1 + dome_set DOME_DATA_ATTEMPTED_CHALLENGE, TRUE frontier_set FRONTIER_DATA_CHALLENGE_STATUS, 0 setvar VAR_TEMP_0, 255 releaseall end -BattleFrontier_BattleDomeLobby_EventScript_24989B:: @ 824989B +BattleFrontier_BattleDomeLobby_EventScript_WonChallenge:: @ 824989B call BattleFrontier_EventScript_IncrementWinStreak lockall frontier_isbrain compare VAR_RESULT, TRUE - goto_if_eq BattleFrontier_BattleDomeLobby_EventScript_2498C1 - msgbox BattleFrontier_BattleDomeLobby_Text_24A4E9, MSGBOX_DEFAULT - goto BattleFrontier_BattleDomeLobby_EventScript_2498C9 + goto_if_eq BattleFrontier_BattleDomeLobby_EventScript_DefeatedAce + msgbox BattleFrontier_BattleDomeLobby_Text_CongratsForWinningTourney, MSGBOX_DEFAULT + goto BattleFrontier_BattleDomeLobby_EventScript_GiveBattlePoints -BattleFrontier_BattleDomeLobby_EventScript_2498C1:: @ 82498C1 - msgbox BattleFrontier_BattleDomeLobby_Text_24AD67, MSGBOX_DEFAULT - -BattleFrontier_BattleDomeLobby_EventScript_2498C9:: @ 82498C9 - msgbox BattleFrontier_BattleDomeLobby_Text_24ADB1, MSGBOX_DEFAULT +BattleFrontier_BattleDomeLobby_EventScript_DefeatedAce:: @ 82498C1 + msgbox BattleFrontier_BattleDomeLobby_Text_CongratsDefeatedTucker, MSGBOX_DEFAULT +BattleFrontier_BattleDomeLobby_EventScript_GiveBattlePoints:: @ 82498C9 + msgbox BattleFrontier_BattleDomeLobby_Text_AwardTheseBattlePoints, MSGBOX_DEFAULT frontier_givepoints msgbox BattleFrontier_Text_ObtainedXBattlePoints, MSGBOX_GETPOINTS - message BattleFrontier_BattleDomeLobby_Text_24A5D6 + message BattleFrontier_BattleDomeLobby_Text_RecordWillBeSaved waitmessage special LoadPlayerParty frontier_setpartyorder FRONTIER_PARTY_SIZE frontier_checkairshow - dome_set DOME_DATA_6, 1 - dome_set DOME_DATA_7, 1 + dome_set DOME_DATA_ATTEMPTED_CHALLENGE, TRUE + dome_set DOME_DATA_HAS_WON_CHALLENGE, TRUE dome_set DOME_DATA_WIN_STREAK_ACTIVE, TRUE special LoadPlayerParty special HealPlayerParty - goto BattleFrontier_BattleDomeLobby_EventScript_249991 + goto BattleFrontier_BattleDomeLobby_EventScript_AskRecordBattle -BattleFrontier_BattleDomeLobby_EventScript_249940:: @ 8249940 +BattleFrontier_BattleDomeLobby_EventScript_LostChallenge:: @ 8249940 lockall - msgbox BattleFrontier_BattleDomeLobby_Text_24A5BF, MSGBOX_DEFAULT - message BattleFrontier_BattleDomeLobby_Text_24A5D6 + msgbox BattleFrontier_BattleDomeLobby_Text_ThankYouForPlaying, MSGBOX_DEFAULT + message BattleFrontier_BattleDomeLobby_Text_RecordWillBeSaved waitmessage special LoadPlayerParty frontier_setpartyorder FRONTIER_PARTY_SIZE frontier_checkairshow dome_set DOME_DATA_WIN_STREAK_ACTIVE, FALSE - dome_set DOME_DATA_6, 1 + dome_set DOME_DATA_ATTEMPTED_CHALLENGE, TRUE special LoadPlayerParty special HealPlayerParty - -BattleFrontier_BattleDomeLobby_EventScript_249991:: @ 8249991 +BattleFrontier_BattleDomeLobby_EventScript_AskRecordBattle:: @ 8249991 dome_save 0 playse SE_SAVE waitse call BattleFrontier_BattleDomeLobby_EventScript_23E8E0 - compare VAR_RESULT, 1 - goto_if_eq BattleFrontier_BattleDomeLobby_EventScript_2499E9 - message BattleFrontier_BattleDomeLobby_Text_24AE17 + compare VAR_RESULT, TRUE + goto_if_eq BattleFrontier_BattleDomeLobby_EventScript_EndChallenge + message BattleFrontier_BattleDomeLobby_Text_RecordLastMatch waitmessage multichoicedefault 20, 8, MULTI_YESNO, 1, 0 switch VAR_RESULT - case 1, BattleFrontier_BattleDomeLobby_EventScript_2499E9 - case 0, BattleFrontier_BattleDomeLobby_EventScript_2499E4 - case MULTI_B_PRESSED, BattleFrontier_BattleDomeLobby_EventScript_2499E9 + case 1, BattleFrontier_BattleDomeLobby_EventScript_EndChallenge + case 0, BattleFrontier_BattleDomeLobby_EventScript_RecordBattle + case MULTI_B_PRESSED, BattleFrontier_BattleDomeLobby_EventScript_EndChallenge -BattleFrontier_BattleDomeLobby_EventScript_2499E4:: @ 82499E4 +BattleFrontier_BattleDomeLobby_EventScript_RecordBattle:: @ 82499E4 call BattleFrontier_EventScript_SaveBattle -BattleFrontier_BattleDomeLobby_EventScript_2499E9:: @ 82499E9 - msgbox BattleFrontier_BattleDomeLobby_Text_249F74, MSGBOX_DEFAULT +BattleFrontier_BattleDomeLobby_EventScript_EndChallenge:: @ 82499E9 + msgbox BattleFrontier_BattleDomeLobby_Text_HopeToSeeYouAgain, MSGBOX_DEFAULT closemessage setvar VAR_TEMP_0, 255 releaseall end -BattleFrontier_BattleDomeLobby_EventScript_2499F9:: @ 82499F9 +BattleFrontier_BattleDomeLobby_EventScript_ResumeChallenge:: @ 82499F9 lockall - msgbox BattleFrontier_BattleDomeLobby_Text_24A5FE, MSGBOX_DEFAULT - message BattleFrontier_BattleDomeLobby_Text_24A61A + msgbox BattleFrontier_BattleDomeLobby_Text_WeveBeenWaitingForYou, MSGBOX_DEFAULT + message BattleFrontier_BattleDomeLobby_Text_OkayToSaveBeforeChallenge2 waitmessage dome_save CHALLENGE_STATUS_SAVING playse SE_SAVE waitse frontier_set FRONTIER_DATA_PAUSED, FALSE setvar VAR_TEMP_0, 255 - goto BattleFrontier_BattleDomeLobby_EventScript_249BC2 + goto BattleFrontier_BattleDomeLobby_EventScript_EnterChallenge -BattleFrontier_BattleDomeLobby_EventScript_249A35:: @ 8249A35 +BattleFrontier_BattleDomeLobby_EventScript_SinglesAttendant:: @ 8249A35 lock faceplayer setvar VAR_FRONTIER_FACILITY, FRONTIER_FACILITY_DOME setvar VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_SINGLES - goto BattleFrontier_BattleDomeLobby_EventScript_249A59 + goto BattleFrontier_BattleDomeLobby_EventScript_AttendantWelcome end -BattleFrontier_BattleDomeLobby_EventScript_249A47:: @ 8249A47 +BattleFrontier_BattleDomeLobby_EventScript_DoublesAttendant:: @ 8249A47 lock faceplayer setvar VAR_FRONTIER_FACILITY, FRONTIER_FACILITY_DOME setvar VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_DOUBLES - goto BattleFrontier_BattleDomeLobby_EventScript_249A59 + goto BattleFrontier_BattleDomeLobby_EventScript_AttendantWelcome end -BattleFrontier_BattleDomeLobby_EventScript_249A59:: @ 8249A59 +BattleFrontier_BattleDomeLobby_EventScript_AttendantWelcome:: @ 8249A59 special SavePlayerParty compare VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_SINGLES - call_if_eq BattleFrontier_BattleDomeLobby_EventScript_249CFD + call_if_eq BattleFrontier_BattleDomeLobby_EventScript_WelcomeSingles compare VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_DOUBLES - call_if_eq BattleFrontier_BattleDomeLobby_EventScript_249D06 - -BattleFrontier_BattleDomeLobby_EventScript_249A72:: @ 8249A72 + call_if_eq BattleFrontier_BattleDomeLobby_EventScript_WelcomeDoubles +BattleFrontier_BattleDomeLobby_EventScript_AskTakeChallenge:: @ 8249A72 compare VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_SINGLES - call_if_eq BattleFrontier_BattleDomeLobby_EventScript_249D0F + call_if_eq BattleFrontier_BattleDomeLobby_EventScript_TakeSinglesChallenge compare VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_DOUBLES - call_if_eq BattleFrontier_BattleDomeLobby_EventScript_249D15 + call_if_eq BattleFrontier_BattleDomeLobby_EventScript_TakeDoublesChallenge waitmessage multichoice 17, 6, MULTI_CHALLENGEINFO, 0 switch VAR_RESULT - case 0, BattleFrontier_BattleDomeLobby_EventScript_249ABF - case 1, BattleFrontier_BattleDomeLobby_EventScript_249BFA - case 2, BattleFrontier_BattleDomeLobby_EventScript_249C64 - case MULTI_B_PRESSED, BattleFrontier_BattleDomeLobby_EventScript_249C64 + case 0, BattleFrontier_BattleDomeLobby_EventScript_TryEnterChallenge + case 1, BattleFrontier_BattleDomeLobby_EventScript_ExplainChallenge + case 2, BattleFrontier_BattleDomeLobby_EventScript_CancelChallenge + case MULTI_B_PRESSED, BattleFrontier_BattleDomeLobby_EventScript_CancelChallenge -BattleFrontier_BattleDomeLobby_EventScript_249ABF:: @ 8249ABF - message BattleFrontier_BattleDomeLobby_Text_24A210 +BattleFrontier_BattleDomeLobby_EventScript_TryEnterChallenge:: @ 8249ABF + message BattleFrontier_BattleDomeLobby_Text_WhichLevelMode waitmessage multichoice 17, 6, MULTI_LEVEL_MODE, 0 switch VAR_RESULT - case FRONTIER_LVL_TENT, BattleFrontier_BattleDomeLobby_EventScript_249C64 - case MULTI_B_PRESSED, BattleFrontier_BattleDomeLobby_EventScript_249C64 + case FRONTIER_LVL_TENT, BattleFrontier_BattleDomeLobby_EventScript_CancelChallenge + case MULTI_B_PRESSED, BattleFrontier_BattleDomeLobby_EventScript_CancelChallenge frontier_checkineligible compare VAR_0x8004, TRUE - goto_if_eq BattleFrontier_BattleDomeLobby_EventScript_249C15 + goto_if_eq BattleFrontier_BattleDomeLobby_EventScript_NotEnoughValidMons frontier_set FRONTIER_DATA_LVL_MODE, VAR_RESULT - msgbox BattleFrontier_BattleDomeLobby_Text_24A26E, MSGBOX_DEFAULT + msgbox BattleFrontier_BattleDomeLobby_Text_SelectThreeMons, MSGBOX_DEFAULT fadescreen FADE_TO_BLACK call BattleFrontier_EventScript_GetLvlMode copyvar VAR_0x8004, VAR_RESULT @@ -173,14 +170,14 @@ BattleFrontier_BattleDomeLobby_EventScript_249ABF:: @ 8249ABF special ChoosePartyForBattleFrontier waitstate compare VAR_RESULT, 0 - goto_if_eq BattleFrontier_BattleDomeLobby_EventScript_249C61 - msgbox BattleFrontier_BattleDomeLobby_Text_24A1C6, MSGBOX_YESNO + goto_if_eq BattleFrontier_BattleDomeLobby_EventScript_LoadPartyCancelChallenge + msgbox BattleFrontier_BattleDomeLobby_Text_OkayToSaveBeforeChallenge, MSGBOX_YESNO switch VAR_RESULT - case NO, BattleFrontier_BattleDomeLobby_EventScript_249C61 - case YES, BattleFrontier_BattleDomeLobby_EventScript_249B60 - case MULTI_B_PRESSED, BattleFrontier_BattleDomeLobby_EventScript_249C61 + case NO, BattleFrontier_BattleDomeLobby_EventScript_LoadPartyCancelChallenge + case YES, BattleFrontier_BattleDomeLobby_EventScript_SaveBeforeChallenge + case MULTI_B_PRESSED, BattleFrontier_BattleDomeLobby_EventScript_LoadPartyCancelChallenge -BattleFrontier_BattleDomeLobby_EventScript_249B60:: @ 8249B60 +BattleFrontier_BattleDomeLobby_EventScript_SaveBeforeChallenge:: @ 8249B60 setvar VAR_TEMP_0, 0 frontier_set FRONTIER_DATA_SELECTED_MON_ORDER dome_init @@ -192,137 +189,135 @@ BattleFrontier_BattleDomeLobby_EventScript_249B60:: @ 8249B60 call Common_EventScript_SaveGame setvar VAR_TEMP_0, 255 compare VAR_RESULT, 0 - goto_if_eq BattleFrontier_BattleDomeLobby_EventScript_249C4A + goto_if_eq BattleFrontier_BattleDomeLobby_EventScript_CancelChallengeSaveFailed dome_inittrainers -BattleFrontier_BattleDomeLobby_EventScript_249BC2:: @ 8249BC2 +BattleFrontier_BattleDomeLobby_EventScript_EnterChallenge:: @ 8249BC2 special SavePlayerParty frontier_setpartyorder FRONTIER_PARTY_SIZE dome_settrainers - msgbox BattleFrontier_BattleDomeLobby_Text_24A437, MSGBOX_DEFAULT + msgbox BattleFrontier_BattleDomeLobby_Text_ShowYouToBattleDome, MSGBOX_DEFAULT closemessage - call BattleFrontier_BattleDomeLobby_EventScript_249C6E + call BattleFrontier_BattleDomeLobby_EventScript_WalkToDoor special HealPlayerParty warp MAP_BATTLE_FRONTIER_BATTLE_DOME_CORRIDOR, 255, 23, 6 setvar VAR_TEMP_0, 0 waitstate end -BattleFrontier_BattleDomeLobby_EventScript_249BFA:: @ 8249BFA +BattleFrontier_BattleDomeLobby_EventScript_ExplainChallenge:: @ 8249BFA compare VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_SINGLES - call_if_eq BattleFrontier_BattleDomeLobby_EventScript_249D1B + call_if_eq BattleFrontier_BattleDomeLobby_EventScript_ExplainSinglesChallenge compare VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_DOUBLES - call_if_eq BattleFrontier_BattleDomeLobby_EventScript_249D24 - goto BattleFrontier_BattleDomeLobby_EventScript_249A72 + call_if_eq BattleFrontier_BattleDomeLobby_EventScript_ExplainDoublesChallenge + goto BattleFrontier_BattleDomeLobby_EventScript_AskTakeChallenge -BattleFrontier_BattleDomeLobby_EventScript_249C15:: @ 8249C15 +BattleFrontier_BattleDomeLobby_EventScript_NotEnoughValidMons:: @ 8249C15 switch VAR_RESULT - case FRONTIER_LVL_50, BattleFrontier_BattleDomeLobby_EventScript_249C30 - case FRONTIER_LVL_OPEN, BattleFrontier_BattleDomeLobby_EventScript_249C3D + case FRONTIER_LVL_50, BattleFrontier_BattleDomeLobby_EventScript_NotEnoughValidMonsLv50 + case FRONTIER_LVL_OPEN, BattleFrontier_BattleDomeLobby_EventScript_NotEnoughValidMonsLvOpen -BattleFrontier_BattleDomeLobby_EventScript_249C30:: @ 8249C30 - msgbox BattleFrontier_BattleDomeLobby_Text_24A353, MSGBOX_DEFAULT - goto BattleFrontier_BattleDomeLobby_EventScript_249C6C +BattleFrontier_BattleDomeLobby_EventScript_NotEnoughValidMonsLv50:: @ 8249C30 + msgbox BattleFrontier_BattleDomeLobby_Text_NotEnoughValidMonsLv50, MSGBOX_DEFAULT + goto BattleFrontier_BattleDomeLobby_EventScript_EndCancelChallenge -BattleFrontier_BattleDomeLobby_EventScript_249C3D:: @ 8249C3D - msgbox BattleFrontier_BattleDomeLobby_Text_24A2AB, MSGBOX_DEFAULT - goto BattleFrontier_BattleDomeLobby_EventScript_249C6C +BattleFrontier_BattleDomeLobby_EventScript_NotEnoughValidMonsLvOpen:: @ 8249C3D + msgbox BattleFrontier_BattleDomeLobby_Text_NotEnoughValidMonsLvOpen, MSGBOX_DEFAULT + goto BattleFrontier_BattleDomeLobby_EventScript_EndCancelChallenge -BattleFrontier_BattleDomeLobby_EventScript_249C4A:: @ 8249C4A +BattleFrontier_BattleDomeLobby_EventScript_CancelChallengeSaveFailed:: @ 8249C4A frontier_set FRONTIER_DATA_CHALLENGE_STATUS, 0 - goto BattleFrontier_BattleDomeLobby_EventScript_249C64 + goto BattleFrontier_BattleDomeLobby_EventScript_CancelChallenge -BattleFrontier_BattleDomeLobby_EventScript_249C61:: @ 8249C61 +BattleFrontier_BattleDomeLobby_EventScript_LoadPartyCancelChallenge:: @ 8249C61 special LoadPlayerParty - -BattleFrontier_BattleDomeLobby_EventScript_249C64:: @ 8249C64 - msgbox BattleFrontier_BattleDomeLobby_Text_249F74, MSGBOX_DEFAULT - -BattleFrontier_BattleDomeLobby_EventScript_249C6C:: @ 8249C6C +BattleFrontier_BattleDomeLobby_EventScript_CancelChallenge:: @ 8249C64 + msgbox BattleFrontier_BattleDomeLobby_Text_HopeToSeeYouAgain, MSGBOX_DEFAULT +BattleFrontier_BattleDomeLobby_EventScript_EndCancelChallenge:: @ 8249C6C release end -BattleFrontier_BattleDomeLobby_EventScript_249C6E:: @ 8249C6E +BattleFrontier_BattleDomeLobby_EventScript_WalkToDoor:: @ 8249C6E compare VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_SINGLES - call_if_eq BattleFrontier_BattleDomeLobby_EventScript_249CDD + call_if_eq BattleFrontier_BattleDomeLobby_EventScript_SinglesAttendantWalkToDoor compare VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_DOUBLES - call_if_eq BattleFrontier_BattleDomeLobby_EventScript_249CE5 - applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleDomeLobby_Movement_249D45 + call_if_eq BattleFrontier_BattleDomeLobby_EventScript_DoublesAttendantWalkToDoor + applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleDomeLobby_Movement_WalkToDoor waitmovement 0 compare VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_SINGLES - call_if_eq BattleFrontier_BattleDomeLobby_EventScript_249D2D + call_if_eq BattleFrontier_BattleDomeLobby_EventScript_OpenSinglesDoor compare VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_DOUBLES - call_if_eq BattleFrontier_BattleDomeLobby_EventScript_249D33 + call_if_eq BattleFrontier_BattleDomeLobby_EventScript_OpenDoublesDoor waitdooranim compare VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_SINGLES - call_if_eq BattleFrontier_BattleDomeLobby_EventScript_249CED + call_if_eq BattleFrontier_BattleDomeLobby_EventScript_SinglesAttendantEnterDoor compare VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_DOUBLES - call_if_eq BattleFrontier_BattleDomeLobby_EventScript_249CF5 - applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleDomeLobby_Movement_249D4E + call_if_eq BattleFrontier_BattleDomeLobby_EventScript_DoublesAttendantEnterDoor + applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleDomeLobby_Movement_PlayerEnterDoor waitmovement 0 compare VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_SINGLES - call_if_eq BattleFrontier_BattleDomeLobby_EventScript_249D39 + call_if_eq BattleFrontier_BattleDomeLobby_EventScript_CloseSinglesDoor compare VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_DOUBLES - call_if_eq BattleFrontier_BattleDomeLobby_EventScript_249D3F + call_if_eq BattleFrontier_BattleDomeLobby_EventScript_CloseDoublesDoor waitdooranim return -BattleFrontier_BattleDomeLobby_EventScript_249CDD:: @ 8249CDD - applymovement 1, BattleFrontier_BattleDomeLobby_Movement_249D45 +BattleFrontier_BattleDomeLobby_EventScript_SinglesAttendantWalkToDoor:: @ 8249CDD + applymovement 1, BattleFrontier_BattleDomeLobby_Movement_WalkToDoor return -BattleFrontier_BattleDomeLobby_EventScript_249CE5:: @ 8249CE5 - applymovement 6, BattleFrontier_BattleDomeLobby_Movement_249D45 +BattleFrontier_BattleDomeLobby_EventScript_DoublesAttendantWalkToDoor:: @ 8249CE5 + applymovement 6, BattleFrontier_BattleDomeLobby_Movement_WalkToDoor return -BattleFrontier_BattleDomeLobby_EventScript_249CED:: @ 8249CED - applymovement 1, BattleFrontier_BattleDomeLobby_Movement_249D4B +BattleFrontier_BattleDomeLobby_EventScript_SinglesAttendantEnterDoor:: @ 8249CED + applymovement 1, BattleFrontier_BattleDomeLobby_Movement_AttendantEnterDoor return -BattleFrontier_BattleDomeLobby_EventScript_249CF5:: @ 8249CF5 - applymovement 6, BattleFrontier_BattleDomeLobby_Movement_249D4B +BattleFrontier_BattleDomeLobby_EventScript_DoublesAttendantEnterDoor:: @ 8249CF5 + applymovement 6, BattleFrontier_BattleDomeLobby_Movement_AttendantEnterDoor return -BattleFrontier_BattleDomeLobby_EventScript_249CFD:: @ 8249CFD - msgbox BattleFrontier_BattleDomeLobby_Text_249EB7, MSGBOX_DEFAULT +BattleFrontier_BattleDomeLobby_EventScript_WelcomeSingles:: @ 8249CFD + msgbox BattleFrontier_BattleDomeLobby_Text_WelcomeSingleBattle, MSGBOX_DEFAULT return -BattleFrontier_BattleDomeLobby_EventScript_249D06:: @ 8249D06 - msgbox BattleFrontier_BattleDomeLobby_Text_24A664, MSGBOX_DEFAULT +BattleFrontier_BattleDomeLobby_EventScript_WelcomeDoubles:: @ 8249D06 + msgbox BattleFrontier_BattleDomeLobby_Text_WelcomeDoubleBattle, MSGBOX_DEFAULT return -BattleFrontier_BattleDomeLobby_EventScript_249D0F:: @ 8249D0F - message BattleFrontier_BattleDomeLobby_Text_249F3A +BattleFrontier_BattleDomeLobby_EventScript_TakeSinglesChallenge:: @ 8249D0F + message BattleFrontier_BattleDomeLobby_Text_TakeSinglesChallenge return -BattleFrontier_BattleDomeLobby_EventScript_249D15:: @ 8249D15 - message BattleFrontier_BattleDomeLobby_Text_24A6E7 +BattleFrontier_BattleDomeLobby_EventScript_TakeDoublesChallenge:: @ 8249D15 + message BattleFrontier_BattleDomeLobby_Text_TakeDoublesChallenge return -BattleFrontier_BattleDomeLobby_EventScript_249D1B:: @ 8249D1B - msgbox BattleFrontier_BattleDomeLobby_Text_249F8E, MSGBOX_DEFAULT +BattleFrontier_BattleDomeLobby_EventScript_ExplainSinglesChallenge:: @ 8249D1B + msgbox BattleFrontier_BattleDomeLobby_Text_ExplainSinglesChallenge, MSGBOX_DEFAULT return -BattleFrontier_BattleDomeLobby_EventScript_249D24:: @ 8249D24 - msgbox BattleFrontier_BattleDomeLobby_Text_24A721, MSGBOX_DEFAULT +BattleFrontier_BattleDomeLobby_EventScript_ExplainDoublesChallenge:: @ 8249D24 + msgbox BattleFrontier_BattleDomeLobby_Text_ExplainDoublesChallenge, MSGBOX_DEFAULT return -BattleFrontier_BattleDomeLobby_EventScript_249D2D:: @ 8249D2D +BattleFrontier_BattleDomeLobby_EventScript_OpenSinglesDoor:: @ 8249D2D opendoor 5, 4 return -BattleFrontier_BattleDomeLobby_EventScript_249D33:: @ 8249D33 +BattleFrontier_BattleDomeLobby_EventScript_OpenDoublesDoor:: @ 8249D33 opendoor 17, 4 return -BattleFrontier_BattleDomeLobby_EventScript_249D39:: @ 8249D39 +BattleFrontier_BattleDomeLobby_EventScript_CloseSinglesDoor:: @ 8249D39 closedoor 5, 4 return -BattleFrontier_BattleDomeLobby_EventScript_249D3F:: @ 8249D3F +BattleFrontier_BattleDomeLobby_EventScript_CloseDoublesDoor:: @ 8249D3F closedoor 17, 4 return -BattleFrontier_BattleDomeLobby_Movement_249D45: @ 8249D45 +BattleFrontier_BattleDomeLobby_Movement_WalkToDoor: @ 8249D45 walk_up walk_up walk_up @@ -330,18 +325,18 @@ BattleFrontier_BattleDomeLobby_Movement_249D45: @ 8249D45 walk_up step_end -BattleFrontier_BattleDomeLobby_Movement_249D4B: @ 8249D4B +BattleFrontier_BattleDomeLobby_Movement_AttendantEnterDoor: @ 8249D4B walk_up set_invisible step_end -BattleFrontier_BattleDomeLobby_Movement_249D4E: @ 8249D4E +BattleFrontier_BattleDomeLobby_Movement_PlayerEnterDoor: @ 8249D4E walk_up walk_up set_invisible step_end -BattleFrontier_BattleDomeLobby_EventScript_249D52:: @ 8249D52 +BattleFrontier_BattleDomeLobby_EventScript_ShowSinglesResults:: @ 8249D52 lockall frontier_results FRONTIER_FACILITY_DOME, FRONTIER_MODE_SINGLES waitbuttonpress @@ -349,7 +344,7 @@ BattleFrontier_BattleDomeLobby_EventScript_249D52:: @ 8249D52 releaseall end -BattleFrontier_BattleDomeLobby_EventScript_249D6B:: @ 8249D6B +BattleFrontier_BattleDomeLobby_EventScript_ShowDoublesResults:: @ 8249D6B lockall frontier_results FRONTIER_FACILITY_DOME, FRONTIER_MODE_DOUBLES waitbuttonpress @@ -357,119 +352,121 @@ BattleFrontier_BattleDomeLobby_EventScript_249D6B:: @ 8249D6B releaseall end -BattleFrontier_BattleDomeLobby_EventScript_249D84:: @ 8249D84 - dome_get DOME_DATA_9 +BattleFrontier_BattleDomeLobby_EventScript_ShowLastTourneyTree:: @ 8249D84 + dome_get DOME_DATA_LAST_TOURNEY_TYPE compare VAR_RESULT, 0 - call_if_eq BattleFrontier_BattleDomeLobby_EventScript_249DC9 + call_if_eq BattleFrontier_BattleDomeLobby_EventScript_LastTourneyResultsSinglesLv50 compare VAR_RESULT, 1 - call_if_eq BattleFrontier_BattleDomeLobby_EventScript_249DD2 + call_if_eq BattleFrontier_BattleDomeLobby_EventScript_LastTourneyResultsDoublesLv50 compare VAR_RESULT, 2 - call_if_eq BattleFrontier_BattleDomeLobby_EventScript_249DDB + call_if_eq BattleFrontier_BattleDomeLobby_EventScript_LastTourneyResultsSinglesLvOpen compare VAR_RESULT, 3 - call_if_eq BattleFrontier_BattleDomeLobby_EventScript_249DE4 + call_if_eq BattleFrontier_BattleDomeLobby_EventScript_LastTourneyResultsDoublesLvOpen fadescreen FADE_TO_BLACK dome_showresultstree waitstate end -BattleFrontier_BattleDomeLobby_EventScript_249DC9:: @ 8249DC9 - msgbox BattleFrontier_BattleDomeLobby_Text_24A966, MSGBOX_SIGN +BattleFrontier_BattleDomeLobby_EventScript_LastTourneyResultsSinglesLv50:: @ 8249DC9 + msgbox BattleFrontier_BattleDomeLobby_Text_LastTourneyResultsSinglesLv50, MSGBOX_SIGN return -BattleFrontier_BattleDomeLobby_EventScript_249DD2:: @ 8249DD2 - msgbox BattleFrontier_BattleDomeLobby_Text_24A9A9, MSGBOX_SIGN +BattleFrontier_BattleDomeLobby_EventScript_LastTourneyResultsDoublesLv50:: @ 8249DD2 + msgbox BattleFrontier_BattleDomeLobby_Text_LastTourneyResultsDoublesLv50, MSGBOX_SIGN return -BattleFrontier_BattleDomeLobby_EventScript_249DDB:: @ 8249DDB - msgbox BattleFrontier_BattleDomeLobby_Text_24A9EC, MSGBOX_SIGN +BattleFrontier_BattleDomeLobby_EventScript_LastTourneyResultsSinglesLvOpen:: @ 8249DDB + msgbox BattleFrontier_BattleDomeLobby_Text_LastTourneyResultsSinglesLvOpen, MSGBOX_SIGN return -BattleFrontier_BattleDomeLobby_EventScript_249DE4:: @ 8249DE4 - msgbox BattleFrontier_BattleDomeLobby_Text_24AA31, MSGBOX_SIGN +BattleFrontier_BattleDomeLobby_EventScript_LastTourneyResultsDoublesLvOpen:: @ 8249DE4 + msgbox BattleFrontier_BattleDomeLobby_Text_LastTourneyResultsDoublesLvOpen, MSGBOX_SIGN return -BattleFrontier_BattleDomeLobby_EventScript_249DED:: @ 8249DED +BattleFrontier_BattleDomeLobby_EventScript_Maniac:: @ 8249DED dome_getwinnersname - msgbox BattleFrontier_BattleDomeLobby_Text_24AA76, MSGBOX_NPC + msgbox BattleFrontier_BattleDomeLobby_Text_LastWinnerWasTough, MSGBOX_NPC end -BattleFrontier_BattleDomeLobby_EventScript_249DFE:: @ 8249DFE - msgbox BattleFrontier_BattleDomeLobby_Text_24AB94, MSGBOX_NPC +BattleFrontier_BattleDomeLobby_EventScript_Lass:: @ 8249DFE + msgbox BattleFrontier_BattleDomeLobby_Text_WinnersGainReputation, MSGBOX_NPC end -BattleFrontier_BattleDomeLobby_EventScript_249E07:: @ 8249E07 - msgbox BattleFrontier_BattleDomeLobby_Text_24AC76, MSGBOX_NPC +BattleFrontier_BattleDomeLobby_EventScript_FatMan:: @ 8249E07 + msgbox BattleFrontier_BattleDomeLobby_Text_TrashedInFirstRound, MSGBOX_NPC end -BattleFrontier_BattleDomeLobby_EventScript_249E10:: @ 8249E10 - msgbox BattleFrontier_BattleDomeLobby_Text_24ACD3, MSGBOX_NPC +BattleFrontier_BattleDomeLobby_EventScript_Man:: @ 8249E10 + msgbox BattleFrontier_BattleDomeLobby_Text_NeedToCheckOpponentCarefully, MSGBOX_NPC end @ A few OutsideWest event scripts are inserted here instead, two of which are unused BattleFrontier_OutsideWest_EventScript_Man3:: @ 8249E19 - msgbox BattleFrontier_OutsideWest_Text_24AB06, MSGBOX_NPC + msgbox BattleFrontier_OutsideWest_Text_LongDreamedAboutBattleFrontier, MSGBOX_NPC end +@ Unused BattleFrontier_OutsideWest_EventScript_BattleDomeSign2:: @ 8249E22 msgbox BattleFrontier_OutsideWest_Text_BattleDomeSign2, MSGBOX_NPC end +@ Unused BattleFrontier_OutsideWest_EventScript_UnderConstructionSign:: @ 8249E2B msgbox BattleFrontier_OutsideWest_Text_QuestionMarkUnderConstruction, MSGBOX_NPC end -BattleFrontier_BattleDomeLobby_EventScript_249E34:: @ 8249E34 +BattleFrontier_BattleDomeLobby_EventScript_RulesBoard:: @ 8249E34 lockall - msgbox BattleFrontier_BattleDomeLobby_Text_24AE63, MSGBOX_DEFAULT - goto BattleFrontier_BattleDomeLobby_EventScript_249E43 + msgbox BattleFrontier_BattleDomeLobby_Text_RulesAreListed, MSGBOX_DEFAULT + goto BattleFrontier_BattleDomeLobby_EventScript_ReadRulesBoard end -BattleFrontier_BattleDomeLobby_EventScript_249E43:: @ 8249E43 - message BattleFrontier_BattleDomeLobby_Text_24AE8B +BattleFrontier_BattleDomeLobby_EventScript_ReadRulesBoard:: @ 8249E43 + message BattleFrontier_BattleDomeLobby_Text_ReadWhichHeading waitmessage multichoice 17, 4, MULTI_BATTLE_DOME_RULES, 0 switch VAR_RESULT - case 0, BattleFrontier_BattleDomeLobby_EventScript_249E8B - case 1, BattleFrontier_BattleDomeLobby_EventScript_249E99 - case 2, BattleFrontier_BattleDomeLobby_EventScript_249EA7 - case 3, BattleFrontier_BattleDomeLobby_EventScript_249EB5 - case MULTI_B_PRESSED, BattleFrontier_BattleDomeLobby_EventScript_249EB5 + case 0, BattleFrontier_BattleDomeLobby_EventScript_RulesMatchup + case 1, BattleFrontier_BattleDomeLobby_EventScript_RulesTourneyTree + case 2, BattleFrontier_BattleDomeLobby_EventScript_RulesDoubleKO + case 3, BattleFrontier_BattleDomeLobby_EventScript_ExitRules + case MULTI_B_PRESSED, BattleFrontier_BattleDomeLobby_EventScript_ExitRules end -BattleFrontier_BattleDomeLobby_EventScript_249E8B:: @ 8249E8B - msgbox BattleFrontier_BattleDomeLobby_Text_24AEAE, MSGBOX_DEFAULT - goto BattleFrontier_BattleDomeLobby_EventScript_249E43 +BattleFrontier_BattleDomeLobby_EventScript_RulesMatchup:: @ 8249E8B + msgbox BattleFrontier_BattleDomeLobby_Text_ExplainMatchupRules, MSGBOX_DEFAULT + goto BattleFrontier_BattleDomeLobby_EventScript_ReadRulesBoard end -BattleFrontier_BattleDomeLobby_EventScript_249E99:: @ 8249E99 - msgbox BattleFrontier_BattleDomeLobby_Text_24AF4C, MSGBOX_DEFAULT - goto BattleFrontier_BattleDomeLobby_EventScript_249E43 +BattleFrontier_BattleDomeLobby_EventScript_RulesTourneyTree:: @ 8249E99 + msgbox BattleFrontier_BattleDomeLobby_Text_ExplainTourneyTree, MSGBOX_DEFAULT + goto BattleFrontier_BattleDomeLobby_EventScript_ReadRulesBoard end -BattleFrontier_BattleDomeLobby_EventScript_249EA7:: @ 8249EA7 - msgbox BattleFrontier_BattleDomeLobby_Text_24B073, MSGBOX_DEFAULT - goto BattleFrontier_BattleDomeLobby_EventScript_249E43 +BattleFrontier_BattleDomeLobby_EventScript_RulesDoubleKO:: @ 8249EA7 + msgbox BattleFrontier_BattleDomeLobby_Text_ExplainDoubleKORules, MSGBOX_DEFAULT + goto BattleFrontier_BattleDomeLobby_EventScript_ReadRulesBoard end -BattleFrontier_BattleDomeLobby_EventScript_249EB5:: @ 8249EB5 +BattleFrontier_BattleDomeLobby_EventScript_ExitRules:: @ 8249EB5 releaseall end -BattleFrontier_BattleDomeLobby_Text_249EB7: @ 8249EB7 +BattleFrontier_BattleDomeLobby_Text_WelcomeSingleBattle: @ 8249EB7 .string "Where the strategies of TRAINERS\n" .string "are put to the test!\p" .string "Welcome to the BATTLE DOME!\p" .string "I am your guide to the SINGLE BATTLE\n" .string "Tournament.$" -BattleFrontier_BattleDomeLobby_Text_249F3A: @ 8249F3A +BattleFrontier_BattleDomeLobby_Text_TakeSinglesChallenge: @ 8249F3A .string "Would you like to challenge\n" .string "the SINGLE BATTLE Tournament?$" -BattleFrontier_BattleDomeLobby_Text_249F74: @ 8249F74 +BattleFrontier_BattleDomeLobby_Text_HopeToSeeYouAgain: @ 8249F74 .string "We hope to see you again.$" -BattleFrontier_BattleDomeLobby_Text_249F8E: @ 8249F8E +BattleFrontier_BattleDomeLobby_Text_ExplainSinglesChallenge: @ 8249F8E .string "The SINGLE BATTLE Tournament\n" .string "is exactly as the name suggests--\l" .string "a tournament of SINGLE BATTLES.\p" @@ -490,20 +487,20 @@ BattleFrontier_BattleDomeLobby_Text_249F8E: @ 8249F8E .string "If you don't save before interrupting,\n" .string "you will be disqualified.$" -BattleFrontier_BattleDomeLobby_Text_24A1C6: @ 824A1C6 +BattleFrontier_BattleDomeLobby_Text_OkayToSaveBeforeChallenge: @ 824A1C6 .string "Before I show you to the BATTLE DOME,\n" .string "I must save the data. Is that okay?$" -BattleFrontier_BattleDomeLobby_Text_24A210: @ 824A210 +BattleFrontier_BattleDomeLobby_Text_WhichLevelMode: @ 824A210 .string "The tournament offers two levels\n" .string "of challenge, Level 50 and Open Level.\l" .string "Which is your choice?$" -BattleFrontier_BattleDomeLobby_Text_24A26E: @ 824A26E +BattleFrontier_BattleDomeLobby_Text_SelectThreeMons: @ 824A26E .string "Now select the three POKéMON that\n" .string "you wish to enter, please.$" -BattleFrontier_BattleDomeLobby_Text_24A2AB: @ 824A2AB +BattleFrontier_BattleDomeLobby_Text_NotEnoughValidMonsLvOpen: @ 824A2AB .string "Excuse me!\p" .string "You don't have three eligible POKéMON.\p" .string "Also, the POKéMON must be holding\n" @@ -511,7 +508,7 @@ BattleFrontier_BattleDomeLobby_Text_24A2AB: @ 824A2AB .string "EGGS{STR_VAR_1} ineligible.\p" .string "Please come see me when you are ready.$" -BattleFrontier_BattleDomeLobby_Text_24A353: @ 824A353 +BattleFrontier_BattleDomeLobby_Text_NotEnoughValidMonsLv50: @ 824A353 .string "Excuse me!\p" .string "You don't have three eligible POKéMON.\p" .string "You must have three different POKéMON\n" @@ -521,25 +518,27 @@ BattleFrontier_BattleDomeLobby_Text_24A353: @ 824A353 .string "EGGS{STR_VAR_1} ineligible.\p" .string "Please come see me when you are ready.$" -BattleFrontier_BattleDomeLobby_Text_24A437: @ 824A437 +BattleFrontier_BattleDomeLobby_Text_ShowYouToBattleDome: @ 824A437 .string "I will now show you to\n" .string "the BATTLE DOME.$" -BattleFrontier_BattleDomeLobby_Text_24A45F: @ 824A45F +BattleFrontier_BattleDomeLobby_Text_DidntSaveBeforeQuitting: @ 824A45F .string "Excuse me!\p" .string "You didn't save before you quit your\n" .string "challenge last time.\p" .string "Because of that, your challenge so far\n" .string "has been disqualified. Sorry!$" -BattleFrontier_BattleDomeLobby_Text_24A4E9: @ 824A4E9 +BattleFrontier_BattleDomeLobby_Text_CongratsForWinningTourney: @ 824A4E9 .string "Congratulations for winning\n" .string "your Battle Tournament!$" -BattleFrontier_BattleDomeLobby_Text_24A51D: @ 824A51D +@ Unused +BattleFrontier_BattleDomeLobby_Text_HereIsYourPrize: @ 824A51D .string "Here is your prize for your Battle\n" .string "Tournament victory.$" +@ Used by Verdanturf Tent BattleFrontier_BattleDomeLobby_Text_ReceivedPrize: @ 824A554 .string "{PLAYER} received the prize\n" .string "{STR_VAR_1}.$" @@ -550,32 +549,32 @@ BattleFrontier_BattleDomeLobby_Text_BagFullMakeRoom: @ 824A56E .string "Please make room in your BAG, then come\n" .string "see me.$" -BattleFrontier_BattleDomeLobby_Text_24A5BF: @ 824A5BF +BattleFrontier_BattleDomeLobby_Text_ThankYouForPlaying: @ 824A5BF .string "Thank you for playing!$" -BattleFrontier_BattleDomeLobby_Text_24A5D6: @ 824A5D6 +BattleFrontier_BattleDomeLobby_Text_RecordWillBeSaved: @ 824A5D6 .string "Your record will be saved.\n" .string "Please wait.$" -BattleFrontier_BattleDomeLobby_Text_24A5FE: @ 824A5FE +BattleFrontier_BattleDomeLobby_Text_WeveBeenWaitingForYou: @ 824A5FE .string "We've been waiting for you!$" -BattleFrontier_BattleDomeLobby_Text_24A61A: @ 824A61A +BattleFrontier_BattleDomeLobby_Text_OkayToSaveBeforeChallenge2: @ 824A61A .string "Before I show you to the BATTLE DOME,\n" .string "I must save the data. Is that okay?$" -BattleFrontier_BattleDomeLobby_Text_24A664: @ 824A664 +BattleFrontier_BattleDomeLobby_Text_WelcomeDoubleBattle: @ 824A664 .string "Where the strategies of TRAINERS\n" .string "are put to the test!\p" .string "Welcome to the BATTLE DOME!\p" .string "I am your guide to the DOUBLE BATTLE\n" .string "Tournament.$" -BattleFrontier_BattleDomeLobby_Text_24A6E7: @ 824A6E7 +BattleFrontier_BattleDomeLobby_Text_TakeDoublesChallenge: @ 824A6E7 .string "Would you like to challenge\n" .string "the DOUBLE BATTLE Tournament?$" -BattleFrontier_BattleDomeLobby_Text_24A721: @ 824A721 +BattleFrontier_BattleDomeLobby_Text_ExplainDoublesChallenge: @ 824A721 .string "The DOUBLE BATTLE Tournament\n" .string "is exactly as the name suggests--\l" .string "a tournament of DOUBLE BATTLES.\p" @@ -596,23 +595,23 @@ BattleFrontier_BattleDomeLobby_Text_24A721: @ 824A721 .string "If you don't save before interrupting,\n" .string "you will be disqualified.$" -BattleFrontier_BattleDomeLobby_Text_24A966: @ 824A966 +BattleFrontier_BattleDomeLobby_Text_LastTourneyResultsSinglesLv50: @ 824A966 .string "They're the results of the last\n" .string "Level 50 SINGLE BATTLE Tournament.$" -BattleFrontier_BattleDomeLobby_Text_24A9A9: @ 824A9A9 +BattleFrontier_BattleDomeLobby_Text_LastTourneyResultsDoublesLv50: @ 824A9A9 .string "They're the results of the last\n" .string "Level 50 DOUBLE BATTLE Tournament.$" -BattleFrontier_BattleDomeLobby_Text_24A9EC: @ 824A9EC +BattleFrontier_BattleDomeLobby_Text_LastTourneyResultsSinglesLvOpen: @ 824A9EC .string "They're the results of the last\n" .string "Open Level SINGLE BATTLE Tournament.$" -BattleFrontier_BattleDomeLobby_Text_24AA31: @ 824AA31 +BattleFrontier_BattleDomeLobby_Text_LastTourneyResultsDoublesLvOpen: @ 824AA31 .string "They're the results of the last\n" .string "Open Level DOUBLE BATTLE Tournament.$" -BattleFrontier_BattleDomeLobby_Text_24AA76: @ 824AA76 +BattleFrontier_BattleDomeLobby_Text_LastWinnerWasTough: @ 824AA76 .string "Did you see it?\n" .string "The last Battle Tournament?\p" .string "The winner, {STR_VAR_1}, was seriously\n" @@ -620,19 +619,21 @@ BattleFrontier_BattleDomeLobby_Text_24AA76: @ 824AA76 .string "You should check out the results\n" .string "on the monitor beside the PC.$" -BattleFrontier_OutsideWest_Text_24AB06: @ 824AB06 +BattleFrontier_OutsideWest_Text_LongDreamedAboutBattleFrontier: @ 824AB06 .string "The BATTLE FRONTIER…\n" .string "I've long dreamed about a place like it.$" +@ Functionally unused BattleFrontier_OutsideWest_Text_BattleDomeSign2: @ 824AB44 .string "The BATTLE DOME\n" .string "Become the Unbeatable Superstar!$" +@ Functionally unused BattleFrontier_OutsideWest_Text_QuestionMarkUnderConstruction: @ 824AB75 .string "The ??????\n" .string "Under Construction!$" -BattleFrontier_BattleDomeLobby_Text_24AB94: @ 824AB94 +BattleFrontier_BattleDomeLobby_Text_WinnersGainReputation: @ 824AB94 .string "When a TRAINER chains tournament\n" .string "wins at the BATTLE DOME, he or she\l" .string "gains a reputation as a star.\p" @@ -641,48 +642,48 @@ BattleFrontier_BattleDomeLobby_Text_24AB94: @ 824AB94 .string "A true superstar is a TRAINER who\n" .string "can keep winning tournaments.$" -BattleFrontier_BattleDomeLobby_Text_24AC76: @ 824AC76 +BattleFrontier_BattleDomeLobby_Text_TrashedInFirstRound: @ 824AC76 .string "I ran into one of the tournament\n" .string "favorites in the very first round.\p" .string "Of course I got trashed…$" -BattleFrontier_BattleDomeLobby_Text_24ACD3: @ 824ACD3 +BattleFrontier_BattleDomeLobby_Text_NeedToCheckOpponentCarefully: @ 824ACD3 .string "I would've won if I'd kept this POKéMON\n" .string "held in reserve.\p" .string "You need to check your opponent's\n" .string "POKéMON carefully before choosing\l" .string "your battling POKéMON.$" -BattleFrontier_BattleDomeLobby_Text_24AD67: @ 824AD67 +BattleFrontier_BattleDomeLobby_Text_CongratsDefeatedTucker: @ 824AD67 .string "Congratulations!\p" .string "You defeated the DOME ACE and won\n" .string "the Battle Tournament!$" -BattleFrontier_BattleDomeLobby_Text_24ADB1: @ 824ADB1 +BattleFrontier_BattleDomeLobby_Text_AwardTheseBattlePoints: @ 824ADB1 .string "In recognition of your strategy--\n" .string "a thing of beauty it was, too--\l" .string "we award you these Battle Point(s)!$" -BattleFrontier_BattleDomeLobby_Text_24AE17: @ 824AE17 +BattleFrontier_BattleDomeLobby_Text_RecordLastMatch: @ 824AE17 .string "Would you like to record your\n" .string "last BATTLE DOME match on your\l" .string "FRONTIER PASS?$" -BattleFrontier_BattleDomeLobby_Text_24AE63: @ 824AE63 +BattleFrontier_BattleDomeLobby_Text_RulesAreListed: @ 824AE63 .string "The Battle Tournament rules\n" .string "are listed.$" -BattleFrontier_BattleDomeLobby_Text_24AE8B: @ 824AE8B +BattleFrontier_BattleDomeLobby_Text_ReadWhichHeading: @ 824AE8B .string "Which heading do you want to read?$" -BattleFrontier_BattleDomeLobby_Text_24AEAE: @ 824AEAE +BattleFrontier_BattleDomeLobby_Text_ExplainMatchupRules: @ 824AEAE .string "The tournament matchups are drawn up\n" .string "based on the toughness of POKéMON\l" .string "held by TRAINERS.\p" .string "The matchups avoid having tough\n" .string "TRAINERS face each other right away.$" -BattleFrontier_BattleDomeLobby_Text_24AF4C: @ 824AF4C +BattleFrontier_BattleDomeLobby_Text_ExplainTourneyTree: @ 824AF4C .string "The tournament chart, or as we call it,\n" .string "the “Tree,” is available for viewing\l" .string "in the Waiting Room from any guide.\p" @@ -693,7 +694,7 @@ BattleFrontier_BattleDomeLobby_Text_24AF4C: @ 824AF4C .string "by TRAINERS, and the battle styles of\l" .string "TRAINERS.$" -BattleFrontier_BattleDomeLobby_Text_24B073: @ 824B073 +BattleFrontier_BattleDomeLobby_Text_ExplainDoubleKORules: @ 824B073 .string "If battling POKéMON faint at the same\n" .string "time--a double KO--in a tournament\l" .string "match, the REFEREES will review\l" diff --git a/data/maps/BattleFrontier_BattleDomePreBattleRoom/scripts.inc b/data/maps/BattleFrontier_BattleDomePreBattleRoom/scripts.inc index c554922d69..55a5fb48aa 100644 --- a/data/maps/BattleFrontier_BattleDomePreBattleRoom/scripts.inc +++ b/data/maps/BattleFrontier_BattleDomePreBattleRoom/scripts.inc @@ -1,92 +1,91 @@ BattleFrontier_BattleDomePreBattleRoom_MapScripts:: @ 824B1F9 - map_script MAP_SCRIPT_ON_FRAME_TABLE, BattleFrontier_BattleDomePreBattleRoom_MapScript2_24B218 - map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, BattleFrontier_BattleDomePreBattleRoom_MapScript2_24B204 + map_script MAP_SCRIPT_ON_FRAME_TABLE, BattleFrontier_BattleDomePreBattleRoom_OnFrame + map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, BattleFrontier_BattleDomePreBattleRoom_OnWarp .byte 0 -BattleFrontier_BattleDomePreBattleRoom_MapScript2_24B204: @ 824B204 - map_script_2 VAR_TEMP_1, 0, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B20E +BattleFrontier_BattleDomePreBattleRoom_OnWarp: @ 824B204 + map_script_2 VAR_TEMP_1, 0, BattleFrontier_BattleDomePreBattleRoom_EventScript_TurnPlayerNorth .2byte 0 -BattleFrontier_BattleDomePreBattleRoom_EventScript_24B20E:: @ 824B20E +BattleFrontier_BattleDomePreBattleRoom_EventScript_TurnPlayerNorth:: @ 824B20E setvar VAR_TEMP_1, 1 turnobject EVENT_OBJ_ID_PLAYER, DIR_NORTH end -BattleFrontier_BattleDomePreBattleRoom_MapScript2_24B218: @ 824B218 - map_script_2 VAR_TEMP_0, 0, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B222 +BattleFrontier_BattleDomePreBattleRoom_OnFrame: @ 824B218 + map_script_2 VAR_TEMP_0, 0, BattleFrontier_BattleDomePreBattleRoom_EventScript_EnterRoom .2byte 0 -BattleFrontier_BattleDomePreBattleRoom_EventScript_24B222:: @ 824B222 +BattleFrontier_BattleDomePreBattleRoom_EventScript_EnterRoom:: @ 824B222 compare VAR_0x8006, 1 - goto_if_eq BattleFrontier_BattleDomePreBattleRoom_EventScript_24B5C7 + goto_if_eq BattleFrontier_BattleDomePreBattleRoom_EventScript_ReturnFromBattle frontier_set FRONTIER_DATA_6, 1 setvar VAR_TEMP_0, 1 - applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleDomePreBattleRoom_Movement_24B652 + applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleDomePreBattleRoom_Movement_PlayerEnter waitmovement 0 lockall - -BattleFrontier_BattleDomePreBattleRoom_EventScript_24B24F:: @ 824B24F - call BattleFrontier_BattleDomePreBattleRoom_EventScript_24B4FB +BattleFrontier_BattleDomePreBattleRoom_EventScript_AskReadyForNextRound:: @ 824B24F + call BattleFrontier_BattleDomePreBattleRoom_EventScript_ReadyForNextRoundMessage waitmessage - switch VAR_RESULT + switch VAR_RESULT @ No case? call BattleFrontier_BattleDomePreBattleRoom_EventScript_23E8E0 - compare VAR_RESULT, 1 - goto_if_eq BattleFrontier_BattleDomePreBattleRoom_EventScript_24B2C1 + compare VAR_RESULT, TRUE + goto_if_eq BattleFrontier_BattleDomePreBattleRoom_EventScript_AskReadyForNextRoundNoRecord multichoice 16, 0, MULTI_TOURNEY_WITH_RECORD, 1 switch VAR_RESULT - case 0, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B3DD - case 1, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B3F5 - case 2, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B46D - case 3, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B30D - case 4, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B349 - case 5, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B377 - case MULTI_B_PRESSED, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B24F + case 0, BattleFrontier_BattleDomePreBattleRoom_EventScript_ShowOpponentInfo + case 1, BattleFrontier_BattleDomePreBattleRoom_EventScript_ShowTourneyTree + case 2, BattleFrontier_BattleDomePreBattleRoom_EventScript_ContinueChallenge + case 3, BattleFrontier_BattleDomePreBattleRoom_EventScript_AskRecordBattle + case 4, BattleFrontier_BattleDomePreBattleRoom_EventScript_AskPauseChallenge + case 5, BattleFrontier_BattleDomePreBattleRoom_EventScript_AskRetireChallenge + case MULTI_B_PRESSED, BattleFrontier_BattleDomePreBattleRoom_EventScript_AskReadyForNextRound -BattleFrontier_BattleDomePreBattleRoom_EventScript_24B2C1:: @ 824B2C1 +BattleFrontier_BattleDomePreBattleRoom_EventScript_AskReadyForNextRoundNoRecord:: @ 824B2C1 multichoice 16, 2, MULTI_TOURNEY_NO_RECORD, 1 switch VAR_RESULT - case 0, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B3DD - case 1, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B3F5 - case 2, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B46D - case 3, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B349 - case 4, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B377 - case MULTI_B_PRESSED, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B24F + case 0, BattleFrontier_BattleDomePreBattleRoom_EventScript_ShowOpponentInfo + case 1, BattleFrontier_BattleDomePreBattleRoom_EventScript_ShowTourneyTree + case 2, BattleFrontier_BattleDomePreBattleRoom_EventScript_ContinueChallenge + case 3, BattleFrontier_BattleDomePreBattleRoom_EventScript_AskPauseChallenge + case 4, BattleFrontier_BattleDomePreBattleRoom_EventScript_AskRetireChallenge + case MULTI_B_PRESSED, BattleFrontier_BattleDomePreBattleRoom_EventScript_AskReadyForNextRound -BattleFrontier_BattleDomePreBattleRoom_EventScript_24B30D:: @ 824B30D - message BattleFrontier_BattleDomePreBattleRoom_Text_24BAF7 +BattleFrontier_BattleDomePreBattleRoom_EventScript_AskRecordBattle:: @ 824B30D + message BattleFrontier_BattleDomePreBattleRoom_Text_RecordLastMatch waitmessage multichoicedefault 20, 8, MULTI_YESNO, 1, 0 switch VAR_RESULT - case 1, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B24F - case 0, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B33F - case MULTI_B_PRESSED, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B24F + case 1, BattleFrontier_BattleDomePreBattleRoom_EventScript_AskReadyForNextRound + case 0, BattleFrontier_BattleDomePreBattleRoom_EventScript_RecordBattle + case MULTI_B_PRESSED, BattleFrontier_BattleDomePreBattleRoom_EventScript_AskReadyForNextRound -BattleFrontier_BattleDomePreBattleRoom_EventScript_24B33F:: @ 824B33F +BattleFrontier_BattleDomePreBattleRoom_EventScript_RecordBattle:: @ 824B33F call BattleFrontier_EventScript_SaveBattle - goto BattleFrontier_BattleDomePreBattleRoom_EventScript_24B24F + goto BattleFrontier_BattleDomePreBattleRoom_EventScript_AskReadyForNextRound -BattleFrontier_BattleDomePreBattleRoom_EventScript_24B349:: @ 824B349 - msgbox BattleFrontier_BattleDomePreBattleRoom_Text_24BA69, MSGBOX_YESNO +BattleFrontier_BattleDomePreBattleRoom_EventScript_AskPauseChallenge:: @ 824B349 + msgbox BattleFrontier_BattleDomePreBattleRoom_Text_SaveAndQuitGame, MSGBOX_YESNO switch VAR_RESULT - case NO, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B24F - case YES, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B3BB - case MULTI_B_PRESSED, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B24F + case NO, BattleFrontier_BattleDomePreBattleRoom_EventScript_AskReadyForNextRound + case YES, BattleFrontier_BattleDomePreBattleRoom_EventScript_PauseChallenge + case MULTI_B_PRESSED, BattleFrontier_BattleDomePreBattleRoom_EventScript_AskReadyForNextRound -BattleFrontier_BattleDomePreBattleRoom_EventScript_24B377:: @ 824B377 - message BattleFrontier_BattleDomePreBattleRoom_Text_24BA93 +BattleFrontier_BattleDomePreBattleRoom_EventScript_AskRetireChallenge:: @ 824B377 + message BattleFrontier_BattleDomePreBattleRoom_Text_RetireYourChallenge waitmessage multichoicedefault 20, 8, MULTI_YESNO, 1, 0 switch VAR_RESULT - case 1, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B24F - case 0, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B3A9 - case MULTI_B_PRESSED, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B24F + case 1, BattleFrontier_BattleDomePreBattleRoom_EventScript_AskReadyForNextRound + case 0, BattleFrontier_BattleDomePreBattleRoom_EventScript_RetireChallenge + case MULTI_B_PRESSED, BattleFrontier_BattleDomePreBattleRoom_EventScript_AskReadyForNextRound -BattleFrontier_BattleDomePreBattleRoom_EventScript_24B3A9:: @ 824B3A9 - dome_resolvewinners 9 - goto BattleFrontier_BattleDomePreBattleRoom_EventScript_24BE9A +BattleFrontier_BattleDomePreBattleRoom_EventScript_RetireChallenge:: @ 824B3A9 + dome_resolvewinners DOME_PLAYER_RETIRED + goto BattleFrontier_BattleDomeBattleRoom_EventScript_WarpToLobbyLost -BattleFrontier_BattleDomePreBattleRoom_EventScript_24B3BB:: @ 824B3BB - message BattleFrontier_BattleDomePreBattleRoom_Text_24BAD3 +BattleFrontier_BattleDomePreBattleRoom_EventScript_PauseChallenge:: @ 824B3BB + message BattleFrontier_BattleDomePreBattleRoom_Text_SavingDataPleaseWait waitmessage dome_save CHALLENGE_STATUS_PAUSED playse SE_SAVE @@ -95,70 +94,70 @@ BattleFrontier_BattleDomePreBattleRoom_EventScript_24B3BB:: @ 824B3BB frontier_reset end -BattleFrontier_BattleDomePreBattleRoom_EventScript_24B3DD:: @ 824B3DD - msgbox BattleFrontier_BattleDomePreBattleRoom_Text_24B9B5, MSGBOX_DEFAULT +BattleFrontier_BattleDomePreBattleRoom_EventScript_ShowOpponentInfo:: @ 824B3DD + msgbox BattleFrontier_BattleDomePreBattleRoom_Text_PlayersNextOpponentIsTrainer, MSGBOX_DEFAULT fadescreen FADE_TO_BLACK dome_showopponentinfo waitstate - goto BattleFrontier_BattleDomePreBattleRoom_EventScript_24B24F + goto BattleFrontier_BattleDomePreBattleRoom_EventScript_AskReadyForNextRound -BattleFrontier_BattleDomePreBattleRoom_EventScript_24B3F5:: @ 824B3F5 - call BattleFrontier_BattleDomePreBattleRoom_EventScript_24B40A +BattleFrontier_BattleDomePreBattleRoom_EventScript_ShowTourneyTree:: @ 824B3F5 + call BattleFrontier_BattleDomePreBattleRoom_EventScript_ShowRoundMessage fadescreen FADE_TO_BLACK dome_showtourneytree waitstate - goto BattleFrontier_BattleDomePreBattleRoom_EventScript_24B24F + goto BattleFrontier_BattleDomePreBattleRoom_EventScript_AskReadyForNextRound -BattleFrontier_BattleDomePreBattleRoom_EventScript_24B40A:: @ 824B40A +BattleFrontier_BattleDomePreBattleRoom_EventScript_ShowRoundMessage:: @ 824B40A frontier_get FRONTIER_DATA_BATTLE_NUM switch VAR_RESULT - case 0, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B449 - case 1, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B452 - case 2, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B45B - case 3, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B464 + case DOME_ROUND1, BattleFrontier_BattleDomePreBattleRoom_EventScript_TourneyInRound1 + case DOME_ROUND2, BattleFrontier_BattleDomePreBattleRoom_EventScript_TourneyInRound2 + case DOME_SEMIFINAL, BattleFrontier_BattleDomePreBattleRoom_EventScript_TourneyInSemifinals + case DOME_FINAL, BattleFrontier_BattleDomePreBattleRoom_EventScript_TourneyInFinals return -BattleFrontier_BattleDomePreBattleRoom_EventScript_24B449:: @ 824B449 - msgbox BattleFrontier_BattleDomePreBattleRoom_Text_24B9D9, MSGBOX_DEFAULT +BattleFrontier_BattleDomePreBattleRoom_EventScript_TourneyInRound1:: @ 824B449 + msgbox BattleFrontier_BattleDomePreBattleRoom_Text_TourneyInRound1, MSGBOX_DEFAULT return -BattleFrontier_BattleDomePreBattleRoom_EventScript_24B452:: @ 824B452 - msgbox BattleFrontier_BattleDomePreBattleRoom_Text_24B9FD, MSGBOX_DEFAULT +BattleFrontier_BattleDomePreBattleRoom_EventScript_TourneyInRound2:: @ 824B452 + msgbox BattleFrontier_BattleDomePreBattleRoom_Text_TourneyInRound2, MSGBOX_DEFAULT return -BattleFrontier_BattleDomePreBattleRoom_EventScript_24B45B:: @ 824B45B - msgbox BattleFrontier_BattleDomePreBattleRoom_Text_24BA21, MSGBOX_DEFAULT +BattleFrontier_BattleDomePreBattleRoom_EventScript_TourneyInSemifinals:: @ 824B45B + msgbox BattleFrontier_BattleDomePreBattleRoom_Text_TourneyInSemifinals, MSGBOX_DEFAULT return -BattleFrontier_BattleDomePreBattleRoom_EventScript_24B464:: @ 824B464 - msgbox BattleFrontier_BattleDomePreBattleRoom_Text_24BA46, MSGBOX_DEFAULT +BattleFrontier_BattleDomePreBattleRoom_EventScript_TourneyInFinals:: @ 824B464 + msgbox BattleFrontier_BattleDomePreBattleRoom_Text_TourneyInFinals, MSGBOX_DEFAULT return -BattleFrontier_BattleDomePreBattleRoom_EventScript_24B46D:: @ 824B46D - message BattleFrontier_BattleDomePreBattleRoom_Text_24B70C +BattleFrontier_BattleDomePreBattleRoom_EventScript_ContinueChallenge:: @ 824B46D + message BattleFrontier_BattleDomePreBattleRoom_Text_ChooseTwoMons waitmessage waitbuttonpress fadescreen FADE_TO_BLACK call BattleFrontier_EventScript_GetLvlMode copyvar VAR_0x8004, VAR_RESULT - setvar VAR_0x8005, 2 @ 2 of the 3 party mons are selected for battle + setvar VAR_0x8005, DOME_BATTLE_PARTY_SIZE @ 2 of the 3 party mons are selected for battle special ChoosePartyForBattleFrontier waitstate frontier_resetsketch compare VAR_RESULT, 0 - goto_if_eq BattleFrontier_BattleDomePreBattleRoom_EventScript_24B24F - dome_set DOME_DATA_8 + goto_if_eq BattleFrontier_BattleDomePreBattleRoom_EventScript_AskReadyForNextRound + dome_set DOME_DATA_SELECTED_MONS dome_reduceparty dome_setopponent - msgbox BattleFrontier_BattleDomePreBattleRoom_Text_24B748, MSGBOX_DEFAULT + msgbox BattleFrontier_BattleDomePreBattleRoom_Text_RightThisWay, MSGBOX_DEFAULT closemessage - applymovement 1, BattleFrontier_BattleDomePreBattleRoom_Movement_24B64F + applymovement 1, BattleFrontier_BattleDomePreBattleRoom_Movement_AttendantMoveAside waitmovement 0 - applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleDomePreBattleRoom_Movement_24B657 + applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleDomePreBattleRoom_Movement_PlayerWalkToDoor waitmovement 0 opendoor 5, 1 waitdooranim - applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleDomePreBattleRoom_Movement_24B659 + applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleDomePreBattleRoom_Movement_PlayerEnterDoor waitmovement 0 closedoor 5, 1 waitdooranim @@ -167,224 +166,229 @@ BattleFrontier_BattleDomePreBattleRoom_EventScript_24B46D:: @ 824B46D waitstate end -BattleFrontier_BattleDomePreBattleRoom_EventScript_24B4FB:: @ 824B4FB +BattleFrontier_BattleDomePreBattleRoom_EventScript_ReadyForNextRoundMessage:: @ 824B4FB frontier_get FRONTIER_DATA_BATTLE_NUM switch VAR_RESULT - case 0, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B53A - case 1, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B540 - case 2, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B546 - case 3, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B54C + case DOME_ROUND1, BattleFrontier_BattleDomePreBattleRoom_EventScript_ReadyForRound1 + case DOME_ROUND2, BattleFrontier_BattleDomePreBattleRoom_EventScript_ReadyForRound2 + case DOME_SEMIFINAL, BattleFrontier_BattleDomePreBattleRoom_EventScript_ReadyForSemifinals + case DOME_FINAL, BattleFrontier_BattleDomePreBattleRoom_EventScript_ReadyForFinals return -BattleFrontier_BattleDomePreBattleRoom_EventScript_24B53A:: @ 824B53A - message BattleFrontier_BattleDomePreBattleRoom_Text_24B65C +BattleFrontier_BattleDomePreBattleRoom_EventScript_ReadyForRound1:: @ 824B53A + message BattleFrontier_BattleDomePreBattleRoom_Text_ReadyForRound1 return -BattleFrontier_BattleDomePreBattleRoom_EventScript_24B540:: @ 824B540 - message BattleFrontier_BattleDomePreBattleRoom_Text_24B689 +BattleFrontier_BattleDomePreBattleRoom_EventScript_ReadyForRound2:: @ 824B540 + message BattleFrontier_BattleDomePreBattleRoom_Text_ReadyForRound2 return -BattleFrontier_BattleDomePreBattleRoom_EventScript_24B546:: @ 824B546 - message BattleFrontier_BattleDomePreBattleRoom_Text_24B6B6 +BattleFrontier_BattleDomePreBattleRoom_EventScript_ReadyForSemifinals:: @ 824B546 + message BattleFrontier_BattleDomePreBattleRoom_Text_ReadyForSemifinals return -BattleFrontier_BattleDomePreBattleRoom_EventScript_24B54C:: @ 824B54C +BattleFrontier_BattleDomePreBattleRoom_EventScript_ReadyForFinals:: @ 824B54C frontier_getbrainstatus switch VAR_RESULT - case FRONTIER_BRAIN_SILVER, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B58B - case FRONTIER_BRAIN_GOLD, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B5A0 - case FRONTIER_BRAIN_STREAK, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B58B - case FRONTIER_BRAIN_STREAK_LONG, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B5A0 - message BattleFrontier_BattleDomePreBattleRoom_Text_24B6E3 + case FRONTIER_BRAIN_SILVER, BattleFrontier_BattleDomePreBattleRoom_EventScript_ReadyForTuckerSilver + case FRONTIER_BRAIN_GOLD, BattleFrontier_BattleDomePreBattleRoom_EventScript_ReadyForTuckerGold + case FRONTIER_BRAIN_STREAK, BattleFrontier_BattleDomePreBattleRoom_EventScript_ReadyForTuckerSilver + case FRONTIER_BRAIN_STREAK_LONG, BattleFrontier_BattleDomePreBattleRoom_EventScript_ReadyForTuckerGold + message BattleFrontier_BattleDomePreBattleRoom_Text_ReadyForFinals return -BattleFrontier_BattleDomePreBattleRoom_EventScript_24B58B:: @ 824B58B - goto_if_set FLAG_TEMP_1, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B5B5 - msgbox BattleFrontier_BattleDomePreBattleRoom_Text_24BB2E, MSGBOX_DEFAULT +BattleFrontier_BattleDomePreBattleRoom_EventScript_ReadyForTuckerSilver:: @ 824B58B + goto_if_set FLAG_TEMP_1, BattleFrontier_BattleDomePreBattleRoom_EventScript_ReadyForTuckerSilverShort + msgbox BattleFrontier_BattleDomePreBattleRoom_Text_ReadyForTuckerSilver, MSGBOX_DEFAULT setflag FLAG_TEMP_1 return -BattleFrontier_BattleDomePreBattleRoom_EventScript_24B5A0:: @ 824B5A0 - goto_if_set FLAG_TEMP_1, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B5BE - msgbox BattleFrontier_BattleDomePreBattleRoom_Text_24BBAC, MSGBOX_DEFAULT +BattleFrontier_BattleDomePreBattleRoom_EventScript_ReadyForTuckerGold:: @ 824B5A0 + goto_if_set FLAG_TEMP_1, BattleFrontier_BattleDomePreBattleRoom_EventScript_ReadyForTuckerGoldShort + msgbox BattleFrontier_BattleDomePreBattleRoom_Text_ReadyForTuckerGold, MSGBOX_DEFAULT setflag FLAG_TEMP_1 return -BattleFrontier_BattleDomePreBattleRoom_EventScript_24B5B5:: @ 824B5B5 - msgbox BattleFrontier_BattleDomePreBattleRoom_Text_24BC2A, MSGBOX_DEFAULT +BattleFrontier_BattleDomePreBattleRoom_EventScript_ReadyForTuckerSilverShort:: @ 824B5B5 + msgbox BattleFrontier_BattleDomePreBattleRoom_Text_ReadyForTuckerSilverShort, MSGBOX_DEFAULT return -BattleFrontier_BattleDomePreBattleRoom_EventScript_24B5BE:: @ 824B5BE - msgbox BattleFrontier_BattleDomePreBattleRoom_Text_24BC63, MSGBOX_DEFAULT +BattleFrontier_BattleDomePreBattleRoom_EventScript_ReadyForTuckerGoldShort:: @ 824B5BE + msgbox BattleFrontier_BattleDomePreBattleRoom_Text_ReadyForTuckerGoldShort, MSGBOX_DEFAULT return -BattleFrontier_BattleDomePreBattleRoom_EventScript_24B5C7:: @ 824B5C7 +BattleFrontier_BattleDomePreBattleRoom_EventScript_ReturnFromBattle:: @ 824B5C7 setvar VAR_TEMP_0, 1 - msgbox BattleFrontier_BattleDomePreBattleRoom_Text_24B760, MSGBOX_DEFAULT + msgbox BattleFrontier_BattleDomePreBattleRoom_Text_RestoreMonsToFullHealth, MSGBOX_DEFAULT special LoadPlayerParty frontier_setpartyorder FRONTIER_PARTY_SIZE playfanfare MUS_ME_ASA waitfanfare special HealPlayerParty - call BattleFrontier_BattleDomePreBattleRoom_EventScript_24B600 + call BattleFrontier_BattleDomePreBattleRoom_EventScript_RoundCompleteMessage fadescreen FADE_TO_BLACK dome_showstatictourneytree waitstate - goto BattleFrontier_BattleDomePreBattleRoom_EventScript_24B24F + goto BattleFrontier_BattleDomePreBattleRoom_EventScript_AskReadyForNextRound -BattleFrontier_BattleDomePreBattleRoom_EventScript_24B600:: @ 824B600 +BattleFrontier_BattleDomePreBattleRoom_EventScript_RoundCompleteMessage:: @ 824B600 frontier_get FRONTIER_DATA_BATTLE_NUM switch VAR_RESULT - case 1, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B634 - case 2, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B63D - case 3, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B646 + case DOME_ROUND2, BattleFrontier_BattleDomePreBattleRoom_EventScript_Round1Complete + case DOME_SEMIFINAL, BattleFrontier_BattleDomePreBattleRoom_EventScript_Round2Complete + case DOME_FINAL, BattleFrontier_BattleDomePreBattleRoom_EventScript_SemifinalsComplete return -BattleFrontier_BattleDomePreBattleRoom_EventScript_24B634:: @ 824B634 - msgbox BattleFrontier_BattleDomePreBattleRoom_Text_24B7A3, MSGBOX_DEFAULT +BattleFrontier_BattleDomePreBattleRoom_EventScript_Round1Complete:: @ 824B634 + msgbox BattleFrontier_BattleDomePreBattleRoom_Text_Round1Complete, MSGBOX_DEFAULT return -BattleFrontier_BattleDomePreBattleRoom_EventScript_24B63D:: @ 824B63D - msgbox BattleFrontier_BattleDomePreBattleRoom_Text_24B7F1, MSGBOX_DEFAULT +BattleFrontier_BattleDomePreBattleRoom_EventScript_Round2Complete:: @ 824B63D + msgbox BattleFrontier_BattleDomePreBattleRoom_Text_Round2Complete, MSGBOX_DEFAULT return -BattleFrontier_BattleDomePreBattleRoom_EventScript_24B646:: @ 824B646 - msgbox BattleFrontier_BattleDomePreBattleRoom_Text_24B83F, MSGBOX_DEFAULT +BattleFrontier_BattleDomePreBattleRoom_EventScript_SemifinalsComplete:: @ 824B646 + msgbox BattleFrontier_BattleDomePreBattleRoom_Text_SemifinalsComplete, MSGBOX_DEFAULT return -BattleFrontier_BattleDomePreBattleRoom_Movement_24B64F: @ 824B64F +BattleFrontier_BattleDomePreBattleRoom_Movement_AttendantMoveAside: @ 824B64F walk_right face_left step_end -BattleFrontier_BattleDomePreBattleRoom_Movement_24B652: @ 824B652 +BattleFrontier_BattleDomePreBattleRoom_Movement_PlayerEnter: @ 824B652 walk_up walk_up walk_up walk_up step_end -BattleFrontier_BattleDomePreBattleRoom_Movement_24B657: @ 824B657 +BattleFrontier_BattleDomePreBattleRoom_Movement_PlayerWalkToDoor: @ 824B657 walk_up step_end -BattleFrontier_BattleDomePreBattleRoom_Movement_24B659: @ 824B659 +BattleFrontier_BattleDomePreBattleRoom_Movement_PlayerEnterDoor: @ 824B659 walk_up set_invisible step_end -BattleFrontier_BattleDomePreBattleRoom_Text_24B65C: @ 824B65C +BattleFrontier_BattleDomePreBattleRoom_Text_ReadyForRound1: @ 824B65C .string "Your 1st-round match is next.\n" .string "Are you ready?$" -BattleFrontier_BattleDomePreBattleRoom_Text_24B689: @ 824B689 +BattleFrontier_BattleDomePreBattleRoom_Text_ReadyForRound2: @ 824B689 .string "Your 2nd-round match is next.\n" .string "Are you ready?$" -BattleFrontier_BattleDomePreBattleRoom_Text_24B6B6: @ 824B6B6 +BattleFrontier_BattleDomePreBattleRoom_Text_ReadyForSemifinals: @ 824B6B6 .string "Your semifinal match is next.\n" .string "Are you ready?$" -BattleFrontier_BattleDomePreBattleRoom_Text_24B6E3: @ 824B6E3 +BattleFrontier_BattleDomePreBattleRoom_Text_ReadyForFinals: @ 824B6E3 .string "Your final match is next.\n" .string "Are you ready?$" -BattleFrontier_BattleDomePreBattleRoom_Text_24B70C: @ 824B70C +BattleFrontier_BattleDomePreBattleRoom_Text_ChooseTwoMons: @ 824B70C .string "Please choose the two POKéMON\n" .string "that are to appear in battle.$" -BattleFrontier_BattleDomePreBattleRoom_Text_24B748: @ 824B748 +BattleFrontier_BattleDomePreBattleRoom_Text_RightThisWay: @ 824B748 .string "Right this way, please.$" -BattleFrontier_BattleDomePreBattleRoom_Text_24B760: @ 824B760 +BattleFrontier_BattleDomePreBattleRoom_Text_RestoreMonsToFullHealth: @ 824B760 .string "Thank you for competing!\p" .string "I'll restore your POKéMON to\n" .string "full health.$" -BattleFrontier_BattleDomePreBattleRoom_Text_24B7A3: @ 824B7A3 +BattleFrontier_BattleDomePreBattleRoom_Text_Round1Complete: @ 824B7A3 .string "All 1st-round matches have been\n" .string "completed.\p" .string "These are the teams that advanced!$" -BattleFrontier_BattleDomePreBattleRoom_Text_24B7F1: @ 824B7F1 +BattleFrontier_BattleDomePreBattleRoom_Text_Round2Complete: @ 824B7F1 .string "All 2nd-round matches have been\n" .string "completed.\p" .string "These are the teams that advanced!$" -BattleFrontier_BattleDomePreBattleRoom_Text_24B83F: @ 824B83F +BattleFrontier_BattleDomePreBattleRoom_Text_SemifinalsComplete: @ 824B83F .string "All semifinal matches have been\n" .string "completed.\p" .string "These are the teams that advanced!$" -BattleFrontier_BattleDomePreBattleRoom_Text_24B88D: @ 824B88D +@ Unused +BattleFrontier_BattleDomePreBattleRoom_Text_CongratsReadyForRound2: @ 824B88D .string "Congratulations for getting through\n" .string "the 1st round.\p" .string "The 2nd round is next.\n" .string "Are you ready?$" -BattleFrontier_BattleDomePreBattleRoom_Text_24B8E6: @ 824B8E6 +@ Unused +BattleFrontier_BattleDomePreBattleRoom_Text_CongratsReadyForSemifinals: @ 824B8E6 .string "Congratulations for advancing\n" .string "to the semifinals.\p" .string "The best four teams meet in this round.\n" .string "Are you ready?$" -BattleFrontier_BattleDomePreBattleRoom_Text_24B94E: @ 824B94E +@ Unused +BattleFrontier_BattleDomePreBattleRoom_Text_CongratsReadyForFinals: @ 824B94E .string "Congratulations for advancing\n" .string "to the final match.\p" .string "You're one win from the championship.\n" .string "Are you ready?$" -BattleFrontier_BattleDomePreBattleRoom_Text_24B9B5: @ 824B9B5 +BattleFrontier_BattleDomePreBattleRoom_Text_PlayersNextOpponentIsTrainer: @ 824B9B5 .string "{PLAYER}'s next opponent\n" .string "is this TRAINER.$" -BattleFrontier_BattleDomePreBattleRoom_Text_24B9D9: @ 824B9D9 +BattleFrontier_BattleDomePreBattleRoom_Text_TourneyInRound1: @ 824B9D9 .string "The tournament is in the 1st round.$" -BattleFrontier_BattleDomePreBattleRoom_Text_24B9FD: @ 824B9FD +BattleFrontier_BattleDomePreBattleRoom_Text_TourneyInRound2: @ 824B9FD .string "The tournament is in the 2nd round.$" -BattleFrontier_BattleDomePreBattleRoom_Text_24BA21: @ 824BA21 +BattleFrontier_BattleDomePreBattleRoom_Text_TourneyInSemifinals: @ 824BA21 .string "The tournament is in the semifinals.$" -BattleFrontier_BattleDomePreBattleRoom_Text_24BA46: @ 824BA46 +BattleFrontier_BattleDomePreBattleRoom_Text_TourneyInFinals: @ 824BA46 .string "The tournament is up to the final.$" -BattleFrontier_BattleDomePreBattleRoom_Text_24BA69: @ 824BA69 +BattleFrontier_BattleDomePreBattleRoom_Text_SaveAndQuitGame: @ 824BA69 .string "Would you like to save and\n" .string "quit the game?$" -BattleFrontier_BattleDomePreBattleRoom_Text_24BA93: @ 824BA93 +BattleFrontier_BattleDomePreBattleRoom_Text_RetireYourChallenge: @ 824BA93 .string "Would you like to retire from your\n" .string "Battle Tournament challenge?$" -BattleFrontier_BattleDomePreBattleRoom_Text_24BAD3: @ 824BAD3 +BattleFrontier_BattleDomePreBattleRoom_Text_SavingDataPleaseWait: @ 824BAD3 .string "I am saving your data.\n" .string "Please wait.$" -BattleFrontier_BattleDomePreBattleRoom_Text_24BAF7: @ 824BAF7 +BattleFrontier_BattleDomePreBattleRoom_Text_RecordLastMatch: @ 824BAF7 .string "Should I record your last match\n" .string "on your FRONTIER PASS?$" -BattleFrontier_BattleDomePreBattleRoom_Text_24BB2E: @ 824BB2E +BattleFrontier_BattleDomePreBattleRoom_Text_ReadyForTuckerSilver: @ 824BB2E .string "Congratulations for advancing\n" .string "to the final match.\p" .string "For the final match, you will challenge\n" .string "the DOME ACE TUCKER.\p" .string "Are you ready?$" -BattleFrontier_BattleDomePreBattleRoom_Text_24BBAC: @ 824BBAC +@ Identical to ReadyForTuckerSilver +BattleFrontier_BattleDomePreBattleRoom_Text_ReadyForTuckerGold: @ 824BBAC .string "Congratulations for advancing\n" .string "to the final match.\p" .string "For the final match, you will challenge\n" .string "the DOME ACE TUCKER.\p" .string "Are you ready?$" -BattleFrontier_BattleDomePreBattleRoom_Text_24BC2A: @ 824BC2A +BattleFrontier_BattleDomePreBattleRoom_Text_ReadyForTuckerSilverShort: @ 824BC2A .string "Your final battle against TUCKER is\n" .string "next. Are you ready?$" -BattleFrontier_BattleDomePreBattleRoom_Text_24BC63: @ 824BC63 +@ Identical again +BattleFrontier_BattleDomePreBattleRoom_Text_ReadyForTuckerGoldShort: @ 824BC63 .string "Your final battle against TUCKER is\n" .string "next. Are you ready?$" diff --git a/data/specials.inc b/data/specials.inc index fef21fe99f..6922b46a58 100644 --- a/data/specials.inc +++ b/data/specials.inc @@ -498,7 +498,7 @@ gSpecials:: @ 81DBA64 def_special GetPCBoxToSendMon def_special ShouldShowBoxWasFullMessage def_special SetMatchCallRegisteredFlag - def_special sub_8175280 + def_special DoConfettiEffect def_special CreateAbnormalWeatherEvent def_special GetAbnormalWeatherMapNameAndType def_special GetMartEmployeeObjectEventId diff --git a/graphics/unknown/unknown_D83900.bin b/graphics/battle_frontier/unknown_D83900.bin similarity index 100% rename from graphics/unknown/unknown_D83900.bin rename to graphics/battle_frontier/unknown_D83900.bin diff --git a/graphics/unknown/unknown_D83B2C.bin b/graphics/battle_frontier/unknown_D83B2C.bin similarity index 100% rename from graphics/unknown/unknown_D83B2C.bin rename to graphics/battle_frontier/unknown_D83B2C.bin diff --git a/graphics/unknown/unknown_D83C3C.bin b/graphics/battle_frontier/unknown_D83C3C.bin similarity index 100% rename from graphics/unknown/unknown_D83C3C.bin rename to graphics/battle_frontier/unknown_D83C3C.bin diff --git a/graphics/unknown/unknown_D84970.bin b/graphics/battle_frontier/unknown_D84970.bin similarity index 100% rename from graphics/unknown/unknown_D84970.bin rename to graphics/battle_frontier/unknown_D84970.bin diff --git a/graphics/unknown/unknown_D84F00.bin b/graphics/battle_frontier/unknown_D84F00.bin similarity index 100% rename from graphics/unknown/unknown_D84F00.bin rename to graphics/battle_frontier/unknown_D84F00.bin diff --git a/include/battle_dome.h b/include/battle_dome.h index d1dfdb1003..900508c4bf 100644 --- a/include/battle_dome.h +++ b/include/battle_dome.h @@ -1,9 +1,9 @@ #ifndef GUARD_BATTLE_DOME_H #define GUARD_BATTLE_DOME_H -extern u32 gUnknown_0203CD70; +extern u32 gPlayerPartyLostHP; -int GetDomeTrainerMonCountInBits(u16 tournamentTrainerId); +int GetDomeTrainerSelectedMons(u16 tournamentTrainerId); int TrainerIdToDomeTournamentId(u16 trainerId); #endif // GUARD_BATTLE_DOME_H diff --git a/include/constants/battle_dome.h b/include/constants/battle_dome.h index 48152cdbb0..96542c5969 100644 --- a/include/constants/battle_dome.h +++ b/include/constants/battle_dome.h @@ -1,6 +1,21 @@ #ifndef GUARD_CONSTANTS_BATTLE_DOME_H #define GUARD_CONSTANTS_BATTLE_DOME_H +#define DOME_ROUND1 0 +#define DOME_ROUND2 1 +#define DOME_SEMIFINAL 2 +#define DOME_FINAL 3 +#define DOME_ROUNDS_COUNT 4 + +//#define DOME_TOURNAMENT_TRAINERS_COUNT 16 : defined in global +#define DOME_TOURNAMENT_MATCHES_COUNT DOME_TOURNAMENT_TRAINERS_COUNT - 1 + +#define DOME_BATTLE_PARTY_SIZE 2 + +#define DOME_PLAYER_WON_MATCH 1 +#define DOME_PLAYER_LOST_MATCH 2 +#define DOME_PLAYER_RETIRED 9 + #define BATTLE_DOME_FUNC_INIT 0 #define BATTLE_DOME_FUNC_GET_DATA 1 #define BATTLE_DOME_FUNC_SET_DATA 2 @@ -22,24 +37,18 @@ #define BATTLE_DOME_FUNC_REDUCE_PARTY 18 #define BATTLE_DOME_FUNC_COMPARE_SEEDS 19 #define BATTLE_DOME_FUNC_GET_WINNER_NAME 20 -#define BATTLE_DOME_FUNC_21 21 +#define BATTLE_DOME_FUNC_INIT_RESULTS_TREE 21 #define BATTLE_DOME_FUNC_INIT_TRAINERS 22 -#define DOME_DATA_WIN_STREAK 0 -#define DOME_DATA_WIN_STREAK_ACTIVE 1 -#define DOME_DATA_2 2 -#define DOME_DATA_3 3 -#define DOME_DATA_4 4 -#define DOME_DATA_5 5 -#define DOME_DATA_6 6 -#define DOME_DATA_7 7 -#define DOME_DATA_8 8 -#define DOME_DATA_9 9 - -#define DOME_ROUND1 0 -#define DOME_ROUND2 1 -#define DOME_SEMIFINAL 2 -#define DOME_FINAL 3 -#define DOME_ROUNDS_COUNT 4 +#define DOME_DATA_WIN_STREAK 0 +#define DOME_DATA_WIN_STREAK_ACTIVE 1 +#define DOME_DATA_ATTEMPTED_SINGLES_50 2 +#define DOME_DATA_ATTEMPTED_SINGLES_OPEN 3 +#define DOME_DATA_HAS_WON_SINGLES_50 4 +#define DOME_DATA_HAS_WON_SINGLES_OPEN 5 +#define DOME_DATA_ATTEMPTED_CHALLENGE 6 +#define DOME_DATA_HAS_WON_CHALLENGE 7 +#define DOME_DATA_SELECTED_MONS 8 +#define DOME_DATA_LAST_TOURNEY_TYPE 9 #endif //GUARD_CONSTANTS_BATTLE_DOME_H diff --git a/include/constants/battle_frontier.h b/include/constants/battle_frontier.h index 0bf1ba02bc..1a60714e8b 100644 --- a/include/constants/battle_frontier.h +++ b/include/constants/battle_frontier.h @@ -6,9 +6,9 @@ // Battle Frontier facility ids. #define FRONTIER_FACILITY_TOWER 0 #define FRONTIER_FACILITY_DOME 1 -#define FRONTIER_FACILITY_PALACE 2 -#define FRONTIER_FACILITY_ARENA 3 -#define FRONTIER_FACILITY_FACTORY 4 +#define FRONTIER_FACILITY_PALACE 2 // also Verdanturf Tent +#define FRONTIER_FACILITY_ARENA 3 // also Fallarbor Tent +#define FRONTIER_FACILITY_FACTORY 4 // also Slateport Tent #define FRONTIER_FACILITY_PIKE 5 #define FRONTIER_FACILITY_PYRAMID 6 #define NUM_FRONTIER_FACILITIES 7 @@ -17,10 +17,6 @@ #define FACILITY_UNION_ROOM 8 #define FACILITY_MULTI_OR_EREADER 9 // Direct Corner multi battles, multi battle with Steven, and e-Reader battles -#define TENT_VERDANTURF 2 -#define TENT_FALLARBOR 3 -#define TENT_SLATEPORT 4 - // Battle Frontier lvl modes. #define FRONTIER_LVL_50 0 #define FRONTIER_LVL_OPEN 1 diff --git a/include/constants/global.h b/include/constants/global.h index f4d81e563f..d57307d9c3 100644 --- a/include/constants/global.h +++ b/include/constants/global.h @@ -58,6 +58,7 @@ #define TRAINER_ID_LENGTH 4 #define MAX_MON_MOVES 4 +#define NUM_STATS 6 // party sizes #define PARTY_SIZE 6 diff --git a/include/constants/pokemon.h b/include/constants/pokemon.h index 5610a470cb..181a840232 100644 --- a/include/constants/pokemon.h +++ b/include/constants/pokemon.h @@ -80,7 +80,6 @@ #define STAT_ACC 6 // Only in battles. #define STAT_EVASION 7 // Only in battles. -#define NUM_STATS 6 #define NUM_BATTLE_STATS 8 // Shiny odds @@ -213,6 +212,8 @@ #define FRIENDSHIP_EVENT_FAINT_OUTSIDE_BATTLE 7 #define FRIENDSHIP_EVENT_FAINT_LARGE 8 +#define MAX_FRIENDSHIP 0xFF + #define STATUS_PRIMARY_NONE 0 #define STATUS_PRIMARY_POISON 1 #define STATUS_PRIMARY_PARALYSIS 2 diff --git a/include/global.h b/include/global.h index 16fbb14e20..2b2860d64c 100644 --- a/include/global.h +++ b/include/global.h @@ -300,7 +300,7 @@ struct BattleTowerEReaderTrainer struct FrontierMonData { u16 moves[MAX_MON_MOVES]; - u8 evs[6]; + u8 evs[NUM_STATS]; u8 nature; }; @@ -317,7 +317,7 @@ struct BattleDomeTrainer u16 trainerId:10; u16 isEliminated:1; u16 eliminatedAt:2; - u16 unk3:3; + u16 forfeited:3; }; #define DOME_TOURNAMENT_TRAINERS_COUNT 16 @@ -332,10 +332,6 @@ struct BattleFrontier /*0xCA9*/ u8 lvlMode:2; /*0xCA9*/ u8 challengePaused:1; /*0xCA9*/ u8 field_CA9_b:1; - /*0xCA9*/ u8 unused_CA9_c:1; - /*0xCA9*/ u8 unused_CA9_d:1; - /*0xCA9*/ u8 unused_CA9_e:1; - /*0xCA9*/ u8 unused_CA9_f:1; /*0xCAA*/ u16 selectedPartyMons[MAX_FRONTIER_PARTY_SIZE]; /*0xCB2*/ u16 curChallengeBattleNum; // Battle number / room number (Pike) / floor number (Pyramid) /*0xCB4*/ u16 trainerIds[20]; @@ -347,17 +343,17 @@ struct BattleFrontier /*0xD04*/ u16 towerNumWins; // Increments to MAX_STREAK but never read otherwise /*0xD06*/ u8 towerBattleOutcome; /*0xD07*/ u8 towerLvlMode; - /*0xD08*/ u8 field_D08_0:1; - /*0xD08*/ u8 field_D08_1:1; - /*0xD08*/ u8 field_D08_2:1; - /*0xD08*/ u8 field_D08_3:1; - /*0xD08*/ u8 field_D08_4:1; - /*0xD08*/ u8 field_D08_5:1; - /*0xD08*/ u8 field_D08_6:1; - /*0xD08*/ u8 field_D08_7:1; - /*0xD09*/ u8 filler_D09; - /*0xD0A*/ u8 field_D0A; - /*0xD0B*/ u8 field_D0B; + /*0xD08*/ u8 domeAttemptedSingles50:1; + /*0xD08*/ u8 domeAttemptedSinglesOpen:1; + /*0xD08*/ u8 domeHasWonSingles50:1; + /*0xD08*/ u8 domeHasWonSinglesOpen:1; + /*0xD08*/ u8 domeAttemptedDoubles50:1; + /*0xD08*/ u8 domeAttemptedDoublesOpen:1; + /*0xD08*/ u8 domeHasWonDoubles50:1; + /*0xD08*/ u8 domeHasWonDoublesOpen:1; + /*0xD09*/ u8 domeUnused; + /*0xD0A*/ u8 domeLvlMode; + /*0xD0B*/ u8 domeBattleMode; /*0xD0C*/ u16 domeWinStreaks[2][2]; /*0xD14*/ u16 domeRecordWinStreaks[2][2]; /*0xD1C*/ u16 domeTotalChampionships[2][2]; @@ -396,7 +392,7 @@ struct BattleFrontier /*0xEB8*/ u16 battlePoints; /*0xEBA*/ u16 cardBattlePoints; /*0xEBC*/ u32 battlesCount; - /*0xEC0*/ u16 field_EC0[16]; + /*0xEC0*/ u16 domeWinningMoves[DOME_TOURNAMENT_TRAINERS_COUNT]; /*0xEE0*/ u8 trainerFlags; /*0xEE1*/ u8 opponentNames[2][PLAYER_NAME_LENGTH + 1]; /*0xEF1*/ u8 opponentTrainerIds[2][TRAINER_ID_LENGTH]; diff --git a/include/hall_of_fame.h b/include/hall_of_fame.h index 5c8a01bcb6..a83fad2fc0 100644 --- a/include/hall_of_fame.h +++ b/include/hall_of_fame.h @@ -4,7 +4,7 @@ void CB2_DoHallOfFameScreen(void); void CB2_DoHallOfFameScreenDontSaveData(void); void CB2_DoHallOfFamePC(void); -void sub_8175280(void); +void DoConfettiEffect(void); // hof_pc.c void ReturnFromHallOfFamePC(void); diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c index 0bd1ea3631..6e62766841 100644 --- a/src/battle_controller_player.c +++ b/src/battle_controller_player.c @@ -2676,8 +2676,9 @@ static void PlayerHandleHealthBarUpdate(void) LoadBattleBarGfx(0); hpVal = gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8); + // gPlayerPartyLostHP used by Battle Dome, but never read if (hpVal > 0) - gUnknown_0203CD70 += hpVal; + gPlayerPartyLostHP += hpVal; if (hpVal != INSTANT_HP_BAR_DROP) { diff --git a/src/battle_dome.c b/src/battle_dome.c index 7ff83f328a..e49bada673 100644 --- a/src/battle_dome.c +++ b/src/battle_dome.c @@ -1,6 +1,7 @@ #include "global.h" #include "battle_dome.h" #include "battle.h" +#include "battle_main.h" #include "battle_setup.h" #include "battle_tower.h" #include "frontier_util.h" @@ -34,6 +35,7 @@ #include "constants/frontier_util.h" #include "constants/species.h" #include "constants/moves.h" +#include "constants/pokemon.h" #include "constants/trainers.h" #include "constants/abilities.h" #include "constants/songs.h" @@ -54,6 +56,9 @@ struct UnkStruct_860DD10 u16 src; }; +#define DOME_TRAINERS gSaveBlock2Ptr->frontier.domeTrainers +#define DOME_MONS gSaveBlock2Ptr->frontier.domeMonIds + // This file's functions. static u8 GetDomeTrainerMonIvs(u16 trainerId); static void SwapDomeTrainers(int id1, int id2, u16 *statsArray); @@ -62,7 +67,7 @@ static void CreateDomeOpponentMons(u16 tournamentTrainerId); static int sub_818FCBC(u16 tournamentTrainerId, bool8 arg1); static int sub_818FDB8(u16 tournamentTrainerId, bool8 arg1); static int GetTypeEffectivenessPoints(int move, int species, int arg2); -static int sub_818FEB4(int *arr, bool8 arg1); +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); @@ -105,15 +110,15 @@ static void SaveDomeChallenge(void); static void IncrementDomeStreaks(void); static void ResetSketchedMoves(void); static void RestoreDomePlayerPartyHeldItems(void); -static void ReduceDomePlayerPartyTo3Mons(void); +static void ReduceDomePlayerPartyToSelectedMons(void); static void GetPlayerSeededBeforeOpponent(void); static void BufferLastDomeWinnerName(void); -static void sub_8194F58(void); +static void InitRandomTourneyTreeResults(void); static void InitDomeTrainers(void); // EWRAM variables. -EWRAM_DATA u32 gUnknown_0203CD70 = 0; -static EWRAM_DATA u32 gUnknown_0203CD74 = 0; +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 u8 *sTilemapBuffer = NULL; @@ -599,7 +604,7 @@ static const struct BgTemplate gUnknown_0860CE74[4] = }, }; -static const struct BgTemplate gUnknown_0860CE84[4] = +static const struct BgTemplate sOpponentInfoBgTemplates[4] = { { .bg = 0, @@ -671,7 +676,7 @@ static const struct WindowTemplate gUnknown_0860CE94[] = DUMMY_WIN_TEMPLATE, }; -static const struct WindowTemplate gUnknown_0860CEB4[] = +static const struct WindowTemplate sOpponentInfoWindowTemplates[] = { { .bg = 0, @@ -1091,10 +1096,10 @@ static void (* const sBattleDomeFunctions[])(void) = [BATTLE_DOME_FUNC_SET_TRAINERS] = InitDomeFacilityTrainersAndMons, [BATTLE_DOME_FUNC_RESET_SKETCH] = ResetSketchedMoves, [BATTLE_DOME_FUNC_RESTORE_HELD_ITEMS] = RestoreDomePlayerPartyHeldItems, - [BATTLE_DOME_FUNC_REDUCE_PARTY] = ReduceDomePlayerPartyTo3Mons, + [BATTLE_DOME_FUNC_REDUCE_PARTY] = ReduceDomePlayerPartyToSelectedMons, [BATTLE_DOME_FUNC_COMPARE_SEEDS] = GetPlayerSeededBeforeOpponent, [BATTLE_DOME_FUNC_GET_WINNER_NAME] = BufferLastDomeWinnerName, - [BATTLE_DOME_FUNC_21] = sub_8194F58, + [BATTLE_DOME_FUNC_INIT_RESULTS_TREE] = InitRandomTourneyTreeResults, [BATTLE_DOME_FUNC_INIT_TRAINERS] = InitDomeTrainers, }; @@ -1152,7 +1157,13 @@ static const u8 gUnknown_0860D15C[][4] = {0x07, 0x0b, 0x0d, 0x0e}, }; -static const u8 gUnknown_0860D19C[] = {0x17, 0x1b, 0x1d, 0x1e}; +static const u8 gUnknown_0860D19C[DOME_ROUNDS_COUNT] = +{ + [DOME_ROUND1] = 23, + [DOME_ROUND2] = 27, + [DOME_SEMIFINAL] = 29, + [DOME_FINAL] = 30 +}; static const u8 gUnknown_0860D1A0[][4] = { @@ -1274,7 +1285,7 @@ static const u8 *const sBattleDomeOpponentStatsTexts[] = static const u8 sInfoTrainerMonX[] = {0x68, 0x88, 0x68}; static const u8 sInfoTrainerMonY[] = {0x26, 0x3e, 0x4e}; -static const u8 gUnknown_0860D346[] = {0x00, 0x04, 0x00}; +static const u8 sSpeciesNameTextYCoords[] = {0, 4, 0}; static const u8 gUnknown_0860D349[] = {0x00, 0x05, 0x09, 0x0c, 0x0e, 0x00, 0x00}; @@ -1313,28 +1324,28 @@ static const u8 sFirstTrainerMonY[] = {0x38, 0x50, 0x68}; static const u8 sSecondTrainerMonX[] = {0x90, 0x90, 0x90}; static const u8 sSecondTrainerMonY[] = {0x38, 0x50, 0x68}; -static const u8 gUnknown_0860D3B4[] = {0x00, 0x08, 0x0c, 0x04, 0x07, 0x0f, 0x0b, 0x03, 0x02, 0x0a, 0x0e, 0x06, 0x05, 0x0d, 0x09, 0x01}; +static const u8 gUnknown_0860D3B4[] = {0, 8, 12, 4, 7, 15, 11, 3, 2, 10, 14, 6, 5, 13, 9, 1}; -static const u8 gUnknown_0860D3C4[][3] = +static const u8 gUnknown_0860D3C4[DOME_TOURNAMENT_MATCHES_COUNT][3] = { - {0x00, 0x02, 0x00}, - {0x02, 0x02, 0x00}, - {0x04, 0x02, 0x00}, - {0x06, 0x02, 0x00}, - {0x08, 0x02, 0x00}, - {0x0a, 0x02, 0x00}, - {0x0c, 0x02, 0x00}, - {0x0e, 0x02, 0x00}, - {0x00, 0x04, 0x01}, - {0x04, 0x04, 0x01}, - {0x08, 0x04, 0x01}, - {0x0c, 0x04, 0x01}, - {0x00, 0x08, 0x02}, - {0x08, 0x08, 0x02}, - {0x00, 0x10, 0x03}, + { 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 gUnknown_0860D3F1[][2] = +static const u8 gUnknown_0860D3F1[DOME_TOURNAMENT_TRAINERS_COUNT][2] = { {0x00, 0x00}, {0x01, 0x70}, @@ -2280,57 +2291,57 @@ static void GetDomeData(void) case DOME_DATA_WIN_STREAK_ACTIVE: gSpecialVar_Result = ((gSaveBlock2Ptr->frontier.winStreakActiveFlags & sWinStreakFlags[battleMode][lvlMode]) != 0); break; - case DOME_DATA_2: - gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_D08_0; + case DOME_DATA_ATTEMPTED_SINGLES_50: + gSpecialVar_Result = gSaveBlock2Ptr->frontier.domeAttemptedSingles50; break; - case DOME_DATA_3: - gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_D08_1; + case DOME_DATA_ATTEMPTED_SINGLES_OPEN: + gSpecialVar_Result = gSaveBlock2Ptr->frontier.domeAttemptedSinglesOpen; break; - case DOME_DATA_4: - gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_D08_2; + case DOME_DATA_HAS_WON_SINGLES_50: + gSpecialVar_Result = gSaveBlock2Ptr->frontier.domeHasWonSingles50; break; - case DOME_DATA_5: - gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_D08_3; + case DOME_DATA_HAS_WON_SINGLES_OPEN: + gSpecialVar_Result = gSaveBlock2Ptr->frontier.domeHasWonSinglesOpen; break; - case DOME_DATA_6: + case DOME_DATA_ATTEMPTED_CHALLENGE: if (VarGet(VAR_FRONTIER_BATTLE_MODE) == FRONTIER_MODE_DOUBLES) { - if (lvlMode) - gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_D08_5; + if (lvlMode != FRONTIER_LVL_50) + gSpecialVar_Result = gSaveBlock2Ptr->frontier.domeAttemptedDoublesOpen; else - gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_D08_4; + gSpecialVar_Result = gSaveBlock2Ptr->frontier.domeAttemptedDoubles50; } else { - if (lvlMode) - gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_D08_1; + if (lvlMode != FRONTIER_LVL_50) + gSpecialVar_Result = gSaveBlock2Ptr->frontier.domeAttemptedSinglesOpen; else - gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_D08_0; + gSpecialVar_Result = gSaveBlock2Ptr->frontier.domeAttemptedSingles50; } break; - case DOME_DATA_7: + case DOME_DATA_HAS_WON_CHALLENGE: if (VarGet(VAR_FRONTIER_BATTLE_MODE) == FRONTIER_MODE_DOUBLES) { - if (lvlMode) - gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_D08_7; + if (lvlMode != FRONTIER_LVL_50) + gSpecialVar_Result = gSaveBlock2Ptr->frontier.domeHasWonDoublesOpen; else - gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_D08_6; + gSpecialVar_Result = gSaveBlock2Ptr->frontier.domeHasWonDoubles50; } else { - if (lvlMode) - gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_D08_3; + if (lvlMode != FRONTIER_LVL_50) + gSpecialVar_Result = gSaveBlock2Ptr->frontier.domeHasWonSinglesOpen; else - gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_D08_2; + gSpecialVar_Result = gSaveBlock2Ptr->frontier.domeHasWonSingles50; } break; - case DOME_DATA_8: + case DOME_DATA_SELECTED_MONS: ClearSelectedPartyOrder(); gSelectedOrderFromParty[0] = gSaveBlock2Ptr->frontier.selectedPartyMons[3]; gSelectedOrderFromParty[1] = gSaveBlock2Ptr->frontier.selectedPartyMons[3] >> 8; break; - case DOME_DATA_9: - gSpecialVar_Result = (gSaveBlock2Ptr->frontier.field_D0A * 2) - 3 + gSaveBlock2Ptr->frontier.field_D0B; + case DOME_DATA_LAST_TOURNEY_TYPE: + gSpecialVar_Result = (gSaveBlock2Ptr->frontier.domeLvlMode * 2) - 3 + gSaveBlock2Ptr->frontier.domeBattleMode; break; } } @@ -2351,51 +2362,51 @@ static void SetDomeData(void) else gSaveBlock2Ptr->frontier.winStreakActiveFlags &= sWinStreakMasks[battleMode][lvlMode]; break; - case DOME_DATA_2: - gSaveBlock2Ptr->frontier.field_D08_0 = gSpecialVar_0x8006; + case DOME_DATA_ATTEMPTED_SINGLES_50: + gSaveBlock2Ptr->frontier.domeAttemptedSingles50 = gSpecialVar_0x8006; break; - case DOME_DATA_3: - gSaveBlock2Ptr->frontier.field_D08_1 = gSpecialVar_0x8006; + case DOME_DATA_ATTEMPTED_SINGLES_OPEN: + gSaveBlock2Ptr->frontier.domeAttemptedSinglesOpen = gSpecialVar_0x8006; break; - case DOME_DATA_4: - gSaveBlock2Ptr->frontier.field_D08_2 = gSpecialVar_0x8006; + case DOME_DATA_HAS_WON_SINGLES_50: + gSaveBlock2Ptr->frontier.domeHasWonSingles50 = gSpecialVar_0x8006; break; - case DOME_DATA_5: - gSaveBlock2Ptr->frontier.field_D08_3 = gSpecialVar_0x8006; + case DOME_DATA_HAS_WON_SINGLES_OPEN: + gSaveBlock2Ptr->frontier.domeHasWonSinglesOpen = gSpecialVar_0x8006; break; - case DOME_DATA_6: + case DOME_DATA_ATTEMPTED_CHALLENGE: if (VarGet(VAR_FRONTIER_BATTLE_MODE) == FRONTIER_MODE_DOUBLES) { - if (lvlMode) - gSaveBlock2Ptr->frontier.field_D08_5 = gSpecialVar_0x8006; + if (lvlMode != FRONTIER_LVL_50) + gSaveBlock2Ptr->frontier.domeAttemptedDoublesOpen = gSpecialVar_0x8006; else - gSaveBlock2Ptr->frontier.field_D08_4 = gSpecialVar_0x8006; + gSaveBlock2Ptr->frontier.domeAttemptedDoubles50 = gSpecialVar_0x8006; } else { - if (lvlMode) - gSaveBlock2Ptr->frontier.field_D08_1 = gSpecialVar_0x8006; + if (lvlMode != FRONTIER_LVL_50) + gSaveBlock2Ptr->frontier.domeAttemptedSinglesOpen = gSpecialVar_0x8006; else - gSaveBlock2Ptr->frontier.field_D08_0 = gSpecialVar_0x8006; + gSaveBlock2Ptr->frontier.domeAttemptedSingles50 = gSpecialVar_0x8006; } break; - case DOME_DATA_7: + case DOME_DATA_HAS_WON_CHALLENGE: if (VarGet(VAR_FRONTIER_BATTLE_MODE) == FRONTIER_MODE_DOUBLES) { - if (lvlMode) - gSaveBlock2Ptr->frontier.field_D08_7 = gSpecialVar_0x8006; + if (lvlMode != FRONTIER_LVL_50) + gSaveBlock2Ptr->frontier.domeHasWonDoublesOpen = gSpecialVar_0x8006; else - gSaveBlock2Ptr->frontier.field_D08_6 = gSpecialVar_0x8006; + gSaveBlock2Ptr->frontier.domeHasWonDoubles50 = gSpecialVar_0x8006; } else { - if (lvlMode) - gSaveBlock2Ptr->frontier.field_D08_3 = gSpecialVar_0x8006; + if (lvlMode != FRONTIER_LVL_50) + gSaveBlock2Ptr->frontier.domeHasWonSinglesOpen = gSpecialVar_0x8006; else - gSaveBlock2Ptr->frontier.field_D08_2 = gSpecialVar_0x8006; + gSaveBlock2Ptr->frontier.domeHasWonSingles50 = gSpecialVar_0x8006; } break; - case DOME_DATA_8: + case DOME_DATA_SELECTED_MONS: gSaveBlock2Ptr->frontier.selectedPartyMons[3] = T1_READ_16(gSelectedOrderFromParty); break; } @@ -2417,18 +2428,18 @@ static void InitDomeTrainers(void) species[1] = 0; species[2] = 0; statSums = AllocZeroed(sizeof(u16) * DOME_TOURNAMENT_TRAINERS_COUNT); - statValues = AllocZeroed(sizeof(int) * 6); + statValues = AllocZeroed(sizeof(int) * NUM_STATS); - gSaveBlock2Ptr->frontier.field_D0A = gSaveBlock2Ptr->frontier.lvlMode + 1; - gSaveBlock2Ptr->frontier.field_D0B = VarGet(VAR_FRONTIER_BATTLE_MODE) + 1; - gSaveBlock2Ptr->frontier.domeTrainers[0].trainerId = TRAINER_PLAYER; - gSaveBlock2Ptr->frontier.domeTrainers[0].isEliminated = 0; - gSaveBlock2Ptr->frontier.domeTrainers[0].eliminatedAt = 0; - gSaveBlock2Ptr->frontier.domeTrainers[0].unk3 = 0; + gSaveBlock2Ptr->frontier.domeLvlMode = gSaveBlock2Ptr->frontier.lvlMode + 1; + gSaveBlock2Ptr->frontier.domeBattleMode = VarGet(VAR_FRONTIER_BATTLE_MODE) + 1; + DOME_TRAINERS[0].trainerId = TRAINER_PLAYER; + DOME_TRAINERS[0].isEliminated = FALSE; + DOME_TRAINERS[0].eliminatedAt = 0; + DOME_TRAINERS[0].forfeited = FALSE; for (i = 0; i < FRONTIER_PARTY_SIZE; i++) { - gSaveBlock2Ptr->frontier.domeMonIds[0][i] = GetMonData(&gPlayerParty[gSaveBlock2Ptr->frontier.selectedPartyMons[i] - 1], MON_DATA_SPECIES, NULL); + DOME_MONS[0][i] = GetMonData(&gPlayerParty[gSaveBlock2Ptr->frontier.selectedPartyMons[i] - 1], MON_DATA_SPECIES, NULL); for (j = 0; j < MAX_MON_MOVES; j++) gSaveBlock2Ptr->frontier.field_EFC[i].moves[j] = GetMonData(&gPlayerParty[gSaveBlock2Ptr->frontier.selectedPartyMons[i] - 1], MON_DATA_MOVE1 + j, NULL); for (j = 0; j < NUM_STATS; j++) @@ -2446,11 +2457,11 @@ static void InitDomeTrainers(void) trainerId = sub_8162548(GetCurrentFacilityWinStreak(), 0); for (j = 1; j < i; j++) { - if (gSaveBlock2Ptr->frontier.domeTrainers[j].trainerId == trainerId) + if (DOME_TRAINERS[j].trainerId == trainerId) break; } } while (j != i); - gSaveBlock2Ptr->frontier.domeTrainers[i].trainerId = trainerId; + DOME_TRAINERS[i].trainerId = trainerId; } else { @@ -2459,11 +2470,11 @@ static void InitDomeTrainers(void) trainerId = sub_8162548(GetCurrentFacilityWinStreak() + 1, 0); for (j = 1; j < i; j++) { - if (gSaveBlock2Ptr->frontier.domeTrainers[j].trainerId == trainerId) + if (DOME_TRAINERS[j].trainerId == trainerId) break; } } while (j != i); - gSaveBlock2Ptr->frontier.domeTrainers[i].trainerId = trainerId; + DOME_TRAINERS[i].trainerId = trainerId; } for (j = 0; j < FRONTIER_PARTY_SIZE; j++) @@ -2474,7 +2485,7 @@ static void InitDomeTrainers(void) monSetId = RandomizeFacilityTrainerMonSet(trainerId); for (k = 0; k < j; k++) { - int checkingMonSetId = gSaveBlock2Ptr->frontier.domeMonIds[i][k]; + int checkingMonSetId = DOME_MONS[i][k]; if (checkingMonSetId == monSetId || species[0] == gFacilityTrainerMons[monSetId].species || species[1] == gFacilityTrainerMons[monSetId].species @@ -2483,13 +2494,13 @@ static void InitDomeTrainers(void) } } while (k != j); - gSaveBlock2Ptr->frontier.domeMonIds[i][j] = monSetId; + DOME_MONS[i][j] = monSetId; species[j] = gFacilityTrainerMons[monSetId].species; } - gSaveBlock2Ptr->frontier.domeTrainers[i].isEliminated = 0; - gSaveBlock2Ptr->frontier.domeTrainers[i].eliminatedAt = 0; - gSaveBlock2Ptr->frontier.domeTrainers[i].unk3 = 0; + DOME_TRAINERS[i].isEliminated = FALSE; + DOME_TRAINERS[i].eliminatedAt = 0; + DOME_TRAINERS[i].forfeited = FALSE; } monTypesBits = 0; @@ -2521,13 +2532,13 @@ static void InitDomeTrainers(void) { monTypesBits = 0; statSums[i] = 0; - ivs = GetDomeTrainerMonIvs(gSaveBlock2Ptr->frontier.domeTrainers[i].trainerId); + ivs = GetDomeTrainerMonIvs(DOME_TRAINERS[i].trainerId); for (j = 0; j < FRONTIER_PARTY_SIZE; j++) { - CalcDomeMonStats(gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[i][j]].species, + CalcDomeMonStats(gFacilityTrainerMons[DOME_MONS[i][j]].species, monLevel, ivs, - gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[i][j]].evSpread, - gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[i][j]].nature, + gFacilityTrainerMons[DOME_MONS[i][j]].evSpread, + gFacilityTrainerMons[DOME_MONS[i][j]].nature, statValues); statSums[i] += statValues[STAT_ATK]; @@ -2536,8 +2547,8 @@ static void InitDomeTrainers(void) statSums[i] += statValues[STAT_SPDEF]; statSums[i] += statValues[STAT_SPEED]; statSums[i] += statValues[STAT_HP]; - monTypesBits |= gBitTable[gBaseStats[gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[i][j]].species].type1]; - monTypesBits |= gBitTable[gBaseStats[gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[i][j]].species].type2]; + monTypesBits |= gBitTable[gBaseStats[gFacilityTrainerMons[DOME_MONS[i][j]].species].type1]; + monTypesBits |= gBitTable[gBaseStats[gFacilityTrainerMons[DOME_MONS[i][j]].species].type2]; } for (monTypesCount = 0, j = 0; j < 32; j++) @@ -2561,9 +2572,9 @@ static void InitDomeTrainers(void) { if (statSums[i] == statSums[j]) { - if (gSaveBlock2Ptr->frontier.domeTrainers[j].trainerId == TRAINER_PLAYER) + if (DOME_TRAINERS[j].trainerId == TRAINER_PLAYER) SwapDomeTrainers(i, j, statSums); - else if (gSaveBlock2Ptr->frontier.domeTrainers[i].trainerId > gSaveBlock2Ptr->frontier.domeTrainers[j].trainerId) + else if (DOME_TRAINERS[i].trainerId > DOME_TRAINERS[j].trainerId) SwapDomeTrainers(i, j, statSums); } } @@ -2574,23 +2585,23 @@ static void InitDomeTrainers(void) { for (i = 0; i < DOME_TOURNAMENT_TRAINERS_COUNT; i++) { - if (gSaveBlock2Ptr->frontier.domeTrainers[i].trainerId == TRAINER_PLAYER) + if (DOME_TRAINERS[i].trainerId == TRAINER_PLAYER) break; } if (gUnknown_0860D3F1[i][0] != 0) { j = 0; - gSaveBlock2Ptr->frontier.domeTrainers[j].trainerId = TRAINER_FRONTIER_BRAIN; + DOME_TRAINERS[j].trainerId = TRAINER_FRONTIER_BRAIN; } else { j = 1; - gSaveBlock2Ptr->frontier.domeTrainers[j].trainerId = TRAINER_FRONTIER_BRAIN; + DOME_TRAINERS[j].trainerId = TRAINER_FRONTIER_BRAIN; } for (i = 0; i < FRONTIER_PARTY_SIZE; i++) - gSaveBlock2Ptr->frontier.domeMonIds[j][i] = GetFrontierBrainMonSpecies(i); + DOME_MONS[j][i] = GetFrontierBrainMonSpecies(i); } Free(statSums); @@ -2649,10 +2660,10 @@ static void SwapDomeTrainers(int id1, int id2, u16 *statsArray) u16 temp; SWAP(statsArray[id1], statsArray[id2], temp); - SWAP(gSaveBlock2Ptr->frontier.domeTrainers[id1].trainerId, gSaveBlock2Ptr->frontier.domeTrainers[id2].trainerId, temp); + SWAP(DOME_TRAINERS[id1].trainerId, DOME_TRAINERS[id2].trainerId, temp); - for (i = 0; i < 3; i++) - SWAP(gSaveBlock2Ptr->frontier.domeMonIds[id1][i], gSaveBlock2Ptr->frontier.domeMonIds[id2][i], temp); + for (i = 0; i < FRONTIER_PARTY_SIZE; i++) + SWAP(DOME_MONS[id1][i], DOME_MONS[id2][i], temp); } static void BufferDomeRoundText(void) @@ -2668,9 +2679,9 @@ static void BufferDomeOpponentName(void) static void InitDomeOpponentParty(void) { - gUnknown_0203CD70 = 0; - gUnknown_0203CD74 = GetMonData(&gPlayerParty[0], MON_DATA_MAX_HP, NULL); - gUnknown_0203CD74 += GetMonData(&gPlayerParty[1], MON_DATA_MAX_HP, NULL); + gPlayerPartyLostHP = 0; + sPlayerPartyMaxHP = GetMonData(&gPlayerParty[0], MON_DATA_MAX_HP, NULL); + sPlayerPartyMaxHP += GetMonData(&gPlayerParty[1], MON_DATA_MAX_HP, NULL); CalculatePlayerPartyCount(); CreateDomeOpponentMons(TrainerIdToTournamentId(gTrainerBattleOpponent_A)); } @@ -2678,160 +2689,165 @@ static void InitDomeOpponentParty(void) static void CreateDomeOpponentMon(u8 monPartyId, u16 tournamentTrainerId, u8 tournamentMonId, u32 otId) { int i; - u8 happiness = 0xFF; - u8 fixedIv = GetDomeTrainerMonIvs(tournamentTrainerId); // BUG: Should be using trainerId instead of tournamentTrainerId. As a result, all Pokemon have ivs of 3. + u8 friendship = MAX_FRIENDSHIP; + u8 fixedIv = GetDomeTrainerMonIvs(tournamentTrainerId); // BUG: Should be using DOME_TRAINERS[tournamentTrainerId].trainerId instead of tournamentTrainerId. As a result, all Pokemon have ivs of 3. u8 level = SetFacilityPtrsGetLevel(); CreateMonWithEVSpreadNatureOTID(&gEnemyParty[monPartyId], - gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[tournamentTrainerId][tournamentMonId]].species, + gFacilityTrainerMons[DOME_MONS[tournamentTrainerId][tournamentMonId]].species, level, - gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[tournamentTrainerId][tournamentMonId]].nature, + gFacilityTrainerMons[DOME_MONS[tournamentTrainerId][tournamentMonId]].nature, fixedIv, - gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[tournamentTrainerId][tournamentMonId]].evSpread, otId); + gFacilityTrainerMons[DOME_MONS[tournamentTrainerId][tournamentMonId]].evSpread, otId); - happiness = 0xFF; + friendship = MAX_FRIENDSHIP; for (i = 0; i < MAX_MON_MOVES; i++) { SetMonMoveSlot(&gEnemyParty[monPartyId], - gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[tournamentTrainerId][tournamentMonId]].moves[i], i); - if (gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[tournamentTrainerId][tournamentMonId]].moves[i] == MOVE_FRUSTRATION) - happiness = 0; + gFacilityTrainerMons[DOME_MONS[tournamentTrainerId][tournamentMonId]].moves[i], i); + if (gFacilityTrainerMons[DOME_MONS[tournamentTrainerId][tournamentMonId]].moves[i] == MOVE_FRUSTRATION) + friendship = 0; } - SetMonData(&gEnemyParty[monPartyId], MON_DATA_FRIENDSHIP, &happiness); + SetMonData(&gEnemyParty[monPartyId], MON_DATA_FRIENDSHIP, &friendship); SetMonData(&gEnemyParty[monPartyId], MON_DATA_HELD_ITEM, - &gBattleFrontierHeldItems[gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[tournamentTrainerId][tournamentMonId]].itemTableId]); + &gBattleFrontierHeldItems[gFacilityTrainerMons[DOME_MONS[tournamentTrainerId][tournamentMonId]].itemTableId]); } static void CreateDomeOpponentMons(u16 tournamentTrainerId) { u8 monsCount = 0; u32 otId = 0; - int i, bits; + int i, selectedMonBits; ZeroEnemyPartyMons(); - bits = GetDomeTrainerMonCountInBits(tournamentTrainerId); + selectedMonBits = GetDomeTrainerSelectedMons(tournamentTrainerId); otId = Random32(); + if (Random() % 10 > 5) { - for (i = 0; i < 3; i++) + // Create mon if it was selected, starting from front + for (i = 0; i < FRONTIER_PARTY_SIZE; i++) { - if (bits & 1) + if (selectedMonBits & 1) { CreateDomeOpponentMon(monsCount, tournamentTrainerId, i, otId); monsCount++; } - bits >>= 1; + selectedMonBits >>= 1; } } else { - for (i = 2; i >= 0; i--) + // Create mon if it was selected, starting from back + for (i = FRONTIER_PARTY_SIZE - 1; i >= 0; i--) { - if (bits & 4) + if (selectedMonBits & 4) { CreateDomeOpponentMon(monsCount, tournamentTrainerId, i, otId); monsCount++; } - bits <<= 1; + selectedMonBits <<= 1; } } } -int GetDomeTrainerMonCountInBits(u16 tournamentTrainerId) +int GetDomeTrainerSelectedMons(u16 tournamentTrainerId) { - int bits; + int selectedMonBits; if (Random() & 1) { - bits = sub_818FCBC(tournamentTrainerId, FALSE); - if (bits == 0) - bits = sub_818FDB8(tournamentTrainerId, TRUE); + selectedMonBits = sub_818FCBC(tournamentTrainerId, FALSE); + if (selectedMonBits == 0) + selectedMonBits = sub_818FDB8(tournamentTrainerId, TRUE); } else { - bits = sub_818FDB8(tournamentTrainerId, FALSE); - if (bits == 0) - bits = sub_818FCBC(tournamentTrainerId, TRUE); + selectedMonBits = sub_818FDB8(tournamentTrainerId, FALSE); + if (selectedMonBits == 0) + selectedMonBits = sub_818FCBC(tournamentTrainerId, TRUE); } - return bits; + return selectedMonBits; } -static int sub_818FCBC(u16 tournamentTrainerId, bool8 arg1) +static int sub_818FCBC(u16 tournamentTrainerId, bool8 allowRandom) { int i, moveId, playerMonId; - int array[FRONTIER_PARTY_SIZE]; + int partyMovePoints[FRONTIER_PARTY_SIZE]; for (i = 0; i < FRONTIER_PARTY_SIZE; i++) { - array[i] = 0; + partyMovePoints[i] = 0; for (moveId = 0; moveId < MAX_MON_MOVES; moveId++) { for (playerMonId = 0; playerMonId < FRONTIER_PARTY_SIZE; playerMonId++) { - if (gSaveBlock2Ptr->frontier.domeTrainers[tournamentTrainerId].trainerId == TRAINER_FRONTIER_BRAIN) + if (DOME_TRAINERS[tournamentTrainerId].trainerId == TRAINER_FRONTIER_BRAIN) { - array[i] += GetTypeEffectivenessPoints(GetFrontierBrainMonMove(i, moveId), - GetMonData(&gPlayerParty[playerMonId], MON_DATA_SPECIES, NULL), 0); + partyMovePoints[i] += GetTypeEffectivenessPoints(GetFrontierBrainMonMove(i, moveId), + GetMonData(&gPlayerParty[playerMonId], MON_DATA_SPECIES, NULL), MON_DATA_PERSONALITY); } else { - array[i] += GetTypeEffectivenessPoints(gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[tournamentTrainerId][i]].moves[moveId], - GetMonData(&gPlayerParty[playerMonId], MON_DATA_SPECIES, NULL), 0); + partyMovePoints[i] += GetTypeEffectivenessPoints(gFacilityTrainerMons[DOME_MONS[tournamentTrainerId][i]].moves[moveId], + GetMonData(&gPlayerParty[playerMonId], MON_DATA_SPECIES, NULL), MON_DATA_PERSONALITY); } } } } - return sub_818FEB4(array, arg1); + return SelectOpponentMonsFromParty(partyMovePoints, allowRandom); } -static int sub_818FDB8(u16 tournamentTrainerId, bool8 arg1) +static int sub_818FDB8(u16 tournamentTrainerId, bool8 allowRandom) { int i, moveId, playerMonId; - int array[FRONTIER_PARTY_SIZE]; + int partyMovePoints[FRONTIER_PARTY_SIZE]; for (i = 0; i < FRONTIER_PARTY_SIZE; i++) { - array[i] = 0; + partyMovePoints[i] = 0; for (moveId = 0; moveId < MAX_MON_MOVES; moveId++) { for (playerMonId = 0; playerMonId < FRONTIER_PARTY_SIZE; playerMonId++) { - if (gSaveBlock2Ptr->frontier.domeTrainers[tournamentTrainerId].trainerId == TRAINER_FRONTIER_BRAIN) + if (DOME_TRAINERS[tournamentTrainerId].trainerId == TRAINER_FRONTIER_BRAIN) { - array[i] += GetTypeEffectivenessPoints(GetFrontierBrainMonMove(i, moveId), - GetMonData(&gPlayerParty[playerMonId], MON_DATA_SPECIES, NULL), 1); + partyMovePoints[i] += GetTypeEffectivenessPoints(GetFrontierBrainMonMove(i, moveId), + GetMonData(&gPlayerParty[playerMonId], MON_DATA_SPECIES, NULL), MON_DATA_OT_ID); } else { - array[i] += GetTypeEffectivenessPoints(gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[tournamentTrainerId][i]].moves[moveId], - GetMonData(&gPlayerParty[playerMonId], MON_DATA_SPECIES, NULL), 1); + partyMovePoints[i] += GetTypeEffectivenessPoints(gFacilityTrainerMons[DOME_MONS[tournamentTrainerId][i]].moves[moveId], + GetMonData(&gPlayerParty[playerMonId], MON_DATA_SPECIES, NULL), MON_DATA_OT_ID); } } } } - return sub_818FEB4(array, arg1); + return SelectOpponentMonsFromParty(partyMovePoints, allowRandom); } -static int sub_818FEB4(int *arr, bool8 arg1) +static int SelectOpponentMonsFromParty(int *partyMovePoints, bool8 allowRandom) { int i, j; - int bits = 0; - int array[3]; + int selectedMonBits = 0; + int partyPositions[FRONTIER_PARTY_SIZE]; - for (i = 0; i < 3; i++) - array[i] = i; + for (i = 0; i < FRONTIER_PARTY_SIZE; i++) + partyPositions[i] = i; - if (arr[0] == arr[1] && arr[0] == arr[2]) + // All party mons have equal move score totals, choose randomly + if (partyMovePoints[0] == partyMovePoints[1] + && partyMovePoints[0] == partyMovePoints[2]) { - if (arg1) + if (allowRandom) { i = 0; - while (i != 2) + while (i != DOME_BATTLE_PARTY_SIZE) { - u32 rand = Random() & 3; - if (rand != 3 && !(bits & gBitTable[rand])) + u32 rand = Random() & FRONTIER_PARTY_SIZE; + if (rand != FRONTIER_PARTY_SIZE && !(selectedMonBits & gBitTable[rand])) { - bits |= gBitTable[rand]; + selectedMonBits |= gBitTable[rand]; i++; } } @@ -2839,43 +2855,33 @@ static int sub_818FEB4(int *arr, bool8 arg1) } else { - for (i = 0; i < 2; i++) + for (i = 0; i < DOME_BATTLE_PARTY_SIZE; i++) { - for (j = i + 1; j < 3; j++) + for (j = i + 1; j < FRONTIER_PARTY_SIZE; j++) { int temp; - if (arr[i] < arr[j]) + if (partyMovePoints[i] < partyMovePoints[j]) { - temp = arr[i]; - arr[i] = arr[j]; - arr[j] = temp; - - temp = array[i]; - array[i] = array[j]; - array[j] = temp; + SWAP(partyMovePoints[i], partyMovePoints[j],temp) + SWAP(partyPositions[i], partyPositions[j], temp) } - if (arr[i] == arr[j] && (Random() & 1)) + if (partyMovePoints[i] == partyMovePoints[j] && (Random() & 1)) { - temp = arr[i]; - arr[i] = arr[j]; - arr[j] = temp; - - temp = array[i]; - array[i] = array[j]; - array[j] = temp; + SWAP(partyMovePoints[i], partyMovePoints[j],temp) + SWAP(partyPositions[i], partyPositions[j], temp) } } } - for (i = 0; i < 2; i++) + for (i = 0; i < DOME_BATTLE_PARTY_SIZE; i++) { - bits |= gBitTable[array[i]]; + selectedMonBits |= gBitTable[partyPositions[i]]; } } - return bits; + return selectedMonBits; } #define TYPE_x0 0 @@ -2886,6 +2892,7 @@ static int sub_818FEB4(int *arr, bool8 arg1) #define TYPE_x4 80 // Functionally equivalent, while loop is impossible to match. +// arg2 is either 2, a personality, or an OTID #ifdef NONMATCHING static int GetTypeEffectivenessPoints(int move, int targetSpecies, int arg2) { @@ -2908,25 +2915,22 @@ static int GetTypeEffectivenessPoints(int move, int targetSpecies, int arg2) } else { - while (gTypeEffectiveness[i + 0] != TYPE_ENDTABLE) + while (TYPE_EFFECT_ATK_TYPE(i) != TYPE_ENDTABLE) { - if (gTypeEffectiveness[i + 0] == TYPE_FORESIGHT) + if (TYPE_EFFECT_ATK_TYPE(i) == TYPE_FORESIGHT) { i += 3; + continue; } - else + else if (TYPE_EFFECT_ATK_TYPE(i) == moveType) { - u8 val = gTypeEffectiveness[i + 0]; - if (val == moveType) - { - // BUG: * 2 is not necessary and makes the condition always false if the ability is wonder guard. - if (gTypeEffectiveness[i + 1] == defType1 && (defAbility != ABILITY_WONDER_GUARD || gTypeEffectiveness[i + 2] == TYPE_MUL_SUPER_EFFECTIVE * 2)) - typePower = (gTypeEffectiveness[i + 2] * typePower) / 10; - if (gTypeEffectiveness[i + 1] == defType2 && defType1 != defType2 && (defAbility != ABILITY_WONDER_GUARD || gTypeEffectiveness[i + 2] == TYPE_MUL_SUPER_EFFECTIVE * 2)) - typePower = (gTypeEffectiveness[i + 2] * typePower) / 10; - } - i += 3; + // BUG: * 2 is not necessary and makes the condition always false if the ability is wonder guard. + if (TYPE_EFFECT_DEF_TYPE(i) == defType1 && (defAbility != ABILITY_WONDER_GUARD || TYPE_EFFECT_MULTIPLIER(i) == TYPE_MUL_SUPER_EFFECTIVE * 2)) + typePower = (typePower * TYPE_EFFECT_MULTIPLIER(i)) / 10; + if (TYPE_EFFECT_DEF_TYPE(i) == defType2 && defType1 != defType2 && (defAbility != ABILITY_WONDER_GUARD || TYPE_EFFECT_MULTIPLIER(i) == TYPE_MUL_SUPER_EFFECTIVE * 2)) + typePower = (typePower * TYPE_EFFECT_MULTIPLIER(i)) / 10; } + i += 3; } } @@ -2935,19 +2939,19 @@ static int GetTypeEffectivenessPoints(int move, int targetSpecies, int arg2) case 0: switch (typePower) { - case 10: - case 5: - case 0: + case TYPE_x0_50: + case TYPE_x0_25: + case TYPE_x0: default: typePower = 0; break; - case 20: + case TYPE_x1: typePower = 2; break; - case 40: + case TYPE_x2: typePower = 4; break; - case 80: + case TYPE_x4: typePower = 8; break; } @@ -2956,22 +2960,22 @@ static int GetTypeEffectivenessPoints(int move, int targetSpecies, int arg2) switch (typePower) { default: - case 20: + case TYPE_x1: typePower = 0; break; - case 5: + case TYPE_x0_25: typePower = 4; break; - case 0: + case TYPE_x0: typePower = 8; break; - case 10: + case TYPE_x0_50: typePower = 2; break; - case 40: + case TYPE_x2: typePower = -2; break; - case 80: + case TYPE_x4: typePower = -4; break; } @@ -3275,7 +3279,7 @@ static int TournamentIdOfOpponent(int roundId, int trainerId) for (i = 0; i < DOME_TOURNAMENT_TRAINERS_COUNT; i++) { - if (gSaveBlock2Ptr->frontier.domeTrainers[i].trainerId == trainerId) + if (DOME_TRAINERS[i].trainerId == trainerId) break; } @@ -3288,7 +3292,7 @@ static int TournamentIdOfOpponent(int roundId, int trainerId) for (j = sIdToOpponentId[i][roundId]; j < val; j++) { - if (gUnknown_0860D14C[j] != i && !gSaveBlock2Ptr->frontier.domeTrainers[gUnknown_0860D14C[j]].isEliminated) + if (gUnknown_0860D14C[j] != i && !DOME_TRAINERS[gUnknown_0860D14C[j]].isEliminated) break; } @@ -3299,7 +3303,7 @@ static int TournamentIdOfOpponent(int roundId, int trainerId) } else { - if (!gSaveBlock2Ptr->frontier.domeTrainers[sIdToOpponentId[i][roundId]].isEliminated) + if (!DOME_TRAINERS[sIdToOpponentId[i][roundId]].isEliminated) return sIdToOpponentId[i][roundId]; else return 0xFF; @@ -3313,7 +3317,7 @@ static void SetDomeOpponentId(void) static u16 TrainerIdOfPlayerOpponent(void) { - return gSaveBlock2Ptr->frontier.domeTrainers[TournamentIdOfOpponent(gSaveBlock2Ptr->frontier.curChallengeBattleNum, TRAINER_PLAYER)].trainerId; + return DOME_TRAINERS[TournamentIdOfOpponent(gSaveBlock2Ptr->frontier.curChallengeBattleNum, TRAINER_PLAYER)].trainerId; } static void SetDomeOpponentGraphicsId(void) @@ -3369,8 +3373,8 @@ static void Task_ShowOpponentInfo(u8 taskId) EnableInterrupts(INTR_FLAG_VBLANK); CpuFill32(0, (void *)VRAM, VRAM_SIZE); ResetBgsAndClearDma3BusyFlags(0); - InitBgsFromTemplates(0, gUnknown_0860CE84, ARRAY_COUNT(gUnknown_0860CE84)); - InitWindows(gUnknown_0860CEB4); + InitBgsFromTemplates(0, sOpponentInfoBgTemplates, ARRAY_COUNT(sOpponentInfoBgTemplates)); + InitWindows(sOpponentInfoWindowTemplates); DeactivateAllTextPrinters(); gBattle_BG0_X = 0; gBattle_BG0_Y = 0; @@ -3395,7 +3399,7 @@ static void Task_ShowOpponentInfo(u8 taskId) SetGpuReg(REG_OFFSET_WIN1H, 0); SetGpuReg(REG_OFFSET_WIN1V, 0); SetGpuReg(REG_OFFSET_WININ, 0); - SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG0 | WINOUT_WIN01_BG1 | WINOUT_WIN01_BG2 | WINOUT_WIN01_BG3 | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR); + SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR); ResetPaletteFade(); ResetSpriteData(); FreeAllSpritePalettes(); @@ -3658,12 +3662,12 @@ static void sub_8190B40(struct Sprite *sprite) { if (sprite->data[1]) { - if ((gSaveBlock2Ptr->frontier.domeTrainers[tournmanetTrainerId].isEliminated - && sBattleDomeStruct->unk_10 - 1 < gSaveBlock2Ptr->frontier.domeTrainers[tournmanetTrainerId].eliminatedAt)) + if ((DOME_TRAINERS[tournmanetTrainerId].isEliminated + && sBattleDomeStruct->unk_10 - 1 < DOME_TRAINERS[tournmanetTrainerId].eliminatedAt)) { sprite->invisible = FALSE; } - else if (!gSaveBlock2Ptr->frontier.domeTrainers[tournmanetTrainerId].isEliminated + else if (!DOME_TRAINERS[tournmanetTrainerId].isEliminated && sBattleDomeStruct->unk_10 - 1 < roundId) { sprite->invisible = FALSE; @@ -4501,12 +4505,12 @@ static u8 sub_819221C(u8 taskId) } else if (gMain.newKeys & DPAD_RIGHT) { - if (gSaveBlock2Ptr->frontier.domeTrainers[r10].isEliminated && sBattleDomeStruct->unk_10 - 1 < gSaveBlock2Ptr->frontier.domeTrainers[r10].eliminatedAt) + if (DOME_TRAINERS[r10].isEliminated && sBattleDomeStruct->unk_10 - 1 < DOME_TRAINERS[r10].eliminatedAt) { sBattleDomeStruct->unk_10++; retVal = 4; } - if (!gSaveBlock2Ptr->frontier.domeTrainers[r10].isEliminated && sBattleDomeStruct->unk_10 - 1 < roundId) + if (!DOME_TRAINERS[r10].isEliminated && sBattleDomeStruct->unk_10 - 1 < roundId) { sBattleDomeStruct->unk_10++; retVal = 4; @@ -4582,7 +4586,7 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId) int x = 0, y = 0; u8 palSlot = 0; s16 *allocatedArray = AllocZeroed(sizeof(s16) * 18); - trainerId = gSaveBlock2Ptr->frontier.domeTrainers[trainerTournamentId].trainerId; + trainerId = DOME_TRAINERS[trainerTournamentId].trainerId; if (flags & 1) arrId = 8, windowId = 9, palSlot = 2; @@ -4609,7 +4613,7 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId) { if (trainerId == TRAINER_PLAYER) { - sBattleDomeStruct->arr[2 + i + arrId] = CreateMonIcon(gSaveBlock2Ptr->frontier.domeMonIds[trainerTournamentId][i], + sBattleDomeStruct->arr[2 + i + arrId] = CreateMonIcon(DOME_MONS[trainerTournamentId][i], SpriteCb_MonIcon, x | sInfoTrainerMonX[i], y + sInfoTrainerMonY[i], @@ -4618,7 +4622,7 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId) } else if (trainerId == TRAINER_FRONTIER_BRAIN) { - sBattleDomeStruct->arr[2 + i + arrId] = CreateMonIcon(gSaveBlock2Ptr->frontier.domeMonIds[trainerTournamentId][i], + sBattleDomeStruct->arr[2 + i + arrId] = CreateMonIcon(DOME_MONS[trainerTournamentId][i], SpriteCb_MonIcon, x | sInfoTrainerMonX[i], y + sInfoTrainerMonY[i], @@ -4627,7 +4631,7 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId) } else { - sBattleDomeStruct->arr[2 + i + arrId] = CreateMonIcon(gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[trainerTournamentId][i]].species, + sBattleDomeStruct->arr[2 + i + arrId] = CreateMonIcon(gFacilityTrainerMons[DOME_MONS[trainerTournamentId][i]].species, SpriteCb_MonIcon, x | sInfoTrainerMonX[i], y + sInfoTrainerMonY[i], @@ -4646,9 +4650,9 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId) textPrinter.letterSpacing = 2; textPrinter.lineSpacing = 0; textPrinter.unk = 0; - textPrinter.fgColor = 14; - textPrinter.bgColor = 0; - textPrinter.shadowColor = 13; + textPrinter.fgColor = TEXT_DYNAMIC_COLOR_5; + textPrinter.bgColor = TEXT_COLOR_TRANSPARENT; + textPrinter.shadowColor = TEXT_DYNAMIC_COLOR_4; i = 0; if (trainerId == TRAINER_PLAYER) @@ -4688,13 +4692,13 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId) for (i = 0; i < 3; i++) { - textPrinter.currentY = gUnknown_0860D346[i]; + textPrinter.currentY = sSpeciesNameTextYCoords[i]; if (trainerId == TRAINER_PLAYER) - textPrinter.currentChar = gSpeciesNames[gSaveBlock2Ptr->frontier.domeMonIds[trainerTournamentId][i]]; + textPrinter.currentChar = gSpeciesNames[DOME_MONS[trainerTournamentId][i]]; else if (trainerId == TRAINER_FRONTIER_BRAIN) - textPrinter.currentChar = gSpeciesNames[gSaveBlock2Ptr->frontier.domeMonIds[trainerTournamentId][i]]; + textPrinter.currentChar = gSpeciesNames[DOME_MONS[trainerTournamentId][i]]; else - textPrinter.currentChar = gSpeciesNames[gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[trainerTournamentId][i]].species]; + textPrinter.currentChar = gSpeciesNames[gFacilityTrainerMons[DOME_MONS[trainerTournamentId][i]].species]; textPrinter.windowId = 1 + i + windowId; if (i == 1) @@ -4721,7 +4725,7 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId) textPrinter.currentY = 4; AddTextPrinter(&textPrinter, 0, NULL); - for (i = 0; i < 3; i++) + for (i = 0; i < FRONTIER_PARTY_SIZE; i++) { for (j = 0; j < MAX_MON_MOVES; j++) { @@ -4732,7 +4736,7 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId) else if (trainerId == TRAINER_PLAYER) allocatedArray[k] += sMovePointsForDomeTrainers[gSaveBlock2Ptr->frontier.field_EFC[i].moves[j]][k]; else - allocatedArray[k] += sMovePointsForDomeTrainers[gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[trainerTournamentId][i]].moves[j]][k]; + allocatedArray[k] += sMovePointsForDomeTrainers[gFacilityTrainerMons[DOME_MONS[trainerTournamentId][i]].moves[j]][k]; } } } @@ -4764,9 +4768,9 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId) if (trainerId == TRAINER_FRONTIER_BRAIN || trainerId == TRAINER_PLAYER) { - for (i = 0; i < 3; i++) + for (i = 0; i < FRONTIER_PARTY_SIZE; i++) { - for (j = 0; j < 6; j++) + for (j = 0; j < NUM_STATS; j++) { if (trainerId == TRAINER_FRONTIER_BRAIN) allocatedArray[j] = GetFrontierBrainMonEvs(i, j); @@ -4805,7 +4809,7 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId) { for (i = 0; i < 3; i++) { - int evBits = gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[trainerTournamentId][i]].evSpread; + int evBits = gFacilityTrainerMons[DOME_MONS[trainerTournamentId][i]].evSpread; for (k = 0, j = 0; j < NUM_STATS; j++) { allocatedArray[j] = 0; @@ -4814,7 +4818,7 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId) evBits >>= 1; } k = MAX_TOTAL_EVS / k; - evBits = gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[trainerTournamentId][i]].evSpread; + evBits = gFacilityTrainerMons[DOME_MONS[trainerTournamentId][i]].evSpread; for (j = 0; j < NUM_STATS; j++) { if (evBits & 1) @@ -4825,7 +4829,7 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId) allocatedArray[6] += allocatedArray[0]; for (j = 0; j < 5; j++) { - nature = gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[trainerTournamentId][i]].nature; + nature = gFacilityTrainerMons[DOME_MONS[trainerTournamentId][i]].nature; if (gNatureStatTable[nature][j] > 0) { allocatedArray[j + 7] += (allocatedArray[j + 1] * 110) / 100; @@ -4933,25 +4937,25 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId) Free(allocatedArray); } -static int sub_8192F08(u8 arg0, u8 *arg1) +static int sub_8192F08(u8 matchNum, u8 *arg1) { int i; u8 tournamentId; int retVal = 0; int count = 0; - for (i = gUnknown_0860D3C4[arg0][0]; i < gUnknown_0860D3C4[arg0][0] + gUnknown_0860D3C4[arg0][1]; i++) + for (i = gUnknown_0860D3C4[matchNum][0]; i < gUnknown_0860D3C4[matchNum][0] + gUnknown_0860D3C4[matchNum][1]; i++) { tournamentId = gUnknown_0860D3B4[i]; - if (!gSaveBlock2Ptr->frontier.domeTrainers[tournamentId].isEliminated) + if (!DOME_TRAINERS[tournamentId].isEliminated) { arg1[count] = tournamentId; - if (gSaveBlock2Ptr->frontier.domeTrainers[tournamentId].trainerId == TRAINER_PLAYER) + if (DOME_TRAINERS[tournamentId].trainerId == TRAINER_PLAYER) StringCopy(gStringVar1, gSaveBlock2Ptr->playerName); - else if (gSaveBlock2Ptr->frontier.domeTrainers[tournamentId].trainerId == TRAINER_FRONTIER_BRAIN) + else if (DOME_TRAINERS[tournamentId].trainerId == TRAINER_FRONTIER_BRAIN) CopyDomeBrainTrainerName(gStringVar1); else - CopyDomeTrainerName(gStringVar1, gSaveBlock2Ptr->frontier.domeTrainers[tournamentId].trainerId); + CopyDomeTrainerName(gStringVar1, DOME_TRAINERS[tournamentId].trainerId); count++; } } @@ -4959,29 +4963,29 @@ static int sub_8192F08(u8 arg0, u8 *arg1) if (count == 2) return 0; - for (i = gUnknown_0860D3C4[arg0][0]; i < gUnknown_0860D3C4[arg0][0] + gUnknown_0860D3C4[arg0][1]; i++) + for (i = gUnknown_0860D3C4[matchNum][0]; i < gUnknown_0860D3C4[matchNum][0] + gUnknown_0860D3C4[matchNum][1]; i++) { tournamentId = gUnknown_0860D3B4[i]; - if (gSaveBlock2Ptr->frontier.domeTrainers[tournamentId].isEliminated - && gSaveBlock2Ptr->frontier.domeTrainers[tournamentId].eliminatedAt >= gUnknown_0860D3C4[arg0][2]) + if (DOME_TRAINERS[tournamentId].isEliminated + && DOME_TRAINERS[tournamentId].eliminatedAt >= gUnknown_0860D3C4[matchNum][2]) { arg1[count] = tournamentId; count++; - if (gSaveBlock2Ptr->frontier.domeTrainers[tournamentId].eliminatedAt == gUnknown_0860D3C4[arg0][2]) + if (DOME_TRAINERS[tournamentId].eliminatedAt == gUnknown_0860D3C4[matchNum][2]) { - StringCopy(gStringVar2, gMoveNames[gSaveBlock2Ptr->frontier.field_EC0[tournamentId]]); - retVal = gSaveBlock2Ptr->frontier.domeTrainers[tournamentId].unk3 * 2; - if (gSaveBlock2Ptr->frontier.field_EC0[tournamentId] == 0 && gSaveBlock2Ptr->frontier.domeTrainers[tournamentId].unk3 == 0) + StringCopy(gStringVar2, gMoveNames[gSaveBlock2Ptr->frontier.domeWinningMoves[tournamentId]]); + retVal = DOME_TRAINERS[tournamentId].forfeited * 2; + if (gSaveBlock2Ptr->frontier.domeWinningMoves[tournamentId] == MOVE_NONE && DOME_TRAINERS[tournamentId].forfeited == FALSE) retVal = 4; } else { - if (gSaveBlock2Ptr->frontier.domeTrainers[tournamentId].trainerId == TRAINER_PLAYER) + if (DOME_TRAINERS[tournamentId].trainerId == TRAINER_PLAYER) StringCopy(gStringVar1, gSaveBlock2Ptr->playerName); - else if (gSaveBlock2Ptr->frontier.domeTrainers[tournamentId].trainerId == TRAINER_FRONTIER_BRAIN) + else if (DOME_TRAINERS[tournamentId].trainerId == TRAINER_FRONTIER_BRAIN) CopyDomeBrainTrainerName(gStringVar1); else - CopyDomeTrainerName(gStringVar1, gSaveBlock2Ptr->frontier.domeTrainers[tournamentId].trainerId); + CopyDomeTrainerName(gStringVar1, DOME_TRAINERS[tournamentId].trainerId); } } @@ -4989,7 +4993,7 @@ static int sub_8192F08(u8 arg0, u8 *arg1) break; } - if (arg0 == 14) + if (matchNum == 14) return retVal + 2; else return retVal + 1; @@ -5024,9 +5028,9 @@ static void DisplayMatchInfoOnCard(u8 flags, u8 matchNo) for (i = 0; i < 2; i++) { tournamentIds[i] = sBattleDomeStruct->unk_11[i]; - trainerIds[i] = gSaveBlock2Ptr->frontier.domeTrainers[tournamentIds[i]].trainerId; - if (gSaveBlock2Ptr->frontier.domeTrainers[tournamentIds[i]].eliminatedAt <= gUnknown_0860D3C4[matchNo][2] - && gSaveBlock2Ptr->frontier.domeTrainers[tournamentIds[i]].isEliminated) + trainerIds[i] = DOME_TRAINERS[tournamentIds[i]].trainerId; + if (DOME_TRAINERS[tournamentIds[i]].eliminatedAt <= gUnknown_0860D3C4[matchNo][2] + && DOME_TRAINERS[tournamentIds[i]].isEliminated) lost[i] = TRUE; else lost[i] = FALSE; @@ -5063,7 +5067,7 @@ static void DisplayMatchInfoOnCard(u8 flags, u8 matchNo) { if (trainerIds[0] == TRAINER_PLAYER) { - sBattleDomeStruct->arr[2 + i + arrId] = CreateMonIcon(gSaveBlock2Ptr->frontier.domeMonIds[tournamentIds[0]][i], + sBattleDomeStruct->arr[2 + i + arrId] = CreateMonIcon(DOME_MONS[tournamentIds[0]][i], SpriteCb_MonIcon, x | sFirstTrainerMonX[i], y + sFirstTrainerMonY[i], @@ -5072,7 +5076,7 @@ static void DisplayMatchInfoOnCard(u8 flags, u8 matchNo) } else if (trainerIds[0] == TRAINER_FRONTIER_BRAIN) { - sBattleDomeStruct->arr[2 + i + arrId] = CreateMonIcon(gSaveBlock2Ptr->frontier.domeMonIds[tournamentIds[0]][i], + sBattleDomeStruct->arr[2 + i + arrId] = CreateMonIcon(DOME_MONS[tournamentIds[0]][i], SpriteCb_MonIcon, x | sFirstTrainerMonX[i], y + sFirstTrainerMonY[i], @@ -5081,7 +5085,7 @@ static void DisplayMatchInfoOnCard(u8 flags, u8 matchNo) } else { - sBattleDomeStruct->arr[2 + i + arrId] = CreateMonIcon(gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[tournamentIds[0]][i]].species, + sBattleDomeStruct->arr[2 + i + arrId] = CreateMonIcon(gFacilityTrainerMons[DOME_MONS[tournamentIds[0]][i]].species, SpriteCb_MonIcon, x | sFirstTrainerMonX[i], y + sFirstTrainerMonY[i], @@ -5103,7 +5107,7 @@ static void DisplayMatchInfoOnCard(u8 flags, u8 matchNo) { if (trainerIds[1] == TRAINER_PLAYER) { - sBattleDomeStruct->arr[5 + i + arrId] = CreateMonIcon(gSaveBlock2Ptr->frontier.domeMonIds[tournamentIds[1]][i], + sBattleDomeStruct->arr[5 + i + arrId] = CreateMonIcon(DOME_MONS[tournamentIds[1]][i], SpriteCb_MonIcon, x | sSecondTrainerMonX[i], y + sSecondTrainerMonY[i], @@ -5112,7 +5116,7 @@ static void DisplayMatchInfoOnCard(u8 flags, u8 matchNo) } else if (trainerIds[1] == TRAINER_FRONTIER_BRAIN) { - sBattleDomeStruct->arr[5 + i + arrId] = CreateMonIcon(gSaveBlock2Ptr->frontier.domeMonIds[tournamentIds[1]][i], + sBattleDomeStruct->arr[5 + i + arrId] = CreateMonIcon(DOME_MONS[tournamentIds[1]][i], SpriteCb_MonIcon, x | sSecondTrainerMonX[i], y + sSecondTrainerMonY[i], @@ -5121,7 +5125,7 @@ static void DisplayMatchInfoOnCard(u8 flags, u8 matchNo) } else { - sBattleDomeStruct->arr[5 + i + arrId] = CreateMonIcon(gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[tournamentIds[1]][i]].species, + sBattleDomeStruct->arr[5 + i + arrId] = CreateMonIcon(gFacilityTrainerMons[DOME_MONS[tournamentIds[1]][i]].species, SpriteCb_MonIcon, x | sSecondTrainerMonX[i], y + sSecondTrainerMonY[i], @@ -5219,8 +5223,8 @@ static void ShowPreviousDomeResultsTourneyTree(void) u8 taskId; InitDomeFacilityTrainersAndMons(); - gSaveBlock2Ptr->frontier.lvlMode = gSaveBlock2Ptr->frontier.field_D0A - 1; - gSaveBlock2Ptr->frontier.curChallengeBattleNum = 3; + 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; @@ -5331,7 +5335,7 @@ static u8 UpdateTourneyTreeCursor(u8 taskId) } else if (gMain.newKeys & A_BUTTON) { - if (tourneyTreeCursorSpriteId < 16) + if (tourneyTreeCursorSpriteId < DOME_TOURNAMENT_TRAINERS_COUNT) { PlaySE(SE_SELECT); retVal = 2; @@ -5380,21 +5384,21 @@ static void ResolveDomeRoundWinners(void) { int i; - if (gSpecialVar_0x8005 == 1) + if (gSpecialVar_0x8005 == DOME_PLAYER_WON_MATCH) { - gSaveBlock2Ptr->frontier.domeTrainers[TrainerIdToTournamentId(gTrainerBattleOpponent_A)].isEliminated = 1; - gSaveBlock2Ptr->frontier.domeTrainers[TrainerIdToTournamentId(gTrainerBattleOpponent_A)].eliminatedAt = gSaveBlock2Ptr->frontier.curChallengeBattleNum; - gSaveBlock2Ptr->frontier.field_EC0[TrainerIdToTournamentId(gTrainerBattleOpponent_A)] = gBattleResults.lastUsedMovePlayer; + DOME_TRAINERS[TrainerIdToTournamentId(gTrainerBattleOpponent_A)].isEliminated = TRUE; + DOME_TRAINERS[TrainerIdToTournamentId(gTrainerBattleOpponent_A)].eliminatedAt = gSaveBlock2Ptr->frontier.curChallengeBattleNum; + gSaveBlock2Ptr->frontier.domeWinningMoves[TrainerIdToTournamentId(gTrainerBattleOpponent_A)] = gBattleResults.lastUsedMovePlayer; if (gSaveBlock2Ptr->frontier.curChallengeBattleNum < DOME_FINAL) DecideRoundWinners(gSaveBlock2Ptr->frontier.curChallengeBattleNum); } - else + else // DOME_PLAYER_LOST_MATCH or DOME_PLAYER_RETIRED { - gSaveBlock2Ptr->frontier.domeTrainers[TrainerIdToTournamentId(TRAINER_PLAYER)].isEliminated = 1; - gSaveBlock2Ptr->frontier.domeTrainers[TrainerIdToTournamentId(TRAINER_PLAYER)].eliminatedAt = gSaveBlock2Ptr->frontier.curChallengeBattleNum; - gSaveBlock2Ptr->frontier.field_EC0[TrainerIdToTournamentId(TRAINER_PLAYER)] = gBattleResults.lastUsedMoveOpponent; - if (gBattleOutcome == B_OUTCOME_FORFEITED || gSpecialVar_0x8005 == 9) - gSaveBlock2Ptr->frontier.domeTrainers[TrainerIdToTournamentId(TRAINER_PLAYER)].unk3 = 1; + DOME_TRAINERS[TrainerIdToTournamentId(TRAINER_PLAYER)].isEliminated = TRUE; + DOME_TRAINERS[TrainerIdToTournamentId(TRAINER_PLAYER)].eliminatedAt = gSaveBlock2Ptr->frontier.curChallengeBattleNum; + gSaveBlock2Ptr->frontier.domeWinningMoves[TrainerIdToTournamentId(TRAINER_PLAYER)] = gBattleResults.lastUsedMoveOpponent; + if (gBattleOutcome == B_OUTCOME_FORFEITED || gSpecialVar_0x8005 == DOME_PLAYER_RETIRED) + DOME_TRAINERS[TrainerIdToTournamentId(TRAINER_PLAYER)].forfeited = TRUE; for (i = gSaveBlock2Ptr->frontier.curChallengeBattleNum; i < DOME_ROUNDS_COUNT; i++) DecideRoundWinners(i); } @@ -5403,71 +5407,72 @@ static void ResolveDomeRoundWinners(void) static u16 GetWinningMove(int winnerTournamentId, int loserTournamentId, u8 roundId) { int i, j, k; - int moveScores[4 * 3]; - u16 moveIds[4 * 3]; + int moveScores[MAX_MON_MOVES * FRONTIER_PARTY_SIZE]; + u16 moveIds[MAX_MON_MOVES * FRONTIER_PARTY_SIZE]; u16 bestScore = 0; u16 bestId = 0; int movePower = 0; SetFacilityPtrsGetLevel(); // Calc move points of all 4 moves for all 3 pokemon hitting all 3 target mons. - for (i = 0; i < 3; i++) + for (i = 0; i < FRONTIER_PARTY_SIZE; i++) { for (j = 0; j < MAX_MON_MOVES; j++) { - // TODO: Clean this up, looks like a different data structure - moveScores[i * 4 + j] = 0; - if (gSaveBlock2Ptr->frontier.domeTrainers[winnerTournamentId].trainerId == TRAINER_FRONTIER_BRAIN) - moveIds[i * 4 + j] = GetFrontierBrainMonMove(i, j); + // TODO: Clean this up, looks like a different data structure (2D array) + moveScores[i * MAX_MON_MOVES + j] = 0; + if (DOME_TRAINERS[winnerTournamentId].trainerId == TRAINER_FRONTIER_BRAIN) + moveIds[i * MAX_MON_MOVES + j] = GetFrontierBrainMonMove(i, j); else - moveIds[i * 4 + j] = gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[winnerTournamentId][i]].moves[j]; + moveIds[i * MAX_MON_MOVES + j] = gFacilityTrainerMons[DOME_MONS[winnerTournamentId][i]].moves[j]; - movePower = gBattleMoves[moveIds[i * 4 + j]].power; + movePower = gBattleMoves[moveIds[i * MAX_MON_MOVES + j]].power; if (movePower == 0) movePower = 40; else if (movePower == 1) movePower = 60; - else if (moveIds[i * 4 + j] == MOVE_SELF_DESTRUCT || moveIds[i * 4 + j] == MOVE_EXPLOSION) + else if (moveIds[i * MAX_MON_MOVES + j] == MOVE_SELF_DESTRUCT + || moveIds[i * MAX_MON_MOVES + j] == MOVE_EXPLOSION) movePower /= 2; - for (k = 0; k < 3; k++) + for (k = 0; k < FRONTIER_PARTY_SIZE; k++) { u32 var = 0; - u32 targetSpecies = 0; - u32 targetAbility = 0; + u16 targetSpecies = SPECIES_NONE; + u16 targetAbility = ABILITY_NONE; do { var = Random32(); - } while (gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[loserTournamentId][k]].nature != GetNatureFromPersonality(var)); + } while (gFacilityTrainerMons[DOME_MONS[loserTournamentId][k]].nature != GetNatureFromPersonality(var)); - targetSpecies = gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[loserTournamentId][k]].species; + targetSpecies = gFacilityTrainerMons[DOME_MONS[loserTournamentId][k]].species; if (var & 1) targetAbility = gBaseStats[targetSpecies].abilities[1]; else targetAbility = gBaseStats[targetSpecies].abilities[0]; - var = AI_TypeCalc(moveIds[i * 4 + j], targetSpecies, targetAbility); + var = AI_TypeCalc(moveIds[i * MAX_MON_MOVES + j], targetSpecies, targetAbility); if (var & MOVE_RESULT_NOT_VERY_EFFECTIVE && var & MOVE_RESULT_SUPER_EFFECTIVE) - moveScores[i * 4 + j] += movePower; + moveScores[i * MAX_MON_MOVES + j] += movePower; else if (var & MOVE_RESULT_NO_EFFECT) - moveScores[i * 4 + j] += 0; + moveScores[i * MAX_MON_MOVES + j] += 0; else if (var & MOVE_RESULT_SUPER_EFFECTIVE) - moveScores[i * 4 + j] += movePower * 2; + moveScores[i * MAX_MON_MOVES + j] += movePower * 2; else if (var & MOVE_RESULT_NOT_VERY_EFFECTIVE) - moveScores[i * 4 + j] += movePower / 2; + moveScores[i * MAX_MON_MOVES + j] += movePower / 2; else - moveScores[i * 4 + j] += movePower; + moveScores[i * MAX_MON_MOVES + j] += movePower; } - if (bestScore < moveScores[i * 4 + j]) + if (bestScore < moveScores[i * MAX_MON_MOVES + j]) { - bestId = i * 4 + j; - bestScore = moveScores[i * 4 + j]; + bestId = i * MAX_MON_MOVES + j; + bestScore = moveScores[i * MAX_MON_MOVES + j]; } - else if (bestScore == moveScores[i * 4 + j]) + else if (bestScore == moveScores[i * MAX_MON_MOVES + j]) { - if (moveIds[bestId] < moveIds[i * 4 + j]) // Why not use (Random() & 1) instead of promoting moves with a higher id? - bestId = i * 4 + j; + if (moveIds[bestId] < moveIds[i * MAX_MON_MOVES + j]) // Why not use (Random() & 1) instead of promoting moves with a higher id? + bestId = i * MAX_MON_MOVES + j; } } } @@ -5476,7 +5481,7 @@ static u16 GetWinningMove(int winnerTournamentId, int loserTournamentId, u8 roun goto LABEL; while (j != 0) { - for (j = 0, k = 0; k < MAX_MON_MOVES * 3; k++) + for (j = 0, k = 0; k < MAX_MON_MOVES * FRONTIER_PARTY_SIZE; k++) { if (bestScore < moveScores[k]) { @@ -5494,7 +5499,7 @@ static u16 GetWinningMove(int winnerTournamentId, int loserTournamentId, u8 roun { for (i = 0; i < roundId - 1; i++) { - if (gSaveBlock2Ptr->frontier.field_EC0[sub_81953E8(winnerTournamentId, i)] == moveIds[j]) + if (gSaveBlock2Ptr->frontier.domeWinningMoves[sub_81953E8(winnerTournamentId, i)] == moveIds[j]) break; } if (i == roundId - 1) @@ -5503,7 +5508,7 @@ static u16 GetWinningMove(int winnerTournamentId, int loserTournamentId, u8 roun moveScores[j] = 0; bestScore = 0; j = 0; - for (k = 0; k < MAX_MON_MOVES * 3; k++) + for (k = 0; k < MAX_MON_MOVES * FRONTIER_PARTY_SIZE; k++) j += moveScores[k]; } } @@ -5552,7 +5557,7 @@ static void Task_ShowTourneyTree(u8 taskId) SetGpuReg(REG_OFFSET_WIN1H, 0x9098); SetGpuReg(REG_OFFSET_WIN1V, 0x9F); SetGpuReg(REG_OFFSET_WININ, 0); - SetGpuReg(REG_OFFSET_WINOUT, 0x3F); + SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR); ResetPaletteFade(); ResetSpriteData(); FreeAllSpritePalettes(); @@ -5611,14 +5616,14 @@ static void Task_ShowTourneyTree(u8 taskId) { int roundId, var2; - CopyDomeTrainerName(gDisplayedStringBattle, gSaveBlock2Ptr->frontier.domeTrainers[i].trainerId); + CopyDomeTrainerName(gDisplayedStringBattle, DOME_TRAINERS[i].trainerId); if (r10 == 1) { - if (gSaveBlock2Ptr->frontier.domeTrainers[i].isEliminated) + if (DOME_TRAINERS[i].isEliminated) { - if (gSaveBlock2Ptr->frontier.domeTrainers[i].eliminatedAt != 0) + if (DOME_TRAINERS[i].eliminatedAt != 0) { - var2 = gSaveBlock2Ptr->frontier.domeTrainers[i].eliminatedAt - 1; + var2 = DOME_TRAINERS[i].eliminatedAt - 1; sub_81948EC(i, var2); } } @@ -5629,11 +5634,11 @@ static void Task_ShowTourneyTree(u8 taskId) } else if (r10 == 0) { - if (gSaveBlock2Ptr->frontier.domeTrainers[i].isEliminated) + if (DOME_TRAINERS[i].isEliminated) { - if (gSaveBlock2Ptr->frontier.domeTrainers[i].eliminatedAt != 0) + if (DOME_TRAINERS[i].eliminatedAt != 0) { - var2 = gSaveBlock2Ptr->frontier.domeTrainers[i].eliminatedAt - 1; + var2 = DOME_TRAINERS[i].eliminatedAt - 1; sub_81948EC(i, var2); } } @@ -5652,11 +5657,11 @@ static void Task_ShowTourneyTree(u8 taskId) else roundId = gSaveBlock2Ptr->frontier.curChallengeBattleNum - 1; - if ( ((r10 == 1 && gSaveBlock2Ptr->frontier.domeTrainers[i].eliminatedAt < gSaveBlock2Ptr->frontier.curChallengeBattleNum - 1) - || (r10 == 0 && gSaveBlock2Ptr->frontier.domeTrainers[i].eliminatedAt <= roundId)) - && gSaveBlock2Ptr->frontier.domeTrainers[i].isEliminated) + if ( ((r10 == 1 && DOME_TRAINERS[i].eliminatedAt < gSaveBlock2Ptr->frontier.curChallengeBattleNum - 1) + || (r10 == 0 && DOME_TRAINERS[i].eliminatedAt <= roundId)) + && DOME_TRAINERS[i].isEliminated) { - if (gSaveBlock2Ptr->frontier.domeTrainers[i].trainerId == TRAINER_PLAYER) + if (DOME_TRAINERS[i].trainerId == TRAINER_PLAYER) { textPrinter.fgColor = 3; textPrinter.shadowColor = 4; @@ -5669,7 +5674,7 @@ static void Task_ShowTourneyTree(u8 taskId) } else { - if (gSaveBlock2Ptr->frontier.domeTrainers[i].trainerId == TRAINER_PLAYER) + if (DOME_TRAINERS[i].trainerId == TRAINER_PLAYER) { textPrinter.fgColor = 3; textPrinter.shadowColor = 4; @@ -5782,9 +5787,9 @@ static void sub_8194950(u8 taskId) textPrinter.shadowColor = 13; for (i = 0; i < DOME_TOURNAMENT_TRAINERS_COUNT; i++) { - CopyDomeTrainerName(gDisplayedStringBattle, gSaveBlock2Ptr->frontier.domeTrainers[i].trainerId); - if (gSaveBlock2Ptr->frontier.domeTrainers[i].eliminatedAt == gSaveBlock2Ptr->frontier.curChallengeBattleNum - 1 - && gSaveBlock2Ptr->frontier.domeTrainers[i].isEliminated) + CopyDomeTrainerName(gDisplayedStringBattle, DOME_TRAINERS[i].trainerId); + if (DOME_TRAINERS[i].eliminatedAt == gSaveBlock2Ptr->frontier.curChallengeBattleNum - 1 + && DOME_TRAINERS[i].isEliminated) { if (gUnknown_0860D3F1[i][0] == 0) textPrinter.currentX = GetStringWidthDifference(textPrinter.fontId, gDisplayedStringBattle, 0x3D, textPrinter.letterSpacing); @@ -5796,7 +5801,7 @@ static void sub_8194950(u8 taskId) textPrinter.currentY = gUnknown_0860D3F1[i][1]; AddTextPrinter(&textPrinter, 0, NULL); } - if (!gSaveBlock2Ptr->frontier.domeTrainers[i].isEliminated) + if (!DOME_TRAINERS[i].isEliminated) { int roundId = gSaveBlock2Ptr->frontier.curChallengeBattleNum - 1; sub_81948EC(i, roundId); @@ -5862,7 +5867,8 @@ static void HblankCb_BattleDome(void) { if (vCount < 50) { - REG_WININ = WININ_WIN0_BG0 | WININ_WIN0_BG1 | WININ_WIN0_BG3 | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG0 | WININ_WIN1_BG1 | WININ_WIN1_BG3 | WININ_WIN1_OBJ | WININ_WIN1_CLR; + REG_WININ = WININ_WIN0_BG0 | WININ_WIN0_BG1 | WININ_WIN0_BG3 | WININ_WIN0_OBJ | WININ_WIN0_CLR + | WININ_WIN1_BG0 | WININ_WIN1_BG1 | WININ_WIN1_BG3 | WININ_WIN1_OBJ | WININ_WIN1_CLR; SET_WIN0H_WIN1H(WIN_RANGE(152, 155), WIN_RANGE(85, 88)); return; } @@ -5870,13 +5876,15 @@ static void HblankCb_BattleDome(void) { if (vCount < 75) { - REG_WININ = WININ_WIN0_BG0 | WININ_WIN0_BG1 | WININ_WIN0_BG3 | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG0 | WININ_WIN1_BG1 | WININ_WIN1_BG3 | WININ_WIN1_OBJ | WININ_WIN1_CLR; + REG_WININ = WININ_WIN0_BG0 | WININ_WIN0_BG1 | WININ_WIN0_BG3 | WININ_WIN0_OBJ | WININ_WIN0_CLR + | WININ_WIN1_BG0 | WININ_WIN1_BG1 | WININ_WIN1_BG3 | WININ_WIN1_OBJ | WININ_WIN1_CLR; SET_WIN0H_WIN1H(WIN_RANGE(144, 152), WIN_RANGE(88, 96)); return; } else if (vCount < 82) { - REG_WININ = WININ_WIN0_BG0 | WININ_WIN0_BG1 | WININ_WIN0_BG3 | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG0 | WININ_WIN1_BG1 | WININ_WIN1_BG3 | WININ_WIN1_OBJ | WININ_WIN1_CLR; + REG_WININ = WININ_WIN0_BG0 | WININ_WIN0_BG1 | WININ_WIN0_BG3 | WININ_WIN0_OBJ | WININ_WIN0_CLR + | WININ_WIN1_BG0 | WININ_WIN1_BG1 | WININ_WIN1_BG3 | WININ_WIN1_OBJ | WININ_WIN1_CLR; SET_WIN0H_WIN1H(WIN_RANGE(152, 155), WIN_RANGE(85, 88)); return; } @@ -5884,13 +5892,15 @@ static void HblankCb_BattleDome(void) { if (vCount < 103) { - REG_WININ = WININ_WIN0_BG0 | WININ_WIN0_BG1 | WININ_WIN0_BG2 | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG0 | WININ_WIN1_BG1 | WININ_WIN1_BG2 | WININ_WIN1_OBJ | WININ_WIN1_CLR; + REG_WININ = WININ_WIN0_BG0 | WININ_WIN0_BG1 | WININ_WIN0_BG2 | WININ_WIN0_OBJ | WININ_WIN0_CLR + | WININ_WIN1_BG0 | WININ_WIN1_BG1 | WININ_WIN1_BG2 | WININ_WIN1_OBJ | WININ_WIN1_CLR; SET_WIN0H_WIN1H(WIN_RANGE(152, 155), WIN_RANGE(85, 88)); return; } else if (vCount < 119) { - REG_WININ = WININ_WIN0_BG0 | WININ_WIN0_BG1 | WININ_WIN0_BG2 | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG0 | WININ_WIN1_BG1 | WININ_WIN1_BG2 | WININ_WIN1_OBJ | WININ_WIN1_CLR; + REG_WININ = WININ_WIN0_BG0 | WININ_WIN0_BG1 | WININ_WIN0_BG2 | WININ_WIN0_OBJ | WININ_WIN0_CLR + | WININ_WIN1_BG0 | WININ_WIN1_BG1 | WININ_WIN1_BG2 | WININ_WIN1_OBJ | WININ_WIN1_CLR; SET_WIN0H_WIN1H(WIN_RANGE(144, 152), WIN_RANGE(88, 96)); return; } @@ -5898,7 +5908,8 @@ static void HblankCb_BattleDome(void) { if (vCount_ < 135) { - REG_WININ = WININ_WIN0_BG0 | WININ_WIN0_BG1 | WININ_WIN0_BG2 | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG0 | WININ_WIN1_BG1 | WININ_WIN1_BG2 | WININ_WIN1_OBJ | WININ_WIN1_CLR; + REG_WININ = WININ_WIN0_BG0 | WININ_WIN0_BG1 | WININ_WIN0_BG2 | WININ_WIN0_OBJ | WININ_WIN0_CLR + | WININ_WIN1_BG0 | WININ_WIN1_BG1 | WININ_WIN1_BG2 | WININ_WIN1_OBJ | WININ_WIN1_CLR; SET_WIN0H_WIN1H(WIN_RANGE(152, 155), WIN_RANGE(85, 88)); return; } @@ -5907,7 +5918,8 @@ static void HblankCb_BattleDome(void) } } - REG_WININ = WININ_WIN0_BG_ALL | WININ_WIN0_CLR | WININ_WIN0_OBJ | WININ_WIN1_BG_ALL | WININ_WIN1_CLR | WININ_WIN1_OBJ; + REG_WININ = WININ_WIN0_BG_ALL | WININ_WIN0_CLR | WININ_WIN0_OBJ + | WININ_WIN1_BG_ALL | WININ_WIN1_CLR | WININ_WIN1_OBJ; SET_WIN0H_WIN1H(0, 0); } @@ -5961,7 +5973,7 @@ static void RestoreDomePlayerPartyHeldItems(void) { int i; - for (i = 0; i < 2; i++) + for (i = 0; i < DOME_BATTLE_PARTY_SIZE; i++) { int playerMonId = gSaveBlock2Ptr->frontier.selectedPartyMons[gSelectedOrderFromParty[i] - 1] - 1; u16 item = GetMonData(&gSaveBlock1Ptr->playerParty[playerMonId], MON_DATA_HELD_ITEM, NULL); @@ -5969,7 +5981,7 @@ static void RestoreDomePlayerPartyHeldItems(void) } } -static void ReduceDomePlayerPartyTo3Mons(void) +static void ReduceDomePlayerPartyToSelectedMons(void) { ReducePlayerPartyToSelectedMons(); } @@ -5989,13 +6001,14 @@ static void BufferLastDomeWinnerName(void) InitDomeFacilityTrainersAndMons(); for (i = 0; i < DOME_TOURNAMENT_TRAINERS_COUNT; i++) { - if (!gSaveBlock2Ptr->frontier.domeTrainers[i].isEliminated) + if (!DOME_TRAINERS[i].isEliminated) break; } - CopyDomeTrainerName(gStringVar1, gSaveBlock2Ptr->frontier.domeTrainers[i].trainerId); + CopyDomeTrainerName(gStringVar1, DOME_TRAINERS[i].trainerId); } -static void sub_8194F58(void) +// For showing the previous tourney results before the player has entered a challenge +static void InitRandomTourneyTreeResults(void) { int i, j, k; int monLevel; @@ -6011,18 +6024,18 @@ static void sub_8194F58(void) species[0] = 0; species[1] = 0; species[2] = 0; - if ((gSaveBlock2Ptr->frontier.field_D0A != -gSaveBlock2Ptr->frontier.field_D0B) && gSaveBlock2Ptr->frontier.challengeStatus != CHALLENGE_STATUS_SAVING) + if ((gSaveBlock2Ptr->frontier.domeLvlMode != -gSaveBlock2Ptr->frontier.domeBattleMode) && gSaveBlock2Ptr->frontier.challengeStatus != CHALLENGE_STATUS_SAVING) return; statSums = AllocZeroed(sizeof(u16) * DOME_TOURNAMENT_TRAINERS_COUNT); statValues = AllocZeroed(sizeof(int) * NUM_STATS); lvlMode = gSaveBlock2Ptr->frontier.lvlMode; - gSaveBlock2Ptr->frontier.lvlMode = 0; + gSaveBlock2Ptr->frontier.lvlMode = FRONTIER_LVL_50; // This one, I'd like to call a 'C fakematching'. { u8 one; - gSaveBlock2Ptr->frontier.field_D0A = (one = 1); - gSaveBlock2Ptr->frontier.field_D0B = one; + gSaveBlock2Ptr->frontier.domeLvlMode = (one = 1); + gSaveBlock2Ptr->frontier.domeBattleMode = one; } for (i = 0; i < DOME_TOURNAMENT_TRAINERS_COUNT; i++) @@ -6038,12 +6051,12 @@ static void sub_8194F58(void) for (j = 0; j < i; j++) { - if (gSaveBlock2Ptr->frontier.domeTrainers[j].trainerId == trainerId) + if (DOME_TRAINERS[j].trainerId == trainerId) break; } } while (j != i); - gSaveBlock2Ptr->frontier.domeTrainers[i].trainerId = trainerId; + DOME_TRAINERS[i].trainerId = trainerId; for (j = 0; j < FRONTIER_PARTY_SIZE; j++) { // Make sure the mon is valid. @@ -6052,7 +6065,7 @@ static void sub_8194F58(void) monSetId = RandomizeFacilityTrainerMonSet(trainerId); for (k = 0; k < j; k++) { - int checkingMonId = gSaveBlock2Ptr->frontier.domeMonIds[i][k]; + int checkingMonId = DOME_MONS[i][k]; if (checkingMonId == monSetId || species[0] == gFacilityTrainerMons[monSetId].species || species[1] == gFacilityTrainerMons[monSetId].species @@ -6061,12 +6074,12 @@ static void sub_8194F58(void) } } while (k != j); - gSaveBlock2Ptr->frontier.domeMonIds[i][j] = monSetId; + DOME_MONS[i][j] = monSetId; species[j] = gFacilityTrainerMons[monSetId].species; } - gSaveBlock2Ptr->frontier.domeTrainers[i].isEliminated = 0; - gSaveBlock2Ptr->frontier.domeTrainers[i].eliminatedAt = 0; - gSaveBlock2Ptr->frontier.domeTrainers[i].unk3 = 0; + DOME_TRAINERS[i].isEliminated = FALSE; + DOME_TRAINERS[i].eliminatedAt = 0; + DOME_TRAINERS[i].forfeited = FALSE; } monLevel = 50; @@ -6074,13 +6087,13 @@ static void sub_8194F58(void) { monTypesBits = 0; statSums[i] = 0; - ivs = GetDomeTrainerMonIvs(gSaveBlock2Ptr->frontier.domeTrainers[i].trainerId); + ivs = GetDomeTrainerMonIvs(DOME_TRAINERS[i].trainerId); for (j = 0; j < FRONTIER_PARTY_SIZE; j++) { - CalcDomeMonStats(gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[i][j]].species, + CalcDomeMonStats(gFacilityTrainerMons[DOME_MONS[i][j]].species, monLevel, ivs, - gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[i][j]].evSpread, - gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[i][j]].nature, + gFacilityTrainerMons[DOME_MONS[i][j]].evSpread, + gFacilityTrainerMons[DOME_MONS[i][j]].nature, statValues); statSums[i] += statValues[STAT_ATK]; @@ -6089,8 +6102,8 @@ static void sub_8194F58(void) statSums[i] += statValues[STAT_SPDEF]; statSums[i] += statValues[STAT_SPEED]; statSums[i] += statValues[STAT_HP]; - monTypesBits |= gBitTable[gBaseStats[gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[i][j]].species].type1]; - monTypesBits |= gBitTable[gBaseStats[gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[i][j]].species].type2]; + monTypesBits |= gBitTable[gBaseStats[gFacilityTrainerMons[DOME_MONS[i][j]].species].type1]; + monTypesBits |= gBitTable[gBaseStats[gFacilityTrainerMons[DOME_MONS[i][j]].species].type2]; } // Because GF hates temporary vars, trainerId acts like monTypesCount here. @@ -6113,7 +6126,7 @@ static void sub_8194F58(void) } else if (statSums[i] == statSums[j]) { - if (gSaveBlock2Ptr->frontier.domeTrainers[i].trainerId > gSaveBlock2Ptr->frontier.domeTrainers[j].trainerId) + if (DOME_TRAINERS[i].trainerId > DOME_TRAINERS[j].trainerId) SwapDomeTrainers(i, j, statSums); } } @@ -6122,7 +6135,7 @@ static void sub_8194F58(void) Free(statSums); Free(statValues); - for (i = 0; i < 4; i++) + for (i = 0; i < DOME_ROUNDS_COUNT; i++) DecideRoundWinners(i); gSaveBlock2Ptr->frontier.lvlMode = lvlMode; @@ -6134,7 +6147,7 @@ static int TrainerIdToTournamentId(u16 trainerId) for (i = 0; i < DOME_TOURNAMENT_TRAINERS_COUNT; i++) { - if (gSaveBlock2Ptr->frontier.domeTrainers[i].trainerId == trainerId) + if (DOME_TRAINERS[i].trainerId == trainerId) break; } @@ -6148,7 +6161,7 @@ int TrainerIdToDomeTournamentId(u16 trainerId) for (i = 0; i < DOME_TOURNAMENT_TRAINERS_COUNT; i++) { - if (gSaveBlock2Ptr->frontier.domeTrainers[i].trainerId == trainerId) + if (DOME_TRAINERS[i].trainerId == trainerId) break; } @@ -6175,24 +6188,24 @@ static void DecideRoundWinners(u8 roundId) for (i = 0; i < DOME_TOURNAMENT_TRAINERS_COUNT; i++) { - if (gSaveBlock2Ptr->frontier.domeTrainers[i].isEliminated || gSaveBlock2Ptr->frontier.domeTrainers[i].trainerId == TRAINER_PLAYER) + if (DOME_TRAINERS[i].isEliminated || DOME_TRAINERS[i].trainerId == TRAINER_PLAYER) continue; tournamentId1 = i; - tournamentId2 = TournamentIdOfOpponent(roundId, gSaveBlock2Ptr->frontier.domeTrainers[tournamentId1].trainerId); + tournamentId2 = TournamentIdOfOpponent(roundId, DOME_TRAINERS[tournamentId1].trainerId); // Frontier Brain always wins, check tournamentId1. - if (gSaveBlock2Ptr->frontier.domeTrainers[tournamentId1].trainerId == TRAINER_FRONTIER_BRAIN && tournamentId2 != 0xFF) + if (DOME_TRAINERS[tournamentId1].trainerId == TRAINER_FRONTIER_BRAIN && tournamentId2 != 0xFF) { - gSaveBlock2Ptr->frontier.domeTrainers[tournamentId2].isEliminated = 1; - gSaveBlock2Ptr->frontier.domeTrainers[tournamentId2].eliminatedAt = roundId; - gSaveBlock2Ptr->frontier.field_EC0[tournamentId2] = GetWinningMove(tournamentId1, tournamentId2, roundId); + DOME_TRAINERS[tournamentId2].isEliminated = TRUE; + DOME_TRAINERS[tournamentId2].eliminatedAt = roundId; + gSaveBlock2Ptr->frontier.domeWinningMoves[tournamentId2] = GetWinningMove(tournamentId1, tournamentId2, roundId); } // Frontier Brain always wins, check tournamentId2. - else if (gSaveBlock2Ptr->frontier.domeTrainers[tournamentId2].trainerId == TRAINER_FRONTIER_BRAIN && tournamentId1 != 0xFF) + else if (DOME_TRAINERS[tournamentId2].trainerId == TRAINER_FRONTIER_BRAIN && tournamentId1 != 0xFF) { - gSaveBlock2Ptr->frontier.domeTrainers[tournamentId1].isEliminated = 1; - gSaveBlock2Ptr->frontier.domeTrainers[tournamentId1].eliminatedAt = roundId; - gSaveBlock2Ptr->frontier.field_EC0[tournamentId1] = GetWinningMove(tournamentId2, tournamentId1, roundId); + DOME_TRAINERS[tournamentId1].isEliminated = TRUE; + DOME_TRAINERS[tournamentId1].eliminatedAt = roundId; + gSaveBlock2Ptr->frontier.domeWinningMoves[tournamentId1] = GetWinningMove(tournamentId2, tournamentId1, roundId); } // Decide which one of two trainers wins! else if (tournamentId2 != 0xFF) @@ -6200,17 +6213,17 @@ static void DecideRoundWinners(u8 roundId) // BUG: points1 and points2 are not cleared at the beginning of the loop resulting in not fair results. // Calculate points for both trainers. - for (monId1 = 0; monId1 < 3; monId1++) + for (monId1 = 0; monId1 < FRONTIER_PARTY_SIZE; monId1++) { for (moveSlot = 0; moveSlot < MAX_MON_MOVES; moveSlot++) { - for (monId2 = 0; monId2 < 3; monId2++) + for (monId2 = 0; monId2 < FRONTIER_PARTY_SIZE; monId2++) { - points1 += GetTypeEffectivenessPoints(gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[tournamentId1][monId1]].moves[moveSlot], - gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[tournamentId2][monId2]].species, 2); + points1 += GetTypeEffectivenessPoints(gFacilityTrainerMons[DOME_MONS[tournamentId1][monId1]].moves[moveSlot], + gFacilityTrainerMons[DOME_MONS[tournamentId2][monId2]].species, 2); } } - species = gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[tournamentId1][monId1]].species; + species = gFacilityTrainerMons[DOME_MONS[tournamentId1][monId1]].species; points1 += ( gBaseStats[species].baseHP + gBaseStats[species].baseAttack + gBaseStats[species].baseDefense @@ -6223,17 +6236,17 @@ static void DecideRoundWinners(u8 roundId) // Favor trainers with higher id; points1 += tournamentId1; - for (monId1 = 0; monId1 < 3; monId1++) + for (monId1 = 0; monId1 < FRONTIER_PARTY_SIZE; monId1++) { for (moveSlot = 0; moveSlot < MAX_MON_MOVES; moveSlot++) { - for (monId2 = 0; monId2 < 3; monId2++) + for (monId2 = 0; monId2 < FRONTIER_PARTY_SIZE; monId2++) { - points2 += GetTypeEffectivenessPoints(gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[tournamentId2][monId1]].moves[moveSlot], - gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[tournamentId1][monId2]].species, 2); + points2 += GetTypeEffectivenessPoints(gFacilityTrainerMons[DOME_MONS[tournamentId2][monId1]].moves[moveSlot], + gFacilityTrainerMons[DOME_MONS[tournamentId1][monId2]].species, 2); } } - species = gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[tournamentId2][monId1]].species; + species = gFacilityTrainerMons[DOME_MONS[tournamentId2][monId1]].species; points2 += ( gBaseStats[species].baseHP + gBaseStats[species].baseAttack + gBaseStats[species].baseDefense @@ -6248,28 +6261,28 @@ static void DecideRoundWinners(u8 roundId) if (points1 > points2) { - gSaveBlock2Ptr->frontier.domeTrainers[tournamentId2].isEliminated = 1; - gSaveBlock2Ptr->frontier.domeTrainers[tournamentId2].eliminatedAt = roundId; - gSaveBlock2Ptr->frontier.field_EC0[tournamentId2] = GetWinningMove(tournamentId1, tournamentId2, roundId); + DOME_TRAINERS[tournamentId2].isEliminated = TRUE; + DOME_TRAINERS[tournamentId2].eliminatedAt = roundId; + gSaveBlock2Ptr->frontier.domeWinningMoves[tournamentId2] = GetWinningMove(tournamentId1, tournamentId2, roundId); } else if (points1 < points2) { - gSaveBlock2Ptr->frontier.domeTrainers[tournamentId1].isEliminated = 1; - gSaveBlock2Ptr->frontier.domeTrainers[tournamentId1].eliminatedAt = roundId; - gSaveBlock2Ptr->frontier.field_EC0[tournamentId1] = GetWinningMove(tournamentId2, tournamentId1, roundId); + DOME_TRAINERS[tournamentId1].isEliminated = TRUE; + DOME_TRAINERS[tournamentId1].eliminatedAt = roundId; + gSaveBlock2Ptr->frontier.domeWinningMoves[tournamentId1] = GetWinningMove(tournamentId2, tournamentId1, roundId); } // Points are the same, so we favor the one with the higher id. else if (tournamentId1 > tournamentId2) { - gSaveBlock2Ptr->frontier.domeTrainers[tournamentId2].isEliminated = 1; - gSaveBlock2Ptr->frontier.domeTrainers[tournamentId2].eliminatedAt = roundId; - gSaveBlock2Ptr->frontier.field_EC0[tournamentId2] = GetWinningMove(tournamentId1, tournamentId2, roundId); + DOME_TRAINERS[tournamentId2].isEliminated = TRUE; + DOME_TRAINERS[tournamentId2].eliminatedAt = roundId; + gSaveBlock2Ptr->frontier.domeWinningMoves[tournamentId2] = GetWinningMove(tournamentId1, tournamentId2, roundId); } else { - gSaveBlock2Ptr->frontier.domeTrainers[tournamentId1].isEliminated = 1; - gSaveBlock2Ptr->frontier.domeTrainers[tournamentId1].eliminatedAt = roundId; - gSaveBlock2Ptr->frontier.field_EC0[tournamentId1] = GetWinningMove(tournamentId2, tournamentId1, roundId); + DOME_TRAINERS[tournamentId1].isEliminated = TRUE; + DOME_TRAINERS[tournamentId1].eliminatedAt = roundId; + gSaveBlock2Ptr->frontier.domeWinningMoves[tournamentId1] = GetWinningMove(tournamentId2, tournamentId1, roundId); } } } @@ -6291,7 +6304,7 @@ static void CopyDomeTrainerName(u8 *str, u16 trainerId) for (i = 0; i < PLAYER_NAME_LENGTH; i++) str[i] = gSaveBlock2Ptr->playerName[i]; } - else if (trainerId < 300) + else if (trainerId < TRAINER_RECORD_MIXING_FRIEND) { for (i = 0; i < PLAYER_NAME_LENGTH; i++) str[i] = gFacilityTrainers[trainerId].trainerName[i]; diff --git a/src/battle_tower.c b/src/battle_tower.c index 49dd6d32a6..b08a09ff59 100644 --- a/src/battle_tower.c +++ b/src/battle_tower.c @@ -1104,6 +1104,7 @@ static const u8 sBattleTowerPartySizes2[] = [FRONTIER_MODE_LINK_MULTIS] = FRONTIER_MULTI_PARTY_SIZE, }; +// min/max trainer id static const u16 gUnknown_085DF9FA[][2] = { {0x0000, 0x0063}, @@ -1116,6 +1117,7 @@ static const u16 gUnknown_085DF9FA[][2] = {0x00c8, 0x012b}, }; +// min/max trainer id static const u16 gUnknown_085DFA1A[][2] = { {0x0064, 0x0077}, @@ -1878,7 +1880,7 @@ static void FillTrainerParty(u16 trainerId, u8 firstMonId, u8 monCount) { s32 i, j; u16 chosenMonIndices[4]; - u8 friendship = 0xFF; + u8 friendship = MAX_FRIENDSHIP; u8 level = SetFacilityPtrsGetLevel(); u8 fixedIV = 0; u8 bfMonCount; @@ -1977,7 +1979,7 @@ static void FillTrainerParty(u16 trainerId, u8 firstMonId, u8 monCount) gFacilityTrainerMons[monSetId].evSpread, otID); - friendship = 255; + friendship = MAX_FRIENDSHIP; // Give the chosen pokemon its specified moves. for (j = 0; j < MAX_MON_MOVES; j++) { @@ -1999,7 +2001,7 @@ static void FillTrainerParty(u16 trainerId, u8 firstMonId, u8 monCount) static void Unused_CreateApprenticeMons(u16 trainerId, u8 firstMonId) { s32 i, j; - u8 friendship = 0xFF; + u8 friendship = MAX_FRIENDSHIP; u8 level = 0; u8 fixedIV = 0; struct Apprentice *apprentice = &gSaveBlock2Ptr->apprentices[0]; @@ -2017,7 +2019,7 @@ static void Unused_CreateApprenticeMons(u16 trainerId, u8 firstMonId) for (i = 0; i != 3; i++) { CreateMonWithEVSpread(&gEnemyParty[firstMonId + i], apprentice->party[i].species, level, fixedIV, 8); - friendship = 0xFF; + friendship = MAX_FRIENDSHIP; for (j = 0; j < MAX_MON_MOVES; j++) { if (apprentice->party[i].moves[j] == MOVE_FRUSTRATION) @@ -3227,7 +3229,7 @@ static void FillPartnerParty(u16 trainerId) ivs, gFacilityTrainerMons[monSetId].evSpread, otID); - friendship = 0xFF; + friendship = MAX_FRIENDSHIP; for (j = 0; j < MAX_MON_MOVES; j++) { SetMonMoveSlot(&gPlayerParty[3 + i], gFacilityTrainerMons[monSetId].moves[j], j); @@ -3532,19 +3534,19 @@ static u16 sub_8165D40(void) static u8 SetTentPtrsGetLevel(void) { u8 level = 30; - u32 tentFacility = VarGet(VAR_FRONTIER_FACILITY); + u32 facility = VarGet(VAR_FRONTIER_FACILITY); - if (tentFacility == TENT_SLATEPORT) + if (facility == FRONTIER_FACILITY_FACTORY) { gFacilityTrainers = gSlateportBattleTentTrainers; gFacilityTrainerMons = gSlateportBattleTentMons; } - else if (tentFacility == TENT_VERDANTURF) + else if (facility == FRONTIER_FACILITY_PALACE) { gFacilityTrainers = gVerdanturfBattleTentTrainers; gFacilityTrainerMons = gVerdanturfBattleTentMons; } - else if (tentFacility == TENT_FALLARBOR) + else if (facility == FRONTIER_FACILITY_ARENA) { gFacilityTrainers = gFallarborBattleTentTrainers; gFacilityTrainerMons = gFallarborBattleTentMons; @@ -3653,7 +3655,7 @@ static void FillTentTrainerParty_(u16 trainerId, u8 firstMonId, u8 monCount) gFacilityTrainerMons[monSetId].evSpread, otID); - friendship = 255; + friendship = MAX_FRIENDSHIP; // Give the chosen pokemon its specified moves. for (j = 0; j < MAX_MON_MOVES; j++) { diff --git a/src/contest.c b/src/contest.c index e538b5ae07..66dbdb6f11 100644 --- a/src/contest.c +++ b/src/contest.c @@ -5093,7 +5093,7 @@ static void sub_80DE864(u8 a) gContestResources->field_18->unk4_0 = 1; break; case MOVE_RETURN: - gAnimFriendship = 0xFF; + gAnimFriendship = MAX_FRIENDSHIP; break; case MOVE_FRUSTRATION: gAnimFriendship = 0; diff --git a/src/field_specials.c b/src/field_specials.c index bffb9f5912..4ed4ebc026 100644 --- a/src/field_specials.c +++ b/src/field_specials.c @@ -994,7 +994,7 @@ u16 GetWeekCount(void) u8 GetLeadMonFriendshipScore(void) { struct Pokemon *pokemon = &gPlayerParty[GetLeadMonIndex()]; - if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) == 255) + if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) == MAX_FRIENDSHIP) { return 6; } diff --git a/src/frontier_util.c b/src/frontier_util.c index 084be4fe23..f59ed14ed7 100644 --- a/src/frontier_util.c +++ b/src/frontier_util.c @@ -2490,7 +2490,7 @@ void SetFrontierBrainEventObjGfx_2(void) void CreateFrontierBrainPokemon(void) { s32 i, j; - s32 monCountInBits; + s32 selectedMonBits; s32 monPartyId; s32 monLevel = 0; u8 friendship; @@ -2498,16 +2498,16 @@ void CreateFrontierBrainPokemon(void) s32 symbol = GetFronterBrainSymbol(); if (facility == FRONTIER_FACILITY_DOME) - monCountInBits = GetDomeTrainerMonCountInBits(TrainerIdToDomeTournamentId(TRAINER_FRONTIER_BRAIN)); + selectedMonBits = GetDomeTrainerSelectedMons(TrainerIdToDomeTournamentId(TRAINER_FRONTIER_BRAIN)); else - monCountInBits = 7; + selectedMonBits = (1 << FRONTIER_PARTY_SIZE) - 1; // all 3 mons selected ZeroEnemyPartyMons(); monPartyId = 0; monLevel = SetFacilityPtrsGetLevel(); - for (i = 0; i < 3; monCountInBits >>= 1, i++) + for (i = 0; i < FRONTIER_PARTY_SIZE; selectedMonBits >>= 1, i++) { - if (!(monCountInBits & 1)) + if (!(selectedMonBits & 1)) continue; do @@ -2523,7 +2523,7 @@ void CreateFrontierBrainPokemon(void) SetMonData(&gEnemyParty[monPartyId], MON_DATA_HELD_ITEM, &sFrontierBrainsMons[facility][symbol][i].heldItem); for (j = 0; j < NUM_STATS; j++) SetMonData(&gEnemyParty[monPartyId], MON_DATA_HP_EV + j, &sFrontierBrainsMons[facility][symbol][i].evs[j]); - friendship = 0xFF; + friendship = MAX_FRIENDSHIP; for (j = 0; j < MAX_MON_MOVES; j++) { SetMonMoveSlot(&gEnemyParty[monPartyId], sFrontierBrainsMons[facility][symbol][i].moves[j], j); @@ -2560,7 +2560,7 @@ void CreateFrontierBrainPokemon(void) bl TrainerIdToDomeTournamentId\n\ lsls r0, 16\n\ lsrs r0, 16\n\ - bl GetDomeTrainerMonCountInBits\n\ + bl GetDomeTrainerSelectedMons\n\ adds r4, r0, 0\n\ b _081A4E46\n\ .pool\n\ diff --git a/src/graphics.c b/src/graphics.c index 82765e9136..30e5a81214 100644 --- a/src/graphics.c +++ b/src/graphics.c @@ -967,17 +967,17 @@ const u32 gVsLettersGfx[] = INCBIN_U32("graphics/battle_transitions/vs.4bpp.lz") const u32 gUnknown_08D82F10[] = INCBIN_U32("graphics/battle_frontier/tourney_bg.4bpp.lz"); const u32 gUnknown_08D834FC[] = INCBIN_U32("graphics/battle_frontier/tourney_line.4bpp.lz"); // the red glow mask for the tourney advancement lines -const u32 gUnknown_08D83900[] = INCBIN_U32("graphics/unknown/unknown_D83900.bin.lz"); // tilemaps likely +const u32 gUnknown_08D83900[] = INCBIN_U32("graphics/battle_frontier/unknown_D83900.bin.lz"); // tilemaps likely -const u32 gUnknown_08D83B2C[] = INCBIN_U32("graphics/unknown/unknown_D83B2C.bin.lz"); +const u32 gUnknown_08D83B2C[] = INCBIN_U32("graphics/battle_frontier/unknown_D83B2C.bin.lz"); -const u32 gUnknown_08D83C3C[] = INCBIN_U32("graphics/unknown/unknown_D83C3C.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/unknown/unknown_D84970.bin.lz"); +const u32 gUnknown_08D84970[] = INCBIN_U32("graphics/battle_frontier/unknown_D84970.bin.lz"); -const u32 gUnknown_08D84F00[] = INCBIN_U32("graphics/unknown/unknown_D84F00.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"); diff --git a/src/hall_of_fame.c b/src/hall_of_fame.c index 95cbc11ef8..0a1862b2da 100644 --- a/src/hall_of_fame.c +++ b/src/hall_of_fame.c @@ -101,7 +101,7 @@ static void SpriteCB_GetOnScreenAndAnimate(struct Sprite *sprite); static void HallOfFame_PrintMonInfo(struct HallofFameMon* currMon, u8 unused1, u8 unused2); static void HallOfFame_PrintWelcomeText(u8 unusedPossiblyWindowId, u8 unused2); static void HallOfFame_PrintPlayerInfo(u8 unused1, u8 unused2); -static void sub_8175364(u8 taskId); +static void Task_DoConfettiEffect(u8 taskId); static void sub_81751A4(struct Sprite* sprite); // const rom data @@ -1387,12 +1387,13 @@ static bool8 sub_81751FC(void) return FALSE; } -void sub_8175280(void) +// Used when a Battle Dome tourney is won +void DoConfettiEffect(void) { u8 taskId; gSpecialVar_0x8004 = 180; - taskId = CreateTask(sub_8175364, 0); + taskId = CreateTask(Task_DoConfettiEffect, 0); if (taskId != 0xFF) { gTasks[taskId].data[1] = gSpecialVar_0x8004; @@ -1400,11 +1401,11 @@ void sub_8175280(void) } } -static void sub_81752C0(void) +static void StopConfettiEffect(void) { u8 taskId; - if ((taskId = FindTaskIdByFunc(sub_8175364)) != 0xFF) + if ((taskId = FindTaskIdByFunc(Task_DoConfettiEffect)) != 0xFF) DestroyTask(taskId); sub_8152254(); @@ -1437,7 +1438,7 @@ static void sub_81752F4(struct UnkStruct_81520A8 *structPtr) } } -static void sub_8175364(u8 taskId) +static void Task_DoConfettiEffect(u8 taskId) { u32 var = 0; u16 *data = gTasks[taskId].data; @@ -1475,7 +1476,7 @@ static void sub_8175364(u8 taskId) data[0] = 0xFF; break; case 0xFF: - sub_81752C0(); + StopConfettiEffect(); gSpecialVar_0x8004 = var; gSpecialVar_0x8005 = 0xFFFF; break; diff --git a/src/pokemon.c b/src/pokemon.c index 12820aa76e..82da96f7db 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -5085,8 +5085,8 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov } if (friendship < 0) friendship = 0; - if (friendship > 255) - friendship = 255; + if (friendship > MAX_FRIENDSHIP) + friendship = MAX_FRIENDSHIP; SetMonData(mon, MON_DATA_FRIENDSHIP, &friendship); retVal = FALSE; } @@ -5111,8 +5111,8 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov } if (friendship < 0) friendship = 0; - if (friendship > 255) - friendship = 255; + if (friendship > MAX_FRIENDSHIP) + friendship = MAX_FRIENDSHIP; SetMonData(mon, MON_DATA_FRIENDSHIP, &friendship); retVal = FALSE; } @@ -5136,8 +5136,8 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov } if (friendship < 0) friendship = 0; - if (friendship > 255) - friendship = 255; + if (friendship > MAX_FRIENDSHIP) + friendship = MAX_FRIENDSHIP; SetMonData(mon, MON_DATA_FRIENDSHIP, &friendship); retVal = FALSE; } @@ -5786,8 +5786,8 @@ void AdjustFriendship(struct Pokemon *mon, u8 event) } if (friendship < 0) friendship = 0; - if (friendship > 255) - friendship = 255; + if (friendship > MAX_FRIENDSHIP) + friendship = MAX_FRIENDSHIP; SetMonData(mon, MON_DATA_FRIENDSHIP, &friendship); } } diff --git a/src/script_pokemon_util_80F87D8.c b/src/script_pokemon_util_80F87D8.c index 0e191d652f..de15bc360b 100755 --- a/src/script_pokemon_util_80F87D8.c +++ b/src/script_pokemon_util_80F87D8.c @@ -704,20 +704,20 @@ static void CB2_ReturnFromChooseBattleFrontierParty(void) void ReducePlayerPartyToSelectedMons(void) { - struct Pokemon party[4]; + struct Pokemon party[MAX_FRONTIER_PARTY_SIZE]; int i; CpuFill32(0, party, sizeof party); // copy the selected pokemon according to the order. - for (i = 0; i < 4; i++) + for (i = 0; i < MAX_FRONTIER_PARTY_SIZE; i++) if (gSelectedOrderFromParty[i]) // as long as the order keeps going (did the player select 1 mon? 2? 3?), do not stop party[i] = gPlayerParty[gSelectedOrderFromParty[i] - 1]; // index is 0 based, not literal CpuFill32(0, gPlayerParty, sizeof gPlayerParty); // overwrite the first 4 with the order copied to. - for (i = 0; i < 4; i++) + for (i = 0; i < MAX_FRONTIER_PARTY_SIZE; i++) gPlayerParty[i] = party[i]; CalculatePlayerPartyCount(); From ff2d8a9c4e0e3e4614bc50c21d40d4a8270b2ff4 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Fri, 20 Dec 2019 18:52:29 -0500 Subject: [PATCH 05/37] Add frontier trainer constants --- data/maps/Route110_TrickHouseEnd/scripts.inc | 4 +- data/specials.inc | 4 +- include/battle_tower.h | 2 +- include/constants/battle_frontier_trainers.h | 309 +++++++++ include/constants/flags.h | 14 +- include/constants/opponents.h | 4 + include/constants/trainers.h | 4 +- src/battle_dome.c | 25 +- src/battle_factory.c | 2 +- src/battle_palace.c | 2 +- src/battle_pike.c | 10 +- src/battle_pyramid.c | 4 +- src/battle_setup.c | 12 +- src/battle_tent.c | 2 +- src/battle_tower.c | 166 ++--- .../battle_frontier_trainers.h | 602 +++++++++--------- src/field_specials.c | 8 +- src/frontier_util.c | 6 +- 18 files changed, 757 insertions(+), 423 deletions(-) create mode 100644 include/constants/battle_frontier_trainers.h diff --git a/data/maps/Route110_TrickHouseEnd/scripts.inc b/data/maps/Route110_TrickHouseEnd/scripts.inc index 91d70160f3..e7ac835bd6 100644 --- a/data/maps/Route110_TrickHouseEnd/scripts.inc +++ b/data/maps/Route110_TrickHouseEnd/scripts.inc @@ -13,7 +13,7 @@ Route110_TrickHouseEnd_OnResume: @ 826ACC4 Route110_TrickHouseEnd_OnTransition: @ 826ACD0 setvar VAR_TEMP_1, 0 setvar VAR_TEMP_2, 0 - special SetTrickHouseEndRoomFlag + special SetTrickHouseNuggetFlag end Route110_TrickHouseEnd_OnWarp: @ 826ACDE @@ -171,7 +171,7 @@ Route110_TrickHouseEnd_EventScript_CompletedPuzzle8:: @ 826AF28 call_if_eq Route110_TrickHouseEnd_EventScript_NoRoomForTent msgbox Route110_TrickHouseEnd_Text_LeavingOnJourney, MSGBOX_DEFAULT call Route110_TrickHouseEnd_EventScript_TrickMasterExit - special ResetTrickHouseEndRoomFlag + special ResetTrickHouseNuggetFlag release end diff --git a/data/specials.inc b/data/specials.inc index 6922b46a58..6002c98273 100644 --- a/data/specials.inc +++ b/data/specials.inc @@ -271,8 +271,8 @@ gSpecials:: @ 81DBA64 def_special RetrieveLotteryNumber def_special PickLotteryCornerTicket def_special ShowBerryBlenderRecordWindow - def_special ResetTrickHouseEndRoomFlag - def_special SetTrickHouseEndRoomFlag + def_special ResetTrickHouseNuggetFlag + def_special SetTrickHouseNuggetFlag def_special ScriptMenu_CreatePCMultichoice def_special AccessHallOfFamePC def_special Special_ShowDiploma diff --git a/include/battle_tower.h b/include/battle_tower.h index 2366cac12a..fe4cd938ad 100644 --- a/include/battle_tower.h +++ b/include/battle_tower.h @@ -49,7 +49,7 @@ extern const struct BattleFrontierTrainer *gFacilityTrainers; extern const struct FacilityMon *gFacilityTrainerMons; void CallBattleTowerFunc(void); -u16 sub_8162548(u8 challengeNum, u8 battleNum); +u16 GetRandomScaledFrontierTrainerId(u8 challengeNum, u8 battleNum); void SetBattleFacilityTrainerGfxId(u16 trainerId, u8 tempVarId); void SetEReaderTrainerGfxId(void); u8 GetBattleFacilityTrainerGfxId(u16 trainerId); diff --git a/include/constants/battle_frontier_trainers.h b/include/constants/battle_frontier_trainers.h new file mode 100644 index 0000000000..2914b153fa --- /dev/null +++ b/include/constants/battle_frontier_trainers.h @@ -0,0 +1,309 @@ +#ifndef GUARD_CONSTANTS_BATTLE_FRONTIER_TRAINERS_H +#define GUARD_CONSTANTS_BATTLE_FRONTIER_TRAINERS_H + +#define FRONTIER_TRAINER_BRADY 0 +#define FRONTIER_TRAINER_CONNER 1 +#define FRONTIER_TRAINER_BRADLEY 2 +#define FRONTIER_TRAINER_CYBIL 3 +#define FRONTIER_TRAINER_RODETTE 4 +#define FRONTIER_TRAINER_PEGGY 5 +#define FRONTIER_TRAINER_KEITH 6 +#define FRONTIER_TRAINER_GRAYSON 7 +#define FRONTIER_TRAINER_GLENN 8 +#define FRONTIER_TRAINER_LILIANA 9 +#define FRONTIER_TRAINER_ELISE 10 +#define FRONTIER_TRAINER_ZOEY 11 +#define FRONTIER_TRAINER_MANUEL 12 +#define FRONTIER_TRAINER_RUSS 13 +#define FRONTIER_TRAINER_DUSTIN 14 +#define FRONTIER_TRAINER_TINA 15 +#define FRONTIER_TRAINER_GILLIAN1 16 +#define FRONTIER_TRAINER_ZOE 17 +#define FRONTIER_TRAINER_CHEN 18 +#define FRONTIER_TRAINER_AL 19 +#define FRONTIER_TRAINER_MITCH 20 +#define FRONTIER_TRAINER_ANNE 21 +#define FRONTIER_TRAINER_ALIZE 22 +#define FRONTIER_TRAINER_LAUREN 23 +#define FRONTIER_TRAINER_KIPP 24 +#define FRONTIER_TRAINER_JASON 25 +#define FRONTIER_TRAINER_JOHN 26 +#define FRONTIER_TRAINER_ANN 27 +#define FRONTIER_TRAINER_EILEEN 28 +#define FRONTIER_TRAINER_CARLIE 29 +#define FRONTIER_TRAINER_GORDON 30 +#define FRONTIER_TRAINER_AYDEN 31 +#define FRONTIER_TRAINER_MARCO 32 +#define FRONTIER_TRAINER_CIERRA 33 +#define FRONTIER_TRAINER_MARCY 34 +#define FRONTIER_TRAINER_KATHY 35 +#define FRONTIER_TRAINER_PEYTON 36 +#define FRONTIER_TRAINER_JULIAN 37 +#define FRONTIER_TRAINER_QUINN 38 +#define FRONTIER_TRAINER_HAYLEE 39 +#define FRONTIER_TRAINER_AMANDA 40 +#define FRONTIER_TRAINER_STACY 41 +#define FRONTIER_TRAINER_RAFAEL 42 +#define FRONTIER_TRAINER_OLIVER 43 +#define FRONTIER_TRAINER_PAYTON 44 +#define FRONTIER_TRAINER_PAMELA 45 +#define FRONTIER_TRAINER_ELIZA 46 +#define FRONTIER_TRAINER_MARISA 47 +#define FRONTIER_TRAINER_LEWIS 48 +#define FRONTIER_TRAINER_YOSHI 49 +#define FRONTIER_TRAINER_DESTIN 50 +#define FRONTIER_TRAINER_KEON 51 +#define FRONTIER_TRAINER_STUART 52 +#define FRONTIER_TRAINER_NESTOR 53 +#define FRONTIER_TRAINER_DERRICK 54 +#define FRONTIER_TRAINER_BRYSON 55 +#define FRONTIER_TRAINER_CLAYTON 56 +#define FRONTIER_TRAINER_TRENTON 57 +#define FRONTIER_TRAINER_JENSON 58 +#define FRONTIER_TRAINER_WESLEY 59 +#define FRONTIER_TRAINER_ANTON 60 +#define FRONTIER_TRAINER_LAWSON 61 +#define FRONTIER_TRAINER_SAMMY 62 +#define FRONTIER_TRAINER_ARNIE 63 +#define FRONTIER_TRAINER_ADRIAN 64 +#define FRONTIER_TRAINER_TRISTAN 65 +#define FRONTIER_TRAINER_JULIANA 66 +#define FRONTIER_TRAINER_RYLEE 67 +#define FRONTIER_TRAINER_CHELSEA 68 +#define FRONTIER_TRAINER_DANELA 69 +#define FRONTIER_TRAINER_LIZBETH 70 +#define FRONTIER_TRAINER_AMELIA 71 +#define FRONTIER_TRAINER_JILLIAN 72 +#define FRONTIER_TRAINER_ABBIE 73 +#define FRONTIER_TRAINER_BRIANA 74 +#define FRONTIER_TRAINER_ANTONIO 75 +#define FRONTIER_TRAINER_JADEN 76 +#define FRONTIER_TRAINER_DAKOTA 77 +#define FRONTIER_TRAINER_BRAYDEN 78 +#define FRONTIER_TRAINER_CORSON 79 +#define FRONTIER_TRAINER_TREVIN 80 +#define FRONTIER_TRAINER_PATRICK 81 +#define FRONTIER_TRAINER_KADEN 82 +#define FRONTIER_TRAINER_MAXWELL 83 +#define FRONTIER_TRAINER_DARYL 84 +#define FRONTIER_TRAINER_KENNETH 85 +#define FRONTIER_TRAINER_RICH 86 +#define FRONTIER_TRAINER_CADEN 87 +#define FRONTIER_TRAINER_MARLON 88 +#define FRONTIER_TRAINER_NASH 89 +#define FRONTIER_TRAINER_ROBBY 90 +#define FRONTIER_TRAINER_REECE 91 +#define FRONTIER_TRAINER_KATHRYN 92 +#define FRONTIER_TRAINER_ELLEN 93 +#define FRONTIER_TRAINER_RAMON 94 +#define FRONTIER_TRAINER_ARTHUR 95 +#define FRONTIER_TRAINER_ALONDRA 96 +#define FRONTIER_TRAINER_ADRIANA 97 +#define FRONTIER_TRAINER_MALIK 98 +#define FRONTIER_TRAINER_JILL 99 +#define FRONTIER_TRAINER_ERIK 100 +#define FRONTIER_TRAINER_YAZMIN 101 +#define FRONTIER_TRAINER_JAMAL 102 +#define FRONTIER_TRAINER_LESLIE 103 +#define FRONTIER_TRAINER_DAVE 104 +#define FRONTIER_TRAINER_CARLO 105 +#define FRONTIER_TRAINER_EMILIA 106 +#define FRONTIER_TRAINER_DALIA 107 +#define FRONTIER_TRAINER_HITOMI 108 +#define FRONTIER_TRAINER_RICARDO 109 +#define FRONTIER_TRAINER_SHIZUKA 110 +#define FRONTIER_TRAINER_JOANA 111 +#define FRONTIER_TRAINER_KELLY 112 +#define FRONTIER_TRAINER_RAYNA 113 +#define FRONTIER_TRAINER_EVAN 114 +#define FRONTIER_TRAINER_JORDAN 115 +#define FRONTIER_TRAINER_JOEL 116 +#define FRONTIER_TRAINER_KRISTEN 117 +#define FRONTIER_TRAINER_SELPHY 118 +#define FRONTIER_TRAINER_CHLOE 119 +#define FRONTIER_TRAINER_NORTON 120 +#define FRONTIER_TRAINER_LUKAS 121 +#define FRONTIER_TRAINER_ZACH 122 +#define FRONTIER_TRAINER_KAITLYN 123 +#define FRONTIER_TRAINER_BREANNA 124 +#define FRONTIER_TRAINER_KENDRA 125 +#define FRONTIER_TRAINER_MOLLY 126 +#define FRONTIER_TRAINER_JAZMIN 127 +#define FRONTIER_TRAINER_KELSEY 128 +#define FRONTIER_TRAINER_JALEN 129 +#define FRONTIER_TRAINER_GRIFFEN 130 +#define FRONTIER_TRAINER_XANDER 131 +#define FRONTIER_TRAINER_MARVIN 132 +#define FRONTIER_TRAINER_BRENNAN 133 +#define FRONTIER_TRAINER_BALEY 134 +#define FRONTIER_TRAINER_ZACKARY 135 +#define FRONTIER_TRAINER_GABRIEL 136 +#define FRONTIER_TRAINER_EMILY 137 +#define FRONTIER_TRAINER_JORDYN 138 +#define FRONTIER_TRAINER_SOFIA 139 +#define FRONTIER_TRAINER_BRADEN 140 +#define FRONTIER_TRAINER_KAYDEN 141 +#define FRONTIER_TRAINER_COOPER 142 +#define FRONTIER_TRAINER_JULIA 143 +#define FRONTIER_TRAINER_AMARA 144 +#define FRONTIER_TRAINER_LYNN 145 +#define FRONTIER_TRAINER_JOVAN 146 +#define FRONTIER_TRAINER_DOMINIC 147 +#define FRONTIER_TRAINER_NIKOLAS 148 +#define FRONTIER_TRAINER_VALERIA 149 +#define FRONTIER_TRAINER_DELANEY 150 +#define FRONTIER_TRAINER_MEGHAN 151 +#define FRONTIER_TRAINER_ROBERTO 152 +#define FRONTIER_TRAINER_DAMIAN 153 +#define FRONTIER_TRAINER_BRODY 154 +#define FRONTIER_TRAINER_GRAHAM 155 +#define FRONTIER_TRAINER_TYLOR 156 +#define FRONTIER_TRAINER_JAREN 157 +#define FRONTIER_TRAINER_CORDELL 158 +#define FRONTIER_TRAINER_JAZLYN 159 +#define FRONTIER_TRAINER_ZACHERY 160 +#define FRONTIER_TRAINER_JOHAN 161 +#define FRONTIER_TRAINER_SHEA 162 +#define FRONTIER_TRAINER_KAILA 163 +#define FRONTIER_TRAINER_ISIAH 164 +#define FRONTIER_TRAINER_GARRETT 165 +#define FRONTIER_TRAINER_HAYLIE 166 +#define FRONTIER_TRAINER_MEGAN 167 +#define FRONTIER_TRAINER_ISSAC 168 +#define FRONTIER_TRAINER_QUINTON 169 +#define FRONTIER_TRAINER_SALMA 170 +#define FRONTIER_TRAINER_ANSLEY 171 +#define FRONTIER_TRAINER_HOLDEN 172 +#define FRONTIER_TRAINER_LUCA 173 +#define FRONTIER_TRAINER_JAMISON 174 +#define FRONTIER_TRAINER_GUNNAR 175 +#define FRONTIER_TRAINER_CRAIG 176 +#define FRONTIER_TRAINER_PIERCE 177 +#define FRONTIER_TRAINER_REGINA 178 +#define FRONTIER_TRAINER_ALISON 179 +#define FRONTIER_TRAINER_HANK 180 +#define FRONTIER_TRAINER_EARL 181 +#define FRONTIER_TRAINER_RAMIRO 182 +#define FRONTIER_TRAINER_HUNTER 183 +#define FRONTIER_TRAINER_AIDEN 184 +#define FRONTIER_TRAINER_XAVIER 185 +#define FRONTIER_TRAINER_CLINTON 186 +#define FRONTIER_TRAINER_JESSE 187 +#define FRONTIER_TRAINER_EDUARDO 188 +#define FRONTIER_TRAINER_HAL 189 +#define FRONTIER_TRAINER_GAGE 190 +#define FRONTIER_TRAINER_ARNOLD 191 +#define FRONTIER_TRAINER_JARRETT 192 +#define FRONTIER_TRAINER_GARETT 193 +#define FRONTIER_TRAINER_EMANUEL 194 +#define FRONTIER_TRAINER_GUSTAVO 195 +#define FRONTIER_TRAINER_KAMERON 196 +#define FRONTIER_TRAINER_ALFREDO 197 +#define FRONTIER_TRAINER_RUBEN 198 +#define FRONTIER_TRAINER_LAMAR 199 +#define FRONTIER_TRAINER_JAXON 200 +#define FRONTIER_TRAINER_LOGAN 201 +#define FRONTIER_TRAINER_EMILEE 202 +#define FRONTIER_TRAINER_JOSIE 203 +#define FRONTIER_TRAINER_ARMANDO 204 +#define FRONTIER_TRAINER_SKYLER 205 +#define FRONTIER_TRAINER_RUTH 206 +#define FRONTIER_TRAINER_MELODY 207 +#define FRONTIER_TRAINER_PEDRO 208 +#define FRONTIER_TRAINER_ERICK 209 +#define FRONTIER_TRAINER_ELAINE 210 +#define FRONTIER_TRAINER_JOYCE 211 +#define FRONTIER_TRAINER_TODD 212 +#define FRONTIER_TRAINER_GAVIN 213 +#define FRONTIER_TRAINER_MALORY 214 +#define FRONTIER_TRAINER_ESTHER 215 +#define FRONTIER_TRAINER_OSCAR 216 +#define FRONTIER_TRAINER_WILSON 217 +#define FRONTIER_TRAINER_CLARE 218 +#define FRONTIER_TRAINER_TESS 219 +#define FRONTIER_TRAINER_LEON 220 +#define FRONTIER_TRAINER_ALONZO 221 +#define FRONTIER_TRAINER_VINCE 222 +#define FRONTIER_TRAINER_BRYON 223 +#define FRONTIER_TRAINER_AVA 224 +#define FRONTIER_TRAINER_MIRIAM 225 +#define FRONTIER_TRAINER_CARRIE 226 +#define FRONTIER_TRAINER_GILLIAN2 227 +#define FRONTIER_TRAINER_TYLER 228 +#define FRONTIER_TRAINER_CHAZ 229 +#define FRONTIER_TRAINER_NELSON 230 +#define FRONTIER_TRAINER_SHANIA 231 +#define FRONTIER_TRAINER_STELLA 232 +#define FRONTIER_TRAINER_DORINE 233 +#define FRONTIER_TRAINER_MADDOX 234 +#define FRONTIER_TRAINER_DAVIN 235 +#define FRONTIER_TRAINER_TREVON 236 +#define FRONTIER_TRAINER_MATEO 237 +#define FRONTIER_TRAINER_BRET 238 +#define FRONTIER_TRAINER_RAUL 239 +#define FRONTIER_TRAINER_KAY 240 +#define FRONTIER_TRAINER_ELENA 241 +#define FRONTIER_TRAINER_ALANA 242 +#define FRONTIER_TRAINER_ALEXAS 243 +#define FRONTIER_TRAINER_WESTON 244 +#define FRONTIER_TRAINER_JASPER 245 +#define FRONTIER_TRAINER_NADIA 246 +#define FRONTIER_TRAINER_MIRANDA 247 +#define FRONTIER_TRAINER_EMMA 248 +#define FRONTIER_TRAINER_ROLANDO 249 +#define FRONTIER_TRAINER_STANLY 250 +#define FRONTIER_TRAINER_DARIO 251 +#define FRONTIER_TRAINER_KARLEE 252 +#define FRONTIER_TRAINER_JAYLIN 253 +#define FRONTIER_TRAINER_INGRID 254 +#define FRONTIER_TRAINER_DELILAH 255 +#define FRONTIER_TRAINER_CARLY 256 +#define FRONTIER_TRAINER_LEXIE 257 +#define FRONTIER_TRAINER_MILLER 258 +#define FRONTIER_TRAINER_MARV 259 +#define FRONTIER_TRAINER_LAYTON 260 +#define FRONTIER_TRAINER_BROOKS 261 +#define FRONTIER_TRAINER_GREGORY 262 +#define FRONTIER_TRAINER_REESE 263 +#define FRONTIER_TRAINER_MASON 264 +#define FRONTIER_TRAINER_TOBY 265 +#define FRONTIER_TRAINER_DOROTHY 266 +#define FRONTIER_TRAINER_PIPER 267 +#define FRONTIER_TRAINER_FINN 268 +#define FRONTIER_TRAINER_SAMIR 269 +#define FRONTIER_TRAINER_FIONA 270 +#define FRONTIER_TRAINER_GLORIA 271 +#define FRONTIER_TRAINER_NICO 272 +#define FRONTIER_TRAINER_JEREMY 273 +#define FRONTIER_TRAINER_CAITLIN 274 +#define FRONTIER_TRAINER_REENA 275 +#define FRONTIER_TRAINER_AVERY 276 +#define FRONTIER_TRAINER_LIAM 277 +#define FRONTIER_TRAINER_THEO 278 +#define FRONTIER_TRAINER_BAILEY 279 +#define FRONTIER_TRAINER_HUGO 280 +#define FRONTIER_TRAINER_BRYCE 281 +#define FRONTIER_TRAINER_GIDEON 282 +#define FRONTIER_TRAINER_TRISTON 283 +#define FRONTIER_TRAINER_CHARLES 284 +#define FRONTIER_TRAINER_RAYMOND 285 +#define FRONTIER_TRAINER_DIRK 286 +#define FRONTIER_TRAINER_HAROLD 287 +#define FRONTIER_TRAINER_OMAR 288 +#define FRONTIER_TRAINER_PETER 289 +#define FRONTIER_TRAINER_DEV 290 +#define FRONTIER_TRAINER_COREY 291 +#define FRONTIER_TRAINER_ANDRE 292 +#define FRONTIER_TRAINER_FERRIS 293 +#define FRONTIER_TRAINER_ALIVIA 294 +#define FRONTIER_TRAINER_PAIGE 295 +#define FRONTIER_TRAINER_ANYA 296 +#define FRONTIER_TRAINER_DAWN 297 +#define FRONTIER_TRAINER_ABBY 298 +#define FRONTIER_TRAINER_GRETEL 299 + +#define FRONTIER_TRAINERS_COUNT 300 + +// special trainer IDs begin at 300, see constants/trainers.h + +#endif // GUARD_CONSTANTS_BATTLE_FRONTIER_TRAINERS_H diff --git a/include/constants/flags.h b/include/constants/flags.h index 96546d7ab0..63a704de81 100644 --- a/include/constants/flags.h +++ b/include/constants/flags.h @@ -1,6 +1,8 @@ #ifndef GUARD_CONSTANTS_FLAGS_H #define GUARD_CONSTANTS_FLAGS_H +#include "constants/opponents.h" + // Temporary Flags // These temporary flags are are cleared every time a map is loaded. They are used // for things like shortening an NPCs introduction text if the player already spoke @@ -533,8 +535,6 @@ #define FLAG_MYSTERY_EVENT_14 0x1F2 #define FLAG_MYSTERY_EVENT_15 0x1F3 -#define FLAG_TRICK_HOUSE_END_ROOM 0x1F5 // Trick House End Room Flag - // Hidden Items -- sorted by location #define FLAG_HIDDEN_ITEMS_START 0x1F4 #define FLAG_HIDDEN_ITEM_TRICK_HOUSE_NUGGET (FLAG_HIDDEN_ITEMS_START + 0x01) @@ -1342,13 +1342,17 @@ #define FLAG_UNUSED_0x4FF 0x4FF // Unused Flag -#define FLAG_TRAINER_FLAG_START 0x500 -#define TRAINERS_FLAG_NO 0x356 +// Trainer Flags +// Trainer flags occupy 0x500 - 0x85F, the last 9 of which are unused +// See constants/opponents.h. The values there + FLAG_TRAINER_FLAG_START are the flag IDs -#define SYSTEM_FLAGS (FLAG_TRAINER_FLAG_START + TRAINERS_FLAG_NO + 0xA) // 0x860 +#define TRAINER_FLAGS_START 0x500 +#define TRAINER_FLAGS_END (TRAINER_FLAGS_START + MAX_TRAINERS_COUNT - 1) // 0x85F // System Flags +#define SYSTEM_FLAGS (TRAINER_FLAGS_END + 1) // 0x860 + #define FLAG_SYS_POKEMON_GET (SYSTEM_FLAGS + 0) // FLAG_0x860 #define FLAG_SYS_POKEDEX_GET (SYSTEM_FLAGS + 1) #define FLAG_SYS_POKENAV_GET (SYSTEM_FLAGS + 2) diff --git a/include/constants/opponents.h b/include/constants/opponents.h index 9917b84baf..e76d206caa 100644 --- a/include/constants/opponents.h +++ b/include/constants/opponents.h @@ -857,6 +857,10 @@ #define TRAINER_BRENDAN_16 853 #define TRAINER_MAY_16 854 +// NOTE: Because each Trainer uses a flag to determine when they are defeated, there is only space for 9 additional trainers before trainer flag space overflows +// More space can be made by shifting flags around in constants/flags.h or changing how trainer flags are handled + #define TRAINERS_COUNT 855 +#define MAX_TRAINERS_COUNT 864 #endif // GUARD_CONSTANTS_OPPONENTS_H diff --git a/include/constants/trainers.h b/include/constants/trainers.h index e5a193770a..541b131ca3 100644 --- a/include/constants/trainers.h +++ b/include/constants/trainers.h @@ -2,9 +2,11 @@ #define GUARD_TRAINERS_H #include "constants/opponents.h" +#include "constants/battle_frontier_trainers.h" // Special Trainer Ids. -#define TRAINER_RECORD_MIXING_FRIEND 300 +// 0-299 are frontier trainers +#define TRAINER_RECORD_MIXING_FRIEND FRONTIER_TRAINERS_COUNT #define TRAINER_RECORD_MIXING_APPRENTICE 400 #define TRAINER_EREADER 500 #define TRAINER_FRONTIER_BRAIN 1022 diff --git a/src/battle_dome.c b/src/battle_dome.c index e49bada673..2f3479b9f9 100644 --- a/src/battle_dome.c +++ b/src/battle_dome.c @@ -2454,7 +2454,7 @@ static void InitDomeTrainers(void) { do { - trainerId = sub_8162548(GetCurrentFacilityWinStreak(), 0); + trainerId = GetRandomScaledFrontierTrainerId(GetCurrentFacilityWinStreak(), 0); for (j = 1; j < i; j++) { if (DOME_TRAINERS[j].trainerId == trainerId) @@ -2467,7 +2467,7 @@ static void InitDomeTrainers(void) { do { - trainerId = sub_8162548(GetCurrentFacilityWinStreak() + 1, 0); + trainerId = GetRandomScaledFrontierTrainerId(GetCurrentFacilityWinStreak() + 1, 0); for (j = 1; j < i; j++) { if (DOME_TRAINERS[j].trainerId == trainerId) @@ -3250,24 +3250,27 @@ _08190156:\n\ } #endif // NONMATCHING +// Duplicate of GetFrontierTrainerFixedIvs +// NOTE: In CreateDomeOpponentMon a tournament trainer ID (0-15) is passed instead, resulting in all IVs of 3 static u8 GetDomeTrainerMonIvs(u16 trainerId) { u8 fixedIv; - if (trainerId <= 99) + + if (trainerId <= FRONTIER_TRAINER_JILL) // 0 - 99 fixedIv = 3; - else if (trainerId <= 119) + else if (trainerId <= FRONTIER_TRAINER_CHLOE) // 100 - 119 fixedIv = 6; - else if (trainerId <= 139) + else if (trainerId <= FRONTIER_TRAINER_SOFIA) // 120 - 139 fixedIv = 9; - else if (trainerId <= 159) + else if (trainerId <= FRONTIER_TRAINER_JAZLYN) // 140 - 159 fixedIv = 12; - else if (trainerId <= 179) + else if (trainerId <= FRONTIER_TRAINER_ALISON) // 160 - 179 fixedIv = 15; - else if (trainerId <= 199) + else if (trainerId <= FRONTIER_TRAINER_LAMAR) // 180 - 199 fixedIv = 18; - else if (trainerId <= 219) + else if (trainerId <= FRONTIER_TRAINER_TESS) // 200 - 219 fixedIv = 21; - else + else // 220+ (- 299) fixedIv = 31; return fixedIv; @@ -6304,7 +6307,7 @@ static void CopyDomeTrainerName(u8 *str, u16 trainerId) for (i = 0; i < PLAYER_NAME_LENGTH; i++) str[i] = gSaveBlock2Ptr->playerName[i]; } - else if (trainerId < TRAINER_RECORD_MIXING_FRIEND) + else if (trainerId < FRONTIER_TRAINERS_COUNT) { for (i = 0; i < PLAYER_NAME_LENGTH; i++) str[i] = gFacilityTrainers[trainerId].trainerName[i]; diff --git a/src/battle_factory.c b/src/battle_factory.c index b412af2371..9216e24169 100644 --- a/src/battle_factory.c +++ b/src/battle_factory.c @@ -304,7 +304,7 @@ static void GenerateOpponentMons(void) do { - trainerId = sub_8162548(challengeNum, gSaveBlock2Ptr->frontier.curChallengeBattleNum); + trainerId = GetRandomScaledFrontierTrainerId(challengeNum, gSaveBlock2Ptr->frontier.curChallengeBattleNum); for (i = 0; i < gSaveBlock2Ptr->frontier.curChallengeBattleNum; i++) { if (gSaveBlock2Ptr->frontier.trainerIds[i] == trainerId) diff --git a/src/battle_palace.c b/src/battle_palace.c index b5da77e35d..98a902c3ea 100644 --- a/src/battle_palace.c +++ b/src/battle_palace.c @@ -159,7 +159,7 @@ static void SetPalaceOpponent(void) static void BufferOpponentIntroSpeech(void) { - if (gTrainerBattleOpponent_A < TRAINER_RECORD_MIXING_FRIEND) + if (gTrainerBattleOpponent_A < FRONTIER_TRAINERS_COUNT) FrontierSpeechToString(gFacilityTrainers[gTrainerBattleOpponent_A].speechBefore); } diff --git a/src/battle_pike.c b/src/battle_pike.c index e7da8d0385..1c05d12cfa 100644 --- a/src/battle_pike.c +++ b/src/battle_pike.c @@ -1400,7 +1400,7 @@ static void PrepareOneTrainer(bool8 difficult) challengeNum = gSaveBlock2Ptr->frontier.pikeWinStreaks[lvlMode] / 14; do { - trainerId = sub_8162548(challengeNum, battleNum); + trainerId = GetRandomScaledFrontierTrainerId(challengeNum, battleNum); for (i = 0; i < gSaveBlock2Ptr->frontier.curChallengeBattleNum - 1; i++) { if (gSaveBlock2Ptr->frontier.trainerIds[i] == trainerId) @@ -1425,7 +1425,7 @@ static void PrepareTwoTrainers(void) gFacilityTrainers = gBattleFrontierTrainers; do { - trainerId = sub_8162548(challengeNum, 1); + trainerId = GetRandomScaledFrontierTrainerId(challengeNum, 1); for (i = 0; i < gSaveBlock2Ptr->frontier.curChallengeBattleNum - 1; i++) { if (gSaveBlock2Ptr->frontier.trainerIds[i] == trainerId) @@ -1440,7 +1440,7 @@ static void PrepareTwoTrainers(void) do { - trainerId = sub_8162548(challengeNum, 1); + trainerId = GetRandomScaledFrontierTrainerId(challengeNum, 1); for (i = 0; i < gSaveBlock2Ptr->frontier.curChallengeBattleNum; i++) { if (gSaveBlock2Ptr->frontier.trainerIds[i] == trainerId) @@ -1466,12 +1466,12 @@ static void BufferTrainerIntro(void) { if (gSpecialVar_0x8005 == 0) { - if (gTrainerBattleOpponent_A < TRAINER_RECORD_MIXING_FRIEND) + if (gTrainerBattleOpponent_A < FRONTIER_TRAINERS_COUNT) FrontierSpeechToString(gFacilityTrainers[gTrainerBattleOpponent_A].speechBefore); } else if (gSpecialVar_0x8005 == 1) { - if (gTrainerBattleOpponent_B < TRAINER_RECORD_MIXING_FRIEND) + if (gTrainerBattleOpponent_B < FRONTIER_TRAINERS_COUNT) FrontierSpeechToString(gFacilityTrainers[gTrainerBattleOpponent_B].speechBefore); } } diff --git a/src/battle_pyramid.c b/src/battle_pyramid.c index 493526fad9..9fa6beb1db 100644 --- a/src/battle_pyramid.c +++ b/src/battle_pyramid.c @@ -1493,7 +1493,7 @@ static u16 GetUniqueTrainerId(u8 eventObjectId) { do { - trainerId = sub_8162548(challengeNum + 1, battleNum); + trainerId = GetRandomScaledFrontierTrainerId(challengeNum + 1, battleNum); for (i = 0; i < eventObjectId; i++) { if (gSaveBlock2Ptr->frontier.trainerIds[i] == trainerId) @@ -1505,7 +1505,7 @@ static u16 GetUniqueTrainerId(u8 eventObjectId) { do { - trainerId = sub_8162548(challengeNum, battleNum); + trainerId = GetRandomScaledFrontierTrainerId(challengeNum, battleNum); for (i = 0; i < eventObjectId; i++) { if (gSaveBlock2Ptr->frontier.trainerIds[i] == trainerId) diff --git a/src/battle_setup.c b/src/battle_setup.c index 3234e8974a..c84f9f3bc7 100644 --- a/src/battle_setup.c +++ b/src/battle_setup.c @@ -961,12 +961,12 @@ static u8 TrainerBattleLoadArg8(const u8 *ptr) static u16 GetTrainerAFlag(void) { - return FLAG_TRAINER_FLAG_START + gTrainerBattleOpponent_A; + return TRAINER_FLAGS_START + gTrainerBattleOpponent_A; } static u16 GetTrainerBFlag(void) { - return FLAG_TRAINER_FLAG_START + gTrainerBattleOpponent_B; + return TRAINER_FLAGS_START + gTrainerBattleOpponent_B; } static bool32 IsPlayerDefeated(u32 battleOutcome) @@ -1193,7 +1193,7 @@ void SetUpTwoTrainersBattle(void) bool32 GetTrainerFlagFromScriptPointer(const u8 *data) { u32 flag = TrainerBattleLoadArg16(data + 2); - return FlagGet(FLAG_TRAINER_FLAG_START + flag); + return FlagGet(TRAINER_FLAGS_START + flag); } void SetUpTrainerMovement(void) @@ -1232,17 +1232,17 @@ static void SetBattledTrainerFlag(void) bool8 HasTrainerBeenFought(u16 trainerId) { - return FlagGet(FLAG_TRAINER_FLAG_START + trainerId); + return FlagGet(TRAINER_FLAGS_START + trainerId); } void SetTrainerFlag(u16 trainerId) { - FlagSet(FLAG_TRAINER_FLAG_START + trainerId); + FlagSet(TRAINER_FLAGS_START + trainerId); } void ClearTrainerFlag(u16 trainerId) { - FlagClear(FLAG_TRAINER_FLAG_START + trainerId); + FlagClear(TRAINER_FLAGS_START + trainerId); } void BattleSetup_StartTrainerBattle(void) diff --git a/src/battle_tent.c b/src/battle_tent.c index 860c07a53d..eebca1d07b 100644 --- a/src/battle_tent.c +++ b/src/battle_tent.c @@ -134,7 +134,7 @@ static void SetVerdanturfTentTrainerGfx(void) static void BufferVerdanturfTentTrainerIntro(void) { - if (gTrainerBattleOpponent_A < TRAINER_RECORD_MIXING_FRIEND) + if (gTrainerBattleOpponent_A < FRONTIER_TRAINERS_COUNT) FrontierSpeechToString(gFacilityTrainers[gTrainerBattleOpponent_A].speechBefore); } diff --git a/src/battle_tower.c b/src/battle_tower.c index b08a09ff59..cd3c7393be 100644 --- a/src/battle_tower.c +++ b/src/battle_tower.c @@ -1104,32 +1104,37 @@ static const u8 sBattleTowerPartySizes2[] = [FRONTIER_MODE_LINK_MULTIS] = FRONTIER_MULTI_PARTY_SIZE, }; -// min/max trainer id -static const u16 gUnknown_085DF9FA[][2] = +// Trainer ID ranges for possible frontier trainers to encounter on particular challenges +// Trainers are scaled by difficulty, so higher trainer IDs have better teams +static const u16 sFrontierTrainerIdRanges[][2] = { - {0x0000, 0x0063}, - {0x0050, 0x0077}, - {0x0064, 0x008b}, - {0x0078, 0x009f}, - {0x008c, 0x00b3}, - {0x00a0, 0x00c7}, - {0x00b4, 0x00db}, - {0x00c8, 0x012b}, + {FRONTIER_TRAINER_BRADY, FRONTIER_TRAINER_JILL}, // 0 - 99 + {FRONTIER_TRAINER_TREVIN, FRONTIER_TRAINER_CHLOE}, // 80 - 119 + {FRONTIER_TRAINER_ERIK, FRONTIER_TRAINER_SOFIA}, // 100 - 139 + {FRONTIER_TRAINER_NORTON, FRONTIER_TRAINER_JAZLYN}, // 120 - 159 + {FRONTIER_TRAINER_BRADEN, FRONTIER_TRAINER_ALISON}, // 140 - 179 + {FRONTIER_TRAINER_ZACHERY, FRONTIER_TRAINER_LAMAR}, // 160 - 199 + {FRONTIER_TRAINER_HANK, FRONTIER_TRAINER_TESS}, // 180 - 219 + {FRONTIER_TRAINER_JAXON, FRONTIER_TRAINER_GRETEL}, // 200 - 299 }; -// min/max trainer id -static const u16 gUnknown_085DFA1A[][2] = +static const u16 sFrontierTrainerIdRangesHard[][2] = { - {0x0064, 0x0077}, - {0x0078, 0x008b}, - {0x008c, 0x009f}, - {0x00a0, 0x00b3}, - {0x00b4, 0x00c7}, - {0x00c8, 0x00db}, - {0x00dc, 0x00ef}, - {0x00c8, 0x012b}, - {0x00b3, 0x008d}, - {0x00c8, 0x00b7}, + {FRONTIER_TRAINER_ERIK, FRONTIER_TRAINER_CHLOE}, // 100 - 119 + {FRONTIER_TRAINER_NORTON, FRONTIER_TRAINER_SOFIA}, // 120 - 139 + {FRONTIER_TRAINER_BRADEN, FRONTIER_TRAINER_JAZLYN}, // 140 - 159 + {FRONTIER_TRAINER_ZACHERY, FRONTIER_TRAINER_ALISON}, // 160 - 179 + {FRONTIER_TRAINER_HANK, FRONTIER_TRAINER_LAMAR}, // 180 - 199 + {FRONTIER_TRAINER_JAXON, FRONTIER_TRAINER_TESS}, // 200 - 219 + {FRONTIER_TRAINER_LEON, FRONTIER_TRAINER_RAUL}, // 220 - 239 + {FRONTIER_TRAINER_JAXON, FRONTIER_TRAINER_GRETEL}, // 200 - 299 +}; + +// Trainer IDs? Don't make sense as part of previous array, min/max relationship reversed and never accessed +static const u16 sUnused_085DFA1A[][2] = +{ + {179, 141}, // FRONTIER_TRAINER_ALISON - FRONTIER_TRAINER_KAYDEN + {200, 183}, // FRONTIER_TRAINER_JAXON - FRONTIER_TRAINER_HUNTER }; static const u8 sBattleTowerPartySizes[FRONTIER_MODE_COUNT] = @@ -1334,7 +1339,7 @@ static void SetNextFacilityOpponent(void) s32 i; while (1) { - id = sub_8162548(challengeNum, gSaveBlock2Ptr->frontier.curChallengeBattleNum); + id = GetRandomScaledFrontierTrainerId(challengeNum, gSaveBlock2Ptr->frontier.curChallengeBattleNum); // Ensure trainer wasn't previously fought in this challenge. for (i = 0; i < gSaveBlock2Ptr->frontier.curChallengeBattleNum; i++) @@ -1354,7 +1359,7 @@ static void SetNextFacilityOpponent(void) } } -u16 sub_8162548(u8 challengeNum, u8 battleNum) +u16 GetRandomScaledFrontierTrainerId(u8 challengeNum, u8 battleNum) { u16 trainerId; @@ -1362,49 +1367,54 @@ u16 sub_8162548(u8 challengeNum, u8 battleNum) { if (battleNum == 6) { - trainerId = (gUnknown_085DFA1A[challengeNum][1] - gUnknown_085DFA1A[challengeNum][0]) + 1; - trainerId = gUnknown_085DFA1A[challengeNum][0] + (Random() % trainerId); + // The last battle in each challenge has a jump in difficulty, pulls from a table with higher ranges + trainerId = (sFrontierTrainerIdRangesHard[challengeNum][1] - sFrontierTrainerIdRangesHard[challengeNum][0]) + 1; + trainerId = sFrontierTrainerIdRangesHard[challengeNum][0] + (Random() % trainerId); } else { - trainerId = (gUnknown_085DF9FA[challengeNum][1] - gUnknown_085DF9FA[challengeNum][0]) + 1; - trainerId = gUnknown_085DF9FA[challengeNum][0] + (Random() % trainerId); + trainerId = (sFrontierTrainerIdRanges[challengeNum][1] - sFrontierTrainerIdRanges[challengeNum][0]) + 1; + trainerId = sFrontierTrainerIdRanges[challengeNum][0] + (Random() % trainerId); } } else { - trainerId = (gUnknown_085DF9FA[7][1] - gUnknown_085DF9FA[7][0]) + 1; - trainerId = gUnknown_085DF9FA[7][0] + (Random() % trainerId); + // After challenge 7, trainer IDs always come from the last, hardest range, which is the same for both trainer ID tables + trainerId = (sFrontierTrainerIdRanges[7][1] - sFrontierTrainerIdRanges[7][0]) + 1; + trainerId = sFrontierTrainerIdRanges[7][0] + (Random() % trainerId); } return trainerId; } -static void sub_81625B4(u8 challengeNum, u8 battleNum, u16 *trainerIdPtr, u8 *arg3) // Unused +// Unused +static void GetRandomScaledFrontierTrainerIdRange(u8 challengeNum, u8 battleNum, u16 *trainerIdPtr, u8 *rangePtr) { - u16 trainerId, count; + u16 trainerId, range; if (challengeNum <= 7) { if (battleNum == 6) { - count = (gUnknown_085DFA1A[challengeNum][1] - gUnknown_085DFA1A[challengeNum][0]) + 1; - trainerId = gUnknown_085DFA1A[challengeNum][0]; + // The last battle in each challenge has a jump in difficulty, pulls from a table with higher ranges + range = (sFrontierTrainerIdRangesHard[challengeNum][1] - sFrontierTrainerIdRangesHard[challengeNum][0]) + 1; + trainerId = sFrontierTrainerIdRangesHard[challengeNum][0]; } else { - count = (gUnknown_085DF9FA[challengeNum][1] - gUnknown_085DF9FA[challengeNum][0]) + 1; - trainerId = gUnknown_085DF9FA[challengeNum][0]; + range = (sFrontierTrainerIdRanges[challengeNum][1] - sFrontierTrainerIdRanges[challengeNum][0]) + 1; + trainerId = sFrontierTrainerIdRanges[challengeNum][0]; } } else { - count = (gUnknown_085DF9FA[7][1] - gUnknown_085DF9FA[7][0]) + 1; - trainerId = gUnknown_085DF9FA[7][0]; + // After challenge 7, trainer IDs always come from the last, hardest range, which is the same for both trainer ID tables + range = (sFrontierTrainerIdRanges[7][1] - sFrontierTrainerIdRanges[7][0]) + 1; + trainerId = sFrontierTrainerIdRanges[7][0]; } *trainerIdPtr = trainerId; - *arg3 = count; + *rangePtr = range; } void SetBattleFacilityTrainerGfxId(u16 trainerId, u8 tempVarId) @@ -1423,7 +1433,7 @@ void SetBattleFacilityTrainerGfxId(u16 trainerId, u8 tempVarId) SetFrontierBrainEventObjGfx_2(); return; } - else if (trainerId < TRAINER_RECORD_MIXING_FRIEND) + else if (trainerId < FRONTIER_TRAINERS_COUNT) { facilityClass = gFacilityTrainers[trainerId].facilityClass; } @@ -1515,7 +1525,7 @@ u8 GetBattleFacilityTrainerGfxId(u16 trainerId) { facilityClass = gSaveBlock2Ptr->frontier.ereaderTrainer.facilityClass; } - else if (trainerId < TRAINER_RECORD_MIXING_FRIEND) + else if (trainerId < FRONTIER_TRAINERS_COUNT) { facilityClass = gFacilityTrainers[trainerId].facilityClass; } @@ -1657,7 +1667,7 @@ u8 GetFrontierTrainerFrontSpriteId(u16 trainerId) { return GetFrontierBrainTrainerPicIndex(); } - else if (trainerId < TRAINER_RECORD_MIXING_FRIEND) + else if (trainerId < FRONTIER_TRAINERS_COUNT) { return gFacilityClassToPicIndex[gFacilityTrainers[trainerId].facilityClass]; } @@ -1694,7 +1704,7 @@ u8 GetFrontierOpponentClass(u16 trainerId) { trainerClass = gTrainers[TRAINER_STEVEN].trainerClass; } - else if (trainerId < TRAINER_RECORD_MIXING_FRIEND) + else if (trainerId < FRONTIER_TRAINERS_COUNT) { trainerClass = gFacilityClassToTrainerClass[gFacilityTrainers[trainerId].facilityClass]; } @@ -1735,7 +1745,7 @@ static u8 GetFrontierTrainerFacilityClass(u16 trainerId) { facilityClass = gSaveBlock2Ptr->frontier.ereaderTrainer.facilityClass; } - else if (trainerId < TRAINER_RECORD_MIXING_FRIEND) + else if (trainerId < FRONTIER_TRAINERS_COUNT) { facilityClass = gFacilityTrainers[trainerId].facilityClass; } @@ -1777,7 +1787,7 @@ void GetFrontierTrainerName(u8 *dst, u16 trainerId) for (i = 0; i < PLAYER_NAME_LENGTH; i++) dst[i] = gTrainers[TRAINER_STEVEN].trainerName[i]; } - else if (trainerId < TRAINER_RECORD_MIXING_FRIEND) + else if (trainerId < FRONTIER_TRAINERS_COUNT) { for (i = 0; i < PLAYER_NAME_LENGTH; i++) dst[i] = gFacilityTrainers[trainerId].trainerName[i]; @@ -1832,7 +1842,7 @@ static bool8 IsFrontierTrainerFemale(u16 trainerId) { return IsFrontierBrainFemale(); } - else if (trainerId < TRAINER_RECORD_MIXING_FRIEND) + else if (trainerId < FRONTIER_TRAINERS_COUNT) { facilityClass = gFacilityTrainers[trainerId].facilityClass; } @@ -1887,7 +1897,7 @@ static void FillTrainerParty(u16 trainerId, u8 firstMonId, u8 monCount) const u16 *monSets = NULL; u32 otID = 0; - if (trainerId < TRAINER_RECORD_MIXING_FRIEND) + if (trainerId < FRONTIER_TRAINERS_COUNT) { // Normal battle frontier trainer. fixedIV = GetFrontierTrainerFixedIvs(trainerId); @@ -2070,7 +2080,7 @@ static void FillFactoryFrontierTrainerParty(u16 trainerId, u8 firstMonId) u8 fixedIV; u32 otID; - if (trainerId < TRAINER_RECORD_MIXING_FRIEND) + if (trainerId < FRONTIER_TRAINERS_COUNT) { u8 lvlMode = gSaveBlock2Ptr->frontier.lvlMode; // Unused variable. u8 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE); @@ -2179,7 +2189,7 @@ static void GetOpponentIntroSpeech(void) if (trainerId == TRAINER_EREADER) FrontierSpeechToString(gSaveBlock2Ptr->frontier.ereaderTrainer.greeting); - else if (trainerId < TRAINER_RECORD_MIXING_FRIEND) + else if (trainerId < FRONTIER_TRAINERS_COUNT) FrontierSpeechToString(gFacilityTrainers[trainerId].speechBefore); else if (trainerId < TRAINER_RECORD_MIXING_APPRENTICE) FrontierSpeechToString(gSaveBlock2Ptr->frontier.towerRecords[trainerId - TRAINER_RECORD_MIXING_FRIEND].greeting); @@ -2407,7 +2417,7 @@ static void sub_8163EE4(void) StringCopy7(playerRecord->name, gSaveBlock2Ptr->playerName); playerRecord->winStreak = GetCurrentBattleTowerWinStreak(lvlMode, battleMode); - for (i = 0; i < 6; i++) + for (i = 0; i < EASY_CHAT_BATTLE_WORDS_COUNT; i++) { playerRecord->greeting[i] = gSaveBlock1Ptr->easyChatBattleStart[i]; playerRecord->speechWon[i] = gSaveBlock1Ptr->easyChatBattleWon[i]; @@ -2529,7 +2539,7 @@ static void sub_81642A0(void) { do { - trainerId = sub_8162548(challengeNum, 0); + trainerId = GetRandomScaledFrontierTrainerId(challengeNum, 0); for (i = 0; i < j; i++) { if (gSaveBlock2Ptr->frontier.trainerIds[i] == trainerId) @@ -2657,7 +2667,7 @@ static void sub_81646BC(u16 trainerId, u16 monSetId) if (trainerId != TRAINER_EREADER) { - if (trainerId < TRAINER_RECORD_MIXING_FRIEND) + if (trainerId < FRONTIER_TRAINERS_COUNT) { move = gFacilityTrainerMons[monSetId].moves[0]; species = gFacilityTrainerMons[monSetId].species; @@ -2705,7 +2715,7 @@ static void sub_8164828(void) case 0: if (trainerId == TRAINER_EREADER) return; - if (trainerId < TRAINER_RECORD_MIXING_FRIEND) + if (trainerId < FRONTIER_TRAINERS_COUNT) { GetFrontierTrainerName(gStringVar1, trainerId); } @@ -2734,7 +2744,7 @@ static void sub_8164828(void) break; case 3: gPartnerTrainerId = trainerId; - if (trainerId < TRAINER_RECORD_MIXING_FRIEND) + if (trainerId < FRONTIER_TRAINERS_COUNT) { gSaveBlock2Ptr->frontier.trainerIds[18] = gSaveBlock2Ptr->frontier.trainerIds[8 + k * 2]; gSaveBlock2Ptr->frontier.trainerIds[19] = gSaveBlock2Ptr->frontier.trainerIds[9 + k * 2]; @@ -2753,7 +2763,7 @@ static void sub_8164828(void) { while (1) { - i = sub_8162548(challengeNum, k / 2); + i = GetRandomScaledFrontierTrainerId(challengeNum, k / 2); if (gPartnerTrainerId == i) continue; @@ -2776,7 +2786,7 @@ static void sub_8164828(void) if (trainerId == TRAINER_EREADER) return; - if (trainerId < TRAINER_RECORD_MIXING_FRIEND) + if (trainerId < FRONTIER_TRAINERS_COUNT) { ShowFieldMessage(gUnknown_085DD500[arrId].strings[gSpecialVar_0x8005]); } @@ -2830,7 +2840,7 @@ static void sub_8164B74(void) { do { - trainerId = sub_8162548(challengeNum, i / 2); + trainerId = GetRandomScaledFrontierTrainerId(challengeNum, i / 2); for (j = 0; j < i; j++) { if (gSaveBlock2Ptr->frontier.trainerIds[j] == trainerId) @@ -3214,7 +3224,7 @@ static void FillPartnerParty(u16 trainerId) // Scrapped, lol. trainerName[0] = gGameLanguage; } - else if (trainerId < TRAINER_RECORD_MIXING_FRIEND) + else if (trainerId < FRONTIER_TRAINERS_COUNT) { level = SetFacilityPtrsGetLevel(); ivs = GetFrontierTrainerFixedIvs(trainerId); @@ -3418,7 +3428,7 @@ void GetBattleTowerTrainerLanguage(u8 *dst, u16 trainerId) { *dst = gGameLanguage; } - else if (trainerId < TRAINER_RECORD_MIXING_FRIEND) + else if (trainerId < FRONTIER_TRAINERS_COUNT) { *dst = gGameLanguage; } @@ -3491,28 +3501,30 @@ s32 GetHighestLevelInPlayerParty(void) return highestLevel; } +// Frontier Trainer parties are roughly scaled in difficulty with higher trainer IDs, so scale IVs as well +// Duplicated in Battle Dome as GetDomeTrainerMonIvs static u8 GetFrontierTrainerFixedIvs(u16 trainerId) { - u8 fixedIV = 0; + u8 fixedIv; - if (trainerId < 100) - fixedIV = 3; - else if (trainerId < 120) - fixedIV = 6; - else if (trainerId < 140) - fixedIV = 9; - else if (trainerId < 160) - fixedIV = 12; - else if (trainerId < 180) - fixedIV = 15; - else if (trainerId < 200) - fixedIV = 18; - else if (trainerId < 220) - fixedIV = 21; - else - fixedIV = 31; + if (trainerId <= FRONTIER_TRAINER_JILL) // 0 - 99 + fixedIv = 3; + else if (trainerId <= FRONTIER_TRAINER_CHLOE) // 100 - 119 + fixedIv = 6; + else if (trainerId <= FRONTIER_TRAINER_SOFIA) // 120 - 139 + fixedIv = 9; + else if (trainerId <= FRONTIER_TRAINER_JAZLYN) // 140 - 159 + fixedIv = 12; + else if (trainerId <= FRONTIER_TRAINER_ALISON) // 160 - 179 + fixedIv = 15; + else if (trainerId <= FRONTIER_TRAINER_LAMAR) // 180 - 199 + fixedIv = 18; + else if (trainerId <= FRONTIER_TRAINER_TESS) // 200 - 219 + fixedIv = 21; + else // 220+ (- 299) + fixedIv = 31; - return fixedIV; + return fixedIv; } static u16 sub_8165D40(void) diff --git a/src/data/battle_frontier/battle_frontier_trainers.h b/src/data/battle_frontier/battle_frontier_trainers.h index 7977852b2f..081090aacb 100644 --- a/src/data/battle_frontier/battle_frontier_trainers.h +++ b/src/data/battle_frontier/battle_frontier_trainers.h @@ -1,6 +1,6 @@ -const struct BattleFrontierTrainer gBattleFrontierTrainers[] = +const struct BattleFrontierTrainer gBattleFrontierTrainers[FRONTIER_TRAINERS_COUNT] = { - [0] = { + [FRONTIER_TRAINER_BRADY] = { .facilityClass = FACILITY_CLASS_YOUNGSTER, .trainerName = _("BRADY"), .speechBefore = {EC_WORD_I_AM, EC_WORD_NEVER, EC_WORD_GOING, EC_WORD_TO, EC_WORD_LOSE, EC_WORD_EXCL}, @@ -8,7 +8,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_WHAT, EC_WORD_QUES, 0xFFFF, EC_WORD_BUT, EC_WORD_HOW, EC_WORD_QUES}, .monSets = gBattleFrontierTrainerMons_Brady }, - [1] = { + [FRONTIER_TRAINER_CONNER] = { .facilityClass = FACILITY_CLASS_YOUNGSTER, .trainerName = _("CONNER"), .speechBefore = {EC_WORD_LOSING, EC_WORD_DOESN_T, EC_WORD_BUG, EC_WORD_ME, 0xFFFF, 0xFFFF}, @@ -16,7 +16,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_DARN, EC_WORD_ELLIPSIS, EC_WORD_LOSING, EC_WORD_DOES, EC_WORD_BUG, EC_WORD_ME}, .monSets = gBattleFrontierTrainerMons_Conner }, - [2] = { + [FRONTIER_TRAINER_BRADLEY] = { .facilityClass = FACILITY_CLASS_YOUNGSTER, .trainerName = _("BRADLEY"), .speechBefore = {EC_WORD_HEY_THERE, EC_WORD_EXCL, EC_WORD_YOU_RE, EC_WORD_MY, EC_WORD_OPPONENT, EC_WORD_TODAY}, @@ -24,7 +24,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_TOMORROW, EC_WORD_IS, EC_WORD_WHEN, EC_WORD_WE, EC_WORD_REALLY, EC_WORD_BATTLE}, .monSets = gBattleFrontierTrainerMons_Bradley }, - [3] = { + [FRONTIER_TRAINER_CYBIL] = { .facilityClass = FACILITY_CLASS_LASS, .trainerName = _("CYBIL"), .speechBefore = {EC_WORD_YOU_RE, EC_WORD_REALLY, EC_WORD_NOT_VERY, EC_WORD_SCARY, EC_WORD_AT, EC_WORD_ALL}, @@ -32,7 +32,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_THIS, EC_WORD_CAN_T, EC_WORD_BE, EC_WORD_HAPPENING, EC_WORD_TO_ME, EC_WORD_EXCL}, .monSets = gBattleFrontierTrainerMons_Cybil }, - [4] = { + [FRONTIER_TRAINER_RODETTE] = { .facilityClass = FACILITY_CLASS_LASS, .trainerName = _("RODETTE"), .speechBefore = {EC_WORD_OH, EC_WORD_THIS, EC_WORD_IS, EC_WORD_SO, EC_WORD_EXCITING, EC_WORD_EXCL}, @@ -40,7 +40,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_OH_DEAR, EC_WORD_ELLIPSIS, EC_WORD_I_AM, EC_WORD_JUST, EC_WORD_NO, EC_WORD_GOOD}, .monSets = gBattleFrontierTrainerMons_Rodette }, - [5] = { + [FRONTIER_TRAINER_PEGGY] = { .facilityClass = FACILITY_CLASS_LASS, .trainerName = _("PEGGY"), .speechBefore = {EC_WORD_GET, EC_WORD_READY, EC_WORD_TO, EC_WORD_BE, EC_WORD_DESTROYED, EC_WORD_EXCL}, @@ -48,7 +48,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I_AM, EC_WORD_FEELING, EC_WORD_SAD, EC_WORD_THANKS, EC_WORD_TO, EC_WORD_YOU}, .monSets = gBattleFrontierTrainerMons_Peggy }, - [6] = { + [FRONTIER_TRAINER_KEITH] = { .facilityClass = FACILITY_CLASS_SCHOOL_KID_M, .trainerName = _("KEITH"), .speechBefore = {EC_WORD_I, EC_WORD_DON_T, EC_WORD_JUST, EC_WORD_STUDY, EC_WORD_YOU, EC_WORD_KNOW}, @@ -56,7 +56,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I, EC_WORD_NEED, EC_WORD_TO, EC_WORD_STUDY, EC_WORD_MORE, EC_WORD_ELLIPSIS}, .monSets = gBattleFrontierTrainerMons_Keith }, - [7] = { + [FRONTIER_TRAINER_GRAYSON] = { .facilityClass = FACILITY_CLASS_SCHOOL_KID_M, .trainerName = _("GRAYSON"), .speechBefore = {EC_WORD_A, EC_WORD_POKEMON, EC_WORD_BATTLE, EC_WORD_ISN_T, EC_WORD_CHILD_S_PLAY, EC_WORD_EXCL}, @@ -64,7 +64,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_WE, EC_WORD_WERE, EC_WORD_LIKE, EC_WORD_TOYS, EC_WORD_TO, EC_WORD_YOU}, .monSets = gBattleFrontierTrainerMons_Grayson }, - [8] = { + [FRONTIER_TRAINER_GLENN] = { .facilityClass = FACILITY_CLASS_SCHOOL_KID_M, .trainerName = _("GLENN"), .speechBefore = {EC_WORD_I, EC_WORD_WOULD, EC_WORD_BE, EC_WORD_COOL, EC_WORD_IF_I_WIN, 0xFFFF}, @@ -72,7 +72,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I_AM, EC_WORD_NOT, EC_WORD_GOING, EC_WORD_TO, EC_WORD_BE, EC_WORD_COOL}, .monSets = gBattleFrontierTrainerMons_Glenn }, - [9] = { + [FRONTIER_TRAINER_LILIANA] = { .facilityClass = FACILITY_CLASS_SCHOOL_KID_F, .trainerName = _("LILIANA"), .speechBefore = {EC_WORD_I, EC_WORD_WON_T, EC_WORD_GIVE_UP, EC_WORD_UNTIL, EC_WORD_I, EC_WORD_WIN}, @@ -80,7 +80,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_THAT_S, EC_WORD_IT, EC_WORD_ELLIPSIS, EC_WORD_I, EC_WORD_GIVE_UP, EC_WORD_ELLIPSIS}, .monSets = gBattleFrontierTrainerMons_Liliana }, - [10] = { + [FRONTIER_TRAINER_ELISE] = { .facilityClass = FACILITY_CLASS_SCHOOL_KID_F, .trainerName = _("ELISE"), .speechBefore = {EC_WORD_MY, EC_WORD_STRATEGY, EC_WORD_IS, EC_WORD_FROM, EC_WORD_MY, EC_WORD_FATHER}, @@ -88,7 +88,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_FORGIVE, EC_WORD_ME, EC_WORD_FATHER, EC_WORD_FOR, EC_WORD_I_VE, EC_WORD_LOST}, .monSets = gBattleFrontierTrainerMons_Elise }, - [11] = { + [FRONTIER_TRAINER_ZOEY] = { .facilityClass = FACILITY_CLASS_SCHOOL_KID_F, .trainerName = _("ZOEY"), .speechBefore = {EC_WORD_PLEASE, EC_WORD_BATTLE, EC_WORD_LIKE, EC_WORD_YOU, EC_WORD_MEAN, EC_WORD_IT}, @@ -96,7 +96,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_WERE, EC_WORD_YOU, EC_WORD_REALLY, EC_WORD_BEING, EC_WORD_SERIOUS, EC_WORD_QUES}, .monSets = gBattleFrontierTrainerMons_Zoey }, - [12] = { + [FRONTIER_TRAINER_MANUEL] = { .facilityClass = FACILITY_CLASS_RICH_BOY, .trainerName = _("MANUEL"), .speechBefore = {EC_WORD_ME, EC_WORD_LOSE, EC_WORD_QUES, EC_WORD_THAT_S, EC_WORD_PREPOSTEROUS, EC_WORD_EXCL}, @@ -104,7 +104,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_WAAAH, EC_WORD_EXCL, 0xFFFF, EC_WORD_I, EC_WORD_LOST, EC_WORD_MOTHER}, .monSets = gBattleFrontierTrainerMons_Manuel }, - [13] = { + [FRONTIER_TRAINER_RUSS] = { .facilityClass = FACILITY_CLASS_RICH_BOY, .trainerName = _("RUSS"), .speechBefore = {EC_WORD_THEY, EC_WORD_ALL, EC_WORD_WANT, EC_WORD_MY, EC_WORD_FABULOUS, EC_WORD_POKEMON}, @@ -112,7 +112,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_HOW, EC_WORD_COULD, EC_WORD_YOU, EC_WORD_DO, EC_WORD_THAT, EC_WORD_QUES}, .monSets = gBattleFrontierTrainerMons_Russ }, - [14] = { + [FRONTIER_TRAINER_DUSTIN] = { .facilityClass = FACILITY_CLASS_RICH_BOY, .trainerName = _("DUSTIN"), .speechBefore = {EC_WORD_I, EC_WORD_REALLY, EC_WORD_LIKE, EC_WORD_COOL, EC_WORD_POKEMON, 0xFFFF}, @@ -120,7 +120,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I, EC_WORD_LIKE, EC_WORD_MYSELF, EC_WORD_IF_I_LOSE, EC_WORD_TOO, 0xFFFF}, .monSets = gBattleFrontierTrainerMons_Dustin }, - [15] = { + [FRONTIER_TRAINER_TINA] = { .facilityClass = FACILITY_CLASS_LADY, .trainerName = _("TINA"), .speechBefore = {EC_WORD_IF_I_WIN, EC_WORD_YOU, EC_WORD_CAN, EC_WORD_HAVE, EC_WORD_A, EC_MOVE2(SWEET_KISS)}, @@ -128,7 +128,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_YOU, EC_WORD_WANT, EC_WORD_A, EC_MOVE(SWIFT), EC_MOVE2(MEGA_KICK), EC_WORD_INSTEAD}, .monSets = gBattleFrontierTrainerMons_Tina }, - [16] = { + [FRONTIER_TRAINER_GILLIAN1] = { .facilityClass = FACILITY_CLASS_LADY, .trainerName = _("GILLIAN"), .speechBefore = {EC_WORD_THE, EC_WORD_GOURMET, EC_WORD_THING, EC_WORD_IS, EC_WORD_SO, EC_WORD_YESTERDAY}, @@ -136,7 +136,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_LOSING, EC_WORD_DOESN_T, EC_WORD_DISAPPOINT, EC_WORD_ME, 0xFFFF, 0xFFFF}, .monSets = gBattleFrontierTrainerMons_Gillian }, - [17] = { + [FRONTIER_TRAINER_ZOE] = { .facilityClass = FACILITY_CLASS_LADY, .trainerName = _("ZOE"), .speechBefore = {EC_WORD_I, EC_WORD_HAVEN_T, EC_WORD_A, EC_WORD_WORRY, EC_WORD_AT, EC_WORD_ALL}, @@ -144,7 +144,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I, EC_WORD_WORRY, EC_WORD_ABOUT, EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_SKILL}, .monSets = gBattleFrontierTrainerMons_Zoe }, - [18] = { + [FRONTIER_TRAINER_CHEN] = { .facilityClass = FACILITY_CLASS_CAMPER, .trainerName = _("CHEN"), .speechBefore = {EC_WORD_I_AM, EC_WORD_TOTALLY, EC_WORD_READY, EC_WORD_TO, EC_WORD_ROCK, EC_WORD_TODAY}, @@ -152,7 +152,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I_VE, EC_WORD_LOST, EC_WORD_MY, EC_MOVE(FOCUS_ENERGY), EC_WORD_AND, EC_WORD_TOUGHNESS}, .monSets = gBattleFrontierTrainerMons_Chen }, - [19] = { + [FRONTIER_TRAINER_AL] = { .facilityClass = FACILITY_CLASS_CAMPER, .trainerName = _("AL"), .speechBefore = {EC_WORD_YOUR, EC_WORD_LOOK, EC_WORD_SAYS, EC_WORD_YOU_RE, EC_WORD_REALLY, EC_WORD_TOUGH}, @@ -160,7 +160,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I_AM, EC_WORD_RIGHT, EC_WORD_EXCL, EC_WORD_YOU_RE, EC_WORD_REALLY, EC_WORD_TOUGH}, .monSets = gBattleFrontierTrainerMons_Al }, - [20] = { + [FRONTIER_TRAINER_MITCH] = { .facilityClass = FACILITY_CLASS_CAMPER, .trainerName = _("MITCH"), .speechBefore = {EC_WORD_MOTHER, EC_WORD_NATURE, EC_WORD_IS, EC_WORD_MY, EC_WORD_ALLY, EC_WORD_EXCL}, @@ -168,7 +168,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_MOTHER, EC_WORD_NATURE, EC_WORD_DIDN_T, EC_WORD_LET_ME_WIN, EC_WORD_QUES, 0xFFFF}, .monSets = gBattleFrontierTrainerMons_Mitch }, - [21] = { + [FRONTIER_TRAINER_ANNE] = { .facilityClass = FACILITY_CLASS_PICNICKER, .trainerName = _("ANNE"), .speechBefore = {EC_WORD_I, EC_WORD_CAN_T, EC_WORD_WAIT, EC_WORD_LET_S, EC_WORD_BATTLE, EC_WORD_NOW}, @@ -176,7 +176,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_YOU_VE, EC_WORD_DESTROYED, EC_WORD_MY, EC_WORD_HAPPINESS, EC_WORD_ELLIPSIS, 0xFFFF}, .monSets = gBattleFrontierTrainerMons_Anne }, - [22] = { + [FRONTIER_TRAINER_ALIZE] = { .facilityClass = FACILITY_CLASS_PICNICKER, .trainerName = _("ALIZE"), .speechBefore = {EC_WORD_CUTE, EC_WORD_AND, EC_WORD_AWFULLY, EC_WORD_STRONG, EC_WORD_THAT_S, EC_WORD_ME}, @@ -184,7 +184,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I_AM, EC_WORD_WEAK, EC_WORD_ELLIPSIS, EC_WORD_BUT, EC_WORD_I_AM, EC_WORD_CUTE}, .monSets = gBattleFrontierTrainerMons_Alize }, - [23] = { + [FRONTIER_TRAINER_LAUREN] = { .facilityClass = FACILITY_CLASS_PICNICKER, .trainerName = _("LAUREN"), .speechBefore = {EC_WORD_I_AM, EC_WORD_OLD, EC_WORD_BUT, EC_WORD_I_AM, EC_WORD_ALSO, EC_WORD_GOOD}, @@ -192,7 +192,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_WHAT, EC_WORD_A, EC_WORD_WEIRD, EC_WORD_DREAM, EC_WORD_THAT_WAS, EC_WORD_EXCL}, .monSets = gBattleFrontierTrainerMons_Lauren }, - [24] = { + [FRONTIER_TRAINER_KIPP] = { .facilityClass = FACILITY_CLASS_TUBER_M, .trainerName = _("KIPP"), .speechBefore = {EC_WORD_IF_I_WIN, EC_WORD_I_AM, EC_WORD_GOING, EC_WORD_TO, EC_WORD_GO, EC_MOVE2(SURF)}, @@ -200,7 +200,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_OH, EC_WORD_NO, EC_WORD_EXCL, EC_WORD_A, EC_MOVE(WHIRLPOOL), EC_WORD_EXCL}, .monSets = gBattleFrontierTrainerMons_Kipp }, - [25] = { + [FRONTIER_TRAINER_JASON] = { .facilityClass = FACILITY_CLASS_TUBER_M, .trainerName = _("JASON"), .speechBefore = {EC_WORD_TEACH, EC_WORD_ME, EC_WORD_A, EC_WORD_GOOD, EC_WORD_STRATEGY, 0xFFFF}, @@ -208,7 +208,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_WOW, EC_WORD_THAT, EC_WORD_IS, EC_WORD_AN, EC_WORD_AWESOME, EC_WORD_STRATEGY}, .monSets = gBattleFrontierTrainerMons_Jason }, - [26] = { + [FRONTIER_TRAINER_JOHN] = { .facilityClass = FACILITY_CLASS_TUBER_M, .trainerName = _("JOHN"), .speechBefore = {EC_WORD_I_AM, EC_WORD_A, EC_WORD_PRETTY, EC_WORD_NEW, EC_WORD_TRAINER, 0xFFFF}, @@ -216,7 +216,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .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 }, - [27] = { + [FRONTIER_TRAINER_ANN] = { .facilityClass = FACILITY_CLASS_TUBER_F, .trainerName = _("ANN"), .speechBefore = {EC_WORD_IT_S, EC_WORD_SO, EC_WORD_EXCITING, EC_WORD_IT, EC_WORD_REALLY, EC_WORD_IS}, @@ -224,7 +224,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I_AM, EC_WORD_SO, EC_WORD_SAD, EC_WORD_I, EC_WORD_WILL, EC_WORD_CRY}, .monSets = gBattleFrontierTrainerMons_Ann }, - [28] = { + [FRONTIER_TRAINER_EILEEN] = { .facilityClass = FACILITY_CLASS_TUBER_F, .trainerName = _("EILEEN"), .speechBefore = {EC_WORD_LET_S, EC_WORD_PRETEND, EC_WORD_I_AM, EC_WORD_AN, EC_WORD_ADULT, EC_WORD_OK_QUES}, @@ -232,7 +232,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_AN, EC_WORD_ADULT, EC_WORD_CAN_T, EC_WORD_BEAT, EC_WORD_YOU, EC_WORD_QUES}, .monSets = gBattleFrontierTrainerMons_Eileen }, - [29] = { + [FRONTIER_TRAINER_CARLIE] = { .facilityClass = FACILITY_CLASS_TUBER_F, .trainerName = _("CARLIE"), .speechBefore = {EC_WORD_MY, EC_WORD_SUMMER, EC_WORD_VACATION, EC_WORD_IS, EC_WORD_FOR, EC_WORD_POKEMON}, @@ -240,7 +240,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I, EC_WORD_CAN_T_WIN, EC_WORD_LIKE, EC_WORD_THIS, EC_WORD_ELLIPSIS, 0xFFFF}, .monSets = gBattleFrontierTrainerMons_Carlie }, - [30] = { + [FRONTIER_TRAINER_GORDON] = { .facilityClass = FACILITY_CLASS_SWIMMER_M, .trainerName = _("GORDON"), .speechBefore = {EC_WORD_VICTORY, EC_WORD_WILL, EC_WORD_COME, EC_WORD_TO_ME, EC_WORD_EXCL, 0xFFFF}, @@ -248,7 +248,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_NOTHING, EC_WORD_IS, EC_WORD_WORKING, EC_WORD_OUT, EC_WORD_FOR, EC_WORD_ME}, .monSets = gBattleFrontierTrainerMons_Gordon }, - [31] = { + [FRONTIER_TRAINER_AYDEN] = { .facilityClass = FACILITY_CLASS_SWIMMER_M, .trainerName = _("AYDEN"), .speechBefore = {EC_WORD_COME_ON, EC_WORD_I, EC_WORD_NEED, EC_WORD_A, EC_WORD_HOT, EC_WORD_BATTLE}, @@ -256,7 +256,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_YOU, EC_WORD_HAVE, EC_WORD_ME, EC_WORD_FEELING, EC_WORD_ICE, EC_WORD_COLD}, .monSets = gBattleFrontierTrainerMons_Ayden }, - [32] = { + [FRONTIER_TRAINER_MARCO] = { .facilityClass = FACILITY_CLASS_SWIMMER_M, .trainerName = _("MARCO"), .speechBefore = {EC_WORD_I, EC_MOVE2(SURF), EC_WORD_IN, EC_WORD_THE, EC_WORD_WINTER, EC_WORD_TOO}, @@ -264,7 +264,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I, EC_WORD_WILL, EC_MOVE2(BEAT_UP), EC_WORD_MY, EC_MOVE2(SURF), EC_WORD_BOARD}, .monSets = gBattleFrontierTrainerMons_Marco }, - [33] = { + [FRONTIER_TRAINER_CIERRA] = { .facilityClass = FACILITY_CLASS_SWIMMER_F, .trainerName = _("CIERRA"), .speechBefore = {EC_WORD_I, EC_WORD_LIKE, EC_WORD_TO, EC_WORD_SYNCHRONIZE, EC_WORD_MY, EC_WORD_SWIFT_SWIM}, @@ -272,7 +272,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I, EC_WORD_NEED, EC_WORD_TO, EC_WORD_SYNCHRONIZE, EC_WORD_BETTER, EC_WORD_ELLIPSIS}, .monSets = gBattleFrontierTrainerMons_Cierra }, - [34] = { + [FRONTIER_TRAINER_MARCY] = { .facilityClass = FACILITY_CLASS_SWIMMER_F, .trainerName = _("MARCY"), .speechBefore = {EC_WORD_I_AM, EC_WORD_A, EC_WORD_KNOCKOUT, EC_WORD_YOU, EC_WORD_CAN_T_WIN, EC_WORD_EXCL}, @@ -280,7 +280,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_THAT_S, EC_WORD_NOT, EC_WORD_THE, EC_WORD_KNOCKOUT, EC_WORD_I, EC_WORD_MEAN}, .monSets = gBattleFrontierTrainerMons_Marcy }, - [35] = { + [FRONTIER_TRAINER_KATHY] = { .facilityClass = FACILITY_CLASS_SWIMMER_F, .trainerName = _("KATHY"), .speechBefore = {EC_WORD_I_VE, EC_WORD_WON, EC_WORD_EVERY, EC_WORD_MATCH, EC_WORD_TODAY, EC_WORD_EXCL}, @@ -288,7 +288,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_HUH_QUES, EC_WORD_I, EC_WORD_SHOULD, EC_WORD_NOT, EC_WORD_HAVE, EC_WORD_LOST}, .monSets = gBattleFrontierTrainerMons_Kathy }, - [36] = { + [FRONTIER_TRAINER_PEYTON] = { .facilityClass = FACILITY_CLASS_POKEFAN_M, .trainerName = _("PEYTON"), .speechBefore = {EC_WORD_I_AM, EC_WORD_NEVER, EC_WORD_DISAPPOINTED, EC_WORD_WITH, EC_WORD_MY, EC_WORD_POKEMON}, @@ -296,7 +296,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I, EC_WORD_ADORE, EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_MORE, EC_WORD_IF_I_LOSE}, .monSets = gBattleFrontierTrainerMons_Peyton }, - [37] = { + [FRONTIER_TRAINER_JULIAN] = { .facilityClass = FACILITY_CLASS_POKEFAN_M, .trainerName = _("JULIAN"), .speechBefore = {EC_WORD_YOU, EC_WORD_ADORE, EC_WORD_YOUR, EC_WORD_POKEMON, EC_WORD_RIGHT, EC_WORD_QUES}, @@ -304,7 +304,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_YOU, EC_WORD_DO, EC_WORD_ADORE, EC_WORD_YOUR, EC_WORD_POKEMON, EC_WORD_EXCL}, .monSets = gBattleFrontierTrainerMons_Julian }, - [38] = { + [FRONTIER_TRAINER_QUINN] = { .facilityClass = FACILITY_CLASS_POKEFAN_M, .trainerName = _("QUINN"), .speechBefore = {EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_ARE, EC_WORD_BUT, EC_WORD_A, EC_WORD_DREAM}, @@ -312,7 +312,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_THIS, EC_WORD_IS, EC_WORD_AN, EC_WORD_AWFUL, EC_MOVE(NIGHTMARE), EC_WORD_EXCL}, .monSets = gBattleFrontierTrainerMons_Quinn }, - [39] = { + [FRONTIER_TRAINER_HAYLEE] = { .facilityClass = FACILITY_CLASS_POKEFAN_F, .trainerName = _("HAYLEE"), .speechBefore = {EC_WORD_I, EC_WORD_DON_T, EC_WORD_KNOW, EC_WORD_HOW, EC_WORD_I_AM, EC_WORD_FEELING}, @@ -320,7 +320,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_DESTROYED, EC_WORD_IS, EC_WORD_THE, EC_WORD_WAY, EC_WORD_I_AM, EC_WORD_FEELING}, .monSets = gBattleFrontierTrainerMons_Haylee }, - [40] = { + [FRONTIER_TRAINER_AMANDA] = { .facilityClass = FACILITY_CLASS_POKEFAN_F, .trainerName = _("AMANDA"), .speechBefore = {EC_WORD_I, EC_WORD_COME, EC_WORD_FROM, EC_WORD_A, EC_WORD_TRAINER, EC_WORD_FAMILY}, @@ -328,7 +328,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I, EC_WORD_WANT, EC_WORD_TO, EC_WORD_GO_HOME, EC_WORD_RIGHT, EC_WORD_NOW}, .monSets = gBattleFrontierTrainerMons_Amanda }, - [41] = { + [FRONTIER_TRAINER_STACY] = { .facilityClass = FACILITY_CLASS_POKEFAN_F, .trainerName = _("STACY"), .speechBefore = {EC_WORD_ALL, EC_WORD_POKEMON, EC_WORD_HAVE, EC_WORD_THEIR, EC_WORD_OWN, EC_WORD_CUTE_CHARM}, @@ -336,7 +336,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_SHOULD, EC_WORD_I, EC_WORD_NOT, EC_WORD_ADORE, EC_WORD_POKEMON, EC_WORD_QUES}, .monSets = gBattleFrontierTrainerMons_Stacy }, - [42] = { + [FRONTIER_TRAINER_RAFAEL] = { .facilityClass = FACILITY_CLASS_PKMN_BREEDER_M, .trainerName = _("RAFAEL"), .speechBefore = {EC_WORD_COME_ON, EC_WORD_EXCL, EC_WORD_LET_S, EC_WORD_SEE, EC_WORD_SOME, EC_WORD_SPIRIT}, @@ -344,7 +344,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_WELL, EC_WORD_SO, EC_WORD_MUCH, EC_WORD_FOR, EC_WORD_OUR, EC_WORD_SPIRIT}, .monSets = gBattleFrontierTrainerMons_Rafael }, - [43] = { + [FRONTIER_TRAINER_OLIVER] = { .facilityClass = FACILITY_CLASS_PKMN_BREEDER_M, .trainerName = _("OLIVER"), .speechBefore = {EC_WORD_A, EC_WORD_GENIUS, EC_WORD_THAT_S, EC_WORD_WHAT, EC_WORD_I_AM, EC_WORD_EXCL}, @@ -352,7 +352,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_YOU_RE, EC_WORD_MORE, EC_WORD_A, EC_WORD_GENIUS, EC_WORD_THAN, EC_WORD_I_AM}, .monSets = gBattleFrontierTrainerMons_Oliver }, - [44] = { + [FRONTIER_TRAINER_PAYTON] = { .facilityClass = FACILITY_CLASS_PKMN_BREEDER_M, .trainerName = _("PAYTON"), .speechBefore = {EC_WORD_I, EC_WORD_TRAIN, EC_WORD_FROM, EC_WORD_THE, EC_WORD_EGG, EC_WORD_UP}, @@ -360,7 +360,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_THAT_WAS, EC_WORD_A, EC_MOVE2(SOFT_BOILED), EC_WORD_LOSS, EC_WORD_ELLIPSIS, 0xFFFF}, .monSets = gBattleFrontierTrainerMons_Payton }, - [45] = { + [FRONTIER_TRAINER_PAMELA] = { .facilityClass = FACILITY_CLASS_PKMN_BREEDER_F, .trainerName = _("PAMELA"), .speechBefore = {EC_WORD_ALL, EC_WORD_POKEMON, EC_WORD_ADORE, EC_WORD_A, EC_WORD_KIND, EC_WORD_TRAINER}, @@ -368,7 +368,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_YOU_RE, EC_WORD_KIND, EC_WORD_AND, EC_WORD_YOU_RE, EC_WORD_ALSO, EC_WORD_STRONG}, .monSets = gBattleFrontierTrainerMons_Pamela }, - [46] = { + [FRONTIER_TRAINER_ELIZA] = { .facilityClass = FACILITY_CLASS_PKMN_BREEDER_F, .trainerName = _("ELIZA"), .speechBefore = {EC_WORD_I, EC_WORD_ADORE, EC_WORD_POKEMON, EC_WORD_LIKE, EC_WORD_MY, EC_WORD_CHILDREN}, @@ -376,7 +376,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_OH_DEAR, EC_WORD_I_AM, EC_WORD_SO, EC_WORD_SORRY, EC_WORD_ABOUT, EC_WORD_THIS}, .monSets = gBattleFrontierTrainerMons_Eliza }, - [47] = { + [FRONTIER_TRAINER_MARISA] = { .facilityClass = FACILITY_CLASS_PKMN_BREEDER_F, .trainerName = _("MARISA"), .speechBefore = {EC_WORD_I, EC_WORD_PROMISE, EC_WORD_TO, EC_WORD_BATTLE, EC_WORD_SERIOUSLY, 0xFFFF}, @@ -384,7 +384,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_PROMISE, EC_WORD_ME, EC_WORD_ANOTHER, EC_WORD_BATTLE, EC_WORD_PLEASE, EC_WORD_EXCL}, .monSets = gBattleFrontierTrainerMons_Marisa }, - [48] = { + [FRONTIER_TRAINER_LEWIS] = { .facilityClass = FACILITY_CLASS_BUG_CATCHER, .trainerName = _("LEWIS"), .speechBefore = {EC_WORD_A_LITTLE, EC_WORD_BUG, EC_WORD_IS, EC_WORD_SCARY, EC_WORD_QUES, EC_WORD_HAHAHA}, @@ -392,7 +392,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_OH, EC_WORD_A, EC_WORD_BUG, EC_WORD_ISN_T, EC_WORD_SCARY, EC_WORD_ELLIPSIS}, .monSets = gBattleFrontierTrainerMons_Lewis }, - [49] = { + [FRONTIER_TRAINER_YOSHI] = { .facilityClass = FACILITY_CLASS_BUG_CATCHER, .trainerName = _("YOSHI"), .speechBefore = {EC_WORD_BUG, EC_WORD_POKEMON, EC_WORD_MAKE, EC_WORD_ME, EC_WORD_FEELING, EC_WORD_LOVEY_DOVEY}, @@ -400,7 +400,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_YOU_RE, EC_WORD_IGNORANT, EC_WORD_ABOUT, EC_WORD_BUG, EC_WORD_POKEMON, 0xFFFF}, .monSets = gBattleFrontierTrainerMons_Yoshi }, - [50] = { + [FRONTIER_TRAINER_DESTIN] = { .facilityClass = FACILITY_CLASS_BUG_CATCHER, .trainerName = _("DESTIN"), .speechBefore = {EC_WORD_IT_S, EC_WORD_WAY, EC_WORD_TOO, EC_WORD_HOT, EC_WORD_HERE, 0xFFFF}, @@ -408,7 +408,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_PLEASE, EC_WORD_I, EC_WORD_NEED, EC_WORD_SOME, EC_WORD_WATER, 0xFFFF}, .monSets = gBattleFrontierTrainerMons_Destin }, - [51] = { + [FRONTIER_TRAINER_KEON] = { .facilityClass = FACILITY_CLASS_NINJA_BOY, .trainerName = _("KEON"), .speechBefore = {EC_WORD_FORGIVE, EC_WORD_ME, EC_WORD_BUT, EC_WORD_HERE_I_COME, EC_WORD_EXCL, 0xFFFF}, @@ -416,7 +416,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I_AM, EC_WORD_SORRY, EC_WORD_ELLIPSIS, 0xFFFF, 0xFFFF, 0xFFFF}, .monSets = gBattleFrontierTrainerMons_Keon }, - [52] = { + [FRONTIER_TRAINER_STUART] = { .facilityClass = FACILITY_CLASS_NINJA_BOY, .trainerName = _("STUART"), .speechBefore = {EC_WORD_I, EC_WORD_PROMISE, EC_WORD_YOU, EC_WORD_A, EC_WORD_HOT, EC_WORD_BATTLE}, @@ -424,7 +424,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I, EC_WORD_SEE, EC_WORD_I_AM, EC_WORD_NOT, EC_WORD_SO, EC_WORD_COOL}, .monSets = gBattleFrontierTrainerMons_Stuart }, - [53] = { + [FRONTIER_TRAINER_NESTOR] = { .facilityClass = FACILITY_CLASS_NINJA_BOY, .trainerName = _("NESTOR"), .speechBefore = {EC_WORD_SHOW, EC_WORD_ME, EC_WORD_A, EC_WORD_REALLY, EC_WORD_SMOOTH, EC_WORD_MOVE}, @@ -432,7 +432,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_YOU, EC_WORD_REALLY, EC_WORD_ARE, EC_WORD_SMOOTH, EC_WORD_EXCL, 0xFFFF}, .monSets = gBattleFrontierTrainerMons_Nestor }, - [54] = { + [FRONTIER_TRAINER_DERRICK] = { .facilityClass = FACILITY_CLASS_BUG_MANIAC, .trainerName = _("DERRICK"), .speechBefore = {EC_WORD_LET_S, EC_WORD_SEE, EC_WORD_YOU, EC_MOVE2(MEDITATE), EC_WORD_LIKE, EC_WORD_ME}, @@ -440,7 +440,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I, EC_WORD_WILL, EC_MOVE2(MEDITATE), EC_WORD_FOR, EC_WORD_A, EC_MOVE2(CALM_MIND)}, .monSets = gBattleFrontierTrainerMons_Derrick }, - [55] = { + [FRONTIER_TRAINER_BRYSON] = { .facilityClass = FACILITY_CLASS_BUG_MANIAC, .trainerName = _("BRYSON"), .speechBefore = {EC_MOVE2(POISON_POWDER), EC_WORD_IS, EC_WORD_IN, EC_WORD_OUR, EC_MOVE2(COTTON_SPORE), EC_WORD_MOVE}, @@ -448,7 +448,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_MY, EC_MOVE2(COTTON_SPORE), EC_WORD_WAS, EC_WORD_USELESS, 0xFFFF, 0xFFFF}, .monSets = gBattleFrontierTrainerMons_Bryson }, - [56] = { + [FRONTIER_TRAINER_CLAYTON] = { .facilityClass = FACILITY_CLASS_BUG_MANIAC, .trainerName = _("CLAYTON"), .speechBefore = {EC_WORD_HUH_QUES, 0xFFFF, 0xFFFF, EC_WORD_WHERE, EC_WORD_IS_IT_QUES, 0xFFFF}, @@ -456,7 +456,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .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 }, - [57] = { + [FRONTIER_TRAINER_TRENTON] = { .facilityClass = FACILITY_CLASS_FISHERMAN, .trainerName = _("TRENTON"), .speechBefore = {EC_WORD_COME_OVER, EC_WORD_FOR, EC_WORD_SOME, EC_WORD_TASTY, EC_WORD_WATER, 0xFFFF}, @@ -464,7 +464,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I, EC_WORD_GOT, EC_WORD_THIS, EC_WORD_TASTY, EC_WORD_WATER, EC_WORD_SHOPPING}, .monSets = gBattleFrontierTrainerMons_Trenton }, - [58] = { + [FRONTIER_TRAINER_JENSON] = { .facilityClass = FACILITY_CLASS_FISHERMAN, .trainerName = _("JENSON"), .speechBefore = {EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_WILL, EC_WORD_MAKE, EC_WORD_YOU, EC_WORD_DOWNCAST}, @@ -472,7 +472,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I_AM, EC_WORD_THE, EC_WORD_TRAINER, EC_WORD_WHO_IS, EC_WORD_FEELING, EC_WORD_DOWNCAST}, .monSets = gBattleFrontierTrainerMons_Jenson }, - [59] = { + [FRONTIER_TRAINER_WESLEY] = { .facilityClass = FACILITY_CLASS_FISHERMAN, .trainerName = _("WESLEY"), .speechBefore = {EC_POKEMON2(MEW), EC_POKEMON2(MEW), EC_WORD_IS, EC_WORD_HOW, EC_WORD_I, EC_WORD_CRY}, @@ -480,7 +480,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_POKEMON2(MEW), EC_POKEMON2(MEW), EC_WORD_EXCL, EC_POKEMON2(MEW), EC_WORD_EXCL_EXCL, 0xFFFF}, .monSets = gBattleFrontierTrainerMons_Wesley }, - [60] = { + [FRONTIER_TRAINER_ANTON] = { .facilityClass = FACILITY_CLASS_RUIN_MANIAC, .trainerName = _("ANTON"), .speechBefore = {EC_WORD_GET, EC_WORD_READY, EC_WORD_FOR, EC_WORD_ME, EC_WORD_TO, EC_MOVE(THRASH)}, @@ -488,7 +488,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_IT_S, EC_WORD_A, EC_WORD_TOUGH, EC_WORD_LOSS, EC_WORD_TO, EC_MOVE2(SWALLOW)}, .monSets = gBattleFrontierTrainerMons_Anton }, - [61] = { + [FRONTIER_TRAINER_LAWSON] = { .facilityClass = FACILITY_CLASS_RUIN_MANIAC, .trainerName = _("LAWSON"), .speechBefore = {EC_WORD_I_AM, EC_WORD_YOUNG, EC_WORD_AT, EC_WORD_HEART, EC_WORD_EXCL, 0xFFFF}, @@ -496,7 +496,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I_AM, EC_WORD_OLD, EC_WORD_AND, EC_WORD_FEELING, EC_WORD_SHAKY, EC_WORD_ELLIPSIS}, .monSets = gBattleFrontierTrainerMons_Lawson }, - [62] = { + [FRONTIER_TRAINER_SAMMY] = { .facilityClass = FACILITY_CLASS_RUIN_MANIAC, .trainerName = _("SAMMY"), .speechBefore = {EC_WORD_MY, EC_WORD_PARTY, EC_WORD_IS, EC_WORD_READY, EC_WORD_TO, EC_WORD_ROCK}, @@ -504,7 +504,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I, EC_WORD_CRY, EC_WORD_FOR, EC_WORD_MY, EC_WORD_PARTY, EC_WORD_ELLIPSIS}, .monSets = gBattleFrontierTrainerMons_Sammy }, - [63] = { + [FRONTIER_TRAINER_ARNIE] = { .facilityClass = FACILITY_CLASS_COLLECTOR, .trainerName = _("ARNIE"), .speechBefore = {EC_WORD_I_AM, EC_WORD_NO_1, EC_WORD_I, EC_WORD_HAVE, EC_WORD_NO, EC_WORD_RIVAL}, @@ -512,7 +512,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_NO, EC_WORD_EXCL, EC_WORD_I, EC_WORD_WON_T, EC_WORD_ACCEPT, EC_WORD_THIS}, .monSets = gBattleFrontierTrainerMons_Arnie }, - [64] = { + [FRONTIER_TRAINER_ADRIAN] = { .facilityClass = FACILITY_CLASS_COLLECTOR, .trainerName = _("ADRIAN"), .speechBefore = {EC_WORD_YAHOO, EC_WORD_EXCL, 0xFFFF, EC_WORD_YAHOO, EC_WORD_EXCL_EXCL, 0xFFFF}, @@ -520,7 +520,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_GOOD_BYE, EC_WORD_EXCL, 0xFFFF, EC_WORD_GOOD_BYE, EC_WORD_EXCL_EXCL, 0xFFFF}, .monSets = gBattleFrontierTrainerMons_Adrian }, - [65] = { + [FRONTIER_TRAINER_TRISTAN] = { .facilityClass = FACILITY_CLASS_COLLECTOR, .trainerName = _("TRISTAN"), .speechBefore = {EC_WORD_CONFUSED, EC_WORD_QUES, 0xFFFF, EC_WORD_I_AM, EC_WORD_A, EC_WORD_GENIUS}, @@ -528,7 +528,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I_AM, EC_WORD_NOT, EC_WORD_A, EC_WORD_GENIUS, EC_WORD_IN, EC_WORD_BATTLE}, .monSets = gBattleFrontierTrainerMons_Tristan }, - [66] = { + [FRONTIER_TRAINER_JULIANA] = { .facilityClass = FACILITY_CLASS_PARASOL_LADY, .trainerName = _("JULIANA"), .speechBefore = {EC_WORD_I, EC_WORD_THINK, EC_WORD_I_AM, EC_WORD_SHOPPING, EC_WORD_TOO, EC_WORD_MUCH}, @@ -536,7 +536,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I, EC_WORD_SO, EC_WORD_WANT, EC_WORD_ANOTHER, EC_WORD_POKEMON, EC_WORD_PLUSH_DOLL}, .monSets = gBattleFrontierTrainerMons_Juliana }, - [67] = { + [FRONTIER_TRAINER_RYLEE] = { .facilityClass = FACILITY_CLASS_PARASOL_LADY, .trainerName = _("RYLEE"), .speechBefore = {EC_WORD_SHOW, EC_WORD_ME, EC_WORD_THAT, EC_WORD_YOU, EC_WORD_HAVE, EC_WORD_GUTS}, @@ -544,7 +544,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_THAT_WAS, EC_WORD_GUTSY, EC_WORD_ELLIPSIS, EC_WORD_YOU_RE, EC_WORD_QUITE, EC_WORD_SUPER}, .monSets = gBattleFrontierTrainerMons_Rylee }, - [68] = { + [FRONTIER_TRAINER_CHELSEA] = { .facilityClass = FACILITY_CLASS_PARASOL_LADY, .trainerName = _("CHELSEA"), .speechBefore = {EC_WORD_I, EC_WORD_SERIOUSLY, EC_WORD_MEAN, EC_WORD_TO, EC_WORD_WIN, EC_WORD_EXCL}, @@ -552,7 +552,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_YOU_RE, EC_WORD_FAR, EC_WORD_TOO_STRONG, EC_WORD_FOR, EC_WORD_ME, 0xFFFF}, .monSets = gBattleFrontierTrainerMons_Chelsea }, - [69] = { + [FRONTIER_TRAINER_DANELA] = { .facilityClass = FACILITY_CLASS_BEAUTY, .trainerName = _("DANELA"), .speechBefore = {EC_WORD_YOU, EC_WORD_MUST_BE, EC_WORD_MY, EC_WORD_OPPONENT, EC_WORD_NOW, EC_WORD_EXCL}, @@ -560,7 +560,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_THAT_WAS, EC_WORD_GOOD, EC_WORD_AND, EC_WORD_THIS, EC_WORD_IS, EC_WORD_GOOD_BYE}, .monSets = gBattleFrontierTrainerMons_Danela }, - [70] = { + [FRONTIER_TRAINER_LIZBETH] = { .facilityClass = FACILITY_CLASS_BEAUTY, .trainerName = _("LIZBETH"), .speechBefore = {EC_WORD_IF_I_LOSE, EC_WORD_YOU, EC_WORD_CAN, EC_WORD_HAVE, EC_WORD_A, EC_MOVE2(PRESENT)}, @@ -568,7 +568,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .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 }, - [71] = { + [FRONTIER_TRAINER_AMELIA] = { .facilityClass = FACILITY_CLASS_BEAUTY, .trainerName = _("AMELIA"), .speechBefore = {EC_WORD_I, EC_WORD_BELIEVE, EC_WORD_IN, EC_WORD_CUTE, EC_WORD_FASHION, EC_WORD_APPEAL}, @@ -576,7 +576,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_THAT_WAS, EC_WORD_AWFUL, EC_WORD_EXCL, EC_WORD_I_AM, EC_WORD_GOING, EC_WORD_HOME}, .monSets = gBattleFrontierTrainerMons_Amelia }, - [72] = { + [FRONTIER_TRAINER_JILLIAN] = { .facilityClass = FACILITY_CLASS_AROMA_LADY, .trainerName = _("JILLIAN"), .speechBefore = {EC_WORD_WHAT, EC_WORD_IS, EC_WORD_THAT, EC_WORD_I, EC_WORD_SMELL, EC_WORD_QUES}, @@ -584,7 +584,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_IT_S, EC_WORD_YOUR, EC_WORD_OFFENSIVE, EC_WORD_STENCH, EC_WORD_THAT_S, EC_WORD_WHAT}, .monSets = gBattleFrontierTrainerMons_Jillian }, - [73] = { + [FRONTIER_TRAINER_ABBIE] = { .facilityClass = FACILITY_CLASS_AROMA_LADY, .trainerName = _("ABBIE"), .speechBefore = {EC_WORD_YOU, EC_WORD_TRY, EC_WORD_MY, EC_WORD_SECRET, EC_MOVE(AROMATHERAPY), EC_WORD_OK_QUES}, @@ -592,7 +592,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_DIDN_T, EC_WORD_YOU, EC_WORD_SMELL, EC_WORD_A, EC_WORD_THING, EC_WORD_QUES_EXCL}, .monSets = gBattleFrontierTrainerMons_Abbie }, - [74] = { + [FRONTIER_TRAINER_BRIANA] = { .facilityClass = FACILITY_CLASS_AROMA_LADY, .trainerName = _("BRIANA"), .speechBefore = {EC_WORD_MY, EC_WORD_BOY, EC_WORD_FRIEND, EC_WORD_WORKS, EC_WORD_TOO, EC_WORD_MUCH}, @@ -600,7 +600,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I_AM, EC_WORD_SO, EC_WORD_LONESOME, EC_WORD_WITHOUT, EC_WORD_HIM, EC_WORD_ELLIPSIS}, .monSets = gBattleFrontierTrainerMons_Briana }, - [75] = { + [FRONTIER_TRAINER_ANTONIO] = { .facilityClass = FACILITY_CLASS_GUITARIST, .trainerName = _("ANTONIO"), .speechBefore = {EC_WORD_I, EC_WORD_KNOW, EC_WORD_HOW, EC_WORD_TO, EC_WORD_GO, EC_WORD_GO}, @@ -608,7 +608,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_GO, EC_WORD_GO, EC_WORD_ELLIPSIS, EC_WORD_JUST, EC_MOVE(FLAIL), EC_WORD_ABOUT}, .monSets = gBattleFrontierTrainerMons_Antonio }, - [76] = { + [FRONTIER_TRAINER_JADEN] = { .facilityClass = FACILITY_CLASS_GUITARIST, .trainerName = _("JADEN"), .speechBefore = {EC_WORD_HELLO, EC_WORD_I, EC_WORD_THINK, EC_WORD_I, EC_WORD_ADORE, EC_WORD_YOU}, @@ -616,7 +616,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_THIS_IS_IT_EXCL, 0xFFFF, 0xFFFF, EC_WORD_GOOD_BYE, EC_WORD_FOREVER, EC_WORD_EXCL}, .monSets = gBattleFrontierTrainerMons_Jaden }, - [77] = { + [FRONTIER_TRAINER_DAKOTA] = { .facilityClass = FACILITY_CLASS_GUITARIST, .trainerName = _("DAKOTA"), .speechBefore = {EC_WORD_YOU, EC_WORD_HAVE, EC_WORD_TO, EC_WORD_DANCE, EC_WORD_WITH, EC_WORD_POWER}, @@ -624,7 +624,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_OKAY, EC_WORD_YOU, EC_WORD_UNDERSTAND, EC_WORD_ALL_RIGHT, EC_WORD_EXCL, 0xFFFF}, .monSets = gBattleFrontierTrainerMons_Dakota }, - [78] = { + [FRONTIER_TRAINER_BRAYDEN] = { .facilityClass = FACILITY_CLASS_BIRD_KEEPER, .trainerName = _("BRAYDEN"), .speechBefore = {EC_WORD_COLOR_CHANGE, EC_WORD_VERSION, EC_WORD_TOYS, EC_WORD_ARE, EC_WORD_USELESS, EC_WORD_EXCL}, @@ -632,7 +632,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I, EC_MOVE2(ATTRACT), EC_WORD_COLOR_CHANGE, EC_WORD_VERSION, EC_WORD_TOYS, EC_WORD_ELLIPSIS}, .monSets = gBattleFrontierTrainerMons_Brayden }, - [79] = { + [FRONTIER_TRAINER_CORSON] = { .facilityClass = FACILITY_CLASS_BIRD_KEEPER, .trainerName = _("CORSON"), .speechBefore = {EC_WORD_I, EC_WORD_GET, EC_WORD_TO, EC_MOVE2(BEAT_UP), EC_WORD_ON, EC_WORD_YOU}, @@ -640,7 +640,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_WHY, EC_WORD_QUES_EXCL, 0xFFFF, EC_WORD_I, EC_MOVE2(CURSE), EC_WORD_YOU}, .monSets = gBattleFrontierTrainerMons_Corson }, - [80] = { + [FRONTIER_TRAINER_TREVIN] = { .facilityClass = FACILITY_CLASS_BIRD_KEEPER, .trainerName = _("TREVIN"), .speechBefore = {EC_WORD_THERE, EC_WORD_IS, EC_WORD_NONE, EC_WORD_BETTER, EC_WORD_THAN, EC_WORD_ME}, @@ -648,7 +648,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_SERIOUS, EC_WORD_QUES_EXCL, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}, .monSets = gBattleFrontierTrainerMons_Trevin }, - [81] = { + [FRONTIER_TRAINER_PATRICK] = { .facilityClass = FACILITY_CLASS_SAILOR, .trainerName = _("PATRICK"), .speechBefore = {EC_WORD_I_AM, EC_WORD_PERFECT, EC_WORD_EXCL, EC_WORD_GIVE_UP, EC_WORD_NOW, 0xFFFF}, @@ -656,7 +656,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_BUT, EC_WORD_HOW, EC_WORD_QUES, EC_WORD_I_AM, EC_WORD_PERFECT, EC_WORD_ELLIPSIS}, .monSets = gBattleFrontierTrainerMons_Patrick }, - [82] = { + [FRONTIER_TRAINER_KADEN] = { .facilityClass = FACILITY_CLASS_SAILOR, .trainerName = _("KADEN"), .speechBefore = {EC_WORD_WHAT, EC_WORD_ARE, EC_WORD_YOU, EC_WORD_UP, EC_WORD_TO, EC_WORD_QUES}, @@ -664,7 +664,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I, EC_WORD_DON_T, EC_WORD_KNOW, EC_WORD_WHO, EC_WORD_I_AM, EC_WORD_ELLIPSIS}, .monSets = gBattleFrontierTrainerMons_Kaden }, - [83] = { + [FRONTIER_TRAINER_MAXWELL] = { .facilityClass = FACILITY_CLASS_SAILOR, .trainerName = _("MAXWELL"), .speechBefore = {EC_WORD_HEY_THERE, EC_WORD_WHO_IS, EC_WORD_YOUR, EC_WORD_RIVAL, EC_WORD_QUES, 0xFFFF}, @@ -672,7 +672,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I_AM, EC_WORD_MAKING, EC_WORD_YOU, EC_WORD_MY, EC_WORD_RIVAL, 0xFFFF}, .monSets = gBattleFrontierTrainerMons_Maxwell }, - [84] = { + [FRONTIER_TRAINER_DARYL] = { .facilityClass = FACILITY_CLASS_HIKER, .trainerName = _("DARYL"), .speechBefore = {EC_WORD_I, EC_WORD_ONLY, EC_WORD_KNOW, EC_WORD_HOW, EC_WORD_TO, EC_MOVE(CHARGE)}, @@ -680,7 +680,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_YOU_RE, EC_WORD_GOING, EC_WORD_TO, EC_WORD_A, EC_WORD_LEGEND, EC_WORD_EXCL}, .monSets = gBattleFrontierTrainerMons_Daryl }, - [85] = { + [FRONTIER_TRAINER_KENNETH] = { .facilityClass = FACILITY_CLASS_HIKER, .trainerName = _("KENNETH"), .speechBefore = {EC_WORD_YOU, EC_WORD_BETTER, EC_WORD_NOT, EC_MOVE2(SLACK_OFF), EC_WORD_WITH, EC_WORD_ME}, @@ -688,7 +688,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I_AM, EC_WORD_SORRY, EC_WORD_ELLIPSIS, 0xFFFF, 0xFFFF, 0xFFFF}, .monSets = gBattleFrontierTrainerMons_Kenneth }, - [86] = { + [FRONTIER_TRAINER_RICH] = { .facilityClass = FACILITY_CLASS_HIKER, .trainerName = _("RICH"), .speechBefore = {EC_WORD_YOUR, EC_MOVE(FACADE), EC_WORD_DOESN_T, EC_MOVE2(TRICK), EC_WORD_ME, 0xFFFF}, @@ -696,7 +696,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_THAT_WAS, EC_WORD_REALLY, EC_WORD_TOUGH, EC_WORD_ON, EC_WORD_ME, 0xFFFF}, .monSets = gBattleFrontierTrainerMons_Rich }, - [87] = { + [FRONTIER_TRAINER_CADEN] = { .facilityClass = FACILITY_CLASS_KINDLER, .trainerName = _("CADEN"), .speechBefore = {EC_WORD_I, EC_WORD_CAN_T, EC_WORD_BE, EC_WORD_DEFEATED, EC_WORD_EXCL, 0xFFFF}, @@ -704,7 +704,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I_AM, EC_WORD_TIRED, EC_WORD_ELLIPSIS, EC_WORD_IT_S, EC_WORD_SO, EC_WORD_HOT}, .monSets = gBattleFrontierTrainerMons_Caden }, - [88] = { + [FRONTIER_TRAINER_MARLON] = { .facilityClass = FACILITY_CLASS_KINDLER, .trainerName = _("MARLON"), .speechBefore = {EC_WORD_A, EC_WORD_POKEDEX, EC_WORD_IS, EC_WORD_A_LITTLE, EC_WORD_RADIO, EC_WORD_QUES}, @@ -712,7 +712,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_IT_S, EC_WORD_NOT, EC_WORD_QUES, EC_WORD_IS, EC_WORD_POKENAV, EC_WORD_QUES}, .monSets = gBattleFrontierTrainerMons_Marlon }, - [89] = { + [FRONTIER_TRAINER_NASH] = { .facilityClass = FACILITY_CLASS_KINDLER, .trainerName = _("NASH"), .speechBefore = {EC_WORD_I_AM, EC_WORD_ON, EC_WORD_FIRE, EC_WORD_BABY, EC_WORD_EXCL, 0xFFFF}, @@ -720,7 +720,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_AIYEEH, EC_WORD_EXCL_EXCL, 0xFFFF, EC_WORD_NO, EC_WORD_WATER, EC_WORD_PLEASE}, .monSets = gBattleFrontierTrainerMons_Nash }, - [90] = { + [FRONTIER_TRAINER_ROBBY] = { .facilityClass = FACILITY_CLASS_RUNNING_TRIATHLETE_M, .trainerName = _("ROBBY"), .speechBefore = {EC_WORD_HAHAHA, EC_WORD_EXCL, EC_WORD_HAPPY, EC_WORD_TO, EC_WORD_MEET_YOU, EC_WORD_EXCL}, @@ -728,7 +728,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I, EC_WORD_WILL, EC_MOVE(THRASH), EC_WORD_MY, EC_WORD_TOYS, EC_WORD_EXCL}, .monSets = gBattleFrontierTrainerMons_Robby }, - [91] = { + [FRONTIER_TRAINER_REECE] = { .facilityClass = FACILITY_CLASS_RUNNING_TRIATHLETE_M, .trainerName = _("REECE"), .speechBefore = {EC_WORD_MY, EC_MOVE2(QUICK_ATTACK), EC_WORD_CAN, EC_WORD_BEAT, EC_WORD_A, EC_MOVE2(TELEPORT)}, @@ -736,7 +736,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I_WAS, EC_WORD_KIDDING, EC_WORD_ABOUT, EC_WORD_THAT, EC_MOVE2(TELEPORT), EC_WORD_THING}, .monSets = gBattleFrontierTrainerMons_Reece }, - [92] = { + [FRONTIER_TRAINER_KATHRYN] = { .facilityClass = FACILITY_CLASS_RUNNING_TRIATHLETE_F, .trainerName = _("KATHRYN"), .speechBefore = {EC_WORD_I, EC_WORD_DON_T, EC_WORD_TRAIN, EC_WORD_GOOD, EC_WORD_ENOUGH, EC_WORD_QUES}, @@ -744,7 +744,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_WHY, EC_WORD_COULDN_T, EC_WORD_I, EC_WORD_WIN, EC_WORD_THIS, EC_WORD_QUES}, .monSets = gBattleFrontierTrainerMons_Kathryn }, - [93] = { + [FRONTIER_TRAINER_ELLEN] = { .facilityClass = FACILITY_CLASS_RUNNING_TRIATHLETE_F, .trainerName = _("ELLEN"), .speechBefore = {EC_WORD_CRUSH, EC_WORD_YOU, EC_WORD_LIKE, EC_WORD_AN, EC_WORD_EGG, EC_WORD_EXCL}, @@ -752,7 +752,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_TOO, EC_WORD_TOUGH, EC_WORD_TO, EC_WORD_CRUSH, EC_WORD_EXCL, 0xFFFF}, .monSets = gBattleFrontierTrainerMons_Ellen }, - [94] = { + [FRONTIER_TRAINER_RAMON] = { .facilityClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_M, .trainerName = _("RAMON"), .speechBefore = {EC_WORD_OKAY, EC_WORD_EXCL, 0xFFFF, EC_WORD_THIS, EC_WORD_IS, EC_WORD_PERFECTION}, @@ -760,7 +760,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_IT_S, EC_WORD_A, EC_WORD_SECRET, EC_WORD_WHY, EC_WORD_I_AM, EC_WORD_HAPPY}, .monSets = gBattleFrontierTrainerMons_Ramon }, - [95] = { + [FRONTIER_TRAINER_ARTHUR] = { .facilityClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_M, .trainerName = _("ARTHUR"), .speechBefore = {EC_WORD_HERE_I_COME, EC_WORD_FEELING, EC_WORD_READY, EC_WORD_FOR, EC_WORD_IT, EC_WORD_ALL}, @@ -768,7 +768,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_THAT_WAS, EC_WORD_NOT, EC_WORD_WHAT, EC_WORD_I, EC_WORD_NEED, 0xFFFF}, .monSets = gBattleFrontierTrainerMons_Arthur }, - [96] = { + [FRONTIER_TRAINER_ALONDRA] = { .facilityClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_F, .trainerName = _("ALONDRA"), .speechBefore = {EC_WORD_EVERY, EC_WORD_DAY, EC_WORD_IS, EC_WORD_A, EC_WORD_GREAT, EC_WORD_DAY}, @@ -776,7 +776,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_MY, EC_MOVE2(DIVE), EC_WORD_LEFT, EC_WORD_ME, EC_WORD_COLD, EC_WORD_ELLIPSIS}, .monSets = gBattleFrontierTrainerMons_Alondra }, - [97] = { + [FRONTIER_TRAINER_ADRIANA] = { .facilityClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_F, .trainerName = _("ADRIANA"), .speechBefore = {EC_WORD_COME, EC_WORD_SEE, EC_WORD_AN, EC_WORD_INCREDIBLE, EC_WORD_SWIFT_SWIM, EC_WORD_EXCL}, @@ -784,7 +784,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I_AM, EC_WORD_FEELING, EC_MOVE2(BEAT_UP), EC_WORD_AND, EC_WORD_TIRED, 0xFFFF}, .monSets = gBattleFrontierTrainerMons_Adriana }, - [98] = { + [FRONTIER_TRAINER_MALIK] = { .facilityClass = FACILITY_CLASS_CYCLING_TRIATHLETE_M, .trainerName = _("MALIK"), .speechBefore = {EC_WORD_OH, EC_WORD_NOT, EC_WORD_ANOTHER, EC_WORD_BATTLE, EC_WORD_PLEASE, EC_WORD_ELLIPSIS}, @@ -792,7 +792,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I, EC_WORD_FINALLY, EC_WORD_LOST, EC_WORD_ELLIPSIS, EC_WORD_I_AM, EC_WORD_TIRED}, .monSets = gBattleFrontierTrainerMons_Malik }, - [99] = { + [FRONTIER_TRAINER_JILL] = { .facilityClass = FACILITY_CLASS_CYCLING_TRIATHLETE_F, .trainerName = _("JILL"), .speechBefore = {EC_WORD_I_AM, EC_WORD_THE, EC_MOVE2(QUICK_ATTACK), EC_WORD_TRAINER, EC_WORD_EXCL, 0xFFFF}, @@ -800,7 +800,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_THE, EC_MOVE2(QUICK_ATTACK), EC_WORD_TRAINER, EC_WORD_GIVES, EC_WORD_UP, EC_WORD_EXCL}, .monSets = gBattleFrontierTrainerMons_Jill }, - [100] = { + [FRONTIER_TRAINER_ERIK] = { .facilityClass = FACILITY_CLASS_RUNNING_TRIATHLETE_M, .trainerName = _("ERIK"), .speechBefore = {EC_WORD_I_AM, EC_WORD_THE, EC_WORD_SPEED_BOOST, EC_WORD_HERO, EC_WORD_EXCL, 0xFFFF}, @@ -808,7 +808,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_WAAAH, EC_WORD_EXCL_EXCL, 0xFFFF, EC_WORD_NO, EC_WORD_NO, EC_WORD_EXCL_EXCL}, .monSets = gBattleFrontierTrainerMons_Erik }, - [101] = { + [FRONTIER_TRAINER_YAZMIN] = { .facilityClass = FACILITY_CLASS_RUNNING_TRIATHLETE_F, .trainerName = _("YAZMIN"), .speechBefore = {EC_WORD_I, EC_WORD_WOULD, EC_WORD_RATHER, EC_WORD_RUN, EC_WORD_THAN, EC_WORD_BIKE}, @@ -816,7 +816,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .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 }, - [102] = { + [FRONTIER_TRAINER_JAMAL] = { .facilityClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_M, .trainerName = _("JAMAL"), .speechBefore = {EC_WORD_I_AM, EC_WORD_GOING, EC_WORD_TO, EC_WORD_BE, EC_WORD_A, EC_WORD_FATHER}, @@ -824,7 +824,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_MY, EC_WORD_BABY, EC_WORD_WILL, EC_WORD_BE, EC_WORD_TOTALLY, EC_WORD_AWESOME}, .monSets = gBattleFrontierTrainerMons_Jamal }, - [103] = { + [FRONTIER_TRAINER_LESLIE] = { .facilityClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_F, .trainerName = _("LESLIE"), .speechBefore = {EC_WORD_I_AM, EC_WORD_GOING, EC_WORD_TO, EC_WORD_BE, EC_WORD_A, EC_WORD_MOTHER}, @@ -832,7 +832,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I_AM, EC_WORD_TOO, EC_WORD_HAPPY, EC_WORD_TO, EC_WORD_BE, EC_WORD_ANGRY}, .monSets = gBattleFrontierTrainerMons_Leslie }, - [104] = { + [FRONTIER_TRAINER_DAVE] = { .facilityClass = FACILITY_CLASS_CYCLING_TRIATHLETE_M, .trainerName = _("DAVE"), .speechBefore = {EC_WORD_WHAT, EC_WORD_SHOULD, EC_WORD_I, EC_WORD_DO, EC_WORD_TODAY, EC_WORD_QUES}, @@ -840,7 +840,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I, EC_WORD_WILL, EC_WORD_GO, EC_WORD_PLAY, EC_WORD_A, EC_WORD_GAME}, .monSets = gBattleFrontierTrainerMons_Dave }, - [105] = { + [FRONTIER_TRAINER_CARLO] = { .facilityClass = FACILITY_CLASS_CYCLING_TRIATHLETE_M, .trainerName = _("CARLO"), .speechBefore = {EC_WORD_HAH, EC_WORD_EXCL_EXCL, 0xFFFF, EC_WORD_YEAH, EC_WORD_EXCL_EXCL, 0xFFFF}, @@ -848,7 +848,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I, EC_WORD_LOST, EC_WORD_AT, EC_MOVE(EXTREME_SPEED), EC_WORD_ELLIPSIS, 0xFFFF}, .monSets = gBattleFrontierTrainerMons_Carlo }, - [106] = { + [FRONTIER_TRAINER_EMILIA] = { .facilityClass = FACILITY_CLASS_CYCLING_TRIATHLETE_F, .trainerName = _("EMILIA"), .speechBefore = {EC_WORD_ME, EC_WORD_WORRY, EC_WORD_QUES, EC_WORD_I, EC_WORD_HAVE, EC_WORD_NONE}, @@ -856,7 +856,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_AHAHA, EC_WORD_SEE, EC_WORD_QUES, EC_WORD_THAT_WAS, EC_WORD_ENTERTAINING, EC_WORD_EXCL}, .monSets = gBattleFrontierTrainerMons_Emilia }, - [107] = { + [FRONTIER_TRAINER_DALIA] = { .facilityClass = FACILITY_CLASS_CYCLING_TRIATHLETE_F, .trainerName = _("DALIA"), .speechBefore = {EC_WORD_MY, EC_WORD_BIKE, EC_WORD_IS, EC_WORD_VERY, EC_WORD_EXPENSIVE, 0xFFFF}, @@ -864,7 +864,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_MY, EC_WORD_BIKE, EC_WORD_IS, EC_WORD_MY, EC_WORD_BEST, EC_WORD_FRIEND}, .monSets = gBattleFrontierTrainerMons_Dalia }, - [108] = { + [FRONTIER_TRAINER_HITOMI] = { .facilityClass = FACILITY_CLASS_BLACK_BELT, .trainerName = _("HITOMI"), .speechBefore = {EC_WORD_YEAH, EC_WORD_EXCL_EXCL, 0xFFFF, EC_WORD_HAH, EC_WORD_EXCL_EXCL, 0xFFFF}, @@ -872,7 +872,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_AIYEEH, EC_WORD_EXCL_EXCL, 0xFFFF, EC_WORD_I_AM, EC_WORD_SORRY, EC_WORD_EXCL_EXCL}, .monSets = gBattleFrontierTrainerMons_Hitomi }, - [109] = { + [FRONTIER_TRAINER_RICARDO] = { .facilityClass = FACILITY_CLASS_BLACK_BELT, .trainerName = _("RICARDO"), .speechBefore = {EC_WORD_COME_ON, EC_WORD_EXCL, EC_WORD_PLAY, EC_WORD_TIME, EC_WORD_IS, EC_WORD_OVER}, @@ -880,7 +880,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_PLEASE, EC_WORD_DON_T, EC_WORD_HIT, EC_WORD_ME, EC_WORD_EXCL, 0xFFFF}, .monSets = gBattleFrontierTrainerMons_Ricardo }, - [110] = { + [FRONTIER_TRAINER_SHIZUKA] = { .facilityClass = FACILITY_CLASS_BLACK_BELT, .trainerName = _("SHIZUKA"), .speechBefore = {EC_WORD_SHOW, EC_WORD_ME, EC_WORD_THAT, EC_WORD_YOU_RE, EC_WORD_SERIOUS, EC_WORD_EXCL}, @@ -888,7 +888,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_YOU_RE, EC_WORD_PERFECT, EC_WORD_IN, EC_WORD_EVERY, EC_WORD_WAY, EC_WORD_EXCL}, .monSets = gBattleFrontierTrainerMons_Shizuka }, - [111] = { + [FRONTIER_TRAINER_JOANA] = { .facilityClass = FACILITY_CLASS_BATTLE_GIRL, .trainerName = _("JOANA"), .speechBefore = {EC_WORD_YOU_RE, EC_WORD_GOING, EC_WORD_TO, EC_WORD_LOSE, EC_WORD_RIGHT, EC_WORD_AWAY}, @@ -896,7 +896,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I, EC_WORD_REFUSE, EC_WORD_TO, EC_WORD_ACCEPT, EC_WORD_THAT, EC_MOVE(OUTRAGE)}, .monSets = gBattleFrontierTrainerMons_Joana }, - [112] = { + [FRONTIER_TRAINER_KELLY] = { .facilityClass = FACILITY_CLASS_BATTLE_GIRL, .trainerName = _("KELLY"), .speechBefore = {EC_WORD_MY, EC_WORD_NIGHT, EC_WORD_SCHOOL, EC_WORD_IS, EC_WORD_REALLY, EC_WORD_SCARY}, @@ -904,7 +904,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_THE, EC_WORD_HOME, EC_WORD_WORK, EC_WORD_IS, EC_WORD_AWFULLY, EC_WORD_SCARY}, .monSets = gBattleFrontierTrainerMons_Kelly }, - [113] = { + [FRONTIER_TRAINER_RAYNA] = { .facilityClass = FACILITY_CLASS_BATTLE_GIRL, .trainerName = _("RAYNA"), .speechBefore = {EC_WORD_I_AM, EC_WORD_NO_1, EC_WORD_WHEN, EC_WORD_IT_S, EC_WORD_ABOUT, EC_WORD_POWER}, @@ -912,7 +912,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_TERRIBLE, EC_WORD_ELLIPSIS, 0xFFFF, EC_WORD_I_AM, EC_WORD_TERRIBLE, EC_WORD_ELLIPSIS}, .monSets = gBattleFrontierTrainerMons_Rayna }, - [114] = { + [FRONTIER_TRAINER_EVAN] = { .facilityClass = FACILITY_CLASS_EXPERT_M, .trainerName = _("EVAN"), .speechBefore = {EC_WORD_EVERY, EC_WORD_BATTLE, EC_WORD_HAS, EC_WORD_A, EC_WORD_SMELL, 0xFFFF}, @@ -920,7 +920,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_THE, EC_WORD_AWFUL, EC_WORD_STENCH, EC_WORD_OF, EC_WORD_A, EC_WORD_LOSS}, .monSets = gBattleFrontierTrainerMons_Evan }, - [115] = { + [FRONTIER_TRAINER_JORDAN] = { .facilityClass = FACILITY_CLASS_EXPERT_M, .trainerName = _("JORDAN"), .speechBefore = {EC_WORD_GOOD, EC_WORD_EXCL, 0xFFFF, EC_WORD_COME_ON, EC_WORD_EXCL_EXCL, 0xFFFF}, @@ -928,7 +928,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_WHAT, EC_WORD_QUES_EXCL, 0xFFFF, EC_WORD_BUT, EC_WORD_HOW, EC_WORD_QUES}, .monSets = gBattleFrontierTrainerMons_Jordan }, - [116] = { + [FRONTIER_TRAINER_JOEL] = { .facilityClass = FACILITY_CLASS_EXPERT_M, .trainerName = _("JOEL"), .speechBefore = {EC_WORD_FUFUFU, EC_WORD_ELLIPSIS, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}, @@ -936,7 +936,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_HAHAHA, EC_WORD_ELLIPSIS, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}, .monSets = gBattleFrontierTrainerMons_Joel }, - [117] = { + [FRONTIER_TRAINER_KRISTEN] = { .facilityClass = FACILITY_CLASS_EXPERT_F, .trainerName = _("KRISTEN"), .speechBefore = {EC_WORD_HAHAHA, EC_WORD_ELLIPSIS, 0xFFFF, EC_WORD_A, EC_WORD_KID, EC_WORD_ELLIPSIS}, @@ -944,7 +944,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_A, EC_WORD_TOUGH, EC_WORD_KID, EC_WORD_HUH_QUES, EC_WORD_HUMPH, EC_WORD_EXCL}, .monSets = gBattleFrontierTrainerMons_Kristen }, - [118] = { + [FRONTIER_TRAINER_SELPHY] = { .facilityClass = FACILITY_CLASS_EXPERT_F, .trainerName = _("SELPHY"), .speechBefore = {EC_WORD_HUH_QUES, EC_WORD_WHAT, EC_WORD_IS_IT_QUES, 0xFFFF, 0xFFFF, 0xFFFF}, @@ -952,7 +952,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_OH, EC_WORD_NO, EC_WORD_EXCL, EC_WORD_WHY, EC_WORD_NOT, EC_WORD_QUES}, .monSets = gBattleFrontierTrainerMons_Selphy }, - [119] = { + [FRONTIER_TRAINER_CHLOE] = { .facilityClass = FACILITY_CLASS_EXPERT_F, .trainerName = _("CHLOE"), .speechBefore = {EC_WORD_COME, EC_WORD_WE, EC_WORD_WILL, EC_WORD_DO, EC_WORD_BATTLE, EC_WORD_NOW}, @@ -960,7 +960,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_OH, EC_WORD_EXCL, 0xFFFF, EC_WORD_STRONG, EC_WORD_YOU, EC_WORD_ARE}, .monSets = gBattleFrontierTrainerMons_Chloe }, - [120] = { + [FRONTIER_TRAINER_NORTON] = { .facilityClass = FACILITY_CLASS_PSYCHIC_M, .trainerName = _("NORTON"), .speechBefore = {EC_WORD_I, EC_WORD_KNOW, EC_WORD_ONLY, EC_WORD_YOU, 0xFFFF, 0xFFFF}, @@ -968,7 +968,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_YOU_RE, EC_WORD_SOME, EC_WORD_KIND, EC_WORD_OF, EC_WORD_AWESOME, EC_WORD_EXCL}, .monSets = gBattleFrontierTrainerMons_Norton }, - [121] = { + [FRONTIER_TRAINER_LUKAS] = { .facilityClass = FACILITY_CLASS_PSYCHIC_M, .trainerName = _("LUKAS"), .speechBefore = {EC_WORD_MY, EC_WORD_JOKING, EC_WORD_IS, EC_WORD_PRETTY, EC_WORD_TERRIBLE, EC_WORD_ELLIPSIS}, @@ -976,7 +976,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_YOUR, EC_WORD_ROCK_HEAD, EC_WORD_COME, EC_WORD_TO, EC_WORD_SHINE, 0xFFFF}, .monSets = gBattleFrontierTrainerMons_Lukas }, - [122] = { + [FRONTIER_TRAINER_ZACH] = { .facilityClass = FACILITY_CLASS_PSYCHIC_M, .trainerName = _("ZACH"), .speechBefore = {EC_WORD_I_AM, EC_WORD_AN, EC_WORD_EXCELLENT, EC_MOVE2(MIMIC), EC_WORD_OF, EC_WORD_POKEMON}, @@ -984,7 +984,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I_AM, EC_WORD_ANGRY, EC_WORD_LIKE, EC_WORD_A, EC_POKEMON2(MANKEY), EC_WORD_EXCL}, .monSets = gBattleFrontierTrainerMons_Zach }, - [123] = { + [FRONTIER_TRAINER_KAITLYN] = { .facilityClass = FACILITY_CLASS_PSYCHIC_F, .trainerName = _("KAITLYN"), .speechBefore = {EC_WORD_I, EC_WORD_CRUSH, EC_WORD_THINGS, EC_WORD_WITH, EC_WORD_PSYCHIC, EC_WORD_POWER}, @@ -992,7 +992,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_NO, EC_WORD_NO, EC_WORD_ELLIPSIS, EC_WORD_THIS, EC_WORD_WON_T, EC_WORD_DO}, .monSets = gBattleFrontierTrainerMons_Kaitlyn }, - [124] = { + [FRONTIER_TRAINER_BREANNA] = { .facilityClass = FACILITY_CLASS_PSYCHIC_F, .trainerName = _("BREANNA"), .speechBefore = {EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_WILL, EC_WORD_CRUSH, EC_WORD_YOU, EC_WORD_EXCL}, @@ -1000,7 +1000,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_YOU, EC_WORD_HAVE, EC_WORD_GUTS, EC_WORD_AND, EC_WORD_SKILL, 0xFFFF}, .monSets = gBattleFrontierTrainerMons_Breanna }, - [125] = { + [FRONTIER_TRAINER_KENDRA] = { .facilityClass = FACILITY_CLASS_PSYCHIC_F, .trainerName = _("KENDRA"), .speechBefore = {EC_WORD_IF, EC_WORD_YOU_RE, EC_WORD_SMART, EC_WORD_STOP, EC_WORD_RIGHT, EC_WORD_NOW}, @@ -1008,7 +1008,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_WHY, EC_WORD_DIDN_T, EC_WORD_YOU, EC_WORD_STOP, EC_WORD_QUES, 0xFFFF}, .monSets = gBattleFrontierTrainerMons_Kendra }, - [126] = { + [FRONTIER_TRAINER_MOLLY] = { .facilityClass = FACILITY_CLASS_HEX_MANIAC, .trainerName = _("MOLLY"), .speechBefore = {EC_WORD_WILL, EC_WORD_MY, EC_WORD_CUTE_CHARM, EC_MOVE2(ATTRACT), EC_WORD_YOU, EC_WORD_QUES}, @@ -1016,7 +1016,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_OH, EC_WORD_HOW, EC_WORD_COULD, EC_WORD_YOU, EC_WORD_QUES, 0xFFFF}, .monSets = gBattleFrontierTrainerMons_Molly }, - [127] = { + [FRONTIER_TRAINER_JAZMIN] = { .facilityClass = FACILITY_CLASS_HEX_MANIAC, .trainerName = _("JAZMIN"), .speechBefore = {EC_WORD_I, EC_WORD_FORECAST, EC_WORD_TERRIBLE, EC_WORD_THINGS, EC_WORD_FOR, EC_WORD_YOU}, @@ -1024,7 +1024,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_MY, EC_MOVE2(FORESIGHT), EC_WORD_DIDN_T, EC_WORD_SHOW, EC_WORD_ME, EC_WORD_THIS}, .monSets = gBattleFrontierTrainerMons_Jazmin }, - [128] = { + [FRONTIER_TRAINER_KELSEY] = { .facilityClass = FACILITY_CLASS_HEX_MANIAC, .trainerName = _("KELSEY"), .speechBefore = {EC_WORD_I, EC_WORD_HAVEN_T, EC_WORD_SLEPT, EC_WORD_IN, EC_WORD_DAYS, EC_WORD_ELLIPSIS}, @@ -1032,7 +1032,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_YOU, EC_WORD_HAVE, EC_WORD_DESTROYED, EC_WORD_MY, EC_WORD_SLEEP, EC_WORD_ELLIPSIS}, .monSets = gBattleFrontierTrainerMons_Kelsey }, - [129] = { + [FRONTIER_TRAINER_JALEN] = { .facilityClass = FACILITY_CLASS_POKEMANIAC, .trainerName = _("JALEN"), .speechBefore = {EC_WORD_I, EC_WORD_DON_T, EC_WORD_ALLOW, EC_WORD_POKEMON, EC_WORD_TO, EC_MOVE(THRASH)}, @@ -1040,7 +1040,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_WHY, EC_WORD_IS, EC_WORD_THIS, EC_WORD_SO, EC_WORD_HARD, EC_WORD_QUES}, .monSets = gBattleFrontierTrainerMons_Jalen }, - [130] = { + [FRONTIER_TRAINER_GRIFFEN] = { .facilityClass = FACILITY_CLASS_POKEMANIAC, .trainerName = _("GRIFFEN"), .speechBefore = {EC_WORD_I, EC_MOVE2(SWALLOW), EC_MOVE2(SLUDGE), EC_WORD_TO, EC_MOVE2(TRANSFORM), EC_WORD_MYSELF}, @@ -1048,7 +1048,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I, EC_WORD_HAVE, EC_WORD_A, EC_MOVE(GROWTH), EC_WORD_OF, EC_WORD_SUCTION_CUPS}, .monSets = gBattleFrontierTrainerMons_Griffen }, - [131] = { + [FRONTIER_TRAINER_XANDER] = { .facilityClass = FACILITY_CLASS_POKEMANIAC, .trainerName = _("XANDER"), .speechBefore = {EC_WORD_I, EC_WORD_GOT, EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_ON, EC_WORD_RENTAL}, @@ -1056,7 +1056,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_RENTAL, EC_WORD_POKEMON, EC_WORD_AREN_T, EC_WORD_UP, EC_WORD_TO, EC_MOVE2(SCRATCH)}, .monSets = gBattleFrontierTrainerMons_Xander }, - [132] = { + [FRONTIER_TRAINER_MARVIN] = { .facilityClass = FACILITY_CLASS_GENTLEMAN, .trainerName = _("MARVIN"), .speechBefore = {EC_WORD_YOU_RE, EC_WORD_UP, EC_WORD_TO, EC_WORD_THE, EC_WORD_CHALLENGE, EC_WORD_QUES}, @@ -1064,7 +1064,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I_AM, EC_WORD_FEELING, EC_WORD_PERFECT, EC_WORD_THANK_YOU, EC_WORD_SO, EC_WORD_MUCH}, .monSets = gBattleFrontierTrainerMons_Marvin }, - [133] = { + [FRONTIER_TRAINER_BRENNAN] = { .facilityClass = FACILITY_CLASS_GENTLEMAN, .trainerName = _("BRENNAN"), .speechBefore = {EC_WORD_I, EC_MOVE2(WISH), EC_WORD_TO, EC_WORD_SEE, EC_WORD_THE, EC_WORD_NEWS}, @@ -1072,7 +1072,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_THE, EC_WORD_TIGHT, EC_WORD_MONEY, EC_WORD_LIVING, EC_WORD_CHANNEL, EC_WORD_QUES_EXCL}, .monSets = gBattleFrontierTrainerMons_Brennan }, - [134] = { + [FRONTIER_TRAINER_BALEY] = { .facilityClass = FACILITY_CLASS_BUG_MANIAC, .trainerName = _("BALEY"), .speechBefore = {EC_MOVE(SCREECH), EC_WORD_IS, EC_WORD_LIKE, EC_WORD_MUSIC, EC_WORD_TO_ME, EC_WORD_EXCL}, @@ -1080,7 +1080,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_YOU_RE, EC_WORD_SOUNDPROOF, EC_WORD_QUES, 0xFFFF, 0xFFFF, 0xFFFF}, .monSets = gBattleFrontierTrainerMons_Baley }, - [135] = { + [FRONTIER_TRAINER_ZACKARY] = { .facilityClass = FACILITY_CLASS_RUIN_MANIAC, .trainerName = _("ZACKARY"), .speechBefore = {EC_WORD_CAN, EC_WORD_YOU, EC_MOVE(DIG), EC_WORD_IT, EC_WORD_YO, EC_WORD_QUES}, @@ -1088,7 +1088,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_BREAK, EC_WORD_DOWN, EC_MOVE2(DIVE), EC_WORD_TIME, EC_WORD_FOR, EC_WORD_ME}, .monSets = gBattleFrontierTrainerMons_Zackary }, - [136] = { + [FRONTIER_TRAINER_GABRIEL] = { .facilityClass = FACILITY_CLASS_COLLECTOR, .trainerName = _("GABRIEL"), .speechBefore = {EC_MOVE2(POUND), EC_WORD_THE, EC_WORD_THICK_FAT, EC_WORD_ON, EC_WORD_MY, EC_MOVE2(BELLY_DRUM)}, @@ -1096,7 +1096,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_MY, EC_MOVE2(BELLY_DRUM), EC_WORD_WAS, EC_WORD_TOO_WEAK, EC_WORD_ELLIPSIS, 0xFFFF}, .monSets = gBattleFrontierTrainerMons_Gabriel }, - [137] = { + [FRONTIER_TRAINER_EMILY] = { .facilityClass = FACILITY_CLASS_PARASOL_LADY, .trainerName = _("EMILY"), .speechBefore = {EC_WORD_HOW, EC_WORD_ABOUT, EC_WORD_A_TINY_BIT, EC_WORD_OF, EC_MOVE(HYPNOSIS), EC_WORD_QUES}, @@ -1104,7 +1104,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_MY, EC_MOVE(HYPNOSIS), EC_WORD_STRATEGY, EC_WORD_WENT, EC_WORD_BADLY, EC_WORD_ELLIPSIS}, .monSets = gBattleFrontierTrainerMons_Emily }, - [138] = { + [FRONTIER_TRAINER_JORDYN] = { .facilityClass = FACILITY_CLASS_BEAUTY, .trainerName = _("JORDYN"), .speechBefore = {EC_WORD_YOU, EC_WORD_DON_T, EC_WORD_KNOW, EC_WORD_MY, EC_WORD_SECRET, EC_WORD_ELLIPSIS}, @@ -1112,7 +1112,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_BUT, EC_WORD_HOW, EC_WORD_DID, EC_WORD_YOU, EC_WORD_KNOW, EC_WORD_QUES}, .monSets = gBattleFrontierTrainerMons_Jordyn }, - [139] = { + [FRONTIER_TRAINER_SOFIA] = { .facilityClass = FACILITY_CLASS_AROMA_LADY, .trainerName = _("SOFIA"), .speechBefore = {EC_POKEMON(LOUDRED), EC_WORD_PROBABLY, EC_WORD_HAS, EC_WORD_A, EC_MOVE(SWEET_SCENT), 0xFFFF}, @@ -1120,7 +1120,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I, EC_WORD_WORK, EC_WORD_AT, EC_WORD_THE, EC_WORD_DEPT_STORE, 0xFFFF}, .monSets = gBattleFrontierTrainerMons_Sofia }, - [140] = { + [FRONTIER_TRAINER_BRADEN] = { .facilityClass = FACILITY_CLASS_COOLTRAINER_M, .trainerName = _("BRADEN"), .speechBefore = {EC_WORD_I_CHOOSE_YOU, EC_WORD_EXCL, 0xFFFF, EC_WORD_THIS_IS_IT_EXCL, 0xFFFF, 0xFFFF}, @@ -1128,7 +1128,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_ALL_RIGHT, EC_WORD_EXCL, 0xFFFF, EC_WORD_I, EC_WORD_SURRENDER, EC_WORD_EXCL}, .monSets = gBattleFrontierTrainerMons_Braden }, - [141] = { + [FRONTIER_TRAINER_KAYDEN] = { .facilityClass = FACILITY_CLASS_COOLTRAINER_M, .trainerName = _("KAYDEN"), .speechBefore = {EC_WORD_THEY, EC_WORD_OVERDO, EC_WORD_THAT, EC_WORD_GOURMET, EC_WORD_THING, EC_WORD_ELLIPSIS}, @@ -1136,7 +1136,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_HEY, EC_WORD_THIS, EC_WORD_IS, EC_WORD_PRETTY, EC_WORD_TASTY, 0xFFFF}, .monSets = gBattleFrontierTrainerMons_Kayden }, - [142] = { + [FRONTIER_TRAINER_COOPER] = { .facilityClass = FACILITY_CLASS_COOLTRAINER_M, .trainerName = _("COOPER"), .speechBefore = {EC_WORD_THIS, EC_WORD_SHOULD, EC_WORD_ABSOLUTELY, EC_WORD_BE, EC_WORD_A, EC_WORD_PUSHOVER}, @@ -1144,7 +1144,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_PLEASE, EC_WORD_EXCL, 0xFFFF, EC_WORD_SORRY, EC_WORD_I_AM, EC_WORD_SORRY}, .monSets = gBattleFrontierTrainerMons_Cooper }, - [143] = { + [FRONTIER_TRAINER_JULIA] = { .facilityClass = FACILITY_CLASS_COOLTRAINER_F, .trainerName = _("JULIA"), .speechBefore = {EC_WORD_SPIRIT, EC_WORD_ALONE, EC_WORD_WON_T, EC_WORD_MAKE, EC_WORD_YOU, EC_WORD_WIN}, @@ -1152,7 +1152,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .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 }, - [144] = { + [FRONTIER_TRAINER_AMARA] = { .facilityClass = FACILITY_CLASS_COOLTRAINER_F, .trainerName = _("AMARA"), .speechBefore = {EC_WORD_WROOOAAR_EXCL, EC_WORD_EXCL_EXCL, EC_WORD_I_AM, EC_WORD_SO, EC_WORD_READY, EC_WORD_EXCL_EXCL}, @@ -1160,7 +1160,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_THAT_S, EC_WORD_TOO, EC_WORD_MUCH, EC_WORD_TO, EC_MOVE2(TACKLE), EC_WORD_EXCL}, .monSets = gBattleFrontierTrainerMons_Amara }, - [145] = { + [FRONTIER_TRAINER_LYNN] = { .facilityClass = FACILITY_CLASS_COOLTRAINER_F, .trainerName = _("LYNN"), .speechBefore = {EC_WORD_YOUR, EC_WORD_SECRET, EC_WORD_CAN_T, EC_WORD_BE, EC_WORD_HIDDEN, EC_WORD_FOREVER}, @@ -1168,7 +1168,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_YOU, EC_WORD_CAN_T, EC_MOVE(SAFEGUARD), EC_WORD_YOUR, EC_WORD_OWN, EC_WORD_SECRET}, .monSets = gBattleFrontierTrainerMons_Lynn }, - [146] = { + [FRONTIER_TRAINER_JOVAN] = { .facilityClass = FACILITY_CLASS_PKMN_RANGER_M, .trainerName = _("JOVAN"), .speechBefore = {EC_WORD_YOUR, EC_WORD_BATTLE, EC_WORD_SENSE, EC_WORD_IS, EC_WORD_SADLY, EC_WORD_LACKING}, @@ -1176,7 +1176,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I_WAS, EC_WORD_MINUS, EC_WORD_MY, EC_WORD_NORMAL, EC_WORD_POWER, EC_WORD_TODAY}, .monSets = gBattleFrontierTrainerMons_Jovan }, - [147] = { + [FRONTIER_TRAINER_DOMINIC] = { .facilityClass = FACILITY_CLASS_PKMN_RANGER_M, .trainerName = _("DOMINIC"), .speechBefore = {EC_WORD_I, EC_WORD_HAVE, EC_WORD_THIS, EC_WORD_EXCELLENT, EC_WORD_CAMERA, 0xFFFF}, @@ -1184,7 +1184,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_MY, EC_WORD_CAMERA, EC_WORD_DOESN_T, EC_WORD_MISS, EC_WORD_A, EC_WORD_THING}, .monSets = gBattleFrontierTrainerMons_Dominic }, - [148] = { + [FRONTIER_TRAINER_NIKOLAS] = { .facilityClass = FACILITY_CLASS_PKMN_RANGER_M, .trainerName = _("NIKOLAS"), .speechBefore = {EC_WORD_I, EC_MOVE2(MIMIC), EC_WORD_POKEMON, EC_WORD_AFTER, EC_WORD_EVERY, EC_WORD_BATTLE}, @@ -1192,7 +1192,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .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 }, - [149] = { + [FRONTIER_TRAINER_VALERIA] = { .facilityClass = FACILITY_CLASS_PKMN_RANGER_F, .trainerName = _("VALERIA"), .speechBefore = {EC_WORD_I, EC_MOVE2(WISH), EC_WORD_YOU, EC_WORD_WOULD, EC_WORD_NOT, EC_MOVE2(GLARE)}, @@ -1200,7 +1200,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_YOU, EC_WORD_HAVE, EC_WORD_A, EC_WORD_REALLY, EC_MOVE(SCARY_FACE), EC_WORD_EXCL}, .monSets = gBattleFrontierTrainerMons_Valeria }, - [150] = { + [FRONTIER_TRAINER_DELANEY] = { .facilityClass = FACILITY_CLASS_PKMN_RANGER_F, .trainerName = _("DELANEY"), .speechBefore = {EC_WORD_SCHOOL, EC_WORD_IS, EC_WORD_OVER, EC_WORD_TIME, EC_WORD_TO, EC_WORD_PLAY}, @@ -1208,7 +1208,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I, EC_WORD_HAVE, EC_WORD_TO, EC_WORD_WORK, EC_WORD_NEXT, EC_WORD_WEEK}, .monSets = gBattleFrontierTrainerMons_Delaney }, - [151] = { + [FRONTIER_TRAINER_MEGHAN] = { .facilityClass = FACILITY_CLASS_PKMN_RANGER_F, .trainerName = _("MEGHAN"), .speechBefore = {EC_WORD_SCHOOL, EC_WORD_IS, EC_WORD_OUT, EC_WORD_TIME, EC_WORD_TO, EC_WORD_PLAY}, @@ -1216,7 +1216,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_IT_S, EC_WORD_BACK, EC_WORD_TO, EC_WORD_SCHOOL, EC_WORD_SOON, 0xFFFF}, .monSets = gBattleFrontierTrainerMons_Meghan }, - [152] = { + [FRONTIER_TRAINER_ROBERTO] = { .facilityClass = FACILITY_CLASS_DRAGON_TAMER, .trainerName = _("ROBERTO"), .speechBefore = {EC_WORD_DRAGON, EC_WORD_POKEMON, EC_WORD_ARE, EC_WORD_INVINCIBLE, EC_WORD_EXCL, 0xFFFF}, @@ -1224,7 +1224,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_AREN_T, EC_WORD_YOU, EC_WORD_SATISFIED, EC_WORD_YET, EC_WORD_QUES, 0xFFFF}, .monSets = gBattleFrontierTrainerMons_Roberto }, - [153] = { + [FRONTIER_TRAINER_DAMIAN] = { .facilityClass = FACILITY_CLASS_DRAGON_TAMER, .trainerName = _("DAMIAN"), .speechBefore = {EC_WORD_MY, EC_WORD_PURE_POWER, EC_WORD_IS, EC_WORD_MACHINE, EC_WORD_LIKE, EC_WORD_EXCL}, @@ -1232,7 +1232,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_ARRGH, EC_WORD_EXCL, 0xFFFF, EC_WORD_NO, EC_WORD_EXCL_EXCL, 0xFFFF}, .monSets = gBattleFrontierTrainerMons_Damian }, - [154] = { + [FRONTIER_TRAINER_BRODY] = { .facilityClass = FACILITY_CLASS_DRAGON_TAMER, .trainerName = _("BRODY"), .speechBefore = {EC_WORD_MY, EC_WORD_FASHION, EC_WORD_SENSE, EC_WORD_SEEMS, EC_POKEMON(ODDISH), EC_WORD_QUES}, @@ -1240,7 +1240,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I, EC_WORD_QUESTION, EC_WORD_YOUR, EC_WORD_FASHION, EC_WORD_SENSE, EC_WORD_SERIOUSLY}, .monSets = gBattleFrontierTrainerMons_Brody }, - [155] = { + [FRONTIER_TRAINER_GRAHAM] = { .facilityClass = FACILITY_CLASS_DRAGON_TAMER, .trainerName = _("GRAHAM"), .speechBefore = {EC_WORD_YEAH, EC_WORD_EXCL, 0xFFFF, EC_WORD_YEAH_YEAH, EC_WORD_EXCL_EXCL, 0xFFFF}, @@ -1248,7 +1248,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I_AM, EC_WORD_SORRY, EC_WORD_ELLIPSIS, EC_WORD_IT_S, EC_WORD_MY, EC_WORD_BAD}, .monSets = gBattleFrontierTrainerMons_Graham }, - [156] = { + [FRONTIER_TRAINER_TYLOR] = { .facilityClass = FACILITY_CLASS_POKEFAN_M, .trainerName = _("TYLOR"), .speechBefore = {EC_WORD_ARE, EC_WORD_YOU, EC_WORD_FEELING, EC_WORD_MY, EC_MOVE2(HEAT_WAVE), EC_WORD_QUES}, @@ -1256,7 +1256,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_BUT, EC_WORD_I_WAS, EC_WORD_ON, EC_WORD_FIRE, EC_WORD_FOR, EC_WORD_YOU}, .monSets = gBattleFrontierTrainerMons_Tylor }, - [157] = { + [FRONTIER_TRAINER_JAREN] = { .facilityClass = FACILITY_CLASS_POKEFAN_F, .trainerName = _("JAREN"), .speechBefore = {EC_WORD_FIGHTING, EC_WORD_SPIRIT, EC_WORD_QUES, EC_WORD_ME, EC_WORD_QUES, 0xFFFF}, @@ -1264,7 +1264,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_YOUR, EC_WORD_POKEMON, EC_WORD_LOOK, EC_WORD_QUITE, EC_WORD_CUTE, 0xFFFF}, .monSets = gBattleFrontierTrainerMons_Jaren }, - [158] = { + [FRONTIER_TRAINER_CORDELL] = { .facilityClass = FACILITY_CLASS_PKMN_BREEDER_M, .trainerName = _("CORDELL"), .speechBefore = {EC_WORD_A, EC_WORD_BATTLE, EC_WORD_IS, EC_WORD_DECIDED, EC_WORD_ON, EC_WORD_SPIRIT}, @@ -1272,7 +1272,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I, EC_WORD_WILL, EC_WORD_BE, EC_WORD_ON, EC_WORD_MY, EC_WORD_WAY}, .monSets = gBattleFrontierTrainerMons_Cordell }, - [159] = { + [FRONTIER_TRAINER_JAZLYN] = { .facilityClass = FACILITY_CLASS_PKMN_BREEDER_F, .trainerName = _("JAZLYN"), .speechBefore = {EC_WORD_IS, EC_WORD_YOUR, EC_WORD_POKEDEX, EC_WORD_REALLY, EC_WORD_AWESOME, EC_WORD_QUES}, @@ -1280,7 +1280,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_AN, EC_WORD_AVANT_GARDE, EC_WORD_POKEDEX, EC_WORD_WOULD, EC_WORD_BE, EC_WORD_AWESOME}, .monSets = gBattleFrontierTrainerMons_Jazlyn }, - [160] = { + [FRONTIER_TRAINER_ZACHERY] = { .facilityClass = FACILITY_CLASS_YOUNGSTER, .trainerName = _("ZACHERY"), .speechBefore = {EC_WORD_I, EC_WORD_HAVE, EC_WORD_MY, EC_WORD_OWN, EC_WORD_PLACE, EC_WORD_YEEHAW_EXCL}, @@ -1288,7 +1288,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_YOU, EC_WORD_CAN_T, EC_WORD_FLATTEN, EC_WORD_MY, EC_WORD_HAPPINESS, EC_WORD_EXCL}, .monSets = gBattleFrontierTrainerMons_Zachery }, - [161] = { + [FRONTIER_TRAINER_JOHAN] = { .facilityClass = FACILITY_CLASS_YOUNGSTER, .trainerName = _("JOHAN"), .speechBefore = {EC_WORD_WINTER, EC_WORD_WILL, EC_WORD_SOON, EC_WORD_BE, EC_WORD_HERE, 0xFFFF}, @@ -1296,7 +1296,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I, EC_WORD_ALWAYS, EC_WORD_USE, EC_WORD_MY, EC_WORD_ALLOWANCE, EC_WORD_UP}, .monSets = gBattleFrontierTrainerMons_Johan }, - [162] = { + [FRONTIER_TRAINER_SHEA] = { .facilityClass = FACILITY_CLASS_LASS, .trainerName = _("SHEA"), .speechBefore = {EC_WORD_DO, EC_WORD_YOU, EC_WORD_BATTLE, EC_WORD_WITH, EC_WORD_BEAUTY, EC_WORD_QUES}, @@ -1304,7 +1304,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_WHAT, EC_WORD_IS, EC_WORD_BEAUTY, EC_WORD_TO, EC_WORD_YOU, EC_WORD_QUES}, .monSets = gBattleFrontierTrainerMons_Shea }, - [163] = { + [FRONTIER_TRAINER_KAILA] = { .facilityClass = FACILITY_CLASS_LASS, .trainerName = _("KAILA"), .speechBefore = {EC_WORD_I_AM, EC_WORD_FEELING, EC_WORD_THIRSTY, EC_WORD_RIGHT, EC_WORD_NOW, EC_WORD_ELLIPSIS}, @@ -1312,7 +1312,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_THAT, EC_WORD_LOSS, EC_WORD_IS, EC_WORD_HARD, EC_WORD_TO, EC_MOVE2(SWALLOW)}, .monSets = gBattleFrontierTrainerMons_Kaila }, - [164] = { + [FRONTIER_TRAINER_ISIAH] = { .facilityClass = FACILITY_CLASS_SCHOOL_KID_M, .trainerName = _("ISIAH"), .speechBefore = {EC_WORD_I, EC_WORD_PRETEND, EC_WORD_TO, EC_WORD_STUDY, EC_WORD_A_LOT, 0xFFFF}, @@ -1320,7 +1320,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I, EC_WORD_DON_T, EC_WORD_WANT, EC_WORD_TO, EC_WORD_STUDY, EC_WORD_MORE}, .monSets = gBattleFrontierTrainerMons_Isiah }, - [165] = { + [FRONTIER_TRAINER_GARRETT] = { .facilityClass = FACILITY_CLASS_SCHOOL_KID_M, .trainerName = _("GARRETT"), .speechBefore = {EC_WORD_I, EC_WORD_ENJOY, EC_WORD_COMICS, EC_WORD_AND, EC_WORD_THIS, EC_WORD_GAME}, @@ -1328,7 +1328,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_BUT, EC_WORD_I, EC_WORD_HAVE, EC_WORD_TO, EC_WORD_STUDY, EC_WORD_MORE}, .monSets = gBattleFrontierTrainerMons_Garrett }, - [166] = { + [FRONTIER_TRAINER_HAYLIE] = { .facilityClass = FACILITY_CLASS_SCHOOL_KID_F, .trainerName = _("HAYLIE"), .speechBefore = {EC_WORD_I, EC_WORD_WORRY, EC_WORD_TOO, EC_WORD_MUCH, EC_WORD_TO, EC_WORD_SLEEP}, @@ -1336,7 +1336,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_MY, EC_WORD_INSOMNIA, EC_WORD_WILL, EC_WORD_GET, EC_WORD_BAD, EC_WORD_ELLIPSIS}, .monSets = gBattleFrontierTrainerMons_Haylie }, - [167] = { + [FRONTIER_TRAINER_MEGAN] = { .facilityClass = FACILITY_CLASS_SCHOOL_KID_F, .trainerName = _("MEGAN"), .speechBefore = {EC_WORD_I, EC_WORD_BELIEVE, EC_WORD_IN, EC_WORD_AN, EC_MOVE(AROMATHERAPY), EC_WORD_BATH}, @@ -1344,7 +1344,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_IF, EC_WORD_ONLY, EC_MOVE(AROMATHERAPY), EC_WORD_WERE, EC_WORD_LESS, EC_WORD_EXPENSIVE}, .monSets = gBattleFrontierTrainerMons_Megan }, - [168] = { + [FRONTIER_TRAINER_ISSAC] = { .facilityClass = FACILITY_CLASS_RICH_BOY, .trainerName = _("ISSAC"), .speechBefore = {EC_WORD_MY, EC_WORD_HOBBY, EC_WORD_QUES, 0xFFFF, 0xFFFF, 0xFFFF}, @@ -1352,7 +1352,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I, EC_WORD_DISLIKE, EC_WORD_ANY, EC_WORD_KIND, EC_WORD_OF, EC_MOVE2(MUD_SPORT)}, .monSets = gBattleFrontierTrainerMons_Issac }, - [169] = { + [FRONTIER_TRAINER_QUINTON] = { .facilityClass = FACILITY_CLASS_RICH_BOY, .trainerName = _("QUINTON"), .speechBefore = {EC_WORD_I_AM, EC_WORD_SAD, EC_WORD_CAUSE, EC_WORD_I_AM, EC_WORD_TOO_WEAK, 0xFFFF}, @@ -1360,7 +1360,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_HEY, EC_WORD_WHAT, EC_WORD_DID, EC_WORD_I, EC_WORD_DO, EC_WORD_QUES}, .monSets = gBattleFrontierTrainerMons_Quinton }, - [170] = { + [FRONTIER_TRAINER_SALMA] = { .facilityClass = FACILITY_CLASS_LADY, .trainerName = _("SALMA"), .speechBefore = {EC_WORD_YOU_VE, EC_WORD_GOT, EC_WORD_YOUR, EC_WORD_HUSTLE, EC_WORD_ON, EC_WORD_EXCL}, @@ -1368,7 +1368,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I, EC_WORD_DON_T, EC_WORD_GET, EC_WORD_HOW, EC_WORD_I, EC_WORD_LOST}, .monSets = gBattleFrontierTrainerMons_Salma }, - [171] = { + [FRONTIER_TRAINER_ANSLEY] = { .facilityClass = FACILITY_CLASS_LADY, .trainerName = _("ANSLEY"), .speechBefore = {EC_WORD_I_AM, EC_WORD_BORED, EC_WORD_ELLIPSIS, EC_WORD_DANCE, EC_WORD_FOR, EC_WORD_ME}, @@ -1376,7 +1376,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_TAKE, EC_WORD_YOUR, EC_MOVE2(FRUSTRATION), EC_WORD_SOME, EC_WORD_OTHER, EC_WORD_PLACE}, .monSets = gBattleFrontierTrainerMons_Ansley }, - [172] = { + [FRONTIER_TRAINER_HOLDEN] = { .facilityClass = FACILITY_CLASS_BUG_CATCHER, .trainerName = _("HOLDEN"), .speechBefore = {EC_WORD_LET_S, EC_WORD_COMMEMORATE, EC_WORD_MY, EC_WORD_COOLNESS, EC_WORD_IN, EC_WORD_BATTLE}, @@ -1384,7 +1384,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_YOUR, EC_WORD_BATTLE, EC_WORD_SENSE, EC_WORD_IS, EC_WORD_AMUSING, 0xFFFF}, .monSets = gBattleFrontierTrainerMons_Holden }, - [173] = { + [FRONTIER_TRAINER_LUCA] = { .facilityClass = FACILITY_CLASS_BUG_CATCHER, .trainerName = _("LUCA"), .speechBefore = {EC_WORD_WE, EC_WORD_WILL, EC_WORD_HAVE, EC_WORD_A, EC_WORD_COOL, EC_WORD_BATTLE}, @@ -1392,7 +1392,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_HELLO, EC_WORD_QUES, EC_WORD_I_AM, EC_WORD_JUST, EC_WORD_A, EC_WORD_KID}, .monSets = gBattleFrontierTrainerMons_Luca }, - [174] = { + [FRONTIER_TRAINER_JAMISON] = { .facilityClass = FACILITY_CLASS_NINJA_BOY, .trainerName = _("JAMISON"), .speechBefore = {EC_WORD_MY, EC_MOVE2(SECRET_POWER), EC_WORD_IS, EC_WORD_OVERWHELMING, EC_WORD_TO, EC_WORD_POKEMON}, @@ -1400,7 +1400,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I, EC_WORD_WILL, EC_WORD_USE, EC_MOVE(SMOKESCREEN), EC_WORD_TO, EC_WORD_ESCAPE}, .monSets = gBattleFrontierTrainerMons_Jamison }, - [175] = { + [FRONTIER_TRAINER_GUNNAR] = { .facilityClass = FACILITY_CLASS_NINJA_BOY, .trainerName = _("GUNNAR"), .speechBefore = {EC_WORD_I, EC_MOVE(CUT), EC_WORD_DOWN, EC_WORD_EVERY, EC_WORD_OPPONENT, 0xFFFF}, @@ -1408,7 +1408,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_PLEASE, EC_WORD_LOSE, EC_WORD_THAT, EC_MOVE(SCARY_FACE), EC_WORD_OF, EC_WORD_YOURS}, .monSets = gBattleFrontierTrainerMons_Gunnar }, - [176] = { + [FRONTIER_TRAINER_CRAIG] = { .facilityClass = FACILITY_CLASS_TUBER_M, .trainerName = _("CRAIG"), .speechBefore = {EC_WORD_I, EC_WORD_CAN_T, EC_WORD_WAIT, EC_WORD_FOR, EC_WORD_MY, EC_WORD_TRAIN}, @@ -1416,7 +1416,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_HERE_IT_IS, EC_WORD_MY, EC_WORD_TRAIN, EC_WORD_SEE_YA, EC_WORD_EXCL, 0xFFFF}, .monSets = gBattleFrontierTrainerMons_Craig }, - [177] = { + [FRONTIER_TRAINER_PIERCE] = { .facilityClass = FACILITY_CLASS_TUBER_M, .trainerName = _("PIERCE"), .speechBefore = {EC_WORD_THERE, EC_WORD_WAS, EC_WORD_A, EC_MOVE2(HEAT_WAVE), EC_WORD_LAST, EC_WORD_WEEK}, @@ -1424,7 +1424,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_DIDN_T, EC_WORD_IT, EC_MOVE(HAIL), EC_WORD_TOO, EC_WORD_QUES, 0xFFFF}, .monSets = gBattleFrontierTrainerMons_Pierce }, - [178] = { + [FRONTIER_TRAINER_REGINA] = { .facilityClass = FACILITY_CLASS_TUBER_F, .trainerName = _("REGINA"), .speechBefore = {EC_WORD_I, EC_WORD_LIKE, EC_WORD_TO, EC_WORD_PLAY, EC_WORD_IN, EC_WORD_WATER}, @@ -1432,7 +1432,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_YOU_RE, EC_WORD_NOT, EC_WORD_MUCH, EC_WORD_GOOD, EC_WORD_IN, EC_WORD_WATER}, .monSets = gBattleFrontierTrainerMons_Regina }, - [179] = { + [FRONTIER_TRAINER_ALISON] = { .facilityClass = FACILITY_CLASS_TUBER_F, .trainerName = _("ALISON"), .speechBefore = {EC_WORD_THIS, EC_WORD_KINDERGARTEN, EC_WORD_MAGAZINE, EC_WORD_IS, EC_WORD_TOO, EC_WORD_MUCH}, @@ -1440,7 +1440,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_ENJOY, EC_WORD_A, EC_WORD_TASTY, EC_WORD_SCHOOL, EC_WORD_DIET, EC_WORD_QUES}, .monSets = gBattleFrontierTrainerMons_Alison }, - [180] = { + [FRONTIER_TRAINER_HANK] = { .facilityClass = FACILITY_CLASS_BUG_MANIAC, .trainerName = _("HANK"), .speechBefore = {EC_WORD_THERE, EC_WORD_IS, EC_WORD_A, EC_WORD_BUG, EC_WORD_EVENT, EC_WORD_SOON}, @@ -1448,7 +1448,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_DON_T, EC_WORD_YOU, EC_WORD_LIKE, EC_WORD_BUG, EC_WORD_POKEMON, EC_WORD_QUES}, .monSets = gBattleFrontierTrainerMons_Hank }, - [181] = { + [FRONTIER_TRAINER_EARL] = { .facilityClass = FACILITY_CLASS_BUG_MANIAC, .trainerName = _("EARL"), .speechBefore = {EC_WORD_THE, EC_WORD_INVINCIBLE, EC_WORD_BUG, EC_WORD_TRAINER, EC_WORD_IS, EC_WORD_HERE}, @@ -1456,7 +1456,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_SEE, EC_WORD_HOW, EC_WORD_FAST, EC_WORD_I, EC_WORD_RUN_AWAY, EC_WORD_EXCL}, .monSets = gBattleFrontierTrainerMons_Earl }, - [182] = { + [FRONTIER_TRAINER_RAMIRO] = { .facilityClass = FACILITY_CLASS_FISHERMAN, .trainerName = _("RAMIRO"), .speechBefore = {EC_WORD_I, EC_WORD_WENT, EC_WORD_TO, EC_WORD_A, EC_WORD_FISHING, EC_WORD_SCHOOL}, @@ -1464,7 +1464,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I, EC_WORD_WANT, EC_WORD_TO, EC_WORD_GO, EC_WORD_BACK, EC_WORD_ELLIPSIS}, .monSets = gBattleFrontierTrainerMons_Ramiro }, - [183] = { + [FRONTIER_TRAINER_HUNTER] = { .facilityClass = FACILITY_CLASS_FISHERMAN, .trainerName = _("HUNTER"), .speechBefore = {EC_WORD_SHOW, EC_WORD_ME, EC_WORD_A, EC_WORD_TOTALLY, EC_WORD_COOL, EC_MOVE(CROSS_CHOP)}, @@ -1472,7 +1472,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_WAS, EC_WORD_IT, EC_WORD_A, EC_WORD_MISTAKE, EC_WORD_QUES, 0xFFFF}, .monSets = gBattleFrontierTrainerMons_Hunter }, - [184] = { + [FRONTIER_TRAINER_AIDEN] = { .facilityClass = FACILITY_CLASS_RUIN_MANIAC, .trainerName = _("AIDEN"), .speechBefore = {EC_WORD_MY, EC_WORD_WORK, EC_WORD_IS, EC_WORD_MAKING, EC_WORD_ME, EC_WORD_HEALTHY}, @@ -1480,7 +1480,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_YOU_RE, EC_WORD_MORE, EC_WORD_HEALTHY, EC_WORD_THAN, EC_WORD_I_AM, EC_WORD_ELLIPSIS}, .monSets = gBattleFrontierTrainerMons_Aiden }, - [185] = { + [FRONTIER_TRAINER_XAVIER] = { .facilityClass = FACILITY_CLASS_RUIN_MANIAC, .trainerName = _("XAVIER"), .speechBefore = {EC_WORD_HEY_THERE, EC_WORD_EXCL, 0xFFFF, EC_WORD_LOOK, EC_WORD_LOOK, EC_WORD_EXCL_EXCL}, @@ -1488,7 +1488,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_WOWEE, EC_WORD_EXCL, 0xFFFF, EC_WORD_NO, EC_WORD_NO, EC_WORD_EXCL_EXCL}, .monSets = gBattleFrontierTrainerMons_Xavier }, - [186] = { + [FRONTIER_TRAINER_CLINTON] = { .facilityClass = FACILITY_CLASS_COLLECTOR, .trainerName = _("CLINTON"), .speechBefore = {EC_WORD_WANT, EC_WORD_TO, EC_WORD_SEE, EC_WORD_MY, EC_MOVE(HYPNOSIS), EC_WORD_QUES}, @@ -1496,7 +1496,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_TCH, EC_WORD_ELLIPSIS, 0xFFFF, EC_WORD_I_AM, EC_WORD_TOO_WEAK, EC_WORD_ELLIPSIS}, .monSets = gBattleFrontierTrainerMons_Clinton }, - [187] = { + [FRONTIER_TRAINER_JESSE] = { .facilityClass = FACILITY_CLASS_COLLECTOR, .trainerName = _("JESSE"), .speechBefore = {EC_WORD_THIS, EC_WORD_BATTLE, EC_WORD_IS, EC_WORD_FOR, EC_WORD_MY, EC_WORD_MOTHER}, @@ -1504,7 +1504,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I, EC_WORD_WANT, EC_WORD_MY, EC_WORD_MOTHER, EC_WORD_EXCL, 0xFFFF}, .monSets = gBattleFrontierTrainerMons_Jesse }, - [188] = { + [FRONTIER_TRAINER_EDUARDO] = { .facilityClass = FACILITY_CLASS_GUITARIST, .trainerName = _("EDUARDO"), .speechBefore = {EC_WORD_OUR, EC_WORD_MUSIC, EC_WORD_WILL, EC_WORD_PLAY, EC_WORD_ALL, EC_WORD_NIGHT}, @@ -1512,7 +1512,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_LET_S, EC_WORD_PARTY, EC_WORD_UNTIL, EC_WORD_THE, EC_MOVE(MORNING_SUN), EC_WORD_EXCL}, .monSets = gBattleFrontierTrainerMons_Eduardo }, - [189] = { + [FRONTIER_TRAINER_HAL] = { .facilityClass = FACILITY_CLASS_GUITARIST, .trainerName = _("HAL"), .speechBefore = {EC_WORD_I_AM, EC_WORD_TRENDY, EC_WORD_AREN_T, EC_WORD_I, EC_WORD_QUES, 0xFFFF}, @@ -1520,7 +1520,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I_AM, EC_WORD_ALWAYS, EC_WORD_TRENDY, EC_WORD_THANK_YOU, EC_WORD_VERY, EC_WORD_MUCH}, .monSets = gBattleFrontierTrainerMons_Hal }, - [190] = { + [FRONTIER_TRAINER_GAGE] = { .facilityClass = FACILITY_CLASS_BIRD_KEEPER, .trainerName = _("GAGE"), .speechBefore = {EC_WORD_HERE_IT_IS, EC_WORD_A, EC_WORD_FLYING, EC_WORD_TYPE, EC_WORD_HIDDEN, EC_WORD_MOVE}, @@ -1528,7 +1528,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_IF_I_LOSE, EC_WORD_I, EC_WORD_JUST, EC_MOVE(FLY), EC_WORD_AWAY, 0xFFFF}, .monSets = gBattleFrontierTrainerMons_Gage }, - [191] = { + [FRONTIER_TRAINER_ARNOLD] = { .facilityClass = FACILITY_CLASS_BIRD_KEEPER, .trainerName = _("ARNOLD"), .speechBefore = {EC_WORD_I_AM, EC_WORD_FEELING, EC_WORD_WEIRD, EC_WORD_FROM, EC_WORD_A, EC_WORD_DREAM}, @@ -1536,7 +1536,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_MY, EC_WORD_INCREDIBLE, EC_WORD_DREAM, EC_WORD_WAS, EC_WORD_SO, EC_WORD_WEIRD}, .monSets = gBattleFrontierTrainerMons_Arnold }, - [192] = { + [FRONTIER_TRAINER_JARRETT] = { .facilityClass = FACILITY_CLASS_SAILOR, .trainerName = _("JARRETT"), .speechBefore = {EC_WORD_COME_ON, EC_WORD_LET_S, EC_WORD_DANCE, EC_WORD_LIKE, EC_WORD_IT_S, EC_WORD_YESTERDAY}, @@ -1544,7 +1544,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_YOU, EC_WORD_DON_T, EC_WORD_APPRECIATE, EC_WORD_HOW, EC_WORD_I, EC_WORD_DANCE}, .monSets = gBattleFrontierTrainerMons_Jarrett }, - [193] = { + [FRONTIER_TRAINER_GARETT] = { .facilityClass = FACILITY_CLASS_SAILOR, .trainerName = _("GARETT"), .speechBefore = {EC_WORD_MY, EC_WORD_GIRL, EC_WORD_GIVES, EC_WORD_ME, EC_WORD_A_LITTLE, EC_MOVE2(SWEET_KISS)}, @@ -1552,7 +1552,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_A, EC_WORD_TREASURE, EC_WORD_ISN_T, EC_WORD_ALWAYS, EC_WORD_ABOUT, EC_WORD_MONEY}, .monSets = gBattleFrontierTrainerMons_Garett }, - [194] = { + [FRONTIER_TRAINER_EMANUEL] = { .facilityClass = FACILITY_CLASS_HIKER, .trainerName = _("EMANUEL"), .speechBefore = {EC_WORD_SMARTNESS, EC_WORD_ALONE, EC_WORD_WON_T, EC_WORD_MAKE, EC_WORD_YOU, EC_WORD_WIN}, @@ -1560,7 +1560,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_HOW, EC_WORD_DID, EC_WORD_YOU, EC_MOVE2(FAKE_OUT), EC_WORD_ME, EC_WORD_QUES}, .monSets = gBattleFrontierTrainerMons_Emanuel }, - [195] = { + [FRONTIER_TRAINER_GUSTAVO] = { .facilityClass = FACILITY_CLASS_HIKER, .trainerName = _("GUSTAVO"), .speechBefore = {EC_MOVE(CHARGE), EC_WORD_EXCL, 0xFFFF, EC_MOVE(CHARGE), EC_WORD_EXCL_EXCL, 0xFFFF}, @@ -1568,7 +1568,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_YOU, EC_WORD_CAN_T, EC_WORD_MAKE, EC_WORD_ME, EC_WORD_SURRENDER, EC_WORD_YET}, .monSets = gBattleFrontierTrainerMons_Gustavo }, - [196] = { + [FRONTIER_TRAINER_KAMERON] = { .facilityClass = FACILITY_CLASS_KINDLER, .trainerName = _("KAMERON"), .speechBefore = {EC_WORD_TAKE_THAT, EC_WORD_EXCL, EC_WORD_IT_S, EC_WORD_MY, EC_WORD_FIERY, EC_MOVE2(TRICK)}, @@ -1576,7 +1576,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_YOU, EC_WORD_DIDN_T, EC_WORD_FALL, EC_WORD_FOR, EC_WORD_MY, EC_MOVE2(TRICK)}, .monSets = gBattleFrontierTrainerMons_Kameron }, - [197] = { + [FRONTIER_TRAINER_ALFREDO] = { .facilityClass = FACILITY_CLASS_KINDLER, .trainerName = _("ALFREDO"), .speechBefore = {EC_WORD_A, EC_WORD_FIERY, EC_WORD_GOURMET, EC_WORD_AM, EC_WORD_I, EC_WORD_EXCL}, @@ -1584,7 +1584,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_WHAT, EC_WORD_A, EC_WORD_DISASTER, EC_WORD_THAT_WAS, EC_WORD_EXCL, 0xFFFF}, .monSets = gBattleFrontierTrainerMons_Alfredo }, - [198] = { + [FRONTIER_TRAINER_RUBEN] = { .facilityClass = FACILITY_CLASS_GENTLEMAN, .trainerName = _("RUBEN"), .speechBefore = {EC_WORD_I, EC_WORD_CAN_T, EC_WORD_WAIT, EC_WORD_TO, EC_WORD_GET, EC_WORD_GOING}, @@ -1592,7 +1592,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I_VE, EC_WORD_GOT, EC_WORD_TO, EC_WORD_GET, EC_WORD_GOING, 0xFFFF}, .monSets = gBattleFrontierTrainerMons_Ruben }, - [199] = { + [FRONTIER_TRAINER_LAMAR] = { .facilityClass = FACILITY_CLASS_GENTLEMAN, .trainerName = _("LAMAR"), .speechBefore = {EC_WORD_A, EC_MOVE2(PRESENT), EC_WORD_FOR, EC_WORD_ME, EC_WORD_QUES, 0xFFFF}, @@ -1600,7 +1600,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_OH, EC_WORD_IT_S, EC_WORD_A, EC_WORD_GAME, EC_WORD_IS_IT_QUES, 0xFFFF}, .monSets = gBattleFrontierTrainerMons_Lamar }, - [200] = { + [FRONTIER_TRAINER_JAXON] = { .facilityClass = FACILITY_CLASS_YOUNGSTER, .trainerName = _("JAXON"), .speechBefore = {EC_WORD_A, EC_WORD_SHELL_ARMOR, EC_WORD_IS, EC_WORD_WHAT, EC_WORD_I, EC_WORD_WANT}, @@ -1608,7 +1608,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_PLEASE, EC_WORD_I, EC_WORD_NEED, EC_WORD_A, EC_WORD_SHELL_ARMOR, EC_WORD_EXCL}, .monSets = gBattleFrontierTrainerMons_Jaxon }, - [201] = { + [FRONTIER_TRAINER_LOGAN] = { .facilityClass = FACILITY_CLASS_YOUNGSTER, .trainerName = _("LOGAN"), .speechBefore = {EC_WORD_IF_I_LOSE, EC_WORD_I, EC_WORD_WILL, EC_WORD_STUDY, EC_WORD_FOR, EC_WORD_SCHOOL}, @@ -1616,7 +1616,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_NO, EC_WORD_THANKS, EC_WORD_I_AM, EC_WORD_GOING, EC_WORD_TO, EC_WORD_SLEEP}, .monSets = gBattleFrontierTrainerMons_Logan }, - [202] = { + [FRONTIER_TRAINER_EMILEE] = { .facilityClass = FACILITY_CLASS_LASS, .trainerName = _("EMILEE"), .speechBefore = {EC_WORD_IS, EC_WORD_THIS, EC_WORD_KIND, EC_WORD_OF, EC_WORD_BATTLE, EC_WORD_OK_QUES}, @@ -1624,7 +1624,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_HOW, EC_WORD_ABOUT, EC_WORD_A, EC_MOVE(ROCK_SLIDE), EC_WORD_SHOW, EC_WORD_QUES}, .monSets = gBattleFrontierTrainerMons_Emilee }, - [203] = { + [FRONTIER_TRAINER_JOSIE] = { .facilityClass = FACILITY_CLASS_LASS, .trainerName = _("JOSIE"), .speechBefore = {EC_WORD_A, EC_WORD_POKEMON, EC_WORD_FASHION, EC_WORD_CONTEST, EC_WORD_IS, EC_WORD_PRETTY}, @@ -1632,7 +1632,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_YOU_RE, EC_WORD_TOTALLY, EC_WORD_LACKING, EC_WORD_IN, EC_WORD_FASHION, EC_WORD_SENSE}, .monSets = gBattleFrontierTrainerMons_Josie }, - [204] = { + [FRONTIER_TRAINER_ARMANDO] = { .facilityClass = FACILITY_CLASS_CAMPER, .trainerName = _("ARMANDO"), .speechBefore = {EC_WORD_I, EC_WORD_NEED, EC_WORD_MORE, EC_WORD_GRASS, EC_WORD_TYPE, EC_WORD_POKEMON}, @@ -1640,7 +1640,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_THERE, EC_WORD_AREN_T, EC_WORD_ENOUGH, EC_WORD_GRASS, EC_WORD_TYPE, EC_WORD_POKEMON}, .monSets = gBattleFrontierTrainerMons_Armando }, - [205] = { + [FRONTIER_TRAINER_SKYLER] = { .facilityClass = FACILITY_CLASS_CAMPER, .trainerName = _("SKYLER"), .speechBefore = {EC_MOVE2(INGRAIN), EC_WORD_IS, EC_WORD_MY, EC_WORD_CHOICE, EC_WORD_BATTLE, EC_WORD_MOVE}, @@ -1648,7 +1648,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_YOU, EC_MOVE(CUT), EC_WORD_ME, EC_WORD_DOWN, EC_WORD_ELLIPSIS, 0xFFFF}, .monSets = gBattleFrontierTrainerMons_Skyler }, - [206] = { + [FRONTIER_TRAINER_RUTH] = { .facilityClass = FACILITY_CLASS_PICNICKER, .trainerName = _("RUTH"), .speechBefore = {EC_WORD_I, EC_WORD_WANT, EC_WORD_TO, EC_WORD_ENJOY, EC_WORD_THIS, EC_WORD_BATTLE}, @@ -1656,7 +1656,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_PLEASE, EC_WORD_STOP, EC_WORD_I, EC_WORD_DON_T, EC_WORD_ENJOY, EC_WORD_THIS}, .monSets = gBattleFrontierTrainerMons_Ruth }, - [207] = { + [FRONTIER_TRAINER_MELODY] = { .facilityClass = FACILITY_CLASS_PICNICKER, .trainerName = _("MELODY"), .speechBefore = {EC_WORD_I, EC_MOVE2(WISH), EC_WORD_SUNDAY, EC_WORD_IS, EC_WORD_A, EC_MOVE2(SUNNY_DAY)}, @@ -1664,7 +1664,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_THE, EC_WORD_FORECAST, EC_WORD_SAYS, EC_WORD_IT, EC_WORD_WILL, EC_MOVE(HAIL)}, .monSets = gBattleFrontierTrainerMons_Melody }, - [208] = { + [FRONTIER_TRAINER_PEDRO] = { .facilityClass = FACILITY_CLASS_SWIMMER_M, .trainerName = _("PEDRO"), .speechBefore = {EC_WORD_A, EC_WORD_SWIFT_SWIM, EC_WORD_WILL, EC_WORD_DO, EC_WORD_YOU, EC_WORD_GOOD}, @@ -1672,7 +1672,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_UH_OH, EC_WORD_EXCL, 0xFFFF, EC_WORD_A, EC_MOVE(WHIRLPOOL), EC_WORD_EXCL}, .monSets = gBattleFrontierTrainerMons_Pedro }, - [209] = { + [FRONTIER_TRAINER_ERICK] = { .facilityClass = FACILITY_CLASS_SWIMMER_M, .trainerName = _("ERICK"), .speechBefore = {EC_WORD_I, EC_WORD_WILL, EC_MOVE2(TACKLE), EC_WORD_YOU, EC_WORD_DOWN, EC_WORD_EXCL}, @@ -1680,7 +1680,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I, EC_WORD_DIDN_T, EC_WORD_THINK, EC_WORD_YOU, EC_WORD_WOULD, EC_MOVE(COUNTER)}, .monSets = gBattleFrontierTrainerMons_Erick }, - [210] = { + [FRONTIER_TRAINER_ELAINE] = { .facilityClass = FACILITY_CLASS_SWIMMER_F, .trainerName = _("ELAINE"), .speechBefore = {EC_WORD_MY, EC_WORD_HEROINE, EC_WORD_ADVENTURE, EC_WORD_ISN_T, EC_WORD_GOING, EC_WORD_WELL}, @@ -1688,7 +1688,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I, EC_WORD_KNOW, EC_WORD_I_AM, EC_WORD_NOT, EC_WORD_A, EC_WORD_HEROINE}, .monSets = gBattleFrontierTrainerMons_Elaine }, - [211] = { + [FRONTIER_TRAINER_JOYCE] = { .facilityClass = FACILITY_CLASS_SWIMMER_F, .trainerName = _("JOYCE"), .speechBefore = {EC_WORD_YOU, EC_WORD_MAKE, EC_WORD_ME, EC_WORD_GO, EC_WORD_AHAHA, EC_WORD_EXCL}, @@ -1696,7 +1696,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_LALALA, EC_WORD_ELLIPSIS, 0xFFFF, EC_WORD_HUH_QUES, 0xFFFF, 0xFFFF}, .monSets = gBattleFrontierTrainerMons_Joyce }, - [212] = { + [FRONTIER_TRAINER_TODD] = { .facilityClass = FACILITY_CLASS_POKEFAN_M, .trainerName = _("TODD"), .speechBefore = {EC_WORD_YOU_RE, EC_WORD_A, EC_WORD_LIGHTNINGROD, EC_WORD_FOR, EC_WORD_MY, EC_WORD_POWER}, @@ -1704,7 +1704,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_YOU, EC_MOVE2(REFLECT), EC_WORD_MY, EC_WORD_POWER, EC_WORD_BACK, EC_WORD_QUES}, .monSets = gBattleFrontierTrainerMons_Todd }, - [213] = { + [FRONTIER_TRAINER_GAVIN] = { .facilityClass = FACILITY_CLASS_POKEFAN_M, .trainerName = _("GAVIN"), .speechBefore = {EC_WORD_I, EC_WORD_WILL, EC_MOVE(BIDE), EC_WORD_MY, EC_WORD_TIME, 0xFFFF}, @@ -1712,7 +1712,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_MY, EC_WORD_MISTAKE, EC_WORD_WAS, EC_WORD_TOO, EC_WORD_EXPENSIVE, EC_WORD_ELLIPSIS}, .monSets = gBattleFrontierTrainerMons_Gavin }, - [214] = { + [FRONTIER_TRAINER_MALORY] = { .facilityClass = FACILITY_CLASS_POKEFAN_F, .trainerName = _("MALORY"), .speechBefore = {EC_WORD_PROMISE, EC_WORD_TO, EC_WORD_SHOW, EC_WORD_ME, EC_WORD_CUTE, EC_WORD_POKEMON}, @@ -1720,7 +1720,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_TCH, EC_WORD_YOUR, EC_WORD_POKEMON, EC_WORD_AREN_T, EC_WORD_VERY, EC_WORD_NICE}, .monSets = gBattleFrontierTrainerMons_Malory }, - [215] = { + [FRONTIER_TRAINER_ESTHER] = { .facilityClass = FACILITY_CLASS_POKEFAN_F, .trainerName = _("ESTHER"), .speechBefore = {EC_WORD_I, EC_WORD_WANT, EC_WORD_A, EC_WORD_NICE, EC_MOVE2(PRESENT), EC_WORD_ELLIPSIS}, @@ -1728,7 +1728,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_MESSAGE, EC_WORD_CARDS, EC_WORD_MAKE, EC_WORD_A, EC_WORD_WEAK, EC_MOVE2(PRESENT)}, .monSets = gBattleFrontierTrainerMons_Esther }, - [216] = { + [FRONTIER_TRAINER_OSCAR] = { .facilityClass = FACILITY_CLASS_PKMN_BREEDER_M, .trainerName = _("OSCAR"), .speechBefore = {EC_WORD_LET_S, EC_WORD_SEE, EC_WORD_YOUR, EC_WORD_POWER, EC_WORD_IN, EC_WORD_FULL}, @@ -1736,7 +1736,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_NOT, EC_WORD_FUNNY, EC_WORD_ELLIPSIS, EC_WORD_YOU_RE, EC_WORD_TOO_STRONG, 0xFFFF}, .monSets = gBattleFrontierTrainerMons_Oscar }, - [217] = { + [FRONTIER_TRAINER_WILSON] = { .facilityClass = FACILITY_CLASS_PKMN_BREEDER_M, .trainerName = _("WILSON"), .speechBefore = {EC_WORD_WORK, EC_WORD_IS, EC_WORD_MAKING, EC_WORD_ME, EC_WORD_AN, EC_WORD_EARLY_BIRD}, @@ -1744,7 +1744,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_MOVE(ENDURE), EC_WORD_IS, EC_WORD_ALL, EC_WORD_I, EC_WORD_CAN, EC_WORD_DO}, .monSets = gBattleFrontierTrainerMons_Wilson }, - [218] = { + [FRONTIER_TRAINER_CLARE] = { .facilityClass = FACILITY_CLASS_PKMN_BREEDER_F, .trainerName = _("CLARE"), .speechBefore = {EC_WORD_YAY, EC_WORD_EXCL, EC_WORD_A, EC_WORD_TOUGH, EC_WORD_TRAINER, EC_WORD_EXCL}, @@ -1752,7 +1752,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_COOL, EC_WORD_EXCL, EC_WORD_A, EC_WORD_GENIUS, EC_WORD_TRAINER, EC_WORD_EXCL}, .monSets = gBattleFrontierTrainerMons_Clare }, - [219] = { + [FRONTIER_TRAINER_TESS] = { .facilityClass = FACILITY_CLASS_PKMN_BREEDER_F, .trainerName = _("TESS"), .speechBefore = {EC_WORD_WANT, EC_WORD_SOME, EC_POKEMON(GULPIN), EC_WORD_DESIGN, EC_WORD_SWEETS, EC_WORD_QUES}, @@ -1760,7 +1760,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_THEY_RE, EC_WORD_TASTY, EC_WORD_EXCL, EC_WORD_REFRESHING, EC_WORD_TOO, EC_WORD_EXCL}, .monSets = gBattleFrontierTrainerMons_Tess }, - [220] = { + [FRONTIER_TRAINER_LEON] = { .facilityClass = FACILITY_CLASS_COOLTRAINER_M, .trainerName = _("LEON"), .speechBefore = {EC_WORD_I_AM, EC_WORD_BETTER, EC_WORD_THAN, EC_WORD_ANY, EC_WORD_OTHER, EC_WORD_TRAINER}, @@ -1768,7 +1768,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_BACK, EC_WORD_HOME, EC_WORD_I, EC_WORD_WILL, EC_WORD_GO, EC_WORD_ELLIPSIS}, .monSets = gBattleFrontierTrainerMons_Leon }, - [221] = { + [FRONTIER_TRAINER_ALONZO] = { .facilityClass = FACILITY_CLASS_COOLTRAINER_M, .trainerName = _("ALONZO"), .speechBefore = {EC_WORD_I_VE, EC_WORD_NOT, EC_WORD_LOST, EC_WORD_ONCE, EC_WORD_YET, EC_WORD_EXCL}, @@ -1776,7 +1776,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I, EC_WORD_DON_T, EC_WORD_BELIEVE, EC_WORD_THIS, EC_WORD_ELLIPSIS, 0xFFFF}, .monSets = gBattleFrontierTrainerMons_Alonzo }, - [222] = { + [FRONTIER_TRAINER_VINCE] = { .facilityClass = FACILITY_CLASS_COOLTRAINER_M, .trainerName = _("VINCE"), .speechBefore = {EC_WORD_THE, EC_WORD_TOP, EC_WORD_TRAINER, EC_WORD_THAT_S, EC_WORD_ME, EC_WORD_EXCL}, @@ -1784,7 +1784,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I, EC_WORD_WILL, EC_WORD_APPEAL, EC_WORD_THIS, EC_MOVE(OUTRAGE), EC_WORD_EXCL}, .monSets = gBattleFrontierTrainerMons_Vince }, - [223] = { + [FRONTIER_TRAINER_BRYON] = { .facilityClass = FACILITY_CLASS_COOLTRAINER_M, .trainerName = _("BRYON"), .speechBefore = {EC_WORD_MY, EC_MOVE2(BARRAGE), EC_WORD_WILL, EC_MOVE2(SLAM), EC_WORD_YOU, EC_WORD_EXCL}, @@ -1792,7 +1792,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I, EC_WORD_JUST, EC_WORD_DON_T, EC_WORD_GET, EC_WORD_IT, EC_WORD_ELLIPSIS}, .monSets = gBattleFrontierTrainerMons_Bryon }, - [224] = { + [FRONTIER_TRAINER_AVA] = { .facilityClass = FACILITY_CLASS_COOLTRAINER_F, .trainerName = _("AVA"), .speechBefore = {EC_WORD_I_AM, EC_WORD_A, EC_WORD_TREASURE, EC_WORD_OF, EC_WORD_THIS, EC_WORD_WORLD}, @@ -1800,7 +1800,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_WHY, EC_WORD_ARE, EC_WORD_YOU, EC_WORD_SO, EC_WORD_TERRIBLE, EC_WORD_QUES}, .monSets = gBattleFrontierTrainerMons_Ava }, - [225] = { + [FRONTIER_TRAINER_MIRIAM] = { .facilityClass = FACILITY_CLASS_COOLTRAINER_F, .trainerName = _("MIRIAM"), .speechBefore = {EC_WORD_OH, EC_WORD_A, EC_WORD_TRAINER, EC_WORD_WITH, EC_WORD_A, EC_MOVE(SCARY_FACE)}, @@ -1808,7 +1808,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_AIYEEH, EC_WORD_EXCL, EC_WORD_YOU, EC_WORD_REALLY, EC_WORD_ARE, EC_WORD_SCARY}, .monSets = gBattleFrontierTrainerMons_Miriam }, - [226] = { + [FRONTIER_TRAINER_CARRIE] = { .facilityClass = FACILITY_CLASS_COOLTRAINER_F, .trainerName = _("CARRIE"), .speechBefore = {EC_WORD_I, EC_WORD_WILL, EC_WORD_SHOW, EC_WORD_YOU, EC_WORD_GUTSY, EC_WORD_EXCL}, @@ -1816,7 +1816,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_OH, EC_WORD_NO, EC_WORD_ELLIPSIS, EC_MOVE(SELF_DESTRUCT), EC_WORD_MODE, EC_WORD_EXCL}, .monSets = gBattleFrontierTrainerMons_Carrie }, - [227] = { + [FRONTIER_TRAINER_GILLIAN2] = { .facilityClass = FACILITY_CLASS_COOLTRAINER_F, .trainerName = _("GILLIAN"), .speechBefore = {EC_WORD_I, EC_WORD_SEEK, EC_WORD_A, EC_WORD_TRULY, EC_WORD_GREAT, EC_WORD_BATTLE}, @@ -1824,7 +1824,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_THAT_WAS, EC_WORD_A_LITTLE, EC_WORD_TOO, EC_WORD_MUCH, EC_WORD_TO, EC_WORD_TAKE}, .monSets = gBattleFrontierTrainerMons_Gillian2 }, - [228] = { + [FRONTIER_TRAINER_TYLER] = { .facilityClass = FACILITY_CLASS_PKMN_RANGER_M, .trainerName = _("TYLER"), .speechBefore = {EC_WORD_YO, EC_WORD_EXCL, 0xFFFF, EC_WORD_LET_S, EC_WORD_GO, EC_WORD_EXCL_EXCL}, @@ -1832,7 +1832,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_YO, EC_WORD_EXCL, 0xFFFF, EC_WORD_I, EC_WORD_LOST, EC_WORD_YO}, .monSets = gBattleFrontierTrainerMons_Tyler }, - [229] = { + [FRONTIER_TRAINER_CHAZ] = { .facilityClass = FACILITY_CLASS_PKMN_RANGER_M, .trainerName = _("CHAZ"), .speechBefore = {EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_HAVE, EC_WORD_TOO, EC_WORD_MUCH, EC_WORD_POWER}, @@ -1840,7 +1840,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .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 }, - [230] = { + [FRONTIER_TRAINER_NELSON] = { .facilityClass = FACILITY_CLASS_PKMN_RANGER_M, .trainerName = _("NELSON"), .speechBefore = {EC_WORD_WELL_THEN, EC_WORD_WILL, EC_WORD_THIS, EC_WORD_POKEMON, EC_WORD_WORK, EC_WORD_QUES}, @@ -1848,7 +1848,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_IT, EC_WORD_DIDN_T, EC_WORD_MATCH_UP, EC_WORD_WELL, EC_WORD_I, EC_WORD_THINK}, .monSets = gBattleFrontierTrainerMons_Nelson }, - [231] = { + [FRONTIER_TRAINER_SHANIA] = { .facilityClass = FACILITY_CLASS_PKMN_RANGER_F, .trainerName = _("SHANIA"), .speechBefore = {EC_WORD_ALL, EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_ABSOLUTELY, EC_WORD_ADORE, EC_WORD_ME}, @@ -1856,7 +1856,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_YOU_RE, EC_WORD_SO, EC_WORD_MEAN, EC_WORD_TO, EC_WORD_CUTE, EC_WORD_POKEMON}, .monSets = gBattleFrontierTrainerMons_Shania }, - [232] = { + [FRONTIER_TRAINER_STELLA] = { .facilityClass = FACILITY_CLASS_PKMN_RANGER_F, .trainerName = _("STELLA"), .speechBefore = {EC_WORD_I, EC_WORD_WANT, EC_WORD_TO, EC_WORD_SEE, EC_WORD_YOUR, EC_WORD_POKEMON}, @@ -1864,7 +1864,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_YOUR, EC_WORD_POKEMON, EC_WORD_ARE, EC_WORD_SOMETHING, EC_WORD_ELSE, EC_WORD_ALL_RIGHT}, .monSets = gBattleFrontierTrainerMons_Stella }, - [233] = { + [FRONTIER_TRAINER_DORINE] = { .facilityClass = FACILITY_CLASS_PKMN_RANGER_F, .trainerName = _("DORINE"), .speechBefore = {EC_WORD_I_AM, EC_WORD_YOUNG, EC_WORD_AND, EC_WORD_STRONG, EC_WORD_EXCL, 0xFFFF}, @@ -1872,7 +1872,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_THIS, EC_WORD_ISN_T, EC_WORD_WORKING, EC_WORD_OUT, EC_WORD_AT, EC_WORD_ALL}, .monSets = gBattleFrontierTrainerMons_Dorine }, - [234] = { + [FRONTIER_TRAINER_MADDOX] = { .facilityClass = FACILITY_CLASS_DRAGON_TAMER, .trainerName = _("MADDOX"), .speechBefore = {EC_WORD_DRAGON, EC_WORD_POKEMON, EC_WORD_ARE, EC_WORD_MY, EC_WORD_NO_1, EC_WORD_CHOICE}, @@ -1880,7 +1880,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_DRAGON, EC_WORD_POKEMON, EC_WORD_SHOULD, EC_WORD_NOT, EC_WORD_LOSE, EC_WORD_EXCL}, .monSets = gBattleFrontierTrainerMons_Maddox }, - [235] = { + [FRONTIER_TRAINER_DAVIN] = { .facilityClass = FACILITY_CLASS_DRAGON_TAMER, .trainerName = _("DAVIN"), .speechBefore = {EC_WORD_LET_S, EC_WORD_HEAR, EC_WORD_YOU, EC_MOVE2(ROAR), EC_WORD_EXCL, 0xFFFF}, @@ -1888,7 +1888,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_WROOOAAR_EXCL, 0xFFFF, 0xFFFF, EC_WORD_WHY, EC_WORD_QUES_EXCL, 0xFFFF}, .monSets = gBattleFrontierTrainerMons_Davin }, - [236] = { + [FRONTIER_TRAINER_TREVON] = { .facilityClass = FACILITY_CLASS_DRAGON_TAMER, .trainerName = _("TREVON"), .speechBefore = {EC_WORD_I_AM, EC_WORD_LIVING, EC_WORD_ONLY, EC_WORD_WITH, EC_WORD_DRAGON, EC_WORD_POKEMON}, @@ -1896,7 +1896,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_YOU_VE, EC_WORD_DESTROYED, EC_WORD_THE, EC_WORD_WAY, EC_WORD_I_AM, EC_WORD_LIVING}, .monSets = gBattleFrontierTrainerMons_Trevon }, - [237] = { + [FRONTIER_TRAINER_MATEO] = { .facilityClass = FACILITY_CLASS_BLACK_BELT, .trainerName = _("MATEO"), .speechBefore = {EC_WORD_THIS, EC_WORD_SHOULD, EC_WORD_BE, EC_WORD_OVER, EC_WORD_SOON, EC_WORD_ENOUGH}, @@ -1904,7 +1904,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I, EC_WORD_CAN_T, EC_WORD_LOSE, EC_WORD_SO, EC_WORD_SOON, EC_WORD_EXCL}, .monSets = gBattleFrontierTrainerMons_Mateo }, - [238] = { + [FRONTIER_TRAINER_BRET] = { .facilityClass = FACILITY_CLASS_BLACK_BELT, .trainerName = _("BRET"), .speechBefore = {EC_WORD_I, EC_WORD_LIKE, EC_WORD_ROCK_SOLID, EC_WORD_POKEMON, EC_WORD_THE, EC_WORD_BEST}, @@ -1912,7 +1912,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I, EC_WORD_ALSO, EC_WORD_HAVE, EC_WORD_A, EC_WORD_PLUSH_DOLL, EC_WORD_COLLECTION}, .monSets = gBattleFrontierTrainerMons_Bret }, - [239] = { + [FRONTIER_TRAINER_RAUL] = { .facilityClass = FACILITY_CLASS_BLACK_BELT, .trainerName = _("RAUL"), .speechBefore = {EC_WORD_I, EC_WORD_REJECT, EC_WORD_EVERY, EC_WORD_WEAK, EC_WORD_TRAINER, 0xFFFF}, @@ -1920,7 +1920,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_THERE, EC_WORD_IS, EC_WORD_NOTHING, EC_WORD_WEAK, EC_WORD_ABOUT, EC_WORD_YOU}, .monSets = gBattleFrontierTrainerMons_Raul }, - [240] = { + [FRONTIER_TRAINER_KAY] = { .facilityClass = FACILITY_CLASS_BATTLE_GIRL, .trainerName = _("KAY"), .speechBefore = {EC_WORD_AND, EC_WORD_YET, EC_WORD_ANOTHER, EC_WORD_BATTLE, EC_WORD_QUES, 0xFFFF}, @@ -1928,7 +1928,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_GOOD, EC_WORD_IT_S, EC_WORD_OVER, EC_WORD_AT, EC_WORD_LAST, EC_WORD_ELLIPSIS}, .monSets = gBattleFrontierTrainerMons_Kay }, - [241] = { + [FRONTIER_TRAINER_ELENA] = { .facilityClass = FACILITY_CLASS_BATTLE_GIRL, .trainerName = _("ELENA"), .speechBefore = {EC_WORD_A, EC_WORD_BATTLE, EC_WORD_GIRL, EC_WORD_THAT_S, EC_WORD_ME, EC_WORD_EXCL}, @@ -1936,7 +1936,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_YOU, EC_WORD_DISLIKE, EC_WORD_A, EC_WORD_BATTLE, EC_WORD_GIRL, EC_WORD_QUES}, .monSets = gBattleFrontierTrainerMons_Elena }, - [242] = { + [FRONTIER_TRAINER_ALANA] = { .facilityClass = FACILITY_CLASS_BATTLE_GIRL, .trainerName = _("ALANA"), .speechBefore = {EC_WORD_EAT, EC_WORD_MY, EC_WORD_INVINCIBLE, EC_WORD_ATTACK, EC_WORD_YOU, EC_WORD_EXCL}, @@ -1944,7 +1944,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_SO, EC_WORD_MUCH, EC_WORD_FOR, EC_WORD_MY, EC_WORD_INVINCIBLE, EC_WORD_ATTACK}, .monSets = gBattleFrontierTrainerMons_Alana }, - [243] = { + [FRONTIER_TRAINER_ALEXAS] = { .facilityClass = FACILITY_CLASS_EXPERT_M, .trainerName = _("ALEXAS"), .speechBefore = {EC_WORD_GOOD, EC_WORD_TO, EC_WORD_MEET_YOU, EC_WORD_YOUNG, EC_WORD_TRAINER, EC_WORD_EXCL}, @@ -1952,7 +1952,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_YOU, EC_WORD_ARE, EC_WORD_A, EC_WORD_STRONG, EC_WORD_TRAINER, EC_WORD_KID}, .monSets = gBattleFrontierTrainerMons_Alexas }, - [244] = { + [FRONTIER_TRAINER_WESTON] = { .facilityClass = FACILITY_CLASS_EXPERT_M, .trainerName = _("WESTON"), .speechBefore = {EC_WORD_I, EC_WORD_DON_T, EC_WORD_PLAY, EC_WORD_DOWN, EC_WORD_ALL_RIGHT, EC_WORD_QUES}, @@ -1960,7 +1960,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_WELL, EC_WORD_WELL, EC_WORD_ELLIPSIS, EC_WORD_I, EC_WORD_SURRENDER, EC_WORD_ELLIPSIS}, .monSets = gBattleFrontierTrainerMons_Weston }, - [245] = { + [FRONTIER_TRAINER_JASPER] = { .facilityClass = FACILITY_CLASS_EXPERT_M, .trainerName = _("JASPER"), .speechBefore = {EC_WORD_I_AM, EC_WORD_NOT, EC_WORD_OLD, EC_WORD_I_AM, EC_WORD_SKILLED, EC_WORD_EXCL}, @@ -1968,7 +1968,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I_AM, EC_WORD_SHOCKED, EC_WORD_EXCL, EC_WORD_DOWN, EC_WORD_I, EC_WORD_GO}, .monSets = gBattleFrontierTrainerMons_Jasper }, - [246] = { + [FRONTIER_TRAINER_NADIA] = { .facilityClass = FACILITY_CLASS_EXPERT_F, .trainerName = _("NADIA"), .speechBefore = {EC_WORD_YOU, EC_WORD_CAN_T, EC_WORD_BEAT, EC_WORD_ME, EC_WORD_DOWN, EC_WORD_EXCL}, @@ -1976,7 +1976,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I_AM, EC_MOVE2(BEAT_UP), EC_WORD_AND, EC_WORD_DOWNCAST, EC_WORD_ELLIPSIS, 0xFFFF}, .monSets = gBattleFrontierTrainerMons_Nadia }, - [247] = { + [FRONTIER_TRAINER_MIRANDA] = { .facilityClass = FACILITY_CLASS_EXPERT_F, .trainerName = _("MIRANDA"), .speechBefore = {EC_WORD_WELL, EC_WORD_WELL, 0xFFFF, EC_WORD_LET_S, EC_WORD_START, 0xFFFF}, @@ -1984,7 +1984,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_WELL, EC_WORD_I, EC_WORD_SEE, EC_WORD_THAT, EC_WORD_I_AM, EC_WORD_TOO_WEAK}, .monSets = gBattleFrontierTrainerMons_Miranda }, - [248] = { + [FRONTIER_TRAINER_EMMA] = { .facilityClass = FACILITY_CLASS_EXPERT_F, .trainerName = _("EMMA"), .speechBefore = {EC_WORD_I_VE, EC_WORD_BEEN, EC_WORD_HEARING, EC_WORD_ABOUT, EC_WORD_YOU, 0xFFFF}, @@ -1992,7 +1992,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_WHAT, EC_WORD_I_VE, EC_WORD_BEEN, EC_WORD_HEARING, EC_WORD_IS, EC_WORD_RIGHT}, .monSets = gBattleFrontierTrainerMons_Emma }, - [249] = { + [FRONTIER_TRAINER_ROLANDO] = { .facilityClass = FACILITY_CLASS_PSYCHIC_M, .trainerName = _("ROLANDO"), .speechBefore = {EC_WORD_I_AM, EC_WORD_A, EC_WORD_SUPER, EC_WORD_POKEMON, EC_WORD_HERO, EC_WORD_EXCL}, @@ -2000,7 +2000,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_YOU, EC_WORD_SHOULD, EC_WORD_NOT, EC_WORD_BEAT, EC_WORD_A, EC_WORD_HERO}, .monSets = gBattleFrontierTrainerMons_Rolando }, - [250] = { + [FRONTIER_TRAINER_STANLY] = { .facilityClass = FACILITY_CLASS_PSYCHIC_M, .trainerName = _("STANLY"), .speechBefore = {EC_WORD_THIS, EC_WORD_SHOULD, EC_WORD_BE, EC_WORD_AN, EC_WORD_EASY, EC_WORD_MATCH}, @@ -2008,7 +2008,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_ARE, EC_WORD_YOU, EC_WORD_HAPPY, EC_WORD_NOW, EC_WORD_QUES, 0xFFFF}, .monSets = gBattleFrontierTrainerMons_Stanly }, - [251] = { + [FRONTIER_TRAINER_DARIO] = { .facilityClass = FACILITY_CLASS_PSYCHIC_M, .trainerName = _("DARIO"), .speechBefore = {EC_WORD_MY, EC_MOVE2(FORESIGHT), EC_WORD_SAYS, EC_WORD_I, EC_WORD_WILL, EC_WORD_WIN}, @@ -2016,7 +2016,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I, EC_WORD_DIDN_T, EC_WORD_SEE, EC_WORD_THIS, EC_MOVE(REVERSAL), EC_WORD_ELLIPSIS}, .monSets = gBattleFrontierTrainerMons_Dario }, - [252] = { + [FRONTIER_TRAINER_KARLEE] = { .facilityClass = FACILITY_CLASS_PSYCHIC_F, .trainerName = _("KARLEE"), .speechBefore = {EC_WORD_SOMETHING, EC_WORD_GOOD, EC_WORD_WILL, EC_WORD_COME, EC_WORD_OF, EC_WORD_THIS}, @@ -2024,7 +2024,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_THAT, EC_WORD_SOMETHING, EC_WORD_GOOD, EC_WORD_WENT, EC_WORD_TO, EC_WORD_YOU}, .monSets = gBattleFrontierTrainerMons_Karlee }, - [253] = { + [FRONTIER_TRAINER_JAYLIN] = { .facilityClass = FACILITY_CLASS_PSYCHIC_F, .trainerName = _("JAYLIN"), .speechBefore = {EC_WORD_EVERY, EC_WORD_TRAINER, EC_WORD_HAS, EC_WORD_BEEN, EC_WORD_TOO_WEAK, EC_WORD_ELLIPSIS}, @@ -2032,7 +2032,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I, EC_WORD_SLEPT, EC_WORD_AND, EC_WORD_SO, EC_WORD_I, EC_WORD_LOST}, .monSets = gBattleFrontierTrainerMons_Jaylin }, - [254] = { + [FRONTIER_TRAINER_INGRID] = { .facilityClass = FACILITY_CLASS_PSYCHIC_F, .trainerName = _("INGRID"), .speechBefore = {EC_WORD_I_AM, EC_WORD_NOT, EC_WORD_A, EC_WORD_VERY, EC_WORD_MEAN, EC_WORD_TRAINER}, @@ -2040,7 +2040,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I, EC_WORD_LOST, EC_WORD_CAUSE, EC_WORD_YOU_RE, EC_WORD_MEAN, EC_WORD_ELLIPSIS}, .monSets = gBattleFrontierTrainerMons_Ingrid }, - [255] = { + [FRONTIER_TRAINER_DELILAH] = { .facilityClass = FACILITY_CLASS_HEX_MANIAC, .trainerName = _("DELILAH"), .speechBefore = {EC_WORD_DON_T, EC_MOVE(GRUDGE), EC_WORD_ME, EC_WORD_IF_I_WIN, EC_WORD_OK_QUES, 0xFFFF}, @@ -2048,7 +2048,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I, EC_WORD_HAVE, EC_WORD_A, EC_MOVE(GRUDGE), EC_WORD_WITH, EC_WORD_YOU}, .monSets = gBattleFrontierTrainerMons_Delilah }, - [256] = { + [FRONTIER_TRAINER_CARLY] = { .facilityClass = FACILITY_CLASS_HEX_MANIAC, .trainerName = _("CARLY"), .speechBefore = {EC_WORD_I, EC_WORD_WILL, EC_WORD_SCATTER, EC_WORD_SOME, EC_MOVE2(POISON_POWDER), EC_WORD_ABOUT}, @@ -2056,7 +2056,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I, EC_WORD_DISLIKE, EC_WORD_YOU, EC_WORD_AND, EC_WORD_YOUR, EC_WORD_POKEMON}, .monSets = gBattleFrontierTrainerMons_Carly }, - [257] = { + [FRONTIER_TRAINER_LEXIE] = { .facilityClass = FACILITY_CLASS_HEX_MANIAC, .trainerName = _("LEXIE"), .speechBefore = {EC_WORD_WANT, EC_WORD_TO, EC_WORD_SEE, EC_WORD_SCARY, EC_WORD_POKEMON, EC_WORD_QUES}, @@ -2064,7 +2064,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_YOU_RE, EC_WORD_MORE, EC_WORD_SCARY, EC_WORD_THAN, EC_WORD_MY, EC_WORD_POKEMON}, .monSets = gBattleFrontierTrainerMons_Lexie }, - [258] = { + [FRONTIER_TRAINER_MILLER] = { .facilityClass = FACILITY_CLASS_POKEMANIAC, .trainerName = _("MILLER"), .speechBefore = {EC_WORD_HELLO, EC_WORD_QUES, 0xFFFF, EC_WORD_HELLO, EC_WORD_QUES_EXCL, 0xFFFF}, @@ -2072,7 +2072,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_MY, EC_WORD_PHONE, EC_WORD_ISN_T, EC_WORD_WORKING, EC_WORD_ELLIPSIS, 0xFFFF}, .monSets = gBattleFrontierTrainerMons_Miller }, - [259] = { + [FRONTIER_TRAINER_MARV] = { .facilityClass = FACILITY_CLASS_POKEMANIAC, .trainerName = _("MARV"), .speechBefore = {EC_WORD_YOU, EC_WORD_CAN, EC_WORD_LOSE, EC_WORD_YOUR, EC_MOVE(SWAGGER), EC_WORD_NOW}, @@ -2080,7 +2080,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_GO, EC_WORD_ON, EC_MOVE(SWAGGER), EC_WORD_ALL, EC_WORD_YOU, EC_WORD_WANT}, .monSets = gBattleFrontierTrainerMons_Marv }, - [260] = { + [FRONTIER_TRAINER_LAYTON] = { .facilityClass = FACILITY_CLASS_POKEMANIAC, .trainerName = _("LAYTON"), .speechBefore = {EC_WORD_I, EC_WORD_KNOW, EC_WORD_I_AM, EC_WORD_TOTALLY, EC_WORD_COOL, EC_WORD_EXCL}, @@ -2088,7 +2088,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_YOU_RE, EC_WORD_COOL, EC_WORD_EXCL, EC_WORD_NO, EC_WORD_REALLY, EC_WORD_EXCL}, .monSets = gBattleFrontierTrainerMons_Layton }, - [261] = { + [FRONTIER_TRAINER_BROOKS] = { .facilityClass = FACILITY_CLASS_GENTLEMAN, .trainerName = _("BROOKS"), .speechBefore = {EC_WORD_THIS, EC_WORD_IS, EC_WORD_A, EC_WORD_HIGH, EC_WORD_LEVEL, EC_WORD_BATTLE}, @@ -2096,7 +2096,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_YOU_RE, EC_WORD_TOO, EC_WORD_HIGH, EC_WORD_IN, EC_WORD_LEVEL, EC_WORD_ELLIPSIS}, .monSets = gBattleFrontierTrainerMons_Brooks }, - [262] = { + [FRONTIER_TRAINER_GREGORY] = { .facilityClass = FACILITY_CLASS_GENTLEMAN, .trainerName = _("GREGORY"), .speechBefore = {EC_WORD_I_AM, EC_WORD_NOT, EC_WORD_THAT, EC_WORD_OLD, EC_WORD_YET, 0xFFFF}, @@ -2104,7 +2104,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_PLEASE, EC_WORD_I_AM, EC_WORD_REALLY, EC_WORD_NOT, EC_WORD_THAT, EC_WORD_OLD}, .monSets = gBattleFrontierTrainerMons_Gregory }, - [263] = { + [FRONTIER_TRAINER_REESE] = { .facilityClass = FACILITY_CLASS_GENTLEMAN, .trainerName = _("REESE"), .speechBefore = {EC_WORD_I_VE, EC_WORD_A, EC_WORD_COUPLE, EC_WORD_THINGS, 0xFFFF, 0xFFFF}, @@ -2112,7 +2112,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_INSTEAD, EC_WORD_OF, EC_WORD_TELEVISION, EC_WORD_GET, EC_WORD_A, EC_WORD_BOOK}, .monSets = gBattleFrontierTrainerMons_Reese }, - [264] = { + [FRONTIER_TRAINER_MASON] = { .facilityClass = FACILITY_CLASS_RUNNING_TRIATHLETE_M, .trainerName = _("MASON"), .speechBefore = {EC_WORD_PLEASE, EC_WORD_DON_T, EC_WORD_MAKE, EC_WORD_THIS, EC_WORD_SCARY, 0xFFFF}, @@ -2120,7 +2120,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I_AM, EC_WORD_DISAPPOINTED, EC_WORD_ELLIPSIS, 0xFFFF, 0xFFFF, 0xFFFF}, .monSets = gBattleFrontierTrainerMons_Mason }, - [265] = { + [FRONTIER_TRAINER_TOBY] = { .facilityClass = FACILITY_CLASS_RUNNING_TRIATHLETE_M, .trainerName = _("TOBY"), .speechBefore = {EC_WORD_LISTEN, EC_WORD_UP, 0xFFFF, EC_WORD_I, EC_WORD_ALWAYS, EC_WORD_WIN}, @@ -2128,7 +2128,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I, EC_WORD_CAN, EC_WORD_BEAT, EC_WORD_YOU, EC_WORD_AT, EC_WORD_SMARTNESS}, .monSets = gBattleFrontierTrainerMons_Toby }, - [266] = { + [FRONTIER_TRAINER_DOROTHY] = { .facilityClass = FACILITY_CLASS_RUNNING_TRIATHLETE_F, .trainerName = _("DOROTHY"), .speechBefore = {EC_WORD_THE, EC_WORD_SPORTS, EC_WORD_WORLD, EC_WORD_SHOULD, EC_WORD_ACCEPT, EC_WORD_POKEMON}, @@ -2136,7 +2136,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_THANK_YOU, EC_WORD_EXCL, EC_WORD_THAT, EC_WORD_LOSS, EC_WORD_WAS, EC_WORD_REFRESHING}, .monSets = gBattleFrontierTrainerMons_Dorothy }, - [267] = { + [FRONTIER_TRAINER_PIPER] = { .facilityClass = FACILITY_CLASS_RUNNING_TRIATHLETE_F, .trainerName = _("PIPER"), .speechBefore = {EC_WORD_COME_ON, EC_WORD_YOU, EC_WORD_NEED, EC_WORD_A, EC_WORD_SPEED_BOOST, EC_WORD_QUES}, @@ -2144,7 +2144,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_OH, EC_WORD_YOU, EC_WORD_EXCL, 0xFFFF, 0xFFFF, 0xFFFF}, .monSets = gBattleFrontierTrainerMons_Piper }, - [268] = { + [FRONTIER_TRAINER_FINN] = { .facilityClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_M, .trainerName = _("FINN"), .speechBefore = {EC_WORD_NOT, EC_WORD_ANOTHER, EC_WORD_TRAINER, EC_WORD_BATTLE, EC_WORD_ELLIPSIS, 0xFFFF}, @@ -2152,7 +2152,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I, EC_WORD_FINALLY, EC_WORD_GET, EC_WORD_TO, EC_MOVE2(REST), EC_WORD_A_LITTLE}, .monSets = gBattleFrontierTrainerMons_Finn }, - [269] = { + [FRONTIER_TRAINER_SAMIR] = { .facilityClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_M, .trainerName = _("SAMIR"), .speechBefore = {EC_WORD_I, EC_MOVE2(DIVE), EC_WORD_BELOW, EC_WORD_THE, EC_MOVE2(SURF), EC_WORD_EXCL}, @@ -2160,7 +2160,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I_AM, EC_WORD_GOING, EC_WORD_TO, EC_WORD_SINK, EC_WORD_ELLIPSIS, 0xFFFF}, .monSets = gBattleFrontierTrainerMons_Samir }, - [270] = { + [FRONTIER_TRAINER_FIONA] = { .facilityClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_F, .trainerName = _("FIONA"), .speechBefore = {EC_WORD_DID, EC_WORD_YOU, EC_WORD_LIMBER, EC_WORD_UP, EC_WORD_BEFORE, EC_WORD_QUES}, @@ -2168,7 +2168,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_BEING, EC_WORD_LIMBER, EC_WORD_DIDN_T, EC_WORD_WORK, EC_WORD_FOR, EC_WORD_ME}, .monSets = gBattleFrontierTrainerMons_Fiona }, - [271] = { + [FRONTIER_TRAINER_GLORIA] = { .facilityClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_F, .trainerName = _("GLORIA"), .speechBefore = {EC_WORD_I, EC_WORD_LIKE, EC_WORD_TO, EC_WORD_ATTACK, EC_WORD_WITH, EC_WORD_SUCTION_CUPS}, @@ -2176,7 +2176,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I, EC_WORD_DON_T, EC_WORD_GET, EC_WORD_HOW, EC_WORD_SUCTION_CUPS, EC_WORD_WORK}, .monSets = gBattleFrontierTrainerMons_Gloria }, - [272] = { + [FRONTIER_TRAINER_NICO] = { .facilityClass = FACILITY_CLASS_CYCLING_TRIATHLETE_M, .trainerName = _("NICO"), .speechBefore = {EC_WORD_LIKE, EC_WORD_A, EC_MOVE(SONIC_BOOM), EC_WORD_I_VE_ARRIVED, 0xFFFF, 0xFFFF}, @@ -2184,7 +2184,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I_AM, EC_WORD_GOING, EC_WORD_WITH, EC_WORD_A, EC_MOVE2(SUPERSONIC), EC_WORD_SPEED_BOOST}, .monSets = gBattleFrontierTrainerMons_Nico }, - [273] = { + [FRONTIER_TRAINER_JEREMY] = { .facilityClass = FACILITY_CLASS_CYCLING_TRIATHLETE_M, .trainerName = _("JEREMY"), .speechBefore = {EC_WORD_A, EC_WORD_POKEMON, EC_WORD_MASTER, EC_WORD_THAT_S, EC_WORD_MY, EC_WORD_DREAM}, @@ -2192,7 +2192,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_WHAT, EC_WORD_I, EC_WORD_DREAM, EC_WORD_ISN_T, EC_WORD_HAPPENING, EC_WORD_ELLIPSIS}, .monSets = gBattleFrontierTrainerMons_Jeremy }, - [274] = { + [FRONTIER_TRAINER_CAITLIN] = { .facilityClass = FACILITY_CLASS_CYCLING_TRIATHLETE_F, .trainerName = _("CAITLIN"), .speechBefore = {EC_WORD_DON_T, EC_WORD_YOU, EC_WORD_THINK, EC_WORD_I_AM, EC_WORD_CUTE, EC_WORD_QUES}, @@ -2200,7 +2200,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_MY, EC_WORD_CUTE_CHARM, EC_WORD_DOESN_T, EC_MOVE2(ATTRACT), EC_WORD_YOU, EC_WORD_QUES}, .monSets = gBattleFrontierTrainerMons_Caitlin }, - [275] = { + [FRONTIER_TRAINER_REENA] = { .facilityClass = FACILITY_CLASS_CYCLING_TRIATHLETE_F, .trainerName = _("REENA"), .speechBefore = {EC_WORD_I_AM, EC_WORD_ALWAYS, EC_WORD_HAPPY, EC_WORD_HAPPY, EC_WORD_HAPPY, EC_WORD_EXCL}, @@ -2208,7 +2208,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_YAHOO, EC_WORD_EXCL, EC_WORD_I_AM, EC_WORD_HAPPY, EC_WORD_FOR, EC_WORD_YOU}, .monSets = gBattleFrontierTrainerMons_Reena }, - [276] = { + [FRONTIER_TRAINER_AVERY] = { .facilityClass = FACILITY_CLASS_BUG_MANIAC, .trainerName = _("AVERY"), .speechBefore = {EC_WORD_I_VE, EC_WORD_GOT, EC_WORD_A_LOT, EC_WORD_OF, EC_WORD_BUG, EC_WORD_POKEMON}, @@ -2216,7 +2216,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_MY, EC_WORD_BUG, EC_WORD_POKEMON, EC_WORD_ARE, EC_WORD_ALL, EC_WORD_UPSIDE_DOWN}, .monSets = gBattleFrontierTrainerMons_Avery }, - [277] = { + [FRONTIER_TRAINER_LIAM] = { .facilityClass = FACILITY_CLASS_BUG_MANIAC, .trainerName = _("LIAM"), .speechBefore = {EC_WORD_WE, EC_WORD_REALLY, EC_WORD_DISLIKE, EC_WORD_FIRE, EC_WORD_AND, EC_WORD_FLYING}, @@ -2224,7 +2224,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_YOU, EC_WORD_KNOW, EC_WORD_WHAT, EC_WORD_WE, EC_WORD_DISLIKE, EC_WORD_HEY_QUES}, .monSets = gBattleFrontierTrainerMons_Liam }, - [278] = { + [FRONTIER_TRAINER_THEO] = { .facilityClass = FACILITY_CLASS_FISHERMAN, .trainerName = _("THEO"), .speechBefore = {EC_WORD_FISHING, EC_WORD_IS, EC_WORD_MY, EC_WORD_CHOICE, EC_WORD_IN, EC_WORD_LIFE}, @@ -2232,7 +2232,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_DON_T, EC_WORD_COUNT_ON, EC_WORD_THAT, EC_WORD_HAPPENING, EC_WORD_ANOTHER, EC_WORD_TIME}, .monSets = gBattleFrontierTrainerMons_Theo }, - [279] = { + [FRONTIER_TRAINER_BAILEY] = { .facilityClass = FACILITY_CLASS_FISHERMAN, .trainerName = _("BAILEY"), .speechBefore = {EC_WORD_I_AM, EC_WORD_AN, EC_WORD_ADULT, EC_WORD_I, EC_WORD_BATTLE, EC_WORD_EASY}, @@ -2240,7 +2240,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I_AM, EC_WORD_AN, EC_WORD_ADULT, EC_WORD_I, EC_MOVE2(SWALLOW), EC_MOVE2(FRUSTRATION)}, .monSets = gBattleFrontierTrainerMons_Bailey }, - [280] = { + [FRONTIER_TRAINER_HUGO] = { .facilityClass = FACILITY_CLASS_RUIN_MANIAC, .trainerName = _("HUGO"), .speechBefore = {EC_WORD_I, EC_WORD_TRY, EC_WORD_THE, EC_WORD_BEST, EC_WORD_I, EC_WORD_CAN}, @@ -2248,7 +2248,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I, EC_WORD_DID, EC_WORD_TRY, EC_WORD_DIDN_T, EC_WORD_I, EC_WORD_QUES}, .monSets = gBattleFrontierTrainerMons_Hugo }, - [281] = { + [FRONTIER_TRAINER_BRYCE] = { .facilityClass = FACILITY_CLASS_RUIN_MANIAC, .trainerName = _("BRYCE"), .speechBefore = {EC_WORD_I_WAS, EC_WORD_ON, EC_WORD_VACATION, EC_WORD_UNTIL, EC_WORD_ONLY, EC_WORD_YESTERDAY}, @@ -2256,7 +2256,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_THAT_S, EC_WORD_IT, EC_WORD_ELLIPSIS, EC_WORD_I, EC_WORD_NEED, EC_WORD_SLEEP}, .monSets = gBattleFrontierTrainerMons_Bryce }, - [282] = { + [FRONTIER_TRAINER_GIDEON] = { .facilityClass = FACILITY_CLASS_COLLECTOR, .trainerName = _("GIDEON"), .speechBefore = {EC_WORD_WHAT_S_UP_QUES, EC_WORD_YOU, EC_WORD_THINK, EC_WORD_I_AM, EC_WORD_SCARY, EC_WORD_QUES}, @@ -2264,7 +2264,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_LOOK, EC_WORD_AT, EC_WORD_MY, EC_WORD_FABULOUS, EC_WORD_FASHION, EC_WORD_SENSE}, .monSets = gBattleFrontierTrainerMons_Gideon }, - [283] = { + [FRONTIER_TRAINER_TRISTON] = { .facilityClass = FACILITY_CLASS_COLLECTOR, .trainerName = _("TRISTON"), .speechBefore = {EC_WORD_I, EC_WORD_WOULD, EC_WORD_RATHER, EC_WORD_LOOK, EC_WORD_AT, EC_WORD_POKEMON}, @@ -2272,7 +2272,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_SEE, EC_WORD_QUES, 0xFFFF, EC_WORD_I, EC_WORD_ALWAYS, EC_WORD_LOSE}, .monSets = gBattleFrontierTrainerMons_Triston }, - [284] = { + [FRONTIER_TRAINER_CHARLES] = { .facilityClass = FACILITY_CLASS_GUITARIST, .trainerName = _("CHARLES"), .speechBefore = {EC_WORD_IT_S, EC_WORD_HOPELESS, EC_WORD_TO, EC_MOVE2(STRUGGLE), EC_WORD_WITH, EC_WORD_ME}, @@ -2280,7 +2280,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I_AM, EC_WORD_GOING, EC_WORD_DOWN, EC_WORD_DOWN, EC_WORD_DOWN, EC_WORD_EXCL}, .monSets = gBattleFrontierTrainerMons_Charles }, - [285] = { + [FRONTIER_TRAINER_RAYMOND] = { .facilityClass = FACILITY_CLASS_GUITARIST, .trainerName = _("RAYMOND"), .speechBefore = {EC_WORD_WANT, EC_WORD_TO, EC_WORD_HEAR, EC_WORD_MY, EC_WORD_SONG, EC_WORD_QUES}, @@ -2288,7 +2288,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_SATISFIED, EC_WORD_IS, EC_WORD_WHAT, EC_WORD_I, EC_WORD_CAN_T, EC_WORD_BE}, .monSets = gBattleFrontierTrainerMons_Raymond }, - [286] = { + [FRONTIER_TRAINER_DIRK] = { .facilityClass = FACILITY_CLASS_BIRD_KEEPER, .trainerName = _("DIRK"), .speechBefore = {EC_WORD_FLYING, EC_WORD_POKEMON, EC_WORD_ARE, EC_WORD_ABOVE, EC_WORD_THE, EC_MOVE2(REST)}, @@ -2296,7 +2296,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_AREN_T, EC_WORD_THERE, EC_WORD_MORE, EC_WORD_FLYING, EC_WORD_POKEMON, EC_WORD_QUES}, .monSets = gBattleFrontierTrainerMons_Dirk }, - [287] = { + [FRONTIER_TRAINER_HAROLD] = { .facilityClass = FACILITY_CLASS_BIRD_KEEPER, .trainerName = _("HAROLD"), .speechBefore = {EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_APPEAL, EC_WORD_TO, EC_WORD_YOU, EC_WORD_QUES}, @@ -2304,7 +2304,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_SO, EC_WORD_YOU, EC_WORD_DISLIKE, EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_QUES}, .monSets = gBattleFrontierTrainerMons_Harold }, - [288] = { + [FRONTIER_TRAINER_OMAR] = { .facilityClass = FACILITY_CLASS_SAILOR, .trainerName = _("OMAR"), .speechBefore = {EC_WORD_LET_ME_WIN, EC_WORD_IN, EC_MOVE(RETURN), EC_WORD_FOR, EC_WORD_A, EC_MOVE2(PRESENT)}, @@ -2312,7 +2312,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_YOUR, EC_MOVE2(PRESENT), EC_WORD_QUES, EC_WORD_WHAT, EC_WORD_FOR, EC_WORD_QUES_EXCL}, .monSets = gBattleFrontierTrainerMons_Omar }, - [289] = { + [FRONTIER_TRAINER_PETER] = { .facilityClass = FACILITY_CLASS_SAILOR, .trainerName = _("PETER"), .speechBefore = {EC_WORD_I, EC_WORD_BRAG, EC_WORD_ABOUT, EC_WORD_MY, EC_WORD_HAPPINESS, EC_WORD_OK_QUES}, @@ -2320,7 +2320,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .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 }, - [290] = { + [FRONTIER_TRAINER_DEV] = { .facilityClass = FACILITY_CLASS_HIKER, .trainerName = _("DEV"), .speechBefore = {EC_WORD_COME_ON, EC_WORD_LET_S, EC_WORD_GET, EC_WORD_A, EC_WORD_MOVE, EC_WORD_ON}, @@ -2328,7 +2328,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I, EC_WORD_NEED, EC_WORD_TO, EC_WORD_NAP, EC_WORD_AFTER, EC_WORD_THAT}, .monSets = gBattleFrontierTrainerMons_Dev }, - [291] = { + [FRONTIER_TRAINER_COREY] = { .facilityClass = FACILITY_CLASS_HIKER, .trainerName = _("COREY"), .speechBefore = {EC_WORD_LET_S, EC_WORD_TEACH, EC_WORD_YOU, EC_WORD_HOW, EC_WORD_TOUGH, EC_WORD_I_AM}, @@ -2336,7 +2336,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_MY, EC_MOVE2(FRUSTRATION), EC_WORD_IS, EC_WORD_CLOSE, EC_WORD_TO, EC_MOVE2(ERUPTION)}, .monSets = gBattleFrontierTrainerMons_Corey }, - [292] = { + [FRONTIER_TRAINER_ANDRE] = { .facilityClass = FACILITY_CLASS_KINDLER, .trainerName = _("ANDRE"), .speechBefore = {EC_WORD_NOW, EC_WORD_THIS, EC_WORD_IS, EC_WORD_A, EC_WORD_PERFECT, EC_WORD_FLAME_BODY}, @@ -2344,7 +2344,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_YOU, EC_WORD_WANT, EC_WORD_AN, EC_MOVE2(EXPLOSION), EC_WORD_HERE, EC_WORD_QUES}, .monSets = gBattleFrontierTrainerMons_Andre }, - [293] = { + [FRONTIER_TRAINER_FERRIS] = { .facilityClass = FACILITY_CLASS_KINDLER, .trainerName = _("FERRIS"), .speechBefore = {EC_WORD_I_AM, EC_WORD_NO_1, EC_WORD_IN, EC_WORD_THE, EC_WORD_OLD, EC_WORD_CLASS}, @@ -2352,7 +2352,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I_AM, EC_WORD_NOT, EC_WORD_NO_1, EC_WORD_ANY, EC_WORD_MORE, EC_WORD_ELLIPSIS}, .monSets = gBattleFrontierTrainerMons_Ferris }, - [294] = { + [FRONTIER_TRAINER_ALIVIA] = { .facilityClass = FACILITY_CLASS_PARASOL_LADY, .trainerName = _("ALIVIA"), .speechBefore = {EC_WORD_I_AM, EC_WORD_FEELING, EC_WORD_GIDDY, EC_WORD_SO, EC_WORD_SHOULD, EC_WORD_YOU}, @@ -2360,7 +2360,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_I, EC_WORD_WILL, EC_WORD_GIDDY, EC_WORD_UP, EC_WORD_AND, EC_WORD_AWAY}, .monSets = gBattleFrontierTrainerMons_Alivia }, - [295] = { + [FRONTIER_TRAINER_PAIGE] = { .facilityClass = FACILITY_CLASS_PARASOL_LADY, .trainerName = _("PAIGE"), .speechBefore = {EC_WORD_LET_S, EC_WORD_ENJOY, EC_WORD_OUR, EC_WORD_BATTLE, EC_WORD_TOGETHER, 0xFFFF}, @@ -2368,7 +2368,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_THAT_S_IT_EXCL, 0xFFFF, 0xFFFF, EC_WORD_DO, EC_WORD_GO, EC_WORD_ON}, .monSets = gBattleFrontierTrainerMons_Paige }, - [296] = { + [FRONTIER_TRAINER_ANYA] = { .facilityClass = FACILITY_CLASS_BEAUTY, .trainerName = _("ANYA"), .speechBefore = {EC_WORD_I, EC_WORD_DISLIKE, EC_WORD_OH, EC_WORD_SO, EC_WORD_PRETTY, EC_WORD_FASHION}, @@ -2376,7 +2376,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_PRETTY, EC_WORD_COULD, EC_WORD_BE, EC_WORD_GOOD, 0xFFFF, 0xFFFF}, .monSets = gBattleFrontierTrainerMons_Anya }, - [297] = { + [FRONTIER_TRAINER_DAWN] = { .facilityClass = FACILITY_CLASS_BEAUTY, .trainerName = _("DAWN"), .speechBefore = {EC_WORD_I, EC_WORD_GO, EC_WORD_ALL, EC_WORD_OUT, EC_WORD_EXCL, 0xFFFF}, @@ -2384,7 +2384,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_YOU, EC_WORD_WON, EC_WORD_EXCL, EC_WORD_MOVE, EC_WORD_ON, EC_WORD_EXCL}, .monSets = gBattleFrontierTrainerMons_Dawn }, - [298] = { + [FRONTIER_TRAINER_ABBY] = { .facilityClass = FACILITY_CLASS_AROMA_LADY, .trainerName = _("ABBY"), .speechBefore = {EC_WORD_I, EC_WORD_LIKE, EC_WORD_A, EC_WORD_TRAINER, EC_WORD_THAT_S, EC_WORD_REFRESHING}, @@ -2392,7 +2392,7 @@ const struct BattleFrontierTrainer gBattleFrontierTrainers[] = .speechLose = {EC_WORD_WHAT, EC_WORD_AN, EC_WORD_AWFUL, EC_WORD_STENCH, EC_WORD_EXCL, 0xFFFF}, .monSets = gBattleFrontierTrainerMons_Abby }, - [299] = { + [FRONTIER_TRAINER_GRETEL] = { .facilityClass = FACILITY_CLASS_AROMA_LADY, .trainerName = _("GRETEL"), .speechBefore = {EC_WORD_I, EC_WORD_CAUSE, EC_MOVE(OUTRAGE), EC_WORD_AS, EC_WORD_A, EC_WORD_TRAINER}, diff --git a/src/field_specials.c b/src/field_specials.c index 4ed4ebc026..14779d51dc 100644 --- a/src/field_specials.c +++ b/src/field_specials.c @@ -1220,18 +1220,18 @@ void EndLotteryCornerComputerEffect(void) DrawWholeMapView(); } -void SetTrickHouseEndRoomFlag(void) +void SetTrickHouseNuggetFlag(void) { u16 *specVar = &gSpecialVar_0x8004; - u16 flag = FLAG_TRICK_HOUSE_END_ROOM; + u16 flag = FLAG_HIDDEN_ITEM_TRICK_HOUSE_NUGGET; *specVar = flag; FlagSet(flag); } -void ResetTrickHouseEndRoomFlag(void) +void ResetTrickHouseNuggetFlag(void) { u16 *specVar = &gSpecialVar_0x8004; - u16 flag = FLAG_TRICK_HOUSE_END_ROOM; + u16 flag = FLAG_HIDDEN_ITEM_TRICK_HOUSE_NUGGET; *specVar = flag; FlagClear(flag); } diff --git a/src/frontier_util.c b/src/frontier_util.c index f59ed14ed7..42c36b307e 100644 --- a/src/frontier_util.c +++ b/src/frontier_util.c @@ -1701,7 +1701,7 @@ void CopyFrontierTrainerText(u8 whichText, u16 trainerId) FrontierSpeechToString(gSaveBlock2Ptr->frontier.ereaderTrainer.greeting); else if (trainerId == TRAINER_FRONTIER_BRAIN) CopyFrontierBrainText(FALSE); - else if (trainerId < TRAINER_RECORD_MIXING_FRIEND) + else if (trainerId < FRONTIER_TRAINERS_COUNT) FrontierSpeechToString(gFacilityTrainers[trainerId].speechBefore); else if (trainerId < TRAINER_RECORD_MIXING_APPRENTICE) FrontierSpeechToString(gSaveBlock2Ptr->frontier.towerRecords[trainerId - TRAINER_RECORD_MIXING_FRIEND].greeting); @@ -1717,7 +1717,7 @@ void CopyFrontierTrainerText(u8 whichText, u16 trainerId) { CopyFrontierBrainText(FALSE); } - else if (trainerId < TRAINER_RECORD_MIXING_FRIEND) + else if (trainerId < FRONTIER_TRAINERS_COUNT) { FrontierSpeechToString(gFacilityTrainers[trainerId].speechWin); } @@ -1745,7 +1745,7 @@ void CopyFrontierTrainerText(u8 whichText, u16 trainerId) { CopyFrontierBrainText(TRUE); } - else if (trainerId < TRAINER_RECORD_MIXING_FRIEND) + else if (trainerId < FRONTIER_TRAINERS_COUNT) { FrontierSpeechToString(gFacilityTrainers[trainerId].speechLose); } From 749965d56b00a33d988431eacf1405e8aeccb5bf Mon Sep 17 00:00:00 2001 From: GriffinR Date: Sat, 21 Dec 2019 19:01:38 -0500 Subject: [PATCH 06/37] Document item_use.c --- include/battle_pyramid_bag.h | 4 +- include/constants/item_effects.h | 4 +- include/event_scripts.h | 5 + include/field_player_avatar.h | 1 + include/fieldmap.h | 2 +- include/global.fieldmap.h | 10 + include/item_menu.h | 10 +- include/item_use.h | 30 +- include/menu.h | 1 - include/pokemon.h | 2 +- src/battle_ai_switch_items.c | 6 +- src/battle_pyramid_bag.c | 20 +- src/berry_tag_screen.c | 2 +- src/bike.c | 2 +- src/data/pokemon/item_effects.h | 2 +- src/decoration.c | 1 + src/fieldmap.c | 2 +- src/fldeff_dig.c | 2 +- src/item_menu.c | 46 +-- src/item_use.c | 490 ++++++++++++++++--------------- src/overworld.c | 6 +- src/party_menu.c | 2 +- src/pokeblock.c | 2 +- src/pokemon.c | 26 +- src/region_map.c | 2 +- src/secret_base.c | 1 + 26 files changed, 359 insertions(+), 322 deletions(-) diff --git a/include/battle_pyramid_bag.h b/include/battle_pyramid_bag.h index e3d65ef90d..df111b939f 100644 --- a/include/battle_pyramid_bag.h +++ b/include/battle_pyramid_bag.h @@ -41,10 +41,10 @@ void sub_81C5924(void); void sub_81C59BC(void); void sub_81C4EFC(void); void GoToBattlePyramidBagMenu(u8 a0, void (*callback)(void)); -void sub_81C6714(u8 taskId); +void Task_CloseBattlePyramidBagMessage(u8 taskId); void TryStoreHeldItemsInPyramidBag(void); void ChooseItemsToTossFromPyramidBag(void); -void sub_81C5B14(u8 taskId); +void CloseBattlePyramidBagAndSetCallback(u8 taskId); void DisplayItemMessageInBattlePyramid(u8 taskId, const u8 *str, void (*callback)(u8 taskId)); #endif // GUARD_BATTLE_PYRAMID_BAG_H diff --git a/include/constants/item_effects.h b/include/constants/item_effects.h index a5bb770355..49fcedc617 100644 --- a/include/constants/item_effects.h +++ b/include/constants/item_effects.h @@ -3,7 +3,7 @@ // field 0 masks #define ITEM0_X_ATTACK 0x0F -#define ITEM0_HIGH_CRIT 0x30 // For Dire Hit, works the same way as move Focus Energy. +#define ITEM0_DIRE_HIT 0x30 // Works the same way as the move Focus Energy. #define ITEM0_SACRED_ASH 0x40 #define ITEM0_INFATUATION 0x80 @@ -23,7 +23,7 @@ #define ITEM3_POISON 0x10 #define ITEM3_SLEEP 0x20 #define ITEM3_LEVEL_UP 0x40 -#define ITEM3_MIST 0x80 // For Guard Specs, works the same way as move Mist. +#define ITEM3_GUARD_SPEC 0x80 // Works the same way as the move Mist. #define ITEM3_STATUS_ALL (ITEM3_CONFUSION | ITEM3_PARALYSIS | ITEM3_FREEZE | ITEM3_BURN | ITEM3_POISON | ITEM3_SLEEP) diff --git a/include/event_scripts.h b/include/event_scripts.h index 9e47223bf4..c2716a214a 100644 --- a/include/event_scripts.h +++ b/include/event_scripts.h @@ -582,4 +582,9 @@ extern const u8 SecretBase_EventScript_ShrubUseSecretPower[]; // trainer hill extern const u8 TrainerHill_EventScript_TrainerBattle[]; +// Item Use +extern u8 BerryTree_EventScript_ItemUsePlantBerry[]; +extern u8 BerryTree_EventScript_ItemUseWailmerPail[]; +extern u8 BattleFrontier_OutsideEast_EventScript_WaterSudowoodo[]; + #endif // GUARD_EVENT_SCRIPTS_H diff --git a/include/field_player_avatar.h b/include/field_player_avatar.h index 804bb5d6e9..f521737b76 100644 --- a/include/field_player_avatar.h +++ b/include/field_player_avatar.h @@ -63,5 +63,6 @@ bool32 sub_808D1B4(void); bool32 sub_808D1E8(void); void SetPlayerInvisibility(bool8 invisible); u8 player_get_pos_including_state_based_drift(s16 *x, s16 *y); +void StartFishing(u8 taskId); #endif // GUARD_FIELD_PLAYER_AVATAR_H diff --git a/include/fieldmap.h b/include/fieldmap.h index be5610a469..dc81d17665 100644 --- a/include/fieldmap.h +++ b/include/fieldmap.h @@ -42,7 +42,7 @@ void copy_map_tileset2_to_vram_2(struct MapLayout const *mapLayout); void copy_map_tileset1_to_vram(const struct MapLayout *); void copy_map_tileset2_to_vram(const struct MapLayout *); struct MapHeader const *const mapconnection_get_mapheader(struct MapConnection *connection); -struct MapConnection *sub_8088A8C(s16 x, s16 y); +struct MapConnection *GetConnectionAtCoords(s16 x, s16 y); void SpriteCB_PokeballGlow(struct Sprite *); void SpriteCB_PokecenterMonitor(struct Sprite *); diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h index e6421f37c9..3913b96d84 100644 --- a/include/global.fieldmap.h +++ b/include/global.fieldmap.h @@ -143,6 +143,16 @@ struct MapHeader /* 0x1B */ u8 battleType; }; +// Flags for gMapHeader.flags, as defined in the map_header_flags macro +#define MAP_ALLOW_BIKE (1 << 0) +#define MAP_ALLOW_ESCAPE_ROPE (1 << 1) +#define MAP_ALLOW_RUN (1 << 2) +#define MAP_SHOW_MAP_NAME (1 << 3) +#define UNUSED_MAP_FLAGS (1 << 4 | 1 << 5 | 1 << 6 | 1 << 7) + +#define SHOW_MAP_NAME_ENABLED ((gMapHeader.flags & (MAP_SHOW_MAP_NAME | UNUSED_MAP_FLAGS)) == MAP_SHOW_MAP_NAME) + + struct EventObject { /*0x00*/ u32 active:1; diff --git a/include/item_menu.h b/include/item_menu.h index 508f94815d..089bff6cf3 100644 --- a/include/item_menu.h +++ b/include/item_menu.h @@ -74,7 +74,7 @@ void QuizLadyOpenBagMenu(void); void ApprenticeOpenBagMenu(void); void sub_81AABB0(void); void SetInitialScrollAndCursorPositions(u8 pocketId); -void bag_menu_mail_related(void); +void CB2_ReturnToBagMenuPocket(void); void CB2_BagMenuFromStartMenu(void); u8 GetItemListPosition(u8 pocketId); bool8 UseRegisteredKeyItemOnField(void); @@ -84,9 +84,13 @@ void DoWallyTutorialBagMenu(void); void ResetBagScrollPositions(void); void ChooseBerrySetCallback(void (*callback)(void)); void CB2_ChooseBerry(void); -void unknown_ItemMenu_Confirm(u8 taskId); +void Task_FadeAndCloseBagMenu(u8 taskId); void BagMenu_YesNo(u8, u8, const struct YesNoFuncTable*); -void sub_81AB9A8(u8 pocketId); +void BagMenu_InitListsMenu(u8 taskId); +void UpdatePocketItemList(u8 pocketId); +void DisplayItemMessage(u8 taskId, u8 fontId, const u8 *str, void ( *callback)(u8 taskId)); +void DisplayItemMessageOnField(u8 taskId, const u8 *src, TaskFunc callback); + #endif //GUARD_item_menu_H diff --git a/include/item_use.h b/include/item_use.h index 5ce47a9bc3..0cb76e7d41 100644 --- a/include/item_use.h +++ b/include/item_use.h @@ -3,27 +3,13 @@ void ItemUseOutOfBattle_Mail(u8); void ItemUseOutOfBattle_Bike(u8); -void ItemUseOnFieldCB_Bike(u8); void ItemUseOutOfBattle_Rod(u8); -void ItemUseOnFieldCB_Rod(u8); void ItemUseOutOfBattle_Itemfinder(u8); -void ItemUseOnFieldCB_Itemfinder(u8); -void RunItemfinderResults(u8); -void ExitItemfinder(u8); -bool8 ItemfinderCheckForHiddenItems(const struct MapEvents *, u8); -void sub_80C9720(u8); -void sub_80C9838(u8, s16, s16); -u8 GetPlayerDirectionTowardsHiddenItem(s16, s16); -void SetPlayerDirectionTowardsItem(u8); -void DisplayItemRespondingMessageAndExitItemfinder(u8); -void RotatePlayerAndExitItemfinder(u8); void ItemUseOutOfBattle_PokeblockCase(u8); void ItemUseOutOfBattle_CoinCase(u8); void ItemUseOutOfBattle_PowderJar(u8); void ItemUseOutOfBattle_SSTicket(u8); -void sub_80C9D00(u8); void ItemUseOutOfBattle_WailmerPail(u8); -void sub_80C9D74(u8); void ItemUseOutOfBattle_Medicine(u8); void ItemUseOutOfBattle_ReduceEV(u8); void ItemUseOutOfBattle_SacredAsh(u8); @@ -31,25 +17,21 @@ void ItemUseOutOfBattle_PPRecovery(u8); void ItemUseOutOfBattle_PPUp(u8); void ItemUseOutOfBattle_RareCandy(u8); void ItemUseOutOfBattle_TMHM(u8); -void sub_80C9EE4(u8); -void sub_80C9F10(u8); -void sub_80C9F80(u8); -void sub_80C9FC0(u8); void ItemUseOutOfBattle_Repel(u8); -void ItemUseOutOfBattle_BlackWhiteFlute(u8); -void task08_080A1C44(u8); -u8 CanUseEscapeRopeOnCurrMap(void); void ItemUseOutOfBattle_EscapeRope(u8); +void ItemUseOutOfBattle_BlackWhiteFlute(u8); void ItemUseOutOfBattle_EvolutionStone(u8); +void ItemUseOutOfBattle_Berry(u8); +void ItemUseOutOfBattle_EnigmaBerry(u8); +void ItemUseOutOfBattle_CannotUse(u8); void ItemUseInBattle_PokeBall(u8); void ItemUseInBattle_StatIncrease(u8); void ItemUseInBattle_Medicine(u8); void ItemUseInBattle_PPRecovery(u8); void ItemUseInBattle_Escape(u8); -void ItemUseOutOfBattle_EnigmaBerry(u8); void ItemUseInBattle_EnigmaBerry(u8); -void ItemUseOutOfBattle_CannotUse(u8); +void Task_UseDigEscapeRopeOnField(u8 taskId); +u8 CanUseEscapeRopeOnCurrMap(void); u8 CheckIfItemIsTMHMOrEvolutionStone(u16 itemId); -void ItemUseOutOfBattle_Berry(u8); #endif // GUARD_ITEM_USE_H diff --git a/include/menu.h b/include/menu.h index c5cef202ce..56865bcd9d 100644 --- a/include/menu.h +++ b/include/menu.h @@ -28,7 +28,6 @@ void DrawDialogueFrame(u8 windowId, bool8 copyToVram); void ClearStdWindowAndFrame(u8 windowId, bool8 copyToVram); u16 AddTextPrinterParameterized2(u8 windowId, u8 fontId, const u8 *str, u8 speed, void (*callback)(struct TextPrinterTemplate *, u16), u8 fgColor, u8 bgColor, u8 shadowColor); void PrintPlayerNameOnWindow(u8, const u8*, u16, u16); -void DisplayItemMessageOnField(u8 taskId, const u8 *src, TaskFunc callback); void ClearDialogWindowAndFrame(u8 windowId, bool8 copyToVram); void SetStandardWindowBorderStyle(u8 windowId, bool8 copyToVram); void DisplayYesNoMenuDefaultYes(void); diff --git a/include/pokemon.h b/include/pokemon.h index 316fbc2b3a..2e28ae0f55 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -342,7 +342,7 @@ bool8 ExecuteTableBasedItemEffect(struct Pokemon *mon, u16 item, u8 partyIndex, bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 moveIndex, u8 e); bool8 HealStatusConditions(struct Pokemon *mon, u32 battlePartyId, u32 healMask, u8 battlerId); u8 GetItemEffectParamOffset(u16 itemId, u8 effectByte, u8 effectBit); -u8 *sub_806CF78(u16 itemId); +u8 *UseStatIncreaseItem(u16 itemId); u8 GetNature(struct Pokemon *mon); u8 GetNatureFromPersonality(u32 personality); u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 type, u16 evolutionItem); diff --git a/src/battle_ai_switch_items.c b/src/battle_ai_switch_items.c index 6ef3591502..32f9620b7d 100644 --- a/src/battle_ai_switch_items.c +++ b/src/battle_ai_switch_items.c @@ -787,9 +787,9 @@ static u8 GetAI_ItemType(u8 itemId, const u8 *itemEffect) // NOTE: should take u return AI_ITEM_HEAL_HP; else if (itemEffect[3] & ITEM3_STATUS_ALL) return AI_ITEM_CURE_CONDITION; - else if (itemEffect[0] & (ITEM0_HIGH_CRIT | ITEM0_X_ATTACK) || itemEffect[1] != 0 || itemEffect[2] != 0) + else if (itemEffect[0] & (ITEM0_DIRE_HIT | ITEM0_X_ATTACK) || itemEffect[1] != 0 || itemEffect[2] != 0) return AI_ITEM_X_STAT; - else if (itemEffect[3] & ITEM3_MIST) + else if (itemEffect[3] & ITEM3_GUARD_SPEC) return AI_ITEM_GUARD_SPECS; else return AI_ITEM_NOT_RECOGNIZABLE; @@ -907,7 +907,7 @@ static bool8 ShouldUseItem(void) *(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= 0x8; if (itemEffects[2] & ITEM2_X_ACCURACY) *(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= 0x20; - if (itemEffects[0] & ITEM0_HIGH_CRIT) + if (itemEffects[0] & ITEM0_DIRE_HIT) *(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= 0x80; shouldUse = TRUE; break; diff --git a/src/battle_pyramid_bag.c b/src/battle_pyramid_bag.c index bdd1b14621..7c650800b9 100644 --- a/src/battle_pyramid_bag.c +++ b/src/battle_pyramid_bag.c @@ -67,7 +67,7 @@ static void sub_81C700C(void); static void sub_81C6E98(void); static void sub_81C6F20(void); static void sub_81C6404(void); -static void sub_81C6E1C(void); +static void CloseBattlePyramidBagTextWindow(void); static bool8 sub_81C5238(void); static bool8 sub_81C5078(void); static void ShowItemImage(u16 itemId, u8 itemSpriteArrayId); @@ -809,7 +809,7 @@ static void sub_81C5AB8(u8 y, u8 arg1) PrintOnWindow_Font1(0, gText_SelectorArrow2, 0, y, 0, 0, 0, arg1); } -void sub_81C5B14(u8 taskId) +void CloseBattlePyramidBagAndSetCallback(u8 taskId) { BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK); gTasks[taskId].func = sub_81C5B4C; @@ -862,7 +862,7 @@ static void Task_HandlePyramidBagInput(u8 taskId) case LIST_CANCEL: PlaySE(SE_SELECT); gSpecialVar_ItemId = 0; - sub_81C5B14(taskId); + CloseBattlePyramidBagAndSetCallback(taskId); break; default: PlaySE(SE_SELECT); @@ -1043,7 +1043,7 @@ static void BagAction_UseOnField(u8 taskId) || ItemIsMail(gSpecialVar_ItemId) == TRUE) { sub_81C61A8(); - DisplayItemMessageInBattlePyramid(taskId, gText_DadsAdvice, sub_81C6714); + DisplayItemMessageInBattlePyramid(taskId, gText_DadsAdvice, Task_CloseBattlePyramidBagMessage); } else if (ItemId_GetFieldFunc(gSpecialVar_ItemId) != NULL) { @@ -1203,7 +1203,7 @@ static void BagAction_Give(u8 taskId) else if (!ItemId_GetImportance(gSpecialVar_ItemId)) { gPyramidBagResources->callback2 = CB2_ChooseMonToGiveItem; - sub_81C5B14(taskId); + CloseBattlePyramidBagAndSetCallback(taskId); } else { @@ -1223,15 +1223,15 @@ static void sub_81C66EC(u8 taskId) if (gMain.newKeys & A_BUTTON) { PlaySE(SE_SELECT); - sub_81C6714(taskId); + Task_CloseBattlePyramidBagMessage(taskId); } } -void sub_81C6714(u8 taskId) +void Task_CloseBattlePyramidBagMessage(u8 taskId) { s16 *data = gTasks[taskId].data; - sub_81C6E1C(); + CloseBattlePyramidBagTextWindow(); PrintItemDescription(data[1]); sub_81C5A98(data[0], 0); SetTaskToMainPyramidBagInputHandler(taskId); @@ -1242,7 +1242,7 @@ static void sub_81C674C(u8 taskId) if (!itemid_80BF6D8_mail_related(gSpecialVar_ItemId)) DisplayItemMessageInBattlePyramid(taskId, gText_CantWriteMail, sub_81C66EC); else if (!ItemId_GetImportance(gSpecialVar_ItemId)) - sub_81C5B14(taskId); + CloseBattlePyramidBagAndSetCallback(taskId); else sub_81C66AC(taskId); } @@ -1462,7 +1462,7 @@ void DisplayItemMessageInBattlePyramid(u8 taskId, const u8 *str, void (*callback schedule_bg_copy_tilemap_to_vram(1); } -static void sub_81C6E1C(void) +static void CloseBattlePyramidBagTextWindow(void) { ClearDialogWindowAndFrameToTransparent(2, FALSE); // This ClearWindowTilemap call is redundant, since ClearDialogWindowAndFrameToTransparent already calls it. diff --git a/src/berry_tag_screen.c b/src/berry_tag_screen.c index 873d01dc75..89175c1bf7 100644 --- a/src/berry_tag_screen.c +++ b/src/berry_tag_screen.c @@ -527,7 +527,7 @@ static void Task_CloseBerryTagScreen(u8 taskId) DestroyFlavorCircleSprites(); Free(sBerryTag); FreeAllWindowBuffers(); - SetMainCallback2(bag_menu_mail_related); + SetMainCallback2(CB2_ReturnToBagMenuPocket); DestroyTask(taskId); } } diff --git a/src/bike.c b/src/bike.c index fad61ffabb..7397fed401 100644 --- a/src/bike.c +++ b/src/bike.c @@ -1056,7 +1056,7 @@ void Bike_HandleBumpySlopeJump(void) bool32 IsRunningDisallowed(u8 metatile) { - if (!(gMapHeader.flags & 4) || IsRunningDisallowedByMetatile(metatile) == TRUE) + if (!(gMapHeader.flags & MAP_ALLOW_RUN) || IsRunningDisallowedByMetatile(metatile) == TRUE) return TRUE; else return FALSE; diff --git a/src/data/pokemon/item_effects.h b/src/data/pokemon/item_effects.h index 2c153b0ef8..698d97a436 100644 --- a/src/data/pokemon/item_effects.h +++ b/src/data/pokemon/item_effects.h @@ -236,7 +236,7 @@ const u8 gItemEffect_PPMax[9] = { }; const u8 gItemEffect_GuardSpec[8] = { - [3] = ITEM3_MIST, + [3] = ITEM3_GUARD_SPEC, [5] = ITEM5_FRIENDSHIP_LOW | ITEM5_FRIENDSHIP_MID, [6] = 1, [7] = 1, diff --git a/src/decoration.c b/src/decoration.c index df28e3b77b..d09f238d79 100644 --- a/src/decoration.c +++ b/src/decoration.c @@ -14,6 +14,7 @@ #include "graphics.h" #include "international_string_util.h" #include "item_icon.h" +#include "item_menu.h" #include "list_menu.h" #include "main.h" #include "menu.h" diff --git a/src/fieldmap.c b/src/fieldmap.c index f595803ff6..21bbaa8f86 100644 --- a/src/fieldmap.c +++ b/src/fieldmap.c @@ -859,7 +859,7 @@ int sub_8088A4C(struct MapConnection *connection, int x, int y) return FALSE; } -struct MapConnection *sub_8088A8C(s16 x, s16 y) +struct MapConnection *GetConnectionAtCoords(s16 x, s16 y) { int count; struct MapConnection *connection; diff --git a/src/fldeff_dig.c b/src/fldeff_dig.c index b39d25182b..7f10e126ef 100644 --- a/src/fldeff_dig.c +++ b/src/fldeff_dig.c @@ -57,7 +57,7 @@ static void sub_8135780(void) } else { - taskId = CreateTask(task08_080A1C44, 8); + taskId = CreateTask(Task_UseDigEscapeRopeOnField, 8); gTasks[taskId].data[0] = 0; } } diff --git a/src/item_menu.c b/src/item_menu.c index 6b0226188c..97ef4f933a 100755 --- a/src/item_menu.c +++ b/src/item_menu.c @@ -136,7 +136,7 @@ void ItemMenu_Give(u8 taskId); void ItemMenu_Cancel(u8 taskId); void ItemMenu_UseInBattle(u8 taskId); void ItemMenu_CheckTag(u8 taskId); -void unknown_ItemMenu_Confirm(u8 taskId); +void Task_FadeAndCloseBagMenu(u8 taskId); void unknown_ItemMenu_Show(u8 taskId); void unknown_ItemMenu_Give2(u8 taskId); void unknown_ItemMenu_Confirm2(u8 taskId); @@ -216,7 +216,7 @@ const struct MenuAction sItemMenuActions[] = { {gMenuText_Walk, ItemMenu_UseOutOfBattle}, {gMenuText_Deselect, ItemMenu_Register}, {gMenuText_CheckTag, ItemMenu_CheckTag}, - {gMenuText_Confirm, unknown_ItemMenu_Confirm}, + {gMenuText_Confirm, Task_FadeAndCloseBagMenu}, {gMenuText_Show, unknown_ItemMenu_Show}, {gMenuText_Give2, unknown_ItemMenu_Give2}, {gMenuText_Confirm, unknown_ItemMenu_Confirm2}, @@ -241,7 +241,7 @@ const TaskFunc gUnknown_08614054[] = { unknown_item_menu_type, item_menu_type_2, DisplaySellItemAskString, - unknown_ItemMenu_Confirm, + Task_FadeAndCloseBagMenu, unknown_item_menu_type, DisplayDepositItemAskString, unknown_item_menu_type, @@ -942,7 +942,7 @@ void FreeBagItemListBuffers(void) Free(gBagMenu); } -void unknown_ItemMenu_Confirm(u8 taskId) +void Task_FadeAndCloseBagMenu(u8 taskId) { BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK); gTasks[taskId].func = TaskCloseBagMenu_2; @@ -966,7 +966,7 @@ void TaskCloseBagMenu_2(u8 taskId) } } -void sub_81AB9A8(u8 pocketId) +void UpdatePocketItemList(u8 pocketId) { u16 i; struct BagPocket *pocket = &gBagPockets[pocketId]; @@ -997,7 +997,7 @@ void sub_81ABA6C(void) { u8 i; for (i = 0; i < POCKETS_COUNT; i++) - sub_81AB9A8(i); + UpdatePocketItemList(i); } void SetInitialScrollAndCursorPositions(u8 pocketId) @@ -1041,7 +1041,7 @@ void BagMenu_InitListsMenu(u8 taskId) u16* cursorPos = &gBagPositionStruct.cursorPosition[gBagPositionStruct.pocket]; bag_menu_RemoveBagItem_message_window(4); DestroyListMenuTask(data[0], scrollPos, cursorPos); - sub_81AB9A8(gBagPositionStruct.pocket); + UpdatePocketItemList(gBagPositionStruct.pocket); SetInitialScrollAndCursorPositions(gBagPositionStruct.pocket); LoadBagItemListBuffers(gBagPositionStruct.pocket); data[0] = ListMenuInit(&gMultiuseListMenuTemplate, *scrollPos, *cursorPos); @@ -1117,7 +1117,7 @@ void Task_BagMenu(u8 taskId) } PlaySE(SE_SELECT); gSpecialVar_ItemId = select; - gTasks[taskId].func = unknown_ItemMenu_Confirm; + gTasks[taskId].func = Task_FadeAndCloseBagMenu; break; default: // A_BUTTON PlaySE(SE_SELECT); @@ -1744,7 +1744,7 @@ void Task_ActuallyToss(u8 taskId) PlaySE(SE_SELECT); RemoveBagItem(gSpecialVar_ItemId, data[8]); DestroyListMenuTask(data[0], scrollPos, cursorPos); - sub_81AB9A8(gBagPositionStruct.pocket); + UpdatePocketItemList(gBagPositionStruct.pocket); SetInitialScrollAndCursorPositions(gBagPositionStruct.pocket); LoadBagItemListBuffers(gBagPositionStruct.pocket); data[0] = ListMenuInit(&gMultiuseListMenuTemplate, *scrollPos, *cursorPos); @@ -1784,7 +1784,7 @@ void ItemMenu_Give(u8 taskId) else { gBagMenu->mainCallback2 = CB2_ChooseMonToGiveItem; - unknown_ItemMenu_Confirm(taskId); + Task_FadeAndCloseBagMenu(taskId); } } else @@ -1817,7 +1817,7 @@ void sub_81AD350(u8 taskId) void ItemMenu_CheckTag(u8 taskId) { gBagMenu->mainCallback2 = DoBerryTagScreen; - unknown_ItemMenu_Confirm(taskId); + Task_FadeAndCloseBagMenu(taskId); } void ItemMenu_Cancel(u8 taskId) @@ -1841,7 +1841,7 @@ void ItemMenu_UseInBattle(u8 taskId) } } -void bag_menu_mail_related(void) +void CB2_ReturnToBagMenuPocket(void) { GoToBagMenu(RETURN_LOCATION_UNCHANGED, POCKETS_COUNT, NULL); } @@ -1860,7 +1860,7 @@ void item_menu_type_2(u8 taskId) } else if (gBagPositionStruct.pocket != KEYITEMS_POCKET && !ItemId_GetImportance(gSpecialVar_ItemId)) { - unknown_ItemMenu_Confirm(taskId); + Task_FadeAndCloseBagMenu(taskId); } else { @@ -1873,11 +1873,13 @@ void item_menu_type_b(u8 taskId) if (ItemIsMail(gSpecialVar_ItemId) == TRUE) DisplayItemMessage(taskId, 1, gText_CantWriteMail, sub_81AD350); else if (gBagPositionStruct.pocket != KEYITEMS_POCKET && !ItemId_GetImportance(gSpecialVar_ItemId)) - gTasks[taskId].func = unknown_ItemMenu_Confirm; + gTasks[taskId].func = Task_FadeAndCloseBagMenu; else BagMenu_PrintItemCantBeHeld(taskId); } +#define tUsingRegisteredKeyItem data[3] + bool8 UseRegisteredKeyItemOnField(void) { u8 taskId; @@ -1896,16 +1898,20 @@ bool8 UseRegisteredKeyItemOnField(void) sub_808BCF4(); gSpecialVar_ItemId = gSaveBlock1Ptr->registeredItem; taskId = CreateTask(ItemId_GetFieldFunc(gSaveBlock1Ptr->registeredItem), 8); - gTasks[taskId].data[3] = 1; + gTasks[taskId].tUsingRegisteredKeyItem = TRUE; return TRUE; } else + { gSaveBlock1Ptr->registeredItem = ITEM_NONE; + } } ScriptContext1_SetupScript(EventScript_SelectWithoutRegisteredItem); return TRUE; } +#undef tUsingRegisteredKeyItem + void DisplaySellItemAskString(u8 taskId) { s16* data = gTasks[taskId].data; @@ -2012,7 +2018,7 @@ void sub_81AD8C8(u8 taskId) RemoveBagItem(gSpecialVar_ItemId, data[8]); AddMoney(&gSaveBlock1Ptr->money, (ItemId_GetPrice(gSpecialVar_ItemId) / 2) * data[8]); DestroyListMenuTask(data[0], scrollPos, cursorPos); - sub_81AB9A8(gBagPositionStruct.pocket); + UpdatePocketItemList(gBagPositionStruct.pocket); SetInitialScrollAndCursorPositions(gBagPositionStruct.pocket); LoadBagItemListBuffers(gBagPositionStruct.pocket); data[0] = ListMenuInit(&gMultiuseListMenuTemplate, *scrollPos, *cursorPos); @@ -2186,7 +2192,7 @@ void Task_WallyTutorialBagMenu(u8 taskId) BagMenu_RemoveSomeWindow(); DestroyListMenuTask(data[0], 0, 0); RestoreBagAfterWallyTutorial(); - unknown_ItemMenu_Confirm(taskId); + Task_FadeAndCloseBagMenu(taskId); break; default: data[8]++; @@ -2200,7 +2206,7 @@ void unknown_ItemMenu_Show(u8 taskId) gSpecialVar_0x8005 = gSpecialVar_ItemId; gSpecialVar_Result = 1; BagMenu_RemoveSomeWindow(); - unknown_ItemMenu_Confirm(taskId); + Task_FadeAndCloseBagMenu(taskId); } void CB2_ApprenticeExitBagMenu(void) @@ -2214,7 +2220,7 @@ void unknown_ItemMenu_Give2(u8 taskId) RemoveBagItem(gSpecialVar_ItemId, 1); gSpecialVar_Result = 1; BagMenu_RemoveSomeWindow(); - unknown_ItemMenu_Confirm(taskId); + Task_FadeAndCloseBagMenu(taskId); } void CB2_FavorLadyExitBagMenu(void) @@ -2227,7 +2233,7 @@ void unknown_ItemMenu_Confirm2(u8 taskId) { gSpecialVar_Result = 1; BagMenu_RemoveSomeWindow(); - unknown_ItemMenu_Confirm(taskId); + Task_FadeAndCloseBagMenu(taskId); } void CB2_QuizLadyExitBagMenu(void) diff --git a/src/item_use.c b/src/item_use.c index 7a410aa7da..b352079cf8 100755 --- a/src/item_use.c +++ b/src/item_use.c @@ -10,6 +10,7 @@ #include "data.h" #include "event_data.h" #include "event_object_movement.h" +#include "event_scripts.h" #include "fieldmap.h" #include "field_effect.h" #include "field_player_avatar.h" @@ -43,49 +44,40 @@ #include "constants/vars.h" #include "event_obj_lock.h" -extern u8 BerryTree_EventScript_ItemUsePlantBerry[]; -extern u8 BerryTree_EventScript_ItemUseWailmerPail[]; -extern u8 BattleFrontier_OutsideEast_EventScript_WaterSudowoodo[]; - -void SetUpItemUseCallback(u8 taskId); -void MapPostLoadHook_UseItem(void); -void sub_80AF6D4(void); -void Task_CallItemUseOnFieldCallback(u8 taskId); -void BagMenu_InitListsMenu(u8 taskId); -void ItemUseOnFieldCB_Bike(u8 taskId); -void ItemUseOnFieldCB_Rod(u8 taskId); -void ItemUseOnFieldCB_Itemfinder(u8 taskId); -void sub_80FD504(u8 taskId); -void sub_80FD5CC(u8 taskId); -void sub_80FDA94(u8 taskId); -void sub_80FDADC(u8 taskId); -void sub_80FD7C8(u8 taskId); -void sub_80FDC00(u8 taskId); -void ItemUseOnFieldCB_Berry(u8 taskId); -void ItemUseOnFieldCB_WailmerPailBerry(u8 taskId); -void ItemUseOnFieldCB_WailmerPailSudowoodo(u8 taskId); +static void SetUpItemUseCallback(u8 taskId); +static void FieldCB_UseItemOnField(void); +static void Task_CallItemUseOnFieldCallback(u8 taskId); +static void Task_UseItemfinder(u8 taskId); +static void Task_CloseItemfinderMessage(u8 taskId); +static void Task_HiddenItemNearby(u8 taskId); +static void Task_StandingOnHiddenItem(u8 taskId); +static bool8 ItemfinderCheckForHiddenItems(const struct MapEvents *, u8); +static u8 GetDirectionToHiddenItem(s16 distanceX, s16 distanceY); +static void PlayerFaceHiddenItem(u8 a); +static void CheckForHiddenItemsInMapConnection(u8 taskId); +static void sub_80FDC00(u8 taskId); +static void ItemUseOnFieldCB_Bike(u8 taskId); +static void ItemUseOnFieldCB_Rod(u8); +static void ItemUseOnFieldCB_Itemfinder(u8); +static void ItemUseOnFieldCB_Berry(u8 taskId); +static void ItemUseOnFieldCB_WailmerPailBerry(u8 taskId); +static void ItemUseOnFieldCB_WailmerPailSudowoodo(u8 taskId); +static bool8 TryToWaterSudowoodo(void); static void BootUpSoundTMHM(u8 taskId); static void Task_ShowTMHMContainedMessage(u8 taskId); static void UseTMHMYesNo(u8 taskId); static void UseTMHM(u8 taskId); -void sub_80FE124(u8 taskId); -void sub_80FE164(u8 taskId); - -void DisplayItemMessage(u8 taskId, u8 a, const u8* str, void(*callback)(u8 taskId)); -void DisplayItemMessageOnField(u8 taskId, const u8* str, void(*callback)(u8 taskId)); -void sub_81C6714(u8 taskId); -void CleanUpAfterFailingToUseRegisteredKeyItemOnField(u8 taskId); -void StartFishing(u8 a); -bool8 ItemfinderCheckForHiddenItems(const struct MapEvents *, u8); -u8 sub_80FD9B0(s16 a, s16 b); -void sub_80FDA24(u8 a); -void sub_80FD8E0(u8 taskId, s16 x, s16 y); -void sub_80FDBEC(void); -bool8 TryToWaterSudowoodo(void); -void ItemUseOutOfBattle_CannotUse(u8 taskId); +static void Task_StartUseRepel(u8 taskId); +static void Task_UseRepel(u8 taskId); +static void Task_CloseCantUseKeyItemMessage(u8 taskId); +static void SetDistanceOfClosestHiddenItem(u8 taskId, s16 x, s16 y); +static void CB2_OpenPokeblockCaseOnField(void); // EWRAM variables -EWRAM_DATA static void(*gUnknown_0203A0F4)(u8 taskId) = NULL; +EWRAM_DATA static void(*sItemUseOnFieldCB)(u8 taskId) = NULL; + +// Below is set TRUE by UseRegisteredKeyItemOnField +#define tUsingRegisteredKeyItem data[3] // .rodata @@ -96,7 +88,7 @@ static const MainCallback sItemUseCallbacks[] = NULL, }; -static const u8 gUnknown_085920E4[] = {DIR_NORTH, DIR_EAST, DIR_SOUTH, DIR_WEST}; +static const u8 sClockwiseDirections[] = {DIR_NORTH, DIR_EAST, DIR_SOUTH, DIR_WEST}; static const struct YesNoFuncTable sUseTMHMYesNoFuncTable = { @@ -106,7 +98,7 @@ static const struct YesNoFuncTable sUseTMHMYesNoFuncTable = // .text -void SetUpItemUseCallback(u8 taskId) +static void SetUpItemUseCallback(u8 taskId) { u8 type; if (gSpecialVar_ItemId == ITEM_ENIGMA_BERRY) @@ -116,39 +108,39 @@ void SetUpItemUseCallback(u8 taskId) if (!InBattlePyramid()) { gBagMenu->mainCallback2 = sItemUseCallbacks[type]; - unknown_ItemMenu_Confirm(taskId); + Task_FadeAndCloseBagMenu(taskId); } else { gPyramidBagResources->callback2 = sItemUseCallbacks[type]; - sub_81C5B14(taskId); + CloseBattlePyramidBagAndSetCallback(taskId); } } -void SetUpItemUseOnFieldCallback(u8 taskId) +static void SetUpItemUseOnFieldCallback(u8 taskId) { - if (gTasks[taskId].data[3] != 1) + if (gTasks[taskId].tUsingRegisteredKeyItem != TRUE) { - gFieldCallback = MapPostLoadHook_UseItem; + gFieldCallback = FieldCB_UseItemOnField; SetUpItemUseCallback(taskId); } else - gUnknown_0203A0F4(taskId); + sItemUseOnFieldCB(taskId); } -void MapPostLoadHook_UseItem(void) +static void FieldCB_UseItemOnField(void) { FadeInFromBlack(); CreateTask(Task_CallItemUseOnFieldCallback, 8); } -void Task_CallItemUseOnFieldCallback(u8 taskId) +static void Task_CallItemUseOnFieldCallback(u8 taskId) { if (IsWeatherNotFadingIn() == 1) - gUnknown_0203A0F4(taskId); + sItemUseOnFieldCB(taskId); } -void DisplayCannotUseItemMessage(u8 taskId, bool8 isUsingRegisteredKeyItemOnField, const u8 *str) +static void DisplayCannotUseItemMessage(u8 taskId, bool8 isUsingRegisteredKeyItemOnField, const u8 *str) { StringExpandPlaceholders(gStringVar4, str); if (!isUsingRegisteredKeyItemOnField) @@ -156,23 +148,23 @@ void DisplayCannotUseItemMessage(u8 taskId, bool8 isUsingRegisteredKeyItemOnFiel if (!InBattlePyramid()) DisplayItemMessage(taskId, 1, gStringVar4, BagMenu_InitListsMenu); else - DisplayItemMessageInBattlePyramid(taskId, gText_DadsAdvice, sub_81C6714); + DisplayItemMessageInBattlePyramid(taskId, gText_DadsAdvice, Task_CloseBattlePyramidBagMessage); } else - DisplayItemMessageOnField(taskId, gStringVar4, CleanUpAfterFailingToUseRegisteredKeyItemOnField); + DisplayItemMessageOnField(taskId, gStringVar4, Task_CloseCantUseKeyItemMessage); } -void DisplayDadsAdviceCannotUseItemMessage(u8 taskId, bool8 isUsingRegisteredKeyItemOnField) +static void DisplayDadsAdviceCannotUseItemMessage(u8 taskId, bool8 isUsingRegisteredKeyItemOnField) { DisplayCannotUseItemMessage(taskId, isUsingRegisteredKeyItemOnField, gText_DadsAdvice); } -void DisplayCannotDismountBikeMessage(u8 taskId, bool8 isUsingRegisteredKeyItemOnField) +static void DisplayCannotDismountBikeMessage(u8 taskId, bool8 isUsingRegisteredKeyItemOnField) { DisplayCannotUseItemMessage(taskId, isUsingRegisteredKeyItemOnField, gText_CantDismountBike); } -void CleanUpAfterFailingToUseRegisteredKeyItemOnField(u8 taskId) +static void Task_CloseCantUseKeyItemMessage(u8 taskId) { ClearDialogWindowAndFrame(0, 1); DestroyTask(taskId); @@ -190,17 +182,18 @@ u8 CheckIfItemIsTMHMOrEvolutionStone(u16 itemId) return 0; } -void sub_80FD254(void) +// Mail in the bag menu can't have a message but it can be checked (view the mail background, no message) +static void CB2_CheckMail(void) { struct MailStruct mail; mail.itemId = gSpecialVar_ItemId; - ReadMail(&mail, bag_menu_mail_related, 0); + ReadMail(&mail, CB2_ReturnToBagMenuPocket, 0); } void ItemUseOutOfBattle_Mail(u8 taskId) { - gBagMenu->mainCallback2 = sub_80FD254; - unknown_ItemMenu_Confirm(taskId); + gBagMenu->mainCallback2 = CB2_CheckMail; + Task_FadeAndCloseBagMenu(taskId); } void ItemUseOutOfBattle_Bike(u8 taskId) @@ -212,20 +205,20 @@ void ItemUseOutOfBattle_Bike(u8 taskId) PlayerGetDestCoords(&coordsX, &coordsY); behavior = MapGridGetMetatileBehaviorAt(coordsX, coordsY); if (FlagGet(FLAG_SYS_CYCLING_ROAD) == TRUE || MetatileBehavior_IsVerticalRail(behavior) == TRUE || MetatileBehavior_IsHorizontalRail(behavior) == TRUE || MetatileBehavior_IsIsolatedVerticalRail(behavior) == TRUE || MetatileBehavior_IsIsolatedHorizontalRail(behavior) == TRUE) - DisplayCannotDismountBikeMessage(taskId, data[3]); + DisplayCannotDismountBikeMessage(taskId, tUsingRegisteredKeyItem); else { if (Overworld_IsBikingAllowed() == TRUE && IsBikingDisallowedByPlayer() == 0) { - gUnknown_0203A0F4 = ItemUseOnFieldCB_Bike; + sItemUseOnFieldCB = ItemUseOnFieldCB_Bike; SetUpItemUseOnFieldCallback(taskId); } else - DisplayDadsAdviceCannotUseItemMessage(taskId, data[3]); + DisplayDadsAdviceCannotUseItemMessage(taskId, tUsingRegisteredKeyItem); } } -void ItemUseOnFieldCB_Bike(u8 taskId) +static void ItemUseOnFieldCB_Bike(u8 taskId) { if (!ItemId_GetSecondaryId(gSpecialVar_ItemId)) GetOnOffBike(2); @@ -236,7 +229,7 @@ void ItemUseOnFieldCB_Bike(u8 taskId) DestroyTask(taskId); } -bool32 CanFish(void) +static bool32 CanFish(void) { s16 x, y; u16 tileBehavior; @@ -270,14 +263,14 @@ void ItemUseOutOfBattle_Rod(u8 taskId) { if (CanFish() == TRUE) { - gUnknown_0203A0F4 = ItemUseOnFieldCB_Rod; + sItemUseOnFieldCB = ItemUseOnFieldCB_Rod; SetUpItemUseOnFieldCallback(taskId); } else - DisplayDadsAdviceCannotUseItemMessage(taskId, gTasks[taskId].data[3]); + DisplayDadsAdviceCannotUseItemMessage(taskId, gTasks[taskId].tUsingRegisteredKeyItem); } -void ItemUseOnFieldCB_Rod(u8 taskId) +static void ItemUseOnFieldCB_Rod(u8 taskId) { StartFishing(ItemId_GetSecondaryId(gSpecialVar_ItemId)); DestroyTask(taskId); @@ -285,56 +278,65 @@ void ItemUseOnFieldCB_Rod(u8 taskId) void ItemUseOutOfBattle_Itemfinder(u8 var) { - IncrementGameStat(0x27); - gUnknown_0203A0F4 = ItemUseOnFieldCB_Itemfinder; + IncrementGameStat(GAME_STAT_USED_ITEMFINDER); + sItemUseOnFieldCB = ItemUseOnFieldCB_Itemfinder; SetUpItemUseOnFieldCallback(var); } -void ItemUseOnFieldCB_Itemfinder(u8 taskId) +static void ItemUseOnFieldCB_Itemfinder(u8 taskId) { if (ItemfinderCheckForHiddenItems(gMapHeader.events, taskId) == TRUE) - gTasks[taskId].func = sub_80FD504; + gTasks[taskId].func = Task_UseItemfinder; else - DisplayItemMessageOnField(taskId, gText_ItemFinderNothing, sub_80FD5CC); + DisplayItemMessageOnField(taskId, gText_ItemFinderNothing, Task_CloseItemfinderMessage); } -void sub_80FD504(u8 taskId) +// Define itemfinder task data +#define tItemDistanceX data[0] +#define tItemDistanceY data[1] +#define tItemFound data[2] +#define tCounter data[3] // Used to count delay between beeps and rotations during player spin +#define tItemfinderBeeps data[4] +#define tFacingDir data[5] + +static void Task_UseItemfinder(u8 taskId) { u8 playerDir; u8 playerDirToItem; u8 i; s16* data = gTasks[taskId].data; - if (!data[3]) + if (tCounter == 0) { - if (data[4] == 4) + if (tItemfinderBeeps == 4) { - playerDirToItem = sub_80FD9B0(data[0], data[1]); - if (playerDirToItem) + playerDirToItem = GetDirectionToHiddenItem(tItemDistanceX, tItemDistanceY); + if (playerDirToItem != DIR_NONE) { - sub_80FDA24(gUnknown_085920E4[playerDirToItem - 1]); - gTasks[taskId].func = sub_80FDA94; + PlayerFaceHiddenItem(sClockwiseDirections[playerDirToItem - 1]); + gTasks[taskId].func = Task_HiddenItemNearby; } else { + // Player is standing on hidden item playerDir = GetPlayerFacingDirection(); - for (i = 0; i < 4; i++) + for (i = 0; i < ARRAY_COUNT(sClockwiseDirections); i++) { - if (playerDir == gUnknown_085920E4[i]) - data[5] = (i + 1) & 3; + if (playerDir == sClockwiseDirections[i]) + tFacingDir = (i + 1) & 3; } - gTasks[taskId].func = sub_80FDADC; - data[3] = 0; - data[2] = 0; + gTasks[taskId].func = Task_StandingOnHiddenItem; + tCounter = 0; + tItemFound = 0; } return; } PlaySE(SE_DAUGI); - data[4]++; + tItemfinderBeeps++; } - data[3] = (data[3] + 1) & 0x1F; + tCounter = (tCounter + 1) & 0x1F; } -void sub_80FD5CC(u8 taskId) +static void Task_CloseItemfinderMessage(u8 taskId) { ClearDialogWindowAndFrame(0, 1); ScriptUnfreezeEventObjects(); @@ -342,34 +344,36 @@ void sub_80FD5CC(u8 taskId) DestroyTask(taskId); } -bool8 ItemfinderCheckForHiddenItems(const struct MapEvents *events, u8 taskId) +static bool8 ItemfinderCheckForHiddenItems(const struct MapEvents *events, u8 taskId) { - int distanceX, distanceY; - s16 x, y, i, newDistanceX, newDistanceY; - PlayerGetDestCoords(&x, &y); - gTasks[taskId].data[2] = FALSE; + int itemX, itemY; + s16 playerX, playerY, i, distanceX, distanceY; + PlayerGetDestCoords(&playerX, &playerY); + gTasks[taskId].tItemFound = FALSE; + for (i = 0; i < events->bgEventCount; i++) { + // Check if there are any hidden items on the current map that haven't been picked up if (events->bgEvents[i].kind == BG_EVENT_HIDDEN_ITEM && !FlagGet(events->bgEvents[i].bgUnion.hiddenItem.hiddenItemId + FLAG_HIDDEN_ITEMS_START)) { - distanceX = (u16)events->bgEvents[i].x + 7; - newDistanceX = distanceX - x; - distanceY = (u16)events->bgEvents[i].y + 7; - newDistanceY = distanceY - y; + itemX = (u16)events->bgEvents[i].x + 7; + distanceX = itemX - playerX; + itemY = (u16)events->bgEvents[i].y + 7; + distanceY = itemY - playerY; - if ((u16)(newDistanceX + 7) < 15 && (newDistanceY >= -5) && (newDistanceY < 6)) - sub_80FD8E0(taskId, newDistanceX, newDistanceY); + if ((u16)(distanceX + 7) < 15 && (distanceY >= -5) && (distanceY < 6)) + SetDistanceOfClosestHiddenItem(taskId, distanceX, distanceY); } } - sub_80FD7C8(taskId); - if (gTasks[taskId].data[2] == TRUE) + CheckForHiddenItemsInMapConnection(taskId); + if (gTasks[taskId].tItemFound == TRUE) return TRUE; else return FALSE; } -bool8 sub_80FD6D4(const struct MapEvents *events, s16 x, s16 y) +static bool8 IsHiddenItemPresentAtCoords(const struct MapEvents *events, s16 x, s16 y) { u8 bgEventCount = events->bgEventCount; struct BgEvent *bgEvent = events->bgEvents; @@ -388,7 +392,7 @@ bool8 sub_80FD6D4(const struct MapEvents *events, s16 x, s16 y) return FALSE; } -bool8 sub_80FD730(struct MapConnection *connection, int x, int y) +static bool8 IsHiddenItemPresentInConnection(struct MapConnection *connection, int x, int y) { u16 localX, localY; @@ -399,7 +403,7 @@ bool8 sub_80FD730(struct MapConnection *connection, int x, int y) switch (connection->direction) { - // same weird temp variable behavior seen in sub_80FD6D4 + // same weird temp variable behavior seen in IsHiddenItemPresentAtCoords case 2: localOffset = connection->offset + 7; localX = x - localOffset; @@ -427,136 +431,145 @@ bool8 sub_80FD730(struct MapConnection *connection, int x, int y) default: return FALSE; } - return sub_80FD6D4(mapHeader->events, localX, localY); + return IsHiddenItemPresentAtCoords(mapHeader->events, localX, localY); } -void sub_80FD7C8(u8 taskId) +static void CheckForHiddenItemsInMapConnection(u8 taskId) { + s16 playerX, playerY; s16 x, y; - s16 curX, curY; s16 width = gMapHeader.mapLayout->width + 7; s16 height = gMapHeader.mapLayout->height + 7; s16 var1 = 7; s16 var2 = 7; - PlayerGetDestCoords(&x, &y); + PlayerGetDestCoords(&playerX, &playerY); - for (curX = x - 7; curX <= x + 7; curX++) + for (x = playerX - 7; x <= playerX + 7; x++) { - for (curY = y - 5; curY <= y + 5; curY++) + for (y = playerY - 5; y <= playerY + 5; y++) { - if (var1 > curX - || curX >= width - || var2 > curY - || curY >= height) + if (var1 > x + || x >= width + || var2 > y + || y >= height) { - struct MapConnection *conn = sub_8088A8C(curX, curY); - if (conn && sub_80FD730(conn, curX, curY) == TRUE) - sub_80FD8E0(taskId, curX - x, curY - y); + struct MapConnection *conn = GetConnectionAtCoords(x, y); + if (conn && IsHiddenItemPresentInConnection(conn, x, y) == TRUE) + SetDistanceOfClosestHiddenItem(taskId, x - playerX, y - playerY); } } } } -void sub_80FD8E0(u8 taskId, s16 x, s16 y) +static void SetDistanceOfClosestHiddenItem(u8 taskId, s16 itemDistanceX, s16 itemDistanceY) { s16 *data = gTasks[taskId].data; - s16 var1, var2, var3, var4; + s16 oldItemAbsX, oldItemAbsY, newItemAbsX, newItemAbsY; - if (data[2] == FALSE) + if (tItemFound == FALSE) { - data[0] = x; - data[1] = y; - data[2] = TRUE; + // No other items found yet, set this one + tItemDistanceX = itemDistanceX; + tItemDistanceY = itemDistanceY; + tItemFound = TRUE; } else { - // data[0] and data[1] contain the player's coordinates. - // x and y contain the item's coordinates. - if (data[0] < 0) - var1 = data[0] * -1; // item is to the left - else - var1 = data[0]; // item is to the right + // Other items have been found, check if this one is closer - if (data[1] < 0) - var2 = data[1] * -1; // item is to the north + // Get absolute x distance of the already-found item + if (tItemDistanceX < 0) + oldItemAbsX = tItemDistanceX * -1; // WEST else - var2 = data[1]; // item is to the south + oldItemAbsX = tItemDistanceX; // EAST - if (x < 0) - var3 = x * -1; + // Get absolute y distance of the already-found item + if (tItemDistanceY < 0) + oldItemAbsY = tItemDistanceY * -1; // NORTH else - var3 = x; + oldItemAbsY = tItemDistanceY; // SOUTH - if (y < 0) - var4 = y * -1; + // Get absolute x distance of the newly-found item + if (itemDistanceX < 0) + newItemAbsX = itemDistanceX * -1; else - var4 = y; + newItemAbsX = itemDistanceX; - if (var1 + var2 > var3 + var4) + // Get absolute y distance of the newly-found item + if (itemDistanceY < 0) + newItemAbsY = itemDistanceY * -1; + else + newItemAbsY = itemDistanceY; + + + if (oldItemAbsX + oldItemAbsY > newItemAbsX + newItemAbsY) { - data[0] = x; - data[1] = y; + // New item is closer + tItemDistanceX = itemDistanceX; + tItemDistanceY = itemDistanceY; } else { - if (var1 + var2 == var3 + var4 && (var2 > var4 || (var2 == var4 && data[1] < y))) + if (oldItemAbsX + oldItemAbsY == newItemAbsX + newItemAbsY + && (oldItemAbsY > newItemAbsY || (oldItemAbsY == newItemAbsY && tItemDistanceY < itemDistanceY))) { - data[0] = x; - data[1] = y; + // If items are equal distance, use whichever is closer on the Y axis or further south + tItemDistanceX = itemDistanceX; + tItemDistanceY = itemDistanceY; } } } } -u8 sub_80FD9B0(s16 itemX, s16 itemY) +static u8 GetDirectionToHiddenItem(s16 itemDistanceX, s16 itemDistanceY) { - s16 abX, abY; + s16 absX, absY; - if (itemX == 0 && itemY == 0) + if (itemDistanceX == 0 && itemDistanceY == 0) return DIR_NONE; // player is standing on the item. - // get absolute X distance. - if (itemX < 0) - abX = itemX * -1; + // Get absolute X distance. + if (itemDistanceX < 0) + absX = itemDistanceX * -1; else - abX = itemX; + absX = itemDistanceX; - // get absolute Y distance. - if (itemY < 0) - abY = itemY * -1; + // Get absolute Y distance. + if (itemDistanceY < 0) + absY = itemDistanceY * -1; else - abY = itemY; + absY = itemDistanceY; - if (abX > abY) + if (absX > absY) { - if (itemX < 0) + if (itemDistanceX < 0) return DIR_EAST; else return DIR_NORTH; } else { - if (abX < abY) + if (absX < absY) { - if (itemY < 0) + if (itemDistanceY < 0) return DIR_SOUTH; else return DIR_WEST; } - if (abX == abY) + if (absX == absY) { - if (itemY < 0) + if (itemDistanceY < 0) return DIR_SOUTH; else return DIR_WEST; } - return DIR_NONE; // should never get here. return something so it doesnt crash. + return DIR_NONE; // Unreachable } } -void sub_80FDA24(u8 direction) +static void PlayerFaceHiddenItem(u8 direction) { EventObjectClearHeldMovementIfFinished(&gEventObjects[GetEventObjectIdByLocalIdAndMap(EVENT_OBJ_ID_PLAYER, 0, 0)]); EventObjectClearHeldMovement(&gEventObjects[GetEventObjectIdByLocalIdAndMap(EVENT_OBJ_ID_PLAYER, 0, 0)]); @@ -564,39 +577,48 @@ void sub_80FDA24(u8 direction) PlayerTurnInPlace(direction); } -void sub_80FDA94(u8 taskId) +static void Task_HiddenItemNearby(u8 taskId) { if (EventObjectCheckHeldMovementStatus(&gEventObjects[GetEventObjectIdByLocalIdAndMap(EVENT_OBJ_ID_PLAYER, 0, 0)]) == TRUE) - DisplayItemMessageOnField(taskId, gText_ItemFinderNearby, sub_80FD5CC); + DisplayItemMessageOnField(taskId, gText_ItemFinderNearby, Task_CloseItemfinderMessage); } -void sub_80FDADC(u8 taskId) +static void Task_StandingOnHiddenItem(u8 taskId) { s16 *data = gTasks[taskId].data; if (EventObjectCheckHeldMovementStatus(&gEventObjects[GetEventObjectIdByLocalIdAndMap(EVENT_OBJ_ID_PLAYER, 0, 0)]) == TRUE - || data[2] == FALSE) + || tItemFound == FALSE) { - sub_80FDA24(gUnknown_085920E4[data[5]]); - data[2] = 1; - data[5] = (data[5] + 1) & 3; - data[3]++; + // Spin player around on item + PlayerFaceHiddenItem(sClockwiseDirections[tFacingDir]); + tItemFound = TRUE; + tFacingDir = (tFacingDir + 1) & 3; + tCounter++; - if (data[3] == 4) - DisplayItemMessageOnField(taskId, gText_ItemFinderOnTop, sub_80FD5CC); + if (tCounter == 4) + DisplayItemMessageOnField(taskId, gText_ItemFinderOnTop, Task_CloseItemfinderMessage); } } +// Undefine itemfinder task data +#undef tItemDistanceX +#undef tItemDistanceY +#undef tItemFound +#undef tCounter +#undef tItemfinderBeeps +#undef tFacingDir + void ItemUseOutOfBattle_PokeblockCase(u8 taskId) { - if (sub_81221AC() == TRUE) + if (sub_81221AC() == TRUE) // link func { - DisplayDadsAdviceCannotUseItemMessage(taskId, gTasks[taskId].data[3]); + DisplayDadsAdviceCannotUseItemMessage(taskId, gTasks[taskId].tUsingRegisteredKeyItem); } - else if (gTasks[taskId].data[3] != TRUE) + else if (gTasks[taskId].tUsingRegisteredKeyItem != TRUE) { - gBagMenu->mainCallback2 = sub_80FDBEC; - unknown_ItemMenu_Confirm(taskId); + gBagMenu->mainCallback2 = CB2_OpenPokeblockCaseOnField; + Task_FadeAndCloseBagMenu(taskId); } else { @@ -606,17 +628,17 @@ void ItemUseOutOfBattle_PokeblockCase(u8 taskId) } } -void sub_80FDBEC(void) +static void CB2_OpenPokeblockCaseOnField(void) { - OpenPokeblockCase(0, bag_menu_mail_related); + OpenPokeblockCase(PBLOCK_CASE_FIELD, CB2_ReturnToBagMenuPocket); } -void sub_80FDC00(u8 taskId) +static void sub_80FDC00(u8 taskId) { if (!gPaletteFade.active) { CleanupOverworldWindowsAndTilemaps(); - OpenPokeblockCase(0, CB2_ReturnToField); + OpenPokeblockCase(PBLOCK_CASE_FIELD, CB2_ReturnToField); DestroyTask(taskId); } } @@ -626,13 +648,13 @@ void ItemUseOutOfBattle_CoinCase(u8 taskId) ConvertIntToDecimalStringN(gStringVar1, GetCoins(), STR_CONV_MODE_LEFT_ALIGN, 4); StringExpandPlaceholders(gStringVar4, gText_CoinCase); - if (!gTasks[taskId].data[3]) + if (!gTasks[taskId].tUsingRegisteredKeyItem) { DisplayItemMessage(taskId, 1, gStringVar4, BagMenu_InitListsMenu); } else { - DisplayItemMessageOnField(taskId, gStringVar4, CleanUpAfterFailingToUseRegisteredKeyItemOnField); + DisplayItemMessageOnField(taskId, gStringVar4, Task_CloseCantUseKeyItemMessage); } } @@ -641,13 +663,13 @@ void ItemUseOutOfBattle_PowderJar(u8 taskId) ConvertIntToDecimalStringN(gStringVar1, GetBerryPowder(), STR_CONV_MODE_LEFT_ALIGN, 5); StringExpandPlaceholders(gStringVar4, gText_PowderQty); - if (!gTasks[taskId].data[3]) + if (!gTasks[taskId].tUsingRegisteredKeyItem) { DisplayItemMessage(taskId, 1, gStringVar4, BagMenu_InitListsMenu); } else { - DisplayItemMessageOnField(taskId, gStringVar4, CleanUpAfterFailingToUseRegisteredKeyItemOnField); + DisplayItemMessageOnField(taskId, gStringVar4, Task_CloseCantUseKeyItemMessage); } } @@ -655,10 +677,10 @@ void ItemUseOutOfBattle_Berry(u8 taskId) { if (IsPlayerFacingEmptyBerryTreePatch() == TRUE) { - gUnknown_0203A0F4 = ItemUseOnFieldCB_Berry; - gFieldCallback = MapPostLoadHook_UseItem; + sItemUseOnFieldCB = ItemUseOnFieldCB_Berry; + gFieldCallback = FieldCB_UseItemOnField; gBagMenu->mainCallback2 = CB2_ReturnToField; - unknown_ItemMenu_Confirm(taskId); + Task_FadeAndCloseBagMenu(taskId); } else { @@ -666,7 +688,7 @@ void ItemUseOutOfBattle_Berry(u8 taskId) } } -void ItemUseOnFieldCB_Berry(u8 taskId) +static void ItemUseOnFieldCB_Berry(u8 taskId) { RemoveBagItem(gSpecialVar_ItemId, 1); ScriptContext2_Enable(); @@ -678,28 +700,28 @@ void ItemUseOutOfBattle_WailmerPail(u8 taskId) { if (TryToWaterSudowoodo() == TRUE) { - gUnknown_0203A0F4 = ItemUseOnFieldCB_WailmerPailSudowoodo; + sItemUseOnFieldCB = ItemUseOnFieldCB_WailmerPailSudowoodo; SetUpItemUseOnFieldCallback(taskId); } else if (TryToWaterBerryTree() == TRUE) { - gUnknown_0203A0F4 = ItemUseOnFieldCB_WailmerPailBerry; + sItemUseOnFieldCB = ItemUseOnFieldCB_WailmerPailBerry; SetUpItemUseOnFieldCallback(taskId); } else { - DisplayDadsAdviceCannotUseItemMessage(taskId, gTasks[taskId].data[3]); + DisplayDadsAdviceCannotUseItemMessage(taskId, gTasks[taskId].tUsingRegisteredKeyItem); } } -void ItemUseOnFieldCB_WailmerPailBerry(u8 taskId) +static void ItemUseOnFieldCB_WailmerPailBerry(u8 taskId) { ScriptContext2_Enable(); ScriptContext1_SetupScript(BerryTree_EventScript_ItemUseWailmerPail); DestroyTask(taskId); } -bool8 TryToWaterSudowoodo(void) +static bool8 TryToWaterSudowoodo(void) { u16 x, y; u8 z; @@ -713,7 +735,7 @@ bool8 TryToWaterSudowoodo(void) return TRUE; } -void ItemUseOnFieldCB_WailmerPailSudowoodo(u8 taskId) +static void ItemUseOnFieldCB_WailmerPailSudowoodo(u8 taskId) { ScriptContext2_Enable(); ScriptContext1_SetupScript(BattleFrontier_OutsideEast_EventScript_WaterSudowoodo); @@ -791,14 +813,14 @@ static void UseTMHM(u8 taskId) SetUpItemUseCallback(taskId); } -void sub_80FE058(void) +static void RemoveUsedItem(void) { RemoveBagItem(gSpecialVar_ItemId, 1); CopyItemName(gSpecialVar_ItemId, gStringVar2); StringExpandPlaceholders(gStringVar4, gText_PlayerUsedVar2); if (!InBattlePyramid()) { - sub_81AB9A8(ItemId_GetPocket(gSpecialVar_ItemId)); + UpdatePocketItemList(ItemId_GetPocket(gSpecialVar_ItemId)); SetInitialScrollAndCursorPositions(ItemId_GetPocket(gSpecialVar_ItemId)); } else @@ -811,14 +833,14 @@ void sub_80FE058(void) void ItemUseOutOfBattle_Repel(u8 taskId) { if (VarGet(VAR_REPEL_STEP_COUNT) == 0) - gTasks[taskId].func = sub_80FE124; + gTasks[taskId].func = Task_StartUseRepel; else if (!InBattlePyramid()) DisplayItemMessage(taskId, 1, gText_RepelEffectsLingered, BagMenu_InitListsMenu); else - DisplayItemMessageInBattlePyramid(taskId, gText_RepelEffectsLingered, sub_81C6714); + DisplayItemMessageInBattlePyramid(taskId, gText_RepelEffectsLingered, Task_CloseBattlePyramidBagMessage); } -void sub_80FE124(u8 taskId) +static void Task_StartUseRepel(u8 taskId) { s16* data = gTasks[taskId].data; @@ -826,24 +848,24 @@ void sub_80FE124(u8 taskId) { data[8] = 0; PlaySE(SE_TU_SAA); - gTasks[taskId].func = sub_80FE164; + gTasks[taskId].func = Task_UseRepel; } } -void sub_80FE164(u8 taskId) +static void Task_UseRepel(u8 taskId) { if (!IsSEPlaying()) { VarSet(VAR_REPEL_STEP_COUNT, ItemId_GetHoldEffectParam(gSpecialVar_ItemId)); - sub_80FE058(); + RemoveUsedItem(); if (!InBattlePyramid()) DisplayItemMessage(taskId, 1, gStringVar4, BagMenu_InitListsMenu); else - DisplayItemMessageInBattlePyramid(taskId, gStringVar4, sub_81C6714); + DisplayItemMessageInBattlePyramid(taskId, gStringVar4, Task_CloseBattlePyramidBagMessage); } } -void sub_80FE1D0(u8 taskId) +static void Task_UsedBlackWhiteFlute(u8 taskId) { if(++gTasks[taskId].data[8] > 7) { @@ -851,7 +873,7 @@ void sub_80FE1D0(u8 taskId) if (!InBattlePyramid()) DisplayItemMessage(taskId, 1, gStringVar4, BagMenu_InitListsMenu); else - DisplayItemMessageInBattlePyramid(taskId, gStringVar4, sub_81C6714); + DisplayItemMessageInBattlePyramid(taskId, gStringVar4, Task_CloseBattlePyramidBagMessage); } } @@ -871,27 +893,27 @@ void ItemUseOutOfBattle_BlackWhiteFlute(u8 taskId) StringExpandPlaceholders(gStringVar4, gText_UsedVar2WildRepelled); } gTasks[taskId].data[8] = 0; - gTasks[taskId].func = sub_80FE1D0; + gTasks[taskId].func = Task_UsedBlackWhiteFlute; } -void task08_080A1C44(u8 taskId) +void Task_UseDigEscapeRopeOnField(u8 taskId) { ResetInitialPlayerAvatarState(); StartEscapeRopeFieldEffect(); DestroyTask(taskId); } -void re_escape_rope(u8 taskId) +static void ItemUseOnFieldCB_EscapeRope(u8 taskId) { Overworld_ResetStateAfterDigEscRope(); - sub_80FE058(); + RemoveUsedItem(); gTasks[taskId].data[0] = 0; - DisplayItemMessageOnField(taskId, gStringVar4, task08_080A1C44); + DisplayItemMessageOnField(taskId, gStringVar4, Task_UseDigEscapeRopeOnField); } bool8 CanUseEscapeRopeOnCurrMap(void) { - if (gMapHeader.flags & 2) + if (gMapHeader.flags & MAP_ALLOW_ESCAPE_ROPE) return TRUE; else return FALSE; @@ -901,12 +923,12 @@ void ItemUseOutOfBattle_EscapeRope(u8 taskId) { if (CanUseEscapeRopeOnCurrMap() == TRUE) { - gUnknown_0203A0F4 = re_escape_rope; + sItemUseOnFieldCB = ItemUseOnFieldCB_EscapeRope; SetUpItemUseOnFieldCallback(taskId); } else { - DisplayDadsAdviceCannotUseItemMessage(taskId, gTasks[taskId].data[3]); + DisplayDadsAdviceCannotUseItemMessage(taskId, gTasks[taskId].tUsingRegisteredKeyItem); } } @@ -922,42 +944,43 @@ void ItemUseInBattle_PokeBall(u8 taskId) { RemoveBagItem(gSpecialVar_ItemId, 1); if (!InBattlePyramid()) - unknown_ItemMenu_Confirm(taskId); + Task_FadeAndCloseBagMenu(taskId); else - sub_81C5B14(taskId); + CloseBattlePyramidBagAndSetCallback(taskId); } else if (!InBattlePyramid()) { DisplayItemMessage(taskId, 1, gText_BoxFull, BagMenu_InitListsMenu); } else - DisplayItemMessageInBattlePyramid(taskId, gText_BoxFull, sub_81C6714); + DisplayItemMessageInBattlePyramid(taskId, gText_BoxFull, Task_CloseBattlePyramidBagMessage); } -void sub_80FE408(u8 taskId) +static void Task_CloseStatIncreaseMessage(u8 taskId) { if (gMain.newKeys & (A_BUTTON | B_BUTTON)) { if (!InBattlePyramid()) - unknown_ItemMenu_Confirm(taskId); + Task_FadeAndCloseBagMenu(taskId); else - sub_81C5B14(taskId); + CloseBattlePyramidBagAndSetCallback(taskId); } } -void sub_80FE440(u8 taskId) +static void Task_UseStatIncreaseItem(u8 taskId) { if(++gTasks[taskId].data[8] > 7) { PlaySE(SE_KAIFUKU); RemoveBagItem(gSpecialVar_ItemId, 1); if (!InBattlePyramid()) - DisplayItemMessage(taskId, 1, sub_806CF78(gSpecialVar_ItemId), sub_80FE408); + DisplayItemMessage(taskId, 1, UseStatIncreaseItem(gSpecialVar_ItemId), Task_CloseStatIncreaseMessage); else - DisplayItemMessageInBattlePyramid(taskId, sub_806CF78(gSpecialVar_ItemId), sub_80FE408); + DisplayItemMessageInBattlePyramid(taskId, UseStatIncreaseItem(gSpecialVar_ItemId), Task_CloseStatIncreaseMessage); } } +// e.g. X Attack, Guard Spec void ItemUseInBattle_StatIncrease(u8 taskId) { u16 partyId = gBattlerPartyIndexes[gBattlerInMenuId]; @@ -967,11 +990,11 @@ void ItemUseInBattle_StatIncrease(u8 taskId) if (!InBattlePyramid()) DisplayItemMessage(taskId, 1, gText_WontHaveEffect, BagMenu_InitListsMenu); else - DisplayItemMessageInBattlePyramid(taskId, gText_WontHaveEffect, sub_81C6714); + DisplayItemMessageInBattlePyramid(taskId, gText_WontHaveEffect, Task_CloseBattlePyramidBagMessage); } else { - gTasks[taskId].func = sub_80FE440; + gTasks[taskId].func = Task_UseStatIncreaseItem; gTasks[taskId].data[8] = 0; } } @@ -981,12 +1004,12 @@ static void ItemUseInBattle_ShowPartyMenu(u8 taskId) if (!InBattlePyramid()) { gBagMenu->mainCallback2 = ChooseMonForInBattleItem; - unknown_ItemMenu_Confirm(taskId); + Task_FadeAndCloseBagMenu(taskId); } else { gPyramidBagResources->callback2 = ChooseMonForInBattleItem; - sub_81C5B14(taskId); + CloseBattlePyramidBagAndSetCallback(taskId); } } @@ -1009,20 +1032,21 @@ void ItemUseInBattle_PPRecovery(u8 taskId) ItemUseInBattle_ShowPartyMenu(taskId); } +// Fluffy Tail / Poke Doll void ItemUseInBattle_Escape(u8 taskId) { if((gBattleTypeFlags & BATTLE_TYPE_TRAINER) == FALSE) { - sub_80FE058(); + RemoveUsedItem(); if (!InBattlePyramid()) - DisplayItemMessage(taskId, 1, gStringVar4, unknown_ItemMenu_Confirm); + DisplayItemMessage(taskId, 1, gStringVar4, Task_FadeAndCloseBagMenu); else - DisplayItemMessageInBattlePyramid(taskId, gStringVar4, sub_81C5B14); + DisplayItemMessageInBattlePyramid(taskId, gStringVar4, CloseBattlePyramidBagAndSetCallback); } else { - DisplayDadsAdviceCannotUseItemMessage(taskId, gTasks[taskId].data[3]); + DisplayDadsAdviceCannotUseItemMessage(taskId, gTasks[taskId].tUsingRegisteredKeyItem); } } @@ -1099,5 +1123,7 @@ void ItemUseInBattle_EnigmaBerry(u8 taskId) void ItemUseOutOfBattle_CannotUse(u8 taskId) { - DisplayDadsAdviceCannotUseItemMessage(taskId, gTasks[taskId].data[3]); + DisplayDadsAdviceCannotUseItemMessage(taskId, gTasks[taskId].tUsingRegisteredKeyItem); } + +#undef tUsingRegisteredKeyItem diff --git a/src/overworld.c b/src/overworld.c index 3d7f71f786..1cb2643690 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -978,7 +978,7 @@ static u16 GetCenterScreenMetatileBehavior(void) bool32 Overworld_IsBikingAllowed(void) { - if (!(gMapHeader.flags & 1)) + if (!(gMapHeader.flags & MAP_ALLOW_BIKE)) return FALSE; else return TRUE; @@ -1702,7 +1702,7 @@ void sub_80861E8(void) static void sub_8086204(void) { - if ((gMapHeader.flags & 0xF8) == 8 && SecretBaseMapPopupEnabled() == TRUE) + if (SHOW_MAP_NAME_ENABLED && SecretBaseMapPopupEnabled() == TRUE) ShowMapNamePopup(); FieldCB_WarpExitFadeFromBlack(); } @@ -1948,7 +1948,7 @@ static bool32 load_map_stuff(u8 *state, u32 a2) (*state)++; break; case 11: - if ((gMapHeader.flags & 0xF8) == 8 && SecretBaseMapPopupEnabled() == TRUE) + if (SHOW_MAP_NAME_ENABLED && SecretBaseMapPopupEnabled() == TRUE) ShowMapNamePopup(); (*state)++; break; diff --git a/src/party_menu.c b/src/party_menu.c index 367e842954..53b5b5ca59 100755 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -5186,7 +5186,7 @@ u8 GetItemEffectType(u16 item) else itemEffect = gItemEffectTable[item - ITEM_POTION]; - if ((itemEffect[0] & (ITEM0_HIGH_CRIT | ITEM0_X_ATTACK)) || itemEffect[1] || itemEffect[2] || (itemEffect[3] & ITEM3_MIST)) + if ((itemEffect[0] & (ITEM0_DIRE_HIT | ITEM0_X_ATTACK)) || itemEffect[1] || itemEffect[2] || (itemEffect[3] & ITEM3_GUARD_SPEC)) return ITEM_EFFECT_X_ITEM; else if (itemEffect[0] & ITEM0_SACRED_ASH) return ITEM_EFFECT_SACRED_ASH; diff --git a/src/pokeblock.c b/src/pokeblock.c index 342221880e..b9031e1730 100644 --- a/src/pokeblock.c +++ b/src/pokeblock.c @@ -451,7 +451,7 @@ void OpenPokeblockCase(u8 caseId, void (*callback)(void)) sPokeblockMenu->pokeblockOptionsIds = sActionsWhenGivingToLady; sPokeblockMenu->optionsNo = ARRAY_COUNT(sActionsWhenGivingToLady); break; - default: + default: // PBLOCK_CASE_FIELD sPokeblockMenu->pokeblockOptionsIds = sActionsOnField; sPokeblockMenu->optionsNo = ARRAY_COUNT(sActionsOnField); break; diff --git a/src/pokemon.c b/src/pokemon.c index 12820aa76e..15427e6ea8 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -2043,7 +2043,8 @@ static const u8 sGetMonDataEVConstants[] = MON_DATA_SPATK_EV }; -static const u8 gUnknown_08329EC8[] = +// For stat-raising items +static const u8 sStatsToRaise[] = { STAT_ATK, STAT_ATK, STAT_SPEED, STAT_DEF, STAT_SPATK, STAT_ACC }; @@ -4691,7 +4692,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov gBattleMons[battlerId].status2 &= ~STATUS2_INFATUATION; retVal = FALSE; } - if ((itemEffect[cmdIndex] & ITEM0_HIGH_CRIT) + if ((itemEffect[cmdIndex] & ITEM0_DIRE_HIT) && !(gBattleMons[gActiveBattler].status2 & STATUS2_FOCUS_ENERGY)) { gBattleMons[gActiveBattler].status2 |= STATUS2_FOCUS_ENERGY; @@ -4745,7 +4746,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov } break; case 3: - if ((itemEffect[cmdIndex] & ITEM3_MIST) + if ((itemEffect[cmdIndex] & ITEM3_GUARD_SPEC) && gSideTimers[GetBattlerSide(gActiveBattler)].mistTimer == 0) { gSideTimers[GetBattlerSide(gActiveBattler)].mistTimer = 5; @@ -5285,15 +5286,15 @@ u8 GetItemEffectParamOffset(u16 itemId, u8 effectByte, u8 effectBit) return offset; } -static void sub_806CF24(s32 arg0) +static void BufferStatRoseMessage(s32 arg0) { gBattlerTarget = gBattlerInMenuId; - StringCopy(gBattleTextBuff1, gStatNamesTable[gUnknown_08329EC8[arg0]]); + StringCopy(gBattleTextBuff1, gStatNamesTable[sStatsToRaise[arg0]]); StringCopy(gBattleTextBuff2, gText_StatRose); BattleStringExpandPlaceholdersToDisplayedString(gText_PkmnsStatChanged2); } -u8 *sub_806CF78(u16 itemId) +u8 *UseStatIncreaseItem(u16 itemId) { int i; const u8 *itemEffect; @@ -5314,13 +5315,14 @@ u8 *sub_806CF78(u16 itemId) for (i = 0; i < 3; i++) { - if (itemEffect[i] & 0xF) - sub_806CF24(i * 2); - if (itemEffect[i] & 0xF0) + if (itemEffect[i] & (ITEM0_X_ATTACK | ITEM1_X_SPEED | ITEM2_X_SPATK)) + BufferStatRoseMessage(i * 2); + + if (itemEffect[i] & (ITEM0_DIRE_HIT | ITEM1_X_DEFEND | ITEM2_X_ACCURACY)) { - if (i) + if (i != 0) // Dire Hit is the only ITEM0 above { - sub_806CF24(i * 2 + 1); + BufferStatRoseMessage(i * 2 + 1); } else { @@ -5330,7 +5332,7 @@ u8 *sub_806CF78(u16 itemId) } } - if (itemEffect[3] & ITEM3_MIST) + if (itemEffect[3] & ITEM3_GUARD_SPEC) { gBattlerAttacker = gBattlerInMenuId; BattleStringExpandPlaceholdersToDisplayedString(gText_PkmnShroudedInMist); diff --git a/src/region_map.c b/src/region_map.c index 75ce60056c..5694d4c7a8 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -997,7 +997,7 @@ static void RegionMap_InitializeStateBasedOnPlayerLocation(void) break; case MAP_TYPE_UNDERGROUND: case MAP_TYPE_UNUSED_2: - if (gMapHeader.flags & 0x02) + if (gMapHeader.flags & MAP_ALLOW_ESCAPE_ROPE) { mapHeader = Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->escapeWarp.mapGroup, gSaveBlock1Ptr->escapeWarp.mapNum); gRegionMap->mapSecId = mapHeader->regionMapSectionId; diff --git a/src/secret_base.c b/src/secret_base.c index 23c4ba0823..f2ac6cb720 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -16,6 +16,7 @@ #include "fldeff.h" #include "fldeff_misc.h" #include "international_string_util.h" +#include "item_menu.h" #include "link.h" #include "list_menu.h" #include "main.h" From b80fa767ab13eb64241a6fc81eef06bcaa00a690 Mon Sep 17 00:00:00 2001 From: AJ Fontaine <36677462+Fontbane@users.noreply.github.com> Date: Mon, 23 Dec 2019 10:42:06 -0500 Subject: [PATCH 07/37] Give rivals and Maxie battles better names Name describes where the battle is and for rivals, which starter the player chose. --- src/data/trainer_parties.h | 66 +++++++++++++++++++------------------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/src/data/trainer_parties.h b/src/data/trainer_parties.h index 477967b95a..16ee35893f 100644 --- a/src/data/trainer_parties.h +++ b/src/data/trainer_parties.h @@ -6781,7 +6781,7 @@ static const struct TrainerMonNoItemCustomMoves sParty_Wally1[] = { } }; -static const struct TrainerMonNoItemDefaultMoves sParty_Brendan1[] = { +static const struct TrainerMonNoItemDefaultMoves sParty_BrendanRoute103Mudkip[] = {//Brendan1 { .iv = 0, .lvl = 5, @@ -6789,7 +6789,7 @@ static const struct TrainerMonNoItemDefaultMoves sParty_Brendan1[] = { } }; -static const struct TrainerMonNoItemDefaultMoves sParty_Brendan2[] = { +static const struct TrainerMonNoItemDefaultMoves sParty_BrendanRoute110Mudkip[] = {//Brendan2 { .iv = 50, .lvl = 18, @@ -6807,7 +6807,7 @@ static const struct TrainerMonNoItemDefaultMoves sParty_Brendan2[] = { } }; -static const struct TrainerMonNoItemDefaultMoves sParty_Brendan3[] = { +static const struct TrainerMonNoItemDefaultMoves sParty_BrendanRoute119Mudkip[] = {//Brendan3 { .iv = 100, .lvl = 29, @@ -6825,7 +6825,7 @@ static const struct TrainerMonNoItemDefaultMoves sParty_Brendan3[] = { } }; -static const struct TrainerMonNoItemDefaultMoves sParty_Brendan4[] = { +static const struct TrainerMonNoItemDefaultMoves sParty_BrendanRoute103Treecko[] = {//Brendan4 { .iv = 0, .lvl = 5, @@ -6833,7 +6833,7 @@ static const struct TrainerMonNoItemDefaultMoves sParty_Brendan4[] = { } }; -static const struct TrainerMonNoItemDefaultMoves sParty_Brendan5[] = { +static const struct TrainerMonNoItemDefaultMoves sParty_BrendanRoute110Treecko[] = {//Brendan5 { .iv = 50, .lvl = 18, @@ -6851,7 +6851,7 @@ static const struct TrainerMonNoItemDefaultMoves sParty_Brendan5[] = { } }; -static const struct TrainerMonNoItemDefaultMoves sParty_Brendan6[] = { +static const struct TrainerMonNoItemDefaultMoves sParty_BrendanRoute119Treecko[] = {//Brendan6 { .iv = 100, .lvl = 29, @@ -6869,7 +6869,7 @@ static const struct TrainerMonNoItemDefaultMoves sParty_Brendan6[] = { } }; -static const struct TrainerMonNoItemDefaultMoves sParty_Brendan7[] = { +static const struct TrainerMonNoItemDefaultMoves sParty_BrendanRoute103Torchic[] = {//Brendan7 { .iv = 0, .lvl = 5, @@ -6877,7 +6877,7 @@ static const struct TrainerMonNoItemDefaultMoves sParty_Brendan7[] = { } }; -static const struct TrainerMonNoItemDefaultMoves sParty_Brendan8[] = { +static const struct TrainerMonNoItemDefaultMoves sParty_BrendanRoute110Torchic[] = {//Brendan8 { .iv = 50, .lvl = 18, @@ -6895,7 +6895,7 @@ static const struct TrainerMonNoItemDefaultMoves sParty_Brendan8[] = { } }; -static const struct TrainerMonNoItemDefaultMoves sParty_Brendan9[] = { +static const struct TrainerMonNoItemDefaultMoves sParty_BrendanRoute119Torchic[] = {//Brendan9 { .iv = 100, .lvl = 29, @@ -6913,7 +6913,7 @@ static const struct TrainerMonNoItemDefaultMoves sParty_Brendan9[] = { } }; -static const struct TrainerMonNoItemDefaultMoves sParty_May1[] = { +static const struct TrainerMonNoItemDefaultMoves sParty_MayRoute103Mudkip[] = {//May1 { .iv = 0, .lvl = 5, @@ -6921,7 +6921,7 @@ static const struct TrainerMonNoItemDefaultMoves sParty_May1[] = { } }; -static const struct TrainerMonNoItemDefaultMoves sParty_May2[] = { +static const struct TrainerMonNoItemDefaultMoves sParty_MayRoute110Mudkip[] = {//May2 { .iv = 50, .lvl = 18, @@ -6939,7 +6939,7 @@ static const struct TrainerMonNoItemDefaultMoves sParty_May2[] = { } }; -static const struct TrainerMonNoItemDefaultMoves sParty_May3[] = { +static const struct TrainerMonNoItemDefaultMoves sParty_MayRoute119Mudkip[] = {//May3 { .iv = 100, .lvl = 29, @@ -6957,7 +6957,7 @@ static const struct TrainerMonNoItemDefaultMoves sParty_May3[] = { } }; -static const struct TrainerMonNoItemDefaultMoves sParty_May4[] = { +static const struct TrainerMonNoItemDefaultMoves sParty_MayRoute103Treecko[] = {//May4 { .iv = 0, .lvl = 5, @@ -6965,7 +6965,7 @@ static const struct TrainerMonNoItemDefaultMoves sParty_May4[] = { } }; -static const struct TrainerMonNoItemDefaultMoves sParty_May5[] = { +static const struct TrainerMonNoItemDefaultMoves sParty_MayRoute110Treecko[] = {//May5 { .iv = 50, .lvl = 18, @@ -6983,7 +6983,7 @@ static const struct TrainerMonNoItemDefaultMoves sParty_May5[] = { } }; -static const struct TrainerMonNoItemDefaultMoves sParty_May6[] = { +static const struct TrainerMonNoItemDefaultMoves sParty_MayRoute119Treecko[] = {//May6 { .iv = 100, .lvl = 29, @@ -7001,7 +7001,7 @@ static const struct TrainerMonNoItemDefaultMoves sParty_May6[] = { } }; -static const struct TrainerMonNoItemDefaultMoves sParty_May7[] = { +static const struct TrainerMonNoItemDefaultMoves sParty_MayRoute103Torchic[] = {//May7 { .iv = 0, .lvl = 5, @@ -7009,7 +7009,7 @@ static const struct TrainerMonNoItemDefaultMoves sParty_May7[] = { } }; -static const struct TrainerMonNoItemDefaultMoves sParty_May8[] = { +static const struct TrainerMonNoItemDefaultMoves sParty_MayRoute110Torchic[] = {//May8 { .iv = 50, .lvl = 18, @@ -7027,7 +7027,7 @@ static const struct TrainerMonNoItemDefaultMoves sParty_May8[] = { } }; -static const struct TrainerMonNoItemDefaultMoves sParty_May9[] = { +static const struct TrainerMonNoItemDefaultMoves sParty_MayRoute119Torchic[] = {//May9 { .iv = 100, .lvl = 29, @@ -7833,7 +7833,7 @@ static const struct TrainerMonNoItemDefaultMoves sParty_Macey[] = { } }; -static const struct TrainerMonNoItemDefaultMoves sParty_Brendan10[] = { +static const struct TrainerMonNoItemDefaultMoves sParty_BrendanRustboroTreecko[] = {//Brendan10 { .iv = 25, .lvl = 13, @@ -7846,7 +7846,7 @@ static const struct TrainerMonNoItemDefaultMoves sParty_Brendan10[] = { } }; -static const struct TrainerMonNoItemDefaultMoves sParty_Brendan11[] = { +static const struct TrainerMonNoItemDefaultMoves sParty_BrendanRustboroMudkip[] = {//Brendan11 { .iv = 25, .lvl = 13, @@ -7929,7 +7929,7 @@ static const struct TrainerMonNoItemDefaultMoves sParty_Jonathan[] = { } }; -static const struct TrainerMonNoItemDefaultMoves sParty_Brendan12[] = { +static const struct TrainerMonNoItemDefaultMoves sParty_BrendanRustboroTorchic[] = {//Brendan12 { .iv = 25, .lvl = 13, @@ -7942,7 +7942,7 @@ static const struct TrainerMonNoItemDefaultMoves sParty_Brendan12[] = { } }; -static const struct TrainerMonNoItemDefaultMoves sParty_May10[] = { +static const struct TrainerMonNoItemDefaultMoves sParty_MayRustboroMudkip[] = {//May10 { .iv = 25, .lvl = 13, @@ -7955,7 +7955,7 @@ static const struct TrainerMonNoItemDefaultMoves sParty_May10[] = { } }; -static const struct TrainerMonNoItemDefaultMoves sParty_Maxie1[] = { +static const struct TrainerMonNoItemDefaultMoves sParty_MaxieMagmaHideout[] = {//Maxie1 { .iv = 150, .lvl = 37, @@ -7973,7 +7973,7 @@ static const struct TrainerMonNoItemDefaultMoves sParty_Maxie1[] = { } }; -static const struct TrainerMonNoItemDefaultMoves sParty_Maxie2[] = { +static const struct TrainerMonNoItemDefaultMoves sParty_MaxieMtChimney[] = {//Maxie2 { .iv = 150, .lvl = 24, @@ -8883,7 +8883,7 @@ static const struct TrainerMonNoItemCustomMoves sParty_Wally6[] = { } }; -static const struct TrainerMonNoItemDefaultMoves sParty_Brendan13[] = { +static const struct TrainerMonNoItemDefaultMoves sParty_BrendanLilycoveMudkip[] = {//Brendan13 { .iv = 150, .lvl = 31, @@ -8906,7 +8906,7 @@ static const struct TrainerMonNoItemDefaultMoves sParty_Brendan13[] = { } }; -static const struct TrainerMonNoItemDefaultMoves sParty_Brendan14[] = { +static const struct TrainerMonNoItemDefaultMoves sParty_BrendanLilycoveTreecko[] = {//Brendan14 { .iv = 150, .lvl = 31, @@ -8929,7 +8929,7 @@ static const struct TrainerMonNoItemDefaultMoves sParty_Brendan14[] = { } }; -static const struct TrainerMonNoItemDefaultMoves sParty_Brendan15[] = { +static const struct TrainerMonNoItemDefaultMoves sParty_BrendanLilycoveTorchic[] = {//Brendan15 { .iv = 150, .lvl = 31, @@ -8952,7 +8952,7 @@ static const struct TrainerMonNoItemDefaultMoves sParty_Brendan15[] = { } }; -static const struct TrainerMonNoItemDefaultMoves sParty_May11[] = { +static const struct TrainerMonNoItemDefaultMoves sParty_MayLilycoveMudkip[] = {//May11 { .iv = 150, .lvl = 31, @@ -8975,7 +8975,7 @@ static const struct TrainerMonNoItemDefaultMoves sParty_May11[] = { } }; -static const struct TrainerMonNoItemDefaultMoves sParty_May12[] = { +static const struct TrainerMonNoItemDefaultMoves sParty_MayLilycoveTreecko[] = {//May12 { .iv = 150, .lvl = 31, @@ -8998,7 +8998,7 @@ static const struct TrainerMonNoItemDefaultMoves sParty_May12[] = { } }; -static const struct TrainerMonNoItemDefaultMoves sParty_May13[] = { +static const struct TrainerMonNoItemDefaultMoves sParty_MayLilycoveTorchic[] = {//May13 { .iv = 150, .lvl = 31, @@ -9819,7 +9819,7 @@ static const struct TrainerMonNoItemDefaultMoves sParty_Darcy[] = { } }; -static const struct TrainerMonNoItemDefaultMoves sParty_Maxie3[] = { +static const struct TrainerMonNoItemDefaultMoves sParty_MaxieMossdeep[] = {//Maxie3 { .iv = 150, .lvl = 42, @@ -10272,7 +10272,7 @@ static const struct TrainerMonNoItemDefaultMoves sParty_Cristin1[] = { } }; -static const struct TrainerMonNoItemDefaultMoves sParty_May14[] = { +static const struct TrainerMonNoItemDefaultMoves sParty_MayRustboroTreecko[] = {//May14 { .iv = 25, .lvl = 13, @@ -10285,7 +10285,7 @@ static const struct TrainerMonNoItemDefaultMoves sParty_May14[] = { } }; -static const struct TrainerMonNoItemDefaultMoves sParty_May15[] = { +static const struct TrainerMonNoItemDefaultMoves sParty_MayRustboroTorchic[] = {//May15 { .iv = 25, .lvl = 13, From 2e8c20d72f2533d962d43751154366a31aa395be Mon Sep 17 00:00:00 2001 From: Fontbane <36677462+Fontbane@users.noreply.github.com> Date: Wed, 25 Dec 2019 20:48:40 -0500 Subject: [PATCH 08/37] Update trainers.h --- src/data/trainer_parties.h | 4 +- src/data/trainers.h | 140 ++++++++++++++++++------------------- 2 files changed, 72 insertions(+), 72 deletions(-) diff --git a/src/data/trainer_parties.h b/src/data/trainer_parties.h index 16ee35893f..932b563d78 100644 --- a/src/data/trainer_parties.h +++ b/src/data/trainer_parties.h @@ -12419,7 +12419,7 @@ static const struct TrainerMonNoItemDefaultMoves sParty_Leaf[] = { } }; -static const struct TrainerMonNoItemDefaultMoves sParty_Brendan16[] = { +static const struct TrainerMonNoItemDefaultMoves sParty_BrendanLinkPlaceholder[] = { { .iv = 0, .lvl = 5, @@ -12427,7 +12427,7 @@ static const struct TrainerMonNoItemDefaultMoves sParty_Brendan16[] = { } }; -static const struct TrainerMonNoItemDefaultMoves sParty_May16[] = { +static const struct TrainerMonNoItemDefaultMoves sParty_MayLinkPlaceholder[] = { { .iv = 0, .lvl = 5, diff --git a/src/data/trainers.h b/src/data/trainers.h index 327107007a..223a15726f 100644 --- a/src/data/trainers.h +++ b/src/data/trainers.h @@ -7289,8 +7289,8 @@ const struct Trainer gTrainers[] = { .items = {}, .doubleBattle = FALSE, .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, - .partySize = ARRAY_COUNT(sParty_Brendan1), - .party = {.NoItemDefaultMoves = sParty_Brendan1}, + .partySize = ARRAY_COUNT(sParty_BrendanRoute103Mudkip), + .party = {.NoItemDefaultMoves = sParty_BrendanRoute103Mudkip}, }, [TRAINER_BRENDAN_2] = @@ -7303,8 +7303,8 @@ const struct Trainer gTrainers[] = { .items = {}, .doubleBattle = FALSE, .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, - .partySize = ARRAY_COUNT(sParty_Brendan2), - .party = {.NoItemDefaultMoves = sParty_Brendan2}, + .partySize = ARRAY_COUNT(sParty_BrendanRoute110Mudkip), + .party = {.NoItemDefaultMoves = sParty_BrendanRoute110Mudkip}, }, [TRAINER_BRENDAN_3] = @@ -7317,8 +7317,8 @@ const struct Trainer gTrainers[] = { .items = {}, .doubleBattle = FALSE, .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, - .partySize = ARRAY_COUNT(sParty_Brendan3), - .party = {.NoItemDefaultMoves = sParty_Brendan3}, + .partySize = ARRAY_COUNT(sParty_BrendanRoute119Mudkip), + .party = {.NoItemDefaultMoves = sParty_BrendanRoute119Mudkip}, }, [TRAINER_BRENDAN_4] = @@ -7331,8 +7331,8 @@ const struct Trainer gTrainers[] = { .items = {}, .doubleBattle = FALSE, .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_SETUP_FIRST_TURN, - .partySize = ARRAY_COUNT(sParty_Brendan4), - .party = {.NoItemDefaultMoves = sParty_Brendan4}, + .partySize = ARRAY_COUNT(sParty_BrendanRoute103Treecko), + .party = {.NoItemDefaultMoves = sParty_BrendanRoute103Treecko}, }, [TRAINER_BRENDAN_5] = @@ -7345,8 +7345,8 @@ const struct Trainer gTrainers[] = { .items = {}, .doubleBattle = FALSE, .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, - .partySize = ARRAY_COUNT(sParty_Brendan5), - .party = {.NoItemDefaultMoves = sParty_Brendan5}, + .partySize = ARRAY_COUNT(sParty_BrendanRoute110Treecko), + .party = {.NoItemDefaultMoves = sParty_BrendanRoute110Treecko}, }, [TRAINER_BRENDAN_6] = @@ -7359,8 +7359,8 @@ const struct Trainer gTrainers[] = { .items = {}, .doubleBattle = FALSE, .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, - .partySize = ARRAY_COUNT(sParty_Brendan6), - .party = {.NoItemDefaultMoves = sParty_Brendan6}, + .partySize = ARRAY_COUNT(sParty_BrendanRoute119Treecko), + .party = {.NoItemDefaultMoves = sParty_BrendanRoute119Treecko}, }, [TRAINER_BRENDAN_7] = @@ -7373,8 +7373,8 @@ const struct Trainer gTrainers[] = { .items = {}, .doubleBattle = FALSE, .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, - .partySize = ARRAY_COUNT(sParty_Brendan7), - .party = {.NoItemDefaultMoves = sParty_Brendan7}, + .partySize = ARRAY_COUNT(sParty_BrendanRoute103Torchic), + .party = {.NoItemDefaultMoves = sParty_BrendanRoute103Torchic}, }, [TRAINER_BRENDAN_8] = @@ -7387,8 +7387,8 @@ const struct Trainer gTrainers[] = { .items = {}, .doubleBattle = FALSE, .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, - .partySize = ARRAY_COUNT(sParty_Brendan8), - .party = {.NoItemDefaultMoves = sParty_Brendan8}, + .partySize = ARRAY_COUNT(sParty_BrendanRoute110Torchic), + .party = {.NoItemDefaultMoves = sParty_BrendanRoute110Torchic}, }, [TRAINER_BRENDAN_9] = @@ -7401,8 +7401,8 @@ const struct Trainer gTrainers[] = { .items = {}, .doubleBattle = FALSE, .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, - .partySize = ARRAY_COUNT(sParty_Brendan9), - .party = {.NoItemDefaultMoves = sParty_Brendan9}, + .partySize = ARRAY_COUNT(sParty_BrendanRoute119Torchic), + .party = {.NoItemDefaultMoves = sParty_BrendanRoute119Torchic}, }, [TRAINER_MAY_1] = @@ -7415,8 +7415,8 @@ const struct Trainer gTrainers[] = { .items = {}, .doubleBattle = FALSE, .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, - .partySize = ARRAY_COUNT(sParty_May1), - .party = {.NoItemDefaultMoves = sParty_May1}, + .partySize = ARRAY_COUNT(sParty_MayRoute103Mudkip), + .party = {.NoItemDefaultMoves = sParty_MayRoute103Mudkip}, }, [TRAINER_MAY_2] = @@ -7429,8 +7429,8 @@ const struct Trainer gTrainers[] = { .items = {}, .doubleBattle = FALSE, .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, - .partySize = ARRAY_COUNT(sParty_May2), - .party = {.NoItemDefaultMoves = sParty_May2}, + .partySize = ARRAY_COUNT(sParty_MayRoute110Mudkip), + .party = {.NoItemDefaultMoves = sParty_MayRoute110Mudkip}, }, [TRAINER_MAY_3] = @@ -7443,8 +7443,8 @@ const struct Trainer gTrainers[] = { .items = {}, .doubleBattle = FALSE, .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, - .partySize = ARRAY_COUNT(sParty_May3), - .party = {.NoItemDefaultMoves = sParty_May3}, + .partySize = ARRAY_COUNT(sParty_MayRoute119Mudkip), + .party = {.NoItemDefaultMoves = sParty_MayRoute119Mudkip}, }, [TRAINER_MAY_4] = @@ -7457,8 +7457,8 @@ const struct Trainer gTrainers[] = { .items = {}, .doubleBattle = FALSE, .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, - .partySize = ARRAY_COUNT(sParty_May4), - .party = {.NoItemDefaultMoves = sParty_May4}, + .partySize = ARRAY_COUNT(sParty_MayRoute103Treecko), + .party = {.NoItemDefaultMoves = sParty_MayRoute103Treecko}, }, [TRAINER_MAY_5] = @@ -7471,8 +7471,8 @@ const struct Trainer gTrainers[] = { .items = {}, .doubleBattle = FALSE, .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, - .partySize = ARRAY_COUNT(sParty_May5), - .party = {.NoItemDefaultMoves = sParty_May5}, + .partySize = ARRAY_COUNT(sParty_MayRoute110Treecko), + .party = {.NoItemDefaultMoves = sParty_MayRoute110Treecko}, }, [TRAINER_MAY_6] = @@ -7485,8 +7485,8 @@ const struct Trainer gTrainers[] = { .items = {}, .doubleBattle = FALSE, .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, - .partySize = ARRAY_COUNT(sParty_May6), - .party = {.NoItemDefaultMoves = sParty_May6}, + .partySize = ARRAY_COUNT(sParty_MayRoute119Treecko), + .party = {.NoItemDefaultMoves = sParty_MayRoute119Treecko}, }, [TRAINER_MAY_7] = @@ -7499,8 +7499,8 @@ const struct Trainer gTrainers[] = { .items = {}, .doubleBattle = FALSE, .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, - .partySize = ARRAY_COUNT(sParty_May7), - .party = {.NoItemDefaultMoves = sParty_May7}, + .partySize = ARRAY_COUNT(sParty_MayRoute103Torchic), + .party = {.NoItemDefaultMoves = sParty_MayRoute103Torchic}, }, [TRAINER_MAY_8] = @@ -7513,8 +7513,8 @@ const struct Trainer gTrainers[] = { .items = {}, .doubleBattle = FALSE, .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, - .partySize = ARRAY_COUNT(sParty_May8), - .party = {.NoItemDefaultMoves = sParty_May8}, + .partySize = ARRAY_COUNT(sParty_MayRoute110Torchic), + .party = {.NoItemDefaultMoves = sParty_MayRoute110Torchic}, }, [TRAINER_MAY_9] = @@ -7527,8 +7527,8 @@ const struct Trainer gTrainers[] = { .items = {}, .doubleBattle = FALSE, .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, - .partySize = ARRAY_COUNT(sParty_May9), - .party = {.NoItemDefaultMoves = sParty_May9}, + .partySize = ARRAY_COUNT(sParty_MayRoute119Torchic), + .party = {.NoItemDefaultMoves = sParty_MayRoute119Torchic}, }, [TRAINER_ISAAC_1] = @@ -8297,8 +8297,8 @@ const struct Trainer gTrainers[] = { .items = {}, .doubleBattle = FALSE, .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, - .partySize = ARRAY_COUNT(sParty_Brendan10), - .party = {.NoItemDefaultMoves = sParty_Brendan10}, + .partySize = ARRAY_COUNT(sParty_BrendanRustboroTreecko), + .party = {.NoItemDefaultMoves = sParty_BrendanRustboroTreecko}, }, [TRAINER_BRENDAN_11] = @@ -8311,8 +8311,8 @@ const struct Trainer gTrainers[] = { .items = {}, .doubleBattle = FALSE, .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, - .partySize = ARRAY_COUNT(sParty_Brendan11), - .party = {.NoItemDefaultMoves = sParty_Brendan11}, + .partySize = ARRAY_COUNT(sParty_BrendanRustboroMudkip), + .party = {.NoItemDefaultMoves = sParty_BrendanRustboroMudkip}, }, [TRAINER_PAXTON] = @@ -8395,8 +8395,8 @@ const struct Trainer gTrainers[] = { .items = {}, .doubleBattle = FALSE, .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, - .partySize = ARRAY_COUNT(sParty_Brendan12), - .party = {.NoItemDefaultMoves = sParty_Brendan12}, + .partySize = ARRAY_COUNT(sParty_BrendanRustboroTorchic), + .party = {.NoItemDefaultMoves = sParty_BrendanRustboroTorchic}, }, [TRAINER_MAY_10] = @@ -8409,8 +8409,8 @@ const struct Trainer gTrainers[] = { .items = {}, .doubleBattle = FALSE, .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_SETUP_FIRST_TURN, - .partySize = ARRAY_COUNT(sParty_May10), - .party = {.NoItemDefaultMoves = sParty_May10}, + .partySize = ARRAY_COUNT(sParty_MayRustboroMudkip), + .party = {.NoItemDefaultMoves = sParty_MayRustboroMudkip}, }, [TRAINER_MAXIE_1] = @@ -8423,8 +8423,8 @@ const struct Trainer gTrainers[] = { .items = {ITEM_SUPER_POTION, ITEM_SUPER_POTION, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, - .partySize = ARRAY_COUNT(sParty_Maxie1), - .party = {.NoItemDefaultMoves = sParty_Maxie1}, + .partySize = ARRAY_COUNT(sParty_MaxieMagmaHideout), + .party = {.NoItemDefaultMoves = sParty_MaxieMagmaHideout}, }, [TRAINER_MAXIE_2] = @@ -8437,8 +8437,8 @@ const struct Trainer gTrainers[] = { .items = {ITEM_SUPER_POTION, ITEM_SUPER_POTION, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, - .partySize = ARRAY_COUNT(sParty_Maxie2), - .party = {.NoItemDefaultMoves = sParty_Maxie2}, + .partySize = ARRAY_COUNT(sParty_MaxieMtChimney), + .party = {.NoItemDefaultMoves = sParty_MaxieMtChimney}, }, [TRAINER_TIANA] = @@ -9263,8 +9263,8 @@ const struct Trainer gTrainers[] = { .items = {}, .doubleBattle = FALSE, .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, - .partySize = ARRAY_COUNT(sParty_Brendan13), - .party = {.NoItemDefaultMoves = sParty_Brendan13}, + .partySize = ARRAY_COUNT(sParty_BrendanLilycoveMudkip), + .party = {.NoItemDefaultMoves = sParty_BrendanLilycoveMudkip}, }, [TRAINER_BRENDAN_14] = @@ -9277,8 +9277,8 @@ const struct Trainer gTrainers[] = { .items = {}, .doubleBattle = FALSE, .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, - .partySize = ARRAY_COUNT(sParty_Brendan14), - .party = {.NoItemDefaultMoves = sParty_Brendan14}, + .partySize = ARRAY_COUNT(sParty_BrendanLilycoveTreecko), + .party = {.NoItemDefaultMoves = sParty_BrendanLilycoveTreecko}, }, [TRAINER_BRENDAN_15] = @@ -9291,8 +9291,8 @@ const struct Trainer gTrainers[] = { .items = {}, .doubleBattle = FALSE, .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, - .partySize = ARRAY_COUNT(sParty_Brendan15), - .party = {.NoItemDefaultMoves = sParty_Brendan15}, + .partySize = ARRAY_COUNT(sParty_BrendanLilycoveTorchic), + .party = {.NoItemDefaultMoves = sParty_BrendanLilycoveTorchic}, }, [TRAINER_MAY_11] = @@ -9305,8 +9305,8 @@ const struct Trainer gTrainers[] = { .items = {}, .doubleBattle = FALSE, .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, - .partySize = ARRAY_COUNT(sParty_May11), - .party = {.NoItemDefaultMoves = sParty_May11}, + .partySize = ARRAY_COUNT(sParty_MayLilycoveMudkip), + .party = {.NoItemDefaultMoves = sParty_MayLilycoveMudkip}, }, [TRAINER_MAY_12] = @@ -9319,8 +9319,8 @@ const struct Trainer gTrainers[] = { .items = {}, .doubleBattle = FALSE, .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, - .partySize = ARRAY_COUNT(sParty_May12), - .party = {.NoItemDefaultMoves = sParty_May12}, + .partySize = ARRAY_COUNT(sParty_MayLilycoveTreecko), + .party = {.NoItemDefaultMoves = sParty_MayLilycoveTreecko}, }, [TRAINER_MAY_13] = @@ -9333,8 +9333,8 @@ const struct Trainer gTrainers[] = { .items = {}, .doubleBattle = FALSE, .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, - .partySize = ARRAY_COUNT(sParty_May13), - .party = {.NoItemDefaultMoves = sParty_May13}, + .partySize = ARRAY_COUNT(sParty_MayLilycoveTorchic), + .party = {.NoItemDefaultMoves = sParty_MayLilycoveTorchic}, }, [TRAINER_JONAH] = @@ -10285,8 +10285,8 @@ const struct Trainer gTrainers[] = { .items = {}, .doubleBattle = FALSE, .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, - .partySize = ARRAY_COUNT(sParty_Maxie3), - .party = {.NoItemDefaultMoves = sParty_Maxie3}, + .partySize = ARRAY_COUNT(sParty_MaxieMossdeep), + .party = {.NoItemDefaultMoves = sParty_MaxieMossdeep}, }, [TRAINER_PETE] = @@ -10761,8 +10761,8 @@ const struct Trainer gTrainers[] = { .items = {}, .doubleBattle = FALSE, .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, - .partySize = ARRAY_COUNT(sParty_May14), - .party = {.NoItemDefaultMoves = sParty_May14}, + .partySize = ARRAY_COUNT(sParty_MayRustboroTreecko), + .party = {.NoItemDefaultMoves = sParty_MayRustboroTreecko}, }, [TRAINER_MAY_15] = @@ -10775,8 +10775,8 @@ const struct Trainer gTrainers[] = { .items = {}, .doubleBattle = FALSE, .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, - .partySize = ARRAY_COUNT(sParty_May15), - .party = {.NoItemDefaultMoves = sParty_May15}, + .partySize = ARRAY_COUNT(sParty_MayRustboroTorchic), + .party = {.NoItemDefaultMoves = sParty_MayRustboroTorchic}, }, [TRAINER_ROXANNE_2] = @@ -11951,8 +11951,8 @@ const struct Trainer gTrainers[] = { .items = {}, .doubleBattle = FALSE, .aiFlags = 0, - .partySize = ARRAY_COUNT(sParty_Brendan16), - .party = {.NoItemDefaultMoves = sParty_Brendan16}, + .partySize = ARRAY_COUNT(sParty_BrendanLinkPlaceholder), + .party = {.NoItemDefaultMoves = sParty_BrendanLinkPlaceholder}, }, [TRAINER_MAY_16] = @@ -11965,7 +11965,7 @@ const struct Trainer gTrainers[] = { .items = {}, .doubleBattle = FALSE, .aiFlags = 0, - .partySize = ARRAY_COUNT(sParty_May16), - .party = {.NoItemDefaultMoves = sParty_May16}, + .partySize = ARRAY_COUNT(sParty_MayLinkPlaceholder), + .party = {.NoItemDefaultMoves = sParty_MayLinkPlaceholder}, }, }; From 31b4656324db19dd08f65192f4a9b44094a23153 Mon Sep 17 00:00:00 2001 From: Fontbane <36677462+Fontbane@users.noreply.github.com> Date: Wed, 25 Dec 2019 22:39:06 -0500 Subject: [PATCH 09/37] Labels better --- data/maps/LilycoveCity/scripts.inc | 12 +- data/maps/MagmaHideout_4F/scripts.inc | 4 +- data/maps/MauvilleCity/scripts.inc | 2 +- .../MossdeepCity_SpaceCenter_2F/scripts.inc | 4 +- data/maps/MtChimney/scripts.inc | 4 +- data/maps/Route103/scripts.inc | 12 +- data/maps/Route104/scripts.inc | 12 +- data/maps/Route110/scripts.inc | 12 +- data/maps/Route119/scripts.inc | 12 +- .../Route119_WeatherInstitute_2F/scripts.inc | 2 +- data/maps/RustboroCity/scripts.inc | 12 +- data/maps/SeafloorCavern_Room3/scripts.inc | 2 +- data/maps/VictoryRoad_1F/scripts.inc | 6 +- include/constants/opponents.h | 92 ++++++------ src/battle_setup.c | 2 +- src/data/trainer_parties.h | 22 +-- src/data/trainers.h | 136 +++++++++--------- 17 files changed, 174 insertions(+), 174 deletions(-) diff --git a/data/maps/LilycoveCity/scripts.inc b/data/maps/LilycoveCity/scripts.inc index e2f76c163f..ea0017f3c7 100644 --- a/data/maps/LilycoveCity/scripts.inc +++ b/data/maps/LilycoveCity/scripts.inc @@ -296,32 +296,32 @@ LilycoveCity_EventScript_DeclineBrendanBattle:: @ 81E2ECD end LilycoveCity_EventScript_BattleMayTreecko:: @ 81E2EDE - trainerbattle_no_intro TRAINER_MAY_12, LilycoveCity_Text_MayDefeat + trainerbattle_no_intro TRAINER_MAY_LILYCOVE_TREECKO, LilycoveCity_Text_MayDefeat goto LilycoveCity_EventScript_DefeatedMay end LilycoveCity_EventScript_BattleMayTorchic:: @ 81E2EEE - trainerbattle_no_intro TRAINER_MAY_13, LilycoveCity_Text_MayDefeat + trainerbattle_no_intro TRAINER_MAY_LILYCOVE_TORCHIC, LilycoveCity_Text_MayDefeat goto LilycoveCity_EventScript_DefeatedMay end LilycoveCity_EventScript_BattleMayMudkip:: @ 81E2EFE - trainerbattle_no_intro TRAINER_MAY_11, LilycoveCity_Text_MayDefeat + trainerbattle_no_intro TRAINER_MAY_LILYCOVE_MUDKIP, LilycoveCity_Text_MayDefeat goto LilycoveCity_EventScript_DefeatedMay end LilycoveCity_EventScript_BattleBrendanTreecko:: @ 81E2F0E - trainerbattle_no_intro TRAINER_BRENDAN_14, LilycoveCity_Text_BrendanDefeat + trainerbattle_no_intro TRAINER_BRENDAN_LILYCOVE_TREECKO, LilycoveCity_Text_BrendanDefeat goto LilycoveCity_EventScript_DefeatedBrendan end LilycoveCity_EventScript_BattleBrendanTorchic:: @ 81E2F1E - trainerbattle_no_intro TRAINER_BRENDAN_15, LilycoveCity_Text_BrendanDefeat + trainerbattle_no_intro TRAINER_BRENDAN_LILYCOVE_TORCHIC, LilycoveCity_Text_BrendanDefeat goto LilycoveCity_EventScript_DefeatedBrendan end LilycoveCity_EventScript_BattleBrendanMudkip:: @ 81E2F2E - trainerbattle_no_intro TRAINER_BRENDAN_13, LilycoveCity_Text_BrendanDefeat + trainerbattle_no_intro TRAINER_BRENDAN_LILYCOVE_MUDKIP, LilycoveCity_Text_BrendanDefeat goto LilycoveCity_EventScript_DefeatedBrendan end diff --git a/data/maps/MagmaHideout_4F/scripts.inc b/data/maps/MagmaHideout_4F/scripts.inc index e536709b1c..5251c75ae4 100644 --- a/data/maps/MagmaHideout_4F/scripts.inc +++ b/data/maps/MagmaHideout_4F/scripts.inc @@ -54,7 +54,7 @@ MagmaHideout_4F_EventScript_Maxie:: @ 823A560 waitmovement 0 msgbox MagmaHideout_4F_Text_MaxieOhItWasYou, MSGBOX_DEFAULT closemessage - trainerbattle_no_intro TRAINER_MAXIE_1, MagmaHideout_4F_Text_MaxieDefeat + trainerbattle_no_intro TRAINER_MAXIE_MAGMA_HIDEOUT, MagmaHideout_4F_Text_MaxieDefeat msgbox MagmaHideout_4F_Text_MaxieImGoingAfterGroudon, MSGBOX_DEFAULT closemessage clearflag FLAG_HIDE_SLATEPORT_CITY_CAPTAIN_STERN @@ -121,7 +121,7 @@ MagmaHideout_4F_EventScript_Grunt13:: @ 823A6BA end MagmaHideout_4F_EventScript_Tabitha:: @ 823A6D1 - trainerbattle_single TRAINER_TABITHA_3, MagmaHideout_4F_Text_TabithaIntro, MagmaHideout_4F_Text_TabithaDefeat + trainerbattle_single TRAINER_TABITHA_MAGMA_HIDEOUT, MagmaHideout_4F_Text_TabithaIntro, MagmaHideout_4F_Text_TabithaDefeat msgbox MagmaHideout_4F_Text_TabithaPostBattle, MSGBOX_AUTOCLOSE end diff --git a/data/maps/MauvilleCity/scripts.inc b/data/maps/MauvilleCity/scripts.inc index 3410664a19..9c83d80988 100644 --- a/data/maps/MauvilleCity/scripts.inc +++ b/data/maps/MauvilleCity/scripts.inc @@ -204,7 +204,7 @@ MauvilleCity_EventScript_ScottExitEast:: @ 81DF628 MauvilleCity_EventScript_BattleWally:: @ 81DF63A msgbox MauvilleCity_Text_WallyHereICome, MSGBOX_DEFAULT - trainerbattle_no_intro TRAINER_WALLY_2, MauvilleCity_Text_WallyDefeat + trainerbattle_no_intro TRAINER_WALLY_MAUVILLE, MauvilleCity_Text_WallyDefeat applymovement 6, Common_Movement_WalkInPlaceFastestRight waitmovement 0 msgbox MauvilleCity_Text_WallyIllGoBackToVerdanturf, MSGBOX_DEFAULT diff --git a/data/maps/MossdeepCity_SpaceCenter_2F/scripts.inc b/data/maps/MossdeepCity_SpaceCenter_2F/scripts.inc index 32fb2aa7ba..bd1c9e15ca 100644 --- a/data/maps/MossdeepCity_SpaceCenter_2F/scripts.inc +++ b/data/maps/MossdeepCity_SpaceCenter_2F/scripts.inc @@ -337,11 +337,11 @@ MossdeepCity_SpaceCenter_2F_EventScript_StevenFacePlayerWest:: @ 8224152 return MossdeepCity_SpaceCenter_2F_EventScript_MaxieTrainer:: @ 8224157 - trainerbattle TRAINER_BATTLE_SET_TRAINER_A, TRAINER_MAXIE_3, 0, MossdeepCity_SpaceCenter_2F_Text_JustWantToExpandLand, MossdeepCity_SpaceCenter_2F_Text_JustWantToExpandLand + trainerbattle TRAINER_BATTLE_SET_TRAINER_A, TRAINER_MAXIE_MOSSDEEP, 0, MossdeepCity_SpaceCenter_2F_Text_JustWantToExpandLand, MossdeepCity_SpaceCenter_2F_Text_JustWantToExpandLand end MossdeepCity_SpaceCenter_2F_EventScript_TabithaTrainer:: @ 8224166 - trainerbattle TRAINER_BATTLE_SET_TRAINER_B, TRAINER_TABITHA_1, 0, MossdeepCity_SpaceCenter_Text_TabithaDefeat, MossdeepCity_SpaceCenter_Text_TabithaDefeat + trainerbattle TRAINER_BATTLE_SET_TRAINER_B, TRAINER_TABITHA_MOSSDEEP, 0, MossdeepCity_SpaceCenter_Text_TabithaDefeat, MossdeepCity_SpaceCenter_Text_TabithaDefeat end MossdeepCity_SpaceCenter_2F_EventScript_RivalRayquazaCall:: @ 8224175 diff --git a/data/maps/MtChimney/scripts.inc b/data/maps/MtChimney/scripts.inc index e57260b2a4..76559a8560 100644 --- a/data/maps/MtChimney/scripts.inc +++ b/data/maps/MtChimney/scripts.inc @@ -43,7 +43,7 @@ MtChimney_EventScript_Maxie:: @ 822EE0B applymovement 2, Common_Movement_Delay48 waitmovement 0 msgbox MtChimney_Text_MaxieIntro, MSGBOX_DEFAULT - trainerbattle_no_intro TRAINER_MAXIE_2, MtChimney_Text_MaxieDefeat + trainerbattle_no_intro TRAINER_MAXIE_MT_CHIMNEY, MtChimney_Text_MaxieDefeat msgbox MtChimney_Text_MaxieYouHaventSeenLastOfMagma, MSGBOX_DEFAULT closemessage delay 30 @@ -415,7 +415,7 @@ MtChimney_EventScript_BusyAquaGrunt3:: @ 822F065 end MtChimney_EventScript_Tabitha:: @ 822F06E - trainerbattle_single TRAINER_TABITHA_2, MtChimney_Text_TabithaIntro, MtChimney_Text_TabithaDefeat + trainerbattle_single TRAINER_TABITHA_MT_CHIMNEY, MtChimney_Text_TabithaIntro, MtChimney_Text_TabithaDefeat msgbox MtChimney_Text_TabithaPostBattle, MSGBOX_AUTOCLOSE end diff --git a/data/maps/Route103/scripts.inc b/data/maps/Route103/scripts.inc index c614dae1cc..0c99746295 100644 --- a/data/maps/Route103/scripts.inc +++ b/data/maps/Route103/scripts.inc @@ -61,32 +61,32 @@ Route103_EventScript_RivalBrendan:: @ 81EC434 end Route103_EventScript_StartMayBattleTreecko:: @ 81EC48E - trainerbattle_no_intro TRAINER_MAY_4, Route103_Text_MayDefeated + trainerbattle_no_intro TRAINER_MAY_ROUTE_103_TREECKO, Route103_Text_MayDefeated goto Route103_EventScript_AfterMayBattle end Route103_EventScript_StartMayBattleTorchic:: @ 81EC49E - trainerbattle_no_intro TRAINER_MAY_7, Route103_Text_MayDefeated + trainerbattle_no_intro TRAINER_MAY_ROUTE_103_TORCHIC, Route103_Text_MayDefeated goto Route103_EventScript_AfterMayBattle end Route103_EventScript_StartMayBattleMudkip:: @ 81EC4AE - trainerbattle_no_intro TRAINER_MAY_1, Route103_Text_MayDefeated + trainerbattle_no_intro TRAINER_MAY_ROUTE_103_MUDKIP, Route103_Text_MayDefeated goto Route103_EventScript_AfterMayBattle end Route103_EventScript_StartBrendanBattleTreecko:: @ 81EC4BE - trainerbattle_no_intro TRAINER_BRENDAN_4, Route103_Text_BrendanDefeated + trainerbattle_no_intro TRAINER_BRENDAN_ROUTE_103_TREECKO, Route103_Text_BrendanDefeated goto Route103_EventScript_AfterBrendanBattle end Route103_EventScript_StartBrendanBattleTorchic:: @ 81EC4CE - trainerbattle_no_intro TRAINER_BRENDAN_7, Route103_Text_BrendanDefeated + trainerbattle_no_intro TRAINER_BRENDAN_ROUTE_103_TORCHIC, Route103_Text_BrendanDefeated goto Route103_EventScript_AfterBrendanBattle end Route103_EventScript_StartBrendanBattleMudkip:: @ 81EC4DE - trainerbattle_no_intro TRAINER_BRENDAN_1, Route103_Text_BrendanDefeated + trainerbattle_no_intro TRAINER_BRENDAN_ROUTE_103_MUDKIP, Route103_Text_BrendanDefeated goto Route103_EventScript_AfterBrendanBattle end diff --git a/data/maps/Route104/scripts.inc b/data/maps/Route104/scripts.inc index 46dd80119f..db8a329d6f 100644 --- a/data/maps/Route104/scripts.inc +++ b/data/maps/Route104/scripts.inc @@ -167,19 +167,19 @@ Route104_EventScript_RestoreMusic:: @ 81ECE31 return Route104_EventScript_BattleMayTreecko:: @ 81ECE36 - trainerbattle_no_intro TRAINER_MAY_14, Route104_Text_MayDefeat + trainerbattle_no_intro TRAINER_MAY_RUSTBORO_TREECKO, Route104_Text_MayDefeat setflag FLAG_DEFEATED_RIVAL_ROUTE_104 goto Route104_EventScript_MayDefeated end Route104_EventScript_BattleMayTorchic:: @ 81ECE49 - trainerbattle_no_intro TRAINER_MAY_15, Route104_Text_MayDefeat + trainerbattle_no_intro TRAINER_MAY_RUSTBORO_TORCHIC, Route104_Text_MayDefeat setflag FLAG_DEFEATED_RIVAL_ROUTE_104 goto Route104_EventScript_MayDefeated end Route104_EventScript_BattleMayMudkip:: @ 81ECE5C - trainerbattle_no_intro TRAINER_MAY_10, Route104_Text_MayDefeat + trainerbattle_no_intro TRAINER_MAY_RUSTBORO_MUDKIP, Route104_Text_MayDefeat setflag FLAG_DEFEATED_RIVAL_ROUTE_104 goto Route104_EventScript_MayDefeated end @@ -237,19 +237,19 @@ Route104_EventScript_BrendanDefeated:: @ 81ECF38 end Route104_EventScript_BattleBrendanTreecko:: @ 81ECF4D - trainerbattle_no_intro TRAINER_BRENDAN_10, Route104_Text_BrendanDefeat + trainerbattle_no_intro TRAINER_BRENDAN_RUSTBORO_TREECKO, Route104_Text_BrendanDefeat setflag FLAG_DEFEATED_RIVAL_ROUTE_104 goto Route104_EventScript_BrendanDefeated end Route104_EventScript_BattleBrendanTorchic:: @ 81ECF60 - trainerbattle_no_intro TRAINER_BRENDAN_12, Route104_Text_BrendanDefeat + trainerbattle_no_intro TRAINER_BRENDAN_RUSTBORO_TORCHIC, Route104_Text_BrendanDefeat setflag FLAG_DEFEATED_RIVAL_ROUTE_104 goto Route104_EventScript_BrendanDefeated end Route104_EventScript_BattleBrendanMudkip:: @ 81ECF73 - trainerbattle_no_intro TRAINER_BRENDAN_11, Route104_Text_BrendanDefeat + trainerbattle_no_intro TRAINER_BRENDAN_RUSTBORO_MUDKIP, Route104_Text_BrendanDefeat setflag FLAG_DEFEATED_RIVAL_ROUTE_104 goto Route104_EventScript_BrendanDefeated end diff --git a/data/maps/Route110/scripts.inc b/data/maps/Route110/scripts.inc index bccc903f13..be1931d193 100644 --- a/data/maps/Route110/scripts.inc +++ b/data/maps/Route110/scripts.inc @@ -421,17 +421,17 @@ Route110_EventScript_MayBattle:: @ 81EF7EB end Route110_EventScript_MayBattleTreecko:: @ 81EF81A - trainerbattle_no_intro TRAINER_MAY_5, Route110_Text_MayDefeated + trainerbattle_no_intro TRAINER_MAY_ROUTE_110_TREECKO, Route110_Text_MayDefeated goto Route110_EventScript_MayDefeated end Route110_EventScript_MayBattleTorchic:: @ 81EF82A - trainerbattle_no_intro TRAINER_MAY_8, Route110_Text_MayDefeated + trainerbattle_no_intro TRAINER_MAY_ROUTE_110_TORCHIC, Route110_Text_MayDefeated goto Route110_EventScript_MayDefeated end Route110_EventScript_MayBattleMudkip:: @ 81EF83A - trainerbattle_no_intro TRAINER_MAY_2, Route110_Text_MayDefeated + trainerbattle_no_intro TRAINER_MAY_ROUTE_110_MUDKIP, Route110_Text_MayDefeated goto Route110_EventScript_MayDefeated end @@ -451,17 +451,17 @@ Route110_EventScript_BrendanBattle:: @ 81EF865 end Route110_EventScript_BrendanBattleTreecko:: @ 81EF894 - trainerbattle_no_intro TRAINER_BRENDAN_5, Route110_Text_BrendanDefeated + trainerbattle_no_intro TRAINER_BRENDAN_ROUTE_110_TREECKO, Route110_Text_BrendanDefeated goto Route110_EventScript_BrendanDefeated end Route110_EventScript_BrendanBattleTorchic:: @ 81EF8A4 - trainerbattle_no_intro TRAINER_BRENDAN_8, Route110_Text_BrendanDefeated + trainerbattle_no_intro TRAINER_BRENDAN_ROUTE_110_TORCHIC, Route110_Text_BrendanDefeated goto Route110_EventScript_BrendanDefeated end Route110_EventScript_BrendanBattleMudkip:: @ 81EF8B4 - trainerbattle_no_intro TRAINER_BRENDAN_2, Route110_Text_BrendanDefeated + trainerbattle_no_intro TRAINER_BRENDAN_ROUTE_110_MUDKIP, Route110_Text_BrendanDefeated goto Route110_EventScript_BrendanDefeated end diff --git a/data/maps/Route119/scripts.inc b/data/maps/Route119/scripts.inc index 36647e9313..8377b62ad4 100644 --- a/data/maps/Route119/scripts.inc +++ b/data/maps/Route119/scripts.inc @@ -86,17 +86,17 @@ Route119_EventScript_BattleMay:: @ 81F450B end Route119_EventScript_BattleMayTreecko:: @ 81F453A - trainerbattle_no_intro TRAINER_MAY_6, Route119_Text_MayDefeat + trainerbattle_no_intro TRAINER_MAY_ROUTE_119_TREECKO, Route119_Text_MayDefeat goto Route119_EventScript_DefeatedMay end Route119_EventScript_BattleMayTorchic:: @ 81F454A - trainerbattle_no_intro TRAINER_MAY_9, Route119_Text_MayDefeat + trainerbattle_no_intro TRAINER_MAY_ROUTE_119_TORCHIC, Route119_Text_MayDefeat goto Route119_EventScript_DefeatedMay end Route119_EventScript_BattleMayMudkip:: @ 81F455A - trainerbattle_no_intro TRAINER_MAY_3, Route119_Text_MayDefeat + trainerbattle_no_intro TRAINER_MAY_ROUTE_119_MUDKIP, Route119_Text_MayDefeat goto Route119_EventScript_DefeatedMay end @@ -116,17 +116,17 @@ Route119_EventScript_BattleBrendan:: @ 81F4585 end Route119_EventScript_BattleBrendanTreecko:: @ 81F45B4 - trainerbattle_no_intro TRAINER_BRENDAN_6, Route119_Text_BrendanDefeat + trainerbattle_no_intro TRAINER_BRENDAN_ROUTE_119_TREECKO, Route119_Text_BrendanDefeat goto Route119_EventScript_DefeatedBrendan end Route119_EventScript_BattleBrendanTorchic:: @ 81F45C4 - trainerbattle_no_intro TRAINER_BRENDAN_9, Route119_Text_BrendanDefeat + trainerbattle_no_intro TRAINER_BRENDAN_ROUTE_119_TORCHIC, Route119_Text_BrendanDefeat goto Route119_EventScript_DefeatedBrendan end Route119_EventScript_BattleBrendanMudkip:: @ 81F45D4 - trainerbattle_no_intro TRAINER_BRENDAN_3, Route119_Text_BrendanDefeat + trainerbattle_no_intro TRAINER_BRENDAN_ROUTE_119_MUDKIP, Route119_Text_BrendanDefeat goto Route119_EventScript_DefeatedBrendan end diff --git a/data/maps/Route119_WeatherInstitute_2F/scripts.inc b/data/maps/Route119_WeatherInstitute_2F/scripts.inc index 7363b1331b..6ffc19de81 100644 --- a/data/maps/Route119_WeatherInstitute_2F/scripts.inc +++ b/data/maps/Route119_WeatherInstitute_2F/scripts.inc @@ -41,7 +41,7 @@ Route119_WeatherInstitute_2F_EventScript_Grunt3:: @ 826FF96 end Route119_WeatherInstitute_2F_EventScript_Shelly:: @ 826FFAD - trainerbattle_single TRAINER_SHELLY_1, Route119_WeatherInstitute_2F_Text_ShellyIntro, Route119_WeatherInstitute_2F_Text_ShellyDefeat, Route119_WeatherInstitute_2F_EventScript_ShellyDefeated + trainerbattle_single TRAINER_SHELLY_WEATHER_INSTITUTE, Route119_WeatherInstitute_2F_Text_ShellyIntro, Route119_WeatherInstitute_2F_Text_ShellyDefeat, Route119_WeatherInstitute_2F_EventScript_ShellyDefeated msgbox Route119_WeatherInstitute_2F_Text_ShellyPostBattle, MSGBOX_AUTOCLOSE end diff --git a/data/maps/RustboroCity/scripts.inc b/data/maps/RustboroCity/scripts.inc index 04c7ea5057..dbe5dfd41b 100644 --- a/data/maps/RustboroCity/scripts.inc +++ b/data/maps/RustboroCity/scripts.inc @@ -896,19 +896,19 @@ RustboroCity_EventScript_RestoreBgm:: @ 81E10D6 return RustboroCity_EventScript_BattleMayTreecko:: @ 81E10DB - trainerbattle_no_intro TRAINER_MAY_14, RustboroCity_Text_MayDefeat + trainerbattle_no_intro TRAINER_MAY_RUSTBORO_TREECKO, RustboroCity_Text_MayDefeat setflag FLAG_DEFEATED_RIVAL_RUSTBORO goto RustboroCity_EventScript_MayBrineyHint end RustboroCity_EventScript_BattleMayTorchic:: @ 81E10EE - trainerbattle_no_intro TRAINER_MAY_15, RustboroCity_Text_MayDefeat + trainerbattle_no_intro TRAINER_MAY_RUSTBORO_TORCHIC, RustboroCity_Text_MayDefeat setflag FLAG_DEFEATED_RIVAL_RUSTBORO goto RustboroCity_EventScript_MayBrineyHint end RustboroCity_EventScript_BattleMayMudkip:: @ 81E1101 - trainerbattle_no_intro TRAINER_MAY_10, RustboroCity_Text_MayDefeat + trainerbattle_no_intro TRAINER_MAY_RUSTBORO_MUDKIP, RustboroCity_Text_MayDefeat setflag FLAG_DEFEATED_RIVAL_RUSTBORO goto RustboroCity_EventScript_MayBrineyHint end @@ -960,19 +960,19 @@ RustboroCity_EventScript_BrendanBrineyHint:: @ 81E11C0 end RustboroCity_EventScript_BattleBrendanTreecko:: @ 81E11D5 - trainerbattle_no_intro TRAINER_BRENDAN_10, RustboroCity_Text_BrendanDefeat + trainerbattle_no_intro TRAINER_BRENDAN_RUSTBORO_TREECKO, RustboroCity_Text_BrendanDefeat setflag FLAG_DEFEATED_RIVAL_RUSTBORO goto RustboroCity_EventScript_BrendanBrineyHint end RustboroCity_EventScript_BattleBrendanTorchic:: @ 81E11E8 - trainerbattle_no_intro TRAINER_BRENDAN_12, RustboroCity_Text_BrendanDefeat + trainerbattle_no_intro TRAINER_BRENDAN_RUSTBORO_TORCHIC, RustboroCity_Text_BrendanDefeat setflag FLAG_DEFEATED_RIVAL_RUSTBORO goto RustboroCity_EventScript_BrendanBrineyHint end RustboroCity_EventScript_BattleBrendanMudkip:: @ 81E11FB - trainerbattle_no_intro TRAINER_BRENDAN_11, RustboroCity_Text_BrendanDefeat + trainerbattle_no_intro TRAINER_BRENDAN_RUSTBORO_MUDKIP, RustboroCity_Text_BrendanDefeat setflag FLAG_DEFEATED_RIVAL_RUSTBORO goto RustboroCity_EventScript_BrendanBrineyHint end diff --git a/data/maps/SeafloorCavern_Room3/scripts.inc b/data/maps/SeafloorCavern_Room3/scripts.inc index 29cd0dbed7..1cfb702c81 100644 --- a/data/maps/SeafloorCavern_Room3/scripts.inc +++ b/data/maps/SeafloorCavern_Room3/scripts.inc @@ -2,7 +2,7 @@ SeafloorCavern_Room3_MapScripts:: @ 8234937 .byte 0 SeafloorCavern_Room3_EventScript_Shelly:: @ 8234938 - trainerbattle_single TRAINER_SHELLY_2, SeafloorCavern_Room3_Text_ShellyIntro, SeafloorCavern_Room3_Text_ShellyDefeat + trainerbattle_single TRAINER_SHELLY_SEAFLOOR_CAVERN, SeafloorCavern_Room3_Text_ShellyIntro, SeafloorCavern_Room3_Text_ShellyDefeat msgbox SeafloorCavern_Room3_Text_ShellyPostBattle, MSGBOX_AUTOCLOSE end diff --git a/data/maps/VictoryRoad_1F/scripts.inc b/data/maps/VictoryRoad_1F/scripts.inc index 6536be9348..b400df12d1 100644 --- a/data/maps/VictoryRoad_1F/scripts.inc +++ b/data/maps/VictoryRoad_1F/scripts.inc @@ -41,7 +41,7 @@ VictoryRoad_1F_EventScript_WallyEntranceBattle:: @ 8235DE1 applymovement EVENT_OBJ_ID_PLAYER, Common_Movement_WalkInPlaceFastestDown waitmovement 0 msgbox VictoryRoad_1F_Text_WallyNotGoingToLoseAnymore, MSGBOX_DEFAULT - trainerbattle_no_intro TRAINER_WALLY_1, VictoryRoad_1F_Text_WallyEntranceDefeat + trainerbattle_no_intro TRAINER_WALLY_VR_1, VictoryRoad_1F_Text_WallyEntranceDefeat msgbox VictoryRoad_1F_Text_WallyPostEntranceBattle, MSGBOX_DEFAULT clearflag FLAG_HIDE_VICTORY_ROAD_ENTRANCE_WALLY copyobjectxytoperm 4 @@ -84,7 +84,7 @@ VictoryRoad_1F_EventScript_EntranceWally:: @ 8235E2C @ This Wally appears and remains at the exit after the Hall of Fame is entered VictoryRoad_1F_EventScript_ExitWally:: @ 8235E35 - trainerbattle_single TRAINER_WALLY_3, VictoryRoad_1F_Text_WallyIntro, VictoryRoad_1F_Text_WallyDefeat + trainerbattle_single TRAINER_WALLY_VR_2, VictoryRoad_1F_Text_WallyIntro, VictoryRoad_1F_Text_WallyDefeat specialvar VAR_RESULT, ShouldTryRematchBattle compare VAR_RESULT, TRUE goto_if_eq VictoryRoad_1F_EventScript_RematchWally @@ -92,7 +92,7 @@ VictoryRoad_1F_EventScript_ExitWally:: @ 8235E35 end VictoryRoad_1F_EventScript_RematchWally:: @ 8235E5C - trainerbattle_rematch TRAINER_WALLY_3, VictoryRoad_1F_Text_WallyIntro, VictoryRoad_1F_Text_WallyDefeat + trainerbattle_rematch TRAINER_WALLY_VR_2, VictoryRoad_1F_Text_WallyIntro, VictoryRoad_1F_Text_WallyDefeat msgbox VictoryRoad_1F_Text_WallyPostBattle, MSGBOX_AUTOCLOSE end diff --git a/include/constants/opponents.h b/include/constants/opponents.h index 9917b84baf..e7315f1414 100644 --- a/include/constants/opponents.h +++ b/include/constants/opponents.h @@ -33,8 +33,8 @@ #define TRAINER_FREDRICK 29 #define TRAINER_MATT 30 #define TRAINER_ZANDER 31 -#define TRAINER_SHELLY_1 32 -#define TRAINER_SHELLY_2 33 +#define TRAINER_SHELLY_WEATHER_INSTITUTE 32 +#define TRAINER_SHELLY_SEAFLOOR_CAVERN 33 #define TRAINER_ARCHIE 34 #define TRAINER_LEAH 35 #define TRAINER_DAISY 36 @@ -515,30 +515,30 @@ #define TRAINER_CONOR 511 #define TRAINER_EDWIN_1 512 #define TRAINER_HECTOR 513 -#define TRAINER_TABITHA_1 514 +#define TRAINER_TABITHA_MOSSDEEP 514 #define TRAINER_EDWIN_2 515 #define TRAINER_EDWIN_3 516 #define TRAINER_EDWIN_4 517 #define TRAINER_EDWIN_5 518 -#define TRAINER_WALLY_1 519 -#define TRAINER_BRENDAN_1 520 -#define TRAINER_BRENDAN_2 521 -#define TRAINER_BRENDAN_3 522 -#define TRAINER_BRENDAN_4 523 -#define TRAINER_BRENDAN_5 524 -#define TRAINER_BRENDAN_6 525 -#define TRAINER_BRENDAN_7 526 -#define TRAINER_BRENDAN_8 527 -#define TRAINER_BRENDAN_9 528 -#define TRAINER_MAY_1 529 -#define TRAINER_MAY_2 530 -#define TRAINER_MAY_3 531 -#define TRAINER_MAY_4 532 -#define TRAINER_MAY_5 533 -#define TRAINER_MAY_6 534 -#define TRAINER_MAY_7 535 -#define TRAINER_MAY_8 536 -#define TRAINER_MAY_9 537 +#define TRAINER_WALLY_VR_1 519 +#define TRAINER_BRENDAN_ROUTE_103_MUDKIP 520 +#define TRAINER_BRENDAN_ROUTE_110_MUDKIP 521 +#define TRAINER_BRENDAN_ROUTE_119_MUDKIP 522 +#define TRAINER_BRENDAN_ROUTE_103_TREECKO 523 +#define TRAINER_BRENDAN_ROUTE_110_TREECKO 524 +#define TRAINER_BRENDAN_ROUTE_119_TREECKO 525 +#define TRAINER_BRENDAN_ROUTE_103_TORCHIC 526 +#define TRAINER_BRENDAN_ROUTE_110_TORCHIC 527 +#define TRAINER_BRENDAN_ROUTE_119_TORCHIC 528 +#define TRAINER_MAY_ROUTE_103_MUDKIP 529 +#define TRAINER_MAY_ROUTE_110_MUDKIP 530 +#define TRAINER_MAY_ROUTE_119_MUDKIP 531 +#define TRAINER_MAY_ROUTE_103_TREECKO 532 +#define TRAINER_MAY_ROUTE_110_TREECKO 533 +#define TRAINER_MAY_ROUTE_119_TREECKO 534 +#define TRAINER_MAY_ROUTE_103_TORCHIC 535 +#define TRAINER_MAY_ROUTE_110_TORCHIC 536 +#define TRAINER_MAY_ROUTE_119_TORCHIC 537 #define TRAINER_ISAAC_1 538 #define TRAINER_DAVIS 539 #define TRAINER_MITCHELL 540 @@ -593,17 +593,17 @@ #define TRAINER_GRUNT_SPACE_CENTER_6 589 #define TRAINER_GRUNT_SPACE_CENTER_7 590 #define TRAINER_MACEY 591 -#define TRAINER_BRENDAN_10 592 -#define TRAINER_BRENDAN_11 593 +#define TRAINER_BRENDAN_RUSTBORO_TREECKO 592 +#define TRAINER_BRENDAN_RUSTBORO_MUDKIP 593 #define TRAINER_PAXTON 594 #define TRAINER_ISABELLA 595 #define TRAINER_GRUNT_WEATHER_INST_5 596 -#define TRAINER_TABITHA_2 597 +#define TRAINER_TABITHA_MT_CHIMNEY 597 #define TRAINER_JONATHAN 598 -#define TRAINER_BRENDAN_12 599 -#define TRAINER_MAY_10 600 -#define TRAINER_MAXIE_1 601 -#define TRAINER_MAXIE_2 602 +#define TRAINER_BRENDAN_RUSTBORO_TORCHIC 599 +#define TRAINER_MAY_RUSTBORO_MUDKIP 600 +#define TRAINER_MAXIE_MAGMA_HIDEOUT 601 +#define TRAINER_MAXIE_MT_CHIMNEY 602 #define TRAINER_TIANA 603 #define TRAINER_HALEY_1 604 #define TRAINER_JANICE 605 @@ -657,17 +657,17 @@ #define TRAINER_RILEY 653 #define TRAINER_FLINT 654 #define TRAINER_ASHLEY 655 -#define TRAINER_WALLY_2 656 -#define TRAINER_WALLY_3 657 -#define TRAINER_WALLY_4 658 -#define TRAINER_WALLY_5 659 -#define TRAINER_WALLY_6 660 -#define TRAINER_BRENDAN_13 661 -#define TRAINER_BRENDAN_14 662 -#define TRAINER_BRENDAN_15 663 -#define TRAINER_MAY_11 664 -#define TRAINER_MAY_12 665 -#define TRAINER_MAY_13 666 +#define TRAINER_WALLY_MAUVILLE 656 +#define TRAINER_WALLY_VR_2 657 +#define TRAINER_WALLY_VR_3 658 +#define TRAINER_WALLY_VR_4 659 +#define TRAINER_WALLY_VR_5 660 +#define TRAINER_BRENDAN_LILYCOVE_MUDKIP 661 +#define TRAINER_BRENDAN_LILYCOVE_TREECKO 662 +#define TRAINER_BRENDAN_LILYCOVE_TORCHIC 663 +#define TRAINER_MAY_LILYCOVE_MUDKIP 664 +#define TRAINER_MAY_LILYCOVE_TREECKO 665 +#define TRAINER_MAY_LILYCOVE_TORCHIC 666 #define TRAINER_JONAH 667 #define TRAINER_HENRY 668 #define TRAINER_ROGER 669 @@ -733,9 +733,9 @@ #define TRAINER_GRUNT_MAGMA_HIDEOUT_14 729 #define TRAINER_GRUNT_MAGMA_HIDEOUT_15 730 #define TRAINER_GRUNT_MAGMA_HIDEOUT_16 731 -#define TRAINER_TABITHA_3 732 +#define TRAINER_TABITHA_MAGMA_HIDEOUT 732 #define TRAINER_DARCY 733 -#define TRAINER_MAXIE_3 734 +#define TRAINER_MAXIE_MOSSDEEP 734 #define TRAINER_PETE 735 #define TRAINER_ISABELLE 736 #define TRAINER_ANDRES_1 737 @@ -769,8 +769,8 @@ #define TRAINER_MYLES 765 #define TRAINER_PAT 766 #define TRAINER_CRISTIN_1 767 -#define TRAINER_MAY_14 768 -#define TRAINER_MAY_15 769 +#define TRAINER_MAY_RUSTBORO_TREECKO 768 +#define TRAINER_MAY_RUSTBORO_TORCHIC 769 #define TRAINER_ROXANNE_2 770 #define TRAINER_ROXANNE_3 771 #define TRAINER_ROXANNE_4 772 @@ -854,8 +854,8 @@ #define TRAINER_EVERETT 850 #define TRAINER_RED 851 #define TRAINER_LEAF 852 -#define TRAINER_BRENDAN_16 853 -#define TRAINER_MAY_16 854 +#define TRAINER_BRENDAN_PLACEHOLDER 853 +#define TRAINER_MAY_PLACEHOLDER 854 #define TRAINERS_COUNT 855 diff --git a/src/battle_setup.c b/src/battle_setup.c index 3234e8974a..879084342a 100644 --- a/src/battle_setup.c +++ b/src/battle_setup.c @@ -305,7 +305,7 @@ const struct RematchTrainer gRematchTable[REMATCH_TABLE_ENTRIES] = [REMATCH_TRENT] = REMATCH(TRAINER_TRENT_1, TRAINER_TRENT_2, TRAINER_TRENT_3, TRAINER_TRENT_4, TRAINER_TRENT_5, ROUTE112), [REMATCH_SAWYER] = REMATCH(TRAINER_SAWYER_1, TRAINER_SAWYER_2, TRAINER_SAWYER_3, TRAINER_SAWYER_4, TRAINER_SAWYER_5, MT_CHIMNEY), [REMATCH_KIRA_AND_DAN] = REMATCH(TRAINER_KIRA_AND_DAN_1, TRAINER_KIRA_AND_DAN_2, TRAINER_KIRA_AND_DAN_3, TRAINER_KIRA_AND_DAN_4, TRAINER_KIRA_AND_DAN_5, ABANDONED_SHIP_ROOMS2_1F), - [REMATCH_WALLY_3] = REMATCH(TRAINER_WALLY_3, TRAINER_WALLY_4, TRAINER_WALLY_5, TRAINER_WALLY_6, TRAINER_WALLY_6, VICTORY_ROAD_1F), + [REMATCH_WALLY_3] = REMATCH(TRAINER_WALLY_VR_2, TRAINER_WALLY_VR_3, TRAINER_WALLY_VR_4, TRAINER_WALLY_VR_5, TRAINER_WALLY_VR_5, VICTORY_ROAD_1F), [REMATCH_ROXANNE] = REMATCH(TRAINER_ROXANNE_1, TRAINER_ROXANNE_2, TRAINER_ROXANNE_3, TRAINER_ROXANNE_4, TRAINER_ROXANNE_5, RUSTBORO_CITY), [REMATCH_BRAWLY] = REMATCH(TRAINER_BRAWLY_1, TRAINER_BRAWLY_2, TRAINER_BRAWLY_3, TRAINER_BRAWLY_4, TRAINER_BRAWLY_5, DEWFORD_TOWN), [REMATCH_WATTSON] = REMATCH(TRAINER_WATTSON_1, TRAINER_WATTSON_2, TRAINER_WATTSON_3, TRAINER_WATTSON_4, TRAINER_WATTSON_5, MAUVILLE_CITY), diff --git a/src/data/trainer_parties.h b/src/data/trainer_parties.h index 932b563d78..68104ed741 100644 --- a/src/data/trainer_parties.h +++ b/src/data/trainer_parties.h @@ -331,7 +331,7 @@ static const struct TrainerMonNoItemDefaultMoves sParty_Zander[] = { } }; -static const struct TrainerMonNoItemDefaultMoves sParty_Shelly1[] = { +static const struct TrainerMonNoItemDefaultMoves sParty_ShellyWeatherInstitute[] = { { .iv = 50, .lvl = 28, @@ -344,7 +344,7 @@ static const struct TrainerMonNoItemDefaultMoves sParty_Shelly1[] = { } }; -static const struct TrainerMonNoItemDefaultMoves sParty_Shelly2[] = { +static const struct TrainerMonNoItemDefaultMoves sParty_ShellySeafloorCavern[] = { { .iv = 100, .lvl = 37, @@ -6678,7 +6678,7 @@ static const struct TrainerMonNoItemDefaultMoves sParty_Hector[] = { } }; -static const struct TrainerMonNoItemDefaultMoves sParty_Tabitha1[] = { +static const struct TrainerMonNoItemDefaultMoves sParty_TabithaMossdeep[] = { { .iv = 100, .lvl = 36, @@ -6748,7 +6748,7 @@ static const struct TrainerMonNoItemDefaultMoves sParty_Edwin5[] = { } }; -static const struct TrainerMonNoItemCustomMoves sParty_Wally1[] = { +static const struct TrainerMonNoItemCustomMoves sParty_WallyVR1[] = { { .iv = 150, .lvl = 44, @@ -7893,7 +7893,7 @@ static const struct TrainerMonNoItemDefaultMoves sParty_GruntWeatherInst5[] = { } }; -static const struct TrainerMonNoItemDefaultMoves sParty_Tabitha2[] = { +static const struct TrainerMonNoItemDefaultMoves sParty_TabithaMtChimney[] = { { .iv = 50, .lvl = 18, @@ -8743,7 +8743,7 @@ static const struct TrainerMonNoItemDefaultMoves sParty_Ashley[] = { } }; -static const struct TrainerMonNoItemDefaultMoves sParty_Wally2[] = { +static const struct TrainerMonNoItemDefaultMoves sParty_WallyMauville[] = { { .iv = 30, .lvl = 16, @@ -8751,7 +8751,7 @@ static const struct TrainerMonNoItemDefaultMoves sParty_Wally2[] = { } }; -static const struct TrainerMonNoItemCustomMoves sParty_Wally3[] = { +static const struct TrainerMonNoItemCustomMoves sParty_WallyVR2[] = { { .iv = 150, .lvl = 47, @@ -8784,7 +8784,7 @@ static const struct TrainerMonNoItemCustomMoves sParty_Wally3[] = { } }; -static const struct TrainerMonNoItemCustomMoves sParty_Wally4[] = { +static const struct TrainerMonNoItemCustomMoves sParty_WallyVR3[] = { { .iv = 150, .lvl = 50, @@ -8817,7 +8817,7 @@ static const struct TrainerMonNoItemCustomMoves sParty_Wally4[] = { } }; -static const struct TrainerMonNoItemCustomMoves sParty_Wally5[] = { +static const struct TrainerMonNoItemCustomMoves sParty_WallyVR4[] = { { .iv = 150, .lvl = 53, @@ -8850,7 +8850,7 @@ static const struct TrainerMonNoItemCustomMoves sParty_Wally5[] = { } }; -static const struct TrainerMonNoItemCustomMoves sParty_Wally6[] = { +static const struct TrainerMonNoItemCustomMoves sParty_WallyVR5[] = { { .iv = 150, .lvl = 56, @@ -9783,7 +9783,7 @@ static const struct TrainerMonNoItemDefaultMoves sParty_GruntMagmaHideout16[] = } }; -static const struct TrainerMonNoItemDefaultMoves sParty_Tabitha3[] = { +static const struct TrainerMonNoItemDefaultMoves sParty_TabithaMagmaHideout[] = { { .iv = 75, .lvl = 26, diff --git a/src/data/trainers.h b/src/data/trainers.h index 223a15726f..163a8296db 100644 --- a/src/data/trainers.h +++ b/src/data/trainers.h @@ -447,7 +447,7 @@ const struct Trainer gTrainers[] = { .party = {.NoItemDefaultMoves = sParty_Zander}, }, - [TRAINER_SHELLY_1] = + [TRAINER_SHELLY_WEATHER_INSTITUTE] = { .partyFlags = 0, .trainerClass = TRAINER_CLASS_AQUA_ADMIN, @@ -457,11 +457,11 @@ const struct Trainer gTrainers[] = { .items = {}, .doubleBattle = FALSE, .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, - .partySize = ARRAY_COUNT(sParty_Shelly1), - .party = {.NoItemDefaultMoves = sParty_Shelly1}, + .partySize = ARRAY_COUNT(sParty_ShellyWeatherInstitute), + .party = {.NoItemDefaultMoves = sParty_ShellyWeatherInstitute}, }, - [TRAINER_SHELLY_2] = + [TRAINER_SHELLY_SEAFLOOR_CAVERN] = { .partyFlags = 0, .trainerClass = TRAINER_CLASS_AQUA_ADMIN, @@ -471,8 +471,8 @@ const struct Trainer gTrainers[] = { .items = {}, .doubleBattle = FALSE, .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, - .partySize = ARRAY_COUNT(sParty_Shelly2), - .party = {.NoItemDefaultMoves = sParty_Shelly2}, + .partySize = ARRAY_COUNT(sParty_ShellySeafloorCavern), + .party = {.NoItemDefaultMoves = sParty_ShellySeafloorCavern}, }, [TRAINER_ARCHIE] = @@ -7195,7 +7195,7 @@ const struct Trainer gTrainers[] = { .party = {.NoItemDefaultMoves = sParty_Hector}, }, - [TRAINER_TABITHA_1] = + [TRAINER_TABITHA_MOSSDEEP] = { .partyFlags = 0, .trainerClass = TRAINER_CLASS_MAGMA_ADMIN, @@ -7205,8 +7205,8 @@ const struct Trainer gTrainers[] = { .items = {}, .doubleBattle = FALSE, .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, - .partySize = ARRAY_COUNT(sParty_Tabitha1), - .party = {.NoItemDefaultMoves = sParty_Tabitha1}, + .partySize = ARRAY_COUNT(sParty_TabithaMossdeep), + .party = {.NoItemDefaultMoves = sParty_TabithaMossdeep}, }, [TRAINER_EDWIN_2] = @@ -7265,7 +7265,7 @@ const struct Trainer gTrainers[] = { .party = {.NoItemDefaultMoves = sParty_Edwin5}, }, - [TRAINER_WALLY_1] = + [TRAINER_WALLY_VR_1] = { .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET, .trainerClass = TRAINER_CLASS_PKMN_TRAINER_3, @@ -7275,11 +7275,11 @@ const struct Trainer gTrainers[] = { .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, - .partySize = ARRAY_COUNT(sParty_Wally1), - .party = {.NoItemCustomMoves = sParty_Wally1}, + .partySize = ARRAY_COUNT(sParty_WallyVR1), + .party = {.NoItemCustomMoves = sParty_WallyVR1}, }, - [TRAINER_BRENDAN_1] = + [TRAINER_BRENDAN_ROUTE_103_MUDKIP] = { .partyFlags = 0, .trainerClass = TRAINER_CLASS_PKMN_TRAINER_3, @@ -7293,7 +7293,7 @@ const struct Trainer gTrainers[] = { .party = {.NoItemDefaultMoves = sParty_BrendanRoute103Mudkip}, }, - [TRAINER_BRENDAN_2] = + [TRAINER_BRENDAN_ROUTE_110_MUDKIP] = { .partyFlags = 0, .trainerClass = TRAINER_CLASS_PKMN_TRAINER_3, @@ -7307,7 +7307,7 @@ const struct Trainer gTrainers[] = { .party = {.NoItemDefaultMoves = sParty_BrendanRoute110Mudkip}, }, - [TRAINER_BRENDAN_3] = + [TRAINER_BRENDAN_ROUTE_119_MUDKIP] = { .partyFlags = 0, .trainerClass = TRAINER_CLASS_PKMN_TRAINER_3, @@ -7321,7 +7321,7 @@ const struct Trainer gTrainers[] = { .party = {.NoItemDefaultMoves = sParty_BrendanRoute119Mudkip}, }, - [TRAINER_BRENDAN_4] = + [TRAINER_BRENDAN_ROUTE_103_TREECKO] = { .partyFlags = 0, .trainerClass = TRAINER_CLASS_PKMN_TRAINER_3, @@ -7335,7 +7335,7 @@ const struct Trainer gTrainers[] = { .party = {.NoItemDefaultMoves = sParty_BrendanRoute103Treecko}, }, - [TRAINER_BRENDAN_5] = + [TRAINER_BRENDAN_ROUTE_110_TREECKO] = { .partyFlags = 0, .trainerClass = TRAINER_CLASS_PKMN_TRAINER_3, @@ -7349,7 +7349,7 @@ const struct Trainer gTrainers[] = { .party = {.NoItemDefaultMoves = sParty_BrendanRoute110Treecko}, }, - [TRAINER_BRENDAN_6] = + [TRAINER_BRENDAN_ROUTE_119_TREECKO] = { .partyFlags = 0, .trainerClass = TRAINER_CLASS_PKMN_TRAINER_3, @@ -7363,7 +7363,7 @@ const struct Trainer gTrainers[] = { .party = {.NoItemDefaultMoves = sParty_BrendanRoute119Treecko}, }, - [TRAINER_BRENDAN_7] = + [TRAINER_BRENDAN_ROUTE_103_TORCHIC] = { .partyFlags = 0, .trainerClass = TRAINER_CLASS_PKMN_TRAINER_3, @@ -7377,7 +7377,7 @@ const struct Trainer gTrainers[] = { .party = {.NoItemDefaultMoves = sParty_BrendanRoute103Torchic}, }, - [TRAINER_BRENDAN_8] = + [TRAINER_BRENDAN_ROUTE_110_TORCHIC] = { .partyFlags = 0, .trainerClass = TRAINER_CLASS_PKMN_TRAINER_3, @@ -7391,7 +7391,7 @@ const struct Trainer gTrainers[] = { .party = {.NoItemDefaultMoves = sParty_BrendanRoute110Torchic}, }, - [TRAINER_BRENDAN_9] = + [TRAINER_BRENDAN_ROUTE_119_TORCHIC] = { .partyFlags = 0, .trainerClass = TRAINER_CLASS_PKMN_TRAINER_3, @@ -7405,7 +7405,7 @@ const struct Trainer gTrainers[] = { .party = {.NoItemDefaultMoves = sParty_BrendanRoute119Torchic}, }, - [TRAINER_MAY_1] = + [TRAINER_MAY_ROUTE_103_MUDKIP] = { .partyFlags = 0, .trainerClass = TRAINER_CLASS_PKMN_TRAINER_3, @@ -7419,7 +7419,7 @@ const struct Trainer gTrainers[] = { .party = {.NoItemDefaultMoves = sParty_MayRoute103Mudkip}, }, - [TRAINER_MAY_2] = + [TRAINER_MAY_ROUTE_110_MUDKIP] = { .partyFlags = 0, .trainerClass = TRAINER_CLASS_PKMN_TRAINER_3, @@ -7433,7 +7433,7 @@ const struct Trainer gTrainers[] = { .party = {.NoItemDefaultMoves = sParty_MayRoute110Mudkip}, }, - [TRAINER_MAY_3] = + [TRAINER_MAY_ROUTE_119_MUDKIP] = { .partyFlags = 0, .trainerClass = TRAINER_CLASS_PKMN_TRAINER_3, @@ -7447,7 +7447,7 @@ const struct Trainer gTrainers[] = { .party = {.NoItemDefaultMoves = sParty_MayRoute119Mudkip}, }, - [TRAINER_MAY_4] = + [TRAINER_MAY_ROUTE_103_TREECKO] = { .partyFlags = 0, .trainerClass = TRAINER_CLASS_PKMN_TRAINER_3, @@ -7461,7 +7461,7 @@ const struct Trainer gTrainers[] = { .party = {.NoItemDefaultMoves = sParty_MayRoute103Treecko}, }, - [TRAINER_MAY_5] = + [TRAINER_MAY_ROUTE_110_TREECKO] = { .partyFlags = 0, .trainerClass = TRAINER_CLASS_PKMN_TRAINER_3, @@ -7475,7 +7475,7 @@ const struct Trainer gTrainers[] = { .party = {.NoItemDefaultMoves = sParty_MayRoute110Treecko}, }, - [TRAINER_MAY_6] = + [TRAINER_MAY_ROUTE_119_TREECKO] = { .partyFlags = 0, .trainerClass = TRAINER_CLASS_PKMN_TRAINER_3, @@ -7489,7 +7489,7 @@ const struct Trainer gTrainers[] = { .party = {.NoItemDefaultMoves = sParty_MayRoute119Treecko}, }, - [TRAINER_MAY_7] = + [TRAINER_MAY_ROUTE_103_TORCHIC] = { .partyFlags = 0, .trainerClass = TRAINER_CLASS_PKMN_TRAINER_3, @@ -7503,7 +7503,7 @@ const struct Trainer gTrainers[] = { .party = {.NoItemDefaultMoves = sParty_MayRoute103Torchic}, }, - [TRAINER_MAY_8] = + [TRAINER_MAY_ROUTE_110_TORCHIC] = { .partyFlags = 0, .trainerClass = TRAINER_CLASS_PKMN_TRAINER_3, @@ -7517,7 +7517,7 @@ const struct Trainer gTrainers[] = { .party = {.NoItemDefaultMoves = sParty_MayRoute110Torchic}, }, - [TRAINER_MAY_9] = + [TRAINER_MAY_ROUTE_119_TORCHIC] = { .partyFlags = 0, .trainerClass = TRAINER_CLASS_PKMN_TRAINER_3, @@ -8287,7 +8287,7 @@ const struct Trainer gTrainers[] = { .party = {.NoItemDefaultMoves = sParty_Macey}, }, - [TRAINER_BRENDAN_10] = + [TRAINER_BRENDAN_RUSTBORO_TREECKO] = { .partyFlags = 0, .trainerClass = TRAINER_CLASS_PKMN_TRAINER_3, @@ -8301,7 +8301,7 @@ const struct Trainer gTrainers[] = { .party = {.NoItemDefaultMoves = sParty_BrendanRustboroTreecko}, }, - [TRAINER_BRENDAN_11] = + [TRAINER_BRENDAN_RUSTBORO_MUDKIP] = { .partyFlags = 0, .trainerClass = TRAINER_CLASS_PKMN_TRAINER_3, @@ -8357,7 +8357,7 @@ const struct Trainer gTrainers[] = { .party = {.NoItemDefaultMoves = sParty_GruntWeatherInst5}, }, - [TRAINER_TABITHA_2] = + [TRAINER_TABITHA_MT_CHIMNEY] = { .partyFlags = 0, .trainerClass = TRAINER_CLASS_MAGMA_ADMIN, @@ -8367,8 +8367,8 @@ const struct Trainer gTrainers[] = { .items = {}, .doubleBattle = FALSE, .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, - .partySize = ARRAY_COUNT(sParty_Tabitha2), - .party = {.NoItemDefaultMoves = sParty_Tabitha2}, + .partySize = ARRAY_COUNT(sParty_TabithaMtChimney), + .party = {.NoItemDefaultMoves = sParty_TabithaMtChimney}, }, [TRAINER_JONATHAN] = @@ -8385,7 +8385,7 @@ const struct Trainer gTrainers[] = { .party = {.NoItemDefaultMoves = sParty_Jonathan}, }, - [TRAINER_BRENDAN_12] = + [TRAINER_BRENDAN_RUSTBORO_TORCHIC] = { .partyFlags = 0, .trainerClass = TRAINER_CLASS_PKMN_TRAINER_3, @@ -8399,7 +8399,7 @@ const struct Trainer gTrainers[] = { .party = {.NoItemDefaultMoves = sParty_BrendanRustboroTorchic}, }, - [TRAINER_MAY_10] = + [TRAINER_MAY_RUSTBORO_MUDKIP] = { .partyFlags = 0, .trainerClass = TRAINER_CLASS_PKMN_TRAINER_3, @@ -8413,7 +8413,7 @@ const struct Trainer gTrainers[] = { .party = {.NoItemDefaultMoves = sParty_MayRustboroMudkip}, }, - [TRAINER_MAXIE_1] = + [TRAINER_MAXIE_MAGMA_HIDEOUT] = { .partyFlags = 0, .trainerClass = TRAINER_CLASS_MAGMA_LEADER, @@ -8427,7 +8427,7 @@ const struct Trainer gTrainers[] = { .party = {.NoItemDefaultMoves = sParty_MaxieMagmaHideout}, }, - [TRAINER_MAXIE_2] = + [TRAINER_MAXIE_MT_CHIMNEY] = { .partyFlags = 0, .trainerClass = TRAINER_CLASS_MAGMA_LEADER, @@ -9183,7 +9183,7 @@ const struct Trainer gTrainers[] = { .party = {.NoItemDefaultMoves = sParty_Ashley}, }, - [TRAINER_WALLY_2] = + [TRAINER_WALLY_MAUVILLE] = { .partyFlags = 0, .trainerClass = TRAINER_CLASS_PKMN_TRAINER_3, @@ -9193,11 +9193,11 @@ const struct Trainer gTrainers[] = { .items = {}, .doubleBattle = FALSE, .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, - .partySize = ARRAY_COUNT(sParty_Wally2), - .party = {.NoItemDefaultMoves = sParty_Wally2}, + .partySize = ARRAY_COUNT(sParty_WallyMauville), + .party = {.NoItemDefaultMoves = sParty_WallyMauville}, }, - [TRAINER_WALLY_3] = + [TRAINER_WALLY_VR_2] = { .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET, .trainerClass = TRAINER_CLASS_PKMN_TRAINER_3, @@ -9207,11 +9207,11 @@ const struct Trainer gTrainers[] = { .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, - .partySize = ARRAY_COUNT(sParty_Wally3), - .party = {.NoItemCustomMoves = sParty_Wally3}, + .partySize = ARRAY_COUNT(sParty_WallyVR2), + .party = {.NoItemCustomMoves = sParty_WallyVR2}, }, - [TRAINER_WALLY_4] = + [TRAINER_WALLY_VR_3] = { .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET, .trainerClass = TRAINER_CLASS_PKMN_TRAINER_3, @@ -9221,11 +9221,11 @@ const struct Trainer gTrainers[] = { .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, - .partySize = ARRAY_COUNT(sParty_Wally4), - .party = {.NoItemCustomMoves = sParty_Wally4}, + .partySize = ARRAY_COUNT(sParty_WallyVR3), + .party = {.NoItemCustomMoves = sParty_WallyVR3}, }, - [TRAINER_WALLY_5] = + [TRAINER_WALLY_VR_4] = { .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET, .trainerClass = TRAINER_CLASS_PKMN_TRAINER_3, @@ -9235,11 +9235,11 @@ const struct Trainer gTrainers[] = { .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, - .partySize = ARRAY_COUNT(sParty_Wally5), - .party = {.NoItemCustomMoves = sParty_Wally5}, + .partySize = ARRAY_COUNT(sParty_WallyVR4), + .party = {.NoItemCustomMoves = sParty_WallyVR4}, }, - [TRAINER_WALLY_6] = + [TRAINER_WALLY_VR_5] = { .partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET, .trainerClass = TRAINER_CLASS_PKMN_TRAINER_3, @@ -9249,11 +9249,11 @@ const struct Trainer gTrainers[] = { .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE}, .doubleBattle = FALSE, .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY, - .partySize = ARRAY_COUNT(sParty_Wally6), - .party = {.NoItemCustomMoves = sParty_Wally6}, + .partySize = ARRAY_COUNT(sParty_WallyVR5), + .party = {.NoItemCustomMoves = sParty_WallyVR5}, }, - [TRAINER_BRENDAN_13] = + [TRAINER_BRENDAN_LILYCOVE_MUDKIP] = { .partyFlags = 0, .trainerClass = TRAINER_CLASS_PKMN_TRAINER_3, @@ -9267,7 +9267,7 @@ const struct Trainer gTrainers[] = { .party = {.NoItemDefaultMoves = sParty_BrendanLilycoveMudkip}, }, - [TRAINER_BRENDAN_14] = + [TRAINER_BRENDAN_LILYCOVE_TREECKO] = { .partyFlags = 0, .trainerClass = TRAINER_CLASS_PKMN_TRAINER_3, @@ -9281,7 +9281,7 @@ const struct Trainer gTrainers[] = { .party = {.NoItemDefaultMoves = sParty_BrendanLilycoveTreecko}, }, - [TRAINER_BRENDAN_15] = + [TRAINER_BRENDAN_LILYCOVE_TORCHIC] = { .partyFlags = 0, .trainerClass = TRAINER_CLASS_PKMN_TRAINER_3, @@ -9295,7 +9295,7 @@ const struct Trainer gTrainers[] = { .party = {.NoItemDefaultMoves = sParty_BrendanLilycoveTorchic}, }, - [TRAINER_MAY_11] = + [TRAINER_MAY_LILYCOVE_MUDKIP] = { .partyFlags = 0, .trainerClass = TRAINER_CLASS_PKMN_TRAINER_3, @@ -9309,7 +9309,7 @@ const struct Trainer gTrainers[] = { .party = {.NoItemDefaultMoves = sParty_MayLilycoveMudkip}, }, - [TRAINER_MAY_12] = + [TRAINER_MAY_LILYCOVE_TREECKO] = { .partyFlags = 0, .trainerClass = TRAINER_CLASS_PKMN_TRAINER_3, @@ -9323,7 +9323,7 @@ const struct Trainer gTrainers[] = { .party = {.NoItemDefaultMoves = sParty_MayLilycoveTreecko}, }, - [TRAINER_MAY_13] = + [TRAINER_MAY_LILYCOVE_TORCHIC] = { .partyFlags = 0, .trainerClass = TRAINER_CLASS_PKMN_TRAINER_3, @@ -10247,7 +10247,7 @@ const struct Trainer gTrainers[] = { .party = {.NoItemDefaultMoves = sParty_GruntMagmaHideout16}, }, - [TRAINER_TABITHA_3] = + [TRAINER_TABITHA_MAGMA_HIDEOUT] = { .partyFlags = 0, .trainerClass = TRAINER_CLASS_MAGMA_ADMIN, @@ -10257,8 +10257,8 @@ const struct Trainer gTrainers[] = { .items = {}, .doubleBattle = FALSE, .aiFlags = AI_SCRIPT_CHECK_BAD_MOVE, - .partySize = ARRAY_COUNT(sParty_Tabitha3), - .party = {.NoItemDefaultMoves = sParty_Tabitha3}, + .partySize = ARRAY_COUNT(sParty_TabithaMagmaHideout), + .party = {.NoItemDefaultMoves = sParty_TabithaMagmaHideout}, }, [TRAINER_DARCY] = @@ -10275,7 +10275,7 @@ const struct Trainer gTrainers[] = { .party = {.NoItemDefaultMoves = sParty_Darcy}, }, - [TRAINER_MAXIE_3] = + [TRAINER_MAXIE_MOSSDEEP] = { .partyFlags = 0, .trainerClass = TRAINER_CLASS_MAGMA_LEADER, @@ -10751,7 +10751,7 @@ const struct Trainer gTrainers[] = { .party = {.NoItemDefaultMoves = sParty_Cristin1}, }, - [TRAINER_MAY_14] = + [TRAINER_MAY_RUSTBORO_TREECKO] = { .partyFlags = 0, .trainerClass = TRAINER_CLASS_PKMN_TRAINER_3, @@ -10765,7 +10765,7 @@ const struct Trainer gTrainers[] = { .party = {.NoItemDefaultMoves = sParty_MayRustboroTreecko}, }, - [TRAINER_MAY_15] = + [TRAINER_MAY_RUSTBORO_TORCHIC] = { .partyFlags = 0, .trainerClass = TRAINER_CLASS_PKMN_TRAINER_3, @@ -11941,7 +11941,7 @@ const struct Trainer gTrainers[] = { .party = {.NoItemDefaultMoves = sParty_Leaf}, }, - [TRAINER_BRENDAN_16] = + [TRAINER_BRENDAN_PLACEHOLDER] = { .partyFlags = 0, .trainerClass = TRAINER_CLASS_RS_PROTAG, @@ -11955,7 +11955,7 @@ const struct Trainer gTrainers[] = { .party = {.NoItemDefaultMoves = sParty_BrendanLinkPlaceholder}, }, - [TRAINER_MAY_16] = + [TRAINER_MAY_PLACEHOLDER] = { .partyFlags = 0, .trainerClass = TRAINER_CLASS_RS_PROTAG, From 3efc8199d49862a9d5bfc5f5bd11986c9848da8e Mon Sep 17 00:00:00 2001 From: GriffinR Date: Sat, 21 Dec 2019 04:27:12 -0500 Subject: [PATCH 10/37] More battle_dome.c documentation --- asm/macros/battle_frontier/battle_dome.inc | 2 +- data/text/battle_dome.inc | 116 +- include/constants/battle_dome.h | 64 ++ include/global.h | 21 +- include/strings.h | 116 +- src/battle_dome.c | 1206 +++++++++++--------- src/battle_tower.c | 10 +- 7 files changed, 832 insertions(+), 703 deletions(-) diff --git a/asm/macros/battle_frontier/battle_dome.inc b/asm/macros/battle_frontier/battle_dome.inc index 836d4eecda..07d6534eb3 100644 --- a/asm/macros/battle_frontier/battle_dome.inc +++ b/asm/macros/battle_frontier/battle_dome.inc @@ -97,7 +97,7 @@ special CallBattleDomeFunction .endm - @ + @ Sets the facility trainer/mon set pointers .macro dome_settrainers setvar VAR_0x8004, BATTLE_DOME_FUNC_SET_TRAINERS special CallBattleDomeFunction diff --git a/data/text/battle_dome.inc b/data/text/battle_dome.inc index a9b2895e1b..80cf4980fd 100644 --- a/data/text/battle_dome.inc +++ b/data/text/battle_dome.inc @@ -1,163 +1,163 @@ -gBattleDomeOpponentPotentialText1:: +BattleDome_Text_Potential1:: .string "The best candidate to be a champ!$" -gBattleDomeOpponentPotentialText2:: +BattleDome_Text_Potential2:: .string "A sure-finalist team.$" -gBattleDomeOpponentPotentialText3:: +BattleDome_Text_Potential3:: .string "A likely top-three finisher.$" -gBattleDomeOpponentPotentialText4:: +BattleDome_Text_Potential4:: .string "A candidate to finish first.$" -gBattleDomeOpponentPotentialText5:: +BattleDome_Text_Potential5:: .string "A team with top-class potential.$" -gBattleDomeOpponentPotentialText6:: +BattleDome_Text_Potential6:: .string "The dark horse team this tournament.$" -gBattleDomeOpponentPotentialText7:: +BattleDome_Text_Potential7:: .string "A better-than-average team.$" -gBattleDomeOpponentPotentialText8:: +BattleDome_Text_Potential8:: .string "This tournament's average team.$" -gBattleDomeOpponentPotentialText9:: +BattleDome_Text_Potential9:: .string "A team with average potential.$" -gBattleDomeOpponentPotentialText10:: +BattleDome_Text_Potential10:: .string "A weaker-than-average team.$" -gBattleDomeOpponentPotentialText11:: +BattleDome_Text_Potential11:: .string "A team looking for its first win.$" -gBattleDomeOpponentPotentialText12:: +BattleDome_Text_Potential12:: .string "One win will make this team proud.$" -gBattleDomeOpponentPotentialText13:: +BattleDome_Text_Potential13:: .string "Overall, a weak team.$" -gBattleDomeOpponentPotentialText14:: +BattleDome_Text_Potential14:: .string "A team with very low potential.$" -gBattleDomeOpponentPotentialText15:: +BattleDome_Text_Potential15:: .string "A team unlikely to win the tournament.$" -gBattleDomeOpponentPotentialText16:: +BattleDome_Text_Potential16:: .string "The team most unlikely to win.$" -gBattleDomeOpponentPotentialText17:: +BattleDome_Text_PotentialDomeAceTucker:: .string "The perfect, invincible superstar!$" -gBattleDomeOpponentStyleText1:: +BattleDome_Text_StyleRiskDisaster:: .string "Willing to risk total disaster at times.$" -gBattleDomeOpponentStyleText2:: +BattleDome_Text_StyleEndureLongBattles:: .string "Skilled at enduring long battles.$" -gBattleDomeOpponentStyleText3:: +BattleDome_Text_StyleVariesTactics:: .string "Varies tactics to suit the opponent.$" -gBattleDomeOpponentStyleText4:: +BattleDome_Text_StyleToughWinningPattern:: .string "Has a tough winning pattern.$" -gBattleDomeOpponentStyleText5:: +BattleDome_Text_StyleUsesVeryRareMove:: .string "Occasionally uses a very rare move.$" -gBattleDomeOpponentStyleText6:: +BattleDome_Text_StyleUsesStartlingMoves:: .string "Uses startling and disruptive moves.$" -gBattleDomeOpponentStyleText7:: +BattleDome_Text_StyleConstantlyWatchesHP:: .string "Constantly watches HP in battle.$" -gBattleDomeOpponentStyleText8:: +BattleDome_Text_StyleStoresAndLoosesPower:: .string "Good at storing then loosing power.$" -gBattleDomeOpponentStyleText9:: +BattleDome_Text_StyleEnfeeblesFoes:: .string "Skilled at enfeebling foes.$" -gBattleDomeOpponentStyleText10:: +BattleDome_Text_StylePrefersLuckTactics:: .string "Prefers tactics that rely on luck.$" -gBattleDomeOpponentStyleText11:: +BattleDome_Text_StyleRegalAtmosphere:: .string "Attacks with a regal atmosphere.$" -gBattleDomeOpponentStyleText12:: +BattleDome_Text_StylePowerfulLowPPMoves:: .string "Attacks with powerful, low-PP moves.$" -gBattleDomeOpponentStyleText13:: +BattleDome_Text_StyleEnfeebleThenAttack:: .string "Skilled at enfeebling, then attacking.$" -gBattleDomeOpponentStyleText14:: +BattleDome_Text_StyleBattlesWhileEnduring:: .string "Battles while enduring all attacks.$" -gBattleDomeOpponentStyleText15:: +BattleDome_Text_StyleUpsetsFoesEmotionally:: .string "Skilled at upsetting foes emotionally.$" -gBattleDomeOpponentStyleText16:: +BattleDome_Text_StyleStrongAndStraightforward:: .string "Uses strong and straightforward moves.$" -gBattleDomeOpponentStyleText17:: +BattleDome_Text_StyleAggressivelyStrongMoves:: .string "Aggressively uses strong moves.$" -gBattleDomeOpponentStyleText18:: +BattleDome_Text_StyleCleverlyDodgesAttacks:: .string "Battles while cleverly dodging attacks.$" -gBattleDomeOpponentStyleText19:: +BattleDome_Text_StyleUsesUpsettingMoves:: .string "Skilled at using upsetting attacks.$" -gBattleDomeOpponentStyleText20:: +BattleDome_Text_StyleUsesPopularMoves:: .string "Uses many popular moves.$" -gBattleDomeOpponentStyleText21:: +BattleDome_Text_StyleHasPowerfulComboMoves:: .string "Has moves for powerful combinations.$" -gBattleDomeOpponentStyleText22:: +BattleDome_Text_StyleUsesHighProbabilityMoves:: .string "Uses high-probability attacks.$" -gBattleDomeOpponentStyleText23:: +BattleDome_Text_StyleAggressivelySpectacularMoves:: .string "Aggressively uses spectacular moves.$" -gBattleDomeOpponentStyleText24:: +BattleDome_Text_StyleEmphasizesOffenseOverDefense:: .string "Emphasizes offense over defense.$" -gBattleDomeOpponentStyleText25:: +BattleDome_Text_StyleEmphasizesDefenseOverOffense:: .string "Emphasizes defense over offense.$" -gBattleDomeOpponentStyleText26:: +BattleDome_Text_StyleAttacksQuicklyStrongMoves:: .string "Attacks quickly with strong moves.$" -gBattleDomeOpponentStyleText27:: +BattleDome_Text_StyleUsesAddedEffectMoves:: .string "Often uses moves with added effects.$" -gBattleDomeOpponentStyleText28:: +BattleDome_Text_StyleUsesBalancedMixOfMoves:: .string "Uses a well-balanced mix of moves.$" -gBattleDomeOpponentStyleTextUnused1:: +BattleDome_Text_StyleSampleMessage1:: .string "This is sample message 1.$" -gBattleDomeOpponentStyleTextUnused2:: +BattleDome_Text_StyleSampleMessage2:: .string "This is sample message 2.$" -gBattleDomeOpponentStyleTextUnused3:: +BattleDome_Text_StyleSampleMessage3:: .string "This is sample message 3.$" -gBattleDomeOpponentStyleTextUnused4:: +BattleDome_Text_StyleSampleMessage4:: .string "This is sample message 4.$" -gBattleDomeOpponentStatsText1:: +BattleDome_Text_EmphasizesHPAndAtk:: .string "Emphasizes HP and ATTACK.$" -gBattleDomeOpponentStatsText2:: +BattleDome_Text_EmphasizesHPAndDef:: .string "Emphasizes HP and DEFENSE.$" -gBattleDomeOpponentStatsText3:: +BattleDome_Text_EmphasizesHPAndSpeed:: .string "Emphasizes HP and SPEED.$" -gBattleDomeOpponentStatsText4:: +BattleDome_Text_EmphasizesHPAndSpAtk:: .string "Emphasizes HP and SP. ATTACK.$" -gBattleDomeOpponentStatsText5:: +BattleDome_Text_EmphasizesHPAndSpDef:: .string "Emphasizes HP and SP. DEFENSE.$" gBattleDomeOpponentStatsText6:: @@ -190,7 +190,7 @@ gBattleDomeOpponentStatsText14:: gBattleDomeOpponentStatsText15:: .string "Emphasizes SP. ATTACK and SP. DEFENSE.$" -gBattleDomeOpponentStatsText16:: +BattleDome_Text_EmphasizesHP:: .string "Emphasizes HP.$" gBattleDomeOpponentStatsText17:: @@ -208,7 +208,7 @@ gBattleDomeOpponentStatsText20:: gBattleDomeOpponentStatsText21:: .string "Emphasizes SP. DEFENSE.$" -gBattleDomeOpponentStatsText22:: +BattleDome_Text_NeglectsHPAndAtk:: .string "Neglects HP and ATTACK.$" gBattleDomeOpponentStatsText23:: @@ -253,7 +253,7 @@ gBattleDomeOpponentStatsText35:: gBattleDomeOpponentStatsText36:: .string "Neglects SP. ATTACK and SP. DEFENSE.$" -gBattleDomeOpponentStatsText37:: +BattleDome_Text_NeglectsHP:: .string "Neglects HP.$" gBattleDomeOpponentStatsText38:: @@ -271,7 +271,7 @@ gBattleDomeOpponentStatsText41:: gBattleDomeOpponentStatsText42:: .string "Neglects SP. DEFENSE.$" -gBattleDomeOpponentStatsText43:: +BattleDome_Text_RaisesMonsWellBalanced:: .string "Raises POKéMON in a well-balanced way.$" gBattleDomeWinText1:: diff --git a/include/constants/battle_dome.h b/include/constants/battle_dome.h index 96542c5969..46310c6ce7 100644 --- a/include/constants/battle_dome.h +++ b/include/constants/battle_dome.h @@ -51,4 +51,68 @@ #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_BATTLE_STYLE_RISKY 0 +#define DOME_BATTLE_STYLE_STALL 1 +#define DOME_BATTLE_STYLE_VARIED 2 +#define DOME_BATTLE_STYLE_COMBO_HIGH 3 +#define DOME_BATTLE_STYLE_RARE_MOVES 4 +#define DOME_BATTLE_STYLE_RARE_MOVE 5 +#define DOME_BATTLE_STYLE_HP 6 +#define DOME_BATTLE_STYLE_STORE_POWER 7 +#define DOME_BATTLE_STYLE_ENFEEBLE_LOW 8 +#define DOME_BATTLE_STYLE_LUCK 9 +#define DOME_BATTLE_STYLE_10 10 +#define DOME_BATTLE_STYLE_LOW_PP 11 +#define DOME_BATTLE_STYLE_STATUS_ATK 12 +#define DOME_BATTLE_STYLE_ENDURE 13 +#define DOME_BATTLE_STYLE_STATUS 14 +#define DOME_BATTLE_STYLE_STRAIGHTFORWARD 15 +#define DOME_BATTLE_STYLE_AGGRESSIVE 16 +#define DOME_BATTLE_STYLE_DEF 17 +#define DOME_BATTLE_STYLE_ENFEEBLE_HIGH 18 +#define DOME_BATTLE_STYLE_POPULAR_POWER 19 +#define DOME_BATTLE_STYLE_COMBO_LOW 20 +#define DOME_BATTLE_STYLE_ACCURATE 21 +#define DOME_BATTLE_STYLE_POWERFUL 22 +#define DOME_BATTLE_STYLE_ATK_OVER_DEF 23 +#define DOME_BATTLE_STYLE_DEF_OVER_ATK 24 +#define DOME_BATTLE_STYLE_POPULAR_STRONG 25 +#define DOME_BATTLE_STYLE_EFFECTS 26 +#define DOME_BATTLE_STYLE_BALANCED 27 +#define DOME_BATTLE_STYLE_UNUSED1 28 +#define DOME_BATTLE_STYLE_UNUSED2 29 +#define DOME_BATTLE_STYLE_UNUSED3 30 +#define DOME_BATTLE_STYLE_UNUSED4 31 +#define NUM_BATTLE_STYLES 32 + + #endif //GUARD_CONSTANTS_BATTLE_DOME_H diff --git a/include/global.h b/include/global.h index 2b2860d64c..ff288a41fd 100644 --- a/include/global.h +++ b/include/global.h @@ -297,7 +297,8 @@ struct BattleTowerEReaderTrainer /*0xB8*/ u32 checksum; }; -struct FrontierMonData +// For displaying party information on the player's Battle Dome tourney page +struct DomeMonData { u16 moves[MAX_MON_MOVES]; u8 evs[NUM_STATS]; @@ -388,7 +389,7 @@ struct BattleFrontier /*0xE6A*/ u16 verdanturfTentPrize; /*0xE6C*/ u16 fallarborTentPrize; /*0xE6E*/ u16 slateportTentPrize; - /*0xE70*/ struct RentalMon rentalMons[PARTY_SIZE]; + /*0xE70*/ struct RentalMon rentalMons[FRONTIER_PARTY_SIZE * 2]; /*0xEB8*/ u16 battlePoints; /*0xEBA*/ u16 cardBattlePoints; /*0xEBC*/ u32 battlesCount; @@ -400,7 +401,7 @@ struct BattleFrontier /*0xEF9*/ u8 savedGame:1; /*0xEFA*/ u8 unused_EFA; /*0xEFB*/ u8 unused_EFB; - /*0xEFC*/ struct FrontierMonData field_EFC[FRONTIER_PARTY_SIZE]; + /*0xEFC*/ struct DomeMonData domePlayerPartyData[FRONTIER_PARTY_SIZE]; }; struct ApprenticeQuestion @@ -930,13 +931,13 @@ struct SaveBlock1 /*0x271C*/ u8 playerRoomDecor[DECOR_MAX_PLAYERS_HOUSE]; /*0x2728*/ u8 playerRoomDecorPos[DECOR_MAX_PLAYERS_HOUSE]; /*0x2734*/ u8 decorDesk[10]; - /*0x????*/ u8 decorChair[10]; - /*0x????*/ u8 decorPlant[10]; - /*0x????*/ u8 decorOrnament[30]; - /*0x????*/ u8 decorMat[30]; - /*0x????*/ u8 decorPoster[10]; - /*0x????*/ u8 decorDoll[40]; - /*0x????*/ u8 decorCushion[10]; + /*0x273E*/ u8 decorChair[10]; + /*0x2748*/ u8 decorPlant[10]; + /*0x2752*/ u8 decorOrnament[30]; + /*0x2770*/ u8 decorMat[30]; + /*0x278E*/ u8 decorPoster[10]; + /*0x2798*/ u8 decorDoll[40]; + /*0x27C0*/ u8 decorCushion[10]; /*0x27CA*/ u8 padding_27CA[2]; /*0x27CC*/ TVShow tvShows[TV_SHOWS_COUNT]; /*0x2B50*/ PokeNews pokeNews[POKE_NEWS_COUNT]; diff --git a/include/strings.h b/include/strings.h index f8d77c73e9..f3d9aed985 100644 --- a/include/strings.h +++ b/include/strings.h @@ -1705,60 +1705,60 @@ extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246ACF[]; extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24649D[]; // Battle Dome. -extern const u8 gBattleDomeOpponentPotentialText1[]; -extern const u8 gBattleDomeOpponentPotentialText2[]; -extern const u8 gBattleDomeOpponentPotentialText3[]; -extern const u8 gBattleDomeOpponentPotentialText4[]; -extern const u8 gBattleDomeOpponentPotentialText5[]; -extern const u8 gBattleDomeOpponentPotentialText6[]; -extern const u8 gBattleDomeOpponentPotentialText7[]; -extern const u8 gBattleDomeOpponentPotentialText8[]; -extern const u8 gBattleDomeOpponentPotentialText9[]; -extern const u8 gBattleDomeOpponentPotentialText10[]; -extern const u8 gBattleDomeOpponentPotentialText11[]; -extern const u8 gBattleDomeOpponentPotentialText12[]; -extern const u8 gBattleDomeOpponentPotentialText13[]; -extern const u8 gBattleDomeOpponentPotentialText14[]; -extern const u8 gBattleDomeOpponentPotentialText15[]; -extern const u8 gBattleDomeOpponentPotentialText16[]; -extern const u8 gBattleDomeOpponentPotentialText17[]; -extern const u8 gBattleDomeOpponentStyleText1[]; -extern const u8 gBattleDomeOpponentStyleText2[]; -extern const u8 gBattleDomeOpponentStyleText3[]; -extern const u8 gBattleDomeOpponentStyleText4[]; -extern const u8 gBattleDomeOpponentStyleText5[]; -extern const u8 gBattleDomeOpponentStyleText6[]; -extern const u8 gBattleDomeOpponentStyleText7[]; -extern const u8 gBattleDomeOpponentStyleText8[]; -extern const u8 gBattleDomeOpponentStyleText9[]; -extern const u8 gBattleDomeOpponentStyleText10[]; -extern const u8 gBattleDomeOpponentStyleText11[]; -extern const u8 gBattleDomeOpponentStyleText12[]; -extern const u8 gBattleDomeOpponentStyleText13[]; -extern const u8 gBattleDomeOpponentStyleText14[]; -extern const u8 gBattleDomeOpponentStyleText15[]; -extern const u8 gBattleDomeOpponentStyleText16[]; -extern const u8 gBattleDomeOpponentStyleText17[]; -extern const u8 gBattleDomeOpponentStyleText18[]; -extern const u8 gBattleDomeOpponentStyleText19[]; -extern const u8 gBattleDomeOpponentStyleText20[]; -extern const u8 gBattleDomeOpponentStyleText21[]; -extern const u8 gBattleDomeOpponentStyleText22[]; -extern const u8 gBattleDomeOpponentStyleText23[]; -extern const u8 gBattleDomeOpponentStyleText24[]; -extern const u8 gBattleDomeOpponentStyleText25[]; -extern const u8 gBattleDomeOpponentStyleText26[]; -extern const u8 gBattleDomeOpponentStyleText27[]; -extern const u8 gBattleDomeOpponentStyleText28[]; -extern const u8 gBattleDomeOpponentStyleTextUnused1[]; -extern const u8 gBattleDomeOpponentStyleTextUnused2[]; -extern const u8 gBattleDomeOpponentStyleTextUnused3[]; -extern const u8 gBattleDomeOpponentStyleTextUnused4[]; -extern const u8 gBattleDomeOpponentStatsText1[]; -extern const u8 gBattleDomeOpponentStatsText2[]; -extern const u8 gBattleDomeOpponentStatsText3[]; -extern const u8 gBattleDomeOpponentStatsText4[]; -extern const u8 gBattleDomeOpponentStatsText5[]; +extern const u8 BattleDome_Text_Potential1[]; +extern const u8 BattleDome_Text_Potential2[]; +extern const u8 BattleDome_Text_Potential3[]; +extern const u8 BattleDome_Text_Potential4[]; +extern const u8 BattleDome_Text_Potential5[]; +extern const u8 BattleDome_Text_Potential6[]; +extern const u8 BattleDome_Text_Potential7[]; +extern const u8 BattleDome_Text_Potential8[]; +extern const u8 BattleDome_Text_Potential9[]; +extern const u8 BattleDome_Text_Potential10[]; +extern const u8 BattleDome_Text_Potential11[]; +extern const u8 BattleDome_Text_Potential12[]; +extern const u8 BattleDome_Text_Potential13[]; +extern const u8 BattleDome_Text_Potential14[]; +extern const u8 BattleDome_Text_Potential15[]; +extern const u8 BattleDome_Text_Potential16[]; +extern const u8 BattleDome_Text_PotentialDomeAceTucker[]; +extern const u8 BattleDome_Text_StyleRiskDisaster[]; +extern const u8 BattleDome_Text_StyleEndureLongBattles[]; +extern const u8 BattleDome_Text_StyleVariesTactics[]; +extern const u8 BattleDome_Text_StyleToughWinningPattern[]; +extern const u8 BattleDome_Text_StyleUsesVeryRareMove[]; +extern const u8 BattleDome_Text_StyleUsesStartlingMoves[]; +extern const u8 BattleDome_Text_StyleConstantlyWatchesHP[]; +extern const u8 BattleDome_Text_StyleStoresAndLoosesPower[]; +extern const u8 BattleDome_Text_StyleEnfeeblesFoes[]; +extern const u8 BattleDome_Text_StylePrefersLuckTactics[]; +extern const u8 BattleDome_Text_StyleRegalAtmosphere[]; +extern const u8 BattleDome_Text_StylePowerfulLowPPMoves[]; +extern const u8 BattleDome_Text_StyleEnfeebleThenAttack[]; +extern const u8 BattleDome_Text_StyleBattlesWhileEnduring[]; +extern const u8 BattleDome_Text_StyleUpsetsFoesEmotionally[]; +extern const u8 BattleDome_Text_StyleStrongAndStraightforward[]; +extern const u8 BattleDome_Text_StyleAggressivelyStrongMoves[]; +extern const u8 BattleDome_Text_StyleCleverlyDodgesAttacks[]; +extern const u8 BattleDome_Text_StyleUsesUpsettingMoves[]; +extern const u8 BattleDome_Text_StyleUsesPopularMoves[]; +extern const u8 BattleDome_Text_StyleHasPowerfulComboMoves[]; +extern const u8 BattleDome_Text_StyleUsesHighProbabilityMoves[]; +extern const u8 BattleDome_Text_StyleAggressivelySpectacularMoves[]; +extern const u8 BattleDome_Text_StyleEmphasizesOffenseOverDefense[]; +extern const u8 BattleDome_Text_StyleEmphasizesDefenseOverOffense[]; +extern const u8 BattleDome_Text_StyleAttacksQuicklyStrongMoves[]; +extern const u8 BattleDome_Text_StyleUsesAddedEffectMoves[]; +extern const u8 BattleDome_Text_StyleUsesBalancedMixOfMoves[]; +extern const u8 BattleDome_Text_StyleSampleMessage1[]; +extern const u8 BattleDome_Text_StyleSampleMessage2[]; +extern const u8 BattleDome_Text_StyleSampleMessage3[]; +extern const u8 BattleDome_Text_StyleSampleMessage4[]; +extern const u8 BattleDome_Text_EmphasizesHPAndAtk[]; +extern const u8 BattleDome_Text_EmphasizesHPAndDef[]; +extern const u8 BattleDome_Text_EmphasizesHPAndSpeed[]; +extern const u8 BattleDome_Text_EmphasizesHPAndSpAtk[]; +extern const u8 BattleDome_Text_EmphasizesHPAndSpDef[]; extern const u8 gBattleDomeOpponentStatsText6[]; extern const u8 gBattleDomeOpponentStatsText7[]; extern const u8 gBattleDomeOpponentStatsText8[]; @@ -1769,13 +1769,13 @@ extern const u8 gBattleDomeOpponentStatsText12[]; extern const u8 gBattleDomeOpponentStatsText13[]; extern const u8 gBattleDomeOpponentStatsText14[]; extern const u8 gBattleDomeOpponentStatsText15[]; -extern const u8 gBattleDomeOpponentStatsText16[]; +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 gBattleDomeOpponentStatsText22[]; +extern const u8 BattleDome_Text_NeglectsHPAndAtk[]; extern const u8 gBattleDomeOpponentStatsText23[]; extern const u8 gBattleDomeOpponentStatsText24[]; extern const u8 gBattleDomeOpponentStatsText25[]; @@ -1790,13 +1790,13 @@ extern const u8 gBattleDomeOpponentStatsText33[]; extern const u8 gBattleDomeOpponentStatsText34[]; extern const u8 gBattleDomeOpponentStatsText35[]; extern const u8 gBattleDomeOpponentStatsText36[]; -extern const u8 gBattleDomeOpponentStatsText37[]; +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 gBattleDomeOpponentStatsText43[]; +extern const u8 BattleDome_Text_RaisesMonsWellBalanced[]; extern const u8 gBattleDomeMatchNumberText1[]; extern const u8 gBattleDomeMatchNumberText2[]; extern const u8 gBattleDomeMatchNumberText3[]; diff --git a/src/battle_dome.c b/src/battle_dome.c index 2f3479b9f9..b220e9c190 100644 --- a/src/battle_dome.c +++ b/src/battle_dome.c @@ -46,7 +46,7 @@ struct BattleDomeStruct { u8 arr[DOME_TOURNAMENT_TRAINERS_COUNT]; u8 unk_10; - u8 unk_11[3]; + u8 unk_11[2]; }; struct UnkStruct_860DD10 @@ -71,7 +71,7 @@ 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 InitDomeFacilityTrainersAndMons(void); +static void SetFacilityTrainerAndMonPtrs(void); static int TrainerIdToTournamentId(u16 trainerId); static u16 TrainerIdOfPlayerOpponent(void); static void Task_ShowTourneyTree(u8 taskId); @@ -80,7 +80,7 @@ static void CB2_BattleDome(void); static void VblankCb0_BattleDome(void); static void DisplayMatchInfoOnCard(u8 flags, u8 matchNo); static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId); -static int sub_8192F08(u8, u8*); +static int BufferDomeWinString(u8, u8*); static u8 GetDomeBrainTrainerPicId(void); static u8 GetDomeBrainTrainerClass(void); static void CopyDomeBrainTrainerName(u8 *str); @@ -122,399 +122,402 @@ static EWRAM_DATA u32 sPlayerPartyMaxHP = 0; // never read static EWRAM_DATA struct BattleDomeStruct *sBattleDomeStruct = {0}; static EWRAM_DATA u8 *sTilemapBuffer = NULL; -// Const rom data. -static const u8 sMovePointsForDomeTrainers[MOVES_COUNT][DOME_TOURNAMENT_TRAINERS_COUNT] = +// 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] = { - [MOVE_NONE] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_POUND] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_KARATE_CHOP] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_DOUBLE_SLAP] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_COMET_PUNCH] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_MEGA_PUNCH] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_PAY_DAY] = {0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_FIRE_PUNCH] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_ICE_PUNCH] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_THUNDER_PUNCH] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_SCRATCH] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_VICE_GRIP] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_GUILLOTINE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0}, - [MOVE_RAZOR_WIND] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_SWORDS_DANCE] = {1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0}, - [MOVE_CUT] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_GUST] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_WING_ATTACK] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_WHIRLWIND] = {1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_FLY] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_BIND] = {0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1}, - [MOVE_SLAM] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_VINE_WHIP] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_STOMP] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_DOUBLE_KICK] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_MEGA_KICK] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0}, - [MOVE_JUMP_KICK] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_ROLLING_KICK] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1}, - [MOVE_SAND_ATTACK] = {0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_HEADBUTT] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_HORN_ATTACK] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_FURY_ATTACK] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_HORN_DRILL] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0}, - [MOVE_TACKLE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_BODY_SLAM] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_WRAP] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1}, - [MOVE_TAKE_DOWN] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_THRASH] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_DOUBLE_EDGE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_TAIL_WHIP] = {0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_POISON_STING] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_TWINEEDLE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_PIN_MISSILE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_LEER] = {0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_BITE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_GROWL] = {0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_ROAR] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_SING] = {0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_SUPERSONIC] = {0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_SONIC_BOOM] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_DISABLE] = {0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_ACID] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_EMBER] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_FLAMETHROWER] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1}, - [MOVE_MIST] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_WATER_GUN] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_HYDRO_PUMP] = {1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0}, - [MOVE_SURF] = {1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0}, - [MOVE_ICE_BEAM] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1}, - [MOVE_BLIZZARD] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1}, - [MOVE_PSYBEAM] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_BUBBLE_BEAM] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_AURORA_BEAM] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_HYPER_BEAM] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0}, - [MOVE_PECK] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_DRILL_PECK] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_SUBMISSION] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_LOW_KICK] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_COUNTER] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0}, - [MOVE_SEISMIC_TOSS] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_STRENGTH] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_ABSORB] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_MEGA_DRAIN] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_LEECH_SEED] = {1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_GROWTH] = {0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_RAZOR_LEAF] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_SOLAR_BEAM] = {1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0}, - [MOVE_POISON_POWDER] = {0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_STUN_SPORE] = {0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_SLEEP_POWDER] = {0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_PETAL_DANCE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_STRING_SHOT] = {0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_DRAGON_RAGE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_FIRE_SPIN] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1}, - [MOVE_THUNDER_SHOCK] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_THUNDERBOLT] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1}, - [MOVE_THUNDER_WAVE] = {0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_THUNDER] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1}, - [MOVE_ROCK_THROW] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_EARTHQUAKE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0}, - [MOVE_FISSURE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0}, - [MOVE_DIG] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_TOXIC] = {0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1}, - [MOVE_CONFUSION] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_PSYCHIC] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1}, - [MOVE_HYPNOSIS] = {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_MEDITATE] = {1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_AGILITY] = {0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_QUICK_ATTACK] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_RAGE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_TELEPORT] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_NIGHT_SHADE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_MIMIC] = {0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_SCREECH] = {0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_DOUBLE_TEAM] = {0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_RECOVER] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_HARDEN] = {0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_MINIMIZE] = {0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_SMOKESCREEN] = {0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_CONFUSE_RAY] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_WITHDRAW] = {0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_DEFENSE_CURL] = {0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_BARRIER] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_LIGHT_SCREEN] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_HAZE] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_REFLECT] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_FOCUS_ENERGY] = {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_BIDE] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_METRONOME] = {0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}, - [MOVE_MIRROR_MOVE] = {0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}, - [MOVE_SELF_DESTRUCT] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0}, - [MOVE_EGG_BOMB] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0}, - [MOVE_LICK] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_SMOG] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1}, - [MOVE_SLUDGE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_BONE_CLUB] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1}, - [MOVE_FIRE_BLAST] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1}, - [MOVE_WATERFALL] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_CLAMP] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1}, - [MOVE_SWIFT] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_SKULL_BASH] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0}, - [MOVE_SPIKE_CANNON] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_CONSTRICT] = {0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_AMNESIA] = {0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_KINESIS] = {0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_SOFT_BOILED] = {0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_HI_JUMP_KICK] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_GLARE] = {0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_DREAM_EATER] = {1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0}, - [MOVE_POISON_GAS] = {0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_BARRAGE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_LEECH_LIFE] = {0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_LOVELY_KISS] = {0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_SKY_ATTACK] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1}, - [MOVE_TRANSFORM] = {0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_BUBBLE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_DIZZY_PUNCH] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_SPORE] = {0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_FLASH] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_PSYWAVE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_SPLASH] = {0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_ACID_ARMOR] = {0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_CRABHAMMER] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0}, - [MOVE_EXPLOSION] = {0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0}, - [MOVE_FURY_SWIPES] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_BONEMERANG] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_REST] = {1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_ROCK_SLIDE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1}, - [MOVE_HYPER_FANG] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1}, - [MOVE_SHARPEN] = {0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_CONVERSION] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_TRI_ATTACK] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_SUPER_FANG] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_SLASH] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_SUBSTITUTE] = {0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_STRUGGLE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0}, - [MOVE_SKETCH] = {0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0}, - [MOVE_TRIPLE_KICK] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_THIEF] = {0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_SPIDER_WEB] = {0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_MIND_READER] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0}, - [MOVE_NIGHTMARE] = {1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_FLAME_WHEEL] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_SNORE] = {1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_CURSE] = {0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_FLAIL] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_CONVERSION_2] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_AEROBLAST] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0}, - [MOVE_COTTON_SPORE] = {0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_REVERSAL] = {1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_SPITE] = {0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_POWDER_SNOW] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_PROTECT] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0}, - [MOVE_MACH_PUNCH] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_SCARY_FACE] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_FAINT_ATTACK] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_SWEET_KISS] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_BELLY_DRUM] = {1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_SLUDGE_BOMB] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1}, - [MOVE_MUD_SLAP] = {0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_OCTAZOOKA] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1}, - [MOVE_SPIKES] = {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_ZAP_CANNON] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1}, - [MOVE_FORESIGHT] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_DESTINY_BOND] = {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0}, - [MOVE_PERISH_SONG] = {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0}, - [MOVE_ICY_WIND] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1}, - [MOVE_DETECT] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0}, - [MOVE_BONE_RUSH] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_LOCK_ON] = {1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0}, - [MOVE_OUTRAGE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1}, - [MOVE_SANDSTORM] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_GIGA_DRAIN] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0}, - [MOVE_ENDURE] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_CHARM] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_ROLLOUT] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_FALSE_SWIPE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_SWAGGER] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, - [MOVE_MILK_DRINK] = {0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_SPARK] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_FURY_CUTTER] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_STEEL_WING] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1}, - [MOVE_MEAN_LOOK] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0}, - [MOVE_ATTRACT] = {0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_SLEEP_TALK] = {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}, - [MOVE_HEAL_BELL] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0}, - [MOVE_RETURN] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_PRESENT] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0}, - [MOVE_FRUSTRATION] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_SAFEGUARD] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_PAIN_SPLIT] = {0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_SACRED_FIRE] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1}, - [MOVE_MAGNITUDE] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_DYNAMIC_PUNCH] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1}, - [MOVE_MEGAHORN] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0}, - [MOVE_DRAGON_BREATH] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_BATON_PASS] = {1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_ENCORE] = {0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0}, - [MOVE_PURSUIT] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_RAPID_SPIN] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_SWEET_SCENT] = {0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_IRON_TAIL] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1}, - [MOVE_METAL_CLAW] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1}, - [MOVE_VITAL_THROW] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_MORNING_SUN] = {1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0}, - [MOVE_SYNTHESIS] = {1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0}, - [MOVE_MOONLIGHT] = {1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0}, - [MOVE_HIDDEN_POWER] = {0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_CROSS_CHOP] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0}, - [MOVE_TWISTER] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_RAIN_DANCE] = {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0}, - [MOVE_SUNNY_DAY] = {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0}, - [MOVE_CRUNCH] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_MIRROR_COAT] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_PSYCH_UP] = {0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_EXTREME_SPEED] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0}, - [MOVE_ANCIENT_POWER] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1}, - [MOVE_SHADOW_BALL] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_FUTURE_SIGHT] = {0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_ROCK_SMASH] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_WHIRLPOOL] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1}, - [MOVE_BEAT_UP] = {0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_FAKE_OUT] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_UPROAR] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_STOCKPILE] = {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_SPIT_UP] = {1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0}, - [MOVE_SWALLOW] = {1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_HEAT_WAVE] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1}, - [MOVE_HAIL] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_TORMENT] = {0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_FLATTER] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_WILL_O_WISP] = {0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_MEMENTO] = {0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_FACADE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_FOCUS_PUNCH] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0}, - [MOVE_SMELLING_SALT] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_FOLLOW_ME] = {0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_NATURE_POWER] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_CHARGE] = {1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_TAUNT] = {0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_HELPING_HAND] = {0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_TRICK] = {0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_ROLE_PLAY] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_WISH] = {0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_ASSIST] = {0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0}, - [MOVE_INGRAIN] = {1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_SUPERPOWER] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0}, - [MOVE_MAGIC_COAT] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0}, - [MOVE_RECYCLE] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_REVENGE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0}, - [MOVE_BRICK_BREAK] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_YAWN] = {1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_KNOCK_OFF] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_ENDEAVOR] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0}, - [MOVE_ERUPTION] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0}, - [MOVE_SKILL_SWAP] = {0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_IMPRISON] = {0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0}, - [MOVE_REFRESH] = {0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_GRUDGE] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0}, - [MOVE_SNATCH] = {0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0}, - [MOVE_SECRET_POWER] = {0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_DIVE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_ARM_THRUST] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_CAMOUFLAGE] = {0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_TAIL_GLOW] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_LUSTER_PURGE] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1}, - [MOVE_MIST_BALL] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1}, - [MOVE_FEATHER_DANCE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_TEETER_DANCE] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_BLAZE_KICK] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1}, - [MOVE_MUD_SPORT] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_ICE_BALL] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_NEEDLE_ARM] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_SLACK_OFF] = {0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_HYPER_VOICE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0}, - [MOVE_POISON_FANG] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_CRUSH_CLAW] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1}, - [MOVE_BLAST_BURN] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0}, - [MOVE_HYDRO_CANNON] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0}, - [MOVE_METEOR_MASH] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1}, - [MOVE_ASTONISH] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_WEATHER_BALL] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_AROMATHERAPY] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0}, - [MOVE_FAKE_TEARS] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_AIR_CUTTER] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_OVERHEAT] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1}, - [MOVE_ODOR_SLEUTH] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_ROCK_TOMB] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1}, - [MOVE_SILVER_WIND] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1}, - [MOVE_METAL_SOUND] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_GRASS_WHISTLE] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_TICKLE] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_COSMIC_POWER] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_WATER_SPOUT] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0}, - [MOVE_SIGNAL_BEAM] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_SHADOW_PUNCH] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_EXTRASENSORY] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_SKY_UPPERCUT] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_SAND_TOMB] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1}, - [MOVE_SHEER_COLD] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0}, - [MOVE_MUDDY_WATER] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1}, - [MOVE_BULLET_SEED] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_AERIAL_ACE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_ICICLE_SPEAR] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_IRON_DEFENSE] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_BLOCK] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0}, - [MOVE_HOWL] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_DRAGON_CLAW] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_FRENZY_PLANT] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0}, - [MOVE_BULK_UP] = {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_BOUNCE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1}, - [MOVE_MUD_SHOT] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1}, - [MOVE_POISON_TAIL] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_COVET] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_VOLT_TACKLE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0}, - [MOVE_MAGICAL_LEAF] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_WATER_SPORT] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_CALM_MIND] = {1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_LEAF_BLADE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0}, - [MOVE_DRAGON_DANCE] = {1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_ROCK_BLAST] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_SHOCK_WAVE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, - [MOVE_WATER_PULSE] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1}, - [MOVE_DOOM_DESIRE] = {0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0}, - [MOVE_PSYCHO_BOOST] = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1}, + [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_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_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_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_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_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_SCARY_FACE] = {0}, + [MOVE_FAINT_ATTACK] = {[MOVE_QUALITY_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_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_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_METAL_SOUND] = {0}, + [MOVE_GRASS_WHISTLE] = {0}, + [MOVE_TICKLE] = {[MOVE_QUALITY_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_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}, }; -static const u8 gUnknown_0860C988[][DOME_TOURNAMENT_TRAINERS_COUNT] = +// 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] = { - {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 2, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0}, - {1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0}, - {3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - {0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0}, - {0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0}, - {0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0}, - {2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 1, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 4, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + [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}, + [DOME_BATTLE_STYLE_BALANCED] = {0}, // If no other thresholds are met, this battle style is used + [DOME_BATTLE_STYLE_UNUSED1] = {0}, // Here below is unreachable + [DOME_BATTLE_STYLE_UNUSED2] = {0}, + [DOME_BATTLE_STYLE_UNUSED3] = {0}, + //[DOME_BATTLE_STYLE_UNUSED4] = {0}, // Excluded here, presumably was meant to be a style just for Dome Ace Tucker }; static const u8 sUnusedArray[] = { @@ -564,7 +567,7 @@ static const u8 sTourneyTreeCursorMovementMap[][5][4]= {{0x0f, 0x08, 0x08, 0x00}, {0x0f, 0x08, 0x08, 0x00}, {0x0f, 0x08, 0x08, 0x00}, {0x0f, 0x08, 0x08, 0x00}, {0x0f, 0x08, 0x08, 0x00}}, }; -static const struct BgTemplate gUnknown_0860CE74[4] = +static const struct BgTemplate sTourneyTreeBgTemplates[4] = { { .bg = 0, @@ -644,7 +647,7 @@ static const struct BgTemplate sOpponentInfoBgTemplates[4] = }, }; -static const struct WindowTemplate gUnknown_0860CE94[] = +static const struct WindowTemplate sTourneyTreeWindowTemplates[] = { { .bg = 0, @@ -1074,7 +1077,17 @@ static const struct SpriteTemplate gUnknown_0860D068 = .callback = sub_8190C6C }; -static const u8 sTourneyTreeTrainerIds[] = {0, 8, 12, 4, 7, 15, 11, 3, 2, 10, 14, 6, 5, 13, 9, 1}; +// Organized by seed starting position, i.e. seed 0 battles seed 8 first +static const u8 sTourneyTreeTrainerIds[DOME_TOURNAMENT_TRAINERS_COUNT] = +{ + 0, 8, + 12, 4, + 7, 15, + 11, 3, + 2, 10, + 14, 6, + 5, 13, + 9, 1}; static void (* const sBattleDomeFunctions[])(void) = { @@ -1093,7 +1106,7 @@ static void (* const sBattleDomeFunctions[])(void) = [BATTLE_DOME_FUNC_RESOLVE_WINNERS] = ResolveDomeRoundWinners, [BATTLE_DOME_FUNC_SAVE] = SaveDomeChallenge, [BATTLE_DOME_FUNC_INCREMENT_STREAK] = IncrementDomeStreaks, - [BATTLE_DOME_FUNC_SET_TRAINERS] = InitDomeFacilityTrainersAndMons, + [BATTLE_DOME_FUNC_SET_TRAINERS] = SetFacilityTrainerAndMonPtrs, [BATTLE_DOME_FUNC_RESET_SKETCH] = ResetSketchedMoves, [BATTLE_DOME_FUNC_RESTORE_HELD_ITEMS] = RestoreDomePlayerPartyHeldItems, [BATTLE_DOME_FUNC_REDUCE_PARTY] = ReduceDomePlayerPartyToSelectedMons, @@ -1135,7 +1148,24 @@ static const u8 sIdToOpponentId[DOME_TOURNAMENT_TRAINERS_COUNT][DOME_ROUNDS_COUN [15] = {7, 4, 0, 8}, }; -static const u8 gUnknown_0860D14C[] = {0x00, 0x08, 0x04, 0x0c, 0x07, 0x0f, 0x03, 0x0b, 0x02, 0x0a, 0x06, 0x0e, 0x05, 0x0d, 0x01, 0x09}; +static const u8 gUnknown_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] = { @@ -1165,84 +1195,86 @@ static const u8 gUnknown_0860D19C[DOME_ROUNDS_COUNT] = [DOME_FINAL] = 30 }; -static const u8 gUnknown_0860D1A0[][4] = +static const u8 gUnknown_0860D1A0[][DOME_ROUNDS_COUNT] = { - {0x10, 0x18, 0x1c, 0x1e}, - {0x11, 0x18, 0x1c, 0x1e}, - {0x12, 0x19, 0x1c, 0x1e}, - {0x13, 0x19, 0x1c, 0x1e}, - {0x14, 0x1a, 0x1d, 0x1e}, - {0x15, 0x1a, 0x1d, 0x1e}, - {0x16, 0x1b, 0x1d, 0x1e}, - {0x17, 0x1b, 0x1d, 0x1e}, + {16, 24, 28, 30}, + {17, 24, 28, 30}, + {18, 25, 28, 30}, + {19, 25, 28, 30}, + {20, 26, 29, 30}, + {21, 26, 29, 30}, + {22, 27, 29, 30}, + {23, 27, 29, 30}, }; -static const u8 gUnknown_0860D1C0[] = {0x00, 0x0f, 0x08, 0x07, 0x03, 0x0c, 0x0b, 0x04, 0x01, 0x0e, 0x09, 0x06, 0x02, 0x0d, 0x0a, 0x05}; +static const u8 gUnknown_0860D1C0[DOME_TOURNAMENT_TRAINERS_COUNT] = {0, 15, 8, 7, 3, 12, 11, 4, 1, 14, 9, 6, 2, 13, 10, 5}; -static const u8 *const sBattleDomePotentialTexts[] = +// Each tourney trainer has a text describing their potential, 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] = { - gBattleDomeOpponentPotentialText1, - gBattleDomeOpponentPotentialText2, - gBattleDomeOpponentPotentialText3, - gBattleDomeOpponentPotentialText4, - gBattleDomeOpponentPotentialText5, - gBattleDomeOpponentPotentialText6, - gBattleDomeOpponentPotentialText7, - gBattleDomeOpponentPotentialText8, - gBattleDomeOpponentPotentialText9, - gBattleDomeOpponentPotentialText10, - gBattleDomeOpponentPotentialText11, - gBattleDomeOpponentPotentialText12, - gBattleDomeOpponentPotentialText13, - gBattleDomeOpponentPotentialText14, - gBattleDomeOpponentPotentialText15, - gBattleDomeOpponentPotentialText16, - gBattleDomeOpponentPotentialText17, + BattleDome_Text_Potential1, // Highest potential + BattleDome_Text_Potential2, + BattleDome_Text_Potential3, + BattleDome_Text_Potential4, + BattleDome_Text_Potential5, + BattleDome_Text_Potential6, + BattleDome_Text_Potential7, + BattleDome_Text_Potential8, + BattleDome_Text_Potential9, + BattleDome_Text_Potential10, + BattleDome_Text_Potential11, + BattleDome_Text_Potential12, + BattleDome_Text_Potential13, + BattleDome_Text_Potential14, + BattleDome_Text_Potential15, + BattleDome_Text_Potential16, // Lowest potential + BattleDome_Text_PotentialDomeAceTucker, }; -static const u8 *const sBattleDomeOpponentStyleTexts[] = +static const u8 *const sBattleDomeOpponentStyleTexts[NUM_BATTLE_STYLES] = { - gBattleDomeOpponentStyleText1, - gBattleDomeOpponentStyleText2, - gBattleDomeOpponentStyleText3, - gBattleDomeOpponentStyleText4, - gBattleDomeOpponentStyleText5, - gBattleDomeOpponentStyleText6, - gBattleDomeOpponentStyleText7, - gBattleDomeOpponentStyleText8, - gBattleDomeOpponentStyleText9, - gBattleDomeOpponentStyleText10, - gBattleDomeOpponentStyleText11, - gBattleDomeOpponentStyleText12, - gBattleDomeOpponentStyleText13, - gBattleDomeOpponentStyleText14, - gBattleDomeOpponentStyleText15, - gBattleDomeOpponentStyleText16, - gBattleDomeOpponentStyleText17, - gBattleDomeOpponentStyleText18, - gBattleDomeOpponentStyleText19, - gBattleDomeOpponentStyleText20, - gBattleDomeOpponentStyleText21, - gBattleDomeOpponentStyleText22, - gBattleDomeOpponentStyleText23, - gBattleDomeOpponentStyleText24, - gBattleDomeOpponentStyleText25, - gBattleDomeOpponentStyleText26, - gBattleDomeOpponentStyleText27, - gBattleDomeOpponentStyleText28, - gBattleDomeOpponentStyleTextUnused1, - gBattleDomeOpponentStyleTextUnused2, - gBattleDomeOpponentStyleTextUnused3, - gBattleDomeOpponentStyleTextUnused4, + [DOME_BATTLE_STYLE_RISKY] = BattleDome_Text_StyleRiskDisaster, + [DOME_BATTLE_STYLE_STALL] = BattleDome_Text_StyleEndureLongBattles, + [DOME_BATTLE_STYLE_VARIED] = BattleDome_Text_StyleVariesTactics, + [DOME_BATTLE_STYLE_COMBO_HIGH] = BattleDome_Text_StyleToughWinningPattern, + [DOME_BATTLE_STYLE_RARE_MOVES] = BattleDome_Text_StyleUsesVeryRareMove, // Seems like the text for these two was swapped + [DOME_BATTLE_STYLE_RARE_MOVE] = BattleDome_Text_StyleUsesStartlingMoves, // + [DOME_BATTLE_STYLE_HP] = BattleDome_Text_StyleConstantlyWatchesHP, + [DOME_BATTLE_STYLE_STORE_POWER] = BattleDome_Text_StyleStoresAndLoosesPower, + [DOME_BATTLE_STYLE_ENFEEBLE_LOW] = BattleDome_Text_StyleEnfeeblesFoes, + [DOME_BATTLE_STYLE_LUCK] = BattleDome_Text_StylePrefersLuckTactics, + [DOME_BATTLE_STYLE_10] = BattleDome_Text_StyleRegalAtmosphere, + [DOME_BATTLE_STYLE_LOW_PP] = BattleDome_Text_StylePowerfulLowPPMoves, + [DOME_BATTLE_STYLE_STATUS_ATK] = BattleDome_Text_StyleEnfeebleThenAttack, + [DOME_BATTLE_STYLE_ENDURE] = BattleDome_Text_StyleBattlesWhileEnduring, + [DOME_BATTLE_STYLE_STATUS] = BattleDome_Text_StyleUpsetsFoesEmotionally, + [DOME_BATTLE_STYLE_STRAIGHTFORWARD] = BattleDome_Text_StyleStrongAndStraightforward, + [DOME_BATTLE_STYLE_AGGRESSIVE] = BattleDome_Text_StyleAggressivelyStrongMoves, + [DOME_BATTLE_STYLE_DEF] = BattleDome_Text_StyleCleverlyDodgesAttacks, + [DOME_BATTLE_STYLE_ENFEEBLE_HIGH] = BattleDome_Text_StyleUsesUpsettingMoves, + [DOME_BATTLE_STYLE_POPULAR_POWER] = BattleDome_Text_StyleUsesPopularMoves, + [DOME_BATTLE_STYLE_COMBO_LOW] = BattleDome_Text_StyleHasPowerfulComboMoves, + [DOME_BATTLE_STYLE_ACCURATE] = BattleDome_Text_StyleUsesHighProbabilityMoves, + [DOME_BATTLE_STYLE_POWERFUL] = BattleDome_Text_StyleAggressivelySpectacularMoves, + [DOME_BATTLE_STYLE_ATK_OVER_DEF] = BattleDome_Text_StyleEmphasizesOffenseOverDefense, + [DOME_BATTLE_STYLE_DEF_OVER_ATK] = BattleDome_Text_StyleEmphasizesDefenseOverOffense, + [DOME_BATTLE_STYLE_POPULAR_STRONG] = BattleDome_Text_StyleAttacksQuicklyStrongMoves, + [DOME_BATTLE_STYLE_EFFECTS] = BattleDome_Text_StyleUsesAddedEffectMoves, + [DOME_BATTLE_STYLE_BALANCED] = BattleDome_Text_StyleUsesBalancedMixOfMoves, + [DOME_BATTLE_STYLE_UNUSED1] = BattleDome_Text_StyleSampleMessage1, + [DOME_BATTLE_STYLE_UNUSED2] = BattleDome_Text_StyleSampleMessage2, + [DOME_BATTLE_STYLE_UNUSED3] = BattleDome_Text_StyleSampleMessage3, + [DOME_BATTLE_STYLE_UNUSED4] = BattleDome_Text_StyleSampleMessage4, }; static const u8 *const sBattleDomeOpponentStatsTexts[] = { - gBattleDomeOpponentStatsText1, - gBattleDomeOpponentStatsText2, - gBattleDomeOpponentStatsText3, - gBattleDomeOpponentStatsText4, - gBattleDomeOpponentStatsText5, + BattleDome_Text_EmphasizesHPAndAtk, + BattleDome_Text_EmphasizesHPAndDef, + BattleDome_Text_EmphasizesHPAndSpeed, + BattleDome_Text_EmphasizesHPAndSpAtk, + BattleDome_Text_EmphasizesHPAndSpDef, gBattleDomeOpponentStatsText6, gBattleDomeOpponentStatsText7, gBattleDomeOpponentStatsText8, @@ -1253,13 +1285,13 @@ static const u8 *const sBattleDomeOpponentStatsTexts[] = gBattleDomeOpponentStatsText13, gBattleDomeOpponentStatsText14, gBattleDomeOpponentStatsText15, - gBattleDomeOpponentStatsText16, + BattleDome_Text_EmphasizesHP, gBattleDomeOpponentStatsText17, gBattleDomeOpponentStatsText18, gBattleDomeOpponentStatsText19, gBattleDomeOpponentStatsText20, gBattleDomeOpponentStatsText21, - gBattleDomeOpponentStatsText22, + BattleDome_Text_NeglectsHPAndAtk, gBattleDomeOpponentStatsText23, gBattleDomeOpponentStatsText24, gBattleDomeOpponentStatsText25, @@ -1274,13 +1306,13 @@ static const u8 *const sBattleDomeOpponentStatsTexts[] = gBattleDomeOpponentStatsText34, gBattleDomeOpponentStatsText35, gBattleDomeOpponentStatsText36, - gBattleDomeOpponentStatsText37, + BattleDome_Text_NeglectsHP, gBattleDomeOpponentStatsText38, gBattleDomeOpponentStatsText39, gBattleDomeOpponentStatsText40, gBattleDomeOpponentStatsText41, gBattleDomeOpponentStatsText42, - gBattleDomeOpponentStatsText43, + BattleDome_Text_RaisesMonsWellBalanced, }; static const u8 sInfoTrainerMonX[] = {0x68, 0x88, 0x68}; @@ -1289,7 +1321,7 @@ static const u8 sSpeciesNameTextYCoords[] = {0, 4, 0}; static const u8 gUnknown_0860D349[] = {0x00, 0x05, 0x09, 0x0c, 0x0e, 0x00, 0x00}; -static const u8 *const sBattleDomeMatchNumberTexts[] = +static const u8 *const sBattleDomeMatchNumberTexts[DOME_TOURNAMENT_MATCHES_COUNT] = { gBattleDomeMatchNumberText1, gBattleDomeMatchNumberText2, @@ -1324,7 +1356,7 @@ 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[] = {0, 8, 12, 4, 7, 15, 11, 3, 2, 10, 14, 6, 5, 13, 9, 1}; +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] = { @@ -2216,7 +2248,7 @@ static const struct UnkStruct_860DD10 gUnknown_0860dcdc[] = {.src = 0x602e, .y = 0x0b, .x = 0x0f}, }; -static const struct UnkStruct_860DD10 * const gUnknown_0860DD10[DOME_TOURNAMENT_TRAINERS_COUNT][4] = +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}, @@ -2236,7 +2268,7 @@ static const struct UnkStruct_860DD10 * const gUnknown_0860DD10[DOME_TOURNAMENT_ {gUnknown_0860d70c, gUnknown_0860d71c, gUnknown_0860d738, gUnknown_0860d764}, }; -static const u8 gUnknown_0860DE10[DOME_TOURNAMENT_TRAINERS_COUNT][4] = +static const u8 gUnknown_0860DE10[DOME_TOURNAMENT_TRAINERS_COUNT][DOME_ROUNDS_COUNT] = { {0x04, 0x07, 0x0b, 0x0d}, {0x04, 0x07, 0x0b, 0x0d}, @@ -2420,14 +2452,14 @@ static void InitDomeTrainers(void) int monTypesBits, monTypesCount; int trainerId; int monSetId; - u16 *statSums; + u16 *rankingScores; int *statValues; u8 ivs = 0; species[0] = 0; species[1] = 0; species[2] = 0; - statSums = AllocZeroed(sizeof(u16) * DOME_TOURNAMENT_TRAINERS_COUNT); + rankingScores = AllocZeroed(sizeof(u16) * DOME_TOURNAMENT_TRAINERS_COUNT); statValues = AllocZeroed(sizeof(int) * NUM_STATS); gSaveBlock2Ptr->frontier.domeLvlMode = gSaveBlock2Ptr->frontier.lvlMode + 1; @@ -2437,19 +2469,22 @@ static void InitDomeTrainers(void) DOME_TRAINERS[0].eliminatedAt = 0; DOME_TRAINERS[0].forfeited = FALSE; + // Store the data used to display party information on the player's tourney page for (i = 0; i < FRONTIER_PARTY_SIZE; i++) { DOME_MONS[0][i] = GetMonData(&gPlayerParty[gSaveBlock2Ptr->frontier.selectedPartyMons[i] - 1], MON_DATA_SPECIES, NULL); for (j = 0; j < MAX_MON_MOVES; j++) - gSaveBlock2Ptr->frontier.field_EFC[i].moves[j] = GetMonData(&gPlayerParty[gSaveBlock2Ptr->frontier.selectedPartyMons[i] - 1], MON_DATA_MOVE1 + j, NULL); + gSaveBlock2Ptr->frontier.domePlayerPartyData[i].moves[j] = GetMonData(&gPlayerParty[gSaveBlock2Ptr->frontier.selectedPartyMons[i] - 1], MON_DATA_MOVE1 + j, NULL); for (j = 0; j < NUM_STATS; j++) - gSaveBlock2Ptr->frontier.field_EFC[i].evs[j] = GetMonData(&gPlayerParty[gSaveBlock2Ptr->frontier.selectedPartyMons[i] - 1], MON_DATA_HP_EV + j, NULL); + gSaveBlock2Ptr->frontier.domePlayerPartyData[i].evs[j] = GetMonData(&gPlayerParty[gSaveBlock2Ptr->frontier.selectedPartyMons[i] - 1], MON_DATA_HP_EV + j, NULL); - gSaveBlock2Ptr->frontier.field_EFC[i].nature = GetNature(&gPlayerParty[gSaveBlock2Ptr->frontier.selectedPartyMons[i] - 1]); + gSaveBlock2Ptr->frontier.domePlayerPartyData[i].nature = GetNature(&gPlayerParty[gSaveBlock2Ptr->frontier.selectedPartyMons[i] - 1]); } + // Populate the tourney roster with random frontier trainers (dependent on streak) for (i = 1; i < DOME_TOURNAMENT_TRAINERS_COUNT; i++) { + // First 5/16 trainers are easier than the rest if (i > 5) { do @@ -2503,21 +2538,27 @@ static void InitDomeTrainers(void) DOME_TRAINERS[i].forfeited = FALSE; } + // rankingScores is used to determine the seed (ranking) of the trainers + // rankingScores[0] is for the player, rankingScores[1-15] are for the opponent trainers + + // Calculate player's ranking score monTypesBits = 0; - statSums[0] = 0; + rankingScores[0] = 0; for (i = 0; i < FRONTIER_PARTY_SIZE; i++) { + // trainerId var re-used here as index of selected mons trainerId = gSaveBlock2Ptr->frontier.selectedPartyMons[i] - 1; - statSums[0] += GetMonData(&gPlayerParty[trainerId], MON_DATA_ATK, NULL); - statSums[0] += GetMonData(&gPlayerParty[trainerId], MON_DATA_DEF, NULL); - statSums[0] += GetMonData(&gPlayerParty[trainerId], MON_DATA_SPATK, NULL); - statSums[0] += GetMonData(&gPlayerParty[trainerId], MON_DATA_SPDEF, NULL); - statSums[0] += GetMonData(&gPlayerParty[trainerId], MON_DATA_SPEED, NULL); - statSums[0] += GetMonData(&gPlayerParty[trainerId], MON_DATA_MAX_HP, NULL); + rankingScores[0] += GetMonData(&gPlayerParty[trainerId], MON_DATA_ATK, NULL); + rankingScores[0] += GetMonData(&gPlayerParty[trainerId], MON_DATA_DEF, NULL); + rankingScores[0] += GetMonData(&gPlayerParty[trainerId], MON_DATA_SPATK, NULL); + rankingScores[0] += GetMonData(&gPlayerParty[trainerId], MON_DATA_SPDEF, NULL); + rankingScores[0] += GetMonData(&gPlayerParty[trainerId], MON_DATA_SPEED, NULL); + rankingScores[0] += GetMonData(&gPlayerParty[trainerId], MON_DATA_MAX_HP, NULL); monTypesBits |= gBitTable[gBaseStats[GetMonData(&gPlayerParty[trainerId], MON_DATA_SPECIES, NULL)].type1]; monTypesBits |= gBitTable[gBaseStats[GetMonData(&gPlayerParty[trainerId], MON_DATA_SPECIES, NULL)].type2]; } + // Count the number of types in the players party, to factor into the ranking for (monTypesCount = 0, j = 0; j < 32; j++) { if (monTypesBits & 1) @@ -2526,12 +2567,13 @@ static void InitDomeTrainers(void) } monLevel = SetFacilityPtrsGetLevel(); - statSums[0] += (monTypesCount * monLevel) / 20; + rankingScores[0] += (monTypesCount * monLevel) / 20; + // Calculate rankingScores for the opponent trainers for (i = 1; i < DOME_TOURNAMENT_TRAINERS_COUNT; i++) { monTypesBits = 0; - statSums[i] = 0; + rankingScores[i] = 0; ivs = GetDomeTrainerMonIvs(DOME_TRAINERS[i].trainerId); for (j = 0; j < FRONTIER_PARTY_SIZE; j++) { @@ -2541,12 +2583,12 @@ static void InitDomeTrainers(void) gFacilityTrainerMons[DOME_MONS[i][j]].nature, statValues); - statSums[i] += statValues[STAT_ATK]; - statSums[i] += statValues[STAT_DEF]; - statSums[i] += statValues[STAT_SPATK]; - statSums[i] += statValues[STAT_SPDEF]; - statSums[i] += statValues[STAT_SPEED]; - statSums[i] += statValues[STAT_HP]; + rankingScores[i] += statValues[STAT_ATK]; + rankingScores[i] += statValues[STAT_DEF]; + rankingScores[i] += statValues[STAT_SPATK]; + rankingScores[i] += statValues[STAT_SPDEF]; + rankingScores[i] += statValues[STAT_SPEED]; + rankingScores[i] += statValues[STAT_HP]; monTypesBits |= gBitTable[gBaseStats[gFacilityTrainerMons[DOME_MONS[i][j]].species].type1]; monTypesBits |= gBitTable[gBaseStats[gFacilityTrainerMons[DOME_MONS[i][j]].species].type2]; } @@ -2557,30 +2599,32 @@ static void InitDomeTrainers(void) monTypesCount++; monTypesBits >>= 1; } - statSums[i] += (monTypesCount * monLevel) / 20; + rankingScores[i] += (monTypesCount * monLevel) / 20; } + // Seed tourney trainers according to their ranking for (i = 0; i < DOME_TOURNAMENT_TRAINERS_COUNT - 1; i++) { for (j = i + 1; j < DOME_TOURNAMENT_TRAINERS_COUNT; j++) { - if (statSums[i] < statSums[j]) + if (rankingScores[i] < rankingScores[j]) { - SwapDomeTrainers(i, j, statSums); + SwapDomeTrainers(i, j, rankingScores); } else { - if (statSums[i] == statSums[j]) + if (rankingScores[i] == rankingScores[j]) { if (DOME_TRAINERS[j].trainerId == TRAINER_PLAYER) - SwapDomeTrainers(i, j, statSums); + SwapDomeTrainers(i, j, rankingScores); else if (DOME_TRAINERS[i].trainerId > DOME_TRAINERS[j].trainerId) - SwapDomeTrainers(i, j, statSums); + SwapDomeTrainers(i, j, rankingScores); } } } } + // Add Frontier Brain to the tourney if they should be fought at the end of it if (GetFrontierBrainStatus() != FRONTIER_BRAIN_NOT_READY) { for (i = 0; i < DOME_TOURNAMENT_TRAINERS_COUNT; i++) @@ -2589,6 +2633,7 @@ static void InitDomeTrainers(void) break; } + // if i != 0, the below conditional is always TRUE if (gUnknown_0860D3F1[i][0] != 0) { j = 0; @@ -2604,7 +2649,7 @@ static void InitDomeTrainers(void) DOME_MONS[j][i] = GetFrontierBrainMonSpecies(i); } - Free(statSums); + Free(rankingScores); Free(statValues); } @@ -3276,6 +3321,7 @@ 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; @@ -3845,7 +3891,7 @@ static void sub_8190CD4(u8 taskId) if (sBattleDomeStruct->unk_10 == 0) { matchNo = gTasks[taskId2].data[1] - 16; - sub_8192F08(matchNo, sBattleDomeStruct->unk_11); + BufferDomeWinString(matchNo, sBattleDomeStruct->unk_11); gBattle_BG2_X = 0; gBattle_BG2_Y = 320; trainerTournamentId = sBattleDomeStruct->unk_11[0]; @@ -3854,7 +3900,7 @@ static void sub_8190CD4(u8 taskId) else if (sBattleDomeStruct->unk_10 == 2) { matchNo = gTasks[taskId2].data[1] - 16; - sub_8192F08(matchNo, sBattleDomeStruct->unk_11); + BufferDomeWinString(matchNo, sBattleDomeStruct->unk_11); gBattle_BG2_X = 0; gBattle_BG2_Y = 320; trainerTournamentId = sBattleDomeStruct->unk_11[1]; @@ -3961,7 +4007,7 @@ static void sub_8190CD4(u8 taskId) if (sBattleDomeStruct->unk_10 == 0) { matchNo = gTasks[taskId2].data[1] - 16; - sub_8192F08(matchNo, sBattleDomeStruct->unk_11); + BufferDomeWinString(matchNo, sBattleDomeStruct->unk_11); gBattle_BG2_X = 0; gBattle_BG2_Y = 160; trainerTournamentId = sBattleDomeStruct->unk_11[0]; @@ -3970,7 +4016,7 @@ static void sub_8190CD4(u8 taskId) else if (sBattleDomeStruct->unk_10 == 2) { matchNo = gTasks[taskId2].data[1] - 16; - sub_8192F08(matchNo, sBattleDomeStruct->unk_11); + BufferDomeWinString(matchNo, sBattleDomeStruct->unk_11); gBattle_BG2_X = 0; gBattle_BG2_Y = 160; trainerTournamentId = sBattleDomeStruct->unk_11[1]; @@ -4488,14 +4534,14 @@ static u8 sub_819221C(u8 taskId) if (gMain.newKeys & DPAD_UP && sBattleDomeStruct->unk_10 == 0) { if (r5 == 0) - r5 = 15; + r5 = DOME_TOURNAMENT_TRAINERS_COUNT - 1; else r5--; retVal = 1; } else if (gMain.newKeys & DPAD_DOWN && sBattleDomeStruct->unk_10 == 0) { - if (r5 == 15) + if (r5 == DOME_TOURNAMENT_TRAINERS_COUNT - 1) r5 = 0; else r5++; @@ -4532,7 +4578,7 @@ static u8 sub_819221C(u8 taskId) { if (gMain.newKeys & DPAD_UP && sBattleDomeStruct->unk_10 == 1) { - if (r5 == 16) + if (r5 == DOME_TOURNAMENT_TRAINERS_COUNT) r5 = gUnknown_0860D19C[roundId]; else r5--; @@ -4541,7 +4587,7 @@ static u8 sub_819221C(u8 taskId) else if (gMain.newKeys & DPAD_DOWN && sBattleDomeStruct->unk_10 == 1) { if (r5 == gUnknown_0860D19C[roundId]) - r5 = 16; + r5 = DOME_TOURNAMENT_TRAINERS_COUNT; else r5++; retVal = 6; @@ -4602,6 +4648,7 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId) if (flags & 0x10) 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); else if (trainerId == TRAINER_FRONTIER_BRAIN) @@ -4612,7 +4659,8 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId) if (flags & 0x1E) gSprites[sBattleDomeStruct->arr[arrId]].invisible = TRUE; - for (i = 0; i < 3; i++) + // Create party mon icons + for (i = 0; i < FRONTIER_PARTY_SIZE; i++) { if (trainerId == TRAINER_PLAYER) { @@ -4645,6 +4693,8 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId) if (flags & 0x1E) gSprites[sBattleDomeStruct->arr[2 + i + arrId]].invisible = TRUE; } + + // Initialize the text printer textPrinter.fontId = 2; textPrinter.x = 0; textPrinter.y = 0; @@ -4657,6 +4707,7 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId) textPrinter.bgColor = TEXT_COLOR_TRANSPARENT; textPrinter.shadowColor = TEXT_DYNAMIC_COLOR_4; + // Get class and trainer name i = 0; if (trainerId == TRAINER_PLAYER) j = gFacilityClassToTrainerClass[FACILITY_CLASS_BRENDAN]; @@ -4685,6 +4736,7 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId) StringAppend(gStringVar1, gStringVar2); } + // Print class and trainer name textPrinter.currentX = GetStringCenterAlignXOffsetWithLetterSpacing(textPrinter.fontId, gStringVar1, 0xD0, textPrinter.letterSpacing); textPrinter.currentChar = gStringVar1; textPrinter.windowId = windowId; @@ -4693,7 +4745,8 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId) AddTextPrinter(&textPrinter, 0, NULL); textPrinter.letterSpacing = 0; - for (i = 0; i < 3; i++) + // Print names of the party mons + for (i = 0; i < FRONTIER_PARTY_SIZE; i++) { textPrinter.currentY = sSpeciesNameTextYCoords[i]; if (trainerId == TRAINER_PLAYER) @@ -4716,8 +4769,10 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId) PutWindowTilemap(windowId + 4); CopyWindowToVram(windowId + 4, 3); + + // Print text about trainers potential in the tourney if (trainerId == TRAINER_FRONTIER_BRAIN) - textPrinter.currentChar = sBattleDomePotentialTexts[16]; + textPrinter.currentChar = sBattleDomePotentialTexts[DOME_TOURNAMENT_TRAINERS_COUNT]; else textPrinter.currentChar = sBattleDomePotentialTexts[trainerTournamentId]; @@ -4728,39 +4783,44 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId) textPrinter.currentY = 4; AddTextPrinter(&textPrinter, 0, NULL); + // Calculate move scores to determine the trainers battle style for (i = 0; i < FRONTIER_PARTY_SIZE; i++) { for (j = 0; j < MAX_MON_MOVES; j++) { - for (k = 0; k < DOME_TOURNAMENT_TRAINERS_COUNT; k++) + for (k = 0; k < NUM_MOVE_QUALITIES; k++) { if (trainerId == TRAINER_FRONTIER_BRAIN) - allocatedArray[k] += sMovePointsForDomeTrainers[GetFrontierBrainMonMove(i, j)][k]; + allocatedArray[k] += sBattleStyleMoveQualities[GetFrontierBrainMonMove(i, j)][k]; else if (trainerId == TRAINER_PLAYER) - allocatedArray[k] += sMovePointsForDomeTrainers[gSaveBlock2Ptr->frontier.field_EFC[i].moves[j]][k]; + allocatedArray[k] += sBattleStyleMoveQualities[gSaveBlock2Ptr->frontier.domePlayerPartyData[i].moves[j]][k]; else - allocatedArray[k] += sMovePointsForDomeTrainers[gFacilityTrainerMons[DOME_MONS[trainerTournamentId][i]].moves[j]][k]; + allocatedArray[k] += sBattleStyleMoveQualities[gFacilityTrainerMons[DOME_MONS[trainerTournamentId][i]].moves[j]][k]; } } } - for (i = 0; i < ARRAY_COUNT(gUnknown_0860C988); i++) + // Get the battle style the trainer uses + // Each element of sBattleStyleThresholds is an array of point thresholds for particular move qualities + // If all the point thresholds in the array are satisfied, the player is considered to be using that battle style + for (i = 0; i < ARRAY_COUNT(sBattleStyleThresholds); i++) { - int r4 = 0; + int thresholdStatCount = 0; - for (k = 0, j = 0; j < DOME_TOURNAMENT_TRAINERS_COUNT; j++) + for (k = 0, j = 0; j < NUM_MOVE_QUALITIES; j++) { - if (gUnknown_0860C988[i][j] != 0) + if (sBattleStyleThresholds[i][j] != 0) { - r4++; - if (allocatedArray[j] != 0 && allocatedArray[j] >= gUnknown_0860C988[i][j]) - k++; + thresholdStatCount++; + if (allocatedArray[j] != 0 && allocatedArray[j] >= sBattleStyleThresholds[i][j]) + k++; // number of point thresholds met/exceeded } } - if (r4 == k) - break; + if (thresholdStatCount == k) + break; // All thresholds for battle style met/exceeded, player uses this battle style } + // Print the trainers battle style textPrinter.currentChar = sBattleDomeOpponentStyleTexts[i]; textPrinter.y = 20; textPrinter.currentY = 20; @@ -4769,6 +4829,7 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId) for (i = 0; i < 18; i++) allocatedArray[i] = 0; + // Calculate EV/nature points for the stat portion of battle style if (trainerId == TRAINER_FRONTIER_BRAIN || trainerId == TRAINER_PLAYER) { for (i = 0; i < FRONTIER_PARTY_SIZE; i++) @@ -4778,15 +4839,15 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId) if (trainerId == TRAINER_FRONTIER_BRAIN) allocatedArray[j] = GetFrontierBrainMonEvs(i, j); else - allocatedArray[j] = gSaveBlock2Ptr->frontier.field_EFC[i].evs[j]; + allocatedArray[j] = gSaveBlock2Ptr->frontier.domePlayerPartyData[i].evs[j]; } - allocatedArray[6] += allocatedArray[0]; + allocatedArray[NUM_STATS] += allocatedArray[0]; for (j = 0; j < 5; j++) { if (trainerId == TRAINER_FRONTIER_BRAIN) nature = GetFrontierBrainMonNature(i); else - nature = gSaveBlock2Ptr->frontier.field_EFC[i].nature; + nature = gSaveBlock2Ptr->frontier.domePlayerPartyData[i].nature; if (gNatureStatTable[nature][j] > 0) { @@ -4803,14 +4864,14 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId) } } } - for (j = 0, i = 0; i < 6; i++) - j += allocatedArray[6 + i]; - for (i = 0; i < 6; i++) - allocatedArray[i] = (allocatedArray[6 + i] * 100) / j; + for (j = 0, i = 0; i < NUM_STATS; i++) + j += allocatedArray[NUM_STATS + i]; + for (i = 0; i < NUM_STATS; i++) + allocatedArray[i] = (allocatedArray[NUM_STATS + i] * 100) / j; } else { - for (i = 0; i < 3; i++) + for (i = 0; i < FRONTIER_PARTY_SIZE; i++) { int evBits = gFacilityTrainerMons[DOME_MONS[trainerTournamentId][i]].evSpread; for (k = 0, j = 0; j < NUM_STATS; j++) @@ -4829,7 +4890,7 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId) evBits >>= 1; } - allocatedArray[6] += allocatedArray[0]; + allocatedArray[NUM_STATS] += allocatedArray[0]; for (j = 0; j < 5; j++) { nature = gFacilityTrainerMons[DOME_MONS[trainerTournamentId][i]].nature; @@ -4848,10 +4909,10 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId) } } } - for (j = 0, i = 0; i < 6; i++) - j += allocatedArray[i + 6]; - for (i = 0; i < 6; i++) - allocatedArray[i] = (allocatedArray[6 + i] * 100) / j; + for (j = 0, i = 0; i < NUM_STATS; i++) + j += allocatedArray[i + NUM_STATS]; + for (i = 0; i < NUM_STATS; i++) + allocatedArray[i] = (allocatedArray[NUM_STATS + i] * 100) / j; } for (i = 0, j = 0, k = 0; k < 6; k++) @@ -4931,7 +4992,7 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId) else if (j == 1) i = allocatedArray[8] + 36; else - i = 42; + i = DOME_STATTEXT_WELL_BALANCED; textPrinter.currentChar = sBattleDomeOpponentStatsTexts[i]; textPrinter.y = 36; @@ -4940,11 +5001,12 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId) Free(allocatedArray); } -static int sub_8192F08(u8 matchNum, u8 *arg1) +// TODO: +static int BufferDomeWinString(u8 matchNum, u8 *arg1) { int i; u8 tournamentId; - int retVal = 0; + int winStringId = 0; int count = 0; for (i = gUnknown_0860D3C4[matchNum][0]; i < gUnknown_0860D3C4[matchNum][0] + gUnknown_0860D3C4[matchNum][1]; i++) @@ -4963,6 +5025,7 @@ static int sub_8192F08(u8 matchNum, u8 *arg1) } } + // Neither trainer has been eliminated, battle hasn't occurred yet if (count == 2) return 0; @@ -4977,9 +5040,10 @@ static int sub_8192F08(u8 matchNum, u8 *arg1) if (DOME_TRAINERS[tournamentId].eliminatedAt == gUnknown_0860D3C4[matchNum][2]) { StringCopy(gStringVar2, gMoveNames[gSaveBlock2Ptr->frontier.domeWinningMoves[tournamentId]]); - retVal = DOME_TRAINERS[tournamentId].forfeited * 2; + winStringId = DOME_TRAINERS[tournamentId].forfeited * 2; + if (gSaveBlock2Ptr->frontier.domeWinningMoves[tournamentId] == MOVE_NONE && DOME_TRAINERS[tournamentId].forfeited == FALSE) - retVal = 4; + winStringId = 4; } else { @@ -4997,9 +5061,9 @@ static int sub_8192F08(u8 matchNum, u8 *arg1) } if (matchNum == 14) - return retVal + 2; + return winStringId + 2; else - return retVal + 1; + return winStringId + 1; } static void DisplayMatchInfoOnCard(u8 flags, u8 matchNo) @@ -5027,7 +5091,7 @@ static void DisplayMatchInfoOnCard(u8 flags, u8 matchNo) y = -160; // Copy trainers information to handy arrays. - winStringId = sub_8192F08(matchNo, sBattleDomeStruct->unk_11); + winStringId = BufferDomeWinString(matchNo, sBattleDomeStruct->unk_11); for (i = 0; i < 2; i++) { tournamentIds[i] = sBattleDomeStruct->unk_11[i]; @@ -5066,7 +5130,7 @@ static void DisplayMatchInfoOnCard(u8 flags, u8 matchNo) gSprites[sBattleDomeStruct->arr[1 + arrId]].oam.paletteNum = 3; // Draw first trainer's pokemon icons. - for (i = 0; i < 3; i++) + for (i = 0; i < FRONTIER_PARTY_SIZE; i++) { if (trainerIds[0] == TRAINER_PLAYER) { @@ -5106,7 +5170,7 @@ static void DisplayMatchInfoOnCard(u8 flags, u8 matchNo) } // Draw second trainer's pokemon icons. - for (i = 0; i < 3; i++) + for (i = 0; i < FRONTIER_PARTY_SIZE; i++) { if (trainerIds[1] == TRAINER_PLAYER) { @@ -5153,9 +5217,9 @@ static void DisplayMatchInfoOnCard(u8 flags, u8 matchNo) textPrinter.letterSpacing = 0; textPrinter.lineSpacing = 0; textPrinter.unk = 0; - textPrinter.fgColor = 14; - textPrinter.bgColor = 0; - textPrinter.shadowColor = 13; + textPrinter.fgColor = TEXT_DYNAMIC_COLOR_5; + textPrinter.bgColor = TEXT_COLOR_TRANSPARENT; + textPrinter.shadowColor = TEXT_DYNAMIC_COLOR_4; StringExpandPlaceholders(gStringVar4, sBattleDomeWinTexts[winStringId]); textPrinter.currentChar = gStringVar4; textPrinter.windowId = windowId + 8; @@ -5225,7 +5289,7 @@ static void ShowPreviousDomeResultsTourneyTree(void) { u8 taskId; - InitDomeFacilityTrainersAndMons(); + SetFacilityTrainerAndMonPtrs(); gSaveBlock2Ptr->frontier.lvlMode = gSaveBlock2Ptr->frontier.domeLvlMode - 1; gSaveBlock2Ptr->frontier.curChallengeBattleNum = DOME_FINAL; taskId = CreateTask(Task_ShowTourneyTree, 0); @@ -5537,8 +5601,8 @@ static void Task_ShowTourneyTree(u8 taskId) EnableInterrupts(INTR_FLAG_HBLANK | INTR_FLAG_VBLANK); CpuFill32(0, (void *)VRAM, VRAM_SIZE); ResetBgsAndClearDma3BusyFlags(0); - InitBgsFromTemplates(0, gUnknown_0860CE74, ARRAY_COUNT(gUnknown_0860CE74)); - InitWindows(gUnknown_0860CE94); + InitBgsFromTemplates(0, sTourneyTreeBgTemplates, ARRAY_COUNT(sTourneyTreeBgTemplates)); + InitWindows(sTourneyTreeWindowTemplates); DeactivateAllTextPrinters(); gBattle_BG0_X = 0; gBattle_BG0_Y = 0; @@ -5589,7 +5653,7 @@ static void Task_ShowTourneyTree(u8 taskId) LoadCompressedSpriteSheet(sDomeOptionsSpriteSheet); if (r10 == 0) { - for (i = 0; i < (unsigned) 31; i++) + 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); @@ -5611,9 +5675,9 @@ static void Task_ShowTourneyTree(u8 taskId) textPrinter.currentX = GetStringCenterAlignXOffsetWithLetterSpacing(textPrinter.fontId, textPrinter.currentChar, 0x70, textPrinter.letterSpacing); textPrinter.currentY = 1; textPrinter.unk = 0; - textPrinter.fgColor = 14; - textPrinter.bgColor = 0; - textPrinter.shadowColor = 13; + textPrinter.fgColor = TEXT_DYNAMIC_COLOR_5; + textPrinter.bgColor = TEXT_COLOR_TRANSPARENT; + textPrinter.shadowColor = TEXT_DYNAMIC_COLOR_4; AddTextPrinter(&textPrinter, 0, NULL); for (i = 0; i < DOME_TOURNAMENT_TRAINERS_COUNT; i++) { @@ -5624,7 +5688,7 @@ static void Task_ShowTourneyTree(u8 taskId) { if (DOME_TRAINERS[i].isEliminated) { - if (DOME_TRAINERS[i].eliminatedAt != 0) + if (DOME_TRAINERS[i].eliminatedAt != DOME_ROUND1) { var2 = DOME_TRAINERS[i].eliminatedAt - 1; sub_81948EC(i, var2); @@ -5639,7 +5703,7 @@ static void Task_ShowTourneyTree(u8 taskId) { if (DOME_TRAINERS[i].isEliminated) { - if (DOME_TRAINERS[i].eliminatedAt != 0) + if (DOME_TRAINERS[i].eliminatedAt != DOME_ROUND1) { var2 = DOME_TRAINERS[i].eliminatedAt - 1; sub_81948EC(i, var2); @@ -5666,26 +5730,26 @@ static void Task_ShowTourneyTree(u8 taskId) { if (DOME_TRAINERS[i].trainerId == TRAINER_PLAYER) { - textPrinter.fgColor = 3; - textPrinter.shadowColor = 4; + textPrinter.fgColor = TEXT_COLOR_LIGHT_GREY; + textPrinter.shadowColor = TEXT_COLOR_RED; } else { - textPrinter.fgColor = 11; - textPrinter.shadowColor = 13; + textPrinter.fgColor = TEXT_DYNAMIC_COLOR_2; + textPrinter.shadowColor = TEXT_DYNAMIC_COLOR_4; } } else { if (DOME_TRAINERS[i].trainerId == TRAINER_PLAYER) { - textPrinter.fgColor = 3; - textPrinter.shadowColor = 4; + textPrinter.fgColor = TEXT_COLOR_LIGHT_GREY; + textPrinter.shadowColor = TEXT_COLOR_RED; } else { - textPrinter.fgColor = 14; - textPrinter.shadowColor = 13; + textPrinter.fgColor = TEXT_DYNAMIC_COLOR_5; + textPrinter.shadowColor = TEXT_DYNAMIC_COLOR_4; } } @@ -5785,9 +5849,9 @@ static void sub_8194950(u8 taskId) textPrinter.letterSpacing = 2; textPrinter.lineSpacing = 0; textPrinter.unk = 0; - textPrinter.fgColor = 11; - textPrinter.bgColor = 0; - textPrinter.shadowColor = 13; + textPrinter.fgColor = TEXT_DYNAMIC_COLOR_2; + textPrinter.bgColor = TEXT_COLOR_TRANSPARENT; + textPrinter.shadowColor = TEXT_DYNAMIC_COLOR_4; for (i = 0; i < DOME_TOURNAMENT_TRAINERS_COUNT; i++) { CopyDomeTrainerName(gDisplayedStringBattle, DOME_TRAINERS[i].trainerId); @@ -5940,7 +6004,7 @@ static void VblankCb1_BattleDome(void) ScanlineEffect_InitHBlankDmaTransfer(); } -static void InitDomeFacilityTrainersAndMons(void) +static void SetFacilityTrainerAndMonPtrs(void) { gFacilityTrainerMons = gBattleFrontierMons; gFacilityTrainers = gBattleFrontierTrainers; @@ -6001,7 +6065,7 @@ static void BufferLastDomeWinnerName(void) { int i; - InitDomeFacilityTrainersAndMons(); + SetFacilityTrainerAndMonPtrs(); for (i = 0; i < DOME_TOURNAMENT_TRAINERS_COUNT; i++) { if (!DOME_TRAINERS[i].isEliminated) @@ -6174,7 +6238,7 @@ int TrainerIdToDomeTournamentId(u16 trainerId) static u8 sub_81953E8(u8 tournamentId, u8 round) { u8 arr[2]; - sub_8192F08(gUnknown_0860D1A0[gUnknown_0860D1C0[tournamentId] / 2][round] - 16, arr); + BufferDomeWinString(gUnknown_0860D1A0[gUnknown_0860D1C0[tournamentId] / 2][round] - 16, arr); if (tournamentId == arr[0]) return arr[1]; else diff --git a/src/battle_tower.c b/src/battle_tower.c index cd3c7393be..864775cff1 100644 --- a/src/battle_tower.c +++ b/src/battle_tower.c @@ -2044,20 +2044,20 @@ u16 RandomizeFacilityTrainerMonSet(u16 trainerId) { u8 level = SetFacilityPtrsGetLevel(); const u16 *monSets = gFacilityTrainers[trainerId].monSets; - u8 bfMonCount = 0; - u32 monSetId = monSets[bfMonCount]; + u8 numMonSets = 0; + u32 monSetId = monSets[numMonSets]; while (monSetId != 0xFFFF) { - bfMonCount++; - monSetId = monSets[bfMonCount]; + numMonSets++; + monSetId = monSets[numMonSets]; if (monSetId == 0xFFFF) break; } do { - monSetId = monSets[Random() % bfMonCount]; + monSetId = monSets[Random() % numMonSets]; } while((level == 50 || level == 20) && monSetId > 849); return monSetId; From ef751c8d1b51c5927204ae528e5c358e4f2b5b6b Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Sat, 28 Dec 2019 12:03:22 -0600 Subject: [PATCH 11/37] Fix formatting and remove unnecessary comments --- include/constants/opponents.h | 92 +++++++++++++++++------------------ src/data/trainer_parties.h | 36 +++++++------- 2 files changed, 64 insertions(+), 64 deletions(-) diff --git a/include/constants/opponents.h b/include/constants/opponents.h index e7315f1414..79a125bda2 100644 --- a/include/constants/opponents.h +++ b/include/constants/opponents.h @@ -33,8 +33,8 @@ #define TRAINER_FREDRICK 29 #define TRAINER_MATT 30 #define TRAINER_ZANDER 31 -#define TRAINER_SHELLY_WEATHER_INSTITUTE 32 -#define TRAINER_SHELLY_SEAFLOOR_CAVERN 33 +#define TRAINER_SHELLY_WEATHER_INSTITUTE 32 +#define TRAINER_SHELLY_SEAFLOOR_CAVERN 33 #define TRAINER_ARCHIE 34 #define TRAINER_LEAH 35 #define TRAINER_DAISY 36 @@ -515,30 +515,30 @@ #define TRAINER_CONOR 511 #define TRAINER_EDWIN_1 512 #define TRAINER_HECTOR 513 -#define TRAINER_TABITHA_MOSSDEEP 514 +#define TRAINER_TABITHA_MOSSDEEP 514 #define TRAINER_EDWIN_2 515 #define TRAINER_EDWIN_3 516 #define TRAINER_EDWIN_4 517 #define TRAINER_EDWIN_5 518 -#define TRAINER_WALLY_VR_1 519 -#define TRAINER_BRENDAN_ROUTE_103_MUDKIP 520 -#define TRAINER_BRENDAN_ROUTE_110_MUDKIP 521 -#define TRAINER_BRENDAN_ROUTE_119_MUDKIP 522 -#define TRAINER_BRENDAN_ROUTE_103_TREECKO 523 -#define TRAINER_BRENDAN_ROUTE_110_TREECKO 524 -#define TRAINER_BRENDAN_ROUTE_119_TREECKO 525 -#define TRAINER_BRENDAN_ROUTE_103_TORCHIC 526 -#define TRAINER_BRENDAN_ROUTE_110_TORCHIC 527 -#define TRAINER_BRENDAN_ROUTE_119_TORCHIC 528 -#define TRAINER_MAY_ROUTE_103_MUDKIP 529 -#define TRAINER_MAY_ROUTE_110_MUDKIP 530 -#define TRAINER_MAY_ROUTE_119_MUDKIP 531 -#define TRAINER_MAY_ROUTE_103_TREECKO 532 -#define TRAINER_MAY_ROUTE_110_TREECKO 533 -#define TRAINER_MAY_ROUTE_119_TREECKO 534 -#define TRAINER_MAY_ROUTE_103_TORCHIC 535 -#define TRAINER_MAY_ROUTE_110_TORCHIC 536 -#define TRAINER_MAY_ROUTE_119_TORCHIC 537 +#define TRAINER_WALLY_VR_1 519 +#define TRAINER_BRENDAN_ROUTE_103_MUDKIP 520 +#define TRAINER_BRENDAN_ROUTE_110_MUDKIP 521 +#define TRAINER_BRENDAN_ROUTE_119_MUDKIP 522 +#define TRAINER_BRENDAN_ROUTE_103_TREECKO 523 +#define TRAINER_BRENDAN_ROUTE_110_TREECKO 524 +#define TRAINER_BRENDAN_ROUTE_119_TREECKO 525 +#define TRAINER_BRENDAN_ROUTE_103_TORCHIC 526 +#define TRAINER_BRENDAN_ROUTE_110_TORCHIC 527 +#define TRAINER_BRENDAN_ROUTE_119_TORCHIC 528 +#define TRAINER_MAY_ROUTE_103_MUDKIP 529 +#define TRAINER_MAY_ROUTE_110_MUDKIP 530 +#define TRAINER_MAY_ROUTE_119_MUDKIP 531 +#define TRAINER_MAY_ROUTE_103_TREECKO 532 +#define TRAINER_MAY_ROUTE_110_TREECKO 533 +#define TRAINER_MAY_ROUTE_119_TREECKO 534 +#define TRAINER_MAY_ROUTE_103_TORCHIC 535 +#define TRAINER_MAY_ROUTE_110_TORCHIC 536 +#define TRAINER_MAY_ROUTE_119_TORCHIC 537 #define TRAINER_ISAAC_1 538 #define TRAINER_DAVIS 539 #define TRAINER_MITCHELL 540 @@ -593,17 +593,17 @@ #define TRAINER_GRUNT_SPACE_CENTER_6 589 #define TRAINER_GRUNT_SPACE_CENTER_7 590 #define TRAINER_MACEY 591 -#define TRAINER_BRENDAN_RUSTBORO_TREECKO 592 -#define TRAINER_BRENDAN_RUSTBORO_MUDKIP 593 +#define TRAINER_BRENDAN_RUSTBORO_TREECKO 592 +#define TRAINER_BRENDAN_RUSTBORO_MUDKIP 593 #define TRAINER_PAXTON 594 #define TRAINER_ISABELLA 595 #define TRAINER_GRUNT_WEATHER_INST_5 596 -#define TRAINER_TABITHA_MT_CHIMNEY 597 +#define TRAINER_TABITHA_MT_CHIMNEY 597 #define TRAINER_JONATHAN 598 -#define TRAINER_BRENDAN_RUSTBORO_TORCHIC 599 -#define TRAINER_MAY_RUSTBORO_MUDKIP 600 -#define TRAINER_MAXIE_MAGMA_HIDEOUT 601 -#define TRAINER_MAXIE_MT_CHIMNEY 602 +#define TRAINER_BRENDAN_RUSTBORO_TORCHIC 599 +#define TRAINER_MAY_RUSTBORO_MUDKIP 600 +#define TRAINER_MAXIE_MAGMA_HIDEOUT 601 +#define TRAINER_MAXIE_MT_CHIMNEY 602 #define TRAINER_TIANA 603 #define TRAINER_HALEY_1 604 #define TRAINER_JANICE 605 @@ -657,17 +657,17 @@ #define TRAINER_RILEY 653 #define TRAINER_FLINT 654 #define TRAINER_ASHLEY 655 -#define TRAINER_WALLY_MAUVILLE 656 -#define TRAINER_WALLY_VR_2 657 -#define TRAINER_WALLY_VR_3 658 -#define TRAINER_WALLY_VR_4 659 -#define TRAINER_WALLY_VR_5 660 -#define TRAINER_BRENDAN_LILYCOVE_MUDKIP 661 -#define TRAINER_BRENDAN_LILYCOVE_TREECKO 662 -#define TRAINER_BRENDAN_LILYCOVE_TORCHIC 663 -#define TRAINER_MAY_LILYCOVE_MUDKIP 664 -#define TRAINER_MAY_LILYCOVE_TREECKO 665 -#define TRAINER_MAY_LILYCOVE_TORCHIC 666 +#define TRAINER_WALLY_MAUVILLE 656 +#define TRAINER_WALLY_VR_2 657 +#define TRAINER_WALLY_VR_3 658 +#define TRAINER_WALLY_VR_4 659 +#define TRAINER_WALLY_VR_5 660 +#define TRAINER_BRENDAN_LILYCOVE_MUDKIP 661 +#define TRAINER_BRENDAN_LILYCOVE_TREECKO 662 +#define TRAINER_BRENDAN_LILYCOVE_TORCHIC 663 +#define TRAINER_MAY_LILYCOVE_MUDKIP 664 +#define TRAINER_MAY_LILYCOVE_TREECKO 665 +#define TRAINER_MAY_LILYCOVE_TORCHIC 666 #define TRAINER_JONAH 667 #define TRAINER_HENRY 668 #define TRAINER_ROGER 669 @@ -733,9 +733,9 @@ #define TRAINER_GRUNT_MAGMA_HIDEOUT_14 729 #define TRAINER_GRUNT_MAGMA_HIDEOUT_15 730 #define TRAINER_GRUNT_MAGMA_HIDEOUT_16 731 -#define TRAINER_TABITHA_MAGMA_HIDEOUT 732 +#define TRAINER_TABITHA_MAGMA_HIDEOUT 732 #define TRAINER_DARCY 733 -#define TRAINER_MAXIE_MOSSDEEP 734 +#define TRAINER_MAXIE_MOSSDEEP 734 #define TRAINER_PETE 735 #define TRAINER_ISABELLE 736 #define TRAINER_ANDRES_1 737 @@ -769,8 +769,8 @@ #define TRAINER_MYLES 765 #define TRAINER_PAT 766 #define TRAINER_CRISTIN_1 767 -#define TRAINER_MAY_RUSTBORO_TREECKO 768 -#define TRAINER_MAY_RUSTBORO_TORCHIC 769 +#define TRAINER_MAY_RUSTBORO_TREECKO 768 +#define TRAINER_MAY_RUSTBORO_TORCHIC 769 #define TRAINER_ROXANNE_2 770 #define TRAINER_ROXANNE_3 771 #define TRAINER_ROXANNE_4 772 @@ -854,8 +854,8 @@ #define TRAINER_EVERETT 850 #define TRAINER_RED 851 #define TRAINER_LEAF 852 -#define TRAINER_BRENDAN_PLACEHOLDER 853 -#define TRAINER_MAY_PLACEHOLDER 854 +#define TRAINER_BRENDAN_PLACEHOLDER 853 +#define TRAINER_MAY_PLACEHOLDER 854 #define TRAINERS_COUNT 855 diff --git a/src/data/trainer_parties.h b/src/data/trainer_parties.h index 68104ed741..173d81329e 100644 --- a/src/data/trainer_parties.h +++ b/src/data/trainer_parties.h @@ -6781,7 +6781,7 @@ static const struct TrainerMonNoItemCustomMoves sParty_WallyVR1[] = { } }; -static const struct TrainerMonNoItemDefaultMoves sParty_BrendanRoute103Mudkip[] = {//Brendan1 +static const struct TrainerMonNoItemDefaultMoves sParty_BrendanRoute103Mudkip[] = { { .iv = 0, .lvl = 5, @@ -6789,7 +6789,7 @@ static const struct TrainerMonNoItemDefaultMoves sParty_BrendanRoute103Mudkip[] } }; -static const struct TrainerMonNoItemDefaultMoves sParty_BrendanRoute110Mudkip[] = {//Brendan2 +static const struct TrainerMonNoItemDefaultMoves sParty_BrendanRoute110Mudkip[] = { { .iv = 50, .lvl = 18, @@ -6807,7 +6807,7 @@ static const struct TrainerMonNoItemDefaultMoves sParty_BrendanRoute110Mudkip[] } }; -static const struct TrainerMonNoItemDefaultMoves sParty_BrendanRoute119Mudkip[] = {//Brendan3 +static const struct TrainerMonNoItemDefaultMoves sParty_BrendanRoute119Mudkip[] = { { .iv = 100, .lvl = 29, @@ -6825,7 +6825,7 @@ static const struct TrainerMonNoItemDefaultMoves sParty_BrendanRoute119Mudkip[] } }; -static const struct TrainerMonNoItemDefaultMoves sParty_BrendanRoute103Treecko[] = {//Brendan4 +static const struct TrainerMonNoItemDefaultMoves sParty_BrendanRoute103Treecko[] = { { .iv = 0, .lvl = 5, @@ -6833,7 +6833,7 @@ static const struct TrainerMonNoItemDefaultMoves sParty_BrendanRoute103Treecko[] } }; -static const struct TrainerMonNoItemDefaultMoves sParty_BrendanRoute110Treecko[] = {//Brendan5 +static const struct TrainerMonNoItemDefaultMoves sParty_BrendanRoute110Treecko[] = { { .iv = 50, .lvl = 18, @@ -6851,7 +6851,7 @@ static const struct TrainerMonNoItemDefaultMoves sParty_BrendanRoute110Treecko[] } }; -static const struct TrainerMonNoItemDefaultMoves sParty_BrendanRoute119Treecko[] = {//Brendan6 +static const struct TrainerMonNoItemDefaultMoves sParty_BrendanRoute119Treecko[] = { { .iv = 100, .lvl = 29, @@ -6869,7 +6869,7 @@ static const struct TrainerMonNoItemDefaultMoves sParty_BrendanRoute119Treecko[] } }; -static const struct TrainerMonNoItemDefaultMoves sParty_BrendanRoute103Torchic[] = {//Brendan7 +static const struct TrainerMonNoItemDefaultMoves sParty_BrendanRoute103Torchic[] = { { .iv = 0, .lvl = 5, @@ -6877,7 +6877,7 @@ static const struct TrainerMonNoItemDefaultMoves sParty_BrendanRoute103Torchic[] } }; -static const struct TrainerMonNoItemDefaultMoves sParty_BrendanRoute110Torchic[] = {//Brendan8 +static const struct TrainerMonNoItemDefaultMoves sParty_BrendanRoute110Torchic[] = { { .iv = 50, .lvl = 18, @@ -6895,7 +6895,7 @@ static const struct TrainerMonNoItemDefaultMoves sParty_BrendanRoute110Torchic[] } }; -static const struct TrainerMonNoItemDefaultMoves sParty_BrendanRoute119Torchic[] = {//Brendan9 +static const struct TrainerMonNoItemDefaultMoves sParty_BrendanRoute119Torchic[] = { { .iv = 100, .lvl = 29, @@ -6913,7 +6913,7 @@ static const struct TrainerMonNoItemDefaultMoves sParty_BrendanRoute119Torchic[] } }; -static const struct TrainerMonNoItemDefaultMoves sParty_MayRoute103Mudkip[] = {//May1 +static const struct TrainerMonNoItemDefaultMoves sParty_MayRoute103Mudkip[] = { { .iv = 0, .lvl = 5, @@ -6921,7 +6921,7 @@ static const struct TrainerMonNoItemDefaultMoves sParty_MayRoute103Mudkip[] = {/ } }; -static const struct TrainerMonNoItemDefaultMoves sParty_MayRoute110Mudkip[] = {//May2 +static const struct TrainerMonNoItemDefaultMoves sParty_MayRoute110Mudkip[] = { { .iv = 50, .lvl = 18, @@ -6939,7 +6939,7 @@ static const struct TrainerMonNoItemDefaultMoves sParty_MayRoute110Mudkip[] = {/ } }; -static const struct TrainerMonNoItemDefaultMoves sParty_MayRoute119Mudkip[] = {//May3 +static const struct TrainerMonNoItemDefaultMoves sParty_MayRoute119Mudkip[] = { { .iv = 100, .lvl = 29, @@ -6957,7 +6957,7 @@ static const struct TrainerMonNoItemDefaultMoves sParty_MayRoute119Mudkip[] = {/ } }; -static const struct TrainerMonNoItemDefaultMoves sParty_MayRoute103Treecko[] = {//May4 +static const struct TrainerMonNoItemDefaultMoves sParty_MayRoute103Treecko[] = { { .iv = 0, .lvl = 5, @@ -6965,7 +6965,7 @@ static const struct TrainerMonNoItemDefaultMoves sParty_MayRoute103Treecko[] = { } }; -static const struct TrainerMonNoItemDefaultMoves sParty_MayRoute110Treecko[] = {//May5 +static const struct TrainerMonNoItemDefaultMoves sParty_MayRoute110Treecko[] = { { .iv = 50, .lvl = 18, @@ -6983,7 +6983,7 @@ static const struct TrainerMonNoItemDefaultMoves sParty_MayRoute110Treecko[] = { } }; -static const struct TrainerMonNoItemDefaultMoves sParty_MayRoute119Treecko[] = {//May6 +static const struct TrainerMonNoItemDefaultMoves sParty_MayRoute119Treecko[] = { { .iv = 100, .lvl = 29, @@ -7001,7 +7001,7 @@ static const struct TrainerMonNoItemDefaultMoves sParty_MayRoute119Treecko[] = { } }; -static const struct TrainerMonNoItemDefaultMoves sParty_MayRoute103Torchic[] = {//May7 +static const struct TrainerMonNoItemDefaultMoves sParty_MayRoute103Torchic[] = { { .iv = 0, .lvl = 5, @@ -7009,7 +7009,7 @@ static const struct TrainerMonNoItemDefaultMoves sParty_MayRoute103Torchic[] = { } }; -static const struct TrainerMonNoItemDefaultMoves sParty_MayRoute110Torchic[] = {//May8 +static const struct TrainerMonNoItemDefaultMoves sParty_MayRoute110Torchic[] = { { .iv = 50, .lvl = 18, @@ -7027,7 +7027,7 @@ static const struct TrainerMonNoItemDefaultMoves sParty_MayRoute110Torchic[] = { } }; -static const struct TrainerMonNoItemDefaultMoves sParty_MayRoute119Torchic[] = {//May9 +static const struct TrainerMonNoItemDefaultMoves sParty_MayRoute119Torchic[] = { { .iv = 100, .lvl = 29, From bb692a03eb6ac886524e917ed3548d769ac2f6d8 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Fri, 27 Dec 2019 02:26:27 -0800 Subject: [PATCH 12/37] Add frontier mon constants --- include/constants/battle_frontier_mons.h | 897 + src/battle_tower.c | 1 + .../battle_frontier/battle_frontier_mons.h | 1766 +- .../battle_frontier_trainer_mons.h | 20200 +++++----------- 4 files changed, 7951 insertions(+), 14913 deletions(-) create mode 100644 include/constants/battle_frontier_mons.h diff --git a/include/constants/battle_frontier_mons.h b/include/constants/battle_frontier_mons.h new file mode 100644 index 0000000000..64367272df --- /dev/null +++ b/include/constants/battle_frontier_mons.h @@ -0,0 +1,897 @@ +#ifndef GUARD_CONSTANTS_BATTLE_FRONTIER_MONS_H +#define GUARD_CONSTANTS_BATTLE_FRONTIER_MONS_H + +#define FRONTIER_MON_SUNKERN 0 +#define FRONTIER_MON_AZURILL 1 +#define FRONTIER_MON_CATERPIE 2 +#define FRONTIER_MON_WEEDLE 3 +#define FRONTIER_MON_WURMPLE 4 +#define FRONTIER_MON_RALTS 5 +#define FRONTIER_MON_MAGIKARP 6 +#define FRONTIER_MON_FEEBAS 7 +#define FRONTIER_MON_METAPOD 8 +#define FRONTIER_MON_KAKUNA 9 +#define FRONTIER_MON_PICHU 10 +#define FRONTIER_MON_SILCOON 11 +#define FRONTIER_MON_CASCOON 12 +#define FRONTIER_MON_IGGLYBUFF 13 +#define FRONTIER_MON_WOOPER 14 +#define FRONTIER_MON_TYROGUE 15 +#define FRONTIER_MON_SENTRET 16 +#define FRONTIER_MON_CLEFFA 17 +#define FRONTIER_MON_SEEDOT 18 +#define FRONTIER_MON_LOTAD 19 +#define FRONTIER_MON_POOCHYENA 20 +#define FRONTIER_MON_SHEDINJA 21 +#define FRONTIER_MON_MAKUHITA 22 +#define FRONTIER_MON_WHISMUR 23 +#define FRONTIER_MON_ZIGZAGOON 24 +#define FRONTIER_MON_ZUBAT 25 +#define FRONTIER_MON_TOGEPI 26 +#define FRONTIER_MON_SPINARAK 27 +#define FRONTIER_MON_MARILL 28 +#define FRONTIER_MON_HOPPIP 29 +#define FRONTIER_MON_SLUGMA 30 +#define FRONTIER_MON_SWINUB 31 +#define FRONTIER_MON_SMEARGLE 32 +#define FRONTIER_MON_PIDGEY 33 +#define FRONTIER_MON_RATTATA 34 +#define FRONTIER_MON_WYNAUT 35 +#define FRONTIER_MON_SKITTY 36 +#define FRONTIER_MON_SPEAROW 37 +#define FRONTIER_MON_HOOTHOOT 38 +#define FRONTIER_MON_DIGLETT 39 +#define FRONTIER_MON_LEDYBA 40 +#define FRONTIER_MON_NINCADA 41 +#define FRONTIER_MON_SURSKIT 42 +#define FRONTIER_MON_JIGGLYPUFF 43 +#define FRONTIER_MON_TAILLOW 44 +#define FRONTIER_MON_WINGULL 45 +#define FRONTIER_MON_NIDORAN_M 46 +#define FRONTIER_MON_NIDORAN_F 47 +#define FRONTIER_MON_KIRLIA 48 +#define FRONTIER_MON_MAREEP 49 +#define FRONTIER_MON_MEDITITE 50 +#define FRONTIER_MON_SLAKOTH 51 +#define FRONTIER_MON_PARAS 52 +#define FRONTIER_MON_EKANS 53 +#define FRONTIER_MON_DITTO 54 +#define FRONTIER_MON_BARBOACH 55 +#define FRONTIER_MON_MEOWTH 56 +#define FRONTIER_MON_PINECO 57 +#define FRONTIER_MON_TRAPINCH 58 +#define FRONTIER_MON_SPHEAL 59 +#define FRONTIER_MON_HORSEA 60 +#define FRONTIER_MON_SHROOMISH 61 +#define FRONTIER_MON_SHUPPET 62 +#define FRONTIER_MON_DUSKULL 63 +#define FRONTIER_MON_ELECTRIKE 64 +#define FRONTIER_MON_VULPIX 65 +#define FRONTIER_MON_PIKACHU 66 +#define FRONTIER_MON_SANDSHREW 67 +#define FRONTIER_MON_POLIWAG 68 +#define FRONTIER_MON_BELLSPROUT 69 +#define FRONTIER_MON_GEODUDE 70 +#define FRONTIER_MON_DRATINI 71 +#define FRONTIER_MON_SNUBBULL 72 +#define FRONTIER_MON_REMORAID 73 +#define FRONTIER_MON_LARVITAR 74 +#define FRONTIER_MON_BALTOY 75 +#define FRONTIER_MON_SNORUNT 76 +#define FRONTIER_MON_BAGON 77 +#define FRONTIER_MON_BELDUM 78 +#define FRONTIER_MON_GULPIN 79 +#define FRONTIER_MON_VENONAT 80 +#define FRONTIER_MON_MANKEY 81 +#define FRONTIER_MON_MACHOP 82 +#define FRONTIER_MON_SHELLDER 83 +#define FRONTIER_MON_SMOOCHUM 84 +#define FRONTIER_MON_NUMEL 85 +#define FRONTIER_MON_CARVANHA 86 +#define FRONTIER_MON_CORPHISH 87 +#define FRONTIER_MON_CHARMANDER 88 +#define FRONTIER_MON_CYNDAQUIL 89 +#define FRONTIER_MON_ABRA 90 +#define FRONTIER_MON_DODUO 91 +#define FRONTIER_MON_GASTLY 92 +#define FRONTIER_MON_SWABLU 93 +#define FRONTIER_MON_TREECKO 94 +#define FRONTIER_MON_TORCHIC 95 +#define FRONTIER_MON_MUDKIP 96 +#define FRONTIER_MON_SQUIRTLE 97 +#define FRONTIER_MON_TOTODILE 98 +#define FRONTIER_MON_SLOWPOKE 99 +#define FRONTIER_MON_BULBASAUR 100 +#define FRONTIER_MON_CHIKORITA 101 +#define FRONTIER_MON_ODDISH 102 +#define FRONTIER_MON_PSYDUCK 103 +#define FRONTIER_MON_CUBONE 104 +#define FRONTIER_MON_GOLDEEN 105 +#define FRONTIER_MON_NATU 106 +#define FRONTIER_MON_CLEFAIRY 107 +#define FRONTIER_MON_MAGNEMITE 108 +#define FRONTIER_MON_SEEL 109 +#define FRONTIER_MON_GRIMER 110 +#define FRONTIER_MON_KRABBY 111 +#define FRONTIER_MON_EXEGGCUTE 112 +#define FRONTIER_MON_EEVEE 113 +#define FRONTIER_MON_DROWZEE 114 +#define FRONTIER_MON_VOLTORB 115 +#define FRONTIER_MON_CHINCHOU 116 +#define FRONTIER_MON_TEDDIURSA 117 +#define FRONTIER_MON_DELIBIRD 118 +#define FRONTIER_MON_HOUNDOUR 119 +#define FRONTIER_MON_PHANPY 120 +#define FRONTIER_MON_SPOINK 121 +#define FRONTIER_MON_ARON 122 +#define FRONTIER_MON_LUVDISC 123 +#define FRONTIER_MON_TENTACOOL 124 +#define FRONTIER_MON_CACNEA 125 +#define FRONTIER_MON_UNOWN 126 +#define FRONTIER_MON_KOFFING 127 +#define FRONTIER_MON_STARYU 128 +#define FRONTIER_MON_SKIPLOOM 129 +#define FRONTIER_MON_NUZLEAF 130 +#define FRONTIER_MON_LOMBRE 131 +#define FRONTIER_MON_VIBRAVA 132 +#define FRONTIER_MON_RHYHORN 133 +#define FRONTIER_MON_CLAMPERL 134 +#define FRONTIER_MON_PIDGEOTTO 135 +#define FRONTIER_MON_GROWLITHE 136 +#define FRONTIER_MON_FARFETCHD 137 +#define FRONTIER_MON_OMANYTE 138 +#define FRONTIER_MON_KABUTO 139 +#define FRONTIER_MON_LILEEP 140 +#define FRONTIER_MON_ANORITH 141 +#define FRONTIER_MON_AIPOM 142 +#define FRONTIER_MON_ELEKID 143 +#define FRONTIER_MON_LOUDRED 144 +#define FRONTIER_MON_SPINDA 145 +#define FRONTIER_MON_NIDORINA 146 +#define FRONTIER_MON_NIDORINO 147 +#define FRONTIER_MON_FLAAFFY 148 +#define FRONTIER_MON_MAGBY 149 +#define FRONTIER_MON_NOSEPASS 150 +#define FRONTIER_MON_CORSOLA 151 +#define FRONTIER_MON_MAWILE 152 +#define FRONTIER_MON_BUTTERFREE 153 +#define FRONTIER_MON_BEEDRILL 154 +#define FRONTIER_MON_POLIWHIRL 155 +#define FRONTIER_MON_ONIX 156 +#define FRONTIER_MON_BEAUTIFLY 157 +#define FRONTIER_MON_DUSTOX 158 +#define FRONTIER_MON_LEDIAN 159 +#define FRONTIER_MON_ARIADOS 160 +#define FRONTIER_MON_YANMA 161 + +#define FRONTIER_MON_DELCATTY_1 162 +#define FRONTIER_MON_SABLEYE_1 163 +#define FRONTIER_MON_LICKITUNG_1 164 +#define FRONTIER_MON_WEEPINBELL_1 165 +#define FRONTIER_MON_GRAVELER_1 166 +#define FRONTIER_MON_GLOOM_1 167 +#define FRONTIER_MON_PORYGON_1 168 +#define FRONTIER_MON_KADABRA_1 169 +#define FRONTIER_MON_WAILMER_1 170 +#define FRONTIER_MON_ROSELIA_1 171 +#define FRONTIER_MON_VOLBEAT_1 172 +#define FRONTIER_MON_ILLUMISE_1 173 +#define FRONTIER_MON_IVYSAUR_1 174 +#define FRONTIER_MON_CHARMELEON_1 175 +#define FRONTIER_MON_WARTORTLE_1 176 +#define FRONTIER_MON_PARASECT_1 177 +#define FRONTIER_MON_MACHOKE_1 178 +#define FRONTIER_MON_HAUNTER_1 179 +#define FRONTIER_MON_BAYLEEF_1 180 +#define FRONTIER_MON_QUILAVA_1 181 +#define FRONTIER_MON_CROCONAW_1 182 +#define FRONTIER_MON_TOGETIC_1 183 +#define FRONTIER_MON_MURKROW_1 184 +#define FRONTIER_MON_WOBBUFFET_1 185 +#define FRONTIER_MON_PLUSLE_1 186 +#define FRONTIER_MON_MINUN_1 187 +#define FRONTIER_MON_GROVYLE_1 188 +#define FRONTIER_MON_COMBUSKEN_1 189 +#define FRONTIER_MON_MARSHTOMP_1 190 +#define FRONTIER_MON_PONYTA_1 191 +#define FRONTIER_MON_AZUMARILL_1 192 +#define FRONTIER_MON_SUDOWOODO_1 193 +#define FRONTIER_MON_MAGCARGO_1 194 +#define FRONTIER_MON_PUPITAR_1 195 +#define FRONTIER_MON_SEALEO_1 196 +#define FRONTIER_MON_RATICATE_1 197 +#define FRONTIER_MON_MASQUERAIN_1 198 +#define FRONTIER_MON_FURRET_1 199 +#define FRONTIER_MON_DUNSPARCE_1 200 +#define FRONTIER_MON_DRAGONAIR_1 201 +#define FRONTIER_MON_MIGHTYENA_1 202 +#define FRONTIER_MON_LINOONE_1 203 +#define FRONTIER_MON_CASTFORM_1 204 +#define FRONTIER_MON_SHELGON_1 205 +#define FRONTIER_MON_METANG_1 206 +#define FRONTIER_MON_WIGGLYTUFF_1 207 +#define FRONTIER_MON_SUNFLORA_1 208 +#define FRONTIER_MON_CHIMECHO_1 209 +#define FRONTIER_MON_GLIGAR_1 210 +#define FRONTIER_MON_QWILFISH_1 211 +#define FRONTIER_MON_SNEASEL_1 212 +#define FRONTIER_MON_PELIPPER_1 213 +#define FRONTIER_MON_SWELLOW_1 214 +#define FRONTIER_MON_LAIRON_1 215 +#define FRONTIER_MON_TANGELA_1 216 +#define FRONTIER_MON_ARBOK_1 217 +#define FRONTIER_MON_PERSIAN_1 218 +#define FRONTIER_MON_SEADRA_1 219 +#define FRONTIER_MON_KECLEON_1 220 +#define FRONTIER_MON_VIGOROTH_1 221 +#define FRONTIER_MON_LUNATONE_1 222 +#define FRONTIER_MON_SOLROCK_1 223 +#define FRONTIER_MON_NOCTOWL_1 224 +#define FRONTIER_MON_SANDSLASH_1 225 +#define FRONTIER_MON_VENOMOTH_1 226 +#define FRONTIER_MON_CHANSEY_1 227 +#define FRONTIER_MON_SEAKING_1 228 +#define FRONTIER_MON_JUMPLUFF_1 229 +#define FRONTIER_MON_PILOSWINE_1 230 +#define FRONTIER_MON_GOLBAT_1 231 +#define FRONTIER_MON_PRIMEAPE_1 232 +#define FRONTIER_MON_HITMONLEE_1 233 +#define FRONTIER_MON_HITMONCHAN_1 234 +#define FRONTIER_MON_GIRAFARIG_1 235 +#define FRONTIER_MON_HITMONTOP_1 236 +#define FRONTIER_MON_BANETTE_1 237 +#define FRONTIER_MON_NINJASK_1 238 +#define FRONTIER_MON_SEVIPER_1 239 +#define FRONTIER_MON_ZANGOOSE_1 240 +#define FRONTIER_MON_CAMERUPT_1 241 +#define FRONTIER_MON_SHARPEDO_1 242 +#define FRONTIER_MON_TROPIUS_1 243 +#define FRONTIER_MON_MAGNETON_1 244 +#define FRONTIER_MON_MANTINE_1 245 +#define FRONTIER_MON_STANTLER_1 246 +#define FRONTIER_MON_ABSOL_1 247 +#define FRONTIER_MON_SWALOT_1 248 +#define FRONTIER_MON_CRAWDAUNT_1 249 +#define FRONTIER_MON_PIDGEOT_1 250 +#define FRONTIER_MON_GRUMPIG_1 251 +#define FRONTIER_MON_TORKOAL_1 252 +#define FRONTIER_MON_KINGLER_1 253 +#define FRONTIER_MON_CACTURNE_1 254 +#define FRONTIER_MON_BELLOSSOM_1 255 +#define FRONTIER_MON_OCTILLERY_1 256 +#define FRONTIER_MON_HUNTAIL_1 257 +#define FRONTIER_MON_GOREBYSS_1 258 +#define FRONTIER_MON_RELICANTH_1 259 +#define FRONTIER_MON_OMASTAR_1 260 +#define FRONTIER_MON_KABUTOPS_1 261 +#define FRONTIER_MON_POLIWRATH_1 262 +#define FRONTIER_MON_SCYTHER_1 263 +#define FRONTIER_MON_PINSIR_1 264 +#define FRONTIER_MON_POLITOED_1 265 +#define FRONTIER_MON_CLOYSTER_1 266 + +#define FRONTIER_MON_DELCATTY_2 267 +#define FRONTIER_MON_SABLEYE_2 268 +#define FRONTIER_MON_LICKITUNG_2 269 +#define FRONTIER_MON_WEEPINBELL_2 270 +#define FRONTIER_MON_GRAVELER_2 271 +#define FRONTIER_MON_GLOOM_2 272 +#define FRONTIER_MON_PORYGON_2 273 +#define FRONTIER_MON_KADABRA_2 274 +#define FRONTIER_MON_WAILMER_2 275 +#define FRONTIER_MON_ROSELIA_2 276 +#define FRONTIER_MON_VOLBEAT_2 277 +#define FRONTIER_MON_ILLUMISE_2 278 +#define FRONTIER_MON_IVYSAUR_2 279 +#define FRONTIER_MON_CHARMELEON_2 280 +#define FRONTIER_MON_WARTORTLE_2 281 +#define FRONTIER_MON_PARASECT_2 282 +#define FRONTIER_MON_MACHOKE_2 283 +#define FRONTIER_MON_HAUNTER_2 284 +#define FRONTIER_MON_BAYLEEF_2 285 +#define FRONTIER_MON_QUILAVA_2 286 +#define FRONTIER_MON_CROCONAW_2 287 +#define FRONTIER_MON_TOGETIC_2 288 +#define FRONTIER_MON_MURKROW_2 289 +#define FRONTIER_MON_WOBBUFFET_2 290 +#define FRONTIER_MON_PLUSLE_2 291 +#define FRONTIER_MON_MINUN_2 292 +#define FRONTIER_MON_GROVYLE_2 293 +#define FRONTIER_MON_COMBUSKEN_2 294 +#define FRONTIER_MON_MARSHTOMP_2 295 +#define FRONTIER_MON_PONYTA_2 296 +#define FRONTIER_MON_AZUMARILL_2 297 +#define FRONTIER_MON_SUDOWOODO_2 298 +#define FRONTIER_MON_MAGCARGO_2 299 +#define FRONTIER_MON_PUPITAR_2 300 +#define FRONTIER_MON_SEALEO_2 301 +#define FRONTIER_MON_RATICATE_2 302 +#define FRONTIER_MON_MASQUERAIN_2 303 +#define FRONTIER_MON_FURRET_2 304 +#define FRONTIER_MON_DUNSPARCE_2 305 +#define FRONTIER_MON_DRAGONAIR_2 306 +#define FRONTIER_MON_MIGHTYENA_2 307 +#define FRONTIER_MON_LINOONE_2 308 +#define FRONTIER_MON_CASTFORM_2 309 +#define FRONTIER_MON_SHELGON_2 310 +#define FRONTIER_MON_METANG_2 311 +#define FRONTIER_MON_WIGGLYTUFF_2 312 +#define FRONTIER_MON_SUNFLORA_2 313 +#define FRONTIER_MON_CHIMECHO_2 314 +#define FRONTIER_MON_GLIGAR_2 315 +#define FRONTIER_MON_QWILFISH_2 316 +#define FRONTIER_MON_SNEASEL_2 317 +#define FRONTIER_MON_PELIPPER_2 318 +#define FRONTIER_MON_SWELLOW_2 319 +#define FRONTIER_MON_LAIRON_2 320 +#define FRONTIER_MON_TANGELA_2 321 +#define FRONTIER_MON_ARBOK_2 322 +#define FRONTIER_MON_PERSIAN_2 323 +#define FRONTIER_MON_SEADRA_2 324 +#define FRONTIER_MON_KECLEON_2 325 +#define FRONTIER_MON_VIGOROTH_2 326 +#define FRONTIER_MON_LUNATONE_2 327 +#define FRONTIER_MON_SOLROCK_2 328 +#define FRONTIER_MON_NOCTOWL_2 329 +#define FRONTIER_MON_SANDSLASH_2 330 +#define FRONTIER_MON_VENOMOTH_2 331 +#define FRONTIER_MON_CHANSEY_2 332 +#define FRONTIER_MON_SEAKING_2 333 +#define FRONTIER_MON_JUMPLUFF_2 334 +#define FRONTIER_MON_PILOSWINE_2 335 +#define FRONTIER_MON_GOLBAT_2 336 +#define FRONTIER_MON_PRIMEAPE_2 337 +#define FRONTIER_MON_HITMONLEE_2 338 +#define FRONTIER_MON_HITMONCHAN_2 339 +#define FRONTIER_MON_GIRAFARIG_2 340 +#define FRONTIER_MON_HITMONTOP_2 341 +#define FRONTIER_MON_BANETTE_2 342 +#define FRONTIER_MON_NINJASK_2 343 +#define FRONTIER_MON_SEVIPER_2 344 +#define FRONTIER_MON_ZANGOOSE_2 345 +#define FRONTIER_MON_CAMERUPT_2 346 +#define FRONTIER_MON_SHARPEDO_2 347 +#define FRONTIER_MON_TROPIUS_2 348 +#define FRONTIER_MON_MAGNETON_2 349 +#define FRONTIER_MON_MANTINE_2 350 +#define FRONTIER_MON_STANTLER_2 351 +#define FRONTIER_MON_ABSOL_2 352 +#define FRONTIER_MON_SWALOT_2 353 +#define FRONTIER_MON_CRAWDAUNT_2 354 +#define FRONTIER_MON_PIDGEOT_2 355 +#define FRONTIER_MON_GRUMPIG_2 356 +#define FRONTIER_MON_TORKOAL_2 357 +#define FRONTIER_MON_KINGLER_2 358 +#define FRONTIER_MON_CACTURNE_2 359 +#define FRONTIER_MON_BELLOSSOM_2 360 +#define FRONTIER_MON_OCTILLERY_2 361 +#define FRONTIER_MON_HUNTAIL_2 362 +#define FRONTIER_MON_GOREBYSS_2 363 +#define FRONTIER_MON_RELICANTH_2 364 +#define FRONTIER_MON_OMASTAR_2 365 +#define FRONTIER_MON_KABUTOPS_2 366 +#define FRONTIER_MON_POLIWRATH_2 367 +#define FRONTIER_MON_SCYTHER_2 368 +#define FRONTIER_MON_PINSIR_2 369 +#define FRONTIER_MON_POLITOED_2 370 +#define FRONTIER_MON_CLOYSTER_2 371 + +#define FRONTIER_MON_DUGTRIO_1 372 +#define FRONTIER_MON_MEDICHAM_1 373 +#define FRONTIER_MON_MISDREAVUS_1 374 +#define FRONTIER_MON_FEAROW_1 375 +#define FRONTIER_MON_GRANBULL_1 376 +#define FRONTIER_MON_JYNX_1 377 +#define FRONTIER_MON_DUSCLOPS_1 378 +#define FRONTIER_MON_DODRIO_1 379 +#define FRONTIER_MON_MR_MIME_1 380 +#define FRONTIER_MON_LANTURN_1 381 +#define FRONTIER_MON_BRELOOM_1 382 +#define FRONTIER_MON_FORRETRESS_1 383 +#define FRONTIER_MON_WHISCASH_1 384 +#define FRONTIER_MON_XATU_1 385 +#define FRONTIER_MON_SKARMORY_1 386 +#define FRONTIER_MON_MAROWAK_1 387 +#define FRONTIER_MON_QUAGSIRE_1 388 +#define FRONTIER_MON_CLEFABLE_1 389 +#define FRONTIER_MON_HARIYAMA_1 390 +#define FRONTIER_MON_RAICHU_1 391 +#define FRONTIER_MON_DEWGONG_1 392 +#define FRONTIER_MON_MANECTRIC_1 393 +#define FRONTIER_MON_VILEPLUME_1 394 +#define FRONTIER_MON_VICTREEBEL_1 395 +#define FRONTIER_MON_ELECTRODE_1 396 +#define FRONTIER_MON_EXPLOUD_1 397 +#define FRONTIER_MON_SHIFTRY_1 398 +#define FRONTIER_MON_GLALIE_1 399 +#define FRONTIER_MON_LUDICOLO_1 400 +#define FRONTIER_MON_HYPNO_1 401 +#define FRONTIER_MON_GOLEM_1 402 +#define FRONTIER_MON_RHYDON_1 403 +#define FRONTIER_MON_ALAKAZAM_1 404 +#define FRONTIER_MON_WEEZING_1 405 +#define FRONTIER_MON_KANGASKHAN_1 406 +#define FRONTIER_MON_ELECTABUZZ_1 407 +#define FRONTIER_MON_TAUROS_1 408 +#define FRONTIER_MON_SLOWBRO_1 409 +#define FRONTIER_MON_SLOWKING_1 410 +#define FRONTIER_MON_MILTANK_1 411 +#define FRONTIER_MON_ALTARIA_1 412 +#define FRONTIER_MON_NIDOQUEEN_1 413 +#define FRONTIER_MON_NIDOKING_1 414 +#define FRONTIER_MON_MAGMAR_1 415 +#define FRONTIER_MON_CRADILY_1 416 +#define FRONTIER_MON_ARMALDO_1 417 +#define FRONTIER_MON_GOLDUCK_1 418 +#define FRONTIER_MON_RAPIDASH_1 419 +#define FRONTIER_MON_MUK_1 420 +#define FRONTIER_MON_GENGAR_1 421 +#define FRONTIER_MON_AMPHAROS_1 422 +#define FRONTIER_MON_SCIZOR_1 423 +#define FRONTIER_MON_HERACROSS_1 424 +#define FRONTIER_MON_URSARING_1 425 +#define FRONTIER_MON_HOUNDOOM_1 426 +#define FRONTIER_MON_DONPHAN_1 427 +#define FRONTIER_MON_CLAYDOL_1 428 +#define FRONTIER_MON_WAILORD_1 429 +#define FRONTIER_MON_NINETALES_1 430 +#define FRONTIER_MON_MACHAMP_1 431 +#define FRONTIER_MON_SHUCKLE_1 432 +#define FRONTIER_MON_STEELIX_1 433 +#define FRONTIER_MON_TENTACRUEL_1 434 +#define FRONTIER_MON_AERODACTYL_1 435 +#define FRONTIER_MON_PORYGON2_1 436 +#define FRONTIER_MON_GARDEVOIR_1 437 +#define FRONTIER_MON_EXEGGUTOR_1 438 +#define FRONTIER_MON_STARMIE_1 439 +#define FRONTIER_MON_FLYGON_1 440 +#define FRONTIER_MON_VENUSAUR_1 441 +#define FRONTIER_MON_VAPOREON_1 442 +#define FRONTIER_MON_JOLTEON_1 443 +#define FRONTIER_MON_FLAREON_1 444 +#define FRONTIER_MON_MEGANIUM_1 445 +#define FRONTIER_MON_ESPEON_1 446 +#define FRONTIER_MON_UMBREON_1 447 +#define FRONTIER_MON_BLASTOISE_1 448 +#define FRONTIER_MON_FERALIGATR_1 449 +#define FRONTIER_MON_AGGRON_1 450 +#define FRONTIER_MON_BLAZIKEN_1 451 +#define FRONTIER_MON_WALREIN_1 452 +#define FRONTIER_MON_SCEPTILE_1 453 +#define FRONTIER_MON_CHARIZARD_1 454 +#define FRONTIER_MON_TYPHLOSION_1 455 +#define FRONTIER_MON_LAPRAS_1 456 +#define FRONTIER_MON_CROBAT_1 457 +#define FRONTIER_MON_SWAMPERT_1 458 +#define FRONTIER_MON_GYARADOS_1 459 +#define FRONTIER_MON_SNORLAX_1 460 +#define FRONTIER_MON_KINGDRA_1 461 +#define FRONTIER_MON_BLISSEY_1 462 +#define FRONTIER_MON_MILOTIC_1 463 +#define FRONTIER_MON_ARCANINE_1 464 +#define FRONTIER_MON_SALAMENCE_1 465 +#define FRONTIER_MON_METAGROSS_1 466 +#define FRONTIER_MON_SLAKING_1 467 + +#define FRONTIER_MON_DUGTRIO_2 468 +#define FRONTIER_MON_MEDICHAM_2 469 +#define FRONTIER_MON_MAROWAK_2 470 +#define FRONTIER_MON_QUAGSIRE_2 471 +#define FRONTIER_MON_MISDREAVUS_2 472 +#define FRONTIER_MON_FEAROW_2 473 +#define FRONTIER_MON_GRANBULL_2 474 +#define FRONTIER_MON_JYNX_2 475 +#define FRONTIER_MON_DUSCLOPS_2 476 +#define FRONTIER_MON_DODRIO_2 477 +#define FRONTIER_MON_MR_MIME_2 478 +#define FRONTIER_MON_LANTURN_2 479 +#define FRONTIER_MON_BRELOOM_2 480 +#define FRONTIER_MON_FORRETRESS_2 481 +#define FRONTIER_MON_SKARMORY_2 482 +#define FRONTIER_MON_WHISCASH_2 483 +#define FRONTIER_MON_XATU_2 484 +#define FRONTIER_MON_CLEFABLE_2 485 +#define FRONTIER_MON_HARIYAMA_2 486 +#define FRONTIER_MON_RAICHU_2 487 +#define FRONTIER_MON_DEWGONG_2 488 +#define FRONTIER_MON_MANECTRIC_2 489 +#define FRONTIER_MON_VILEPLUME_2 490 +#define FRONTIER_MON_VICTREEBEL_2 491 +#define FRONTIER_MON_ELECTRODE_2 492 +#define FRONTIER_MON_EXPLOUD_2 493 +#define FRONTIER_MON_SHIFTRY_2 494 +#define FRONTIER_MON_GLALIE_2 495 +#define FRONTIER_MON_LUDICOLO_2 496 +#define FRONTIER_MON_HYPNO_2 497 +#define FRONTIER_MON_GOLEM_2 498 +#define FRONTIER_MON_RHYDON_2 499 +#define FRONTIER_MON_ALAKAZAM_2 500 +#define FRONTIER_MON_WEEZING_2 501 +#define FRONTIER_MON_KANGASKHAN_2 502 +#define FRONTIER_MON_ELECTABUZZ_2 503 +#define FRONTIER_MON_TAUROS_2 504 +#define FRONTIER_MON_SLOWBRO_2 505 +#define FRONTIER_MON_SLOWKING_2 506 +#define FRONTIER_MON_MILTANK_2 507 +#define FRONTIER_MON_ALTARIA_2 508 +#define FRONTIER_MON_NIDOQUEEN_2 509 +#define FRONTIER_MON_NIDOKING_2 510 +#define FRONTIER_MON_MAGMAR_2 511 +#define FRONTIER_MON_CRADILY_2 512 +#define FRONTIER_MON_ARMALDO_2 513 +#define FRONTIER_MON_GOLDUCK_2 514 +#define FRONTIER_MON_RAPIDASH_2 515 +#define FRONTIER_MON_MUK_2 516 +#define FRONTIER_MON_GENGAR_2 517 +#define FRONTIER_MON_AMPHAROS_2 518 +#define FRONTIER_MON_SCIZOR_2 519 +#define FRONTIER_MON_HERACROSS_2 520 +#define FRONTIER_MON_URSARING_2 521 +#define FRONTIER_MON_HOUNDOOM_2 522 +#define FRONTIER_MON_DONPHAN_2 523 +#define FRONTIER_MON_CLAYDOL_2 524 +#define FRONTIER_MON_WAILORD_2 525 +#define FRONTIER_MON_NINETALES_2 526 +#define FRONTIER_MON_MACHAMP_2 527 +#define FRONTIER_MON_SHUCKLE_2 528 +#define FRONTIER_MON_STEELIX_2 529 +#define FRONTIER_MON_TENTACRUEL_2 530 +#define FRONTIER_MON_AERODACTYL_2 531 +#define FRONTIER_MON_PORYGON2_2 532 +#define FRONTIER_MON_GARDEVOIR_2 533 +#define FRONTIER_MON_EXEGGUTOR_2 534 +#define FRONTIER_MON_STARMIE_2 535 +#define FRONTIER_MON_FLYGON_2 536 +#define FRONTIER_MON_VENUSAUR_2 537 +#define FRONTIER_MON_VAPOREON_2 538 +#define FRONTIER_MON_JOLTEON_2 539 +#define FRONTIER_MON_FLAREON_2 540 +#define FRONTIER_MON_MEGANIUM_2 541 +#define FRONTIER_MON_ESPEON_2 542 +#define FRONTIER_MON_UMBREON_2 543 +#define FRONTIER_MON_BLASTOISE_2 544 +#define FRONTIER_MON_FERALIGATR_2 545 +#define FRONTIER_MON_AGGRON_2 546 +#define FRONTIER_MON_BLAZIKEN_2 547 +#define FRONTIER_MON_WALREIN_2 548 +#define FRONTIER_MON_SCEPTILE_2 549 +#define FRONTIER_MON_CHARIZARD_2 550 +#define FRONTIER_MON_TYPHLOSION_2 551 +#define FRONTIER_MON_LAPRAS_2 552 +#define FRONTIER_MON_CROBAT_2 553 +#define FRONTIER_MON_SWAMPERT_2 554 +#define FRONTIER_MON_GYARADOS_2 555 +#define FRONTIER_MON_SNORLAX_2 556 +#define FRONTIER_MON_KINGDRA_2 557 +#define FRONTIER_MON_BLISSEY_2 558 +#define FRONTIER_MON_MILOTIC_2 559 +#define FRONTIER_MON_ARCANINE_2 560 +#define FRONTIER_MON_SALAMENCE_2 561 +#define FRONTIER_MON_METAGROSS_2 562 +#define FRONTIER_MON_SLAKING_2 563 + +#define FRONTIER_MON_DUGTRIO_3 564 +#define FRONTIER_MON_MEDICHAM_3 565 +#define FRONTIER_MON_MISDREAVUS_3 566 +#define FRONTIER_MON_FEAROW_3 567 +#define FRONTIER_MON_GRANBULL_3 568 +#define FRONTIER_MON_JYNX_3 569 +#define FRONTIER_MON_DUSCLOPS_3 570 +#define FRONTIER_MON_DODRIO_3 571 +#define FRONTIER_MON_MR_MIME_3 572 +#define FRONTIER_MON_LANTURN_3 573 +#define FRONTIER_MON_BRELOOM_3 574 +#define FRONTIER_MON_FORRETRESS_3 575 +#define FRONTIER_MON_WHISCASH_3 576 +#define FRONTIER_MON_XATU_3 577 +#define FRONTIER_MON_SKARMORY_3 578 +#define FRONTIER_MON_MAROWAK_3 579 +#define FRONTIER_MON_QUAGSIRE_3 580 +#define FRONTIER_MON_CLEFABLE_3 581 +#define FRONTIER_MON_HARIYAMA_3 582 +#define FRONTIER_MON_RAICHU_3 583 +#define FRONTIER_MON_DEWGONG_3 584 +#define FRONTIER_MON_MANECTRIC_3 585 +#define FRONTIER_MON_VILEPLUME_3 586 +#define FRONTIER_MON_VICTREEBEL_3 587 +#define FRONTIER_MON_ELECTRODE_3 588 +#define FRONTIER_MON_EXPLOUD_3 589 +#define FRONTIER_MON_SHIFTRY_3 590 +#define FRONTIER_MON_GLALIE_3 591 +#define FRONTIER_MON_LUDICOLO_3 592 +#define FRONTIER_MON_HYPNO_3 593 +#define FRONTIER_MON_GOLEM_3 594 +#define FRONTIER_MON_RHYDON_3 595 +#define FRONTIER_MON_ALAKAZAM_3 596 +#define FRONTIER_MON_WEEZING_3 597 +#define FRONTIER_MON_KANGASKHAN_3 598 +#define FRONTIER_MON_ELECTABUZZ_3 599 +#define FRONTIER_MON_TAUROS_3 600 +#define FRONTIER_MON_SLOWBRO_3 601 +#define FRONTIER_MON_SLOWKING_3 602 +#define FRONTIER_MON_MILTANK_3 603 +#define FRONTIER_MON_ALTARIA_3 604 +#define FRONTIER_MON_NIDOQUEEN_3 605 +#define FRONTIER_MON_NIDOKING_3 606 +#define FRONTIER_MON_MAGMAR_3 607 +#define FRONTIER_MON_CRADILY_3 608 +#define FRONTIER_MON_ARMALDO_3 609 +#define FRONTIER_MON_GOLDUCK_3 610 +#define FRONTIER_MON_RAPIDASH_3 611 +#define FRONTIER_MON_MUK_3 612 +#define FRONTIER_MON_GENGAR_3 613 +#define FRONTIER_MON_AMPHAROS_3 614 +#define FRONTIER_MON_SCIZOR_3 615 +#define FRONTIER_MON_HERACROSS_3 616 +#define FRONTIER_MON_URSARING_3 617 +#define FRONTIER_MON_HOUNDOOM_3 618 +#define FRONTIER_MON_DONPHAN_3 619 +#define FRONTIER_MON_CLAYDOL_3 620 +#define FRONTIER_MON_WAILORD_3 621 +#define FRONTIER_MON_NINETALES_3 622 +#define FRONTIER_MON_MACHAMP_3 623 +#define FRONTIER_MON_SHUCKLE_3 624 +#define FRONTIER_MON_STEELIX_3 625 +#define FRONTIER_MON_TENTACRUEL_3 626 +#define FRONTIER_MON_AERODACTYL_3 627 +#define FRONTIER_MON_PORYGON2_3 628 +#define FRONTIER_MON_GARDEVOIR_3 629 +#define FRONTIER_MON_EXEGGUTOR_3 630 +#define FRONTIER_MON_STARMIE_3 631 +#define FRONTIER_MON_FLYGON_3 632 +#define FRONTIER_MON_VENUSAUR_3 633 +#define FRONTIER_MON_VAPOREON_3 634 +#define FRONTIER_MON_JOLTEON_3 635 +#define FRONTIER_MON_FLAREON_3 636 +#define FRONTIER_MON_MEGANIUM_3 637 +#define FRONTIER_MON_ESPEON_3 638 +#define FRONTIER_MON_UMBREON_3 639 +#define FRONTIER_MON_BLASTOISE_3 640 +#define FRONTIER_MON_FERALIGATR_3 641 +#define FRONTIER_MON_AGGRON_3 642 +#define FRONTIER_MON_BLAZIKEN_3 643 +#define FRONTIER_MON_WALREIN_3 644 +#define FRONTIER_MON_SCEPTILE_3 645 +#define FRONTIER_MON_CHARIZARD_3 646 +#define FRONTIER_MON_TYPHLOSION_3 647 +#define FRONTIER_MON_LAPRAS_3 648 +#define FRONTIER_MON_CROBAT_3 649 +#define FRONTIER_MON_SWAMPERT_3 650 +#define FRONTIER_MON_GYARADOS_3 651 +#define FRONTIER_MON_SNORLAX_3 652 +#define FRONTIER_MON_KINGDRA_3 653 +#define FRONTIER_MON_BLISSEY_3 654 +#define FRONTIER_MON_MILOTIC_3 655 +#define FRONTIER_MON_ARCANINE_3 656 +#define FRONTIER_MON_SALAMENCE_3 657 +#define FRONTIER_MON_METAGROSS_3 658 +#define FRONTIER_MON_SLAKING_3 659 + +#define FRONTIER_MON_DUGTRIO_4 660 +#define FRONTIER_MON_MEDICHAM_4 661 +#define FRONTIER_MON_MISDREAVUS_4 662 +#define FRONTIER_MON_FEAROW_4 663 +#define FRONTIER_MON_GRANBULL_4 664 +#define FRONTIER_MON_JYNX_4 665 +#define FRONTIER_MON_DUSCLOPS_4 666 +#define FRONTIER_MON_DODRIO_4 667 +#define FRONTIER_MON_MR_MIME_4 668 +#define FRONTIER_MON_LANTURN_4 669 +#define FRONTIER_MON_BRELOOM_4 670 +#define FRONTIER_MON_FORRETRESS_4 671 +#define FRONTIER_MON_WHISCASH_4 672 +#define FRONTIER_MON_XATU_4 673 +#define FRONTIER_MON_SKARMORY_4 674 +#define FRONTIER_MON_MAROWAK_4 675 +#define FRONTIER_MON_QUAGSIRE_4 676 +#define FRONTIER_MON_CLEFABLE_4 677 +#define FRONTIER_MON_HARIYAMA_4 678 +#define FRONTIER_MON_RAICHU_4 679 +#define FRONTIER_MON_DEWGONG_4 680 +#define FRONTIER_MON_MANECTRIC_4 681 +#define FRONTIER_MON_VILEPLUME_4 682 +#define FRONTIER_MON_VICTREEBEL_4 683 +#define FRONTIER_MON_ELECTRODE_4 684 +#define FRONTIER_MON_EXPLOUD_4 685 +#define FRONTIER_MON_SHIFTRY_4 686 +#define FRONTIER_MON_GLALIE_4 687 +#define FRONTIER_MON_LUDICOLO_4 688 +#define FRONTIER_MON_HYPNO_4 689 +#define FRONTIER_MON_GOLEM_4 690 +#define FRONTIER_MON_RHYDON_4 691 +#define FRONTIER_MON_ALAKAZAM_4 692 +#define FRONTIER_MON_WEEZING_4 693 +#define FRONTIER_MON_KANGASKHAN_4 694 +#define FRONTIER_MON_ELECTABUZZ_4 695 +#define FRONTIER_MON_TAUROS_4 696 +#define FRONTIER_MON_SLOWBRO_4 697 +#define FRONTIER_MON_SLOWKING_4 698 +#define FRONTIER_MON_MILTANK_4 699 +#define FRONTIER_MON_ALTARIA_4 700 +#define FRONTIER_MON_NIDOQUEEN_4 701 +#define FRONTIER_MON_NIDOKING_4 702 +#define FRONTIER_MON_MAGMAR_4 703 +#define FRONTIER_MON_CRADILY_4 704 +#define FRONTIER_MON_ARMALDO_4 705 +#define FRONTIER_MON_GOLDUCK_4 706 +#define FRONTIER_MON_RAPIDASH_4 707 +#define FRONTIER_MON_MUK_4 708 +#define FRONTIER_MON_GENGAR_4 709 +#define FRONTIER_MON_AMPHAROS_4 710 +#define FRONTIER_MON_SCIZOR_4 711 +#define FRONTIER_MON_HERACROSS_4 712 +#define FRONTIER_MON_URSARING_4 713 +#define FRONTIER_MON_HOUNDOOM_4 714 +#define FRONTIER_MON_DONPHAN_4 715 +#define FRONTIER_MON_CLAYDOL_4 716 +#define FRONTIER_MON_WAILORD_4 717 +#define FRONTIER_MON_NINETALES_4 718 +#define FRONTIER_MON_MACHAMP_4 719 +#define FRONTIER_MON_SHUCKLE_4 720 +#define FRONTIER_MON_STEELIX_4 721 +#define FRONTIER_MON_TENTACRUEL_4 722 +#define FRONTIER_MON_AERODACTYL_4 723 +#define FRONTIER_MON_PORYGON2_4 724 +#define FRONTIER_MON_GARDEVOIR_4 725 +#define FRONTIER_MON_EXEGGUTOR_4 726 +#define FRONTIER_MON_STARMIE_4 727 +#define FRONTIER_MON_FLYGON_4 728 +#define FRONTIER_MON_VENUSAUR_4 729 +#define FRONTIER_MON_VAPOREON_4 730 +#define FRONTIER_MON_JOLTEON_4 731 +#define FRONTIER_MON_FLAREON_4 732 +#define FRONTIER_MON_MEGANIUM_4 733 +#define FRONTIER_MON_ESPEON_4 734 +#define FRONTIER_MON_UMBREON_4 735 +#define FRONTIER_MON_BLASTOISE_4 736 +#define FRONTIER_MON_FERALIGATR_4 737 +#define FRONTIER_MON_AGGRON_4 738 +#define FRONTIER_MON_BLAZIKEN_4 739 +#define FRONTIER_MON_WALREIN_4 740 +#define FRONTIER_MON_SCEPTILE_4 741 +#define FRONTIER_MON_CHARIZARD_4 742 +#define FRONTIER_MON_TYPHLOSION_4 743 +#define FRONTIER_MON_LAPRAS_4 744 +#define FRONTIER_MON_CROBAT_4 745 +#define FRONTIER_MON_SWAMPERT_4 746 +#define FRONTIER_MON_GYARADOS_4 747 +#define FRONTIER_MON_SNORLAX_4 748 +#define FRONTIER_MON_KINGDRA_4 749 +#define FRONTIER_MON_BLISSEY_4 750 +#define FRONTIER_MON_MILOTIC_4 751 +#define FRONTIER_MON_ARCANINE_4 752 +#define FRONTIER_MON_SALAMENCE_4 753 +#define FRONTIER_MON_METAGROSS_4 754 +#define FRONTIER_MON_SLAKING_4 755 + +#define FRONTIER_MON_ARTICUNO_1 756 +#define FRONTIER_MON_ZAPDOS_1 757 +#define FRONTIER_MON_MOLTRES_1 758 +#define FRONTIER_MON_RAIKOU_1 759 +#define FRONTIER_MON_ENTEI_1 760 +#define FRONTIER_MON_SUICUNE_1 761 +#define FRONTIER_MON_REGIROCK_1 762 +#define FRONTIER_MON_REGICE_1 763 +#define FRONTIER_MON_REGISTEEL_1 764 +#define FRONTIER_MON_LATIAS_1 765 +#define FRONTIER_MON_LATIOS_1 766 +#define FRONTIER_MON_ARTICUNO_2 767 +#define FRONTIER_MON_ZAPDOS_2 768 +#define FRONTIER_MON_MOLTRES_2 769 +#define FRONTIER_MON_RAIKOU_2 770 +#define FRONTIER_MON_ENTEI_2 771 +#define FRONTIER_MON_SUICUNE_2 772 +#define FRONTIER_MON_REGIROCK_2 773 +#define FRONTIER_MON_REGICE_2 774 +#define FRONTIER_MON_REGISTEEL_2 775 +#define FRONTIER_MON_LATIAS_2 776 +#define FRONTIER_MON_LATIOS_2 777 +#define FRONTIER_MON_ARTICUNO_3 778 +#define FRONTIER_MON_ZAPDOS_3 779 +#define FRONTIER_MON_MOLTRES_3 780 +#define FRONTIER_MON_RAIKOU_3 781 +#define FRONTIER_MON_ENTEI_3 782 +#define FRONTIER_MON_SUICUNE_3 783 +#define FRONTIER_MON_REGIROCK_3 784 +#define FRONTIER_MON_REGICE_3 785 +#define FRONTIER_MON_REGISTEEL_3 786 +#define FRONTIER_MON_LATIAS_3 787 +#define FRONTIER_MON_LATIOS_3 788 +#define FRONTIER_MON_ARTICUNO_4 789 +#define FRONTIER_MON_ZAPDOS_4 790 +#define FRONTIER_MON_MOLTRES_4 791 +#define FRONTIER_MON_RAIKOU_4 792 +#define FRONTIER_MON_ENTEI_4 793 +#define FRONTIER_MON_SUICUNE_4 794 +#define FRONTIER_MON_REGIROCK_4 795 +#define FRONTIER_MON_REGICE_4 796 +#define FRONTIER_MON_REGISTEEL_4 797 +#define FRONTIER_MON_LATIAS_4 798 +#define FRONTIER_MON_LATIOS_4 799 +#define FRONTIER_MON_GENGAR_5 800 +#define FRONTIER_MON_GENGAR_6 801 +#define FRONTIER_MON_GENGAR_7 802 +#define FRONTIER_MON_GENGAR_8 803 +#define FRONTIER_MON_URSARING_5 804 +#define FRONTIER_MON_URSARING_6 805 +#define FRONTIER_MON_URSARING_7 806 +#define FRONTIER_MON_URSARING_8 807 +#define FRONTIER_MON_MACHAMP_5 808 +#define FRONTIER_MON_MACHAMP_6 809 +#define FRONTIER_MON_MACHAMP_7 810 +#define FRONTIER_MON_MACHAMP_8 811 +#define FRONTIER_MON_GARDEVOIR_5 812 +#define FRONTIER_MON_GARDEVOIR_6 813 +#define FRONTIER_MON_GARDEVOIR_7 814 +#define FRONTIER_MON_GARDEVOIR_8 815 +#define FRONTIER_MON_STARMIE_5 816 +#define FRONTIER_MON_STARMIE_6 817 +#define FRONTIER_MON_STARMIE_7 818 +#define FRONTIER_MON_STARMIE_8 819 +#define FRONTIER_MON_LAPRAS_5 820 +#define FRONTIER_MON_LAPRAS_6 821 +#define FRONTIER_MON_LAPRAS_7 822 +#define FRONTIER_MON_LAPRAS_8 823 +#define FRONTIER_MON_SNORLAX_5 824 +#define FRONTIER_MON_SNORLAX_6 825 +#define FRONTIER_MON_SNORLAX_7 826 +#define FRONTIER_MON_SNORLAX_8 827 +#define FRONTIER_MON_SALAMENCE_5 828 +#define FRONTIER_MON_SALAMENCE_6 829 +#define FRONTIER_MON_SALAMENCE_7 830 +#define FRONTIER_MON_SALAMENCE_8 831 +#define FRONTIER_MON_METAGROSS_5 832 +#define FRONTIER_MON_METAGROSS_6 833 +#define FRONTIER_MON_METAGROSS_7 834 +#define FRONTIER_MON_METAGROSS_8 835 +#define FRONTIER_MON_REGIROCK_5 836 +#define FRONTIER_MON_REGIROCK_6 837 +#define FRONTIER_MON_REGICE_5 838 +#define FRONTIER_MON_REGICE_6 839 +#define FRONTIER_MON_REGISTEEL_5 840 +#define FRONTIER_MON_REGISTEEL_6 841 +#define FRONTIER_MON_LATIAS_5 842 +#define FRONTIER_MON_LATIAS_6 843 +#define FRONTIER_MON_LATIAS_7 844 +#define FRONTIER_MON_LATIAS_8 845 +#define FRONTIER_MON_LATIOS_5 846 +#define FRONTIER_MON_LATIOS_6 847 +#define FRONTIER_MON_LATIOS_7 848 +#define FRONTIER_MON_LATIOS_8 849 + +#define FRONTIER_MON_DRAGONITE_1 850 +#define FRONTIER_MON_DRAGONITE_2 851 +#define FRONTIER_MON_DRAGONITE_3 852 +#define FRONTIER_MON_DRAGONITE_4 853 +#define FRONTIER_MON_DRAGONITE_5 854 +#define FRONTIER_MON_DRAGONITE_6 855 +#define FRONTIER_MON_DRAGONITE_7 856 +#define FRONTIER_MON_DRAGONITE_8 857 +#define FRONTIER_MON_DRAGONITE_9 858 +#define FRONTIER_MON_DRAGONITE_10 859 +#define FRONTIER_MON_TYRANITAR_1 860 +#define FRONTIER_MON_TYRANITAR_2 861 +#define FRONTIER_MON_TYRANITAR_3 862 +#define FRONTIER_MON_TYRANITAR_4 863 +#define FRONTIER_MON_TYRANITAR_5 864 +#define FRONTIER_MON_TYRANITAR_6 865 +#define FRONTIER_MON_TYRANITAR_7 866 +#define FRONTIER_MON_TYRANITAR_8 867 +#define FRONTIER_MON_TYRANITAR_9 868 +#define FRONTIER_MON_TYRANITAR_10 869 +#define FRONTIER_MON_ARTICUNO_5 870 +#define FRONTIER_MON_ARTICUNO_6 871 +#define FRONTIER_MON_ZAPDOS_5 872 +#define FRONTIER_MON_ZAPDOS_6 873 +#define FRONTIER_MON_MOLTRES_5 874 +#define FRONTIER_MON_MOLTRES_6 875 +#define FRONTIER_MON_RAIKOU_5 876 +#define FRONTIER_MON_RAIKOU_6 877 +#define FRONTIER_MON_ENTEI_5 878 +#define FRONTIER_MON_ENTEI_6 879 +#define FRONTIER_MON_SUICUNE_5 880 +#define FRONTIER_MON_SUICUNE_6 881 + +#define NUM_FRONTIER_MONS 882 + +#endif //GUARD_CONSTANTS_BATTLE_FRONTIER_MONS_H diff --git a/src/battle_tower.c b/src/battle_tower.c index 864775cff1..4f6c1d1638 100644 --- a/src/battle_tower.c +++ b/src/battle_tower.c @@ -24,6 +24,7 @@ #include "tv.h" #include "battle_factory.h" #include "constants/battle_frontier.h" +#include "constants/battle_frontier_mons.h" #include "constants/battle_tower.h" #include "constants/frontier_util.h" #include "constants/items.h" diff --git a/src/data/battle_frontier/battle_frontier_mons.h b/src/data/battle_frontier/battle_frontier_mons.h index 44cfb80363..d94d6acaf3 100644 --- a/src/data/battle_frontier/battle_frontier_mons.h +++ b/src/data/battle_frontier/battle_frontier_mons.h @@ -1,6173 +1,6173 @@ -const struct FacilityMon gBattleFrontierMons[] = +const struct FacilityMon gBattleFrontierMons[NUM_FRONTIER_MONS] = { - [0] = { + [FRONTIER_MON_SUNKERN] = { .species = SPECIES_SUNKERN, .moves = {MOVE_MEGA_DRAIN, MOVE_HELPING_HAND, MOVE_SUNNY_DAY, MOVE_LIGHT_SCREEN}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [1] = { + [FRONTIER_MON_AZURILL] = { .species = SPECIES_AZURILL, .moves = {MOVE_WATER_PULSE, MOVE_ATTRACT, MOVE_SING, MOVE_CHARM}, .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_RASH }, - [2] = { + [FRONTIER_MON_CATERPIE] = { .species = SPECIES_CATERPIE, .moves = {MOVE_TACKLE, MOVE_STRING_SHOT, MOVE_NONE, MOVE_NONE}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [3] = { + [FRONTIER_MON_WEEDLE] = { .species = SPECIES_WEEDLE, .moves = {MOVE_POISON_STING, MOVE_STRING_SHOT, MOVE_NONE, MOVE_NONE}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [4] = { + [FRONTIER_MON_WURMPLE] = { .species = SPECIES_WURMPLE, .moves = {MOVE_TACKLE, MOVE_STRING_SHOT, MOVE_POISON_STING, MOVE_NONE}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [5] = { + [FRONTIER_MON_RALTS] = { .species = SPECIES_RALTS, .moves = {MOVE_CONFUSION, MOVE_IMPRISON, MOVE_DOUBLE_TEAM, MOVE_LIGHT_SCREEN}, .itemTableId = BATTLE_FRONTIER_ITEM_TWISTED_SPOON, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [6] = { + [FRONTIER_MON_MAGIKARP] = { .species = SPECIES_MAGIKARP, .moves = {MOVE_FLAIL, MOVE_NONE, MOVE_NONE, MOVE_NONE}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [7] = { + [FRONTIER_MON_FEEBAS] = { .species = SPECIES_FEEBAS, .moves = {MOVE_FLAIL, MOVE_MIRROR_COAT, MOVE_NONE, MOVE_NONE}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_LONELY }, - [8] = { + [FRONTIER_MON_METAPOD] = { .species = SPECIES_METAPOD, .moves = {MOVE_HARDEN, MOVE_NONE, MOVE_NONE, MOVE_NONE}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_BASHFUL }, - [9] = { + [FRONTIER_MON_KAKUNA] = { .species = SPECIES_KAKUNA, .moves = {MOVE_HARDEN, MOVE_NONE, MOVE_NONE, MOVE_NONE}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_BASHFUL }, - [10] = { + [FRONTIER_MON_PICHU] = { .species = SPECIES_PICHU, .moves = {MOVE_SWEET_KISS, MOVE_THUNDER_WAVE, MOVE_ATTRACT, MOVE_SHOCK_WAVE}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_RASH }, - [11] = { + [FRONTIER_MON_SILCOON] = { .species = SPECIES_SILCOON, .moves = {MOVE_HARDEN, MOVE_NONE, MOVE_NONE, MOVE_NONE}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_BASHFUL }, - [12] = { + [FRONTIER_MON_CASCOON] = { .species = SPECIES_CASCOON, .moves = {MOVE_HARDEN, MOVE_NONE, MOVE_NONE, MOVE_NONE}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_BASHFUL }, - [13] = { + [FRONTIER_MON_IGGLYBUFF] = { .species = SPECIES_IGGLYBUFF, .moves = {MOVE_SWEET_KISS, MOVE_SING, MOVE_ATTRACT, MOVE_SEISMIC_TOSS}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [14] = { + [FRONTIER_MON_WOOPER] = { .species = SPECIES_WOOPER, .moves = {MOVE_YAWN, MOVE_DIG, MOVE_WATER_PULSE, MOVE_RAIN_DANCE}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [15] = { + [FRONTIER_MON_TYROGUE] = { .species = SPECIES_TYROGUE, .moves = {MOVE_MACH_PUNCH, MOVE_PROTECT, MOVE_DOUBLE_TEAM, MOVE_FACADE}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [16] = { + [FRONTIER_MON_SENTRET] = { .species = SPECIES_SENTRET, .moves = {MOVE_QUICK_ATTACK, MOVE_FOLLOW_ME, MOVE_HELPING_HAND, MOVE_ASSIST}, .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [17] = { + [FRONTIER_MON_CLEFFA] = { .species = SPECIES_CLEFFA, .moves = {MOVE_SWEET_KISS, MOVE_SING, MOVE_ATTRACT, MOVE_METRONOME}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_SERIOUS }, - [18] = { + [FRONTIER_MON_SEEDOT] = { .species = SPECIES_SEEDOT, .moves = {MOVE_BULLET_SEED, MOVE_BIDE, MOVE_DEFENSE_CURL, MOVE_ROLLOUT}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [19] = { + [FRONTIER_MON_LOTAD] = { .species = SPECIES_LOTAD, .moves = {MOVE_RAIN_DANCE, MOVE_WATER_PULSE, MOVE_SUNNY_DAY, MOVE_MEGA_DRAIN}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [20] = { + [FRONTIER_MON_POOCHYENA] = { .species = SPECIES_POOCHYENA, .moves = {MOVE_CRUNCH, MOVE_SWAGGER, MOVE_ROAR, MOVE_SAND_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [21] = { + [FRONTIER_MON_SHEDINJA] = { .species = SPECIES_SHEDINJA, .moves = {MOVE_SHADOW_BALL, MOVE_CONFUSE_RAY, MOVE_SILVER_WIND, MOVE_GRUDGE}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, .nature = NATURE_NAIVE }, - [22] = { + [FRONTIER_MON_MAKUHITA] = { .species = SPECIES_MAKUHITA, .moves = {MOVE_FAKE_OUT, MOVE_SEISMIC_TOSS, MOVE_DETECT, MOVE_WHIRLWIND}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [23] = { + [FRONTIER_MON_WHISMUR] = { .species = SPECIES_WHISMUR, .moves = {MOVE_UPROAR, MOVE_SWAGGER, MOVE_BODY_SLAM, MOVE_SMELLING_SALT}, .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [24] = { + [FRONTIER_MON_ZIGZAGOON] = { .species = SPECIES_ZIGZAGOON, .moves = {MOVE_HEADBUTT, MOVE_PIN_MISSILE, MOVE_SWIFT, MOVE_SAND_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_SILK_SCARF, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_TIMID }, - [25] = { + [FRONTIER_MON_ZUBAT] = { .species = SPECIES_ZUBAT, .moves = {MOVE_POISON_FANG, MOVE_WHIRLWIND, MOVE_CONFUSE_RAY, MOVE_AERIAL_ACE}, .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_SASSY }, - [26] = { + [FRONTIER_MON_TOGEPI] = { .species = SPECIES_TOGEPI, .moves = {MOVE_RETURN, MOVE_YAWN, MOVE_WISH, MOVE_SWEET_KISS}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [27] = { + [FRONTIER_MON_SPINARAK] = { .species = SPECIES_SPINARAK, .moves = {MOVE_SIGNAL_BEAM, MOVE_NIGHT_SHADE, MOVE_SPIDER_WEB, MOVE_SCARY_FACE}, .itemTableId = BATTLE_FRONTIER_ITEM_LIECHI_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [28] = { + [FRONTIER_MON_MARILL] = { .species = SPECIES_MARILL, .moves = {MOVE_WATER_PULSE, MOVE_RAIN_DANCE, MOVE_LIGHT_SCREEN, MOVE_RETURN}, .itemTableId = BATTLE_FRONTIER_ITEM_MYSTIC_WATER, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_GENTLE }, - [29] = { + [FRONTIER_MON_HOPPIP] = { .species = SPECIES_HOPPIP, .moves = {MOVE_MEGA_DRAIN, MOVE_LEECH_SEED, MOVE_SLEEP_POWDER, MOVE_STUN_SPORE}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_LAX }, - [30] = { + [FRONTIER_MON_SLUGMA] = { .species = SPECIES_SLUGMA, .moves = {MOVE_EMBER, MOVE_ROCK_SLIDE, MOVE_YAWN, MOVE_BODY_SLAM}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_SASSY }, - [31] = { + [FRONTIER_MON_SWINUB] = { .species = SPECIES_SWINUB, .moves = {MOVE_ICY_WIND, MOVE_DIG, MOVE_ROCK_TOMB, MOVE_ENDURE}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_GENTLE }, - [32] = { + [FRONTIER_MON_SMEARGLE] = { .species = SPECIES_SMEARGLE, .moves = {MOVE_EXTREME_SPEED, MOVE_FAKE_OUT, MOVE_QUICK_ATTACK, MOVE_MACH_PUNCH}, .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [33] = { + [FRONTIER_MON_PIDGEY] = { .species = SPECIES_PIDGEY, .moves = {MOVE_GUST, MOVE_SAND_ATTACK, MOVE_WHIRLWIND, MOVE_QUICK_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_SHARP_BEAK, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_LONELY }, - [34] = { + [FRONTIER_MON_RATTATA] = { .species = SPECIES_RATTATA, .moves = {MOVE_HYPER_FANG, MOVE_PURSUIT, MOVE_QUICK_ATTACK, MOVE_SWAGGER}, .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [35] = { + [FRONTIER_MON_WYNAUT] = { .species = SPECIES_WYNAUT, .moves = {MOVE_ENCORE, MOVE_COUNTER, MOVE_MIRROR_COAT, MOVE_CHARM}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_JOLLY }, - [36] = { + [FRONTIER_MON_SKITTY] = { .species = SPECIES_SKITTY, .moves = {MOVE_SING, MOVE_ATTRACT, MOVE_CHARM, MOVE_DOUBLE_SLAP}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [37] = { + [FRONTIER_MON_SPEAROW] = { .species = SPECIES_SPEAROW, .moves = {MOVE_FURY_ATTACK, MOVE_PURSUIT, MOVE_MIRROR_MOVE, MOVE_PROTECT}, .itemTableId = BATTLE_FRONTIER_ITEM_LIECHI_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [38] = { + [FRONTIER_MON_HOOTHOOT] = { .species = SPECIES_HOOTHOOT, .moves = {MOVE_CONFUSION, MOVE_HYPNOSIS, MOVE_SUPERSONIC, MOVE_REFLECT}, .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [39] = { + [FRONTIER_MON_DIGLETT] = { .species = SPECIES_DIGLETT, .moves = {MOVE_MAGNITUDE, MOVE_SLASH, MOVE_ROCK_TOMB, MOVE_SAND_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_NAIVE }, - [40] = { + [FRONTIER_MON_LEDYBA] = { .species = SPECIES_LEDYBA, .moves = {MOVE_PSYBEAM, MOVE_AGILITY, MOVE_BATON_PASS, MOVE_LIGHT_SCREEN}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_BASHFUL }, - [41] = { + [FRONTIER_MON_NINCADA] = { .species = SPECIES_NINCADA, .moves = {MOVE_MUD_SLAP, MOVE_DIG, MOVE_TOXIC, MOVE_PROTECT}, .itemTableId = BATTLE_FRONTIER_ITEM_PECHA_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_CALM }, - [42] = { + [FRONTIER_MON_SURSKIT] = { .species = SPECIES_SURSKIT, .moves = {MOVE_BUBBLE_BEAM, MOVE_RAIN_DANCE, MOVE_SWEET_SCENT, MOVE_QUICK_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_MYSTIC_WATER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [43] = { + [FRONTIER_MON_JIGGLYPUFF] = { .species = SPECIES_JIGGLYPUFF, .moves = {MOVE_SING, MOVE_WISH, MOVE_MIMIC, MOVE_DOUBLE_SLAP}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [44] = { + [FRONTIER_MON_TAILLOW] = { .species = SPECIES_TAILLOW, .moves = {MOVE_FLY, MOVE_QUICK_ATTACK, MOVE_ENDEAVOR, MOVE_FOCUS_ENERGY}, .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_GENTLE }, - [45] = { + [FRONTIER_MON_WINGULL] = { .species = SPECIES_WINGULL, .moves = {MOVE_WATER_PULSE, MOVE_FLY, MOVE_QUICK_ATTACK, MOVE_STEEL_WING}, .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [46] = { + [FRONTIER_MON_NIDORAN_M] = { .species = SPECIES_NIDORAN_M, .moves = {MOVE_DOUBLE_KICK, MOVE_POISON_STING, MOVE_DISABLE, MOVE_HELPING_HAND}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [47] = { + [FRONTIER_MON_NIDORAN_F] = { .species = SPECIES_NIDORAN_F, .moves = {MOVE_CRUNCH, MOVE_DOUBLE_KICK, MOVE_FLATTER, MOVE_HELPING_HAND}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [48] = { + [FRONTIER_MON_KIRLIA] = { .species = SPECIES_KIRLIA, .moves = {MOVE_CONFUSION, MOVE_WILL_O_WISP, MOVE_FUTURE_SIGHT, MOVE_LIGHT_SCREEN}, .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [49] = { + [FRONTIER_MON_MAREEP] = { .species = SPECIES_MAREEP, .moves = {MOVE_SHOCK_WAVE, MOVE_FLASH, MOVE_REFLECT, MOVE_COTTON_SPORE}, .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [50] = { + [FRONTIER_MON_MEDITITE] = { .species = SPECIES_MEDITITE, .moves = {MOVE_HI_JUMP_KICK, MOVE_MEDITATE, MOVE_SWAGGER, MOVE_PSYCH_UP}, .itemTableId = BATTLE_FRONTIER_ITEM_MENTAL_HERB, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_NAUGHTY }, - [51] = { + [FRONTIER_MON_SLAKOTH] = { .species = SPECIES_SLAKOTH, .moves = {MOVE_YAWN, MOVE_SCRATCH, MOVE_ENCORE, MOVE_COUNTER}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [52] = { + [FRONTIER_MON_PARAS] = { .species = SPECIES_PARAS, .moves = {MOVE_SPORE, MOVE_LEECH_LIFE, MOVE_SLASH, MOVE_LIGHT_SCREEN}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [53] = { + [FRONTIER_MON_EKANS] = { .species = SPECIES_EKANS, .moves = {MOVE_ACID, MOVE_DIG, MOVE_SCREECH, MOVE_TORMENT}, .itemTableId = BATTLE_FRONTIER_ITEM_POISON_BARB, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [54] = { + [FRONTIER_MON_DITTO] = { .species = SPECIES_DITTO, .moves = {MOVE_TRANSFORM, MOVE_NONE, MOVE_NONE, MOVE_NONE}, .itemTableId = BATTLE_FRONTIER_ITEM_METAL_POWDER, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [55] = { + [FRONTIER_MON_BARBOACH] = { .species = SPECIES_BARBOACH, .moves = {MOVE_MAGNITUDE, MOVE_WATER_PULSE, MOVE_SPARK, MOVE_FUTURE_SIGHT}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_BASHFUL }, - [56] = { + [FRONTIER_MON_MEOWTH] = { .species = SPECIES_MEOWTH, .moves = {MOVE_SLASH, MOVE_BITE, MOVE_SCREECH, MOVE_FAKE_OUT}, .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [57] = { + [FRONTIER_MON_PINECO] = { .species = SPECIES_PINECO, .moves = {MOVE_SELF_DESTRUCT, MOVE_TAKE_DOWN, MOVE_REFLECT, MOVE_LIGHT_SCREEN}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [58] = { + [FRONTIER_MON_TRAPINCH] = { .species = SPECIES_TRAPINCH, .moves = {MOVE_TOXIC, MOVE_DIG, MOVE_SANDSTORM, MOVE_SAND_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_SERIOUS }, - [59] = { + [FRONTIER_MON_SPHEAL] = { .species = SPECIES_SPHEAL, .moves = {MOVE_ICE_BALL, MOVE_WATER_PULSE, MOVE_HAIL, MOVE_MUD_SLAP}, .itemTableId = BATTLE_FRONTIER_ITEM_NEVER_MELT_ICE, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [60] = { + [FRONTIER_MON_HORSEA] = { .species = SPECIES_HORSEA, .moves = {MOVE_WATER_GUN, MOVE_AGILITY, MOVE_ICY_WIND, MOVE_TWISTER}, .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [61] = { + [FRONTIER_MON_SHROOMISH] = { .species = SPECIES_SHROOMISH, .moves = {MOVE_SPORE, MOVE_BULLET_SEED, MOVE_LEECH_SEED, MOVE_HEADBUTT}, .itemTableId = BATTLE_FRONTIER_ITEM_MIRACLE_SEED, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [62] = { + [FRONTIER_MON_SHUPPET] = { .species = SPECIES_SHUPPET, .moves = {MOVE_WILL_O_WISP, MOVE_NIGHT_SHADE, MOVE_GRUDGE, MOVE_KNOCK_OFF}, .itemTableId = BATTLE_FRONTIER_ITEM_RAWST_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_RASH }, - [63] = { + [FRONTIER_MON_DUSKULL] = { .species = SPECIES_DUSKULL, .moves = {MOVE_SKILL_SWAP, MOVE_NIGHT_SHADE, MOVE_DISABLE, MOVE_CONFUSE_RAY}, .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [64] = { + [FRONTIER_MON_ELECTRIKE] = { .species = SPECIES_ELECTRIKE, .moves = {MOVE_SPARK, MOVE_THUNDER_WAVE, MOVE_ROAR, MOVE_QUICK_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [65] = { + [FRONTIER_MON_VULPIX] = { .species = SPECIES_VULPIX, .moves = {MOVE_WILL_O_WISP, MOVE_CONFUSE_RAY, MOVE_FIRE_SPIN, MOVE_QUICK_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_RAWST_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [66] = { + [FRONTIER_MON_PIKACHU] = { .species = SPECIES_PIKACHU, .moves = {MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, MOVE_DOUBLE_TEAM, MOVE_QUICK_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_LIGHT_BALL, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [67] = { + [FRONTIER_MON_SANDSHREW] = { .species = SPECIES_SANDSHREW, .moves = {MOVE_DIG, MOVE_ROCK_TOMB, MOVE_SANDSTORM, MOVE_SAND_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_SOFT_SAND, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [68] = { + [FRONTIER_MON_POLIWAG] = { .species = SPECIES_POLIWAG, .moves = {MOVE_HYPNOSIS, MOVE_ICY_WIND, MOVE_WATER_GUN, MOVE_RAIN_DANCE}, .itemTableId = BATTLE_FRONTIER_ITEM_MYSTIC_WATER, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [69] = { + [FRONTIER_MON_BELLSPROUT] = { .species = SPECIES_BELLSPROUT, .moves = {MOVE_RAZOR_LEAF, MOVE_ACID, MOVE_STUN_SPORE, MOVE_WRAP}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_LAX }, - [70] = { + [FRONTIER_MON_GEODUDE] = { .species = SPECIES_GEODUDE, .moves = {MOVE_MAGNITUDE, MOVE_ROCK_BLAST, MOVE_STRENGTH, MOVE_PROTECT}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_BRAVE }, - [71] = { + [FRONTIER_MON_DRATINI] = { .species = SPECIES_DRATINI, .moves = {MOVE_OUTRAGE, MOVE_THUNDER_WAVE, MOVE_SUPERSONIC, MOVE_WATER_PULSE}, .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [72] = { + [FRONTIER_MON_SNUBBULL] = { .species = SPECIES_SNUBBULL, .moves = {MOVE_BITE, MOVE_CHARM, MOVE_SWAGGER, MOVE_SCARY_FACE}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [73] = { + [FRONTIER_MON_REMORAID] = { .species = SPECIES_REMORAID, .moves = {MOVE_BUBBLE_BEAM, MOVE_AURORA_BEAM, MOVE_PSYBEAM, MOVE_PROTECT}, .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_QUIRKY }, - [74] = { + [FRONTIER_MON_LARVITAR] = { .species = SPECIES_LARVITAR, .moves = {MOVE_THRASH, MOVE_ROCK_SLIDE, MOVE_DIG, MOVE_DRAGON_DANCE}, .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_NAUGHTY }, - [75] = { + [FRONTIER_MON_BALTOY] = { .species = SPECIES_BALTOY, .moves = {MOVE_PSYBEAM, MOVE_ANCIENT_POWER, MOVE_LIGHT_SCREEN, MOVE_MUD_SLAP}, .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_NAUGHTY }, - [76] = { + [FRONTIER_MON_SNORUNT] = { .species = SPECIES_SNORUNT, .moves = {MOVE_ICY_WIND, MOVE_HEADBUTT, MOVE_LEER, MOVE_BITE}, .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_BRAVE }, - [77] = { + [FRONTIER_MON_BAGON] = { .species = SPECIES_BAGON, .moves = {MOVE_DRAGON_BREATH, MOVE_HEADBUTT, MOVE_BRICK_BREAK, MOVE_SCARY_FACE}, .itemTableId = BATTLE_FRONTIER_ITEM_LIECHI_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_NAUGHTY }, - [78] = { + [FRONTIER_MON_BELDUM] = { .species = SPECIES_BELDUM, .moves = {MOVE_TAKE_DOWN, MOVE_NONE, MOVE_NONE, MOVE_NONE}, .itemTableId = BATTLE_FRONTIER_ITEM_CHOICE_BAND, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [79] = { + [FRONTIER_MON_GULPIN] = { .species = SPECIES_GULPIN, .moves = {MOVE_TOXIC, MOVE_YAWN, MOVE_PAIN_SPLIT, MOVE_ATTRACT}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_SERIOUS }, - [80] = { + [FRONTIER_MON_VENONAT] = { .species = SPECIES_VENONAT, .moves = {MOVE_PSYBEAM, MOVE_SUPERSONIC, MOVE_STUN_SPORE, MOVE_SKILL_SWAP}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [81] = { + [FRONTIER_MON_MANKEY] = { .species = SPECIES_MANKEY, .moves = {MOVE_KARATE_CHOP, MOVE_LOW_KICK, MOVE_SCREECH, MOVE_SWAGGER}, .itemTableId = BATTLE_FRONTIER_ITEM_BLACK_BELT, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_NAUGHTY }, - [82] = { + [FRONTIER_MON_MACHOP] = { .species = SPECIES_MACHOP, .moves = {MOVE_SEISMIC_TOSS, MOVE_REVENGE, MOVE_ROCK_TOMB, MOVE_SCARY_FACE}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [83] = { + [FRONTIER_MON_SHELLDER] = { .species = SPECIES_SHELLDER, .moves = {MOVE_ICICLE_SPEAR, MOVE_SUPERSONIC, MOVE_CLAMP, MOVE_WITHDRAW}, .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [84] = { + [FRONTIER_MON_SMOOCHUM] = { .species = SPECIES_SMOOCHUM, .moves = {MOVE_SWEET_KISS, MOVE_SING, MOVE_MUD_SLAP, MOVE_FAKE_OUT}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [85] = { + [FRONTIER_MON_NUMEL] = { .species = SPECIES_NUMEL, .moves = {MOVE_EMBER, MOVE_MAGNITUDE, MOVE_ROCK_TOMB, MOVE_SANDSTORM}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [86] = { + [FRONTIER_MON_CARVANHA] = { .species = SPECIES_CARVANHA, .moves = {MOVE_BITE, MOVE_SCREECH, MOVE_SCARY_FACE, MOVE_SWAGGER}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIET }, - [87] = { + [FRONTIER_MON_CORPHISH] = { .species = SPECIES_CORPHISH, .moves = {MOVE_CRABHAMMER, MOVE_WATER_PULSE, MOVE_MUD_SLAP, MOVE_PROTECT}, .itemTableId = BATTLE_FRONTIER_ITEM_MYSTIC_WATER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_BRAVE }, - [88] = { + [FRONTIER_MON_CHARMANDER] = { .species = SPECIES_CHARMANDER, .moves = {MOVE_FIRE_SPIN, MOVE_METAL_CLAW, MOVE_SMOKESCREEN, MOVE_SCARY_FACE}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [89] = { + [FRONTIER_MON_CYNDAQUIL] = { .species = SPECIES_CYNDAQUIL, .moves = {MOVE_EMBER, MOVE_SWIFT, MOVE_QUICK_ATTACK, MOVE_SMOKESCREEN}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [90] = { + [FRONTIER_MON_ABRA] = { .species = SPECIES_ABRA, .moves = {MOVE_MIMIC, MOVE_METRONOME, MOVE_FLASH, MOVE_SEISMIC_TOSS}, .itemTableId = BATTLE_FRONTIER_ITEM_TWISTED_SPOON, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, .nature = NATURE_LONELY }, - [91] = { + [FRONTIER_MON_DODUO] = { .species = SPECIES_DODUO, .moves = {MOVE_FURY_ATTACK, MOVE_UPROAR, MOVE_MUD_SLAP, MOVE_FAINT_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_LIECHI_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, .nature = NATURE_LONELY }, - [92] = { + [FRONTIER_MON_GASTLY] = { .species = SPECIES_GASTLY, .moves = {MOVE_DREAM_EATER, MOVE_HYPNOSIS, MOVE_NIGHT_SHADE, MOVE_CONFUSE_RAY}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, .nature = NATURE_LONELY }, - [93] = { + [FRONTIER_MON_SWABLU] = { .species = SPECIES_SWABLU, .moves = {MOVE_TAKE_DOWN, MOVE_DREAM_EATER, MOVE_SING, MOVE_ATTRACT}, .itemTableId = BATTLE_FRONTIER_ITEM_MENTAL_HERB, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_LONELY }, - [94] = { + [FRONTIER_MON_TREECKO] = { .species = SPECIES_TREECKO, .moves = {MOVE_BULLET_SEED, MOVE_AERIAL_ACE, MOVE_QUICK_ATTACK, MOVE_DOUBLE_TEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_LONELY }, - [95] = { + [FRONTIER_MON_TORCHIC] = { .species = SPECIES_TORCHIC, .moves = {MOVE_FIRE_SPIN, MOVE_QUICK_ATTACK, MOVE_SAND_ATTACK, MOVE_DOUBLE_TEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_LONELY }, - [96] = { + [FRONTIER_MON_MUDKIP] = { .species = SPECIES_MUDKIP, .moves = {MOVE_WHIRLPOOL, MOVE_ENDEAVOR, MOVE_MUD_SPORT, MOVE_MUD_SLAP}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [97] = { + [FRONTIER_MON_SQUIRTLE] = { .species = SPECIES_SQUIRTLE, .moves = {MOVE_WATER_PULSE, MOVE_BITE, MOVE_WITHDRAW, MOVE_PROTECT}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [98] = { + [FRONTIER_MON_TOTODILE] = { .species = SPECIES_TOTODILE, .moves = {MOVE_SLASH, MOVE_WATER_PULSE, MOVE_SCREECH, MOVE_ICY_WIND}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [99] = { + [FRONTIER_MON_SLOWPOKE] = { .species = SPECIES_SLOWPOKE, .moves = {MOVE_CONFUSION, MOVE_DISABLE, MOVE_WATER_PULSE, MOVE_YAWN}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_BRAVE }, - [100] = { + [FRONTIER_MON_BULBASAUR] = { .species = SPECIES_BULBASAUR, .moves = {MOVE_RAZOR_LEAF, MOVE_SWEET_SCENT, MOVE_SLEEP_POWDER, MOVE_LIGHT_SCREEN}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [101] = { + [FRONTIER_MON_CHIKORITA] = { .species = SPECIES_CHIKORITA, .moves = {MOVE_SECRET_POWER, MOVE_BULLET_SEED, MOVE_MUD_SLAP, MOVE_LIGHT_SCREEN}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [102] = { + [FRONTIER_MON_ODDISH] = { .species = SPECIES_ODDISH, .moves = {MOVE_ACID, MOVE_STUN_SPORE, MOVE_SWEET_SCENT, MOVE_MOONLIGHT}, .itemTableId = BATTLE_FRONTIER_ITEM_PECHA_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [103] = { + [FRONTIER_MON_PSYDUCK] = { .species = SPECIES_PSYDUCK, .moves = {MOVE_CONFUSION, MOVE_FURY_SWIPES, MOVE_AERIAL_ACE, MOVE_DISABLE}, .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_HASTY }, - [104] = { + [FRONTIER_MON_CUBONE] = { .species = SPECIES_CUBONE, .moves = {MOVE_BONE_CLUB, MOVE_HEADBUTT, MOVE_BRICK_BREAK, MOVE_AERIAL_ACE}, .itemTableId = BATTLE_FRONTIER_ITEM_SOFT_SAND, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [105] = { + [FRONTIER_MON_GOLDEEN] = { .species = SPECIES_GOLDEEN, .moves = {MOVE_WATERFALL, MOVE_FURY_ATTACK, MOVE_AGILITY, MOVE_PSYBEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [106] = { + [FRONTIER_MON_NATU] = { .species = SPECIES_NATU, .moves = {MOVE_NIGHT_SHADE, MOVE_FUTURE_SIGHT, MOVE_CONFUSE_RAY, MOVE_FLASH}, .itemTableId = BATTLE_FRONTIER_ITEM_TWISTED_SPOON, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [107] = { + [FRONTIER_MON_CLEFAIRY] = { .species = SPECIES_CLEFAIRY, .moves = {MOVE_FOLLOW_ME, MOVE_RETURN, MOVE_ENCORE, MOVE_SING}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_LONELY }, - [108] = { + [FRONTIER_MON_MAGNEMITE] = { .species = SPECIES_MAGNEMITE, .moves = {MOVE_SHOCK_WAVE, MOVE_SUPERSONIC, MOVE_METAL_SOUND, MOVE_REFLECT}, .itemTableId = BATTLE_FRONTIER_ITEM_RAWST_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_GENTLE }, - [109] = { + [FRONTIER_MON_SEEL] = { .species = SPECIES_SEEL, .moves = {MOVE_AURORA_BEAM, MOVE_DIVE, MOVE_BODY_SLAM, MOVE_FAKE_OUT}, .itemTableId = BATTLE_FRONTIER_ITEM_ASPEAR_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [110] = { + [FRONTIER_MON_GRIMER] = { .species = SPECIES_GRIMER, .moves = {MOVE_SLUDGE, MOVE_ROCK_TOMB, MOVE_ACID_ARMOR, MOVE_MINIMIZE}, .itemTableId = BATTLE_FRONTIER_ITEM_PECHA_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [111] = { + [FRONTIER_MON_KRABBY] = { .species = SPECIES_KRABBY, .moves = {MOVE_CRABHAMMER, MOVE_MUD_SHOT, MOVE_FLAIL, MOVE_KNOCK_OFF}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [112] = { + [FRONTIER_MON_EXEGGCUTE] = { .species = SPECIES_EXEGGCUTE, .moves = {MOVE_CONFUSION, MOVE_ANCIENT_POWER, MOVE_LEECH_SEED, MOVE_LIGHT_SCREEN}, .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_NAUGHTY }, - [113] = { + [FRONTIER_MON_EEVEE] = { .species = SPECIES_EEVEE, .moves = {MOVE_CHARM, MOVE_ATTRACT, MOVE_FLAIL, MOVE_ENDURE}, .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [114] = { + [FRONTIER_MON_DROWZEE] = { .species = SPECIES_DROWZEE, .moves = {MOVE_CONFUSION, MOVE_HEADBUTT, MOVE_DISABLE, MOVE_BARRIER}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [115] = { + [FRONTIER_MON_VOLTORB] = { .species = SPECIES_VOLTORB, .moves = {MOVE_SPARK, MOVE_SCREECH, MOVE_ROLLOUT, MOVE_LIGHT_SCREEN}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [116] = { + [FRONTIER_MON_CHINCHOU] = { .species = SPECIES_CHINCHOU, .moves = {MOVE_SPARK, MOVE_DIVE, MOVE_CONFUSE_RAY, MOVE_TAKE_DOWN}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [117] = { + [FRONTIER_MON_TEDDIURSA] = { .species = SPECIES_TEDDIURSA, .moves = {MOVE_SECRET_POWER, MOVE_FAKE_TEARS, MOVE_FAINT_ATTACK, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [118] = { + [FRONTIER_MON_DELIBIRD] = { .species = SPECIES_DELIBIRD, .moves = {MOVE_PRESENT, MOVE_ICE_BALL, MOVE_AERIAL_ACE, MOVE_HAIL}, .itemTableId = BATTLE_FRONTIER_ITEM_NEVER_MELT_ICE, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [119] = { + [FRONTIER_MON_HOUNDOUR] = { .species = SPECIES_HOUNDOUR, .moves = {MOVE_CRUNCH, MOVE_EMBER, MOVE_ROAR, MOVE_PROTECT}, .itemTableId = BATTLE_FRONTIER_ITEM_CHARCOAL, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [120] = { + [FRONTIER_MON_PHANPY] = { .species = SPECIES_PHANPY, .moves = {MOVE_ROLLOUT, MOVE_DEFENSE_CURL, MOVE_ROCK_TOMB, MOVE_SANDSTORM}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_NAUGHTY }, - [121] = { + [FRONTIER_MON_SPOINK] = { .species = SPECIES_SPOINK, .moves = {MOVE_PSYWAVE, MOVE_BOUNCE, MOVE_MAGIC_COAT, MOVE_CONFUSE_RAY}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [122] = { + [FRONTIER_MON_ARON] = { .species = SPECIES_ARON, .moves = {MOVE_METAL_CLAW, MOVE_AERIAL_ACE, MOVE_METAL_SOUND, MOVE_ROAR}, .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [123] = { + [FRONTIER_MON_LUVDISC] = { .species = SPECIES_LUVDISC, .moves = {MOVE_SWEET_KISS, MOVE_ATTRACT, MOVE_DIVE, MOVE_RAIN_DANCE}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [124] = { + [FRONTIER_MON_TENTACOOL] = { .species = SPECIES_TENTACOOL, .moves = {MOVE_BUBBLE_BEAM, MOVE_ACID, MOVE_BARRIER, MOVE_WRAP}, .itemTableId = BATTLE_FRONTIER_ITEM_PECHA_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [125] = { + [FRONTIER_MON_CACNEA] = { .species = SPECIES_CACNEA, .moves = {MOVE_NEEDLE_ARM, MOVE_FAINT_ATTACK, MOVE_COTTON_SPORE, MOVE_SAND_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [126] = { + [FRONTIER_MON_UNOWN] = { .species = SPECIES_UNOWN, .moves = {MOVE_HIDDEN_POWER, MOVE_NONE, MOVE_NONE, MOVE_NONE}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [127] = { + [FRONTIER_MON_KOFFING] = { .species = SPECIES_KOFFING, .moves = {MOVE_SLUDGE, MOVE_SMOKESCREEN, MOVE_TORMENT, MOVE_HAZE}, .itemTableId = BATTLE_FRONTIER_ITEM_POISON_BARB, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [128] = { + [FRONTIER_MON_STARYU] = { .species = SPECIES_STARYU, .moves = {MOVE_BUBBLE_BEAM, MOVE_MINIMIZE, MOVE_SWIFT, MOVE_LIGHT_SCREEN}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [129] = { + [FRONTIER_MON_SKIPLOOM] = { .species = SPECIES_SKIPLOOM, .moves = {MOVE_MEGA_DRAIN, MOVE_CONFUSION, MOVE_COTTON_SPORE, MOVE_SYNTHESIS}, .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [130] = { + [FRONTIER_MON_NUZLEAF] = { .species = SPECIES_NUZLEAF, .moves = {MOVE_EXTRASENSORY, MOVE_FAKE_OUT, MOVE_RAZOR_WIND, MOVE_FAINT_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [131] = { + [FRONTIER_MON_LOMBRE] = { .species = SPECIES_LOMBRE, .moves = {MOVE_WATER_PULSE, MOVE_FAKE_OUT, MOVE_BRICK_BREAK, MOVE_ABSORB}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [132] = { + [FRONTIER_MON_VIBRAVA] = { .species = SPECIES_VIBRAVA, .moves = {MOVE_DRAGON_BREATH, MOVE_DIG, MOVE_SCREECH, MOVE_ROCK_TOMB}, .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [133] = { + [FRONTIER_MON_RHYHORN] = { .species = SPECIES_RHYHORN, .moves = {MOVE_ROCK_BLAST, MOVE_DIG, MOVE_SCARY_FACE, MOVE_ROAR}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [134] = { + [FRONTIER_MON_CLAMPERL] = { .species = SPECIES_CLAMPERL, .moves = {MOVE_DIVE, MOVE_TOXIC, MOVE_IRON_DEFENSE, MOVE_DOUBLE_TEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_DEEP_SEA_SCALE, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [135] = { + [FRONTIER_MON_PIDGEOTTO] = { .species = SPECIES_PIDGEOTTO, .moves = {MOVE_AERIAL_ACE, MOVE_QUICK_ATTACK, MOVE_FEATHER_DANCE, MOVE_SAND_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [136] = { + [FRONTIER_MON_GROWLITHE] = { .species = SPECIES_GROWLITHE, .moves = {MOVE_FLAME_WHEEL, MOVE_BITE, MOVE_ROAR, MOVE_AGILITY}, .itemTableId = BATTLE_FRONTIER_ITEM_RAWST_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [137] = { + [FRONTIER_MON_FARFETCHD] = { .species = SPECIES_FARFETCHD, .moves = {MOVE_SLASH, MOVE_KNOCK_OFF, MOVE_SWORDS_DANCE, MOVE_AGILITY}, .itemTableId = BATTLE_FRONTIER_ITEM_STICK, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [138] = { + [FRONTIER_MON_OMANYTE] = { .species = SPECIES_OMANYTE, .moves = {MOVE_MUD_SHOT, MOVE_WATER_GUN, MOVE_ANCIENT_POWER, MOVE_TICKLE}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [139] = { + [FRONTIER_MON_KABUTO] = { .species = SPECIES_KABUTO, .moves = {MOVE_MEGA_DRAIN, MOVE_ANCIENT_POWER, MOVE_SAND_ATTACK, MOVE_PROTECT}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [140] = { + [FRONTIER_MON_LILEEP] = { .species = SPECIES_LILEEP, .moves = {MOVE_ANCIENT_POWER, MOVE_ACID, MOVE_INGRAIN, MOVE_CONFUSE_RAY}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [141] = { + [FRONTIER_MON_ANORITH] = { .species = SPECIES_ANORITH, .moves = {MOVE_METAL_CLAW, MOVE_FURY_CUTTER, MOVE_ANCIENT_POWER, MOVE_WATER_GUN}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [142] = { + [FRONTIER_MON_AIPOM] = { .species = SPECIES_AIPOM, .moves = {MOVE_FURY_SWIPES, MOVE_SAND_ATTACK, MOVE_BATON_PASS, MOVE_AGILITY}, .itemTableId = BATTLE_FRONTIER_ITEM_SILK_SCARF, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [143] = { + [FRONTIER_MON_ELEKID] = { .species = SPECIES_ELEKID, .moves = {MOVE_THUNDER_PUNCH, MOVE_QUICK_ATTACK, MOVE_SWIFT, MOVE_LIGHT_SCREEN}, .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_NAIVE }, - [144] = { + [FRONTIER_MON_LOUDRED] = { .species = SPECIES_LOUDRED, .moves = {MOVE_STOMP, MOVE_HOWL, MOVE_ASTONISH, MOVE_SUPERSONIC}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [145] = { + [FRONTIER_MON_SPINDA] = { .species = SPECIES_SPINDA, .moves = {MOVE_DIZZY_PUNCH, MOVE_TEETER_DANCE, MOVE_PSYBEAM, MOVE_FAINT_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [146] = { + [FRONTIER_MON_NIDORINA] = { .species = SPECIES_NIDORINA, .moves = {MOVE_DOUBLE_KICK, MOVE_BITE, MOVE_AERIAL_ACE, MOVE_FLATTER}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [147] = { + [FRONTIER_MON_NIDORINO] = { .species = SPECIES_NIDORINO, .moves = {MOVE_DOUBLE_KICK, MOVE_WATER_PULSE, MOVE_MUD_SLAP, MOVE_FLATTER}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [148] = { + [FRONTIER_MON_FLAAFFY] = { .species = SPECIES_FLAAFFY, .moves = {MOVE_SHOCK_WAVE, MOVE_THUNDER_WAVE, MOVE_COTTON_SPORE, MOVE_LIGHT_SCREEN}, .itemTableId = BATTLE_FRONTIER_ITEM_MAGNET, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_MILD }, - [149] = { + [FRONTIER_MON_MAGBY] = { .species = SPECIES_MAGBY, .moves = {MOVE_FIRE_PUNCH, MOVE_SMOKESCREEN, MOVE_CONFUSE_RAY, MOVE_SMOG}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [150] = { + [FRONTIER_MON_NOSEPASS] = { .species = SPECIES_NOSEPASS, .moves = {MOVE_ROCK_SLIDE, MOVE_SHOCK_WAVE, MOVE_THUNDER_WAVE, MOVE_SANDSTORM}, .itemTableId = BATTLE_FRONTIER_ITEM_HARD_STONE, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_SASSY }, - [151] = { + [FRONTIER_MON_CORSOLA] = { .species = SPECIES_CORSOLA, .moves = {MOVE_BUBBLE_BEAM, MOVE_MIRROR_COAT, MOVE_ATTRACT, MOVE_ANCIENT_POWER}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_IMPISH }, - [152] = { + [FRONTIER_MON_MAWILE] = { .species = SPECIES_MAWILE, .moves = {MOVE_CRUNCH, MOVE_FAKE_TEARS, MOVE_IRON_DEFENSE, MOVE_BATON_PASS}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [153] = { + [FRONTIER_MON_BUTTERFREE] = { .species = SPECIES_BUTTERFREE, .moves = {MOVE_SILVER_WIND, MOVE_PSYBEAM, MOVE_TOXIC, MOVE_WHIRLWIND}, .itemTableId = BATTLE_FRONTIER_ITEM_PECHA_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [154] = { + [FRONTIER_MON_BEEDRILL] = { .species = SPECIES_BEEDRILL, .moves = {MOVE_TWINEEDLE, MOVE_PURSUIT, MOVE_ENDEAVOR, MOVE_AGILITY}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_NAUGHTY }, - [155] = { + [FRONTIER_MON_POLIWHIRL] = { .species = SPECIES_POLIWHIRL, .moves = {MOVE_WATER_PULSE, MOVE_DOUBLE_SLAP, MOVE_ICY_WIND, MOVE_RAIN_DANCE}, .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [156] = { + [FRONTIER_MON_ONIX] = { .species = SPECIES_ONIX, .moves = {MOVE_ROCK_SLIDE, MOVE_BIND, MOVE_DRAGON_BREATH, MOVE_SANDSTORM}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [157] = { + [FRONTIER_MON_BEAUTIFLY] = { .species = SPECIES_BEAUTIFLY, .moves = {MOVE_SILVER_WIND, MOVE_MEGA_DRAIN, MOVE_ATTRACT, MOVE_WHIRLWIND}, .itemTableId = BATTLE_FRONTIER_ITEM_MENTAL_HERB, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [158] = { + [FRONTIER_MON_DUSTOX] = { .species = SPECIES_DUSTOX, .moves = {MOVE_SILVER_WIND, MOVE_TOXIC, MOVE_PSYBEAM, MOVE_WHIRLWIND}, .itemTableId = BATTLE_FRONTIER_ITEM_SILVER_POWDER, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [159] = { + [FRONTIER_MON_LEDIAN] = { .species = SPECIES_LEDIAN, .moves = {MOVE_COMET_PUNCH, MOVE_BATON_PASS, MOVE_SWORDS_DANCE, MOVE_AGILITY}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_BASHFUL }, - [160] = { + [FRONTIER_MON_ARIADOS] = { .species = SPECIES_ARIADOS, .moves = {MOVE_SIGNAL_BEAM, MOVE_SPIDER_WEB, MOVE_NIGHT_SHADE, MOVE_TOXIC}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_SERIOUS }, - [161] = { + [FRONTIER_MON_YANMA] = { .species = SPECIES_YANMA, .moves = {MOVE_SIGNAL_BEAM, MOVE_AERIAL_ACE, MOVE_DOUBLE_TEAM, MOVE_DETECT}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_RELAXED }, - [162] = { + [FRONTIER_MON_DELCATTY_1] = { .species = SPECIES_DELCATTY, .moves = {MOVE_SECRET_POWER, MOVE_FAINT_ATTACK, MOVE_DOUBLE_TEAM, MOVE_HEAL_BELL}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_LONELY }, - [163] = { + [FRONTIER_MON_SABLEYE_1] = { .species = SPECIES_SABLEYE, .moves = {MOVE_FAINT_ATTACK, MOVE_CONFUSE_RAY, MOVE_KNOCK_OFF, MOVE_FAKE_OUT}, .itemTableId = BATTLE_FRONTIER_ITEM_BLACK_GLASSES, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_LONELY }, - [164] = { + [FRONTIER_MON_LICKITUNG_1] = { .species = SPECIES_LICKITUNG, .moves = {MOVE_SLAM, MOVE_BRICK_BREAK, MOVE_LICK, MOVE_MUD_SLAP}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [165] = { + [FRONTIER_MON_WEEPINBELL_1] = { .species = SPECIES_WEEPINBELL, .moves = {MOVE_RAZOR_LEAF, MOVE_ACID, MOVE_WRAP, MOVE_SWEET_SCENT}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIET }, - [166] = { + [FRONTIER_MON_GRAVELER_1] = { .species = SPECIES_GRAVELER, .moves = {MOVE_MAGNITUDE, MOVE_ROCK_THROW, MOVE_DEFENSE_CURL, MOVE_BRICK_BREAK}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [167] = { + [FRONTIER_MON_GLOOM_1] = { .species = SPECIES_GLOOM, .moves = {MOVE_PETAL_DANCE, MOVE_ACID, MOVE_STUN_SPORE, MOVE_MOONLIGHT}, .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [168] = { + [FRONTIER_MON_PORYGON_1] = { .species = SPECIES_PORYGON, .moves = {MOVE_PSYBEAM, MOVE_ICY_WIND, MOVE_RECYCLE, MOVE_AGILITY}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [169] = { + [FRONTIER_MON_KADABRA_1] = { .species = SPECIES_KADABRA, .moves = {MOVE_CONFUSION, MOVE_ROLE_PLAY, MOVE_FUTURE_SIGHT, MOVE_DISABLE}, .itemTableId = BATTLE_FRONTIER_ITEM_TWISTED_SPOON, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_IMPISH }, - [170] = { + [FRONTIER_MON_WAILMER_1] = { .species = SPECIES_WAILMER, .moves = {MOVE_WHIRLPOOL, MOVE_ROAR, MOVE_DEFENSE_CURL, MOVE_ROLLOUT}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_DOCILE }, - [171] = { + [FRONTIER_MON_ROSELIA_1] = { .species = SPECIES_ROSELIA, .moves = {MOVE_MAGICAL_LEAF, MOVE_TOXIC, MOVE_GRASS_WHISTLE, MOVE_COTTON_SPORE}, .itemTableId = BATTLE_FRONTIER_ITEM_PECHA_BERRY, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [172] = { + [FRONTIER_MON_VOLBEAT_1] = { .species = SPECIES_VOLBEAT, .moves = {MOVE_SILVER_WIND, MOVE_CONFUSE_RAY, MOVE_QUICK_ATTACK, MOVE_HELPING_HAND}, .itemTableId = BATTLE_FRONTIER_ITEM_LIECHI_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_QUIRKY }, - [173] = { + [FRONTIER_MON_ILLUMISE_1] = { .species = SPECIES_ILLUMISE, .moves = {MOVE_SILVER_WIND, MOVE_WISH, MOVE_QUICK_ATTACK, MOVE_HELPING_HAND}, .itemTableId = BATTLE_FRONTIER_ITEM_LIECHI_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [174] = { + [FRONTIER_MON_IVYSAUR_1] = { .species = SPECIES_IVYSAUR, .moves = {MOVE_PETAL_DANCE, MOVE_GROWTH, MOVE_SWEET_SCENT, MOVE_FURY_CUTTER}, .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_GENTLE }, - [175] = { + [FRONTIER_MON_CHARMELEON_1] = { .species = SPECIES_CHARMELEON, .moves = {MOVE_SLASH, MOVE_FIRE_SPIN, MOVE_SWORDS_DANCE, MOVE_AERIAL_ACE}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_NAUGHTY }, - [176] = { + [FRONTIER_MON_WARTORTLE_1] = { .species = SPECIES_WARTORTLE, .moves = {MOVE_WATER_PULSE, MOVE_BITE, MOVE_MUD_SLAP, MOVE_YAWN}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [177] = { + [FRONTIER_MON_PARASECT_1] = { .species = SPECIES_PARASECT, .moves = {MOVE_SLASH, MOVE_PSYBEAM, MOVE_STUN_SPORE, MOVE_FLASH}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_RASH }, - [178] = { + [FRONTIER_MON_MACHOKE_1] = { .species = SPECIES_MACHOKE, .moves = {MOVE_LOW_KICK, MOVE_ROCK_TOMB, MOVE_FORESIGHT, MOVE_SCARY_FACE}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [179] = { + [FRONTIER_MON_HAUNTER_1] = { .species = SPECIES_HAUNTER, .moves = {MOVE_SHADOW_PUNCH, MOVE_CONFUSE_RAY, MOVE_SPITE, MOVE_GRUDGE}, .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_RASH }, - [180] = { + [FRONTIER_MON_BAYLEEF_1] = { .species = SPECIES_BAYLEEF, .moves = {MOVE_RAZOR_LEAF, MOVE_TOXIC, MOVE_SAFEGUARD, MOVE_LIGHT_SCREEN}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [181] = { + [FRONTIER_MON_QUILAVA_1] = { .species = SPECIES_QUILAVA, .moves = {MOVE_FLAME_WHEEL, MOVE_FURY_SWIPES, MOVE_SWIFT, MOVE_SMOKESCREEN}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [182] = { + [FRONTIER_MON_CROCONAW_1] = { .species = SPECIES_CROCONAW, .moves = {MOVE_SLASH, MOVE_WATER_PULSE, MOVE_BITE, MOVE_SCARY_FACE}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [183] = { + [FRONTIER_MON_TOGETIC_1] = { .species = SPECIES_TOGETIC, .moves = {MOVE_AERIAL_ACE, MOVE_MAGICAL_LEAF, MOVE_WISH, MOVE_FOLLOW_ME}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [184] = { + [FRONTIER_MON_MURKROW_1] = { .species = SPECIES_MURKROW, .moves = {MOVE_FAINT_ATTACK, MOVE_FLY, MOVE_TORMENT, MOVE_TAUNT}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [185] = { + [FRONTIER_MON_WOBBUFFET_1] = { .species = SPECIES_WOBBUFFET, .moves = {MOVE_COUNTER, MOVE_MIRROR_COAT, MOVE_CHARM, MOVE_SAFEGUARD}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_CAREFUL }, - [186] = { + [FRONTIER_MON_PLUSLE_1] = { .species = SPECIES_PLUSLE, .moves = {MOVE_SPARK, MOVE_FAKE_TEARS, MOVE_QUICK_ATTACK, MOVE_HELPING_HAND}, .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [187] = { + [FRONTIER_MON_MINUN_1] = { .species = SPECIES_MINUN, .moves = {MOVE_SPARK, MOVE_CHARM, MOVE_ENCORE, MOVE_HELPING_HAND}, .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [188] = { + [FRONTIER_MON_GROVYLE_1] = { .species = SPECIES_GROVYLE, .moves = {MOVE_FURY_CUTTER, MOVE_ENDEAVOR, MOVE_BRICK_BREAK, MOVE_DOUBLE_TEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [189] = { + [FRONTIER_MON_COMBUSKEN_1] = { .species = SPECIES_COMBUSKEN, .moves = {MOVE_EMBER, MOVE_DOUBLE_KICK, MOVE_QUICK_ATTACK, MOVE_SAND_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [190] = { + [FRONTIER_MON_MARSHTOMP_1] = { .species = SPECIES_MARSHTOMP, .moves = {MOVE_MUD_SHOT, MOVE_WATER_GUN, MOVE_ROCK_TOMB, MOVE_MUD_SLAP}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [191] = { + [FRONTIER_MON_PONYTA_1] = { .species = SPECIES_PONYTA, .moves = {MOVE_FIRE_SPIN, MOVE_BOUNCE, MOVE_QUICK_ATTACK, MOVE_TAIL_WHIP}, .itemTableId = BATTLE_FRONTIER_ITEM_RAWST_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [192] = { + [FRONTIER_MON_AZUMARILL_1] = { .species = SPECIES_AZUMARILL, .moves = {MOVE_BUBBLE_BEAM, MOVE_FACADE, MOVE_DIG, MOVE_PROTECT}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_DOCILE }, - [193] = { + [FRONTIER_MON_SUDOWOODO_1] = { .species = SPECIES_SUDOWOODO, .moves = {MOVE_ROCK_SLIDE, MOVE_FAINT_ATTACK, MOVE_SANDSTORM, MOVE_BLOCK}, .itemTableId = BATTLE_FRONTIER_ITEM_HARD_STONE, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [194] = { + [FRONTIER_MON_MAGCARGO_1] = { .species = SPECIES_MAGCARGO, .moves = {MOVE_ROCK_SLIDE, MOVE_EMBER, MOVE_ACID_ARMOR, MOVE_SANDSTORM}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_GENTLE }, - [195] = { + [FRONTIER_MON_PUPITAR_1] = { .species = SPECIES_PUPITAR, .moves = {MOVE_DIG, MOVE_BITE, MOVE_SCARY_FACE, MOVE_SANDSTORM}, .itemTableId = BATTLE_FRONTIER_ITEM_SOFT_SAND, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [196] = { + [FRONTIER_MON_SEALEO_1] = { .species = SPECIES_SEALEO, .moves = {MOVE_ICE_BALL, MOVE_HAIL, MOVE_SNORE, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [197] = { + [FRONTIER_MON_RATICATE_1] = { .species = SPECIES_RATICATE, .moves = {MOVE_ENDEAVOR, MOVE_PURSUIT, MOVE_SCARY_FACE, MOVE_QUICK_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_SILK_SCARF, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_NAIVE }, - [198] = { + [FRONTIER_MON_MASQUERAIN_1] = { .species = SPECIES_MASQUERAIN, .moves = {MOVE_SILVER_WIND, MOVE_AERIAL_ACE, MOVE_ICY_WIND, MOVE_STUN_SPORE}, .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_RELAXED }, - [199] = { + [FRONTIER_MON_FURRET_1] = { .species = SPECIES_FURRET, .moves = {MOVE_SLAM, MOVE_PROTECT, MOVE_HELPING_HAND, MOVE_FOLLOW_ME}, .itemTableId = BATTLE_FRONTIER_ITEM_LIECHI_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_SERIOUS }, - [200] = { + [FRONTIER_MON_DUNSPARCE_1] = { .species = SPECIES_DUNSPARCE, .moves = {MOVE_HEADBUTT, MOVE_GLARE, MOVE_DEFENSE_CURL, MOVE_ROLLOUT}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [201] = { + [FRONTIER_MON_DRAGONAIR_1] = { .species = SPECIES_DRAGONAIR, .moves = {MOVE_DRAGON_BREATH, MOVE_LEER, MOVE_WRAP, MOVE_SAFEGUARD}, .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [202] = { + [FRONTIER_MON_MIGHTYENA_1] = { .species = SPECIES_MIGHTYENA, .moves = {MOVE_BITE, MOVE_POISON_FANG, MOVE_TAUNT, MOVE_ROAR}, .itemTableId = BATTLE_FRONTIER_ITEM_MENTAL_HERB, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_TIMID }, - [203] = { + [FRONTIER_MON_LINOONE_1] = { .species = SPECIES_LINOONE, .moves = {MOVE_SECRET_POWER, MOVE_SAND_ATTACK, MOVE_COVET, MOVE_TICKLE}, .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [204] = { + [FRONTIER_MON_CASTFORM_1] = { .species = SPECIES_CASTFORM, .moves = {MOVE_EMBER, MOVE_WATER_PULSE, MOVE_SHOCK_WAVE, MOVE_ICY_WIND}, .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_HASTY }, - [205] = { + [FRONTIER_MON_SHELGON_1] = { .species = SPECIES_SHELGON, .moves = {MOVE_HEADBUTT, MOVE_DRAGON_BREATH, MOVE_PROTECT, MOVE_SCARY_FACE}, .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [206] = { + [FRONTIER_MON_METANG_1] = { .species = SPECIES_METANG, .moves = {MOVE_METAL_CLAW, MOVE_CONFUSION, MOVE_PURSUIT, MOVE_SCARY_FACE}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [207] = { + [FRONTIER_MON_WIGGLYTUFF_1] = { .species = SPECIES_WIGGLYTUFF, .moves = {MOVE_SING, MOVE_DISABLE, MOVE_WISH, MOVE_SECRET_POWER}, .itemTableId = BATTLE_FRONTIER_ITEM_SILK_SCARF, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_RELAXED }, - [208] = { + [FRONTIER_MON_SUNFLORA_1] = { .species = SPECIES_SUNFLORA, .moves = {MOVE_PETAL_DANCE, MOVE_INGRAIN, MOVE_LEECH_SEED, MOVE_LIGHT_SCREEN}, .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [209] = { + [FRONTIER_MON_CHIMECHO_1] = { .species = SPECIES_CHIMECHO, .moves = {MOVE_PSYWAVE, MOVE_TAKE_DOWN, MOVE_HEAL_BELL, MOVE_SAFEGUARD}, .itemTableId = BATTLE_FRONTIER_ITEM_TWISTED_SPOON, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_SASSY }, - [210] = { + [FRONTIER_MON_GLIGAR_1] = { .species = SPECIES_GLIGAR, .moves = {MOVE_METAL_CLAW, MOVE_DIG, MOVE_AERIAL_ACE, MOVE_QUICK_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_HASTY }, - [211] = { + [FRONTIER_MON_QWILFISH_1] = { .species = SPECIES_QWILFISH, .moves = {MOVE_BUBBLE_BEAM, MOVE_PIN_MISSILE, MOVE_SPIKES, MOVE_MINIMIZE}, .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK, .nature = NATURE_IMPISH }, - [212] = { + [FRONTIER_MON_SNEASEL_1] = { .species = SPECIES_SNEASEL, .moves = {MOVE_FAINT_ATTACK, MOVE_FAKE_OUT, MOVE_ICY_WIND, MOVE_QUICK_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [213] = { + [FRONTIER_MON_PELIPPER_1] = { .species = SPECIES_PELIPPER, .moves = {MOVE_WATER_PULSE, MOVE_AERIAL_ACE, MOVE_STOCKPILE, MOVE_SWALLOW}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_QUIET }, - [214] = { + [FRONTIER_MON_SWELLOW_1] = { .species = SPECIES_SWELLOW, .moves = {MOVE_FLY, MOVE_ENDEAVOR, MOVE_FACADE, MOVE_QUICK_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [215] = { + [FRONTIER_MON_LAIRON_1] = { .species = SPECIES_LAIRON, .moves = {MOVE_METAL_CLAW, MOVE_ROCK_TOMB, MOVE_IRON_DEFENSE, MOVE_PROTECT}, .itemTableId = BATTLE_FRONTIER_ITEM_METAL_COAT, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_SASSY }, - [216] = { + [FRONTIER_MON_TANGELA_1] = { .species = SPECIES_TANGELA, .moves = {MOVE_MEGA_DRAIN, MOVE_SLAM, MOVE_TOXIC, MOVE_BIND}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [217] = { + [FRONTIER_MON_ARBOK_1] = { .species = SPECIES_ARBOK, .moves = {MOVE_POISON_FANG, MOVE_DIG, MOVE_BITE, MOVE_GLARE}, .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [218] = { + [FRONTIER_MON_PERSIAN_1] = { .species = SPECIES_PERSIAN, .moves = {MOVE_FAKE_OUT, MOVE_SLASH, MOVE_TORMENT, MOVE_SWAGGER}, .itemTableId = BATTLE_FRONTIER_ITEM_SILK_SCARF, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [219] = { + [FRONTIER_MON_SEADRA_1] = { .species = SPECIES_SEADRA, .moves = {MOVE_AURORA_BEAM, MOVE_SMOKESCREEN, MOVE_WATER_GUN, MOVE_RAIN_DANCE}, .itemTableId = BATTLE_FRONTIER_ITEM_MYSTIC_WATER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_SASSY }, - [220] = { + [FRONTIER_MON_KECLEON_1] = { .species = SPECIES_KECLEON, .moves = {MOVE_SECRET_POWER, MOVE_PSYBEAM, MOVE_MAGIC_COAT, MOVE_SEISMIC_TOSS}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_NAIVE }, - [221] = { + [FRONTIER_MON_VIGOROTH_1] = { .species = SPECIES_VIGOROTH, .moves = {MOVE_SLASH, MOVE_COUNTER, MOVE_ENCORE, MOVE_UPROAR}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_LONELY }, - [222] = { + [FRONTIER_MON_LUNATONE_1] = { .species = SPECIES_LUNATONE, .moves = {MOVE_CONFUSION, MOVE_COSMIC_POWER, MOVE_LIGHT_SCREEN, MOVE_SANDSTORM}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_QUIET }, - [223] = { + [FRONTIER_MON_SOLROCK_1] = { .species = SPECIES_SOLROCK, .moves = {MOVE_CONFUSION, MOVE_FIRE_SPIN, MOVE_LIGHT_SCREEN, MOVE_SANDSTORM}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_QUIET }, - [224] = { + [FRONTIER_MON_NOCTOWL_1] = { .species = SPECIES_NOCTOWL, .moves = {MOVE_CONFUSION, MOVE_AERIAL_ACE, MOVE_FAINT_ATTACK, MOVE_REFLECT}, .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [225] = { + [FRONTIER_MON_SANDSLASH_1] = { .species = SPECIES_SANDSLASH, .moves = {MOVE_CRUSH_CLAW, MOVE_ROCK_SLIDE, MOVE_SWIFT, MOVE_SANDSTORM}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [226] = { + [FRONTIER_MON_VENOMOTH_1] = { .species = SPECIES_VENOMOTH, .moves = {MOVE_SILVER_WIND, MOVE_PSYBEAM, MOVE_SLEEP_POWDER, MOVE_SKILL_SWAP}, .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [227] = { + [FRONTIER_MON_CHANSEY_1] = { .species = SPECIES_CHANSEY, .moves = {MOVE_METRONOME, MOVE_REFRESH, MOVE_DEFENSE_CURL, MOVE_MINIMIZE}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_RELAXED }, - [228] = { + [FRONTIER_MON_SEAKING_1] = { .species = SPECIES_SEAKING, .moves = {MOVE_WATER_PULSE, MOVE_PSYBEAM, MOVE_SWIFT, MOVE_AGILITY}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [229] = { + [FRONTIER_MON_JUMPLUFF_1] = { .species = SPECIES_JUMPLUFF, .moves = {MOVE_AERIAL_ACE, MOVE_SWAGGER, MOVE_PSYCH_UP, MOVE_SYNTHESIS}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [230] = { + [FRONTIER_MON_PILOSWINE_1] = { .species = SPECIES_PILOSWINE, .moves = {MOVE_DIG, MOVE_ANCIENT_POWER, MOVE_HAIL, MOVE_LIGHT_SCREEN}, .itemTableId = BATTLE_FRONTIER_ITEM_SOFT_SAND, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [231] = { + [FRONTIER_MON_GOLBAT_1] = { .species = SPECIES_GOLBAT, .moves = {MOVE_AIR_CUTTER, MOVE_CONFUSE_RAY, MOVE_TOXIC, MOVE_STEEL_WING}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [232] = { + [FRONTIER_MON_PRIMEAPE_1] = { .species = SPECIES_PRIMEAPE, .moves = {MOVE_KARATE_CHOP, MOVE_COUNTER, MOVE_SWAGGER, MOVE_SCREECH}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [233] = { + [FRONTIER_MON_HITMONLEE_1] = { .species = SPECIES_HITMONLEE, .moves = {MOVE_ROLLING_KICK, MOVE_BRICK_BREAK, MOVE_FOCUS_ENERGY, MOVE_FACADE}, .itemTableId = BATTLE_FRONTIER_ITEM_BLACK_BELT, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [234] = { + [FRONTIER_MON_HITMONCHAN_1] = { .species = SPECIES_HITMONCHAN, .moves = {MOVE_MACH_PUNCH, MOVE_SKY_UPPERCUT, MOVE_DETECT, MOVE_COUNTER}, .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [235] = { + [FRONTIER_MON_GIRAFARIG_1] = { .species = SPECIES_GIRAFARIG, .moves = {MOVE_PSYBEAM, MOVE_STOMP, MOVE_WISH, MOVE_SKILL_SWAP}, .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIET }, - [236] = { + [FRONTIER_MON_HITMONTOP_1] = { .species = SPECIES_HITMONTOP, .moves = {MOVE_TRIPLE_KICK, MOVE_DIG, MOVE_MACH_PUNCH, MOVE_QUICK_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_LIECHI_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [237] = { + [FRONTIER_MON_BANETTE_1] = { .species = SPECIES_BANETTE, .moves = {MOVE_NIGHT_SHADE, MOVE_WILL_O_WISP, MOVE_SPITE, MOVE_KNOCK_OFF}, .itemTableId = BATTLE_FRONTIER_ITEM_RAWST_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_SASSY }, - [238] = { + [FRONTIER_MON_NINJASK_1] = { .species = SPECIES_NINJASK, .moves = {MOVE_BATON_PASS, MOVE_SWORDS_DANCE, MOVE_ENDURE, MOVE_DIG}, .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_MILD }, - [239] = { + [FRONTIER_MON_SEVIPER_1] = { .species = SPECIES_SEVIPER, .moves = {MOVE_POISON_TAIL, MOVE_BITE, MOVE_GLARE, MOVE_SCREECH}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [240] = { + [FRONTIER_MON_ZANGOOSE_1] = { .species = SPECIES_ZANGOOSE, .moves = {MOVE_SLASH, MOVE_DOUBLE_KICK, MOVE_ROAR, MOVE_QUICK_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [241] = { + [FRONTIER_MON_CAMERUPT_1] = { .species = SPECIES_CAMERUPT, .moves = {MOVE_MAGNITUDE, MOVE_PROTECT, MOVE_SANDSTORM, MOVE_ROCK_SLIDE}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [242] = { + [FRONTIER_MON_SHARPEDO_1] = { .species = SPECIES_SHARPEDO, .moves = {MOVE_SLASH, MOVE_BITE, MOVE_WATER_PULSE, MOVE_SCARY_FACE}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [243] = { + [FRONTIER_MON_TROPIUS_1] = { .species = SPECIES_TROPIUS, .moves = {MOVE_MAGICAL_LEAF, MOVE_WHIRLWIND, MOVE_AERIAL_ACE, MOVE_STEEL_WING}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [244] = { + [FRONTIER_MON_MAGNETON_1] = { .species = SPECIES_MAGNETON, .moves = {MOVE_SHOCK_WAVE, MOVE_SONIC_BOOM, MOVE_THUNDER_WAVE, MOVE_SUPERSONIC}, .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_LONELY }, - [245] = { + [FRONTIER_MON_MANTINE_1] = { .species = SPECIES_MANTINE, .moves = {MOVE_BUBBLE_BEAM, MOVE_AERIAL_ACE, MOVE_RAIN_DANCE, MOVE_ICY_WIND}, .itemTableId = BATTLE_FRONTIER_ITEM_MYSTIC_WATER, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [246] = { + [FRONTIER_MON_STANTLER_1] = { .species = SPECIES_STANTLER, .moves = {MOVE_EXTRASENSORY, MOVE_CONFUSE_RAY, MOVE_STOMP, MOVE_SAND_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_TWISTED_SPOON, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_GENTLE }, - [247] = { + [FRONTIER_MON_ABSOL_1] = { .species = SPECIES_ABSOL, .moves = {MOVE_BITE, MOVE_RAZOR_WIND, MOVE_FUTURE_SIGHT, MOVE_QUICK_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [248] = { + [FRONTIER_MON_SWALOT_1] = { .species = SPECIES_SWALOT, .moves = {MOVE_STOCKPILE, MOVE_SWALLOW, MOVE_SPIT_UP, MOVE_SLUDGE}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_QUIRKY }, - [249] = { + [FRONTIER_MON_CRAWDAUNT_1] = { .species = SPECIES_CRAWDAUNT, .moves = {MOVE_BUBBLE_BEAM, MOVE_VICE_GRIP, MOVE_KNOCK_OFF, MOVE_PROTECT}, .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [250] = { + [FRONTIER_MON_PIDGEOT_1] = { .species = SPECIES_PIDGEOT, .moves = {MOVE_AERIAL_ACE, MOVE_FEATHER_DANCE, MOVE_MUD_SLAP, MOVE_FAINT_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_SHARP_BEAK, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [251] = { + [FRONTIER_MON_GRUMPIG_1] = { .species = SPECIES_GRUMPIG, .moves = {MOVE_PSYBEAM, MOVE_CONFUSE_RAY, MOVE_FUTURE_SIGHT, MOVE_MAGIC_COAT}, .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [252] = { + [FRONTIER_MON_TORKOAL_1] = { .species = SPECIES_TORKOAL, .moves = {MOVE_EMBER, MOVE_FIRE_SPIN, MOVE_SMOKESCREEN, MOVE_AMNESIA}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [253] = { + [FRONTIER_MON_KINGLER_1] = { .species = SPECIES_KINGLER, .moves = {MOVE_CRABHAMMER, MOVE_METAL_CLAW, MOVE_MUD_SHOT, MOVE_PROTECT}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [254] = { + [FRONTIER_MON_CACTURNE_1] = { .species = SPECIES_CACTURNE, .moves = {MOVE_NEEDLE_ARM, MOVE_FAINT_ATTACK, MOVE_ACID, MOVE_MEGA_PUNCH}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, .nature = NATURE_HASTY }, - [255] = { + [FRONTIER_MON_BELLOSSOM_1] = { .species = SPECIES_BELLOSSOM, .moves = {MOVE_PETAL_DANCE, MOVE_SAFEGUARD, MOVE_SUNNY_DAY, MOVE_SYNTHESIS}, .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIET }, - [256] = { + [FRONTIER_MON_OCTILLERY_1] = { .species = SPECIES_OCTILLERY, .moves = {MOVE_OCTAZOOKA, MOVE_AURORA_BEAM, MOVE_PSYBEAM, MOVE_ROCK_BLAST}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [257] = { + [FRONTIER_MON_HUNTAIL_1] = { .species = SPECIES_HUNTAIL, .moves = {MOVE_WHIRLPOOL, MOVE_SCARY_FACE, MOVE_MUD_SLAP, MOVE_BITE}, .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIET }, - [258] = { + [FRONTIER_MON_GOREBYSS_1] = { .species = SPECIES_GOREBYSS, .moves = {MOVE_WHIRLPOOL, MOVE_AMNESIA, MOVE_ICY_WIND, MOVE_CONFUSION}, .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_BRAVE }, - [259] = { + [FRONTIER_MON_RELICANTH_1] = { .species = SPECIES_RELICANTH, .moves = {MOVE_ANCIENT_POWER, MOVE_WATER_PULSE, MOVE_HARDEN, MOVE_AMNESIA}, .itemTableId = BATTLE_FRONTIER_ITEM_LIECHI_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_SASSY }, - [260] = { + [FRONTIER_MON_OMASTAR_1] = { .species = SPECIES_OMASTAR, .moves = {MOVE_BUBBLE_BEAM, MOVE_SPIKE_CANNON, MOVE_TICKLE, MOVE_ANCIENT_POWER}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [261] = { + [FRONTIER_MON_KABUTOPS_1] = { .species = SPECIES_KABUTOPS, .moves = {MOVE_SLASH, MOVE_DIG, MOVE_FURY_CUTTER, MOVE_KNOCK_OFF}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [262] = { + [FRONTIER_MON_POLIWRATH_1] = { .species = SPECIES_POLIWRATH, .moves = {MOVE_SUBMISSION, MOVE_DIG, MOVE_ROCK_TOMB, MOVE_BUBBLE_BEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_BLACK_BELT, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [263] = { + [FRONTIER_MON_SCYTHER_1] = { .species = SPECIES_SCYTHER, .moves = {MOVE_FURY_CUTTER, MOVE_AERIAL_ACE, MOVE_LIGHT_SCREEN, MOVE_DOUBLE_TEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_LIECHI_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [264] = { + [FRONTIER_MON_PINSIR_1] = { .species = SPECIES_PINSIR, .moves = {MOVE_SUBMISSION, MOVE_FOCUS_ENERGY, MOVE_SWORDS_DANCE, MOVE_REVENGE}, .itemTableId = BATTLE_FRONTIER_ITEM_BLACK_BELT, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_NAUGHTY }, - [265] = { + [FRONTIER_MON_POLITOED_1] = { .species = SPECIES_POLITOED, .moves = {MOVE_DIVE, MOVE_DIG, MOVE_HYPNOSIS, MOVE_SWAGGER}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_RELAXED }, - [266] = { + [FRONTIER_MON_CLOYSTER_1] = { .species = SPECIES_CLOYSTER, .moves = {MOVE_AURORA_BEAM, MOVE_SPIKE_CANNON, MOVE_SUPERSONIC, MOVE_PROTECT}, .itemTableId = BATTLE_FRONTIER_ITEM_NEVER_MELT_ICE, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_SASSY }, - [267] = { + [FRONTIER_MON_DELCATTY_2] = { .species = SPECIES_DELCATTY, .moves = {MOVE_FAKE_TEARS, MOVE_SING, MOVE_THUNDERBOLT, MOVE_ICE_BEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [268] = { + [FRONTIER_MON_SABLEYE_2] = { .species = SPECIES_SABLEYE, .moves = {MOVE_SHADOW_BALL, MOVE_FAINT_ATTACK, MOVE_CONFUSE_RAY, MOVE_RECOVER}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [269] = { + [FRONTIER_MON_LICKITUNG_2] = { .species = SPECIES_LICKITUNG, .moves = {MOVE_EARTHQUAKE, MOVE_BODY_SLAM, MOVE_SHADOW_BALL, MOVE_ROCK_SLIDE}, .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [270] = { + [FRONTIER_MON_WEEPINBELL_2] = { .species = SPECIES_WEEPINBELL, .moves = {MOVE_SLUDGE_BOMB, MOVE_RAZOR_LEAF, MOVE_SLEEP_POWDER, MOVE_REFLECT}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_QUIRKY }, - [271] = { + [FRONTIER_MON_GRAVELER_2] = { .species = SPECIES_GRAVELER, .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_BRICK_BREAK, MOVE_COUNTER}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [272] = { + [FRONTIER_MON_GLOOM_2] = { .species = SPECIES_GLOOM, .moves = {MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, MOVE_SLUDGE_BOMB, MOVE_MOONLIGHT}, .itemTableId = BATTLE_FRONTIER_ITEM_PECHA_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_QUIRKY }, - [273] = { + [FRONTIER_MON_PORYGON_2] = { .species = SPECIES_PORYGON, .moves = {MOVE_TRI_ATTACK, MOVE_PSYCHIC, MOVE_THUNDER_WAVE, MOVE_RECOVER}, .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_QUIET }, - [274] = { + [FRONTIER_MON_KADABRA_2] = { .species = SPECIES_KADABRA, .moves = {MOVE_PSYCHIC, MOVE_THUNDER_WAVE, MOVE_REFLECT, MOVE_RECOVER}, .itemTableId = BATTLE_FRONTIER_ITEM_TWISTED_SPOON, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [275] = { + [FRONTIER_MON_WAILMER_2] = { .species = SPECIES_WAILMER, .moves = {MOVE_WATER_SPOUT, MOVE_EARTHQUAKE, MOVE_BODY_SLAM, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_DOCILE }, - [276] = { + [FRONTIER_MON_ROSELIA_2] = { .species = SPECIES_ROSELIA, .moves = {MOVE_GIGA_DRAIN, MOVE_SLUDGE_BOMB, MOVE_GRASS_WHISTLE, MOVE_SYNTHESIS}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [277] = { + [FRONTIER_MON_VOLBEAT_2] = { .species = SPECIES_VOLBEAT, .moves = {MOVE_SIGNAL_BEAM, MOVE_THUNDERBOLT, MOVE_ICE_PUNCH, MOVE_TAIL_GLOW}, .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_QUIRKY }, - [278] = { + [FRONTIER_MON_ILLUMISE_2] = { .species = SPECIES_ILLUMISE, .moves = {MOVE_SILVER_WIND, MOVE_THUNDERBOLT, MOVE_ICE_PUNCH, MOVE_GIGA_DRAIN}, .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_QUIRKY }, - [279] = { + [FRONTIER_MON_IVYSAUR_2] = { .species = SPECIES_IVYSAUR, .moves = {MOVE_GIGA_DRAIN, MOVE_SLUDGE_BOMB, MOVE_SLEEP_POWDER, MOVE_LEECH_SEED}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_QUIRKY }, - [280] = { + [FRONTIER_MON_CHARMELEON_2] = { .species = SPECIES_CHARMELEON, .moves = {MOVE_FLAMETHROWER, MOVE_SLASH, MOVE_ANCIENT_POWER, MOVE_DRAGON_RAGE}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [281] = { + [FRONTIER_MON_WARTORTLE_2] = { .species = SPECIES_WARTORTLE, .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_RAPID_SPIN, MOVE_PROTECT}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [282] = { + [FRONTIER_MON_PARASECT_2] = { .species = SPECIES_PARASECT, .moves = {MOVE_SPORE, MOVE_GIGA_DRAIN, MOVE_DIG, MOVE_DOUBLE_TEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_CALM }, - [283] = { + [FRONTIER_MON_MACHOKE_2] = { .species = SPECIES_MACHOKE, .moves = {MOVE_CROSS_CHOP, MOVE_ROCK_SLIDE, MOVE_FORESIGHT, MOVE_SCARY_FACE}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [284] = { + [FRONTIER_MON_HAUNTER_2] = { .species = SPECIES_HAUNTER, .moves = {MOVE_PSYCHIC, MOVE_HYPNOSIS, MOVE_NIGHTMARE, MOVE_CONFUSE_RAY}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [285] = { + [FRONTIER_MON_BAYLEEF_2] = { .species = SPECIES_BAYLEEF, .moves = {MOVE_GIGA_DRAIN, MOVE_BODY_SLAM, MOVE_GRASS_WHISTLE, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [286] = { + [FRONTIER_MON_QUILAVA_2] = { .species = SPECIES_QUILAVA, .moves = {MOVE_FLAMETHROWER, MOVE_CRUSH_CLAW, MOVE_BODY_SLAM, MOVE_SMOKESCREEN}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [287] = { + [FRONTIER_MON_CROCONAW_2] = { .species = SPECIES_CROCONAW, .moves = {MOVE_MEGA_KICK, MOVE_AERIAL_ACE, MOVE_ROCK_SLIDE, MOVE_DIG}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [288] = { + [FRONTIER_MON_TOGETIC_2] = { .species = SPECIES_TOGETIC, .moves = {MOVE_RETURN, MOVE_SWEET_KISS, MOVE_AERIAL_ACE, MOVE_YAWN}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [289] = { + [FRONTIER_MON_MURKROW_2] = { .species = SPECIES_MURKROW, .moves = {MOVE_PERISH_SONG, MOVE_MEAN_LOOK, MOVE_DOUBLE_TEAM, MOVE_THUNDER_WAVE}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [290] = { + [FRONTIER_MON_WOBBUFFET_2] = { .species = SPECIES_WOBBUFFET, .moves = {MOVE_COUNTER, MOVE_MIRROR_COAT, MOVE_ENCORE, MOVE_DESTINY_BOND}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_CAREFUL }, - [291] = { + [FRONTIER_MON_PLUSLE_2] = { .species = SPECIES_PLUSLE, .moves = {MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_SEISMIC_TOSS, MOVE_WISH}, .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_DOCILE }, - [292] = { + [FRONTIER_MON_MINUN_2] = { .species = SPECIES_MINUN, .moves = {MOVE_THUNDERBOLT, MOVE_ATTRACT, MOVE_CHARM, MOVE_WISH}, .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_DOCILE }, - [293] = { + [FRONTIER_MON_GROVYLE_2] = { .species = SPECIES_GROVYLE, .moves = {MOVE_GIGA_DRAIN, MOVE_CRUSH_CLAW, MOVE_SCREECH, MOVE_ROCK_TOMB}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [294] = { + [FRONTIER_MON_COMBUSKEN_2] = { .species = SPECIES_COMBUSKEN, .moves = {MOVE_FLAMETHROWER, MOVE_SKY_UPPERCUT, MOVE_SLASH, MOVE_SAND_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [295] = { + [FRONTIER_MON_MARSHTOMP_2] = { .species = SPECIES_MARSHTOMP, .moves = {MOVE_MUDDY_WATER, MOVE_EARTHQUAKE, MOVE_MUD_SLAP, MOVE_PROTECT}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [296] = { + [FRONTIER_MON_PONYTA_2] = { .species = SPECIES_PONYTA, .moves = {MOVE_FLAMETHROWER, MOVE_BODY_SLAM, MOVE_DOUBLE_KICK, MOVE_DOUBLE_TEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_QUIRKY }, - [297] = { + [FRONTIER_MON_AZUMARILL_2] = { .species = SPECIES_AZUMARILL, .moves = {MOVE_MEGA_KICK, MOVE_BRICK_BREAK, MOVE_IRON_TAIL, MOVE_DIG}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [298] = { + [FRONTIER_MON_SUDOWOODO_2] = { .species = SPECIES_SUDOWOODO, .moves = {MOVE_MEGA_KICK, MOVE_EARTHQUAKE, MOVE_LOW_KICK, MOVE_SELF_DESTRUCT}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [299] = { + [FRONTIER_MON_MAGCARGO_2] = { .species = SPECIES_MAGCARGO, .moves = {MOVE_OVERHEAT, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_BODY_SLAM}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_QUIET }, - [300] = { + [FRONTIER_MON_PUPITAR_2] = { .species = SPECIES_PUPITAR, .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_CRUNCH, MOVE_SCARY_FACE}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [301] = { + [FRONTIER_MON_SEALEO_2] = { .species = SPECIES_SEALEO, .moves = {MOVE_ICE_BEAM, MOVE_SURF, MOVE_BODY_SLAM, MOVE_HAIL}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIET }, - [302] = { + [FRONTIER_MON_RATICATE_2] = { .species = SPECIES_RATICATE, .moves = {MOVE_SUPER_FANG, MOVE_HYPER_FANG, MOVE_SHADOW_BALL, MOVE_SCARY_FACE}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [303] = { + [FRONTIER_MON_MASQUERAIN_2] = { .species = SPECIES_MASQUERAIN, .moves = {MOVE_HYDRO_PUMP, MOVE_ICE_BEAM, MOVE_GIGA_DRAIN, MOVE_STUN_SPORE}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, .nature = NATURE_QUIET }, - [304] = { + [FRONTIER_MON_FURRET_2] = { .species = SPECIES_FURRET, .moves = {MOVE_TRICK, MOVE_FRUSTRATION, MOVE_SHADOW_BALL, MOVE_FOLLOW_ME}, .itemTableId = BATTLE_FRONTIER_ITEM_CHOICE_BAND, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [305] = { + [FRONTIER_MON_DUNSPARCE_2] = { .species = SPECIES_DUNSPARCE, .moves = {MOVE_ICE_BEAM, MOVE_ROCK_TOMB, MOVE_BITE, MOVE_SHADOW_BALL}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_QUIET }, - [306] = { + [FRONTIER_MON_DRAGONAIR_2] = { .species = SPECIES_DRAGONAIR, .moves = {MOVE_RETURN, MOVE_REST, MOVE_THUNDER_WAVE, MOVE_DRAGON_DANCE}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [307] = { + [FRONTIER_MON_MIGHTYENA_2] = { .species = SPECIES_MIGHTYENA, .moves = {MOVE_CRUNCH, MOVE_SHADOW_BALL, MOVE_FRUSTRATION, MOVE_SCARY_FACE}, .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, .nature = NATURE_QUIRKY }, - [308] = { + [FRONTIER_MON_LINOONE_2] = { .species = SPECIES_LINOONE, .moves = {MOVE_TRICK, MOVE_FRUSTRATION, MOVE_THUNDER_WAVE, MOVE_SAND_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_CHOICE_BAND, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_JOLLY }, - [309] = { + [FRONTIER_MON_CASTFORM_2] = { .species = SPECIES_CASTFORM, .moves = {MOVE_THUNDERBOLT, MOVE_FLAMETHROWER, MOVE_ICE_BEAM, MOVE_WATER_PULSE}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [310] = { + [FRONTIER_MON_SHELGON_2] = { .species = SPECIES_SHELGON, .moves = {MOVE_FRUSTRATION, MOVE_DRAGON_DANCE, MOVE_CRUNCH, MOVE_SCARY_FACE}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [311] = { + [FRONTIER_MON_METANG_2] = { .species = SPECIES_METANG, .moves = {MOVE_METEOR_MASH, MOVE_PSYCHIC, MOVE_BODY_SLAM, MOVE_SCARY_FACE}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [312] = { + [FRONTIER_MON_WIGGLYTUFF_2] = { .species = SPECIES_WIGGLYTUFF, .moves = {MOVE_FAKE_TEARS, MOVE_SING, MOVE_DREAM_EATER, MOVE_BRICK_BREAK}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_DOCILE }, - [313] = { + [FRONTIER_MON_SUNFLORA_2] = { .species = SPECIES_SUNFLORA, .moves = {MOVE_GIGA_DRAIN, MOVE_GRASS_WHISTLE, MOVE_GROWTH, MOVE_DOUBLE_TEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_QUIET }, - [314] = { + [FRONTIER_MON_CHIMECHO_2] = { .species = SPECIES_CHIMECHO, .moves = {MOVE_PSYCHIC, MOVE_HYPNOSIS, MOVE_DREAM_EATER, MOVE_HEAL_BELL}, .itemTableId = BATTLE_FRONTIER_ITEM_TWISTED_SPOON, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_QUIET }, - [315] = { + [FRONTIER_MON_GLIGAR_2] = { .species = SPECIES_GLIGAR, .moves = {MOVE_EARTHQUAKE, MOVE_AERIAL_ACE, MOVE_GUILLOTINE, MOVE_SCREECH}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [316] = { + [FRONTIER_MON_QWILFISH_2] = { .species = SPECIES_QWILFISH, .moves = {MOVE_REVENGE, MOVE_SLUDGE_BOMB, MOVE_SHADOW_BALL, MOVE_DESTINY_BOND}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [317] = { + [FRONTIER_MON_SNEASEL_2] = { .species = SPECIES_SNEASEL, .moves = {MOVE_CRUSH_CLAW, MOVE_BRICK_BREAK, MOVE_AERIAL_ACE, MOVE_SCREECH}, .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_JOLLY }, - [318] = { + [FRONTIER_MON_PELIPPER_2] = { .species = SPECIES_PELIPPER, .moves = {MOVE_SURF, MOVE_BLIZZARD, MOVE_AERIAL_ACE, MOVE_PROTECT}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_QUIET }, - [319] = { + [FRONTIER_MON_SWELLOW_2] = { .species = SPECIES_SWELLOW, .moves = {MOVE_FACADE, MOVE_AERIAL_ACE, MOVE_PURSUIT, MOVE_DOUBLE_TEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [320] = { + [FRONTIER_MON_LAIRON_2] = { .species = SPECIES_LAIRON, .moves = {MOVE_EARTHQUAKE, MOVE_IRON_TAIL, MOVE_ROAR, MOVE_PROTECT}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_SASSY }, - [321] = { + [FRONTIER_MON_TANGELA_2] = { .species = SPECIES_TANGELA, .moves = {MOVE_GIGA_DRAIN, MOVE_STUN_SPORE, MOVE_REST, MOVE_AMNESIA}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_CALM }, - [322] = { + [FRONTIER_MON_ARBOK_2] = { .species = SPECIES_ARBOK, .moves = {MOVE_SLUDGE_BOMB, MOVE_EARTHQUAKE, MOVE_IRON_TAIL, MOVE_GLARE}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [323] = { + [FRONTIER_MON_PERSIAN_2] = { .species = SPECIES_PERSIAN, .moves = {MOVE_FRUSTRATION, MOVE_SHADOW_BALL, MOVE_ROAR, MOVE_FAKE_OUT}, .itemTableId = BATTLE_FRONTIER_ITEM_SILK_SCARF, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [324] = { + [FRONTIER_MON_SEADRA_2] = { .species = SPECIES_SEADRA, .moves = {MOVE_HYDRO_PUMP, MOVE_FRUSTRATION, MOVE_DRAGON_BREATH, MOVE_DRAGON_DANCE}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [325] = { + [FRONTIER_MON_KECLEON_2] = { .species = SPECIES_KECLEON, .moves = {MOVE_TRICK, MOVE_BRICK_BREAK, MOVE_SHADOW_BALL, MOVE_SKILL_SWAP}, .itemTableId = BATTLE_FRONTIER_ITEM_CHOICE_BAND, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [326] = { + [FRONTIER_MON_VIGOROTH_2] = { .species = SPECIES_VIGOROTH, .moves = {MOVE_CRUSH_CLAW, MOVE_REVERSAL, MOVE_ENDURE, MOVE_SHADOW_BALL}, .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [327] = { + [FRONTIER_MON_LUNATONE_2] = { .species = SPECIES_LUNATONE, .moves = {MOVE_PSYCHIC, MOVE_ICE_BEAM, MOVE_COSMIC_POWER, MOVE_CALM_MIND}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_QUIET }, - [328] = { + [FRONTIER_MON_SOLROCK_2] = { .species = SPECIES_SOLROCK, .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_COSMIC_POWER, MOVE_OVERHEAT}, .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [329] = { + [FRONTIER_MON_NOCTOWL_2] = { .species = SPECIES_NOCTOWL, .moves = {MOVE_PSYCHIC, MOVE_FAINT_ATTACK, MOVE_AERIAL_ACE, MOVE_REFLECT}, .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, .nature = NATURE_QUIET }, - [330] = { + [FRONTIER_MON_SANDSLASH_2] = { .species = SPECIES_SANDSLASH, .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_CRUSH_CLAW, MOVE_SANDSTORM}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [331] = { + [FRONTIER_MON_VENOMOTH_2] = { .species = SPECIES_VENOMOTH, .moves = {MOVE_SIGNAL_BEAM, MOVE_PSYCHIC, MOVE_SLUDGE_BOMB, MOVE_GIGA_DRAIN}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [332] = { + [FRONTIER_MON_CHANSEY_2] = { .species = SPECIES_CHANSEY, .moves = {MOVE_SEISMIC_TOSS, MOVE_SHADOW_BALL, MOVE_DOUBLE_TEAM, MOVE_SOFT_BOILED}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_RELAXED }, - [333] = { + [FRONTIER_MON_SEAKING_2] = { .species = SPECIES_SEAKING, .moves = {MOVE_HORN_DRILL, MOVE_MEGAHORN, MOVE_SLEEP_TALK, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_IMPISH }, - [334] = { + [FRONTIER_MON_JUMPLUFF_2] = { .species = SPECIES_JUMPLUFF, .moves = {MOVE_LEECH_SEED, MOVE_SLEEP_POWDER, MOVE_GIGA_DRAIN, MOVE_DOUBLE_TEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_BOLD }, - [335] = { + [FRONTIER_MON_PILOSWINE_2] = { .species = SPECIES_PILOSWINE, .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_BODY_SLAM, MOVE_ROAR}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_ADAMANT }, - [336] = { + [FRONTIER_MON_GOLBAT_2] = { .species = SPECIES_GOLBAT, .moves = {MOVE_SLUDGE_BOMB, MOVE_SHADOW_BALL, MOVE_CONFUSE_RAY, MOVE_AIR_CUTTER}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [337] = { + [FRONTIER_MON_PRIMEAPE_2] = { .species = SPECIES_PRIMEAPE, .moves = {MOVE_CROSS_CHOP, MOVE_ROCK_TOMB, MOVE_OVERHEAT, MOVE_BULK_UP}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [338] = { + [FRONTIER_MON_HITMONLEE_2] = { .species = SPECIES_HITMONLEE, .moves = {MOVE_MEGA_KICK, MOVE_BRICK_BREAK, MOVE_FORESIGHT, MOVE_ROCK_TOMB}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [339] = { + [FRONTIER_MON_HITMONCHAN_2] = { .species = SPECIES_HITMONCHAN, .moves = {MOVE_DYNAMIC_PUNCH, MOVE_MACH_PUNCH, MOVE_DETECT, MOVE_COUNTER}, .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [340] = { + [FRONTIER_MON_GIRAFARIG_2] = { .species = SPECIES_GIRAFARIG, .moves = {MOVE_PSYCHIC, MOVE_CRUNCH, MOVE_BATON_PASS, MOVE_AGILITY}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_MODEST }, - [341] = { + [FRONTIER_MON_HITMONTOP_2] = { .species = SPECIES_HITMONTOP, .moves = {MOVE_DOUBLE_EDGE, MOVE_SEISMIC_TOSS, MOVE_ROCK_SLIDE, MOVE_COUNTER}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [342] = { + [FRONTIER_MON_BANETTE_2] = { .species = SPECIES_BANETTE, .moves = {MOVE_SHADOW_BALL, MOVE_FRUSTRATION, MOVE_SCREECH, MOVE_WILL_O_WISP}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_ADAMANT }, - [343] = { + [FRONTIER_MON_NINJASK_2] = { .species = SPECIES_NINJASK, .moves = {MOVE_SLASH, MOVE_SHADOW_BALL, MOVE_SWORDS_DANCE, MOVE_BATON_PASS}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [344] = { + [FRONTIER_MON_SEVIPER_2] = { .species = SPECIES_SEVIPER, .moves = {MOVE_SLUDGE_BOMB, MOVE_EARTHQUAKE, MOVE_CRUNCH, MOVE_GIGA_DRAIN}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [345] = { + [FRONTIER_MON_ZANGOOSE_2] = { .species = SPECIES_ZANGOOSE, .moves = {MOVE_CRUSH_CLAW, MOVE_SHADOW_BALL, MOVE_BRICK_BREAK, MOVE_AERIAL_ACE}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [346] = { + [FRONTIER_MON_CAMERUPT_2] = { .species = SPECIES_CAMERUPT, .moves = {MOVE_EARTHQUAKE, MOVE_ERUPTION, MOVE_BODY_SLAM, MOVE_SCARY_FACE}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_QUIRKY }, - [347] = { + [FRONTIER_MON_SHARPEDO_2] = { .species = SPECIES_SHARPEDO, .moves = {MOVE_DOUBLE_EDGE, MOVE_CRUNCH, MOVE_EARTHQUAKE, MOVE_SURF}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_QUIRKY }, - [348] = { + [FRONTIER_MON_TROPIUS_2] = { .species = SPECIES_TROPIUS, .moves = {MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, MOVE_SYNTHESIS, MOVE_BODY_SLAM}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_QUIET }, - [349] = { + [FRONTIER_MON_MAGNETON_2] = { .species = SPECIES_MAGNETON, .moves = {MOVE_THUNDER, MOVE_RAIN_DANCE, MOVE_THUNDER_WAVE, MOVE_METAL_SOUND}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [350] = { + [FRONTIER_MON_MANTINE_2] = { .species = SPECIES_MANTINE, .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_RAIN_DANCE, MOVE_CONFUSE_RAY}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [351] = { + [FRONTIER_MON_STANTLER_2] = { .species = SPECIES_STANTLER, .moves = {MOVE_FRUSTRATION, MOVE_SHADOW_BALL, MOVE_THUNDER_WAVE, MOVE_CONFUSE_RAY}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [352] = { + [FRONTIER_MON_ABSOL_2] = { .species = SPECIES_ABSOL, .moves = {MOVE_DOUBLE_EDGE, MOVE_SHADOW_BALL, MOVE_AERIAL_ACE, MOVE_IRON_TAIL}, .itemTableId = BATTLE_FRONTIER_ITEM_CHOICE_BAND, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [353] = { + [FRONTIER_MON_SWALOT_2] = { .species = SPECIES_SWALOT, .moves = {MOVE_SLUDGE_BOMB, MOVE_SHADOW_BALL, MOVE_BODY_SLAM, MOVE_COUNTER}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [354] = { + [FRONTIER_MON_CRAWDAUNT_2] = { .species = SPECIES_CRAWDAUNT, .moves = {MOVE_GUILLOTINE, MOVE_FRUSTRATION, MOVE_ANCIENT_POWER, MOVE_AERIAL_ACE}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [355] = { + [FRONTIER_MON_PIDGEOT_2] = { .species = SPECIES_PIDGEOT, .moves = {MOVE_RETURN, MOVE_AERIAL_ACE, MOVE_STEEL_WING, MOVE_MUD_SLAP}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [356] = { + [FRONTIER_MON_GRUMPIG_2] = { .species = SPECIES_GRUMPIG, .moves = {MOVE_PSYCHIC, MOVE_ICE_PUNCH, MOVE_THUNDER_PUNCH, MOVE_FIRE_PUNCH}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, .nature = NATURE_MODEST }, - [357] = { + [FRONTIER_MON_TORKOAL_2] = { .species = SPECIES_TORKOAL, .moves = {MOVE_OVERHEAT, MOVE_BODY_SLAM, MOVE_SMOKESCREEN, MOVE_PROTECT}, .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_SASSY }, - [358] = { + [FRONTIER_MON_KINGLER_2] = { .species = SPECIES_KINGLER, .moves = {MOVE_GUILLOTINE, MOVE_ROCK_TOMB, MOVE_FLAIL, MOVE_ENDURE}, .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [359] = { + [FRONTIER_MON_CACTURNE_2] = { .species = SPECIES_CACTURNE, .moves = {MOVE_MEGA_KICK, MOVE_TEETER_DANCE, MOVE_FAINT_ATTACK, MOVE_SANDSTORM}, .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_HARDY }, - [360] = { + [FRONTIER_MON_BELLOSSOM_2] = { .species = SPECIES_BELLOSSOM, .moves = {MOVE_SOLAR_BEAM, MOVE_ATTRACT, MOVE_SUNNY_DAY, MOVE_SYNTHESIS}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, .nature = NATURE_MODEST }, - [361] = { + [FRONTIER_MON_OCTILLERY_2] = { .species = SPECIES_OCTILLERY, .moves = {MOVE_OCTAZOOKA, MOVE_FIRE_BLAST, MOVE_THUNDER_WAVE, MOVE_MUD_SLAP}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [362] = { + [FRONTIER_MON_HUNTAIL_2] = { .species = SPECIES_HUNTAIL, .moves = {MOVE_SURF, MOVE_RAIN_DANCE, MOVE_CRUNCH, MOVE_BODY_SLAM}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_QUIET }, - [363] = { + [FRONTIER_MON_GOREBYSS_2] = { .species = SPECIES_GOREBYSS, .moves = {MOVE_SURF, MOVE_RAIN_DANCE, MOVE_PSYCHIC, MOVE_BODY_SLAM}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_QUIET }, - [364] = { + [FRONTIER_MON_RELICANTH_2] = { .species = SPECIES_RELICANTH, .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_AMNESIA, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_SASSY }, - [365] = { + [FRONTIER_MON_OMASTAR_2] = { .species = SPECIES_OMASTAR, .moves = {MOVE_HYDRO_PUMP, MOVE_RAIN_DANCE, MOVE_ICE_BEAM, MOVE_PROTECT}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [366] = { + [FRONTIER_MON_KABUTOPS_2] = { .species = SPECIES_KABUTOPS, .moves = {MOVE_SLASH, MOVE_ROCK_SLIDE, MOVE_FLAIL, MOVE_ENDURE}, .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [367] = { + [FRONTIER_MON_POLIWRATH_2] = { .species = SPECIES_POLIWRATH, .moves = {MOVE_BRICK_BREAK, MOVE_HYPNOSIS, MOVE_REST, MOVE_BELLY_DRUM}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [368] = { + [FRONTIER_MON_SCYTHER_2] = { .species = SPECIES_SCYTHER, .moves = {MOVE_SILVER_WIND, MOVE_AERIAL_ACE, MOVE_SWORDS_DANCE, MOVE_DOUBLE_TEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [369] = { + [FRONTIER_MON_PINSIR_2] = { .species = SPECIES_PINSIR, .moves = {MOVE_GUILLOTINE, MOVE_SWORDS_DANCE, MOVE_FLAIL, MOVE_ENDURE}, .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, .nature = NATURE_JOLLY }, - [370] = { + [FRONTIER_MON_POLITOED_2] = { .species = SPECIES_POLITOED, .moves = {MOVE_SURF, MOVE_PSYCHIC, MOVE_MUD_SLAP, MOVE_SWAGGER}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, .nature = NATURE_MODEST }, - [371] = { + [FRONTIER_MON_CLOYSTER_2] = { .species = SPECIES_CLOYSTER, .moves = {MOVE_DIVE, MOVE_TOXIC, MOVE_DOUBLE_TEAM, MOVE_PROTECT}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_CAREFUL }, - [372] = { + [FRONTIER_MON_DUGTRIO_1] = { .species = SPECIES_DUGTRIO, .moves = {MOVE_EARTHQUAKE, MOVE_TRI_ATTACK, MOVE_SLASH, MOVE_SAND_TOMB}, .itemTableId = BATTLE_FRONTIER_ITEM_SOFT_SAND, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [373] = { + [FRONTIER_MON_MEDICHAM_1] = { .species = SPECIES_MEDICHAM, .moves = {MOVE_PSYCHIC, MOVE_HI_JUMP_KICK, MOVE_CALM_MIND, MOVE_BATON_PASS}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [374] = { + [FRONTIER_MON_MISDREAVUS_1] = { .species = SPECIES_MISDREAVUS, .moves = {MOVE_PAIN_SPLIT, MOVE_SHADOW_BALL, MOVE_CONFUSE_RAY, MOVE_THUNDER_WAVE}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_IMPISH }, - [375] = { + [FRONTIER_MON_FEAROW_1] = { .species = SPECIES_FEAROW, .moves = {MOVE_DRILL_PECK, MOVE_TRI_ATTACK, MOVE_FACADE, MOVE_MUD_SLAP}, .itemTableId = BATTLE_FRONTIER_ITEM_SHARP_BEAK, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [376] = { + [FRONTIER_MON_GRANBULL_1] = { .species = SPECIES_GRANBULL, .moves = {MOVE_MEGA_KICK, MOVE_SMELLING_SALT, MOVE_THUNDER_WAVE, MOVE_ROAR}, .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [377] = { + [FRONTIER_MON_JYNX_1] = { .species = SPECIES_JYNX, .moves = {MOVE_ICE_BEAM, MOVE_FAKE_OUT, MOVE_LOVELY_KISS, MOVE_ATTRACT}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [378] = { + [FRONTIER_MON_DUSCLOPS_1] = { .species = SPECIES_DUSCLOPS, .moves = {MOVE_WILL_O_WISP, MOVE_SEISMIC_TOSS, MOVE_PAIN_SPLIT, MOVE_CONFUSE_RAY}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_IMPISH }, - [379] = { + [FRONTIER_MON_DODRIO_1] = { .species = SPECIES_DODRIO, .moves = {MOVE_DRILL_PECK, MOVE_TRI_ATTACK, MOVE_SLEEP_TALK, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [380] = { + [FRONTIER_MON_MR_MIME_1] = { .species = SPECIES_MR_MIME, .moves = {MOVE_PSYCHIC, MOVE_MAGICAL_LEAF, MOVE_FAKE_OUT, MOVE_REFLECT}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [381] = { + [FRONTIER_MON_LANTURN_1] = { .species = SPECIES_LANTURN, .moves = {MOVE_SURF, MOVE_CONFUSE_RAY, MOVE_ATTRACT, MOVE_THUNDER_WAVE}, .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, .nature = NATURE_QUIET }, - [382] = { + [FRONTIER_MON_BRELOOM_1] = { .species = SPECIES_BRELOOM, .moves = {MOVE_SKY_UPPERCUT, MOVE_MACH_PUNCH, MOVE_HEADBUTT, MOVE_COUNTER}, .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_JOLLY }, - [383] = { + [FRONTIER_MON_FORRETRESS_1] = { .species = SPECIES_FORRETRESS, .moves = {MOVE_DOUBLE_EDGE, MOVE_ROCK_SLIDE, MOVE_LIGHT_SCREEN, MOVE_SPIKES}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [384] = { + [FRONTIER_MON_WHISCASH_1] = { .species = SPECIES_WHISCASH, .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_AMNESIA, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [385] = { + [FRONTIER_MON_XATU_1] = { .species = SPECIES_XATU, .moves = {MOVE_DRILL_PECK, MOVE_NIGHT_SHADE, MOVE_WISH, MOVE_FUTURE_SIGHT}, .itemTableId = BATTLE_FRONTIER_ITEM_SHARP_BEAK, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [386] = { + [FRONTIER_MON_SKARMORY_1] = { .species = SPECIES_SKARMORY, .moves = {MOVE_STEEL_WING, MOVE_AIR_CUTTER, MOVE_COUNTER, MOVE_AGILITY}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [387] = { + [FRONTIER_MON_MAROWAK_1] = { .species = SPECIES_MAROWAK, .moves = {MOVE_BONEMERANG, MOVE_ROCK_SLIDE, MOVE_ICY_WIND, MOVE_HEADBUTT}, .itemTableId = BATTLE_FRONTIER_ITEM_THICK_CLUB, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [388] = { + [FRONTIER_MON_QUAGSIRE_1] = { .species = SPECIES_QUAGSIRE, .moves = {MOVE_EARTHQUAKE, MOVE_BRICK_BREAK, MOVE_COUNTER, MOVE_MUD_SLAP}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [389] = { + [FRONTIER_MON_CLEFABLE_1] = { .species = SPECIES_CLEFABLE, .moves = {MOVE_METRONOME, MOVE_DOUBLE_TEAM, MOVE_REFLECT, MOVE_FOLLOW_ME}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_BRAVE }, - [390] = { + [FRONTIER_MON_HARIYAMA_1] = { .species = SPECIES_HARIYAMA, .moves = {MOVE_CROSS_CHOP, MOVE_ROCK_SLIDE, MOVE_COUNTER, MOVE_FAKE_OUT}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [391] = { + [FRONTIER_MON_RAICHU_1] = { .species = SPECIES_RAICHU, .moves = {MOVE_THUNDERBOLT, MOVE_QUICK_ATTACK, MOVE_LIGHT_SCREEN, MOVE_DOUBLE_TEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE, .nature = NATURE_MODEST }, - [392] = { + [FRONTIER_MON_DEWGONG_1] = { .species = SPECIES_DEWGONG, .moves = {MOVE_ICE_BEAM, MOVE_ICY_WIND, MOVE_HEADBUTT, MOVE_FAKE_OUT}, .itemTableId = BATTLE_FRONTIER_ITEM_NEVER_MELT_ICE, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIET }, - [393] = { + [FRONTIER_MON_MANECTRIC_1] = { .species = SPECIES_MANECTRIC, .moves = {MOVE_THUNDERBOLT, MOVE_FLASH, MOVE_QUICK_ATTACK, MOVE_ROAR}, .itemTableId = BATTLE_FRONTIER_ITEM_MAGNET, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [394] = { + [FRONTIER_MON_VILEPLUME_1] = { .species = SPECIES_VILEPLUME, .moves = {MOVE_SLUDGE_BOMB, MOVE_PETAL_DANCE, MOVE_MOONLIGHT, MOVE_AROMATHERAPY}, .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_IMPISH }, - [395] = { + [FRONTIER_MON_VICTREEBEL_1] = { .species = SPECIES_VICTREEBEL, .moves = {MOVE_GIGA_DRAIN, MOVE_SLEEP_POWDER, MOVE_SWEET_SCENT, MOVE_SYNTHESIS}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_QUIET }, - [396] = { + [FRONTIER_MON_ELECTRODE_1] = { .species = SPECIES_ELECTRODE, .moves = {MOVE_THUNDERBOLT, MOVE_SWIFT, MOVE_LIGHT_SCREEN, MOVE_PROTECT}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIET }, - [397] = { + [FRONTIER_MON_EXPLOUD_1] = { .species = SPECIES_EXPLOUD, .moves = {MOVE_HYPER_VOICE, MOVE_SHADOW_BALL, MOVE_SLEEP_TALK, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_IMPISH }, - [398] = { + [FRONTIER_MON_SHIFTRY_1] = { .species = SPECIES_SHIFTRY, .moves = {MOVE_GIGA_DRAIN, MOVE_FAINT_ATTACK, MOVE_QUICK_ATTACK, MOVE_FAKE_OUT}, .itemTableId = BATTLE_FRONTIER_ITEM_MIRACLE_SEED, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, .nature = NATURE_QUIET }, - [399] = { + [FRONTIER_MON_GLALIE_1] = { .species = SPECIES_GLALIE, .moves = {MOVE_ICE_BEAM, MOVE_CRUNCH, MOVE_HAIL, MOVE_PROTECT}, .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [400] = { + [FRONTIER_MON_LUDICOLO_1] = { .species = SPECIES_LUDICOLO, .moves = {MOVE_SURF, MOVE_RAIN_DANCE, MOVE_THUNDER_PUNCH, MOVE_FIRE_PUNCH}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_QUIET }, - [401] = { + [FRONTIER_MON_HYPNO_1] = { .species = SPECIES_HYPNO, .moves = {MOVE_THUNDER_PUNCH, MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, MOVE_HYPNOSIS}, .itemTableId = BATTLE_FRONTIER_ITEM_TWISTED_SPOON, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, .nature = NATURE_QUIET }, - [402] = { + [FRONTIER_MON_GOLEM_1] = { .species = SPECIES_GOLEM, .moves = {MOVE_EARTHQUAKE, MOVE_BODY_SLAM, MOVE_COUNTER, MOVE_ROCK_TOMB}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [403] = { + [FRONTIER_MON_RHYDON_1] = { .species = SPECIES_RHYDON, .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_TOMB, MOVE_SCARY_FACE, MOVE_BRICK_BREAK}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [404] = { + [FRONTIER_MON_ALAKAZAM_1] = { .species = SPECIES_ALAKAZAM, .moves = {MOVE_THUNDER_PUNCH, MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, MOVE_THUNDER_WAVE}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, .nature = NATURE_MODEST }, - [405] = { + [FRONTIER_MON_WEEZING_1] = { .species = SPECIES_WEEZING, .moves = {MOVE_SLUDGE_BOMB, MOVE_WILL_O_WISP, MOVE_SHADOW_BALL, MOVE_SMOKESCREEN}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [406] = { + [FRONTIER_MON_KANGASKHAN_1] = { .species = SPECIES_KANGASKHAN, .moves = {MOVE_DIZZY_PUNCH, MOVE_BRICK_BREAK, MOVE_COUNTER, MOVE_FAKE_OUT}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [407] = { + [FRONTIER_MON_ELECTABUZZ_1] = { .species = SPECIES_ELECTABUZZ, .moves = {MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_BRICK_BREAK, MOVE_LIGHT_SCREEN}, .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [408] = { + [FRONTIER_MON_TAUROS_1] = { .species = SPECIES_TAUROS, .moves = {MOVE_EARTHQUAKE, MOVE_THRASH, MOVE_SWAGGER, MOVE_FACADE}, .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [409] = { + [FRONTIER_MON_SLOWBRO_1] = { .species = SPECIES_SLOWBRO, .moves = {MOVE_SURF, MOVE_RAIN_DANCE, MOVE_HEADBUTT, MOVE_ICE_PUNCH}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_QUIET }, - [410] = { + [FRONTIER_MON_SLOWKING_1] = { .species = SPECIES_SLOWKING, .moves = {MOVE_PSYCHIC, MOVE_BRICK_BREAK, MOVE_AMNESIA, MOVE_ATTRACT}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_QUIET }, - [411] = { + [FRONTIER_MON_MILTANK_1] = { .species = SPECIES_MILTANK, .moves = {MOVE_FACADE, MOVE_SHADOW_BALL, MOVE_COUNTER, MOVE_MILK_DRINK}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_CAREFUL }, - [412] = { + [FRONTIER_MON_ALTARIA_1] = { .species = SPECIES_ALTARIA, .moves = {MOVE_DRAGON_CLAW, MOVE_AERIAL_ACE, MOVE_REFRESH, MOVE_BODY_SLAM}, .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [413] = { + [FRONTIER_MON_NIDOQUEEN_1] = { .species = SPECIES_NIDOQUEEN, .moves = {MOVE_SLUDGE_BOMB, MOVE_DOUBLE_KICK, MOVE_BODY_SLAM, MOVE_COUNTER}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [414] = { + [FRONTIER_MON_NIDOKING_1] = { .species = SPECIES_NIDOKING, .moves = {MOVE_HORN_DRILL, MOVE_DOUBLE_KICK, MOVE_BODY_SLAM, MOVE_COUNTER}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [415] = { + [FRONTIER_MON_MAGMAR_1] = { .species = SPECIES_MAGMAR, .moves = {MOVE_FLAMETHROWER, MOVE_SMOKESCREEN, MOVE_BRICK_BREAK, MOVE_BARRIER}, .itemTableId = BATTLE_FRONTIER_ITEM_RAWST_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [416] = { + [FRONTIER_MON_CRADILY_1] = { .species = SPECIES_CRADILY, .moves = {MOVE_GIGA_DRAIN, MOVE_ROCK_SLIDE, MOVE_BARRIER, MOVE_CONFUSE_RAY}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [417] = { + [FRONTIER_MON_ARMALDO_1] = { .species = SPECIES_ARMALDO, .moves = {MOVE_SLASH, MOVE_AERIAL_ACE, MOVE_ANCIENT_POWER, MOVE_PROTECT}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [418] = { + [FRONTIER_MON_GOLDUCK_1] = { .species = SPECIES_GOLDUCK, .moves = {MOVE_HYDRO_PUMP, MOVE_DIG, MOVE_BRICK_BREAK, MOVE_LIGHT_SCREEN}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_QUIET }, - [419] = { + [FRONTIER_MON_RAPIDASH_1] = { .species = SPECIES_RAPIDASH, .moves = {MOVE_FLAMETHROWER, MOVE_DOUBLE_KICK, MOVE_QUICK_ATTACK, MOVE_PROTECT}, .itemTableId = BATTLE_FRONTIER_ITEM_CHARCOAL, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_QUIET }, - [420] = { + [FRONTIER_MON_MUK_1] = { .species = SPECIES_MUK, .moves = {MOVE_SLUDGE_BOMB, MOVE_BODY_SLAM, MOVE_SCREECH, MOVE_MINIMIZE}, .itemTableId = BATTLE_FRONTIER_ITEM_POISON_BARB, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [421] = { + [FRONTIER_MON_GENGAR_1] = { .species = SPECIES_GENGAR, .moves = {MOVE_DREAM_EATER, MOVE_HYPNOSIS, MOVE_CONFUSE_RAY, MOVE_ATTRACT}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, .nature = NATURE_TIMID }, - [422] = { + [FRONTIER_MON_AMPHAROS_1] = { .species = SPECIES_AMPHAROS, .moves = {MOVE_THUNDER, MOVE_RAIN_DANCE, MOVE_THUNDER_WAVE, MOVE_ATTRACT}, .itemTableId = BATTLE_FRONTIER_ITEM_MAGNET, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [423] = { + [FRONTIER_MON_SCIZOR_1] = { .species = SPECIES_SCIZOR, .moves = {MOVE_METAL_CLAW, MOVE_AERIAL_ACE, MOVE_COUNTER, MOVE_QUICK_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [424] = { + [FRONTIER_MON_HERACROSS_1] = { .species = SPECIES_HERACROSS, .moves = {MOVE_MEGAHORN, MOVE_BRICK_BREAK, MOVE_ROCK_TOMB, MOVE_COUNTER}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [425] = { + [FRONTIER_MON_URSARING_1] = { .species = SPECIES_URSARING, .moves = {MOVE_MEGA_KICK, MOVE_CRUNCH, MOVE_AERIAL_ACE, MOVE_COUNTER}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [426] = { + [FRONTIER_MON_HOUNDOOM_1] = { .species = SPECIES_HOUNDOOM, .moves = {MOVE_FLAMETHROWER, MOVE_SHADOW_BALL, MOVE_COUNTER, MOVE_WILL_O_WISP}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_QUIRKY }, - [427] = { + [FRONTIER_MON_DONPHAN_1] = { .species = SPECIES_DONPHAN, .moves = {MOVE_EARTHQUAKE, MOVE_ANCIENT_POWER, MOVE_SWAGGER, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [428] = { + [FRONTIER_MON_CLAYDOL_1] = { .species = SPECIES_CLAYDOL, .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_SWAGGER, MOVE_PSYCH_UP}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [429] = { + [FRONTIER_MON_WAILORD_1] = { .species = SPECIES_WAILORD, .moves = {MOVE_SURF, MOVE_ICY_WIND, MOVE_BODY_SLAM, MOVE_ROAR}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_SASSY }, - [430] = { + [FRONTIER_MON_NINETALES_1] = { .species = SPECIES_NINETALES, .moves = {MOVE_FLAMETHROWER, MOVE_ROAR, MOVE_CONFUSE_RAY, MOVE_WILL_O_WISP}, .itemTableId = BATTLE_FRONTIER_ITEM_RAWST_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [431] = { + [FRONTIER_MON_MACHAMP_1] = { .species = SPECIES_MACHAMP, .moves = {MOVE_CROSS_CHOP, MOVE_ROCK_SLIDE, MOVE_COUNTER, MOVE_SCARY_FACE}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [432] = { + [FRONTIER_MON_SHUCKLE_1] = { .species = SPECIES_SHUCKLE, .moves = {MOVE_ROLLOUT, MOVE_DEFENSE_CURL, MOVE_SLEEP_TALK, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_BRAVE }, - [433] = { + [FRONTIER_MON_STEELIX_1] = { .species = SPECIES_STEELIX, .moves = {MOVE_EARTHQUAKE, MOVE_DRAGON_BREATH, MOVE_ROCK_TOMB, MOVE_ROAR}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [434] = { + [FRONTIER_MON_TENTACRUEL_1] = { .species = SPECIES_TENTACRUEL, .moves = {MOVE_SLUDGE_BOMB, MOVE_ICY_WIND, MOVE_BARRIER, MOVE_CONFUSE_RAY}, .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_IMPISH }, - [435] = { + [FRONTIER_MON_AERODACTYL_1] = { .species = SPECIES_AERODACTYL, .moves = {MOVE_ANCIENT_POWER, MOVE_DRAGON_BREATH, MOVE_AERIAL_ACE, MOVE_ROAR}, .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [436] = { + [FRONTIER_MON_PORYGON2_1] = { .species = SPECIES_PORYGON2, .moves = {MOVE_TRI_ATTACK, MOVE_AERIAL_ACE, MOVE_SHADOW_BALL, MOVE_RECOVER}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [437] = { + [FRONTIER_MON_GARDEVOIR_1] = { .species = SPECIES_GARDEVOIR, .moves = {MOVE_DREAM_EATER, MOVE_HYPNOSIS, MOVE_MAGICAL_LEAF, MOVE_REFLECT}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_TIMID }, - [438] = { + [FRONTIER_MON_EXEGGUTOR_1] = { .species = SPECIES_EXEGGUTOR, .moves = {MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, MOVE_SYNTHESIS, MOVE_LIGHT_SCREEN}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_QUIET }, - [439] = { + [FRONTIER_MON_STARMIE_1] = { .species = SPECIES_STARMIE, .moves = {MOVE_PSYCHIC, MOVE_CONFUSE_RAY, MOVE_THUNDER_WAVE, MOVE_RECOVER}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [440] = { + [FRONTIER_MON_FLYGON_1] = { .species = SPECIES_FLYGON, .moves = {MOVE_EARTHQUAKE, MOVE_STEEL_WING, MOVE_FAINT_ATTACK, MOVE_FACADE}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [441] = { + [FRONTIER_MON_VENUSAUR_1] = { .species = SPECIES_VENUSAUR, .moves = {MOVE_GIGA_DRAIN, MOVE_SUNNY_DAY, MOVE_SYNTHESIS, MOVE_SLEEP_POWDER}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIET }, - [442] = { + [FRONTIER_MON_VAPOREON_1] = { .species = SPECIES_VAPOREON, .moves = {MOVE_SURF, MOVE_ROAR, MOVE_BITE, MOVE_QUICK_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_MYSTIC_WATER, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, .nature = NATURE_MODEST }, - [443] = { + [FRONTIER_MON_JOLTEON_1] = { .species = SPECIES_JOLTEON, .moves = {MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_ATTRACT, MOVE_PROTECT}, .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [444] = { + [FRONTIER_MON_FLAREON_1] = { .species = SPECIES_FLAREON, .moves = {MOVE_FLAMETHROWER, MOVE_ROAR, MOVE_BITE, MOVE_SAND_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, .nature = NATURE_MODEST }, - [445] = { + [FRONTIER_MON_MEGANIUM_1] = { .species = SPECIES_MEGANIUM, .moves = {MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, MOVE_LIGHT_SCREEN, MOVE_SYNTHESIS}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [446] = { + [FRONTIER_MON_ESPEON_1] = { .species = SPECIES_ESPEON, .moves = {MOVE_PSYCHIC, MOVE_CHARM, MOVE_CALM_MIND, MOVE_BATON_PASS}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE, .nature = NATURE_MODEST }, - [447] = { + [FRONTIER_MON_UMBREON_1] = { .species = SPECIES_UMBREON, .moves = {MOVE_CONFUSE_RAY, MOVE_FAINT_ATTACK, MOVE_DOUBLE_TEAM, MOVE_BATON_PASS}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_BOLD }, - [448] = { + [FRONTIER_MON_BLASTOISE_1] = { .species = SPECIES_BLASTOISE, .moves = {MOVE_HYDRO_PUMP, MOVE_RAIN_DANCE, MOVE_BITE, MOVE_SEISMIC_TOSS}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [449] = { + [FRONTIER_MON_FERALIGATR_1] = { .species = SPECIES_FERALIGATR, .moves = {MOVE_SURF, MOVE_RAIN_DANCE, MOVE_AERIAL_ACE, MOVE_ROAR}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIET }, - [450] = { + [FRONTIER_MON_AGGRON_1] = { .species = SPECIES_AGGRON, .moves = {MOVE_IRON_TAIL, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE, MOVE_ROAR}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [451] = { + [FRONTIER_MON_BLAZIKEN_1] = { .species = SPECIES_BLAZIKEN, .moves = {MOVE_FLAMETHROWER, MOVE_SUNNY_DAY, MOVE_DOUBLE_KICK, MOVE_ROAR}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [452] = { + [FRONTIER_MON_WALREIN_1] = { .species = SPECIES_WALREIN, .moves = {MOVE_BLIZZARD, MOVE_HAIL, MOVE_YAWN, MOVE_PROTECT}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_QUIET }, - [453] = { + [FRONTIER_MON_SCEPTILE_1] = { .species = SPECIES_SCEPTILE, .moves = {MOVE_LEAF_BLADE, MOVE_LEECH_SEED, MOVE_AERIAL_ACE, MOVE_DETECT}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [454] = { + [FRONTIER_MON_CHARIZARD_1] = { .species = SPECIES_CHARIZARD, .moves = {MOVE_FIRE_BLAST, MOVE_SUNNY_DAY, MOVE_ROAR, MOVE_SCARY_FACE}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [455] = { + [FRONTIER_MON_TYPHLOSION_1] = { .species = SPECIES_TYPHLOSION, .moves = {MOVE_FIRE_BLAST, MOVE_SUNNY_DAY, MOVE_SMOKESCREEN, MOVE_ROAR}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [456] = { + [FRONTIER_MON_LAPRAS_1] = { .species = SPECIES_LAPRAS, .moves = {MOVE_SURF, MOVE_ATTRACT, MOVE_CONFUSE_RAY, MOVE_SING}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_BOLD }, - [457] = { + [FRONTIER_MON_CROBAT_1] = { .species = SPECIES_CROBAT, .moves = {MOVE_SLUDGE_BOMB, MOVE_BITE, MOVE_ASTONISH, MOVE_SCREECH}, .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [458] = { + [FRONTIER_MON_SWAMPERT_1] = { .species = SPECIES_SWAMPERT, .moves = {MOVE_EARTHQUAKE, MOVE_COUNTER, MOVE_REST, MOVE_CURSE}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [459] = { + [FRONTIER_MON_GYARADOS_1] = { .species = SPECIES_GYARADOS, .moves = {MOVE_RETURN, MOVE_BITE, MOVE_THUNDER_WAVE, MOVE_DRAGON_DANCE}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_CAREFUL }, - [460] = { + [FRONTIER_MON_SNORLAX_1] = { .species = SPECIES_SNORLAX, .moves = {MOVE_FACADE, MOVE_SHADOW_BALL, MOVE_ATTRACT, MOVE_DOUBLE_TEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [461] = { + [FRONTIER_MON_KINGDRA_1] = { .species = SPECIES_KINGDRA, .moves = {MOVE_HYDRO_PUMP, MOVE_DRAGON_BREATH, MOVE_ICY_WIND, MOVE_ATTRACT}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [462] = { + [FRONTIER_MON_BLISSEY_1] = { .species = SPECIES_BLISSEY, .moves = {MOVE_TOXIC, MOVE_DOUBLE_TEAM, MOVE_SING, MOVE_SOFT_BOILED}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_BOLD }, - [463] = { + [FRONTIER_MON_MILOTIC_1] = { .species = SPECIES_MILOTIC, .moves = {MOVE_HYDRO_PUMP, MOVE_ICY_WIND, MOVE_RECOVER, MOVE_MIRROR_COAT}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [464] = { + [FRONTIER_MON_ARCANINE_1] = { .species = SPECIES_ARCANINE, .moves = {MOVE_FLAMETHROWER, MOVE_EXTREME_SPEED, MOVE_CRUNCH, MOVE_BODY_SLAM}, .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [465] = { + [FRONTIER_MON_SALAMENCE_1] = { .species = SPECIES_SALAMENCE, .moves = {MOVE_DRAGON_CLAW, MOVE_AERIAL_ACE, MOVE_HEADBUTT, MOVE_ROCK_SLIDE}, .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [466] = { + [FRONTIER_MON_METAGROSS_1] = { .species = SPECIES_METAGROSS, .moves = {MOVE_METEOR_MASH, MOVE_AERIAL_ACE, MOVE_FACADE, MOVE_LIGHT_SCREEN}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [467] = { + [FRONTIER_MON_SLAKING_1] = { .species = SPECIES_SLAKING, .moves = {MOVE_YAWN, MOVE_BULK_UP, MOVE_SWAGGER, MOVE_AERIAL_ACE}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [468] = { + [FRONTIER_MON_DUGTRIO_2] = { .species = SPECIES_DUGTRIO, .moves = {MOVE_EARTHQUAKE, MOVE_ANCIENT_POWER, MOVE_AERIAL_ACE, MOVE_TRI_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [469] = { + [FRONTIER_MON_MEDICHAM_2] = { .species = SPECIES_MEDICHAM, .moves = {MOVE_REVERSAL, MOVE_ENDURE, MOVE_PSYCHIC, MOVE_FAKE_OUT}, .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [470] = { + [FRONTIER_MON_MAROWAK_2] = { .species = SPECIES_MAROWAK, .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_SWORDS_DANCE, MOVE_ICY_WIND}, .itemTableId = BATTLE_FRONTIER_ITEM_THICK_CLUB, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [471] = { + [FRONTIER_MON_QUAGSIRE_2] = { .species = SPECIES_QUAGSIRE, .moves = {MOVE_CURSE, MOVE_ATTRACT, MOVE_YAWN, MOVE_ANCIENT_POWER}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_SASSY }, - [472] = { + [FRONTIER_MON_MISDREAVUS_2] = { .species = SPECIES_MISDREAVUS, .moves = {MOVE_PSYCHIC, MOVE_ATTRACT, MOVE_THUNDER_WAVE, MOVE_CONFUSE_RAY}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, .nature = NATURE_BOLD }, - [473] = { + [FRONTIER_MON_FEAROW_2] = { .species = SPECIES_FEAROW, .moves = {MOVE_DRILL_PECK, MOVE_TRI_ATTACK, MOVE_ATTRACT, MOVE_PURSUIT}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [474] = { + [FRONTIER_MON_GRANBULL_2] = { .species = SPECIES_GRANBULL, .moves = {MOVE_OVERHEAT, MOVE_THUNDERBOLT, MOVE_ICE_PUNCH, MOVE_FACADE}, .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK, .nature = NATURE_QUIET }, - [475] = { + [FRONTIER_MON_JYNX_2] = { .species = SPECIES_JYNX, .moves = {MOVE_PERISH_SONG, MOVE_MEAN_LOOK, MOVE_LOVELY_KISS, MOVE_PROTECT}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_IMPISH }, - [476] = { + [FRONTIER_MON_DUSCLOPS_2] = { .species = SPECIES_DUSCLOPS, .moves = {MOVE_TOXIC, MOVE_CONFUSE_RAY, MOVE_DOUBLE_TEAM, MOVE_PROTECT}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_IMPISH }, - [477] = { + [FRONTIER_MON_DODRIO_2] = { .species = SPECIES_DODRIO, .moves = {MOVE_DRILL_PECK, MOVE_DOUBLE_EDGE, MOVE_FAINT_ATTACK, MOVE_PROTECT}, .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [478] = { + [FRONTIER_MON_MR_MIME_2] = { .species = SPECIES_MR_MIME, .moves = {MOVE_BATON_PASS, MOVE_SWAGGER, MOVE_PSYCH_UP, MOVE_PSYCHIC}, .itemTableId = BATTLE_FRONTIER_ITEM_LIECHI_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [479] = { + [FRONTIER_MON_LANTURN_2] = { .species = SPECIES_LANTURN, .moves = {MOVE_FLAIL, MOVE_ENDURE, MOVE_THUNDERBOLT, MOVE_SURF}, .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [480] = { + [FRONTIER_MON_BRELOOM_2] = { .species = SPECIES_BRELOOM, .moves = {MOVE_GIGA_DRAIN, MOVE_LEECH_SEED, MOVE_FOCUS_PUNCH, MOVE_SPORE}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_DOCILE }, - [481] = { + [FRONTIER_MON_FORRETRESS_2] = { .species = SPECIES_FORRETRESS, .moves = {MOVE_EARTHQUAKE, MOVE_DOUBLE_EDGE, MOVE_COUNTER, MOVE_PROTECT}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [482] = { + [FRONTIER_MON_SKARMORY_2] = { .species = SPECIES_SKARMORY, .moves = {MOVE_SPIKES, MOVE_ROAR, MOVE_DRILL_PECK, MOVE_TOXIC}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_CAREFUL }, - [483] = { + [FRONTIER_MON_WHISCASH_2] = { .species = SPECIES_WHISCASH, .moves = {MOVE_SURF, MOVE_EARTHQUAKE, MOVE_SPARK, MOVE_FUTURE_SIGHT}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [484] = { + [FRONTIER_MON_XATU_2] = { .species = SPECIES_XATU, .moves = {MOVE_FLY, MOVE_TOXIC, MOVE_CONFUSE_RAY, MOVE_ATTRACT}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_IMPISH }, - [485] = { + [FRONTIER_MON_CLEFABLE_2] = { .species = SPECIES_CLEFABLE, .moves = {MOVE_METEOR_MASH, MOVE_COSMIC_POWER, MOVE_DOUBLE_TEAM, MOVE_FOLLOW_ME}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [486] = { + [FRONTIER_MON_HARIYAMA_2] = { .species = SPECIES_HARIYAMA, .moves = {MOVE_CROSS_CHOP, MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, MOVE_THUNDER_PUNCH}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_QUIET }, - [487] = { + [FRONTIER_MON_RAICHU_2] = { .species = SPECIES_RAICHU, .moves = {MOVE_THUNDERBOLT, MOVE_REVERSAL, MOVE_ENDURE, MOVE_AGILITY}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [488] = { + [FRONTIER_MON_DEWGONG_2] = { .species = SPECIES_DEWGONG, .moves = {MOVE_BLIZZARD, MOVE_DOUBLE_EDGE, MOVE_ENCORE, MOVE_DISABLE}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [489] = { + [FRONTIER_MON_MANECTRIC_2] = { .species = SPECIES_MANECTRIC, .moves = {MOVE_THUNDER, MOVE_RAIN_DANCE, MOVE_CRUNCH, MOVE_ROAR}, .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [490] = { + [FRONTIER_MON_VILEPLUME_2] = { .species = SPECIES_VILEPLUME, .moves = {MOVE_INGRAIN, MOVE_DOUBLE_TEAM, MOVE_TOXIC, MOVE_GIGA_DRAIN}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_BOLD }, - [491] = { + [FRONTIER_MON_VICTREEBEL_2] = { .species = SPECIES_VICTREEBEL, .moves = {MOVE_GIGA_DRAIN, MOVE_SLUDGE_BOMB, MOVE_SLEEP_POWDER, MOVE_ATTRACT}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_SERIOUS }, - [492] = { + [FRONTIER_MON_ELECTRODE_2] = { .species = SPECIES_ELECTRODE, .moves = {MOVE_THUNDER, MOVE_RAIN_DANCE, MOVE_DOUBLE_TEAM, MOVE_SWAGGER}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [493] = { + [FRONTIER_MON_EXPLOUD_2] = { .species = SPECIES_EXPLOUD, .moves = {MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, MOVE_EARTHQUAKE, MOVE_COUNTER}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_QUIRKY }, - [494] = { + [FRONTIER_MON_SHIFTRY_2] = { .species = SPECIES_SHIFTRY, .moves = {MOVE_LEECH_SEED, MOVE_DIG, MOVE_DOUBLE_TEAM, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_IMPISH }, - [495] = { + [FRONTIER_MON_GLALIE_2] = { .species = SPECIES_GLALIE, .moves = {MOVE_EXPLOSION, MOVE_ENDURE, MOVE_BODY_SLAM, MOVE_ICY_WIND}, .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_QUIRKY }, - [496] = { + [FRONTIER_MON_LUDICOLO_2] = { .species = SPECIES_LUDICOLO, .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_THUNDER_PUNCH, MOVE_FIRE_PUNCH}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [497] = { + [FRONTIER_MON_HYPNO_2] = { .species = SPECIES_HYPNO, .moves = {MOVE_HYPNOSIS, MOVE_NIGHTMARE, MOVE_DREAM_EATER, MOVE_PSYCHIC}, .itemTableId = BATTLE_FRONTIER_ITEM_TWISTED_SPOON, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_MODEST }, - [498] = { + [FRONTIER_MON_GOLEM_2] = { .species = SPECIES_GOLEM, .moves = {MOVE_FOCUS_PUNCH, MOVE_SUBSTITUTE, MOVE_DOUBLE_TEAM, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [499] = { + [FRONTIER_MON_RHYDON_2] = { .species = SPECIES_RHYDON, .moves = {MOVE_EARTHQUAKE, MOVE_HORN_DRILL, MOVE_ROCK_SLIDE, MOVE_BRICK_BREAK}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [500] = { + [FRONTIER_MON_ALAKAZAM_2] = { .species = SPECIES_ALAKAZAM, .moves = {MOVE_PSYCHIC, MOVE_CALM_MIND, MOVE_THUNDER_WAVE, MOVE_RECOVER}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, .nature = NATURE_MODEST }, - [501] = { + [FRONTIER_MON_WEEZING_2] = { .species = SPECIES_WEEZING, .moves = {MOVE_MEMENTO, MOVE_SLUDGE_BOMB, MOVE_FACADE, MOVE_DESTINY_BOND}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [502] = { + [FRONTIER_MON_KANGASKHAN_2] = { .species = SPECIES_KANGASKHAN, .moves = {MOVE_CRUSH_CLAW, MOVE_SHADOW_BALL, MOVE_ATTRACT, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [503] = { + [FRONTIER_MON_ELECTABUZZ_2] = { .species = SPECIES_ELECTABUZZ, .moves = {MOVE_THUNDER, MOVE_RAIN_DANCE, MOVE_ATTRACT, MOVE_FOCUS_PUNCH}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_QUIRKY }, - [504] = { + [FRONTIER_MON_TAUROS_2] = { .species = SPECIES_TAUROS, .moves = {MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_DOUBLE_TEAM, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [505] = { + [FRONTIER_MON_SLOWBRO_2] = { .species = SPECIES_SLOWBRO, .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_CALM_MIND, MOVE_YAWN}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_MODEST }, - [506] = { + [FRONTIER_MON_SLOWKING_2] = { .species = SPECIES_SLOWKING, .moves = {MOVE_YAWN, MOVE_THUNDER_WAVE, MOVE_SURF, MOVE_PSYCHIC}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, .nature = NATURE_MODEST }, - [507] = { + [FRONTIER_MON_MILTANK_2] = { .species = SPECIES_MILTANK, .moves = {MOVE_FOCUS_PUNCH, MOVE_SHADOW_BALL, MOVE_ATTRACT, MOVE_THUNDER_WAVE}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_CAREFUL }, - [508] = { + [FRONTIER_MON_ALTARIA_2] = { .species = SPECIES_ALTARIA, .moves = {MOVE_PERISH_SONG, MOVE_DRAGON_BREATH, MOVE_PURSUIT, MOVE_ATTRACT}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_BOLD }, - [509] = { + [FRONTIER_MON_NIDOQUEEN_2] = { .species = SPECIES_NIDOQUEEN, .moves = {MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE, MOVE_ROCK_SLIDE}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [510] = { + [FRONTIER_MON_NIDOKING_2] = { .species = SPECIES_NIDOKING, .moves = {MOVE_MEGA_KICK, MOVE_EARTHQUAKE, MOVE_SHADOW_BALL, MOVE_BRICK_BREAK}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [511] = { + [FRONTIER_MON_MAGMAR_2] = { .species = SPECIES_MAGMAR, .moves = {MOVE_FIRE_BLAST, MOVE_SMOKESCREEN, MOVE_THUNDER_PUNCH, MOVE_CONFUSE_RAY}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [512] = { + [FRONTIER_MON_CRADILY_2] = { .species = SPECIES_CRADILY, .moves = {MOVE_EARTHQUAKE, MOVE_ANCIENT_POWER, MOVE_SWAGGER, MOVE_PSYCH_UP}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [513] = { + [FRONTIER_MON_ARMALDO_2] = { .species = SPECIES_ARMALDO, .moves = {MOVE_IRON_TAIL, MOVE_ANCIENT_POWER, MOVE_BRICK_BREAK, MOVE_KNOCK_OFF}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [514] = { + [FRONTIER_MON_GOLDUCK_2] = { .species = SPECIES_GOLDUCK, .moves = {MOVE_CROSS_CHOP, MOVE_SURF, MOVE_SWAGGER, MOVE_PSYCH_UP}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_QUIRKY }, - [515] = { + [FRONTIER_MON_RAPIDASH_2] = { .species = SPECIES_RAPIDASH, .moves = {MOVE_FIRE_BLAST, MOVE_BOUNCE, MOVE_DOUBLE_TEAM, MOVE_ATTRACT}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [516] = { + [FRONTIER_MON_MUK_2] = { .species = SPECIES_MUK, .moves = {MOVE_CURSE, MOVE_REST, MOVE_SLUDGE_BOMB, MOVE_DYNAMIC_PUNCH}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [517] = { + [FRONTIER_MON_GENGAR_2] = { .species = SPECIES_GENGAR, .moves = {MOVE_SLUDGE_BOMB, MOVE_SHADOW_BALL, MOVE_CONFUSE_RAY, MOVE_WILL_O_WISP}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [518] = { + [FRONTIER_MON_AMPHAROS_2] = { .species = SPECIES_AMPHAROS, .moves = {MOVE_THUNDER_PUNCH, MOVE_FIRE_PUNCH, MOVE_FOCUS_PUNCH, MOVE_THUNDER_WAVE}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [519] = { + [FRONTIER_MON_SCIZOR_2] = { .species = SPECIES_SCIZOR, .moves = {MOVE_SILVER_WIND, MOVE_STEEL_WING, MOVE_SWORDS_DANCE, MOVE_LIGHT_SCREEN}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [520] = { + [FRONTIER_MON_HERACROSS_2] = { .species = SPECIES_HERACROSS, .moves = {MOVE_MEGAHORN, MOVE_EARTHQUAKE, MOVE_ATTRACT, MOVE_BULK_UP}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, .nature = NATURE_JOLLY }, - [521] = { + [FRONTIER_MON_URSARING_2] = { .species = SPECIES_URSARING, .moves = {MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_BRICK_BREAK, MOVE_COUNTER}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [522] = { + [FRONTIER_MON_HOUNDOOM_2] = { .species = SPECIES_HOUNDOOM, .moves = {MOVE_FIRE_BLAST, MOVE_CRUNCH, MOVE_ROAR, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [523] = { + [FRONTIER_MON_DONPHAN_2] = { .species = SPECIES_DONPHAN, .moves = {MOVE_FLAIL, MOVE_ENDURE, MOVE_EARTHQUAKE, MOVE_ROCK_TOMB}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_JOLLY }, - [524] = { + [FRONTIER_MON_CLAYDOL_2] = { .species = SPECIES_CLAYDOL, .moves = {MOVE_PSYCHIC, MOVE_EARTHQUAKE, MOVE_DOUBLE_TEAM, MOVE_COSMIC_POWER}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_CALM }, - [525] = { + [FRONTIER_MON_WAILORD_2] = { .species = SPECIES_WAILORD, .moves = {MOVE_DOUBLE_EDGE, MOVE_REST, MOVE_CURSE, MOVE_AMNESIA}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [526] = { + [FRONTIER_MON_NINETALES_2] = { .species = SPECIES_NINETALES, .moves = {MOVE_HEAT_WAVE, MOVE_BODY_SLAM, MOVE_GRUDGE, MOVE_SUNNY_DAY}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_QUIRKY }, - [527] = { + [FRONTIER_MON_MACHAMP_2] = { .species = SPECIES_MACHAMP, .moves = {MOVE_CROSS_CHOP, MOVE_EARTHQUAKE, MOVE_BULK_UP, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [528] = { + [FRONTIER_MON_SHUCKLE_2] = { .species = SPECIES_SHUCKLE, .moves = {MOVE_SANDSTORM, MOVE_DIG, MOVE_FLASH, MOVE_DOUBLE_TEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_CAREFUL }, - [529] = { + [FRONTIER_MON_STEELIX_2] = { .species = SPECIES_STEELIX, .moves = {MOVE_EARTHQUAKE, MOVE_DRAGON_BREATH, MOVE_SANDSTORM, MOVE_BLOCK}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [530] = { + [FRONTIER_MON_TENTACRUEL_2] = { .species = SPECIES_TENTACRUEL, .moves = {MOVE_TOXIC, MOVE_GIGA_DRAIN, MOVE_CONFUSE_RAY, MOVE_SURF}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [531] = { + [FRONTIER_MON_AERODACTYL_2] = { .species = SPECIES_AERODACTYL, .moves = {MOVE_HYPER_BEAM, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE, MOVE_ANCIENT_POWER}, .itemTableId = BATTLE_FRONTIER_ITEM_CHOICE_BAND, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [532] = { + [FRONTIER_MON_PORYGON2_2] = { .species = SPECIES_PORYGON2, .moves = {MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, MOVE_THUNDER_WAVE, MOVE_RECOVER}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [533] = { + [FRONTIER_MON_GARDEVOIR_2] = { .species = SPECIES_GARDEVOIR, .moves = {MOVE_PSYCHIC, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [534] = { + [FRONTIER_MON_EXEGGUTOR_2] = { .species = SPECIES_EXEGGUTOR, .moves = {MOVE_RETURN, MOVE_CURSE, MOVE_SLEEP_POWDER, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [535] = { + [FRONTIER_MON_STARMIE_2] = { .species = SPECIES_STARMIE, .moves = {MOVE_HYDRO_PUMP, MOVE_THUNDER, MOVE_RAIN_DANCE, MOVE_RECOVER}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [536] = { + [FRONTIER_MON_FLYGON_2] = { .species = SPECIES_FLYGON, .moves = {MOVE_SOLAR_BEAM, MOVE_FIRE_BLAST, MOVE_CRUNCH, MOVE_SUNNY_DAY}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [537] = { + [FRONTIER_MON_VENUSAUR_2] = { .species = SPECIES_VENUSAUR, .moves = {MOVE_LEECH_SEED, MOVE_GIGA_DRAIN, MOVE_DOUBLE_TEAM, MOVE_LIGHT_SCREEN}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_BOLD }, - [538] = { + [FRONTIER_MON_VAPOREON_2] = { .species = SPECIES_VAPOREON, .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_BODY_SLAM, MOVE_SHADOW_BALL}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [539] = { + [FRONTIER_MON_JOLTEON_2] = { .species = SPECIES_JOLTEON, .moves = {MOVE_THUNDERBOLT, MOVE_DIG, MOVE_DOUBLE_KICK, MOVE_ROAR}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [540] = { + [FRONTIER_MON_FLAREON_2] = { .species = SPECIES_FLAREON, .moves = {MOVE_CURSE, MOVE_ATTRACT, MOVE_DOUBLE_EDGE, MOVE_SHADOW_BALL}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [541] = { + [FRONTIER_MON_MEGANIUM_2] = { .species = SPECIES_MEGANIUM, .moves = {MOVE_LEECH_SEED, MOVE_SUBSTITUTE, MOVE_DOUBLE_TEAM, MOVE_GRASS_WHISTLE}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_CALM }, - [542] = { + [FRONTIER_MON_ESPEON_2] = { .species = SPECIES_ESPEON, .moves = {MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_CALM_MIND, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [543] = { + [FRONTIER_MON_UMBREON_2] = { .species = SPECIES_UMBREON, .moves = {MOVE_CURSE, MOVE_SCREECH, MOVE_DOUBLE_TEAM, MOVE_DOUBLE_EDGE}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [544] = { + [FRONTIER_MON_BLASTOISE_2] = { .species = SPECIES_BLASTOISE, .moves = {MOVE_HYDRO_PUMP, MOVE_MEGA_KICK, MOVE_BRICK_BREAK, MOVE_MIRROR_COAT}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_BRAVE }, - [545] = { + [FRONTIER_MON_FERALIGATR_2] = { .species = SPECIES_FERALIGATR, .moves = {MOVE_SURF, MOVE_DRAGON_CLAW, MOVE_BRICK_BREAK, MOVE_SCARY_FACE}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_SASSY }, - [546] = { + [FRONTIER_MON_AGGRON_2] = { .species = SPECIES_AGGRON, .moves = {MOVE_FOCUS_PUNCH, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_THUNDER_WAVE}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [547] = { + [FRONTIER_MON_BLAZIKEN_2] = { .species = SPECIES_BLAZIKEN, .moves = {MOVE_BLAZE_KICK, MOVE_MEGA_KICK, MOVE_THUNDER_PUNCH, MOVE_BRICK_BREAK}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [548] = { + [FRONTIER_MON_WALREIN_2] = { .species = SPECIES_WALREIN, .moves = {MOVE_EARTHQUAKE, MOVE_ICE_BEAM, MOVE_CURSE, MOVE_DOUBLE_TEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [549] = { + [FRONTIER_MON_SCEPTILE_2] = { .species = SPECIES_SCEPTILE, .moves = {MOVE_LEAF_BLADE, MOVE_THUNDER_PUNCH, MOVE_ATTRACT, MOVE_DOUBLE_TEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [550] = { + [FRONTIER_MON_CHARIZARD_2] = { .species = SPECIES_CHARIZARD, .moves = {MOVE_EARTHQUAKE, MOVE_AERIAL_ACE, MOVE_DRAGON_DANCE, MOVE_SMOKESCREEN}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [551] = { + [FRONTIER_MON_TYPHLOSION_2] = { .species = SPECIES_TYPHLOSION, .moves = {MOVE_FLAMETHROWER, MOVE_THUNDER_PUNCH, MOVE_AERIAL_ACE, MOVE_ROCK_SLIDE}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [552] = { + [FRONTIER_MON_LAPRAS_2] = { .species = SPECIES_LAPRAS, .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_BODY_SLAM, MOVE_ROAR}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_TIMID }, - [553] = { + [FRONTIER_MON_CROBAT_2] = { .species = SPECIES_CROBAT, .moves = {MOVE_TOXIC, MOVE_GIGA_DRAIN, MOVE_CONFUSE_RAY, MOVE_DOUBLE_TEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_CALM }, - [554] = { + [FRONTIER_MON_SWAMPERT_2] = { .species = SPECIES_SWAMPERT, .moves = {MOVE_SURF, MOVE_EARTHQUAKE, MOVE_COUNTER, MOVE_MIRROR_COAT}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [555] = { + [FRONTIER_MON_GYARADOS_2] = { .species = SPECIES_GYARADOS, .moves = {MOVE_HYDRO_PUMP, MOVE_THUNDERBOLT, MOVE_FIRE_BLAST, MOVE_BLIZZARD}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [556] = { + [FRONTIER_MON_SNORLAX_2] = { .species = SPECIES_SNORLAX, .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_CURSE, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [557] = { + [FRONTIER_MON_KINGDRA_2] = { .species = SPECIES_KINGDRA, .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_DRAGON_BREATH, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [558] = { + [FRONTIER_MON_BLISSEY_2] = { .species = SPECIES_BLISSEY, .moves = {MOVE_SEISMIC_TOSS, MOVE_SING, MOVE_ATTRACT, MOVE_SUBSTITUTE}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_BOLD }, - [559] = { + [FRONTIER_MON_MILOTIC_2] = { .species = SPECIES_MILOTIC, .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_SAFEGUARD, MOVE_MIRROR_COAT}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [560] = { + [FRONTIER_MON_ARCANINE_2] = { .species = SPECIES_ARCANINE, .moves = {MOVE_FIRE_BLAST, MOVE_SUNNY_DAY, MOVE_CRUNCH, MOVE_ROAR}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_DOCILE }, - [561] = { + [FRONTIER_MON_SALAMENCE_2] = { .species = SPECIES_SALAMENCE, .moves = {MOVE_DOUBLE_EDGE, MOVE_CRUNCH, MOVE_SWAGGER, MOVE_PROTECT}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [562] = { + [FRONTIER_MON_METAGROSS_2] = { .species = SPECIES_METAGROSS, .moves = {MOVE_EARTHQUAKE, MOVE_METEOR_MASH, MOVE_PSYCH_UP, MOVE_SWAGGER}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [563] = { + [FRONTIER_MON_SLAKING_2] = { .species = SPECIES_SLAKING, .moves = {MOVE_MEGA_KICK, MOVE_SHADOW_BALL, MOVE_YAWN, MOVE_AMNESIA}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_ADAMANT }, - [564] = { + [FRONTIER_MON_DUGTRIO_3] = { .species = SPECIES_DUGTRIO, .moves = {MOVE_EARTHQUAKE, MOVE_DOUBLE_EDGE, MOVE_SLUDGE_BOMB, MOVE_FISSURE}, .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [565] = { + [FRONTIER_MON_MEDICHAM_3] = { .species = SPECIES_MEDICHAM, .moves = {MOVE_DYNAMIC_PUNCH, MOVE_THUNDER_PUNCH, MOVE_ICE_PUNCH, MOVE_FIRE_PUNCH}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_HARDY }, - [566] = { + [FRONTIER_MON_MISDREAVUS_3] = { .species = SPECIES_MISDREAVUS, .moves = {MOVE_PERISH_SONG, MOVE_MEAN_LOOK, MOVE_THUNDER_WAVE, MOVE_CONFUSE_RAY}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_BOLD }, - [567] = { + [FRONTIER_MON_FEAROW_3] = { .species = SPECIES_FEAROW, .moves = {MOVE_DRILL_PECK, MOVE_RETURN, MOVE_STEEL_WING, MOVE_FAINT_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [568] = { + [FRONTIER_MON_GRANBULL_3] = { .species = SPECIES_GRANBULL, .moves = {MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_SLUDGE_BOMB, MOVE_ROCK_SLIDE}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [569] = { + [FRONTIER_MON_JYNX_3] = { .species = SPECIES_JYNX, .moves = {MOVE_DREAM_EATER, MOVE_LOVELY_KISS, MOVE_ATTRACT, MOVE_SUBSTITUTE}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [570] = { + [FRONTIER_MON_DUSCLOPS_3] = { .species = SPECIES_DUSCLOPS, .moves = {MOVE_PSYCH_UP, MOVE_SWAGGER, MOVE_SHADOW_BALL, MOVE_EARTHQUAKE}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [571] = { + [FRONTIER_MON_DODRIO_3] = { .species = SPECIES_DODRIO, .moves = {MOVE_DOUBLE_EDGE, MOVE_DRILL_PECK, MOVE_STEEL_WING, MOVE_FAINT_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [572] = { + [FRONTIER_MON_MR_MIME_3] = { .species = SPECIES_MR_MIME, .moves = {MOVE_TRICK, MOVE_TORMENT, MOVE_PSYCHIC, MOVE_THUNDERBOLT}, .itemTableId = BATTLE_FRONTIER_ITEM_CHOICE_BAND, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [573] = { + [FRONTIER_MON_LANTURN_3] = { .species = SPECIES_LANTURN, .moves = {MOVE_HYDRO_PUMP, MOVE_THUNDER, MOVE_CONFUSE_RAY, MOVE_RAIN_DANCE}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [574] = { + [FRONTIER_MON_BRELOOM_3] = { .species = SPECIES_BRELOOM, .moves = {MOVE_IRON_TAIL, MOVE_FOCUS_PUNCH, MOVE_ATTRACT, MOVE_SPORE}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [575] = { + [FRONTIER_MON_FORRETRESS_3] = { .species = SPECIES_FORRETRESS, .moves = {MOVE_EXPLOSION, MOVE_EARTHQUAKE, MOVE_GIGA_DRAIN, MOVE_ZAP_CANNON}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_QUIET }, - [576] = { + [FRONTIER_MON_WHISCASH_3] = { .species = SPECIES_WHISCASH, .moves = {MOVE_SLEEP_TALK, MOVE_REST, MOVE_SURF, MOVE_FISSURE}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_HARDY }, - [577] = { + [FRONTIER_MON_XATU_3] = { .species = SPECIES_XATU, .moves = {MOVE_DRILL_PECK, MOVE_PSYCHIC, MOVE_GIGA_DRAIN, MOVE_STEEL_WING}, .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_JOLLY }, - [578] = { + [FRONTIER_MON_SKARMORY_3] = { .species = SPECIES_SKARMORY, .moves = {MOVE_TOXIC, MOVE_CURSE, MOVE_REST, MOVE_FLY}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_CAREFUL }, - [579] = { + [FRONTIER_MON_MAROWAK_3] = { .species = SPECIES_MAROWAK, .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_SWORDS_DANCE, MOVE_BRICK_BREAK}, .itemTableId = BATTLE_FRONTIER_ITEM_THICK_CLUB, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [580] = { + [FRONTIER_MON_QUAGSIRE_3] = { .species = SPECIES_QUAGSIRE, .moves = {MOVE_EARTHQUAKE, MOVE_SLUDGE_BOMB, MOVE_DOUBLE_EDGE, MOVE_CURSE}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [581] = { + [FRONTIER_MON_CLEFABLE_3] = { .species = SPECIES_CLEFABLE, .moves = {MOVE_THUNDERBOLT, MOVE_ICE_BEAM, MOVE_FLAMETHROWER, MOVE_MAGICAL_LEAF}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, .nature = NATURE_MODEST }, - [582] = { + [FRONTIER_MON_HARIYAMA_3] = { .species = SPECIES_HARIYAMA, .moves = {MOVE_CROSS_CHOP, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_FACADE}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [583] = { + [FRONTIER_MON_RAICHU_3] = { .species = SPECIES_RAICHU, .moves = {MOVE_THUNDER, MOVE_RAIN_DANCE, MOVE_IRON_TAIL, MOVE_ATTRACT}, .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_DOCILE }, - [584] = { + [FRONTIER_MON_DEWGONG_3] = { .species = SPECIES_DEWGONG, .moves = {MOVE_HORN_DRILL, MOVE_SHEER_COLD, MOVE_SLEEP_TALK, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_BOLD }, - [585] = { + [FRONTIER_MON_MANECTRIC_3] = { .species = SPECIES_MANECTRIC, .moves = {MOVE_THUNDERBOLT, MOVE_IRON_TAIL, MOVE_THUNDER_WAVE, MOVE_ROAR}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_QUIRKY }, - [586] = { + [FRONTIER_MON_VILEPLUME_3] = { .species = SPECIES_VILEPLUME, .moves = {MOVE_ATTRACT, MOVE_STUN_SPORE, MOVE_SLUDGE_BOMB, MOVE_GIGA_DRAIN}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_QUIRKY }, - [587] = { + [FRONTIER_MON_VICTREEBEL_3] = { .species = SPECIES_VICTREEBEL, .moves = {MOVE_STUN_SPORE, MOVE_INGRAIN, MOVE_GIGA_DRAIN, MOVE_SLUDGE_BOMB}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_QUIRKY }, - [588] = { + [FRONTIER_MON_ELECTRODE_3] = { .species = SPECIES_ELECTRODE, .moves = {MOVE_EXPLOSION, MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_ENDURE}, .itemTableId = BATTLE_FRONTIER_ITEM_LIECHI_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_NAUGHTY }, - [589] = { + [FRONTIER_MON_EXPLOUD_3] = { .species = SPECIES_EXPLOUD, .moves = {MOVE_OVERHEAT, MOVE_ICE_BEAM, MOVE_THUNDER_PUNCH, MOVE_EXTRASENSORY}, .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [590] = { + [FRONTIER_MON_SHIFTRY_3] = { .species = SPECIES_SHIFTRY, .moves = {MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, MOVE_EXPLOSION, MOVE_SYNTHESIS}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_QUIRKY }, - [591] = { + [FRONTIER_MON_GLALIE_3] = { .species = SPECIES_GLALIE, .moves = {MOVE_BLIZZARD, MOVE_EARTHQUAKE, MOVE_DOUBLE_EDGE, MOVE_SHADOW_BALL}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [592] = { + [FRONTIER_MON_LUDICOLO_3] = { .species = SPECIES_LUDICOLO, .moves = {MOVE_LEECH_SEED, MOVE_RAIN_DANCE, MOVE_DOUBLE_TEAM, MOVE_GIGA_DRAIN}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_BOLD }, - [593] = { + [FRONTIER_MON_HYPNO_3] = { .species = SPECIES_HYPNO, .moves = {MOVE_PSYCH_UP, MOVE_SWAGGER, MOVE_MEGA_KICK, MOVE_SHADOW_BALL}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [594] = { + [FRONTIER_MON_GOLEM_3] = { .species = SPECIES_GOLEM, .moves = {MOVE_EXPLOSION, MOVE_EARTHQUAKE, MOVE_FLAMETHROWER, MOVE_BRICK_BREAK}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [595] = { + [FRONTIER_MON_RHYDON_3] = { .species = SPECIES_RHYDON, .moves = {MOVE_MEGAHORN, MOVE_CRUSH_CLAW, MOVE_EARTHQUAKE, MOVE_HORN_DRILL}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [596] = { + [FRONTIER_MON_ALAKAZAM_3] = { .species = SPECIES_ALAKAZAM, .moves = {MOVE_TRICK, MOVE_DISABLE, MOVE_PSYCHIC, MOVE_SKILL_SWAP}, .itemTableId = BATTLE_FRONTIER_ITEM_CHOICE_BAND, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, .nature = NATURE_MODEST }, - [597] = { + [FRONTIER_MON_WEEZING_3] = { .species = SPECIES_WEEZING, .moves = {MOVE_EXPLOSION, MOVE_SLUDGE_BOMB, MOVE_FLAMETHROWER, MOVE_THUNDERBOLT}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_QUIRKY }, - [598] = { + [FRONTIER_MON_KANGASKHAN_3] = { .species = SPECIES_KANGASKHAN, .moves = {MOVE_REVERSAL, MOVE_ENDURE, MOVE_THUNDERBOLT, MOVE_EARTHQUAKE}, .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_JOLLY }, - [599] = { + [FRONTIER_MON_ELECTABUZZ_3] = { .species = SPECIES_ELECTABUZZ, .moves = {MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, MOVE_THUNDERBOLT, MOVE_CROSS_CHOP}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_QUIRKY }, - [600] = { + [FRONTIER_MON_TAUROS_3] = { .species = SPECIES_TAUROS, .moves = {MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_FLAMETHROWER, MOVE_ICE_BEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [601] = { + [FRONTIER_MON_SLOWBRO_3] = { .species = SPECIES_SLOWBRO, .moves = {MOVE_SURF, MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_ATTRACT}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK, .nature = NATURE_QUIET }, - [602] = { + [FRONTIER_MON_SLOWKING_3] = { .species = SPECIES_SLOWKING, .moves = {MOVE_PSYCHIC, MOVE_SURF, MOVE_ICE_BEAM, MOVE_EARTHQUAKE}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_QUIET }, - [603] = { + [FRONTIER_MON_MILTANK_3] = { .species = SPECIES_MILTANK, .moves = {MOVE_REVERSAL, MOVE_ENDURE, MOVE_EARTHQUAKE, MOVE_SHADOW_BALL}, .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [604] = { + [FRONTIER_MON_ALTARIA_3] = { .species = SPECIES_ALTARIA, .moves = {MOVE_SING, MOVE_DRAGON_DANCE, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [605] = { + [FRONTIER_MON_NIDOQUEEN_3] = { .species = SPECIES_NIDOQUEEN, .moves = {MOVE_THUNDERBOLT, MOVE_FLAMETHROWER, MOVE_ICE_BEAM, MOVE_CRUNCH}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [606] = { + [FRONTIER_MON_NIDOKING_3] = { .species = SPECIES_NIDOKING, .moves = {MOVE_HORN_DRILL, MOVE_FIRE_BLAST, MOVE_BLIZZARD, MOVE_SURF}, .itemTableId = BATTLE_FRONTIER_ITEM_LEPPA_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [607] = { + [FRONTIER_MON_MAGMAR_3] = { .species = SPECIES_MAGMAR, .moves = {MOVE_MEGA_KICK, MOVE_CROSS_CHOP, MOVE_IRON_TAIL, MOVE_COUNTER}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_IMPISH }, - [608] = { + [FRONTIER_MON_CRADILY_3] = { .species = SPECIES_CRADILY, .moves = {MOVE_SUBSTITUTE, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, MOVE_RECOVER}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, .nature = NATURE_MODEST }, - [609] = { + [FRONTIER_MON_ARMALDO_3] = { .species = SPECIES_ARMALDO, .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_BRICK_BREAK, MOVE_SWORDS_DANCE}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [610] = { + [FRONTIER_MON_GOLDUCK_3] = { .species = SPECIES_GOLDUCK, .moves = {MOVE_HYDRO_PUMP, MOVE_CROSS_CHOP, MOVE_BLIZZARD, MOVE_PROTECT}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [611] = { + [FRONTIER_MON_RAPIDASH_3] = { .species = SPECIES_RAPIDASH, .moves = {MOVE_OVERHEAT, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, MOVE_HYPNOSIS}, .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [612] = { + [FRONTIER_MON_MUK_3] = { .species = SPECIES_MUK, .moves = {MOVE_SLUDGE_BOMB, MOVE_THUNDERBOLT, MOVE_FLAMETHROWER, MOVE_ICE_PUNCH}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, .nature = NATURE_QUIET }, - [613] = { + [FRONTIER_MON_GENGAR_3] = { .species = SPECIES_GENGAR, .moves = {MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_GIGA_DRAIN, MOVE_SKILL_SWAP}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [614] = { + [FRONTIER_MON_AMPHAROS_3] = { .species = SPECIES_AMPHAROS, .moves = {MOVE_THUNDERBOLT, MOVE_MEGA_KICK, MOVE_IRON_TAIL, MOVE_BRICK_BREAK}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [615] = { + [FRONTIER_MON_SCIZOR_3] = { .species = SPECIES_SCIZOR, .moves = {MOVE_REVERSAL, MOVE_ENDURE, MOVE_AGILITY, MOVE_SLASH}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_CAREFUL }, - [616] = { + [FRONTIER_MON_HERACROSS_3] = { .species = SPECIES_HERACROSS, .moves = {MOVE_MEGAHORN, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_BRICK_BREAK}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [617] = { + [FRONTIER_MON_URSARING_3] = { .species = SPECIES_URSARING, .moves = {MOVE_FIRE_PUNCH, MOVE_THUNDER_PUNCH, MOVE_ICE_PUNCH, MOVE_CRUNCH}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [618] = { + [FRONTIER_MON_HOUNDOOM_3] = { .species = SPECIES_HOUNDOOM, .moves = {MOVE_OVERHEAT, MOVE_SHADOW_BALL, MOVE_SLUDGE_BOMB, MOVE_DOUBLE_EDGE}, .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_QUIRKY }, - [619] = { + [FRONTIER_MON_DONPHAN_3] = { .species = SPECIES_DONPHAN, .moves = {MOVE_FISSURE, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_SECRET_POWER}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [620] = { + [FRONTIER_MON_CLAYDOL_3] = { .species = SPECIES_CLAYDOL, .moves = {MOVE_PSYCHIC, MOVE_ICE_BEAM, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [621] = { + [FRONTIER_MON_WAILORD_3] = { .species = SPECIES_WAILORD, .moves = {MOVE_HYDRO_PUMP, MOVE_FISSURE, MOVE_DOUBLE_TEAM, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [622] = { + [FRONTIER_MON_NINETALES_3] = { .species = SPECIES_NINETALES, .moves = {MOVE_FIRE_BLAST, MOVE_IRON_TAIL, MOVE_CONFUSE_RAY, MOVE_ATTRACT}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_QUIRKY }, - [623] = { + [FRONTIER_MON_MACHAMP_3] = { .species = SPECIES_MACHAMP, .moves = {MOVE_CROSS_CHOP, MOVE_FIRE_BLAST, MOVE_THUNDER_PUNCH, MOVE_ICE_PUNCH}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [624] = { + [FRONTIER_MON_SHUCKLE_3] = { .species = SPECIES_SHUCKLE, .moves = {MOVE_SUBSTITUTE, MOVE_ATTRACT, MOVE_TOXIC, MOVE_DOUBLE_TEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_CAREFUL }, - [625] = { + [FRONTIER_MON_STEELIX_3] = { .species = SPECIES_STEELIX, .moves = {MOVE_EARTHQUAKE, MOVE_BODY_SLAM, MOVE_ROCK_SLIDE, MOVE_EXPLOSION}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [626] = { + [FRONTIER_MON_TENTACRUEL_3] = { .species = SPECIES_TENTACRUEL, .moves = {MOVE_SURF, MOVE_GIGA_DRAIN, MOVE_ICE_BEAM, MOVE_MIRROR_COAT}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE, .nature = NATURE_MODEST }, - [627] = { + [FRONTIER_MON_AERODACTYL_3] = { .species = SPECIES_AERODACTYL, .moves = {MOVE_DOUBLE_EDGE, MOVE_ROCK_SLIDE, MOVE_FIRE_BLAST, MOVE_DRAGON_CLAW}, .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [628] = { + [FRONTIER_MON_PORYGON2_3] = { .species = SPECIES_PORYGON2, .moves = {MOVE_PSYCHIC, MOVE_TRI_ATTACK, MOVE_THUNDER_WAVE, MOVE_RECOVER}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [629] = { + [FRONTIER_MON_GARDEVOIR_3] = { .species = SPECIES_GARDEVOIR, .moves = {MOVE_PSYCHIC, MOVE_ICE_PUNCH, MOVE_FIRE_PUNCH, MOVE_MAGICAL_LEAF}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [630] = { + [FRONTIER_MON_EXEGGUTOR_3] = { .species = SPECIES_EXEGGUTOR, .moves = {MOVE_LEECH_SEED, MOVE_GIGA_DRAIN, MOVE_TOXIC, MOVE_EXPLOSION}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [631] = { + [FRONTIER_MON_STARMIE_3] = { .species = SPECIES_STARMIE, .moves = {MOVE_SURF, MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_ICE_BEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [632] = { + [FRONTIER_MON_FLYGON_3] = { .species = SPECIES_FLYGON, .moves = {MOVE_EARTHQUAKE, MOVE_DRAGON_CLAW, MOVE_FLAMETHROWER, MOVE_GIGA_DRAIN}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [633] = { + [FRONTIER_MON_VENUSAUR_3] = { .species = SPECIES_VENUSAUR, .moves = {MOVE_DOUBLE_EDGE, MOVE_SLUDGE_BOMB, MOVE_EARTHQUAKE, MOVE_SLEEP_POWDER}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [634] = { + [FRONTIER_MON_VAPOREON_3] = { .species = SPECIES_VAPOREON, .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_ACID_ARMOR, MOVE_BATON_PASS}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_CALM }, - [635] = { + [FRONTIER_MON_JOLTEON_3] = { .species = SPECIES_JOLTEON, .moves = {MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_AGILITY, MOVE_BATON_PASS}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_BOLD }, - [636] = { + [FRONTIER_MON_FLAREON_3] = { .species = SPECIES_FLAREON, .moves = {MOVE_SHADOW_BALL, MOVE_FLAIL, MOVE_ENDURE, MOVE_OVERHEAT}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_JOLLY }, - [637] = { + [FRONTIER_MON_MEGANIUM_3] = { .species = SPECIES_MEGANIUM, .moves = {MOVE_EARTHQUAKE, MOVE_FLAIL, MOVE_ENDURE, MOVE_GIGA_DRAIN}, .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_JOLLY }, - [638] = { + [FRONTIER_MON_ESPEON_3] = { .species = SPECIES_ESPEON, .moves = {MOVE_PSYCHIC, MOVE_BITE, MOVE_WISH, MOVE_REFLECT}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [639] = { + [FRONTIER_MON_UMBREON_3] = { .species = SPECIES_UMBREON, .moves = {MOVE_SWAGGER, MOVE_PSYCH_UP, MOVE_ATTRACT, MOVE_SHADOW_BALL}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_BOLD }, - [640] = { + [FRONTIER_MON_BLASTOISE_3] = { .species = SPECIES_BLASTOISE, .moves = {MOVE_SURF, MOVE_EARTHQUAKE, MOVE_ICE_BEAM, MOVE_COUNTER}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [641] = { + [FRONTIER_MON_FERALIGATR_3] = { .species = SPECIES_FERALIGATR, .moves = {MOVE_HYDRO_PUMP, MOVE_CRUNCH, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [642] = { + [FRONTIER_MON_AGGRON_3] = { .species = SPECIES_AGGRON, .moves = {MOVE_SURF, MOVE_THUNDER, MOVE_FIRE_BLAST, MOVE_BLIZZARD}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [643] = { + [FRONTIER_MON_BLAZIKEN_3] = { .species = SPECIES_BLAZIKEN, .moves = {MOVE_OVERHEAT, MOVE_EARTHQUAKE, MOVE_ENDURE, MOVE_REVERSAL}, .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [644] = { + [FRONTIER_MON_WALREIN_3] = { .species = SPECIES_WALREIN, .moves = {MOVE_SHEER_COLD, MOVE_FISSURE, MOVE_SURF, MOVE_ATTRACT}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [645] = { + [FRONTIER_MON_SCEPTILE_3] = { .species = SPECIES_SCEPTILE, .moves = {MOVE_LEAF_BLADE, MOVE_EARTHQUAKE, MOVE_CRUSH_CLAW, MOVE_AERIAL_ACE}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [646] = { + [FRONTIER_MON_CHARIZARD_3] = { .species = SPECIES_CHARIZARD, .moves = {MOVE_FLAMETHROWER, MOVE_DRAGON_CLAW, MOVE_BITE, MOVE_BRICK_BREAK}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [647] = { + [FRONTIER_MON_TYPHLOSION_3] = { .species = SPECIES_TYPHLOSION, .moves = {MOVE_EARTHQUAKE, MOVE_OVERHEAT, MOVE_ENDURE, MOVE_REVERSAL}, .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [648] = { + [FRONTIER_MON_LAPRAS_3] = { .species = SPECIES_LAPRAS, .moves = {MOVE_DOUBLE_EDGE, MOVE_PSYCHIC, MOVE_CONFUSE_RAY, MOVE_DRAGON_DANCE}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [649] = { + [FRONTIER_MON_CROBAT_3] = { .species = SPECIES_CROBAT, .moves = {MOVE_AIR_CUTTER, MOVE_DOUBLE_EDGE, MOVE_SHADOW_BALL, MOVE_SCREECH}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [650] = { + [FRONTIER_MON_SWAMPERT_3] = { .species = SPECIES_SWAMPERT, .moves = {MOVE_SURF, MOVE_EARTHQUAKE, MOVE_ICE_BEAM, MOVE_COUNTER}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_BRAVE }, - [651] = { + [FRONTIER_MON_GYARADOS_3] = { .species = SPECIES_GYARADOS, .moves = {MOVE_SURF, MOVE_THUNDER, MOVE_RAIN_DANCE, MOVE_EARTHQUAKE}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_QUIRKY }, - [652] = { + [FRONTIER_MON_SNORLAX_3] = { .species = SPECIES_SNORLAX, .moves = {MOVE_MEGA_KICK, MOVE_SHADOW_BALL, MOVE_SWAGGER, MOVE_PSYCH_UP}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_ADAMANT }, - [653] = { + [FRONTIER_MON_KINGDRA_3] = { .species = SPECIES_KINGDRA, .moves = {MOVE_FLAIL, MOVE_HYDRO_PUMP, MOVE_DRAGON_DANCE, MOVE_ENDURE}, .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [654] = { + [FRONTIER_MON_BLISSEY_3] = { .species = SPECIES_BLISSEY, .moves = {MOVE_FIRE_BLAST, MOVE_BLIZZARD, MOVE_CALM_MIND, MOVE_SOFT_BOILED}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_BOLD }, - [655] = { + [FRONTIER_MON_MILOTIC_3] = { .species = SPECIES_MILOTIC, .moves = {MOVE_SURF, MOVE_BLIZZARD, MOVE_ATTRACT, MOVE_RECOVER}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_BOLD }, - [656] = { + [FRONTIER_MON_ARCANINE_3] = { .species = SPECIES_ARCANINE, .moves = {MOVE_OVERHEAT, MOVE_EXTREME_SPEED, MOVE_CRUNCH, MOVE_AERIAL_ACE}, .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [657] = { + [FRONTIER_MON_SALAMENCE_3] = { .species = SPECIES_SALAMENCE, .moves = {MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_CRUNCH, MOVE_ENDURE}, .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [658] = { + [FRONTIER_MON_METAGROSS_3] = { .species = SPECIES_METAGROSS, .moves = {MOVE_EARTHQUAKE, MOVE_METEOR_MASH, MOVE_DOUBLE_TEAM, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [659] = { + [FRONTIER_MON_SLAKING_3] = { .species = SPECIES_SLAKING, .moves = {MOVE_EARTHQUAKE, MOVE_SHADOW_BALL, MOVE_AERIAL_ACE, MOVE_BRICK_BREAK}, .itemTableId = BATTLE_FRONTIER_ITEM_CHOICE_BAND, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_ADAMANT }, - [660] = { + [FRONTIER_MON_DUGTRIO_4] = { .species = SPECIES_DUGTRIO, .moves = {MOVE_EARTHQUAKE, MOVE_DOUBLE_EDGE, MOVE_ROCK_SLIDE, MOVE_FISSURE}, .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [661] = { + [FRONTIER_MON_MEDICHAM_4] = { .species = SPECIES_MEDICHAM, .moves = {MOVE_MEGA_KICK, MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_ROCK_SLIDE}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [662] = { + [FRONTIER_MON_MISDREAVUS_4] = { .species = SPECIES_MISDREAVUS, .moves = {MOVE_DESTINY_BOND, MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_THUNDERBOLT}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_TIMID }, - [663] = { + [FRONTIER_MON_FEAROW_4] = { .species = SPECIES_FEAROW, .moves = {MOVE_DRILL_PECK, MOVE_DOUBLE_EDGE, MOVE_STEEL_WING, MOVE_SKY_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [664] = { + [FRONTIER_MON_GRANBULL_4] = { .species = SPECIES_GRANBULL, .moves = {MOVE_MEGA_KICK, MOVE_EARTHQUAKE, MOVE_CRUNCH, MOVE_SHADOW_BALL}, .itemTableId = BATTLE_FRONTIER_ITEM_CHOICE_BAND, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_BRAVE }, - [665] = { + [FRONTIER_MON_JYNX_4] = { .species = SPECIES_JYNX, .moves = {MOVE_PSYCHIC, MOVE_ICE_BEAM, MOVE_LOVELY_KISS, MOVE_FAKE_TEARS}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [666] = { + [FRONTIER_MON_DUSCLOPS_4] = { .species = SPECIES_DUSCLOPS, .moves = {MOVE_DOUBLE_EDGE, MOVE_SHADOW_BALL, MOVE_CURSE, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [667] = { + [FRONTIER_MON_DODRIO_4] = { .species = SPECIES_DODRIO, .moves = {MOVE_FLAIL, MOVE_ENDURE, MOVE_DRILL_PECK, MOVE_FACADE}, .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [668] = { + [FRONTIER_MON_MR_MIME_4] = { .species = SPECIES_MR_MIME, .moves = {MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_ICE_PUNCH, MOVE_FIRE_PUNCH}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [669] = { + [FRONTIER_MON_LANTURN_4] = { .species = SPECIES_LANTURN, .moves = {MOVE_SURF, MOVE_THUNDERBOLT, MOVE_ICE_BEAM, MOVE_CONFUSE_RAY}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [670] = { + [FRONTIER_MON_BRELOOM_4] = { .species = SPECIES_BRELOOM, .moves = {MOVE_FOCUS_PUNCH, MOVE_SLUDGE_BOMB, MOVE_SPORE, MOVE_DOUBLE_TEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [671] = { + [FRONTIER_MON_FORRETRESS_4] = { .species = SPECIES_FORRETRESS, .moves = {MOVE_EXPLOSION, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_DOUBLE_EDGE}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [672] = { + [FRONTIER_MON_WHISCASH_4] = { .species = SPECIES_WHISCASH, .moves = {MOVE_FISSURE, MOVE_SURF, MOVE_EARTHQUAKE, MOVE_ICE_BEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_QUIET }, - [673] = { + [FRONTIER_MON_XATU_4] = { .species = SPECIES_XATU, .moves = {MOVE_PSYCHIC, MOVE_DRILL_PECK, MOVE_SHADOW_BALL, MOVE_CONFUSE_RAY}, .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [674] = { + [FRONTIER_MON_SKARMORY_4] = { .species = SPECIES_SKARMORY, .moves = {MOVE_DRILL_PECK, MOVE_STEEL_WING, MOVE_COUNTER, MOVE_ROCK_SLIDE}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [675] = { + [FRONTIER_MON_MAROWAK_4] = { .species = SPECIES_MAROWAK, .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_SWORDS_DANCE, MOVE_MEGA_KICK}, .itemTableId = BATTLE_FRONTIER_ITEM_THICK_CLUB, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [676] = { + [FRONTIER_MON_QUAGSIRE_4] = { .species = SPECIES_QUAGSIRE, .moves = {MOVE_SURF, MOVE_EARTHQUAKE, MOVE_ICE_BEAM, MOVE_AMNESIA}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_SASSY }, - [677] = { + [FRONTIER_MON_CLEFABLE_4] = { .species = SPECIES_CLEFABLE, .moves = {MOVE_MEGA_KICK, MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_SOFT_BOILED}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [678] = { + [FRONTIER_MON_HARIYAMA_4] = { .species = SPECIES_HARIYAMA, .moves = {MOVE_CROSS_CHOP, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_FAKE_OUT}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [679] = { + [FRONTIER_MON_RAICHU_4] = { .species = SPECIES_RAICHU, .moves = {MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_PROTECT, MOVE_MEGA_KICK}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [680] = { + [FRONTIER_MON_DEWGONG_4] = { .species = SPECIES_DEWGONG, .moves = {MOVE_SHEER_COLD, MOVE_ICE_BEAM, MOVE_SURF, MOVE_SIGNAL_BEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [681] = { + [FRONTIER_MON_MANECTRIC_4] = { .species = SPECIES_MANECTRIC, .moves = {MOVE_THUNDERBOLT, MOVE_CRUNCH, MOVE_THUNDER_WAVE, MOVE_ROAR}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [682] = { + [FRONTIER_MON_VILEPLUME_4] = { .species = SPECIES_VILEPLUME, .moves = {MOVE_SOLAR_BEAM, MOVE_SLUDGE_BOMB, MOVE_SUNNY_DAY, MOVE_SYNTHESIS}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_QUIET }, - [683] = { + [FRONTIER_MON_VICTREEBEL_4] = { .species = SPECIES_VICTREEBEL, .moves = {MOVE_GIGA_DRAIN, MOVE_DOUBLE_EDGE, MOVE_SLUDGE_BOMB, MOVE_SYNTHESIS}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_QUIRKY }, - [684] = { + [FRONTIER_MON_ELECTRODE_4] = { .species = SPECIES_ELECTRODE, .moves = {MOVE_EXPLOSION, MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_MIRROR_COAT}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_NAUGHTY }, - [685] = { + [FRONTIER_MON_EXPLOUD_4] = { .species = SPECIES_EXPLOUD, .moves = {MOVE_MEGA_KICK, MOVE_EARTHQUAKE, MOVE_SHADOW_BALL, MOVE_OVERHEAT}, .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [686] = { + [FRONTIER_MON_SHIFTRY_4] = { .species = SPECIES_SHIFTRY, .moves = {MOVE_EXPLOSION, MOVE_GIGA_DRAIN, MOVE_MEGA_KICK, MOVE_FAKE_OUT}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [687] = { + [FRONTIER_MON_GLALIE_4] = { .species = SPECIES_GLALIE, .moves = {MOVE_ICE_BEAM, MOVE_EARTHQUAKE, MOVE_CRUNCH, MOVE_SHADOW_BALL}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [688] = { + [FRONTIER_MON_LUDICOLO_4] = { .species = SPECIES_LUDICOLO, .moves = {MOVE_LEECH_SEED, MOVE_RAIN_DANCE, MOVE_DOUBLE_TEAM, MOVE_TOXIC}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_BOLD }, - [689] = { + [FRONTIER_MON_HYPNO_4] = { .species = SPECIES_HYPNO, .moves = {MOVE_PSYCHIC, MOVE_THUNDER_PUNCH, MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [690] = { + [FRONTIER_MON_GOLEM_4] = { .species = SPECIES_GOLEM, .moves = {MOVE_EXPLOSION, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_DOUBLE_EDGE}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [691] = { + [FRONTIER_MON_RHYDON_4] = { .species = SPECIES_RHYDON, .moves = {MOVE_MEGAHORN, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_HORN_DRILL}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [692] = { + [FRONTIER_MON_ALAKAZAM_4] = { .species = SPECIES_ALAKAZAM, .moves = {MOVE_PSYCHIC, MOVE_THUNDER_PUNCH, MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, .nature = NATURE_MODEST }, - [693] = { + [FRONTIER_MON_WEEZING_4] = { .species = SPECIES_WEEZING, .moves = {MOVE_EXPLOSION, MOVE_SLUDGE_BOMB, MOVE_FRUSTRATION, MOVE_SHADOW_BALL}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [694] = { + [FRONTIER_MON_KANGASKHAN_4] = { .species = SPECIES_KANGASKHAN, .moves = {MOVE_MEGA_KICK, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE, MOVE_SHADOW_BALL}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [695] = { + [FRONTIER_MON_ELECTABUZZ_4] = { .species = SPECIES_ELECTABUZZ, .moves = {MOVE_THUNDERBOLT, MOVE_PSYCHIC, MOVE_MEGA_KICK, MOVE_CROSS_CHOP}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [696] = { + [FRONTIER_MON_TAUROS_4] = { .species = SPECIES_TAUROS, .moves = {MOVE_DOUBLE_EDGE, MOVE_ROCK_TOMB, MOVE_THUNDERBOLT, MOVE_SURF}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [697] = { + [FRONTIER_MON_SLOWBRO_4] = { .species = SPECIES_SLOWBRO, .moves = {MOVE_PSYCHIC, MOVE_SURF, MOVE_EARTHQUAKE, MOVE_ICE_BEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK, .nature = NATURE_SASSY }, - [698] = { + [FRONTIER_MON_SLOWKING_4] = { .species = SPECIES_SLOWKING, .moves = {MOVE_PSYCHIC, MOVE_SURF, MOVE_ICE_BEAM, MOVE_FLAMETHROWER}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, .nature = NATURE_MODEST }, - [699] = { + [FRONTIER_MON_MILTANK_4] = { .species = SPECIES_MILTANK, .moves = {MOVE_DOUBLE_EDGE, MOVE_CURSE, MOVE_DOUBLE_TEAM, MOVE_MILK_DRINK}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [700] = { + [FRONTIER_MON_ALTARIA_4] = { .species = SPECIES_ALTARIA, .moves = {MOVE_DRAGON_CLAW, MOVE_EARTHQUAKE, MOVE_FLAMETHROWER, MOVE_ICE_BEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [701] = { + [FRONTIER_MON_NIDOQUEEN_4] = { .species = SPECIES_NIDOQUEEN, .moves = {MOVE_SUPERPOWER, MOVE_SLUDGE_BOMB, MOVE_EARTHQUAKE, MOVE_SHADOW_BALL}, .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [702] = { + [FRONTIER_MON_NIDOKING_4] = { .species = SPECIES_NIDOKING, .moves = {MOVE_MEGAHORN, MOVE_SLUDGE_BOMB, MOVE_EARTHQUAKE, MOVE_THUNDER}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [703] = { + [FRONTIER_MON_MAGMAR_4] = { .species = SPECIES_MAGMAR, .moves = {MOVE_FLAMETHROWER, MOVE_PSYCHIC, MOVE_CROSS_CHOP, MOVE_CONFUSE_RAY}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [704] = { + [FRONTIER_MON_CRADILY_4] = { .species = SPECIES_CRADILY, .moves = {MOVE_TOXIC, MOVE_INGRAIN, MOVE_MIRROR_COAT, MOVE_GIGA_DRAIN}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_BOLD }, - [705] = { + [FRONTIER_MON_ARMALDO_4] = { .species = SPECIES_ARMALDO, .moves = {MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE, MOVE_ROCK_SLIDE}, .itemTableId = BATTLE_FRONTIER_ITEM_CHOICE_BAND, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [706] = { + [FRONTIER_MON_GOLDUCK_4] = { .species = SPECIES_GOLDUCK, .moves = {MOVE_SURF, MOVE_CROSS_CHOP, MOVE_ICE_BEAM, MOVE_AERIAL_ACE}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [707] = { + [FRONTIER_MON_RAPIDASH_4] = { .species = SPECIES_RAPIDASH, .moves = {MOVE_OVERHEAT, MOVE_DOUBLE_EDGE, MOVE_IRON_TAIL, MOVE_DOUBLE_KICK}, .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [708] = { + [FRONTIER_MON_MUK_4] = { .species = SPECIES_MUK, .moves = {MOVE_SLUDGE_BOMB, MOVE_BRICK_BREAK, MOVE_GIGA_DRAIN, MOVE_EXPLOSION}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_BRAVE }, - [709] = { + [FRONTIER_MON_GENGAR_4] = { .species = SPECIES_GENGAR, .moves = {MOVE_PSYCHIC, MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, MOVE_DESTINY_BOND}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [710] = { + [FRONTIER_MON_AMPHAROS_4] = { .species = SPECIES_AMPHAROS, .moves = {MOVE_THUNDERBOLT, MOVE_FIRE_PUNCH, MOVE_THUNDER_WAVE, MOVE_REFLECT}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, .nature = NATURE_MODEST }, - [711] = { + [FRONTIER_MON_SCIZOR_4] = { .species = SPECIES_SCIZOR, .moves = {MOVE_SILVER_WIND, MOVE_SWORDS_DANCE, MOVE_AGILITY, MOVE_BATON_PASS}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_CAREFUL }, - [712] = { + [FRONTIER_MON_HERACROSS_4] = { .species = SPECIES_HERACROSS, .moves = {MOVE_MEGAHORN, MOVE_EARTHQUAKE, MOVE_REVERSAL, MOVE_ENDURE}, .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [713] = { + [FRONTIER_MON_URSARING_4] = { .species = SPECIES_URSARING, .moves = {MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_AERIAL_ACE}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [714] = { + [FRONTIER_MON_HOUNDOOM_4] = { .species = SPECIES_HOUNDOOM, .moves = {MOVE_OVERHEAT, MOVE_SOLAR_BEAM, MOVE_CRUNCH, MOVE_SUNNY_DAY}, .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [715] = { + [FRONTIER_MON_DONPHAN_4] = { .species = SPECIES_DONPHAN, .moves = {MOVE_FISSURE, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_IRON_TAIL}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [716] = { + [FRONTIER_MON_CLAYDOL_4] = { .species = SPECIES_CLAYDOL, .moves = {MOVE_PSYCHIC, MOVE_EARTHQUAKE, MOVE_SHADOW_BALL, MOVE_EXPLOSION}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [717] = { + [FRONTIER_MON_WAILORD_4] = { .species = SPECIES_WAILORD, .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_EARTHQUAKE, MOVE_FISSURE}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [718] = { + [FRONTIER_MON_NINETALES_4] = { .species = SPECIES_NINETALES, .moves = {MOVE_OVERHEAT, MOVE_DOUBLE_EDGE, MOVE_CONFUSE_RAY, MOVE_WILL_O_WISP}, .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_QUIRKY }, - [719] = { + [FRONTIER_MON_MACHAMP_4] = { .species = SPECIES_MACHAMP, .moves = {MOVE_CROSS_CHOP, MOVE_EARTHQUAKE, MOVE_FLAMETHROWER, MOVE_ROCK_SLIDE}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [720] = { + [FRONTIER_MON_SHUCKLE_4] = { .species = SPECIES_SHUCKLE, .moves = {MOVE_TOXIC, MOVE_DOUBLE_TEAM, MOVE_WRAP, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_CAREFUL }, - [721] = { + [FRONTIER_MON_STEELIX_4] = { .species = SPECIES_STEELIX, .moves = {MOVE_EARTHQUAKE, MOVE_IRON_TAIL, MOVE_DOUBLE_EDGE, MOVE_EXPLOSION}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [722] = { + [FRONTIER_MON_TENTACRUEL_4] = { .species = SPECIES_TENTACRUEL, .moves = {MOVE_HYDRO_PUMP, MOVE_SLUDGE_BOMB, MOVE_ICE_BEAM, MOVE_MIRROR_COAT}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_QUIRKY }, - [723] = { + [FRONTIER_MON_AERODACTYL_4] = { .species = SPECIES_AERODACTYL, .moves = {MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_FIRE_BLAST, MOVE_BITE}, .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [724] = { + [FRONTIER_MON_PORYGON2_4] = { .species = SPECIES_PORYGON2, .moves = {MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_ICE_BEAM, MOVE_RECOVER}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [725] = { + [FRONTIER_MON_GARDEVOIR_4] = { .species = SPECIES_GARDEVOIR, .moves = {MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_ICE_PUNCH, MOVE_FIRE_PUNCH}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [726] = { + [FRONTIER_MON_EXEGGUTOR_4] = { .species = SPECIES_EXEGGUTOR, .moves = {MOVE_PSYCHIC, MOVE_GIGA_DRAIN, MOVE_SLUDGE_BOMB, MOVE_EXPLOSION}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [727] = { + [FRONTIER_MON_STARMIE_4] = { .species = SPECIES_STARMIE, .moves = {MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_ICE_BEAM, MOVE_RECOVER}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [728] = { + [FRONTIER_MON_FLYGON_4] = { .species = SPECIES_FLYGON, .moves = {MOVE_EARTHQUAKE, MOVE_DRAGON_CLAW, MOVE_DOUBLE_EDGE, MOVE_CRUNCH}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [729] = { + [FRONTIER_MON_VENUSAUR_4] = { .species = SPECIES_VENUSAUR, .moves = {MOVE_SOLAR_BEAM, MOVE_SLUDGE_BOMB, MOVE_SUNNY_DAY, MOVE_EARTHQUAKE}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [730] = { + [FRONTIER_MON_VAPOREON_4] = { .species = SPECIES_VAPOREON, .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_ACID_ARMOR, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_CALM }, - [731] = { + [FRONTIER_MON_JOLTEON_4] = { .species = SPECIES_JOLTEON, .moves = {MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_BITE, MOVE_SHADOW_BALL}, .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_TIMID }, - [732] = { + [FRONTIER_MON_FLAREON_4] = { .species = SPECIES_FLAREON, .moves = {MOVE_OVERHEAT, MOVE_SUNNY_DAY, MOVE_DOUBLE_EDGE, MOVE_SHADOW_BALL}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_QUIET }, - [733] = { + [FRONTIER_MON_MEGANIUM_4] = { .species = SPECIES_MEGANIUM, .moves = {MOVE_GIGA_DRAIN, MOVE_EARTHQUAKE, MOVE_ANCIENT_POWER, MOVE_BODY_SLAM}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [734] = { + [FRONTIER_MON_ESPEON_4] = { .species = SPECIES_ESPEON, .moves = {MOVE_PSYCHIC, MOVE_BITE, MOVE_ATTRACT, MOVE_CALM_MIND}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [735] = { + [FRONTIER_MON_UMBREON_4] = { .species = SPECIES_UMBREON, .moves = {MOVE_CONFUSE_RAY, MOVE_TOXIC, MOVE_FAINT_ATTACK, MOVE_DOUBLE_TEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_BOLD }, - [736] = { + [FRONTIER_MON_BLASTOISE_4] = { .species = SPECIES_BLASTOISE, .moves = {MOVE_SURF, MOVE_EARTHQUAKE, MOVE_ICE_BEAM, MOVE_MIRROR_COAT}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [737] = { + [FRONTIER_MON_FERALIGATR_4] = { .species = SPECIES_FERALIGATR, .moves = {MOVE_HYDRO_PUMP, MOVE_ICE_BEAM, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [738] = { + [FRONTIER_MON_AGGRON_4] = { .species = SPECIES_AGGRON, .moves = {MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_AERIAL_ACE}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [739] = { + [FRONTIER_MON_BLAZIKEN_4] = { .species = SPECIES_BLAZIKEN, .moves = {MOVE_OVERHEAT, MOVE_EARTHQUAKE, MOVE_THUNDER_PUNCH, MOVE_ROCK_SLIDE}, .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [740] = { + [FRONTIER_MON_WALREIN_4] = { .species = SPECIES_WALREIN, .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_EARTHQUAKE, MOVE_SHEER_COLD}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_QUIET }, - [741] = { + [FRONTIER_MON_SCEPTILE_4] = { .species = SPECIES_SCEPTILE, .moves = {MOVE_LEAF_BLADE, MOVE_DRAGON_CLAW, MOVE_CRUNCH, MOVE_THUNDER_PUNCH}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [742] = { + [FRONTIER_MON_CHARIZARD_4] = { .species = SPECIES_CHARIZARD, .moves = {MOVE_OVERHEAT, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE, MOVE_ROCK_SLIDE}, .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [743] = { + [FRONTIER_MON_TYPHLOSION_4] = { .species = SPECIES_TYPHLOSION, .moves = {MOVE_OVERHEAT, MOVE_THUNDER_PUNCH, MOVE_EARTHQUAKE, MOVE_CRUSH_CLAW}, .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [744] = { + [FRONTIER_MON_LAPRAS_4] = { .species = SPECIES_LAPRAS, .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_THUNDERBOLT, MOVE_PSYCHIC}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [745] = { + [FRONTIER_MON_CROBAT_4] = { .species = SPECIES_CROBAT, .moves = {MOVE_SLUDGE_BOMB, MOVE_AERIAL_ACE, MOVE_SHADOW_BALL, MOVE_CONFUSE_RAY}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [746] = { + [FRONTIER_MON_SWAMPERT_4] = { .species = SPECIES_SWAMPERT, .moves = {MOVE_SURF, MOVE_EARTHQUAKE, MOVE_ICE_BEAM, MOVE_MIRROR_COAT}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_QUIET }, - [747] = { + [FRONTIER_MON_GYARADOS_4] = { .species = SPECIES_GYARADOS, .moves = {MOVE_RETURN, MOVE_EARTHQUAKE, MOVE_DRAGON_DANCE, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [748] = { + [FRONTIER_MON_SNORLAX_4] = { .species = SPECIES_SNORLAX, .moves = {MOVE_DOUBLE_EDGE, MOVE_SHADOW_BALL, MOVE_BRICK_BREAK, MOVE_CURSE}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [749] = { + [FRONTIER_MON_KINGDRA_4] = { .species = SPECIES_KINGDRA, .moves = {MOVE_DOUBLE_EDGE, MOVE_ICE_BEAM, MOVE_DRAGON_DANCE, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [750] = { + [FRONTIER_MON_BLISSEY_4] = { .species = SPECIES_BLISSEY, .moves = {MOVE_ICE_BEAM, MOVE_CALM_MIND, MOVE_COUNTER, MOVE_SOFT_BOILED}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_BOLD }, - [751] = { + [FRONTIER_MON_MILOTIC_4] = { .species = SPECIES_MILOTIC, .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_RECOVER, MOVE_MIRROR_COAT}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, .nature = NATURE_MODEST }, - [752] = { + [FRONTIER_MON_ARCANINE_4] = { .species = SPECIES_ARCANINE, .moves = {MOVE_OVERHEAT, MOVE_EXTREME_SPEED, MOVE_CRUNCH, MOVE_DOUBLE_EDGE}, .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_DOCILE }, - [753] = { + [FRONTIER_MON_SALAMENCE_4] = { .species = SPECIES_SALAMENCE, .moves = {MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE, MOVE_DRAGON_DANCE}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [754] = { + [FRONTIER_MON_METAGROSS_4] = { .species = SPECIES_METAGROSS, .moves = {MOVE_METEOR_MASH, MOVE_PSYCHIC, MOVE_EARTHQUAKE, MOVE_SHADOW_BALL}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [755] = { + [FRONTIER_MON_SLAKING_4] = { .species = SPECIES_SLAKING, .moves = {MOVE_THUNDERBOLT, MOVE_FLAMETHROWER, MOVE_ICE_BEAM, MOVE_YAWN}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK, .nature = NATURE_MODEST }, - [756] = { + [FRONTIER_MON_ARTICUNO_1] = { .species = SPECIES_ARTICUNO, .moves = {MOVE_ICE_BEAM, MOVE_WATER_PULSE, MOVE_ICY_WIND, MOVE_ROAR}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [757] = { + [FRONTIER_MON_ZAPDOS_1] = { .species = SPECIES_ZAPDOS, .moves = {MOVE_THUNDERBOLT, MOVE_DRILL_PECK, MOVE_THUNDER_WAVE, MOVE_ROAR}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_DOCILE }, - [758] = { + [FRONTIER_MON_MOLTRES_1] = { .species = SPECIES_MOLTRES, .moves = {MOVE_FLAMETHROWER, MOVE_AERIAL_ACE, MOVE_MUD_SLAP, MOVE_ROAR}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [759] = { + [FRONTIER_MON_RAIKOU_1] = { .species = SPECIES_RAIKOU, .moves = {MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_CALM_MIND, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [760] = { + [FRONTIER_MON_ENTEI_1] = { .species = SPECIES_ENTEI, .moves = {MOVE_FLAMETHROWER, MOVE_DOUBLE_TEAM, MOVE_CALM_MIND, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [761] = { + [FRONTIER_MON_SUICUNE_1] = { .species = SPECIES_SUICUNE, .moves = {MOVE_SURF, MOVE_DOUBLE_TEAM, MOVE_CALM_MIND, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [762] = { + [FRONTIER_MON_REGIROCK_1] = { .species = SPECIES_REGIROCK, .moves = {MOVE_SUPERPOWER, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_EXPLOSION}, .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [763] = { + [FRONTIER_MON_REGICE_1] = { .species = SPECIES_REGICE, .moves = {MOVE_ICE_BEAM, MOVE_THUNDERBOLT, MOVE_AMNESIA, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [764] = { + [FRONTIER_MON_REGISTEEL_1] = { .species = SPECIES_REGISTEEL, .moves = {MOVE_METAL_CLAW, MOVE_CURSE, MOVE_AMNESIA, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [765] = { + [FRONTIER_MON_LATIAS_1] = { .species = SPECIES_LATIAS, .moves = {MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_ICE_BEAM, MOVE_DRAGON_CLAW}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [766] = { + [FRONTIER_MON_LATIOS_1] = { .species = SPECIES_LATIOS, .moves = {MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_ICE_BEAM, MOVE_DRAGON_CLAW}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [767] = { + [FRONTIER_MON_ARTICUNO_2] = { .species = SPECIES_ARTICUNO, .moves = {MOVE_SUBSTITUTE, MOVE_TOXIC, MOVE_BLIZZARD, MOVE_DOUBLE_TEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_IMPISH }, - [768] = { + [FRONTIER_MON_ZAPDOS_2] = { .species = SPECIES_ZAPDOS, .moves = {MOVE_THUNDER, MOVE_RAIN_DANCE, MOVE_DRILL_PECK, MOVE_DOUBLE_TEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [769] = { + [FRONTIER_MON_MOLTRES_2] = { .species = SPECIES_MOLTRES, .moves = {MOVE_OVERHEAT, MOVE_AERIAL_ACE, MOVE_DOUBLE_TEAM, MOVE_PROTECT}, .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [770] = { + [FRONTIER_MON_RAIKOU_2] = { .species = SPECIES_RAIKOU, .moves = {MOVE_THUNDER, MOVE_RAIN_DANCE, MOVE_DOUBLE_TEAM, MOVE_REFLECT}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [771] = { + [FRONTIER_MON_ENTEI_2] = { .species = SPECIES_ENTEI, .moves = {MOVE_FIRE_BLAST, MOVE_SUNNY_DAY, MOVE_SOLAR_BEAM, MOVE_REFLECT}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [772] = { + [FRONTIER_MON_SUICUNE_2] = { .species = SPECIES_SUICUNE, .moves = {MOVE_TOXIC, MOVE_DIVE, MOVE_DOUBLE_TEAM, MOVE_PROTECT}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_CALM }, - [773] = { + [FRONTIER_MON_REGIROCK_2] = { .species = SPECIES_REGIROCK, .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_COUNTER, MOVE_EXPLOSION}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [774] = { + [FRONTIER_MON_REGICE_2] = { .species = SPECIES_REGICE, .moves = {MOVE_THUNDER, MOVE_RAIN_DANCE, MOVE_BLIZZARD, MOVE_BRICK_BREAK}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIET }, - [775] = { + [FRONTIER_MON_REGISTEEL_2] = { .species = SPECIES_REGISTEEL, .moves = {MOVE_THUNDERBOLT, MOVE_ICE_PUNCH, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIET }, - [776] = { + [FRONTIER_MON_LATIAS_2] = { .species = SPECIES_LATIAS, .moves = {MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_ICE_BEAM, MOVE_EARTHQUAKE}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [777] = { + [FRONTIER_MON_LATIOS_2] = { .species = SPECIES_LATIOS, .moves = {MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_ICE_BEAM, MOVE_EARTHQUAKE}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [778] = { + [FRONTIER_MON_ARTICUNO_3] = { .species = SPECIES_ARTICUNO, .moves = {MOVE_ICE_BEAM, MOVE_FACADE, MOVE_AERIAL_ACE, MOVE_PROTECT}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [779] = { + [FRONTIER_MON_ZAPDOS_3] = { .species = SPECIES_ZAPDOS, .moves = {MOVE_THUNDERBOLT, MOVE_DRILL_PECK, MOVE_THUNDER_WAVE, MOVE_SUBSTITUTE}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [780] = { + [FRONTIER_MON_MOLTRES_3] = { .species = SPECIES_MOLTRES, .moves = {MOVE_FIRE_BLAST, MOVE_SUNNY_DAY, MOVE_DOUBLE_TEAM, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [781] = { + [FRONTIER_MON_RAIKOU_3] = { .species = SPECIES_RAIKOU, .moves = {MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_QUICK_ATTACK, MOVE_ROAR}, .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [782] = { + [FRONTIER_MON_ENTEI_3] = { .species = SPECIES_ENTEI, .moves = {MOVE_FLAMETHROWER, MOVE_DOUBLE_EDGE, MOVE_SWAGGER, MOVE_PSYCH_UP}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [783] = { + [FRONTIER_MON_SUICUNE_3] = { .species = SPECIES_SUICUNE, .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_RAIN_DANCE, MOVE_ROAR}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [784] = { + [FRONTIER_MON_REGIROCK_3] = { .species = SPECIES_REGIROCK, .moves = {MOVE_ROCK_SLIDE, MOVE_EARTHQUAKE, MOVE_CURSE, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [785] = { + [FRONTIER_MON_REGICE_3] = { .species = SPECIES_REGICE, .moves = {MOVE_ICE_BEAM, MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_EXPLOSION}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIET }, - [786] = { + [FRONTIER_MON_REGISTEEL_3] = { .species = SPECIES_REGISTEEL, .moves = {MOVE_ANCIENT_POWER, MOVE_AMNESIA, MOVE_COUNTER, MOVE_EXPLOSION}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [787] = { + [FRONTIER_MON_LATIAS_3] = { .species = SPECIES_LATIAS, .moves = {MOVE_DRAGON_CLAW, MOVE_THUNDERBOLT, MOVE_ICE_BEAM, MOVE_EARTHQUAKE}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [788] = { + [FRONTIER_MON_LATIOS_3] = { .species = SPECIES_LATIOS, .moves = {MOVE_DRAGON_CLAW, MOVE_THUNDERBOLT, MOVE_ICE_BEAM, MOVE_EARTHQUAKE}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [789] = { + [FRONTIER_MON_ARTICUNO_4] = { .species = SPECIES_ARTICUNO, .moves = {MOVE_BLIZZARD, MOVE_DOUBLE_EDGE, MOVE_REST, MOVE_REFLECT}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [790] = { + [FRONTIER_MON_ZAPDOS_4] = { .species = SPECIES_ZAPDOS, .moves = {MOVE_THUNDERBOLT, MOVE_DRILL_PECK, MOVE_THUNDER_WAVE, MOVE_LIGHT_SCREEN}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [791] = { + [FRONTIER_MON_MOLTRES_4] = { .species = SPECIES_MOLTRES, .moves = {MOVE_OVERHEAT, MOVE_DOUBLE_EDGE, MOVE_STEEL_WING, MOVE_SAFEGUARD}, .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_QUIET }, - [792] = { + [FRONTIER_MON_RAIKOU_4] = { .species = SPECIES_RAIKOU, .moves = {MOVE_THUNDERBOLT, MOVE_BITE, MOVE_THUNDER_WAVE, MOVE_REFLECT}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [793] = { + [FRONTIER_MON_ENTEI_4] = { .species = SPECIES_ENTEI, .moves = {MOVE_FLAMETHROWER, MOVE_BITE, MOVE_DOUBLE_TEAM, MOVE_REFLECT}, .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [794] = { + [FRONTIER_MON_SUICUNE_4] = { .species = SPECIES_SUICUNE, .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_BITE, MOVE_REFLECT}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [795] = { + [FRONTIER_MON_REGIROCK_4] = { .species = SPECIES_REGIROCK, .moves = {MOVE_ROCK_SLIDE, MOVE_BRICK_BREAK, MOVE_DOUBLE_TEAM, MOVE_THUNDER_WAVE}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_CAREFUL }, - [796] = { + [FRONTIER_MON_REGICE_4] = { .species = SPECIES_REGICE, .moves = {MOVE_ICE_BEAM, MOVE_HAIL, MOVE_DOUBLE_TEAM, MOVE_THUNDER_WAVE}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_BOLD }, - [797] = { + [FRONTIER_MON_REGISTEEL_4] = { .species = SPECIES_REGISTEEL, .moves = {MOVE_ANCIENT_POWER, MOVE_EARTHQUAKE, MOVE_DOUBLE_TEAM, MOVE_THUNDER_WAVE}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_IMPISH }, - [798] = { + [FRONTIER_MON_LATIAS_4] = { .species = SPECIES_LATIAS, .moves = {MOVE_MIST_BALL, MOVE_SHADOW_BALL, MOVE_CHARM, MOVE_REFLECT}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [799] = { + [FRONTIER_MON_LATIOS_4] = { .species = SPECIES_LATIOS, .moves = {MOVE_LUSTER_PURGE, MOVE_THUNDERBOLT, MOVE_ICE_BEAM, MOVE_DRAGON_CLAW}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [800] = { + [FRONTIER_MON_GENGAR_5] = { .species = SPECIES_GENGAR, .moves = {MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_THUNDERBOLT, MOVE_FIRE_PUNCH}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [801] = { + [FRONTIER_MON_GENGAR_6] = { .species = SPECIES_GENGAR, .moves = {MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_THUNDERBOLT, MOVE_ICE_PUNCH}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [802] = { + [FRONTIER_MON_GENGAR_7] = { .species = SPECIES_GENGAR, .moves = {MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_FIRE_PUNCH, MOVE_DESTINY_BOND}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [803] = { + [FRONTIER_MON_GENGAR_8] = { .species = SPECIES_GENGAR, .moves = {MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_ICE_PUNCH, MOVE_DESTINY_BOND}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [804] = { + [FRONTIER_MON_URSARING_5] = { .species = SPECIES_URSARING, .moves = {MOVE_MEGA_KICK, MOVE_AERIAL_ACE, MOVE_ROCK_SLIDE, MOVE_BRICK_BREAK}, .itemTableId = BATTLE_FRONTIER_ITEM_CHOICE_BAND, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [805] = { + [FRONTIER_MON_URSARING_6] = { .species = SPECIES_URSARING, .moves = {MOVE_HYPER_BEAM, MOVE_YAWN, MOVE_SWORDS_DANCE, MOVE_DOUBLE_TEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [806] = { + [FRONTIER_MON_URSARING_7] = { .species = SPECIES_URSARING, .moves = {MOVE_FACADE, MOVE_EARTHQUAKE, MOVE_CRUNCH, MOVE_BULK_UP}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [807] = { + [FRONTIER_MON_URSARING_8] = { .species = SPECIES_URSARING, .moves = {MOVE_FACADE, MOVE_EARTHQUAKE, MOVE_CRUNCH, MOVE_BRICK_BREAK}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [808] = { + [FRONTIER_MON_MACHAMP_5] = { .species = SPECIES_MACHAMP, .moves = {MOVE_CROSS_CHOP, MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [809] = { + [FRONTIER_MON_MACHAMP_6] = { .species = SPECIES_MACHAMP, .moves = {MOVE_CROSS_CHOP, MOVE_EARTHQUAKE, MOVE_COUNTER, MOVE_ROCK_TOMB}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [810] = { + [FRONTIER_MON_MACHAMP_7] = { .species = SPECIES_MACHAMP, .moves = {MOVE_FOCUS_PUNCH, MOVE_SUBSTITUTE, MOVE_ATTRACT, MOVE_DOUBLE_TEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [811] = { + [FRONTIER_MON_MACHAMP_8] = { .species = SPECIES_MACHAMP, .moves = {MOVE_REVENGE, MOVE_ROCK_SLIDE, MOVE_FACADE, MOVE_COUNTER}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [812] = { + [FRONTIER_MON_GARDEVOIR_5] = { .species = SPECIES_GARDEVOIR, .moves = {MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_ENDURE, MOVE_DESTINY_BOND}, .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [813] = { + [FRONTIER_MON_GARDEVOIR_6] = { .species = SPECIES_GARDEVOIR, .moves = {MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_WILL_O_WISP, MOVE_DESTINY_BOND}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, .nature = NATURE_TIMID }, - [814] = { + [FRONTIER_MON_GARDEVOIR_7] = { .species = SPECIES_GARDEVOIR, .moves = {MOVE_PSYCHIC, MOVE_CALM_MIND, MOVE_WILL_O_WISP, MOVE_DESTINY_BOND}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_BOLD }, - [815] = { + [FRONTIER_MON_GARDEVOIR_8] = { .species = SPECIES_GARDEVOIR, .moves = {MOVE_PSYCHIC, MOVE_MAGICAL_LEAF, MOVE_ATTRACT, MOVE_DOUBLE_TEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [816] = { + [FRONTIER_MON_STARMIE_5] = { .species = SPECIES_STARMIE, .moves = {MOVE_SURF, MOVE_PSYCHIC, MOVE_RECOVER, MOVE_LIGHT_SCREEN}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [817] = { + [FRONTIER_MON_STARMIE_6] = { .species = SPECIES_STARMIE, .moves = {MOVE_SURF, MOVE_CONFUSE_RAY, MOVE_THUNDER_WAVE, MOVE_RECOVER}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_CALM }, - [818] = { + [FRONTIER_MON_STARMIE_7] = { .species = SPECIES_STARMIE, .moves = {MOVE_PSYCHIC, MOVE_ICE_BEAM, MOVE_COSMIC_POWER, MOVE_RECOVER}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [819] = { + [FRONTIER_MON_STARMIE_8] = { .species = SPECIES_STARMIE, .moves = {MOVE_SURF, MOVE_THUNDERBOLT, MOVE_COSMIC_POWER, MOVE_RECOVER}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [820] = { + [FRONTIER_MON_LAPRAS_5] = { .species = SPECIES_LAPRAS, .moves = {MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_IRON_TAIL, MOVE_DOUBLE_EDGE}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [821] = { + [FRONTIER_MON_LAPRAS_6] = { .species = SPECIES_LAPRAS, .moves = {MOVE_HYDRO_PUMP, MOVE_THUNDER, MOVE_RAIN_DANCE, MOVE_BLIZZARD}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [822] = { + [FRONTIER_MON_LAPRAS_7] = { .species = SPECIES_LAPRAS, .moves = {MOVE_SHEER_COLD, MOVE_HORN_DRILL, MOVE_REST, MOVE_SLEEP_TALK}, .itemTableId = BATTLE_FRONTIER_ITEM_LEPPA_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_CALM }, - [823] = { + [FRONTIER_MON_LAPRAS_8] = { .species = SPECIES_LAPRAS, .moves = {MOVE_SHEER_COLD, MOVE_HORN_DRILL, MOVE_SING, MOVE_ATTRACT}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_CALM }, - [824] = { + [FRONTIER_MON_SNORLAX_5] = { .species = SPECIES_SNORLAX, .moves = {MOVE_MEGA_KICK, MOVE_SHADOW_BALL, MOVE_BRICK_BREAK, MOVE_COUNTER}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [825] = { + [FRONTIER_MON_SNORLAX_6] = { .species = SPECIES_SNORLAX, .moves = {MOVE_EARTHQUAKE, MOVE_SHADOW_BALL, MOVE_BRICK_BREAK, MOVE_COUNTER}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [826] = { + [FRONTIER_MON_SNORLAX_7] = { .species = SPECIES_SNORLAX, .moves = {MOVE_HYPER_BEAM, MOVE_SHADOW_BALL, MOVE_EARTHQUAKE, MOVE_CURSE}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [827] = { + [FRONTIER_MON_SNORLAX_8] = { .species = SPECIES_SNORLAX, .moves = {MOVE_RETURN, MOVE_SHADOW_BALL, MOVE_BELLY_DRUM, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [828] = { + [FRONTIER_MON_SALAMENCE_5] = { .species = SPECIES_SALAMENCE, .moves = {MOVE_FACADE, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_DRAGON_DANCE}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [829] = { + [FRONTIER_MON_SALAMENCE_6] = { .species = SPECIES_SALAMENCE, .moves = {MOVE_HEADBUTT, MOVE_AERIAL_ACE, MOVE_CRUNCH, MOVE_DRAGON_DANCE}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [830] = { + [FRONTIER_MON_SALAMENCE_7] = { .species = SPECIES_SALAMENCE, .moves = {MOVE_FLAMETHROWER, MOVE_DRAGON_CLAW, MOVE_CRUNCH, MOVE_BRICK_BREAK}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [831] = { + [FRONTIER_MON_SALAMENCE_8] = { .species = SPECIES_SALAMENCE, .moves = {MOVE_FLAMETHROWER, MOVE_DRAGON_CLAW, MOVE_CRUNCH, MOVE_ATTRACT}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [832] = { + [FRONTIER_MON_METAGROSS_5] = { .species = SPECIES_METAGROSS, .moves = {MOVE_EXPLOSION, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_BRICK_BREAK}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_JOLLY }, - [833] = { + [FRONTIER_MON_METAGROSS_6] = { .species = SPECIES_METAGROSS, .moves = {MOVE_METEOR_MASH, MOVE_PSYCHIC, MOVE_ICE_PUNCH, MOVE_THUNDER_PUNCH}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [834] = { + [FRONTIER_MON_METAGROSS_7] = { .species = SPECIES_METAGROSS, .moves = {MOVE_EARTHQUAKE, MOVE_SHADOW_BALL, MOVE_ICE_PUNCH, MOVE_THUNDER_PUNCH}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [835] = { + [FRONTIER_MON_METAGROSS_8] = { .species = SPECIES_METAGROSS, .moves = {MOVE_METEOR_MASH, MOVE_EARTHQUAKE, MOVE_BRICK_BREAK, MOVE_EXPLOSION}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [836] = { + [FRONTIER_MON_REGIROCK_5] = { .species = SPECIES_REGIROCK, .moves = {MOVE_HYPER_BEAM, MOVE_FOCUS_PUNCH, MOVE_ROCK_SLIDE, MOVE_DOUBLE_TEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [837] = { + [FRONTIER_MON_REGIROCK_6] = { .species = SPECIES_REGIROCK, .moves = {MOVE_SWAGGER, MOVE_PSYCH_UP, MOVE_ROCK_SLIDE, MOVE_EXPLOSION}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [838] = { + [FRONTIER_MON_REGICE_5] = { .species = SPECIES_REGICE, .moves = {MOVE_EARTHQUAKE, MOVE_ICE_BEAM, MOVE_CURSE, MOVE_COUNTER}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_BRAVE }, - [839] = { + [FRONTIER_MON_REGICE_6] = { .species = SPECIES_REGICE, .moves = {MOVE_ICE_BEAM, MOVE_THUNDERBOLT, MOVE_SLEEP_TALK, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [840] = { + [FRONTIER_MON_REGISTEEL_5] = { .species = SPECIES_REGISTEEL, .moves = {MOVE_FOCUS_PUNCH, MOVE_SUBSTITUTE, MOVE_TOXIC, MOVE_DOUBLE_TEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [841] = { + [FRONTIER_MON_REGISTEEL_6] = { .species = SPECIES_REGISTEEL, .moves = {MOVE_SUPERPOWER, MOVE_AERIAL_ACE, MOVE_SWAGGER, MOVE_PSYCH_UP}, .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [842] = { + [FRONTIER_MON_LATIAS_5] = { .species = SPECIES_LATIAS, .moves = {MOVE_DRAGON_CLAW, MOVE_THUNDER_WAVE, MOVE_CALM_MIND, MOVE_RECOVER}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [843] = { + [FRONTIER_MON_LATIAS_6] = { .species = SPECIES_LATIAS, .moves = {MOVE_MIST_BALL, MOVE_DRAGON_CLAW, MOVE_ATTRACT, MOVE_THUNDER_WAVE}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [844] = { + [FRONTIER_MON_LATIAS_7] = { .species = SPECIES_LATIAS, .moves = {MOVE_EARTHQUAKE, MOVE_SHADOW_BALL, MOVE_SWAGGER, MOVE_PSYCH_UP}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [845] = { + [FRONTIER_MON_LATIAS_8] = { .species = SPECIES_LATIAS, .moves = {MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE}, .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [846] = { + [FRONTIER_MON_LATIOS_5] = { .species = SPECIES_LATIOS, .moves = {MOVE_DRAGON_CLAW, MOVE_THUNDER_WAVE, MOVE_CALM_MIND, MOVE_RECOVER}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [847] = { + [FRONTIER_MON_LATIOS_6] = { .species = SPECIES_LATIOS, .moves = {MOVE_LUSTER_PURGE, MOVE_SHADOW_BALL, MOVE_DRAGON_CLAW, MOVE_THUNDER_WAVE}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [848] = { + [FRONTIER_MON_LATIOS_7] = { .species = SPECIES_LATIOS, .moves = {MOVE_EARTHQUAKE, MOVE_SHADOW_BALL, MOVE_DRAGON_DANCE, MOVE_RECOVER}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [849] = { + [FRONTIER_MON_LATIOS_8] = { .species = SPECIES_LATIOS, .moves = {MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE}, .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [850] = { + [FRONTIER_MON_DRAGONITE_1] = { .species = SPECIES_DRAGONITE, .moves = {MOVE_EARTHQUAKE, MOVE_AERIAL_ACE, MOVE_BRICK_BREAK, MOVE_DRAGON_DANCE}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [851] = { + [FRONTIER_MON_DRAGONITE_2] = { .species = SPECIES_DRAGONITE, .moves = {MOVE_EARTHQUAKE, MOVE_DOUBLE_EDGE, MOVE_AERIAL_ACE, MOVE_DRAGON_DANCE}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [852] = { + [FRONTIER_MON_DRAGONITE_3] = { .species = SPECIES_DRAGONITE, .moves = {MOVE_HYPER_BEAM, MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_THUNDER_WAVE}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [853] = { + [FRONTIER_MON_DRAGONITE_4] = { .species = SPECIES_DRAGONITE, .moves = {MOVE_HYPER_BEAM, MOVE_THUNDER_WAVE, MOVE_DRAGON_DANCE, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [854] = { + [FRONTIER_MON_DRAGONITE_5] = { .species = SPECIES_DRAGONITE, .moves = {MOVE_OUTRAGE, MOVE_DOUBLE_EDGE, MOVE_THUNDER_WAVE, MOVE_ROAR}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [855] = { + [FRONTIER_MON_DRAGONITE_6] = { .species = SPECIES_DRAGONITE, .moves = {MOVE_DRAGON_CLAW, MOVE_THUNDERBOLT, MOVE_SURF, MOVE_FLAMETHROWER}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [856] = { + [FRONTIER_MON_DRAGONITE_7] = { .species = SPECIES_DRAGONITE, .moves = {MOVE_DRAGON_CLAW, MOVE_THUNDERBOLT, MOVE_SURF, MOVE_ICE_BEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [857] = { + [FRONTIER_MON_DRAGONITE_8] = { .species = SPECIES_DRAGONITE, .moves = {MOVE_DRAGON_CLAW, MOVE_FLAMETHROWER, MOVE_ICE_BEAM, MOVE_BRICK_BREAK}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [858] = { + [FRONTIER_MON_DRAGONITE_9] = { .species = SPECIES_DRAGONITE, .moves = {MOVE_THUNDER, MOVE_SURF, MOVE_RAIN_DANCE, MOVE_EARTHQUAKE}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [859] = { + [FRONTIER_MON_DRAGONITE_10] = { .species = SPECIES_DRAGONITE, .moves = {MOVE_FIRE_BLAST, MOVE_BLIZZARD, MOVE_SUNNY_DAY, MOVE_EARTHQUAKE}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [860] = { + [FRONTIER_MON_TYRANITAR_1] = { .species = SPECIES_TYRANITAR, .moves = {MOVE_EARTHQUAKE, MOVE_AERIAL_ACE, MOVE_THUNDERBOLT, MOVE_SURF}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [861] = { + [FRONTIER_MON_TYRANITAR_2] = { .species = SPECIES_TYRANITAR, .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_CRUNCH, MOVE_THUNDERBOLT}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [862] = { + [FRONTIER_MON_TYRANITAR_3] = { .species = SPECIES_TYRANITAR, .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_COUNTER, MOVE_DRAGON_DANCE}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [863] = { + [FRONTIER_MON_TYRANITAR_4] = { .species = SPECIES_TYRANITAR, .moves = {MOVE_CRUNCH, MOVE_ICE_BEAM, MOVE_THUNDERBOLT, MOVE_FLAMETHROWER}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [864] = { + [FRONTIER_MON_TYRANITAR_5] = { .species = SPECIES_TYRANITAR, .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_DRAGON_DANCE, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [865] = { + [FRONTIER_MON_TYRANITAR_6] = { .species = SPECIES_TYRANITAR, .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_CURSE, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [866] = { + [FRONTIER_MON_TYRANITAR_7] = { .species = SPECIES_TYRANITAR, .moves = {MOVE_ROCK_SLIDE, MOVE_AERIAL_ACE, MOVE_BRICK_BREAK, MOVE_CURSE}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [867] = { + [FRONTIER_MON_TYRANITAR_8] = { .species = SPECIES_TYRANITAR, .moves = {MOVE_ROCK_SLIDE, MOVE_THUNDER_WAVE, MOVE_DRAGON_DANCE, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [868] = { + [FRONTIER_MON_TYRANITAR_9] = { .species = SPECIES_TYRANITAR, .moves = {MOVE_CRUNCH, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE, MOVE_ATTRACT}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [869] = { + [FRONTIER_MON_TYRANITAR_10] = { .species = SPECIES_TYRANITAR, .moves = {MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_DRAGON_DANCE}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [870] = { + [FRONTIER_MON_ARTICUNO_5] = { .species = SPECIES_ARTICUNO, .moves = {MOVE_BLIZZARD, MOVE_DOUBLE_EDGE, MOVE_AGILITY, MOVE_SWAGGER}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [871] = { + [FRONTIER_MON_ARTICUNO_6] = { .species = SPECIES_ARTICUNO, .moves = {MOVE_ICE_BEAM, MOVE_AERIAL_ACE, MOVE_REFLECT, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [872] = { + [FRONTIER_MON_ZAPDOS_5] = { .species = SPECIES_ZAPDOS, .moves = {MOVE_THUNDERBOLT, MOVE_DRILL_PECK, MOVE_DOUBLE_EDGE, MOVE_THUNDER_WAVE}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [873] = { + [FRONTIER_MON_ZAPDOS_6] = { .species = SPECIES_ZAPDOS, .moves = {MOVE_THUNDER, MOVE_DRILL_PECK, MOVE_RAIN_DANCE, MOVE_DOUBLE_EDGE}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [874] = { + [FRONTIER_MON_MOLTRES_5] = { .species = SPECIES_MOLTRES, .moves = {MOVE_OVERHEAT, MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_FACADE}, .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_DOCILE }, - [875] = { + [FRONTIER_MON_MOLTRES_6] = { .species = SPECIES_MOLTRES, .moves = {MOVE_OVERHEAT, MOVE_DOUBLE_EDGE, MOVE_AERIAL_ACE, MOVE_STEEL_WING}, .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE }, - [876] = { + [FRONTIER_MON_RAIKOU_5] = { .species = SPECIES_RAIKOU, .moves = {MOVE_THUNDERBOLT, MOVE_DOUBLE_EDGE, MOVE_ROAR, MOVE_REFLECT}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [877] = { + [FRONTIER_MON_RAIKOU_6] = { .species = SPECIES_RAIKOU, .moves = {MOVE_THUNDERBOLT, MOVE_CALM_MIND, MOVE_SUBSTITUTE, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [878] = { + [FRONTIER_MON_ENTEI_5] = { .species = SPECIES_ENTEI, .moves = {MOVE_FIRE_BLAST, MOVE_DOUBLE_EDGE, MOVE_ENDURE, MOVE_REFLECT}, .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_DOCILE }, - [879] = { + [FRONTIER_MON_ENTEI_6] = { .species = SPECIES_ENTEI, .moves = {MOVE_FLAMETHROWER, MOVE_CALM_MIND, MOVE_ROAR, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_MODEST }, - [880] = { + [FRONTIER_MON_SUICUNE_5] = { .species = SPECIES_SUICUNE, .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_CALM_MIND, MOVE_ICY_WIND}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [881] = { + [FRONTIER_MON_SUICUNE_6] = { .species = SPECIES_SUICUNE, .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_CALM_MIND, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, diff --git a/src/data/battle_frontier/battle_frontier_trainer_mons.h b/src/data/battle_frontier/battle_frontier_trainer_mons.h index d0e21172b7..19ed09788f 100644 --- a/src/data/battle_frontier/battle_frontier_trainer_mons.h +++ b/src/data/battle_frontier/battle_frontier_trainer_mons.h @@ -1,15229 +1,7369 @@ +// Also used by early Pkmn Breeder, Collector, and Beauty trainers +#define FRONTIER_MONS_YOUNGSTER_LASS_1 \ + FRONTIER_MON_SUNKERN, \ + FRONTIER_MON_AZURILL, \ + FRONTIER_MON_CATERPIE, \ + FRONTIER_MON_WEEDLE, \ + FRONTIER_MON_WURMPLE, \ + FRONTIER_MON_RALTS, \ + FRONTIER_MON_MAGIKARP, \ + FRONTIER_MON_FEEBAS, \ + FRONTIER_MON_PICHU, \ + FRONTIER_MON_IGGLYBUFF, \ + FRONTIER_MON_WOOPER, \ + FRONTIER_MON_TYROGUE, \ + FRONTIER_MON_SENTRET, \ + FRONTIER_MON_CLEFFA, \ + FRONTIER_MON_SEEDOT, \ + FRONTIER_MON_LOTAD, \ + FRONTIER_MON_POOCHYENA, \ + FRONTIER_MON_SHEDINJA, \ + FRONTIER_MON_MAKUHITA, \ + FRONTIER_MON_WHISMUR, \ + FRONTIER_MON_ZIGZAGOON, \ + FRONTIER_MON_ZUBAT, \ + FRONTIER_MON_TOGEPI, \ + FRONTIER_MON_SPINARAK, \ + FRONTIER_MON_MARILL, \ + FRONTIER_MON_HOPPIP, \ + FRONTIER_MON_SLUGMA, \ + FRONTIER_MON_SWINUB, \ + FRONTIER_MON_SMEARGLE, \ + FRONTIER_MON_PIDGEY, \ + FRONTIER_MON_RATTATA, \ + FRONTIER_MON_WYNAUT, \ + FRONTIER_MON_SKITTY, \ + FRONTIER_MON_SPEAROW, \ + FRONTIER_MON_HOOTHOOT, \ + FRONTIER_MON_DIGLETT, \ + FRONTIER_MON_LEDYBA, \ + FRONTIER_MON_NINCADA, \ + FRONTIER_MON_SURSKIT, \ + FRONTIER_MON_JIGGLYPUFF, \ + FRONTIER_MON_TAILLOW, \ + FRONTIER_MON_WINGULL, \ + FRONTIER_MON_NIDORAN_M, \ + FRONTIER_MON_NIDORAN_F, \ + FRONTIER_MON_KIRLIA, \ + FRONTIER_MON_MAREEP, \ + FRONTIER_MON_MEDITITE, \ + FRONTIER_MON_SLAKOTH, \ + FRONTIER_MON_PARAS, \ + FRONTIER_MON_EKANS, \ + FRONTIER_MON_DITTO, \ + FRONTIER_MON_BARBOACH, \ + FRONTIER_MON_MEOWTH, \ + FRONTIER_MON_PINECO, \ + FRONTIER_MON_TRAPINCH, \ + FRONTIER_MON_SPHEAL, \ + FRONTIER_MON_HORSEA, \ + FRONTIER_MON_SHROOMISH, \ + FRONTIER_MON_SHUPPET, \ + FRONTIER_MON_DUSKULL, \ + FRONTIER_MON_ELECTRIKE, \ + FRONTIER_MON_VULPIX, \ + -1 + +// Also used by early Pkmn Breeder, Collector, and Beauty trainers +#define FRONTIER_MONS_SCHOOL_KID_1 \ + FRONTIER_MON_PIKACHU, \ + FRONTIER_MON_SANDSHREW, \ + FRONTIER_MON_POLIWAG, \ + FRONTIER_MON_BELLSPROUT, \ + FRONTIER_MON_GEODUDE, \ + FRONTIER_MON_DRATINI, \ + FRONTIER_MON_SNUBBULL, \ + FRONTIER_MON_REMORAID, \ + FRONTIER_MON_LARVITAR, \ + FRONTIER_MON_BALTOY, \ + FRONTIER_MON_SNORUNT, \ + FRONTIER_MON_BAGON, \ + FRONTIER_MON_BELDUM, \ + FRONTIER_MON_GULPIN, \ + FRONTIER_MON_VENONAT, \ + FRONTIER_MON_MANKEY, \ + FRONTIER_MON_MACHOP, \ + FRONTIER_MON_SHELLDER, \ + FRONTIER_MON_SMOOCHUM, \ + FRONTIER_MON_NUMEL, \ + FRONTIER_MON_CARVANHA, \ + FRONTIER_MON_CORPHISH, \ + FRONTIER_MON_CHARMANDER, \ + FRONTIER_MON_CYNDAQUIL, \ + FRONTIER_MON_ABRA, \ + FRONTIER_MON_DODUO, \ + FRONTIER_MON_GASTLY, \ + FRONTIER_MON_SWABLU, \ + FRONTIER_MON_TREECKO, \ + FRONTIER_MON_TORCHIC, \ + FRONTIER_MON_MUDKIP, \ + FRONTIER_MON_SQUIRTLE, \ + FRONTIER_MON_TOTODILE, \ + FRONTIER_MON_SLOWPOKE, \ + FRONTIER_MON_BULBASAUR, \ + FRONTIER_MON_CHIKORITA, \ + FRONTIER_MON_ODDISH, \ + FRONTIER_MON_PSYDUCK, \ + FRONTIER_MON_CUBONE, \ + FRONTIER_MON_GOLDEEN, \ + FRONTIER_MON_NATU, \ + FRONTIER_MON_CLEFAIRY, \ + FRONTIER_MON_MAGNEMITE, \ + FRONTIER_MON_SEEL, \ + -1 + +#define FRONTIER_MONS_RICH_BOY_LADY_1 \ + FRONTIER_MON_RALTS, \ + FRONTIER_MON_POOCHYENA, \ + FRONTIER_MON_SHEDINJA, \ + FRONTIER_MON_ZUBAT, \ + FRONTIER_MON_SPINARAK, \ + FRONTIER_MON_WYNAUT, \ + FRONTIER_MON_NIDORAN_M, \ + FRONTIER_MON_NIDORAN_F, \ + FRONTIER_MON_KIRLIA, \ + FRONTIER_MON_MEDITITE, \ + FRONTIER_MON_EKANS, \ + FRONTIER_MON_SHUPPET, \ + FRONTIER_MON_DUSKULL, \ + FRONTIER_MON_BELLSPROUT, \ + FRONTIER_MON_BALTOY, \ + FRONTIER_MON_BELDUM, \ + FRONTIER_MON_GULPIN, \ + FRONTIER_MON_VENONAT, \ + FRONTIER_MON_SMOOCHUM, \ + FRONTIER_MON_ABRA, \ + FRONTIER_MON_GASTLY, \ + FRONTIER_MON_SLOWPOKE, \ + FRONTIER_MON_BULBASAUR, \ + FRONTIER_MON_ODDISH, \ + FRONTIER_MON_NATU, \ + FRONTIER_MON_GRIMER, \ + FRONTIER_MON_EXEGGCUTE, \ + FRONTIER_MON_DROWZEE, \ + FRONTIER_MON_HOUNDOUR, \ + FRONTIER_MON_SPOINK, \ + FRONTIER_MON_TENTACOOL, \ + FRONTIER_MON_KOFFING, \ + FRONTIER_MON_NIDORINA, \ + FRONTIER_MON_NIDORINO, \ + FRONTIER_MON_BEEDRILL, \ + FRONTIER_MON_DUSTOX, \ + FRONTIER_MON_ARIADOS, \ + -1 + +// Also used by early Pkmn Breeder, Collector, and Beauty trainers +#define FRONTIER_MONS_CAMPER_PICNICKER_1 \ + FRONTIER_MON_GRIMER, \ + FRONTIER_MON_KRABBY, \ + FRONTIER_MON_EXEGGCUTE, \ + FRONTIER_MON_EEVEE, \ + FRONTIER_MON_DROWZEE, \ + FRONTIER_MON_VOLTORB, \ + FRONTIER_MON_CHINCHOU, \ + FRONTIER_MON_TEDDIURSA, \ + FRONTIER_MON_DELIBIRD, \ + FRONTIER_MON_HOUNDOUR, \ + FRONTIER_MON_PHANPY, \ + FRONTIER_MON_SPOINK, \ + FRONTIER_MON_ARON, \ + FRONTIER_MON_LUVDISC, \ + FRONTIER_MON_TENTACOOL, \ + FRONTIER_MON_CACNEA, \ + FRONTIER_MON_KOFFING, \ + FRONTIER_MON_STARYU, \ + FRONTIER_MON_SKIPLOOM, \ + FRONTIER_MON_NUZLEAF, \ + FRONTIER_MON_LOMBRE, \ + FRONTIER_MON_VIBRAVA, \ + FRONTIER_MON_RHYHORN, \ + FRONTIER_MON_CLAMPERL, \ + FRONTIER_MON_PIDGEOTTO, \ + FRONTIER_MON_GROWLITHE, \ + FRONTIER_MON_FARFETCHD, \ + FRONTIER_MON_OMANYTE, \ + FRONTIER_MON_KABUTO, \ + FRONTIER_MON_LILEEP, \ + FRONTIER_MON_ANORITH, \ + FRONTIER_MON_AIPOM, \ + FRONTIER_MON_ELEKID, \ + FRONTIER_MON_LOUDRED, \ + FRONTIER_MON_SPINDA, \ + FRONTIER_MON_NIDORINA, \ + FRONTIER_MON_NIDORINO, \ + FRONTIER_MON_FLAAFFY, \ + FRONTIER_MON_MAGBY, \ + FRONTIER_MON_NOSEPASS, \ + FRONTIER_MON_CORSOLA, \ + FRONTIER_MON_MAWILE, \ + FRONTIER_MON_BUTTERFREE, \ + FRONTIER_MON_BEEDRILL, \ + FRONTIER_MON_POLIWHIRL, \ + FRONTIER_MON_ONIX, \ + FRONTIER_MON_BEAUTIFLY, \ + FRONTIER_MON_DUSTOX, \ + FRONTIER_MON_LEDIAN, \ + FRONTIER_MON_ARIADOS, \ + FRONTIER_MON_YANMA, \ + -1 + +#define FRONTIER_MONS_TUBER_1 \ + FRONTIER_MON_RALTS, \ + FRONTIER_MON_MAGIKARP, \ + FRONTIER_MON_FEEBAS, \ + FRONTIER_MON_WOOPER, \ + FRONTIER_MON_LOTAD, \ + FRONTIER_MON_MARILL, \ + FRONTIER_MON_WYNAUT, \ + FRONTIER_MON_SURSKIT, \ + FRONTIER_MON_WINGULL, \ + FRONTIER_MON_KIRLIA, \ + FRONTIER_MON_MEDITITE, \ + FRONTIER_MON_BARBOACH, \ + FRONTIER_MON_SPHEAL, \ + FRONTIER_MON_HORSEA, \ + FRONTIER_MON_POLIWAG, \ + FRONTIER_MON_REMORAID, \ + FRONTIER_MON_SHELLDER, \ + FRONTIER_MON_SMOOCHUM, \ + FRONTIER_MON_CARVANHA, \ + FRONTIER_MON_CORPHISH, \ + FRONTIER_MON_ABRA, \ + FRONTIER_MON_MUDKIP, \ + FRONTIER_MON_SQUIRTLE, \ + FRONTIER_MON_TOTODILE, \ + FRONTIER_MON_SLOWPOKE, \ + FRONTIER_MON_PSYDUCK, \ + FRONTIER_MON_GOLDEEN, \ + FRONTIER_MON_NATU, \ + FRONTIER_MON_SEEL, \ + FRONTIER_MON_EXEGGCUTE, \ + FRONTIER_MON_DROWZEE, \ + FRONTIER_MON_SPOINK, \ + -1 + +#define FRONTIER_MONS_SWIMMER_M_1 \ + FRONTIER_MON_AZURILL, \ + FRONTIER_MON_IGGLYBUFF, \ + FRONTIER_MON_TYROGUE, \ + FRONTIER_MON_SENTRET, \ + FRONTIER_MON_CLEFFA, \ + FRONTIER_MON_MAKUHITA, \ + FRONTIER_MON_WHISMUR, \ + FRONTIER_MON_ZIGZAGOON, \ + FRONTIER_MON_TOGEPI, \ + FRONTIER_MON_SMEARGLE, \ + FRONTIER_MON_RATTATA, \ + FRONTIER_MON_SKITTY, \ + FRONTIER_MON_JIGGLYPUFF, \ + FRONTIER_MON_MEDITITE, \ + FRONTIER_MON_SLAKOTH, \ + FRONTIER_MON_DITTO, \ + FRONTIER_MON_MEOWTH, \ + FRONTIER_MON_POLIWAG, \ + FRONTIER_MON_SNUBBULL, \ + FRONTIER_MON_REMORAID, \ + FRONTIER_MON_MANKEY, \ + FRONTIER_MON_MACHOP, \ + FRONTIER_MON_SHELLDER, \ + FRONTIER_MON_CARVANHA, \ + FRONTIER_MON_CORPHISH, \ + FRONTIER_MON_MUDKIP, \ + FRONTIER_MON_SQUIRTLE, \ + FRONTIER_MON_TOTODILE, \ + FRONTIER_MON_SLOWPOKE, \ + FRONTIER_MON_PSYDUCK, \ + FRONTIER_MON_GOLDEEN, \ + FRONTIER_MON_CLEFAIRY, \ + FRONTIER_MON_SEEL, \ + FRONTIER_MON_KRABBY, \ + FRONTIER_MON_EEVEE, \ + FRONTIER_MON_CHINCHOU, \ + FRONTIER_MON_TEDDIURSA, \ + FRONTIER_MON_LUVDISC, \ + FRONTIER_MON_TENTACOOL, \ + FRONTIER_MON_STARYU, \ + FRONTIER_MON_LOMBRE, \ + FRONTIER_MON_CLAMPERL, \ + FRONTIER_MON_OMANYTE, \ + FRONTIER_MON_KABUTO, \ + FRONTIER_MON_AIPOM, \ + FRONTIER_MON_LOUDRED, \ + FRONTIER_MON_SPINDA, \ + FRONTIER_MON_CORSOLA, \ + FRONTIER_MON_MAWILE, \ + FRONTIER_MON_POLIWHIRL, \ + -1 + +#define FRONTIER_MONS_SWIMMER_F_1 \ + FRONTIER_MON_AZURILL, \ + FRONTIER_MON_IGGLYBUFF, \ + FRONTIER_MON_SENTRET, \ + FRONTIER_MON_CLEFFA, \ + FRONTIER_MON_WHISMUR, \ + FRONTIER_MON_ZIGZAGOON, \ + FRONTIER_MON_TOGEPI, \ + FRONTIER_MON_SMEARGLE, \ + FRONTIER_MON_RATTATA, \ + FRONTIER_MON_SKITTY, \ + FRONTIER_MON_JIGGLYPUFF, \ + FRONTIER_MON_SLAKOTH, \ + FRONTIER_MON_DITTO, \ + FRONTIER_MON_MEOWTH, \ + FRONTIER_MON_POLIWAG, \ + FRONTIER_MON_SNUBBULL, \ + FRONTIER_MON_REMORAID, \ + FRONTIER_MON_SNORUNT, \ + FRONTIER_MON_SHELLDER, \ + FRONTIER_MON_SMOOCHUM, \ + FRONTIER_MON_CARVANHA, \ + FRONTIER_MON_CORPHISH, \ + FRONTIER_MON_MUDKIP, \ + FRONTIER_MON_SQUIRTLE, \ + FRONTIER_MON_TOTODILE, \ + FRONTIER_MON_SLOWPOKE, \ + FRONTIER_MON_PSYDUCK, \ + FRONTIER_MON_GOLDEEN, \ + FRONTIER_MON_CLEFAIRY, \ + FRONTIER_MON_SEEL, \ + FRONTIER_MON_KRABBY, \ + FRONTIER_MON_EEVEE, \ + FRONTIER_MON_CHINCHOU, \ + FRONTIER_MON_TEDDIURSA, \ + FRONTIER_MON_DELIBIRD, \ + FRONTIER_MON_LUVDISC, \ + FRONTIER_MON_TENTACOOL, \ + FRONTIER_MON_STARYU, \ + FRONTIER_MON_LOMBRE, \ + FRONTIER_MON_CLAMPERL, \ + FRONTIER_MON_OMANYTE, \ + FRONTIER_MON_KABUTO, \ + FRONTIER_MON_AIPOM, \ + FRONTIER_MON_LOUDRED, \ + FRONTIER_MON_SPINDA, \ + FRONTIER_MON_CORSOLA, \ + FRONTIER_MON_POLIWHIRL, \ + -1 + +#define FRONTIER_MONS_POKEFAN_M_1 \ + FRONTIER_MON_SMOOCHUM, \ + FRONTIER_MON_NUMEL, \ + FRONTIER_MON_CORPHISH, \ + FRONTIER_MON_CHARMANDER, \ + FRONTIER_MON_CYNDAQUIL, \ + FRONTIER_MON_SWABLU, \ + FRONTIER_MON_TREECKO, \ + FRONTIER_MON_TORCHIC, \ + FRONTIER_MON_MUDKIP, \ + FRONTIER_MON_SQUIRTLE, \ + FRONTIER_MON_TOTODILE, \ + FRONTIER_MON_SLOWPOKE, \ + FRONTIER_MON_BULBASAUR, \ + FRONTIER_MON_CHIKORITA, \ + FRONTIER_MON_ODDISH, \ + FRONTIER_MON_PSYDUCK, \ + FRONTIER_MON_GOLDEEN, \ + FRONTIER_MON_NATU, \ + FRONTIER_MON_CLEFAIRY, \ + FRONTIER_MON_SEEL, \ + FRONTIER_MON_EXEGGCUTE, \ + FRONTIER_MON_EEVEE, \ + FRONTIER_MON_TEDDIURSA, \ + FRONTIER_MON_PHANPY, \ + FRONTIER_MON_SPOINK, \ + FRONTIER_MON_LUVDISC, \ + FRONTIER_MON_SKIPLOOM, \ + FRONTIER_MON_CLAMPERL, \ + FRONTIER_MON_AIPOM, \ + FRONTIER_MON_ELEKID, \ + FRONTIER_MON_SPINDA, \ + FRONTIER_MON_FLAAFFY, \ + FRONTIER_MON_MAGBY, \ + FRONTIER_MON_CORSOLA, \ + FRONTIER_MON_MAWILE, \ + FRONTIER_MON_POLIWHIRL, \ + -1 + +#define FRONTIER_MONS_POKEFAN_F_1 \ + FRONTIER_MON_AZURILL, \ + FRONTIER_MON_RALTS, \ + FRONTIER_MON_MAGIKARP, \ + FRONTIER_MON_PICHU, \ + FRONTIER_MON_IGGLYBUFF, \ + FRONTIER_MON_WOOPER, \ + FRONTIER_MON_SENTRET, \ + FRONTIER_MON_CLEFFA, \ + FRONTIER_MON_SEEDOT, \ + FRONTIER_MON_LOTAD, \ + FRONTIER_MON_POOCHYENA, \ + FRONTIER_MON_WHISMUR, \ + FRONTIER_MON_ZIGZAGOON, \ + FRONTIER_MON_TOGEPI, \ + FRONTIER_MON_MARILL, \ + FRONTIER_MON_HOPPIP, \ + FRONTIER_MON_SWINUB, \ + FRONTIER_MON_SMEARGLE, \ + FRONTIER_MON_PIDGEY, \ + FRONTIER_MON_RATTATA, \ + FRONTIER_MON_WYNAUT, \ + FRONTIER_MON_SKITTY, \ + FRONTIER_MON_SURSKIT, \ + FRONTIER_MON_JIGGLYPUFF, \ + FRONTIER_MON_TAILLOW, \ + FRONTIER_MON_WINGULL, \ + FRONTIER_MON_NIDORAN_M, \ + FRONTIER_MON_NIDORAN_F, \ + FRONTIER_MON_KIRLIA, \ + FRONTIER_MON_MAREEP, \ + FRONTIER_MON_DITTO, \ + FRONTIER_MON_MEOWTH, \ + FRONTIER_MON_SPHEAL, \ + FRONTIER_MON_SHROOMISH, \ + FRONTIER_MON_VULPIX, \ + FRONTIER_MON_PIKACHU, \ + FRONTIER_MON_SANDSHREW, \ + FRONTIER_MON_POLIWAG, \ + FRONTIER_MON_DRATINI, \ + FRONTIER_MON_SNUBBULL, \ + FRONTIER_MON_GULPIN, \ + -1 + +#define FRONTIER_MONS_BUG_CATCHER_1 \ + FRONTIER_MON_CATERPIE, \ + FRONTIER_MON_WEEDLE, \ + FRONTIER_MON_WURMPLE, \ + FRONTIER_MON_SHEDINJA, \ + FRONTIER_MON_SPINARAK, \ + FRONTIER_MON_DIGLETT, \ + FRONTIER_MON_LEDYBA, \ + FRONTIER_MON_NINCADA, \ + FRONTIER_MON_SURSKIT, \ + FRONTIER_MON_PARAS, \ + FRONTIER_MON_PINECO, \ + FRONTIER_MON_TRAPINCH, \ + FRONTIER_MON_VENONAT, \ + FRONTIER_MON_EXEGGCUTE, \ + FRONTIER_MON_VIBRAVA, \ + FRONTIER_MON_ANORITH, \ + FRONTIER_MON_BUTTERFREE, \ + FRONTIER_MON_BEEDRILL, \ + FRONTIER_MON_BEAUTIFLY, \ + FRONTIER_MON_DUSTOX, \ + FRONTIER_MON_LEDIAN, \ + FRONTIER_MON_ARIADOS, \ + FRONTIER_MON_YANMA, \ + -1 + +// Identical to above with 2 additions. Might be possible to merge the two +#define FRONTIER_MONS_BUG_CATCHER_1_EXTRA(species1, species2) \ + FRONTIER_MON_CATERPIE, \ + FRONTIER_MON_WEEDLE, \ + FRONTIER_MON_WURMPLE, \ + FRONTIER_MON_##species1, \ + FRONTIER_MON_##species2, \ + FRONTIER_MON_SHEDINJA, \ + FRONTIER_MON_SPINARAK, \ + FRONTIER_MON_DIGLETT, \ + FRONTIER_MON_LEDYBA, \ + FRONTIER_MON_NINCADA, \ + FRONTIER_MON_SURSKIT, \ + FRONTIER_MON_PARAS, \ + FRONTIER_MON_PINECO, \ + FRONTIER_MON_TRAPINCH, \ + FRONTIER_MON_VENONAT, \ + FRONTIER_MON_EXEGGCUTE, \ + FRONTIER_MON_VIBRAVA, \ + FRONTIER_MON_ANORITH, \ + FRONTIER_MON_BUTTERFREE, \ + FRONTIER_MON_BEEDRILL, \ + FRONTIER_MON_BEAUTIFLY, \ + FRONTIER_MON_DUSTOX, \ + FRONTIER_MON_LEDIAN, \ + FRONTIER_MON_ARIADOS, \ + FRONTIER_MON_YANMA, \ + -1 + +#define FRONTIER_MONS_NINJA_BOY_1 \ + FRONTIER_MON_RALTS, \ + FRONTIER_MON_SHEDINJA, \ + FRONTIER_MON_ZUBAT, \ + FRONTIER_MON_SPINARAK, \ + FRONTIER_MON_WYNAUT, \ + FRONTIER_MON_DIGLETT, \ + FRONTIER_MON_LEDYBA, \ + FRONTIER_MON_NINCADA, \ + FRONTIER_MON_SURSKIT, \ + FRONTIER_MON_NIDORAN_M, \ + FRONTIER_MON_NIDORAN_F, \ + FRONTIER_MON_KIRLIA, \ + FRONTIER_MON_MEDITITE, \ + FRONTIER_MON_PARAS, \ + FRONTIER_MON_EKANS, \ + FRONTIER_MON_PINECO, \ + FRONTIER_MON_TRAPINCH, \ + FRONTIER_MON_SHUPPET, \ + FRONTIER_MON_DUSKULL, \ + FRONTIER_MON_BELLSPROUT, \ + FRONTIER_MON_BALTOY, \ + FRONTIER_MON_BELDUM, \ + FRONTIER_MON_GULPIN, \ + FRONTIER_MON_VENONAT, \ + FRONTIER_MON_SMOOCHUM, \ + FRONTIER_MON_ABRA, \ + FRONTIER_MON_GASTLY, \ + FRONTIER_MON_SLOWPOKE, \ + FRONTIER_MON_BULBASAUR, \ + FRONTIER_MON_ODDISH, \ + FRONTIER_MON_NATU, \ + FRONTIER_MON_GRIMER, \ + FRONTIER_MON_EXEGGCUTE, \ + FRONTIER_MON_DROWZEE, \ + FRONTIER_MON_SPOINK, \ + FRONTIER_MON_TENTACOOL, \ + FRONTIER_MON_KOFFING, \ + FRONTIER_MON_VIBRAVA, \ + FRONTIER_MON_ANORITH, \ + FRONTIER_MON_NIDORINA, \ + FRONTIER_MON_NIDORINO, \ + FRONTIER_MON_BUTTERFREE, \ + FRONTIER_MON_BEEDRILL, \ + FRONTIER_MON_BEAUTIFLY, \ + FRONTIER_MON_DUSTOX, \ + FRONTIER_MON_LEDIAN, \ + FRONTIER_MON_ARIADOS, \ + FRONTIER_MON_YANMA, \ + -1 + +#define FRONTIER_MONS_BUG_MANIAC_1 \ + FRONTIER_MON_SHEDINJA, \ + FRONTIER_MON_SPINARAK, \ + FRONTIER_MON_HOPPIP, \ + FRONTIER_MON_DIGLETT, \ + FRONTIER_MON_LEDYBA, \ + FRONTIER_MON_NINCADA, \ + FRONTIER_MON_SURSKIT, \ + FRONTIER_MON_PARAS, \ + FRONTIER_MON_PINECO, \ + FRONTIER_MON_TRAPINCH, \ + FRONTIER_MON_SHROOMISH, \ + FRONTIER_MON_SHUPPET, \ + FRONTIER_MON_DUSKULL, \ + FRONTIER_MON_BELLSPROUT, \ + FRONTIER_MON_VENONAT, \ + FRONTIER_MON_GASTLY, \ + FRONTIER_MON_ODDISH, \ + FRONTIER_MON_EXEGGCUTE, \ + FRONTIER_MON_CACNEA, \ + FRONTIER_MON_SKIPLOOM, \ + FRONTIER_MON_VIBRAVA, \ + FRONTIER_MON_LILEEP, \ + FRONTIER_MON_ANORITH, \ + FRONTIER_MON_BUTTERFREE, \ + FRONTIER_MON_BEEDRILL, \ + FRONTIER_MON_BEAUTIFLY, \ + FRONTIER_MON_DUSTOX, \ + FRONTIER_MON_LEDIAN, \ + FRONTIER_MON_ARIADOS, \ + FRONTIER_MON_YANMA, \ + -1 + +#define FRONTIER_MONS_FISHERMAN_1 \ + FRONTIER_MON_MAGIKARP, \ + FRONTIER_MON_FEEBAS, \ + FRONTIER_MON_BARBOACH, \ + FRONTIER_MON_HORSEA, \ + FRONTIER_MON_POLIWAG, \ + FRONTIER_MON_REMORAID, \ + FRONTIER_MON_SHELLDER, \ + FRONTIER_MON_CARVANHA, \ + FRONTIER_MON_CORPHISH, \ + FRONTIER_MON_GOLDEEN, \ + FRONTIER_MON_KRABBY, \ + FRONTIER_MON_CHINCHOU, \ + FRONTIER_MON_LUVDISC, \ + FRONTIER_MON_TENTACOOL, \ + FRONTIER_MON_STARYU, \ + FRONTIER_MON_CLAMPERL, \ + FRONTIER_MON_OMANYTE, \ + FRONTIER_MON_KABUTO, \ + FRONTIER_MON_CORSOLA, \ + -1 + +#define FRONTIER_MONS_RUIN_MANIAC_1 \ + FRONTIER_MON_SWINUB, \ + FRONTIER_MON_DIGLETT, \ + FRONTIER_MON_TRAPINCH, \ + FRONTIER_MON_SANDSHREW, \ + FRONTIER_MON_GEODUDE, \ + FRONTIER_MON_LARVITAR, \ + FRONTIER_MON_BALTOY, \ + FRONTIER_MON_BELDUM, \ + FRONTIER_MON_NUMEL, \ + FRONTIER_MON_CUBONE, \ + FRONTIER_MON_MAGNEMITE, \ + FRONTIER_MON_PHANPY, \ + FRONTIER_MON_ARON, \ + FRONTIER_MON_RHYHORN, \ + FRONTIER_MON_OMANYTE, \ + FRONTIER_MON_KABUTO, \ + FRONTIER_MON_LILEEP, \ + FRONTIER_MON_ANORITH, \ + FRONTIER_MON_NOSEPASS, \ + FRONTIER_MON_CORSOLA, \ + FRONTIER_MON_MAWILE, \ + FRONTIER_MON_ONIX, \ + -1 + +#define FRONTIER_MONS_PARASOL_LADY_1 \ + FRONTIER_MON_SUNKERN, \ + FRONTIER_MON_WOOPER, \ + FRONTIER_MON_LOTAD, \ + FRONTIER_MON_MARILL, \ + FRONTIER_MON_SURSKIT, \ + FRONTIER_MON_TRAPINCH, \ + FRONTIER_MON_SPHEAL, \ + FRONTIER_MON_SANDSHREW, \ + FRONTIER_MON_POLIWAG, \ + FRONTIER_MON_NUMEL, \ + FRONTIER_MON_DELIBIRD, \ + FRONTIER_MON_PHANPY, \ + FRONTIER_MON_LUVDISC, \ + FRONTIER_MON_POLIWHIRL, \ + FRONTIER_MON_ONIX, \ + FRONTIER_MON_SUDOWOODO_1, \ + -1 + +#define FRONTIER_MONS_AROMA_LADY_1 \ + FRONTIER_MON_SUNKERN, \ + FRONTIER_MON_RALTS, \ + FRONTIER_MON_SEEDOT, \ + FRONTIER_MON_LOTAD, \ + FRONTIER_MON_HOPPIP, \ + FRONTIER_MON_WYNAUT, \ + FRONTIER_MON_KIRLIA, \ + FRONTIER_MON_MEDITITE, \ + FRONTIER_MON_PARAS, \ + FRONTIER_MON_SHROOMISH, \ + FRONTIER_MON_BELLSPROUT, \ + FRONTIER_MON_BALTOY, \ + FRONTIER_MON_BELDUM, \ + FRONTIER_MON_SMOOCHUM, \ + FRONTIER_MON_ABRA, \ + FRONTIER_MON_TREECKO, \ + FRONTIER_MON_SLOWPOKE, \ + FRONTIER_MON_BULBASAUR, \ + FRONTIER_MON_CHIKORITA, \ + FRONTIER_MON_ODDISH, \ + FRONTIER_MON_NATU, \ + FRONTIER_MON_EXEGGCUTE, \ + FRONTIER_MON_DROWZEE, \ + FRONTIER_MON_SPOINK, \ + FRONTIER_MON_CACNEA, \ + FRONTIER_MON_SKIPLOOM, \ + FRONTIER_MON_NUZLEAF, \ + FRONTIER_MON_LOMBRE, \ + FRONTIER_MON_LILEEP, \ + -1 + +#define FRONTIER_MONS_GUITARIST_1 \ + FRONTIER_MON_RALTS, \ + FRONTIER_MON_PICHU, \ + FRONTIER_MON_POOCHYENA, \ + FRONTIER_MON_WYNAUT, \ + FRONTIER_MON_KIRLIA, \ + FRONTIER_MON_MAREEP, \ + FRONTIER_MON_MEDITITE, \ + FRONTIER_MON_SHUPPET, \ + FRONTIER_MON_DUSKULL, \ + FRONTIER_MON_ELECTRIKE, \ + FRONTIER_MON_PIKACHU, \ + FRONTIER_MON_DRATINI, \ + FRONTIER_MON_BALTOY, \ + FRONTIER_MON_BAGON, \ + FRONTIER_MON_BELDUM, \ + FRONTIER_MON_SMOOCHUM, \ + FRONTIER_MON_ABRA, \ + FRONTIER_MON_GASTLY, \ + FRONTIER_MON_SLOWPOKE, \ + FRONTIER_MON_NATU, \ + FRONTIER_MON_MAGNEMITE, \ + FRONTIER_MON_EXEGGCUTE, \ + FRONTIER_MON_DROWZEE, \ + FRONTIER_MON_VOLTORB, \ + FRONTIER_MON_CHINCHOU, \ + FRONTIER_MON_HOUNDOUR, \ + FRONTIER_MON_SPOINK, \ + FRONTIER_MON_ARON, \ + FRONTIER_MON_ELEKID, \ + FRONTIER_MON_FLAAFFY, \ + FRONTIER_MON_MAWILE, \ + -1 + +#define FRONTIER_MONS_BIRD_KEEPER_1 \ + FRONTIER_MON_AZURILL, \ + FRONTIER_MON_IGGLYBUFF, \ + FRONTIER_MON_SENTRET, \ + FRONTIER_MON_CLEFFA, \ + FRONTIER_MON_WHISMUR, \ + FRONTIER_MON_ZIGZAGOON, \ + FRONTIER_MON_ZUBAT, \ + FRONTIER_MON_TOGEPI, \ + FRONTIER_MON_SMEARGLE, \ + FRONTIER_MON_PIDGEY, \ + FRONTIER_MON_RATTATA, \ + FRONTIER_MON_SKITTY, \ + FRONTIER_MON_SPEAROW, \ + FRONTIER_MON_HOOTHOOT, \ + FRONTIER_MON_JIGGLYPUFF, \ + FRONTIER_MON_TAILLOW, \ + FRONTIER_MON_WINGULL, \ + FRONTIER_MON_SLAKOTH, \ + FRONTIER_MON_DITTO, \ + FRONTIER_MON_MEOWTH, \ + FRONTIER_MON_SNUBBULL, \ + FRONTIER_MON_DODUO, \ + FRONTIER_MON_SWABLU, \ + FRONTIER_MON_TORCHIC, \ + FRONTIER_MON_NATU, \ + FRONTIER_MON_CLEFAIRY, \ + FRONTIER_MON_EEVEE, \ + FRONTIER_MON_TEDDIURSA, \ + FRONTIER_MON_DELIBIRD, \ + FRONTIER_MON_PIDGEOTTO, \ + FRONTIER_MON_FARFETCHD, \ + FRONTIER_MON_AIPOM, \ + FRONTIER_MON_LOUDRED, \ + FRONTIER_MON_SPINDA, \ + -1 + +#define FRONTIER_MONS_SAILOR_1 \ + FRONTIER_MON_TYROGUE, \ + FRONTIER_MON_MAKUHITA, \ + FRONTIER_MON_MEDITITE, \ + FRONTIER_MON_SANDSHREW, \ + FRONTIER_MON_GEODUDE, \ + FRONTIER_MON_DRATINI, \ + FRONTIER_MON_LARVITAR, \ + FRONTIER_MON_BAGON, \ + FRONTIER_MON_MANKEY, \ + FRONTIER_MON_MACHOP, \ + FRONTIER_MON_SHELLDER, \ + FRONTIER_MON_CARVANHA, \ + FRONTIER_MON_CORPHISH, \ + FRONTIER_MON_MUDKIP, \ + FRONTIER_MON_SQUIRTLE, \ + FRONTIER_MON_TOTODILE, \ + FRONTIER_MON_SLOWPOKE, \ + FRONTIER_MON_PSYDUCK, \ + FRONTIER_MON_CUBONE, \ + FRONTIER_MON_SEEL, \ + FRONTIER_MON_KRABBY, \ + FRONTIER_MON_PHANPY, \ + FRONTIER_MON_TENTACOOL, \ + FRONTIER_MON_STARYU, \ + FRONTIER_MON_LOMBRE, \ + FRONTIER_MON_RHYHORN, \ + FRONTIER_MON_CLAMPERL, \ + FRONTIER_MON_OMANYTE, \ + FRONTIER_MON_KABUTO, \ + FRONTIER_MON_CORSOLA, \ + FRONTIER_MON_POLIWHIRL, \ + FRONTIER_MON_ONIX, \ + -1 + +#define FRONTIER_MONS_HIKER_1 \ + FRONTIER_MON_TYROGUE, \ + FRONTIER_MON_MAKUHITA, \ + FRONTIER_MON_SWINUB, \ + FRONTIER_MON_DIGLETT, \ + FRONTIER_MON_MEDITITE, \ + FRONTIER_MON_SLAKOTH, \ + FRONTIER_MON_TRAPINCH, \ + FRONTIER_MON_SANDSHREW, \ + FRONTIER_MON_GEODUDE, \ + FRONTIER_MON_LARVITAR, \ + FRONTIER_MON_BALTOY, \ + FRONTIER_MON_MANKEY, \ + FRONTIER_MON_MACHOP, \ + FRONTIER_MON_NUMEL, \ + FRONTIER_MON_CUBONE, \ + FRONTIER_MON_PHANPY, \ + FRONTIER_MON_ARON, \ + FRONTIER_MON_VIBRAVA, \ + FRONTIER_MON_RHYHORN, \ + FRONTIER_MON_OMANYTE, \ + FRONTIER_MON_KABUTO, \ + FRONTIER_MON_LILEEP, \ + FRONTIER_MON_ANORITH, \ + FRONTIER_MON_AIPOM, \ + FRONTIER_MON_LOUDRED, \ + FRONTIER_MON_NOSEPASS, \ + FRONTIER_MON_ONIX, \ + -1 + +#define FRONTIER_MONS_KINDLER_1 \ + FRONTIER_MON_SLUGMA, \ + FRONTIER_MON_SHUPPET, \ + FRONTIER_MON_DUSKULL, \ + FRONTIER_MON_VULPIX, \ + FRONTIER_MON_GEODUDE, \ + FRONTIER_MON_LARVITAR, \ + FRONTIER_MON_BAGON, \ + FRONTIER_MON_BELDUM, \ + FRONTIER_MON_NUMEL, \ + FRONTIER_MON_CHARMANDER, \ + FRONTIER_MON_CYNDAQUIL, \ + FRONTIER_MON_TORCHIC, \ + FRONTIER_MON_MAGNEMITE, \ + FRONTIER_MON_HOUNDOUR, \ + FRONTIER_MON_ARON, \ + FRONTIER_MON_RHYHORN, \ + FRONTIER_MON_GROWLITHE, \ + FRONTIER_MON_MAGBY, \ + FRONTIER_MON_NOSEPASS, \ + FRONTIER_MON_MAWILE, \ + FRONTIER_MON_ONIX, \ + -1 + +#define FRONTIER_MONS_RUNNING_TRIATHLETE_1 \ + FRONTIER_MON_AZURILL, \ + FRONTIER_MON_IGGLYBUFF, \ + FRONTIER_MON_TYROGUE, \ + FRONTIER_MON_SENTRET, \ + FRONTIER_MON_CLEFFA, \ + FRONTIER_MON_MAKUHITA, \ + FRONTIER_MON_WHISMUR, \ + FRONTIER_MON_ZIGZAGOON, \ + FRONTIER_MON_TOGEPI, \ + FRONTIER_MON_SMEARGLE, \ + FRONTIER_MON_PIDGEY, \ + FRONTIER_MON_RATTATA, \ + FRONTIER_MON_SKITTY, \ + FRONTIER_MON_SPEAROW, \ + FRONTIER_MON_HOOTHOOT, \ + FRONTIER_MON_JIGGLYPUFF, \ + FRONTIER_MON_TAILLOW, \ + FRONTIER_MON_MEDITITE, \ + FRONTIER_MON_SLAKOTH, \ + FRONTIER_MON_DITTO, \ + FRONTIER_MON_MEOWTH, \ + FRONTIER_MON_SANDSHREW, \ + FRONTIER_MON_GEODUDE, \ + FRONTIER_MON_SNUBBULL, \ + FRONTIER_MON_LARVITAR, \ + FRONTIER_MON_BALTOY, \ + FRONTIER_MON_MANKEY, \ + FRONTIER_MON_MACHOP, \ + FRONTIER_MON_NUMEL, \ + FRONTIER_MON_DODUO, \ + FRONTIER_MON_SWABLU, \ + FRONTIER_MON_CUBONE, \ + FRONTIER_MON_CLEFAIRY, \ + FRONTIER_MON_EEVEE, \ + FRONTIER_MON_TEDDIURSA, \ + FRONTIER_MON_PHANPY, \ + FRONTIER_MON_VIBRAVA, \ + FRONTIER_MON_RHYHORN, \ + FRONTIER_MON_PIDGEOTTO, \ + FRONTIER_MON_FARFETCHD, \ + FRONTIER_MON_AIPOM, \ + FRONTIER_MON_LOUDRED, \ + FRONTIER_MON_SPINDA, \ + FRONTIER_MON_ONIX, \ + -1 + +#define FRONTIER_MONS_SWIMMING_TRIATHLETE_1 \ + FRONTIER_MON_TYROGUE, \ + FRONTIER_MON_MAKUHITA, \ + FRONTIER_MON_MEDITITE, \ + FRONTIER_MON_DRATINI, \ + FRONTIER_MON_SNUBBULL, \ + FRONTIER_MON_SNORUNT, \ + FRONTIER_MON_BAGON, \ + FRONTIER_MON_MANKEY, \ + FRONTIER_MON_MACHOP, \ + FRONTIER_MON_SHELLDER, \ + FRONTIER_MON_SMOOCHUM, \ + FRONTIER_MON_CORPHISH, \ + FRONTIER_MON_MUDKIP, \ + FRONTIER_MON_SQUIRTLE, \ + FRONTIER_MON_TOTODILE, \ + FRONTIER_MON_SLOWPOKE, \ + FRONTIER_MON_PSYDUCK, \ + FRONTIER_MON_CLEFAIRY, \ + FRONTIER_MON_SEEL, \ + FRONTIER_MON_KRABBY, \ + FRONTIER_MON_EEVEE, \ + FRONTIER_MON_TEDDIURSA, \ + FRONTIER_MON_DELIBIRD, \ + FRONTIER_MON_LOMBRE, \ + FRONTIER_MON_CLAMPERL, \ + FRONTIER_MON_OMANYTE, \ + FRONTIER_MON_KABUTO, \ + FRONTIER_MON_AIPOM, \ + FRONTIER_MON_LOUDRED, \ + FRONTIER_MON_SPINDA, \ + FRONTIER_MON_CORSOLA, \ + FRONTIER_MON_POLIWHIRL, \ + -1 + +#define FRONTIER_MONS_CYCLING_TRIATHLETE_1 \ + FRONTIER_MON_PICHU, \ + FRONTIER_MON_TYROGUE, \ + FRONTIER_MON_MAKUHITA, \ + FRONTIER_MON_MAREEP, \ + FRONTIER_MON_MEDITITE, \ + FRONTIER_MON_ELECTRIKE, \ + FRONTIER_MON_PIKACHU, \ + FRONTIER_MON_DRATINI, \ + FRONTIER_MON_SNUBBULL, \ + FRONTIER_MON_BAGON, \ + FRONTIER_MON_BELDUM, \ + FRONTIER_MON_MANKEY, \ + FRONTIER_MON_MACHOP, \ + FRONTIER_MON_DODUO, \ + FRONTIER_MON_SWABLU, \ + FRONTIER_MON_CLEFAIRY, \ + FRONTIER_MON_MAGNEMITE, \ + FRONTIER_MON_EEVEE, \ + FRONTIER_MON_VOLTORB, \ + FRONTIER_MON_TEDDIURSA, \ + FRONTIER_MON_ARON, \ + FRONTIER_MON_PIDGEOTTO, \ + FRONTIER_MON_FARFETCHD, \ + FRONTIER_MON_AIPOM, \ + FRONTIER_MON_ELEKID, \ + FRONTIER_MON_LOUDRED, \ + FRONTIER_MON_SPINDA, \ + FRONTIER_MON_FLAAFFY, \ + FRONTIER_MON_MAWILE, \ + -1 + +#define FRONTIER_MONS_RUNNING_TRIATHLETE_2 \ + FRONTIER_MON_DELCATTY_1, \ + FRONTIER_MON_LICKITUNG_1, \ + FRONTIER_MON_PORYGON_1, \ + FRONTIER_MON_MACHOKE_1, \ + FRONTIER_MON_TOGETIC_1, \ + FRONTIER_MON_MURKROW_1, \ + FRONTIER_MON_COMBUSKEN_1, \ + FRONTIER_MON_RATICATE_1, \ + FRONTIER_MON_FURRET_1, \ + FRONTIER_MON_DUNSPARCE_1, \ + FRONTIER_MON_LINOONE_1, \ + FRONTIER_MON_CASTFORM_1, \ + FRONTIER_MON_WIGGLYTUFF_1, \ + FRONTIER_MON_GLIGAR_1, \ + FRONTIER_MON_PELIPPER_1, \ + FRONTIER_MON_SWELLOW_1, \ + FRONTIER_MON_PERSIAN_1, \ + FRONTIER_MON_KECLEON_1, \ + FRONTIER_MON_VIGOROTH_1, \ + FRONTIER_MON_NOCTOWL_1, \ + FRONTIER_MON_CHANSEY_1, \ + FRONTIER_MON_GOLBAT_1, \ + FRONTIER_MON_PRIMEAPE_1, \ + FRONTIER_MON_HITMONLEE_1, \ + FRONTIER_MON_HITMONCHAN_1, \ + FRONTIER_MON_GIRAFARIG_1, \ + FRONTIER_MON_HITMONTOP_1, \ + FRONTIER_MON_NINJASK_1, \ + FRONTIER_MON_ZANGOOSE_1, \ + FRONTIER_MON_TROPIUS_1, \ + FRONTIER_MON_MANTINE_1, \ + FRONTIER_MON_STANTLER_1, \ + FRONTIER_MON_PIDGEOT_1, \ + FRONTIER_MON_SCYTHER_1, \ + -1 + +#define FRONTIER_MONS_SWIMMING_TRIATHLETE_2 \ + FRONTIER_MON_WAILMER_1, \ + FRONTIER_MON_WARTORTLE_1, \ + FRONTIER_MON_MACHOKE_1, \ + FRONTIER_MON_CROCONAW_1, \ + FRONTIER_MON_COMBUSKEN_1, \ + FRONTIER_MON_MARSHTOMP_1, \ + FRONTIER_MON_AZUMARILL_1, \ + FRONTIER_MON_SEALEO_1, \ + FRONTIER_MON_QWILFISH_1, \ + FRONTIER_MON_SNEASEL_1, \ + FRONTIER_MON_PELIPPER_1, \ + FRONTIER_MON_SEADRA_1, \ + FRONTIER_MON_SEAKING_1, \ + FRONTIER_MON_PILOSWINE_1, \ + FRONTIER_MON_PRIMEAPE_1, \ + FRONTIER_MON_HITMONLEE_1, \ + FRONTIER_MON_HITMONCHAN_1, \ + FRONTIER_MON_HITMONTOP_1, \ + FRONTIER_MON_SHARPEDO_1, \ + FRONTIER_MON_MANTINE_1, \ + FRONTIER_MON_CRAWDAUNT_1, \ + FRONTIER_MON_KINGLER_1, \ + FRONTIER_MON_OCTILLERY_1, \ + FRONTIER_MON_HUNTAIL_1, \ + FRONTIER_MON_GOREBYSS_1, \ + FRONTIER_MON_RELICANTH_1, \ + FRONTIER_MON_OMASTAR_1, \ + FRONTIER_MON_KABUTOPS_1, \ + FRONTIER_MON_POLIWRATH_1, \ + FRONTIER_MON_POLITOED_1, \ + FRONTIER_MON_CLOYSTER_1, \ + -1 + +#define FRONTIER_MONS_CYCLING_TRIATHLETE_2 \ + FRONTIER_MON_DELCATTY_1, \ + FRONTIER_MON_LICKITUNG_1, \ + FRONTIER_MON_PORYGON_1, \ + FRONTIER_MON_MACHOKE_1, \ + FRONTIER_MON_TOGETIC_1, \ + FRONTIER_MON_PLUSLE_1, \ + FRONTIER_MON_MINUN_1, \ + FRONTIER_MON_COMBUSKEN_1, \ + FRONTIER_MON_RATICATE_1, \ + FRONTIER_MON_FURRET_1, \ + FRONTIER_MON_DUNSPARCE_1, \ + FRONTIER_MON_LINOONE_1, \ + FRONTIER_MON_CASTFORM_1, \ + FRONTIER_MON_METANG_1, \ + FRONTIER_MON_WIGGLYTUFF_1, \ + FRONTIER_MON_SWELLOW_1, \ + FRONTIER_MON_LAIRON_1, \ + FRONTIER_MON_PERSIAN_1, \ + FRONTIER_MON_KECLEON_1, \ + FRONTIER_MON_VIGOROTH_1, \ + FRONTIER_MON_NOCTOWL_1, \ + FRONTIER_MON_CHANSEY_1, \ + FRONTIER_MON_PRIMEAPE_1, \ + FRONTIER_MON_HITMONLEE_1, \ + FRONTIER_MON_HITMONCHAN_1, \ + FRONTIER_MON_GIRAFARIG_1, \ + FRONTIER_MON_HITMONTOP_1, \ + FRONTIER_MON_ZANGOOSE_1, \ + FRONTIER_MON_MAGNETON_1, \ + FRONTIER_MON_STANTLER_1, \ + FRONTIER_MON_PIDGEOT_1, \ + -1 + +#define FRONTIER_MONS_BLACK_BELT_BATTLE_GIRL_1 \ + FRONTIER_MON_LICKITUNG_1, \ + FRONTIER_MON_GRAVELER_1, \ + FRONTIER_MON_CHARMELEON_1, \ + FRONTIER_MON_MACHOKE_1, \ + FRONTIER_MON_QUILAVA_1, \ + FRONTIER_MON_COMBUSKEN_1, \ + FRONTIER_MON_PONYTA_1, \ + FRONTIER_MON_SUDOWOODO_1, \ + FRONTIER_MON_MAGCARGO_1, \ + FRONTIER_MON_PUPITAR_1, \ + FRONTIER_MON_RATICATE_1, \ + FRONTIER_MON_FURRET_1, \ + FRONTIER_MON_DUNSPARCE_1, \ + FRONTIER_MON_MIGHTYENA_1, \ + FRONTIER_MON_LINOONE_1, \ + FRONTIER_MON_SHELGON_1, \ + FRONTIER_MON_METANG_1, \ + FRONTIER_MON_WIGGLYTUFF_1, \ + FRONTIER_MON_GLIGAR_1, \ + FRONTIER_MON_LAIRON_1, \ + FRONTIER_MON_PERSIAN_1, \ + FRONTIER_MON_KECLEON_1, \ + FRONTIER_MON_VIGOROTH_1, \ + FRONTIER_MON_LUNATONE_1, \ + FRONTIER_MON_SOLROCK_1, \ + FRONTIER_MON_SANDSLASH_1, \ + FRONTIER_MON_CHANSEY_1, \ + FRONTIER_MON_PILOSWINE_1, \ + FRONTIER_MON_PRIMEAPE_1, \ + FRONTIER_MON_HITMONLEE_1, \ + FRONTIER_MON_HITMONCHAN_1, \ + FRONTIER_MON_GIRAFARIG_1, \ + FRONTIER_MON_HITMONTOP_1, \ + FRONTIER_MON_ZANGOOSE_1, \ + FRONTIER_MON_CAMERUPT_1, \ + FRONTIER_MON_STANTLER_1, \ + FRONTIER_MON_ABSOL_1, \ + FRONTIER_MON_TORKOAL_1, \ + FRONTIER_MON_CACTURNE_1, \ + FRONTIER_MON_POLIWRATH_1, \ + -1 + +#define FRONTIER_MONS_EXPERT_1A \ + FRONTIER_MON_DELCATTY_1, \ + FRONTIER_MON_SABLEYE_1, \ + FRONTIER_MON_LICKITUNG_1, \ + FRONTIER_MON_WEEPINBELL_1, \ + FRONTIER_MON_GRAVELER_1, \ + FRONTIER_MON_GLOOM_1, \ + FRONTIER_MON_PORYGON_1, \ + FRONTIER_MON_KADABRA_1, \ + FRONTIER_MON_WAILMER_1, \ + FRONTIER_MON_ROSELIA_1, \ + FRONTIER_MON_VOLBEAT_1, \ + FRONTIER_MON_ILLUMISE_1, \ + FRONTIER_MON_IVYSAUR_1, \ + FRONTIER_MON_CHARMELEON_1, \ + FRONTIER_MON_WARTORTLE_1, \ + FRONTIER_MON_PARASECT_1, \ + FRONTIER_MON_MACHOKE_1, \ + FRONTIER_MON_HAUNTER_1, \ + FRONTIER_MON_BAYLEEF_1, \ + FRONTIER_MON_QUILAVA_1, \ + FRONTIER_MON_CROCONAW_1, \ + FRONTIER_MON_TOGETIC_1, \ + FRONTIER_MON_MURKROW_1, \ + FRONTIER_MON_WOBBUFFET_1, \ + FRONTIER_MON_PLUSLE_1, \ + FRONTIER_MON_MINUN_1, \ + FRONTIER_MON_GROVYLE_1, \ + FRONTIER_MON_COMBUSKEN_1, \ + FRONTIER_MON_MARSHTOMP_1, \ + FRONTIER_MON_PONYTA_1, \ + FRONTIER_MON_AZUMARILL_1, \ + FRONTIER_MON_SUDOWOODO_1, \ + FRONTIER_MON_MAGCARGO_1, \ + FRONTIER_MON_PUPITAR_1, \ + FRONTIER_MON_SEALEO_1, \ + FRONTIER_MON_RATICATE_1, \ + FRONTIER_MON_MASQUERAIN_1, \ + FRONTIER_MON_FURRET_1, \ + -1 + +#define FRONTIER_MONS_EXPERT_1B \ + FRONTIER_MON_DUNSPARCE_1, \ + FRONTIER_MON_DRAGONAIR_1, \ + FRONTIER_MON_MIGHTYENA_1, \ + FRONTIER_MON_LINOONE_1, \ + FRONTIER_MON_CASTFORM_1, \ + FRONTIER_MON_SHELGON_1, \ + FRONTIER_MON_METANG_1, \ + FRONTIER_MON_WIGGLYTUFF_1, \ + FRONTIER_MON_SUNFLORA_1, \ + FRONTIER_MON_CHIMECHO_1, \ + FRONTIER_MON_GLIGAR_1, \ + FRONTIER_MON_QWILFISH_1, \ + FRONTIER_MON_SNEASEL_1, \ + FRONTIER_MON_PELIPPER_1, \ + FRONTIER_MON_SWELLOW_1, \ + FRONTIER_MON_LAIRON_1, \ + FRONTIER_MON_TANGELA_1, \ + FRONTIER_MON_ARBOK_1, \ + FRONTIER_MON_PERSIAN_1, \ + FRONTIER_MON_SEADRA_1, \ + FRONTIER_MON_KECLEON_1, \ + FRONTIER_MON_VIGOROTH_1, \ + FRONTIER_MON_LUNATONE_1, \ + FRONTIER_MON_SOLROCK_1, \ + FRONTIER_MON_NOCTOWL_1, \ + FRONTIER_MON_SANDSLASH_1, \ + FRONTIER_MON_VENOMOTH_1, \ + FRONTIER_MON_CHANSEY_1, \ + FRONTIER_MON_SEAKING_1, \ + FRONTIER_MON_JUMPLUFF_1, \ + FRONTIER_MON_PILOSWINE_1, \ + FRONTIER_MON_GOLBAT_1, \ + FRONTIER_MON_PRIMEAPE_1, \ + FRONTIER_MON_HITMONLEE_1, \ + FRONTIER_MON_HITMONCHAN_1, \ + FRONTIER_MON_GIRAFARIG_1, \ + FRONTIER_MON_HITMONTOP_1, \ + -1 + +#define FRONTIER_MONS_EXPERT_1C \ + FRONTIER_MON_BANETTE_1, \ + FRONTIER_MON_NINJASK_1, \ + FRONTIER_MON_SEVIPER_1, \ + FRONTIER_MON_ZANGOOSE_1, \ + FRONTIER_MON_CAMERUPT_1, \ + FRONTIER_MON_SHARPEDO_1, \ + FRONTIER_MON_TROPIUS_1, \ + FRONTIER_MON_MAGNETON_1, \ + FRONTIER_MON_MANTINE_1, \ + FRONTIER_MON_STANTLER_1, \ + FRONTIER_MON_ABSOL_1, \ + FRONTIER_MON_SWALOT_1, \ + FRONTIER_MON_CRAWDAUNT_1, \ + FRONTIER_MON_PIDGEOT_1, \ + FRONTIER_MON_GRUMPIG_1, \ + FRONTIER_MON_TORKOAL_1, \ + FRONTIER_MON_KINGLER_1, \ + FRONTIER_MON_CACTURNE_1, \ + FRONTIER_MON_BELLOSSOM_1, \ + FRONTIER_MON_OCTILLERY_1, \ + FRONTIER_MON_HUNTAIL_1, \ + FRONTIER_MON_GOREBYSS_1, \ + FRONTIER_MON_RELICANTH_1, \ + FRONTIER_MON_OMASTAR_1, \ + FRONTIER_MON_KABUTOPS_1, \ + FRONTIER_MON_POLIWRATH_1, \ + FRONTIER_MON_SCYTHER_1, \ + FRONTIER_MON_PINSIR_1, \ + FRONTIER_MON_POLITOED_1, \ + FRONTIER_MON_CLOYSTER_1, \ + -1 + +#define FRONTIER_MONS_PSYCHIC_1 \ + FRONTIER_MON_DELCATTY_2, \ + FRONTIER_MON_SABLEYE_2, \ + FRONTIER_MON_PORYGON_2, \ + FRONTIER_MON_KADABRA_2, \ + FRONTIER_MON_ROSELIA_2, \ + FRONTIER_MON_HAUNTER_2, \ + FRONTIER_MON_MURKROW_2, \ + FRONTIER_MON_WOBBUFFET_2, \ + FRONTIER_MON_PLUSLE_2, \ + FRONTIER_MON_MINUN_2, \ + FRONTIER_MON_MIGHTYENA_2, \ + FRONTIER_MON_LINOONE_2, \ + FRONTIER_MON_METANG_2, \ + FRONTIER_MON_WIGGLYTUFF_2, \ + FRONTIER_MON_CHIMECHO_2, \ + FRONTIER_MON_SNEASEL_2, \ + FRONTIER_MON_KECLEON_2, \ + FRONTIER_MON_LUNATONE_2, \ + FRONTIER_MON_SOLROCK_2, \ + FRONTIER_MON_NOCTOWL_2, \ + FRONTIER_MON_VENOMOTH_2, \ + FRONTIER_MON_CHANSEY_2, \ + FRONTIER_MON_GIRAFARIG_2, \ + FRONTIER_MON_BANETTE_2, \ + FRONTIER_MON_SHARPEDO_2, \ + FRONTIER_MON_MAGNETON_2, \ + FRONTIER_MON_STANTLER_2, \ + FRONTIER_MON_ABSOL_2, \ + FRONTIER_MON_CRAWDAUNT_2, \ + FRONTIER_MON_GRUMPIG_2, \ + FRONTIER_MON_CACTURNE_2, \ + FRONTIER_MON_GOREBYSS_2, \ + FRONTIER_MON_POLITOED_2, \ + -1 + +#define FRONTIER_MONS_HEX_MANIAC_1 \ + FRONTIER_MON_SABLEYE_2, \ + FRONTIER_MON_WEEPINBELL_2, \ + FRONTIER_MON_GLOOM_2, \ + FRONTIER_MON_KADABRA_2, \ + FRONTIER_MON_PARASECT_2, \ + FRONTIER_MON_HAUNTER_2, \ + FRONTIER_MON_MURKROW_2, \ + FRONTIER_MON_WOBBUFFET_2, \ + FRONTIER_MON_MASQUERAIN_2, \ + FRONTIER_MON_MIGHTYENA_2, \ + FRONTIER_MON_METANG_2, \ + FRONTIER_MON_CHIMECHO_2, \ + FRONTIER_MON_SNEASEL_2, \ + FRONTIER_MON_ARBOK_2, \ + FRONTIER_MON_LUNATONE_2, \ + FRONTIER_MON_SOLROCK_2, \ + FRONTIER_MON_VENOMOTH_2, \ + FRONTIER_MON_GOLBAT_2, \ + FRONTIER_MON_GIRAFARIG_2, \ + FRONTIER_MON_BANETTE_2, \ + FRONTIER_MON_SEVIPER_2, \ + FRONTIER_MON_SHARPEDO_2, \ + FRONTIER_MON_ABSOL_2, \ + FRONTIER_MON_SWALOT_2, \ + FRONTIER_MON_CRAWDAUNT_2, \ + FRONTIER_MON_GRUMPIG_2, \ + FRONTIER_MON_CACTURNE_2, \ + -1 + +#define FRONTIER_MONS_POKEMANIAC_1 \ + FRONTIER_MON_LICKITUNG_2, \ + FRONTIER_MON_GRAVELER_2, \ + FRONTIER_MON_WAILMER_2, \ + FRONTIER_MON_IVYSAUR_2, \ + FRONTIER_MON_CHARMELEON_2, \ + FRONTIER_MON_WARTORTLE_2, \ + FRONTIER_MON_MACHOKE_2, \ + FRONTIER_MON_BAYLEEF_2, \ + FRONTIER_MON_QUILAVA_2, \ + FRONTIER_MON_CROCONAW_2, \ + FRONTIER_MON_GROVYLE_2, \ + FRONTIER_MON_COMBUSKEN_2, \ + FRONTIER_MON_MARSHTOMP_2, \ + FRONTIER_MON_PUPITAR_2, \ + FRONTIER_MON_RATICATE_2, \ + FRONTIER_MON_MIGHTYENA_2, \ + FRONTIER_MON_SHELGON_2, \ + FRONTIER_MON_METANG_2, \ + FRONTIER_MON_LAIRON_2, \ + FRONTIER_MON_ARBOK_2, \ + FRONTIER_MON_VIGOROTH_2, \ + FRONTIER_MON_SANDSLASH_2, \ + FRONTIER_MON_CHANSEY_2, \ + FRONTIER_MON_PILOSWINE_2, \ + FRONTIER_MON_SEVIPER_2, \ + FRONTIER_MON_ZANGOOSE_2, \ + FRONTIER_MON_CAMERUPT_2, \ + FRONTIER_MON_TROPIUS_2, \ + FRONTIER_MON_MANTINE_2, \ + FRONTIER_MON_SWALOT_2, \ + FRONTIER_MON_TORKOAL_2, \ + -1 + +#define FRONTIER_MONS_GENTLEMAN_1A \ + FRONTIER_MON_DELCATTY_2, \ + FRONTIER_MON_SABLEYE_2, \ + FRONTIER_MON_LICKITUNG_2, \ + FRONTIER_MON_WEEPINBELL_2, \ + FRONTIER_MON_GRAVELER_2, \ + FRONTIER_MON_GLOOM_2, \ + FRONTIER_MON_PORYGON_2, \ + FRONTIER_MON_KADABRA_2, \ + FRONTIER_MON_WAILMER_2, \ + FRONTIER_MON_ROSELIA_2, \ + FRONTIER_MON_VOLBEAT_2, \ + FRONTIER_MON_ILLUMISE_2, \ + FRONTIER_MON_IVYSAUR_2, \ + FRONTIER_MON_CHARMELEON_2, \ + FRONTIER_MON_WARTORTLE_2, \ + FRONTIER_MON_PARASECT_2, \ + FRONTIER_MON_MACHOKE_2, \ + FRONTIER_MON_HAUNTER_2, \ + FRONTIER_MON_BAYLEEF_2, \ + FRONTIER_MON_QUILAVA_2, \ + FRONTIER_MON_CROCONAW_2, \ + FRONTIER_MON_TOGETIC_2, \ + FRONTIER_MON_MURKROW_2, \ + FRONTIER_MON_WOBBUFFET_2, \ + FRONTIER_MON_PLUSLE_2, \ + FRONTIER_MON_MINUN_2, \ + FRONTIER_MON_GROVYLE_2, \ + FRONTIER_MON_COMBUSKEN_2, \ + FRONTIER_MON_MARSHTOMP_2, \ + FRONTIER_MON_PONYTA_2, \ + FRONTIER_MON_AZUMARILL_2, \ + FRONTIER_MON_SUDOWOODO_2, \ + FRONTIER_MON_MAGCARGO_2, \ + FRONTIER_MON_PUPITAR_2, \ + FRONTIER_MON_SEALEO_2, \ + FRONTIER_MON_RATICATE_2, \ + FRONTIER_MON_MASQUERAIN_2, \ + FRONTIER_MON_FURRET_2, \ + -1 + +#define FRONTIER_MONS_GENTLEMAN_1B \ + FRONTIER_MON_DUNSPARCE_2, \ + FRONTIER_MON_DRAGONAIR_2, \ + FRONTIER_MON_MIGHTYENA_2, \ + FRONTIER_MON_LINOONE_2, \ + FRONTIER_MON_CASTFORM_2, \ + FRONTIER_MON_SHELGON_2, \ + FRONTIER_MON_METANG_2, \ + FRONTIER_MON_WIGGLYTUFF_2, \ + FRONTIER_MON_SUNFLORA_2, \ + FRONTIER_MON_CHIMECHO_2, \ + FRONTIER_MON_GLIGAR_2, \ + FRONTIER_MON_QWILFISH_2, \ + FRONTIER_MON_SNEASEL_2, \ + FRONTIER_MON_PELIPPER_2, \ + FRONTIER_MON_SWELLOW_2, \ + FRONTIER_MON_LAIRON_2, \ + FRONTIER_MON_TANGELA_2, \ + FRONTIER_MON_ARBOK_2, \ + FRONTIER_MON_PERSIAN_2, \ + FRONTIER_MON_SEADRA_2, \ + FRONTIER_MON_KECLEON_2, \ + FRONTIER_MON_VIGOROTH_2, \ + FRONTIER_MON_LUNATONE_2, \ + FRONTIER_MON_SOLROCK_2, \ + FRONTIER_MON_NOCTOWL_2, \ + FRONTIER_MON_SANDSLASH_2, \ + FRONTIER_MON_VENOMOTH_2, \ + FRONTIER_MON_CHANSEY_2, \ + FRONTIER_MON_SEAKING_2, \ + FRONTIER_MON_JUMPLUFF_2, \ + FRONTIER_MON_PILOSWINE_2, \ + FRONTIER_MON_GOLBAT_2, \ + FRONTIER_MON_PRIMEAPE_2, \ + FRONTIER_MON_HITMONLEE_2, \ + FRONTIER_MON_HITMONCHAN_2, \ + FRONTIER_MON_GIRAFARIG_2, \ + FRONTIER_MON_HITMONTOP_2, \ + -1 + +#define FRONTIER_MONS_BUG_MANIAC_2 \ + FRONTIER_MON_LEDIAN, \ + FRONTIER_MON_ARIADOS, \ + FRONTIER_MON_YANMA, \ + FRONTIER_MON_VOLBEAT_1, \ + FRONTIER_MON_ILLUMISE_1, \ + FRONTIER_MON_PARASECT_1, \ + FRONTIER_MON_MASQUERAIN_1, \ + FRONTIER_MON_VENOMOTH_1, \ + FRONTIER_MON_NINJASK_1, \ + FRONTIER_MON_SCYTHER_1, \ + FRONTIER_MON_PINSIR_1, \ + FRONTIER_MON_VOLBEAT_2, \ + FRONTIER_MON_ILLUMISE_2, \ + FRONTIER_MON_PARASECT_2, \ + FRONTIER_MON_MASQUERAIN_2, \ + FRONTIER_MON_VENOMOTH_2, \ + FRONTIER_MON_NINJASK_2, \ + FRONTIER_MON_SCYTHER_2, \ + FRONTIER_MON_PINSIR_2, \ + -1 + +#define FRONTIER_MONS_RUIN_MANIAC_2 \ + FRONTIER_MON_GRAVELER_2, \ + FRONTIER_MON_MACHOKE_2, \ + FRONTIER_MON_COMBUSKEN_2, \ + FRONTIER_MON_MARSHTOMP_2, \ + FRONTIER_MON_SUDOWOODO_2, \ + FRONTIER_MON_MAGCARGO_2, \ + FRONTIER_MON_PUPITAR_2, \ + FRONTIER_MON_METANG_2, \ + FRONTIER_MON_GLIGAR_2, \ + FRONTIER_MON_LAIRON_2, \ + FRONTIER_MON_LUNATONE_2, \ + FRONTIER_MON_SOLROCK_2, \ + FRONTIER_MON_SANDSLASH_2, \ + FRONTIER_MON_PILOSWINE_2, \ + FRONTIER_MON_PRIMEAPE_2, \ + FRONTIER_MON_HITMONLEE_2, \ + FRONTIER_MON_HITMONCHAN_2, \ + FRONTIER_MON_HITMONTOP_2, \ + FRONTIER_MON_CAMERUPT_2, \ + FRONTIER_MON_RELICANTH_2, \ + FRONTIER_MON_OMASTAR_2, \ + FRONTIER_MON_KABUTOPS_2, \ + -1 + +#define FRONTIER_MONS_COLLECTOR_1 \ + FRONTIER_MON_BANETTE_2, \ + FRONTIER_MON_NINJASK_2, \ + FRONTIER_MON_SEVIPER_2, \ + FRONTIER_MON_ZANGOOSE_2, \ + FRONTIER_MON_CAMERUPT_2, \ + FRONTIER_MON_SHARPEDO_2, \ + FRONTIER_MON_TROPIUS_2, \ + FRONTIER_MON_MAGNETON_2, \ + FRONTIER_MON_MANTINE_2, \ + FRONTIER_MON_STANTLER_2, \ + FRONTIER_MON_ABSOL_2, \ + FRONTIER_MON_SWALOT_2, \ + FRONTIER_MON_CRAWDAUNT_2, \ + FRONTIER_MON_PIDGEOT_2, \ + FRONTIER_MON_GRUMPIG_2, \ + FRONTIER_MON_TORKOAL_2, \ + FRONTIER_MON_KINGLER_2, \ + FRONTIER_MON_CACTURNE_2, \ + FRONTIER_MON_BELLOSSOM_2, \ + FRONTIER_MON_OCTILLERY_2, \ + FRONTIER_MON_HUNTAIL_2, \ + FRONTIER_MON_GOREBYSS_2, \ + FRONTIER_MON_RELICANTH_2, \ + FRONTIER_MON_OMASTAR_2, \ + FRONTIER_MON_KABUTOPS_2, \ + FRONTIER_MON_POLIWRATH_2, \ + FRONTIER_MON_SCYTHER_2, \ + FRONTIER_MON_PINSIR_2, \ + FRONTIER_MON_POLITOED_2, \ + FRONTIER_MON_CLOYSTER_2, \ + -1 + +#define FRONTIER_MONS_PARASOL_LADY_2 \ + FRONTIER_MON_GLOOM_2, \ + FRONTIER_MON_SEALEO_2, \ + FRONTIER_MON_CASTFORM_2, \ + FRONTIER_MON_SANDSLASH_2, \ + FRONTIER_MON_TROPIUS_2, \ + FRONTIER_MON_MAGNETON_2, \ + FRONTIER_MON_MANTINE_2, \ + FRONTIER_MON_CACTURNE_2, \ + FRONTIER_MON_BELLOSSOM_2, \ + FRONTIER_MON_HUNTAIL_2, \ + FRONTIER_MON_GOREBYSS_2, \ + FRONTIER_MON_OMASTAR_2, \ + -1 + +#define FRONTIER_MONS_BEAUTY_1 \ + FRONTIER_MON_DELCATTY_2, \ + FRONTIER_MON_LICKITUNG_2, \ + FRONTIER_MON_WEEPINBELL_2, \ + FRONTIER_MON_GLOOM_2, \ + FRONTIER_MON_PORYGON_2, \ + FRONTIER_MON_ROSELIA_2, \ + FRONTIER_MON_IVYSAUR_2, \ + FRONTIER_MON_HAUNTER_2, \ + FRONTIER_MON_TOGETIC_2, \ + FRONTIER_MON_RATICATE_2, \ + FRONTIER_MON_FURRET_2, \ + FRONTIER_MON_DUNSPARCE_2, \ + FRONTIER_MON_LINOONE_2, \ + FRONTIER_MON_CASTFORM_2, \ + FRONTIER_MON_WIGGLYTUFF_2, \ + FRONTIER_MON_QWILFISH_2, \ + FRONTIER_MON_SWELLOW_2, \ + FRONTIER_MON_ARBOK_2, \ + FRONTIER_MON_PERSIAN_2, \ + FRONTIER_MON_KECLEON_2, \ + FRONTIER_MON_VIGOROTH_2, \ + FRONTIER_MON_NOCTOWL_2, \ + FRONTIER_MON_VENOMOTH_2, \ + FRONTIER_MON_CHANSEY_2, \ + FRONTIER_MON_GOLBAT_2, \ + FRONTIER_MON_GIRAFARIG_2, \ + FRONTIER_MON_SEVIPER_2, \ + FRONTIER_MON_ZANGOOSE_2, \ + FRONTIER_MON_STANTLER_2, \ + FRONTIER_MON_SWALOT_2, \ + FRONTIER_MON_PIDGEOT_2, \ + -1 + +#define FRONTIER_MONS_AROMA_LADY_2 \ + FRONTIER_MON_WEEPINBELL_2, \ + FRONTIER_MON_GLOOM_2, \ + FRONTIER_MON_KADABRA_2, \ + FRONTIER_MON_ROSELIA_2, \ + FRONTIER_MON_IVYSAUR_2, \ + FRONTIER_MON_PARASECT_2, \ + FRONTIER_MON_BAYLEEF_2, \ + FRONTIER_MON_WOBBUFFET_2, \ + FRONTIER_MON_GROVYLE_2, \ + FRONTIER_MON_SUNFLORA_2, \ + FRONTIER_MON_CHIMECHO_2, \ + FRONTIER_MON_TANGELA_2, \ + FRONTIER_MON_JUMPLUFF_2, \ + FRONTIER_MON_GIRAFARIG_2, \ + FRONTIER_MON_TROPIUS_2, \ + FRONTIER_MON_GRUMPIG_2, \ + FRONTIER_MON_CACTURNE_2, \ + FRONTIER_MON_BELLOSSOM_2, \ + -1 + +#define FRONTIER_MONS_COOLTRAINER_1A \ + FRONTIER_MON_DUGTRIO_1, \ + FRONTIER_MON_MEDICHAM_1, \ + FRONTIER_MON_MISDREAVUS_1, \ + FRONTIER_MON_FEAROW_1, \ + FRONTIER_MON_GRANBULL_1, \ + FRONTIER_MON_JYNX_1, \ + FRONTIER_MON_DUSCLOPS_1, \ + FRONTIER_MON_DODRIO_1, \ + FRONTIER_MON_MR_MIME_1, \ + FRONTIER_MON_LANTURN_1, \ + FRONTIER_MON_BRELOOM_1, \ + FRONTIER_MON_FORRETRESS_1, \ + FRONTIER_MON_WHISCASH_1, \ + FRONTIER_MON_XATU_1, \ + FRONTIER_MON_SKARMORY_1, \ + FRONTIER_MON_MAROWAK_1, \ + FRONTIER_MON_QUAGSIRE_1, \ + FRONTIER_MON_CLEFABLE_1, \ + FRONTIER_MON_HARIYAMA_1, \ + FRONTIER_MON_RAICHU_1, \ + FRONTIER_MON_DEWGONG_1, \ + FRONTIER_MON_MANECTRIC_1, \ + FRONTIER_MON_VILEPLUME_1, \ + FRONTIER_MON_VICTREEBEL_1, \ + FRONTIER_MON_ELECTRODE_1, \ + FRONTIER_MON_EXPLOUD_1, \ + FRONTIER_MON_SHIFTRY_1, \ + FRONTIER_MON_GLALIE_1, \ + FRONTIER_MON_LUDICOLO_1, \ + FRONTIER_MON_HYPNO_1, \ + FRONTIER_MON_GOLEM_1, \ + FRONTIER_MON_RHYDON_1, \ + FRONTIER_MON_ALAKAZAM_1, \ + -1 + +#define FRONTIER_MONS_COOLTRAINER_1B \ + FRONTIER_MON_WEEZING_1, \ + FRONTIER_MON_KANGASKHAN_1, \ + FRONTIER_MON_ELECTABUZZ_1, \ + FRONTIER_MON_TAUROS_1, \ + FRONTIER_MON_SLOWBRO_1, \ + FRONTIER_MON_SLOWKING_1, \ + FRONTIER_MON_MILTANK_1, \ + FRONTIER_MON_ALTARIA_1, \ + FRONTIER_MON_NIDOQUEEN_1, \ + FRONTIER_MON_NIDOKING_1, \ + FRONTIER_MON_MAGMAR_1, \ + FRONTIER_MON_CRADILY_1, \ + FRONTIER_MON_ARMALDO_1, \ + FRONTIER_MON_GOLDUCK_1, \ + FRONTIER_MON_RAPIDASH_1, \ + FRONTIER_MON_MUK_1, \ + FRONTIER_MON_GENGAR_1, \ + FRONTIER_MON_AMPHAROS_1, \ + FRONTIER_MON_SCIZOR_1, \ + FRONTIER_MON_HERACROSS_1, \ + FRONTIER_MON_URSARING_1, \ + FRONTIER_MON_HOUNDOOM_1, \ + FRONTIER_MON_DONPHAN_1, \ + FRONTIER_MON_CLAYDOL_1, \ + FRONTIER_MON_WAILORD_1, \ + FRONTIER_MON_NINETALES_1, \ + FRONTIER_MON_MACHAMP_1, \ + FRONTIER_MON_SHUCKLE_1, \ + FRONTIER_MON_STEELIX_1, \ + FRONTIER_MON_TENTACRUEL_1, \ + FRONTIER_MON_AERODACTYL_1, \ + FRONTIER_MON_PORYGON2_1, \ + FRONTIER_MON_GARDEVOIR_1, \ + -1 + +#define FRONTIER_MONS_COOLTRAINER_1C \ + FRONTIER_MON_EXEGGUTOR_1, \ + FRONTIER_MON_STARMIE_1, \ + FRONTIER_MON_FLYGON_1, \ + FRONTIER_MON_VENUSAUR_1, \ + FRONTIER_MON_VAPOREON_1, \ + FRONTIER_MON_JOLTEON_1, \ + FRONTIER_MON_FLAREON_1, \ + FRONTIER_MON_MEGANIUM_1, \ + FRONTIER_MON_ESPEON_1, \ + FRONTIER_MON_UMBREON_1, \ + FRONTIER_MON_BLASTOISE_1, \ + FRONTIER_MON_FERALIGATR_1, \ + FRONTIER_MON_AGGRON_1, \ + FRONTIER_MON_BLAZIKEN_1, \ + FRONTIER_MON_WALREIN_1, \ + FRONTIER_MON_SCEPTILE_1, \ + FRONTIER_MON_CHARIZARD_1, \ + FRONTIER_MON_TYPHLOSION_1, \ + FRONTIER_MON_LAPRAS_1, \ + FRONTIER_MON_CROBAT_1, \ + FRONTIER_MON_SWAMPERT_1, \ + FRONTIER_MON_GYARADOS_1, \ + FRONTIER_MON_SNORLAX_1, \ + FRONTIER_MON_KINGDRA_1, \ + FRONTIER_MON_BLISSEY_1, \ + FRONTIER_MON_MILOTIC_1, \ + FRONTIER_MON_ARCANINE_1, \ + FRONTIER_MON_SALAMENCE_1, \ + FRONTIER_MON_METAGROSS_1, \ + FRONTIER_MON_SLAKING_1, \ + -1 + +#define FRONTIER_MONS_PKMN_RANGER_1 \ + FRONTIER_MON_NINJASK_1, \ + FRONTIER_MON_VENOMOTH_2, \ + FRONTIER_MON_NINJASK_2, \ + FRONTIER_MON_SCYTHER_2, \ + FRONTIER_MON_PINSIR_2, \ + FRONTIER_MON_FEAROW_1, \ + FRONTIER_MON_GRANBULL_1, \ + FRONTIER_MON_DODRIO_1, \ + FRONTIER_MON_BRELOOM_1, \ + FRONTIER_MON_FORRETRESS_1, \ + FRONTIER_MON_CLEFABLE_1, \ + FRONTIER_MON_VILEPLUME_1, \ + FRONTIER_MON_VICTREEBEL_1, \ + FRONTIER_MON_EXPLOUD_1, \ + FRONTIER_MON_SHIFTRY_1, \ + FRONTIER_MON_LUDICOLO_1, \ + FRONTIER_MON_KANGASKHAN_1, \ + FRONTIER_MON_TAUROS_1, \ + FRONTIER_MON_MILTANK_1, \ + FRONTIER_MON_CRADILY_1, \ + FRONTIER_MON_ARMALDO_1, \ + FRONTIER_MON_SCIZOR_1, \ + FRONTIER_MON_HERACROSS_1, \ + FRONTIER_MON_URSARING_1, \ + FRONTIER_MON_SHUCKLE_1, \ + FRONTIER_MON_PORYGON2_1, \ + FRONTIER_MON_EXEGGUTOR_1, \ + FRONTIER_MON_VENUSAUR_1, \ + FRONTIER_MON_MEGANIUM_1, \ + FRONTIER_MON_SCEPTILE_1, \ + FRONTIER_MON_SNORLAX_1, \ + FRONTIER_MON_BLISSEY_1, \ + FRONTIER_MON_SLAKING_1, \ + -1 + +#define FRONTIER_MONS_DRAGON_TAMER_1 \ + FRONTIER_MON_SKARMORY_1, \ + FRONTIER_MON_RHYDON_1, \ + FRONTIER_MON_ALTARIA_1, \ + FRONTIER_MON_NIDOQUEEN_1, \ + FRONTIER_MON_NIDOKING_1, \ + FRONTIER_MON_STEELIX_1, \ + FRONTIER_MON_AERODACTYL_1, \ + FRONTIER_MON_FLYGON_1, \ + FRONTIER_MON_AGGRON_1, \ + FRONTIER_MON_SCEPTILE_1, \ + FRONTIER_MON_CHARIZARD_1, \ + FRONTIER_MON_LAPRAS_1, \ + FRONTIER_MON_GYARADOS_1, \ + FRONTIER_MON_KINGDRA_1, \ + FRONTIER_MON_MILOTIC_1, \ + FRONTIER_MON_ARCANINE_1, \ + FRONTIER_MON_SALAMENCE_1, \ + -1 + +#define FRONTIER_MONS_POKEFAN_2 \ + FRONTIER_MON_MISDREAVUS_1, \ + FRONTIER_MON_LANTURN_1, \ + FRONTIER_MON_BRELOOM_1, \ + FRONTIER_MON_XATU_1, \ + FRONTIER_MON_QUAGSIRE_1, \ + FRONTIER_MON_CLEFABLE_1, \ + FRONTIER_MON_RAICHU_1, \ + FRONTIER_MON_DEWGONG_1, \ + FRONTIER_MON_VILEPLUME_1, \ + FRONTIER_MON_SLOWBRO_1, \ + FRONTIER_MON_MILTANK_1, \ + FRONTIER_MON_ALTARIA_1, \ + FRONTIER_MON_RAPIDASH_1, \ + FRONTIER_MON_NINETALES_1, \ + FRONTIER_MON_SHUCKLE_1, \ + FRONTIER_MON_PORYGON2_1, \ + FRONTIER_MON_FLYGON_1, \ + FRONTIER_MON_LAPRAS_1, \ + FRONTIER_MON_SNORLAX_1, \ + FRONTIER_MON_BLISSEY_1, \ + FRONTIER_MON_MILOTIC_1, \ + FRONTIER_MON_SLAKING_1, \ + -1 + +#define FRONTIER_MONS_PKMN_BREEDER_M_1 \ + FRONTIER_MON_MUK_1, \ + FRONTIER_MON_GENGAR_1, \ + FRONTIER_MON_AMPHAROS_1, \ + FRONTIER_MON_SCIZOR_1, \ + FRONTIER_MON_HERACROSS_1, \ + FRONTIER_MON_URSARING_1, \ + FRONTIER_MON_HOUNDOOM_1, \ + FRONTIER_MON_DONPHAN_1, \ + FRONTIER_MON_CLAYDOL_1, \ + FRONTIER_MON_WAILORD_1, \ + FRONTIER_MON_NINETALES_1, \ + FRONTIER_MON_MACHAMP_1, \ + FRONTIER_MON_SHUCKLE_1, \ + FRONTIER_MON_STEELIX_1, \ + FRONTIER_MON_TENTACRUEL_1, \ + FRONTIER_MON_AERODACTYL_1, \ + FRONTIER_MON_PORYGON2_1, \ + FRONTIER_MON_GARDEVOIR_1, \ + FRONTIER_MON_EXEGGUTOR_1, \ + FRONTIER_MON_STARMIE_1, \ + FRONTIER_MON_FLYGON_1, \ + FRONTIER_MON_VENUSAUR_1, \ + FRONTIER_MON_VAPOREON_1, \ + FRONTIER_MON_JOLTEON_1, \ + FRONTIER_MON_FLAREON_1, \ + FRONTIER_MON_MEGANIUM_1, \ + FRONTIER_MON_ESPEON_1, \ + FRONTIER_MON_UMBREON_1, \ + FRONTIER_MON_BLASTOISE_1, \ + FRONTIER_MON_FERALIGATR_1, \ + FRONTIER_MON_AGGRON_1, \ + FRONTIER_MON_BLAZIKEN_1, \ + FRONTIER_MON_WALREIN_1, \ + FRONTIER_MON_SCEPTILE_1, \ + FRONTIER_MON_CHARIZARD_1, \ + FRONTIER_MON_TYPHLOSION_1, \ + FRONTIER_MON_LAPRAS_1, \ + FRONTIER_MON_CROBAT_1, \ + FRONTIER_MON_SWAMPERT_1, \ + FRONTIER_MON_GYARADOS_1, \ + FRONTIER_MON_SNORLAX_1, \ + FRONTIER_MON_KINGDRA_1, \ + FRONTIER_MON_BLISSEY_1, \ + FRONTIER_MON_MILOTIC_1, \ + FRONTIER_MON_ARCANINE_1, \ + FRONTIER_MON_SALAMENCE_1, \ + FRONTIER_MON_METAGROSS_1, \ + FRONTIER_MON_SLAKING_1, \ + -1 + +#define FRONTIER_MONS_PKMN_BREEDER_F_1 \ + FRONTIER_MON_DUGTRIO_1, \ + FRONTIER_MON_MEDICHAM_1, \ + FRONTIER_MON_MISDREAVUS_1, \ + FRONTIER_MON_FEAROW_1, \ + FRONTIER_MON_GRANBULL_1, \ + FRONTIER_MON_JYNX_1, \ + FRONTIER_MON_DUSCLOPS_1, \ + FRONTIER_MON_DODRIO_1, \ + FRONTIER_MON_MR_MIME_1, \ + FRONTIER_MON_LANTURN_1, \ + FRONTIER_MON_BRELOOM_1, \ + FRONTIER_MON_FORRETRESS_1, \ + FRONTIER_MON_WHISCASH_1, \ + FRONTIER_MON_XATU_1, \ + FRONTIER_MON_SKARMORY_1, \ + FRONTIER_MON_MAROWAK_1, \ + FRONTIER_MON_QUAGSIRE_1, \ + FRONTIER_MON_CLEFABLE_1, \ + FRONTIER_MON_HARIYAMA_1, \ + FRONTIER_MON_RAICHU_1, \ + FRONTIER_MON_DEWGONG_1, \ + FRONTIER_MON_MANECTRIC_1, \ + FRONTIER_MON_VILEPLUME_1, \ + FRONTIER_MON_VICTREEBEL_1, \ + FRONTIER_MON_ELECTRODE_1, \ + FRONTIER_MON_EXPLOUD_1, \ + FRONTIER_MON_SHIFTRY_1, \ + FRONTIER_MON_GLALIE_1, \ + FRONTIER_MON_LUDICOLO_1, \ + FRONTIER_MON_HYPNO_1, \ + FRONTIER_MON_GOLEM_1, \ + FRONTIER_MON_RHYDON_1, \ + FRONTIER_MON_ALAKAZAM_1, \ + FRONTIER_MON_WEEZING_1, \ + FRONTIER_MON_KANGASKHAN_1, \ + FRONTIER_MON_ELECTABUZZ_1, \ + FRONTIER_MON_TAUROS_1, \ + FRONTIER_MON_SLOWBRO_1, \ + FRONTIER_MON_SLOWKING_1, \ + FRONTIER_MON_MILTANK_1, \ + FRONTIER_MON_ALTARIA_1, \ + FRONTIER_MON_NIDOQUEEN_1, \ + FRONTIER_MON_NIDOKING_1, \ + FRONTIER_MON_MAGMAR_1, \ + FRONTIER_MON_CRADILY_1, \ + FRONTIER_MON_ARMALDO_1, \ + FRONTIER_MON_GOLDUCK_1, \ + FRONTIER_MON_RAPIDASH_1, \ + -1 + +// Odd, all the other Youngster/Lass trainers of this group have Dugtrio, but one does not +#define FRONTIER_MONS_YOUNGSTER_LASS_2_NO_DUGTRIO \ + FRONTIER_MON_MEDICHAM_2, \ + FRONTIER_MON_MAROWAK_2, \ + FRONTIER_MON_QUAGSIRE_2, \ + FRONTIER_MON_MISDREAVUS_2, \ + FRONTIER_MON_FEAROW_2, \ + FRONTIER_MON_GRANBULL_2, \ + FRONTIER_MON_JYNX_2, \ + FRONTIER_MON_DUSCLOPS_2, \ + FRONTIER_MON_DODRIO_2, \ + FRONTIER_MON_MR_MIME_2, \ + FRONTIER_MON_LANTURN_2, \ + FRONTIER_MON_BRELOOM_2, \ + FRONTIER_MON_FORRETRESS_2, \ + FRONTIER_MON_SKARMORY_2, \ + FRONTIER_MON_WHISCASH_2, \ + FRONTIER_MON_XATU_2, \ + FRONTIER_MON_CLEFABLE_2, \ + FRONTIER_MON_HARIYAMA_2, \ + FRONTIER_MON_RAICHU_2, \ + FRONTIER_MON_DEWGONG_2, \ + FRONTIER_MON_MANECTRIC_2, \ + FRONTIER_MON_VILEPLUME_2, \ + FRONTIER_MON_VICTREEBEL_2, \ + FRONTIER_MON_ELECTRODE_2, \ + FRONTIER_MON_EXPLOUD_2, \ + FRONTIER_MON_SHIFTRY_2, \ + FRONTIER_MON_GLALIE_2, \ + FRONTIER_MON_LUDICOLO_2, \ + FRONTIER_MON_HYPNO_2, \ + FRONTIER_MON_GOLEM_2, \ + FRONTIER_MON_RHYDON_2, \ + FRONTIER_MON_ALAKAZAM_2, \ + -1 + +#define FRONTIER_MONS_YOUNGSTER_LASS_2 \ + FRONTIER_MON_DUGTRIO_2, \ + FRONTIER_MONS_YOUNGSTER_LASS_2_NO_DUGTRIO + +#define FRONTIER_MONS_SCHOOL_KID_2 \ + FRONTIER_MON_WEEZING_2, \ + FRONTIER_MON_KANGASKHAN_2, \ + FRONTIER_MON_ELECTABUZZ_2, \ + FRONTIER_MON_TAUROS_2, \ + FRONTIER_MON_SLOWBRO_2, \ + FRONTIER_MON_SLOWKING_2, \ + FRONTIER_MON_MILTANK_2, \ + FRONTIER_MON_ALTARIA_2, \ + FRONTIER_MON_NIDOQUEEN_2, \ + FRONTIER_MON_NIDOKING_2, \ + FRONTIER_MON_MAGMAR_2, \ + FRONTIER_MON_CRADILY_2, \ + FRONTIER_MON_ARMALDO_2, \ + FRONTIER_MON_GOLDUCK_2, \ + FRONTIER_MON_RAPIDASH_2, \ + FRONTIER_MON_MUK_2, \ + FRONTIER_MON_GENGAR_2, \ + FRONTIER_MON_AMPHAROS_2, \ + FRONTIER_MON_SCIZOR_2, \ + FRONTIER_MON_HERACROSS_2, \ + FRONTIER_MON_URSARING_2, \ + FRONTIER_MON_HOUNDOOM_2, \ + FRONTIER_MON_DONPHAN_2, \ + FRONTIER_MON_CLAYDOL_2, \ + FRONTIER_MON_WAILORD_2, \ + FRONTIER_MON_NINETALES_2, \ + FRONTIER_MON_MACHAMP_2, \ + FRONTIER_MON_SHUCKLE_2, \ + FRONTIER_MON_STEELIX_2, \ + FRONTIER_MON_TENTACRUEL_2, \ + FRONTIER_MON_AERODACTYL_2, \ + FRONTIER_MON_PORYGON2_2, \ + FRONTIER_MON_GARDEVOIR_2, \ + -1 + +#define FRONTIER_MONS_RICH_BOY_LADY_2 \ + FRONTIER_MON_EXEGGUTOR_2, \ + FRONTIER_MON_STARMIE_2, \ + FRONTIER_MON_FLYGON_2, \ + FRONTIER_MON_VENUSAUR_2, \ + FRONTIER_MON_VAPOREON_2, \ + FRONTIER_MON_JOLTEON_2, \ + FRONTIER_MON_FLAREON_2, \ + FRONTIER_MON_MEGANIUM_2, \ + FRONTIER_MON_ESPEON_2, \ + FRONTIER_MON_UMBREON_2, \ + FRONTIER_MON_BLASTOISE_2, \ + FRONTIER_MON_FERALIGATR_2, \ + FRONTIER_MON_AGGRON_2, \ + FRONTIER_MON_BLAZIKEN_2, \ + FRONTIER_MON_WALREIN_2, \ + FRONTIER_MON_SCEPTILE_2, \ + FRONTIER_MON_CHARIZARD_2, \ + FRONTIER_MON_TYPHLOSION_2, \ + FRONTIER_MON_LAPRAS_2, \ + FRONTIER_MON_CROBAT_2, \ + FRONTIER_MON_SWAMPERT_2, \ + FRONTIER_MON_GYARADOS_2, \ + FRONTIER_MON_SNORLAX_2, \ + FRONTIER_MON_KINGDRA_2, \ + FRONTIER_MON_BLISSEY_2, \ + FRONTIER_MON_MILOTIC_2, \ + FRONTIER_MON_ARCANINE_2, \ + FRONTIER_MON_SALAMENCE_2, \ + FRONTIER_MON_METAGROSS_2, \ + FRONTIER_MON_SLAKING_2, \ + -1 + +#define FRONTIER_MONS_BUG_CATCHER_2 \ + FRONTIER_MON_NINJASK_2, \ + FRONTIER_MON_SCYTHER_2, \ + FRONTIER_MON_PINSIR_2, \ + FRONTIER_MON_FORRETRESS_1, \ + FRONTIER_MON_ARMALDO_1, \ + FRONTIER_MON_SCIZOR_1, \ + FRONTIER_MON_HERACROSS_1, \ + FRONTIER_MON_SHUCKLE_1, \ + FRONTIER_MON_BRELOOM_2, \ + FRONTIER_MON_FORRETRESS_2, \ + FRONTIER_MON_VILEPLUME_2, \ + FRONTIER_MON_VICTREEBEL_2, \ + FRONTIER_MON_SHIFTRY_2, \ + FRONTIER_MON_LUDICOLO_2, \ + FRONTIER_MON_CRADILY_2, \ + FRONTIER_MON_ARMALDO_2, \ + FRONTIER_MON_SCIZOR_2, \ + FRONTIER_MON_HERACROSS_2, \ + FRONTIER_MON_SHUCKLE_2, \ + FRONTIER_MON_EXEGGUTOR_2, \ + FRONTIER_MON_VENUSAUR_2, \ + FRONTIER_MON_MEGANIUM_2, \ + FRONTIER_MON_SCEPTILE_2, \ + -1 + +#define FRONTIER_MONS_NINJA_BOY_2 \ + FRONTIER_MON_PARASECT_2, \ + FRONTIER_MON_VENOMOTH_2, \ + FRONTIER_MON_NINJASK_2, \ + FRONTIER_MON_SCYTHER_2, \ + FRONTIER_MON_PINSIR_2, \ + FRONTIER_MON_MEDICHAM_2, \ + FRONTIER_MON_MISDREAVUS_2, \ + FRONTIER_MON_JYNX_2, \ + FRONTIER_MON_DUSCLOPS_2, \ + FRONTIER_MON_MR_MIME_2, \ + FRONTIER_MON_FORRETRESS_2, \ + FRONTIER_MON_XATU_2, \ + FRONTIER_MON_VILEPLUME_2, \ + FRONTIER_MON_VICTREEBEL_2, \ + FRONTIER_MON_HYPNO_2, \ + FRONTIER_MON_ALAKAZAM_2, \ + FRONTIER_MON_WEEZING_2, \ + FRONTIER_MON_NIDOQUEEN_2, \ + FRONTIER_MON_NIDOKING_2, \ + FRONTIER_MON_ARMALDO_2, \ + FRONTIER_MON_MUK_2, \ + FRONTIER_MON_GENGAR_2, \ + FRONTIER_MON_SCIZOR_2, \ + FRONTIER_MON_HERACROSS_2, \ + FRONTIER_MON_CLAYDOL_2, \ + FRONTIER_MON_SHUCKLE_2, \ + FRONTIER_MON_TENTACRUEL_2, \ + FRONTIER_MON_GARDEVOIR_2, \ + FRONTIER_MON_EXEGGUTOR_2, \ + FRONTIER_MON_VENUSAUR_2, \ + FRONTIER_MON_ESPEON_2, \ + FRONTIER_MON_CROBAT_2, \ + -1 + +#define FRONTIER_MONS_TUBER_2 \ + FRONTIER_MON_QUAGSIRE_2, \ + FRONTIER_MON_GRANBULL_2, \ + FRONTIER_MON_JYNX_2, \ + FRONTIER_MON_LANTURN_2, \ + FRONTIER_MON_WHISCASH_2, \ + FRONTIER_MON_CLEFABLE_2, \ + FRONTIER_MON_DEWGONG_2, \ + FRONTIER_MON_EXPLOUD_2, \ + FRONTIER_MON_GLALIE_2, \ + FRONTIER_MON_LUDICOLO_2, \ + FRONTIER_MON_KANGASKHAN_2, \ + FRONTIER_MON_TAUROS_2, \ + FRONTIER_MON_SLOWBRO_2, \ + FRONTIER_MON_SLOWKING_2, \ + FRONTIER_MON_MILTANK_2, \ + FRONTIER_MON_GOLDUCK_2, \ + FRONTIER_MON_URSARING_2, \ + FRONTIER_MON_WAILORD_2, \ + FRONTIER_MON_TENTACRUEL_2, \ + FRONTIER_MON_PORYGON2_2, \ + FRONTIER_MON_STARMIE_2, \ + FRONTIER_MON_VAPOREON_2, \ + FRONTIER_MON_BLASTOISE_2, \ + FRONTIER_MON_FERALIGATR_2, \ + FRONTIER_MON_WALREIN_2, \ + FRONTIER_MON_LAPRAS_2, \ + FRONTIER_MON_SWAMPERT_2, \ + FRONTIER_MON_GYARADOS_2, \ + FRONTIER_MON_SNORLAX_2, \ + FRONTIER_MON_KINGDRA_2, \ + FRONTIER_MON_BLISSEY_2, \ + FRONTIER_MON_MILOTIC_2, \ + FRONTIER_MON_SLAKING_2, \ + -1 + +#define FRONTIER_MONS_BUG_MANIAC_3 \ + FRONTIER_MON_VOLBEAT_2, \ + FRONTIER_MON_ILLUMISE_2, \ + FRONTIER_MON_PARASECT_2, \ + FRONTIER_MON_MASQUERAIN_2, \ + FRONTIER_MON_VENOMOTH_2, \ + FRONTIER_MON_NINJASK_2, \ + FRONTIER_MON_SCYTHER_2, \ + FRONTIER_MON_PINSIR_2, \ + FRONTIER_MON_FORRETRESS_1, \ + FRONTIER_MON_ARMALDO_1, \ + FRONTIER_MON_SCIZOR_1, \ + FRONTIER_MON_HERACROSS_1, \ + FRONTIER_MON_SHUCKLE_1, \ + FRONTIER_MON_FORRETRESS_2, \ + FRONTIER_MON_ARMALDO_2, \ + FRONTIER_MON_SCIZOR_2, \ + FRONTIER_MON_HERACROSS_2, \ + FRONTIER_MON_SHUCKLE_2, \ + FRONTIER_MON_FORRETRESS_3, \ + FRONTIER_MON_ARMALDO_3, \ + FRONTIER_MON_SCIZOR_3, \ + FRONTIER_MON_HERACROSS_3, \ + FRONTIER_MON_SHUCKLE_3, \ + -1 + +#define FRONTIER_MONS_FISHERMAN_2 \ + FRONTIER_MON_QWILFISH_2, \ + FRONTIER_MON_SEAKING_2, \ + FRONTIER_MON_SHARPEDO_2, \ + FRONTIER_MON_MANTINE_2, \ + FRONTIER_MON_CRAWDAUNT_2, \ + FRONTIER_MON_KINGLER_2, \ + FRONTIER_MON_OCTILLERY_2, \ + FRONTIER_MON_HUNTAIL_2, \ + FRONTIER_MON_GOREBYSS_2, \ + FRONTIER_MON_RELICANTH_2, \ + FRONTIER_MON_LANTURN_3, \ + FRONTIER_MON_WHISCASH_3, \ + FRONTIER_MON_WAILORD_3, \ + FRONTIER_MON_TENTACRUEL_3, \ + FRONTIER_MON_STARMIE_3, \ + -1 + +#define FRONTIER_MONS_RUIN_MANIAC_3 \ + FRONTIER_MON_DUGTRIO_3, \ + FRONTIER_MON_FORRETRESS_3, \ + FRONTIER_MON_WHISCASH_3, \ + FRONTIER_MON_SKARMORY_3, \ + FRONTIER_MON_MAROWAK_3, \ + FRONTIER_MON_QUAGSIRE_3, \ + FRONTIER_MON_GOLEM_3, \ + FRONTIER_MON_RHYDON_3, \ + FRONTIER_MON_NIDOQUEEN_3, \ + FRONTIER_MON_NIDOKING_3, \ + FRONTIER_MON_CRADILY_3, \ + FRONTIER_MON_ARMALDO_3, \ + FRONTIER_MON_SCIZOR_3, \ + FRONTIER_MON_DONPHAN_3, \ + FRONTIER_MON_CLAYDOL_3, \ + FRONTIER_MON_SHUCKLE_3, \ + FRONTIER_MON_STEELIX_3, \ + FRONTIER_MON_AERODACTYL_3, \ + FRONTIER_MON_FLYGON_3, \ + FRONTIER_MON_AGGRON_3, \ + FRONTIER_MON_SWAMPERT_3, \ + FRONTIER_MON_METAGROSS_3, \ + -1 + +#define FRONTIER_MONS_COLLECTOR_2 \ + FRONTIER_MON_DUGTRIO_3, \ + FRONTIER_MON_MEDICHAM_3, \ + FRONTIER_MON_MISDREAVUS_3, \ + FRONTIER_MON_FEAROW_3, \ + FRONTIER_MON_GRANBULL_3, \ + FRONTIER_MON_JYNX_3, \ + FRONTIER_MON_DUSCLOPS_3, \ + FRONTIER_MON_DODRIO_3, \ + FRONTIER_MON_MR_MIME_3, \ + FRONTIER_MON_LANTURN_3, \ + FRONTIER_MON_BRELOOM_3, \ + FRONTIER_MON_FORRETRESS_3, \ + FRONTIER_MON_WHISCASH_3, \ + FRONTIER_MON_XATU_3, \ + FRONTIER_MON_SKARMORY_3, \ + FRONTIER_MON_MAROWAK_3, \ + FRONTIER_MON_QUAGSIRE_3, \ + FRONTIER_MON_CLEFABLE_3, \ + FRONTIER_MON_HARIYAMA_3, \ + FRONTIER_MON_RAICHU_3, \ + FRONTIER_MON_DEWGONG_3, \ + FRONTIER_MON_MANECTRIC_3, \ + FRONTIER_MON_VILEPLUME_3, \ + FRONTIER_MON_VICTREEBEL_3, \ + FRONTIER_MON_ELECTRODE_3, \ + FRONTIER_MON_EXPLOUD_3, \ + FRONTIER_MON_SHIFTRY_3, \ + FRONTIER_MON_GLALIE_3, \ + FRONTIER_MON_LUDICOLO_3, \ + FRONTIER_MON_HYPNO_3, \ + FRONTIER_MON_GOLEM_3, \ + FRONTIER_MON_RHYDON_3, \ + FRONTIER_MON_ALAKAZAM_3, \ + FRONTIER_MON_WEEZING_3, \ + FRONTIER_MON_KANGASKHAN_3, \ + FRONTIER_MON_ELECTABUZZ_3, \ + FRONTIER_MON_TAUROS_3, \ + FRONTIER_MON_SLOWBRO_3, \ + FRONTIER_MON_SLOWKING_3, \ + FRONTIER_MON_MILTANK_3, \ + FRONTIER_MON_ALTARIA_3, \ + FRONTIER_MON_NIDOQUEEN_3, \ + FRONTIER_MON_NIDOKING_3, \ + FRONTIER_MON_MAGMAR_3, \ + FRONTIER_MON_CRADILY_3, \ + FRONTIER_MON_ARMALDO_3, \ + FRONTIER_MON_GOLDUCK_3, \ + FRONTIER_MON_RAPIDASH_3, \ + -1 + +#define FRONTIER_MONS_GUITARIST_2 \ + FRONTIER_MON_SABLEYE_2, \ + FRONTIER_MON_MIGHTYENA_2, \ + FRONTIER_MON_SNEASEL_2, \ + FRONTIER_MON_MAGNETON_2, \ + FRONTIER_MON_ABSOL_2, \ + FRONTIER_MON_LANTURN_3, \ + FRONTIER_MON_RAICHU_3, \ + FRONTIER_MON_MANECTRIC_3, \ + FRONTIER_MON_ELECTRODE_3, \ + FRONTIER_MON_SHIFTRY_3, \ + FRONTIER_MON_ELECTABUZZ_3, \ + FRONTIER_MON_AMPHAROS_3, \ + FRONTIER_MON_HOUNDOOM_3, \ + FRONTIER_MON_JOLTEON_3, \ + FRONTIER_MON_UMBREON_3, \ + -1 + +#define FRONTIER_MONS_BIRD_KEEPER_2 \ + FRONTIER_MON_MURKROW_2, \ + FRONTIER_MON_PELIPPER_2, \ + FRONTIER_MON_SWELLOW_2, \ + FRONTIER_MON_NOCTOWL_2, \ + FRONTIER_MON_PIDGEOT_2, \ + FRONTIER_MON_FEAROW_1, \ + FRONTIER_MON_DODRIO_1, \ + FRONTIER_MON_XATU_1, \ + FRONTIER_MON_SKARMORY_1, \ + FRONTIER_MON_CROBAT_1, \ + FRONTIER_MON_FEAROW_2, \ + FRONTIER_MON_DODRIO_2, \ + FRONTIER_MON_SKARMORY_2, \ + FRONTIER_MON_XATU_2, \ + FRONTIER_MON_CROBAT_2, \ + FRONTIER_MON_FEAROW_3, \ + FRONTIER_MON_DODRIO_3, \ + FRONTIER_MON_XATU_3, \ + FRONTIER_MON_SKARMORY_3, \ + FRONTIER_MON_CROBAT_3, \ + -1 + +#define FRONTIER_MONS_SAILOR_2 \ + FRONTIER_MON_MEDICHAM_3, \ + FRONTIER_MON_LANTURN_3, \ + FRONTIER_MON_WHISCASH_3, \ + FRONTIER_MON_QUAGSIRE_3, \ + FRONTIER_MON_HARIYAMA_3, \ + FRONTIER_MON_DEWGONG_3, \ + FRONTIER_MON_LUDICOLO_3, \ + FRONTIER_MON_SLOWBRO_3, \ + FRONTIER_MON_SLOWKING_3, \ + FRONTIER_MON_GOLDUCK_3, \ + FRONTIER_MON_WAILORD_3, \ + FRONTIER_MON_MACHAMP_3, \ + FRONTIER_MON_TENTACRUEL_3, \ + FRONTIER_MON_STARMIE_3, \ + FRONTIER_MON_VAPOREON_3, \ + FRONTIER_MON_BLASTOISE_3, \ + FRONTIER_MON_FERALIGATR_3, \ + FRONTIER_MON_WALREIN_3, \ + FRONTIER_MON_LAPRAS_3, \ + FRONTIER_MON_SWAMPERT_3, \ + FRONTIER_MON_GYARADOS_3, \ + FRONTIER_MON_KINGDRA_3, \ + FRONTIER_MON_MILOTIC_3, \ + -1 + +#define FRONTIER_MONS_HIKER_2 \ + FRONTIER_MON_DUGTRIO_3, \ + FRONTIER_MON_MEDICHAM_3, \ + FRONTIER_MON_BRELOOM_3, \ + FRONTIER_MON_MAROWAK_3, \ + FRONTIER_MON_HARIYAMA_3, \ + FRONTIER_MON_GOLEM_3, \ + FRONTIER_MON_RHYDON_3, \ + FRONTIER_MON_NIDOQUEEN_3, \ + FRONTIER_MON_NIDOKING_3, \ + FRONTIER_MON_CRADILY_3, \ + FRONTIER_MON_ARMALDO_3, \ + FRONTIER_MON_HERACROSS_3, \ + FRONTIER_MON_DONPHAN_3, \ + FRONTIER_MON_CLAYDOL_3, \ + FRONTIER_MON_MACHAMP_3, \ + FRONTIER_MON_SHUCKLE_3, \ + FRONTIER_MON_STEELIX_3, \ + FRONTIER_MON_AERODACTYL_3, \ + FRONTIER_MON_AGGRON_3, \ + FRONTIER_MON_BLAZIKEN_3, \ + -1 + +#define FRONTIER_MONS_KINDLER_2 \ + FRONTIER_MON_GRANBULL_3, \ + FRONTIER_MON_CLEFABLE_3, \ + FRONTIER_MON_EXPLOUD_3, \ + FRONTIER_MON_KANGASKHAN_3, \ + FRONTIER_MON_TAUROS_3, \ + FRONTIER_MON_MILTANK_3, \ + FRONTIER_MON_MAGMAR_3, \ + FRONTIER_MON_RAPIDASH_3, \ + FRONTIER_MON_URSARING_3, \ + FRONTIER_MON_HOUNDOOM_3, \ + FRONTIER_MON_NINETALES_3, \ + FRONTIER_MON_FLAREON_3, \ + FRONTIER_MON_BLAZIKEN_3, \ + FRONTIER_MON_CHARIZARD_3, \ + FRONTIER_MON_TYPHLOSION_3, \ + FRONTIER_MON_SNORLAX_3, \ + FRONTIER_MON_BLISSEY_3, \ + FRONTIER_MON_ARCANINE_3, \ + FRONTIER_MON_SLAKING_3, \ + -1 + +#define FRONTIER_MONS_GENTLEMAN_2 \ + FRONTIER_MON_MUK_3, \ + FRONTIER_MON_GENGAR_3, \ + FRONTIER_MON_AMPHAROS_3, \ + FRONTIER_MON_SCIZOR_3, \ + FRONTIER_MON_HERACROSS_3, \ + FRONTIER_MON_URSARING_3, \ + FRONTIER_MON_HOUNDOOM_3, \ + FRONTIER_MON_DONPHAN_3, \ + FRONTIER_MON_CLAYDOL_3, \ + FRONTIER_MON_WAILORD_3, \ + FRONTIER_MON_NINETALES_3, \ + FRONTIER_MON_MACHAMP_3, \ + FRONTIER_MON_SHUCKLE_3, \ + FRONTIER_MON_STEELIX_3, \ + FRONTIER_MON_TENTACRUEL_3, \ + FRONTIER_MON_AERODACTYL_3, \ + FRONTIER_MON_PORYGON2_3, \ + FRONTIER_MON_GARDEVOIR_3, \ + FRONTIER_MON_EXEGGUTOR_3, \ + FRONTIER_MON_STARMIE_3, \ + FRONTIER_MON_FLYGON_3, \ + FRONTIER_MON_VENUSAUR_3, \ + FRONTIER_MON_VAPOREON_3, \ + FRONTIER_MON_JOLTEON_3, \ + FRONTIER_MON_FLAREON_3, \ + FRONTIER_MON_MEGANIUM_3, \ + FRONTIER_MON_ESPEON_3, \ + FRONTIER_MON_UMBREON_3, \ + FRONTIER_MON_BLASTOISE_3, \ + FRONTIER_MON_FERALIGATR_3, \ + FRONTIER_MON_AGGRON_3, \ + FRONTIER_MON_BLAZIKEN_3, \ + FRONTIER_MON_WALREIN_3, \ + FRONTIER_MON_SCEPTILE_3, \ + FRONTIER_MON_CHARIZARD_3, \ + FRONTIER_MON_TYPHLOSION_3, \ + FRONTIER_MON_LAPRAS_3, \ + FRONTIER_MON_CROBAT_3, \ + FRONTIER_MON_SWAMPERT_3, \ + FRONTIER_MON_GYARADOS_3, \ + FRONTIER_MON_SNORLAX_3, \ + FRONTIER_MON_KINGDRA_3, \ + FRONTIER_MON_BLISSEY_3, \ + FRONTIER_MON_MILOTIC_3, \ + FRONTIER_MON_ARCANINE_3, \ + FRONTIER_MON_SALAMENCE_3, \ + FRONTIER_MON_METAGROSS_3, \ + FRONTIER_MON_SLAKING_3, \ + -1 + +#define FRONTIER_MONS_YOUNGSTER_LASS_3 \ + FRONTIER_MON_DUGTRIO_4, \ + FRONTIER_MON_MEDICHAM_4, \ + FRONTIER_MON_MISDREAVUS_4, \ + FRONTIER_MON_FEAROW_4, \ + FRONTIER_MON_GRANBULL_4, \ + FRONTIER_MON_JYNX_4, \ + FRONTIER_MON_DUSCLOPS_4, \ + FRONTIER_MON_DODRIO_4, \ + FRONTIER_MON_MR_MIME_4, \ + FRONTIER_MON_LANTURN_4, \ + FRONTIER_MON_BRELOOM_4, \ + FRONTIER_MON_FORRETRESS_4, \ + FRONTIER_MON_WHISCASH_4, \ + FRONTIER_MON_XATU_4, \ + FRONTIER_MON_SKARMORY_4, \ + FRONTIER_MON_MAROWAK_4, \ + FRONTIER_MON_QUAGSIRE_4, \ + FRONTIER_MON_CLEFABLE_4, \ + FRONTIER_MON_HARIYAMA_4, \ + FRONTIER_MON_RAICHU_4, \ + FRONTIER_MON_DEWGONG_4, \ + FRONTIER_MON_MANECTRIC_4, \ + FRONTIER_MON_VILEPLUME_4, \ + FRONTIER_MON_VICTREEBEL_4, \ + FRONTIER_MON_ELECTRODE_4, \ + FRONTIER_MON_EXPLOUD_4, \ + FRONTIER_MON_SHIFTRY_4, \ + FRONTIER_MON_GLALIE_4, \ + FRONTIER_MON_LUDICOLO_4, \ + FRONTIER_MON_HYPNO_4, \ + FRONTIER_MON_GOLEM_4, \ + FRONTIER_MON_RHYDON_4, \ + FRONTIER_MON_ALAKAZAM_4, \ + -1 + +#define FRONTIER_MONS_CAMPER_PICNICKER_2 \ + FRONTIER_MON_WEEZING_4, \ + FRONTIER_MON_KANGASKHAN_4, \ + FRONTIER_MON_ELECTABUZZ_4, \ + FRONTIER_MON_TAUROS_4, \ + FRONTIER_MON_SLOWBRO_4, \ + FRONTIER_MON_SLOWKING_4, \ + FRONTIER_MON_MILTANK_4, \ + FRONTIER_MON_ALTARIA_4, \ + FRONTIER_MON_NIDOQUEEN_4, \ + FRONTIER_MON_NIDOKING_4, \ + FRONTIER_MON_MAGMAR_4, \ + FRONTIER_MON_CRADILY_4, \ + FRONTIER_MON_ARMALDO_4, \ + FRONTIER_MON_GOLDUCK_4, \ + FRONTIER_MON_RAPIDASH_4, \ + FRONTIER_MON_MUK_4, \ + FRONTIER_MON_GENGAR_4, \ + FRONTIER_MON_AMPHAROS_4, \ + FRONTIER_MON_SCIZOR_4, \ + FRONTIER_MON_HERACROSS_4, \ + FRONTIER_MON_URSARING_4, \ + FRONTIER_MON_HOUNDOOM_4, \ + FRONTIER_MON_DONPHAN_4, \ + FRONTIER_MON_CLAYDOL_4, \ + FRONTIER_MON_WAILORD_4, \ + FRONTIER_MON_NINETALES_4, \ + FRONTIER_MON_MACHAMP_4, \ + FRONTIER_MON_SHUCKLE_4, \ + FRONTIER_MON_STEELIX_4, \ + FRONTIER_MON_TENTACRUEL_4, \ + FRONTIER_MON_AERODACTYL_4, \ + FRONTIER_MON_PORYGON2_4, \ + FRONTIER_MON_GARDEVOIR_4, \ + -1 + +#define FRONTIER_MONS_SWIMMER_M_2 \ + FRONTIER_MON_SHARPEDO_2, \ + FRONTIER_MON_MEDICHAM_4, \ + FRONTIER_MON_GRANBULL_4, \ + FRONTIER_MON_LANTURN_4, \ + FRONTIER_MON_WHISCASH_4, \ + FRONTIER_MON_QUAGSIRE_4, \ + FRONTIER_MON_CLEFABLE_4, \ + FRONTIER_MON_HARIYAMA_4, \ + FRONTIER_MON_DEWGONG_4, \ + FRONTIER_MON_EXPLOUD_4, \ + FRONTIER_MON_LUDICOLO_4, \ + FRONTIER_MON_KANGASKHAN_4, \ + FRONTIER_MON_TAUROS_4, \ + FRONTIER_MON_SLOWBRO_4, \ + FRONTIER_MON_SLOWKING_4, \ + FRONTIER_MON_MILTANK_4, \ + FRONTIER_MON_GOLDUCK_4, \ + FRONTIER_MON_URSARING_4, \ + FRONTIER_MON_WAILORD_4, \ + FRONTIER_MON_MACHAMP_4, \ + FRONTIER_MON_TENTACRUEL_4, \ + FRONTIER_MON_PORYGON2_4, \ + FRONTIER_MON_STARMIE_4, \ + FRONTIER_MON_VAPOREON_4, \ + FRONTIER_MON_BLASTOISE_4, \ + FRONTIER_MON_FERALIGATR_4, \ + FRONTIER_MON_WALREIN_4, \ + FRONTIER_MON_LAPRAS_4, \ + FRONTIER_MON_SWAMPERT_4, \ + FRONTIER_MON_GYARADOS_4, \ + FRONTIER_MON_SNORLAX_4, \ + FRONTIER_MON_KINGDRA_4, \ + FRONTIER_MON_BLISSEY_4, \ + FRONTIER_MON_MILOTIC_4, \ + FRONTIER_MON_SLAKING_4, \ + -1 + +#define FRONTIER_MONS_SWIMMER_F_2 \ + FRONTIER_MON_GRANBULL_4, \ + FRONTIER_MON_JYNX_4, \ + FRONTIER_MON_LANTURN_4, \ + FRONTIER_MON_WHISCASH_4, \ + FRONTIER_MON_QUAGSIRE_4, \ + FRONTIER_MON_CLEFABLE_4, \ + FRONTIER_MON_DEWGONG_4, \ + FRONTIER_MON_EXPLOUD_4, \ + FRONTIER_MON_GLALIE_4, \ + FRONTIER_MON_LUDICOLO_4, \ + FRONTIER_MON_KANGASKHAN_4, \ + FRONTIER_MON_TAUROS_4, \ + FRONTIER_MON_SLOWBRO_4, \ + FRONTIER_MON_SLOWKING_4, \ + FRONTIER_MON_MILTANK_4, \ + FRONTIER_MON_GOLDUCK_4, \ + FRONTIER_MON_URSARING_4, \ + FRONTIER_MON_WAILORD_4, \ + FRONTIER_MON_TENTACRUEL_4, \ + FRONTIER_MON_PORYGON2_4, \ + FRONTIER_MON_STARMIE_4, \ + FRONTIER_MON_VAPOREON_4, \ + FRONTIER_MON_BLASTOISE_4, \ + FRONTIER_MON_FERALIGATR_4, \ + FRONTIER_MON_WALREIN_4, \ + FRONTIER_MON_LAPRAS_4, \ + FRONTIER_MON_SWAMPERT_4, \ + FRONTIER_MON_GYARADOS_4, \ + FRONTIER_MON_SNORLAX_4, \ + FRONTIER_MON_KINGDRA_4, \ + FRONTIER_MON_BLISSEY_4, \ + FRONTIER_MON_MILOTIC_4, \ + FRONTIER_MON_SLAKING_4, \ + -1 + +#define FRONTIER_MONS_POKEFAN_3 \ + FRONTIER_MON_DELCATTY_2, \ + FRONTIER_MON_PORYGON_2, \ + FRONTIER_MON_DUNSPARCE_2, \ + FRONTIER_MON_WIGGLYTUFF_2, \ + FRONTIER_MON_KECLEON_2, \ + FRONTIER_MON_CHANSEY_2, \ + FRONTIER_MON_ABSOL_2, \ + FRONTIER_MON_MISDREAVUS_4, \ + FRONTIER_MON_JYNX_4, \ + FRONTIER_MON_MR_MIME_4, \ + FRONTIER_MON_LANTURN_4, \ + FRONTIER_MON_BRELOOM_4, \ + FRONTIER_MON_WHISCASH_4, \ + FRONTIER_MON_XATU_4, \ + FRONTIER_MON_QUAGSIRE_4, \ + FRONTIER_MON_CLEFABLE_4, \ + FRONTIER_MON_RAICHU_4, \ + FRONTIER_MON_DEWGONG_4, \ + FRONTIER_MON_VILEPLUME_4, \ + FRONTIER_MON_LUDICOLO_4, \ + FRONTIER_MON_SLOWBRO_4, \ + FRONTIER_MON_SLOWKING_4, \ + FRONTIER_MON_MILTANK_4, \ + FRONTIER_MON_ALTARIA_4, \ + FRONTIER_MON_RAPIDASH_4, \ + FRONTIER_MON_AMPHAROS_4, \ + FRONTIER_MON_NINETALES_4, \ + FRONTIER_MON_SHUCKLE_4, \ + FRONTIER_MON_PORYGON2_4, \ + FRONTIER_MON_GARDEVOIR_4, \ + FRONTIER_MON_FLYGON_4, \ + FRONTIER_MON_VAPOREON_4, \ + FRONTIER_MON_JOLTEON_4, \ + FRONTIER_MON_FLAREON_4, \ + FRONTIER_MON_ESPEON_4, \ + FRONTIER_MON_UMBREON_4, \ + FRONTIER_MON_LAPRAS_4, \ + FRONTIER_MON_SNORLAX_4, \ + FRONTIER_MON_BLISSEY_4, \ + FRONTIER_MON_MILOTIC_4, \ + -1 + +#define FRONTIER_MONS_PKMN_BREEDER_2 \ + FRONTIER_MON_EXEGGUTOR_4, \ + FRONTIER_MON_STARMIE_4, \ + FRONTIER_MON_FLYGON_4, \ + FRONTIER_MON_VENUSAUR_4, \ + FRONTIER_MON_VAPOREON_4, \ + FRONTIER_MON_JOLTEON_4, \ + FRONTIER_MON_FLAREON_4, \ + FRONTIER_MON_MEGANIUM_4, \ + FRONTIER_MON_ESPEON_4, \ + FRONTIER_MON_UMBREON_4, \ + FRONTIER_MON_BLASTOISE_4, \ + FRONTIER_MON_FERALIGATR_4, \ + FRONTIER_MON_AGGRON_4, \ + FRONTIER_MON_BLAZIKEN_4, \ + FRONTIER_MON_WALREIN_4, \ + FRONTIER_MON_SCEPTILE_4, \ + FRONTIER_MON_CHARIZARD_4, \ + FRONTIER_MON_TYPHLOSION_4, \ + FRONTIER_MON_LAPRAS_4, \ + FRONTIER_MON_CROBAT_4, \ + FRONTIER_MON_SWAMPERT_4, \ + FRONTIER_MON_GYARADOS_4, \ + FRONTIER_MON_SNORLAX_4, \ + FRONTIER_MON_KINGDRA_4, \ + FRONTIER_MON_BLISSEY_4, \ + FRONTIER_MON_MILOTIC_4, \ + FRONTIER_MON_ARCANINE_4, \ + FRONTIER_MON_SALAMENCE_4, \ + FRONTIER_MON_METAGROSS_4, \ + FRONTIER_MON_SLAKING_4, \ + -1 + +#define FRONTIER_MONS_COOLTRAINER_M_2A \ + FRONTIER_MON_MUK_1, \ + FRONTIER_MON_GENGAR_1, \ + FRONTIER_MON_AMPHAROS_1, \ + FRONTIER_MON_SCIZOR_1, \ + FRONTIER_MON_HERACROSS_1, \ + FRONTIER_MON_URSARING_1, \ + FRONTIER_MON_HOUNDOOM_1, \ + FRONTIER_MON_DONPHAN_1, \ + FRONTIER_MON_CLAYDOL_1, \ + FRONTIER_MON_WAILORD_1, \ + FRONTIER_MON_NINETALES_1, \ + FRONTIER_MON_MACHAMP_1, \ + FRONTIER_MON_SHUCKLE_1, \ + FRONTIER_MON_STEELIX_1, \ + FRONTIER_MON_TENTACRUEL_1, \ + FRONTIER_MON_AERODACTYL_1, \ + FRONTIER_MON_PORYGON2_1, \ + FRONTIER_MON_GARDEVOIR_1, \ + FRONTIER_MON_EXEGGUTOR_1, \ + FRONTIER_MON_STARMIE_1, \ + FRONTIER_MON_FLYGON_1, \ + FRONTIER_MON_VENUSAUR_1, \ + FRONTIER_MON_VAPOREON_1, \ + FRONTIER_MON_JOLTEON_1, \ + FRONTIER_MON_MUK_2, \ + FRONTIER_MON_GENGAR_2, \ + FRONTIER_MON_AMPHAROS_2, \ + FRONTIER_MON_SCIZOR_2, \ + FRONTIER_MON_HERACROSS_2, \ + FRONTIER_MON_URSARING_2, \ + FRONTIER_MON_HOUNDOOM_2, \ + FRONTIER_MON_DONPHAN_2, \ + FRONTIER_MON_CLAYDOL_2, \ + FRONTIER_MON_WAILORD_2, \ + FRONTIER_MON_NINETALES_2, \ + FRONTIER_MON_MACHAMP_2, \ + FRONTIER_MON_SHUCKLE_2, \ + FRONTIER_MON_STEELIX_2, \ + FRONTIER_MON_TENTACRUEL_2, \ + FRONTIER_MON_AERODACTYL_2, \ + FRONTIER_MON_PORYGON2_2, \ + FRONTIER_MON_GARDEVOIR_2, \ + FRONTIER_MON_EXEGGUTOR_2, \ + FRONTIER_MON_STARMIE_2, \ + FRONTIER_MON_FLYGON_2, \ + FRONTIER_MON_VENUSAUR_2, \ + FRONTIER_MON_VAPOREON_2, \ + FRONTIER_MON_JOLTEON_2, \ + FRONTIER_MON_MUK_3, \ + FRONTIER_MON_GENGAR_3, \ + FRONTIER_MON_AMPHAROS_3, \ + FRONTIER_MON_SCIZOR_3, \ + FRONTIER_MON_HERACROSS_3, \ + FRONTIER_MON_URSARING_3, \ + FRONTIER_MON_HOUNDOOM_3, \ + FRONTIER_MON_DONPHAN_3, \ + FRONTIER_MON_CLAYDOL_3, \ + FRONTIER_MON_WAILORD_3, \ + FRONTIER_MON_NINETALES_3, \ + FRONTIER_MON_MACHAMP_3, \ + FRONTIER_MON_SHUCKLE_3, \ + FRONTIER_MON_STEELIX_3, \ + FRONTIER_MON_TENTACRUEL_3, \ + FRONTIER_MON_AERODACTYL_3, \ + FRONTIER_MON_PORYGON2_3, \ + FRONTIER_MON_GARDEVOIR_3, \ + FRONTIER_MON_EXEGGUTOR_3, \ + FRONTIER_MON_STARMIE_3, \ + FRONTIER_MON_FLYGON_3, \ + FRONTIER_MON_VENUSAUR_3, \ + FRONTIER_MON_VAPOREON_3, \ + FRONTIER_MON_JOLTEON_3, \ + FRONTIER_MON_MUK_4, \ + FRONTIER_MON_GENGAR_4, \ + FRONTIER_MON_AMPHAROS_4, \ + FRONTIER_MON_SCIZOR_4, \ + FRONTIER_MON_HERACROSS_4, \ + FRONTIER_MON_URSARING_4, \ + FRONTIER_MON_HOUNDOOM_4, \ + FRONTIER_MON_DONPHAN_4, \ + FRONTIER_MON_CLAYDOL_4, \ + FRONTIER_MON_WAILORD_4, \ + FRONTIER_MON_NINETALES_4, \ + FRONTIER_MON_MACHAMP_4, \ + FRONTIER_MON_SHUCKLE_4, \ + FRONTIER_MON_STEELIX_4, \ + FRONTIER_MON_TENTACRUEL_4, \ + FRONTIER_MON_AERODACTYL_4, \ + FRONTIER_MON_PORYGON2_4, \ + FRONTIER_MON_GARDEVOIR_4, \ + FRONTIER_MON_EXEGGUTOR_4, \ + FRONTIER_MON_STARMIE_4, \ + FRONTIER_MON_FLYGON_4, \ + FRONTIER_MON_VENUSAUR_4, \ + FRONTIER_MON_VAPOREON_4, \ + FRONTIER_MON_JOLTEON_4, \ + -1 + +#define FRONTIER_MONS_COOLTRAINER_M_2B \ + FRONTIER_MON_FLAREON_1, \ + FRONTIER_MON_MEGANIUM_1, \ + FRONTIER_MON_ESPEON_1, \ + FRONTIER_MON_UMBREON_1, \ + FRONTIER_MON_BLASTOISE_1, \ + FRONTIER_MON_FERALIGATR_1, \ + FRONTIER_MON_AGGRON_1, \ + FRONTIER_MON_BLAZIKEN_1, \ + FRONTIER_MON_WALREIN_1, \ + FRONTIER_MON_SCEPTILE_1, \ + FRONTIER_MON_CHARIZARD_1, \ + FRONTIER_MON_TYPHLOSION_1, \ + FRONTIER_MON_LAPRAS_1, \ + FRONTIER_MON_CROBAT_1, \ + FRONTIER_MON_SWAMPERT_1, \ + FRONTIER_MON_GYARADOS_1, \ + FRONTIER_MON_SNORLAX_1, \ + FRONTIER_MON_KINGDRA_1, \ + FRONTIER_MON_BLISSEY_1, \ + FRONTIER_MON_MILOTIC_1, \ + FRONTIER_MON_ARCANINE_1, \ + FRONTIER_MON_SALAMENCE_1, \ + FRONTIER_MON_METAGROSS_1, \ + FRONTIER_MON_SLAKING_1, \ + FRONTIER_MON_FLAREON_2, \ + FRONTIER_MON_MEGANIUM_2, \ + FRONTIER_MON_ESPEON_2, \ + FRONTIER_MON_UMBREON_2, \ + FRONTIER_MON_BLASTOISE_2, \ + FRONTIER_MON_FERALIGATR_2, \ + FRONTIER_MON_AGGRON_2, \ + FRONTIER_MON_BLAZIKEN_2, \ + FRONTIER_MON_WALREIN_2, \ + FRONTIER_MON_SCEPTILE_2, \ + FRONTIER_MON_CHARIZARD_2, \ + FRONTIER_MON_TYPHLOSION_2, \ + FRONTIER_MON_LAPRAS_2, \ + FRONTIER_MON_CROBAT_2, \ + FRONTIER_MON_SWAMPERT_2, \ + FRONTIER_MON_GYARADOS_2, \ + FRONTIER_MON_SNORLAX_2, \ + FRONTIER_MON_KINGDRA_2, \ + FRONTIER_MON_BLISSEY_2, \ + FRONTIER_MON_MILOTIC_2, \ + FRONTIER_MON_ARCANINE_2, \ + FRONTIER_MON_SALAMENCE_2, \ + FRONTIER_MON_METAGROSS_2, \ + FRONTIER_MON_SLAKING_2, \ + FRONTIER_MON_FLAREON_3, \ + FRONTIER_MON_MEGANIUM_3, \ + FRONTIER_MON_ESPEON_3, \ + FRONTIER_MON_UMBREON_3, \ + FRONTIER_MON_BLASTOISE_3, \ + FRONTIER_MON_FERALIGATR_3, \ + FRONTIER_MON_AGGRON_3, \ + FRONTIER_MON_BLAZIKEN_3, \ + FRONTIER_MON_WALREIN_3, \ + FRONTIER_MON_SCEPTILE_3, \ + FRONTIER_MON_CHARIZARD_3, \ + FRONTIER_MON_TYPHLOSION_3, \ + FRONTIER_MON_LAPRAS_3, \ + FRONTIER_MON_CROBAT_3, \ + FRONTIER_MON_SWAMPERT_3, \ + FRONTIER_MON_GYARADOS_3, \ + FRONTIER_MON_SNORLAX_3, \ + FRONTIER_MON_KINGDRA_3, \ + FRONTIER_MON_BLISSEY_3, \ + FRONTIER_MON_MILOTIC_3, \ + FRONTIER_MON_ARCANINE_3, \ + FRONTIER_MON_SALAMENCE_3, \ + FRONTIER_MON_METAGROSS_3, \ + FRONTIER_MON_SLAKING_3, \ + FRONTIER_MON_FLAREON_4, \ + FRONTIER_MON_MEGANIUM_4, \ + FRONTIER_MON_ESPEON_4, \ + FRONTIER_MON_UMBREON_4, \ + FRONTIER_MON_BLASTOISE_4, \ + FRONTIER_MON_FERALIGATR_4, \ + FRONTIER_MON_AGGRON_4, \ + FRONTIER_MON_BLAZIKEN_4, \ + FRONTIER_MON_WALREIN_4, \ + FRONTIER_MON_SCEPTILE_4, \ + FRONTIER_MON_CHARIZARD_4, \ + FRONTIER_MON_TYPHLOSION_4, \ + FRONTIER_MON_LAPRAS_4, \ + FRONTIER_MON_CROBAT_4, \ + FRONTIER_MON_SWAMPERT_4, \ + FRONTIER_MON_GYARADOS_4, \ + FRONTIER_MON_SNORLAX_4, \ + FRONTIER_MON_KINGDRA_4, \ + FRONTIER_MON_BLISSEY_4, \ + FRONTIER_MON_MILOTIC_4, \ + FRONTIER_MON_ARCANINE_4, \ + FRONTIER_MON_SALAMENCE_4, \ + FRONTIER_MON_METAGROSS_4, \ + FRONTIER_MON_SLAKING_4, \ + -1 + +// Cooltrainer M uses Latios, Cooltrainer F uses Latias +#define FRONTIER_MONS_COOLTRAINER_2C(lati) \ + FRONTIER_MON_GENGAR_1, \ + FRONTIER_MON_URSARING_1, \ + FRONTIER_MON_MACHAMP_1, \ + FRONTIER_MON_GARDEVOIR_1, \ + FRONTIER_MON_STARMIE_1, \ + FRONTIER_MON_LAPRAS_1, \ + FRONTIER_MON_SNORLAX_1, \ + FRONTIER_MON_SALAMENCE_1, \ + FRONTIER_MON_METAGROSS_1, \ + FRONTIER_MON_GENGAR_2, \ + FRONTIER_MON_URSARING_2, \ + FRONTIER_MON_MACHAMP_2, \ + FRONTIER_MON_GARDEVOIR_2, \ + FRONTIER_MON_STARMIE_2, \ + FRONTIER_MON_LAPRAS_2, \ + FRONTIER_MON_SNORLAX_2, \ + FRONTIER_MON_SALAMENCE_2, \ + FRONTIER_MON_METAGROSS_2, \ + FRONTIER_MON_GENGAR_3, \ + FRONTIER_MON_URSARING_3, \ + FRONTIER_MON_MACHAMP_3, \ + FRONTIER_MON_GARDEVOIR_3, \ + FRONTIER_MON_STARMIE_3, \ + FRONTIER_MON_LAPRAS_3, \ + FRONTIER_MON_SNORLAX_3, \ + FRONTIER_MON_SALAMENCE_3, \ + FRONTIER_MON_METAGROSS_3, \ + FRONTIER_MON_GENGAR_4, \ + FRONTIER_MON_URSARING_4, \ + FRONTIER_MON_MACHAMP_4, \ + FRONTIER_MON_GARDEVOIR_4, \ + FRONTIER_MON_STARMIE_4, \ + FRONTIER_MON_LAPRAS_4, \ + FRONTIER_MON_SNORLAX_4, \ + FRONTIER_MON_SALAMENCE_4, \ + FRONTIER_MON_METAGROSS_4, \ + FRONTIER_MON_##lati##_1, \ + FRONTIER_MON_##lati##_2, \ + FRONTIER_MON_##lati##_3, \ + FRONTIER_MON_##lati##_4, \ + FRONTIER_MON_GENGAR_5, \ + FRONTIER_MON_GENGAR_6, \ + FRONTIER_MON_GENGAR_7, \ + FRONTIER_MON_GENGAR_8, \ + FRONTIER_MON_URSARING_5, \ + FRONTIER_MON_URSARING_6, \ + FRONTIER_MON_URSARING_7, \ + FRONTIER_MON_URSARING_8, \ + FRONTIER_MON_MACHAMP_5, \ + FRONTIER_MON_MACHAMP_6, \ + FRONTIER_MON_MACHAMP_7, \ + FRONTIER_MON_MACHAMP_8, \ + FRONTIER_MON_GARDEVOIR_5, \ + FRONTIER_MON_GARDEVOIR_6, \ + FRONTIER_MON_GARDEVOIR_7, \ + FRONTIER_MON_GARDEVOIR_8, \ + FRONTIER_MON_STARMIE_5, \ + FRONTIER_MON_STARMIE_6, \ + FRONTIER_MON_STARMIE_7, \ + FRONTIER_MON_STARMIE_8, \ + FRONTIER_MON_LAPRAS_5, \ + FRONTIER_MON_LAPRAS_6, \ + FRONTIER_MON_LAPRAS_7, \ + FRONTIER_MON_LAPRAS_8, \ + FRONTIER_MON_SNORLAX_5, \ + FRONTIER_MON_SNORLAX_6, \ + FRONTIER_MON_SNORLAX_7, \ + FRONTIER_MON_SNORLAX_8, \ + FRONTIER_MON_SALAMENCE_5, \ + FRONTIER_MON_SALAMENCE_6, \ + FRONTIER_MON_SALAMENCE_7, \ + FRONTIER_MON_SALAMENCE_8, \ + FRONTIER_MON_METAGROSS_5, \ + FRONTIER_MON_METAGROSS_6, \ + FRONTIER_MON_METAGROSS_7, \ + FRONTIER_MON_METAGROSS_8, \ + FRONTIER_MON_##lati##_5, \ + FRONTIER_MON_##lati##_6, \ + FRONTIER_MON_##lati##_7, \ + FRONTIER_MON_##lati##_8, \ + FRONTIER_MON_DRAGONITE_1, \ + FRONTIER_MON_DRAGONITE_2, \ + FRONTIER_MON_DRAGONITE_3, \ + FRONTIER_MON_DRAGONITE_4, \ + FRONTIER_MON_DRAGONITE_5, \ + FRONTIER_MON_DRAGONITE_6, \ + FRONTIER_MON_DRAGONITE_7, \ + FRONTIER_MON_DRAGONITE_8, \ + FRONTIER_MON_DRAGONITE_9, \ + FRONTIER_MON_DRAGONITE_10, \ + FRONTIER_MON_TYRANITAR_1, \ + FRONTIER_MON_TYRANITAR_2, \ + FRONTIER_MON_TYRANITAR_3, \ + FRONTIER_MON_TYRANITAR_4, \ + FRONTIER_MON_TYRANITAR_5, \ + FRONTIER_MON_TYRANITAR_6, \ + FRONTIER_MON_TYRANITAR_7, \ + FRONTIER_MON_TYRANITAR_8, \ + FRONTIER_MON_TYRANITAR_9, \ + FRONTIER_MON_TYRANITAR_10, \ + -1 + +// Also used by Pkmn Ranger M/F +// For both classes, M uses Latios and F uses Latias +#define FRONTIER_MONS_COOLTRAINER_2D(lati) \ + FRONTIER_MON_ARTICUNO_1, \ + FRONTIER_MON_ZAPDOS_1, \ + FRONTIER_MON_MOLTRES_1, \ + FRONTIER_MON_RAIKOU_1, \ + FRONTIER_MON_ENTEI_1, \ + FRONTIER_MON_SUICUNE_1, \ + FRONTIER_MON_REGIROCK_1, \ + FRONTIER_MON_REGICE_1, \ + FRONTIER_MON_REGISTEEL_1, \ + FRONTIER_MON_##lati##_1, \ + FRONTIER_MON_ARTICUNO_2, \ + FRONTIER_MON_ZAPDOS_2, \ + FRONTIER_MON_MOLTRES_2, \ + FRONTIER_MON_RAIKOU_2, \ + FRONTIER_MON_ENTEI_2, \ + FRONTIER_MON_SUICUNE_2, \ + FRONTIER_MON_REGIROCK_2, \ + FRONTIER_MON_REGICE_2, \ + FRONTIER_MON_REGISTEEL_2, \ + FRONTIER_MON_##lati##_2, \ + FRONTIER_MON_ARTICUNO_3, \ + FRONTIER_MON_ZAPDOS_3, \ + FRONTIER_MON_MOLTRES_3, \ + FRONTIER_MON_RAIKOU_3, \ + FRONTIER_MON_ENTEI_3, \ + FRONTIER_MON_SUICUNE_3, \ + FRONTIER_MON_REGIROCK_3, \ + FRONTIER_MON_REGICE_3, \ + FRONTIER_MON_REGISTEEL_3, \ + FRONTIER_MON_##lati##_3, \ + FRONTIER_MON_ARTICUNO_4, \ + FRONTIER_MON_ZAPDOS_4, \ + FRONTIER_MON_MOLTRES_4, \ + FRONTIER_MON_RAIKOU_4, \ + FRONTIER_MON_ENTEI_4, \ + FRONTIER_MON_SUICUNE_4, \ + FRONTIER_MON_REGIROCK_4, \ + FRONTIER_MON_REGICE_4, \ + FRONTIER_MON_REGISTEEL_4, \ + FRONTIER_MON_##lati##_4, \ + FRONTIER_MON_REGIROCK_5, \ + FRONTIER_MON_REGIROCK_6, \ + FRONTIER_MON_REGICE_5, \ + FRONTIER_MON_REGICE_6, \ + FRONTIER_MON_REGISTEEL_5, \ + FRONTIER_MON_REGISTEEL_6, \ + FRONTIER_MON_##lati##_5, \ + FRONTIER_MON_##lati##_6, \ + FRONTIER_MON_##lati##_7, \ + FRONTIER_MON_##lati##_8, \ + FRONTIER_MON_DRAGONITE_1, \ + FRONTIER_MON_DRAGONITE_2, \ + FRONTIER_MON_DRAGONITE_3, \ + FRONTIER_MON_DRAGONITE_4, \ + FRONTIER_MON_DRAGONITE_5, \ + FRONTIER_MON_DRAGONITE_6, \ + FRONTIER_MON_DRAGONITE_7, \ + FRONTIER_MON_DRAGONITE_8, \ + FRONTIER_MON_DRAGONITE_9, \ + FRONTIER_MON_DRAGONITE_10, \ + FRONTIER_MON_TYRANITAR_1, \ + FRONTIER_MON_TYRANITAR_2, \ + FRONTIER_MON_TYRANITAR_3, \ + FRONTIER_MON_TYRANITAR_4, \ + FRONTIER_MON_TYRANITAR_5, \ + FRONTIER_MON_TYRANITAR_6, \ + FRONTIER_MON_TYRANITAR_7, \ + FRONTIER_MON_TYRANITAR_8, \ + FRONTIER_MON_TYRANITAR_9, \ + FRONTIER_MON_TYRANITAR_10, \ + FRONTIER_MON_ARTICUNO_5, \ + FRONTIER_MON_ARTICUNO_6, \ + FRONTIER_MON_ZAPDOS_5, \ + FRONTIER_MON_ZAPDOS_6, \ + FRONTIER_MON_MOLTRES_5, \ + FRONTIER_MON_MOLTRES_6, \ + FRONTIER_MON_RAIKOU_5, \ + FRONTIER_MON_RAIKOU_6, \ + FRONTIER_MON_ENTEI_5, \ + FRONTIER_MON_ENTEI_6, \ + FRONTIER_MON_SUICUNE_5, \ + FRONTIER_MON_SUICUNE_6, \ + -1 + +#define FRONTIER_MONS_COOLTRAINER_F_2A \ + FRONTIER_MON_DUGTRIO_1, \ + FRONTIER_MON_MEDICHAM_1, \ + FRONTIER_MON_MISDREAVUS_1, \ + FRONTIER_MON_FEAROW_1, \ + FRONTIER_MON_GRANBULL_1, \ + FRONTIER_MON_JYNX_1, \ + FRONTIER_MON_DUSCLOPS_1, \ + FRONTIER_MON_DODRIO_1, \ + FRONTIER_MON_MR_MIME_1, \ + FRONTIER_MON_LANTURN_1, \ + FRONTIER_MON_BRELOOM_1, \ + FRONTIER_MON_FORRETRESS_1, \ + FRONTIER_MON_WHISCASH_1, \ + FRONTIER_MON_XATU_1, \ + FRONTIER_MON_SKARMORY_1, \ + FRONTIER_MON_MAROWAK_1, \ + FRONTIER_MON_QUAGSIRE_1, \ + FRONTIER_MON_CLEFABLE_1, \ + FRONTIER_MON_HARIYAMA_1, \ + FRONTIER_MON_RAICHU_1, \ + FRONTIER_MON_DEWGONG_1, \ + FRONTIER_MON_MANECTRIC_1, \ + FRONTIER_MON_VILEPLUME_1, \ + FRONTIER_MON_VICTREEBEL_1, \ + FRONTIER_MON_DUGTRIO_2, \ + FRONTIER_MON_MEDICHAM_2, \ + FRONTIER_MON_MAROWAK_2, \ + FRONTIER_MON_QUAGSIRE_2, \ + FRONTIER_MON_MISDREAVUS_2, \ + FRONTIER_MON_FEAROW_2, \ + FRONTIER_MON_GRANBULL_2, \ + FRONTIER_MON_JYNX_2, \ + FRONTIER_MON_DUSCLOPS_2, \ + FRONTIER_MON_DODRIO_2, \ + FRONTIER_MON_MR_MIME_2, \ + FRONTIER_MON_LANTURN_2, \ + FRONTIER_MON_BRELOOM_2, \ + FRONTIER_MON_FORRETRESS_2, \ + FRONTIER_MON_SKARMORY_2, \ + FRONTIER_MON_WHISCASH_2, \ + FRONTIER_MON_XATU_2, \ + FRONTIER_MON_CLEFABLE_2, \ + FRONTIER_MON_HARIYAMA_2, \ + FRONTIER_MON_RAICHU_2, \ + FRONTIER_MON_DEWGONG_2, \ + FRONTIER_MON_MANECTRIC_2, \ + FRONTIER_MON_VILEPLUME_2, \ + FRONTIER_MON_VICTREEBEL_2, \ + FRONTIER_MON_DUGTRIO_3, \ + FRONTIER_MON_MEDICHAM_3, \ + FRONTIER_MON_MISDREAVUS_3, \ + FRONTIER_MON_FEAROW_3, \ + FRONTIER_MON_GRANBULL_3, \ + FRONTIER_MON_JYNX_3, \ + FRONTIER_MON_DUSCLOPS_3, \ + FRONTIER_MON_DODRIO_3, \ + FRONTIER_MON_MR_MIME_3, \ + FRONTIER_MON_LANTURN_3, \ + FRONTIER_MON_BRELOOM_3, \ + FRONTIER_MON_FORRETRESS_3, \ + FRONTIER_MON_WHISCASH_3, \ + FRONTIER_MON_XATU_3, \ + FRONTIER_MON_SKARMORY_3, \ + FRONTIER_MON_MAROWAK_3, \ + FRONTIER_MON_QUAGSIRE_3, \ + FRONTIER_MON_CLEFABLE_3, \ + FRONTIER_MON_HARIYAMA_3, \ + FRONTIER_MON_RAICHU_3, \ + FRONTIER_MON_DEWGONG_3, \ + FRONTIER_MON_MANECTRIC_3, \ + FRONTIER_MON_VILEPLUME_3, \ + FRONTIER_MON_VICTREEBEL_3, \ + FRONTIER_MON_DUGTRIO_4, \ + FRONTIER_MON_MEDICHAM_4, \ + FRONTIER_MON_MISDREAVUS_4, \ + FRONTIER_MON_FEAROW_4, \ + FRONTIER_MON_GRANBULL_4, \ + FRONTIER_MON_JYNX_4, \ + FRONTIER_MON_DUSCLOPS_4, \ + FRONTIER_MON_DODRIO_4, \ + FRONTIER_MON_MR_MIME_4, \ + FRONTIER_MON_LANTURN_4, \ + FRONTIER_MON_BRELOOM_4, \ + FRONTIER_MON_FORRETRESS_4, \ + FRONTIER_MON_WHISCASH_4, \ + FRONTIER_MON_XATU_4, \ + FRONTIER_MON_SKARMORY_4, \ + FRONTIER_MON_MAROWAK_4, \ + FRONTIER_MON_QUAGSIRE_4, \ + FRONTIER_MON_CLEFABLE_4, \ + FRONTIER_MON_HARIYAMA_4, \ + FRONTIER_MON_RAICHU_4, \ + FRONTIER_MON_DEWGONG_4, \ + FRONTIER_MON_MANECTRIC_4, \ + FRONTIER_MON_VILEPLUME_4, \ + FRONTIER_MON_VICTREEBEL_4, \ + -1 + +#define FRONTIER_MONS_COOLTRAINER_F_2B \ + FRONTIER_MON_ELECTRODE_1, \ + FRONTIER_MON_EXPLOUD_1, \ + FRONTIER_MON_SHIFTRY_1, \ + FRONTIER_MON_GLALIE_1, \ + FRONTIER_MON_LUDICOLO_1, \ + FRONTIER_MON_HYPNO_1, \ + FRONTIER_MON_GOLEM_1, \ + FRONTIER_MON_RHYDON_1, \ + FRONTIER_MON_ALAKAZAM_1, \ + FRONTIER_MON_WEEZING_1, \ + FRONTIER_MON_KANGASKHAN_1, \ + FRONTIER_MON_ELECTABUZZ_1, \ + FRONTIER_MON_TAUROS_1, \ + FRONTIER_MON_SLOWBRO_1, \ + FRONTIER_MON_SLOWKING_1, \ + FRONTIER_MON_MILTANK_1, \ + FRONTIER_MON_ALTARIA_1, \ + FRONTIER_MON_NIDOQUEEN_1, \ + FRONTIER_MON_NIDOKING_1, \ + FRONTIER_MON_MAGMAR_1, \ + FRONTIER_MON_CRADILY_1, \ + FRONTIER_MON_ARMALDO_1, \ + FRONTIER_MON_GOLDUCK_1, \ + FRONTIER_MON_RAPIDASH_1, \ + FRONTIER_MON_ELECTRODE_2, \ + FRONTIER_MON_EXPLOUD_2, \ + FRONTIER_MON_SHIFTRY_2, \ + FRONTIER_MON_GLALIE_2, \ + FRONTIER_MON_LUDICOLO_2, \ + FRONTIER_MON_HYPNO_2, \ + FRONTIER_MON_GOLEM_2, \ + FRONTIER_MON_RHYDON_2, \ + FRONTIER_MON_ALAKAZAM_2, \ + FRONTIER_MON_WEEZING_2, \ + FRONTIER_MON_KANGASKHAN_2, \ + FRONTIER_MON_ELECTABUZZ_2, \ + FRONTIER_MON_TAUROS_2, \ + FRONTIER_MON_SLOWBRO_2, \ + FRONTIER_MON_SLOWKING_2, \ + FRONTIER_MON_MILTANK_2, \ + FRONTIER_MON_ALTARIA_2, \ + FRONTIER_MON_NIDOQUEEN_2, \ + FRONTIER_MON_NIDOKING_2, \ + FRONTIER_MON_MAGMAR_2, \ + FRONTIER_MON_CRADILY_2, \ + FRONTIER_MON_ARMALDO_2, \ + FRONTIER_MON_GOLDUCK_2, \ + FRONTIER_MON_RAPIDASH_2, \ + FRONTIER_MON_ELECTRODE_3, \ + FRONTIER_MON_EXPLOUD_3, \ + FRONTIER_MON_SHIFTRY_3, \ + FRONTIER_MON_GLALIE_3, \ + FRONTIER_MON_LUDICOLO_3, \ + FRONTIER_MON_HYPNO_3, \ + FRONTIER_MON_GOLEM_3, \ + FRONTIER_MON_RHYDON_3, \ + FRONTIER_MON_ALAKAZAM_3, \ + FRONTIER_MON_WEEZING_3, \ + FRONTIER_MON_KANGASKHAN_3, \ + FRONTIER_MON_ELECTABUZZ_3, \ + FRONTIER_MON_TAUROS_3, \ + FRONTIER_MON_SLOWBRO_3, \ + FRONTIER_MON_SLOWKING_3, \ + FRONTIER_MON_MILTANK_3, \ + FRONTIER_MON_ALTARIA_3, \ + FRONTIER_MON_NIDOQUEEN_3, \ + FRONTIER_MON_NIDOKING_3, \ + FRONTIER_MON_MAGMAR_3, \ + FRONTIER_MON_CRADILY_3, \ + FRONTIER_MON_ARMALDO_3, \ + FRONTIER_MON_GOLDUCK_3, \ + FRONTIER_MON_RAPIDASH_3, \ + FRONTIER_MON_ELECTRODE_4, \ + FRONTIER_MON_EXPLOUD_4, \ + FRONTIER_MON_SHIFTRY_4, \ + FRONTIER_MON_GLALIE_4, \ + FRONTIER_MON_LUDICOLO_4, \ + FRONTIER_MON_HYPNO_4, \ + FRONTIER_MON_GOLEM_4, \ + FRONTIER_MON_RHYDON_4, \ + FRONTIER_MON_ALAKAZAM_4, \ + FRONTIER_MON_WEEZING_4, \ + FRONTIER_MON_KANGASKHAN_4, \ + FRONTIER_MON_ELECTABUZZ_4, \ + FRONTIER_MON_TAUROS_4, \ + FRONTIER_MON_SLOWBRO_4, \ + FRONTIER_MON_SLOWKING_4, \ + FRONTIER_MON_MILTANK_4, \ + FRONTIER_MON_ALTARIA_4, \ + FRONTIER_MON_NIDOQUEEN_4, \ + FRONTIER_MON_NIDOKING_4, \ + FRONTIER_MON_MAGMAR_4, \ + FRONTIER_MON_CRADILY_4, \ + FRONTIER_MON_ARMALDO_4, \ + FRONTIER_MON_GOLDUCK_4, \ + FRONTIER_MON_RAPIDASH_4, \ + -1 + +// Used by Pkmn Ranger M, Gentleman, Running Triathlete, and Cycling Triathlete +#define FRONTIER_MONS_GENERAL_A \ + FRONTIER_MON_DUGTRIO_4, \ + FRONTIER_MON_MEDICHAM_4, \ + FRONTIER_MON_MISDREAVUS_4, \ + FRONTIER_MON_FEAROW_4, \ + FRONTIER_MON_GRANBULL_4, \ + FRONTIER_MON_JYNX_4, \ + FRONTIER_MON_DUSCLOPS_4, \ + FRONTIER_MON_DODRIO_4, \ + FRONTIER_MON_MR_MIME_4, \ + FRONTIER_MON_LANTURN_4, \ + FRONTIER_MON_BRELOOM_4, \ + FRONTIER_MON_FORRETRESS_4, \ + FRONTIER_MON_WHISCASH_4, \ + FRONTIER_MON_XATU_4, \ + FRONTIER_MON_SKARMORY_4, \ + FRONTIER_MON_MAROWAK_4, \ + FRONTIER_MON_QUAGSIRE_4, \ + FRONTIER_MON_CLEFABLE_4, \ + FRONTIER_MON_HARIYAMA_4, \ + FRONTIER_MON_RAICHU_4, \ + FRONTIER_MON_DEWGONG_4, \ + FRONTIER_MON_MANECTRIC_4, \ + FRONTIER_MON_VILEPLUME_4, \ + FRONTIER_MON_VICTREEBEL_4, \ + FRONTIER_MON_ELECTRODE_4, \ + FRONTIER_MON_EXPLOUD_4, \ + FRONTIER_MON_SHIFTRY_4, \ + FRONTIER_MON_GLALIE_4, \ + FRONTIER_MON_LUDICOLO_4, \ + FRONTIER_MON_HYPNO_4, \ + FRONTIER_MON_GOLEM_4, \ + FRONTIER_MON_RHYDON_4, \ + FRONTIER_MON_ALAKAZAM_4, \ + FRONTIER_MON_WEEZING_4, \ + FRONTIER_MON_KANGASKHAN_4, \ + FRONTIER_MON_ELECTABUZZ_4, \ + FRONTIER_MON_TAUROS_4, \ + FRONTIER_MON_SLOWBRO_4, \ + FRONTIER_MON_SLOWKING_4, \ + FRONTIER_MON_MILTANK_4, \ + FRONTIER_MON_ALTARIA_4, \ + FRONTIER_MON_NIDOQUEEN_4, \ + FRONTIER_MON_NIDOKING_4, \ + FRONTIER_MON_MAGMAR_4, \ + FRONTIER_MON_CRADILY_4, \ + FRONTIER_MON_ARMALDO_4, \ + FRONTIER_MON_GOLDUCK_4, \ + FRONTIER_MON_RAPIDASH_4, \ + FRONTIER_MON_MUK_4, \ + FRONTIER_MON_GENGAR_4, \ + FRONTIER_MON_AMPHAROS_4, \ + FRONTIER_MON_SCIZOR_4, \ + FRONTIER_MON_HERACROSS_4, \ + FRONTIER_MON_URSARING_4, \ + FRONTIER_MON_HOUNDOOM_4, \ + FRONTIER_MON_DONPHAN_4, \ + FRONTIER_MON_CLAYDOL_4, \ + FRONTIER_MON_WAILORD_4, \ + FRONTIER_MON_NINETALES_4, \ + FRONTIER_MON_MACHAMP_4, \ + FRONTIER_MON_SHUCKLE_4, \ + FRONTIER_MON_STEELIX_4, \ + FRONTIER_MON_TENTACRUEL_4, \ + FRONTIER_MON_AERODACTYL_4, \ + FRONTIER_MON_PORYGON2_4, \ + FRONTIER_MON_GARDEVOIR_4, \ + FRONTIER_MON_EXEGGUTOR_4, \ + FRONTIER_MON_STARMIE_4, \ + FRONTIER_MON_FLYGON_4, \ + FRONTIER_MON_VENUSAUR_4, \ + FRONTIER_MON_VAPOREON_4, \ + FRONTIER_MON_JOLTEON_4, \ + FRONTIER_MON_FLAREON_4, \ + FRONTIER_MON_MEGANIUM_4, \ + FRONTIER_MON_ESPEON_4, \ + FRONTIER_MON_UMBREON_4, \ + FRONTIER_MON_BLASTOISE_4, \ + FRONTIER_MON_FERALIGATR_4, \ + FRONTIER_MON_AGGRON_4, \ + FRONTIER_MON_BLAZIKEN_4, \ + FRONTIER_MON_WALREIN_4, \ + FRONTIER_MON_SCEPTILE_4, \ + FRONTIER_MON_CHARIZARD_4, \ + FRONTIER_MON_TYPHLOSION_4, \ + FRONTIER_MON_LAPRAS_4, \ + FRONTIER_MON_CROBAT_4, \ + FRONTIER_MON_SWAMPERT_4, \ + FRONTIER_MON_GYARADOS_4, \ + FRONTIER_MON_SNORLAX_4, \ + FRONTIER_MON_KINGDRA_4, \ + FRONTIER_MON_BLISSEY_4, \ + FRONTIER_MON_MILOTIC_4, \ + FRONTIER_MON_ARCANINE_4, \ + FRONTIER_MON_SALAMENCE_4, \ + FRONTIER_MON_METAGROSS_4, \ + FRONTIER_MON_SLAKING_4, \ + -1 + +// Identical to FRONTIER_MONS_GENERAL_A but _3 +// Used by Pkmn Ranger, Running Triathlete, and Cycling Triathlete +#define FRONTIER_MONS_GENERAL_B \ + FRONTIER_MON_DUGTRIO_3, \ + FRONTIER_MON_MEDICHAM_3, \ + FRONTIER_MON_MISDREAVUS_3, \ + FRONTIER_MON_FEAROW_3, \ + FRONTIER_MON_GRANBULL_3, \ + FRONTIER_MON_JYNX_3, \ + FRONTIER_MON_DUSCLOPS_3, \ + FRONTIER_MON_DODRIO_3, \ + FRONTIER_MON_MR_MIME_3, \ + FRONTIER_MON_LANTURN_3, \ + FRONTIER_MON_BRELOOM_3, \ + FRONTIER_MON_FORRETRESS_3, \ + FRONTIER_MON_WHISCASH_3, \ + FRONTIER_MON_XATU_3, \ + FRONTIER_MON_SKARMORY_3, \ + FRONTIER_MON_MAROWAK_3, \ + FRONTIER_MON_QUAGSIRE_3, \ + FRONTIER_MON_CLEFABLE_3, \ + FRONTIER_MON_HARIYAMA_3, \ + FRONTIER_MON_RAICHU_3, \ + FRONTIER_MON_DEWGONG_3, \ + FRONTIER_MON_MANECTRIC_3, \ + FRONTIER_MON_VILEPLUME_3, \ + FRONTIER_MON_VICTREEBEL_3, \ + FRONTIER_MON_ELECTRODE_3, \ + FRONTIER_MON_EXPLOUD_3, \ + FRONTIER_MON_SHIFTRY_3, \ + FRONTIER_MON_GLALIE_3, \ + FRONTIER_MON_LUDICOLO_3, \ + FRONTIER_MON_HYPNO_3, \ + FRONTIER_MON_GOLEM_3, \ + FRONTIER_MON_RHYDON_3, \ + FRONTIER_MON_ALAKAZAM_3, \ + FRONTIER_MON_WEEZING_3, \ + FRONTIER_MON_KANGASKHAN_3, \ + FRONTIER_MON_ELECTABUZZ_3, \ + FRONTIER_MON_TAUROS_3, \ + FRONTIER_MON_SLOWBRO_3, \ + FRONTIER_MON_SLOWKING_3, \ + FRONTIER_MON_MILTANK_3, \ + FRONTIER_MON_ALTARIA_3, \ + FRONTIER_MON_NIDOQUEEN_3, \ + FRONTIER_MON_NIDOKING_3, \ + FRONTIER_MON_MAGMAR_3, \ + FRONTIER_MON_CRADILY_3, \ + FRONTIER_MON_ARMALDO_3, \ + FRONTIER_MON_GOLDUCK_3, \ + FRONTIER_MON_RAPIDASH_3, \ + FRONTIER_MON_MUK_3, \ + FRONTIER_MON_GENGAR_3, \ + FRONTIER_MON_AMPHAROS_3, \ + FRONTIER_MON_SCIZOR_3, \ + FRONTIER_MON_HERACROSS_3, \ + FRONTIER_MON_URSARING_3, \ + FRONTIER_MON_HOUNDOOM_3, \ + FRONTIER_MON_DONPHAN_3, \ + FRONTIER_MON_CLAYDOL_3, \ + FRONTIER_MON_WAILORD_3, \ + FRONTIER_MON_NINETALES_3, \ + FRONTIER_MON_MACHAMP_3, \ + FRONTIER_MON_SHUCKLE_3, \ + FRONTIER_MON_STEELIX_3, \ + FRONTIER_MON_TENTACRUEL_3, \ + FRONTIER_MON_AERODACTYL_3, \ + FRONTIER_MON_PORYGON2_3, \ + FRONTIER_MON_GARDEVOIR_3, \ + FRONTIER_MON_EXEGGUTOR_3, \ + FRONTIER_MON_STARMIE_3, \ + FRONTIER_MON_FLYGON_3, \ + FRONTIER_MON_VENUSAUR_3, \ + FRONTIER_MON_VAPOREON_3, \ + FRONTIER_MON_JOLTEON_3, \ + FRONTIER_MON_FLAREON_3, \ + FRONTIER_MON_MEGANIUM_3, \ + FRONTIER_MON_ESPEON_3, \ + FRONTIER_MON_UMBREON_3, \ + FRONTIER_MON_BLASTOISE_3, \ + FRONTIER_MON_FERALIGATR_3, \ + FRONTIER_MON_AGGRON_3, \ + FRONTIER_MON_BLAZIKEN_3, \ + FRONTIER_MON_WALREIN_3, \ + FRONTIER_MON_SCEPTILE_3, \ + FRONTIER_MON_CHARIZARD_3, \ + FRONTIER_MON_TYPHLOSION_3, \ + FRONTIER_MON_LAPRAS_3, \ + FRONTIER_MON_CROBAT_3, \ + FRONTIER_MON_SWAMPERT_3, \ + FRONTIER_MON_GYARADOS_3, \ + FRONTIER_MON_SNORLAX_3, \ + FRONTIER_MON_KINGDRA_3, \ + FRONTIER_MON_BLISSEY_3, \ + FRONTIER_MON_MILOTIC_3, \ + FRONTIER_MON_ARCANINE_3, \ + FRONTIER_MON_SALAMENCE_3, \ + FRONTIER_MON_METAGROSS_3, \ + FRONTIER_MON_SLAKING_3, \ + -1 + +// Similar to FRONTIER_MONS_GENERAL_A/B but _2 +// Used by Pkmn Ranger, Running Triathlete, and Cycling Triathlete +#define FRONTIER_MONS_GENERAL_C \ + FRONTIER_MON_DUGTRIO_2, \ + FRONTIER_MON_MEDICHAM_2, \ + FRONTIER_MON_MAROWAK_2, \ + FRONTIER_MON_QUAGSIRE_2, \ + FRONTIER_MON_MISDREAVUS_2, \ + FRONTIER_MON_FEAROW_2, \ + FRONTIER_MON_GRANBULL_2, \ + FRONTIER_MON_JYNX_2, \ + FRONTIER_MON_DUSCLOPS_2, \ + FRONTIER_MON_DODRIO_2, \ + FRONTIER_MON_MR_MIME_2, \ + FRONTIER_MON_LANTURN_2, \ + FRONTIER_MON_BRELOOM_2, \ + FRONTIER_MON_FORRETRESS_2, \ + FRONTIER_MON_SKARMORY_2, \ + FRONTIER_MON_WHISCASH_2, \ + FRONTIER_MON_XATU_2, \ + FRONTIER_MON_CLEFABLE_2, \ + FRONTIER_MON_HARIYAMA_2, \ + FRONTIER_MON_RAICHU_2, \ + FRONTIER_MON_DEWGONG_2, \ + FRONTIER_MON_MANECTRIC_2, \ + FRONTIER_MON_VILEPLUME_2, \ + FRONTIER_MON_VICTREEBEL_2, \ + FRONTIER_MON_ELECTRODE_2, \ + FRONTIER_MON_EXPLOUD_2, \ + FRONTIER_MON_SHIFTRY_2, \ + FRONTIER_MON_GLALIE_2, \ + FRONTIER_MON_LUDICOLO_2, \ + FRONTIER_MON_HYPNO_2, \ + FRONTIER_MON_GOLEM_2, \ + FRONTIER_MON_RHYDON_2, \ + FRONTIER_MON_ALAKAZAM_2, \ + FRONTIER_MON_WEEZING_2, \ + FRONTIER_MON_KANGASKHAN_2, \ + FRONTIER_MON_ELECTABUZZ_2, \ + FRONTIER_MON_TAUROS_2, \ + FRONTIER_MON_SLOWBRO_2, \ + FRONTIER_MON_SLOWKING_2, \ + FRONTIER_MON_MILTANK_2, \ + FRONTIER_MON_ALTARIA_2, \ + FRONTIER_MON_NIDOQUEEN_2, \ + FRONTIER_MON_NIDOKING_2, \ + FRONTIER_MON_MAGMAR_2, \ + FRONTIER_MON_CRADILY_2, \ + FRONTIER_MON_ARMALDO_2, \ + FRONTIER_MON_GOLDUCK_2, \ + FRONTIER_MON_RAPIDASH_2, \ + FRONTIER_MON_MUK_2, \ + FRONTIER_MON_GENGAR_2, \ + FRONTIER_MON_AMPHAROS_2, \ + FRONTIER_MON_SCIZOR_2, \ + FRONTIER_MON_HERACROSS_2, \ + FRONTIER_MON_URSARING_2, \ + FRONTIER_MON_HOUNDOOM_2, \ + FRONTIER_MON_DONPHAN_2, \ + FRONTIER_MON_CLAYDOL_2, \ + FRONTIER_MON_WAILORD_2, \ + FRONTIER_MON_NINETALES_2, \ + FRONTIER_MON_MACHAMP_2, \ + FRONTIER_MON_SHUCKLE_2, \ + FRONTIER_MON_STEELIX_2, \ + FRONTIER_MON_TENTACRUEL_2, \ + FRONTIER_MON_AERODACTYL_2, \ + FRONTIER_MON_PORYGON2_2, \ + FRONTIER_MON_GARDEVOIR_2, \ + FRONTIER_MON_EXEGGUTOR_2, \ + FRONTIER_MON_STARMIE_2, \ + FRONTIER_MON_FLYGON_2, \ + FRONTIER_MON_VENUSAUR_2, \ + FRONTIER_MON_VAPOREON_2, \ + FRONTIER_MON_JOLTEON_2, \ + FRONTIER_MON_FLAREON_2, \ + FRONTIER_MON_MEGANIUM_2, \ + FRONTIER_MON_ESPEON_2, \ + FRONTIER_MON_UMBREON_2, \ + FRONTIER_MON_BLASTOISE_2, \ + FRONTIER_MON_FERALIGATR_2, \ + FRONTIER_MON_AGGRON_2, \ + FRONTIER_MON_BLAZIKEN_2, \ + FRONTIER_MON_WALREIN_2, \ + FRONTIER_MON_SCEPTILE_2, \ + FRONTIER_MON_CHARIZARD_2, \ + FRONTIER_MON_TYPHLOSION_2, \ + FRONTIER_MON_LAPRAS_2, \ + FRONTIER_MON_CROBAT_2, \ + FRONTIER_MON_SWAMPERT_2, \ + FRONTIER_MON_GYARADOS_2, \ + FRONTIER_MON_SNORLAX_2, \ + FRONTIER_MON_KINGDRA_2, \ + FRONTIER_MON_BLISSEY_2, \ + FRONTIER_MON_MILOTIC_2, \ + FRONTIER_MON_ARCANINE_2, \ + FRONTIER_MON_SALAMENCE_2, \ + FRONTIER_MON_METAGROSS_2, \ + FRONTIER_MON_SLAKING_2, \ + -1 + +// Similar to FRONTIER_MONS_GENERAL_C but _1 (would be identical if not for re-ordering) +// Used by Pkmn Ranger, Running Triathlete, Cycling Triathlete +#define FRONTIER_MONS_GENERAL_D \ + FRONTIER_MON_DUGTRIO_1, \ + FRONTIER_MON_MEDICHAM_1, \ + FRONTIER_MON_MISDREAVUS_1, \ + FRONTIER_MON_FEAROW_1, \ + FRONTIER_MON_GRANBULL_1, \ + FRONTIER_MON_JYNX_1, \ + FRONTIER_MON_DUSCLOPS_1, \ + FRONTIER_MON_DODRIO_1, \ + FRONTIER_MON_MR_MIME_1, \ + FRONTIER_MON_LANTURN_1, \ + FRONTIER_MON_BRELOOM_1, \ + FRONTIER_MON_FORRETRESS_1, \ + FRONTIER_MON_WHISCASH_1, \ + FRONTIER_MON_XATU_1, \ + FRONTIER_MON_SKARMORY_1, \ + FRONTIER_MON_MAROWAK_1, \ + FRONTIER_MON_QUAGSIRE_1, \ + FRONTIER_MON_CLEFABLE_1, \ + FRONTIER_MON_HARIYAMA_1, \ + FRONTIER_MON_RAICHU_1, \ + FRONTIER_MON_DEWGONG_1, \ + FRONTIER_MON_MANECTRIC_1, \ + FRONTIER_MON_VILEPLUME_1, \ + FRONTIER_MON_VICTREEBEL_1, \ + FRONTIER_MON_ELECTRODE_1, \ + FRONTIER_MON_EXPLOUD_1, \ + FRONTIER_MON_SHIFTRY_1, \ + FRONTIER_MON_GLALIE_1, \ + FRONTIER_MON_LUDICOLO_1, \ + FRONTIER_MON_HYPNO_1, \ + FRONTIER_MON_GOLEM_1, \ + FRONTIER_MON_RHYDON_1, \ + FRONTIER_MON_ALAKAZAM_1, \ + FRONTIER_MON_WEEZING_1, \ + FRONTIER_MON_KANGASKHAN_1, \ + FRONTIER_MON_ELECTABUZZ_1, \ + FRONTIER_MON_TAUROS_1, \ + FRONTIER_MON_SLOWBRO_1, \ + FRONTIER_MON_SLOWKING_1, \ + FRONTIER_MON_MILTANK_1, \ + FRONTIER_MON_ALTARIA_1, \ + FRONTIER_MON_NIDOQUEEN_1, \ + FRONTIER_MON_NIDOKING_1, \ + FRONTIER_MON_MAGMAR_1, \ + FRONTIER_MON_CRADILY_1, \ + FRONTIER_MON_ARMALDO_1, \ + FRONTIER_MON_GOLDUCK_1, \ + FRONTIER_MON_RAPIDASH_1, \ + FRONTIER_MON_MUK_1, \ + FRONTIER_MON_GENGAR_1, \ + FRONTIER_MON_AMPHAROS_1, \ + FRONTIER_MON_SCIZOR_1, \ + FRONTIER_MON_HERACROSS_1, \ + FRONTIER_MON_URSARING_1, \ + FRONTIER_MON_HOUNDOOM_1, \ + FRONTIER_MON_DONPHAN_1, \ + FRONTIER_MON_CLAYDOL_1, \ + FRONTIER_MON_WAILORD_1, \ + FRONTIER_MON_NINETALES_1, \ + FRONTIER_MON_MACHAMP_1, \ + FRONTIER_MON_SHUCKLE_1, \ + FRONTIER_MON_STEELIX_1, \ + FRONTIER_MON_TENTACRUEL_1, \ + FRONTIER_MON_AERODACTYL_1, \ + FRONTIER_MON_PORYGON2_1, \ + FRONTIER_MON_GARDEVOIR_1, \ + FRONTIER_MON_EXEGGUTOR_1, \ + FRONTIER_MON_STARMIE_1, \ + FRONTIER_MON_FLYGON_1, \ + FRONTIER_MON_VENUSAUR_1, \ + FRONTIER_MON_VAPOREON_1, \ + FRONTIER_MON_JOLTEON_1, \ + FRONTIER_MON_FLAREON_1, \ + FRONTIER_MON_MEGANIUM_1, \ + FRONTIER_MON_ESPEON_1, \ + FRONTIER_MON_UMBREON_1, \ + FRONTIER_MON_BLASTOISE_1, \ + FRONTIER_MON_FERALIGATR_1, \ + FRONTIER_MON_AGGRON_1, \ + FRONTIER_MON_BLAZIKEN_1, \ + FRONTIER_MON_WALREIN_1, \ + FRONTIER_MON_SCEPTILE_1, \ + FRONTIER_MON_CHARIZARD_1, \ + FRONTIER_MON_TYPHLOSION_1, \ + FRONTIER_MON_LAPRAS_1, \ + FRONTIER_MON_CROBAT_1, \ + FRONTIER_MON_SWAMPERT_1, \ + FRONTIER_MON_GYARADOS_1, \ + FRONTIER_MON_SNORLAX_1, \ + FRONTIER_MON_KINGDRA_1, \ + FRONTIER_MON_BLISSEY_1, \ + FRONTIER_MON_MILOTIC_1, \ + FRONTIER_MON_ARCANINE_1, \ + FRONTIER_MON_SALAMENCE_1, \ + FRONTIER_MON_METAGROSS_1, \ + FRONTIER_MON_SLAKING_1, \ + -1 + +#define FRONTIER_MONS_DRAGON_TAMER_2 \ + FRONTIER_MON_RHYDON_1, \ + FRONTIER_MON_ALTARIA_1, \ + FRONTIER_MON_NIDOQUEEN_1, \ + FRONTIER_MON_NIDOKING_1, \ + FRONTIER_MON_STEELIX_1, \ + FRONTIER_MON_AERODACTYL_1, \ + FRONTIER_MON_FLYGON_1, \ + FRONTIER_MON_AGGRON_1, \ + FRONTIER_MON_CHARIZARD_1, \ + FRONTIER_MON_LAPRAS_1, \ + FRONTIER_MON_GYARADOS_1, \ + FRONTIER_MON_KINGDRA_1, \ + FRONTIER_MON_MILOTIC_1, \ + FRONTIER_MON_SALAMENCE_1, \ + FRONTIER_MON_RHYDON_2, \ + FRONTIER_MON_ALTARIA_2, \ + FRONTIER_MON_NIDOQUEEN_2, \ + FRONTIER_MON_NIDOKING_2, \ + FRONTIER_MON_STEELIX_2, \ + FRONTIER_MON_AERODACTYL_2, \ + FRONTIER_MON_FLYGON_2, \ + FRONTIER_MON_AGGRON_2, \ + FRONTIER_MON_CHARIZARD_2, \ + FRONTIER_MON_LAPRAS_2, \ + FRONTIER_MON_GYARADOS_2, \ + FRONTIER_MON_KINGDRA_2, \ + FRONTIER_MON_MILOTIC_2, \ + FRONTIER_MON_SALAMENCE_2, \ + FRONTIER_MON_RHYDON_3, \ + FRONTIER_MON_ALTARIA_3, \ + FRONTIER_MON_NIDOQUEEN_3, \ + FRONTIER_MON_NIDOKING_3, \ + FRONTIER_MON_STEELIX_3, \ + FRONTIER_MON_AERODACTYL_3, \ + FRONTIER_MON_FLYGON_3, \ + FRONTIER_MON_AGGRON_3, \ + FRONTIER_MON_CHARIZARD_3, \ + FRONTIER_MON_LAPRAS_3, \ + FRONTIER_MON_GYARADOS_3, \ + FRONTIER_MON_KINGDRA_3, \ + FRONTIER_MON_MILOTIC_3, \ + FRONTIER_MON_SALAMENCE_3, \ + FRONTIER_MON_RHYDON_4, \ + FRONTIER_MON_ALTARIA_4, \ + FRONTIER_MON_NIDOQUEEN_4, \ + FRONTIER_MON_NIDOKING_4, \ + FRONTIER_MON_STEELIX_4, \ + FRONTIER_MON_AERODACTYL_4, \ + FRONTIER_MON_FLYGON_4, \ + FRONTIER_MON_AGGRON_4, \ + FRONTIER_MON_CHARIZARD_4, \ + FRONTIER_MON_LAPRAS_4, \ + FRONTIER_MON_GYARADOS_4, \ + FRONTIER_MON_KINGDRA_4, \ + FRONTIER_MON_MILOTIC_4, \ + FRONTIER_MON_SALAMENCE_4, \ + FRONTIER_MON_LATIAS_1, \ + FRONTIER_MON_LATIOS_1, \ + FRONTIER_MON_LATIAS_2, \ + FRONTIER_MON_LATIOS_2, \ + FRONTIER_MON_LATIAS_3, \ + FRONTIER_MON_LATIOS_3, \ + FRONTIER_MON_LATIAS_4, \ + FRONTIER_MON_LATIOS_4, \ + FRONTIER_MON_SALAMENCE_5, \ + FRONTIER_MON_SALAMENCE_6, \ + FRONTIER_MON_SALAMENCE_7, \ + FRONTIER_MON_SALAMENCE_8, \ + FRONTIER_MON_LATIAS_5, \ + FRONTIER_MON_LATIAS_6, \ + FRONTIER_MON_LATIAS_7, \ + FRONTIER_MON_LATIAS_8, \ + FRONTIER_MON_LATIOS_5, \ + FRONTIER_MON_LATIOS_6, \ + FRONTIER_MON_LATIOS_7, \ + FRONTIER_MON_LATIOS_8, \ + FRONTIER_MON_DRAGONITE_1, \ + FRONTIER_MON_DRAGONITE_2, \ + FRONTIER_MON_DRAGONITE_3, \ + FRONTIER_MON_DRAGONITE_4, \ + FRONTIER_MON_DRAGONITE_5, \ + FRONTIER_MON_DRAGONITE_6, \ + FRONTIER_MON_DRAGONITE_7, \ + FRONTIER_MON_DRAGONITE_8, \ + FRONTIER_MON_DRAGONITE_9, \ + FRONTIER_MON_DRAGONITE_10, \ + FRONTIER_MON_TYRANITAR_1, \ + FRONTIER_MON_TYRANITAR_2, \ + FRONTIER_MON_TYRANITAR_3, \ + FRONTIER_MON_TYRANITAR_4, \ + FRONTIER_MON_TYRANITAR_5, \ + FRONTIER_MON_TYRANITAR_6, \ + FRONTIER_MON_TYRANITAR_7, \ + FRONTIER_MON_TYRANITAR_8, \ + FRONTIER_MON_TYRANITAR_9, \ + FRONTIER_MON_TYRANITAR_10, \ + -1 + +#define FRONTIER_MONS_BLACK_BELT_2A \ + FRONTIER_MON_MEDICHAM_1, \ + FRONTIER_MON_BRELOOM_1, \ + FRONTIER_MON_HARIYAMA_1, \ + FRONTIER_MON_GOLEM_1, \ + FRONTIER_MON_RHYDON_1, \ + FRONTIER_MON_CRADILY_1, \ + FRONTIER_MON_ARMALDO_1, \ + FRONTIER_MON_HERACROSS_1, \ + FRONTIER_MON_MACHAMP_1, \ + FRONTIER_MON_SHUCKLE_1, \ + FRONTIER_MON_AERODACTYL_1, \ + FRONTIER_MON_AGGRON_1, \ + FRONTIER_MON_BLAZIKEN_1, \ + FRONTIER_MON_MEDICHAM_2, \ + FRONTIER_MON_BRELOOM_2, \ + FRONTIER_MON_HARIYAMA_2, \ + FRONTIER_MON_GOLEM_2, \ + FRONTIER_MON_RHYDON_2, \ + FRONTIER_MON_CRADILY_2, \ + FRONTIER_MON_ARMALDO_2, \ + FRONTIER_MON_HERACROSS_2, \ + FRONTIER_MON_MACHAMP_2, \ + FRONTIER_MON_SHUCKLE_2, \ + FRONTIER_MON_AERODACTYL_2, \ + FRONTIER_MON_AGGRON_2, \ + FRONTIER_MON_BLAZIKEN_2, \ + FRONTIER_MON_MEDICHAM_3, \ + FRONTIER_MON_BRELOOM_3, \ + FRONTIER_MON_HARIYAMA_3, \ + FRONTIER_MON_GOLEM_3, \ + FRONTIER_MON_RHYDON_3, \ + FRONTIER_MON_CRADILY_3, \ + FRONTIER_MON_ARMALDO_3, \ + FRONTIER_MON_HERACROSS_3, \ + FRONTIER_MON_MACHAMP_3, \ + FRONTIER_MON_SHUCKLE_3, \ + FRONTIER_MON_AERODACTYL_3, \ + FRONTIER_MON_AGGRON_3, \ + FRONTIER_MON_BLAZIKEN_3, \ + FRONTIER_MON_MEDICHAM_4, \ + FRONTIER_MON_BRELOOM_4, \ + FRONTIER_MON_HARIYAMA_4, \ + FRONTIER_MON_GOLEM_4, \ + FRONTIER_MON_RHYDON_4, \ + FRONTIER_MON_CRADILY_4, \ + FRONTIER_MON_ARMALDO_4, \ + FRONTIER_MON_HERACROSS_4, \ + FRONTIER_MON_MACHAMP_4, \ + FRONTIER_MON_SHUCKLE_4, \ + FRONTIER_MON_AERODACTYL_4, \ + FRONTIER_MON_AGGRON_4, \ + FRONTIER_MON_BLAZIKEN_4, \ + FRONTIER_MON_MACHAMP_5, \ + FRONTIER_MON_MACHAMP_6, \ + FRONTIER_MON_MACHAMP_7, \ + FRONTIER_MON_MACHAMP_8, \ + -1 + +#define FRONTIER_MONS_BLACK_BELT_BATTLE_GIRL_2B \ + FRONTIER_MON_MEDICHAM_1, \ + FRONTIER_MON_BRELOOM_1, \ + FRONTIER_MON_HARIYAMA_1, \ + FRONTIER_MON_MAGMAR_1, \ + FRONTIER_MON_RAPIDASH_1, \ + FRONTIER_MON_HERACROSS_1, \ + FRONTIER_MON_HOUNDOOM_1, \ + FRONTIER_MON_NINETALES_1, \ + FRONTIER_MON_MACHAMP_1, \ + FRONTIER_MON_FLAREON_1, \ + FRONTIER_MON_BLAZIKEN_1, \ + FRONTIER_MON_CHARIZARD_1, \ + FRONTIER_MON_TYPHLOSION_1, \ + FRONTIER_MON_ARCANINE_1, \ + FRONTIER_MON_MEDICHAM_2, \ + FRONTIER_MON_BRELOOM_2, \ + FRONTIER_MON_HARIYAMA_2, \ + FRONTIER_MON_MAGMAR_2, \ + FRONTIER_MON_RAPIDASH_2, \ + FRONTIER_MON_HERACROSS_2, \ + FRONTIER_MON_HOUNDOOM_2, \ + FRONTIER_MON_NINETALES_2, \ + FRONTIER_MON_MACHAMP_2, \ + FRONTIER_MON_FLAREON_2, \ + FRONTIER_MON_BLAZIKEN_2, \ + FRONTIER_MON_CHARIZARD_2, \ + FRONTIER_MON_TYPHLOSION_2, \ + FRONTIER_MON_ARCANINE_2, \ + FRONTIER_MON_MEDICHAM_3, \ + FRONTIER_MON_BRELOOM_3, \ + FRONTIER_MON_HARIYAMA_3, \ + FRONTIER_MON_MAGMAR_3, \ + FRONTIER_MON_RAPIDASH_3, \ + FRONTIER_MON_HERACROSS_3, \ + FRONTIER_MON_HOUNDOOM_3, \ + FRONTIER_MON_NINETALES_3, \ + FRONTIER_MON_MACHAMP_3, \ + FRONTIER_MON_FLAREON_3, \ + FRONTIER_MON_BLAZIKEN_3, \ + FRONTIER_MON_CHARIZARD_3, \ + FRONTIER_MON_TYPHLOSION_3, \ + FRONTIER_MON_ARCANINE_3, \ + FRONTIER_MON_MEDICHAM_4, \ + FRONTIER_MON_BRELOOM_4, \ + FRONTIER_MON_HARIYAMA_4, \ + FRONTIER_MON_MAGMAR_4, \ + FRONTIER_MON_RAPIDASH_4, \ + FRONTIER_MON_HERACROSS_4, \ + FRONTIER_MON_HOUNDOOM_4, \ + FRONTIER_MON_NINETALES_4, \ + FRONTIER_MON_MACHAMP_4, \ + FRONTIER_MON_FLAREON_4, \ + FRONTIER_MON_BLAZIKEN_4, \ + FRONTIER_MON_CHARIZARD_4, \ + FRONTIER_MON_TYPHLOSION_4, \ + FRONTIER_MON_ARCANINE_4, \ + FRONTIER_MON_MACHAMP_5, \ + FRONTIER_MON_MACHAMP_6, \ + FRONTIER_MON_MACHAMP_7, \ + FRONTIER_MON_MACHAMP_8, \ + -1 + +#define FRONTIER_MONS_BLACK_BELT_BATTLE_GIRL_2C \ + FRONTIER_MON_MEDICHAM_1, \ + FRONTIER_MON_BRELOOM_1, \ + FRONTIER_MON_FORRETRESS_1, \ + FRONTIER_MON_SKARMORY_1, \ + FRONTIER_MON_HARIYAMA_1, \ + FRONTIER_MON_SCIZOR_1, \ + FRONTIER_MON_HERACROSS_1, \ + FRONTIER_MON_MACHAMP_1, \ + FRONTIER_MON_STEELIX_1, \ + FRONTIER_MON_AGGRON_1, \ + FRONTIER_MON_BLAZIKEN_1, \ + FRONTIER_MON_METAGROSS_1, \ + FRONTIER_MON_MEDICHAM_2, \ + FRONTIER_MON_BRELOOM_2, \ + FRONTIER_MON_FORRETRESS_2, \ + FRONTIER_MON_SKARMORY_2, \ + FRONTIER_MON_HARIYAMA_2, \ + FRONTIER_MON_SCIZOR_2, \ + FRONTIER_MON_HERACROSS_2, \ + FRONTIER_MON_MACHAMP_2, \ + FRONTIER_MON_STEELIX_2, \ + FRONTIER_MON_AGGRON_2, \ + FRONTIER_MON_BLAZIKEN_2, \ + FRONTIER_MON_METAGROSS_2, \ + FRONTIER_MON_MEDICHAM_3, \ + FRONTIER_MON_BRELOOM_3, \ + FRONTIER_MON_FORRETRESS_3, \ + FRONTIER_MON_SKARMORY_3, \ + FRONTIER_MON_HARIYAMA_3, \ + FRONTIER_MON_SCIZOR_3, \ + FRONTIER_MON_HERACROSS_3, \ + FRONTIER_MON_MACHAMP_3, \ + FRONTIER_MON_STEELIX_3, \ + FRONTIER_MON_AGGRON_3, \ + FRONTIER_MON_BLAZIKEN_3, \ + FRONTIER_MON_METAGROSS_3, \ + FRONTIER_MON_MEDICHAM_4, \ + FRONTIER_MON_BRELOOM_4, \ + FRONTIER_MON_FORRETRESS_4, \ + FRONTIER_MON_SKARMORY_4, \ + FRONTIER_MON_HARIYAMA_4, \ + FRONTIER_MON_SCIZOR_4, \ + FRONTIER_MON_HERACROSS_4, \ + FRONTIER_MON_MACHAMP_4, \ + FRONTIER_MON_STEELIX_4, \ + FRONTIER_MON_AGGRON_4, \ + FRONTIER_MON_BLAZIKEN_4, \ + FRONTIER_MON_METAGROSS_4, \ + FRONTIER_MON_MACHAMP_5, \ + FRONTIER_MON_MACHAMP_6, \ + FRONTIER_MON_MACHAMP_7, \ + FRONTIER_MON_MACHAMP_8, \ + FRONTIER_MON_METAGROSS_5, \ + FRONTIER_MON_METAGROSS_6, \ + FRONTIER_MON_METAGROSS_7, \ + FRONTIER_MON_METAGROSS_8, \ + -1 + +#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, \ + FRONTIER_MON_MAROWAK_1, \ + FRONTIER_MON_RHYDON_1, \ + FRONTIER_MON_SCIZOR_1, \ + FRONTIER_MON_HERACROSS_1, \ + FRONTIER_MON_URSARING_1, \ + FRONTIER_MON_MACHAMP_1, \ + FRONTIER_MON_STEELIX_1, \ + FRONTIER_MON_AERODACTYL_1, \ + FRONTIER_MON_AGGRON_1, \ + FRONTIER_MON_GYARADOS_1, \ + FRONTIER_MON_KINGDRA_1, \ + FRONTIER_MON_SALAMENCE_1, \ + FRONTIER_MON_METAGROSS_1, \ + FRONTIER_MON_MAROWAK_2, \ + FRONTIER_MON_BRELOOM_2, \ + FRONTIER_MON_RHYDON_2, \ + FRONTIER_MON_SCIZOR_2, \ + FRONTIER_MON_HERACROSS_2, \ + FRONTIER_MON_URSARING_2, \ + FRONTIER_MON_MACHAMP_2, \ + FRONTIER_MON_STEELIX_2, \ + FRONTIER_MON_AERODACTYL_2, \ + FRONTIER_MON_AGGRON_2, \ + FRONTIER_MON_GYARADOS_2, \ + FRONTIER_MON_KINGDRA_2, \ + FRONTIER_MON_SALAMENCE_2, \ + FRONTIER_MON_METAGROSS_2, \ + FRONTIER_MON_BRELOOM_3, \ + FRONTIER_MON_MAROWAK_3, \ + FRONTIER_MON_RHYDON_3, \ + FRONTIER_MON_SCIZOR_3, \ + FRONTIER_MON_HERACROSS_3, \ + FRONTIER_MON_URSARING_3, \ + FRONTIER_MON_MACHAMP_3, \ + FRONTIER_MON_STEELIX_3, \ + FRONTIER_MON_AERODACTYL_3, \ + FRONTIER_MON_AGGRON_3, \ + FRONTIER_MON_GYARADOS_3, \ + FRONTIER_MON_KINGDRA_3, \ + FRONTIER_MON_SALAMENCE_3, \ + FRONTIER_MON_METAGROSS_3, \ + FRONTIER_MON_BRELOOM_4, \ + FRONTIER_MON_MAROWAK_4, \ + FRONTIER_MON_RHYDON_4, \ + FRONTIER_MON_SCIZOR_4, \ + FRONTIER_MON_HERACROSS_4, \ + FRONTIER_MON_URSARING_4, \ + FRONTIER_MON_MACHAMP_4, \ + FRONTIER_MON_STEELIX_4, \ + FRONTIER_MON_AERODACTYL_4, \ + FRONTIER_MON_AGGRON_4, \ + FRONTIER_MON_GYARADOS_4, \ + FRONTIER_MON_KINGDRA_4, \ + FRONTIER_MON_SALAMENCE_4, \ + FRONTIER_MON_METAGROSS_4, \ + FRONTIER_MON_REGIROCK_1, \ + FRONTIER_MON_REGICE_1, \ + FRONTIER_MON_REGISTEEL_1, \ + FRONTIER_MON_REGIROCK_2, \ + FRONTIER_MON_REGICE_2, \ + FRONTIER_MON_REGISTEEL_2, \ + FRONTIER_MON_REGIROCK_3, \ + FRONTIER_MON_REGICE_3, \ + FRONTIER_MON_REGISTEEL_3, \ + FRONTIER_MON_REGIROCK_4, \ + FRONTIER_MON_REGICE_4, \ + FRONTIER_MON_REGISTEEL_4, \ + FRONTIER_MON_URSARING_5, \ + FRONTIER_MON_URSARING_6, \ + FRONTIER_MON_URSARING_7, \ + FRONTIER_MON_URSARING_8, \ + FRONTIER_MON_MACHAMP_5, \ + FRONTIER_MON_MACHAMP_6, \ + FRONTIER_MON_MACHAMP_7, \ + FRONTIER_MON_MACHAMP_8, \ + FRONTIER_MON_SALAMENCE_5, \ + FRONTIER_MON_SALAMENCE_6, \ + FRONTIER_MON_SALAMENCE_7, \ + FRONTIER_MON_SALAMENCE_8, \ + FRONTIER_MON_METAGROSS_5, \ + FRONTIER_MON_METAGROSS_6, \ + FRONTIER_MON_METAGROSS_7, \ + FRONTIER_MON_METAGROSS_8, \ + FRONTIER_MON_REGIROCK_5, \ + FRONTIER_MON_REGIROCK_6, \ + FRONTIER_MON_REGICE_5, \ + FRONTIER_MON_REGICE_6, \ + FRONTIER_MON_REGISTEEL_5, \ + FRONTIER_MON_REGISTEEL_6, \ + FRONTIER_MON_##lastmon##_1, \ + FRONTIER_MON_##lastmon##_2, \ + FRONTIER_MON_##lastmon##_3, \ + FRONTIER_MON_##lastmon##_4, \ + FRONTIER_MON_##lastmon##_5, \ + FRONTIER_MON_##lastmon##_6, \ + FRONTIER_MON_##lastmon##_7, \ + FRONTIER_MON_##lastmon##_8, \ + FRONTIER_MON_##lastmon##_9, \ + FRONTIER_MON_##lastmon##_10,\ + -1 + +// For this group, Expert M uses Latios, Expert F uses Latias +#define FRONTIER_MONS_EXPERT_2B(lati) \ + FRONTIER_MON_MISDREAVUS_1, \ + FRONTIER_MON_JYNX_1, \ + FRONTIER_MON_ALAKAZAM_1, \ + FRONTIER_MON_GENGAR_1, \ + FRONTIER_MON_AMPHAROS_1, \ + FRONTIER_MON_HOUNDOOM_1, \ + FRONTIER_MON_GARDEVOIR_1, \ + FRONTIER_MON_STARMIE_1, \ + FRONTIER_MON_ESPEON_1, \ + FRONTIER_MON_BLAZIKEN_1, \ + FRONTIER_MON_SCEPTILE_1, \ + FRONTIER_MON_CROBAT_1, \ + FRONTIER_MON_SWAMPERT_1, \ + FRONTIER_MON_MISDREAVUS_2, \ + FRONTIER_MON_JYNX_2, \ + FRONTIER_MON_ALAKAZAM_2, \ + FRONTIER_MON_GENGAR_2, \ + FRONTIER_MON_AMPHAROS_2, \ + FRONTIER_MON_HOUNDOOM_2, \ + FRONTIER_MON_GARDEVOIR_2, \ + FRONTIER_MON_STARMIE_2, \ + FRONTIER_MON_ESPEON_2, \ + FRONTIER_MON_BLAZIKEN_2, \ + FRONTIER_MON_SCEPTILE_2, \ + FRONTIER_MON_CROBAT_2, \ + FRONTIER_MON_SWAMPERT_2, \ + FRONTIER_MON_MISDREAVUS_3, \ + FRONTIER_MON_JYNX_3, \ + FRONTIER_MON_ALAKAZAM_3, \ + FRONTIER_MON_GENGAR_3, \ + FRONTIER_MON_AMPHAROS_3, \ + FRONTIER_MON_HOUNDOOM_3, \ + FRONTIER_MON_GARDEVOIR_3, \ + FRONTIER_MON_STARMIE_3, \ + FRONTIER_MON_ESPEON_3, \ + FRONTIER_MON_BLAZIKEN_3, \ + FRONTIER_MON_SCEPTILE_3, \ + FRONTIER_MON_CROBAT_3, \ + FRONTIER_MON_SWAMPERT_3, \ + FRONTIER_MON_MISDREAVUS_4, \ + FRONTIER_MON_JYNX_4, \ + FRONTIER_MON_ALAKAZAM_4, \ + FRONTIER_MON_GENGAR_4, \ + FRONTIER_MON_AMPHAROS_4, \ + FRONTIER_MON_HOUNDOOM_4, \ + FRONTIER_MON_GARDEVOIR_4, \ + FRONTIER_MON_STARMIE_4, \ + FRONTIER_MON_ESPEON_4, \ + FRONTIER_MON_BLAZIKEN_4, \ + FRONTIER_MON_SCEPTILE_4, \ + FRONTIER_MON_CROBAT_4, \ + FRONTIER_MON_SWAMPERT_4, \ + FRONTIER_MON_REGIROCK_1, \ + FRONTIER_MON_REGICE_1, \ + FRONTIER_MON_REGISTEEL_1, \ + FRONTIER_MON_##lati##_1, \ + FRONTIER_MON_REGIROCK_2, \ + FRONTIER_MON_REGICE_2, \ + FRONTIER_MON_REGISTEEL_2, \ + FRONTIER_MON_##lati##_2, \ + FRONTIER_MON_REGIROCK_3, \ + FRONTIER_MON_REGICE_3, \ + FRONTIER_MON_REGISTEEL_3, \ + FRONTIER_MON_##lati##_3, \ + FRONTIER_MON_REGIROCK_4, \ + FRONTIER_MON_REGICE_4, \ + FRONTIER_MON_REGISTEEL_4, \ + FRONTIER_MON_##lati##_4, \ + FRONTIER_MON_GENGAR_5, \ + FRONTIER_MON_GENGAR_6, \ + FRONTIER_MON_GENGAR_7, \ + FRONTIER_MON_GENGAR_8, \ + FRONTIER_MON_GARDEVOIR_5, \ + FRONTIER_MON_GARDEVOIR_6, \ + FRONTIER_MON_GARDEVOIR_7, \ + FRONTIER_MON_GARDEVOIR_8, \ + FRONTIER_MON_STARMIE_5, \ + FRONTIER_MON_STARMIE_6, \ + FRONTIER_MON_STARMIE_7, \ + FRONTIER_MON_STARMIE_8, \ + FRONTIER_MON_REGIROCK_5, \ + FRONTIER_MON_REGIROCK_6, \ + FRONTIER_MON_REGICE_5, \ + FRONTIER_MON_REGICE_6, \ + FRONTIER_MON_REGISTEEL_5, \ + FRONTIER_MON_REGISTEEL_6, \ + FRONTIER_MON_##lati##_5, \ + FRONTIER_MON_##lati##_6, \ + FRONTIER_MON_##lati##_7, \ + FRONTIER_MON_##lati##_8, \ + FRONTIER_MON_TYRANITAR_1, \ + FRONTIER_MON_TYRANITAR_2, \ + FRONTIER_MON_TYRANITAR_3, \ + FRONTIER_MON_TYRANITAR_4, \ + FRONTIER_MON_TYRANITAR_5, \ + FRONTIER_MON_TYRANITAR_6, \ + FRONTIER_MON_TYRANITAR_7, \ + FRONTIER_MON_TYRANITAR_8, \ + FRONTIER_MON_TYRANITAR_9, \ + FRONTIER_MON_TYRANITAR_10, \ + -1 + +// For this group, Expert M uses Tyranitar, Expert F uses Dragonite +#define FRONTIER_MONS_EXPERT_2C(lastmon) \ + FRONTIER_MON_DUSCLOPS_1, \ + FRONTIER_MON_QUAGSIRE_1, \ + FRONTIER_MON_LUDICOLO_1, \ + FRONTIER_MON_SLOWBRO_1, \ + FRONTIER_MON_SLOWKING_1, \ + FRONTIER_MON_MILTANK_1, \ + FRONTIER_MON_CRADILY_1, \ + FRONTIER_MON_WAILORD_1, \ + FRONTIER_MON_SHUCKLE_1, \ + FRONTIER_MON_EXEGGUTOR_1, \ + FRONTIER_MON_UMBREON_1, \ + FRONTIER_MON_WALREIN_1, \ + FRONTIER_MON_LAPRAS_1, \ + FRONTIER_MON_SNORLAX_1, \ + FRONTIER_MON_BLISSEY_1, \ + FRONTIER_MON_MILOTIC_1, \ + FRONTIER_MON_QUAGSIRE_2, \ + FRONTIER_MON_DUSCLOPS_2, \ + FRONTIER_MON_LUDICOLO_2, \ + FRONTIER_MON_SLOWBRO_2, \ + FRONTIER_MON_SLOWKING_2, \ + FRONTIER_MON_MILTANK_2, \ + FRONTIER_MON_CRADILY_2, \ + FRONTIER_MON_WAILORD_2, \ + FRONTIER_MON_SHUCKLE_2, \ + FRONTIER_MON_EXEGGUTOR_2, \ + FRONTIER_MON_UMBREON_2, \ + FRONTIER_MON_WALREIN_2, \ + FRONTIER_MON_LAPRAS_2, \ + FRONTIER_MON_SNORLAX_2, \ + FRONTIER_MON_BLISSEY_2, \ + FRONTIER_MON_MILOTIC_2, \ + FRONTIER_MON_DUSCLOPS_3, \ + FRONTIER_MON_QUAGSIRE_3, \ + FRONTIER_MON_LUDICOLO_3, \ + FRONTIER_MON_SLOWBRO_3, \ + FRONTIER_MON_SLOWKING_3, \ + FRONTIER_MON_MILTANK_3, \ + FRONTIER_MON_CRADILY_3, \ + FRONTIER_MON_WAILORD_3, \ + FRONTIER_MON_SHUCKLE_3, \ + FRONTIER_MON_EXEGGUTOR_3, \ + FRONTIER_MON_UMBREON_3, \ + FRONTIER_MON_WALREIN_3, \ + FRONTIER_MON_LAPRAS_3, \ + FRONTIER_MON_SNORLAX_3, \ + FRONTIER_MON_BLISSEY_3, \ + FRONTIER_MON_MILOTIC_3, \ + FRONTIER_MON_DUSCLOPS_4, \ + FRONTIER_MON_QUAGSIRE_4, \ + FRONTIER_MON_LUDICOLO_4, \ + FRONTIER_MON_SLOWBRO_4, \ + FRONTIER_MON_SLOWKING_4, \ + FRONTIER_MON_MILTANK_4, \ + FRONTIER_MON_CRADILY_4, \ + FRONTIER_MON_WAILORD_4, \ + FRONTIER_MON_SHUCKLE_4, \ + FRONTIER_MON_EXEGGUTOR_4, \ + FRONTIER_MON_UMBREON_4, \ + FRONTIER_MON_WALREIN_4, \ + FRONTIER_MON_LAPRAS_4, \ + FRONTIER_MON_SNORLAX_4, \ + FRONTIER_MON_BLISSEY_4, \ + FRONTIER_MON_MILOTIC_4, \ + FRONTIER_MON_REGIROCK_1, \ + FRONTIER_MON_REGICE_1, \ + FRONTIER_MON_REGISTEEL_1, \ + FRONTIER_MON_REGIROCK_2, \ + FRONTIER_MON_REGICE_2, \ + FRONTIER_MON_REGISTEEL_2, \ + FRONTIER_MON_REGIROCK_3, \ + FRONTIER_MON_REGICE_3, \ + FRONTIER_MON_REGISTEEL_3, \ + FRONTIER_MON_REGIROCK_4, \ + FRONTIER_MON_REGICE_4, \ + FRONTIER_MON_REGISTEEL_4, \ + FRONTIER_MON_LAPRAS_5, \ + FRONTIER_MON_LAPRAS_6, \ + FRONTIER_MON_LAPRAS_7, \ + FRONTIER_MON_LAPRAS_8, \ + FRONTIER_MON_SNORLAX_5, \ + FRONTIER_MON_SNORLAX_6, \ + FRONTIER_MON_SNORLAX_7, \ + FRONTIER_MON_SNORLAX_8, \ + FRONTIER_MON_REGIROCK_5, \ + FRONTIER_MON_REGIROCK_6, \ + FRONTIER_MON_REGICE_5, \ + FRONTIER_MON_REGICE_6, \ + FRONTIER_MON_REGISTEEL_5, \ + FRONTIER_MON_REGISTEEL_6, \ + FRONTIER_MON_##lastmon##_1, \ + FRONTIER_MON_##lastmon##_2, \ + FRONTIER_MON_##lastmon##_3, \ + FRONTIER_MON_##lastmon##_4, \ + FRONTIER_MON_##lastmon##_5, \ + FRONTIER_MON_##lastmon##_6, \ + FRONTIER_MON_##lastmon##_7, \ + FRONTIER_MON_##lastmon##_8, \ + FRONTIER_MON_##lastmon##_9, \ + FRONTIER_MON_##lastmon##_10,\ + -1 + +// The strong Psychic M/F trainers all use the below pokemon +// Additionally they use 1 of 3 legendary trios, and Latios or Latias depending on gender +#define FRONTIER_MONS_PSYCHIC_2(lati, legend1, legend2, legend3) \ + FRONTIER_MON_WOBBUFFET_1, \ + FRONTIER_MON_WOBBUFFET_2, \ + FRONTIER_MON_JYNX_1, \ + FRONTIER_MON_MR_MIME_1, \ + FRONTIER_MON_XATU_1, \ + FRONTIER_MON_HYPNO_1, \ + FRONTIER_MON_ALAKAZAM_1, \ + FRONTIER_MON_SLOWBRO_1, \ + FRONTIER_MON_SLOWKING_1, \ + FRONTIER_MON_CLAYDOL_1, \ + FRONTIER_MON_GARDEVOIR_1, \ + FRONTIER_MON_EXEGGUTOR_1, \ + FRONTIER_MON_STARMIE_1, \ + FRONTIER_MON_ESPEON_1, \ + FRONTIER_MON_METAGROSS_1, \ + FRONTIER_MON_JYNX_2, \ + FRONTIER_MON_MR_MIME_2, \ + FRONTIER_MON_XATU_2, \ + FRONTIER_MON_HYPNO_2, \ + FRONTIER_MON_ALAKAZAM_2, \ + FRONTIER_MON_SLOWBRO_2, \ + FRONTIER_MON_SLOWKING_2, \ + FRONTIER_MON_CLAYDOL_2, \ + FRONTIER_MON_GARDEVOIR_2, \ + FRONTIER_MON_EXEGGUTOR_2, \ + FRONTIER_MON_STARMIE_2, \ + FRONTIER_MON_ESPEON_2, \ + FRONTIER_MON_METAGROSS_2, \ + FRONTIER_MON_JYNX_3, \ + FRONTIER_MON_MR_MIME_3, \ + FRONTIER_MON_XATU_3, \ + FRONTIER_MON_HYPNO_3, \ + FRONTIER_MON_ALAKAZAM_3, \ + FRONTIER_MON_SLOWBRO_3, \ + FRONTIER_MON_SLOWKING_3, \ + FRONTIER_MON_CLAYDOL_3, \ + FRONTIER_MON_GARDEVOIR_3, \ + FRONTIER_MON_EXEGGUTOR_3, \ + FRONTIER_MON_STARMIE_3, \ + FRONTIER_MON_ESPEON_3, \ + FRONTIER_MON_METAGROSS_3, \ + FRONTIER_MON_JYNX_4, \ + FRONTIER_MON_MR_MIME_4, \ + FRONTIER_MON_XATU_4, \ + FRONTIER_MON_HYPNO_4, \ + FRONTIER_MON_ALAKAZAM_4, \ + FRONTIER_MON_SLOWBRO_4, \ + FRONTIER_MON_SLOWKING_4, \ + FRONTIER_MON_CLAYDOL_4, \ + FRONTIER_MON_GARDEVOIR_4, \ + FRONTIER_MON_EXEGGUTOR_4, \ + FRONTIER_MON_STARMIE_4, \ + FRONTIER_MON_ESPEON_4, \ + FRONTIER_MON_METAGROSS_4, \ + FRONTIER_MON_##legend1##_1, \ + FRONTIER_MON_##legend2##_1, \ + FRONTIER_MON_##legend3##_1, \ + FRONTIER_MON_##lati##_1, \ + FRONTIER_MON_##legend1##_2, \ + FRONTIER_MON_##legend2##_2, \ + FRONTIER_MON_##legend3##_2, \ + FRONTIER_MON_##lati##_2, \ + FRONTIER_MON_##legend1##_3, \ + FRONTIER_MON_##legend2##_3, \ + FRONTIER_MON_##legend3##_3, \ + FRONTIER_MON_##lati##_3, \ + FRONTIER_MON_##legend1##_4, \ + FRONTIER_MON_##legend2##_4, \ + FRONTIER_MON_##legend3##_4, \ + FRONTIER_MON_##lati##_4, \ + FRONTIER_MON_GARDEVOIR_5, \ + FRONTIER_MON_GARDEVOIR_6, \ + FRONTIER_MON_GARDEVOIR_7, \ + FRONTIER_MON_GARDEVOIR_8, \ + FRONTIER_MON_STARMIE_5, \ + FRONTIER_MON_STARMIE_6, \ + FRONTIER_MON_STARMIE_7, \ + FRONTIER_MON_STARMIE_8, \ + FRONTIER_MON_METAGROSS_5, \ + FRONTIER_MON_METAGROSS_6, \ + FRONTIER_MON_METAGROSS_7, \ + FRONTIER_MON_METAGROSS_8, + +#define FRONTIER_MONS_PSYCHIC_2A(lati) \ + FRONTIER_MONS_PSYCHIC_2(lati, ARTICUNO, ZAPDOS, MOLTRES) \ + FRONTIER_MON_##lati##_5, \ + FRONTIER_MON_##lati##_6, \ + FRONTIER_MON_##lati##_7, \ + FRONTIER_MON_##lati##_8, \ + FRONTIER_MON_ARTICUNO_5, \ + FRONTIER_MON_ARTICUNO_6, \ + FRONTIER_MON_ZAPDOS_5, \ + FRONTIER_MON_ZAPDOS_6, \ + FRONTIER_MON_MOLTRES_5, \ + FRONTIER_MON_MOLTRES_6, \ + -1 + +#define FRONTIER_MONS_PSYCHIC_2B(lati) \ + FRONTIER_MONS_PSYCHIC_2(lati, RAIKOU, ENTEI, SUICUNE) \ + FRONTIER_MON_##lati##_5, \ + FRONTIER_MON_##lati##_6, \ + FRONTIER_MON_##lati##_7, \ + FRONTIER_MON_##lati##_8, \ + FRONTIER_MON_RAIKOU_5, \ + FRONTIER_MON_RAIKOU_6, \ + FRONTIER_MON_ENTEI_5, \ + FRONTIER_MON_ENTEI_6, \ + FRONTIER_MON_SUICUNE_5, \ + FRONTIER_MON_SUICUNE_6, \ + -1 + +// Because the regis/latis are swapped here they cant all be merged into the same macro and match +#define FRONTIER_MONS_PSYCHIC_2C(lati) \ + FRONTIER_MONS_PSYCHIC_2(lati, REGIROCK, REGICE, REGISTEEL) \ + FRONTIER_MON_REGIROCK_5, \ + FRONTIER_MON_REGIROCK_6, \ + FRONTIER_MON_REGICE_5, \ + FRONTIER_MON_REGICE_6, \ + FRONTIER_MON_REGISTEEL_5, \ + FRONTIER_MON_REGISTEEL_6, \ + FRONTIER_MON_##lati##_5, \ + FRONTIER_MON_##lati##_6, \ + FRONTIER_MON_##lati##_7, \ + FRONTIER_MON_##lati##_8, \ + -1 + +#define FRONTIER_MONS_HEX_MANIAC_2A \ + FRONTIER_MON_SHARPEDO_2, \ + FRONTIER_MON_ABSOL_2, \ + FRONTIER_MON_MISDREAVUS_1, \ + FRONTIER_MON_DUSCLOPS_1, \ + FRONTIER_MON_SHIFTRY_1, \ + FRONTIER_MON_GENGAR_1, \ + FRONTIER_MON_HOUNDOOM_1, \ + FRONTIER_MON_UMBREON_1, \ + FRONTIER_MON_MISDREAVUS_2, \ + FRONTIER_MON_DUSCLOPS_2, \ + FRONTIER_MON_SHIFTRY_2, \ + FRONTIER_MON_GENGAR_2, \ + FRONTIER_MON_HOUNDOOM_2, \ + FRONTIER_MON_UMBREON_2, \ + FRONTIER_MON_MISDREAVUS_3, \ + FRONTIER_MON_DUSCLOPS_3, \ + FRONTIER_MON_SHIFTRY_3, \ + FRONTIER_MON_GENGAR_3, \ + FRONTIER_MON_HOUNDOOM_3, \ + FRONTIER_MON_UMBREON_3, \ + FRONTIER_MON_MISDREAVUS_4, \ + FRONTIER_MON_DUSCLOPS_4, \ + FRONTIER_MON_SHIFTRY_4, \ + FRONTIER_MON_GENGAR_4, \ + FRONTIER_MON_HOUNDOOM_4, \ + FRONTIER_MON_UMBREON_4, \ + FRONTIER_MON_GENGAR_5, \ + FRONTIER_MON_GENGAR_6, \ + FRONTIER_MON_GENGAR_7, \ + FRONTIER_MON_GENGAR_8, \ + -1 + +#define FRONTIER_MONS_HEX_MANIAC_2B \ + FRONTIER_MON_SEVIPER_2, \ + FRONTIER_MON_MISDREAVUS_1, \ + FRONTIER_MON_DUSCLOPS_1, \ + FRONTIER_MON_VILEPLUME_1, \ + FRONTIER_MON_VICTREEBEL_1, \ + FRONTIER_MON_WEEZING_1, \ + FRONTIER_MON_NIDOQUEEN_1, \ + FRONTIER_MON_NIDOKING_1, \ + FRONTIER_MON_MUK_1, \ + FRONTIER_MON_GENGAR_1, \ + FRONTIER_MON_TENTACRUEL_1, \ + FRONTIER_MON_VENUSAUR_1, \ + FRONTIER_MON_CROBAT_1, \ + FRONTIER_MON_MISDREAVUS_2, \ + FRONTIER_MON_DUSCLOPS_2, \ + FRONTIER_MON_VILEPLUME_2, \ + FRONTIER_MON_VICTREEBEL_2, \ + FRONTIER_MON_WEEZING_2, \ + FRONTIER_MON_NIDOQUEEN_2, \ + FRONTIER_MON_NIDOKING_2, \ + FRONTIER_MON_MUK_2, \ + FRONTIER_MON_GENGAR_2, \ + FRONTIER_MON_TENTACRUEL_2, \ + FRONTIER_MON_VENUSAUR_2, \ + FRONTIER_MON_CROBAT_2, \ + FRONTIER_MON_MISDREAVUS_3, \ + FRONTIER_MON_DUSCLOPS_3, \ + FRONTIER_MON_VILEPLUME_3, \ + FRONTIER_MON_VICTREEBEL_3, \ + FRONTIER_MON_WEEZING_3, \ + FRONTIER_MON_NIDOQUEEN_3, \ + FRONTIER_MON_NIDOKING_3, \ + FRONTIER_MON_MUK_3, \ + FRONTIER_MON_GENGAR_3, \ + FRONTIER_MON_TENTACRUEL_3, \ + FRONTIER_MON_VENUSAUR_3, \ + FRONTIER_MON_CROBAT_3, \ + FRONTIER_MON_MISDREAVUS_4, \ + FRONTIER_MON_DUSCLOPS_4, \ + FRONTIER_MON_VILEPLUME_4, \ + FRONTIER_MON_VICTREEBEL_4, \ + FRONTIER_MON_WEEZING_4, \ + FRONTIER_MON_NIDOQUEEN_4, \ + FRONTIER_MON_NIDOKING_4, \ + FRONTIER_MON_MUK_4, \ + FRONTIER_MON_GENGAR_4, \ + FRONTIER_MON_TENTACRUEL_4, \ + FRONTIER_MON_VENUSAUR_4, \ + FRONTIER_MON_CROBAT_4, \ + FRONTIER_MON_GENGAR_5, \ + FRONTIER_MON_GENGAR_6, \ + FRONTIER_MON_GENGAR_7, \ + FRONTIER_MON_GENGAR_8, \ + -1 + +#define FRONTIER_MONS_HEX_MANIAC_2C \ + FRONTIER_MON_SEVIPER_2, \ + FRONTIER_MON_SHARPEDO_2, \ + FRONTIER_MON_ABSOL_2, \ + FRONTIER_MON_VILEPLUME_1, \ + FRONTIER_MON_VICTREEBEL_1, \ + FRONTIER_MON_SHIFTRY_1, \ + FRONTIER_MON_WEEZING_1, \ + FRONTIER_MON_NIDOQUEEN_1, \ + FRONTIER_MON_NIDOKING_1, \ + FRONTIER_MON_MUK_1, \ + FRONTIER_MON_GENGAR_1, \ + FRONTIER_MON_HOUNDOOM_1, \ + FRONTIER_MON_TENTACRUEL_1, \ + FRONTIER_MON_VENUSAUR_1, \ + FRONTIER_MON_UMBREON_1, \ + FRONTIER_MON_CROBAT_1, \ + FRONTIER_MON_VILEPLUME_2, \ + FRONTIER_MON_VICTREEBEL_2, \ + FRONTIER_MON_SHIFTRY_2, \ + FRONTIER_MON_WEEZING_2, \ + FRONTIER_MON_NIDOQUEEN_2, \ + FRONTIER_MON_NIDOKING_2, \ + FRONTIER_MON_MUK_2, \ + FRONTIER_MON_GENGAR_2, \ + FRONTIER_MON_HOUNDOOM_2, \ + FRONTIER_MON_TENTACRUEL_2, \ + FRONTIER_MON_VENUSAUR_2, \ + FRONTIER_MON_UMBREON_2, \ + FRONTIER_MON_CROBAT_2, \ + FRONTIER_MON_VILEPLUME_3, \ + FRONTIER_MON_VICTREEBEL_3, \ + FRONTIER_MON_SHIFTRY_3, \ + FRONTIER_MON_WEEZING_3, \ + FRONTIER_MON_NIDOQUEEN_3, \ + FRONTIER_MON_NIDOKING_3, \ + FRONTIER_MON_MUK_3, \ + FRONTIER_MON_GENGAR_3, \ + FRONTIER_MON_HOUNDOOM_3, \ + FRONTIER_MON_TENTACRUEL_3, \ + FRONTIER_MON_VENUSAUR_3, \ + FRONTIER_MON_UMBREON_3, \ + FRONTIER_MON_CROBAT_3, \ + FRONTIER_MON_VILEPLUME_4, \ + FRONTIER_MON_VICTREEBEL_4, \ + FRONTIER_MON_SHIFTRY_4, \ + FRONTIER_MON_WEEZING_4, \ + FRONTIER_MON_NIDOQUEEN_4, \ + FRONTIER_MON_NIDOKING_4, \ + FRONTIER_MON_MUK_4, \ + FRONTIER_MON_GENGAR_4, \ + FRONTIER_MON_HOUNDOOM_4, \ + FRONTIER_MON_TENTACRUEL_4, \ + FRONTIER_MON_VENUSAUR_4, \ + FRONTIER_MON_UMBREON_4, \ + FRONTIER_MON_CROBAT_4, \ + FRONTIER_MON_GENGAR_5, \ + FRONTIER_MON_GENGAR_6, \ + FRONTIER_MON_GENGAR_7, \ + FRONTIER_MON_GENGAR_8, \ + -1 + +// For whatever reason FRONTIER_MON_MAROWAK_2 is in a different order than _1 _3 and _4 +// This order change is the only difference btween FRONITER_MONS_POKEMANIAC_2A and FRONTIER_MONS_POKEMANIAC_2B other than the numbered suffixes +#define FRONTIER_MONS_POKEMANIAC_2A \ + FRONTIER_MON_ZANGOOSE_2, \ + FRONTIER_MON_GRANBULL_1, \ + FRONTIER_MON_SKARMORY_1, \ + FRONTIER_MON_MAROWAK_1, \ + FRONTIER_MON_EXPLOUD_1, \ + FRONTIER_MON_GLALIE_1, \ + FRONTIER_MON_GOLEM_1, \ + FRONTIER_MON_RHYDON_1, \ + FRONTIER_MON_KANGASKHAN_1, \ + FRONTIER_MON_TAUROS_1, \ + FRONTIER_MON_MILTANK_1, \ + FRONTIER_MON_NIDOQUEEN_1, \ + FRONTIER_MON_NIDOKING_1, \ + FRONTIER_MON_URSARING_1, \ + FRONTIER_MON_DONPHAN_1, \ + FRONTIER_MON_WAILORD_1, \ + FRONTIER_MON_STEELIX_1, \ + FRONTIER_MON_AERODACTYL_1, \ + FRONTIER_MON_FLYGON_1, \ + FRONTIER_MON_VENUSAUR_1, \ + FRONTIER_MON_MEGANIUM_1, \ + FRONTIER_MON_BLASTOISE_1, \ + FRONTIER_MON_FERALIGATR_1, \ + FRONTIER_MON_AGGRON_1, \ + FRONTIER_MON_WALREIN_1, \ + FRONTIER_MON_CHARIZARD_1, \ + FRONTIER_MON_LAPRAS_1, \ + FRONTIER_MON_SWAMPERT_1, \ + FRONTIER_MON_GYARADOS_1, \ + FRONTIER_MON_SNORLAX_1, \ + FRONTIER_MON_BLISSEY_1, \ + FRONTIER_MON_SALAMENCE_1, \ + FRONTIER_MON_METAGROSS_1, \ + FRONTIER_MON_SLAKING_1, \ + FRONTIER_MON_MAROWAK_2, \ + FRONTIER_MON_GRANBULL_2, \ + FRONTIER_MON_SKARMORY_2, \ + FRONTIER_MON_EXPLOUD_2, \ + FRONTIER_MON_GLALIE_2, \ + FRONTIER_MON_GOLEM_2, \ + FRONTIER_MON_RHYDON_2, \ + FRONTIER_MON_KANGASKHAN_2, \ + FRONTIER_MON_TAUROS_2, \ + FRONTIER_MON_MILTANK_2, \ + FRONTIER_MON_NIDOQUEEN_2, \ + FRONTIER_MON_NIDOKING_2, \ + FRONTIER_MON_URSARING_2, \ + FRONTIER_MON_DONPHAN_2, \ + FRONTIER_MON_WAILORD_2, \ + FRONTIER_MON_STEELIX_2, \ + FRONTIER_MON_AERODACTYL_2, \ + FRONTIER_MON_FLYGON_2, \ + FRONTIER_MON_VENUSAUR_2, \ + FRONTIER_MON_MEGANIUM_2, \ + FRONTIER_MON_BLASTOISE_2, \ + FRONTIER_MON_FERALIGATR_2, \ + FRONTIER_MON_AGGRON_2, \ + FRONTIER_MON_WALREIN_2, \ + FRONTIER_MON_CHARIZARD_2, \ + FRONTIER_MON_LAPRAS_2, \ + FRONTIER_MON_SWAMPERT_2, \ + FRONTIER_MON_GYARADOS_2, \ + FRONTIER_MON_SNORLAX_2, \ + FRONTIER_MON_BLISSEY_2, \ + FRONTIER_MON_SALAMENCE_2, \ + FRONTIER_MON_METAGROSS_2, \ + FRONTIER_MON_SLAKING_2, \ + FRONTIER_MON_DRAGONITE_1, \ + FRONTIER_MON_DRAGONITE_2, \ + FRONTIER_MON_DRAGONITE_3, \ + FRONTIER_MON_DRAGONITE_4, \ + FRONTIER_MON_DRAGONITE_5, \ + FRONTIER_MON_DRAGONITE_6, \ + FRONTIER_MON_DRAGONITE_7, \ + FRONTIER_MON_DRAGONITE_8, \ + FRONTIER_MON_DRAGONITE_9, \ + FRONTIER_MON_DRAGONITE_10, \ + FRONTIER_MON_TYRANITAR_1, \ + FRONTIER_MON_TYRANITAR_2, \ + FRONTIER_MON_TYRANITAR_3, \ + FRONTIER_MON_TYRANITAR_4, \ + FRONTIER_MON_TYRANITAR_5, \ + FRONTIER_MON_TYRANITAR_6, \ + FRONTIER_MON_TYRANITAR_7, \ + FRONTIER_MON_TYRANITAR_8, \ + FRONTIER_MON_TYRANITAR_9, \ + FRONTIER_MON_TYRANITAR_10, \ + -1 + +#define FRONTIER_MONS_POKEMANIAC_2B \ + FRONTIER_MON_ZANGOOSE_2, \ + FRONTIER_MON_GRANBULL_3, \ + FRONTIER_MON_SKARMORY_3, \ + FRONTIER_MON_MAROWAK_3, \ + FRONTIER_MON_EXPLOUD_3, \ + FRONTIER_MON_GLALIE_3, \ + FRONTIER_MON_GOLEM_3, \ + FRONTIER_MON_RHYDON_3, \ + FRONTIER_MON_KANGASKHAN_3, \ + FRONTIER_MON_TAUROS_3, \ + FRONTIER_MON_MILTANK_3, \ + FRONTIER_MON_NIDOQUEEN_3, \ + FRONTIER_MON_NIDOKING_3, \ + FRONTIER_MON_URSARING_3, \ + FRONTIER_MON_DONPHAN_3, \ + FRONTIER_MON_WAILORD_3, \ + FRONTIER_MON_STEELIX_3, \ + FRONTIER_MON_AERODACTYL_3, \ + FRONTIER_MON_FLYGON_3, \ + FRONTIER_MON_VENUSAUR_3, \ + FRONTIER_MON_MEGANIUM_3, \ + FRONTIER_MON_BLASTOISE_3, \ + FRONTIER_MON_FERALIGATR_3, \ + FRONTIER_MON_AGGRON_3, \ + FRONTIER_MON_WALREIN_3, \ + FRONTIER_MON_CHARIZARD_3, \ + FRONTIER_MON_LAPRAS_3, \ + FRONTIER_MON_SWAMPERT_3, \ + FRONTIER_MON_GYARADOS_3, \ + FRONTIER_MON_SNORLAX_3, \ + FRONTIER_MON_BLISSEY_3, \ + FRONTIER_MON_SALAMENCE_3, \ + FRONTIER_MON_METAGROSS_3, \ + FRONTIER_MON_SLAKING_3, \ + FRONTIER_MON_GRANBULL_4, \ + FRONTIER_MON_SKARMORY_4, \ + FRONTIER_MON_MAROWAK_4, \ + FRONTIER_MON_EXPLOUD_4, \ + FRONTIER_MON_GLALIE_4, \ + FRONTIER_MON_GOLEM_4, \ + FRONTIER_MON_RHYDON_4, \ + FRONTIER_MON_KANGASKHAN_4, \ + FRONTIER_MON_TAUROS_4, \ + FRONTIER_MON_MILTANK_4, \ + FRONTIER_MON_NIDOQUEEN_4, \ + FRONTIER_MON_NIDOKING_4, \ + FRONTIER_MON_URSARING_4, \ + FRONTIER_MON_DONPHAN_4, \ + FRONTIER_MON_WAILORD_4, \ + FRONTIER_MON_STEELIX_4, \ + FRONTIER_MON_AERODACTYL_4, \ + FRONTIER_MON_FLYGON_4, \ + FRONTIER_MON_VENUSAUR_4, \ + FRONTIER_MON_MEGANIUM_4, \ + FRONTIER_MON_BLASTOISE_4, \ + FRONTIER_MON_FERALIGATR_4, \ + FRONTIER_MON_AGGRON_4, \ + FRONTIER_MON_WALREIN_4, \ + FRONTIER_MON_CHARIZARD_4, \ + FRONTIER_MON_LAPRAS_4, \ + FRONTIER_MON_SWAMPERT_4, \ + FRONTIER_MON_GYARADOS_4, \ + FRONTIER_MON_SNORLAX_4, \ + FRONTIER_MON_BLISSEY_4, \ + FRONTIER_MON_SALAMENCE_4, \ + FRONTIER_MON_METAGROSS_4, \ + FRONTIER_MON_SLAKING_4, \ + FRONTIER_MON_DRAGONITE_1, \ + FRONTIER_MON_DRAGONITE_2, \ + FRONTIER_MON_DRAGONITE_3, \ + FRONTIER_MON_DRAGONITE_4, \ + FRONTIER_MON_DRAGONITE_5, \ + FRONTIER_MON_DRAGONITE_6, \ + FRONTIER_MON_DRAGONITE_7, \ + FRONTIER_MON_DRAGONITE_8, \ + FRONTIER_MON_DRAGONITE_9, \ + FRONTIER_MON_DRAGONITE_10, \ + FRONTIER_MON_TYRANITAR_1, \ + FRONTIER_MON_TYRANITAR_2, \ + FRONTIER_MON_TYRANITAR_3, \ + FRONTIER_MON_TYRANITAR_4, \ + FRONTIER_MON_TYRANITAR_5, \ + FRONTIER_MON_TYRANITAR_6, \ + FRONTIER_MON_TYRANITAR_7, \ + FRONTIER_MON_TYRANITAR_8, \ + FRONTIER_MON_TYRANITAR_9, \ + FRONTIER_MON_TYRANITAR_10, \ + -1 + +#define FRONTIER_MONS_POKEMANIAC_2C \ + FRONTIER_MON_ZANGOOSE_2, \ + FRONTIER_MON_URSARING_1, \ + FRONTIER_MON_STEELIX_1, \ + FRONTIER_MON_AERODACTYL_1, \ + FRONTIER_MON_MEGANIUM_1, \ + FRONTIER_MON_AGGRON_1, \ + FRONTIER_MON_CHARIZARD_1, \ + FRONTIER_MON_LAPRAS_1, \ + FRONTIER_MON_SWAMPERT_1, \ + FRONTIER_MON_GYARADOS_1, \ + FRONTIER_MON_SNORLAX_1, \ + FRONTIER_MON_SALAMENCE_1, \ + FRONTIER_MON_METAGROSS_1, \ + FRONTIER_MON_URSARING_2, \ + FRONTIER_MON_STEELIX_2, \ + FRONTIER_MON_AERODACTYL_2, \ + FRONTIER_MON_MEGANIUM_2, \ + FRONTIER_MON_AGGRON_2, \ + FRONTIER_MON_CHARIZARD_2, \ + FRONTIER_MON_LAPRAS_2, \ + FRONTIER_MON_SWAMPERT_2, \ + FRONTIER_MON_GYARADOS_2, \ + FRONTIER_MON_SNORLAX_2, \ + FRONTIER_MON_SALAMENCE_2, \ + FRONTIER_MON_METAGROSS_2, \ + FRONTIER_MON_URSARING_3, \ + FRONTIER_MON_STEELIX_3, \ + FRONTIER_MON_AERODACTYL_3, \ + FRONTIER_MON_MEGANIUM_3, \ + FRONTIER_MON_AGGRON_3, \ + FRONTIER_MON_CHARIZARD_3, \ + FRONTIER_MON_LAPRAS_3, \ + FRONTIER_MON_SWAMPERT_3, \ + FRONTIER_MON_GYARADOS_3, \ + FRONTIER_MON_SNORLAX_3, \ + FRONTIER_MON_SALAMENCE_3, \ + FRONTIER_MON_METAGROSS_3, \ + FRONTIER_MON_URSARING_4, \ + FRONTIER_MON_STEELIX_4, \ + FRONTIER_MON_AERODACTYL_4, \ + FRONTIER_MON_MEGANIUM_4, \ + FRONTIER_MON_AGGRON_4, \ + FRONTIER_MON_CHARIZARD_4, \ + FRONTIER_MON_LAPRAS_4, \ + FRONTIER_MON_SWAMPERT_4, \ + FRONTIER_MON_GYARADOS_4, \ + FRONTIER_MON_SNORLAX_4, \ + FRONTIER_MON_SALAMENCE_4, \ + FRONTIER_MON_METAGROSS_4, \ + FRONTIER_MON_URSARING_5, \ + FRONTIER_MON_URSARING_6, \ + FRONTIER_MON_URSARING_7, \ + FRONTIER_MON_URSARING_8, \ + FRONTIER_MON_LAPRAS_5, \ + FRONTIER_MON_LAPRAS_6, \ + FRONTIER_MON_LAPRAS_7, \ + FRONTIER_MON_LAPRAS_8, \ + FRONTIER_MON_SNORLAX_5, \ + FRONTIER_MON_SNORLAX_6, \ + FRONTIER_MON_SNORLAX_7, \ + FRONTIER_MON_SNORLAX_8, \ + FRONTIER_MON_SALAMENCE_5, \ + FRONTIER_MON_SALAMENCE_6, \ + FRONTIER_MON_SALAMENCE_7, \ + FRONTIER_MON_SALAMENCE_8, \ + FRONTIER_MON_METAGROSS_5, \ + FRONTIER_MON_METAGROSS_6, \ + FRONTIER_MON_METAGROSS_7, \ + FRONTIER_MON_METAGROSS_8, \ + FRONTIER_MON_DRAGONITE_1, \ + FRONTIER_MON_DRAGONITE_2, \ + FRONTIER_MON_DRAGONITE_3, \ + FRONTIER_MON_DRAGONITE_4, \ + FRONTIER_MON_DRAGONITE_5, \ + FRONTIER_MON_DRAGONITE_6, \ + FRONTIER_MON_DRAGONITE_7, \ + FRONTIER_MON_DRAGONITE_8, \ + FRONTIER_MON_DRAGONITE_9, \ + FRONTIER_MON_DRAGONITE_10, \ + FRONTIER_MON_TYRANITAR_1, \ + FRONTIER_MON_TYRANITAR_2, \ + FRONTIER_MON_TYRANITAR_3, \ + FRONTIER_MON_TYRANITAR_4, \ + FRONTIER_MON_TYRANITAR_5, \ + FRONTIER_MON_TYRANITAR_6, \ + FRONTIER_MON_TYRANITAR_7, \ + FRONTIER_MON_TYRANITAR_8, \ + FRONTIER_MON_TYRANITAR_9, \ + FRONTIER_MON_TYRANITAR_10, \ + -1 + +// Identical to FRONTIER_MONS_COOLTRAINER_2C but with both latias and latios +#define FRONTIER_MONS_GENTLEMAN_3A \ + FRONTIER_MON_GENGAR_1, \ + FRONTIER_MON_URSARING_1, \ + FRONTIER_MON_MACHAMP_1, \ + FRONTIER_MON_GARDEVOIR_1, \ + FRONTIER_MON_STARMIE_1, \ + FRONTIER_MON_LAPRAS_1, \ + FRONTIER_MON_SNORLAX_1, \ + FRONTIER_MON_SALAMENCE_1, \ + FRONTIER_MON_METAGROSS_1, \ + FRONTIER_MON_GENGAR_2, \ + FRONTIER_MON_URSARING_2, \ + FRONTIER_MON_MACHAMP_2, \ + FRONTIER_MON_GARDEVOIR_2, \ + FRONTIER_MON_STARMIE_2, \ + FRONTIER_MON_LAPRAS_2, \ + FRONTIER_MON_SNORLAX_2, \ + FRONTIER_MON_SALAMENCE_2, \ + FRONTIER_MON_METAGROSS_2, \ + FRONTIER_MON_GENGAR_3, \ + FRONTIER_MON_URSARING_3, \ + FRONTIER_MON_MACHAMP_3, \ + FRONTIER_MON_GARDEVOIR_3, \ + FRONTIER_MON_STARMIE_3, \ + FRONTIER_MON_LAPRAS_3, \ + FRONTIER_MON_SNORLAX_3, \ + FRONTIER_MON_SALAMENCE_3, \ + FRONTIER_MON_METAGROSS_3, \ + FRONTIER_MON_GENGAR_4, \ + FRONTIER_MON_URSARING_4, \ + FRONTIER_MON_MACHAMP_4, \ + FRONTIER_MON_GARDEVOIR_4, \ + FRONTIER_MON_STARMIE_4, \ + FRONTIER_MON_LAPRAS_4, \ + FRONTIER_MON_SNORLAX_4, \ + FRONTIER_MON_SALAMENCE_4, \ + FRONTIER_MON_METAGROSS_4, \ + FRONTIER_MON_LATIAS_1, \ + FRONTIER_MON_LATIOS_1, \ + FRONTIER_MON_LATIAS_2, \ + FRONTIER_MON_LATIOS_2, \ + FRONTIER_MON_LATIAS_3, \ + FRONTIER_MON_LATIOS_3, \ + FRONTIER_MON_LATIAS_4, \ + FRONTIER_MON_LATIOS_4, \ + FRONTIER_MON_GENGAR_5, \ + FRONTIER_MON_GENGAR_6, \ + FRONTIER_MON_GENGAR_7, \ + FRONTIER_MON_GENGAR_8, \ + FRONTIER_MON_URSARING_5, \ + FRONTIER_MON_URSARING_6, \ + FRONTIER_MON_URSARING_7, \ + FRONTIER_MON_URSARING_8, \ + FRONTIER_MON_MACHAMP_5, \ + FRONTIER_MON_MACHAMP_6, \ + FRONTIER_MON_MACHAMP_7, \ + FRONTIER_MON_MACHAMP_8, \ + FRONTIER_MON_GARDEVOIR_5, \ + FRONTIER_MON_GARDEVOIR_6, \ + FRONTIER_MON_GARDEVOIR_7, \ + FRONTIER_MON_GARDEVOIR_8, \ + FRONTIER_MON_STARMIE_5, \ + FRONTIER_MON_STARMIE_6, \ + FRONTIER_MON_STARMIE_7, \ + FRONTIER_MON_STARMIE_8, \ + FRONTIER_MON_LAPRAS_5, \ + FRONTIER_MON_LAPRAS_6, \ + FRONTIER_MON_LAPRAS_7, \ + FRONTIER_MON_LAPRAS_8, \ + FRONTIER_MON_SNORLAX_5, \ + FRONTIER_MON_SNORLAX_6, \ + FRONTIER_MON_SNORLAX_7, \ + FRONTIER_MON_SNORLAX_8, \ + FRONTIER_MON_SALAMENCE_5, \ + FRONTIER_MON_SALAMENCE_6, \ + FRONTIER_MON_SALAMENCE_7, \ + FRONTIER_MON_SALAMENCE_8, \ + FRONTIER_MON_METAGROSS_5, \ + FRONTIER_MON_METAGROSS_6, \ + FRONTIER_MON_METAGROSS_7, \ + FRONTIER_MON_METAGROSS_8, \ + FRONTIER_MON_DRAGONITE_1, \ + FRONTIER_MON_DRAGONITE_2, \ + FRONTIER_MON_DRAGONITE_3, \ + FRONTIER_MON_DRAGONITE_4, \ + FRONTIER_MON_DRAGONITE_5, \ + FRONTIER_MON_DRAGONITE_6, \ + FRONTIER_MON_DRAGONITE_7, \ + FRONTIER_MON_DRAGONITE_8, \ + FRONTIER_MON_DRAGONITE_9, \ + FRONTIER_MON_DRAGONITE_10, \ + FRONTIER_MON_TYRANITAR_1, \ + FRONTIER_MON_TYRANITAR_2, \ + FRONTIER_MON_TYRANITAR_3, \ + FRONTIER_MON_TYRANITAR_4, \ + FRONTIER_MON_TYRANITAR_5, \ + FRONTIER_MON_TYRANITAR_6, \ + FRONTIER_MON_TYRANITAR_7, \ + FRONTIER_MON_TYRANITAR_8, \ + FRONTIER_MON_TYRANITAR_9, \ + FRONTIER_MON_TYRANITAR_10, \ + -1 + +// Identical to FRONTIER_MONS_COOLTRAINER_2D but with both latias and latios +#define FRONTIER_MONS_GENTLEMAN_3B \ + FRONTIER_MON_ARTICUNO_1, \ + FRONTIER_MON_ZAPDOS_1, \ + FRONTIER_MON_MOLTRES_1, \ + FRONTIER_MON_RAIKOU_1, \ + FRONTIER_MON_ENTEI_1, \ + FRONTIER_MON_SUICUNE_1, \ + FRONTIER_MON_REGIROCK_1, \ + FRONTIER_MON_REGICE_1, \ + FRONTIER_MON_REGISTEEL_1, \ + FRONTIER_MON_LATIAS_1, \ + FRONTIER_MON_LATIOS_1, \ + FRONTIER_MON_ARTICUNO_2, \ + FRONTIER_MON_ZAPDOS_2, \ + FRONTIER_MON_MOLTRES_2, \ + FRONTIER_MON_RAIKOU_2, \ + FRONTIER_MON_ENTEI_2, \ + FRONTIER_MON_SUICUNE_2, \ + FRONTIER_MON_REGIROCK_2, \ + FRONTIER_MON_REGICE_2, \ + FRONTIER_MON_REGISTEEL_2, \ + FRONTIER_MON_LATIAS_2, \ + FRONTIER_MON_LATIOS_2, \ + FRONTIER_MON_ARTICUNO_3, \ + FRONTIER_MON_ZAPDOS_3, \ + FRONTIER_MON_MOLTRES_3, \ + FRONTIER_MON_RAIKOU_3, \ + FRONTIER_MON_ENTEI_3, \ + FRONTIER_MON_SUICUNE_3, \ + FRONTIER_MON_REGIROCK_3, \ + FRONTIER_MON_REGICE_3, \ + FRONTIER_MON_REGISTEEL_3, \ + FRONTIER_MON_LATIAS_3, \ + FRONTIER_MON_LATIOS_3, \ + FRONTIER_MON_ARTICUNO_4, \ + FRONTIER_MON_ZAPDOS_4, \ + FRONTIER_MON_MOLTRES_4, \ + FRONTIER_MON_RAIKOU_4, \ + FRONTIER_MON_ENTEI_4, \ + FRONTIER_MON_SUICUNE_4, \ + FRONTIER_MON_REGIROCK_4, \ + FRONTIER_MON_REGICE_4, \ + FRONTIER_MON_REGISTEEL_4, \ + FRONTIER_MON_LATIAS_4, \ + FRONTIER_MON_LATIOS_4, \ + FRONTIER_MON_REGIROCK_5, \ + FRONTIER_MON_REGIROCK_6, \ + FRONTIER_MON_REGICE_5, \ + FRONTIER_MON_REGICE_6, \ + FRONTIER_MON_REGISTEEL_5, \ + FRONTIER_MON_REGISTEEL_6, \ + FRONTIER_MON_LATIAS_5, \ + FRONTIER_MON_LATIAS_6, \ + FRONTIER_MON_LATIAS_7, \ + FRONTIER_MON_LATIAS_8, \ + FRONTIER_MON_LATIOS_5, \ + FRONTIER_MON_LATIOS_6, \ + FRONTIER_MON_LATIOS_7, \ + FRONTIER_MON_LATIOS_8, \ + FRONTIER_MON_DRAGONITE_1, \ + FRONTIER_MON_DRAGONITE_2, \ + FRONTIER_MON_DRAGONITE_3, \ + FRONTIER_MON_DRAGONITE_4, \ + FRONTIER_MON_DRAGONITE_5, \ + FRONTIER_MON_DRAGONITE_6, \ + FRONTIER_MON_DRAGONITE_7, \ + FRONTIER_MON_DRAGONITE_8, \ + FRONTIER_MON_DRAGONITE_9, \ + FRONTIER_MON_DRAGONITE_10, \ + FRONTIER_MON_TYRANITAR_1, \ + FRONTIER_MON_TYRANITAR_2, \ + FRONTIER_MON_TYRANITAR_3, \ + FRONTIER_MON_TYRANITAR_4, \ + FRONTIER_MON_TYRANITAR_5, \ + FRONTIER_MON_TYRANITAR_6, \ + FRONTIER_MON_TYRANITAR_7, \ + FRONTIER_MON_TYRANITAR_8, \ + FRONTIER_MON_TYRANITAR_9, \ + FRONTIER_MON_TYRANITAR_10, \ + FRONTIER_MON_ARTICUNO_5, \ + FRONTIER_MON_ARTICUNO_6, \ + FRONTIER_MON_ZAPDOS_5, \ + FRONTIER_MON_ZAPDOS_6, \ + FRONTIER_MON_MOLTRES_5, \ + FRONTIER_MON_MOLTRES_6, \ + FRONTIER_MON_RAIKOU_5, \ + FRONTIER_MON_RAIKOU_6, \ + FRONTIER_MON_ENTEI_5, \ + FRONTIER_MON_ENTEI_6, \ + FRONTIER_MON_SUICUNE_5, \ + FRONTIER_MON_SUICUNE_6, \ + -1 + +#define FRONTIER_MONS_SWIMMING_TRIATHLETE_M_3 \ + FRONTIER_MON_SNEASEL_2, \ + FRONTIER_MON_CLOYSTER_2, \ + FRONTIER_MON_MEDICHAM_1, \ + FRONTIER_MON_JYNX_1, \ + FRONTIER_MON_HARIYAMA_1, \ + FRONTIER_MON_DEWGONG_1, \ + FRONTIER_MON_GLALIE_1, \ + FRONTIER_MON_MACHAMP_1, \ + FRONTIER_MON_WALREIN_1, \ + FRONTIER_MON_LAPRAS_1, \ + FRONTIER_MON_MEDICHAM_2, \ + FRONTIER_MON_JYNX_2, \ + FRONTIER_MON_HARIYAMA_2, \ + FRONTIER_MON_DEWGONG_2, \ + FRONTIER_MON_GLALIE_2, \ + FRONTIER_MON_MACHAMP_2, \ + FRONTIER_MON_WALREIN_2, \ + FRONTIER_MON_LAPRAS_2, \ + FRONTIER_MON_MEDICHAM_3, \ + FRONTIER_MON_JYNX_3, \ + FRONTIER_MON_LANTURN_3, \ + FRONTIER_MON_WHISCASH_3, \ + FRONTIER_MON_QUAGSIRE_3, \ + FRONTIER_MON_HARIYAMA_3, \ + FRONTIER_MON_DEWGONG_3, \ + FRONTIER_MON_GLALIE_3, \ + FRONTIER_MON_LUDICOLO_3, \ + FRONTIER_MON_SLOWBRO_3, \ + FRONTIER_MON_SLOWKING_3, \ + FRONTIER_MON_GOLDUCK_3, \ + FRONTIER_MON_WAILORD_3, \ + FRONTIER_MON_MACHAMP_3, \ + FRONTIER_MON_TENTACRUEL_3, \ + FRONTIER_MON_STARMIE_3, \ + FRONTIER_MON_VAPOREON_3, \ + FRONTIER_MON_BLASTOISE_3, \ + FRONTIER_MON_FERALIGATR_3, \ + FRONTIER_MON_WALREIN_3, \ + FRONTIER_MON_LAPRAS_3, \ + FRONTIER_MON_SWAMPERT_3, \ + FRONTIER_MON_GYARADOS_3, \ + FRONTIER_MON_KINGDRA_3, \ + FRONTIER_MON_MILOTIC_3, \ + FRONTIER_MON_MEDICHAM_4, \ + FRONTIER_MON_JYNX_4, \ + FRONTIER_MON_LANTURN_4, \ + FRONTIER_MON_WHISCASH_4, \ + FRONTIER_MON_QUAGSIRE_4, \ + FRONTIER_MON_HARIYAMA_4, \ + FRONTIER_MON_DEWGONG_4, \ + FRONTIER_MON_GLALIE_4, \ + FRONTIER_MON_LUDICOLO_4, \ + FRONTIER_MON_SLOWBRO_4, \ + FRONTIER_MON_SLOWKING_4, \ + FRONTIER_MON_GOLDUCK_4, \ + FRONTIER_MON_WAILORD_4, \ + FRONTIER_MON_MACHAMP_4, \ + FRONTIER_MON_TENTACRUEL_4, \ + FRONTIER_MON_STARMIE_4, \ + FRONTIER_MON_VAPOREON_4, \ + FRONTIER_MON_BLASTOISE_4, \ + FRONTIER_MON_FERALIGATR_4, \ + FRONTIER_MON_WALREIN_4, \ + FRONTIER_MON_LAPRAS_4, \ + FRONTIER_MON_SWAMPERT_4, \ + FRONTIER_MON_GYARADOS_4, \ + FRONTIER_MON_KINGDRA_4, \ + FRONTIER_MON_MILOTIC_4, \ + FRONTIER_MON_MACHAMP_5, \ + FRONTIER_MON_MACHAMP_6, \ + FRONTIER_MON_MACHAMP_7, \ + FRONTIER_MON_MACHAMP_8, \ + FRONTIER_MON_STARMIE_5, \ + FRONTIER_MON_STARMIE_6, \ + FRONTIER_MON_STARMIE_7, \ + FRONTIER_MON_STARMIE_8, \ + FRONTIER_MON_LAPRAS_5, \ + FRONTIER_MON_LAPRAS_6, \ + FRONTIER_MON_LAPRAS_7, \ + FRONTIER_MON_LAPRAS_8, \ + -1 + +#define FRONTIER_MONS_SWIMMING_TRIATHLETE_F_3 \ + FRONTIER_MON_SNEASEL_2, \ + FRONTIER_MON_CLOYSTER_2, \ + FRONTIER_MON_MEDICHAM_1, \ + FRONTIER_MON_JYNX_1, \ + FRONTIER_MON_LANTURN_1, \ + FRONTIER_MON_WHISCASH_1, \ + FRONTIER_MON_QUAGSIRE_1, \ + FRONTIER_MON_HARIYAMA_1, \ + FRONTIER_MON_DEWGONG_1, \ + FRONTIER_MON_GLALIE_1, \ + FRONTIER_MON_LUDICOLO_1, \ + FRONTIER_MON_SLOWBRO_1, \ + FRONTIER_MON_SLOWKING_1, \ + FRONTIER_MON_GOLDUCK_1, \ + FRONTIER_MON_WAILORD_1, \ + FRONTIER_MON_MACHAMP_1, \ + FRONTIER_MON_TENTACRUEL_1, \ + FRONTIER_MON_STARMIE_1, \ + FRONTIER_MON_VAPOREON_1, \ + FRONTIER_MON_BLASTOISE_1, \ + FRONTIER_MON_FERALIGATR_1, \ + FRONTIER_MON_WALREIN_1, \ + FRONTIER_MON_LAPRAS_1, \ + FRONTIER_MON_SWAMPERT_1, \ + FRONTIER_MON_GYARADOS_1, \ + FRONTIER_MON_KINGDRA_1, \ + FRONTIER_MON_MILOTIC_1, \ + FRONTIER_MON_MEDICHAM_2, \ + FRONTIER_MON_QUAGSIRE_2, \ + FRONTIER_MON_JYNX_2, \ + FRONTIER_MON_LANTURN_2, \ + FRONTIER_MON_WHISCASH_2, \ + FRONTIER_MON_HARIYAMA_2, \ + FRONTIER_MON_DEWGONG_2, \ + FRONTIER_MON_GLALIE_2, \ + FRONTIER_MON_LUDICOLO_2, \ + FRONTIER_MON_SLOWBRO_2, \ + FRONTIER_MON_SLOWKING_2, \ + FRONTIER_MON_GOLDUCK_2, \ + FRONTIER_MON_WAILORD_2, \ + FRONTIER_MON_MACHAMP_2, \ + FRONTIER_MON_TENTACRUEL_2, \ + FRONTIER_MON_STARMIE_2, \ + FRONTIER_MON_VAPOREON_2, \ + FRONTIER_MON_BLASTOISE_2, \ + FRONTIER_MON_FERALIGATR_2, \ + FRONTIER_MON_WALREIN_2, \ + FRONTIER_MON_LAPRAS_2, \ + FRONTIER_MON_SWAMPERT_2, \ + FRONTIER_MON_GYARADOS_2, \ + FRONTIER_MON_KINGDRA_2, \ + FRONTIER_MON_MILOTIC_2, \ + FRONTIER_MON_MEDICHAM_3, \ + FRONTIER_MON_JYNX_3, \ + FRONTIER_MON_HARIYAMA_3, \ + FRONTIER_MON_DEWGONG_3, \ + FRONTIER_MON_GLALIE_3, \ + FRONTIER_MON_MACHAMP_3, \ + FRONTIER_MON_WALREIN_3, \ + FRONTIER_MON_LAPRAS_3, \ + FRONTIER_MON_MEDICHAM_4, \ + FRONTIER_MON_JYNX_4, \ + FRONTIER_MON_HARIYAMA_4, \ + FRONTIER_MON_DEWGONG_4, \ + FRONTIER_MON_GLALIE_4, \ + FRONTIER_MON_MACHAMP_4, \ + FRONTIER_MON_WALREIN_4, \ + FRONTIER_MON_LAPRAS_4, \ + FRONTIER_MON_MACHAMP_5, \ + FRONTIER_MON_MACHAMP_6, \ + FRONTIER_MON_MACHAMP_7, \ + FRONTIER_MON_MACHAMP_8, \ + FRONTIER_MON_STARMIE_5, \ + FRONTIER_MON_STARMIE_6, \ + FRONTIER_MON_STARMIE_7, \ + FRONTIER_MON_STARMIE_8, \ + FRONTIER_MON_LAPRAS_5, \ + FRONTIER_MON_LAPRAS_6, \ + FRONTIER_MON_LAPRAS_7, \ + FRONTIER_MON_LAPRAS_8, \ + -1 + +#define FRONTIER_MONS_BUG_MANIAC_4 \ + FRONTIER_MON_SHEDINJA, \ + FRONTIER_MON_NINJASK_1, \ + FRONTIER_MON_PARASECT_2, \ + FRONTIER_MON_MASQUERAIN_2, \ + FRONTIER_MON_VENOMOTH_2, \ + FRONTIER_MON_NINJASK_2, \ + FRONTIER_MON_SCYTHER_2, \ + FRONTIER_MON_PINSIR_2, \ + FRONTIER_MON_FORRETRESS_1, \ + FRONTIER_MON_ARMALDO_1, \ + FRONTIER_MON_SCIZOR_1, \ + FRONTIER_MON_HERACROSS_1, \ + FRONTIER_MON_SHUCKLE_1, \ + FRONTIER_MON_FORRETRESS_2, \ + FRONTIER_MON_ARMALDO_2, \ + FRONTIER_MON_SCIZOR_2, \ + FRONTIER_MON_HERACROSS_2, \ + FRONTIER_MON_SHUCKLE_2, \ + FRONTIER_MON_FORRETRESS_3, \ + FRONTIER_MON_ARMALDO_3, \ + FRONTIER_MON_SCIZOR_3, \ + FRONTIER_MON_HERACROSS_3, \ + FRONTIER_MON_SHUCKLE_3, \ + FRONTIER_MON_FORRETRESS_4, \ + FRONTIER_MON_ARMALDO_4, \ + FRONTIER_MON_SCIZOR_4, \ + FRONTIER_MON_HERACROSS_4, \ + FRONTIER_MON_SHUCKLE_4, \ + -1 + +#define FRONTIER_MONS_FISHERMAN_3 \ + FRONTIER_MON_SEAKING_2, \ + FRONTIER_MON_SHARPEDO_2, \ + FRONTIER_MON_MANTINE_2, \ + FRONTIER_MON_CRAWDAUNT_2, \ + FRONTIER_MON_KINGLER_2, \ + FRONTIER_MON_OCTILLERY_2, \ + FRONTIER_MON_HUNTAIL_2, \ + FRONTIER_MON_GOREBYSS_2, \ + FRONTIER_MON_RELICANTH_2, \ + FRONTIER_MON_CLOYSTER_2, \ + FRONTIER_MON_LANTURN_1, \ + FRONTIER_MON_WHISCASH_1, \ + FRONTIER_MON_WAILORD_1, \ + FRONTIER_MON_TENTACRUEL_1, \ + FRONTIER_MON_STARMIE_1, \ + FRONTIER_MON_LANTURN_2, \ + FRONTIER_MON_WHISCASH_2, \ + FRONTIER_MON_WAILORD_2, \ + FRONTIER_MON_TENTACRUEL_2, \ + FRONTIER_MON_STARMIE_2, \ + FRONTIER_MON_LANTURN_3, \ + FRONTIER_MON_WHISCASH_3, \ + FRONTIER_MON_WAILORD_3, \ + FRONTIER_MON_TENTACRUEL_3, \ + FRONTIER_MON_STARMIE_3, \ + FRONTIER_MON_LANTURN_4, \ + FRONTIER_MON_WHISCASH_4, \ + FRONTIER_MON_WAILORD_4, \ + FRONTIER_MON_TENTACRUEL_4, \ + FRONTIER_MON_STARMIE_4, \ + FRONTIER_MON_STARMIE_5, \ + FRONTIER_MON_STARMIE_6, \ + FRONTIER_MON_STARMIE_7, \ + FRONTIER_MON_STARMIE_8, \ + -1 + +#define FRONTIER_MONS_RUIN_MANIAC_4 \ + FRONTIER_MON_FORRETRESS_1, \ + FRONTIER_MON_SKARMORY_1, \ + FRONTIER_MON_GOLEM_1, \ + FRONTIER_MON_RHYDON_1, \ + FRONTIER_MON_CRADILY_1, \ + FRONTIER_MON_ARMALDO_1, \ + FRONTIER_MON_SCIZOR_1, \ + FRONTIER_MON_SHUCKLE_1, \ + FRONTIER_MON_STEELIX_1, \ + FRONTIER_MON_AERODACTYL_1, \ + FRONTIER_MON_AGGRON_1, \ + FRONTIER_MON_METAGROSS_1, \ + FRONTIER_MON_FORRETRESS_2, \ + FRONTIER_MON_SKARMORY_2, \ + FRONTIER_MON_GOLEM_2, \ + FRONTIER_MON_RHYDON_2, \ + FRONTIER_MON_CRADILY_2, \ + FRONTIER_MON_ARMALDO_2, \ + FRONTIER_MON_SCIZOR_2, \ + FRONTIER_MON_SHUCKLE_2, \ + FRONTIER_MON_STEELIX_2, \ + FRONTIER_MON_AERODACTYL_2, \ + FRONTIER_MON_AGGRON_2, \ + FRONTIER_MON_METAGROSS_2, \ + FRONTIER_MON_FORRETRESS_3, \ + FRONTIER_MON_SKARMORY_3, \ + FRONTIER_MON_GOLEM_3, \ + FRONTIER_MON_RHYDON_3, \ + FRONTIER_MON_CRADILY_3, \ + FRONTIER_MON_ARMALDO_3, \ + FRONTIER_MON_SCIZOR_3, \ + FRONTIER_MON_SHUCKLE_3, \ + FRONTIER_MON_STEELIX_3, \ + FRONTIER_MON_AERODACTYL_3, \ + FRONTIER_MON_AGGRON_3, \ + FRONTIER_MON_METAGROSS_3, \ + FRONTIER_MON_FORRETRESS_4, \ + FRONTIER_MON_SKARMORY_4, \ + FRONTIER_MON_GOLEM_4, \ + FRONTIER_MON_RHYDON_4, \ + FRONTIER_MON_CRADILY_4, \ + FRONTIER_MON_ARMALDO_4, \ + FRONTIER_MON_SCIZOR_4, \ + FRONTIER_MON_SHUCKLE_4, \ + FRONTIER_MON_STEELIX_4, \ + FRONTIER_MON_AERODACTYL_4, \ + FRONTIER_MON_AGGRON_4, \ + FRONTIER_MON_METAGROSS_4, \ + FRONTIER_MON_REGIROCK_1, \ + FRONTIER_MON_REGICE_1, \ + FRONTIER_MON_REGISTEEL_1, \ + FRONTIER_MON_REGIROCK_2, \ + FRONTIER_MON_REGICE_2, \ + FRONTIER_MON_REGISTEEL_2, \ + FRONTIER_MON_REGIROCK_3, \ + FRONTIER_MON_REGICE_3, \ + FRONTIER_MON_REGISTEEL_3, \ + FRONTIER_MON_REGIROCK_4, \ + FRONTIER_MON_REGICE_4, \ + FRONTIER_MON_REGISTEEL_4, \ + FRONTIER_MON_METAGROSS_5, \ + FRONTIER_MON_METAGROSS_6, \ + FRONTIER_MON_METAGROSS_7, \ + FRONTIER_MON_METAGROSS_8, \ + FRONTIER_MON_REGIROCK_5, \ + FRONTIER_MON_REGIROCK_6, \ + FRONTIER_MON_REGICE_5, \ + FRONTIER_MON_REGICE_6, \ + FRONTIER_MON_REGISTEEL_5, \ + FRONTIER_MON_REGISTEEL_6, \ + -1 + +#define FRONTIER_MONS_COLLECTOR_3 \ + FRONTIER_MON_VENUSAUR_1, \ + FRONTIER_MON_MEGANIUM_1, \ + FRONTIER_MON_BLASTOISE_1, \ + FRONTIER_MON_FERALIGATR_1, \ + FRONTIER_MON_BLAZIKEN_1, \ + FRONTIER_MON_SCEPTILE_1, \ + FRONTIER_MON_CHARIZARD_1, \ + FRONTIER_MON_TYPHLOSION_1, \ + FRONTIER_MON_SWAMPERT_1, \ + FRONTIER_MON_VENUSAUR_2, \ + FRONTIER_MON_MEGANIUM_2, \ + FRONTIER_MON_BLASTOISE_2, \ + FRONTIER_MON_FERALIGATR_2, \ + FRONTIER_MON_BLAZIKEN_2, \ + FRONTIER_MON_SCEPTILE_2, \ + FRONTIER_MON_CHARIZARD_2, \ + FRONTIER_MON_TYPHLOSION_2, \ + FRONTIER_MON_SWAMPERT_2, \ + FRONTIER_MON_VENUSAUR_3, \ + FRONTIER_MON_MEGANIUM_3, \ + FRONTIER_MON_BLASTOISE_3, \ + FRONTIER_MON_FERALIGATR_3, \ + FRONTIER_MON_BLAZIKEN_3, \ + FRONTIER_MON_SCEPTILE_3, \ + FRONTIER_MON_CHARIZARD_3, \ + FRONTIER_MON_TYPHLOSION_3, \ + FRONTIER_MON_SWAMPERT_3, \ + FRONTIER_MON_VENUSAUR_4, \ + FRONTIER_MON_MEGANIUM_4, \ + FRONTIER_MON_BLASTOISE_4, \ + FRONTIER_MON_FERALIGATR_4, \ + FRONTIER_MON_BLAZIKEN_4, \ + FRONTIER_MON_SCEPTILE_4, \ + FRONTIER_MON_CHARIZARD_4, \ + FRONTIER_MON_TYPHLOSION_4, \ + FRONTIER_MON_SWAMPERT_4, \ + -1 + +#define FRONTIER_MONS_GUITARIST_3A \ + FRONTIER_MON_ABSOL_2, \ + FRONTIER_MON_LANTURN_1, \ + FRONTIER_MON_RAICHU_1, \ + FRONTIER_MON_MANECTRIC_1, \ + FRONTIER_MON_ELECTRODE_1, \ + FRONTIER_MON_SHIFTRY_1, \ + FRONTIER_MON_ELECTABUZZ_1, \ + FRONTIER_MON_AMPHAROS_1, \ + FRONTIER_MON_HOUNDOOM_1, \ + FRONTIER_MON_JOLTEON_1, \ + FRONTIER_MON_UMBREON_1, \ + FRONTIER_MON_LANTURN_2, \ + FRONTIER_MON_RAICHU_2, \ + FRONTIER_MON_MANECTRIC_2, \ + FRONTIER_MON_ELECTRODE_2, \ + FRONTIER_MON_SHIFTRY_2, \ + FRONTIER_MON_ELECTABUZZ_2, \ + FRONTIER_MON_AMPHAROS_2, \ + FRONTIER_MON_HOUNDOOM_2, \ + FRONTIER_MON_JOLTEON_2, \ + FRONTIER_MON_UMBREON_2, \ + FRONTIER_MON_LANTURN_3, \ + FRONTIER_MON_RAICHU_3, \ + FRONTIER_MON_MANECTRIC_3, \ + FRONTIER_MON_ELECTRODE_3, \ + FRONTIER_MON_SHIFTRY_3, \ + FRONTIER_MON_ELECTABUZZ_3, \ + FRONTIER_MON_AMPHAROS_3, \ + FRONTIER_MON_HOUNDOOM_3, \ + FRONTIER_MON_JOLTEON_3, \ + FRONTIER_MON_UMBREON_3, \ + FRONTIER_MON_LANTURN_4, \ + FRONTIER_MON_RAICHU_4, \ + FRONTIER_MON_MANECTRIC_4, \ + FRONTIER_MON_ELECTRODE_4, \ + FRONTIER_MON_SHIFTRY_4, \ + FRONTIER_MON_ELECTABUZZ_4, \ + FRONTIER_MON_AMPHAROS_4, \ + FRONTIER_MON_HOUNDOOM_4, \ + FRONTIER_MON_JOLTEON_4, \ + FRONTIER_MON_UMBREON_4, \ + FRONTIER_MON_ARTICUNO_1, \ + FRONTIER_MON_ZAPDOS_1, \ + FRONTIER_MON_MOLTRES_1, \ + FRONTIER_MON_ARTICUNO_2, \ + FRONTIER_MON_ZAPDOS_2, \ + FRONTIER_MON_MOLTRES_2, \ + FRONTIER_MON_ARTICUNO_3, \ + FRONTIER_MON_ZAPDOS_3, \ + FRONTIER_MON_MOLTRES_3, \ + FRONTIER_MON_ARTICUNO_4, \ + FRONTIER_MON_ZAPDOS_4, \ + FRONTIER_MON_MOLTRES_4, \ + FRONTIER_MON_ARTICUNO_5, \ + FRONTIER_MON_ARTICUNO_6, \ + FRONTIER_MON_ZAPDOS_5, \ + FRONTIER_MON_ZAPDOS_6, \ + FRONTIER_MON_MOLTRES_5, \ + FRONTIER_MON_MOLTRES_6, \ + -1 + +#define FRONTIER_MONS_GUITARIST_3B \ + FRONTIER_MON_MISDREAVUS_1, \ + FRONTIER_MON_GRANBULL_1, \ + FRONTIER_MON_LANTURN_1, \ + FRONTIER_MON_ALAKAZAM_1, \ + FRONTIER_MON_ELECTABUZZ_1, \ + FRONTIER_MON_AMPHAROS_1, \ + FRONTIER_MON_STARMIE_1, \ + FRONTIER_MON_JOLTEON_1, \ + FRONTIER_MON_GYARADOS_1, \ + FRONTIER_MON_MISDREAVUS_2, \ + FRONTIER_MON_ALAKAZAM_2, \ + FRONTIER_MON_SLOWKING_2, \ + FRONTIER_MON_MILTANK_2, \ + FRONTIER_MON_AMPHAROS_2, \ + FRONTIER_MON_PORYGON2_2, \ + FRONTIER_MON_AGGRON_2, \ + FRONTIER_MON_MISDREAVUS_3, \ + FRONTIER_MON_MANECTRIC_3, \ + FRONTIER_MON_ELECTRODE_3, \ + FRONTIER_MON_PORYGON2_3, \ + FRONTIER_MON_JOLTEON_3, \ + FRONTIER_MON_RAICHU_4, \ + FRONTIER_MON_MANECTRIC_4, \ + FRONTIER_MON_ELECTRODE_4, \ + FRONTIER_MON_AMPHAROS_4, \ + FRONTIER_MON_JOLTEON_4, \ + FRONTIER_MON_REGICE_3, \ + FRONTIER_MON_REGIROCK_4, \ + FRONTIER_MON_REGICE_4, \ + FRONTIER_MON_REGISTEEL_4, \ + FRONTIER_MON_STARMIE_6, \ + FRONTIER_MON_LATIAS_5, \ + FRONTIER_MON_LATIAS_6, \ + FRONTIER_MON_LATIOS_5, \ + FRONTIER_MON_LATIOS_6, \ + -1 + +#define FRONTIER_MONS_BIRD_KEEPER_3 \ + FRONTIER_MON_PIDGEOT_2, \ + FRONTIER_MON_FEAROW_1, \ + FRONTIER_MON_DODRIO_1, \ + FRONTIER_MON_XATU_1, \ + FRONTIER_MON_SKARMORY_1, \ + FRONTIER_MON_ALTARIA_1, \ + FRONTIER_MON_AERODACTYL_1, \ + FRONTIER_MON_FLYGON_1, \ + FRONTIER_MON_CHARIZARD_1, \ + FRONTIER_MON_CROBAT_1, \ + FRONTIER_MON_GYARADOS_1, \ + FRONTIER_MON_SALAMENCE_1, \ + FRONTIER_MON_FEAROW_2, \ + FRONTIER_MON_DODRIO_2, \ + FRONTIER_MON_SKARMORY_2, \ + FRONTIER_MON_XATU_2, \ + FRONTIER_MON_ALTARIA_2, \ + FRONTIER_MON_AERODACTYL_2, \ + FRONTIER_MON_FLYGON_2, \ + FRONTIER_MON_CHARIZARD_2, \ + FRONTIER_MON_CROBAT_2, \ + FRONTIER_MON_GYARADOS_2, \ + FRONTIER_MON_SALAMENCE_2, \ + FRONTIER_MON_FEAROW_3, \ + FRONTIER_MON_DODRIO_3, \ + FRONTIER_MON_XATU_3, \ + FRONTIER_MON_SKARMORY_3, \ + FRONTIER_MON_ALTARIA_3, \ + FRONTIER_MON_AERODACTYL_3, \ + FRONTIER_MON_FLYGON_3, \ + FRONTIER_MON_CHARIZARD_3, \ + FRONTIER_MON_CROBAT_3, \ + FRONTIER_MON_GYARADOS_3, \ + FRONTIER_MON_SALAMENCE_3, \ + FRONTIER_MON_FEAROW_4, \ + FRONTIER_MON_DODRIO_4, \ + FRONTIER_MON_XATU_4, \ + FRONTIER_MON_SKARMORY_4, \ + FRONTIER_MON_ALTARIA_4, \ + FRONTIER_MON_AERODACTYL_4, \ + FRONTIER_MON_FLYGON_4, \ + FRONTIER_MON_CHARIZARD_4, \ + FRONTIER_MON_CROBAT_4, \ + FRONTIER_MON_GYARADOS_4, \ + FRONTIER_MON_SALAMENCE_4, \ + FRONTIER_MON_ARTICUNO_1, \ + FRONTIER_MON_ZAPDOS_1, \ + FRONTIER_MON_MOLTRES_1, \ + FRONTIER_MON_ARTICUNO_2, \ + FRONTIER_MON_ZAPDOS_2, \ + FRONTIER_MON_MOLTRES_2, \ + FRONTIER_MON_ARTICUNO_3, \ + FRONTIER_MON_ZAPDOS_3, \ + FRONTIER_MON_MOLTRES_3, \ + FRONTIER_MON_ARTICUNO_4, \ + FRONTIER_MON_ZAPDOS_4, \ + FRONTIER_MON_MOLTRES_4, \ + FRONTIER_MON_SALAMENCE_5, \ + FRONTIER_MON_SALAMENCE_6, \ + FRONTIER_MON_SALAMENCE_7, \ + FRONTIER_MON_SALAMENCE_8, \ + -1 + +#define FRONTIER_MONS_SAILOR_3 \ + FRONTIER_MON_MEDICHAM_1, \ + FRONTIER_MON_QUAGSIRE_1, \ + FRONTIER_MON_HARIYAMA_1, \ + FRONTIER_MON_DEWGONG_1, \ + FRONTIER_MON_LUDICOLO_1, \ + FRONTIER_MON_SLOWBRO_1, \ + FRONTIER_MON_SLOWKING_1, \ + FRONTIER_MON_GOLDUCK_1, \ + FRONTIER_MON_MACHAMP_1, \ + FRONTIER_MON_VAPOREON_1, \ + FRONTIER_MON_BLASTOISE_1, \ + FRONTIER_MON_FERALIGATR_1, \ + FRONTIER_MON_WALREIN_1, \ + FRONTIER_MON_LAPRAS_1, \ + FRONTIER_MON_SWAMPERT_1, \ + FRONTIER_MON_GYARADOS_1, \ + FRONTIER_MON_KINGDRA_1, \ + FRONTIER_MON_MILOTIC_1, \ + FRONTIER_MON_MEDICHAM_2, \ + FRONTIER_MON_QUAGSIRE_2, \ + FRONTIER_MON_HARIYAMA_2, \ + FRONTIER_MON_DEWGONG_2, \ + FRONTIER_MON_LUDICOLO_2, \ + FRONTIER_MON_SLOWBRO_2, \ + FRONTIER_MON_SLOWKING_2, \ + FRONTIER_MON_GOLDUCK_2, \ + FRONTIER_MON_MACHAMP_2, \ + FRONTIER_MON_VAPOREON_2, \ + FRONTIER_MON_BLASTOISE_2, \ + FRONTIER_MON_FERALIGATR_2, \ + FRONTIER_MON_WALREIN_2, \ + FRONTIER_MON_LAPRAS_2, \ + FRONTIER_MON_SWAMPERT_2, \ + FRONTIER_MON_GYARADOS_2, \ + FRONTIER_MON_KINGDRA_2, \ + FRONTIER_MON_MILOTIC_2, \ + FRONTIER_MON_MEDICHAM_3, \ + FRONTIER_MON_QUAGSIRE_3, \ + FRONTIER_MON_HARIYAMA_3, \ + FRONTIER_MON_DEWGONG_3, \ + FRONTIER_MON_LUDICOLO_3, \ + FRONTIER_MON_SLOWBRO_3, \ + FRONTIER_MON_SLOWKING_3, \ + FRONTIER_MON_GOLDUCK_3, \ + FRONTIER_MON_MACHAMP_3, \ + FRONTIER_MON_VAPOREON_3, \ + FRONTIER_MON_BLASTOISE_3, \ + FRONTIER_MON_FERALIGATR_3, \ + FRONTIER_MON_WALREIN_3, \ + FRONTIER_MON_LAPRAS_3, \ + FRONTIER_MON_SWAMPERT_3, \ + FRONTIER_MON_GYARADOS_3, \ + FRONTIER_MON_KINGDRA_3, \ + FRONTIER_MON_MILOTIC_3, \ + FRONTIER_MON_MEDICHAM_4, \ + FRONTIER_MON_QUAGSIRE_4, \ + FRONTIER_MON_HARIYAMA_4, \ + FRONTIER_MON_DEWGONG_4, \ + FRONTIER_MON_LUDICOLO_4, \ + FRONTIER_MON_SLOWBRO_4, \ + FRONTIER_MON_SLOWKING_4, \ + FRONTIER_MON_GOLDUCK_4, \ + FRONTIER_MON_MACHAMP_4, \ + FRONTIER_MON_VAPOREON_4, \ + FRONTIER_MON_BLASTOISE_4, \ + FRONTIER_MON_FERALIGATR_4, \ + FRONTIER_MON_WALREIN_4, \ + FRONTIER_MON_LAPRAS_4, \ + FRONTIER_MON_SWAMPERT_4, \ + FRONTIER_MON_GYARADOS_4, \ + FRONTIER_MON_KINGDRA_4, \ + FRONTIER_MON_MILOTIC_4, \ + FRONTIER_MON_MACHAMP_5, \ + FRONTIER_MON_MACHAMP_6, \ + FRONTIER_MON_MACHAMP_7, \ + FRONTIER_MON_MACHAMP_8, \ + FRONTIER_MON_LAPRAS_5, \ + FRONTIER_MON_LAPRAS_6, \ + FRONTIER_MON_LAPRAS_7, \ + FRONTIER_MON_LAPRAS_8, \ + -1 + +#define FRONTIER_MONS_HIKER_3 \ + FRONTIER_MON_DUGTRIO_1, \ + FRONTIER_MON_MAROWAK_1, \ + FRONTIER_MON_GOLEM_1, \ + FRONTIER_MON_RHYDON_1, \ + FRONTIER_MON_NIDOQUEEN_1, \ + FRONTIER_MON_NIDOKING_1, \ + FRONTIER_MON_CRADILY_1, \ + FRONTIER_MON_ARMALDO_1, \ + FRONTIER_MON_DONPHAN_1, \ + FRONTIER_MON_CLAYDOL_1, \ + FRONTIER_MON_SHUCKLE_1, \ + FRONTIER_MON_STEELIX_1, \ + FRONTIER_MON_AERODACTYL_1, \ + FRONTIER_MON_FLYGON_1, \ + FRONTIER_MON_AGGRON_1, \ + FRONTIER_MON_METAGROSS_1, \ + FRONTIER_MON_DUGTRIO_2, \ + FRONTIER_MON_MAROWAK_2, \ + FRONTIER_MON_GOLEM_2, \ + FRONTIER_MON_RHYDON_2, \ + FRONTIER_MON_NIDOQUEEN_2, \ + FRONTIER_MON_NIDOKING_2, \ + FRONTIER_MON_CRADILY_2, \ + FRONTIER_MON_ARMALDO_2, \ + FRONTIER_MON_DONPHAN_2, \ + FRONTIER_MON_CLAYDOL_2, \ + FRONTIER_MON_SHUCKLE_2, \ + FRONTIER_MON_STEELIX_2, \ + FRONTIER_MON_AERODACTYL_2, \ + FRONTIER_MON_FLYGON_2, \ + FRONTIER_MON_AGGRON_2, \ + FRONTIER_MON_METAGROSS_2, \ + FRONTIER_MON_DUGTRIO_3, \ + FRONTIER_MON_MAROWAK_3, \ + FRONTIER_MON_GOLEM_3, \ + FRONTIER_MON_RHYDON_3, \ + FRONTIER_MON_NIDOQUEEN_3, \ + FRONTIER_MON_NIDOKING_3, \ + FRONTIER_MON_CRADILY_3, \ + FRONTIER_MON_ARMALDO_3, \ + FRONTIER_MON_DONPHAN_3, \ + FRONTIER_MON_CLAYDOL_3, \ + FRONTIER_MON_SHUCKLE_3, \ + FRONTIER_MON_STEELIX_3, \ + FRONTIER_MON_AERODACTYL_3, \ + FRONTIER_MON_FLYGON_3, \ + FRONTIER_MON_AGGRON_3, \ + FRONTIER_MON_METAGROSS_3, \ + FRONTIER_MON_DUGTRIO_4, \ + FRONTIER_MON_MAROWAK_4, \ + FRONTIER_MON_GOLEM_4, \ + FRONTIER_MON_RHYDON_4, \ + FRONTIER_MON_NIDOQUEEN_4, \ + FRONTIER_MON_NIDOKING_4, \ + FRONTIER_MON_CRADILY_4, \ + FRONTIER_MON_ARMALDO_4, \ + FRONTIER_MON_DONPHAN_4, \ + FRONTIER_MON_CLAYDOL_4, \ + FRONTIER_MON_SHUCKLE_4, \ + FRONTIER_MON_STEELIX_4, \ + FRONTIER_MON_AERODACTYL_4, \ + FRONTIER_MON_FLYGON_4, \ + FRONTIER_MON_AGGRON_4, \ + FRONTIER_MON_METAGROSS_4, \ + FRONTIER_MON_METAGROSS_5, \ + FRONTIER_MON_METAGROSS_6, \ + FRONTIER_MON_METAGROSS_7, \ + FRONTIER_MON_METAGROSS_8, \ + FRONTIER_MON_TYRANITAR_1, \ + FRONTIER_MON_TYRANITAR_2, \ + FRONTIER_MON_TYRANITAR_3, \ + FRONTIER_MON_TYRANITAR_4, \ + FRONTIER_MON_TYRANITAR_5, \ + FRONTIER_MON_TYRANITAR_6, \ + FRONTIER_MON_TYRANITAR_7, \ + FRONTIER_MON_TYRANITAR_8, \ + FRONTIER_MON_TYRANITAR_9, \ + FRONTIER_MON_TYRANITAR_10, \ + -1 + +#define FRONTIER_MONS_KINDLER_3 \ + FRONTIER_MON_MISDREAVUS_1, \ + FRONTIER_MON_DUSCLOPS_1, \ + FRONTIER_MON_MAGMAR_1, \ + FRONTIER_MON_RAPIDASH_1, \ + FRONTIER_MON_GENGAR_1, \ + FRONTIER_MON_HOUNDOOM_1, \ + FRONTIER_MON_NINETALES_1, \ + FRONTIER_MON_FLAREON_1, \ + FRONTIER_MON_BLAZIKEN_1, \ + FRONTIER_MON_CHARIZARD_1, \ + FRONTIER_MON_TYPHLOSION_1, \ + FRONTIER_MON_ARCANINE_1, \ + FRONTIER_MON_MISDREAVUS_2, \ + FRONTIER_MON_DUSCLOPS_2, \ + FRONTIER_MON_MAGMAR_2, \ + FRONTIER_MON_RAPIDASH_2, \ + FRONTIER_MON_GENGAR_2, \ + FRONTIER_MON_HOUNDOOM_2, \ + FRONTIER_MON_NINETALES_2, \ + FRONTIER_MON_FLAREON_2, \ + FRONTIER_MON_BLAZIKEN_2, \ + FRONTIER_MON_CHARIZARD_2, \ + FRONTIER_MON_TYPHLOSION_2, \ + FRONTIER_MON_ARCANINE_2, \ + FRONTIER_MON_MISDREAVUS_3, \ + FRONTIER_MON_DUSCLOPS_3, \ + FRONTIER_MON_MAGMAR_3, \ + FRONTIER_MON_RAPIDASH_3, \ + FRONTIER_MON_GENGAR_3, \ + FRONTIER_MON_HOUNDOOM_3, \ + FRONTIER_MON_NINETALES_3, \ + FRONTIER_MON_FLAREON_3, \ + FRONTIER_MON_BLAZIKEN_3, \ + FRONTIER_MON_CHARIZARD_3, \ + FRONTIER_MON_TYPHLOSION_3, \ + FRONTIER_MON_ARCANINE_3, \ + FRONTIER_MON_MISDREAVUS_4, \ + FRONTIER_MON_DUSCLOPS_4, \ + FRONTIER_MON_MAGMAR_4, \ + FRONTIER_MON_RAPIDASH_4, \ + FRONTIER_MON_GENGAR_4, \ + FRONTIER_MON_HOUNDOOM_4, \ + FRONTIER_MON_NINETALES_4, \ + FRONTIER_MON_FLAREON_4, \ + FRONTIER_MON_BLAZIKEN_4, \ + FRONTIER_MON_CHARIZARD_4, \ + FRONTIER_MON_TYPHLOSION_4, \ + FRONTIER_MON_ARCANINE_4, \ + FRONTIER_MON_GENGAR_5, \ + FRONTIER_MON_GENGAR_6, \ + FRONTIER_MON_GENGAR_7, \ + FRONTIER_MON_GENGAR_8, \ + FRONTIER_MON_DRAGONITE_1, \ + FRONTIER_MON_DRAGONITE_2, \ + FRONTIER_MON_DRAGONITE_3, \ + FRONTIER_MON_DRAGONITE_4, \ + FRONTIER_MON_DRAGONITE_5, \ + FRONTIER_MON_DRAGONITE_6, \ + FRONTIER_MON_DRAGONITE_7, \ + FRONTIER_MON_DRAGONITE_8, \ + FRONTIER_MON_DRAGONITE_9, \ + FRONTIER_MON_DRAGONITE_10, \ + -1 + +#define FRONTIER_MONS_PARASOL_LADY_3 \ + FRONTIER_MON_GLALIE_1, \ + FRONTIER_MON_LUDICOLO_1, \ + FRONTIER_MON_SLOWBRO_1, \ + FRONTIER_MON_AMPHAROS_1, \ + FRONTIER_MON_EXEGGUTOR_1, \ + FRONTIER_MON_VENUSAUR_1, \ + FRONTIER_MON_MEGANIUM_1, \ + FRONTIER_MON_BLASTOISE_1, \ + FRONTIER_MON_FERALIGATR_1, \ + FRONTIER_MON_BLAZIKEN_1, \ + FRONTIER_MON_WALREIN_1, \ + FRONTIER_MON_CHARIZARD_1, \ + FRONTIER_MON_TYPHLOSION_1, \ + FRONTIER_MON_MANECTRIC_2, \ + FRONTIER_MON_ELECTRODE_2, \ + FRONTIER_MON_EXPLOUD_2, \ + FRONTIER_MON_ELECTABUZZ_2, \ + FRONTIER_MON_NINETALES_2, \ + FRONTIER_MON_PORYGON2_2, \ + FRONTIER_MON_STARMIE_2, \ + FRONTIER_MON_FLYGON_2, \ + FRONTIER_MON_ARCANINE_2, \ + FRONTIER_MON_LANTURN_3, \ + FRONTIER_MON_RAICHU_3, \ + FRONTIER_MON_SHIFTRY_3, \ + FRONTIER_MON_LUDICOLO_3, \ + FRONTIER_MON_CRADILY_3, \ + FRONTIER_MON_RAPIDASH_3, \ + FRONTIER_MON_CLAYDOL_3, \ + FRONTIER_MON_GYARADOS_3, \ + FRONTIER_MON_VILEPLUME_4, \ + FRONTIER_MON_LUDICOLO_4, \ + FRONTIER_MON_HOUNDOOM_4, \ + FRONTIER_MON_VENUSAUR_4, \ + FRONTIER_MON_FLAREON_4, \ + -1 + +// Only used by one Beauty +#define FRONTIER_MONS_EEVEELUTIONS \ + FRONTIER_MON_VAPOREON_1, \ + FRONTIER_MON_JOLTEON_1, \ + FRONTIER_MON_FLAREON_1, \ + FRONTIER_MON_ESPEON_1, \ + FRONTIER_MON_UMBREON_1, \ + FRONTIER_MON_VAPOREON_2, \ + FRONTIER_MON_JOLTEON_2, \ + FRONTIER_MON_FLAREON_2, \ + FRONTIER_MON_ESPEON_2, \ + FRONTIER_MON_UMBREON_2, \ + FRONTIER_MON_VAPOREON_3, \ + FRONTIER_MON_JOLTEON_3, \ + FRONTIER_MON_FLAREON_3, \ + FRONTIER_MON_ESPEON_3, \ + FRONTIER_MON_UMBREON_3, \ + FRONTIER_MON_VAPOREON_4, \ + FRONTIER_MON_JOLTEON_4, \ + FRONTIER_MON_FLAREON_4, \ + FRONTIER_MON_ESPEON_4, \ + FRONTIER_MON_UMBREON_4, \ + -1 + +#define FRONTIER_MONS_BEAUTY_2 \ + FRONTIER_MON_JYNX_1, \ + FRONTIER_MON_LANTURN_1, \ + FRONTIER_MON_SLOWKING_1, \ + FRONTIER_MON_GENGAR_1, \ + FRONTIER_MON_AMPHAROS_1, \ + FRONTIER_MON_JOLTEON_1, \ + FRONTIER_MON_LAPRAS_1, \ + FRONTIER_MON_SNORLAX_1, \ + FRONTIER_MON_KINGDRA_1, \ + FRONTIER_MON_QUAGSIRE_2, \ + FRONTIER_MON_MISDREAVUS_2, \ + FRONTIER_MON_FEAROW_2, \ + FRONTIER_MON_XATU_2, \ + FRONTIER_MON_VICTREEBEL_2, \ + FRONTIER_MON_KANGASKHAN_2, \ + FRONTIER_MON_ELECTABUZZ_2, \ + FRONTIER_MON_MILTANK_2, \ + FRONTIER_MON_ALTARIA_2, \ + FRONTIER_MON_RAPIDASH_2, \ + FRONTIER_MON_HERACROSS_2, \ + FRONTIER_MON_FLAREON_2, \ + FRONTIER_MON_SCEPTILE_2, \ + FRONTIER_MON_JYNX_3, \ + FRONTIER_MON_BRELOOM_3, \ + FRONTIER_MON_RAICHU_3, \ + FRONTIER_MON_VILEPLUME_3, \ + FRONTIER_MON_SLOWBRO_3, \ + FRONTIER_MON_NINETALES_3, \ + FRONTIER_MON_SHUCKLE_3, \ + FRONTIER_MON_UMBREON_3, \ + FRONTIER_MON_WALREIN_3, \ + FRONTIER_MON_MILOTIC_3, \ + FRONTIER_MON_ESPEON_4, \ + FRONTIER_MON_URSARING_5, \ + FRONTIER_MON_MACHAMP_7, \ + FRONTIER_MON_GARDEVOIR_8, \ + FRONTIER_MON_LAPRAS_8, \ + FRONTIER_MON_SALAMENCE_8, \ + FRONTIER_MON_LATIAS_6, \ + -1 + +#define FRONTIER_MONS_AROMA_LADY_3 \ + FRONTIER_MON_WOBBUFFET_1, \ + FRONTIER_MON_WOBBUFFET_2, \ + FRONTIER_MON_SUNFLORA_2, \ + FRONTIER_MON_JUMPLUFF_2, \ + FRONTIER_MON_TROPIUS_2, \ + FRONTIER_MON_CACTURNE_2, \ + FRONTIER_MON_BELLOSSOM_2, \ + FRONTIER_MON_JYNX_1, \ + FRONTIER_MON_MR_MIME_1, \ + FRONTIER_MON_BRELOOM_1, \ + FRONTIER_MON_XATU_1, \ + FRONTIER_MON_VILEPLUME_1, \ + FRONTIER_MON_VICTREEBEL_1, \ + FRONTIER_MON_SHIFTRY_1, \ + FRONTIER_MON_LUDICOLO_1, \ + FRONTIER_MON_HYPNO_1, \ + FRONTIER_MON_ALAKAZAM_1, \ + FRONTIER_MON_SLOWBRO_1, \ + FRONTIER_MON_SLOWKING_1, \ + FRONTIER_MON_CRADILY_1, \ + FRONTIER_MON_GARDEVOIR_1, \ + FRONTIER_MON_EXEGGUTOR_1, \ + FRONTIER_MON_STARMIE_1, \ + FRONTIER_MON_VENUSAUR_1, \ + FRONTIER_MON_MEGANIUM_1, \ + FRONTIER_MON_ESPEON_1, \ + FRONTIER_MON_SCEPTILE_1, \ + FRONTIER_MON_JYNX_2, \ + FRONTIER_MON_MR_MIME_2, \ + FRONTIER_MON_BRELOOM_2, \ + FRONTIER_MON_XATU_2, \ + FRONTIER_MON_VILEPLUME_2, \ + FRONTIER_MON_VICTREEBEL_2, \ + FRONTIER_MON_SHIFTRY_2, \ + FRONTIER_MON_LUDICOLO_2, \ + FRONTIER_MON_HYPNO_2, \ + FRONTIER_MON_ALAKAZAM_2, \ + FRONTIER_MON_SLOWBRO_2, \ + FRONTIER_MON_SLOWKING_2, \ + FRONTIER_MON_CRADILY_2, \ + FRONTIER_MON_GARDEVOIR_2, \ + FRONTIER_MON_EXEGGUTOR_2, \ + FRONTIER_MON_STARMIE_2, \ + FRONTIER_MON_VENUSAUR_2, \ + FRONTIER_MON_MEGANIUM_2, \ + FRONTIER_MON_ESPEON_2, \ + FRONTIER_MON_SCEPTILE_2, \ + FRONTIER_MON_JYNX_3, \ + FRONTIER_MON_MR_MIME_3, \ + FRONTIER_MON_BRELOOM_3, \ + FRONTIER_MON_XATU_3, \ + FRONTIER_MON_VILEPLUME_3, \ + FRONTIER_MON_VICTREEBEL_3, \ + FRONTIER_MON_SHIFTRY_3, \ + FRONTIER_MON_LUDICOLO_3, \ + FRONTIER_MON_HYPNO_3, \ + FRONTIER_MON_ALAKAZAM_3, \ + FRONTIER_MON_SLOWBRO_3, \ + FRONTIER_MON_SLOWKING_3, \ + FRONTIER_MON_CRADILY_3, \ + FRONTIER_MON_GARDEVOIR_3, \ + FRONTIER_MON_EXEGGUTOR_3, \ + FRONTIER_MON_STARMIE_3, \ + FRONTIER_MON_VENUSAUR_3, \ + FRONTIER_MON_MEGANIUM_3, \ + FRONTIER_MON_ESPEON_3, \ + FRONTIER_MON_SCEPTILE_3, \ + FRONTIER_MON_JYNX_4, \ + FRONTIER_MON_MR_MIME_4, \ + FRONTIER_MON_BRELOOM_4, \ + FRONTIER_MON_XATU_4, \ + FRONTIER_MON_VILEPLUME_4, \ + FRONTIER_MON_VICTREEBEL_4, \ + FRONTIER_MON_SHIFTRY_4, \ + FRONTIER_MON_LUDICOLO_4, \ + FRONTIER_MON_HYPNO_4, \ + FRONTIER_MON_ALAKAZAM_4, \ + FRONTIER_MON_SLOWBRO_4, \ + FRONTIER_MON_SLOWKING_4, \ + FRONTIER_MON_CRADILY_4, \ + FRONTIER_MON_GARDEVOIR_4, \ + FRONTIER_MON_EXEGGUTOR_4, \ + FRONTIER_MON_STARMIE_4, \ + FRONTIER_MON_VENUSAUR_4, \ + FRONTIER_MON_MEGANIUM_4, \ + FRONTIER_MON_ESPEON_4, \ + FRONTIER_MON_SCEPTILE_4, \ + FRONTIER_MON_GARDEVOIR_5, \ + FRONTIER_MON_GARDEVOIR_6, \ + FRONTIER_MON_GARDEVOIR_7, \ + FRONTIER_MON_GARDEVOIR_8, \ + FRONTIER_MON_STARMIE_5, \ + FRONTIER_MON_STARMIE_6, \ + FRONTIER_MON_STARMIE_7, \ + FRONTIER_MON_STARMIE_8, \ + -1 + const u16 gBattleFrontierTrainerMons_Brady[] = { - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 10, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - -1 + FRONTIER_MONS_YOUNGSTER_LASS_1 }; const u16 gBattleFrontierTrainerMons_Conner[] = { - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 10, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - -1 + FRONTIER_MONS_YOUNGSTER_LASS_1 }; const u16 gBattleFrontierTrainerMons_Bradley[] = { - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 10, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - -1 + FRONTIER_MONS_YOUNGSTER_LASS_1 }; const u16 gBattleFrontierTrainerMons_Cybil[] = { - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 10, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - -1 + FRONTIER_MONS_YOUNGSTER_LASS_1 }; const u16 gBattleFrontierTrainerMons_Rodette[] = { - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 10, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - -1 + FRONTIER_MONS_YOUNGSTER_LASS_1 }; const u16 gBattleFrontierTrainerMons_Peggy[] = { - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 10, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - -1 + FRONTIER_MONS_YOUNGSTER_LASS_1 }; const u16 gBattleFrontierTrainerMons_Keith[] = { - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - -1 + FRONTIER_MONS_SCHOOL_KID_1 }; const u16 gBattleFrontierTrainerMons_Grayson[] = { - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - -1 + FRONTIER_MONS_SCHOOL_KID_1 }; const u16 gBattleFrontierTrainerMons_Glenn[] = { - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - -1 + FRONTIER_MONS_SCHOOL_KID_1 }; const u16 gBattleFrontierTrainerMons_Liliana[] = { - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - -1 + FRONTIER_MONS_SCHOOL_KID_1 }; const u16 gBattleFrontierTrainerMons_Elise[] = { - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - -1 + FRONTIER_MONS_SCHOOL_KID_1 }; const u16 gBattleFrontierTrainerMons_Zoey[] = { - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - -1 + FRONTIER_MONS_SCHOOL_KID_1 }; const u16 gBattleFrontierTrainerMons_Manuel[] = { - 5, - 20, - 21, - 25, - 27, - 35, - 46, - 47, - 48, - 50, - 53, - 62, - 63, - 69, - 75, - 78, - 79, - 80, - 84, - 90, - 92, - 99, - 100, - 102, - 106, - 110, - 112, - 114, - 119, - 121, - 124, - 127, - 146, - 147, - 154, - 158, - 160, - -1 + FRONTIER_MONS_RICH_BOY_LADY_1 }; const u16 gBattleFrontierTrainerMons_Russ[] = { - 5, - 20, - 21, - 25, - 27, - 35, - 46, - 47, - 48, - 50, - 53, - 62, - 63, - 69, - 75, - 78, - 79, - 80, - 84, - 90, - 92, - 99, - 100, - 102, - 106, - 110, - 112, - 114, - 119, - 121, - 124, - 127, - 146, - 147, - 154, - 158, - 160, - -1 + FRONTIER_MONS_RICH_BOY_LADY_1 }; const u16 gBattleFrontierTrainerMons_Dustin[] = { - 5, - 20, - 21, - 25, - 27, - 35, - 46, - 47, - 48, - 50, - 53, - 62, - 63, - 69, - 75, - 78, - 79, - 80, - 84, - 90, - 92, - 99, - 100, - 102, - 106, - 110, - 112, - 114, - 119, - 121, - 124, - 127, - 146, - 147, - 154, - 158, - 160, - -1 + FRONTIER_MONS_RICH_BOY_LADY_1 }; const u16 gBattleFrontierTrainerMons_Tina[] = { - 5, - 20, - 21, - 25, - 27, - 35, - 46, - 47, - 48, - 50, - 53, - 62, - 63, - 69, - 75, - 78, - 79, - 80, - 84, - 90, - 92, - 99, - 100, - 102, - 106, - 110, - 112, - 114, - 119, - 121, - 124, - 127, - 146, - 147, - 154, - 158, - 160, - -1 + FRONTIER_MONS_RICH_BOY_LADY_1 }; const u16 gBattleFrontierTrainerMons_Gillian[] = { - 5, - 20, - 21, - 25, - 27, - 35, - 46, - 47, - 48, - 50, - 53, - 62, - 63, - 69, - 75, - 78, - 79, - 80, - 84, - 90, - 92, - 99, - 100, - 102, - 106, - 110, - 112, - 114, - 119, - 121, - 124, - 127, - 146, - 147, - 154, - 158, - 160, - -1 + FRONTIER_MONS_RICH_BOY_LADY_1 }; const u16 gBattleFrontierTrainerMons_Zoe[] = { - 5, - 20, - 21, - 25, - 27, - 35, - 46, - 47, - 48, - 50, - 53, - 62, - 63, - 69, - 75, - 78, - 79, - 80, - 84, - 90, - 92, - 99, - 100, - 102, - 106, - 110, - 112, - 114, - 119, - 121, - 124, - 127, - 146, - 147, - 154, - 158, - 160, - -1 + FRONTIER_MONS_RICH_BOY_LADY_1 }; const u16 gBattleFrontierTrainerMons_Chen[] = { - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - -1 + FRONTIER_MONS_CAMPER_PICNICKER_1 }; const u16 gBattleFrontierTrainerMons_Al[] = { - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - -1 + FRONTIER_MONS_CAMPER_PICNICKER_1 }; const u16 gBattleFrontierTrainerMons_Mitch[] = { - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - -1 + FRONTIER_MONS_CAMPER_PICNICKER_1 }; const u16 gBattleFrontierTrainerMons_Anne[] = { - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - -1 + FRONTIER_MONS_CAMPER_PICNICKER_1 }; const u16 gBattleFrontierTrainerMons_Alize[] = { - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - -1 + FRONTIER_MONS_CAMPER_PICNICKER_1 }; const u16 gBattleFrontierTrainerMons_Lauren[] = { - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - -1 + FRONTIER_MONS_CAMPER_PICNICKER_1 }; const u16 gBattleFrontierTrainerMons_Kipp[] = { - 5, - 6, - 7, - 14, - 19, - 28, - 35, - 42, - 45, - 48, - 50, - 55, - 59, - 60, - 68, - 73, - 83, - 84, - 86, - 87, - 90, - 96, - 97, - 98, - 99, - 103, - 105, - 106, - 109, - 112, - 114, - 121, - -1 + FRONTIER_MONS_TUBER_1 }; const u16 gBattleFrontierTrainerMons_Jason[] = { - 5, - 6, - 7, - 14, - 19, - 28, - 35, - 42, - 45, - 48, - 50, - 55, - 59, - 60, - 68, - 73, - 83, - 84, - 86, - 87, - 90, - 96, - 97, - 98, - 99, - 103, - 105, - 106, - 109, - 112, - 114, - 121, - -1 + FRONTIER_MONS_TUBER_1 }; const u16 gBattleFrontierTrainerMons_John[] = { - 5, - 6, - 7, - 14, - 19, - 28, - 35, - 42, - 45, - 48, - 50, - 55, - 59, - 60, - 68, - 73, - 83, - 84, - 86, - 87, - 90, - 96, - 97, - 98, - 99, - 103, - 105, - 106, - 109, - 112, - 114, - 121, - -1 + FRONTIER_MONS_TUBER_1 }; const u16 gBattleFrontierTrainerMons_Ann[] = { - 5, - 6, - 7, - 14, - 19, - 28, - 35, - 42, - 45, - 48, - 50, - 55, - 59, - 60, - 68, - 73, - 83, - 84, - 86, - 87, - 90, - 96, - 97, - 98, - 99, - 103, - 105, - 106, - 109, - 112, - 114, - 121, - -1 + FRONTIER_MONS_TUBER_1 }; const u16 gBattleFrontierTrainerMons_Eileen[] = { - 5, - 6, - 7, - 14, - 19, - 28, - 35, - 42, - 45, - 48, - 50, - 55, - 59, - 60, - 68, - 73, - 83, - 84, - 86, - 87, - 90, - 96, - 97, - 98, - 99, - 103, - 105, - 106, - 109, - 112, - 114, - 121, - -1 + FRONTIER_MONS_TUBER_1 }; const u16 gBattleFrontierTrainerMons_Carlie[] = { - 5, - 6, - 7, - 14, - 19, - 28, - 35, - 42, - 45, - 48, - 50, - 55, - 59, - 60, - 68, - 73, - 83, - 84, - 86, - 87, - 90, - 96, - 97, - 98, - 99, - 103, - 105, - 106, - 109, - 112, - 114, - 121, - -1 + FRONTIER_MONS_TUBER_1 }; const u16 gBattleFrontierTrainerMons_Gordon[] = { - 1, - 13, - 15, - 16, - 17, - 22, - 23, - 24, - 26, - 32, - 34, - 36, - 43, - 50, - 51, - 54, - 56, - 68, - 72, - 73, - 81, - 82, - 83, - 86, - 87, - 96, - 97, - 98, - 99, - 103, - 105, - 107, - 109, - 111, - 113, - 116, - 117, - 123, - 124, - 128, - 131, - 134, - 138, - 139, - 142, - 144, - 145, - 151, - 152, - 155, - -1 + FRONTIER_MONS_SWIMMER_M_1 }; const u16 gBattleFrontierTrainerMons_Ayden[] = { - 1, - 13, - 15, - 16, - 17, - 22, - 23, - 24, - 26, - 32, - 34, - 36, - 43, - 50, - 51, - 54, - 56, - 68, - 72, - 73, - 81, - 82, - 83, - 86, - 87, - 96, - 97, - 98, - 99, - 103, - 105, - 107, - 109, - 111, - 113, - 116, - 117, - 123, - 124, - 128, - 131, - 134, - 138, - 139, - 142, - 144, - 145, - 151, - 152, - 155, - -1 + FRONTIER_MONS_SWIMMER_M_1 }; const u16 gBattleFrontierTrainerMons_Marco[] = { - 1, - 13, - 15, - 16, - 17, - 22, - 23, - 24, - 26, - 32, - 34, - 36, - 43, - 50, - 51, - 54, - 56, - 68, - 72, - 73, - 81, - 82, - 83, - 86, - 87, - 96, - 97, - 98, - 99, - 103, - 105, - 107, - 109, - 111, - 113, - 116, - 117, - 123, - 124, - 128, - 131, - 134, - 138, - 139, - 142, - 144, - 145, - 151, - 152, - 155, - -1 + FRONTIER_MONS_SWIMMER_M_1 }; const u16 gBattleFrontierTrainerMons_Cierra[] = { - 1, - 13, - 16, - 17, - 23, - 24, - 26, - 32, - 34, - 36, - 43, - 51, - 54, - 56, - 68, - 72, - 73, - 76, - 83, - 84, - 86, - 87, - 96, - 97, - 98, - 99, - 103, - 105, - 107, - 109, - 111, - 113, - 116, - 117, - 118, - 123, - 124, - 128, - 131, - 134, - 138, - 139, - 142, - 144, - 145, - 151, - 155, - -1 + FRONTIER_MONS_SWIMMER_F_1 }; const u16 gBattleFrontierTrainerMons_Marcy[] = { - 1, - 13, - 16, - 17, - 23, - 24, - 26, - 32, - 34, - 36, - 43, - 51, - 54, - 56, - 68, - 72, - 73, - 76, - 83, - 84, - 86, - 87, - 96, - 97, - 98, - 99, - 103, - 105, - 107, - 109, - 111, - 113, - 116, - 117, - 118, - 123, - 124, - 128, - 131, - 134, - 138, - 139, - 142, - 144, - 145, - 151, - 155, - -1 + FRONTIER_MONS_SWIMMER_F_1 }; const u16 gBattleFrontierTrainerMons_Kathy[] = { - 1, - 13, - 16, - 17, - 23, - 24, - 26, - 32, - 34, - 36, - 43, - 51, - 54, - 56, - 68, - 72, - 73, - 76, - 83, - 84, - 86, - 87, - 96, - 97, - 98, - 99, - 103, - 105, - 107, - 109, - 111, - 113, - 116, - 117, - 118, - 123, - 124, - 128, - 131, - 134, - 138, - 139, - 142, - 144, - 145, - 151, - 155, - -1 + FRONTIER_MONS_SWIMMER_F_1 }; const u16 gBattleFrontierTrainerMons_Peyton[] = { - 84, - 85, - 87, - 88, - 89, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 105, - 106, - 107, - 109, - 112, - 113, - 117, - 120, - 121, - 123, - 129, - 134, - 142, - 143, - 145, - 148, - 149, - 151, - 152, - 155, - -1 + FRONTIER_MONS_POKEFAN_M_1 }; const u16 gBattleFrontierTrainerMons_Julian[] = { - 84, - 85, - 87, - 88, - 89, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 105, - 106, - 107, - 109, - 112, - 113, - 117, - 120, - 121, - 123, - 129, - 134, - 142, - 143, - 145, - 148, - 149, - 151, - 152, - 155, - -1 + FRONTIER_MONS_POKEFAN_M_1 }; const u16 gBattleFrontierTrainerMons_Quinn[] = { - 84, - 85, - 87, - 88, - 89, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 105, - 106, - 107, - 109, - 112, - 113, - 117, - 120, - 121, - 123, - 129, - 134, - 142, - 143, - 145, - 148, - 149, - 151, - 152, - 155, - -1 + FRONTIER_MONS_POKEFAN_M_1 }; const u16 gBattleFrontierTrainerMons_Haylee[] = { - 1, - 5, - 6, - 10, - 13, - 14, - 16, - 17, - 18, - 19, - 20, - 23, - 24, - 26, - 28, - 29, - 31, - 32, - 33, - 34, - 35, - 36, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 54, - 56, - 59, - 61, - 65, - 66, - 67, - 68, - 71, - 72, - 79, - -1 + FRONTIER_MONS_POKEFAN_F_1 }; const u16 gBattleFrontierTrainerMons_Amanda[] = { - 1, - 5, - 6, - 10, - 13, - 14, - 16, - 17, - 18, - 19, - 20, - 23, - 24, - 26, - 28, - 29, - 31, - 32, - 33, - 34, - 35, - 36, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 54, - 56, - 59, - 61, - 65, - 66, - 67, - 68, - 71, - 72, - 79, - -1 + FRONTIER_MONS_POKEFAN_F_1 }; const u16 gBattleFrontierTrainerMons_Stacy[] = { - 1, - 5, - 6, - 10, - 13, - 14, - 16, - 17, - 18, - 19, - 20, - 23, - 24, - 26, - 28, - 29, - 31, - 32, - 33, - 34, - 35, - 36, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 54, - 56, - 59, - 61, - 65, - 66, - 67, - 68, - 71, - 72, - 79, - -1 + FRONTIER_MONS_POKEFAN_F_1 }; +// The below 6 are the early Pkmn Breeder class trainers, which use groups from other general classes const u16 gBattleFrontierTrainerMons_Rafael[] = { - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 10, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - -1 + FRONTIER_MONS_YOUNGSTER_LASS_1 }; const u16 gBattleFrontierTrainerMons_Oliver[] = { - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - -1 + FRONTIER_MONS_SCHOOL_KID_1 }; const u16 gBattleFrontierTrainerMons_Payton[] = { - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - -1 + FRONTIER_MONS_CAMPER_PICNICKER_1 }; const u16 gBattleFrontierTrainerMons_Pamela[] = { - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 10, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - -1 + FRONTIER_MONS_YOUNGSTER_LASS_1 }; const u16 gBattleFrontierTrainerMons_Eliza[] = { - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - -1 + FRONTIER_MONS_SCHOOL_KID_1 }; const u16 gBattleFrontierTrainerMons_Marisa[] = { - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - -1 + FRONTIER_MONS_CAMPER_PICNICKER_1 }; const u16 gBattleFrontierTrainerMons_Lewis[] = { - 2, - 3, - 4, - 8, - 9, - 21, - 27, - 39, - 40, - 41, - 42, - 52, - 57, - 58, - 80, - 112, - 132, - 141, - 153, - 154, - 157, - 158, - 159, - 160, - 161, - -1 + FRONTIER_MONS_BUG_CATCHER_1_EXTRA(METAPOD, KAKUNA) }; const u16 gBattleFrontierTrainerMons_Yoshi[] = { - 2, - 3, - 4, - 11, - 12, - 21, - 27, - 39, - 40, - 41, - 42, - 52, - 57, - 58, - 80, - 112, - 132, - 141, - 153, - 154, - 157, - 158, - 159, - 160, - 161, - -1 + FRONTIER_MONS_BUG_CATCHER_1_EXTRA(SILCOON, CASCOON) }; const u16 gBattleFrontierTrainerMons_Destin[] = { - 2, - 3, - 4, - 21, - 27, - 39, - 40, - 41, - 42, - 52, - 57, - 58, - 80, - 112, - 132, - 141, - 153, - 154, - 157, - 158, - 159, - 160, - 161, - -1 + FRONTIER_MONS_BUG_CATCHER_1 }; const u16 gBattleFrontierTrainerMons_Keon[] = { - 5, - 21, - 25, - 27, - 35, - 39, - 40, - 41, - 42, - 46, - 47, - 48, - 50, - 52, - 53, - 57, - 58, - 62, - 63, - 69, - 75, - 78, - 79, - 80, - 84, - 90, - 92, - 99, - 100, - 102, - 106, - 110, - 112, - 114, - 121, - 124, - 127, - 132, - 141, - 146, - 147, - 153, - 154, - 157, - 158, - 159, - 160, - 161, - -1 + FRONTIER_MONS_NINJA_BOY_1 }; const u16 gBattleFrontierTrainerMons_Stuart[] = { - 5, - 21, - 25, - 27, - 35, - 39, - 40, - 41, - 42, - 46, - 47, - 48, - 50, - 52, - 53, - 57, - 58, - 62, - 63, - 69, - 75, - 78, - 79, - 80, - 84, - 90, - 92, - 99, - 100, - 102, - 106, - 110, - 112, - 114, - 121, - 124, - 127, - 132, - 141, - 146, - 147, - 153, - 154, - 157, - 158, - 159, - 160, - 161, - -1 + FRONTIER_MONS_NINJA_BOY_1 }; const u16 gBattleFrontierTrainerMons_Nestor[] = { - 5, - 21, - 25, - 27, - 35, - 39, - 40, - 41, - 42, - 46, - 47, - 48, - 50, - 52, - 53, - 57, - 58, - 62, - 63, - 69, - 75, - 78, - 79, - 80, - 84, - 90, - 92, - 99, - 100, - 102, - 106, - 110, - 112, - 114, - 121, - 124, - 127, - 132, - 141, - 146, - 147, - 153, - 154, - 157, - 158, - 159, - 160, - 161, - -1 + FRONTIER_MONS_NINJA_BOY_1 }; const u16 gBattleFrontierTrainerMons_Derrick[] = { - 21, - 27, - 29, - 39, - 40, - 41, - 42, - 52, - 57, - 58, - 61, - 62, - 63, - 69, - 80, - 92, - 102, - 112, - 125, - 129, - 132, - 140, - 141, - 153, - 154, - 157, - 158, - 159, - 160, - 161, - -1 + FRONTIER_MONS_BUG_MANIAC_1 }; const u16 gBattleFrontierTrainerMons_Bryson[] = { - 21, - 27, - 29, - 39, - 40, - 41, - 42, - 52, - 57, - 58, - 61, - 62, - 63, - 69, - 80, - 92, - 102, - 112, - 125, - 129, - 132, - 140, - 141, - 153, - 154, - 157, - 158, - 159, - 160, - 161, - -1 + FRONTIER_MONS_BUG_MANIAC_1 }; const u16 gBattleFrontierTrainerMons_Clayton[] = { - 21, - 27, - 29, - 39, - 40, - 41, - 42, - 52, - 57, - 58, - 61, - 62, - 63, - 69, - 80, - 92, - 102, - 112, - 125, - 129, - 132, - 140, - 141, - 153, - 154, - 157, - 158, - 159, - 160, - 161, - -1 + FRONTIER_MONS_BUG_MANIAC_1 }; const u16 gBattleFrontierTrainerMons_Trenton[] = { - 6, - 7, - 55, - 60, - 68, - 73, - 83, - 86, - 87, - 105, - 111, - 116, - 123, - 124, - 128, - 134, - 138, - 139, - 151, - -1 + FRONTIER_MONS_FISHERMAN_1 }; const u16 gBattleFrontierTrainerMons_Jenson[] = { - 6, - 7, - 55, - 60, - 68, - 73, - 83, - 86, - 87, - 105, - 111, - 116, - 123, - 124, - 128, - 134, - 138, - 139, - 151, - -1 + FRONTIER_MONS_FISHERMAN_1 }; const u16 gBattleFrontierTrainerMons_Wesley[] = { - 6, - 7, - 55, - 60, - 68, - 73, - 83, - 86, - 87, - 105, - 111, - 116, - 123, - 124, - 128, - 134, - 138, - 139, - 151, - -1 + FRONTIER_MONS_FISHERMAN_1 }; const u16 gBattleFrontierTrainerMons_Anton[] = { - 31, - 39, - 58, - 67, - 70, - 74, - 75, - 78, - 85, - 104, - 108, - 120, - 122, - 133, - 138, - 139, - 140, - 141, - 150, - 151, - 152, - 156, - -1 + FRONTIER_MONS_RUIN_MANIAC_1 }; const u16 gBattleFrontierTrainerMons_Lawson[] = { - 31, - 39, - 58, - 67, - 70, - 74, - 75, - 78, - 85, - 104, - 108, - 120, - 122, - 133, - 138, - 139, - 140, - 141, - 150, - 151, - 152, - 156, - -1 + FRONTIER_MONS_RUIN_MANIAC_1 }; const u16 gBattleFrontierTrainerMons_Sammy[] = { - 31, - 39, - 58, - 67, - 70, - 74, - 75, - 78, - 85, - 104, - 108, - 120, - 122, - 133, - 138, - 139, - 140, - 141, - 150, - 151, - 152, - 156, - -1 + FRONTIER_MONS_RUIN_MANIAC_1 }; +// The below 3 are the early Collector class trainers, which use groups from other general classes const u16 gBattleFrontierTrainerMons_Arnie[] = { - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 10, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - -1 + FRONTIER_MONS_YOUNGSTER_LASS_1 }; const u16 gBattleFrontierTrainerMons_Adrian[] = { - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - -1 + FRONTIER_MONS_SCHOOL_KID_1 }; const u16 gBattleFrontierTrainerMons_Tristan[] = { - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - -1 + FRONTIER_MONS_CAMPER_PICNICKER_1 }; const u16 gBattleFrontierTrainerMons_Juliana[] = { - 0, - 14, - 19, - 28, - 42, - 58, - 59, - 67, - 68, - 85, - 118, - 120, - 123, - 155, - 156, - 193, - -1 + FRONTIER_MONS_PARASOL_LADY_1 }; const u16 gBattleFrontierTrainerMons_Rylee[] = { - 0, - 14, - 19, - 28, - 42, - 58, - 59, - 67, - 68, - 85, - 118, - 120, - 123, - 155, - 156, - 193, - -1 + FRONTIER_MONS_PARASOL_LADY_1 }; const u16 gBattleFrontierTrainerMons_Chelsea[] = { - 0, - 14, - 19, - 28, - 42, - 58, - 59, - 67, - 68, - 85, - 118, - 120, - 123, - 155, - 156, - 193, - -1 + FRONTIER_MONS_PARASOL_LADY_1 }; +// The below 3 are the early Beauty class trainers, which use groups from other general classes const u16 gBattleFrontierTrainerMons_Danela[] = { - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 10, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - -1 + FRONTIER_MONS_YOUNGSTER_LASS_1 }; const u16 gBattleFrontierTrainerMons_Lizbeth[] = { - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - -1 + FRONTIER_MONS_SCHOOL_KID_1 }; const u16 gBattleFrontierTrainerMons_Amelia[] = { - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - -1 + FRONTIER_MONS_CAMPER_PICNICKER_1 }; const u16 gBattleFrontierTrainerMons_Jillian[] = { - 0, - 5, - 18, - 19, - 29, - 35, - 48, - 50, - 52, - 61, - 69, - 75, - 78, - 84, - 90, - 94, - 99, - 100, - 101, - 102, - 106, - 112, - 114, - 121, - 125, - 129, - 130, - 131, - 140, - -1 + FRONTIER_MONS_AROMA_LADY_1 }; const u16 gBattleFrontierTrainerMons_Abbie[] = { - 0, - 5, - 18, - 19, - 29, - 35, - 48, - 50, - 52, - 61, - 69, - 75, - 78, - 84, - 90, - 94, - 99, - 100, - 101, - 102, - 106, - 112, - 114, - 121, - 125, - 129, - 130, - 131, - 140, - -1 + FRONTIER_MONS_AROMA_LADY_1 }; const u16 gBattleFrontierTrainerMons_Briana[] = { - 0, - 5, - 18, - 19, - 29, - 35, - 48, - 50, - 52, - 61, - 69, - 75, - 78, - 84, - 90, - 94, - 99, - 100, - 101, - 102, - 106, - 112, - 114, - 121, - 125, - 129, - 130, - 131, - 140, - -1 + FRONTIER_MONS_AROMA_LADY_1 }; const u16 gBattleFrontierTrainerMons_Antonio[] = { - 5, - 10, - 20, - 35, - 48, - 49, - 50, - 62, - 63, - 64, - 66, - 71, - 75, - 77, - 78, - 84, - 90, - 92, - 99, - 106, - 108, - 112, - 114, - 115, - 116, - 119, - 121, - 122, - 143, - 148, - 152, - -1 + FRONTIER_MONS_GUITARIST_1 }; const u16 gBattleFrontierTrainerMons_Jaden[] = { - 5, - 10, - 20, - 35, - 48, - 49, - 50, - 62, - 63, - 64, - 66, - 71, - 75, - 77, - 78, - 84, - 90, - 92, - 99, - 106, - 108, - 112, - 114, - 115, - 116, - 119, - 121, - 122, - 143, - 148, - 152, - -1 + FRONTIER_MONS_GUITARIST_1 }; const u16 gBattleFrontierTrainerMons_Dakota[] = { - 5, - 10, - 20, - 35, - 48, - 49, - 50, - 62, - 63, - 64, - 66, - 71, - 75, - 77, - 78, - 84, - 90, - 92, - 99, - 106, - 108, - 112, - 114, - 115, - 116, - 119, - 121, - 122, - 143, - 148, - 152, - -1 + FRONTIER_MONS_GUITARIST_1 }; const u16 gBattleFrontierTrainerMons_Brayden[] = { - 1, - 13, - 16, - 17, - 23, - 24, - 25, - 26, - 32, - 33, - 34, - 36, - 37, - 38, - 43, - 44, - 45, - 51, - 54, - 56, - 72, - 91, - 93, - 95, - 106, - 107, - 113, - 117, - 118, - 135, - 137, - 142, - 144, - 145, - -1 + FRONTIER_MONS_BIRD_KEEPER_1 }; const u16 gBattleFrontierTrainerMons_Corson[] = { - 1, - 13, - 16, - 17, - 23, - 24, - 25, - 26, - 32, - 33, - 34, - 36, - 37, - 38, - 43, - 44, - 45, - 51, - 54, - 56, - 72, - 91, - 93, - 95, - 106, - 107, - 113, - 117, - 118, - 135, - 137, - 142, - 144, - 145, - -1 + FRONTIER_MONS_BIRD_KEEPER_1 }; const u16 gBattleFrontierTrainerMons_Trevin[] = { - 1, - 13, - 16, - 17, - 23, - 24, - 25, - 26, - 32, - 33, - 34, - 36, - 37, - 38, - 43, - 44, - 45, - 51, - 54, - 56, - 72, - 91, - 93, - 95, - 106, - 107, - 113, - 117, - 118, - 135, - 137, - 142, - 144, - 145, - -1 + FRONTIER_MONS_BIRD_KEEPER_1 }; const u16 gBattleFrontierTrainerMons_Patrick[] = { - 15, - 22, - 50, - 67, - 70, - 71, - 74, - 77, - 81, - 82, - 83, - 86, - 87, - 96, - 97, - 98, - 99, - 103, - 104, - 109, - 111, - 120, - 124, - 128, - 131, - 133, - 134, - 138, - 139, - 151, - 155, - 156, - -1 + FRONTIER_MONS_SAILOR_1 }; const u16 gBattleFrontierTrainerMons_Kaden[] = { - 15, - 22, - 50, - 67, - 70, - 71, - 74, - 77, - 81, - 82, - 83, - 86, - 87, - 96, - 97, - 98, - 99, - 103, - 104, - 109, - 111, - 120, - 124, - 128, - 131, - 133, - 134, - 138, - 139, - 151, - 155, - 156, - -1 + FRONTIER_MONS_SAILOR_1 }; const u16 gBattleFrontierTrainerMons_Maxwell[] = { - 15, - 22, - 50, - 67, - 70, - 71, - 74, - 77, - 81, - 82, - 83, - 86, - 87, - 96, - 97, - 98, - 99, - 103, - 104, - 109, - 111, - 120, - 124, - 128, - 131, - 133, - 134, - 138, - 139, - 151, - 155, - 156, - -1 + FRONTIER_MONS_SAILOR_1 }; const u16 gBattleFrontierTrainerMons_Daryl[] = { - 15, - 22, - 31, - 39, - 50, - 51, - 58, - 67, - 70, - 74, - 75, - 81, - 82, - 85, - 104, - 120, - 122, - 132, - 133, - 138, - 139, - 140, - 141, - 142, - 144, - 150, - 156, - -1 + FRONTIER_MONS_HIKER_1 }; const u16 gBattleFrontierTrainerMons_Kenneth[] = { - 15, - 22, - 31, - 39, - 50, - 51, - 58, - 67, - 70, - 74, - 75, - 81, - 82, - 85, - 104, - 120, - 122, - 132, - 133, - 138, - 139, - 140, - 141, - 142, - 144, - 150, - 156, - -1 + FRONTIER_MONS_HIKER_1 }; const u16 gBattleFrontierTrainerMons_Rich[] = { - 15, - 22, - 31, - 39, - 50, - 51, - 58, - 67, - 70, - 74, - 75, - 81, - 82, - 85, - 104, - 120, - 122, - 132, - 133, - 138, - 139, - 140, - 141, - 142, - 144, - 150, - 156, - -1 + FRONTIER_MONS_HIKER_1 }; const u16 gBattleFrontierTrainerMons_Caden[] = { - 30, - 62, - 63, - 65, - 70, - 74, - 77, - 78, - 85, - 88, - 89, - 95, - 108, - 119, - 122, - 133, - 136, - 149, - 150, - 152, - 156, - -1 + FRONTIER_MONS_KINDLER_1 }; const u16 gBattleFrontierTrainerMons_Marlon[] = { - 30, - 62, - 63, - 65, - 70, - 74, - 77, - 78, - 85, - 88, - 89, - 95, - 108, - 119, - 122, - 133, - 136, - 149, - 150, - 152, - 156, - -1 + FRONTIER_MONS_KINDLER_1 }; const u16 gBattleFrontierTrainerMons_Nash[] = { - 30, - 62, - 63, - 65, - 70, - 74, - 77, - 78, - 85, - 88, - 89, - 95, - 108, - 119, - 122, - 133, - 136, - 149, - 150, - 152, - 156, - -1 + FRONTIER_MONS_KINDLER_1 }; const u16 gBattleFrontierTrainerMons_Robby[] = { - 1, - 13, - 15, - 16, - 17, - 22, - 23, - 24, - 26, - 32, - 33, - 34, - 36, - 37, - 38, - 43, - 44, - 50, - 51, - 54, - 56, - 67, - 70, - 72, - 74, - 75, - 81, - 82, - 85, - 91, - 93, - 104, - 107, - 113, - 117, - 120, - 132, - 133, - 135, - 137, - 142, - 144, - 145, - 156, - -1 + FRONTIER_MONS_RUNNING_TRIATHLETE_1 }; const u16 gBattleFrontierTrainerMons_Reece[] = { - 1, - 13, - 15, - 16, - 17, - 22, - 23, - 24, - 26, - 32, - 33, - 34, - 36, - 37, - 38, - 43, - 44, - 50, - 51, - 54, - 56, - 67, - 70, - 72, - 74, - 75, - 81, - 82, - 85, - 91, - 93, - 104, - 107, - 113, - 117, - 120, - 132, - 133, - 135, - 137, - 142, - 144, - 145, - 156, - -1 + FRONTIER_MONS_RUNNING_TRIATHLETE_1 }; const u16 gBattleFrontierTrainerMons_Kathryn[] = { - 1, - 13, - 15, - 16, - 17, - 22, - 23, - 24, - 26, - 32, - 33, - 34, - 36, - 37, - 38, - 43, - 44, - 50, - 51, - 54, - 56, - 67, - 70, - 72, - 74, - 75, - 81, - 82, - 85, - 91, - 93, - 104, - 107, - 113, - 117, - 120, - 132, - 133, - 135, - 137, - 142, - 144, - 145, - 156, - -1 + FRONTIER_MONS_RUNNING_TRIATHLETE_1 }; const u16 gBattleFrontierTrainerMons_Ellen[] = { - 1, - 13, - 15, - 16, - 17, - 22, - 23, - 24, - 26, - 32, - 33, - 34, - 36, - 37, - 38, - 43, - 44, - 50, - 51, - 54, - 56, - 67, - 70, - 72, - 74, - 75, - 81, - 82, - 85, - 91, - 93, - 104, - 107, - 113, - 117, - 120, - 132, - 133, - 135, - 137, - 142, - 144, - 145, - 156, - -1 + FRONTIER_MONS_RUNNING_TRIATHLETE_1 }; const u16 gBattleFrontierTrainerMons_Ramon[] = { - 15, - 22, - 50, - 71, - 72, - 76, - 77, - 81, - 82, - 83, - 84, - 87, - 96, - 97, - 98, - 99, - 103, - 107, - 109, - 111, - 113, - 117, - 118, - 131, - 134, - 138, - 139, - 142, - 144, - 145, - 151, - 155, - -1 + FRONTIER_MONS_SWIMMING_TRIATHLETE_1 }; const u16 gBattleFrontierTrainerMons_Arthur[] = { - 15, - 22, - 50, - 71, - 72, - 76, - 77, - 81, - 82, - 83, - 84, - 87, - 96, - 97, - 98, - 99, - 103, - 107, - 109, - 111, - 113, - 117, - 118, - 131, - 134, - 138, - 139, - 142, - 144, - 145, - 151, - 155, - -1 + FRONTIER_MONS_SWIMMING_TRIATHLETE_1 }; const u16 gBattleFrontierTrainerMons_Alondra[] = { - 15, - 22, - 50, - 71, - 72, - 76, - 77, - 81, - 82, - 83, - 84, - 87, - 96, - 97, - 98, - 99, - 103, - 107, - 109, - 111, - 113, - 117, - 118, - 131, - 134, - 138, - 139, - 142, - 144, - 145, - 151, - 155, - -1 + FRONTIER_MONS_SWIMMING_TRIATHLETE_1 }; const u16 gBattleFrontierTrainerMons_Adriana[] = { - 15, - 22, - 50, - 71, - 72, - 76, - 77, - 81, - 82, - 83, - 84, - 87, - 96, - 97, - 98, - 99, - 103, - 107, - 109, - 111, - 113, - 117, - 118, - 131, - 134, - 138, - 139, - 142, - 144, - 145, - 151, - 155, - -1 + FRONTIER_MONS_SWIMMING_TRIATHLETE_1 }; const u16 gBattleFrontierTrainerMons_Malik[] = { - 10, - 15, - 22, - 49, - 50, - 64, - 66, - 71, - 72, - 77, - 78, - 81, - 82, - 91, - 93, - 107, - 108, - 113, - 115, - 117, - 122, - 135, - 137, - 142, - 143, - 144, - 145, - 148, - 152, - -1 + FRONTIER_MONS_CYCLING_TRIATHLETE_1 }; const u16 gBattleFrontierTrainerMons_Jill[] = { - 10, - 15, - 22, - 49, - 50, - 64, - 66, - 71, - 72, - 77, - 78, - 81, - 82, - 91, - 93, - 107, - 108, - 113, - 115, - 117, - 122, - 135, - 137, - 142, - 143, - 144, - 145, - 148, - 152, - -1 + FRONTIER_MONS_CYCLING_TRIATHLETE_1 }; const u16 gBattleFrontierTrainerMons_Erik[] = { - 162, - 164, - 168, - 178, - 183, - 184, - 189, - 197, - 199, - 200, - 203, - 204, - 207, - 210, - 213, - 214, - 218, - 220, - 221, - 224, - 227, - 231, - 232, - 233, - 234, - 235, - 236, - 238, - 240, - 243, - 245, - 246, - 250, - 263, - -1 + FRONTIER_MONS_RUNNING_TRIATHLETE_2 }; const u16 gBattleFrontierTrainerMons_Yazmin[] = { - 162, - 164, - 168, - 178, - 183, - 184, - 189, - 197, - 199, - 200, - 203, - 204, - 207, - 210, - 213, - 214, - 218, - 220, - 221, - 224, - 227, - 231, - 232, - 233, - 234, - 235, - 236, - 238, - 240, - 243, - 245, - 246, - 250, - 263, - -1 + FRONTIER_MONS_RUNNING_TRIATHLETE_2 }; const u16 gBattleFrontierTrainerMons_Jamal[] = { - 170, - 176, - 178, - 182, - 189, - 190, - 192, - 196, - 211, - 212, - 213, - 219, - 228, - 230, - 232, - 233, - 234, - 236, - 242, - 245, - 249, - 253, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 265, - 266, - -1 + FRONTIER_MONS_SWIMMING_TRIATHLETE_2 }; const u16 gBattleFrontierTrainerMons_Leslie[] = { - 170, - 176, - 178, - 182, - 189, - 190, - 192, - 196, - 211, - 212, - 213, - 219, - 228, - 230, - 232, - 233, - 234, - 236, - 242, - 245, - 249, - 253, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 265, - 266, - -1 + FRONTIER_MONS_SWIMMING_TRIATHLETE_2 }; const u16 gBattleFrontierTrainerMons_Dave[] = { - 162, - 164, - 168, - 178, - 183, - 186, - 187, - 189, - 197, - 199, - 200, - 203, - 204, - 206, - 207, - 214, - 215, - 218, - 220, - 221, - 224, - 227, - 232, - 233, - 234, - 235, - 236, - 240, - 244, - 246, - 250, - -1 + FRONTIER_MONS_CYCLING_TRIATHLETE_2 }; const u16 gBattleFrontierTrainerMons_Carlo[] = { - 162, - 164, - 168, - 178, - 183, - 186, - 187, - 189, - 197, - 199, - 200, - 203, - 204, - 206, - 207, - 214, - 215, - 218, - 220, - 221, - 224, - 227, - 232, - 233, - 234, - 235, - 236, - 240, - 244, - 246, - 250, - -1 + FRONTIER_MONS_CYCLING_TRIATHLETE_2 }; const u16 gBattleFrontierTrainerMons_Emilia[] = { - 162, - 164, - 168, - 178, - 183, - 186, - 187, - 189, - 197, - 199, - 200, - 203, - 204, - 206, - 207, - 214, - 215, - 218, - 220, - 221, - 224, - 227, - 232, - 233, - 234, - 235, - 236, - 240, - 244, - 246, - 250, - -1 + FRONTIER_MONS_CYCLING_TRIATHLETE_2 }; const u16 gBattleFrontierTrainerMons_Dalia[] = { - 162, - 164, - 168, - 178, - 183, - 186, - 187, - 189, - 197, - 199, - 200, - 203, - 204, - 206, - 207, - 214, - 215, - 218, - 220, - 221, - 224, - 227, - 232, - 233, - 234, - 235, - 236, - 240, - 244, - 246, - 250, - -1 + FRONTIER_MONS_CYCLING_TRIATHLETE_2 }; const u16 gBattleFrontierTrainerMons_Hitomi[] = { - 164, - 166, - 175, - 178, - 181, - 189, - 191, - 193, - 194, - 195, - 197, - 199, - 200, - 202, - 203, - 205, - 206, - 207, - 210, - 215, - 218, - 220, - 221, - 222, - 223, - 225, - 227, - 230, - 232, - 233, - 234, - 235, - 236, - 240, - 241, - 246, - 247, - 252, - 254, - 262, - -1 + FRONTIER_MONS_BLACK_BELT_BATTLE_GIRL_1 }; const u16 gBattleFrontierTrainerMons_Ricardo[] = { - 164, - 166, - 175, - 178, - 181, - 189, - 191, - 193, - 194, - 195, - 197, - 199, - 200, - 202, - 203, - 205, - 206, - 207, - 210, - 215, - 218, - 220, - 221, - 222, - 223, - 225, - 227, - 230, - 232, - 233, - 234, - 235, - 236, - 240, - 241, - 246, - 247, - 252, - 254, - 262, - -1 + FRONTIER_MONS_BLACK_BELT_BATTLE_GIRL_1 }; const u16 gBattleFrontierTrainerMons_Shizuka[] = { - 164, - 166, - 175, - 178, - 181, - 189, - 191, - 193, - 194, - 195, - 197, - 199, - 200, - 202, - 203, - 205, - 206, - 207, - 210, - 215, - 218, - 220, - 221, - 222, - 223, - 225, - 227, - 230, - 232, - 233, - 234, - 235, - 236, - 240, - 241, - 246, - 247, - 252, - 254, - 262, - -1 + FRONTIER_MONS_BLACK_BELT_BATTLE_GIRL_1 }; const u16 gBattleFrontierTrainerMons_Joana[] = { - 164, - 166, - 175, - 178, - 181, - 189, - 191, - 193, - 194, - 195, - 197, - 199, - 200, - 202, - 203, - 205, - 206, - 207, - 210, - 215, - 218, - 220, - 221, - 222, - 223, - 225, - 227, - 230, - 232, - 233, - 234, - 235, - 236, - 240, - 241, - 246, - 247, - 252, - 254, - 262, - -1 + FRONTIER_MONS_BLACK_BELT_BATTLE_GIRL_1 }; const u16 gBattleFrontierTrainerMons_Kelly[] = { - 164, - 166, - 175, - 178, - 181, - 189, - 191, - 193, - 194, - 195, - 197, - 199, - 200, - 202, - 203, - 205, - 206, - 207, - 210, - 215, - 218, - 220, - 221, - 222, - 223, - 225, - 227, - 230, - 232, - 233, - 234, - 235, - 236, - 240, - 241, - 246, - 247, - 252, - 254, - 262, - -1 + FRONTIER_MONS_BLACK_BELT_BATTLE_GIRL_1 }; const u16 gBattleFrontierTrainerMons_Rayna[] = { - 164, - 166, - 175, - 178, - 181, - 189, - 191, - 193, - 194, - 195, - 197, - 199, - 200, - 202, - 203, - 205, - 206, - 207, - 210, - 215, - 218, - 220, - 221, - 222, - 223, - 225, - 227, - 230, - 232, - 233, - 234, - 235, - 236, - 240, - 241, - 246, - 247, - 252, - 254, - 262, - -1 + FRONTIER_MONS_BLACK_BELT_BATTLE_GIRL_1 }; const u16 gBattleFrontierTrainerMons_Evan[] = { - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - -1 + FRONTIER_MONS_EXPERT_1A }; const u16 gBattleFrontierTrainerMons_Jordan[] = { - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - -1 + FRONTIER_MONS_EXPERT_1B }; const u16 gBattleFrontierTrainerMons_Joel[] = { - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - -1 + FRONTIER_MONS_EXPERT_1C }; const u16 gBattleFrontierTrainerMons_Kristen[] = { - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - -1 + FRONTIER_MONS_EXPERT_1A }; const u16 gBattleFrontierTrainerMons_Selphy[] = { - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - -1 + FRONTIER_MONS_EXPERT_1B }; const u16 gBattleFrontierTrainerMons_Chloe[] = { - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - -1 + FRONTIER_MONS_EXPERT_1C }; const u16 gBattleFrontierTrainerMons_Norton[] = { - 267, - 268, - 273, - 274, - 276, - 284, - 289, - 290, - 291, - 292, - 307, - 308, - 311, - 312, - 314, - 317, - 325, - 327, - 328, - 329, - 331, - 332, - 340, - 342, - 347, - 349, - 351, - 352, - 354, - 356, - 359, - 363, - 370, - -1 + FRONTIER_MONS_PSYCHIC_1 }; const u16 gBattleFrontierTrainerMons_Lukas[] = { - 267, - 268, - 273, - 274, - 276, - 284, - 289, - 290, - 291, - 292, - 307, - 308, - 311, - 312, - 314, - 317, - 325, - 327, - 328, - 329, - 331, - 332, - 340, - 342, - 347, - 349, - 351, - 352, - 354, - 356, - 359, - 363, - 370, - -1 + FRONTIER_MONS_PSYCHIC_1 }; const u16 gBattleFrontierTrainerMons_Zach[] = { - 267, - 268, - 273, - 274, - 276, - 284, - 289, - 290, - 291, - 292, - 307, - 308, - 311, - 312, - 314, - 317, - 325, - 327, - 328, - 329, - 331, - 332, - 340, - 342, - 347, - 349, - 351, - 352, - 354, - 356, - 359, - 363, - 370, - -1 + FRONTIER_MONS_PSYCHIC_1 }; const u16 gBattleFrontierTrainerMons_Kaitlyn[] = { - 267, - 268, - 273, - 274, - 276, - 284, - 289, - 290, - 291, - 292, - 307, - 308, - 311, - 312, - 314, - 317, - 325, - 327, - 328, - 329, - 331, - 332, - 340, - 342, - 347, - 349, - 351, - 352, - 354, - 356, - 359, - 363, - 370, - -1 + FRONTIER_MONS_PSYCHIC_1 }; const u16 gBattleFrontierTrainerMons_Breanna[] = { - 267, - 268, - 273, - 274, - 276, - 284, - 289, - 290, - 291, - 292, - 307, - 308, - 311, - 312, - 314, - 317, - 325, - 327, - 328, - 329, - 331, - 332, - 340, - 342, - 347, - 349, - 351, - 352, - 354, - 356, - 359, - 363, - 370, - -1 + FRONTIER_MONS_PSYCHIC_1 }; const u16 gBattleFrontierTrainerMons_Kendra[] = { - 267, - 268, - 273, - 274, - 276, - 284, - 289, - 290, - 291, - 292, - 307, - 308, - 311, - 312, - 314, - 317, - 325, - 327, - 328, - 329, - 331, - 332, - 340, - 342, - 347, - 349, - 351, - 352, - 354, - 356, - 359, - 363, - 370, - -1 + FRONTIER_MONS_PSYCHIC_1 }; const u16 gBattleFrontierTrainerMons_Molly[] = { - 268, - 270, - 272, - 274, - 282, - 284, - 289, - 290, - 303, - 307, - 311, - 314, - 317, - 322, - 327, - 328, - 331, - 336, - 340, - 342, - 344, - 347, - 352, - 353, - 354, - 356, - 359, - -1 + FRONTIER_MONS_HEX_MANIAC_1 }; const u16 gBattleFrontierTrainerMons_Jazmin[] = { - 268, - 270, - 272, - 274, - 282, - 284, - 289, - 290, - 303, - 307, - 311, - 314, - 317, - 322, - 327, - 328, - 331, - 336, - 340, - 342, - 344, - 347, - 352, - 353, - 354, - 356, - 359, - -1 + FRONTIER_MONS_HEX_MANIAC_1 }; const u16 gBattleFrontierTrainerMons_Kelsey[] = { - 268, - 270, - 272, - 274, - 282, - 284, - 289, - 290, - 303, - 307, - 311, - 314, - 317, - 322, - 327, - 328, - 331, - 336, - 340, - 342, - 344, - 347, - 352, - 353, - 354, - 356, - 359, - -1 + FRONTIER_MONS_HEX_MANIAC_1 }; const u16 gBattleFrontierTrainerMons_Jalen[] = { - 269, - 271, - 275, - 279, - 280, - 281, - 283, - 285, - 286, - 287, - 293, - 294, - 295, - 300, - 302, - 307, - 310, - 311, - 320, - 322, - 326, - 330, - 332, - 335, - 344, - 345, - 346, - 348, - 350, - 353, - 357, - -1 + FRONTIER_MONS_POKEMANIAC_1 }; const u16 gBattleFrontierTrainerMons_Griffen[] = { - 269, - 271, - 275, - 279, - 280, - 281, - 283, - 285, - 286, - 287, - 293, - 294, - 295, - 300, - 302, - 307, - 310, - 311, - 320, - 322, - 326, - 330, - 332, - 335, - 344, - 345, - 346, - 348, - 350, - 353, - 357, - -1 + FRONTIER_MONS_POKEMANIAC_1 }; const u16 gBattleFrontierTrainerMons_Xander[] = { - 269, - 271, - 275, - 279, - 280, - 281, - 283, - 285, - 286, - 287, - 293, - 294, - 295, - 300, - 302, - 307, - 310, - 311, - 320, - 322, - 326, - 330, - 332, - 335, - 344, - 345, - 346, - 348, - 350, - 353, - 357, - -1 + FRONTIER_MONS_POKEMANIAC_1 }; const u16 gBattleFrontierTrainerMons_Marvin[] = { - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - -1 + FRONTIER_MONS_GENTLEMAN_1A }; const u16 gBattleFrontierTrainerMons_Brennan[] = { - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - -1 + FRONTIER_MONS_GENTLEMAN_1B }; const u16 gBattleFrontierTrainerMons_Baley[] = { - 159, - 160, - 161, - 172, - 173, - 177, - 198, - 226, - 238, - 263, - 264, - 277, - 278, - 282, - 303, - 331, - 343, - 368, - 369, - -1 + FRONTIER_MONS_BUG_MANIAC_2 }; const u16 gBattleFrontierTrainerMons_Zackary[] = { - 271, - 283, - 294, - 295, - 298, - 299, - 300, - 311, - 315, - 320, - 327, - 328, - 330, - 335, - 337, - 338, - 339, - 341, - 346, - 364, - 365, - 366, - -1 + FRONTIER_MONS_RUIN_MANIAC_2 }; const u16 gBattleFrontierTrainerMons_Gabriel[] = { - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - -1 + FRONTIER_MONS_COLLECTOR_1 }; const u16 gBattleFrontierTrainerMons_Emily[] = { - 272, - 301, - 309, - 330, - 348, - 349, - 350, - 359, - 360, - 362, - 363, - 365, - -1 + FRONTIER_MONS_PARASOL_LADY_2 }; const u16 gBattleFrontierTrainerMons_Jordyn[] = { - 267, - 269, - 270, - 272, - 273, - 276, - 279, - 284, - 288, - 302, - 304, - 305, - 308, - 309, - 312, - 316, - 319, - 322, - 323, - 325, - 326, - 329, - 331, - 332, - 336, - 340, - 344, - 345, - 351, - 353, - 355, - -1 + FRONTIER_MONS_BEAUTY_1 }; const u16 gBattleFrontierTrainerMons_Sofia[] = { - 270, - 272, - 274, - 276, - 279, - 282, - 285, - 290, - 293, - 313, - 314, - 321, - 334, - 340, - 348, - 356, - 359, - 360, - -1 + FRONTIER_MONS_AROMA_LADY_2 }; const u16 gBattleFrontierTrainerMons_Braden[] = { - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - -1 + FRONTIER_MONS_COOLTRAINER_1A }; const u16 gBattleFrontierTrainerMons_Kayden[] = { - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - -1 + FRONTIER_MONS_COOLTRAINER_1B }; const u16 gBattleFrontierTrainerMons_Cooper[] = { - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - -1 + FRONTIER_MONS_COOLTRAINER_1C }; const u16 gBattleFrontierTrainerMons_Julia[] = { - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - -1 + FRONTIER_MONS_COOLTRAINER_1A }; const u16 gBattleFrontierTrainerMons_Amara[] = { - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - -1 + FRONTIER_MONS_COOLTRAINER_1B }; const u16 gBattleFrontierTrainerMons_Lynn[] = { - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - -1 + FRONTIER_MONS_COOLTRAINER_1C }; const u16 gBattleFrontierTrainerMons_Jovan[] = { - 238, - 331, - 343, - 368, - 369, - 375, - 376, - 379, - 382, - 383, - 389, - 394, - 395, - 397, - 398, - 400, - 406, - 408, - 411, - 416, - 417, - 423, - 424, - 425, - 432, - 436, - 438, - 441, - 445, - 453, - 460, - 462, - 467, - -1 + FRONTIER_MONS_PKMN_RANGER_1 }; const u16 gBattleFrontierTrainerMons_Dominic[] = { - 238, - 331, - 343, - 368, - 369, - 375, - 376, - 379, - 382, - 383, - 389, - 394, - 395, - 397, - 398, - 400, - 406, - 408, - 411, - 416, - 417, - 423, - 424, - 425, - 432, - 436, - 438, - 441, - 445, - 453, - 460, - 462, - 467, - -1 + FRONTIER_MONS_PKMN_RANGER_1 }; const u16 gBattleFrontierTrainerMons_Nikolas[] = { - 238, - 331, - 343, - 368, - 369, - 375, - 376, - 379, - 382, - 383, - 389, - 394, - 395, - 397, - 398, - 400, - 406, - 408, - 411, - 416, - 417, - 423, - 424, - 425, - 432, - 436, - 438, - 441, - 445, - 453, - 460, - 462, - 467, - -1 + FRONTIER_MONS_PKMN_RANGER_1 }; const u16 gBattleFrontierTrainerMons_Valeria[] = { - 238, - 331, - 343, - 368, - 369, - 375, - 376, - 379, - 382, - 383, - 389, - 394, - 395, - 397, - 398, - 400, - 406, - 408, - 411, - 416, - 417, - 423, - 424, - 425, - 432, - 436, - 438, - 441, - 445, - 453, - 460, - 462, - 467, - -1 + FRONTIER_MONS_PKMN_RANGER_1 }; const u16 gBattleFrontierTrainerMons_Delaney[] = { - 238, - 331, - 343, - 368, - 369, - 375, - 376, - 379, - 382, - 383, - 389, - 394, - 395, - 397, - 398, - 400, - 406, - 408, - 411, - 416, - 417, - 423, - 424, - 425, - 432, - 436, - 438, - 441, - 445, - 453, - 460, - 462, - 467, - -1 + FRONTIER_MONS_PKMN_RANGER_1 }; const u16 gBattleFrontierTrainerMons_Meghan[] = { - 238, - 331, - 343, - 368, - 369, - 375, - 376, - 379, - 382, - 383, - 389, - 394, - 395, - 397, - 398, - 400, - 406, - 408, - 411, - 416, - 417, - 423, - 424, - 425, - 432, - 436, - 438, - 441, - 445, - 453, - 460, - 462, - 467, - -1 + FRONTIER_MONS_PKMN_RANGER_1 }; const u16 gBattleFrontierTrainerMons_Roberto[] = { - 386, - 403, - 412, - 413, - 414, - 433, - 435, - 440, - 450, - 453, - 454, - 456, - 459, - 461, - 463, - 464, - 465, - -1 + FRONTIER_MONS_DRAGON_TAMER_1 }; const u16 gBattleFrontierTrainerMons_Damian[] = { - 386, - 403, - 412, - 413, - 414, - 433, - 435, - 440, - 450, - 453, - 454, - 456, - 459, - 461, - 463, - 464, - 465, - -1 + FRONTIER_MONS_DRAGON_TAMER_1 }; const u16 gBattleFrontierTrainerMons_Brody[] = { - 386, - 403, - 412, - 413, - 414, - 433, - 435, - 440, - 450, - 453, - 454, - 456, - 459, - 461, - 463, - 464, - 465, - -1 + FRONTIER_MONS_DRAGON_TAMER_1 }; const u16 gBattleFrontierTrainerMons_Graham[] = { - 386, - 403, - 412, - 413, - 414, - 433, - 435, - 440, - 450, - 453, - 454, - 456, - 459, - 461, - 463, - 464, - 465, - -1 + FRONTIER_MONS_DRAGON_TAMER_1 }; const u16 gBattleFrontierTrainerMons_Tylor[] = { - 374, - 381, - 382, - 385, - 388, - 389, - 391, - 392, - 394, - 409, - 411, - 412, - 419, - 430, - 432, - 436, - 440, - 456, - 460, - 462, - 463, - 467, - -1 + FRONTIER_MONS_POKEFAN_2 }; const u16 gBattleFrontierTrainerMons_Jaren[] = { - 374, - 381, - 382, - 385, - 388, - 389, - 391, - 392, - 394, - 409, - 411, - 412, - 419, - 430, - 432, - 436, - 440, - 456, - 460, - 462, - 463, - 467, - -1 + FRONTIER_MONS_POKEFAN_2 }; const u16 gBattleFrontierTrainerMons_Cordell[] = { - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - -1 + FRONTIER_MONS_PKMN_BREEDER_M_1 }; const u16 gBattleFrontierTrainerMons_Jazlyn[] = { - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - -1 + FRONTIER_MONS_PKMN_BREEDER_F_1 }; const u16 gBattleFrontierTrainerMons_Zachery[] = { - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500, - -1 + FRONTIER_MONS_YOUNGSTER_LASS_2 }; const u16 gBattleFrontierTrainerMons_Johan[] = { - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500, - -1 + FRONTIER_MONS_YOUNGSTER_LASS_2_NO_DUGTRIO }; const u16 gBattleFrontierTrainerMons_Shea[] = { - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500, - -1 + FRONTIER_MONS_YOUNGSTER_LASS_2 }; const u16 gBattleFrontierTrainerMons_Kaila[] = { - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500, - -1 + FRONTIER_MONS_YOUNGSTER_LASS_2 }; const u16 gBattleFrontierTrainerMons_Isiah[] = { - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520, - 521, - 522, - 523, - 524, - 525, - 526, - 527, - 528, - 529, - 530, - 531, - 532, - 533, - -1 + FRONTIER_MONS_SCHOOL_KID_2 }; const u16 gBattleFrontierTrainerMons_Garrett[] = { - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520, - 521, - 522, - 523, - 524, - 525, - 526, - 527, - 528, - 529, - 530, - 531, - 532, - 533, - -1 + FRONTIER_MONS_SCHOOL_KID_2 }; const u16 gBattleFrontierTrainerMons_Haylie[] = { - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520, - 521, - 522, - 523, - 524, - 525, - 526, - 527, - 528, - 529, - 530, - 531, - 532, - 533, - -1 + FRONTIER_MONS_SCHOOL_KID_2 }; const u16 gBattleFrontierTrainerMons_Megan[] = { - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520, - 521, - 522, - 523, - 524, - 525, - 526, - 527, - 528, - 529, - 530, - 531, - 532, - 533, - -1 + FRONTIER_MONS_SCHOOL_KID_2 }; const u16 gBattleFrontierTrainerMons_Issac[] = { - 534, - 535, - 536, - 537, - 538, - 539, - 540, - 541, - 542, - 543, - 544, - 545, - 546, - 547, - 548, - 549, - 550, - 551, - 552, - 553, - 554, - 555, - 556, - 557, - 558, - 559, - 560, - 561, - 562, - 563, - -1 + FRONTIER_MONS_RICH_BOY_LADY_2 }; const u16 gBattleFrontierTrainerMons_Quinton[] = { - 534, - 535, - 536, - 537, - 538, - 539, - 540, - 541, - 542, - 543, - 544, - 545, - 546, - 547, - 548, - 549, - 550, - 551, - 552, - 553, - 554, - 555, - 556, - 557, - 558, - 559, - 560, - 561, - 562, - 563, - -1 + FRONTIER_MONS_RICH_BOY_LADY_2 }; const u16 gBattleFrontierTrainerMons_Salma[] = { - 534, - 535, - 536, - 537, - 538, - 539, - 540, - 541, - 542, - 543, - 544, - 545, - 546, - 547, - 548, - 549, - 550, - 551, - 552, - 553, - 554, - 555, - 556, - 557, - 558, - 559, - 560, - 561, - 562, - 563, - -1 + FRONTIER_MONS_RICH_BOY_LADY_2 }; const u16 gBattleFrontierTrainerMons_Ansley[] = { - 534, - 535, - 536, - 537, - 538, - 539, - 540, - 541, - 542, - 543, - 544, - 545, - 546, - 547, - 548, - 549, - 550, - 551, - 552, - 553, - 554, - 555, - 556, - 557, - 558, - 559, - 560, - 561, - 562, - 563, - -1 + FRONTIER_MONS_RICH_BOY_LADY_2 }; const u16 gBattleFrontierTrainerMons_Holden[] = { - 343, - 368, - 369, - 383, - 417, - 423, - 424, - 432, - 480, - 481, - 490, - 491, - 494, - 496, - 512, - 513, - 519, - 520, - 528, - 534, - 537, - 541, - 549, - -1 + FRONTIER_MONS_BUG_CATCHER_2 }; const u16 gBattleFrontierTrainerMons_Luca[] = { - 343, - 368, - 369, - 383, - 417, - 423, - 424, - 432, - 480, - 481, - 490, - 491, - 494, - 496, - 512, - 513, - 519, - 520, - 528, - 534, - 537, - 541, - 549, - -1 + FRONTIER_MONS_BUG_CATCHER_2 }; const u16 gBattleFrontierTrainerMons_Jamison[] = { - 282, - 331, - 343, - 368, - 369, - 469, - 472, - 475, - 476, - 478, - 481, - 484, - 490, - 491, - 497, - 500, - 501, - 509, - 510, - 513, - 516, - 517, - 519, - 520, - 524, - 528, - 530, - 533, - 534, - 537, - 542, - 553, - -1 + FRONTIER_MONS_NINJA_BOY_2 }; const u16 gBattleFrontierTrainerMons_Gunnar[] = { - 282, - 331, - 343, - 368, - 369, - 469, - 472, - 475, - 476, - 478, - 481, - 484, - 490, - 491, - 497, - 500, - 501, - 509, - 510, - 513, - 516, - 517, - 519, - 520, - 524, - 528, - 530, - 533, - 534, - 537, - 542, - 553, - -1 + FRONTIER_MONS_NINJA_BOY_2 }; const u16 gBattleFrontierTrainerMons_Craig[] = { - 471, - 474, - 475, - 479, - 483, - 485, - 488, - 493, - 495, - 496, - 502, - 504, - 505, - 506, - 507, - 514, - 521, - 525, - 530, - 532, - 535, - 538, - 544, - 545, - 548, - 552, - 554, - 555, - 556, - 557, - 558, - 559, - 563, - -1 + FRONTIER_MONS_TUBER_2 }; const u16 gBattleFrontierTrainerMons_Pierce[] = { - 471, - 474, - 475, - 479, - 483, - 485, - 488, - 493, - 495, - 496, - 502, - 504, - 505, - 506, - 507, - 514, - 521, - 525, - 530, - 532, - 535, - 538, - 544, - 545, - 548, - 552, - 554, - 555, - 556, - 557, - 558, - 559, - 563, - -1 + FRONTIER_MONS_TUBER_2 }; const u16 gBattleFrontierTrainerMons_Regina[] = { - 471, - 474, - 475, - 479, - 483, - 485, - 488, - 493, - 495, - 496, - 502, - 504, - 505, - 506, - 507, - 514, - 521, - 525, - 530, - 532, - 535, - 538, - 544, - 545, - 548, - 552, - 554, - 555, - 556, - 557, - 558, - 559, - 563, - -1 + FRONTIER_MONS_TUBER_2 }; const u16 gBattleFrontierTrainerMons_Alison[] = { - 471, - 474, - 475, - 479, - 483, - 485, - 488, - 493, - 495, - 496, - 502, - 504, - 505, - 506, - 507, - 514, - 521, - 525, - 530, - 532, - 535, - 538, - 544, - 545, - 548, - 552, - 554, - 555, - 556, - 557, - 558, - 559, - 563, - -1 + FRONTIER_MONS_TUBER_2 }; const u16 gBattleFrontierTrainerMons_Hank[] = { - 277, - 278, - 282, - 303, - 331, - 343, - 368, - 369, - 383, - 417, - 423, - 424, - 432, - 481, - 513, - 519, - 520, - 528, - 575, - 609, - 615, - 616, - 624, - -1 + FRONTIER_MONS_BUG_MANIAC_3 }; const u16 gBattleFrontierTrainerMons_Earl[] = { - 277, - 278, - 282, - 303, - 331, - 343, - 368, - 369, - 383, - 417, - 423, - 424, - 432, - 481, - 513, - 519, - 520, - 528, - 575, - 609, - 615, - 616, - 624, - -1 + FRONTIER_MONS_BUG_MANIAC_3 }; const u16 gBattleFrontierTrainerMons_Ramiro[] = { - 316, - 333, - 347, - 350, - 354, - 358, - 361, - 362, - 363, - 364, - 573, - 576, - 621, - 626, - 631, - -1 + FRONTIER_MONS_FISHERMAN_2 }; const u16 gBattleFrontierTrainerMons_Hunter[] = { - 316, - 333, - 347, - 350, - 354, - 358, - 361, - 362, - 363, - 364, - 573, - 576, - 621, - 626, - 631, - -1 + FRONTIER_MONS_FISHERMAN_2 }; const u16 gBattleFrontierTrainerMons_Aiden[] = { - 564, - 575, - 576, - 578, - 579, - 580, - 594, - 595, - 605, - 606, - 608, - 609, - 615, - 619, - 620, - 624, - 625, - 627, - 632, - 642, - 650, - 658, - -1 + FRONTIER_MONS_RUIN_MANIAC_3 }; const u16 gBattleFrontierTrainerMons_Xavier[] = { - 564, - 575, - 576, - 578, - 579, - 580, - 594, - 595, - 605, - 606, - 608, - 609, - 615, - 619, - 620, - 624, - 625, - 627, - 632, - 642, - 650, - 658, - -1 + FRONTIER_MONS_RUIN_MANIAC_3 }; const u16 gBattleFrontierTrainerMons_Clinton[] = { - 564, - 565, - 566, - 567, - 568, - 569, - 570, - 571, - 572, - 573, - 574, - 575, - 576, - 577, - 578, - 579, - 580, - 581, - 582, - 583, - 584, - 585, - 586, - 587, - 588, - 589, - 590, - 591, - 592, - 593, - 594, - 595, - 596, - 597, - 598, - 599, - 600, - 601, - 602, - 603, - 604, - 605, - 606, - 607, - 608, - 609, - 610, - 611, - -1 + FRONTIER_MONS_COLLECTOR_2 }; const u16 gBattleFrontierTrainerMons_Jesse[] = { - 564, - 565, - 566, - 567, - 568, - 569, - 570, - 571, - 572, - 573, - 574, - 575, - 576, - 577, - 578, - 579, - 580, - 581, - 582, - 583, - 584, - 585, - 586, - 587, - 588, - 589, - 590, - 591, - 592, - 593, - 594, - 595, - 596, - 597, - 598, - 599, - 600, - 601, - 602, - 603, - 604, - 605, - 606, - 607, - 608, - 609, - 610, - 611, - -1 + FRONTIER_MONS_COLLECTOR_2 }; const u16 gBattleFrontierTrainerMons_Eduardo[] = { - 268, - 307, - 317, - 349, - 352, - 573, - 583, - 585, - 588, - 590, - 599, - 614, - 618, - 635, - 639, - -1 + FRONTIER_MONS_GUITARIST_2 }; const u16 gBattleFrontierTrainerMons_Hal[] = { - 268, - 307, - 317, - 349, - 352, - 573, - 583, - 585, - 588, - 590, - 599, - 614, - 618, - 635, - 639, - -1 + FRONTIER_MONS_GUITARIST_2 }; const u16 gBattleFrontierTrainerMons_Gage[] = { - 289, - 318, - 319, - 329, - 355, - 375, - 379, - 385, - 386, - 457, - 473, - 477, - 482, - 484, - 553, - 567, - 571, - 577, - 578, - 649, - -1 + FRONTIER_MONS_BIRD_KEEPER_2 }; const u16 gBattleFrontierTrainerMons_Arnold[] = { - 289, - 318, - 319, - 329, - 355, - 375, - 379, - 385, - 386, - 457, - 473, - 477, - 482, - 484, - 553, - 567, - 571, - 577, - 578, - 649, - -1 + FRONTIER_MONS_BIRD_KEEPER_2 }; const u16 gBattleFrontierTrainerMons_Jarrett[] = { - 565, - 573, - 576, - 580, - 582, - 584, - 592, - 601, - 602, - 610, - 621, - 623, - 626, - 631, - 634, - 640, - 641, - 644, - 648, - 650, - 651, - 653, - 655, - -1 + FRONTIER_MONS_SAILOR_2 }; const u16 gBattleFrontierTrainerMons_Garett[] = { - 565, - 573, - 576, - 580, - 582, - 584, - 592, - 601, - 602, - 610, - 621, - 623, - 626, - 631, - 634, - 640, - 641, - 644, - 648, - 650, - 651, - 653, - 655, - -1 + FRONTIER_MONS_SAILOR_2 }; const u16 gBattleFrontierTrainerMons_Emanuel[] = { - 564, - 565, - 574, - 579, - 582, - 594, - 595, - 605, - 606, - 608, - 609, - 616, - 619, - 620, - 623, - 624, - 625, - 627, - 642, - 643, - -1 + FRONTIER_MONS_HIKER_2 }; const u16 gBattleFrontierTrainerMons_Gustavo[] = { - 564, - 565, - 574, - 579, - 582, - 594, - 595, - 605, - 606, - 608, - 609, - 616, - 619, - 620, - 623, - 624, - 625, - 627, - 642, - 643, - -1 + FRONTIER_MONS_HIKER_2 }; const u16 gBattleFrontierTrainerMons_Kameron[] = { - 568, - 581, - 589, - 598, - 600, - 603, - 607, - 611, - 617, - 618, - 622, - 636, - 643, - 646, - 647, - 652, - 654, - 656, - 659, - -1 + FRONTIER_MONS_KINDLER_2 }; const u16 gBattleFrontierTrainerMons_Alfredo[] = { - 568, - 581, - 589, - 598, - 600, - 603, - 607, - 611, - 617, - 618, - 622, - 636, - 643, - 646, - 647, - 652, - 654, - 656, - 659, - -1 + FRONTIER_MONS_KINDLER_2 }; const u16 gBattleFrontierTrainerMons_Ruben[] = { - 612, - 613, - 614, - 615, - 616, - 617, - 618, - 619, - 620, - 621, - 622, - 623, - 624, - 625, - 626, - 627, - 628, - 629, - 630, - 631, - 632, - 633, - 634, - 635, - 636, - 637, - 638, - 639, - 640, - 641, - 642, - 643, - 644, - 645, - 646, - 647, - 648, - 649, - 650, - 651, - 652, - 653, - 654, - 655, - 656, - 657, - 658, - 659, - -1 + FRONTIER_MONS_GENTLEMAN_2 }; const u16 gBattleFrontierTrainerMons_Lamar[] = { - 612, - 613, - 614, - 615, - 616, - 617, - 618, - 619, - 620, - 621, - 622, - 623, - 624, - 625, - 626, - 627, - 628, - 629, - 630, - 631, - 632, - 633, - 634, - 635, - 636, - 637, - 638, - 639, - 640, - 641, - 642, - 643, - 644, - 645, - 646, - 647, - 648, - 649, - 650, - 651, - 652, - 653, - 654, - 655, - 656, - 657, - 658, - 659, - -1 + FRONTIER_MONS_GENTLEMAN_2 }; const u16 gBattleFrontierTrainerMons_Jaxon[] = { - 660, - 661, - 662, - 663, - 664, - 665, - 666, - 667, - 668, - 669, - 670, - 671, - 672, - 673, - 674, - 675, - 676, - 677, - 678, - 679, - 680, - 681, - 682, - 683, - 684, - 685, - 686, - 687, - 688, - 689, - 690, - 691, - 692, - -1 + FRONTIER_MONS_YOUNGSTER_LASS_3 }; const u16 gBattleFrontierTrainerMons_Logan[] = { - 660, - 661, - 662, - 663, - 664, - 665, - 666, - 667, - 668, - 669, - 670, - 671, - 672, - 673, - 674, - 675, - 676, - 677, - 678, - 679, - 680, - 681, - 682, - 683, - 684, - 685, - 686, - 687, - 688, - 689, - 690, - 691, - 692, - -1 + FRONTIER_MONS_YOUNGSTER_LASS_3 }; const u16 gBattleFrontierTrainerMons_Emilee[] = { - 660, - 661, - 662, - 663, - 664, - 665, - 666, - 667, - 668, - 669, - 670, - 671, - 672, - 673, - 674, - 675, - 676, - 677, - 678, - 679, - 680, - 681, - 682, - 683, - 684, - 685, - 686, - 687, - 688, - 689, - 690, - 691, - 692, - -1 + FRONTIER_MONS_YOUNGSTER_LASS_3 }; const u16 gBattleFrontierTrainerMons_Josie[] = { - 660, - 661, - 662, - 663, - 664, - 665, - 666, - 667, - 668, - 669, - 670, - 671, - 672, - 673, - 674, - 675, - 676, - 677, - 678, - 679, - 680, - 681, - 682, - 683, - 684, - 685, - 686, - 687, - 688, - 689, - 690, - 691, - 692, - -1 + FRONTIER_MONS_YOUNGSTER_LASS_3 }; const u16 gBattleFrontierTrainerMons_Armando[] = { - 693, - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - -1 + FRONTIER_MONS_CAMPER_PICNICKER_2 }; const u16 gBattleFrontierTrainerMons_Skyler[] = { - 693, - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - -1 + FRONTIER_MONS_CAMPER_PICNICKER_2 }; const u16 gBattleFrontierTrainerMons_Ruth[] = { - 693, - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - -1 + FRONTIER_MONS_CAMPER_PICNICKER_2 }; const u16 gBattleFrontierTrainerMons_Melody[] = { - 693, - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - -1 + FRONTIER_MONS_CAMPER_PICNICKER_2 }; const u16 gBattleFrontierTrainerMons_Pedro[] = { - 347, - 661, - 664, - 669, - 672, - 676, - 677, - 678, - 680, - 685, - 688, - 694, - 696, - 697, - 698, - 699, - 706, - 713, - 717, - 719, - 722, - 724, - 727, - 730, - 736, - 737, - 740, - 744, - 746, - 747, - 748, - 749, - 750, - 751, - 755, - -1 + FRONTIER_MONS_SWIMMER_M_2 }; const u16 gBattleFrontierTrainerMons_Erick[] = { - 347, - 661, - 664, - 669, - 672, - 676, - 677, - 678, - 680, - 685, - 688, - 694, - 696, - 697, - 698, - 699, - 706, - 713, - 717, - 719, - 722, - 724, - 727, - 730, - 736, - 737, - 740, - 744, - 746, - 747, - 748, - 749, - 750, - 751, - 755, - -1 + FRONTIER_MONS_SWIMMER_M_2 }; const u16 gBattleFrontierTrainerMons_Elaine[] = { - 664, - 665, - 669, - 672, - 676, - 677, - 680, - 685, - 687, - 688, - 694, - 696, - 697, - 698, - 699, - 706, - 713, - 717, - 722, - 724, - 727, - 730, - 736, - 737, - 740, - 744, - 746, - 747, - 748, - 749, - 750, - 751, - 755, - -1 + FRONTIER_MONS_SWIMMER_F_2 }; const u16 gBattleFrontierTrainerMons_Joyce[] = { - 664, - 665, - 669, - 672, - 676, - 677, - 680, - 685, - 687, - 688, - 694, - 696, - 697, - 698, - 699, - 706, - 713, - 717, - 722, - 724, - 727, - 730, - 736, - 737, - 740, - 744, - 746, - 747, - 748, - 749, - 750, - 751, - 755, - -1 + FRONTIER_MONS_SWIMMER_F_2 }; const u16 gBattleFrontierTrainerMons_Todd[] = { - 267, - 273, - 305, - 312, - 325, - 332, - 352, - 662, - 665, - 668, - 669, - 670, - 672, - 673, - 676, - 677, - 679, - 680, - 682, - 688, - 697, - 698, - 699, - 700, - 707, - 710, - 718, - 720, - 724, - 725, - 728, - 730, - 731, - 732, - 734, - 735, - 744, - 748, - 750, - 751, - -1 + FRONTIER_MONS_POKEFAN_3 }; const u16 gBattleFrontierTrainerMons_Gavin[] = { - 267, - 273, - 305, - 312, - 325, - 332, - 352, - 662, - 665, - 668, - 669, - 670, - 672, - 673, - 676, - 677, - 679, - 680, - 682, - 688, - 697, - 698, - 699, - 700, - 707, - 710, - 718, - 720, - 724, - 725, - 728, - 730, - 731, - 732, - 734, - 735, - 744, - 748, - 750, - 751, - -1 + FRONTIER_MONS_POKEFAN_3 }; const u16 gBattleFrontierTrainerMons_Malory[] = { - 267, - 273, - 305, - 312, - 325, - 332, - 352, - 662, - 665, - 668, - 669, - 670, - 672, - 673, - 676, - 677, - 679, - 680, - 682, - 688, - 697, - 698, - 699, - 700, - 707, - 710, - 718, - 720, - 724, - 725, - 728, - 730, - 731, - 732, - 734, - 735, - 744, - 748, - 750, - 751, - -1 + FRONTIER_MONS_POKEFAN_3 }; const u16 gBattleFrontierTrainerMons_Esther[] = { - 267, - 273, - 305, - 312, - 325, - 332, - 352, - 662, - 665, - 668, - 669, - 670, - 672, - 673, - 676, - 677, - 679, - 680, - 682, - 688, - 697, - 698, - 699, - 700, - 707, - 710, - 718, - 720, - 724, - 725, - 728, - 730, - 731, - 732, - 734, - 735, - 744, - 748, - 750, - 751, - -1 + FRONTIER_MONS_POKEFAN_3 }; const u16 gBattleFrontierTrainerMons_Oscar[] = { - 726, - 727, - 728, - 729, - 730, - 731, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - -1 + FRONTIER_MONS_PKMN_BREEDER_2 }; const u16 gBattleFrontierTrainerMons_Wilson[] = { - 726, - 727, - 728, - 729, - 730, - 731, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - -1 + FRONTIER_MONS_PKMN_BREEDER_2 }; const u16 gBattleFrontierTrainerMons_Clare[] = { - 726, - 727, - 728, - 729, - 730, - 731, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - -1 + FRONTIER_MONS_PKMN_BREEDER_2 }; const u16 gBattleFrontierTrainerMons_Tess[] = { - 726, - 727, - 728, - 729, - 730, - 731, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - -1 + FRONTIER_MONS_PKMN_BREEDER_2 }; const u16 gBattleFrontierTrainerMons_Leon[] = { - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 516, - 517, - 518, - 519, - 520, - 521, - 522, - 523, - 524, - 525, - 526, - 527, - 528, - 529, - 530, - 531, - 532, - 533, - 534, - 535, - 536, - 537, - 538, - 539, - 612, - 613, - 614, - 615, - 616, - 617, - 618, - 619, - 620, - 621, - 622, - 623, - 624, - 625, - 626, - 627, - 628, - 629, - 630, - 631, - 632, - 633, - 634, - 635, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - 726, - 727, - 728, - 729, - 730, - 731, - -1 + FRONTIER_MONS_COOLTRAINER_M_2A }; const u16 gBattleFrontierTrainerMons_Alonzo[] = { - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 540, - 541, - 542, - 543, - 544, - 545, - 546, - 547, - 548, - 549, - 550, - 551, - 552, - 553, - 554, - 555, - 556, - 557, - 558, - 559, - 560, - 561, - 562, - 563, - 636, - 637, - 638, - 639, - 640, - 641, - 642, - 643, - 644, - 645, - 646, - 647, - 648, - 649, - 650, - 651, - 652, - 653, - 654, - 655, - 656, - 657, - 658, - 659, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - -1 + FRONTIER_MONS_COOLTRAINER_M_2B }; const u16 gBattleFrontierTrainerMons_Vince[] = { - 421, - 425, - 431, - 437, - 439, - 456, - 460, - 465, - 466, - 517, - 521, - 527, - 533, - 535, - 552, - 556, - 561, - 562, - 613, - 617, - 623, - 629, - 631, - 648, - 652, - 657, - 658, - 709, - 713, - 719, - 725, - 727, - 744, - 748, - 753, - 754, - 766, - 777, - 788, - 799, - 800, - 801, - 802, - 803, - 804, - 805, - 806, - 807, - 808, - 809, - 810, - 811, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 820, - 821, - 822, - 823, - 824, - 825, - 826, - 827, - 828, - 829, - 830, - 831, - 832, - 833, - 834, - 835, - 846, - 847, - 848, - 849, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - -1 + FRONTIER_MONS_COOLTRAINER_2C(LATIOS) }; const u16 gBattleFrontierTrainerMons_Bryon[] = { - 756, - 757, - 758, - 759, - 760, - 761, - 762, - 763, - 764, - 766, - 767, - 768, - 769, - 770, - 771, - 772, - 773, - 774, - 775, - 777, - 778, - 779, - 780, - 781, - 782, - 783, - 784, - 785, - 786, - 788, - 789, - 790, - 791, - 792, - 793, - 794, - 795, - 796, - 797, - 799, - 836, - 837, - 838, - 839, - 840, - 841, - 846, - 847, - 848, - 849, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - -1 + FRONTIER_MONS_COOLTRAINER_2D(LATIOS) }; const u16 gBattleFrontierTrainerMons_Ava[] = { - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 564, - 565, - 566, - 567, - 568, - 569, - 570, - 571, - 572, - 573, - 574, - 575, - 576, - 577, - 578, - 579, - 580, - 581, - 582, - 583, - 584, - 585, - 586, - 587, - 660, - 661, - 662, - 663, - 664, - 665, - 666, - 667, - 668, - 669, - 670, - 671, - 672, - 673, - 674, - 675, - 676, - 677, - 678, - 679, - 680, - 681, - 682, - 683, - -1 + FRONTIER_MONS_COOLTRAINER_F_2A }; const u16 gBattleFrontierTrainerMons_Miriam[] = { - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500, - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 588, - 589, - 590, - 591, - 592, - 593, - 594, - 595, - 596, - 597, - 598, - 599, - 600, - 601, - 602, - 603, - 604, - 605, - 606, - 607, - 608, - 609, - 610, - 611, - 684, - 685, - 686, - 687, - 688, - 689, - 690, - 691, - 692, - 693, - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - -1 + FRONTIER_MONS_COOLTRAINER_F_2B }; const u16 gBattleFrontierTrainerMons_Carrie[] = { - 421, - 425, - 431, - 437, - 439, - 456, - 460, - 465, - 466, - 517, - 521, - 527, - 533, - 535, - 552, - 556, - 561, - 562, - 613, - 617, - 623, - 629, - 631, - 648, - 652, - 657, - 658, - 709, - 713, - 719, - 725, - 727, - 744, - 748, - 753, - 754, - 765, - 776, - 787, - 798, - 800, - 801, - 802, - 803, - 804, - 805, - 806, - 807, - 808, - 809, - 810, - 811, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 820, - 821, - 822, - 823, - 824, - 825, - 826, - 827, - 828, - 829, - 830, - 831, - 832, - 833, - 834, - 835, - 842, - 843, - 844, - 845, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - -1 + FRONTIER_MONS_COOLTRAINER_2C(LATIAS) }; const u16 gBattleFrontierTrainerMons_Gillian2[] = { - 756, - 757, - 758, - 759, - 760, - 761, - 762, - 763, - 764, - 765, - 767, - 768, - 769, - 770, - 771, - 772, - 773, - 774, - 775, - 776, - 778, - 779, - 780, - 781, - 782, - 783, - 784, - 785, - 786, - 787, - 789, - 790, - 791, - 792, - 793, - 794, - 795, - 796, - 797, - 798, - 836, - 837, - 838, - 839, - 840, - 841, - 842, - 843, - 844, - 845, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - -1 + FRONTIER_MONS_COOLTRAINER_2D(LATIAS) }; const u16 gBattleFrontierTrainerMons_Tyler[] = { - 660, - 661, - 662, - 663, - 664, - 665, - 666, - 667, - 668, - 669, - 670, - 671, - 672, - 673, - 674, - 675, - 676, - 677, - 678, - 679, - 680, - 681, - 682, - 683, - 684, - 685, - 686, - 687, - 688, - 689, - 690, - 691, - 692, - 693, - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - 726, - 727, - 728, - 729, - 730, - 731, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - -1 + FRONTIER_MONS_GENERAL_A }; const u16 gBattleFrontierTrainerMons_Chaz[] = { - 564, - 565, - 566, - 567, - 568, - 569, - 570, - 571, - 572, - 573, - 574, - 575, - 576, - 577, - 578, - 579, - 580, - 581, - 582, - 583, - 584, - 585, - 586, - 587, - 588, - 589, - 590, - 591, - 592, - 593, - 594, - 595, - 596, - 597, - 598, - 599, - 600, - 601, - 602, - 603, - 604, - 605, - 606, - 607, - 608, - 609, - 610, - 611, - 612, - 613, - 614, - 615, - 616, - 617, - 618, - 619, - 620, - 621, - 622, - 623, - 624, - 625, - 626, - 627, - 628, - 629, - 630, - 631, - 632, - 633, - 634, - 635, - 636, - 637, - 638, - 639, - 640, - 641, - 642, - 643, - 644, - 645, - 646, - 647, - 648, - 649, - 650, - 651, - 652, - 653, - 654, - 655, - 656, - 657, - 658, - 659, - -1 + FRONTIER_MONS_GENERAL_B }; const u16 gBattleFrontierTrainerMons_Nelson[] = { - 756, - 757, - 758, - 759, - 760, - 761, - 762, - 763, - 764, - 766, - 767, - 768, - 769, - 770, - 771, - 772, - 773, - 774, - 775, - 777, - 778, - 779, - 780, - 781, - 782, - 783, - 784, - 785, - 786, - 788, - 789, - 790, - 791, - 792, - 793, - 794, - 795, - 796, - 797, - 799, - 836, - 837, - 838, - 839, - 840, - 841, - 846, - 847, - 848, - 849, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - -1 + FRONTIER_MONS_COOLTRAINER_2D(LATIOS) }; const u16 gBattleFrontierTrainerMons_Shania[] = { - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500, - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520, - 521, - 522, - 523, - 524, - 525, - 526, - 527, - 528, - 529, - 530, - 531, - 532, - 533, - 534, - 535, - 536, - 537, - 538, - 539, - 540, - 541, - 542, - 543, - 544, - 545, - 546, - 547, - 548, - 549, - 550, - 551, - 552, - 553, - 554, - 555, - 556, - 557, - 558, - 559, - 560, - 561, - 562, - 563, - -1 + FRONTIER_MONS_GENERAL_C }; const u16 gBattleFrontierTrainerMons_Stella[] = { - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - -1 + FRONTIER_MONS_GENERAL_D }; const u16 gBattleFrontierTrainerMons_Dorine[] = { - 756, - 757, - 758, - 759, - 760, - 761, - 762, - 763, - 764, - 765, - 767, - 768, - 769, - 770, - 771, - 772, - 773, - 774, - 775, - 776, - 778, - 779, - 780, - 781, - 782, - 783, - 784, - 785, - 786, - 787, - 789, - 790, - 791, - 792, - 793, - 794, - 795, - 796, - 797, - 798, - 836, - 837, - 838, - 839, - 840, - 841, - 842, - 843, - 844, - 845, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - -1 + FRONTIER_MONS_COOLTRAINER_2D(LATIAS) }; const u16 gBattleFrontierTrainerMons_Maddox[] = { - 403, - 412, - 413, - 414, - 433, - 435, - 440, - 450, - 454, - 456, - 459, - 461, - 463, - 465, - 499, - 508, - 509, - 510, - 529, - 531, - 536, - 546, - 550, - 552, - 555, - 557, - 559, - 561, - 595, - 604, - 605, - 606, - 625, - 627, - 632, - 642, - 646, - 648, - 651, - 653, - 655, - 657, - 691, - 700, - 701, - 702, - 721, - 723, - 728, - 738, - 742, - 744, - 747, - 749, - 751, - 753, - 765, - 766, - 776, - 777, - 787, - 788, - 798, - 799, - 828, - 829, - 830, - 831, - 842, - 843, - 844, - 845, - 846, - 847, - 848, - 849, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - -1 + FRONTIER_MONS_DRAGON_TAMER_2 }; const u16 gBattleFrontierTrainerMons_Davin[] = { - 403, - 412, - 413, - 414, - 433, - 435, - 440, - 450, - 454, - 456, - 459, - 461, - 463, - 465, - 499, - 508, - 509, - 510, - 529, - 531, - 536, - 546, - 550, - 552, - 555, - 557, - 559, - 561, - 595, - 604, - 605, - 606, - 625, - 627, - 632, - 642, - 646, - 648, - 651, - 653, - 655, - 657, - 691, - 700, - 701, - 702, - 721, - 723, - 728, - 738, - 742, - 744, - 747, - 749, - 751, - 753, - 765, - 766, - 776, - 777, - 787, - 788, - 798, - 799, - 828, - 829, - 830, - 831, - 842, - 843, - 844, - 845, - 846, - 847, - 848, - 849, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - -1 + FRONTIER_MONS_DRAGON_TAMER_2 }; const u16 gBattleFrontierTrainerMons_Trevon[] = { - 403, - 412, - 413, - 414, - 433, - 435, - 440, - 450, - 454, - 456, - 459, - 461, - 463, - 465, - 499, - 508, - 509, - 510, - 529, - 531, - 536, - 546, - 550, - 552, - 555, - 557, - 559, - 561, - 595, - 604, - 605, - 606, - 625, - 627, - 632, - 642, - 646, - 648, - 651, - 653, - 655, - 657, - 691, - 700, - 701, - 702, - 721, - 723, - 728, - 738, - 742, - 744, - 747, - 749, - 751, - 753, - 765, - 766, - 776, - 777, - 787, - 788, - 798, - 799, - 828, - 829, - 830, - 831, - 842, - 843, - 844, - 845, - 846, - 847, - 848, - 849, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - -1 + FRONTIER_MONS_DRAGON_TAMER_2 }; const u16 gBattleFrontierTrainerMons_Mateo[] = { - 373, - 382, - 390, - 402, - 403, - 416, - 417, - 424, - 431, - 432, - 435, - 450, - 451, - 469, - 480, - 486, - 498, - 499, - 512, - 513, - 520, - 527, - 528, - 531, - 546, - 547, - 565, - 574, - 582, - 594, - 595, - 608, - 609, - 616, - 623, - 624, - 627, - 642, - 643, - 661, - 670, - 678, - 690, - 691, - 704, - 705, - 712, - 719, - 720, - 723, - 738, - 739, - 808, - 809, - 810, - 811, - -1 + FRONTIER_MONS_BLACK_BELT_2A }; const u16 gBattleFrontierTrainerMons_Bret[] = { - 373, - 382, - 390, - 415, - 419, - 424, - 426, - 430, - 431, - 444, - 451, - 454, - 455, - 464, - 469, - 480, - 486, - 511, - 515, - 520, - 522, - 526, - 527, - 540, - 547, - 550, - 551, - 560, - 565, - 574, - 582, - 607, - 611, - 616, - 618, - 622, - 623, - 636, - 643, - 646, - 647, - 656, - 661, - 670, - 678, - 703, - 707, - 712, - 714, - 718, - 719, - 732, - 739, - 742, - 743, - 752, - 808, - 809, - 810, - 811, - -1 + FRONTIER_MONS_BLACK_BELT_BATTLE_GIRL_2B }; const u16 gBattleFrontierTrainerMons_Raul[] = { - 373, - 382, - 383, - 386, - 390, - 423, - 424, - 431, - 433, - 450, - 451, - 466, - 469, - 480, - 481, - 482, - 486, - 519, - 520, - 527, - 529, - 546, - 547, - 562, - 565, - 574, - 575, - 578, - 582, - 615, - 616, - 623, - 625, - 642, - 643, - 658, - 661, - 670, - 671, - 674, - 678, - 711, - 712, - 719, - 721, - 738, - 739, - 754, - 808, - 809, - 810, - 811, - 832, - 833, - 834, - 835, - -1 + FRONTIER_MONS_BLACK_BELT_BATTLE_GIRL_2C }; const u16 gBattleFrontierTrainerMons_Kay[] = { - 373, - 382, - 387, - 390, - 402, - 403, - 413, - 414, - 424, - 427, - 431, - 433, - 451, - 469, - 470, - 480, - 486, - 498, - 499, - 509, - 510, - 520, - 523, - 527, - 529, - 547, - 565, - 574, - 579, - 582, - 594, - 595, - 605, - 606, - 616, - 619, - 623, - 625, - 643, - 661, - 670, - 675, - 678, - 690, - 691, - 701, - 702, - 712, - 715, - 719, - 721, - 739, - 808, - 809, - 810, - 811, - -1 + FRONTIER_MONS_BATTLE_GIRL_2A }; const u16 gBattleFrontierTrainerMons_Elena[] = { - 373, - 382, - 390, - 415, - 419, - 424, - 426, - 430, - 431, - 444, - 451, - 454, - 455, - 464, - 469, - 480, - 486, - 511, - 515, - 520, - 522, - 526, - 527, - 540, - 547, - 550, - 551, - 560, - 565, - 574, - 582, - 607, - 611, - 616, - 618, - 622, - 623, - 636, - 643, - 646, - 647, - 656, - 661, - 670, - 678, - 703, - 707, - 712, - 714, - 718, - 719, - 732, - 739, - 742, - 743, - 752, - 808, - 809, - 810, - 811, - -1 + FRONTIER_MONS_BLACK_BELT_BATTLE_GIRL_2B }; const u16 gBattleFrontierTrainerMons_Alana[] = { - 373, - 382, - 383, - 386, - 390, - 423, - 424, - 431, - 433, - 450, - 451, - 466, - 469, - 480, - 481, - 482, - 486, - 519, - 520, - 527, - 529, - 546, - 547, - 562, - 565, - 574, - 575, - 578, - 582, - 615, - 616, - 623, - 625, - 642, - 643, - 658, - 661, - 670, - 671, - 674, - 678, - 711, - 712, - 719, - 721, - 738, - 739, - 754, - 808, - 809, - 810, - 811, - 832, - 833, - 834, - 835, - -1 + FRONTIER_MONS_BLACK_BELT_BATTLE_GIRL_2C }; const u16 gBattleFrontierTrainerMons_Alexas[] = { - 382, - 387, - 403, - 423, - 424, - 425, - 431, - 433, - 435, - 450, - 459, - 461, - 465, - 466, - 470, - 480, - 499, - 519, - 520, - 521, - 527, - 529, - 531, - 546, - 555, - 557, - 561, - 562, - 574, - 579, - 595, - 615, - 616, - 617, - 623, - 625, - 627, - 642, - 651, - 653, - 657, - 658, - 670, - 675, - 691, - 711, - 712, - 713, - 719, - 721, - 723, - 738, - 747, - 749, - 753, - 754, - 762, - 763, - 764, - 773, - 774, - 775, - 784, - 785, - 786, - 795, - 796, - 797, - 804, - 805, - 806, - 807, - 808, - 809, - 810, - 811, - 828, - 829, - 830, - 831, - 832, - 833, - 834, - 835, - 836, - 837, - 838, - 839, - 840, - 841, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - -1 + FRONTIER_MONS_EXPERT_2A(TYRANITAR) }; const u16 gBattleFrontierTrainerMons_Weston[] = { - 374, - 377, - 404, - 421, - 422, - 426, - 437, - 439, - 446, - 451, - 453, - 457, - 458, - 472, - 475, - 500, - 517, - 518, - 522, - 533, - 535, - 542, - 547, - 549, - 553, - 554, - 566, - 569, - 596, - 613, - 614, - 618, - 629, - 631, - 638, - 643, - 645, - 649, - 650, - 662, - 665, - 692, - 709, - 710, - 714, - 725, - 727, - 734, - 739, - 741, - 745, - 746, - 762, - 763, - 764, - 766, - 773, - 774, - 775, - 777, - 784, - 785, - 786, - 788, - 795, - 796, - 797, - 799, - 800, - 801, - 802, - 803, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 836, - 837, - 838, - 839, - 840, - 841, - 846, - 847, - 848, - 849, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - -1 + FRONTIER_MONS_EXPERT_2B(LATIOS) }; const u16 gBattleFrontierTrainerMons_Jasper[] = { - 378, - 388, - 400, - 409, - 410, - 411, - 416, - 429, - 432, - 438, - 447, - 452, - 456, - 460, - 462, - 463, - 471, - 476, - 496, - 505, - 506, - 507, - 512, - 525, - 528, - 534, - 543, - 548, - 552, - 556, - 558, - 559, - 570, - 580, - 592, - 601, - 602, - 603, - 608, - 621, - 624, - 630, - 639, - 644, - 648, - 652, - 654, - 655, - 666, - 676, - 688, - 697, - 698, - 699, - 704, - 717, - 720, - 726, - 735, - 740, - 744, - 748, - 750, - 751, - 762, - 763, - 764, - 773, - 774, - 775, - 784, - 785, - 786, - 795, - 796, - 797, - 820, - 821, - 822, - 823, - 824, - 825, - 826, - 827, - 836, - 837, - 838, - 839, - 840, - 841, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - -1 + FRONTIER_MONS_EXPERT_2C(TYRANITAR) }; const u16 gBattleFrontierTrainerMons_Nadia[] = { - 382, - 387, - 403, - 423, - 424, - 425, - 431, - 433, - 435, - 450, - 459, - 461, - 465, - 466, - 470, - 480, - 499, - 519, - 520, - 521, - 527, - 529, - 531, - 546, - 555, - 557, - 561, - 562, - 574, - 579, - 595, - 615, - 616, - 617, - 623, - 625, - 627, - 642, - 651, - 653, - 657, - 658, - 670, - 675, - 691, - 711, - 712, - 713, - 719, - 721, - 723, - 738, - 747, - 749, - 753, - 754, - 762, - 763, - 764, - 773, - 774, - 775, - 784, - 785, - 786, - 795, - 796, - 797, - 804, - 805, - 806, - 807, - 808, - 809, - 810, - 811, - 828, - 829, - 830, - 831, - 832, - 833, - 834, - 835, - 836, - 837, - 838, - 839, - 840, - 841, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - -1 + FRONTIER_MONS_EXPERT_2A(DRAGONITE) }; const u16 gBattleFrontierTrainerMons_Miranda[] = { - 374, - 377, - 404, - 421, - 422, - 426, - 437, - 439, - 446, - 451, - 453, - 457, - 458, - 472, - 475, - 500, - 517, - 518, - 522, - 533, - 535, - 542, - 547, - 549, - 553, - 554, - 566, - 569, - 596, - 613, - 614, - 618, - 629, - 631, - 638, - 643, - 645, - 649, - 650, - 662, - 665, - 692, - 709, - 710, - 714, - 725, - 727, - 734, - 739, - 741, - 745, - 746, - 762, - 763, - 764, - 765, - 773, - 774, - 775, - 776, - 784, - 785, - 786, - 787, - 795, - 796, - 797, - 798, - 800, - 801, - 802, - 803, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 836, - 837, - 838, - 839, - 840, - 841, - 842, - 843, - 844, - 845, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - -1 + FRONTIER_MONS_EXPERT_2B(LATIAS) }; const u16 gBattleFrontierTrainerMons_Emma[] = { - 378, - 388, - 400, - 409, - 410, - 411, - 416, - 429, - 432, - 438, - 447, - 452, - 456, - 460, - 462, - 463, - 471, - 476, - 496, - 505, - 506, - 507, - 512, - 525, - 528, - 534, - 543, - 548, - 552, - 556, - 558, - 559, - 570, - 580, - 592, - 601, - 602, - 603, - 608, - 621, - 624, - 630, - 639, - 644, - 648, - 652, - 654, - 655, - 666, - 676, - 688, - 697, - 698, - 699, - 704, - 717, - 720, - 726, - 735, - 740, - 744, - 748, - 750, - 751, - 762, - 763, - 764, - 773, - 774, - 775, - 784, - 785, - 786, - 795, - 796, - 797, - 820, - 821, - 822, - 823, - 824, - 825, - 826, - 827, - 836, - 837, - 838, - 839, - 840, - 841, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - -1 + FRONTIER_MONS_EXPERT_2C(DRAGONITE) }; const u16 gBattleFrontierTrainerMons_Rolando[] = { - 185, - 290, - 377, - 380, - 385, - 401, - 404, - 409, - 410, - 428, - 437, - 438, - 439, - 446, - 466, - 475, - 478, - 484, - 497, - 500, - 505, - 506, - 524, - 533, - 534, - 535, - 542, - 562, - 569, - 572, - 577, - 593, - 596, - 601, - 602, - 620, - 629, - 630, - 631, - 638, - 658, - 665, - 668, - 673, - 689, - 692, - 697, - 698, - 716, - 725, - 726, - 727, - 734, - 754, - 756, - 757, - 758, - 766, - 767, - 768, - 769, - 777, - 778, - 779, - 780, - 788, - 789, - 790, - 791, - 799, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 832, - 833, - 834, - 835, - 846, - 847, - 848, - 849, - 870, - 871, - 872, - 873, - 874, - 875, - -1 + FRONTIER_MONS_PSYCHIC_2A(LATIOS) }; const u16 gBattleFrontierTrainerMons_Stanly[] = { - 185, - 290, - 377, - 380, - 385, - 401, - 404, - 409, - 410, - 428, - 437, - 438, - 439, - 446, - 466, - 475, - 478, - 484, - 497, - 500, - 505, - 506, - 524, - 533, - 534, - 535, - 542, - 562, - 569, - 572, - 577, - 593, - 596, - 601, - 602, - 620, - 629, - 630, - 631, - 638, - 658, - 665, - 668, - 673, - 689, - 692, - 697, - 698, - 716, - 725, - 726, - 727, - 734, - 754, - 759, - 760, - 761, - 766, - 770, - 771, - 772, - 777, - 781, - 782, - 783, - 788, - 792, - 793, - 794, - 799, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 832, - 833, - 834, - 835, - 846, - 847, - 848, - 849, - 876, - 877, - 878, - 879, - 880, - 881, - -1 + FRONTIER_MONS_PSYCHIC_2B(LATIOS) }; const u16 gBattleFrontierTrainerMons_Dario[] = { - 185, - 290, - 377, - 380, - 385, - 401, - 404, - 409, - 410, - 428, - 437, - 438, - 439, - 446, - 466, - 475, - 478, - 484, - 497, - 500, - 505, - 506, - 524, - 533, - 534, - 535, - 542, - 562, - 569, - 572, - 577, - 593, - 596, - 601, - 602, - 620, - 629, - 630, - 631, - 638, - 658, - 665, - 668, - 673, - 689, - 692, - 697, - 698, - 716, - 725, - 726, - 727, - 734, - 754, - 762, - 763, - 764, - 766, - 773, - 774, - 775, - 777, - 784, - 785, - 786, - 788, - 795, - 796, - 797, - 799, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 832, - 833, - 834, - 835, - 836, - 837, - 838, - 839, - 840, - 841, - 846, - 847, - 848, - 849, - -1 + FRONTIER_MONS_PSYCHIC_2C(LATIOS) }; const u16 gBattleFrontierTrainerMons_Karlee[] = { - 185, - 290, - 377, - 380, - 385, - 401, - 404, - 409, - 410, - 428, - 437, - 438, - 439, - 446, - 466, - 475, - 478, - 484, - 497, - 500, - 505, - 506, - 524, - 533, - 534, - 535, - 542, - 562, - 569, - 572, - 577, - 593, - 596, - 601, - 602, - 620, - 629, - 630, - 631, - 638, - 658, - 665, - 668, - 673, - 689, - 692, - 697, - 698, - 716, - 725, - 726, - 727, - 734, - 754, - 756, - 757, - 758, - 765, - 767, - 768, - 769, - 776, - 778, - 779, - 780, - 787, - 789, - 790, - 791, - 798, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 832, - 833, - 834, - 835, - 842, - 843, - 844, - 845, - 870, - 871, - 872, - 873, - 874, - 875, - -1 + FRONTIER_MONS_PSYCHIC_2A(LATIAS) }; const u16 gBattleFrontierTrainerMons_Jaylin[] = { - 185, - 290, - 377, - 380, - 385, - 401, - 404, - 409, - 410, - 428, - 437, - 438, - 439, - 446, - 466, - 475, - 478, - 484, - 497, - 500, - 505, - 506, - 524, - 533, - 534, - 535, - 542, - 562, - 569, - 572, - 577, - 593, - 596, - 601, - 602, - 620, - 629, - 630, - 631, - 638, - 658, - 665, - 668, - 673, - 689, - 692, - 697, - 698, - 716, - 725, - 726, - 727, - 734, - 754, - 759, - 760, - 761, - 765, - 770, - 771, - 772, - 776, - 781, - 782, - 783, - 787, - 792, - 793, - 794, - 798, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 832, - 833, - 834, - 835, - 842, - 843, - 844, - 845, - 876, - 877, - 878, - 879, - 880, - 881, - -1 + FRONTIER_MONS_PSYCHIC_2B(LATIAS) }; const u16 gBattleFrontierTrainerMons_Ingrid[] = { - 185, - 290, - 377, - 380, - 385, - 401, - 404, - 409, - 410, - 428, - 437, - 438, - 439, - 446, - 466, - 475, - 478, - 484, - 497, - 500, - 505, - 506, - 524, - 533, - 534, - 535, - 542, - 562, - 569, - 572, - 577, - 593, - 596, - 601, - 602, - 620, - 629, - 630, - 631, - 638, - 658, - 665, - 668, - 673, - 689, - 692, - 697, - 698, - 716, - 725, - 726, - 727, - 734, - 754, - 762, - 763, - 764, - 765, - 773, - 774, - 775, - 776, - 784, - 785, - 786, - 787, - 795, - 796, - 797, - 798, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 832, - 833, - 834, - 835, - 836, - 837, - 838, - 839, - 840, - 841, - 842, - 843, - 844, - 845, - -1 + FRONTIER_MONS_PSYCHIC_2C(LATIAS) }; const u16 gBattleFrontierTrainerMons_Delilah[] = { - 347, - 352, - 374, - 378, - 398, - 421, - 426, - 447, - 472, - 476, - 494, - 517, - 522, - 543, - 566, - 570, - 590, - 613, - 618, - 639, - 662, - 666, - 686, - 709, - 714, - 735, - 800, - 801, - 802, - 803, - -1 + FRONTIER_MONS_HEX_MANIAC_2A }; const u16 gBattleFrontierTrainerMons_Carly[] = { - 344, - 374, - 378, - 394, - 395, - 405, - 413, - 414, - 420, - 421, - 434, - 441, - 457, - 472, - 476, - 490, - 491, - 501, - 509, - 510, - 516, - 517, - 530, - 537, - 553, - 566, - 570, - 586, - 587, - 597, - 605, - 606, - 612, - 613, - 626, - 633, - 649, - 662, - 666, - 682, - 683, - 693, - 701, - 702, - 708, - 709, - 722, - 729, - 745, - 800, - 801, - 802, - 803, - -1 + FRONTIER_MONS_HEX_MANIAC_2B }; const u16 gBattleFrontierTrainerMons_Lexie[] = { - 344, - 347, - 352, - 394, - 395, - 398, - 405, - 413, - 414, - 420, - 421, - 426, - 434, - 441, - 447, - 457, - 490, - 491, - 494, - 501, - 509, - 510, - 516, - 517, - 522, - 530, - 537, - 543, - 553, - 586, - 587, - 590, - 597, - 605, - 606, - 612, - 613, - 618, - 626, - 633, - 639, - 649, - 682, - 683, - 686, - 693, - 701, - 702, - 708, - 709, - 714, - 722, - 729, - 735, - 745, - 800, - 801, - 802, - 803, - -1 + FRONTIER_MONS_HEX_MANIAC_2C }; const u16 gBattleFrontierTrainerMons_Miller[] = { - 345, - 376, - 386, - 387, - 397, - 399, - 402, - 403, - 406, - 408, - 411, - 413, - 414, - 425, - 427, - 429, - 433, - 435, - 440, - 441, - 445, - 448, - 449, - 450, - 452, - 454, - 456, - 458, - 459, - 460, - 462, - 465, - 466, - 467, - 470, - 474, - 482, - 493, - 495, - 498, - 499, - 502, - 504, - 507, - 509, - 510, - 521, - 523, - 525, - 529, - 531, - 536, - 537, - 541, - 544, - 545, - 546, - 548, - 550, - 552, - 554, - 555, - 556, - 558, - 561, - 562, - 563, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - -1 + FRONTIER_MONS_POKEMANIAC_2A }; const u16 gBattleFrontierTrainerMons_Marv[] = { - 345, - 568, - 578, - 579, - 589, - 591, - 594, - 595, - 598, - 600, - 603, - 605, - 606, - 617, - 619, - 621, - 625, - 627, - 632, - 633, - 637, - 640, - 641, - 642, - 644, - 646, - 648, - 650, - 651, - 652, - 654, - 657, - 658, - 659, - 664, - 674, - 675, - 685, - 687, - 690, - 691, - 694, - 696, - 699, - 701, - 702, - 713, - 715, - 717, - 721, - 723, - 728, - 729, - 733, - 736, - 737, - 738, - 740, - 742, - 744, - 746, - 747, - 748, - 750, - 753, - 754, - 755, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - -1 + FRONTIER_MONS_POKEMANIAC_2B }; const u16 gBattleFrontierTrainerMons_Layton[] = { - 345, - 425, - 433, - 435, - 445, - 450, - 454, - 456, - 458, - 459, - 460, - 465, - 466, - 521, - 529, - 531, - 541, - 546, - 550, - 552, - 554, - 555, - 556, - 561, - 562, - 617, - 625, - 627, - 637, - 642, - 646, - 648, - 650, - 651, - 652, - 657, - 658, - 713, - 721, - 723, - 733, - 738, - 742, - 744, - 746, - 747, - 748, - 753, - 754, - 804, - 805, - 806, - 807, - 820, - 821, - 822, - 823, - 824, - 825, - 826, - 827, - 828, - 829, - 830, - 831, - 832, - 833, - 834, - 835, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - -1 + FRONTIER_MONS_POKEMANIAC_2C }; const u16 gBattleFrontierTrainerMons_Brooks[] = { - 660, - 661, - 662, - 663, - 664, - 665, - 666, - 667, - 668, - 669, - 670, - 671, - 672, - 673, - 674, - 675, - 676, - 677, - 678, - 679, - 680, - 681, - 682, - 683, - 684, - 685, - 686, - 687, - 688, - 689, - 690, - 691, - 692, - 693, - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - 726, - 727, - 728, - 729, - 730, - 731, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - -1 + FRONTIER_MONS_GENERAL_A }; const u16 gBattleFrontierTrainerMons_Gregory[] = { - 421, - 425, - 431, - 437, - 439, - 456, - 460, - 465, - 466, - 517, - 521, - 527, - 533, - 535, - 552, - 556, - 561, - 562, - 613, - 617, - 623, - 629, - 631, - 648, - 652, - 657, - 658, - 709, - 713, - 719, - 725, - 727, - 744, - 748, - 753, - 754, - 765, - 766, - 776, - 777, - 787, - 788, - 798, - 799, - 800, - 801, - 802, - 803, - 804, - 805, - 806, - 807, - 808, - 809, - 810, - 811, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 820, - 821, - 822, - 823, - 824, - 825, - 826, - 827, - 828, - 829, - 830, - 831, - 832, - 833, - 834, - 835, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - -1 + FRONTIER_MONS_GENTLEMAN_3A }; const u16 gBattleFrontierTrainerMons_Reese[] = { - 756, - 757, - 758, - 759, - 760, - 761, - 762, - 763, - 764, - 765, - 766, - 767, - 768, - 769, - 770, - 771, - 772, - 773, - 774, - 775, - 776, - 777, - 778, - 779, - 780, - 781, - 782, - 783, - 784, - 785, - 786, - 787, - 788, - 789, - 790, - 791, - 792, - 793, - 794, - 795, - 796, - 797, - 798, - 799, - 836, - 837, - 838, - 839, - 840, - 841, - 842, - 843, - 844, - 845, - 846, - 847, - 848, - 849, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 880, - 881, - -1 + FRONTIER_MONS_GENTLEMAN_3B }; const u16 gBattleFrontierTrainerMons_Mason[] = { - 660, - 661, - 662, - 663, - 664, - 665, - 666, - 667, - 668, - 669, - 670, - 671, - 672, - 673, - 674, - 675, - 676, - 677, - 678, - 679, - 680, - 681, - 682, - 683, - 684, - 685, - 686, - 687, - 688, - 689, - 690, - 691, - 692, - 693, - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - 726, - 727, - 728, - 729, - 730, - 731, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - -1 + FRONTIER_MONS_GENERAL_A }; const u16 gBattleFrontierTrainerMons_Toby[] = { - 564, - 565, - 566, - 567, - 568, - 569, - 570, - 571, - 572, - 573, - 574, - 575, - 576, - 577, - 578, - 579, - 580, - 581, - 582, - 583, - 584, - 585, - 586, - 587, - 588, - 589, - 590, - 591, - 592, - 593, - 594, - 595, - 596, - 597, - 598, - 599, - 600, - 601, - 602, - 603, - 604, - 605, - 606, - 607, - 608, - 609, - 610, - 611, - 612, - 613, - 614, - 615, - 616, - 617, - 618, - 619, - 620, - 621, - 622, - 623, - 624, - 625, - 626, - 627, - 628, - 629, - 630, - 631, - 632, - 633, - 634, - 635, - 636, - 637, - 638, - 639, - 640, - 641, - 642, - 643, - 644, - 645, - 646, - 647, - 648, - 649, - 650, - 651, - 652, - 653, - 654, - 655, - 656, - 657, - 658, - 659, - -1 + FRONTIER_MONS_GENERAL_B }; const u16 gBattleFrontierTrainerMons_Dorothy[] = { - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500, - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520, - 521, - 522, - 523, - 524, - 525, - 526, - 527, - 528, - 529, - 530, - 531, - 532, - 533, - 534, - 535, - 536, - 537, - 538, - 539, - 540, - 541, - 542, - 543, - 544, - 545, - 546, - 547, - 548, - 549, - 550, - 551, - 552, - 553, - 554, - 555, - 556, - 557, - 558, - 559, - 560, - 561, - 562, - 563, - -1 + FRONTIER_MONS_GENERAL_C }; const u16 gBattleFrontierTrainerMons_Piper[] = { - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - -1 + FRONTIER_MONS_GENERAL_D }; const u16 gBattleFrontierTrainerMons_Finn[] = { - 317, - 371, - 373, - 377, - 390, - 392, - 399, - 431, - 452, - 456, - 469, - 475, - 486, - 488, - 495, - 527, - 548, - 552, - 565, - 569, - 573, - 576, - 580, - 582, - 584, - 591, - 592, - 601, - 602, - 610, - 621, - 623, - 626, - 631, - 634, - 640, - 641, - 644, - 648, - 650, - 651, - 653, - 655, - 661, - 665, - 669, - 672, - 676, - 678, - 680, - 687, - 688, - 697, - 698, - 706, - 717, - 719, - 722, - 727, - 730, - 736, - 737, - 740, - 744, - 746, - 747, - 749, - 751, - 808, - 809, - 810, - 811, - 816, - 817, - 818, - 819, - 820, - 821, - 822, - 823, - -1 + FRONTIER_MONS_SWIMMING_TRIATHLETE_M_3 }; const u16 gBattleFrontierTrainerMons_Samir[] = { - 317, - 371, - 373, - 377, - 390, - 392, - 399, - 431, - 452, - 456, - 469, - 475, - 486, - 488, - 495, - 527, - 548, - 552, - 565, - 569, - 573, - 576, - 580, - 582, - 584, - 591, - 592, - 601, - 602, - 610, - 621, - 623, - 626, - 631, - 634, - 640, - 641, - 644, - 648, - 650, - 651, - 653, - 655, - 661, - 665, - 669, - 672, - 676, - 678, - 680, - 687, - 688, - 697, - 698, - 706, - 717, - 719, - 722, - 727, - 730, - 736, - 737, - 740, - 744, - 746, - 747, - 749, - 751, - 808, - 809, - 810, - 811, - 816, - 817, - 818, - 819, - 820, - 821, - 822, - 823, - -1 + FRONTIER_MONS_SWIMMING_TRIATHLETE_M_3 }; const u16 gBattleFrontierTrainerMons_Fiona[] = { - 317, - 371, - 373, - 377, - 381, - 384, - 388, - 390, - 392, - 399, - 400, - 409, - 410, - 418, - 429, - 431, - 434, - 439, - 442, - 448, - 449, - 452, - 456, - 458, - 459, - 461, - 463, - 469, - 471, - 475, - 479, - 483, - 486, - 488, - 495, - 496, - 505, - 506, - 514, - 525, - 527, - 530, - 535, - 538, - 544, - 545, - 548, - 552, - 554, - 555, - 557, - 559, - 565, - 569, - 582, - 584, - 591, - 623, - 644, - 648, - 661, - 665, - 678, - 680, - 687, - 719, - 740, - 744, - 808, - 809, - 810, - 811, - 816, - 817, - 818, - 819, - 820, - 821, - 822, - 823, - -1 + FRONTIER_MONS_SWIMMING_TRIATHLETE_F_3 }; const u16 gBattleFrontierTrainerMons_Gloria[] = { - 317, - 371, - 373, - 377, - 381, - 384, - 388, - 390, - 392, - 399, - 400, - 409, - 410, - 418, - 429, - 431, - 434, - 439, - 442, - 448, - 449, - 452, - 456, - 458, - 459, - 461, - 463, - 469, - 471, - 475, - 479, - 483, - 486, - 488, - 495, - 496, - 505, - 506, - 514, - 525, - 527, - 530, - 535, - 538, - 544, - 545, - 548, - 552, - 554, - 555, - 557, - 559, - 565, - 569, - 582, - 584, - 591, - 623, - 644, - 648, - 661, - 665, - 678, - 680, - 687, - 719, - 740, - 744, - 808, - 809, - 810, - 811, - 816, - 817, - 818, - 819, - 820, - 821, - 822, - 823, - -1 + FRONTIER_MONS_SWIMMING_TRIATHLETE_F_3 }; const u16 gBattleFrontierTrainerMons_Nico[] = { - 660, - 661, - 662, - 663, - 664, - 665, - 666, - 667, - 668, - 669, - 670, - 671, - 672, - 673, - 674, - 675, - 676, - 677, - 678, - 679, - 680, - 681, - 682, - 683, - 684, - 685, - 686, - 687, - 688, - 689, - 690, - 691, - 692, - 693, - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - 726, - 727, - 728, - 729, - 730, - 731, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 749, - 750, - 751, - 752, - 753, - 754, - 755, - -1 + FRONTIER_MONS_GENERAL_A }; const u16 gBattleFrontierTrainerMons_Jeremy[] = { - 564, - 565, - 566, - 567, - 568, - 569, - 570, - 571, - 572, - 573, - 574, - 575, - 576, - 577, - 578, - 579, - 580, - 581, - 582, - 583, - 584, - 585, - 586, - 587, - 588, - 589, - 590, - 591, - 592, - 593, - 594, - 595, - 596, - 597, - 598, - 599, - 600, - 601, - 602, - 603, - 604, - 605, - 606, - 607, - 608, - 609, - 610, - 611, - 612, - 613, - 614, - 615, - 616, - 617, - 618, - 619, - 620, - 621, - 622, - 623, - 624, - 625, - 626, - 627, - 628, - 629, - 630, - 631, - 632, - 633, - 634, - 635, - 636, - 637, - 638, - 639, - 640, - 641, - 642, - 643, - 644, - 645, - 646, - 647, - 648, - 649, - 650, - 651, - 652, - 653, - 654, - 655, - 656, - 657, - 658, - 659, - -1 + FRONTIER_MONS_GENERAL_B }; const u16 gBattleFrontierTrainerMons_Caitlin[] = { - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500, - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520, - 521, - 522, - 523, - 524, - 525, - 526, - 527, - 528, - 529, - 530, - 531, - 532, - 533, - 534, - 535, - 536, - 537, - 538, - 539, - 540, - 541, - 542, - 543, - 544, - 545, - 546, - 547, - 548, - 549, - 550, - 551, - 552, - 553, - 554, - 555, - 556, - 557, - 558, - 559, - 560, - 561, - 562, - 563, - -1 + FRONTIER_MONS_GENERAL_C }; const u16 gBattleFrontierTrainerMons_Reena[] = { - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - -1 + FRONTIER_MONS_GENERAL_D }; const u16 gBattleFrontierTrainerMons_Avery[] = { - 21, - 238, - 282, - 303, - 331, - 343, - 368, - 369, - 383, - 417, - 423, - 424, - 432, - 481, - 513, - 519, - 520, - 528, - 575, - 609, - 615, - 616, - 624, - 671, - 705, - 711, - 712, - 720, - -1 + FRONTIER_MONS_BUG_MANIAC_4 }; const u16 gBattleFrontierTrainerMons_Liam[] = { - 21, - 238, - 282, - 303, - 331, - 343, - 368, - 369, - 383, - 417, - 423, - 424, - 432, - 481, - 513, - 519, - 520, - 528, - 575, - 609, - 615, - 616, - 624, - 671, - 705, - 711, - 712, - 720, - -1 + FRONTIER_MONS_BUG_MANIAC_4 }; const u16 gBattleFrontierTrainerMons_Theo[] = { - 333, - 347, - 350, - 354, - 358, - 361, - 362, - 363, - 364, - 371, - 381, - 384, - 429, - 434, - 439, - 479, - 483, - 525, - 530, - 535, - 573, - 576, - 621, - 626, - 631, - 669, - 672, - 717, - 722, - 727, - 816, - 817, - 818, - 819, - -1 + FRONTIER_MONS_FISHERMAN_3 }; const u16 gBattleFrontierTrainerMons_Bailey[] = { - 333, - 347, - 350, - 354, - 358, - 361, - 362, - 363, - 364, - 371, - 381, - 384, - 429, - 434, - 439, - 479, - 483, - 525, - 530, - 535, - 573, - 576, - 621, - 626, - 631, - 669, - 672, - 717, - 722, - 727, - 816, - 817, - 818, - 819, - -1 + FRONTIER_MONS_FISHERMAN_3 }; const u16 gBattleFrontierTrainerMons_Hugo[] = { - 383, - 386, - 402, - 403, - 416, - 417, - 423, - 432, - 433, - 435, - 450, - 466, - 481, - 482, - 498, - 499, - 512, - 513, - 519, - 528, - 529, - 531, - 546, - 562, - 575, - 578, - 594, - 595, - 608, - 609, - 615, - 624, - 625, - 627, - 642, - 658, - 671, - 674, - 690, - 691, - 704, - 705, - 711, - 720, - 721, - 723, - 738, - 754, - 762, - 763, - 764, - 773, - 774, - 775, - 784, - 785, - 786, - 795, - 796, - 797, - 832, - 833, - 834, - 835, - 836, - 837, - 838, - 839, - 840, - 841, - -1 + FRONTIER_MONS_RUIN_MANIAC_4 }; const u16 gBattleFrontierTrainerMons_Bryce[] = { - 383, - 386, - 402, - 403, - 416, - 417, - 423, - 432, - 433, - 435, - 450, - 466, - 481, - 482, - 498, - 499, - 512, - 513, - 519, - 528, - 529, - 531, - 546, - 562, - 575, - 578, - 594, - 595, - 608, - 609, - 615, - 624, - 625, - 627, - 642, - 658, - 671, - 674, - 690, - 691, - 704, - 705, - 711, - 720, - 721, - 723, - 738, - 754, - 762, - 763, - 764, - 773, - 774, - 775, - 784, - 785, - 786, - 795, - 796, - 797, - 832, - 833, - 834, - 835, - 836, - 837, - 838, - 839, - 840, - 841, - -1 + FRONTIER_MONS_RUIN_MANIAC_4 }; const u16 gBattleFrontierTrainerMons_Gideon[] = { - 441, - 445, - 448, - 449, - 451, - 453, - 454, - 455, - 458, - 537, - 541, - 544, - 545, - 547, - 549, - 550, - 551, - 554, - 633, - 637, - 640, - 641, - 643, - 645, - 646, - 647, - 650, - 729, - 733, - 736, - 737, - 739, - 741, - 742, - 743, - 746, - -1 + FRONTIER_MONS_COLLECTOR_3 }; const u16 gBattleFrontierTrainerMons_Triston[] = { - 441, - 445, - 448, - 449, - 451, - 453, - 454, - 455, - 458, - 537, - 541, - 544, - 545, - 547, - 549, - 550, - 551, - 554, - 633, - 637, - 640, - 641, - 643, - 645, - 646, - 647, - 650, - 729, - 733, - 736, - 737, - 739, - 741, - 742, - 743, - 746, - -1 + FRONTIER_MONS_COLLECTOR_3 }; const u16 gBattleFrontierTrainerMons_Charles[] = { - 352, - 381, - 391, - 393, - 396, - 398, - 407, - 422, - 426, - 443, - 447, - 479, - 487, - 489, - 492, - 494, - 503, - 518, - 522, - 539, - 543, - 573, - 583, - 585, - 588, - 590, - 599, - 614, - 618, - 635, - 639, - 669, - 679, - 681, - 684, - 686, - 695, - 710, - 714, - 731, - 735, - 756, - 757, - 758, - 767, - 768, - 769, - 778, - 779, - 780, - 789, - 790, - 791, - 870, - 871, - 872, - 873, - 874, - 875, - -1 + FRONTIER_MONS_GUITARIST_3A }; const u16 gBattleFrontierTrainerMons_Raymond[] = { - 374, - 376, - 381, - 404, - 407, - 422, - 439, - 443, - 459, - 472, - 500, - 506, - 507, - 518, - 532, - 546, - 566, - 585, - 588, - 628, - 635, - 679, - 681, - 684, - 710, - 731, - 785, - 795, - 796, - 797, - 817, - 842, - 843, - 846, - 847, - -1 + FRONTIER_MONS_GUITARIST_3B }; const u16 gBattleFrontierTrainerMons_Dirk[] = { - 355, - 375, - 379, - 385, - 386, - 412, - 435, - 440, - 454, - 457, - 459, - 465, - 473, - 477, - 482, - 484, - 508, - 531, - 536, - 550, - 553, - 555, - 561, - 567, - 571, - 577, - 578, - 604, - 627, - 632, - 646, - 649, - 651, - 657, - 663, - 667, - 673, - 674, - 700, - 723, - 728, - 742, - 745, - 747, - 753, - 756, - 757, - 758, - 767, - 768, - 769, - 778, - 779, - 780, - 789, - 790, - 791, - 828, - 829, - 830, - 831, - -1 + FRONTIER_MONS_BIRD_KEEPER_3 }; const u16 gBattleFrontierTrainerMons_Harold[] = { - 355, - 375, - 379, - 385, - 386, - 412, - 435, - 440, - 454, - 457, - 459, - 465, - 473, - 477, - 482, - 484, - 508, - 531, - 536, - 550, - 553, - 555, - 561, - 567, - 571, - 577, - 578, - 604, - 627, - 632, - 646, - 649, - 651, - 657, - 663, - 667, - 673, - 674, - 700, - 723, - 728, - 742, - 745, - 747, - 753, - 756, - 757, - 758, - 767, - 768, - 769, - 778, - 779, - 780, - 789, - 790, - 791, - 828, - 829, - 830, - 831, - -1 + FRONTIER_MONS_BIRD_KEEPER_3 }; const u16 gBattleFrontierTrainerMons_Omar[] = { - 373, - 388, - 390, - 392, - 400, - 409, - 410, - 418, - 431, - 442, - 448, - 449, - 452, - 456, - 458, - 459, - 461, - 463, - 469, - 471, - 486, - 488, - 496, - 505, - 506, - 514, - 527, - 538, - 544, - 545, - 548, - 552, - 554, - 555, - 557, - 559, - 565, - 580, - 582, - 584, - 592, - 601, - 602, - 610, - 623, - 634, - 640, - 641, - 644, - 648, - 650, - 651, - 653, - 655, - 661, - 676, - 678, - 680, - 688, - 697, - 698, - 706, - 719, - 730, - 736, - 737, - 740, - 744, - 746, - 747, - 749, - 751, - 808, - 809, - 810, - 811, - 820, - 821, - 822, - 823, - -1 + FRONTIER_MONS_SAILOR_3 }; const u16 gBattleFrontierTrainerMons_Peter[] = { - 373, - 388, - 390, - 392, - 400, - 409, - 410, - 418, - 431, - 442, - 448, - 449, - 452, - 456, - 458, - 459, - 461, - 463, - 469, - 471, - 486, - 488, - 496, - 505, - 506, - 514, - 527, - 538, - 544, - 545, - 548, - 552, - 554, - 555, - 557, - 559, - 565, - 580, - 582, - 584, - 592, - 601, - 602, - 610, - 623, - 634, - 640, - 641, - 644, - 648, - 650, - 651, - 653, - 655, - 661, - 676, - 678, - 680, - 688, - 697, - 698, - 706, - 719, - 730, - 736, - 737, - 740, - 744, - 746, - 747, - 749, - 751, - 808, - 809, - 810, - 811, - 820, - 821, - 822, - 823, - -1 + FRONTIER_MONS_SAILOR_3 }; const u16 gBattleFrontierTrainerMons_Dev[] = { - 372, - 387, - 402, - 403, - 413, - 414, - 416, - 417, - 427, - 428, - 432, - 433, - 435, - 440, - 450, - 466, - 468, - 470, - 498, - 499, - 509, - 510, - 512, - 513, - 523, - 524, - 528, - 529, - 531, - 536, - 546, - 562, - 564, - 579, - 594, - 595, - 605, - 606, - 608, - 609, - 619, - 620, - 624, - 625, - 627, - 632, - 642, - 658, - 660, - 675, - 690, - 691, - 701, - 702, - 704, - 705, - 715, - 716, - 720, - 721, - 723, - 728, - 738, - 754, - 832, - 833, - 834, - 835, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - -1 + FRONTIER_MONS_HIKER_3 }; const u16 gBattleFrontierTrainerMons_Corey[] = { - 372, - 387, - 402, - 403, - 413, - 414, - 416, - 417, - 427, - 428, - 432, - 433, - 435, - 440, - 450, - 466, - 468, - 470, - 498, - 499, - 509, - 510, - 512, - 513, - 523, - 524, - 528, - 529, - 531, - 536, - 546, - 562, - 564, - 579, - 594, - 595, - 605, - 606, - 608, - 609, - 619, - 620, - 624, - 625, - 627, - 632, - 642, - 658, - 660, - 675, - 690, - 691, - 701, - 702, - 704, - 705, - 715, - 716, - 720, - 721, - 723, - 728, - 738, - 754, - 832, - 833, - 834, - 835, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - -1 + FRONTIER_MONS_HIKER_3 }; const u16 gBattleFrontierTrainerMons_Andre[] = { - 374, - 378, - 415, - 419, - 421, - 426, - 430, - 444, - 451, - 454, - 455, - 464, - 472, - 476, - 511, - 515, - 517, - 522, - 526, - 540, - 547, - 550, - 551, - 560, - 566, - 570, - 607, - 611, - 613, - 618, - 622, - 636, - 643, - 646, - 647, - 656, - 662, - 666, - 703, - 707, - 709, - 714, - 718, - 732, - 739, - 742, - 743, - 752, - 800, - 801, - 802, - 803, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - -1 + FRONTIER_MONS_KINDLER_3 }; const u16 gBattleFrontierTrainerMons_Ferris[] = { - 374, - 378, - 415, - 419, - 421, - 426, - 430, - 444, - 451, - 454, - 455, - 464, - 472, - 476, - 511, - 515, - 517, - 522, - 526, - 540, - 547, - 550, - 551, - 560, - 566, - 570, - 607, - 611, - 613, - 618, - 622, - 636, - 643, - 646, - 647, - 656, - 662, - 666, - 703, - 707, - 709, - 714, - 718, - 732, - 739, - 742, - 743, - 752, - 800, - 801, - 802, - 803, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - -1 + FRONTIER_MONS_KINDLER_3 }; const u16 gBattleFrontierTrainerMons_Alivia[] = { - 399, - 400, - 409, - 422, - 438, - 441, - 445, - 448, - 449, - 451, - 452, - 454, - 455, - 489, - 492, - 493, - 503, - 526, - 532, - 535, - 536, - 560, - 573, - 583, - 590, - 592, - 608, - 611, - 620, - 651, - 682, - 688, - 714, - 729, - 732, - -1 + FRONTIER_MONS_PARASOL_LADY_3 }; const u16 gBattleFrontierTrainerMons_Paige[] = { - 399, - 400, - 409, - 422, - 438, - 441, - 445, - 448, - 449, - 451, - 452, - 454, - 455, - 489, - 492, - 493, - 503, - 526, - 532, - 535, - 536, - 560, - 573, - 583, - 590, - 592, - 608, - 611, - 620, - 651, - 682, - 688, - 714, - 729, - 732, - -1 + FRONTIER_MONS_PARASOL_LADY_3 }; const u16 gBattleFrontierTrainerMons_Anya[] = { - 442, - 443, - 444, - 446, - 447, - 538, - 539, - 540, - 542, - 543, - 634, - 635, - 636, - 638, - 639, - 730, - 731, - 732, - 734, - 735, - -1 + FRONTIER_MONS_EEVEELUTIONS }; const u16 gBattleFrontierTrainerMons_Dawn[] = { - 377, - 381, - 410, - 421, - 422, - 443, - 456, - 460, - 461, - 471, - 472, - 473, - 484, - 491, - 502, - 503, - 507, - 508, - 515, - 520, - 540, - 549, - 569, - 574, - 583, - 586, - 601, - 622, - 624, - 639, - 644, - 655, - 734, - 804, - 810, - 815, - 823, - 831, - 843, - -1 + FRONTIER_MONS_BEAUTY_2 }; const u16 gBattleFrontierTrainerMons_Abby[] = { - 185, - 290, - 313, - 334, - 348, - 359, - 360, - 377, - 380, - 382, - 385, - 394, - 395, - 398, - 400, - 401, - 404, - 409, - 410, - 416, - 437, - 438, - 439, - 441, - 445, - 446, - 453, - 475, - 478, - 480, - 484, - 490, - 491, - 494, - 496, - 497, - 500, - 505, - 506, - 512, - 533, - 534, - 535, - 537, - 541, - 542, - 549, - 569, - 572, - 574, - 577, - 586, - 587, - 590, - 592, - 593, - 596, - 601, - 602, - 608, - 629, - 630, - 631, - 633, - 637, - 638, - 645, - 665, - 668, - 670, - 673, - 682, - 683, - 686, - 688, - 689, - 692, - 697, - 698, - 704, - 725, - 726, - 727, - 729, - 733, - 734, - 741, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - -1 + FRONTIER_MONS_AROMA_LADY_3 }; const u16 gBattleFrontierTrainerMons_Gretel[] = { - 185, - 290, - 313, - 334, - 348, - 359, - 360, - 377, - 380, - 382, - 385, - 394, - 395, - 398, - 400, - 401, - 404, - 409, - 410, - 416, - 437, - 438, - 439, - 441, - 445, - 446, - 453, - 475, - 478, - 480, - 484, - 490, - 491, - 494, - 496, - 497, - 500, - 505, - 506, - 512, - 533, - 534, - 535, - 537, - 541, - 542, - 549, - 569, - 572, - 574, - 577, - 586, - 587, - 590, - 592, - 593, - 596, - 601, - 602, - 608, - 629, - 630, - 631, - 633, - 637, - 638, - 645, - 665, - 668, - 670, - 673, - 682, - 683, - 686, - 688, - 689, - 692, - 697, - 698, - 704, - 725, - 726, - 727, - 729, - 733, - 734, - 741, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - -1 + FRONTIER_MONS_AROMA_LADY_3 }; From 379f7f5149673114b7b8a20ead97c18d80c61502 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Sun, 29 Dec 2019 12:59:42 -0500 Subject: [PATCH 13/37] Add braces to trainer party moves --- src/data/trainer_parties.h | 902 ++++++++++++++++++------------------- 1 file changed, 451 insertions(+), 451 deletions(-) diff --git a/src/data/trainer_parties.h b/src/data/trainer_parties.h index 173d81329e..824a49dc3e 100644 --- a/src/data/trainer_parties.h +++ b/src/data/trainer_parties.h @@ -419,13 +419,13 @@ static const struct TrainerMonNoItemCustomMoves sParty_Felix[] = { .iv = 0, .lvl = 43, .species = SPECIES_MEDICHAM, - .moves = MOVE_PSYCHIC, MOVE_NONE, MOVE_NONE, MOVE_NONE + .moves = {MOVE_PSYCHIC, MOVE_NONE, MOVE_NONE, MOVE_NONE} }, { .iv = 0, .lvl = 43, .species = SPECIES_CLAYDOL, - .moves = MOVE_SKILL_SWAP, MOVE_EARTHQUAKE, MOVE_NONE, MOVE_NONE + .moves = {MOVE_SKILL_SWAP, MOVE_EARTHQUAKE, MOVE_NONE, MOVE_NONE} } }; @@ -514,7 +514,7 @@ static const struct TrainerMonNoItemCustomMoves sParty_Dusty1[] = { .iv = 50, .lvl = 23, .species = SPECIES_SANDSLASH, - .moves = MOVE_DIG, MOVE_SLASH, MOVE_SAND_ATTACK, MOVE_POISON_STING + .moves = {MOVE_DIG, MOVE_SLASH, MOVE_SAND_ATTACK, MOVE_POISON_STING} } }; @@ -523,19 +523,19 @@ static const struct TrainerMonNoItemCustomMoves sParty_Chip[] = { .iv = 50, .lvl = 27, .species = SPECIES_BALTOY, - .moves = MOVE_PSYBEAM, MOVE_SELF_DESTRUCT, MOVE_SANDSTORM, MOVE_ANCIENT_POWER + .moves = {MOVE_PSYBEAM, MOVE_SELF_DESTRUCT, MOVE_SANDSTORM, MOVE_ANCIENT_POWER} }, { .iv = 50, .lvl = 27, .species = SPECIES_SANDSHREW, - .moves = MOVE_DIG, MOVE_SLASH, MOVE_SAND_ATTACK, MOVE_POISON_STING + .moves = {MOVE_DIG, MOVE_SLASH, MOVE_SAND_ATTACK, MOVE_POISON_STING} }, { .iv = 50, .lvl = 27, .species = SPECIES_SANDSLASH, - .moves = MOVE_DIG, MOVE_SLASH, MOVE_SAND_ATTACK, MOVE_POISON_STING + .moves = {MOVE_DIG, MOVE_SLASH, MOVE_SAND_ATTACK, MOVE_POISON_STING} } }; @@ -544,13 +544,13 @@ static const struct TrainerMonNoItemCustomMoves sParty_Foster[] = { .iv = 100, .lvl = 25, .species = SPECIES_SANDSHREW, - .moves = MOVE_DIG, MOVE_SLASH, MOVE_SAND_ATTACK, MOVE_POISON_STING + .moves = {MOVE_DIG, MOVE_SLASH, MOVE_SAND_ATTACK, MOVE_POISON_STING} }, { .iv = 100, .lvl = 25, .species = SPECIES_SANDSLASH, - .moves = MOVE_DIG, MOVE_SLASH, MOVE_SAND_ATTACK, MOVE_POISON_STING + .moves = {MOVE_DIG, MOVE_SLASH, MOVE_SAND_ATTACK, MOVE_POISON_STING} } }; @@ -559,7 +559,7 @@ static const struct TrainerMonNoItemCustomMoves sParty_Dusty2[] = { .iv = 60, .lvl = 27, .species = SPECIES_SANDSLASH, - .moves = MOVE_DIG, MOVE_SLASH, MOVE_SAND_ATTACK, MOVE_POISON_STING + .moves = {MOVE_DIG, MOVE_SLASH, MOVE_SAND_ATTACK, MOVE_POISON_STING} } }; @@ -568,7 +568,7 @@ static const struct TrainerMonNoItemCustomMoves sParty_Dusty3[] = { .iv = 70, .lvl = 30, .species = SPECIES_SANDSLASH, - .moves = MOVE_DIG, MOVE_SLASH, MOVE_SAND_ATTACK, MOVE_POISON_STING + .moves = {MOVE_DIG, MOVE_SLASH, MOVE_SAND_ATTACK, MOVE_POISON_STING} } }; @@ -577,7 +577,7 @@ static const struct TrainerMonNoItemCustomMoves sParty_Dusty4[] = { .iv = 80, .lvl = 33, .species = SPECIES_SANDSLASH, - .moves = MOVE_DIG, MOVE_SLASH, MOVE_SAND_ATTACK, MOVE_POISON_STING + .moves = {MOVE_DIG, MOVE_SLASH, MOVE_SAND_ATTACK, MOVE_POISON_STING} } }; @@ -586,7 +586,7 @@ static const struct TrainerMonNoItemCustomMoves sParty_Dusty5[] = { .iv = 90, .lvl = 36, .species = SPECIES_SANDSLASH, - .moves = MOVE_DIG, MOVE_SLASH, MOVE_SAND_ATTACK, MOVE_POISON_STING + .moves = {MOVE_DIG, MOVE_SLASH, MOVE_SAND_ATTACK, MOVE_POISON_STING} } }; @@ -660,13 +660,13 @@ static const struct TrainerMonNoItemCustomMoves sParty_GabbyAndTy6[] = { .iv = 250, .lvl = 39, .species = SPECIES_MAGNETON, - .moves = MOVE_SONIC_BOOM, MOVE_THUNDER_WAVE, MOVE_METAL_SOUND, MOVE_THUNDERBOLT + .moves = {MOVE_SONIC_BOOM, MOVE_THUNDER_WAVE, MOVE_METAL_SOUND, MOVE_THUNDERBOLT} }, { .iv = 250, .lvl = 39, .species = SPECIES_EXPLOUD, - .moves = MOVE_ASTONISH, MOVE_STOMP, MOVE_SUPERSONIC, MOVE_HYPER_VOICE + .moves = {MOVE_ASTONISH, MOVE_STOMP, MOVE_SUPERSONIC, MOVE_HYPER_VOICE} } }; @@ -756,7 +756,7 @@ static const struct TrainerMonNoItemCustomMoves sParty_Ricky1[] = { .iv = 10, .lvl = 13, .species = SPECIES_ZIGZAGOON, - .moves = MOVE_SAND_ATTACK, MOVE_HEADBUTT, MOVE_TAIL_WHIP, MOVE_SURF + .moves = {MOVE_SAND_ATTACK, MOVE_HEADBUTT, MOVE_TAIL_WHIP, MOVE_SURF} } }; @@ -786,7 +786,7 @@ static const struct TrainerMonNoItemCustomMoves sParty_Ricky2[] = { .iv = 10, .lvl = 27, .species = SPECIES_LINOONE, - .moves = MOVE_SAND_ATTACK, MOVE_PIN_MISSILE, MOVE_TAIL_WHIP, MOVE_SURF + .moves = {MOVE_SAND_ATTACK, MOVE_PIN_MISSILE, MOVE_TAIL_WHIP, MOVE_SURF} } }; @@ -795,7 +795,7 @@ static const struct TrainerMonNoItemCustomMoves sParty_Ricky3[] = { .iv = 20, .lvl = 30, .species = SPECIES_LINOONE, - .moves = MOVE_SAND_ATTACK, MOVE_PIN_MISSILE, MOVE_TAIL_WHIP, MOVE_SURF + .moves = {MOVE_SAND_ATTACK, MOVE_PIN_MISSILE, MOVE_TAIL_WHIP, MOVE_SURF} } }; @@ -804,7 +804,7 @@ static const struct TrainerMonNoItemCustomMoves sParty_Ricky4[] = { .iv = 30, .lvl = 33, .species = SPECIES_LINOONE, - .moves = MOVE_SAND_ATTACK, MOVE_PIN_MISSILE, MOVE_TAIL_WHIP, MOVE_SURF + .moves = {MOVE_SAND_ATTACK, MOVE_PIN_MISSILE, MOVE_TAIL_WHIP, MOVE_SURF} } }; @@ -813,7 +813,7 @@ static const struct TrainerMonNoItemCustomMoves sParty_Ricky5[] = { .iv = 40, .lvl = 36, .species = SPECIES_LINOONE, - .moves = MOVE_SAND_ATTACK, MOVE_PIN_MISSILE, MOVE_TAIL_WHIP, MOVE_SURF + .moves = {MOVE_SAND_ATTACK, MOVE_PIN_MISSILE, MOVE_TAIL_WHIP, MOVE_SURF} } }; @@ -823,7 +823,7 @@ static const struct TrainerMonItemCustomMoves sParty_Randall[] = { .lvl = 26, .species = SPECIES_SWELLOW, .heldItem = ITEM_NONE, - .moves = MOVE_QUICK_ATTACK, MOVE_AGILITY, MOVE_WING_ATTACK, MOVE_NONE + .moves = {MOVE_QUICK_ATTACK, MOVE_AGILITY, MOVE_WING_ATTACK, MOVE_NONE} } }; @@ -833,7 +833,7 @@ static const struct TrainerMonItemCustomMoves sParty_Parker[] = { .lvl = 26, .species = SPECIES_SPINDA, .heldItem = ITEM_NONE, - .moves = MOVE_TEETER_DANCE, MOVE_DIZZY_PUNCH, MOVE_FOCUS_PUNCH, MOVE_NONE + .moves = {MOVE_TEETER_DANCE, MOVE_DIZZY_PUNCH, MOVE_FOCUS_PUNCH, MOVE_NONE} } }; @@ -843,7 +843,7 @@ static const struct TrainerMonItemCustomMoves sParty_George[] = { .lvl = 26, .species = SPECIES_SLAKOTH, .heldItem = ITEM_SITRUS_BERRY, - .moves = MOVE_SLACK_OFF, MOVE_COUNTER, MOVE_SHADOW_BALL, MOVE_NONE + .moves = {MOVE_SLACK_OFF, MOVE_COUNTER, MOVE_SHADOW_BALL, MOVE_NONE} } }; @@ -853,7 +853,7 @@ static const struct TrainerMonItemCustomMoves sParty_Berke[] = { .lvl = 26, .species = SPECIES_VIGOROTH, .heldItem = ITEM_NONE, - .moves = MOVE_FOCUS_ENERGY, MOVE_SLASH, MOVE_NONE, MOVE_NONE + .moves = {MOVE_FOCUS_ENERGY, MOVE_SLASH, MOVE_NONE, MOVE_NONE} } }; @@ -862,31 +862,31 @@ static const struct TrainerMonNoItemCustomMoves sParty_Braxton[] = { .iv = 100, .lvl = 28, .species = SPECIES_SWELLOW, - .moves = MOVE_FOCUS_ENERGY, MOVE_QUICK_ATTACK, MOVE_WING_ATTACK, MOVE_ENDEAVOR + .moves = {MOVE_FOCUS_ENERGY, MOVE_QUICK_ATTACK, MOVE_WING_ATTACK, MOVE_ENDEAVOR} }, { .iv = 100, .lvl = 28, .species = SPECIES_TRAPINCH, - .moves = MOVE_BITE, MOVE_DIG, MOVE_FAINT_ATTACK, MOVE_SAND_TOMB + .moves = {MOVE_BITE, MOVE_DIG, MOVE_FAINT_ATTACK, MOVE_SAND_TOMB} }, { .iv = 100, .lvl = 28, .species = SPECIES_WAILMER, - .moves = MOVE_ROLLOUT, MOVE_WHIRLPOOL, MOVE_ASTONISH, MOVE_WATER_PULSE + .moves = {MOVE_ROLLOUT, MOVE_WHIRLPOOL, MOVE_ASTONISH, MOVE_WATER_PULSE} }, { .iv = 100, .lvl = 28, .species = SPECIES_MAGNETON, - .moves = MOVE_THUNDERBOLT, MOVE_SUPERSONIC, MOVE_THUNDER_WAVE, MOVE_SONIC_BOOM + .moves = {MOVE_THUNDERBOLT, MOVE_SUPERSONIC, MOVE_THUNDER_WAVE, MOVE_SONIC_BOOM} }, { .iv = 100, .lvl = 28, .species = SPECIES_SHIFTRY, - .moves = MOVE_GIGA_DRAIN, MOVE_FAINT_ATTACK, MOVE_DOUBLE_TEAM, MOVE_SWAGGER + .moves = {MOVE_GIGA_DRAIN, MOVE_FAINT_ATTACK, MOVE_DOUBLE_TEAM, MOVE_SWAGGER} } }; @@ -1115,7 +1115,7 @@ static const struct TrainerMonItemCustomMoves sParty_Mary[] = { .lvl = 26, .species = SPECIES_DELCATTY, .heldItem = ITEM_NONE, - .moves = MOVE_FAINT_ATTACK, MOVE_SHOCK_WAVE, MOVE_NONE, MOVE_NONE + .moves = {MOVE_FAINT_ATTACK, MOVE_SHOCK_WAVE, MOVE_NONE, MOVE_NONE} } }; @@ -1125,7 +1125,7 @@ static const struct TrainerMonItemCustomMoves sParty_Alexia[] = { .lvl = 26, .species = SPECIES_WIGGLYTUFF, .heldItem = ITEM_NONE, - .moves = MOVE_DEFENSE_CURL, MOVE_DOUBLE_EDGE, MOVE_SHADOW_BALL, MOVE_NONE + .moves = {MOVE_DEFENSE_CURL, MOVE_DOUBLE_EDGE, MOVE_SHADOW_BALL, MOVE_NONE} } }; @@ -1135,7 +1135,7 @@ static const struct TrainerMonItemCustomMoves sParty_Jody[] = { .lvl = 26, .species = SPECIES_ZANGOOSE, .heldItem = ITEM_NONE, - .moves = MOVE_SWORDS_DANCE, MOVE_SLASH, MOVE_NONE, MOVE_NONE + .moves = {MOVE_SWORDS_DANCE, MOVE_SLASH, MOVE_NONE, MOVE_NONE} } }; @@ -1144,19 +1144,19 @@ static const struct TrainerMonNoItemCustomMoves sParty_Wendy[] = { .iv = 100, .lvl = 29, .species = SPECIES_MAWILE, - .moves = MOVE_BATON_PASS, MOVE_FAINT_ATTACK, MOVE_FAKE_TEARS, MOVE_BITE + .moves = {MOVE_BATON_PASS, MOVE_FAINT_ATTACK, MOVE_FAKE_TEARS, MOVE_BITE} }, { .iv = 100, .lvl = 29, .species = SPECIES_ROSELIA, - .moves = MOVE_MEGA_DRAIN, MOVE_MAGICAL_LEAF, MOVE_GRASS_WHISTLE, MOVE_LEECH_SEED + .moves = {MOVE_MEGA_DRAIN, MOVE_MAGICAL_LEAF, MOVE_GRASS_WHISTLE, MOVE_LEECH_SEED} }, { .iv = 100, .lvl = 29, .species = SPECIES_PELIPPER, - .moves = MOVE_FLY, MOVE_WATER_GUN, MOVE_MIST, MOVE_PROTECT + .moves = {MOVE_FLY, MOVE_WATER_GUN, MOVE_MIST, MOVE_PROTECT} } }; @@ -1463,14 +1463,14 @@ static const struct TrainerMonItemCustomMoves sParty_Daphne[] = { .lvl = 39, .species = SPECIES_LUVDISC, .heldItem = ITEM_NUGGET, - .moves = MOVE_ATTRACT, MOVE_SWEET_KISS, MOVE_FLAIL, MOVE_WATER_PULSE + .moves = {MOVE_ATTRACT, MOVE_SWEET_KISS, MOVE_FLAIL, MOVE_WATER_PULSE} }, { .iv = 100, .lvl = 39, .species = SPECIES_LUVDISC, .heldItem = ITEM_NUGGET, - .moves = MOVE_ATTRACT, MOVE_SAFEGUARD, MOVE_TAKE_DOWN, MOVE_WATER_PULSE + .moves = {MOVE_ATTRACT, MOVE_SAFEGUARD, MOVE_TAKE_DOWN, MOVE_WATER_PULSE} } }; @@ -1498,7 +1498,7 @@ static const struct TrainerMonItemCustomMoves sParty_Cindy2[] = { .lvl = 11, .species = SPECIES_ZIGZAGOON, .heldItem = ITEM_NUGGET, - .moves = MOVE_TACKLE, MOVE_TAIL_WHIP, MOVE_NONE, MOVE_NONE + .moves = {MOVE_TACKLE, MOVE_TAIL_WHIP, MOVE_NONE, MOVE_NONE} } }; @@ -1553,7 +1553,7 @@ static const struct TrainerMonItemCustomMoves sParty_Cindy6[] = { .lvl = 36, .species = SPECIES_LINOONE, .heldItem = ITEM_NUGGET, - .moves = MOVE_FURY_SWIPES, MOVE_MUD_SPORT, MOVE_ODOR_SLEUTH, MOVE_SAND_ATTACK + .moves = {MOVE_FURY_SWIPES, MOVE_MUD_SPORT, MOVE_ODOR_SLEUTH, MOVE_SAND_ATTACK} } }; @@ -1586,13 +1586,13 @@ static const struct TrainerMonNoItemCustomMoves sParty_Jessica1[] = { .iv = 0, .lvl = 29, .species = SPECIES_KECLEON, - .moves = MOVE_BIND, MOVE_LICK, MOVE_FURY_SWIPES, MOVE_FAINT_ATTACK + .moves = {MOVE_BIND, MOVE_LICK, MOVE_FURY_SWIPES, MOVE_FAINT_ATTACK} }, { .iv = 0, .lvl = 29, .species = SPECIES_SEVIPER, - .moves = MOVE_POISON_TAIL, MOVE_SCREECH, MOVE_GLARE, MOVE_CRUNCH + .moves = {MOVE_POISON_TAIL, MOVE_SCREECH, MOVE_GLARE, MOVE_CRUNCH} } }; @@ -1617,19 +1617,19 @@ static const struct TrainerMonNoItemCustomMoves sParty_Olivia[] = { .iv = 100, .lvl = 35, .species = SPECIES_CLAMPERL, - .moves = MOVE_IRON_DEFENSE, MOVE_WHIRLPOOL, MOVE_RAIN_DANCE, MOVE_WATER_PULSE + .moves = {MOVE_IRON_DEFENSE, MOVE_WHIRLPOOL, MOVE_RAIN_DANCE, MOVE_WATER_PULSE} }, { .iv = 100, .lvl = 37, .species = SPECIES_CORPHISH, - .moves = MOVE_TAUNT, MOVE_CRABHAMMER, MOVE_WATER_PULSE, MOVE_NONE + .moves = {MOVE_TAUNT, MOVE_CRABHAMMER, MOVE_WATER_PULSE, MOVE_NONE} }, { .iv = 100, .lvl = 39, .species = SPECIES_LOMBRE, - .moves = MOVE_UPROAR, MOVE_FURY_SWIPES, MOVE_FAKE_OUT, MOVE_WATER_PULSE + .moves = {MOVE_UPROAR, MOVE_FURY_SWIPES, MOVE_FAKE_OUT, MOVE_WATER_PULSE} } }; @@ -1651,13 +1651,13 @@ static const struct TrainerMonNoItemCustomMoves sParty_Jessica2[] = { .iv = 10, .lvl = 35, .species = SPECIES_KECLEON, - .moves = MOVE_BIND, MOVE_LICK, MOVE_FURY_SWIPES, MOVE_FAINT_ATTACK + .moves = {MOVE_BIND, MOVE_LICK, MOVE_FURY_SWIPES, MOVE_FAINT_ATTACK} }, { .iv = 10, .lvl = 35, .species = SPECIES_SEVIPER, - .moves = MOVE_POISON_TAIL, MOVE_SCREECH, MOVE_GLARE, MOVE_CRUNCH + .moves = {MOVE_POISON_TAIL, MOVE_SCREECH, MOVE_GLARE, MOVE_CRUNCH} } }; @@ -1666,13 +1666,13 @@ static const struct TrainerMonNoItemCustomMoves sParty_Jessica3[] = { .iv = 20, .lvl = 38, .species = SPECIES_KECLEON, - .moves = MOVE_BIND, MOVE_LICK, MOVE_FURY_SWIPES, MOVE_FAINT_ATTACK + .moves = {MOVE_BIND, MOVE_LICK, MOVE_FURY_SWIPES, MOVE_FAINT_ATTACK} }, { .iv = 20, .lvl = 38, .species = SPECIES_SEVIPER, - .moves = MOVE_POISON_TAIL, MOVE_SCREECH, MOVE_GLARE, MOVE_CRUNCH + .moves = {MOVE_POISON_TAIL, MOVE_SCREECH, MOVE_GLARE, MOVE_CRUNCH} } }; @@ -1681,13 +1681,13 @@ static const struct TrainerMonNoItemCustomMoves sParty_Jessica4[] = { .iv = 30, .lvl = 41, .species = SPECIES_KECLEON, - .moves = MOVE_BIND, MOVE_LICK, MOVE_FURY_SWIPES, MOVE_FAINT_ATTACK + .moves = {MOVE_BIND, MOVE_LICK, MOVE_FURY_SWIPES, MOVE_FAINT_ATTACK} }, { .iv = 30, .lvl = 41, .species = SPECIES_SEVIPER, - .moves = MOVE_POISON_TAIL, MOVE_SCREECH, MOVE_GLARE, MOVE_CRUNCH + .moves = {MOVE_POISON_TAIL, MOVE_SCREECH, MOVE_GLARE, MOVE_CRUNCH} } }; @@ -1696,13 +1696,13 @@ static const struct TrainerMonNoItemCustomMoves sParty_Jessica5[] = { .iv = 40, .lvl = 44, .species = SPECIES_KECLEON, - .moves = MOVE_BIND, MOVE_LICK, MOVE_FURY_SWIPES, MOVE_FAINT_ATTACK + .moves = {MOVE_BIND, MOVE_LICK, MOVE_FURY_SWIPES, MOVE_FAINT_ATTACK} }, { .iv = 40, .lvl = 44, .species = SPECIES_SEVIPER, - .moves = MOVE_POISON_TAIL, MOVE_SCREECH, MOVE_GLARE, MOVE_CRUNCH + .moves = {MOVE_POISON_TAIL, MOVE_SCREECH, MOVE_GLARE, MOVE_CRUNCH} } }; @@ -1770,7 +1770,7 @@ static const struct TrainerMonItemCustomMoves sParty_Winston5[] = { .lvl = 36, .species = SPECIES_LINOONE, .heldItem = ITEM_NUGGET, - .moves = MOVE_FURY_SWIPES, MOVE_MUD_SPORT, MOVE_ODOR_SLEUTH, MOVE_SAND_ATTACK + .moves = {MOVE_FURY_SWIPES, MOVE_MUD_SPORT, MOVE_ODOR_SLEUTH, MOVE_SAND_ATTACK} } }; @@ -2302,13 +2302,13 @@ static const struct TrainerMonNoItemCustomMoves sParty_Kirk[] = { .iv = 100, .lvl = 17, .species = SPECIES_ELECTRIKE, - .moves = MOVE_QUICK_ATTACK, MOVE_THUNDER_WAVE, MOVE_SPARK, MOVE_LEER + .moves = {MOVE_QUICK_ATTACK, MOVE_THUNDER_WAVE, MOVE_SPARK, MOVE_LEER} }, { .iv = 100, .lvl = 17, .species = SPECIES_VOLTORB, - .moves = MOVE_CHARGE, MOVE_SHOCK_WAVE, MOVE_SCREECH, MOVE_NONE + .moves = {MOVE_CHARGE, MOVE_SHOCK_WAVE, MOVE_SCREECH, MOVE_NONE} } }; @@ -2559,7 +2559,7 @@ static const struct TrainerMonNoItemCustomMoves sParty_Drew[] = { .iv = 0, .lvl = 23, .species = SPECIES_SANDSHREW, - .moves = MOVE_DIG, MOVE_SAND_ATTACK, MOVE_POISON_STING, MOVE_SLASH + .moves = {MOVE_DIG, MOVE_SAND_ATTACK, MOVE_POISON_STING, MOVE_SLASH} } }; @@ -2568,19 +2568,19 @@ static const struct TrainerMonNoItemCustomMoves sParty_Beau[] = { .iv = 0, .lvl = 21, .species = SPECIES_BALTOY, - .moves = MOVE_RAPID_SPIN, MOVE_MUD_SLAP, MOVE_PSYBEAM, MOVE_ROCK_TOMB + .moves = {MOVE_RAPID_SPIN, MOVE_MUD_SLAP, MOVE_PSYBEAM, MOVE_ROCK_TOMB} }, { .iv = 0, .lvl = 21, .species = SPECIES_SANDSHREW, - .moves = MOVE_POISON_STING, MOVE_SAND_ATTACK, MOVE_SCRATCH, MOVE_DIG + .moves = {MOVE_POISON_STING, MOVE_SAND_ATTACK, MOVE_SCRATCH, MOVE_DIG} }, { .iv = 0, .lvl = 21, .species = SPECIES_BALTOY, - .moves = MOVE_RAPID_SPIN, MOVE_MUD_SLAP, MOVE_PSYBEAM, MOVE_ROCK_TOMB + .moves = {MOVE_RAPID_SPIN, MOVE_MUD_SLAP, MOVE_PSYBEAM, MOVE_ROCK_TOMB} } }; @@ -2876,7 +2876,7 @@ static const struct TrainerMonNoItemCustomMoves sParty_Edward[] = { .iv = 0, .lvl = 15, .species = SPECIES_ABRA, - .moves = MOVE_HIDDEN_POWER, MOVE_NONE, MOVE_NONE, MOVE_NONE + .moves = {MOVE_HIDDEN_POWER, MOVE_NONE, MOVE_NONE, MOVE_NONE} } }; @@ -3000,7 +3000,7 @@ static const struct TrainerMonNoItemCustomMoves sParty_Jaclyn[] = { .iv = 0, .lvl = 16, .species = SPECIES_ABRA, - .moves = MOVE_HIDDEN_POWER, MOVE_NONE, MOVE_NONE, MOVE_NONE + .moves = {MOVE_HIDDEN_POWER, MOVE_NONE, MOVE_NONE, MOVE_NONE} } }; @@ -3166,13 +3166,13 @@ static const struct TrainerMonNoItemCustomMoves sParty_Walter3[] = { .iv = 20, .lvl = 36, .species = SPECIES_LINOONE, - .moves = MOVE_HEADBUTT, MOVE_SAND_ATTACK, MOVE_ODOR_SLEUTH, MOVE_FURY_SWIPES + .moves = {MOVE_HEADBUTT, MOVE_SAND_ATTACK, MOVE_ODOR_SLEUTH, MOVE_FURY_SWIPES} }, { .iv = 20, .lvl = 36, .species = SPECIES_MANECTRIC, - .moves = MOVE_QUICK_ATTACK, MOVE_SPARK, MOVE_ODOR_SLEUTH, MOVE_ROAR + .moves = {MOVE_QUICK_ATTACK, MOVE_SPARK, MOVE_ODOR_SLEUTH, MOVE_ROAR} } }; @@ -3181,13 +3181,13 @@ static const struct TrainerMonNoItemCustomMoves sParty_Walter4[] = { .iv = 30, .lvl = 39, .species = SPECIES_LINOONE, - .moves = MOVE_HEADBUTT, MOVE_SAND_ATTACK, MOVE_ODOR_SLEUTH, MOVE_FURY_SWIPES + .moves = {MOVE_HEADBUTT, MOVE_SAND_ATTACK, MOVE_ODOR_SLEUTH, MOVE_FURY_SWIPES} }, { .iv = 30, .lvl = 39, .species = SPECIES_MANECTRIC, - .moves = MOVE_QUICK_ATTACK, MOVE_SPARK, MOVE_ODOR_SLEUTH, MOVE_NONE + .moves = {MOVE_QUICK_ATTACK, MOVE_SPARK, MOVE_ODOR_SLEUTH, MOVE_NONE} } }; @@ -3196,19 +3196,19 @@ static const struct TrainerMonNoItemCustomMoves sParty_Walter5[] = { .iv = 40, .lvl = 41, .species = SPECIES_LINOONE, - .moves = MOVE_HEADBUTT, MOVE_SAND_ATTACK, MOVE_ODOR_SLEUTH, MOVE_FURY_SWIPES + .moves = {MOVE_HEADBUTT, MOVE_SAND_ATTACK, MOVE_ODOR_SLEUTH, MOVE_FURY_SWIPES} }, { .iv = 40, .lvl = 41, .species = SPECIES_GOLDUCK, - .moves = MOVE_FURY_SWIPES, MOVE_DISABLE, MOVE_CONFUSION, MOVE_PSYCH_UP + .moves = {MOVE_FURY_SWIPES, MOVE_DISABLE, MOVE_CONFUSION, MOVE_PSYCH_UP} }, { .iv = 40, .lvl = 41, .species = SPECIES_MANECTRIC, - .moves = MOVE_QUICK_ATTACK, MOVE_SPARK, MOVE_ODOR_SLEUTH, MOVE_ROAR + .moves = {MOVE_QUICK_ATTACK, MOVE_SPARK, MOVE_ODOR_SLEUTH, MOVE_ROAR} } }; @@ -3218,35 +3218,35 @@ static const struct TrainerMonItemCustomMoves sParty_Sidney[] = { .lvl = 46, .species = SPECIES_MIGHTYENA, .heldItem = ITEM_NONE, - .moves = MOVE_ROAR, MOVE_DOUBLE_EDGE, MOVE_SAND_ATTACK, MOVE_CRUNCH + .moves = {MOVE_ROAR, MOVE_DOUBLE_EDGE, MOVE_SAND_ATTACK, MOVE_CRUNCH} }, { .iv = 250, .lvl = 48, .species = SPECIES_SHIFTRY, .heldItem = ITEM_NONE, - .moves = MOVE_TORMENT, MOVE_DOUBLE_TEAM, MOVE_SWAGGER, MOVE_EXTRASENSORY + .moves = {MOVE_TORMENT, MOVE_DOUBLE_TEAM, MOVE_SWAGGER, MOVE_EXTRASENSORY} }, { .iv = 250, .lvl = 46, .species = SPECIES_CACTURNE, .heldItem = ITEM_NONE, - .moves = MOVE_LEECH_SEED, MOVE_FAINT_ATTACK, MOVE_NEEDLE_ARM, MOVE_COTTON_SPORE + .moves = {MOVE_LEECH_SEED, MOVE_FAINT_ATTACK, MOVE_NEEDLE_ARM, MOVE_COTTON_SPORE} }, { .iv = 250, .lvl = 48, .species = SPECIES_CRAWDAUNT, .heldItem = ITEM_NONE, - .moves = MOVE_SURF, MOVE_SWORDS_DANCE, MOVE_STRENGTH, MOVE_FACADE + .moves = {MOVE_SURF, MOVE_SWORDS_DANCE, MOVE_STRENGTH, MOVE_FACADE} }, { .iv = 255, .lvl = 49, .species = SPECIES_ABSOL, .heldItem = ITEM_SITRUS_BERRY, - .moves = MOVE_AERIAL_ACE, MOVE_ROCK_SLIDE, MOVE_SWORDS_DANCE, MOVE_SLASH + .moves = {MOVE_AERIAL_ACE, MOVE_ROCK_SLIDE, MOVE_SWORDS_DANCE, MOVE_SLASH} } }; @@ -3256,35 +3256,35 @@ static const struct TrainerMonItemCustomMoves sParty_Phoebe[] = { .lvl = 48, .species = SPECIES_DUSCLOPS, .heldItem = ITEM_NONE, - .moves = MOVE_SHADOW_PUNCH, MOVE_CONFUSE_RAY, MOVE_CURSE, MOVE_PROTECT + .moves = {MOVE_SHADOW_PUNCH, MOVE_CONFUSE_RAY, MOVE_CURSE, MOVE_PROTECT} }, { .iv = 250, .lvl = 49, .species = SPECIES_BANETTE, .heldItem = ITEM_NONE, - .moves = MOVE_SHADOW_BALL, MOVE_GRUDGE, MOVE_WILL_O_WISP, MOVE_FAINT_ATTACK + .moves = {MOVE_SHADOW_BALL, MOVE_GRUDGE, MOVE_WILL_O_WISP, MOVE_FAINT_ATTACK} }, { .iv = 250, .lvl = 50, .species = SPECIES_SABLEYE, .heldItem = ITEM_NONE, - .moves = MOVE_SHADOW_BALL, MOVE_DOUBLE_TEAM, MOVE_NIGHT_SHADE, MOVE_FAINT_ATTACK + .moves = {MOVE_SHADOW_BALL, MOVE_DOUBLE_TEAM, MOVE_NIGHT_SHADE, MOVE_FAINT_ATTACK} }, { .iv = 250, .lvl = 49, .species = SPECIES_BANETTE, .heldItem = ITEM_NONE, - .moves = MOVE_SHADOW_BALL, MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_FACADE + .moves = {MOVE_SHADOW_BALL, MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_FACADE} }, { .iv = 255, .lvl = 51, .species = SPECIES_DUSCLOPS, .heldItem = ITEM_SITRUS_BERRY, - .moves = MOVE_SHADOW_BALL, MOVE_ICE_BEAM, MOVE_ROCK_SLIDE, MOVE_EARTHQUAKE + .moves = {MOVE_SHADOW_BALL, MOVE_ICE_BEAM, MOVE_ROCK_SLIDE, MOVE_EARTHQUAKE} } }; @@ -3294,35 +3294,35 @@ static const struct TrainerMonItemCustomMoves sParty_Glacia[] = { .lvl = 50, .species = SPECIES_SEALEO, .heldItem = ITEM_NONE, - .moves = MOVE_ENCORE, MOVE_BODY_SLAM, MOVE_HAIL, MOVE_ICE_BALL + .moves = {MOVE_ENCORE, MOVE_BODY_SLAM, MOVE_HAIL, MOVE_ICE_BALL} }, { .iv = 250, .lvl = 50, .species = SPECIES_GLALIE, .heldItem = ITEM_NONE, - .moves = MOVE_LIGHT_SCREEN, MOVE_CRUNCH, MOVE_ICY_WIND, MOVE_ICE_BEAM + .moves = {MOVE_LIGHT_SCREEN, MOVE_CRUNCH, MOVE_ICY_WIND, MOVE_ICE_BEAM} }, { .iv = 250, .lvl = 52, .species = SPECIES_SEALEO, .heldItem = ITEM_NONE, - .moves = MOVE_ATTRACT, MOVE_DOUBLE_EDGE, MOVE_HAIL, MOVE_BLIZZARD + .moves = {MOVE_ATTRACT, MOVE_DOUBLE_EDGE, MOVE_HAIL, MOVE_BLIZZARD} }, { .iv = 250, .lvl = 52, .species = SPECIES_GLALIE, .heldItem = ITEM_NONE, - .moves = MOVE_SHADOW_BALL, MOVE_EXPLOSION, MOVE_HAIL, MOVE_ICE_BEAM + .moves = {MOVE_SHADOW_BALL, MOVE_EXPLOSION, MOVE_HAIL, MOVE_ICE_BEAM} }, { .iv = 255, .lvl = 53, .species = SPECIES_WALREIN, .heldItem = ITEM_SITRUS_BERRY, - .moves = MOVE_SURF, MOVE_BODY_SLAM, MOVE_ICE_BEAM, MOVE_SHEER_COLD + .moves = {MOVE_SURF, MOVE_BODY_SLAM, MOVE_ICE_BEAM, MOVE_SHEER_COLD} } }; @@ -3332,35 +3332,35 @@ static const struct TrainerMonItemCustomMoves sParty_Drake[] = { .lvl = 52, .species = SPECIES_SHELGON, .heldItem = ITEM_NONE, - .moves = MOVE_ROCK_TOMB, MOVE_DRAGON_CLAW, MOVE_PROTECT, MOVE_DOUBLE_EDGE + .moves = {MOVE_ROCK_TOMB, MOVE_DRAGON_CLAW, MOVE_PROTECT, MOVE_DOUBLE_EDGE} }, { .iv = 250, .lvl = 54, .species = SPECIES_ALTARIA, .heldItem = ITEM_NONE, - .moves = MOVE_DOUBLE_EDGE, MOVE_DRAGON_BREATH, MOVE_DRAGON_DANCE, MOVE_AERIAL_ACE + .moves = {MOVE_DOUBLE_EDGE, MOVE_DRAGON_BREATH, MOVE_DRAGON_DANCE, MOVE_AERIAL_ACE} }, { .iv = 250, .lvl = 53, .species = SPECIES_KINGDRA, .heldItem = ITEM_NONE, - .moves = MOVE_SMOKESCREEN, MOVE_DRAGON_DANCE, MOVE_SURF, MOVE_BODY_SLAM + .moves = {MOVE_SMOKESCREEN, MOVE_DRAGON_DANCE, MOVE_SURF, MOVE_BODY_SLAM} }, { .iv = 250, .lvl = 53, .species = SPECIES_FLYGON, .heldItem = ITEM_NONE, - .moves = MOVE_FLAMETHROWER, MOVE_CRUNCH, MOVE_DRAGON_BREATH, MOVE_EARTHQUAKE + .moves = {MOVE_FLAMETHROWER, MOVE_CRUNCH, MOVE_DRAGON_BREATH, MOVE_EARTHQUAKE} }, { .iv = 255, .lvl = 55, .species = SPECIES_SALAMENCE, .heldItem = ITEM_SITRUS_BERRY, - .moves = MOVE_FLAMETHROWER, MOVE_DRAGON_CLAW, MOVE_ROCK_SLIDE, MOVE_CRUNCH + .moves = {MOVE_FLAMETHROWER, MOVE_DRAGON_CLAW, MOVE_ROCK_SLIDE, MOVE_CRUNCH} } }; @@ -3370,21 +3370,21 @@ static const struct TrainerMonItemCustomMoves sParty_Roxanne1[] = { .lvl = 12, .species = SPECIES_GEODUDE, .heldItem = ITEM_NONE, - .moves = MOVE_TACKLE, MOVE_DEFENSE_CURL, MOVE_ROCK_THROW, MOVE_ROCK_TOMB + .moves = {MOVE_TACKLE, MOVE_DEFENSE_CURL, MOVE_ROCK_THROW, MOVE_ROCK_TOMB} }, { .iv = 100, .lvl = 12, .species = SPECIES_GEODUDE, .heldItem = ITEM_NONE, - .moves = MOVE_TACKLE, MOVE_DEFENSE_CURL, MOVE_ROCK_THROW, MOVE_ROCK_TOMB + .moves = {MOVE_TACKLE, MOVE_DEFENSE_CURL, MOVE_ROCK_THROW, MOVE_ROCK_TOMB} }, { .iv = 200, .lvl = 15, .species = SPECIES_NOSEPASS, .heldItem = ITEM_ORAN_BERRY, - .moves = MOVE_BLOCK, MOVE_HARDEN, MOVE_TACKLE, MOVE_ROCK_TOMB + .moves = {MOVE_BLOCK, MOVE_HARDEN, MOVE_TACKLE, MOVE_ROCK_TOMB} } }; @@ -3394,21 +3394,21 @@ static const struct TrainerMonItemCustomMoves sParty_Brawly1[] = { .lvl = 16, .species = SPECIES_MACHOP, .heldItem = ITEM_NONE, - .moves = MOVE_KARATE_CHOP, MOVE_LOW_KICK, MOVE_SEISMIC_TOSS, MOVE_BULK_UP + .moves = {MOVE_KARATE_CHOP, MOVE_LOW_KICK, MOVE_SEISMIC_TOSS, MOVE_BULK_UP} }, { .iv = 100, .lvl = 16, .species = SPECIES_MEDITITE, .heldItem = ITEM_NONE, - .moves = MOVE_FOCUS_PUNCH, MOVE_LIGHT_SCREEN, MOVE_REFLECT, MOVE_BULK_UP + .moves = {MOVE_FOCUS_PUNCH, MOVE_LIGHT_SCREEN, MOVE_REFLECT, MOVE_BULK_UP} }, { .iv = 200, .lvl = 19, .species = SPECIES_MAKUHITA, .heldItem = ITEM_SITRUS_BERRY, - .moves = MOVE_ARM_THRUST, MOVE_VITAL_THROW, MOVE_REVERSAL, MOVE_BULK_UP + .moves = {MOVE_ARM_THRUST, MOVE_VITAL_THROW, MOVE_REVERSAL, MOVE_BULK_UP} } }; @@ -3418,28 +3418,28 @@ static const struct TrainerMonItemCustomMoves sParty_Wattson1[] = { .lvl = 20, .species = SPECIES_VOLTORB, .heldItem = ITEM_NONE, - .moves = MOVE_ROLLOUT, MOVE_SPARK, MOVE_SELF_DESTRUCT, MOVE_SHOCK_WAVE + .moves = {MOVE_ROLLOUT, MOVE_SPARK, MOVE_SELF_DESTRUCT, MOVE_SHOCK_WAVE} }, { .iv = 200, .lvl = 20, .species = SPECIES_ELECTRIKE, .heldItem = ITEM_NONE, - .moves = MOVE_SHOCK_WAVE, MOVE_LEER, MOVE_QUICK_ATTACK, MOVE_HOWL + .moves = {MOVE_SHOCK_WAVE, MOVE_LEER, MOVE_QUICK_ATTACK, MOVE_HOWL} }, { .iv = 220, .lvl = 22, .species = SPECIES_MAGNETON, .heldItem = ITEM_NONE, - .moves = MOVE_SUPERSONIC, MOVE_SHOCK_WAVE, MOVE_THUNDER_WAVE, MOVE_SONIC_BOOM + .moves = {MOVE_SUPERSONIC, MOVE_SHOCK_WAVE, MOVE_THUNDER_WAVE, MOVE_SONIC_BOOM} }, { .iv = 250, .lvl = 24, .species = SPECIES_MANECTRIC, .heldItem = ITEM_SITRUS_BERRY, - .moves = MOVE_QUICK_ATTACK, MOVE_THUNDER_WAVE, MOVE_SHOCK_WAVE, MOVE_HOWL + .moves = {MOVE_QUICK_ATTACK, MOVE_THUNDER_WAVE, MOVE_SHOCK_WAVE, MOVE_HOWL} } }; @@ -3449,28 +3449,28 @@ static const struct TrainerMonItemCustomMoves sParty_Flannery1[] = { .lvl = 24, .species = SPECIES_NUMEL, .heldItem = ITEM_NONE, - .moves = MOVE_OVERHEAT, MOVE_TAKE_DOWN, MOVE_MAGNITUDE, MOVE_SUNNY_DAY + .moves = {MOVE_OVERHEAT, MOVE_TAKE_DOWN, MOVE_MAGNITUDE, MOVE_SUNNY_DAY} }, { .iv = 200, .lvl = 24, .species = SPECIES_SLUGMA, .heldItem = ITEM_NONE, - .moves = MOVE_OVERHEAT, MOVE_SMOG, MOVE_LIGHT_SCREEN, MOVE_SUNNY_DAY + .moves = {MOVE_OVERHEAT, MOVE_SMOG, MOVE_LIGHT_SCREEN, MOVE_SUNNY_DAY} }, { .iv = 250, .lvl = 26, .species = SPECIES_CAMERUPT, .heldItem = ITEM_NONE, - .moves = MOVE_OVERHEAT, MOVE_TACKLE, MOVE_SUNNY_DAY, MOVE_ATTRACT + .moves = {MOVE_OVERHEAT, MOVE_TACKLE, MOVE_SUNNY_DAY, MOVE_ATTRACT} }, { .iv = 250, .lvl = 29, .species = SPECIES_TORKOAL, .heldItem = ITEM_WHITE_HERB, - .moves = MOVE_OVERHEAT, MOVE_SUNNY_DAY, MOVE_BODY_SLAM, MOVE_ATTRACT + .moves = {MOVE_OVERHEAT, MOVE_SUNNY_DAY, MOVE_BODY_SLAM, MOVE_ATTRACT} } }; @@ -3480,28 +3480,28 @@ static const struct TrainerMonItemCustomMoves sParty_Norman1[] = { .lvl = 27, .species = SPECIES_SPINDA, .heldItem = ITEM_NONE, - .moves = MOVE_TEETER_DANCE, MOVE_PSYBEAM, MOVE_FACADE, MOVE_ENCORE + .moves = {MOVE_TEETER_DANCE, MOVE_PSYBEAM, MOVE_FACADE, MOVE_ENCORE} }, { .iv = 200, .lvl = 27, .species = SPECIES_VIGOROTH, .heldItem = ITEM_NONE, - .moves = MOVE_SLASH, MOVE_FACADE, MOVE_ENCORE, MOVE_FAINT_ATTACK + .moves = {MOVE_SLASH, MOVE_FACADE, MOVE_ENCORE, MOVE_FAINT_ATTACK} }, { .iv = 200, .lvl = 29, .species = SPECIES_LINOONE, .heldItem = ITEM_NONE, - .moves = MOVE_SLASH, MOVE_BELLY_DRUM, MOVE_FACADE, MOVE_HEADBUTT + .moves = {MOVE_SLASH, MOVE_BELLY_DRUM, MOVE_FACADE, MOVE_HEADBUTT} }, { .iv = 250, .lvl = 31, .species = SPECIES_SLAKING, .heldItem = ITEM_SITRUS_BERRY, - .moves = MOVE_COUNTER, MOVE_YAWN, MOVE_FACADE, MOVE_FAINT_ATTACK + .moves = {MOVE_COUNTER, MOVE_YAWN, MOVE_FACADE, MOVE_FAINT_ATTACK} } }; @@ -3511,35 +3511,35 @@ static const struct TrainerMonItemCustomMoves sParty_Winona1[] = { .lvl = 29, .species = SPECIES_SWABLU, .heldItem = ITEM_NONE, - .moves = MOVE_PERISH_SONG, MOVE_MIRROR_MOVE, MOVE_SAFEGUARD, MOVE_AERIAL_ACE + .moves = {MOVE_PERISH_SONG, MOVE_MIRROR_MOVE, MOVE_SAFEGUARD, MOVE_AERIAL_ACE} }, { .iv = 210, .lvl = 29, .species = SPECIES_TROPIUS, .heldItem = ITEM_NONE, - .moves = MOVE_SUNNY_DAY, MOVE_AERIAL_ACE, MOVE_SOLAR_BEAM, MOVE_SYNTHESIS + .moves = {MOVE_SUNNY_DAY, MOVE_AERIAL_ACE, MOVE_SOLAR_BEAM, MOVE_SYNTHESIS} }, { .iv = 210, .lvl = 30, .species = SPECIES_PELIPPER, .heldItem = ITEM_NONE, - .moves = MOVE_WATER_GUN, MOVE_SUPERSONIC, MOVE_PROTECT, MOVE_AERIAL_ACE + .moves = {MOVE_WATER_GUN, MOVE_SUPERSONIC, MOVE_PROTECT, MOVE_AERIAL_ACE} }, { .iv = 220, .lvl = 31, .species = SPECIES_SKARMORY, .heldItem = ITEM_NONE, - .moves = MOVE_SAND_ATTACK, MOVE_FURY_ATTACK, MOVE_STEEL_WING, MOVE_AERIAL_ACE + .moves = {MOVE_SAND_ATTACK, MOVE_FURY_ATTACK, MOVE_STEEL_WING, MOVE_AERIAL_ACE} }, { .iv = 255, .lvl = 33, .species = SPECIES_ALTARIA, .heldItem = ITEM_ORAN_BERRY, - .moves = MOVE_EARTHQUAKE, MOVE_DRAGON_BREATH, MOVE_DRAGON_DANCE, MOVE_AERIAL_ACE + .moves = {MOVE_EARTHQUAKE, MOVE_DRAGON_BREATH, MOVE_DRAGON_DANCE, MOVE_AERIAL_ACE} } }; @@ -3549,28 +3549,28 @@ static const struct TrainerMonItemCustomMoves sParty_TateAndLiza1[] = { .lvl = 41, .species = SPECIES_CLAYDOL, .heldItem = ITEM_NONE, - .moves = MOVE_EARTHQUAKE, MOVE_ANCIENT_POWER, MOVE_PSYCHIC, MOVE_LIGHT_SCREEN + .moves = {MOVE_EARTHQUAKE, MOVE_ANCIENT_POWER, MOVE_PSYCHIC, MOVE_LIGHT_SCREEN} }, { .iv = 250, .lvl = 41, .species = SPECIES_XATU, .heldItem = ITEM_NONE, - .moves = MOVE_PSYCHIC, MOVE_SUNNY_DAY, MOVE_CONFUSE_RAY, MOVE_CALM_MIND + .moves = {MOVE_PSYCHIC, MOVE_SUNNY_DAY, MOVE_CONFUSE_RAY, MOVE_CALM_MIND} }, { .iv = 250, .lvl = 42, .species = SPECIES_LUNATONE, .heldItem = ITEM_SITRUS_BERRY, - .moves = MOVE_LIGHT_SCREEN, MOVE_PSYCHIC, MOVE_HYPNOSIS, MOVE_CALM_MIND + .moves = {MOVE_LIGHT_SCREEN, MOVE_PSYCHIC, MOVE_HYPNOSIS, MOVE_CALM_MIND} }, { .iv = 250, .lvl = 42, .species = SPECIES_SOLROCK, .heldItem = ITEM_SITRUS_BERRY, - .moves = MOVE_SUNNY_DAY, MOVE_SOLAR_BEAM, MOVE_PSYCHIC, MOVE_FLAMETHROWER + .moves = {MOVE_SUNNY_DAY, MOVE_SOLAR_BEAM, MOVE_PSYCHIC, MOVE_FLAMETHROWER} } }; @@ -3580,35 +3580,35 @@ static const struct TrainerMonItemCustomMoves sParty_Juan1[] = { .lvl = 41, .species = SPECIES_LUVDISC, .heldItem = ITEM_NONE, - .moves = MOVE_WATER_PULSE, MOVE_ATTRACT, MOVE_SWEET_KISS, MOVE_FLAIL + .moves = {MOVE_WATER_PULSE, MOVE_ATTRACT, MOVE_SWEET_KISS, MOVE_FLAIL} }, { .iv = 200, .lvl = 41, .species = SPECIES_WHISCASH, .heldItem = ITEM_NONE, - .moves = MOVE_RAIN_DANCE, MOVE_WATER_PULSE, MOVE_AMNESIA, MOVE_EARTHQUAKE + .moves = {MOVE_RAIN_DANCE, MOVE_WATER_PULSE, MOVE_AMNESIA, MOVE_EARTHQUAKE} }, { .iv = 200, .lvl = 43, .species = SPECIES_SEALEO, .heldItem = ITEM_NONE, - .moves = MOVE_ENCORE, MOVE_BODY_SLAM, MOVE_AURORA_BEAM, MOVE_WATER_PULSE + .moves = {MOVE_ENCORE, MOVE_BODY_SLAM, MOVE_AURORA_BEAM, MOVE_WATER_PULSE} }, { .iv = 200, .lvl = 43, .species = SPECIES_CRAWDAUNT, .heldItem = ITEM_NONE, - .moves = MOVE_WATER_PULSE, MOVE_CRABHAMMER, MOVE_TAUNT, MOVE_LEER + .moves = {MOVE_WATER_PULSE, MOVE_CRABHAMMER, MOVE_TAUNT, MOVE_LEER} }, { .iv = 250, .lvl = 46, .species = SPECIES_KINGDRA, .heldItem = ITEM_CHESTO_BERRY, - .moves = MOVE_WATER_PULSE, MOVE_DOUBLE_TEAM, MOVE_ICE_BEAM, MOVE_REST + .moves = {MOVE_WATER_PULSE, MOVE_DOUBLE_TEAM, MOVE_ICE_BEAM, MOVE_REST} } }; @@ -3781,13 +3781,13 @@ static const struct TrainerMonNoItemCustomMoves sParty_KateAndJoy[] = { .iv = 0, .lvl = 30, .species = SPECIES_SPINDA, - .moves = MOVE_HYPNOSIS, MOVE_PSYBEAM, MOVE_DIZZY_PUNCH, MOVE_TEETER_DANCE + .moves = {MOVE_HYPNOSIS, MOVE_PSYBEAM, MOVE_DIZZY_PUNCH, MOVE_TEETER_DANCE} }, { .iv = 0, .lvl = 32, .species = SPECIES_SLAKING, - .moves = MOVE_FOCUS_PUNCH, MOVE_YAWN, MOVE_SLACK_OFF, MOVE_FAINT_ATTACK + .moves = {MOVE_FOCUS_PUNCH, MOVE_YAWN, MOVE_SLACK_OFF, MOVE_FAINT_ATTACK} } }; @@ -3796,13 +3796,13 @@ static const struct TrainerMonNoItemCustomMoves sParty_AnnaAndMeg1[] = { .iv = 0, .lvl = 15, .species = SPECIES_ZIGZAGOON, - .moves = MOVE_GROWL, MOVE_TAIL_WHIP, MOVE_HEADBUTT, MOVE_ODOR_SLEUTH + .moves = {MOVE_GROWL, MOVE_TAIL_WHIP, MOVE_HEADBUTT, MOVE_ODOR_SLEUTH} }, { .iv = 0, .lvl = 17, .species = SPECIES_MAKUHITA, - .moves = MOVE_TACKLE, MOVE_FOCUS_ENERGY, MOVE_ARM_THRUST, MOVE_NONE + .moves = {MOVE_TACKLE, MOVE_FOCUS_ENERGY, MOVE_ARM_THRUST, MOVE_NONE} } }; @@ -3811,13 +3811,13 @@ static const struct TrainerMonNoItemCustomMoves sParty_AnnaAndMeg2[] = { .iv = 10, .lvl = 28, .species = SPECIES_ZIGZAGOON, - .moves = MOVE_GROWL, MOVE_TAIL_WHIP, MOVE_HEADBUTT, MOVE_ODOR_SLEUTH + .moves = {MOVE_GROWL, MOVE_TAIL_WHIP, MOVE_HEADBUTT, MOVE_ODOR_SLEUTH} }, { .iv = 10, .lvl = 30, .species = SPECIES_MAKUHITA, - .moves = MOVE_TACKLE, MOVE_FOCUS_ENERGY, MOVE_ARM_THRUST, MOVE_NONE + .moves = {MOVE_TACKLE, MOVE_FOCUS_ENERGY, MOVE_ARM_THRUST, MOVE_NONE} } }; @@ -3826,13 +3826,13 @@ static const struct TrainerMonNoItemCustomMoves sParty_AnnaAndMeg3[] = { .iv = 20, .lvl = 31, .species = SPECIES_ZIGZAGOON, - .moves = MOVE_GROWL, MOVE_TAIL_WHIP, MOVE_HEADBUTT, MOVE_ODOR_SLEUTH + .moves = {MOVE_GROWL, MOVE_TAIL_WHIP, MOVE_HEADBUTT, MOVE_ODOR_SLEUTH} }, { .iv = 20, .lvl = 33, .species = SPECIES_MAKUHITA, - .moves = MOVE_TACKLE, MOVE_FOCUS_ENERGY, MOVE_ARM_THRUST, MOVE_NONE + .moves = {MOVE_TACKLE, MOVE_FOCUS_ENERGY, MOVE_ARM_THRUST, MOVE_NONE} } }; @@ -3841,13 +3841,13 @@ static const struct TrainerMonNoItemCustomMoves sParty_AnnaAndMeg4[] = { .iv = 30, .lvl = 34, .species = SPECIES_LINOONE, - .moves = MOVE_GROWL, MOVE_TAIL_WHIP, MOVE_HEADBUTT, MOVE_ODOR_SLEUTH + .moves = {MOVE_GROWL, MOVE_TAIL_WHIP, MOVE_HEADBUTT, MOVE_ODOR_SLEUTH} }, { .iv = 30, .lvl = 36, .species = SPECIES_MAKUHITA, - .moves = MOVE_TACKLE, MOVE_FOCUS_ENERGY, MOVE_ARM_THRUST, MOVE_NONE + .moves = {MOVE_TACKLE, MOVE_FOCUS_ENERGY, MOVE_ARM_THRUST, MOVE_NONE} } }; @@ -3856,13 +3856,13 @@ static const struct TrainerMonNoItemCustomMoves sParty_AnnaAndMeg5[] = { .iv = 40, .lvl = 36, .species = SPECIES_LINOONE, - .moves = MOVE_GROWL, MOVE_TAIL_WHIP, MOVE_HEADBUTT, MOVE_ODOR_SLEUTH + .moves = {MOVE_GROWL, MOVE_TAIL_WHIP, MOVE_HEADBUTT, MOVE_ODOR_SLEUTH} }, { .iv = 40, .lvl = 38, .species = SPECIES_HARIYAMA, - .moves = MOVE_TACKLE, MOVE_FOCUS_ENERGY, MOVE_ARM_THRUST, MOVE_NONE + .moves = {MOVE_TACKLE, MOVE_FOCUS_ENERGY, MOVE_ARM_THRUST, MOVE_NONE} } }; @@ -3896,42 +3896,42 @@ static const struct TrainerMonItemCustomMoves sParty_Colton[] = { .lvl = 22, .species = SPECIES_SKITTY, .heldItem = ITEM_ORAN_BERRY, - .moves = MOVE_ASSIST, MOVE_CHARM, MOVE_FAINT_ATTACK, MOVE_HEAL_BELL + .moves = {MOVE_ASSIST, MOVE_CHARM, MOVE_FAINT_ATTACK, MOVE_HEAL_BELL} }, { .iv = 0, .lvl = 36, .species = SPECIES_SKITTY, .heldItem = ITEM_ORAN_BERRY, - .moves = MOVE_ASSIST, MOVE_CHARM, MOVE_FAINT_ATTACK, MOVE_HEAL_BELL + .moves = {MOVE_ASSIST, MOVE_CHARM, MOVE_FAINT_ATTACK, MOVE_HEAL_BELL} }, { .iv = 0, .lvl = 40, .species = SPECIES_SKITTY, .heldItem = ITEM_ORAN_BERRY, - .moves = MOVE_ASSIST, MOVE_CHARM, MOVE_FAINT_ATTACK, MOVE_HEAL_BELL + .moves = {MOVE_ASSIST, MOVE_CHARM, MOVE_FAINT_ATTACK, MOVE_HEAL_BELL} }, { .iv = 0, .lvl = 12, .species = SPECIES_SKITTY, .heldItem = ITEM_ORAN_BERRY, - .moves = MOVE_ASSIST, MOVE_CHARM, MOVE_FAINT_ATTACK, MOVE_HEAL_BELL + .moves = {MOVE_ASSIST, MOVE_CHARM, MOVE_FAINT_ATTACK, MOVE_HEAL_BELL} }, { .iv = 0, .lvl = 30, .species = SPECIES_SKITTY, .heldItem = ITEM_ORAN_BERRY, - .moves = MOVE_ASSIST, MOVE_CHARM, MOVE_FAINT_ATTACK, MOVE_HEAL_BELL + .moves = {MOVE_ASSIST, MOVE_CHARM, MOVE_FAINT_ATTACK, MOVE_HEAL_BELL} }, { .iv = 0, .lvl = 42, .species = SPECIES_DELCATTY, .heldItem = ITEM_ORAN_BERRY, - .moves = MOVE_ASSIST, MOVE_CHARM, MOVE_FAINT_ATTACK, MOVE_HEAL_BELL + .moves = {MOVE_ASSIST, MOVE_CHARM, MOVE_FAINT_ATTACK, MOVE_HEAL_BELL} } }; @@ -4098,7 +4098,7 @@ static const struct TrainerMonNoItemCustomMoves sParty_Timothy2[] = { .iv = 210, .lvl = 33, .species = SPECIES_HARIYAMA, - .moves = MOVE_ARM_THRUST, MOVE_KNOCK_OFF, MOVE_SAND_ATTACK, MOVE_DIG + .moves = {MOVE_ARM_THRUST, MOVE_KNOCK_OFF, MOVE_SAND_ATTACK, MOVE_DIG} } }; @@ -4107,7 +4107,7 @@ static const struct TrainerMonNoItemCustomMoves sParty_Timothy3[] = { .iv = 220, .lvl = 36, .species = SPECIES_HARIYAMA, - .moves = MOVE_ARM_THRUST, MOVE_KNOCK_OFF, MOVE_SAND_ATTACK, MOVE_DIG + .moves = {MOVE_ARM_THRUST, MOVE_KNOCK_OFF, MOVE_SAND_ATTACK, MOVE_DIG} } }; @@ -4116,7 +4116,7 @@ static const struct TrainerMonNoItemCustomMoves sParty_Timothy4[] = { .iv = 230, .lvl = 39, .species = SPECIES_HARIYAMA, - .moves = MOVE_ARM_THRUST, MOVE_BELLY_DRUM, MOVE_SAND_ATTACK, MOVE_DIG + .moves = {MOVE_ARM_THRUST, MOVE_BELLY_DRUM, MOVE_SAND_ATTACK, MOVE_DIG} } }; @@ -4125,7 +4125,7 @@ static const struct TrainerMonNoItemCustomMoves sParty_Timothy5[] = { .iv = 240, .lvl = 42, .species = SPECIES_HARIYAMA, - .moves = MOVE_ARM_THRUST, MOVE_BELLY_DRUM, MOVE_SAND_ATTACK, MOVE_DIG + .moves = {MOVE_ARM_THRUST, MOVE_BELLY_DRUM, MOVE_SAND_ATTACK, MOVE_DIG} } }; @@ -4134,7 +4134,7 @@ static const struct TrainerMonNoItemCustomMoves sParty_Vicky[] = { .iv = 200, .lvl = 18, .species = SPECIES_MEDITITE, - .moves = MOVE_HI_JUMP_KICK, MOVE_MEDITATE, MOVE_CONFUSION, MOVE_DETECT + .moves = {MOVE_HI_JUMP_KICK, MOVE_MEDITATE, MOVE_CONFUSION, MOVE_DETECT} } }; @@ -4229,7 +4229,7 @@ static const struct TrainerMonNoItemCustomMoves sParty_Josh[] = { .iv = 100, .lvl = 10, .species = SPECIES_GEODUDE, - .moves = MOVE_TACKLE, MOVE_NONE, MOVE_NONE, MOVE_NONE + .moves = {MOVE_TACKLE, MOVE_NONE, MOVE_NONE, MOVE_NONE} } }; @@ -4259,13 +4259,13 @@ static const struct TrainerMonNoItemCustomMoves sParty_Ben[] = { .iv = 150, .lvl = 17, .species = SPECIES_ZIGZAGOON, - .moves = MOVE_HEADBUTT, MOVE_SAND_ATTACK, MOVE_GROWL, MOVE_THUNDERBOLT + .moves = {MOVE_HEADBUTT, MOVE_SAND_ATTACK, MOVE_GROWL, MOVE_THUNDERBOLT} }, { .iv = 150, .lvl = 17, .species = SPECIES_GULPIN, - .moves = MOVE_AMNESIA, MOVE_SLUDGE, MOVE_YAWN, MOVE_POUND + .moves = {MOVE_AMNESIA, MOVE_SLUDGE, MOVE_YAWN, MOVE_POUND} } }; @@ -4274,13 +4274,13 @@ static const struct TrainerMonNoItemCustomMoves sParty_Quincy[] = { .iv = 100, .lvl = 43, .species = SPECIES_SLAKING, - .moves = MOVE_ATTRACT, MOVE_ICE_BEAM, MOVE_THUNDERBOLT, MOVE_FLAMETHROWER + .moves = {MOVE_ATTRACT, MOVE_ICE_BEAM, MOVE_THUNDERBOLT, MOVE_FLAMETHROWER} }, { .iv = 100, .lvl = 43, .species = SPECIES_DUSCLOPS, - .moves = MOVE_SKILL_SWAP, MOVE_PROTECT, MOVE_WILL_O_WISP, MOVE_TOXIC + .moves = {MOVE_SKILL_SWAP, MOVE_PROTECT, MOVE_WILL_O_WISP, MOVE_TOXIC} } }; @@ -4289,13 +4289,13 @@ static const struct TrainerMonNoItemCustomMoves sParty_Katelynn[] = { .iv = 100, .lvl = 43, .species = SPECIES_GARDEVOIR, - .moves = MOVE_SKILL_SWAP, MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_CALM_MIND + .moves = {MOVE_SKILL_SWAP, MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_CALM_MIND} }, { .iv = 100, .lvl = 43, .species = SPECIES_SLAKING, - .moves = MOVE_EARTHQUAKE, MOVE_SHADOW_BALL, MOVE_AERIAL_ACE, MOVE_BRICK_BREAK + .moves = {MOVE_EARTHQUAKE, MOVE_SHADOW_BALL, MOVE_AERIAL_ACE, MOVE_BRICK_BREAK} } }; @@ -4417,42 +4417,42 @@ static const struct TrainerMonItemCustomMoves sParty_Wallace[] = { .lvl = 57, .species = SPECIES_WAILORD, .heldItem = ITEM_NONE, - .moves = MOVE_RAIN_DANCE, MOVE_WATER_SPOUT, MOVE_DOUBLE_EDGE, MOVE_BLIZZARD + .moves = {MOVE_RAIN_DANCE, MOVE_WATER_SPOUT, MOVE_DOUBLE_EDGE, MOVE_BLIZZARD} }, { .iv = 255, .lvl = 55, .species = SPECIES_TENTACRUEL, .heldItem = ITEM_NONE, - .moves = MOVE_TOXIC, MOVE_HYDRO_PUMP, MOVE_SLUDGE_BOMB, MOVE_ICE_BEAM + .moves = {MOVE_TOXIC, MOVE_HYDRO_PUMP, MOVE_SLUDGE_BOMB, MOVE_ICE_BEAM} }, { .iv = 255, .lvl = 56, .species = SPECIES_LUDICOLO, .heldItem = ITEM_NONE, - .moves = MOVE_GIGA_DRAIN, MOVE_SURF, MOVE_LEECH_SEED, MOVE_DOUBLE_TEAM + .moves = {MOVE_GIGA_DRAIN, MOVE_SURF, MOVE_LEECH_SEED, MOVE_DOUBLE_TEAM} }, { .iv = 255, .lvl = 56, .species = SPECIES_WHISCASH, .heldItem = ITEM_NONE, - .moves = MOVE_EARTHQUAKE, MOVE_SURF, MOVE_AMNESIA, MOVE_HYPER_BEAM + .moves = {MOVE_EARTHQUAKE, MOVE_SURF, MOVE_AMNESIA, MOVE_HYPER_BEAM} }, { .iv = 255, .lvl = 56, .species = SPECIES_GYARADOS, .heldItem = ITEM_NONE, - .moves = MOVE_DRAGON_DANCE, MOVE_EARTHQUAKE, MOVE_HYPER_BEAM, MOVE_SURF + .moves = {MOVE_DRAGON_DANCE, MOVE_EARTHQUAKE, MOVE_HYPER_BEAM, MOVE_SURF} }, { .iv = 255, .lvl = 58, .species = SPECIES_MILOTIC, .heldItem = ITEM_SITRUS_BERRY, - .moves = MOVE_RECOVER, MOVE_SURF, MOVE_ICE_BEAM, MOVE_TOXIC + .moves = {MOVE_RECOVER, MOVE_SURF, MOVE_ICE_BEAM, MOVE_TOXIC} } }; @@ -5187,7 +5187,7 @@ static const struct TrainerMonNoItemCustomMoves sParty_Aaron[] = { .iv = 255, .lvl = 34, .species = SPECIES_BAGON, - .moves = MOVE_DRAGON_BREATH, MOVE_HEADBUTT, MOVE_FOCUS_ENERGY, MOVE_EMBER + .moves = {MOVE_DRAGON_BREATH, MOVE_HEADBUTT, MOVE_FOCUS_ENERGY, MOVE_EMBER} } }; @@ -5424,14 +5424,14 @@ static const struct TrainerMonItemCustomMoves sParty_Dianne[] = { .lvl = 43, .species = SPECIES_CLAYDOL, .heldItem = ITEM_NONE, - .moves = MOVE_SKILL_SWAP, MOVE_EARTHQUAKE, MOVE_NONE, MOVE_NONE + .moves = {MOVE_SKILL_SWAP, MOVE_EARTHQUAKE, MOVE_NONE, MOVE_NONE} }, { .iv = 0, .lvl = 43, .species = SPECIES_LANTURN, .heldItem = ITEM_NONE, - .moves = MOVE_THUNDERBOLT, MOVE_EARTHQUAKE, MOVE_NONE, MOVE_NONE + .moves = {MOVE_THUNDERBOLT, MOVE_EARTHQUAKE, MOVE_NONE, MOVE_NONE} } }; @@ -5448,19 +5448,19 @@ static const struct TrainerMonNoItemCustomMoves sParty_Lao1[] = { .iv = 0, .lvl = 17, .species = SPECIES_KOFFING, - .moves = MOVE_POISON_GAS, MOVE_TACKLE, MOVE_SMOG, MOVE_SELF_DESTRUCT + .moves = {MOVE_POISON_GAS, MOVE_TACKLE, MOVE_SMOG, MOVE_SELF_DESTRUCT} }, { .iv = 0, .lvl = 17, .species = SPECIES_KOFFING, - .moves = MOVE_POISON_GAS, MOVE_TACKLE, MOVE_SMOG, MOVE_SELF_DESTRUCT + .moves = {MOVE_POISON_GAS, MOVE_TACKLE, MOVE_SMOG, MOVE_SELF_DESTRUCT} }, { .iv = 0, .lvl = 17, .species = SPECIES_KOFFING, - .moves = MOVE_POISON_GAS, MOVE_TACKLE, MOVE_SLUDGE, MOVE_SELF_DESTRUCT + .moves = {MOVE_POISON_GAS, MOVE_TACKLE, MOVE_SLUDGE, MOVE_SELF_DESTRUCT} } }; @@ -5482,25 +5482,25 @@ static const struct TrainerMonNoItemCustomMoves sParty_Lao2[] = { .iv = 0, .lvl = 24, .species = SPECIES_KOFFING, - .moves = MOVE_POISON_GAS, MOVE_TACKLE, MOVE_SLUDGE, MOVE_SELF_DESTRUCT + .moves = {MOVE_POISON_GAS, MOVE_TACKLE, MOVE_SLUDGE, MOVE_SELF_DESTRUCT} }, { .iv = 0, .lvl = 24, .species = SPECIES_KOFFING, - .moves = MOVE_POISON_GAS, MOVE_TACKLE, MOVE_SLUDGE, MOVE_NONE + .moves = {MOVE_POISON_GAS, MOVE_TACKLE, MOVE_SLUDGE, MOVE_NONE} }, { .iv = 0, .lvl = 24, .species = SPECIES_KOFFING, - .moves = MOVE_POISON_GAS, MOVE_TACKLE, MOVE_SLUDGE, MOVE_SELF_DESTRUCT + .moves = {MOVE_POISON_GAS, MOVE_TACKLE, MOVE_SLUDGE, MOVE_SELF_DESTRUCT} }, { .iv = 0, .lvl = 26, .species = SPECIES_KOFFING, - .moves = MOVE_TACKLE, MOVE_SLUDGE, MOVE_NONE, MOVE_NONE + .moves = {MOVE_TACKLE, MOVE_SLUDGE, MOVE_NONE, MOVE_NONE} } }; @@ -5509,25 +5509,25 @@ static const struct TrainerMonNoItemCustomMoves sParty_Lao3[] = { .iv = 20, .lvl = 27, .species = SPECIES_KOFFING, - .moves = MOVE_POISON_GAS, MOVE_TACKLE, MOVE_SLUDGE, MOVE_SELF_DESTRUCT + .moves = {MOVE_POISON_GAS, MOVE_TACKLE, MOVE_SLUDGE, MOVE_SELF_DESTRUCT} }, { .iv = 20, .lvl = 27, .species = SPECIES_KOFFING, - .moves = MOVE_POISON_GAS, MOVE_TACKLE, MOVE_SLUDGE, MOVE_SELF_DESTRUCT + .moves = {MOVE_POISON_GAS, MOVE_TACKLE, MOVE_SLUDGE, MOVE_SELF_DESTRUCT} }, { .iv = 20, .lvl = 27, .species = SPECIES_KOFFING, - .moves = MOVE_POISON_GAS, MOVE_TACKLE, MOVE_SLUDGE, MOVE_NONE + .moves = {MOVE_POISON_GAS, MOVE_TACKLE, MOVE_SLUDGE, MOVE_NONE} }, { .iv = 20, .lvl = 29, .species = SPECIES_KOFFING, - .moves = MOVE_TACKLE, MOVE_SLUDGE, MOVE_NONE, MOVE_NONE + .moves = {MOVE_TACKLE, MOVE_SLUDGE, MOVE_NONE, MOVE_NONE} } }; @@ -5536,25 +5536,25 @@ static const struct TrainerMonNoItemCustomMoves sParty_Lao4[] = { .iv = 30, .lvl = 30, .species = SPECIES_KOFFING, - .moves = MOVE_POISON_GAS, MOVE_TACKLE, MOVE_SLUDGE, MOVE_NONE + .moves = {MOVE_POISON_GAS, MOVE_TACKLE, MOVE_SLUDGE, MOVE_NONE} }, { .iv = 30, .lvl = 30, .species = SPECIES_KOFFING, - .moves = MOVE_POISON_GAS, MOVE_TACKLE, MOVE_SLUDGE, MOVE_NONE + .moves = {MOVE_POISON_GAS, MOVE_TACKLE, MOVE_SLUDGE, MOVE_NONE} }, { .iv = 30, .lvl = 30, .species = SPECIES_KOFFING, - .moves = MOVE_POISON_GAS, MOVE_TACKLE, MOVE_SLUDGE, MOVE_NONE + .moves = {MOVE_POISON_GAS, MOVE_TACKLE, MOVE_SLUDGE, MOVE_NONE} }, { .iv = 30, .lvl = 32, .species = SPECIES_KOFFING, - .moves = MOVE_TACKLE, MOVE_SLUDGE, MOVE_NONE, MOVE_NONE + .moves = {MOVE_TACKLE, MOVE_SLUDGE, MOVE_NONE, MOVE_NONE} } }; @@ -5564,28 +5564,28 @@ static const struct TrainerMonItemCustomMoves sParty_Lao5[] = { .lvl = 33, .species = SPECIES_KOFFING, .heldItem = ITEM_NONE, - .moves = MOVE_POISON_GAS, MOVE_TACKLE, MOVE_SLUDGE, MOVE_NONE + .moves = {MOVE_POISON_GAS, MOVE_TACKLE, MOVE_SLUDGE, MOVE_NONE} }, { .iv = 40, .lvl = 33, .species = SPECIES_KOFFING, .heldItem = ITEM_NONE, - .moves = MOVE_POISON_GAS, MOVE_TACKLE, MOVE_SLUDGE, MOVE_SELF_DESTRUCT + .moves = {MOVE_POISON_GAS, MOVE_TACKLE, MOVE_SLUDGE, MOVE_SELF_DESTRUCT} }, { .iv = 40, .lvl = 33, .species = SPECIES_KOFFING, .heldItem = ITEM_NONE, - .moves = MOVE_POISON_GAS, MOVE_TACKLE, MOVE_SLUDGE, MOVE_SELF_DESTRUCT + .moves = {MOVE_POISON_GAS, MOVE_TACKLE, MOVE_SLUDGE, MOVE_SELF_DESTRUCT} }, { .iv = 40, .lvl = 35, .species = SPECIES_WEEZING, .heldItem = ITEM_SMOKE_BALL, - .moves = MOVE_TACKLE, MOVE_SLUDGE, MOVE_NONE, MOVE_NONE + .moves = {MOVE_TACKLE, MOVE_SLUDGE, MOVE_NONE, MOVE_NONE} } }; @@ -5691,7 +5691,7 @@ static const struct TrainerMonNoItemCustomMoves sParty_Madeline1[] = { .iv = 0, .lvl = 19, .species = SPECIES_NUMEL, - .moves = MOVE_EMBER, MOVE_TACKLE, MOVE_MAGNITUDE, MOVE_SUNNY_DAY + .moves = {MOVE_EMBER, MOVE_TACKLE, MOVE_MAGNITUDE, MOVE_SUNNY_DAY} } }; @@ -5713,7 +5713,7 @@ static const struct TrainerMonNoItemCustomMoves sParty_Angelica[] = { .iv = 50, .lvl = 30, .species = SPECIES_CASTFORM, - .moves = MOVE_RAIN_DANCE, MOVE_WEATHER_BALL, MOVE_THUNDER, MOVE_WATER_PULSE + .moves = {MOVE_RAIN_DANCE, MOVE_WEATHER_BALL, MOVE_THUNDER, MOVE_WATER_PULSE} } }; @@ -5722,7 +5722,7 @@ static const struct TrainerMonNoItemCustomMoves sParty_Madeline2[] = { .iv = 10, .lvl = 29, .species = SPECIES_NUMEL, - .moves = MOVE_EMBER, MOVE_TACKLE, MOVE_MAGNITUDE, MOVE_SUNNY_DAY + .moves = {MOVE_EMBER, MOVE_TACKLE, MOVE_MAGNITUDE, MOVE_SUNNY_DAY} } }; @@ -5731,7 +5731,7 @@ static const struct TrainerMonNoItemCustomMoves sParty_Madeline3[] = { .iv = 20, .lvl = 32, .species = SPECIES_NUMEL, - .moves = MOVE_EMBER, MOVE_TAKE_DOWN, MOVE_MAGNITUDE, MOVE_SUNNY_DAY + .moves = {MOVE_EMBER, MOVE_TAKE_DOWN, MOVE_MAGNITUDE, MOVE_SUNNY_DAY} } }; @@ -5740,13 +5740,13 @@ static const struct TrainerMonNoItemCustomMoves sParty_Madeline4[] = { .iv = 30, .lvl = 34, .species = SPECIES_ROSELIA, - .moves = MOVE_LEECH_SEED, MOVE_MEGA_DRAIN, MOVE_GRASS_WHISTLE, MOVE_SUNNY_DAY + .moves = {MOVE_LEECH_SEED, MOVE_MEGA_DRAIN, MOVE_GRASS_WHISTLE, MOVE_SUNNY_DAY} }, { .iv = 30, .lvl = 34, .species = SPECIES_NUMEL, - .moves = MOVE_FLAMETHROWER, MOVE_TAKE_DOWN, MOVE_MAGNITUDE, MOVE_SUNNY_DAY + .moves = {MOVE_FLAMETHROWER, MOVE_TAKE_DOWN, MOVE_MAGNITUDE, MOVE_SUNNY_DAY} } }; @@ -5755,13 +5755,13 @@ static const struct TrainerMonNoItemCustomMoves sParty_Madeline5[] = { .iv = 40, .lvl = 37, .species = SPECIES_ROSELIA, - .moves = MOVE_LEECH_SEED, MOVE_GIGA_DRAIN, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY + .moves = {MOVE_LEECH_SEED, MOVE_GIGA_DRAIN, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY} }, { .iv = 40, .lvl = 37, .species = SPECIES_CAMERUPT, - .moves = MOVE_FLAMETHROWER, MOVE_TAKE_DOWN, MOVE_EARTHQUAKE, MOVE_SUNNY_DAY + .moves = {MOVE_FLAMETHROWER, MOVE_TAKE_DOWN, MOVE_EARTHQUAKE, MOVE_SUNNY_DAY} } }; @@ -6064,13 +6064,13 @@ static const struct TrainerMonNoItemCustomMoves sParty_Heidi[] = { .iv = 0, .lvl = 22, .species = SPECIES_SANDSHREW, - .moves = MOVE_DIG, MOVE_SAND_ATTACK, MOVE_POISON_STING, MOVE_SLASH + .moves = {MOVE_DIG, MOVE_SAND_ATTACK, MOVE_POISON_STING, MOVE_SLASH} }, { .iv = 0, .lvl = 22, .species = SPECIES_BALTOY, - .moves = MOVE_RAPID_SPIN, MOVE_MUD_SLAP, MOVE_PSYBEAM, MOVE_ROCK_TOMB + .moves = {MOVE_RAPID_SPIN, MOVE_MUD_SLAP, MOVE_PSYBEAM, MOVE_ROCK_TOMB} } }; @@ -6079,13 +6079,13 @@ static const struct TrainerMonNoItemCustomMoves sParty_Becky[] = { .iv = 0, .lvl = 22, .species = SPECIES_SANDSHREW, - .moves = MOVE_SAND_ATTACK, MOVE_POISON_STING, MOVE_SLASH, MOVE_DIG + .moves = {MOVE_SAND_ATTACK, MOVE_POISON_STING, MOVE_SLASH, MOVE_DIG} }, { .iv = 0, .lvl = 22, .species = SPECIES_MARILL, - .moves = MOVE_ROLLOUT, MOVE_BUBBLE_BEAM, MOVE_TAIL_WHIP, MOVE_DEFENSE_CURL + .moves = {MOVE_ROLLOUT, MOVE_BUBBLE_BEAM, MOVE_TAIL_WHIP, MOVE_DEFENSE_CURL} } }; @@ -6151,7 +6151,7 @@ static const struct TrainerMonNoItemCustomMoves sParty_Cedric[] = { .iv = 0, .lvl = 32, .species = SPECIES_WOBBUFFET, - .moves = MOVE_DESTINY_BOND, MOVE_SAFEGUARD, MOVE_COUNTER, MOVE_MIRROR_COAT + .moves = {MOVE_DESTINY_BOND, MOVE_SAFEGUARD, MOVE_COUNTER, MOVE_MIRROR_COAT} } }; @@ -6310,13 +6310,13 @@ static const struct TrainerMonNoItemCustomMoves sParty_GinaAndMia2[] = { .iv = 0, .lvl = 10, .species = SPECIES_DUSKULL, - .moves = MOVE_NIGHT_SHADE, MOVE_DISABLE, MOVE_NONE, MOVE_NONE + .moves = {MOVE_NIGHT_SHADE, MOVE_DISABLE, MOVE_NONE, MOVE_NONE} }, { .iv = 0, .lvl = 10, .species = SPECIES_SHROOMISH, - .moves = MOVE_ABSORB, MOVE_LEECH_SEED, MOVE_NONE, MOVE_NONE + .moves = {MOVE_ABSORB, MOVE_LEECH_SEED, MOVE_NONE, MOVE_NONE} } }; @@ -6338,13 +6338,13 @@ static const struct TrainerMonNoItemCustomMoves sParty_AmyAndLiv5[] = { .iv = 30, .lvl = 33, .species = SPECIES_PLUSLE, - .moves = MOVE_SPARK, MOVE_CHARGE, MOVE_FAKE_TEARS, MOVE_HELPING_HAND + .moves = {MOVE_SPARK, MOVE_CHARGE, MOVE_FAKE_TEARS, MOVE_HELPING_HAND} }, { .iv = 30, .lvl = 33, .species = SPECIES_MINUN, - .moves = MOVE_SPARK, MOVE_CHARGE, MOVE_CHARM, MOVE_HELPING_HAND + .moves = {MOVE_SPARK, MOVE_CHARGE, MOVE_CHARM, MOVE_HELPING_HAND} } }; @@ -6353,13 +6353,13 @@ static const struct TrainerMonNoItemCustomMoves sParty_AmyAndLiv6[] = { .iv = 40, .lvl = 36, .species = SPECIES_PLUSLE, - .moves = MOVE_THUNDER, MOVE_CHARGE, MOVE_FAKE_TEARS, MOVE_HELPING_HAND + .moves = {MOVE_THUNDER, MOVE_CHARGE, MOVE_FAKE_TEARS, MOVE_HELPING_HAND} }, { .iv = 40, .lvl = 36, .species = SPECIES_MINUN, - .moves = MOVE_THUNDER, MOVE_CHARGE, MOVE_CHARM, MOVE_HELPING_HAND + .moves = {MOVE_THUNDER, MOVE_CHARGE, MOVE_CHARM, MOVE_HELPING_HAND} } }; @@ -6545,14 +6545,14 @@ static const struct TrainerMonItemCustomMoves sParty_Annika[] = { .lvl = 39, .species = SPECIES_FEEBAS, .heldItem = ITEM_ORAN_BERRY, - .moves = MOVE_FLAIL, MOVE_WATER_PULSE, MOVE_RETURN, MOVE_ATTRACT + .moves = {MOVE_FLAIL, MOVE_WATER_PULSE, MOVE_RETURN, MOVE_ATTRACT} }, { .iv = 100, .lvl = 39, .species = SPECIES_FEEBAS, .heldItem = ITEM_ORAN_BERRY, - .moves = MOVE_FLAIL, MOVE_WATER_PULSE, MOVE_RETURN, MOVE_ATTRACT + .moves = {MOVE_FLAIL, MOVE_WATER_PULSE, MOVE_RETURN, MOVE_ATTRACT} } }; @@ -6569,7 +6569,7 @@ static const struct TrainerMonNoItemCustomMoves sParty_Jonas[] = { .iv = 0, .lvl = 31, .species = SPECIES_KOFFING, - .moves = MOVE_TOXIC, MOVE_THUNDER, MOVE_SELF_DESTRUCT, MOVE_SLUDGE_BOMB + .moves = {MOVE_TOXIC, MOVE_THUNDER, MOVE_SELF_DESTRUCT, MOVE_SLUDGE_BOMB} } }; @@ -6578,7 +6578,7 @@ static const struct TrainerMonNoItemCustomMoves sParty_Kayley[] = { .iv = 0, .lvl = 31, .species = SPECIES_CASTFORM, - .moves = MOVE_SUNNY_DAY, MOVE_WEATHER_BALL, MOVE_FLAMETHROWER, MOVE_SOLAR_BEAM + .moves = {MOVE_SUNNY_DAY, MOVE_WEATHER_BALL, MOVE_FLAMETHROWER, MOVE_SOLAR_BEAM} } }; @@ -6614,7 +6614,7 @@ static const struct TrainerMonItemCustomMoves sParty_Marley[] = { .lvl = 34, .species = SPECIES_MANECTRIC, .heldItem = ITEM_NONE, - .moves = MOVE_BITE, MOVE_ROAR, MOVE_THUNDER_WAVE, MOVE_THUNDERBOLT + .moves = {MOVE_BITE, MOVE_ROAR, MOVE_THUNDER_WAVE, MOVE_THUNDERBOLT} } }; @@ -6753,31 +6753,31 @@ static const struct TrainerMonNoItemCustomMoves sParty_WallyVR1[] = { .iv = 150, .lvl = 44, .species = SPECIES_ALTARIA, - .moves = MOVE_AERIAL_ACE, MOVE_SAFEGUARD, MOVE_DRAGON_BREATH, MOVE_DRAGON_DANCE + .moves = {MOVE_AERIAL_ACE, MOVE_SAFEGUARD, MOVE_DRAGON_BREATH, MOVE_DRAGON_DANCE} }, { .iv = 150, .lvl = 43, .species = SPECIES_DELCATTY, - .moves = MOVE_SING, MOVE_ASSIST, MOVE_CHARM, MOVE_FAINT_ATTACK + .moves = {MOVE_SING, MOVE_ASSIST, MOVE_CHARM, MOVE_FAINT_ATTACK} }, { .iv = 150, .lvl = 44, .species = SPECIES_ROSELIA, - .moves = MOVE_MAGICAL_LEAF, MOVE_LEECH_SEED, MOVE_GIGA_DRAIN, MOVE_TOXIC + .moves = {MOVE_MAGICAL_LEAF, MOVE_LEECH_SEED, MOVE_GIGA_DRAIN, MOVE_TOXIC} }, { .iv = 150, .lvl = 41, .species = SPECIES_MAGNETON, - .moves = MOVE_SUPERSONIC, MOVE_THUNDERBOLT, MOVE_TRI_ATTACK, MOVE_SCREECH + .moves = {MOVE_SUPERSONIC, MOVE_THUNDERBOLT, MOVE_TRI_ATTACK, MOVE_SCREECH} }, { .iv = 250, .lvl = 45, .species = SPECIES_GARDEVOIR, - .moves = MOVE_DOUBLE_TEAM, MOVE_CALM_MIND, MOVE_PSYCHIC, MOVE_FUTURE_SIGHT + .moves = {MOVE_DOUBLE_TEAM, MOVE_CALM_MIND, MOVE_PSYCHIC, MOVE_FUTURE_SIGHT} } }; @@ -7091,13 +7091,13 @@ static const struct TrainerMonNoItemCustomMoves sParty_Mitchell[] = { .iv = 0, .lvl = 43, .species = SPECIES_LUNATONE, - .moves = MOVE_EXPLOSION, MOVE_REFLECT, MOVE_LIGHT_SCREEN, MOVE_PSYCHIC + .moves = {MOVE_EXPLOSION, MOVE_REFLECT, MOVE_LIGHT_SCREEN, MOVE_PSYCHIC} }, { .iv = 0, .lvl = 43, .species = SPECIES_SOLROCK, - .moves = MOVE_EXPLOSION, MOVE_REFLECT, MOVE_LIGHT_SCREEN, MOVE_SHADOW_BALL + .moves = {MOVE_EXPLOSION, MOVE_REFLECT, MOVE_LIGHT_SCREEN, MOVE_SHADOW_BALL} } }; @@ -7705,14 +7705,14 @@ static const struct TrainerMonItemCustomMoves sParty_Athena[] = { .lvl = 32, .species = SPECIES_MANECTRIC, .heldItem = ITEM_NONE, - .moves = MOVE_THUNDER, MOVE_THUNDER_WAVE, MOVE_QUICK_ATTACK, MOVE_NONE + .moves = {MOVE_THUNDER, MOVE_THUNDER_WAVE, MOVE_QUICK_ATTACK, MOVE_NONE} }, { .iv = 100, .lvl = 32, .species = SPECIES_LINOONE, .heldItem = ITEM_NONE, - .moves = MOVE_SURF, MOVE_THIEF, MOVE_NONE, MOVE_NONE + .moves = {MOVE_SURF, MOVE_THIEF, MOVE_NONE, MOVE_NONE} } }; @@ -7833,7 +7833,7 @@ static const struct TrainerMonNoItemDefaultMoves sParty_Macey[] = { } }; -static const struct TrainerMonNoItemDefaultMoves sParty_BrendanRustboroTreecko[] = {//Brendan10 +static const struct TrainerMonNoItemDefaultMoves sParty_BrendanRustboroTreecko[] = { { .iv = 25, .lvl = 13, @@ -7846,7 +7846,7 @@ static const struct TrainerMonNoItemDefaultMoves sParty_BrendanRustboroTreecko[] } }; -static const struct TrainerMonNoItemDefaultMoves sParty_BrendanRustboroMudkip[] = {//Brendan11 +static const struct TrainerMonNoItemDefaultMoves sParty_BrendanRustboroMudkip[] = { { .iv = 25, .lvl = 13, @@ -7929,7 +7929,7 @@ static const struct TrainerMonNoItemDefaultMoves sParty_Jonathan[] = { } }; -static const struct TrainerMonNoItemDefaultMoves sParty_BrendanRustboroTorchic[] = {//Brendan12 +static const struct TrainerMonNoItemDefaultMoves sParty_BrendanRustboroTorchic[] = { { .iv = 25, .lvl = 13, @@ -7942,7 +7942,7 @@ static const struct TrainerMonNoItemDefaultMoves sParty_BrendanRustboroTorchic[] } }; -static const struct TrainerMonNoItemDefaultMoves sParty_MayRustboroMudkip[] = {//May10 +static const struct TrainerMonNoItemDefaultMoves sParty_MayRustboroMudkip[] = { { .iv = 25, .lvl = 13, @@ -7955,7 +7955,7 @@ static const struct TrainerMonNoItemDefaultMoves sParty_MayRustboroMudkip[] = {/ } }; -static const struct TrainerMonNoItemDefaultMoves sParty_MaxieMagmaHideout[] = {//Maxie1 +static const struct TrainerMonNoItemDefaultMoves sParty_MaxieMagmaHideout[] = { { .iv = 150, .lvl = 37, @@ -7973,7 +7973,7 @@ static const struct TrainerMonNoItemDefaultMoves sParty_MaxieMagmaHideout[] = {/ } }; -static const struct TrainerMonNoItemDefaultMoves sParty_MaxieMtChimney[] = {//Maxie2 +static const struct TrainerMonNoItemDefaultMoves sParty_MaxieMtChimney[] = { { .iv = 150, .lvl = 24, @@ -8406,7 +8406,7 @@ static const struct TrainerMonNoItemCustomMoves sParty_Lucas2[] = { .iv = 0, .lvl = 9, .species = SPECIES_WAILMER, - .moves = MOVE_SPLASH, MOVE_WATER_GUN, MOVE_NONE, MOVE_NONE + .moves = {MOVE_SPLASH, MOVE_WATER_GUN, MOVE_NONE, MOVE_NONE} } }; @@ -8415,13 +8415,13 @@ static const struct TrainerMonNoItemCustomMoves sParty_Mike1[] = { .iv = 0, .lvl = 10, .species = SPECIES_PELIPPER, - .moves = MOVE_GUST, MOVE_GROWL, MOVE_NONE, MOVE_NONE + .moves = {MOVE_GUST, MOVE_GROWL, MOVE_NONE, MOVE_NONE} }, { .iv = 0, .lvl = 10, .species = SPECIES_POOCHYENA, - .moves = MOVE_BITE, MOVE_SCARY_FACE, MOVE_NONE, MOVE_NONE + .moves = {MOVE_BITE, MOVE_SCARY_FACE, MOVE_NONE, MOVE_NONE} } }; @@ -8639,7 +8639,7 @@ static const struct TrainerMonNoItemCustomMoves sParty_Gerald[] = { .iv = 100, .lvl = 23, .species = SPECIES_KECLEON, - .moves = MOVE_FLAMETHROWER, MOVE_FURY_SWIPES, MOVE_FAINT_ATTACK, MOVE_BIND + .moves = {MOVE_FLAMETHROWER, MOVE_FURY_SWIPES, MOVE_FAINT_ATTACK, MOVE_BIND} } }; @@ -8648,13 +8648,13 @@ static const struct TrainerMonNoItemCustomMoves sParty_Vivian[] = { .iv = 100, .lvl = 17, .species = SPECIES_MEDITITE, - .moves = MOVE_BIDE, MOVE_DETECT, MOVE_CONFUSION, MOVE_THUNDER_PUNCH + .moves = {MOVE_BIDE, MOVE_DETECT, MOVE_CONFUSION, MOVE_THUNDER_PUNCH} }, { .iv = 100, .lvl = 17, .species = SPECIES_MEDITITE, - .moves = MOVE_THUNDER_PUNCH, MOVE_DETECT, MOVE_CONFUSION, MOVE_MEDITATE + .moves = {MOVE_THUNDER_PUNCH, MOVE_DETECT, MOVE_CONFUSION, MOVE_MEDITATE} } }; @@ -8663,7 +8663,7 @@ static const struct TrainerMonNoItemCustomMoves sParty_Danielle[] = { .iv = 100, .lvl = 23, .species = SPECIES_MEDITITE, - .moves = MOVE_BIDE, MOVE_DETECT, MOVE_CONFUSION, MOVE_FIRE_PUNCH + .moves = {MOVE_BIDE, MOVE_DETECT, MOVE_CONFUSION, MOVE_FIRE_PUNCH} } }; @@ -8672,13 +8672,13 @@ static const struct TrainerMonNoItemCustomMoves sParty_Hideo[] = { .iv = 0, .lvl = 25, .species = SPECIES_KOFFING, - .moves = MOVE_TACKLE, MOVE_SELF_DESTRUCT, MOVE_SLUDGE, MOVE_SMOKESCREEN + .moves = {MOVE_TACKLE, MOVE_SELF_DESTRUCT, MOVE_SLUDGE, MOVE_SMOKESCREEN} }, { .iv = 0, .lvl = 25, .species = SPECIES_KOFFING, - .moves = MOVE_TACKLE, MOVE_POISON_GAS, MOVE_SLUDGE, MOVE_SMOKESCREEN + .moves = {MOVE_TACKLE, MOVE_POISON_GAS, MOVE_SLUDGE, MOVE_SMOKESCREEN} } }; @@ -8687,13 +8687,13 @@ static const struct TrainerMonNoItemCustomMoves sParty_Keigo[] = { .iv = 0, .lvl = 28, .species = SPECIES_KOFFING, - .moves = MOVE_POISON_GAS, MOVE_SELF_DESTRUCT, MOVE_SLUDGE, MOVE_SMOKESCREEN + .moves = {MOVE_POISON_GAS, MOVE_SELF_DESTRUCT, MOVE_SLUDGE, MOVE_SMOKESCREEN} }, { .iv = 0, .lvl = 28, .species = SPECIES_NINJASK, - .moves = MOVE_SAND_ATTACK, MOVE_DOUBLE_TEAM, MOVE_FURY_CUTTER, MOVE_SWORDS_DANCE + .moves = {MOVE_SAND_ATTACK, MOVE_DOUBLE_TEAM, MOVE_FURY_CUTTER, MOVE_SWORDS_DANCE} } }; @@ -8702,13 +8702,13 @@ static const struct TrainerMonNoItemCustomMoves sParty_Riley[] = { .iv = 0, .lvl = 28, .species = SPECIES_NINCADA, - .moves = MOVE_LEECH_LIFE, MOVE_FURY_SWIPES, MOVE_MIND_READER, MOVE_DIG + .moves = {MOVE_LEECH_LIFE, MOVE_FURY_SWIPES, MOVE_MIND_READER, MOVE_DIG} }, { .iv = 0, .lvl = 28, .species = SPECIES_KOFFING, - .moves = MOVE_TACKLE, MOVE_SELF_DESTRUCT, MOVE_SLUDGE, MOVE_SMOKESCREEN + .moves = {MOVE_TACKLE, MOVE_SELF_DESTRUCT, MOVE_SLUDGE, MOVE_SMOKESCREEN} } }; @@ -8756,31 +8756,31 @@ static const struct TrainerMonNoItemCustomMoves sParty_WallyVR2[] = { .iv = 150, .lvl = 47, .species = SPECIES_ALTARIA, - .moves = MOVE_AERIAL_ACE, MOVE_SAFEGUARD, MOVE_DRAGON_BREATH, MOVE_DRAGON_DANCE + .moves = {MOVE_AERIAL_ACE, MOVE_SAFEGUARD, MOVE_DRAGON_BREATH, MOVE_DRAGON_DANCE} }, { .iv = 150, .lvl = 46, .species = SPECIES_DELCATTY, - .moves = MOVE_SING, MOVE_ASSIST, MOVE_CHARM, MOVE_FAINT_ATTACK + .moves = {MOVE_SING, MOVE_ASSIST, MOVE_CHARM, MOVE_FAINT_ATTACK} }, { .iv = 150, .lvl = 47, .species = SPECIES_ROSELIA, - .moves = MOVE_MAGICAL_LEAF, MOVE_LEECH_SEED, MOVE_GIGA_DRAIN, MOVE_TOXIC + .moves = {MOVE_MAGICAL_LEAF, MOVE_LEECH_SEED, MOVE_GIGA_DRAIN, MOVE_TOXIC} }, { .iv = 150, .lvl = 44, .species = SPECIES_MAGNETON, - .moves = MOVE_SUPERSONIC, MOVE_THUNDERBOLT, MOVE_TRI_ATTACK, MOVE_SCREECH + .moves = {MOVE_SUPERSONIC, MOVE_THUNDERBOLT, MOVE_TRI_ATTACK, MOVE_SCREECH} }, { .iv = 250, .lvl = 48, .species = SPECIES_GARDEVOIR, - .moves = MOVE_DOUBLE_TEAM, MOVE_CALM_MIND, MOVE_PSYCHIC, MOVE_FUTURE_SIGHT + .moves = {MOVE_DOUBLE_TEAM, MOVE_CALM_MIND, MOVE_PSYCHIC, MOVE_FUTURE_SIGHT} } }; @@ -8789,31 +8789,31 @@ static const struct TrainerMonNoItemCustomMoves sParty_WallyVR3[] = { .iv = 150, .lvl = 50, .species = SPECIES_ALTARIA, - .moves = MOVE_AERIAL_ACE, MOVE_SAFEGUARD, MOVE_DRAGON_BREATH, MOVE_DRAGON_DANCE + .moves = {MOVE_AERIAL_ACE, MOVE_SAFEGUARD, MOVE_DRAGON_BREATH, MOVE_DRAGON_DANCE} }, { .iv = 150, .lvl = 49, .species = SPECIES_DELCATTY, - .moves = MOVE_SING, MOVE_ASSIST, MOVE_CHARM, MOVE_FAINT_ATTACK + .moves = {MOVE_SING, MOVE_ASSIST, MOVE_CHARM, MOVE_FAINT_ATTACK} }, { .iv = 150, .lvl = 50, .species = SPECIES_ROSELIA, - .moves = MOVE_MAGICAL_LEAF, MOVE_LEECH_SEED, MOVE_GIGA_DRAIN, MOVE_TOXIC + .moves = {MOVE_MAGICAL_LEAF, MOVE_LEECH_SEED, MOVE_GIGA_DRAIN, MOVE_TOXIC} }, { .iv = 150, .lvl = 47, .species = SPECIES_MAGNETON, - .moves = MOVE_SUPERSONIC, MOVE_THUNDERBOLT, MOVE_TRI_ATTACK, MOVE_SCREECH + .moves = {MOVE_SUPERSONIC, MOVE_THUNDERBOLT, MOVE_TRI_ATTACK, MOVE_SCREECH} }, { .iv = 250, .lvl = 51, .species = SPECIES_GARDEVOIR, - .moves = MOVE_DOUBLE_TEAM, MOVE_CALM_MIND, MOVE_PSYCHIC, MOVE_FUTURE_SIGHT + .moves = {MOVE_DOUBLE_TEAM, MOVE_CALM_MIND, MOVE_PSYCHIC, MOVE_FUTURE_SIGHT} } }; @@ -8822,31 +8822,31 @@ static const struct TrainerMonNoItemCustomMoves sParty_WallyVR4[] = { .iv = 150, .lvl = 53, .species = SPECIES_ALTARIA, - .moves = MOVE_AERIAL_ACE, MOVE_SAFEGUARD, MOVE_DRAGON_BREATH, MOVE_DRAGON_DANCE + .moves = {MOVE_AERIAL_ACE, MOVE_SAFEGUARD, MOVE_DRAGON_BREATH, MOVE_DRAGON_DANCE} }, { .iv = 150, .lvl = 52, .species = SPECIES_DELCATTY, - .moves = MOVE_SING, MOVE_ASSIST, MOVE_CHARM, MOVE_FAINT_ATTACK + .moves = {MOVE_SING, MOVE_ASSIST, MOVE_CHARM, MOVE_FAINT_ATTACK} }, { .iv = 150, .lvl = 53, .species = SPECIES_ROSELIA, - .moves = MOVE_MAGICAL_LEAF, MOVE_LEECH_SEED, MOVE_GIGA_DRAIN, MOVE_TOXIC + .moves = {MOVE_MAGICAL_LEAF, MOVE_LEECH_SEED, MOVE_GIGA_DRAIN, MOVE_TOXIC} }, { .iv = 150, .lvl = 50, .species = SPECIES_MAGNETON, - .moves = MOVE_SUPERSONIC, MOVE_THUNDERBOLT, MOVE_TRI_ATTACK, MOVE_SCREECH + .moves = {MOVE_SUPERSONIC, MOVE_THUNDERBOLT, MOVE_TRI_ATTACK, MOVE_SCREECH} }, { .iv = 250, .lvl = 54, .species = SPECIES_GARDEVOIR, - .moves = MOVE_DOUBLE_TEAM, MOVE_CALM_MIND, MOVE_PSYCHIC, MOVE_FUTURE_SIGHT + .moves = {MOVE_DOUBLE_TEAM, MOVE_CALM_MIND, MOVE_PSYCHIC, MOVE_FUTURE_SIGHT} } }; @@ -8855,35 +8855,35 @@ static const struct TrainerMonNoItemCustomMoves sParty_WallyVR5[] = { .iv = 150, .lvl = 56, .species = SPECIES_ALTARIA, - .moves = MOVE_AERIAL_ACE, MOVE_SAFEGUARD, MOVE_DRAGON_BREATH, MOVE_DRAGON_DANCE + .moves = {MOVE_AERIAL_ACE, MOVE_SAFEGUARD, MOVE_DRAGON_BREATH, MOVE_DRAGON_DANCE} }, { .iv = 150, .lvl = 55, .species = SPECIES_DELCATTY, - .moves = MOVE_SING, MOVE_ASSIST, MOVE_CHARM, MOVE_FAINT_ATTACK + .moves = {MOVE_SING, MOVE_ASSIST, MOVE_CHARM, MOVE_FAINT_ATTACK} }, { .iv = 150, .lvl = 56, .species = SPECIES_ROSELIA, - .moves = MOVE_MAGICAL_LEAF, MOVE_LEECH_SEED, MOVE_GIGA_DRAIN, MOVE_TOXIC + .moves = {MOVE_MAGICAL_LEAF, MOVE_LEECH_SEED, MOVE_GIGA_DRAIN, MOVE_TOXIC} }, { .iv = 150, .lvl = 53, .species = SPECIES_MAGNETON, - .moves = MOVE_SUPERSONIC, MOVE_THUNDERBOLT, MOVE_TRI_ATTACK, MOVE_SCREECH + .moves = {MOVE_SUPERSONIC, MOVE_THUNDERBOLT, MOVE_TRI_ATTACK, MOVE_SCREECH} }, { .iv = 250, .lvl = 57, .species = SPECIES_GARDEVOIR, - .moves = MOVE_DOUBLE_TEAM, MOVE_CALM_MIND, MOVE_PSYCHIC, MOVE_FUTURE_SIGHT + .moves = {MOVE_DOUBLE_TEAM, MOVE_CALM_MIND, MOVE_PSYCHIC, MOVE_FUTURE_SIGHT} } }; -static const struct TrainerMonNoItemDefaultMoves sParty_BrendanLilycoveMudkip[] = {//Brendan13 +static const struct TrainerMonNoItemDefaultMoves sParty_BrendanLilycoveMudkip[] = { { .iv = 150, .lvl = 31, @@ -8906,7 +8906,7 @@ static const struct TrainerMonNoItemDefaultMoves sParty_BrendanLilycoveMudkip[] } }; -static const struct TrainerMonNoItemDefaultMoves sParty_BrendanLilycoveTreecko[] = {//Brendan14 +static const struct TrainerMonNoItemDefaultMoves sParty_BrendanLilycoveTreecko[] = { { .iv = 150, .lvl = 31, @@ -8929,7 +8929,7 @@ static const struct TrainerMonNoItemDefaultMoves sParty_BrendanLilycoveTreecko[] } }; -static const struct TrainerMonNoItemDefaultMoves sParty_BrendanLilycoveTorchic[] = {//Brendan15 +static const struct TrainerMonNoItemDefaultMoves sParty_BrendanLilycoveTorchic[] = { { .iv = 150, .lvl = 31, @@ -8952,7 +8952,7 @@ static const struct TrainerMonNoItemDefaultMoves sParty_BrendanLilycoveTorchic[] } }; -static const struct TrainerMonNoItemDefaultMoves sParty_MayLilycoveMudkip[] = {//May11 +static const struct TrainerMonNoItemDefaultMoves sParty_MayLilycoveMudkip[] = { { .iv = 150, .lvl = 31, @@ -8975,7 +8975,7 @@ static const struct TrainerMonNoItemDefaultMoves sParty_MayLilycoveMudkip[] = {/ } }; -static const struct TrainerMonNoItemDefaultMoves sParty_MayLilycoveTreecko[] = {//May12 +static const struct TrainerMonNoItemDefaultMoves sParty_MayLilycoveTreecko[] = { { .iv = 150, .lvl = 31, @@ -8998,7 +8998,7 @@ static const struct TrainerMonNoItemDefaultMoves sParty_MayLilycoveTreecko[] = { } }; -static const struct TrainerMonNoItemDefaultMoves sParty_MayLilycoveTorchic[] = {//May13 +static const struct TrainerMonNoItemDefaultMoves sParty_MayLilycoveTorchic[] = { { .iv = 150, .lvl = 31, @@ -9174,13 +9174,13 @@ static const struct TrainerMonNoItemCustomMoves sParty_KimAndIris[] = { .iv = 0, .lvl = 32, .species = SPECIES_SWABLU, - .moves = MOVE_SING, MOVE_FURY_ATTACK, MOVE_SAFEGUARD, MOVE_AERIAL_ACE + .moves = {MOVE_SING, MOVE_FURY_ATTACK, MOVE_SAFEGUARD, MOVE_AERIAL_ACE} }, { .iv = 0, .lvl = 35, .species = SPECIES_NUMEL, - .moves = MOVE_FLAMETHROWER, MOVE_TAKE_DOWN, MOVE_REST, MOVE_EARTHQUAKE + .moves = {MOVE_FLAMETHROWER, MOVE_TAKE_DOWN, MOVE_REST, MOVE_EARTHQUAKE} } }; @@ -9189,13 +9189,13 @@ static const struct TrainerMonNoItemCustomMoves sParty_TyraAndIvy[] = { .iv = 0, .lvl = 18, .species = SPECIES_ROSELIA, - .moves = MOVE_GROWTH, MOVE_STUN_SPORE, MOVE_MEGA_DRAIN, MOVE_LEECH_SEED + .moves = {MOVE_GROWTH, MOVE_STUN_SPORE, MOVE_MEGA_DRAIN, MOVE_LEECH_SEED} }, { .iv = 0, .lvl = 20, .species = SPECIES_GRAVELER, - .moves = MOVE_DEFENSE_CURL, MOVE_ROLLOUT, MOVE_MUD_SPORT, MOVE_ROCK_THROW + .moves = {MOVE_DEFENSE_CURL, MOVE_ROLLOUT, MOVE_MUD_SPORT, MOVE_ROCK_THROW} } }; @@ -9204,13 +9204,13 @@ static const struct TrainerMonNoItemCustomMoves sParty_MelAndPaul[] = { .iv = 0, .lvl = 27, .species = SPECIES_DUSTOX, - .moves = MOVE_GUST, MOVE_PSYBEAM, MOVE_TOXIC, MOVE_PROTECT + .moves = {MOVE_GUST, MOVE_PSYBEAM, MOVE_TOXIC, MOVE_PROTECT} }, { .iv = 0, .lvl = 27, .species = SPECIES_BEAUTIFLY, - .moves = MOVE_GUST, MOVE_MEGA_DRAIN, MOVE_ATTRACT, MOVE_STUN_SPORE + .moves = {MOVE_GUST, MOVE_MEGA_DRAIN, MOVE_ATTRACT, MOVE_STUN_SPORE} } }; @@ -9219,13 +9219,13 @@ static const struct TrainerMonNoItemCustomMoves sParty_JohnAndJay1[] = { .iv = 200, .lvl = 39, .species = SPECIES_MEDICHAM, - .moves = MOVE_PSYCHIC, MOVE_FIRE_PUNCH, MOVE_PSYCH_UP, MOVE_PROTECT + .moves = {MOVE_PSYCHIC, MOVE_FIRE_PUNCH, MOVE_PSYCH_UP, MOVE_PROTECT} }, { .iv = 200, .lvl = 39, .species = SPECIES_HARIYAMA, - .moves = MOVE_FOCUS_PUNCH, MOVE_ROCK_TOMB, MOVE_REST, MOVE_BELLY_DRUM + .moves = {MOVE_FOCUS_PUNCH, MOVE_ROCK_TOMB, MOVE_REST, MOVE_BELLY_DRUM} } }; @@ -9234,13 +9234,13 @@ static const struct TrainerMonNoItemCustomMoves sParty_JohnAndJay2[] = { .iv = 210, .lvl = 43, .species = SPECIES_MEDICHAM, - .moves = MOVE_PSYCHIC, MOVE_FIRE_PUNCH, MOVE_PSYCH_UP, MOVE_PROTECT + .moves = {MOVE_PSYCHIC, MOVE_FIRE_PUNCH, MOVE_PSYCH_UP, MOVE_PROTECT} }, { .iv = 210, .lvl = 43, .species = SPECIES_HARIYAMA, - .moves = MOVE_FOCUS_PUNCH, MOVE_ROCK_TOMB, MOVE_REST, MOVE_BELLY_DRUM + .moves = {MOVE_FOCUS_PUNCH, MOVE_ROCK_TOMB, MOVE_REST, MOVE_BELLY_DRUM} } }; @@ -9249,13 +9249,13 @@ static const struct TrainerMonNoItemCustomMoves sParty_JohnAndJay3[] = { .iv = 220, .lvl = 46, .species = SPECIES_MEDICHAM, - .moves = MOVE_PSYCHIC, MOVE_FIRE_PUNCH, MOVE_PSYCH_UP, MOVE_PROTECT + .moves = {MOVE_PSYCHIC, MOVE_FIRE_PUNCH, MOVE_PSYCH_UP, MOVE_PROTECT} }, { .iv = 220, .lvl = 46, .species = SPECIES_HARIYAMA, - .moves = MOVE_FOCUS_PUNCH, MOVE_ROCK_TOMB, MOVE_REST, MOVE_BELLY_DRUM + .moves = {MOVE_FOCUS_PUNCH, MOVE_ROCK_TOMB, MOVE_REST, MOVE_BELLY_DRUM} } }; @@ -9264,13 +9264,13 @@ static const struct TrainerMonNoItemCustomMoves sParty_JohnAndJay4[] = { .iv = 230, .lvl = 49, .species = SPECIES_MEDICHAM, - .moves = MOVE_PSYCHIC, MOVE_FIRE_PUNCH, MOVE_PSYCH_UP, MOVE_PROTECT + .moves = {MOVE_PSYCHIC, MOVE_FIRE_PUNCH, MOVE_PSYCH_UP, MOVE_PROTECT} }, { .iv = 230, .lvl = 49, .species = SPECIES_HARIYAMA, - .moves = MOVE_FOCUS_PUNCH, MOVE_ROCK_TOMB, MOVE_REST, MOVE_BELLY_DRUM + .moves = {MOVE_FOCUS_PUNCH, MOVE_ROCK_TOMB, MOVE_REST, MOVE_BELLY_DRUM} } }; @@ -9279,13 +9279,13 @@ static const struct TrainerMonNoItemCustomMoves sParty_JohnAndJay5[] = { .iv = 240, .lvl = 52, .species = SPECIES_MEDICHAM, - .moves = MOVE_PSYCHIC, MOVE_FIRE_PUNCH, MOVE_PSYCH_UP, MOVE_PROTECT + .moves = {MOVE_PSYCHIC, MOVE_FIRE_PUNCH, MOVE_PSYCH_UP, MOVE_PROTECT} }, { .iv = 240, .lvl = 52, .species = SPECIES_HARIYAMA, - .moves = MOVE_FOCUS_PUNCH, MOVE_ROCK_TOMB, MOVE_REST, MOVE_BELLY_DRUM + .moves = {MOVE_FOCUS_PUNCH, MOVE_ROCK_TOMB, MOVE_REST, MOVE_BELLY_DRUM} } }; @@ -9819,7 +9819,7 @@ static const struct TrainerMonNoItemDefaultMoves sParty_Darcy[] = { } }; -static const struct TrainerMonNoItemDefaultMoves sParty_MaxieMossdeep[] = {//Maxie3 +static const struct TrainerMonNoItemDefaultMoves sParty_MaxieMossdeep[] = { { .iv = 150, .lvl = 42, @@ -10163,7 +10163,7 @@ static const struct TrainerMonNoItemCustomMoves sParty_Leonel[] = { .iv = 100, .lvl = 30, .species = SPECIES_MANECTRIC, - .moves = MOVE_THUNDER, MOVE_QUICK_ATTACK, MOVE_THUNDER_WAVE, MOVE_NONE + .moves = {MOVE_THUNDER, MOVE_QUICK_ATTACK, MOVE_THUNDER_WAVE, MOVE_NONE} } }; @@ -10272,7 +10272,7 @@ static const struct TrainerMonNoItemDefaultMoves sParty_Cristin1[] = { } }; -static const struct TrainerMonNoItemDefaultMoves sParty_MayRustboroTreecko[] = {//May14 +static const struct TrainerMonNoItemDefaultMoves sParty_MayRustboroTreecko[] = { { .iv = 25, .lvl = 13, @@ -10285,7 +10285,7 @@ static const struct TrainerMonNoItemDefaultMoves sParty_MayRustboroTreecko[] = { } }; -static const struct TrainerMonNoItemDefaultMoves sParty_MayRustboroTorchic[] = {//May15 +static const struct TrainerMonNoItemDefaultMoves sParty_MayRustboroTorchic[] = { { .iv = 25, .lvl = 13, @@ -10304,28 +10304,28 @@ static const struct TrainerMonItemCustomMoves sParty_Roxanne2[] = { .lvl = 32, .species = SPECIES_GOLEM, .heldItem = ITEM_NONE, - .moves = MOVE_PROTECT, MOVE_ROLLOUT, MOVE_MAGNITUDE, MOVE_EXPLOSION + .moves = {MOVE_PROTECT, MOVE_ROLLOUT, MOVE_MAGNITUDE, MOVE_EXPLOSION} }, { .iv = 255, .lvl = 35, .species = SPECIES_KABUTO, .heldItem = ITEM_SITRUS_BERRY, - .moves = MOVE_SWORDS_DANCE, MOVE_ICE_BEAM, MOVE_SURF, MOVE_ROCK_SLIDE + .moves = {MOVE_SWORDS_DANCE, MOVE_ICE_BEAM, MOVE_SURF, MOVE_ROCK_SLIDE} }, { .iv = 255, .lvl = 35, .species = SPECIES_ONIX, .heldItem = ITEM_NONE, - .moves = MOVE_IRON_TAIL, MOVE_EXPLOSION, MOVE_ROAR, MOVE_ROCK_SLIDE + .moves = {MOVE_IRON_TAIL, MOVE_EXPLOSION, MOVE_ROAR, MOVE_ROCK_SLIDE} }, { .iv = 255, .lvl = 37, .species = SPECIES_NOSEPASS, .heldItem = ITEM_SITRUS_BERRY, - .moves = MOVE_DOUBLE_TEAM, MOVE_EXPLOSION, MOVE_PROTECT, MOVE_ROCK_SLIDE + .moves = {MOVE_DOUBLE_TEAM, MOVE_EXPLOSION, MOVE_PROTECT, MOVE_ROCK_SLIDE} } }; @@ -10335,35 +10335,35 @@ static const struct TrainerMonItemCustomMoves sParty_Roxanne3[] = { .lvl = 37, .species = SPECIES_OMANYTE, .heldItem = ITEM_NONE, - .moves = MOVE_PROTECT, MOVE_ICE_BEAM, MOVE_ROCK_SLIDE, MOVE_SURF + .moves = {MOVE_PROTECT, MOVE_ICE_BEAM, MOVE_ROCK_SLIDE, MOVE_SURF} }, { .iv = 255, .lvl = 37, .species = SPECIES_GOLEM, .heldItem = ITEM_NONE, - .moves = MOVE_PROTECT, MOVE_ROLLOUT, MOVE_MAGNITUDE, MOVE_EXPLOSION + .moves = {MOVE_PROTECT, MOVE_ROLLOUT, MOVE_MAGNITUDE, MOVE_EXPLOSION} }, { .iv = 255, .lvl = 40, .species = SPECIES_KABUTOPS, .heldItem = ITEM_SITRUS_BERRY, - .moves = MOVE_SWORDS_DANCE, MOVE_ICE_BEAM, MOVE_SURF, MOVE_ROCK_SLIDE + .moves = {MOVE_SWORDS_DANCE, MOVE_ICE_BEAM, MOVE_SURF, MOVE_ROCK_SLIDE} }, { .iv = 255, .lvl = 40, .species = SPECIES_ONIX, .heldItem = ITEM_NONE, - .moves = MOVE_IRON_TAIL, MOVE_EXPLOSION, MOVE_ROAR, MOVE_ROCK_SLIDE + .moves = {MOVE_IRON_TAIL, MOVE_EXPLOSION, MOVE_ROAR, MOVE_ROCK_SLIDE} }, { .iv = 255, .lvl = 42, .species = SPECIES_NOSEPASS, .heldItem = ITEM_SITRUS_BERRY, - .moves = MOVE_DOUBLE_TEAM, MOVE_EXPLOSION, MOVE_PROTECT, MOVE_ROCK_SLIDE + .moves = {MOVE_DOUBLE_TEAM, MOVE_EXPLOSION, MOVE_PROTECT, MOVE_ROCK_SLIDE} } }; @@ -10373,35 +10373,35 @@ static const struct TrainerMonItemCustomMoves sParty_Roxanne4[] = { .lvl = 42, .species = SPECIES_OMASTAR, .heldItem = ITEM_NONE, - .moves = MOVE_PROTECT, MOVE_ICE_BEAM, MOVE_ROCK_SLIDE, MOVE_SURF + .moves = {MOVE_PROTECT, MOVE_ICE_BEAM, MOVE_ROCK_SLIDE, MOVE_SURF} }, { .iv = 255, .lvl = 42, .species = SPECIES_GOLEM, .heldItem = ITEM_NONE, - .moves = MOVE_PROTECT, MOVE_ROLLOUT, MOVE_EARTHQUAKE, MOVE_EXPLOSION + .moves = {MOVE_PROTECT, MOVE_ROLLOUT, MOVE_EARTHQUAKE, MOVE_EXPLOSION} }, { .iv = 255, .lvl = 45, .species = SPECIES_KABUTOPS, .heldItem = ITEM_SITRUS_BERRY, - .moves = MOVE_SWORDS_DANCE, MOVE_ICE_BEAM, MOVE_SURF, MOVE_ROCK_SLIDE + .moves = {MOVE_SWORDS_DANCE, MOVE_ICE_BEAM, MOVE_SURF, MOVE_ROCK_SLIDE} }, { .iv = 255, .lvl = 45, .species = SPECIES_ONIX, .heldItem = ITEM_NONE, - .moves = MOVE_IRON_TAIL, MOVE_EXPLOSION, MOVE_ROAR, MOVE_ROCK_SLIDE + .moves = {MOVE_IRON_TAIL, MOVE_EXPLOSION, MOVE_ROAR, MOVE_ROCK_SLIDE} }, { .iv = 255, .lvl = 47, .species = SPECIES_NOSEPASS, .heldItem = ITEM_SITRUS_BERRY, - .moves = MOVE_DOUBLE_TEAM, MOVE_EXPLOSION, MOVE_PROTECT, MOVE_ROCK_SLIDE + .moves = {MOVE_DOUBLE_TEAM, MOVE_EXPLOSION, MOVE_PROTECT, MOVE_ROCK_SLIDE} } }; @@ -10411,42 +10411,42 @@ static const struct TrainerMonItemCustomMoves sParty_Roxanne5[] = { .lvl = 47, .species = SPECIES_AERODACTYL, .heldItem = ITEM_NONE, - .moves = MOVE_ROCK_SLIDE, MOVE_HYPER_BEAM, MOVE_SUPERSONIC, MOVE_PROTECT + .moves = {MOVE_ROCK_SLIDE, MOVE_HYPER_BEAM, MOVE_SUPERSONIC, MOVE_PROTECT} }, { .iv = 255, .lvl = 47, .species = SPECIES_GOLEM, .heldItem = ITEM_NONE, - .moves = MOVE_FOCUS_PUNCH, MOVE_ROLLOUT, MOVE_EARTHQUAKE, MOVE_EXPLOSION + .moves = {MOVE_FOCUS_PUNCH, MOVE_ROLLOUT, MOVE_EARTHQUAKE, MOVE_EXPLOSION} }, { .iv = 255, .lvl = 47, .species = SPECIES_OMASTAR, .heldItem = ITEM_NONE, - .moves = MOVE_PROTECT, MOVE_ICE_BEAM, MOVE_ROCK_SLIDE, MOVE_SURF + .moves = {MOVE_PROTECT, MOVE_ICE_BEAM, MOVE_ROCK_SLIDE, MOVE_SURF} }, { .iv = 255, .lvl = 50, .species = SPECIES_KABUTOPS, .heldItem = ITEM_SITRUS_BERRY, - .moves = MOVE_SWORDS_DANCE, MOVE_ICE_BEAM, MOVE_SURF, MOVE_ROCK_SLIDE + .moves = {MOVE_SWORDS_DANCE, MOVE_ICE_BEAM, MOVE_SURF, MOVE_ROCK_SLIDE} }, { .iv = 255, .lvl = 50, .species = SPECIES_STEELIX, .heldItem = ITEM_NONE, - .moves = MOVE_IRON_TAIL, MOVE_EXPLOSION, MOVE_ROAR, MOVE_ROCK_SLIDE + .moves = {MOVE_IRON_TAIL, MOVE_EXPLOSION, MOVE_ROAR, MOVE_ROCK_SLIDE} }, { .iv = 255, .lvl = 52, .species = SPECIES_NOSEPASS, .heldItem = ITEM_SITRUS_BERRY, - .moves = MOVE_DOUBLE_TEAM, MOVE_EXPLOSION, MOVE_PROTECT, MOVE_ROCK_SLIDE + .moves = {MOVE_DOUBLE_TEAM, MOVE_EXPLOSION, MOVE_PROTECT, MOVE_ROCK_SLIDE} } }; @@ -10456,28 +10456,28 @@ static const struct TrainerMonItemCustomMoves sParty_Brawly2[] = { .lvl = 33, .species = SPECIES_MACHAMP, .heldItem = ITEM_SITRUS_BERRY, - .moves = MOVE_KARATE_CHOP, MOVE_ROCK_SLIDE, MOVE_FOCUS_PUNCH, MOVE_BULK_UP + .moves = {MOVE_KARATE_CHOP, MOVE_ROCK_SLIDE, MOVE_FOCUS_PUNCH, MOVE_BULK_UP} }, { .iv = 255, .lvl = 33, .species = SPECIES_MEDITITE, .heldItem = ITEM_NONE, - .moves = MOVE_PSYCHIC, MOVE_LIGHT_SCREEN, MOVE_REFLECT, MOVE_FOCUS_PUNCH + .moves = {MOVE_PSYCHIC, MOVE_LIGHT_SCREEN, MOVE_REFLECT, MOVE_FOCUS_PUNCH} }, { .iv = 255, .lvl = 35, .species = SPECIES_HITMONTOP, .heldItem = ITEM_NONE, - .moves = MOVE_PURSUIT, MOVE_COUNTER, MOVE_PROTECT, MOVE_TRIPLE_KICK + .moves = {MOVE_PURSUIT, MOVE_COUNTER, MOVE_PROTECT, MOVE_TRIPLE_KICK} }, { .iv = 255, .lvl = 37, .species = SPECIES_HARIYAMA, .heldItem = ITEM_SITRUS_BERRY, - .moves = MOVE_FAKE_OUT, MOVE_FOCUS_PUNCH, MOVE_BELLY_DRUM, MOVE_EARTHQUAKE + .moves = {MOVE_FAKE_OUT, MOVE_FOCUS_PUNCH, MOVE_BELLY_DRUM, MOVE_EARTHQUAKE} } }; @@ -10487,28 +10487,28 @@ static const struct TrainerMonItemCustomMoves sParty_Brawly3[] = { .lvl = 38, .species = SPECIES_MACHAMP, .heldItem = ITEM_SITRUS_BERRY, - .moves = MOVE_KARATE_CHOP, MOVE_ROCK_SLIDE, MOVE_FOCUS_PUNCH, MOVE_BULK_UP + .moves = {MOVE_KARATE_CHOP, MOVE_ROCK_SLIDE, MOVE_FOCUS_PUNCH, MOVE_BULK_UP} }, { .iv = 255, .lvl = 38, .species = SPECIES_MEDICHAM, .heldItem = ITEM_NONE, - .moves = MOVE_PSYCHIC, MOVE_LIGHT_SCREEN, MOVE_REFLECT, MOVE_FOCUS_PUNCH + .moves = {MOVE_PSYCHIC, MOVE_LIGHT_SCREEN, MOVE_REFLECT, MOVE_FOCUS_PUNCH} }, { .iv = 255, .lvl = 40, .species = SPECIES_HITMONTOP, .heldItem = ITEM_NONE, - .moves = MOVE_PURSUIT, MOVE_COUNTER, MOVE_PROTECT, MOVE_TRIPLE_KICK + .moves = {MOVE_PURSUIT, MOVE_COUNTER, MOVE_PROTECT, MOVE_TRIPLE_KICK} }, { .iv = 255, .lvl = 42, .species = SPECIES_HARIYAMA, .heldItem = ITEM_SITRUS_BERRY, - .moves = MOVE_FAKE_OUT, MOVE_FOCUS_PUNCH, MOVE_BELLY_DRUM, MOVE_EARTHQUAKE + .moves = {MOVE_FAKE_OUT, MOVE_FOCUS_PUNCH, MOVE_BELLY_DRUM, MOVE_EARTHQUAKE} } }; @@ -10518,35 +10518,35 @@ static const struct TrainerMonItemCustomMoves sParty_Brawly4[] = { .lvl = 40, .species = SPECIES_HITMONCHAN, .heldItem = ITEM_NONE, - .moves = MOVE_SKY_UPPERCUT, MOVE_PROTECT, MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH + .moves = {MOVE_SKY_UPPERCUT, MOVE_PROTECT, MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH} }, { .iv = 255, .lvl = 43, .species = SPECIES_MACHAMP, .heldItem = ITEM_SITRUS_BERRY, - .moves = MOVE_KARATE_CHOP, MOVE_ROCK_SLIDE, MOVE_FOCUS_PUNCH, MOVE_BULK_UP + .moves = {MOVE_KARATE_CHOP, MOVE_ROCK_SLIDE, MOVE_FOCUS_PUNCH, MOVE_BULK_UP} }, { .iv = 255, .lvl = 43, .species = SPECIES_MEDICHAM, .heldItem = ITEM_NONE, - .moves = MOVE_FOCUS_PUNCH, MOVE_LIGHT_SCREEN, MOVE_REFLECT, MOVE_PSYCHIC + .moves = {MOVE_FOCUS_PUNCH, MOVE_LIGHT_SCREEN, MOVE_REFLECT, MOVE_PSYCHIC} }, { .iv = 255, .lvl = 45, .species = SPECIES_HITMONTOP, .heldItem = ITEM_NONE, - .moves = MOVE_PURSUIT, MOVE_COUNTER, MOVE_PROTECT, MOVE_TRIPLE_KICK + .moves = {MOVE_PURSUIT, MOVE_COUNTER, MOVE_PROTECT, MOVE_TRIPLE_KICK} }, { .iv = 255, .lvl = 47, .species = SPECIES_HARIYAMA, .heldItem = ITEM_SITRUS_BERRY, - .moves = MOVE_FAKE_OUT, MOVE_FOCUS_PUNCH, MOVE_BELLY_DRUM, MOVE_EARTHQUAKE + .moves = {MOVE_FAKE_OUT, MOVE_FOCUS_PUNCH, MOVE_BELLY_DRUM, MOVE_EARTHQUAKE} } }; @@ -10556,42 +10556,42 @@ static const struct TrainerMonItemCustomMoves sParty_Brawly5[] = { .lvl = 46, .species = SPECIES_HITMONLEE, .heldItem = ITEM_NONE, - .moves = MOVE_MEGA_KICK, MOVE_FOCUS_PUNCH, MOVE_EARTHQUAKE, MOVE_BULK_UP + .moves = {MOVE_MEGA_KICK, MOVE_FOCUS_PUNCH, MOVE_EARTHQUAKE, MOVE_BULK_UP} }, { .iv = 255, .lvl = 46, .species = SPECIES_HITMONCHAN, .heldItem = ITEM_NONE, - .moves = MOVE_SKY_UPPERCUT, MOVE_PROTECT, MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH + .moves = {MOVE_SKY_UPPERCUT, MOVE_PROTECT, MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH} }, { .iv = 255, .lvl = 48, .species = SPECIES_MACHAMP, .heldItem = ITEM_SITRUS_BERRY, - .moves = MOVE_CROSS_CHOP, MOVE_ROCK_SLIDE, MOVE_FOCUS_PUNCH, MOVE_BULK_UP + .moves = {MOVE_CROSS_CHOP, MOVE_ROCK_SLIDE, MOVE_FOCUS_PUNCH, MOVE_BULK_UP} }, { .iv = 255, .lvl = 48, .species = SPECIES_MEDICHAM, .heldItem = ITEM_NONE, - .moves = MOVE_FOCUS_PUNCH, MOVE_LIGHT_SCREEN, MOVE_REFLECT, MOVE_PSYCHIC + .moves = {MOVE_FOCUS_PUNCH, MOVE_LIGHT_SCREEN, MOVE_REFLECT, MOVE_PSYCHIC} }, { .iv = 255, .lvl = 50, .species = SPECIES_HITMONTOP, .heldItem = ITEM_NONE, - .moves = MOVE_PURSUIT, MOVE_COUNTER, MOVE_PROTECT, MOVE_TRIPLE_KICK + .moves = {MOVE_PURSUIT, MOVE_COUNTER, MOVE_PROTECT, MOVE_TRIPLE_KICK} }, { .iv = 255, .lvl = 52, .species = SPECIES_HARIYAMA, .heldItem = ITEM_SITRUS_BERRY, - .moves = MOVE_FAKE_OUT, MOVE_FOCUS_PUNCH, MOVE_BELLY_DRUM, MOVE_EARTHQUAKE + .moves = {MOVE_FAKE_OUT, MOVE_FOCUS_PUNCH, MOVE_BELLY_DRUM, MOVE_EARTHQUAKE} } }; @@ -10601,28 +10601,28 @@ static const struct TrainerMonItemCustomMoves sParty_Wattson2[] = { .lvl = 36, .species = SPECIES_MAREEP, .heldItem = ITEM_NONE, - .moves = MOVE_THUNDER, MOVE_PROTECT, MOVE_THUNDER_WAVE, MOVE_LIGHT_SCREEN + .moves = {MOVE_THUNDER, MOVE_PROTECT, MOVE_THUNDER_WAVE, MOVE_LIGHT_SCREEN} }, { .iv = 255, .lvl = 36, .species = SPECIES_ELECTRODE, .heldItem = ITEM_NONE, - .moves = MOVE_ROLLOUT, MOVE_THUNDER, MOVE_EXPLOSION, MOVE_RAIN_DANCE + .moves = {MOVE_ROLLOUT, MOVE_THUNDER, MOVE_EXPLOSION, MOVE_RAIN_DANCE} }, { .iv = 255, .lvl = 38, .species = SPECIES_MAGNETON, .heldItem = ITEM_SITRUS_BERRY, - .moves = MOVE_SUPERSONIC, MOVE_PROTECT, MOVE_THUNDER, MOVE_RAIN_DANCE + .moves = {MOVE_SUPERSONIC, MOVE_PROTECT, MOVE_THUNDER, MOVE_RAIN_DANCE} }, { .iv = 255, .lvl = 40, .species = SPECIES_MANECTRIC, .heldItem = ITEM_SITRUS_BERRY, - .moves = MOVE_BITE, MOVE_THUNDER_WAVE, MOVE_THUNDER, MOVE_PROTECT + .moves = {MOVE_BITE, MOVE_THUNDER_WAVE, MOVE_THUNDER, MOVE_PROTECT} } }; @@ -10632,35 +10632,35 @@ static const struct TrainerMonItemCustomMoves sParty_Wattson3[] = { .lvl = 39, .species = SPECIES_PIKACHU, .heldItem = ITEM_NONE, - .moves = MOVE_THUNDER, MOVE_SLAM, MOVE_RAIN_DANCE, MOVE_SHOCK_WAVE + .moves = {MOVE_THUNDER, MOVE_SLAM, MOVE_RAIN_DANCE, MOVE_SHOCK_WAVE} }, { .iv = 255, .lvl = 41, .species = SPECIES_FLAAFFY, .heldItem = ITEM_NONE, - .moves = MOVE_THUNDER, MOVE_PROTECT, MOVE_THUNDER_WAVE, MOVE_LIGHT_SCREEN + .moves = {MOVE_THUNDER, MOVE_PROTECT, MOVE_THUNDER_WAVE, MOVE_LIGHT_SCREEN} }, { .iv = 255, .lvl = 41, .species = SPECIES_ELECTRODE, .heldItem = ITEM_NONE, - .moves = MOVE_ROLLOUT, MOVE_THUNDER, MOVE_EXPLOSION, MOVE_RAIN_DANCE + .moves = {MOVE_ROLLOUT, MOVE_THUNDER, MOVE_EXPLOSION, MOVE_RAIN_DANCE} }, { .iv = 255, .lvl = 43, .species = SPECIES_MAGNETON, .heldItem = ITEM_SITRUS_BERRY, - .moves = MOVE_SUPERSONIC, MOVE_PROTECT, MOVE_THUNDER, MOVE_RAIN_DANCE + .moves = {MOVE_SUPERSONIC, MOVE_PROTECT, MOVE_THUNDER, MOVE_RAIN_DANCE} }, { .iv = 255, .lvl = 45, .species = SPECIES_MANECTRIC, .heldItem = ITEM_SITRUS_BERRY, - .moves = MOVE_BITE, MOVE_THUNDER_WAVE, MOVE_THUNDER, MOVE_PROTECT + .moves = {MOVE_BITE, MOVE_THUNDER_WAVE, MOVE_THUNDER, MOVE_PROTECT} } }; @@ -10670,35 +10670,35 @@ static const struct TrainerMonItemCustomMoves sParty_Wattson4[] = { .lvl = 44, .species = SPECIES_RAICHU, .heldItem = ITEM_NONE, - .moves = MOVE_THUNDER, MOVE_SLAM, MOVE_RAIN_DANCE, MOVE_PROTECT + .moves = {MOVE_THUNDER, MOVE_SLAM, MOVE_RAIN_DANCE, MOVE_PROTECT} }, { .iv = 255, .lvl = 46, .species = SPECIES_AMPHAROS, .heldItem = ITEM_NONE, - .moves = MOVE_THUNDER, MOVE_PROTECT, MOVE_THUNDER_WAVE, MOVE_LIGHT_SCREEN + .moves = {MOVE_THUNDER, MOVE_PROTECT, MOVE_THUNDER_WAVE, MOVE_LIGHT_SCREEN} }, { .iv = 255, .lvl = 46, .species = SPECIES_ELECTRODE, .heldItem = ITEM_NONE, - .moves = MOVE_ROLLOUT, MOVE_THUNDER, MOVE_EXPLOSION, MOVE_RAIN_DANCE + .moves = {MOVE_ROLLOUT, MOVE_THUNDER, MOVE_EXPLOSION, MOVE_RAIN_DANCE} }, { .iv = 255, .lvl = 48, .species = SPECIES_MAGNETON, .heldItem = ITEM_SITRUS_BERRY, - .moves = MOVE_SUPERSONIC, MOVE_PROTECT, MOVE_THUNDER, MOVE_RAIN_DANCE + .moves = {MOVE_SUPERSONIC, MOVE_PROTECT, MOVE_THUNDER, MOVE_RAIN_DANCE} }, { .iv = 255, .lvl = 50, .species = SPECIES_MANECTRIC, .heldItem = ITEM_SITRUS_BERRY, - .moves = MOVE_BITE, MOVE_THUNDER_WAVE, MOVE_THUNDER, MOVE_PROTECT + .moves = {MOVE_BITE, MOVE_THUNDER_WAVE, MOVE_THUNDER, MOVE_PROTECT} } }; @@ -10708,42 +10708,42 @@ static const struct TrainerMonItemCustomMoves sParty_Wattson5[] = { .lvl = 50, .species = SPECIES_ELECTABUZZ, .heldItem = ITEM_NONE, - .moves = MOVE_SWIFT, MOVE_FOCUS_PUNCH, MOVE_THUNDER_PUNCH, MOVE_LIGHT_SCREEN + .moves = {MOVE_SWIFT, MOVE_FOCUS_PUNCH, MOVE_THUNDER_PUNCH, MOVE_LIGHT_SCREEN} }, { .iv = 255, .lvl = 51, .species = SPECIES_RAICHU, .heldItem = ITEM_NONE, - .moves = MOVE_THUNDER, MOVE_SLAM, MOVE_RAIN_DANCE, MOVE_PROTECT + .moves = {MOVE_THUNDER, MOVE_SLAM, MOVE_RAIN_DANCE, MOVE_PROTECT} }, { .iv = 255, .lvl = 51, .species = SPECIES_AMPHAROS, .heldItem = ITEM_NONE, - .moves = MOVE_THUNDER, MOVE_PROTECT, MOVE_THUNDER_WAVE, MOVE_LIGHT_SCREEN + .moves = {MOVE_THUNDER, MOVE_PROTECT, MOVE_THUNDER_WAVE, MOVE_LIGHT_SCREEN} }, { .iv = 255, .lvl = 53, .species = SPECIES_ELECTRODE, .heldItem = ITEM_NONE, - .moves = MOVE_ROLLOUT, MOVE_THUNDER, MOVE_EXPLOSION, MOVE_RAIN_DANCE + .moves = {MOVE_ROLLOUT, MOVE_THUNDER, MOVE_EXPLOSION, MOVE_RAIN_DANCE} }, { .iv = 255, .lvl = 53, .species = SPECIES_MAGNETON, .heldItem = ITEM_SITRUS_BERRY, - .moves = MOVE_SUPERSONIC, MOVE_PROTECT, MOVE_THUNDER, MOVE_RAIN_DANCE + .moves = {MOVE_SUPERSONIC, MOVE_PROTECT, MOVE_THUNDER, MOVE_RAIN_DANCE} }, { .iv = 255, .lvl = 55, .species = SPECIES_MANECTRIC, .heldItem = ITEM_SITRUS_BERRY, - .moves = MOVE_BITE, MOVE_THUNDER_WAVE, MOVE_THUNDER, MOVE_PROTECT + .moves = {MOVE_BITE, MOVE_THUNDER_WAVE, MOVE_THUNDER, MOVE_PROTECT} } }; @@ -10753,28 +10753,28 @@ static const struct TrainerMonItemCustomMoves sParty_Flannery2[] = { .lvl = 38, .species = SPECIES_MAGCARGO, .heldItem = ITEM_WHITE_HERB, - .moves = MOVE_OVERHEAT, MOVE_ATTRACT, MOVE_LIGHT_SCREEN, MOVE_ROCK_SLIDE + .moves = {MOVE_OVERHEAT, MOVE_ATTRACT, MOVE_LIGHT_SCREEN, MOVE_ROCK_SLIDE} }, { .iv = 255, .lvl = 36, .species = SPECIES_PONYTA, .heldItem = ITEM_NONE, - .moves = MOVE_FLAMETHROWER, MOVE_ATTRACT, MOVE_SOLAR_BEAM, MOVE_BOUNCE + .moves = {MOVE_FLAMETHROWER, MOVE_ATTRACT, MOVE_SOLAR_BEAM, MOVE_BOUNCE} }, { .iv = 255, .lvl = 38, .species = SPECIES_CAMERUPT, .heldItem = ITEM_WHITE_HERB, - .moves = MOVE_OVERHEAT, MOVE_SUNNY_DAY, MOVE_EARTHQUAKE, MOVE_ATTRACT + .moves = {MOVE_OVERHEAT, MOVE_SUNNY_DAY, MOVE_EARTHQUAKE, MOVE_ATTRACT} }, { .iv = 255, .lvl = 40, .species = SPECIES_TORKOAL, .heldItem = ITEM_WHITE_HERB, - .moves = MOVE_OVERHEAT, MOVE_SUNNY_DAY, MOVE_EXPLOSION, MOVE_ATTRACT + .moves = {MOVE_OVERHEAT, MOVE_SUNNY_DAY, MOVE_EXPLOSION, MOVE_ATTRACT} } }; @@ -10784,35 +10784,35 @@ static const struct TrainerMonItemCustomMoves sParty_Flannery3[] = { .lvl = 41, .species = SPECIES_GROWLITHE, .heldItem = ITEM_NONE, - .moves = MOVE_HELPING_HAND, MOVE_FLAMETHROWER, MOVE_ROAR, MOVE_SUNNY_DAY + .moves = {MOVE_HELPING_HAND, MOVE_FLAMETHROWER, MOVE_ROAR, MOVE_SUNNY_DAY} }, { .iv = 255, .lvl = 43, .species = SPECIES_MAGCARGO, .heldItem = ITEM_WHITE_HERB, - .moves = MOVE_OVERHEAT, MOVE_ATTRACT, MOVE_LIGHT_SCREEN, MOVE_ROCK_SLIDE + .moves = {MOVE_OVERHEAT, MOVE_ATTRACT, MOVE_LIGHT_SCREEN, MOVE_ROCK_SLIDE} }, { .iv = 255, .lvl = 41, .species = SPECIES_PONYTA, .heldItem = ITEM_NONE, - .moves = MOVE_FLAMETHROWER, MOVE_ATTRACT, MOVE_SOLAR_BEAM, MOVE_BOUNCE + .moves = {MOVE_FLAMETHROWER, MOVE_ATTRACT, MOVE_SOLAR_BEAM, MOVE_BOUNCE} }, { .iv = 255, .lvl = 43, .species = SPECIES_CAMERUPT, .heldItem = ITEM_WHITE_HERB, - .moves = MOVE_OVERHEAT, MOVE_SUNNY_DAY, MOVE_EARTHQUAKE, MOVE_ATTRACT + .moves = {MOVE_OVERHEAT, MOVE_SUNNY_DAY, MOVE_EARTHQUAKE, MOVE_ATTRACT} }, { .iv = 255, .lvl = 45, .species = SPECIES_TORKOAL, .heldItem = ITEM_WHITE_HERB, - .moves = MOVE_OVERHEAT, MOVE_SUNNY_DAY, MOVE_EXPLOSION, MOVE_ATTRACT + .moves = {MOVE_OVERHEAT, MOVE_SUNNY_DAY, MOVE_EXPLOSION, MOVE_ATTRACT} } }; @@ -10822,42 +10822,42 @@ static const struct TrainerMonItemCustomMoves sParty_Flannery4[] = { .lvl = 46, .species = SPECIES_HOUNDOUR, .heldItem = ITEM_NONE, - .moves = MOVE_ROAR, MOVE_SOLAR_BEAM, MOVE_TAUNT, MOVE_SUNNY_DAY + .moves = {MOVE_ROAR, MOVE_SOLAR_BEAM, MOVE_TAUNT, MOVE_SUNNY_DAY} }, { .iv = 255, .lvl = 46, .species = SPECIES_GROWLITHE, .heldItem = ITEM_NONE, - .moves = MOVE_HELPING_HAND, MOVE_FLAMETHROWER, MOVE_SUNNY_DAY, MOVE_ROAR + .moves = {MOVE_HELPING_HAND, MOVE_FLAMETHROWER, MOVE_SUNNY_DAY, MOVE_ROAR} }, { .iv = 255, .lvl = 48, .species = SPECIES_MAGCARGO, .heldItem = ITEM_WHITE_HERB, - .moves = MOVE_OVERHEAT, MOVE_ATTRACT, MOVE_LIGHT_SCREEN, MOVE_ROCK_SLIDE + .moves = {MOVE_OVERHEAT, MOVE_ATTRACT, MOVE_LIGHT_SCREEN, MOVE_ROCK_SLIDE} }, { .iv = 255, .lvl = 46, .species = SPECIES_RAPIDASH, .heldItem = ITEM_NONE, - .moves = MOVE_FLAMETHROWER, MOVE_ATTRACT, MOVE_SOLAR_BEAM, MOVE_BOUNCE + .moves = {MOVE_FLAMETHROWER, MOVE_ATTRACT, MOVE_SOLAR_BEAM, MOVE_BOUNCE} }, { .iv = 255, .lvl = 48, .species = SPECIES_CAMERUPT, .heldItem = ITEM_WHITE_HERB, - .moves = MOVE_OVERHEAT, MOVE_SUNNY_DAY, MOVE_EARTHQUAKE, MOVE_ATTRACT + .moves = {MOVE_OVERHEAT, MOVE_SUNNY_DAY, MOVE_EARTHQUAKE, MOVE_ATTRACT} }, { .iv = 255, .lvl = 50, .species = SPECIES_TORKOAL, .heldItem = ITEM_WHITE_HERB, - .moves = MOVE_OVERHEAT, MOVE_SUNNY_DAY, MOVE_EXPLOSION, MOVE_ATTRACT + .moves = {MOVE_OVERHEAT, MOVE_SUNNY_DAY, MOVE_EXPLOSION, MOVE_ATTRACT} } }; @@ -10867,42 +10867,42 @@ static const struct TrainerMonItemCustomMoves sParty_Flannery5[] = { .lvl = 51, .species = SPECIES_ARCANINE, .heldItem = ITEM_NONE, - .moves = MOVE_HELPING_HAND, MOVE_FLAMETHROWER, MOVE_SUNNY_DAY, MOVE_ROAR + .moves = {MOVE_HELPING_HAND, MOVE_FLAMETHROWER, MOVE_SUNNY_DAY, MOVE_ROAR} }, { .iv = 255, .lvl = 53, .species = SPECIES_MAGCARGO, .heldItem = ITEM_WHITE_HERB, - .moves = MOVE_OVERHEAT, MOVE_ATTRACT, MOVE_LIGHT_SCREEN, MOVE_ROCK_SLIDE + .moves = {MOVE_OVERHEAT, MOVE_ATTRACT, MOVE_LIGHT_SCREEN, MOVE_ROCK_SLIDE} }, { .iv = 255, .lvl = 51, .species = SPECIES_HOUNDOOM, .heldItem = ITEM_NONE, - .moves = MOVE_ROAR, MOVE_SOLAR_BEAM, MOVE_TAUNT, MOVE_SUNNY_DAY + .moves = {MOVE_ROAR, MOVE_SOLAR_BEAM, MOVE_TAUNT, MOVE_SUNNY_DAY} }, { .iv = 255, .lvl = 51, .species = SPECIES_RAPIDASH, .heldItem = ITEM_NONE, - .moves = MOVE_FLAMETHROWER, MOVE_ATTRACT, MOVE_SOLAR_BEAM, MOVE_BOUNCE + .moves = {MOVE_FLAMETHROWER, MOVE_ATTRACT, MOVE_SOLAR_BEAM, MOVE_BOUNCE} }, { .iv = 255, .lvl = 53, .species = SPECIES_CAMERUPT, .heldItem = ITEM_WHITE_HERB, - .moves = MOVE_OVERHEAT, MOVE_SUNNY_DAY, MOVE_EARTHQUAKE, MOVE_ATTRACT + .moves = {MOVE_OVERHEAT, MOVE_SUNNY_DAY, MOVE_EARTHQUAKE, MOVE_ATTRACT} }, { .iv = 255, .lvl = 55, .species = SPECIES_TORKOAL, .heldItem = ITEM_WHITE_HERB, - .moves = MOVE_OVERHEAT, MOVE_SUNNY_DAY, MOVE_EXPLOSION, MOVE_ATTRACT + .moves = {MOVE_OVERHEAT, MOVE_SUNNY_DAY, MOVE_EXPLOSION, MOVE_ATTRACT} } }; @@ -10912,28 +10912,28 @@ static const struct TrainerMonItemCustomMoves sParty_Norman2[] = { .lvl = 42, .species = SPECIES_CHANSEY, .heldItem = ITEM_NONE, - .moves = MOVE_LIGHT_SCREEN, MOVE_SING, MOVE_SKILL_SWAP, MOVE_FOCUS_PUNCH + .moves = {MOVE_LIGHT_SCREEN, MOVE_SING, MOVE_SKILL_SWAP, MOVE_FOCUS_PUNCH} }, { .iv = 255, .lvl = 42, .species = SPECIES_SLAKING, .heldItem = ITEM_SITRUS_BERRY, - .moves = MOVE_BLIZZARD, MOVE_SHADOW_BALL, MOVE_DOUBLE_EDGE, MOVE_FIRE_BLAST + .moves = {MOVE_BLIZZARD, MOVE_SHADOW_BALL, MOVE_DOUBLE_EDGE, MOVE_FIRE_BLAST} }, { .iv = 255, .lvl = 43, .species = SPECIES_SPINDA, .heldItem = ITEM_NONE, - .moves = MOVE_TEETER_DANCE, MOVE_SKILL_SWAP, MOVE_FACADE, MOVE_HYPNOSIS + .moves = {MOVE_TEETER_DANCE, MOVE_SKILL_SWAP, MOVE_FACADE, MOVE_HYPNOSIS} }, { .iv = 255, .lvl = 45, .species = SPECIES_SLAKING, .heldItem = ITEM_SITRUS_BERRY, - .moves = MOVE_HYPER_BEAM, MOVE_FLAMETHROWER, MOVE_THUNDERBOLT, MOVE_SHADOW_BALL + .moves = {MOVE_HYPER_BEAM, MOVE_FLAMETHROWER, MOVE_THUNDERBOLT, MOVE_SHADOW_BALL} } }; @@ -10943,35 +10943,35 @@ static const struct TrainerMonItemCustomMoves sParty_Norman3[] = { .lvl = 47, .species = SPECIES_SLAKING, .heldItem = ITEM_SITRUS_BERRY, - .moves = MOVE_BLIZZARD, MOVE_SHADOW_BALL, MOVE_DOUBLE_EDGE, MOVE_FIRE_BLAST + .moves = {MOVE_BLIZZARD, MOVE_SHADOW_BALL, MOVE_DOUBLE_EDGE, MOVE_FIRE_BLAST} }, { .iv = 255, .lvl = 47, .species = SPECIES_CHANSEY, .heldItem = ITEM_NONE, - .moves = MOVE_LIGHT_SCREEN, MOVE_SING, MOVE_SKILL_SWAP, MOVE_FOCUS_PUNCH + .moves = {MOVE_LIGHT_SCREEN, MOVE_SING, MOVE_SKILL_SWAP, MOVE_FOCUS_PUNCH} }, { .iv = 255, .lvl = 45, .species = SPECIES_KANGASKHAN, .heldItem = ITEM_NONE, - .moves = MOVE_FAKE_OUT, MOVE_DIZZY_PUNCH, MOVE_ENDURE, MOVE_REVERSAL + .moves = {MOVE_FAKE_OUT, MOVE_DIZZY_PUNCH, MOVE_ENDURE, MOVE_REVERSAL} }, { .iv = 255, .lvl = 48, .species = SPECIES_SPINDA, .heldItem = ITEM_NONE, - .moves = MOVE_TEETER_DANCE, MOVE_SKILL_SWAP, MOVE_FACADE, MOVE_HYPNOSIS + .moves = {MOVE_TEETER_DANCE, MOVE_SKILL_SWAP, MOVE_FACADE, MOVE_HYPNOSIS} }, { .iv = 255, .lvl = 50, .species = SPECIES_SLAKING, .heldItem = ITEM_SITRUS_BERRY, - .moves = MOVE_HYPER_BEAM, MOVE_FLAMETHROWER, MOVE_THUNDERBOLT, MOVE_SHADOW_BALL + .moves = {MOVE_HYPER_BEAM, MOVE_FLAMETHROWER, MOVE_THUNDERBOLT, MOVE_SHADOW_BALL} } }; @@ -10981,35 +10981,35 @@ static const struct TrainerMonItemCustomMoves sParty_Norman4[] = { .lvl = 52, .species = SPECIES_SLAKING, .heldItem = ITEM_SITRUS_BERRY, - .moves = MOVE_BLIZZARD, MOVE_SHADOW_BALL, MOVE_DOUBLE_EDGE, MOVE_FIRE_BLAST + .moves = {MOVE_BLIZZARD, MOVE_SHADOW_BALL, MOVE_DOUBLE_EDGE, MOVE_FIRE_BLAST} }, { .iv = 255, .lvl = 52, .species = SPECIES_BLISSEY, .heldItem = ITEM_NONE, - .moves = MOVE_LIGHT_SCREEN, MOVE_SING, MOVE_SKILL_SWAP, MOVE_FOCUS_PUNCH + .moves = {MOVE_LIGHT_SCREEN, MOVE_SING, MOVE_SKILL_SWAP, MOVE_FOCUS_PUNCH} }, { .iv = 255, .lvl = 50, .species = SPECIES_KANGASKHAN, .heldItem = ITEM_NONE, - .moves = MOVE_FAKE_OUT, MOVE_DIZZY_PUNCH, MOVE_ENDURE, MOVE_REVERSAL + .moves = {MOVE_FAKE_OUT, MOVE_DIZZY_PUNCH, MOVE_ENDURE, MOVE_REVERSAL} }, { .iv = 255, .lvl = 53, .species = SPECIES_SPINDA, .heldItem = ITEM_NONE, - .moves = MOVE_TEETER_DANCE, MOVE_SKILL_SWAP, MOVE_FACADE, MOVE_HYPNOSIS + .moves = {MOVE_TEETER_DANCE, MOVE_SKILL_SWAP, MOVE_FACADE, MOVE_HYPNOSIS} }, { .iv = 255, .lvl = 55, .species = SPECIES_SLAKING, .heldItem = ITEM_SITRUS_BERRY, - .moves = MOVE_HYPER_BEAM, MOVE_FLAMETHROWER, MOVE_THUNDERBOLT, MOVE_SHADOW_BALL + .moves = {MOVE_HYPER_BEAM, MOVE_FLAMETHROWER, MOVE_THUNDERBOLT, MOVE_SHADOW_BALL} } }; @@ -11019,42 +11019,42 @@ static const struct TrainerMonItemCustomMoves sParty_Norman5[] = { .lvl = 57, .species = SPECIES_SLAKING, .heldItem = ITEM_SITRUS_BERRY, - .moves = MOVE_BLIZZARD, MOVE_SHADOW_BALL, MOVE_DOUBLE_EDGE, MOVE_FIRE_BLAST + .moves = {MOVE_BLIZZARD, MOVE_SHADOW_BALL, MOVE_DOUBLE_EDGE, MOVE_FIRE_BLAST} }, { .iv = 255, .lvl = 57, .species = SPECIES_BLISSEY, .heldItem = ITEM_NONE, - .moves = MOVE_PROTECT, MOVE_SING, MOVE_SKILL_SWAP, MOVE_FOCUS_PUNCH + .moves = {MOVE_PROTECT, MOVE_SING, MOVE_SKILL_SWAP, MOVE_FOCUS_PUNCH} }, { .iv = 255, .lvl = 55, .species = SPECIES_KANGASKHAN, .heldItem = ITEM_NONE, - .moves = MOVE_FAKE_OUT, MOVE_DIZZY_PUNCH, MOVE_ENDURE, MOVE_REVERSAL + .moves = {MOVE_FAKE_OUT, MOVE_DIZZY_PUNCH, MOVE_ENDURE, MOVE_REVERSAL} }, { .iv = 255, .lvl = 57, .species = SPECIES_TAUROS, .heldItem = ITEM_NONE, - .moves = MOVE_TAKE_DOWN, MOVE_PROTECT, MOVE_FIRE_BLAST, MOVE_EARTHQUAKE + .moves = {MOVE_TAKE_DOWN, MOVE_PROTECT, MOVE_FIRE_BLAST, MOVE_EARTHQUAKE} }, { .iv = 255, .lvl = 58, .species = SPECIES_SPINDA, .heldItem = ITEM_NONE, - .moves = MOVE_TEETER_DANCE, MOVE_SKILL_SWAP, MOVE_FACADE, MOVE_HYPNOSIS + .moves = {MOVE_TEETER_DANCE, MOVE_SKILL_SWAP, MOVE_FACADE, MOVE_HYPNOSIS} }, { .iv = 255, .lvl = 60, .species = SPECIES_SLAKING, .heldItem = ITEM_SITRUS_BERRY, - .moves = MOVE_HYPER_BEAM, MOVE_FLAMETHROWER, MOVE_THUNDERBOLT, MOVE_SHADOW_BALL + .moves = {MOVE_HYPER_BEAM, MOVE_FLAMETHROWER, MOVE_THUNDERBOLT, MOVE_SHADOW_BALL} } }; @@ -11064,35 +11064,35 @@ static const struct TrainerMonItemCustomMoves sParty_Winona2[] = { .lvl = 40, .species = SPECIES_DRATINI, .heldItem = ITEM_SITRUS_BERRY, - .moves = MOVE_THUNDER_WAVE, MOVE_THUNDERBOLT, MOVE_PROTECT, MOVE_ICE_BEAM + .moves = {MOVE_THUNDER_WAVE, MOVE_THUNDERBOLT, MOVE_PROTECT, MOVE_ICE_BEAM} }, { .iv = 255, .lvl = 38, .species = SPECIES_TROPIUS, .heldItem = ITEM_NONE, - .moves = MOVE_SUNNY_DAY, MOVE_AERIAL_ACE, MOVE_SOLAR_BEAM, MOVE_EARTHQUAKE + .moves = {MOVE_SUNNY_DAY, MOVE_AERIAL_ACE, MOVE_SOLAR_BEAM, MOVE_EARTHQUAKE} }, { .iv = 255, .lvl = 41, .species = SPECIES_PELIPPER, .heldItem = ITEM_NONE, - .moves = MOVE_SURF, MOVE_SUPERSONIC, MOVE_PROTECT, MOVE_AERIAL_ACE + .moves = {MOVE_SURF, MOVE_SUPERSONIC, MOVE_PROTECT, MOVE_AERIAL_ACE} }, { .iv = 255, .lvl = 43, .species = SPECIES_SKARMORY, .heldItem = ITEM_NONE, - .moves = MOVE_WHIRLWIND, MOVE_SPIKES, MOVE_STEEL_WING, MOVE_AERIAL_ACE + .moves = {MOVE_WHIRLWIND, MOVE_SPIKES, MOVE_STEEL_WING, MOVE_AERIAL_ACE} }, { .iv = 255, .lvl = 45, .species = SPECIES_ALTARIA, .heldItem = ITEM_CHESTO_BERRY, - .moves = MOVE_AERIAL_ACE, MOVE_REST, MOVE_DRAGON_DANCE, MOVE_EARTHQUAKE + .moves = {MOVE_AERIAL_ACE, MOVE_REST, MOVE_DRAGON_DANCE, MOVE_EARTHQUAKE} } }; @@ -11102,42 +11102,42 @@ static const struct TrainerMonItemCustomMoves sParty_Winona3[] = { .lvl = 43, .species = SPECIES_HOOTHOOT, .heldItem = ITEM_NONE, - .moves = MOVE_HYPNOSIS, MOVE_PSYCHIC, MOVE_REFLECT, MOVE_DREAM_EATER + .moves = {MOVE_HYPNOSIS, MOVE_PSYCHIC, MOVE_REFLECT, MOVE_DREAM_EATER} }, { .iv = 255, .lvl = 43, .species = SPECIES_TROPIUS, .heldItem = ITEM_NONE, - .moves = MOVE_SUNNY_DAY, MOVE_AERIAL_ACE, MOVE_SOLAR_BEAM, MOVE_EARTHQUAKE + .moves = {MOVE_SUNNY_DAY, MOVE_AERIAL_ACE, MOVE_SOLAR_BEAM, MOVE_EARTHQUAKE} }, { .iv = 255, .lvl = 45, .species = SPECIES_DRAGONAIR, .heldItem = ITEM_SITRUS_BERRY, - .moves = MOVE_THUNDER_WAVE, MOVE_THUNDERBOLT, MOVE_PROTECT, MOVE_ICE_BEAM + .moves = {MOVE_THUNDER_WAVE, MOVE_THUNDERBOLT, MOVE_PROTECT, MOVE_ICE_BEAM} }, { .iv = 255, .lvl = 46, .species = SPECIES_PELIPPER, .heldItem = ITEM_NONE, - .moves = MOVE_SURF, MOVE_SUPERSONIC, MOVE_PROTECT, MOVE_AERIAL_ACE + .moves = {MOVE_SURF, MOVE_SUPERSONIC, MOVE_PROTECT, MOVE_AERIAL_ACE} }, { .iv = 255, .lvl = 48, .species = SPECIES_SKARMORY, .heldItem = ITEM_NONE, - .moves = MOVE_WHIRLWIND, MOVE_SPIKES, MOVE_STEEL_WING, MOVE_AERIAL_ACE + .moves = {MOVE_WHIRLWIND, MOVE_SPIKES, MOVE_STEEL_WING, MOVE_AERIAL_ACE} }, { .iv = 255, .lvl = 50, .species = SPECIES_ALTARIA, .heldItem = ITEM_CHESTO_BERRY, - .moves = MOVE_AERIAL_ACE, MOVE_REST, MOVE_DRAGON_DANCE, MOVE_EARTHQUAKE + .moves = {MOVE_AERIAL_ACE, MOVE_REST, MOVE_DRAGON_DANCE, MOVE_EARTHQUAKE} } }; @@ -11147,42 +11147,42 @@ static const struct TrainerMonItemCustomMoves sParty_Winona4[] = { .lvl = 48, .species = SPECIES_NOCTOWL, .heldItem = ITEM_NONE, - .moves = MOVE_HYPNOSIS, MOVE_PSYCHIC, MOVE_REFLECT, MOVE_DREAM_EATER + .moves = {MOVE_HYPNOSIS, MOVE_PSYCHIC, MOVE_REFLECT, MOVE_DREAM_EATER} }, { .iv = 255, .lvl = 49, .species = SPECIES_TROPIUS, .heldItem = ITEM_NONE, - .moves = MOVE_SUNNY_DAY, MOVE_AERIAL_ACE, MOVE_SOLAR_BEAM, MOVE_EARTHQUAKE + .moves = {MOVE_SUNNY_DAY, MOVE_AERIAL_ACE, MOVE_SOLAR_BEAM, MOVE_EARTHQUAKE} }, { .iv = 255, .lvl = 50, .species = SPECIES_DRAGONAIR, .heldItem = ITEM_SITRUS_BERRY, - .moves = MOVE_THUNDER_WAVE, MOVE_THUNDERBOLT, MOVE_PROTECT, MOVE_ICE_BEAM + .moves = {MOVE_THUNDER_WAVE, MOVE_THUNDERBOLT, MOVE_PROTECT, MOVE_ICE_BEAM} }, { .iv = 255, .lvl = 51, .species = SPECIES_PELIPPER, .heldItem = ITEM_NONE, - .moves = MOVE_SURF, MOVE_SUPERSONIC, MOVE_PROTECT, MOVE_AERIAL_ACE + .moves = {MOVE_SURF, MOVE_SUPERSONIC, MOVE_PROTECT, MOVE_AERIAL_ACE} }, { .iv = 255, .lvl = 53, .species = SPECIES_SKARMORY, .heldItem = ITEM_NONE, - .moves = MOVE_WHIRLWIND, MOVE_SPIKES, MOVE_STEEL_WING, MOVE_AERIAL_ACE + .moves = {MOVE_WHIRLWIND, MOVE_SPIKES, MOVE_STEEL_WING, MOVE_AERIAL_ACE} }, { .iv = 255, .lvl = 55, .species = SPECIES_ALTARIA, .heldItem = ITEM_CHESTO_BERRY, - .moves = MOVE_AERIAL_ACE, MOVE_REST, MOVE_DRAGON_DANCE, MOVE_EARTHQUAKE + .moves = {MOVE_AERIAL_ACE, MOVE_REST, MOVE_DRAGON_DANCE, MOVE_EARTHQUAKE} } }; @@ -11192,42 +11192,42 @@ static const struct TrainerMonItemCustomMoves sParty_Winona5[] = { .lvl = 53, .species = SPECIES_NOCTOWL, .heldItem = ITEM_NONE, - .moves = MOVE_HYPNOSIS, MOVE_PSYCHIC, MOVE_REFLECT, MOVE_DREAM_EATER + .moves = {MOVE_HYPNOSIS, MOVE_PSYCHIC, MOVE_REFLECT, MOVE_DREAM_EATER} }, { .iv = 255, .lvl = 54, .species = SPECIES_TROPIUS, .heldItem = ITEM_NONE, - .moves = MOVE_SUNNY_DAY, MOVE_AERIAL_ACE, MOVE_SOLAR_BEAM, MOVE_EARTHQUAKE + .moves = {MOVE_SUNNY_DAY, MOVE_AERIAL_ACE, MOVE_SOLAR_BEAM, MOVE_EARTHQUAKE} }, { .iv = 255, .lvl = 55, .species = SPECIES_PELIPPER, .heldItem = ITEM_NONE, - .moves = MOVE_SURF, MOVE_SUPERSONIC, MOVE_PROTECT, MOVE_AERIAL_ACE + .moves = {MOVE_SURF, MOVE_SUPERSONIC, MOVE_PROTECT, MOVE_AERIAL_ACE} }, { .iv = 255, .lvl = 55, .species = SPECIES_DRAGONITE, .heldItem = ITEM_SITRUS_BERRY, - .moves = MOVE_HYPER_BEAM, MOVE_THUNDERBOLT, MOVE_EARTHQUAKE, MOVE_ICE_BEAM + .moves = {MOVE_HYPER_BEAM, MOVE_THUNDERBOLT, MOVE_EARTHQUAKE, MOVE_ICE_BEAM} }, { .iv = 255, .lvl = 58, .species = SPECIES_SKARMORY, .heldItem = ITEM_NONE, - .moves = MOVE_WHIRLWIND, MOVE_SPIKES, MOVE_STEEL_WING, MOVE_AERIAL_ACE + .moves = {MOVE_WHIRLWIND, MOVE_SPIKES, MOVE_STEEL_WING, MOVE_AERIAL_ACE} }, { .iv = 255, .lvl = 60, .species = SPECIES_ALTARIA, .heldItem = ITEM_CHESTO_BERRY, - .moves = MOVE_SKY_ATTACK, MOVE_REST, MOVE_DRAGON_DANCE, MOVE_EARTHQUAKE + .moves = {MOVE_SKY_ATTACK, MOVE_REST, MOVE_DRAGON_DANCE, MOVE_EARTHQUAKE} } }; @@ -11237,35 +11237,35 @@ static const struct TrainerMonItemCustomMoves sParty_TateAndLiza2[] = { .lvl = 48, .species = SPECIES_SLOWPOKE, .heldItem = ITEM_NONE, - .moves = MOVE_YAWN, MOVE_PSYCHIC, MOVE_CALM_MIND, MOVE_PROTECT + .moves = {MOVE_YAWN, MOVE_PSYCHIC, MOVE_CALM_MIND, MOVE_PROTECT} }, { .iv = 255, .lvl = 49, .species = SPECIES_CLAYDOL, .heldItem = ITEM_NONE, - .moves = MOVE_EARTHQUAKE, MOVE_ANCIENT_POWER, MOVE_PSYCHIC, MOVE_LIGHT_SCREEN + .moves = {MOVE_EARTHQUAKE, MOVE_ANCIENT_POWER, MOVE_PSYCHIC, MOVE_LIGHT_SCREEN} }, { .iv = 255, .lvl = 49, .species = SPECIES_XATU, .heldItem = ITEM_CHESTO_BERRY, - .moves = MOVE_PSYCHIC, MOVE_REST, MOVE_CONFUSE_RAY, MOVE_CALM_MIND + .moves = {MOVE_PSYCHIC, MOVE_REST, MOVE_CONFUSE_RAY, MOVE_CALM_MIND} }, { .iv = 255, .lvl = 50, .species = SPECIES_LUNATONE, .heldItem = ITEM_CHESTO_BERRY, - .moves = MOVE_EARTHQUAKE, MOVE_PSYCHIC, MOVE_REST, MOVE_CALM_MIND + .moves = {MOVE_EARTHQUAKE, MOVE_PSYCHIC, MOVE_REST, MOVE_CALM_MIND} }, { .iv = 255, .lvl = 50, .species = SPECIES_SOLROCK, .heldItem = ITEM_SITRUS_BERRY, - .moves = MOVE_SUNNY_DAY, MOVE_SOLAR_BEAM, MOVE_PSYCHIC, MOVE_FLAMETHROWER + .moves = {MOVE_SUNNY_DAY, MOVE_SOLAR_BEAM, MOVE_PSYCHIC, MOVE_FLAMETHROWER} } }; @@ -11275,42 +11275,42 @@ static const struct TrainerMonItemCustomMoves sParty_TateAndLiza3[] = { .lvl = 53, .species = SPECIES_DROWZEE, .heldItem = ITEM_NONE, - .moves = MOVE_HYPNOSIS, MOVE_DREAM_EATER, MOVE_HEADBUTT, MOVE_PROTECT + .moves = {MOVE_HYPNOSIS, MOVE_DREAM_EATER, MOVE_HEADBUTT, MOVE_PROTECT} }, { .iv = 255, .lvl = 53, .species = SPECIES_SLOWPOKE, .heldItem = ITEM_NONE, - .moves = MOVE_YAWN, MOVE_PSYCHIC, MOVE_CALM_MIND, MOVE_PROTECT + .moves = {MOVE_YAWN, MOVE_PSYCHIC, MOVE_CALM_MIND, MOVE_PROTECT} }, { .iv = 255, .lvl = 54, .species = SPECIES_CLAYDOL, .heldItem = ITEM_NONE, - .moves = MOVE_EARTHQUAKE, MOVE_EXPLOSION, MOVE_PSYCHIC, MOVE_LIGHT_SCREEN + .moves = {MOVE_EARTHQUAKE, MOVE_EXPLOSION, MOVE_PSYCHIC, MOVE_LIGHT_SCREEN} }, { .iv = 255, .lvl = 54, .species = SPECIES_XATU, .heldItem = ITEM_CHESTO_BERRY, - .moves = MOVE_PSYCHIC, MOVE_REST, MOVE_CONFUSE_RAY, MOVE_CALM_MIND + .moves = {MOVE_PSYCHIC, MOVE_REST, MOVE_CONFUSE_RAY, MOVE_CALM_MIND} }, { .iv = 255, .lvl = 55, .species = SPECIES_LUNATONE, .heldItem = ITEM_CHESTO_BERRY, - .moves = MOVE_EARTHQUAKE, MOVE_PSYCHIC, MOVE_REST, MOVE_CALM_MIND + .moves = {MOVE_EARTHQUAKE, MOVE_PSYCHIC, MOVE_REST, MOVE_CALM_MIND} }, { .iv = 255, .lvl = 55, .species = SPECIES_SOLROCK, .heldItem = ITEM_SITRUS_BERRY, - .moves = MOVE_SUNNY_DAY, MOVE_SOLAR_BEAM, MOVE_PSYCHIC, MOVE_FLAMETHROWER + .moves = {MOVE_SUNNY_DAY, MOVE_SOLAR_BEAM, MOVE_PSYCHIC, MOVE_FLAMETHROWER} } }; @@ -11320,42 +11320,42 @@ static const struct TrainerMonItemCustomMoves sParty_TateAndLiza4[] = { .lvl = 58, .species = SPECIES_HYPNO, .heldItem = ITEM_NONE, - .moves = MOVE_HYPNOSIS, MOVE_DREAM_EATER, MOVE_HEADBUTT, MOVE_PROTECT + .moves = {MOVE_HYPNOSIS, MOVE_DREAM_EATER, MOVE_HEADBUTT, MOVE_PROTECT} }, { .iv = 255, .lvl = 59, .species = SPECIES_CLAYDOL, .heldItem = ITEM_NONE, - .moves = MOVE_EARTHQUAKE, MOVE_EXPLOSION, MOVE_PSYCHIC, MOVE_LIGHT_SCREEN + .moves = {MOVE_EARTHQUAKE, MOVE_EXPLOSION, MOVE_PSYCHIC, MOVE_LIGHT_SCREEN} }, { .iv = 255, .lvl = 58, .species = SPECIES_SLOWPOKE, .heldItem = ITEM_NONE, - .moves = MOVE_YAWN, MOVE_PSYCHIC, MOVE_CALM_MIND, MOVE_PROTECT + .moves = {MOVE_YAWN, MOVE_PSYCHIC, MOVE_CALM_MIND, MOVE_PROTECT} }, { .iv = 255, .lvl = 59, .species = SPECIES_XATU, .heldItem = ITEM_CHESTO_BERRY, - .moves = MOVE_PSYCHIC, MOVE_REST, MOVE_CONFUSE_RAY, MOVE_CALM_MIND + .moves = {MOVE_PSYCHIC, MOVE_REST, MOVE_CONFUSE_RAY, MOVE_CALM_MIND} }, { .iv = 255, .lvl = 60, .species = SPECIES_LUNATONE, .heldItem = ITEM_CHESTO_BERRY, - .moves = MOVE_EARTHQUAKE, MOVE_PSYCHIC, MOVE_REST, MOVE_CALM_MIND + .moves = {MOVE_EARTHQUAKE, MOVE_PSYCHIC, MOVE_REST, MOVE_CALM_MIND} }, { .iv = 255, .lvl = 60, .species = SPECIES_SOLROCK, .heldItem = ITEM_SITRUS_BERRY, - .moves = MOVE_SUNNY_DAY, MOVE_SOLAR_BEAM, MOVE_PSYCHIC, MOVE_FLAMETHROWER + .moves = {MOVE_SUNNY_DAY, MOVE_SOLAR_BEAM, MOVE_PSYCHIC, MOVE_FLAMETHROWER} } }; @@ -11365,42 +11365,42 @@ static const struct TrainerMonItemCustomMoves sParty_TateAndLiza5[] = { .lvl = 63, .species = SPECIES_HYPNO, .heldItem = ITEM_NONE, - .moves = MOVE_HYPNOSIS, MOVE_DREAM_EATER, MOVE_HEADBUTT, MOVE_PROTECT + .moves = {MOVE_HYPNOSIS, MOVE_DREAM_EATER, MOVE_HEADBUTT, MOVE_PROTECT} }, { .iv = 255, .lvl = 64, .species = SPECIES_CLAYDOL, .heldItem = ITEM_NONE, - .moves = MOVE_EARTHQUAKE, MOVE_EXPLOSION, MOVE_PSYCHIC, MOVE_LIGHT_SCREEN + .moves = {MOVE_EARTHQUAKE, MOVE_EXPLOSION, MOVE_PSYCHIC, MOVE_LIGHT_SCREEN} }, { .iv = 255, .lvl = 63, .species = SPECIES_SLOWKING, .heldItem = ITEM_NONE, - .moves = MOVE_YAWN, MOVE_PSYCHIC, MOVE_CALM_MIND, MOVE_PROTECT + .moves = {MOVE_YAWN, MOVE_PSYCHIC, MOVE_CALM_MIND, MOVE_PROTECT} }, { .iv = 255, .lvl = 64, .species = SPECIES_XATU, .heldItem = ITEM_CHESTO_BERRY, - .moves = MOVE_PSYCHIC, MOVE_REST, MOVE_CONFUSE_RAY, MOVE_CALM_MIND + .moves = {MOVE_PSYCHIC, MOVE_REST, MOVE_CONFUSE_RAY, MOVE_CALM_MIND} }, { .iv = 255, .lvl = 65, .species = SPECIES_LUNATONE, .heldItem = ITEM_CHESTO_BERRY, - .moves = MOVE_EARTHQUAKE, MOVE_PSYCHIC, MOVE_REST, MOVE_CALM_MIND + .moves = {MOVE_EARTHQUAKE, MOVE_PSYCHIC, MOVE_REST, MOVE_CALM_MIND} }, { .iv = 255, .lvl = 65, .species = SPECIES_SOLROCK, .heldItem = ITEM_SITRUS_BERRY, - .moves = MOVE_SUNNY_DAY, MOVE_SOLAR_BEAM, MOVE_PSYCHIC, MOVE_FLAMETHROWER + .moves = {MOVE_SUNNY_DAY, MOVE_SOLAR_BEAM, MOVE_PSYCHIC, MOVE_FLAMETHROWER} } }; @@ -11410,35 +11410,35 @@ static const struct TrainerMonItemCustomMoves sParty_Juan2[] = { .lvl = 46, .species = SPECIES_POLIWAG, .heldItem = ITEM_NONE, - .moves = MOVE_HYPNOSIS, MOVE_RAIN_DANCE, MOVE_PROTECT, MOVE_HYDRO_PUMP + .moves = {MOVE_HYPNOSIS, MOVE_RAIN_DANCE, MOVE_PROTECT, MOVE_HYDRO_PUMP} }, { .iv = 255, .lvl = 46, .species = SPECIES_WHISCASH, .heldItem = ITEM_NONE, - .moves = MOVE_RAIN_DANCE, MOVE_WATER_PULSE, MOVE_DOUBLE_TEAM, MOVE_FISSURE + .moves = {MOVE_RAIN_DANCE, MOVE_WATER_PULSE, MOVE_DOUBLE_TEAM, MOVE_FISSURE} }, { .iv = 255, .lvl = 48, .species = SPECIES_WALREIN, .heldItem = ITEM_NONE, - .moves = MOVE_WATER_PULSE, MOVE_BODY_SLAM, MOVE_PROTECT, MOVE_ICE_BEAM + .moves = {MOVE_WATER_PULSE, MOVE_BODY_SLAM, MOVE_PROTECT, MOVE_ICE_BEAM} }, { .iv = 255, .lvl = 48, .species = SPECIES_CRAWDAUNT, .heldItem = ITEM_CHESTO_BERRY, - .moves = MOVE_REST, MOVE_CRABHAMMER, MOVE_TAUNT, MOVE_DOUBLE_TEAM + .moves = {MOVE_REST, MOVE_CRABHAMMER, MOVE_TAUNT, MOVE_DOUBLE_TEAM} }, { .iv = 255, .lvl = 51, .species = SPECIES_KINGDRA, .heldItem = ITEM_CHESTO_BERRY, - .moves = MOVE_WATER_PULSE, MOVE_DOUBLE_TEAM, MOVE_ICE_BEAM, MOVE_REST + .moves = {MOVE_WATER_PULSE, MOVE_DOUBLE_TEAM, MOVE_ICE_BEAM, MOVE_REST} } }; @@ -11448,35 +11448,35 @@ static const struct TrainerMonItemCustomMoves sParty_Juan3[] = { .lvl = 50, .species = SPECIES_POLIWHIRL, .heldItem = ITEM_NONE, - .moves = MOVE_HYPNOSIS, MOVE_RAIN_DANCE, MOVE_PROTECT, MOVE_HYDRO_PUMP + .moves = {MOVE_HYPNOSIS, MOVE_RAIN_DANCE, MOVE_PROTECT, MOVE_HYDRO_PUMP} }, { .iv = 255, .lvl = 51, .species = SPECIES_WHISCASH, .heldItem = ITEM_NONE, - .moves = MOVE_RAIN_DANCE, MOVE_WATER_PULSE, MOVE_DOUBLE_TEAM, MOVE_FISSURE + .moves = {MOVE_RAIN_DANCE, MOVE_WATER_PULSE, MOVE_DOUBLE_TEAM, MOVE_FISSURE} }, { .iv = 255, .lvl = 53, .species = SPECIES_WALREIN, .heldItem = ITEM_NONE, - .moves = MOVE_WATER_PULSE, MOVE_BODY_SLAM, MOVE_PROTECT, MOVE_ICE_BEAM + .moves = {MOVE_WATER_PULSE, MOVE_BODY_SLAM, MOVE_PROTECT, MOVE_ICE_BEAM} }, { .iv = 255, .lvl = 53, .species = SPECIES_CRAWDAUNT, .heldItem = ITEM_CHESTO_BERRY, - .moves = MOVE_REST, MOVE_GUILLOTINE, MOVE_TAUNT, MOVE_DOUBLE_TEAM + .moves = {MOVE_REST, MOVE_GUILLOTINE, MOVE_TAUNT, MOVE_DOUBLE_TEAM} }, { .iv = 255, .lvl = 56, .species = SPECIES_KINGDRA, .heldItem = ITEM_CHESTO_BERRY, - .moves = MOVE_WATER_PULSE, MOVE_DOUBLE_TEAM, MOVE_ICE_BEAM, MOVE_REST + .moves = {MOVE_WATER_PULSE, MOVE_DOUBLE_TEAM, MOVE_ICE_BEAM, MOVE_REST} } }; @@ -11486,42 +11486,42 @@ static const struct TrainerMonItemCustomMoves sParty_Juan4[] = { .lvl = 56, .species = SPECIES_LAPRAS, .heldItem = ITEM_NONE, - .moves = MOVE_HYDRO_PUMP, MOVE_PERISH_SONG, MOVE_ICE_BEAM, MOVE_CONFUSE_RAY + .moves = {MOVE_HYDRO_PUMP, MOVE_PERISH_SONG, MOVE_ICE_BEAM, MOVE_CONFUSE_RAY} }, { .iv = 255, .lvl = 58, .species = SPECIES_WHISCASH, .heldItem = ITEM_NONE, - .moves = MOVE_RAIN_DANCE, MOVE_WATER_PULSE, MOVE_DOUBLE_TEAM, MOVE_FISSURE + .moves = {MOVE_RAIN_DANCE, MOVE_WATER_PULSE, MOVE_DOUBLE_TEAM, MOVE_FISSURE} }, { .iv = 255, .lvl = 56, .species = SPECIES_POLIWHIRL, .heldItem = ITEM_NONE, - .moves = MOVE_HYPNOSIS, MOVE_RAIN_DANCE, MOVE_PROTECT, MOVE_HYDRO_PUMP + .moves = {MOVE_HYPNOSIS, MOVE_RAIN_DANCE, MOVE_PROTECT, MOVE_HYDRO_PUMP} }, { .iv = 255, .lvl = 58, .species = SPECIES_WALREIN, .heldItem = ITEM_NONE, - .moves = MOVE_WATER_PULSE, MOVE_BODY_SLAM, MOVE_PROTECT, MOVE_ICE_BEAM + .moves = {MOVE_WATER_PULSE, MOVE_BODY_SLAM, MOVE_PROTECT, MOVE_ICE_BEAM} }, { .iv = 255, .lvl = 58, .species = SPECIES_CRAWDAUNT, .heldItem = ITEM_CHESTO_BERRY, - .moves = MOVE_REST, MOVE_GUILLOTINE, MOVE_TAUNT, MOVE_DOUBLE_TEAM + .moves = {MOVE_REST, MOVE_GUILLOTINE, MOVE_TAUNT, MOVE_DOUBLE_TEAM} }, { .iv = 255, .lvl = 61, .species = SPECIES_KINGDRA, .heldItem = ITEM_CHESTO_BERRY, - .moves = MOVE_WATER_PULSE, MOVE_DOUBLE_TEAM, MOVE_ICE_BEAM, MOVE_REST + .moves = {MOVE_WATER_PULSE, MOVE_DOUBLE_TEAM, MOVE_ICE_BEAM, MOVE_REST} } }; @@ -11531,42 +11531,42 @@ static const struct TrainerMonItemCustomMoves sParty_Juan5[] = { .lvl = 61, .species = SPECIES_LAPRAS, .heldItem = ITEM_NONE, - .moves = MOVE_HYDRO_PUMP, MOVE_PERISH_SONG, MOVE_ICE_BEAM, MOVE_CONFUSE_RAY + .moves = {MOVE_HYDRO_PUMP, MOVE_PERISH_SONG, MOVE_ICE_BEAM, MOVE_CONFUSE_RAY} }, { .iv = 255, .lvl = 63, .species = SPECIES_WHISCASH, .heldItem = ITEM_NONE, - .moves = MOVE_RAIN_DANCE, MOVE_WATER_PULSE, MOVE_DOUBLE_TEAM, MOVE_FISSURE + .moves = {MOVE_RAIN_DANCE, MOVE_WATER_PULSE, MOVE_DOUBLE_TEAM, MOVE_FISSURE} }, { .iv = 255, .lvl = 61, .species = SPECIES_POLITOED, .heldItem = ITEM_NONE, - .moves = MOVE_HYPNOSIS, MOVE_RAIN_DANCE, MOVE_HYDRO_PUMP, MOVE_PERISH_SONG + .moves = {MOVE_HYPNOSIS, MOVE_RAIN_DANCE, MOVE_HYDRO_PUMP, MOVE_PERISH_SONG} }, { .iv = 255, .lvl = 63, .species = SPECIES_WALREIN, .heldItem = ITEM_NONE, - .moves = MOVE_WATER_PULSE, MOVE_BODY_SLAM, MOVE_PROTECT, MOVE_SHEER_COLD + .moves = {MOVE_WATER_PULSE, MOVE_BODY_SLAM, MOVE_PROTECT, MOVE_SHEER_COLD} }, { .iv = 255, .lvl = 63, .species = SPECIES_CRAWDAUNT, .heldItem = ITEM_CHESTO_BERRY, - .moves = MOVE_REST, MOVE_GUILLOTINE, MOVE_TAUNT, MOVE_DOUBLE_TEAM + .moves = {MOVE_REST, MOVE_GUILLOTINE, MOVE_TAUNT, MOVE_DOUBLE_TEAM} }, { .iv = 255, .lvl = 66, .species = SPECIES_KINGDRA, .heldItem = ITEM_CHESTO_BERRY, - .moves = MOVE_WATER_PULSE, MOVE_DOUBLE_TEAM, MOVE_ICE_BEAM, MOVE_REST + .moves = {MOVE_WATER_PULSE, MOVE_DOUBLE_TEAM, MOVE_ICE_BEAM, MOVE_REST} } }; @@ -11576,14 +11576,14 @@ static const struct TrainerMonItemCustomMoves sParty_Angelo[] = { .lvl = 17, .species = SPECIES_ILLUMISE, .heldItem = ITEM_NONE, - .moves = MOVE_SHOCK_WAVE, MOVE_QUICK_ATTACK, MOVE_CHARM, MOVE_NONE + .moves = {MOVE_SHOCK_WAVE, MOVE_QUICK_ATTACK, MOVE_CHARM, MOVE_NONE} }, { .iv = 100, .lvl = 17, .species = SPECIES_VOLBEAT, .heldItem = ITEM_NONE, - .moves = MOVE_SHOCK_WAVE, MOVE_QUICK_ATTACK, MOVE_CONFUSE_RAY, MOVE_NONE + .moves = {MOVE_SHOCK_WAVE, MOVE_QUICK_ATTACK, MOVE_CONFUSE_RAY, MOVE_NONE} } }; @@ -11601,42 +11601,42 @@ static const struct TrainerMonItemCustomMoves sParty_Steven[] = { .lvl = 77, .species = SPECIES_SKARMORY, .heldItem = ITEM_NONE, - .moves = MOVE_TOXIC, MOVE_AERIAL_ACE, MOVE_SPIKES, MOVE_STEEL_WING + .moves = {MOVE_TOXIC, MOVE_AERIAL_ACE, MOVE_SPIKES, MOVE_STEEL_WING} }, { .iv = 255, .lvl = 75, .species = SPECIES_CLAYDOL, .heldItem = ITEM_NONE, - .moves = MOVE_REFLECT, MOVE_LIGHT_SCREEN, MOVE_ANCIENT_POWER, MOVE_EARTHQUAKE + .moves = {MOVE_REFLECT, MOVE_LIGHT_SCREEN, MOVE_ANCIENT_POWER, MOVE_EARTHQUAKE} }, { .iv = 255, .lvl = 76, .species = SPECIES_AGGRON, .heldItem = ITEM_NONE, - .moves = MOVE_THUNDER, MOVE_EARTHQUAKE, MOVE_SOLAR_BEAM, MOVE_DRAGON_CLAW + .moves = {MOVE_THUNDER, MOVE_EARTHQUAKE, MOVE_SOLAR_BEAM, MOVE_DRAGON_CLAW} }, { .iv = 255, .lvl = 76, .species = SPECIES_CRADILY, .heldItem = ITEM_NONE, - .moves = MOVE_GIGA_DRAIN, MOVE_ANCIENT_POWER, MOVE_INGRAIN, MOVE_CONFUSE_RAY + .moves = {MOVE_GIGA_DRAIN, MOVE_ANCIENT_POWER, MOVE_INGRAIN, MOVE_CONFUSE_RAY} }, { .iv = 255, .lvl = 76, .species = SPECIES_ARMALDO, .heldItem = ITEM_NONE, - .moves = MOVE_WATER_PULSE, MOVE_ANCIENT_POWER, MOVE_AERIAL_ACE, MOVE_SLASH + .moves = {MOVE_WATER_PULSE, MOVE_ANCIENT_POWER, MOVE_AERIAL_ACE, MOVE_SLASH} }, { .iv = 255, .lvl = 78, .species = SPECIES_METAGROSS, .heldItem = ITEM_SITRUS_BERRY, - .moves = MOVE_EARTHQUAKE, MOVE_PSYCHIC, MOVE_METEOR_MASH, MOVE_SHADOW_BALL + .moves = {MOVE_EARTHQUAKE, MOVE_PSYCHIC, MOVE_METEOR_MASH, MOVE_SHADOW_BALL} } }; From c85ca4b8601ac5776735cf5217fa481e037d5128 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Mon, 30 Dec 2019 10:58:32 -0500 Subject: [PATCH 14/37] Standardize farfetchd spelling --- .../{farfetch_d => farfetchd}/anim_front.png | Bin graphics/pokemon/{farfetch_d => farfetchd}/back.png | Bin .../pokemon/{farfetch_d => farfetchd}/footprint.png | Bin .../pokemon/{farfetch_d => farfetchd}/front.png | Bin graphics/pokemon/{farfetch_d => farfetchd}/icon.png | Bin .../pokemon/{farfetch_d => farfetchd}/normal.pal | 0 .../pokemon/{farfetch_d => farfetchd}/shiny.pal | 0 src/anim_mon_front_pics.c | 2 +- src/data/graphics/pokemon.h | 12 ++++++------ 9 files changed, 7 insertions(+), 7 deletions(-) rename graphics/pokemon/{farfetch_d => farfetchd}/anim_front.png (100%) rename graphics/pokemon/{farfetch_d => farfetchd}/back.png (100%) rename graphics/pokemon/{farfetch_d => farfetchd}/footprint.png (100%) rename graphics/pokemon/{farfetch_d => farfetchd}/front.png (100%) rename graphics/pokemon/{farfetch_d => farfetchd}/icon.png (100%) rename graphics/pokemon/{farfetch_d => farfetchd}/normal.pal (100%) rename graphics/pokemon/{farfetch_d => farfetchd}/shiny.pal (100%) diff --git a/graphics/pokemon/farfetch_d/anim_front.png b/graphics/pokemon/farfetchd/anim_front.png similarity index 100% rename from graphics/pokemon/farfetch_d/anim_front.png rename to graphics/pokemon/farfetchd/anim_front.png diff --git a/graphics/pokemon/farfetch_d/back.png b/graphics/pokemon/farfetchd/back.png similarity index 100% rename from graphics/pokemon/farfetch_d/back.png rename to graphics/pokemon/farfetchd/back.png diff --git a/graphics/pokemon/farfetch_d/footprint.png b/graphics/pokemon/farfetchd/footprint.png similarity index 100% rename from graphics/pokemon/farfetch_d/footprint.png rename to graphics/pokemon/farfetchd/footprint.png diff --git a/graphics/pokemon/farfetch_d/front.png b/graphics/pokemon/farfetchd/front.png similarity index 100% rename from graphics/pokemon/farfetch_d/front.png rename to graphics/pokemon/farfetchd/front.png diff --git a/graphics/pokemon/farfetch_d/icon.png b/graphics/pokemon/farfetchd/icon.png similarity index 100% rename from graphics/pokemon/farfetch_d/icon.png rename to graphics/pokemon/farfetchd/icon.png diff --git a/graphics/pokemon/farfetch_d/normal.pal b/graphics/pokemon/farfetchd/normal.pal similarity index 100% rename from graphics/pokemon/farfetch_d/normal.pal rename to graphics/pokemon/farfetchd/normal.pal diff --git a/graphics/pokemon/farfetch_d/shiny.pal b/graphics/pokemon/farfetchd/shiny.pal similarity index 100% rename from graphics/pokemon/farfetch_d/shiny.pal rename to graphics/pokemon/farfetchd/shiny.pal diff --git a/src/anim_mon_front_pics.c b/src/anim_mon_front_pics.c index b566b77604..d764e10ac2 100644 --- a/src/anim_mon_front_pics.c +++ b/src/anim_mon_front_pics.c @@ -84,7 +84,7 @@ const u32 gMonFrontPic_Slowpoke[] = INCBIN_U32("graphics/pokemon/slowpoke/anim_f const u32 gMonFrontPic_Slowbro[] = INCBIN_U32("graphics/pokemon/slowbro/anim_front.4bpp.lz"); const u32 gMonFrontPic_Magnemite[] = INCBIN_U32("graphics/pokemon/magnemite/anim_front.4bpp.lz"); const u32 gMonFrontPic_Magneton[] = INCBIN_U32("graphics/pokemon/magneton/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Farfetchd[] = INCBIN_U32("graphics/pokemon/farfetch_d/anim_front.4bpp.lz"); +const u32 gMonFrontPic_Farfetchd[] = INCBIN_U32("graphics/pokemon/farfetchd/anim_front.4bpp.lz"); const u32 gMonFrontPic_Doduo[] = INCBIN_U32("graphics/pokemon/doduo/anim_front.4bpp.lz"); const u32 gMonFrontPic_Dodrio[] = INCBIN_U32("graphics/pokemon/dodrio/anim_front.4bpp.lz"); const u32 gMonFrontPic_Seel[] = INCBIN_U32("graphics/pokemon/seel/anim_front.4bpp.lz"); diff --git a/src/data/graphics/pokemon.h b/src/data/graphics/pokemon.h index 07415949d9..45e34030fd 100644 --- a/src/data/graphics/pokemon.h +++ b/src/data/graphics/pokemon.h @@ -572,12 +572,12 @@ const u32 gMonShinyPalette_Magneton[] = INCBIN_U32("graphics/pokemon/magneton/sh const u8 gMonIcon_Magneton[] = INCBIN_U8("graphics/pokemon/magneton/icon.4bpp"); const u8 gMonFootprint_Magneton[] = INCBIN_U8("graphics/pokemon/magneton/footprint.1bpp"); -const u32 gMonStillFrontPic_Farfetchd[] = INCBIN_U32("graphics/pokemon/farfetch_d/front.4bpp.lz"); -const u32 gMonPalette_Farfetchd[] = INCBIN_U32("graphics/pokemon/farfetch_d/normal.gbapal.lz"); -const u32 gMonBackPic_Farfetchd[] = INCBIN_U32("graphics/pokemon/farfetch_d/back.4bpp.lz"); -const u32 gMonShinyPalette_Farfetchd[] = INCBIN_U32("graphics/pokemon/farfetch_d/shiny.gbapal.lz"); -const u8 gMonIcon_Farfetchd[] = INCBIN_U8("graphics/pokemon/farfetch_d/icon.4bpp"); -const u8 gMonFootprint_Farfetchd[] = INCBIN_U8("graphics/pokemon/farfetch_d/footprint.1bpp"); +const u32 gMonStillFrontPic_Farfetchd[] = INCBIN_U32("graphics/pokemon/farfetchd/front.4bpp.lz"); +const u32 gMonPalette_Farfetchd[] = INCBIN_U32("graphics/pokemon/farfetchd/normal.gbapal.lz"); +const u32 gMonBackPic_Farfetchd[] = INCBIN_U32("graphics/pokemon/farfetchd/back.4bpp.lz"); +const u32 gMonShinyPalette_Farfetchd[] = INCBIN_U32("graphics/pokemon/farfetchd/shiny.gbapal.lz"); +const u8 gMonIcon_Farfetchd[] = INCBIN_U8("graphics/pokemon/farfetchd/icon.4bpp"); +const u8 gMonFootprint_Farfetchd[] = INCBIN_U8("graphics/pokemon/farfetchd/footprint.1bpp"); const u32 gMonStillFrontPic_Doduo[] = INCBIN_U32("graphics/pokemon/doduo/front.4bpp.lz"); const u32 gMonPalette_Doduo[] = INCBIN_U32("graphics/pokemon/doduo/normal.gbapal.lz"); From 8b1595ebc36a623240fa8dd509864f5400eed1f9 Mon Sep 17 00:00:00 2001 From: Slawter666 <38655737+Slawter666@users.noreply.github.com> Date: Fri, 3 Jan 2020 01:35:35 +0000 Subject: [PATCH 15/37] =?UTF-8?q?Pok=C3=A9dex=20search=20menu=20documentat?= =?UTF-8?q?ion?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pokedex.c | 231 ++++++++++++++++++++++++++++---------------------- 1 file changed, 128 insertions(+), 103 deletions(-) diff --git a/src/pokedex.c b/src/pokedex.c index 91db549069..78c204d2d2 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -52,7 +52,7 @@ struct UnknownStruct1 const struct PokedexOption *pokedexList; u8 unk4; u8 unk5; - u16 unk6; + u16 numOptions; }; struct UnknownStruct3 @@ -99,7 +99,7 @@ struct PokedexView u16 unk618; u16 seenCount; u16 ownCount; - u16 unk61E[4]; + u16 monSpriteIds[4]; u16 selectedMonSpriteId; u16 unk628; u16 unk62A; @@ -154,18 +154,18 @@ void sub_80BC3DC(u8); void sub_80BC47C(u8); bool8 sub_80BC514(u8); static void LoadPokedexBgPalette(u8); -void sub_80BC890(void); -void sub_80BC8D4(u8, u8); +static void FreeWindowAndBgBuffers(void); +static void CreatePokedexList(u8 dexMode, u8 sortMode); static void CreateMonDexNum(u16, u8, u8, u16); static void CreateCaughtBall(u16, u8, u8, u16); static u8 CreateMonName(u16, u8, u8); -void sub_80BD28C(u8, u8, u16); +static void ClearMonListEntry(u8 x, u8 y, u16 unused); static void CreateInitialPokemonSprites(u16, u16); bool8 sub_80BD404(u8, u8, u8); u16 sub_80BD69C(u16, u16); -void sub_80BD8D0(void); +static void UpdateSelectedMonSpriteId(void); static bool8 UpdateSelectedMon(void); -u8 sub_80BDA40(void); +static u8 ClearMonSprites(void); u16 GetPokemonSpriteToDisplay(u16); u32 sub_80BDACC(u16, s16, s16); static void CreateInterfaceSprites(u8); @@ -229,7 +229,7 @@ void sub_80C2064(u8, u8); void sub_80C20F8(u8); void sub_80C21D4(u8); void sub_80C2294(u8); -u8 sub_80C2318(u8, u8); +static u8 GetSearchModeSelection(u8 taskId, u8 option); void sub_80C23B8(u8); void sub_80C2594(u8); void sub_80C2618(const u8*); @@ -1136,9 +1136,34 @@ static const struct PokedexOption gDexSearchTypeOptions[] = {NULL, NULL}, }; -static const u8 gUnknown_0856EFAC[] = {0x00, 0x01}; -static const u8 gUnknown_0856EFAE[] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05}; -static const u8 gDexSearchTypeIds[] = { + +#define SEARCH_NAME 0 +#define SEARCH_COLOR 1 +#define SEARCH_TYPE_1 2 +#define SEARCH_TYPE_2 3 +#define SEARCH_ORDER 4 +#define SEARCH_DEX_MODE 5 + +#define SORT_NUMERICAL 0 +#define SORT_ALPHABETICAL 1 +#define SORT_HEAVIEST 2 +#define SORT_LIGHTEST 3 +#define SORT_TALLEST 4 +#define SORT_SMALLEST 5 + +static const u8 sPokedexModes[] = {DEX_MODE_HOENN, DEX_MODE_NATIONAL}; +static const u8 sSortOptions[] = +{ + SORT_NUMERICAL, + SORT_ALPHABETICAL, + SORT_HEAVIEST, + SORT_LIGHTEST, + SORT_TALLEST, + SORT_SMALLEST, +}; + +static const u8 gDexSearchTypeIds[] = +{ TYPE_NONE, TYPE_NORMAL, TYPE_FIGHTING, @@ -1159,7 +1184,7 @@ static const u8 gDexSearchTypeIds[] = { TYPE_DARK, }; -static const struct UnknownStruct1 gUnknown_0856EFC8[] = +static const struct UnknownStruct1 sSearchOptions[] = { {gDexSearchAlphaOptions, 6, 7, 10}, {gDexSearchColorOptions, 8, 9, 11}, @@ -1285,7 +1310,7 @@ static void ResetPokedexView(struct PokedexView *pokedexView) pokedexView->seenCount = 0; pokedexView->ownCount = 0; for (i = 0; i < 4; i++) - pokedexView->unk61E[i] = 0xFFFF; + pokedexView->monSpriteIds[i] = 0xFFFF; pokedexView->unk628 = 0; pokedexView->unk62A = 0; pokedexView->unk62C = 0; @@ -1367,7 +1392,7 @@ void CB2_Pokedex(void) EnableInterrupts(1); SetVBlankCallback(sub_80BB370); SetMainCallback2(sub_80BB774); - sub_80BC8D4(sPokedexView->dexMode, sPokedexView->dexOrder); + CreatePokedexList(sPokedexView->dexMode, sPokedexView->dexOrder); m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 0x80); break; } @@ -1400,12 +1425,12 @@ void sub_80BB7D4(u8 taskId) { if ((gMain.newKeys & A_BUTTON) && sPokedexView->pokedexList[sPokedexView->selectedPokemon].seen) { - sub_80BD8D0(); + UpdateSelectedMonSpriteId(); BeginNormalPaletteFade(~(1 << (gSprites[sPokedexView->selectedMonSpriteId].oam.paletteNum + 16)), 0, 0, 0x10, RGB_BLACK); gSprites[sPokedexView->selectedMonSpriteId].callback = MoveMonIntoPosition; gTasks[taskId].func = LoadPageOnceMonFinishedMoving; PlaySE(SE_PIN); - sub_80BC890(); + FreeWindowAndBgBuffers(); } else if (gMain.newKeys & START_BUTTON) { @@ -1428,7 +1453,7 @@ void sub_80BB7D4(u8 taskId) sPokedexView->unk618 = sPokedexView->dexOrder; gTasks[taskId].func = sub_80BBD1C; PlaySE(SE_PC_LOGIN); - sub_80BC890(); + FreeWindowAndBgBuffers(); } else if (gMain.newKeys & B_BUTTON) { @@ -1474,14 +1499,14 @@ void sub_80BBA78(u8 taskId) case 1: //LIST TOP sPokedexView->selectedPokemon = 0; sPokedexView->unk62C = 0x40; - sub_80BDA40(); + ClearMonSprites(); CreateInitialPokemonSprites(sPokedexView->selectedPokemon, 0xE); gMain.newKeys |= START_BUTTON; //Exit menu break; case 2: //LIST BOTTOM sPokedexView->selectedPokemon = sPokedexView->pokemonListCount - 1; sPokedexView->unk62C = sPokedexView->pokemonListCount * 16 + 0x30; - sub_80BDA40(); + ClearMonSprites(); CreateInitialPokemonSprites(sPokedexView->selectedPokemon, 0xE); gMain.newKeys |= START_BUTTON; //Exit menu break; @@ -1542,7 +1567,7 @@ void sub_80BBD1C(u8 taskId) { if (!gTasks[gTasks[taskId].data[0]].isActive) { - sub_80BDA40(); + ClearMonSprites(); if (sPokedexView->unk64E != 0) { sPokedexView->selectedPokemon = 0; @@ -1570,8 +1595,8 @@ void sub_80BBDE8(u8 taskId) if (!IsNationalPokedexEnabled()) gSaveBlock2Ptr->pokedex.mode = DEX_MODE_HOENN; gSaveBlock2Ptr->pokedex.order = sPokedexView->dexOrder; - sub_80BDA40(); - sub_80BC890(); + ClearMonSprites(); + FreeWindowAndBgBuffers(); DestroyTask(taskId); SetMainCallback2(CB2_ReturnToFieldWithOpenMenu); m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 0x100); @@ -1600,13 +1625,13 @@ void sub_80BBEB8(u8 taskId) { u32 a; - sub_80BD8D0(); + UpdateSelectedMonSpriteId(); a = (1 << (gSprites[sPokedexView->selectedMonSpriteId].oam.paletteNum + 16)); gSprites[sPokedexView->selectedMonSpriteId].callback = MoveMonIntoPosition; BeginNormalPaletteFade(~a, 0, 0, 0x10, RGB_BLACK); gTasks[taskId].func = sub_80BC2D4; PlaySE(SE_PIN); - sub_80BC890(); + FreeWindowAndBgBuffers(); } else if (gMain.newKeys & START_BUTTON) { @@ -1623,7 +1648,7 @@ void sub_80BBEB8(u8 taskId) sPokedexView->unk64E = 0; gTasks[taskId].func = sub_80BBD1C; PlaySE(SE_PC_LOGIN); - sub_80BC890(); + FreeWindowAndBgBuffers(); } else if (gMain.newKeys & B_BUTTON) { @@ -1668,14 +1693,14 @@ static void HandleButtonPress_StartMenu(u8 taskId) case 1: //LIST TOP sPokedexView->selectedPokemon = 0; sPokedexView->unk62C = 0x40; - sub_80BDA40(); + ClearMonSprites(); CreateInitialPokemonSprites(sPokedexView->selectedPokemon, 0xE); gMain.newKeys |= START_BUTTON; break; case 2: //LIST BOTTOM sPokedexView->selectedPokemon = sPokedexView->pokemonListCount - 1; sPokedexView->unk62C = sPokedexView->pokemonListCount * 16 + 0x30; - sub_80BDA40(); + ClearMonSprites(); CreateInitialPokemonSprites(sPokedexView->selectedPokemon, 0xE); gMain.newKeys |= START_BUTTON; break; @@ -1747,8 +1772,8 @@ void sub_80BC3DC(u8 taskId) sPokedexView->dexMode = DEX_MODE_HOENN; sPokedexView->dexOrder = sPokedexView->unk618; gTasks[taskId].func = sub_80BB78C; - sub_80BDA40(); - sub_80BC890(); + ClearMonSprites(); + FreeWindowAndBgBuffers(); } } @@ -1817,7 +1842,7 @@ bool8 sub_80BC514(u8 a) break; case 3: if (a == 0) - sub_80BC8D4(sPokedexView->dexMode, sPokedexView->dexOrder); + CreatePokedexList(sPokedexView->dexMode, sPokedexView->dexOrder); CreateInitialPokemonSprites(sPokedexView->selectedPokemon, 0xE); sPokedexView->menuIsOpen = 0; sPokedexView->menuY = 0; @@ -1871,7 +1896,7 @@ static void LoadPokedexBgPalette(u8 a) LoadPalette(GetOverworldTextboxPalettePtr(), 0xF0, 32); } -void sub_80BC890(void) +static void FreeWindowAndBgBuffers(void) { void* tilemapBuffer; @@ -1890,7 +1915,7 @@ void sub_80BC890(void) Free(tilemapBuffer); } -void sub_80BC8D4(u8 dexMode, u8 sortMode) +static void CreatePokedexList(u8 dexMode, u8 sortMode) { u16 vars[3]; //I have no idea why three regular variables are stored in an array, but whatever. #define temp_dexCount vars[0] @@ -1923,7 +1948,7 @@ void sub_80BC8D4(u8 dexMode, u8 sortMode) switch (sortMode) { - case 0: + case SORT_NUMERICAL: if (temp_isHoennDex) { for (i = 0; i < temp_dexCount; i++) @@ -1960,7 +1985,7 @@ void sub_80BC8D4(u8 dexMode, u8 sortMode) } } break; - case 1: + case SORT_ALPHABETICAL: for (i = 0; i < POKEMON_SLOTS_NUMBER - 1; i++) { temp_dexNum = gPokedexOrder_Alphabetical[i]; @@ -1974,7 +1999,7 @@ void sub_80BC8D4(u8 dexMode, u8 sortMode) } } break; - case 2: + case SORT_HEAVIEST: for (i = NATIONAL_DEX_COUNT - 1; i >= 0; i--) { temp_dexNum = gPokedexOrder_Weight[i]; @@ -1988,7 +2013,7 @@ void sub_80BC8D4(u8 dexMode, u8 sortMode) } } break; - case 3: + case SORT_LIGHTEST: for (i = 0; i < NATIONAL_DEX_COUNT; i++) { temp_dexNum = gPokedexOrder_Weight[i]; @@ -2002,7 +2027,7 @@ void sub_80BC8D4(u8 dexMode, u8 sortMode) } } break; - case 4: + case SORT_TALLEST: for (i = NATIONAL_DEX_COUNT - 1; i >= 0; i--) { temp_dexNum = gPokedexOrder_Height[i]; @@ -2016,7 +2041,7 @@ void sub_80BC8D4(u8 dexMode, u8 sortMode) } } break; - case 5: + case SORT_SMALLEST: for (i = 0; i < NATIONAL_DEX_COUNT; i++) { temp_dexNum = gPokedexOrder_Height[i]; @@ -2065,11 +2090,11 @@ static void CreateMonListEntry(u8 direction, u16 b, u16 c) { if (_b < 0 || _b >= NATIONAL_DEX_COUNT || sPokedexView->pokedexList[_b].dexNum == 0xFFFF) { - sub_80BD28C(0x11, i * 2, c); + ClearMonListEntry(0x11, i * 2, c); } else { - sub_80BD28C(0x11, i * 2, c); + ClearMonListEntry(0x11, i * 2, c); if (sPokedexView->pokedexList[_b].seen) { CreateMonDexNum(_b, 0x12, i * 2, c); @@ -2090,11 +2115,11 @@ static void CreateMonListEntry(u8 direction, u16 b, u16 c) _b = b - 5; if (_b < 0 || _b >= NATIONAL_DEX_COUNT || sPokedexView->pokedexList[_b].dexNum == 0xFFFF) { - sub_80BD28C(0x11, sPokedexView->unk630 * 2, c); + ClearMonListEntry(0x11, sPokedexView->unk630 * 2, c); } else { - sub_80BD28C(0x11, sPokedexView->unk630 * 2, c); + ClearMonListEntry(0x11, sPokedexView->unk630 * 2, c); if (sPokedexView->pokedexList[_b].seen) { CreateMonDexNum(_b, 0x12, sPokedexView->unk630 * 2, c); @@ -2115,10 +2140,10 @@ static void CreateMonListEntry(u8 direction, u16 b, u16 c) if (r2 > 15) r2 -= 16; if (_b < 0 || _b >= NATIONAL_DEX_COUNT || sPokedexView->pokedexList[_b].dexNum == 0xFFFF) - sub_80BD28C(0x11, r2 * 2, c); + ClearMonListEntry(0x11, r2 * 2, c); else { - sub_80BD28C(0x11, r2 * 2, c); + ClearMonListEntry(0x11, r2 * 2, c); if (sPokedexView->pokedexList[_b].seen) { CreateMonDexNum(_b, 0x12, r2 * 2, c); @@ -2173,7 +2198,7 @@ static u8 CreateMonName(u16 num, u8 left, u8 top) return StringLength(str); } -void sub_80BD28C(u8 x, u8 y, u16 unused) +static void ClearMonListEntry(u8 x, u8 y, u16 unused) { FillWindowPixelRect(0, PIXEL_FILL(0), x * 8, y * 8, 0x60, 16); } @@ -2187,7 +2212,7 @@ static void CreateInitialPokemonSprites(u16 selectedMon, u16 b) gPaletteFade.bufferTransferDisabled = TRUE; for (i = 0; i < 4; i++) - sPokedexView->unk61E[i] = 0xFFFF; + sPokedexView->monSpriteIds[i] = 0xFFFF; sPokedexView->selectedMonSpriteId = 0xFFFF; unk = GetPokemonSpriteToDisplay(selectedMon - 1); @@ -2236,8 +2261,8 @@ bool8 sub_80BD404(u8 a, u8 b, u8 c) case 1: for (i = 0; i < 4; i++) { - if (sPokedexView->unk61E[i] != 0xFFFF) - gSprites[sPokedexView->unk61E[i]].data[5] += b; + if (sPokedexView->monSpriteIds[i] != 0xFFFF) + gSprites[sPokedexView->monSpriteIds[i]].data[5] += b; } foo = 16 * (c - sPokedexView->unk62E) / c; SetGpuReg(REG_OFFSET_BG2VOFS, sPokedexView->initialVOffset + sPokedexView->unk632 * 16 - foo); @@ -2246,8 +2271,8 @@ bool8 sub_80BD404(u8 a, u8 b, u8 c) case 2: for (i = 0; i < 4; i++) { - if (sPokedexView->unk61E[i] != 0xFFFF) - gSprites[sPokedexView->unk61E[i]].data[5] -= b; + if (sPokedexView->monSpriteIds[i] != 0xFFFF) + gSprites[sPokedexView->monSpriteIds[i]].data[5] -= b; } foo = 16 * (c - sPokedexView->unk62E) / c; SetGpuReg(REG_OFFSET_BG2VOFS, sPokedexView->initialVOffset + sPokedexView->unk632 * 16 + foo); @@ -2331,7 +2356,7 @@ u16 sub_80BD69C(u16 selectedMon, u16 b) for (i = 0; i < 7; i++) selectedMon = sub_80C0E0C(1, selectedMon, 0, sPokedexView->pokemonListCount - 1); sPokedexView->unk62C += 16 * (selectedMon - r6); - sub_80BDA40(); + ClearMonSprites(); CreateInitialPokemonSprites(selectedMon, 0xE); PlaySE(SE_Z_PAGE); } @@ -2341,7 +2366,7 @@ u16 sub_80BD69C(u16 selectedMon, u16 b) for (i = 0; i < 7; i++) selectedMon = sub_80C0E0C(0, selectedMon, 0, sPokedexView->pokemonListCount - 1); sPokedexView->unk62C += (selectedMon - r6) * 16; - sub_80BDA40(); + ClearMonSprites(); CreateInitialPokemonSprites(selectedMon, 0xE); PlaySE(SE_Z_PAGE); } @@ -2365,13 +2390,13 @@ u16 sub_80BD69C(u16 selectedMon, u16 b) return selectedMon; } -void sub_80BD8D0(void) +static void UpdateSelectedMonSpriteId(void) { u16 i; for (i = 0; i < 4; i++) { - u16 spriteId = sPokedexView->unk61E[i]; + u16 spriteId = sPokedexView->monSpriteIds[i]; if (gSprites[spriteId].pos2.x == 0 && gSprites[spriteId].pos2.y == 0 && spriteId != 0xFFFF) sPokedexView->selectedMonSpriteId = spriteId; @@ -2432,16 +2457,16 @@ static bool8 UpdateSelectedMon(void) return FALSE; } -u8 sub_80BDA40(void) +static u8 ClearMonSprites(void) { u16 i; for (i = 0; i < 4; i++) { - if (sPokedexView->unk61E[i] != 0xFFFF) + if (sPokedexView->monSpriteIds[i] != 0xFFFF) { - FreeAndDestroyMonPicSprite(sPokedexView->unk61E[i]); - sPokedexView->unk61E[i] = 0xFFFF; + FreeAndDestroyMonPicSprite(sPokedexView->monSpriteIds[i]); + sPokedexView->monSpriteIds[i] = 0xFFFF; } } return FALSE; @@ -2463,7 +2488,7 @@ u32 sub_80BDACC(u16 num, s16 x, s16 y) for (i = 0; i < 4; i++) { - if (sPokedexView->unk61E[i] == 0xFFFF) + if (sPokedexView->monSpriteIds[i] == 0xFFFF) { u8 spriteId = CreateMonSpriteFromNationalDexNumber(num, x, y, i); @@ -2472,7 +2497,7 @@ u32 sub_80BDACC(u16 num, s16 x, s16 y) gSprites[spriteId].data[0] = 0; gSprites[spriteId].data[1] = i; gSprites[spriteId].data[2] = NationalPokedexNumToSpecies(num); - sPokedexView->unk61E[i] = spriteId; + sPokedexView->monSpriteIds[i] = spriteId; return spriteId; } } @@ -2725,8 +2750,8 @@ void sub_80BE4E0(struct Sprite *sprite) if (sPokedexView->unk64A != 0 && sPokedexView->unk64A != 3) { - FreeAndDestroyMonPicSprite(sPokedexView->unk61E[data1]); - sPokedexView->unk61E[data1] = 0xFFFF; + FreeAndDestroyMonPicSprite(sPokedexView->monSpriteIds[data1]); + sPokedexView->monSpriteIds[data1] = 0xFFFF; } else { @@ -2751,8 +2776,8 @@ void sub_80BE4E0(struct Sprite *sprite) if ((sprite->data[5] <= -64 || sprite->data[5] >= 64) && sprite->data[0] != 0) { - FreeAndDestroyMonPicSprite(sPokedexView->unk61E[data1]); - sPokedexView->unk61E[data1] = 0xFFFF; + FreeAndDestroyMonPicSprite(sPokedexView->monSpriteIds[data1]); + sPokedexView->monSpriteIds[data1] = 0xFFFF; } } } @@ -3022,7 +3047,7 @@ void LoadInfoScreen(u8 taskId) } } -static void FreeWindowAndBgBuffers(void) +static void FreeWindowAndBgBuffers_(void) { void *r0; FreeAllWindowBuffers(); @@ -3148,7 +3173,7 @@ void BeginReturnToPokedex(u8 taskId) if (!gPaletteFade.active) { FreeAndDestroyMonPicSprite(gTasks[taskId].tMonSpriteId); - FreeWindowAndBgBuffers(); + FreeWindowAndBgBuffers_(); DestroyTask(taskId); } } @@ -4664,7 +4689,7 @@ int sub_80C0F30(u8 dexMode, u8 sortMode, u8 abcGroup, u8 bodyColor, u8 type1, u8 u16 resultsCount; u8 types[2]; - sub_80BC8D4(dexMode, sortMode); + CreatePokedexList(dexMode, sortMode); for (i = 0, resultsCount = 0; i < NATIONAL_DEX_COUNT; i++) { @@ -4983,11 +5008,11 @@ void sub_80C170C(u8 taskId) sPokedexView->unk62A = 0x40; gUnknown_02039B50 = 0; sPokedexView->unk610 = 0; - gSaveBlock2Ptr->pokedex.mode = sub_80C2318(taskId, 5); + gSaveBlock2Ptr->pokedex.mode = GetSearchModeSelection(taskId, SEARCH_DEX_MODE); if (!IsNationalPokedexEnabled()) gSaveBlock2Ptr->pokedex.mode = DEX_MODE_HOENN; sPokedexView->unk614 = gSaveBlock2Ptr->pokedex.mode; - gSaveBlock2Ptr->pokedex.order = sub_80C2318(taskId, 4); + gSaveBlock2Ptr->pokedex.order = GetSearchModeSelection(taskId, SEARCH_ORDER); sPokedexView->unk618 = gSaveBlock2Ptr->pokedex.order; PlaySE(SE_PC_OFF); gTasks[taskId].func = sub_80C1D38; @@ -5044,14 +5069,14 @@ void sub_80C170C(u8 taskId) void sub_80C19A4(u8 taskId) { - u8 r10 = sub_80C2318(taskId, 5); - u8 r9 = sub_80C2318(taskId, 4); - u8 r8 = sub_80C2318(taskId, 0); - u8 r6 = sub_80C2318(taskId, 1); - u8 r4 = sub_80C2318(taskId, 2); - u8 r0 = sub_80C2318(taskId, 3); + u8 dexMode = GetSearchModeSelection(taskId, SEARCH_DEX_MODE); + u8 sortMode = GetSearchModeSelection(taskId, SEARCH_ORDER); + u8 abcGroup = GetSearchModeSelection(taskId, SEARCH_NAME); + u8 bodyColor = GetSearchModeSelection(taskId, SEARCH_COLOR); + u8 type1 = GetSearchModeSelection(taskId, SEARCH_TYPE_1); + u8 type2 = GetSearchModeSelection(taskId, SEARCH_TYPE_2); - sub_80C0F30(r10, r9, r8, r6, r4, r0); + sub_80C0F30(dexMode, sortMode, abcGroup, bodyColor, type1, type2); gTasks[taskId].func = sub_80C1A4C; } @@ -5081,8 +5106,8 @@ void sub_80C1AB8(u8 taskId) if (sPokedexView->pokemonListCount != 0) { sPokedexView->unk64E = 1; - sPokedexView->dexMode = sub_80C2318(taskId, 5); - sPokedexView->dexOrder = sub_80C2318(taskId, 4); + sPokedexView->dexMode = GetSearchModeSelection(taskId, SEARCH_DEX_MODE); + sPokedexView->dexOrder = GetSearchModeSelection(taskId, SEARCH_ORDER); gTasks[taskId].func = sub_80C1D38; PlaySE(SE_PC_OFF); } @@ -5102,8 +5127,8 @@ void sub_80C1B64(u8 taskId) sub_80C21D4(0); r0 = gTasks[taskId].data[1]; - p1 = &gTasks[taskId].data[gUnknown_0856EFC8[r0].unk4]; - p2 = &gTasks[taskId].data[gUnknown_0856EFC8[r0].unk5]; + p1 = &gTasks[taskId].data[sSearchOptions[r0].unk4]; + p2 = &gTasks[taskId].data[sSearchOptions[r0].unk5]; gTasks[taskId].data[14] = *p1; gTasks[taskId].data[15] = *p2; sub_80C2294(taskId); @@ -5123,10 +5148,10 @@ void sub_80C1BCC(u8 taskId) bool8 r3; r1 = gTasks[taskId].data[1]; - r8 = gUnknown_0856EFC8[r1].pokedexList; - p1 = &gTasks[taskId].data[gUnknown_0856EFC8[r1].unk4]; - p2 = &gTasks[taskId].data[gUnknown_0856EFC8[r1].unk5]; - r2 = gUnknown_0856EFC8[r1].unk6 - 1; + r8 = sSearchOptions[r1].pokedexList; + p1 = &gTasks[taskId].data[sSearchOptions[r1].unk4]; + p2 = &gTasks[taskId].data[sSearchOptions[r1].unk5]; + r2 = sSearchOptions[r1].numOptions - 1; if (gMain.newKeys & A_BUTTON) { PlaySE(SE_PIN); @@ -5474,9 +5499,9 @@ void sub_80C21D4(u8 a) void sub_80C2294(u8 taskId) { - const struct PokedexOption *r6 = gUnknown_0856EFC8[gTasks[taskId].data[1]].pokedexList; - const u16 *r8 = &gTasks[taskId].data[gUnknown_0856EFC8[gTasks[taskId].data[1]].unk4]; - const u16 *r7 = &gTasks[taskId].data[gUnknown_0856EFC8[gTasks[taskId].data[1]].unk5]; + const struct PokedexOption *r6 = sSearchOptions[gTasks[taskId].data[1]].pokedexList; + const u16 *r8 = &gTasks[taskId].data[sSearchOptions[gTasks[taskId].data[1]].unk4]; + const u16 *r7 = &gTasks[taskId].data[sSearchOptions[gTasks[taskId].data[1]].unk5]; u16 i; u16 j; @@ -5486,32 +5511,32 @@ void sub_80C2294(u8 taskId) sub_80C2618(r6[*r8 + *r7].description); } -u8 sub_80C2318(u8 taskId, u8 b) +static u8 GetSearchModeSelection(u8 taskId, u8 option) { - const u16 *ptr1 = &gTasks[taskId].data[gUnknown_0856EFC8[b].unk4]; - const u16 *ptr2 = &gTasks[taskId].data[gUnknown_0856EFC8[b].unk5]; + const u16 *ptr1 = &gTasks[taskId].data[sSearchOptions[option].unk4]; + const u16 *ptr2 = &gTasks[taskId].data[sSearchOptions[option].unk5]; u16 type = *ptr1 + *ptr2; - switch (b) + switch (option) { default: return 0; - case 5: - return gUnknown_0856EFAC[type]; - case 4: - return gUnknown_0856EFAE[type]; - case 0: + case SEARCH_DEX_MODE: + return sPokedexModes[type]; + case SEARCH_ORDER: + return sSortOptions[type]; + case SEARCH_NAME: if (type == 0) return 0xFF; else return type; - case 1: + case SEARCH_COLOR: if (type == 0) return 0xFF; else return type - 1; - case 2: - case 3: + case SEARCH_TYPE_1: + case SEARCH_TYPE_2: return gDexSearchTypeIds[type]; } } @@ -5560,8 +5585,8 @@ void sub_80C23B8(u8 taskId) bool8 sub_80C244C(u8 taskId) { u8 val1 = gTasks[taskId].data[1]; - const u16 *ptr = &gTasks[taskId].data[gUnknown_0856EFC8[val1].unk5]; - u16 val2 = gUnknown_0856EFC8[val1].unk6 - 1; + const u16 *ptr = &gTasks[taskId].data[sSearchOptions[val1].unk5]; + u16 val2 = sSearchOptions[val1].numOptions - 1; if (val2 > 5 && *ptr != 0) return FALSE; @@ -5572,8 +5597,8 @@ bool8 sub_80C244C(u8 taskId) bool8 sub_80C2494(u8 taskId) { u8 val1 = gTasks[taskId].data[1]; - const u16 *ptr = &gTasks[taskId].data[gUnknown_0856EFC8[val1].unk5]; - u16 val2 = gUnknown_0856EFC8[val1].unk6 - 1; + const u16 *ptr = &gTasks[taskId].data[sSearchOptions[val1].unk5]; + u16 val2 = sSearchOptions[val1].numOptions - 1; if (val2 > 5 && *ptr < val2 - 5) return FALSE; From fb5bea98ce28044917451d83695991693fb0b64a Mon Sep 17 00:00:00 2001 From: GriffinR Date: Sun, 5 Jan 2020 10:50:32 -0500 Subject: [PATCH 16/37] More battle_dome.c doc --- asm/macros/battle_frontier/battle_dome.inc | 20 +- .../scripts.inc | 4 +- .../BattleFrontier_BattleDomeLobby/map.json | 2 +- .../scripts.inc | 38 +- data/text/battle_dome.inc | 112 +- .../{options_pal1.pal => tourney.pal} | 0 .../{options_pal2.pal => tourney_buttons.pal} | 0 .../{options.png => tourney_buttons.png} | Bin .../{misc1.png => tourney_info_card.png} | Bin ...wn_D84F00.bin => tourney_info_card_bg.bin} | Bin ...4970.bin => tourney_info_card_tilemap.bin} | Bin ...n_D83B2C.bin => tourney_line_down_map.bin} | Bin ...n_D83900.bin => tourney_line_mask_map.bin} | Bin ...own_D83C3C.bin => tourney_line_up_map.bin} | Bin ...ons_pal3.pal => tourney_match_card_bg.pal} | 0 include/battle_tower.h | 14 +- include/constants/battle_dome.h | 105 +- include/constants/battle_frontier_mons.h | 2 + include/constants/pokemon.h | 3 +- include/graphics.h | 29 +- include/pokemon_icon.h | 2 +- include/strings.h | 114 +- src/battle_dome.c | 4170 ++++++++--------- src/battle_factory.c | 5 +- src/battle_tent.c | 16 +- src/battle_tower.c | 160 +- .../battle_frontier_trainer_mons.h | 118 +- .../battle_frontier_trainers.h | 600 +-- src/data/battle_frontier/battle_tent.h | 180 +- src/graphics.c | 32 +- src/mail.c | 2 +- src/mevent_801BAAC.c | 4 +- src/pokemon.c | 5 +- src/pokemon_icon.c | 2 +- 34 files changed, 2852 insertions(+), 2887 deletions(-) rename graphics/battle_frontier/{options_pal1.pal => tourney.pal} (100%) rename graphics/battle_frontier/{options_pal2.pal => tourney_buttons.pal} (100%) rename graphics/battle_frontier/{options.png => tourney_buttons.png} (100%) rename graphics/battle_frontier/{misc1.png => tourney_info_card.png} (100%) rename graphics/battle_frontier/{unknown_D84F00.bin => tourney_info_card_bg.bin} (100%) rename graphics/battle_frontier/{unknown_D84970.bin => tourney_info_card_tilemap.bin} (100%) rename graphics/battle_frontier/{unknown_D83B2C.bin => tourney_line_down_map.bin} (100%) rename graphics/battle_frontier/{unknown_D83900.bin => tourney_line_mask_map.bin} (100%) rename graphics/battle_frontier/{unknown_D83C3C.bin => tourney_line_up_map.bin} (100%) rename graphics/battle_frontier/{options_pal3.pal => tourney_match_card_bg.pal} (100%) diff --git a/asm/macros/battle_frontier/battle_dome.inc b/asm/macros/battle_frontier/battle_dome.inc index 07d6534eb3..9adbcc54e7 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 3804f0a43d..9603935ec9 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 f39fee696e..3559d6e1db 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 5428c1e8fa..d15b2ebee6 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 80cf4980fd..8a26ff5ffc 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 similarity index 100% rename from graphics/battle_frontier/options_pal1.pal rename to graphics/battle_frontier/tourney.pal diff --git a/graphics/battle_frontier/options_pal2.pal b/graphics/battle_frontier/tourney_buttons.pal similarity index 100% rename from graphics/battle_frontier/options_pal2.pal rename to graphics/battle_frontier/tourney_buttons.pal diff --git a/graphics/battle_frontier/options.png b/graphics/battle_frontier/tourney_buttons.png similarity index 100% rename from graphics/battle_frontier/options.png rename to graphics/battle_frontier/tourney_buttons.png diff --git a/graphics/battle_frontier/misc1.png b/graphics/battle_frontier/tourney_info_card.png similarity index 100% rename from graphics/battle_frontier/misc1.png rename to 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 similarity index 100% rename from graphics/battle_frontier/unknown_D84F00.bin rename to 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 similarity index 100% rename from graphics/battle_frontier/unknown_D84970.bin rename to 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 similarity index 100% rename from graphics/battle_frontier/unknown_D83B2C.bin rename to 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 similarity index 100% rename from graphics/battle_frontier/unknown_D83900.bin rename to 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 similarity index 100% rename from graphics/battle_frontier/unknown_D83C3C.bin rename to 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 similarity index 100% rename from graphics/battle_frontier/options_pal3.pal rename to graphics/battle_frontier/tourney_match_card_bg.pal diff --git a/include/battle_tower.h b/include/battle_tower.h index fe4cd938ad..0cc4d70257 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 46310c6ce7..ea7310e559 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 +#define DOME_DATA_PREV_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 +// ID for Exit/Cancel on the tourney tree +#define TOURNEY_TREE_CLOSE_BUTTON 31 -#define DOME_STATTEXT_GOOD_DOUBLE_STAT 0 -#define DOME_STATTEXT_GOOD_SINGLE_STAT 15 -#define DOME_STATTEXT_WELL_BALANCED 42 +// 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 -// 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 +// 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 64367272df..10e68980a6 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 181a840232..97e3f06863 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 146803cfa3..a8d4453b0d 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 9d56aebcb0..dbd7f2895f 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 f3d9aed985..c56940bbe1 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 b220e9c190..25b2d995d1 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] = +// 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_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}, + [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]= +// 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]= { - {{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}}, + [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}; +// 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 }; -static const u8 gUnknown_0860D15C[][4] = +// 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] = { - {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}, + { 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 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}; -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}; +// 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}; -static const u8 gUnknown_0860D3C4[DOME_TOURNAMENT_MATCHES_COUNT][3] = +// 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] = { - { 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}, + { 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] = +// 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] = { - {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}, + { 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] = +// 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] = { - {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}, + { 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[] = -{ - {.src = 0x6021, .y = 0x04, .x = 0x09}, - {.src = 0x6023, .y = 0x04, .x = 0x0a}, - {.src = 0x6047, .y = 0x05, .x = 0x0a}, - {.src = 0x6043, .y = 0x05, .x = 0x0b}, -}; +// 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}, -static const struct UnkStruct_860DD10 gUnknown_0860d460[] = -{ - {.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}, -}; +#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}, -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}, +#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}, -}; -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 UnkStruct_860DD10 gUnknown_0860d4dc[] = -{ - {.src = 0x6021, .y = 0x06, .x = 0x09}, - {.src = 0x6021, .y = 0x06, .x = 0x0a}, - {.src = 0x6027, .y = 0x05, .x = 0x0a}, - {.src = 0x6043, .y = 0x05, .x = 0x0b}, -}; - -static const struct UnkStruct_860DD10 gUnknown_0860d4ec[] = -{ - {.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}, -}; - -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 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 UnkStruct_860DD10 gUnknown_0860d568[] = -{ - {.src = 0x6021, .y = 0x08, .x = 0x09}, - {.src = 0x6023, .y = 0x08, .x = 0x0a}, - {.src = 0x6047, .y = 0x09, .x = 0x0a}, - {.src = 0x6021, .y = 0x09, .x = 0x0b}, -}; - -static const struct UnkStruct_860DD10 gUnknown_0860d578[] = -{ - {.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}, -}; - -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 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 UnkStruct_860DD10 gUnknown_0860d5f4[] = -{ - {.src = 0x6021, .y = 0x0a, .x = 0x09}, - {.src = 0x6021, .y = 0x0a, .x = 0x0a}, - {.src = 0x6027, .y = 0x09, .x = 0x0a}, - {.src = 0x6021, .y = 0x09, .x = 0x0b}, -}; - -static const struct UnkStruct_860DD10 gUnknown_0860d604[] = -{ - {.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}, -}; - -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 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 UnkStruct_860DD10 gUnknown_0860d680[] = -{ - {.src = 0x6021, .y = 0x0c, .x = 0x09}, - {.src = 0x6023, .y = 0x0c, .x = 0x0a}, - {.src = 0x6047, .y = 0x0d, .x = 0x0a}, - {.src = 0x6043, .y = 0x0d, .x = 0x0b}, -}; - -static const struct UnkStruct_860DD10 gUnknown_0860d690[] = -{ - {.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}, -}; - -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}, +#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}, -}; -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}, +#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}, -}; -static const struct UnkStruct_860DD10 gUnknown_0860d70c[] = -{ - {.src = 0x6021, .y = 0x0e, .x = 0x09}, - {.src = 0x6021, .y = 0x0e, .x = 0x0a}, - {.src = 0x6027, .y = 0x0d, .x = 0x0a}, - {.src = 0x6043, .y = 0x0d, .x = 0x0b}, -}; - -static const struct UnkStruct_860DD10 gUnknown_0860d71c[] = -{ - {.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}, -}; - -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 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 UnkStruct_860DD10 gUnknown_0860d798[] = -{ - {.src = 0x6021, .y = 0x10, .x = 0x09}, - {.src = 0x6023, .y = 0x10, .x = 0x0a}, - {.src = 0x6047, .y = 0x11, .x = 0x0a}, - {.src = 0x6021, .y = 0x11, .x = 0x0b}, -}; - -static const struct UnkStruct_860DD10 gUnknown_0860d7a8[] = -{ - {.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}, -}; - -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 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 UnkStruct_860DD10 gUnknown_0860d824[] = -{ - {.src = 0x602b, .y = 0x12, .x = 0x09}, - {.src = 0x602b, .y = 0x12, .x = 0x0a}, - {.src = 0x6027, .y = 0x11, .x = 0x0a}, - {.src = 0x6021, .y = 0x11, .x = 0x0b}, -}; - -static const struct UnkStruct_860DD10 gUnknown_0860d834[] = -{ - {.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}, -}; - -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 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 UnkStruct_860DD10 gUnknown_0860d8b0[] = -{ - {.src = 0x6021, .y = 0x04, .x = 0x14}, - {.src = 0x6025, .y = 0x04, .x = 0x13}, - {.src = 0x6049, .y = 0x05, .x = 0x13}, - {.src = 0x6045, .y = 0x05, .x = 0x12}, -}; - -static const struct UnkStruct_860DD10 gUnknown_0860d8c0[] = -{ - {.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}, -}; - -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 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}, +#define LINESECTION_FINAL_RIGHT \ + {.src = 0x602f, .y = 0x0b, .x = 0x10}, \ {.src = 0x602e, .y = 0x0b, .x = 0x0f}, + + +static const struct TourneyTreeLineSection sLineSectionTrainer1Round1[] = +{ + LINESECTION_ROUND1_TRAINER1(0x6043) }; -static const struct UnkStruct_860DD10 gUnknown_0860d93c[] = +static const struct TourneyTreeLineSection sLineSectionTrainer1Round2[] = { - {.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_TRAINER1(0x6023) + LINESECTION_ROUND2_MATCH1(0x6043) }; -static const struct UnkStruct_860DD10 gUnknown_0860d94c[] = +static const struct TourneyTreeLineSection sLineSectionTrainer1Semifinal[] = { - {.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_TRAINER1(0x6023) + LINESECTION_ROUND2_MATCH1(0x6023) + LINESECTION_SEMIFINAL_TOP_LEFT }; -static const struct UnkStruct_860DD10 gUnknown_0860d968[] = +static const struct TourneyTreeLineSection sLineSectionTrainer1Final[] = { - {.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}, + LINESECTION_ROUND1_TRAINER1(0x6023) + LINESECTION_ROUND2_MATCH1(0x6023) + LINESECTION_SEMIFINAL_TOP_LEFT + LINESECTION_FINAL_LEFT }; -static const struct UnkStruct_860DD10 gUnknown_0860d994[] = +static const struct TourneyTreeLineSection sLineSectionTrainer9Round1[] = { - {.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}, + LINESECTION_ROUND1_TRAINER9(0x6043) }; -static const struct UnkStruct_860DD10 gUnknown_0860d9c8[] = +static const struct TourneyTreeLineSection sLineSectionTrainer9Round2[] = { - {.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_TRAINER9(0x6023) + LINESECTION_ROUND2_MATCH1(0x6043) }; -static const struct UnkStruct_860DD10 gUnknown_0860d9d8[] = +static const struct TourneyTreeLineSection sLineSectionTrainer9Semifinal[] = { - {.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_TRAINER9(0x6023) + LINESECTION_ROUND2_MATCH1(0x6023) + LINESECTION_SEMIFINAL_TOP_LEFT }; -static const struct UnkStruct_860DD10 gUnknown_0860d9f4[] = +static const struct TourneyTreeLineSection sLineSectionTrainer9Final[] = { - {.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}, + LINESECTION_ROUND1_TRAINER9(0x6023) + LINESECTION_ROUND2_MATCH1(0x6023) + LINESECTION_SEMIFINAL_TOP_LEFT + LINESECTION_FINAL_LEFT }; -static const struct UnkStruct_860DD10 gUnknown_0860da20[] = +static const struct TourneyTreeLineSection sLineSectionTrainer13Round1[] = { - {.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}, + LINESECTION_ROUND1_TRAINER13(0x6021) }; -static const struct UnkStruct_860DD10 gUnknown_0860da54[] = +static const struct TourneyTreeLineSection sLineSectionTrainer13Round2[] = { - {.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_TRAINER13(0x6021) + LINESECTION_ROUND2_MATCH2(0x6043) }; -static const struct UnkStruct_860DD10 gUnknown_0860da64[] = +static const struct TourneyTreeLineSection sLineSectionTrainer13Semifinal[] = { - {.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_TRAINER13(0x6021) + LINESECTION_ROUND2_MATCH2(0x6023) + LINESECTION_SEMIFINAL_TOP_LEFT }; -static const struct UnkStruct_860DD10 gUnknown_0860da80[] = +static const struct TourneyTreeLineSection sLineSectionTrainer13Final[] = { - {.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}, + LINESECTION_ROUND1_TRAINER13(0x6021) + LINESECTION_ROUND2_MATCH2(0x6023) + LINESECTION_SEMIFINAL_TOP_LEFT + LINESECTION_FINAL_LEFT }; -static const struct UnkStruct_860DD10 gUnknown_0860daac[] = +static const struct TourneyTreeLineSection sLineSectionTrainer5Round1[] = { - {.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}, + LINESECTION_ROUND1_TRAINER5(0x6021) }; -static const struct UnkStruct_860DD10 gUnknown_0860dae0[] = +static const struct TourneyTreeLineSection sLineSectionTrainer5Round2[] = { - {.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_TRAINER5(0x6021) + LINESECTION_ROUND2_MATCH2(0x6043) }; -static const struct UnkStruct_860DD10 gUnknown_0860daf0[] = +static const struct TourneyTreeLineSection sLineSectionTrainer5Semifinal[] = { - {.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_TRAINER5(0x6021) + LINESECTION_ROUND2_MATCH2(0x6023) + LINESECTION_SEMIFINAL_TOP_LEFT }; -static const struct UnkStruct_860DD10 gUnknown_0860db0c[] = +static const struct TourneyTreeLineSection sLineSectionTrainer5Final[] = { - {.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}, + LINESECTION_ROUND1_TRAINER5(0x6021) + LINESECTION_ROUND2_MATCH2(0x6023) + LINESECTION_SEMIFINAL_TOP_LEFT + LINESECTION_FINAL_LEFT }; -static const struct UnkStruct_860DD10 gUnknown_0860db38[] = +static const struct TourneyTreeLineSection sLineSectionTrainer8Round1[] = { - {.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}, + LINESECTION_ROUND1_TRAINER8(0x6043) }; -static const struct UnkStruct_860DD10 gUnknown_0860db6c[] = +static const struct TourneyTreeLineSection sLineSectionTrainer8Round2[] = { - {.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_TRAINER8(0x6023) + LINESECTION_ROUND2_MATCH3(0x6021) }; -static const struct UnkStruct_860DD10 gUnknown_0860db7c[] = +static const struct TourneyTreeLineSection sLineSectionTrainer8Semifinal[] = { - {.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_TRAINER8(0x6023) + LINESECTION_ROUND2_MATCH3(0x6021) + LINESECTION_SEMIFINAL_BOTTOM_LEFT }; -static const struct UnkStruct_860DD10 gUnknown_0860db98[] = +static const struct TourneyTreeLineSection sLineSectionTrainer8Final[] = { - {.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}, + LINESECTION_ROUND1_TRAINER8(0x6023) + LINESECTION_ROUND2_MATCH3(0x6021) + LINESECTION_SEMIFINAL_BOTTOM_LEFT + LINESECTION_FINAL_LEFT }; -static const struct UnkStruct_860DD10 gUnknown_0860dbc4[] = +static const struct TourneyTreeLineSection sLineSectionTrainer16Round1[] = { - {.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}, + LINESECTION_ROUND1_TRAINER16(0x6043) }; -static const struct UnkStruct_860DD10 gUnknown_0860dbf8[] = +static const struct TourneyTreeLineSection sLineSectionTrainer16Round2[] = { - {.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_TRAINER16(0x6023) + LINESECTION_ROUND2_MATCH3(0x6021) }; -static const struct UnkStruct_860DD10 gUnknown_0860dc08[] = +static const struct TourneyTreeLineSection sLineSectionTrainer16Semifinal[] = { - {.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_TRAINER16(0x6023) + LINESECTION_ROUND2_MATCH3(0x6021) + LINESECTION_SEMIFINAL_BOTTOM_LEFT }; -static const struct UnkStruct_860DD10 gUnknown_0860dc24[] = +static const struct TourneyTreeLineSection sLineSectionTrainer16Final[] = { - {.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}, + LINESECTION_ROUND1_TRAINER16(0x6023) + LINESECTION_ROUND2_MATCH3(0x6021) + LINESECTION_SEMIFINAL_BOTTOM_LEFT + LINESECTION_FINAL_LEFT }; -static const struct UnkStruct_860DD10 gUnknown_0860dc50[] = +static const struct TourneyTreeLineSection sLineSectionTrainer12Round1[] = { - {.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}, + LINESECTION_ROUND1_TRAINER12(0x6021) }; -static const struct UnkStruct_860DD10 gUnknown_0860dc84[] = +static const struct TourneyTreeLineSection sLineSectionTrainer12Round2[] = { - {.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_TRAINER12(0x6021) + LINESECTION_ROUND2_MATCH4(0x6021) }; -static const struct UnkStruct_860DD10 gUnknown_0860dc94[] = +static const struct TourneyTreeLineSection sLineSectionTrainer12Semifinal[] = { - {.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_TRAINER12(0x6021) + LINESECTION_ROUND2_MATCH4(0x6021) + LINESECTION_SEMIFINAL_BOTTOM_LEFT }; -static const struct UnkStruct_860DD10 gUnknown_0860dcb0[] = +static const struct TourneyTreeLineSection sLineSectionTrainer12Final[] = { - {.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}, + LINESECTION_ROUND1_TRAINER12(0x6021) + LINESECTION_ROUND2_MATCH4(0x6021) + LINESECTION_SEMIFINAL_BOTTOM_LEFT + LINESECTION_FINAL_LEFT }; -static const struct UnkStruct_860DD10 gUnknown_0860dcdc[] = +static const struct TourneyTreeLineSection sLineSectionTrainer4Round1[] = { - {.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}, + LINESECTION_ROUND1_TRAINER4(0x6021) }; -static const struct UnkStruct_860DD10 * const gUnknown_0860DD10[DOME_TOURNAMENT_TRAINERS_COUNT][DOME_ROUNDS_COUNT] = +static const struct TourneyTreeLineSection sLineSectionTrainer4Round2[] = { - {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}, + LINESECTION_ROUND1_TRAINER4(0x6021) + LINESECTION_ROUND2_MATCH4(0x6021) }; -static const u8 gUnknown_0860DE10[DOME_TOURNAMENT_TRAINERS_COUNT][DOME_ROUNDS_COUNT] = +static const struct TourneyTreeLineSection sLineSectionTrainer4Semifinal[] = { - {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}, + LINESECTION_ROUND1_TRAINER4(0x6021) + LINESECTION_ROUND2_MATCH4(0x6021) + LINESECTION_SEMIFINAL_BOTTOM_LEFT +}; + +static const struct TourneyTreeLineSection sLineSectionTrainer4Final[] = +{ + LINESECTION_ROUND1_TRAINER4(0x6021) + LINESECTION_ROUND2_MATCH4(0x6021) + LINESECTION_SEMIFINAL_BOTTOM_LEFT + LINESECTION_FINAL_LEFT +}; + +static const struct TourneyTreeLineSection sLineSectionTrainer3Round1[] = +{ + LINESECTION_ROUND1_TRAINER3(0x6045) +}; + +static const struct TourneyTreeLineSection sLineSectionTrainer3Round2[] = +{ + LINESECTION_ROUND1_TRAINER3(0x6025) + LINESECTION_ROUND2_MATCH5(0x6045) +}; + +static const struct TourneyTreeLineSection sLineSectionTrainer3Semifinal[] = +{ + LINESECTION_ROUND1_TRAINER3(0x6025) + LINESECTION_ROUND2_MATCH5(0x6025) + LINESECTION_SEMIFINAL_TOP_RIGHT +}; + +static const struct TourneyTreeLineSection sLineSectionTrainer3Final[] = +{ + LINESECTION_ROUND1_TRAINER3(0x6025) + LINESECTION_ROUND2_MATCH5(0x6025) + LINESECTION_SEMIFINAL_TOP_RIGHT + LINESECTION_FINAL_RIGHT +}; + +static const struct TourneyTreeLineSection sLineSectionTrainer11Round1[] = +{ + LINESECTION_ROUND1_TRAINER11(0x6045) +}; + +static const struct TourneyTreeLineSection sLineSectionTrainer11Round2[] = +{ + LINESECTION_ROUND1_TRAINER11(0x6025) + LINESECTION_ROUND2_MATCH5(0x6045) +}; + +static const struct TourneyTreeLineSection sLineSectionTrainer11Semifinal[] = +{ + LINESECTION_ROUND1_TRAINER11(0x6025) + LINESECTION_ROUND2_MATCH5(0x6025) + LINESECTION_SEMIFINAL_TOP_RIGHT +}; + +static const struct TourneyTreeLineSection sLineSectionTrainer11Final[] = +{ + LINESECTION_ROUND1_TRAINER11(0x6025) + LINESECTION_ROUND2_MATCH5(0x6025) + LINESECTION_SEMIFINAL_TOP_RIGHT + LINESECTION_FINAL_RIGHT +}; + +static const struct TourneyTreeLineSection sLineSectionTrainer15Round1[] = +{ + LINESECTION_ROUND1_TRAINER15(0x6021) +}; + +static const struct TourneyTreeLineSection sLineSectionTrainer15Round2[] = +{ + LINESECTION_ROUND1_TRAINER15(0x6021) + LINESECTION_ROUND2_MATCH6(0x6045) +}; + +static const struct TourneyTreeLineSection sLineSectionTrainer15Semifinal[] = +{ + LINESECTION_ROUND1_TRAINER15(0x6021) + LINESECTION_ROUND2_MATCH6(0x6025) + LINESECTION_SEMIFINAL_TOP_RIGHT +}; + +static const struct TourneyTreeLineSection sLineSectionTrainer15Final[] = +{ + LINESECTION_ROUND1_TRAINER15(0x6021) + LINESECTION_ROUND2_MATCH6(0x6025) + LINESECTION_SEMIFINAL_TOP_RIGHT + LINESECTION_FINAL_RIGHT +}; + +static const struct TourneyTreeLineSection sLineSectionTrainer7Round1[] = +{ + LINESECTION_ROUND1_TRAINER7(0x6021) +}; + +static const struct TourneyTreeLineSection sLineSectionTrainer7Round2[] = +{ + LINESECTION_ROUND1_TRAINER7(0x6021) + LINESECTION_ROUND2_MATCH6(0x6045) +}; + +static const struct TourneyTreeLineSection sLineSectionTrainer7Semifinal[] = +{ + LINESECTION_ROUND1_TRAINER7(0x6021) + LINESECTION_ROUND2_MATCH6(0x6025) + LINESECTION_SEMIFINAL_TOP_RIGHT +}; + +static const struct TourneyTreeLineSection sLineSectionTrainer7Final[] = +{ + LINESECTION_ROUND1_TRAINER7(0x6021) + LINESECTION_ROUND2_MATCH6(0x6025) + LINESECTION_SEMIFINAL_TOP_RIGHT + LINESECTION_FINAL_RIGHT +}; + +static const struct TourneyTreeLineSection sLineSectionTrainer6Round1[] = +{ + LINESECTION_ROUND1_TRAINER6(0x6045) +}; + +static const struct TourneyTreeLineSection sLineSectionTrainer6Round2[] = +{ + LINESECTION_ROUND1_TRAINER6(0x6025) + LINESECTION_ROUND2_MATCH7(0x6021) +}; + +static const struct TourneyTreeLineSection sLineSectionTrainer6Semifinal[] = +{ + LINESECTION_ROUND1_TRAINER6(0x6025) + LINESECTION_ROUND2_MATCH7(0x6021) + LINESECTION_SEMIFINAL_BOTTOM_RIGHT +}; + +static const struct TourneyTreeLineSection sLineSectionTrainer6Final[] = +{ + LINESECTION_ROUND1_TRAINER6(0x6025) + LINESECTION_ROUND2_MATCH7(0x6021) + LINESECTION_SEMIFINAL_BOTTOM_RIGHT + LINESECTION_FINAL_RIGHT +}; + +static const struct TourneyTreeLineSection sLineSectionTrainer14Round1[] = +{ + LINESECTION_ROUND1_TRAINER14(0x6045) +}; + +static const struct TourneyTreeLineSection sLineSectionTrainer14Round2[] = +{ + LINESECTION_ROUND1_TRAINER14(0x6025) + LINESECTION_ROUND2_MATCH7(0x6021) +}; + +static const struct TourneyTreeLineSection sLineSectionTrainer14Semifinal[] = +{ + LINESECTION_ROUND1_TRAINER14(0x6025) + LINESECTION_ROUND2_MATCH7(0x6021) + LINESECTION_SEMIFINAL_BOTTOM_RIGHT +}; + +static const struct TourneyTreeLineSection sLineSectionTrainer14Final[] = +{ + LINESECTION_ROUND1_TRAINER14(0x6025) + LINESECTION_ROUND2_MATCH7(0x6021) + LINESECTION_SEMIFINAL_BOTTOM_RIGHT + LINESECTION_FINAL_RIGHT +}; + +static const struct TourneyTreeLineSection sLineSectionTrainer10Round1[] = +{ + LINESECTION_ROUND1_TRAINER10(0x6021) +}; + +static const struct TourneyTreeLineSection sLineSectionTrainer10Round2[] = +{ + LINESECTION_ROUND1_TRAINER10(0x6021) + LINESECTION_ROUND2_MATCH8(0x6021) +}; + +static const struct TourneyTreeLineSection sLineSectionTrainer10Semifinal[] = +{ + LINESECTION_ROUND1_TRAINER10(0x6021) + LINESECTION_ROUND2_MATCH8(0x6021) + LINESECTION_SEMIFINAL_BOTTOM_RIGHT +}; + +static const struct TourneyTreeLineSection sLineSectionTrainer10Final[] = +{ + LINESECTION_ROUND1_TRAINER10(0x6021) + LINESECTION_ROUND2_MATCH8(0x6021) + LINESECTION_SEMIFINAL_BOTTOM_RIGHT + LINESECTION_FINAL_RIGHT +}; + +static const struct TourneyTreeLineSection sLineSectionTrainer2Round1[] = +{ + LINESECTION_ROUND1_TRAINER2(0x6021) +}; + +static const struct TourneyTreeLineSection sLineSectionTrainer2Round2[] = +{ + LINESECTION_ROUND1_TRAINER2(0x6021) + LINESECTION_ROUND2_MATCH8(0x6021) +}; + +static const struct TourneyTreeLineSection sLineSectionTrainer2Semifinal[] = +{ + LINESECTION_ROUND1_TRAINER2(0x6021) + LINESECTION_ROUND2_MATCH8(0x6021) + LINESECTION_SEMIFINAL_BOTTOM_RIGHT +}; + +static const struct TourneyTreeLineSection sLineSectionTrainer2Final[] = +{ + LINESECTION_ROUND1_TRAINER2(0x6021) + LINESECTION_ROUND2_MATCH8(0x6021) + LINESECTION_SEMIFINAL_BOTTOM_RIGHT + LINESECTION_FINAL_RIGHT +}; + +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 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; + // Scroll up arrow + id = CreateSprite(&sVerticalScrollArrowSpriteTemplate, 120, 4, 0); + StartSpriteAnim(&gSprites[id], 0); + gSprites[id].data[0] = i; - r7 = CreateSprite(&gUnknown_0860D068, 120, 156, 0); - StartSpriteAnim(&gSprites[r7], 1); - gSprites[r7].data[0] = i; + // Scroll down arrow + id = CreateSprite(&sVerticalScrollArrowSpriteTemplate, 120, 156, 0); + StartSpriteAnim(&gSprites[id], 1); + gSprites[id].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; + // 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; - r7 = CreateSprite(&gUnknown_0860D050, 234, 80, 0); - StartSpriteAnim(&gSprites[r7], 1); - gSprites[r7].data[0] = i; - gSprites[r7].data[1] = 1; + // 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; + 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].data[0] = 4; - sBattleDomeStruct->unk_10 = 0; + 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 9216e24169..569d665e15 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 eebca1d07b..7cde528abd 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 4f6c1d1638..879e5f3e34 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 19ed09788f..183964f2d9 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 081090aacb..bbd88d76f0 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 946ca01875..a6d59c8b7c 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 30e5a81214..eeeba56c99 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 be2b1dc95a..f6f96b0124 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 bc32cda30a..8596b43cdd 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 82da96f7db..94002dc7b2 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 2c11ca2931..7d8c65d7cb 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); } From 017fa294b5c88ddd7513cb4976b5c29cad0b94a5 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Wed, 8 Jan 2020 01:07:53 -0500 Subject: [PATCH 17/37] Add battle tent mon/trainer constants --- include/constants/battle_tent_mons.h | 173 ++ include/constants/battle_tent_trainers.h | 99 ++ src/battle_dome.c | 1 - src/battle_tent.c | 6 +- src/battle_tower.c | 2 + src/data/battle_frontier/battle_tent.h | 1890 +++++++++++----------- 6 files changed, 1223 insertions(+), 948 deletions(-) create mode 100644 include/constants/battle_tent_mons.h create mode 100644 include/constants/battle_tent_trainers.h diff --git a/include/constants/battle_tent_mons.h b/include/constants/battle_tent_mons.h new file mode 100644 index 0000000000..d9fc89a20b --- /dev/null +++ b/include/constants/battle_tent_mons.h @@ -0,0 +1,173 @@ +#ifndef GUARD_CONSTANTS_BATTLE_TENT_MONS_H +#define GUARD_CONSTANTS_BATTLE_TENT_MONS_H + +#define SLATEPORT_TENT_MON_ZIGZAGOON_1 0 +#define SLATEPORT_TENT_MON_ZIGZAGOON_2 1 +#define SLATEPORT_TENT_MON_BEAUTIFLY 2 +#define SLATEPORT_TENT_MON_DUSTOX 3 +#define SLATEPORT_TENT_MON_WAILMER_1 4 +#define SLATEPORT_TENT_MON_WAILMER_2 5 +#define SLATEPORT_TENT_MON_MARILL_1 6 +#define SLATEPORT_TENT_MON_WINGULL_1 7 +#define SLATEPORT_TENT_MON_PELIPPER_1 8 +#define SLATEPORT_TENT_MON_CACNEA_1 9 +#define SLATEPORT_TENT_MON_LOMBRE_1 10 +#define SLATEPORT_TENT_MON_LOTAD 11 +#define SLATEPORT_TENT_MON_SEEDOT 12 +#define SLATEPORT_TENT_MON_NUZLEAF 13 +#define SLATEPORT_TENT_MON_NINJASK_1 14 +#define SLATEPORT_TENT_MON_NINJASK_2 15 +#define SLATEPORT_TENT_MON_GRAVELER 16 +#define SLATEPORT_TENT_MON_BALTOY 17 +#define SLATEPORT_TENT_MON_MIGHTYENA_1 18 +#define SLATEPORT_TENT_MON_MIGHTYENA_2 19 +#define SLATEPORT_TENT_MON_LINOONE 20 +#define SLATEPORT_TENT_MON_GOLDEEN 21 +#define SLATEPORT_TENT_MON_ELECTRIKE_1 22 +#define SLATEPORT_TENT_MON_VOLTORB 23 +#define SLATEPORT_TENT_MON_ARON_1 24 +#define SLATEPORT_TENT_MON_ARON_2 25 +#define SLATEPORT_TENT_MON_TRAPINCH_1 26 +#define SLATEPORT_TENT_MON_CACNEA_2 27 +#define SLATEPORT_TENT_MON_TAILLOW 28 +#define SLATEPORT_TENT_MON_SWELLOW 29 +#define SLATEPORT_TENT_MON_GOLBAT_1 30 +#define SLATEPORT_TENT_MON_LOUDRED 31 +#define SLATEPORT_TENT_MON_SPINDA 32 +#define SLATEPORT_TENT_MON_MAGNEMITE 33 +#define SLATEPORT_TENT_MON_WHISMUR 34 +#define SLATEPORT_TENT_MON_MAKUHITA 35 +#define SLATEPORT_TENT_MON_NUMEL_1 36 +#define SLATEPORT_TENT_MON_BARBOACH 37 +#define SLATEPORT_TENT_MON_TENTACOOL 38 +#define SLATEPORT_TENT_MON_VIGOROTH 39 +#define SLATEPORT_TENT_MON_MAGIKARP 40 +#define SLATEPORT_TENT_MON_SEVIPER_1 41 +#define SLATEPORT_TENT_MON_SOLROCK 42 +#define SLATEPORT_TENT_MON_KECLEON_1 43 +#define SLATEPORT_TENT_MON_KECLEON_2 44 +#define SLATEPORT_TENT_MON_SHROOMISH_1 45 +#define SLATEPORT_TENT_MON_SHROOMISH_2 46 +#define SLATEPORT_TENT_MON_LOMBRE_2 47 +#define SLATEPORT_TENT_MON_NUMEL_2 48 +#define SLATEPORT_TENT_MON_TRAPINCH_2 49 +#define SLATEPORT_TENT_MON_PELIPPER_2 50 +#define SLATEPORT_TENT_MON_WINGULL_2 51 +#define SLATEPORT_TENT_MON_MARILL_2 52 +#define SLATEPORT_TENT_MON_SKITTY 53 +#define SLATEPORT_TENT_MON_SEVIPER_2 54 +#define SLATEPORT_TENT_MON_GOLBAT_2 55 +#define SLATEPORT_TENT_MON_RALTS 56 +#define SLATEPORT_TENT_MON_SANDSHREW 57 +#define SLATEPORT_TENT_MON_SWALOT 58 +#define SLATEPORT_TENT_MON_VOLBEAT 59 +#define SLATEPORT_TENT_MON_ILLUMISE 60 +#define SLATEPORT_TENT_MON_KADABRA 61 +#define SLATEPORT_TENT_MON_KIRLIA 62 +#define SLATEPORT_TENT_MON_BRELOOM 63 +#define SLATEPORT_TENT_MON_PLUSLE_1 64 +#define SLATEPORT_TENT_MON_PLUSLE_2 65 +#define SLATEPORT_TENT_MON_ELECTRIKE_2 66 +#define SLATEPORT_TENT_MON_SWABLU 67 +#define SLATEPORT_TENT_MON_MACHOP 68 +#define SLATEPORT_TENT_MON_MACHOKE 69 + +#define NUM_SLATEPORT_TENT_MONS 70 + +#define VERDANTURF_TENT_MON_POOCHYENA 0 +#define VERDANTURF_TENT_MON_ZIGZAGOON 1 +#define VERDANTURF_TENT_MON_DUSTOX 2 +#define VERDANTURF_TENT_MON_TAILLOW 3 +#define VERDANTURF_TENT_MON_SHROOMISH 4 +#define VERDANTURF_TENT_MON_MACHOP 5 +#define VERDANTURF_TENT_MON_MAGIKARP 6 +#define VERDANTURF_TENT_MON_BARBOACH 7 +#define VERDANTURF_TENT_MON_WINGULL 8 +#define VERDANTURF_TENT_MON_ARON_1 9 +#define VERDANTURF_TENT_MON_NUMEL_1 10 +#define VERDANTURF_TENT_MON_SWALOT 11 +#define VERDANTURF_TENT_MON_KECLEON 12 +#define VERDANTURF_TENT_MON_BALTOY 13 +#define VERDANTURF_TENT_MON_NINJASK 14 +#define VERDANTURF_TENT_MON_MAKUHITA 15 +#define VERDANTURF_TENT_MON_SWABLU 16 +#define VERDANTURF_TENT_MON_GOLDEEN_1 17 +#define VERDANTURF_TENT_MON_LOTAD 18 +#define VERDANTURF_TENT_MON_NUMEL_2 19 +#define VERDANTURF_TENT_MON_LINOONE 20 +#define VERDANTURF_TENT_MON_SEVIPER 21 +#define VERDANTURF_TENT_MON_SKARMORY 22 +#define VERDANTURF_TENT_MON_SWELLOW 23 +#define VERDANTURF_TENT_MON_GOLDEEN_2 24 +#define VERDANTURF_TENT_MON_ELECTRIKE 25 +#define VERDANTURF_TENT_MON_NUZLEAF 26 +#define VERDANTURF_TENT_MON_ARON_2 27 +#define VERDANTURF_TENT_MON_MIGHTYENA 28 +#define VERDANTURF_TENT_MON_SOLROCK 29 +#define VERDANTURF_TENT_MON_GRAVELER 30 +#define VERDANTURF_TENT_MON_KADABRA 31 +#define VERDANTURF_TENT_MON_VOLTORB 32 +#define VERDANTURF_TENT_MON_MAGNEMITE 33 +#define VERDANTURF_TENT_MON_PELIPPER 34 +#define VERDANTURF_TENT_MON_LOUDRED 35 +#define VERDANTURF_TENT_MON_MARILL 36 +#define VERDANTURF_TENT_MON_TRAPINCH 37 +#define VERDANTURF_TENT_MON_TENTACOOL 38 +#define VERDANTURF_TENT_MON_VIGOROTH 39 +#define VERDANTURF_TENT_MON_WAILMER 40 +#define VERDANTURF_TENT_MON_ILLUMISE 41 +#define VERDANTURF_TENT_MON_MACHOKE 42 +#define VERDANTURF_TENT_MON_WHISMUR 43 +#define VERDANTURF_TENT_MON_CACNEA 44 + +#define NUM_VERDANTURF_TENT_MONS 45 + +#define FALLARBOR_TENT_MON_NUMEL 0 +#define FALLARBOR_TENT_MON_LINOONE_1 1 +#define FALLARBOR_TENT_MON_PLUSLE 2 +#define FALLARBOR_TENT_MON_POOCHYENA 3 +#define FALLARBOR_TENT_MON_KECLEON 4 +#define FALLARBOR_TENT_MON_MAGIKARP 5 +#define FALLARBOR_TENT_MON_SOLROCK 6 +#define FALLARBOR_TENT_MON_MAKUHITA 7 +#define FALLARBOR_TENT_MON_MACHOKE 8 +#define FALLARBOR_TENT_MON_NINCADA 9 +#define FALLARBOR_TENT_MON_BEAUTIFLY 10 +#define FALLARBOR_TENT_MON_DUSTOX 11 +#define FALLARBOR_TENT_MON_ILLUMISE 12 +#define FALLARBOR_TENT_MON_VOLBEAT 13 +#define FALLARBOR_TENT_MON_NINJASK_1 14 +#define FALLARBOR_TENT_MON_NINJASK_2 15 +#define FALLARBOR_TENT_MON_ARON_1 16 +#define FALLARBOR_TENT_MON_ARON_2 17 +#define FALLARBOR_TENT_MON_ELECTRIKE 18 +#define FALLARBOR_TENT_MON_MAGNEMITE 19 +#define FALLARBOR_TENT_MON_VOLTORB 20 +#define FALLARBOR_TENT_MON_WHISMUR 21 +#define FALLARBOR_TENT_MON_LOUDRED 22 +#define FALLARBOR_TENT_MON_LINOONE_2 23 +#define FALLARBOR_TENT_MON_MIGHTYENA 24 +#define FALLARBOR_TENT_MON_SWABLU 25 +#define FALLARBOR_TENT_MON_SKARMORY 26 +#define FALLARBOR_TENT_MON_GOLBAT 27 +#define FALLARBOR_TENT_MON_WINGULL 28 +#define FALLARBOR_TENT_MON_PELIPPER 29 +#define FALLARBOR_TENT_MON_BARBOACH 30 +#define FALLARBOR_TENT_MON_WAILMER 31 +#define FALLARBOR_TENT_MON_MARILL 32 +#define FALLARBOR_TENT_MON_GOLDEEN_1 33 +#define FALLARBOR_TENT_MON_GOLDEEN_2 34 +#define FALLARBOR_TENT_MON_TRAPINCH 35 +#define FALLARBOR_TENT_MON_BALTOY 36 +#define FALLARBOR_TENT_MON_GRAVELER 37 +#define FALLARBOR_TENT_MON_SANDSHREW 38 +#define FALLARBOR_TENT_MON_SWALOT 39 +#define FALLARBOR_TENT_MON_SHROOMISH 40 +#define FALLARBOR_TENT_MON_KIRLIA 41 +#define FALLARBOR_TENT_MON_LOMBRE 42 +#define FALLARBOR_TENT_MON_NUZLEAF 43 +#define FALLARBOR_TENT_MON_CACNEA 44 + +#define NUM_FALLARBOR_TENT_MONS 45 + +#endif // GUARD_CONSTANTS_BATTLE_TENT_MONS_H diff --git a/include/constants/battle_tent_trainers.h b/include/constants/battle_tent_trainers.h new file mode 100644 index 0000000000..3629da0ca9 --- /dev/null +++ b/include/constants/battle_tent_trainers.h @@ -0,0 +1,99 @@ +#ifndef GUARD_CONSTANTS_BATTLE_TENT_TRAINERS_H +#define GUARD_CONSTANTS_BATTLE_TENT_TRAINERS_H + +#define SLATEPORT_TENT_TRAINER_JOLIE 0 +#define SLATEPORT_TENT_TRAINER_MALACHI 1 +#define SLATEPORT_TENT_TRAINER_KELSIE 2 +#define SLATEPORT_TENT_TRAINER_DAVON 3 +#define SLATEPORT_TENT_TRAINER_GLENDA 4 +#define SLATEPORT_TENT_TRAINER_HELENA 5 +#define SLATEPORT_TENT_TRAINER_RODOLFO 6 +#define SLATEPORT_TENT_TRAINER_DAVION 7 +#define SLATEPORT_TENT_TRAINER_KENDALL 8 +#define SLATEPORT_TENT_TRAINER_COLTEN 9 +#define SLATEPORT_TENT_TRAINER_IRVIN 10 +#define SLATEPORT_TENT_TRAINER_SHAUN 11 +#define SLATEPORT_TENT_TRAINER_KYLER 12 +#define SLATEPORT_TENT_TRAINER_MAGGIE 13 +#define SLATEPORT_TENT_TRAINER_STEPHON 14 +#define SLATEPORT_TENT_TRAINER_REBECCA 15 +#define SLATEPORT_TENT_TRAINER_REGGIE 16 +#define SLATEPORT_TENT_TRAINER_JANAE 17 +#define SLATEPORT_TENT_TRAINER_CAIDEN 18 +#define SLATEPORT_TENT_TRAINER_KIRSTEN 19 +#define SLATEPORT_TENT_TRAINER_KURTIS 20 +#define SLATEPORT_TENT_TRAINER_STEFAN 21 +#define SLATEPORT_TENT_TRAINER_AVERY 22 +#define SLATEPORT_TENT_TRAINER_DWANE 23 +#define SLATEPORT_TENT_TRAINER_MCKENNA 24 +#define SLATEPORT_TENT_TRAINER_CAMRYN 25 +#define SLATEPORT_TENT_TRAINER_NATASHA 26 +#define SLATEPORT_TENT_TRAINER_AUSTYN 27 +#define SLATEPORT_TENT_TRAINER_DONOVAN 28 +#define SLATEPORT_TENT_TRAINER_TAMIA 29 + +#define VERDANTURF_TENT_TRAINER_BRENNA 0 +#define VERDANTURF_TENT_TRAINER_DILAN 1 +#define VERDANTURF_TENT_TRAINER_ELIANA 2 +#define VERDANTURF_TENT_TRAINER_MARKUS 3 +#define VERDANTURF_TENT_TRAINER_CAITLYN 4 +#define VERDANTURF_TENT_TRAINER_DESIREE 5 +#define VERDANTURF_TENT_TRAINER_RONALD 6 +#define VERDANTURF_TENT_TRAINER_ASHTEN 7 +#define VERDANTURF_TENT_TRAINER_GERARD 8 +#define VERDANTURF_TENT_TRAINER_BRADLY 9 +#define VERDANTURF_TENT_TRAINER_DENNIS 10 +#define VERDANTURF_TENT_TRAINER_PRESTIN 11 +#define VERDANTURF_TENT_TRAINER_ERNESTO 12 +#define VERDANTURF_TENT_TRAINER_NALA 13 +#define VERDANTURF_TENT_TRAINER_DARNELL 14 +#define VERDANTURF_TENT_TRAINER_ASHLYN 15 +#define VERDANTURF_TENT_TRAINER_ADDISON 16 +#define VERDANTURF_TENT_TRAINER_JUSTINE 17 +#define VERDANTURF_TENT_TRAINER_TYSON 18 +#define VERDANTURF_TENT_TRAINER_LAILA 19 +#define VERDANTURF_TENT_TRAINER_WAREN 20 +#define VERDANTURF_TENT_TRAINER_TOBIAS 21 +#define VERDANTURF_TENT_TRAINER_JOSIAH 22 +#define VERDANTURF_TENT_TRAINER_DION 23 +#define VERDANTURF_TENT_TRAINER_KENZIE 24 +#define VERDANTURF_TENT_TRAINER_LILLIAN 25 +#define VERDANTURF_TENT_TRAINER_LESLEY 26 +#define VERDANTURF_TENT_TRAINER_MARQUIS 27 +#define VERDANTURF_TENT_TRAINER_FREDDY 28 +#define VERDANTURF_TENT_TRAINER_CECILIA 29 + +#define FALLARBOR_TENT_TRAINER_AMBER 0 +#define FALLARBOR_TENT_TRAINER_JAVIER 1 +#define FALLARBOR_TENT_TRAINER_NATALIA 2 +#define FALLARBOR_TENT_TRAINER_TREVE 3 +#define FALLARBOR_TENT_TRAINER_ARIANNA 4 +#define FALLARBOR_TENT_TRAINER_JADYN 5 +#define FALLARBOR_TENT_TRAINER_GERARDO 6 +#define FALLARBOR_TENT_TRAINER_JONN 7 +#define FALLARBOR_TENT_TRAINER_ESTEBAN 8 +#define FALLARBOR_TENT_TRAINER_JAMESON 9 +#define FALLARBOR_TENT_TRAINER_ALANZO 10 +#define FALLARBOR_TENT_TRAINER_HOWARD 11 +#define FALLARBOR_TENT_TRAINER_CONRAD 12 +#define FALLARBOR_TENT_TRAINER_MAKENNA 13 +#define FALLARBOR_TENT_TRAINER_BRAYAN 14 +#define FALLARBOR_TENT_TRAINER_MARIANA 15 +#define FALLARBOR_TENT_TRAINER_SHELDON 16 +#define FALLARBOR_TENT_TRAINER_GIANNA 17 +#define FALLARBOR_TENT_TRAINER_YAHIR 18 +#define FALLARBOR_TENT_TRAINER_BRITNEY 19 +#define FALLARBOR_TENT_TRAINER_HECTER 20 +#define FALLARBOR_TENT_TRAINER_TANNOR 21 +#define FALLARBOR_TENT_TRAINER_BENJI 22 +#define FALLARBOR_TENT_TRAINER_RORY 23 +#define FALLARBOR_TENT_TRAINER_ELEANOR 24 +#define FALLARBOR_TENT_TRAINER_EVELYN 25 +#define FALLARBOR_TENT_TRAINER_ARIELLE 26 +#define FALLARBOR_TENT_TRAINER_CONNAR 27 +#define FALLARBOR_TENT_TRAINER_MAURICE 28 +#define FALLARBOR_TENT_TRAINER_KIANNA 29 + +#define NUM_BATTLE_TENT_TRAINERS 30 + +#endif // GUARD_CONSTANTS_BATTLE_TENT_TRAINERS_H diff --git a/src/battle_dome.c b/src/battle_dome.c index 25b2d995d1..8e4d078fe1 100644 --- a/src/battle_dome.c +++ b/src/battle_dome.c @@ -6155,7 +6155,6 @@ int TrainerIdToDomeTournamentId(u16 trainerId) return i; } -// TODO: static u8 sub_81953E8(u8 tournamentId, u8 round) { u8 tournamentIds[2]; diff --git a/src/battle_tent.c b/src/battle_tent.c index 7cde528abd..b2db0e39cf 100644 --- a/src/battle_tent.c +++ b/src/battle_tent.c @@ -12,6 +12,8 @@ #include "frontier_util.h" #include "string_util.h" #include "constants/battle_tent.h" +#include "constants/battle_tent_trainers.h" +#include "constants/battle_tent_mons.h" #include "constants/items.h" #include "constants/layouts.h" #include "constants/region_map_sections.h" @@ -311,7 +313,7 @@ static void GenerateInitialRentalMons(void) while (i != PARTY_SIZE) { // Cannot have two pokemon of the same species. - monSetId = Random() % 70; + monSetId = Random() % NUM_SLATEPORT_TENT_MONS; for (j = firstMonId; j < firstMonId + i; j++) { u16 monId = monIds[j]; @@ -365,7 +367,7 @@ static void GenerateOpponentMons(void) { do { - trainerId = Random() % 30; + trainerId = Random() % NUM_BATTLE_TENT_TRAINERS; for (i = 0; i < gSaveBlock2Ptr->frontier.curChallengeBattleNum; i++) { if (gSaveBlock2Ptr->frontier.trainerIds[i] == trainerId) diff --git a/src/battle_tower.c b/src/battle_tower.c index 879e5f3e34..5efd444525 100644 --- a/src/battle_tower.c +++ b/src/battle_tower.c @@ -25,6 +25,8 @@ #include "battle_factory.h" #include "constants/battle_frontier.h" #include "constants/battle_frontier_mons.h" +#include "constants/battle_tent_mons.h" +#include "constants/battle_tent_trainers.h" #include "constants/battle_tower.h" #include "constants/frontier_util.h" #include "constants/items.h" diff --git a/src/data/battle_frontier/battle_tent.h b/src/data/battle_frontier/battle_tent.h index a6d59c8b7c..bf89c5bc38 100644 --- a/src/data/battle_frontier/battle_tent.h +++ b/src/data/battle_frontier/battle_tent.h @@ -1,515 +1,515 @@ // Slateport Battle Tent. const u16 gSlateportBattleTentTrainerMons_Jolie[] = { - 9, - 10, - 13, - 27, - 35, - 37, - 42, - 44, - 45, - 46, - 63, + SLATEPORT_TENT_MON_CACNEA_1, + SLATEPORT_TENT_MON_LOMBRE_1, + SLATEPORT_TENT_MON_NUZLEAF, + SLATEPORT_TENT_MON_CACNEA_2, + SLATEPORT_TENT_MON_MAKUHITA, + SLATEPORT_TENT_MON_BARBOACH, + SLATEPORT_TENT_MON_SOLROCK, + SLATEPORT_TENT_MON_KECLEON_2, + SLATEPORT_TENT_MON_SHROOMISH_1, + SLATEPORT_TENT_MON_SHROOMISH_2, + SLATEPORT_TENT_MON_BRELOOM, -1 }; const u16 gSlateportBattleTentTrainerMons_Malachi[] = { - 9, - 16, - 17, - 27, - 36, - 39, - 42, - 45, - 48, - 49, - 53, + SLATEPORT_TENT_MON_CACNEA_1, + SLATEPORT_TENT_MON_GRAVELER, + SLATEPORT_TENT_MON_BALTOY, + SLATEPORT_TENT_MON_CACNEA_2, + SLATEPORT_TENT_MON_NUMEL_1, + SLATEPORT_TENT_MON_VIGOROTH, + SLATEPORT_TENT_MON_SOLROCK, + SLATEPORT_TENT_MON_SHROOMISH_1, + SLATEPORT_TENT_MON_NUMEL_2, + SLATEPORT_TENT_MON_TRAPINCH_2, + SLATEPORT_TENT_MON_SKITTY, -1 }; const u16 gSlateportBattleTentTrainerMons_Kelsie[] = { - 4, - 5, - 6, - 11, - 28, - 34, - 35, - 37, - 43, - 51, - 53, + SLATEPORT_TENT_MON_WAILMER_1, + SLATEPORT_TENT_MON_WAILMER_2, + SLATEPORT_TENT_MON_MARILL_1, + SLATEPORT_TENT_MON_LOTAD, + SLATEPORT_TENT_MON_TAILLOW, + SLATEPORT_TENT_MON_WHISMUR, + SLATEPORT_TENT_MON_MAKUHITA, + SLATEPORT_TENT_MON_BARBOACH, + SLATEPORT_TENT_MON_KECLEON_1, + SLATEPORT_TENT_MON_WINGULL_2, + SLATEPORT_TENT_MON_SKITTY, -1 }; const u16 gSlateportBattleTentTrainerMons_Davon[] = { - 4, - 5, - 6, - 12, - 26, - 36, - 37, - 38, - 40, - 44, - 46, - 50, + SLATEPORT_TENT_MON_WAILMER_1, + SLATEPORT_TENT_MON_WAILMER_2, + SLATEPORT_TENT_MON_MARILL_1, + SLATEPORT_TENT_MON_SEEDOT, + SLATEPORT_TENT_MON_TRAPINCH_1, + SLATEPORT_TENT_MON_NUMEL_1, + SLATEPORT_TENT_MON_BARBOACH, + SLATEPORT_TENT_MON_TENTACOOL, + SLATEPORT_TENT_MON_MAGIKARP, + SLATEPORT_TENT_MON_KECLEON_2, + SLATEPORT_TENT_MON_SHROOMISH_2, + SLATEPORT_TENT_MON_PELIPPER_2, -1 }; const u16 gSlateportBattleTentTrainerMons_Glenda[] = { - 0, - 1, - 17, - 18, - 19, - 22, - 23, - 33, - 42, - 61, - 64, - 65, - 66, + SLATEPORT_TENT_MON_ZIGZAGOON_1, + SLATEPORT_TENT_MON_ZIGZAGOON_2, + SLATEPORT_TENT_MON_BALTOY, + SLATEPORT_TENT_MON_MIGHTYENA_1, + SLATEPORT_TENT_MON_MIGHTYENA_2, + SLATEPORT_TENT_MON_ELECTRIKE_1, + SLATEPORT_TENT_MON_VOLTORB, + SLATEPORT_TENT_MON_MAGNEMITE, + SLATEPORT_TENT_MON_SOLROCK, + SLATEPORT_TENT_MON_KADABRA, + SLATEPORT_TENT_MON_PLUSLE_1, + SLATEPORT_TENT_MON_PLUSLE_2, + SLATEPORT_TENT_MON_ELECTRIKE_2, -1 }; const u16 gSlateportBattleTentTrainerMons_Helena[] = { - 18, - 19, - 21, - 38, - 39, - 41, - 42, - 52, - 54, - 58, - 63, + SLATEPORT_TENT_MON_MIGHTYENA_1, + SLATEPORT_TENT_MON_MIGHTYENA_2, + SLATEPORT_TENT_MON_GOLDEEN, + SLATEPORT_TENT_MON_TENTACOOL, + SLATEPORT_TENT_MON_VIGOROTH, + SLATEPORT_TENT_MON_SEVIPER_1, + SLATEPORT_TENT_MON_SOLROCK, + SLATEPORT_TENT_MON_MARILL_2, + SLATEPORT_TENT_MON_SEVIPER_2, + SLATEPORT_TENT_MON_SWALOT, + SLATEPORT_TENT_MON_BRELOOM, -1 }; const u16 gSlateportBattleTentTrainerMons_Rodolfo[] = { - 0, - 1, - 4, - 5, - 7, - 8, - 18, - 20, - 21, - 37, - 38, - 40, - 62, + SLATEPORT_TENT_MON_ZIGZAGOON_1, + SLATEPORT_TENT_MON_ZIGZAGOON_2, + SLATEPORT_TENT_MON_WAILMER_1, + SLATEPORT_TENT_MON_WAILMER_2, + SLATEPORT_TENT_MON_WINGULL_1, + SLATEPORT_TENT_MON_PELIPPER_1, + SLATEPORT_TENT_MON_MIGHTYENA_1, + SLATEPORT_TENT_MON_LINOONE, + SLATEPORT_TENT_MON_GOLDEEN, + SLATEPORT_TENT_MON_BARBOACH, + SLATEPORT_TENT_MON_TENTACOOL, + SLATEPORT_TENT_MON_MAGIKARP, + SLATEPORT_TENT_MON_KIRLIA, -1 }; const u16 gSlateportBattleTentTrainerMons_Davion[] = { - 17, - 23, - 24, - 25, - 31, - 32, - 33, - 34, - 39, - 43, - 44, - 49, - 57, - 69, + SLATEPORT_TENT_MON_BALTOY, + SLATEPORT_TENT_MON_VOLTORB, + SLATEPORT_TENT_MON_ARON_1, + SLATEPORT_TENT_MON_ARON_2, + SLATEPORT_TENT_MON_LOUDRED, + SLATEPORT_TENT_MON_SPINDA, + SLATEPORT_TENT_MON_MAGNEMITE, + SLATEPORT_TENT_MON_WHISMUR, + SLATEPORT_TENT_MON_VIGOROTH, + SLATEPORT_TENT_MON_KECLEON_1, + SLATEPORT_TENT_MON_KECLEON_2, + SLATEPORT_TENT_MON_TRAPINCH_2, + SLATEPORT_TENT_MON_SANDSHREW, + SLATEPORT_TENT_MON_MACHOKE, -1 }; const u16 gSlateportBattleTentTrainerMons_Kendall[] = { - 4, - 7, - 8, - 9, - 11, - 12, - 13, - 27, - 38, - 40, - 45, - 46, - 47, - 63, + SLATEPORT_TENT_MON_WAILMER_1, + SLATEPORT_TENT_MON_WINGULL_1, + SLATEPORT_TENT_MON_PELIPPER_1, + SLATEPORT_TENT_MON_CACNEA_1, + SLATEPORT_TENT_MON_LOTAD, + SLATEPORT_TENT_MON_SEEDOT, + SLATEPORT_TENT_MON_NUZLEAF, + SLATEPORT_TENT_MON_CACNEA_2, + SLATEPORT_TENT_MON_TENTACOOL, + SLATEPORT_TENT_MON_MAGIKARP, + SLATEPORT_TENT_MON_SHROOMISH_1, + SLATEPORT_TENT_MON_SHROOMISH_2, + SLATEPORT_TENT_MON_LOMBRE_2, + SLATEPORT_TENT_MON_BRELOOM, -1 }; const u16 gSlateportBattleTentTrainerMons_Colten[] = { - 0, - 2, - 12, - 22, - 28, - 30, - 35, - 38, - 43, - 44, - 56, - 57, + SLATEPORT_TENT_MON_ZIGZAGOON_1, + SLATEPORT_TENT_MON_BEAUTIFLY, + SLATEPORT_TENT_MON_SEEDOT, + SLATEPORT_TENT_MON_ELECTRIKE_1, + SLATEPORT_TENT_MON_TAILLOW, + SLATEPORT_TENT_MON_GOLBAT_1, + SLATEPORT_TENT_MON_MAKUHITA, + SLATEPORT_TENT_MON_TENTACOOL, + SLATEPORT_TENT_MON_KECLEON_1, + SLATEPORT_TENT_MON_KECLEON_2, + SLATEPORT_TENT_MON_RALTS, + SLATEPORT_TENT_MON_SANDSHREW, -1 }; const u16 gSlateportBattleTentTrainerMons_Irvin[] = { - 0, - 1, - 2, - 3, - 14, - 15, - 24, - 25, - 32, - 34, - 39, - 59, - 60, + SLATEPORT_TENT_MON_ZIGZAGOON_1, + SLATEPORT_TENT_MON_ZIGZAGOON_2, + SLATEPORT_TENT_MON_BEAUTIFLY, + SLATEPORT_TENT_MON_DUSTOX, + SLATEPORT_TENT_MON_NINJASK_1, + SLATEPORT_TENT_MON_NINJASK_2, + SLATEPORT_TENT_MON_ARON_1, + SLATEPORT_TENT_MON_ARON_2, + SLATEPORT_TENT_MON_SPINDA, + SLATEPORT_TENT_MON_WHISMUR, + SLATEPORT_TENT_MON_VIGOROTH, + SLATEPORT_TENT_MON_VOLBEAT, + SLATEPORT_TENT_MON_ILLUMISE, -1 }; const u16 gSlateportBattleTentTrainerMons_Shaun[] = { - 17, - 18, - 19, - 22, - 29, - 36, - 42, - 48, - 61, - 62, - 66, - 68, - 69, + SLATEPORT_TENT_MON_BALTOY, + SLATEPORT_TENT_MON_MIGHTYENA_1, + SLATEPORT_TENT_MON_MIGHTYENA_2, + SLATEPORT_TENT_MON_ELECTRIKE_1, + SLATEPORT_TENT_MON_SWELLOW, + SLATEPORT_TENT_MON_NUMEL_1, + SLATEPORT_TENT_MON_SOLROCK, + SLATEPORT_TENT_MON_NUMEL_2, + SLATEPORT_TENT_MON_KADABRA, + SLATEPORT_TENT_MON_KIRLIA, + SLATEPORT_TENT_MON_ELECTRIKE_2, + SLATEPORT_TENT_MON_MACHOP, + SLATEPORT_TENT_MON_MACHOKE, -1 }; const u16 gSlateportBattleTentTrainerMons_Kyler[] = { - 22, - 23, - 28, - 29, - 31, - 32, - 34, - 39, - 55, - 64, - 65, - 67, + SLATEPORT_TENT_MON_ELECTRIKE_1, + SLATEPORT_TENT_MON_VOLTORB, + SLATEPORT_TENT_MON_TAILLOW, + SLATEPORT_TENT_MON_SWELLOW, + SLATEPORT_TENT_MON_LOUDRED, + SLATEPORT_TENT_MON_SPINDA, + SLATEPORT_TENT_MON_WHISMUR, + SLATEPORT_TENT_MON_VIGOROTH, + SLATEPORT_TENT_MON_GOLBAT_2, + SLATEPORT_TENT_MON_PLUSLE_1, + SLATEPORT_TENT_MON_PLUSLE_2, + SLATEPORT_TENT_MON_SWABLU, -1 }; const u16 gSlateportBattleTentTrainerMons_Maggie[] = { - 10, - 13, - 17, - 27, - 45, - 46, - 53, - 56, - 61, - 62, - 63, + SLATEPORT_TENT_MON_LOMBRE_1, + SLATEPORT_TENT_MON_NUZLEAF, + SLATEPORT_TENT_MON_BALTOY, + SLATEPORT_TENT_MON_CACNEA_2, + SLATEPORT_TENT_MON_SHROOMISH_1, + SLATEPORT_TENT_MON_SHROOMISH_2, + SLATEPORT_TENT_MON_SKITTY, + SLATEPORT_TENT_MON_RALTS, + SLATEPORT_TENT_MON_KADABRA, + SLATEPORT_TENT_MON_KIRLIA, + SLATEPORT_TENT_MON_BRELOOM, -1 }; const u16 gSlateportBattleTentTrainerMons_Stephon[] = { - 8, - 10, - 16, - 23, - 29, - 43, - 44, - 60, - 62, - 63, - 68, + SLATEPORT_TENT_MON_PELIPPER_1, + SLATEPORT_TENT_MON_LOMBRE_1, + SLATEPORT_TENT_MON_GRAVELER, + SLATEPORT_TENT_MON_VOLTORB, + SLATEPORT_TENT_MON_SWELLOW, + SLATEPORT_TENT_MON_KECLEON_1, + SLATEPORT_TENT_MON_KECLEON_2, + SLATEPORT_TENT_MON_ILLUMISE, + SLATEPORT_TENT_MON_KIRLIA, + SLATEPORT_TENT_MON_BRELOOM, + SLATEPORT_TENT_MON_MACHOP, -1 }; const u16 gSlateportBattleTentTrainerMons_Rebecca[] = { - 8, - 13, - 21, - 29, - 33, - 41, - 48, - 54, - 59, - 61, - 68, + SLATEPORT_TENT_MON_PELIPPER_1, + SLATEPORT_TENT_MON_NUZLEAF, + SLATEPORT_TENT_MON_GOLDEEN, + SLATEPORT_TENT_MON_SWELLOW, + SLATEPORT_TENT_MON_MAGNEMITE, + SLATEPORT_TENT_MON_SEVIPER_1, + SLATEPORT_TENT_MON_NUMEL_2, + SLATEPORT_TENT_MON_SEVIPER_2, + SLATEPORT_TENT_MON_VOLBEAT, + SLATEPORT_TENT_MON_KADABRA, + SLATEPORT_TENT_MON_MACHOP, -1 }; const u16 gSlateportBattleTentTrainerMons_Reggie[] = { - 6, - 7, - 17, - 23, - 24, - 26, - 32, - 36, - 52, - 53, - 57, - 65, + SLATEPORT_TENT_MON_MARILL_1, + SLATEPORT_TENT_MON_WINGULL_1, + SLATEPORT_TENT_MON_BALTOY, + SLATEPORT_TENT_MON_VOLTORB, + SLATEPORT_TENT_MON_ARON_1, + SLATEPORT_TENT_MON_TRAPINCH_1, + SLATEPORT_TENT_MON_SPINDA, + SLATEPORT_TENT_MON_NUMEL_1, + SLATEPORT_TENT_MON_MARILL_2, + SLATEPORT_TENT_MON_SKITTY, + SLATEPORT_TENT_MON_SANDSHREW, + SLATEPORT_TENT_MON_PLUSLE_2, -1 }; const u16 gSlateportBattleTentTrainerMons_Janae[] = { - 0, - 1, - 27, - 28, - 32, - 34, - 36, - 37, - 52, - 53, - 57, - 65, + SLATEPORT_TENT_MON_ZIGZAGOON_1, + SLATEPORT_TENT_MON_ZIGZAGOON_2, + SLATEPORT_TENT_MON_CACNEA_2, + SLATEPORT_TENT_MON_TAILLOW, + SLATEPORT_TENT_MON_SPINDA, + SLATEPORT_TENT_MON_WHISMUR, + SLATEPORT_TENT_MON_NUMEL_1, + SLATEPORT_TENT_MON_BARBOACH, + SLATEPORT_TENT_MON_MARILL_2, + SLATEPORT_TENT_MON_SKITTY, + SLATEPORT_TENT_MON_SANDSHREW, + SLATEPORT_TENT_MON_PLUSLE_2, -1 }; const u16 gSlateportBattleTentTrainerMons_Caiden[] = { - 10, - 14, - 15, - 16, - 20, - 21, - 25, - 30, - 35, - 47, - 48, - 50, - 69, + SLATEPORT_TENT_MON_LOMBRE_1, + SLATEPORT_TENT_MON_NINJASK_1, + SLATEPORT_TENT_MON_NINJASK_2, + SLATEPORT_TENT_MON_GRAVELER, + SLATEPORT_TENT_MON_LINOONE, + SLATEPORT_TENT_MON_GOLDEEN, + SLATEPORT_TENT_MON_ARON_2, + SLATEPORT_TENT_MON_GOLBAT_1, + SLATEPORT_TENT_MON_MAKUHITA, + SLATEPORT_TENT_MON_LOMBRE_2, + SLATEPORT_TENT_MON_NUMEL_2, + SLATEPORT_TENT_MON_PELIPPER_2, + SLATEPORT_TENT_MON_MACHOKE, -1 }; const u16 gSlateportBattleTentTrainerMons_Kirsten[] = { - 10, - 16, - 18, - 19, - 20, - 21, - 25, - 30, - 35, - 39, - 41, - 48, - 69, + SLATEPORT_TENT_MON_LOMBRE_1, + SLATEPORT_TENT_MON_GRAVELER, + SLATEPORT_TENT_MON_MIGHTYENA_1, + SLATEPORT_TENT_MON_MIGHTYENA_2, + SLATEPORT_TENT_MON_LINOONE, + SLATEPORT_TENT_MON_GOLDEEN, + SLATEPORT_TENT_MON_ARON_2, + SLATEPORT_TENT_MON_GOLBAT_1, + SLATEPORT_TENT_MON_MAKUHITA, + SLATEPORT_TENT_MON_VIGOROTH, + SLATEPORT_TENT_MON_SEVIPER_1, + SLATEPORT_TENT_MON_NUMEL_2, + SLATEPORT_TENT_MON_MACHOKE, -1 }; const u16 gSlateportBattleTentTrainerMons_Kurtis[] = { - 0, - 1, - 36, - 37, - 40, - 46, - 49, - 51, - 64, - 67, - 68, + SLATEPORT_TENT_MON_ZIGZAGOON_1, + SLATEPORT_TENT_MON_ZIGZAGOON_2, + SLATEPORT_TENT_MON_NUMEL_1, + SLATEPORT_TENT_MON_BARBOACH, + SLATEPORT_TENT_MON_MAGIKARP, + SLATEPORT_TENT_MON_SHROOMISH_2, + SLATEPORT_TENT_MON_TRAPINCH_2, + SLATEPORT_TENT_MON_WINGULL_2, + SLATEPORT_TENT_MON_PLUSLE_1, + SLATEPORT_TENT_MON_SWABLU, + SLATEPORT_TENT_MON_MACHOP, -1 }; const u16 gSlateportBattleTentTrainerMons_Stefan[] = { - 4, - 5, - 21, - 33, - 37, - 38, - 40, - 51, - 52, - 64, - 65, + SLATEPORT_TENT_MON_WAILMER_1, + SLATEPORT_TENT_MON_WAILMER_2, + SLATEPORT_TENT_MON_GOLDEEN, + SLATEPORT_TENT_MON_MAGNEMITE, + SLATEPORT_TENT_MON_BARBOACH, + SLATEPORT_TENT_MON_TENTACOOL, + SLATEPORT_TENT_MON_MAGIKARP, + SLATEPORT_TENT_MON_WINGULL_2, + SLATEPORT_TENT_MON_MARILL_2, + SLATEPORT_TENT_MON_PLUSLE_1, + SLATEPORT_TENT_MON_PLUSLE_2, -1 }; const u16 gSlateportBattleTentTrainerMons_Avery[] = { - 2, - 3, - 7, - 8, - 22, - 23, - 28, - 29, - 30, - 51, - 67, + SLATEPORT_TENT_MON_BEAUTIFLY, + SLATEPORT_TENT_MON_DUSTOX, + SLATEPORT_TENT_MON_WINGULL_1, + SLATEPORT_TENT_MON_PELIPPER_1, + SLATEPORT_TENT_MON_ELECTRIKE_1, + SLATEPORT_TENT_MON_VOLTORB, + SLATEPORT_TENT_MON_TAILLOW, + SLATEPORT_TENT_MON_SWELLOW, + SLATEPORT_TENT_MON_GOLBAT_1, + SLATEPORT_TENT_MON_WINGULL_2, + SLATEPORT_TENT_MON_SWABLU, -1 }; const u16 gSlateportBattleTentTrainerMons_Dwane[] = { - 14, - 15, - 30, - 43, - 44, - 45, - 46, - 55, - 58, - 59, - 63, + SLATEPORT_TENT_MON_NINJASK_1, + SLATEPORT_TENT_MON_NINJASK_2, + SLATEPORT_TENT_MON_GOLBAT_1, + SLATEPORT_TENT_MON_KECLEON_1, + SLATEPORT_TENT_MON_KECLEON_2, + SLATEPORT_TENT_MON_SHROOMISH_1, + SLATEPORT_TENT_MON_SHROOMISH_2, + SLATEPORT_TENT_MON_GOLBAT_2, + SLATEPORT_TENT_MON_SWALOT, + SLATEPORT_TENT_MON_VOLBEAT, + SLATEPORT_TENT_MON_BRELOOM, -1 }; const u16 gSlateportBattleTentTrainerMons_Mckenna[] = { - 27, - 29, - 30, - 32, - 36, - 48, - 51, - 52, - 53, - 57, - 67, + SLATEPORT_TENT_MON_CACNEA_2, + SLATEPORT_TENT_MON_SWELLOW, + SLATEPORT_TENT_MON_GOLBAT_1, + SLATEPORT_TENT_MON_SPINDA, + SLATEPORT_TENT_MON_NUMEL_1, + SLATEPORT_TENT_MON_NUMEL_2, + SLATEPORT_TENT_MON_WINGULL_2, + SLATEPORT_TENT_MON_MARILL_2, + SLATEPORT_TENT_MON_SKITTY, + SLATEPORT_TENT_MON_SANDSHREW, + SLATEPORT_TENT_MON_SWABLU, -1 }; const u16 gSlateportBattleTentTrainerMons_Camryn[] = { - 5, - 6, - 7, - 8, - 10, - 16, - 17, - 20, - 21, - 37, - 43, - 44, + SLATEPORT_TENT_MON_WAILMER_2, + SLATEPORT_TENT_MON_MARILL_1, + SLATEPORT_TENT_MON_WINGULL_1, + SLATEPORT_TENT_MON_PELIPPER_1, + SLATEPORT_TENT_MON_LOMBRE_1, + SLATEPORT_TENT_MON_GRAVELER, + SLATEPORT_TENT_MON_BALTOY, + SLATEPORT_TENT_MON_LINOONE, + SLATEPORT_TENT_MON_GOLDEEN, + SLATEPORT_TENT_MON_BARBOACH, + SLATEPORT_TENT_MON_KECLEON_1, + SLATEPORT_TENT_MON_KECLEON_2, -1 }; const u16 gSlateportBattleTentTrainerMons_Natasha[] = { - 1, - 3, - 4, - 5, - 9, - 11, - 12, - 20, - 21, - 22, - 51, + SLATEPORT_TENT_MON_ZIGZAGOON_2, + SLATEPORT_TENT_MON_DUSTOX, + SLATEPORT_TENT_MON_WAILMER_1, + SLATEPORT_TENT_MON_WAILMER_2, + SLATEPORT_TENT_MON_CACNEA_1, + SLATEPORT_TENT_MON_LOTAD, + SLATEPORT_TENT_MON_SEEDOT, + SLATEPORT_TENT_MON_LINOONE, + SLATEPORT_TENT_MON_GOLDEEN, + SLATEPORT_TENT_MON_ELECTRIKE_1, + SLATEPORT_TENT_MON_WINGULL_2, -1 }; const u16 gSlateportBattleTentTrainerMons_Austyn[] = { - 25, - 31, - 35, - 37, - 38, - 39, - 50, - 51, - 52, - 58, - 68, - 69, + SLATEPORT_TENT_MON_ARON_2, + SLATEPORT_TENT_MON_LOUDRED, + SLATEPORT_TENT_MON_MAKUHITA, + SLATEPORT_TENT_MON_BARBOACH, + SLATEPORT_TENT_MON_TENTACOOL, + SLATEPORT_TENT_MON_VIGOROTH, + SLATEPORT_TENT_MON_PELIPPER_2, + SLATEPORT_TENT_MON_WINGULL_2, + SLATEPORT_TENT_MON_MARILL_2, + SLATEPORT_TENT_MON_SWALOT, + SLATEPORT_TENT_MON_MACHOP, + SLATEPORT_TENT_MON_MACHOKE, -1 }; const u16 gSlateportBattleTentTrainerMons_Donovan[] = { - 10, - 16, - 17, - 24, - 25, - 43, - 44, - 47, - 49, - 53, - 59, - 60, - 64, - 65, + SLATEPORT_TENT_MON_LOMBRE_1, + SLATEPORT_TENT_MON_GRAVELER, + SLATEPORT_TENT_MON_BALTOY, + SLATEPORT_TENT_MON_ARON_1, + SLATEPORT_TENT_MON_ARON_2, + SLATEPORT_TENT_MON_KECLEON_1, + SLATEPORT_TENT_MON_KECLEON_2, + SLATEPORT_TENT_MON_LOMBRE_2, + SLATEPORT_TENT_MON_TRAPINCH_2, + SLATEPORT_TENT_MON_SKITTY, + SLATEPORT_TENT_MON_VOLBEAT, + SLATEPORT_TENT_MON_ILLUMISE, + SLATEPORT_TENT_MON_PLUSLE_1, + SLATEPORT_TENT_MON_PLUSLE_2, -1 }; const u16 gSlateportBattleTentTrainerMons_Tamia[] = { - 2, - 6, - 9, - 13, - 17, - 19, - 20, - 24, - 27, - 29, - 30, + SLATEPORT_TENT_MON_BEAUTIFLY, + SLATEPORT_TENT_MON_MARILL_1, + SLATEPORT_TENT_MON_CACNEA_1, + SLATEPORT_TENT_MON_NUZLEAF, + SLATEPORT_TENT_MON_BALTOY, + SLATEPORT_TENT_MON_MIGHTYENA_2, + SLATEPORT_TENT_MON_LINOONE, + SLATEPORT_TENT_MON_ARON_1, + SLATEPORT_TENT_MON_CACNEA_2, + SLATEPORT_TENT_MON_SWELLOW, + SLATEPORT_TENT_MON_GOLBAT_1, -1 }; -const struct BattleFrontierTrainer gSlateportBattleTentTrainers[] = +const struct BattleFrontierTrainer gSlateportBattleTentTrainers[NUM_BATTLE_TENT_TRAINERS] = { - [0] = { + [SLATEPORT_TENT_TRAINER_JOLIE] = { .facilityClass = FACILITY_CLASS_AROMA_LADY, .trainerName = _("JOLIE"), .speechBefore = {EC_WORD_WHAT, EC_WORD_WILL, EC_WORD_I, EC_WORD_BE, EC_WORD_TOMORROW, EC_WORD_QUES}, @@ -517,7 +517,7 @@ const struct BattleFrontierTrainer gSlateportBattleTentTrainers[] = .speechLose = {EC_WORD_I_AM, EC_WORD_FEELING, EC_WORD_LIKE, EC_WORD_IT_S, EC_WORD_MONDAY, EC_WORD_ELLIPSIS}, .monSet = gSlateportBattleTentTrainerMons_Jolie }, - [1] = { + [SLATEPORT_TENT_TRAINER_MALACHI] = { .facilityClass = FACILITY_CLASS_RUIN_MANIAC, .trainerName = _("MALACHI"), .speechBefore = {EC_WORD_BAD, EC_WORD_NEWS, EC_WORD_EXCL, EC_WORD_IT_S, EC_WORD_A, EC_MOVE(SAND_TOMB)}, @@ -525,7 +525,7 @@ const struct BattleFrontierTrainer gSlateportBattleTentTrainers[] = .speechLose = {EC_WORD_I_VE, EC_WORD_LOST, EC_WORD_IN, EC_WORD_THIS, EC_MOVE(SAND_TOMB), EC_WORD_ELLIPSIS}, .monSet = gSlateportBattleTentTrainerMons_Malachi }, - [2] = { + [SLATEPORT_TENT_TRAINER_KELSIE] = { .facilityClass = FACILITY_CLASS_TUBER_F, .trainerName = _("KELSIE"), .speechBefore = {EC_WORD_GO, EC_WORD_EXCL_EXCL, EC_WORD_MY, EC_WORD_BATH, EC_WORD_POKEMON, EC_WORD_EXCL_EXCL}, @@ -533,7 +533,7 @@ const struct BattleFrontierTrainer gSlateportBattleTentTrainers[] = .speechLose = {EC_WORD_GWAH, EC_WORD_EXCL_EXCL, EC_WORD_MY, EC_WORD_BATH, EC_WORD_POKEMON, EC_WORD_EXCL_EXCL}, .monSet = gSlateportBattleTentTrainerMons_Kelsie }, - [3] = { + [SLATEPORT_TENT_TRAINER_DAVON] = { .facilityClass = FACILITY_CLASS_TUBER_M, .trainerName = _("DAVON"), .speechBefore = {EC_WORD_YEAH_YEAH, EC_WORD_EXCL_EXCL, -1, EC_WORD_GREAT, EC_MOVE(WHIRLPOOL), EC_WORD_ISN_T_IT_QUES}, @@ -541,7 +541,7 @@ const struct BattleFrontierTrainer gSlateportBattleTentTrainers[] = .speechLose = {EC_WORD_DON_T, EC_WORD_GET, EC_MOVE2(BEAT_UP), EC_WORD_IN, EC_WORD_THAT, EC_MOVE(WHIRLPOOL)}, .monSet = gSlateportBattleTentTrainerMons_Davon }, - [4] = { + [SLATEPORT_TENT_TRAINER_GLENDA] = { .facilityClass = FACILITY_CLASS_LADY, .trainerName = _("GLENDA"), .speechBefore = {EC_WORD_CONVERSATION, EC_WORD_CAN, EC_WORD_WAIT, EC_WORD_UNTIL, EC_WORD_I, EC_WORD_WIN}, @@ -549,7 +549,7 @@ const struct BattleFrontierTrainer gSlateportBattleTentTrainers[] = .speechLose = {EC_WORD_NO, EC_WORD_EXCL, -1, EC_WORD_I, EC_WORD_WASN_T, EC_WORD_SERIOUS}, .monSet = gSlateportBattleTentTrainerMons_Glenda }, - [5] = { + [SLATEPORT_TENT_TRAINER_HELENA] = { .facilityClass = FACILITY_CLASS_BEAUTY, .trainerName = _("HELENA"), .speechBefore = {EC_WORD_DOES, EC_WORD_MY, EC_WORD_BEAUTY, EC_WORD_INTIMIDATE, EC_WORD_YOU, EC_WORD_QUES}, @@ -557,7 +557,7 @@ const struct BattleFrontierTrainer gSlateportBattleTentTrainers[] = .speechLose = {EC_WORD_I, EC_WORD_DO, EC_WORD_SO, EC_WORD_ENJOY, EC_WORD_THIS, EC_WORD_EXCL}, .monSet = gSlateportBattleTentTrainerMons_Helena }, - [6] = { + [SLATEPORT_TENT_TRAINER_RODOLFO] = { .facilityClass = FACILITY_CLASS_RICH_BOY, .trainerName = _("RODOLFO"), .speechBefore = {EC_WORD_GO, EC_WORD_GET, EC_WORD_A, EC_POKEMON(WHISCASH), EC_WORD_FOR, EC_WORD_ME}, @@ -565,7 +565,7 @@ const struct BattleFrontierTrainer gSlateportBattleTentTrainers[] = .speechLose = {EC_WORD_PLEASE, EC_WORD_I, EC_WORD_NEED, EC_WORD_A, EC_POKEMON(WHISCASH), EC_WORD_BADLY}, .monSet = gSlateportBattleTentTrainerMons_Rodolfo }, - [7] = { + [SLATEPORT_TENT_TRAINER_DAVION] = { .facilityClass = FACILITY_CLASS_POKEMANIAC, .trainerName = _("DAVION"), .speechBefore = {EC_WORD_GRAAAH, EC_WORD_GRAAAH, EC_WORD_EXCL_EXCL, EC_WORD_GRAAAH, EC_WORD_GRAAAH, EC_WORD_EXCL_EXCL}, @@ -573,7 +573,7 @@ const struct BattleFrontierTrainer gSlateportBattleTentTrainers[] = .speechLose = {EC_WORD_URGH, EC_WORD_WAAAH, EC_WORD_EXCL_EXCL, -1, -1, -1}, .monSet = gSlateportBattleTentTrainerMons_Davion }, - [8] = { + [SLATEPORT_TENT_TRAINER_KENDALL] = { .facilityClass = FACILITY_CLASS_SWIMMER_M, .trainerName = _("KENDALL"), .speechBefore = {EC_WORD_A_LITTLE, EC_MOVE2(PETAL_DANCE), EC_WORD_TO, EC_WORD_PLEASE, EC_WORD_YOU, EC_WORD_EXCL}, @@ -581,7 +581,7 @@ const struct BattleFrontierTrainer gSlateportBattleTentTrainers[] = .speechLose = {EC_WORD_HOW, EC_WORD_COULD, EC_WORD_YOU, EC_MOVE2(POUND), EC_WORD_ME, EC_WORD_QUES}, .monSet = gSlateportBattleTentTrainerMons_Kendall }, - [9] = { + [SLATEPORT_TENT_TRAINER_COLTEN] = { .facilityClass = FACILITY_CLASS_CAMPER, .trainerName = _("COLTEN"), .speechBefore = {EC_WORD_I, EC_WORD_WANT, EC_WORD_TO, EC_WORD_GO, EC_WORD_RUN, EC_WORD_AROUND}, @@ -589,7 +589,7 @@ const struct BattleFrontierTrainer gSlateportBattleTentTrainers[] = .speechLose = {EC_WORD_A, EC_WORD_SWIFT_SWIM, EC_WORD_WOULD, EC_WORD_BE, EC_WORD_GOOD, EC_WORD_TOO}, .monSet = gSlateportBattleTentTrainerMons_Colten }, - [10] = { + [SLATEPORT_TENT_TRAINER_IRVIN] = { .facilityClass = FACILITY_CLASS_BUG_MANIAC, .trainerName = _("IRVIN"), .speechBefore = {EC_WORD_HAVE, EC_WORD_A, EC_WORD_LOOK, EC_WORD_AT, EC_WORD_MY, EC_MOVE(CONFUSE_RAY)}, @@ -597,7 +597,7 @@ const struct BattleFrontierTrainer gSlateportBattleTentTrainers[] = .speechLose = {EC_WORD_GWAH, EC_WORD_EXCL_EXCL, -1, EC_WORD_I_AM, EC_WORD_SORRY, EC_WORD_EXCL}, .monSet = gSlateportBattleTentTrainerMons_Irvin }, - [11] = { + [SLATEPORT_TENT_TRAINER_SHAUN] = { .facilityClass = FACILITY_CLASS_GENTLEMAN, .trainerName = _("SHAUN"), .speechBefore = {EC_WORD_LISTEN, EC_WORD_ELLIPSIS, EC_WORD_YOU, EC_WORD_AREN_T, EC_WORD_VERY, EC_WORD_GOOD}, @@ -605,7 +605,7 @@ const struct BattleFrontierTrainer gSlateportBattleTentTrainers[] = .speechLose = {EC_WORD_YES, EC_WORD_YES, EC_WORD_ELLIPSIS, EC_WORD_YOU_RE, EC_WORD_QUITE, EC_WORD_SOMETHING}, .monSet = gSlateportBattleTentTrainerMons_Shaun }, - [12] = { + [SLATEPORT_TENT_TRAINER_KYLER] = { .facilityClass = FACILITY_CLASS_GUITARIST, .trainerName = _("KYLER"), .speechBefore = {EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, EC_WORD_QUES}, @@ -613,7 +613,7 @@ const struct BattleFrontierTrainer gSlateportBattleTentTrainers[] = .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}, .monSet = gSlateportBattleTentTrainerMons_Kyler }, - [13] = { + [SLATEPORT_TENT_TRAINER_MAGGIE] = { .facilityClass = FACILITY_CLASS_SCHOOL_KID_F, .trainerName = _("MAGGIE"), .speechBefore = {EC_POKEMON(VULPIX), EC_POKEMON(XATU), EC_POKEMON2(UMBREON), EC_WORD_ELLIPSIS, EC_WORD_UM, EC_WORD_ELLIPSIS}, @@ -621,7 +621,7 @@ const struct BattleFrontierTrainer gSlateportBattleTentTrainers[] = .speechLose = {EC_POKEMON(NOSEPASS), EC_WORD_ELLIPSIS, EC_WORD_UM, EC_POKEMON2(SNORLAX), EC_WORD_ELLIPSIS, EC_WORD_UH_OH}, .monSet = gSlateportBattleTentTrainerMons_Maggie }, - [14] = { + [SLATEPORT_TENT_TRAINER_STEPHON] = { .facilityClass = FACILITY_CLASS_COOLTRAINER_M, .trainerName = _("STEPHON"), .speechBefore = {EC_WORD_I_AM, EC_WORD_GOING, EC_WORD_TO, EC_WORD_ENJOY, EC_WORD_AN, EC_WORD_EGG}, @@ -629,7 +629,7 @@ const struct BattleFrontierTrainer gSlateportBattleTentTrainers[] = .speechLose = {EC_WORD_AWFUL, EC_WORD_EXCL_EXCL, -1, EC_WORD_JUST, EC_WORD_AWFUL, EC_WORD_EXCL_EXCL}, .monSet = gSlateportBattleTentTrainerMons_Stephon }, - [15] = { + [SLATEPORT_TENT_TRAINER_REBECCA] = { .facilityClass = FACILITY_CLASS_COOLTRAINER_F, .trainerName = _("REBECCA"), .speechBefore = {EC_WORD_THAT, EC_WORD_EGG, EC_WORD_HAS, EC_WORD_A, EC_WORD_TASTY, EC_WORD_SHINE}, @@ -637,7 +637,7 @@ const struct BattleFrontierTrainer gSlateportBattleTentTrainers[] = .speechLose = {EC_WORD_YOU, EC_WORD_CAN_T, EC_WORD_MAKE, EC_WORD_ME, EC_WORD_STOP, EC_WORD_ELLIPSIS}, .monSet = gSlateportBattleTentTrainerMons_Rebecca }, - [16] = { + [SLATEPORT_TENT_TRAINER_REGGIE] = { .facilityClass = FACILITY_CLASS_POKEFAN_M, .trainerName = _("REGGIE"), .speechBefore = {EC_WORD_POKEMON, EC_WORD_COME, EC_WORD_BEFORE, EC_WORD_MONEY, EC_WORD_OR, EC_WORD_FAMILY}, @@ -645,7 +645,7 @@ const struct BattleFrontierTrainer gSlateportBattleTentTrainers[] = .speechLose = {EC_WORD_THAT_S, EC_WORD_WHY, EC_WORD_I_AM, EC_WORD_SO, EC_WORD_THICK, EC_WORD_ELLIPSIS}, .monSet = gSlateportBattleTentTrainerMons_Reggie }, - [17] = { + [SLATEPORT_TENT_TRAINER_JANAE] = { .facilityClass = FACILITY_CLASS_POKEFAN_F, .trainerName = _("JANAE"), .speechBefore = {EC_WORD_I, EC_WORD_JUST, EC_WORD_ADORE, EC_WORD_YOUR, EC_WORD_TOUGH, EC_WORD_LOOK}, @@ -653,7 +653,7 @@ const struct BattleFrontierTrainer gSlateportBattleTentTrainers[] = .speechLose = {EC_WORD_YOU_RE, EC_WORD_A, EC_WORD_MEAN, EC_WORD_AND, EC_WORD_AWFUL, EC_WORD_TRAINER}, .monSet = gSlateportBattleTentTrainerMons_Janae }, - [18] = { + [SLATEPORT_TENT_TRAINER_CAIDEN] = { .facilityClass = FACILITY_CLASS_EXPERT_M, .trainerName = _("CAIDEN"), .speechBefore = {EC_WORD_MY, EC_MOVE2(CURSE), EC_WORD_WILL, EC_WORD_BREAK, EC_WORD_YOUR, EC_WORD_SPIRIT}, @@ -661,7 +661,7 @@ const struct BattleFrontierTrainer gSlateportBattleTentTrainers[] = .speechLose = {EC_WORD_MY, EC_MOVE2(CURSE), EC_WORD_WILL, EC_WORD_LAST, EC_WORD_FOREVER, -1}, .monSet = gSlateportBattleTentTrainerMons_Caiden }, - [19] = { + [SLATEPORT_TENT_TRAINER_KIRSTEN] = { .facilityClass = FACILITY_CLASS_EXPERT_F, .trainerName = _("KIRSTEN"), .speechBefore = {EC_WORD_HUH_QUES, EC_WORD_A, EC_WORD_BATTLE, EC_WORD_YOU, EC_WORD_SAID, EC_WORD_QUES}, @@ -669,7 +669,7 @@ const struct BattleFrontierTrainer gSlateportBattleTentTrainers[] = .speechLose = {EC_WORD_HUH_QUES, EC_WORD_I, EC_WORD_SURRENDER, EC_WORD_TO, EC_WORD_YOUR, EC_MOVE(STRENGTH)}, .monSet = gSlateportBattleTentTrainerMons_Kirsten }, - [20] = { + [SLATEPORT_TENT_TRAINER_KURTIS] = { .facilityClass = FACILITY_CLASS_YOUNGSTER, .trainerName = _("KURTIS"), .speechBefore = {EC_WORD_SORRY, EC_WORD_YOU_RE, EC_WORD_GOING, EC_WORD_TO, EC_WORD_GET, EC_MOVE2(BEAT_UP)}, @@ -677,7 +677,7 @@ const struct BattleFrontierTrainer gSlateportBattleTentTrainers[] = .speechLose = {EC_WORD_HOW, EC_WORD_DID, EC_WORD_I, EC_WORD_GET, EC_MOVE2(BEAT_UP), EC_WORD_QUES}, .monSet = gSlateportBattleTentTrainerMons_Kurtis }, - [21] = { + [SLATEPORT_TENT_TRAINER_STEFAN] = { .facilityClass = FACILITY_CLASS_FISHERMAN, .trainerName = _("STEFAN"), .speechBefore = {EC_WORD_I, EC_WORD_ONLY, EC_WORD_WANT, EC_WORD_CUTE, EC_WORD_POKEMON, -1}, @@ -685,7 +685,7 @@ const struct BattleFrontierTrainer gSlateportBattleTentTrainers[] = .speechLose = {EC_WORD_YOU_RE, EC_WORD_KIND, EC_WORD_OF, EC_WORD_AWESOME, EC_WORD_ELLIPSIS, -1}, .monSet = gSlateportBattleTentTrainerMons_Stefan }, - [22] = { + [SLATEPORT_TENT_TRAINER_AVERY] = { .facilityClass = FACILITY_CLASS_BIRD_KEEPER, .trainerName = _("AVERY"), .speechBefore = {EC_WORD_TOYS, EC_WORD_EXCL, EC_WORD_I, EC_WORD_NEED, EC_WORD_MORE, EC_WORD_TOYS}, @@ -693,7 +693,7 @@ const struct BattleFrontierTrainer gSlateportBattleTentTrainers[] = .speechLose = {EC_WORD_I, EC_WORD_NEED, EC_WORD_TO, EC_WORD_WORK, EC_WORD_FOR, EC_WORD_MONEY}, .monSet = gSlateportBattleTentTrainerMons_Avery }, - [23] = { + [SLATEPORT_TENT_TRAINER_DWANE] = { .facilityClass = FACILITY_CLASS_NINJA_BOY, .trainerName = _("DWANE"), .speechBefore = {EC_WORD_MMM, EC_WORD_TASTY, EC_WORD_ELLIPSIS, EC_WORD_WONDER, EC_WORD_WHAT, EC_WORD_QUES}, @@ -701,7 +701,7 @@ const struct BattleFrontierTrainer gSlateportBattleTentTrainers[] = .speechLose = {EC_WORD_MMM, EC_WORD_MMM, EC_WORD_ELLIPSIS, EC_WORD_OH_YEAH, EC_WORD_THIS_IS_IT_EXCL, -1}, .monSet = gSlateportBattleTentTrainerMons_Dwane }, - [24] = { + [SLATEPORT_TENT_TRAINER_MCKENNA] = { .facilityClass = FACILITY_CLASS_PARASOL_LADY, .trainerName = _("MCKENNA"), .speechBefore = {EC_WORD_I, EC_WORD_DISLIKE, EC_WORD_SMALL, EC_WORD_TALK, EC_WORD_LET_S, EC_WORD_GO}, @@ -709,7 +709,7 @@ const struct BattleFrontierTrainer gSlateportBattleTentTrainers[] = .speechLose = {EC_WORD_KTHX_BYE, -1, -1, -1, -1, -1}, .monSet = gSlateportBattleTentTrainerMons_Mckenna }, - [25] = { + [SLATEPORT_TENT_TRAINER_CAMRYN] = { .facilityClass = FACILITY_CLASS_SWIMMER_F, .trainerName = _("CAMRYN"), .speechBefore = {EC_WORD_MR, EC_WORD_JUDGE, EC_WORD_YOU, EC_WORD_HAVE, EC_WORD_OUR, EC_WORD_TRUST}, @@ -717,7 +717,7 @@ const struct BattleFrontierTrainer gSlateportBattleTentTrainers[] = .speechLose = {EC_WORD_I, EC_WORD_WON_T, EC_WORD_GIVE_UP, EC_WORD_MY, EC_WORD_IDOL, EC_WORD_DREAM}, .monSet = gSlateportBattleTentTrainerMons_Camryn }, - [26] = { + [SLATEPORT_TENT_TRAINER_NATASHA] = { .facilityClass = FACILITY_CLASS_PICNICKER, .trainerName = _("NATASHA"), .speechBefore = {EC_WORD_COME_OVER, EC_WORD_TO, EC_WORD_MY, EC_WORD_PLACE, EC_WORD_OK_QUES, -1}, @@ -725,7 +725,7 @@ const struct BattleFrontierTrainer gSlateportBattleTentTrainers[] = .speechLose = {EC_WORD_AWW, EC_WORD_WON_T, EC_WORD_YOU, EC_WORD_COME_OVER, EC_WORD_QUES, -1}, .monSet = gSlateportBattleTentTrainerMons_Natasha }, - [27] = { + [SLATEPORT_TENT_TRAINER_AUSTYN] = { .facilityClass = FACILITY_CLASS_SAILOR, .trainerName = _("AUSTYN"), .speechBefore = {EC_WORD_I, EC_WORD_DON_T, EC_WORD_CARE, EC_WORD_HOW, EC_WORD_WE, EC_WORD_MATCH_UP}, @@ -733,7 +733,7 @@ const struct BattleFrontierTrainer gSlateportBattleTentTrainers[] = .speechLose = {EC_WORD_I, EC_WORD_NEED, EC_WORD_TO, EC_WORD_STUDY, EC_WORD_MY, EC_WORD_LESSONS}, .monSet = gSlateportBattleTentTrainerMons_Austyn }, - [28] = { + [SLATEPORT_TENT_TRAINER_DONOVAN] = { .facilityClass = FACILITY_CLASS_COLLECTOR, .trainerName = _("DONOVAN"), .speechBefore = {EC_WORD_OH, EC_WORD_I_AM, EC_WORD_FEELING, EC_WORD_SLIMY, EC_WORD_ALL, EC_WORD_OVER}, @@ -741,7 +741,7 @@ const struct BattleFrontierTrainer gSlateportBattleTentTrainers[] = .speechLose = {EC_WORD_I_AM, EC_WORD_NATURALLY, EC_WORD_SLIMY, EC_WORD_THAT_S, EC_WORD_WHAT, EC_WORD_I_AM}, .monSet = gSlateportBattleTentTrainerMons_Donovan }, - [29] = { + [SLATEPORT_TENT_TRAINER_TAMIA] = { .facilityClass = FACILITY_CLASS_LASS, .trainerName = _("TAMIA"), .speechBefore = {EC_WORD_I_AM, EC_WORD_ANGRY, EC_WORD_WITH, EC_WORD_MY, EC_WORD_FATHER, EC_WORD_ELLIPSIS}, @@ -751,492 +751,492 @@ const struct BattleFrontierTrainer gSlateportBattleTentTrainers[] = } }; -const struct FacilityMon gSlateportBattleTentMons[] = +const struct FacilityMon gSlateportBattleTentMons[NUM_SLATEPORT_TENT_MONS] = { - [0] = { + [SLATEPORT_TENT_MON_ZIGZAGOON_1] = { .species = SPECIES_ZIGZAGOON, .moves = {MOVE_TACKLE, MOVE_CHARM, MOVE_ODOR_SLEUTH, MOVE_PIN_MISSILE}, .itemTableId = BATTLE_FRONTIER_ITEM_CHOICE_BAND, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_JOLLY }, - [1] = { + [SLATEPORT_TENT_MON_ZIGZAGOON_2] = { .species = SPECIES_ZIGZAGOON, .moves = {MOVE_DIG, MOVE_MUD_SPORT, MOVE_TAIL_WHIP, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_JOLLY }, - [2] = { + [SLATEPORT_TENT_MON_BEAUTIFLY] = { .species = SPECIES_BEAUTIFLY, .moves = {MOVE_STUN_SPORE, MOVE_MEGA_DRAIN, MOVE_GUST, MOVE_HARDEN}, .itemTableId = BATTLE_FRONTIER_ITEM_NONE, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [3] = { + [SLATEPORT_TENT_MON_DUSTOX] = { .species = SPECIES_DUSTOX, .moves = {MOVE_POISON_STING, MOVE_MOONLIGHT, MOVE_PROTECT, MOVE_GUST}, .itemTableId = BATTLE_FRONTIER_ITEM_ORAN_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [4] = { + [SLATEPORT_TENT_MON_WAILMER_1] = { .species = SPECIES_WAILMER, .moves = {MOVE_ROLLOUT, MOVE_CURSE, MOVE_GROWL, MOVE_WHIRLPOOL}, .itemTableId = BATTLE_FRONTIER_ITEM_RAWST_BERRY, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [5] = { + [SLATEPORT_TENT_MON_WAILMER_2] = { .species = SPECIES_WAILMER, .moves = {MOVE_ROLLOUT, MOVE_GROWL, MOVE_WHIRLPOOL, MOVE_WATER_PULSE}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [6] = { + [SLATEPORT_TENT_MON_MARILL_1] = { .species = SPECIES_MARILL, .moves = {MOVE_ROLLOUT, MOVE_DEFENSE_CURL, MOVE_TAIL_WHIP, MOVE_BUBBLE_BEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_IMPISH }, - [7] = { + [SLATEPORT_TENT_MON_WINGULL_1] = { .species = SPECIES_WINGULL, .moves = {MOVE_SUPERSONIC, MOVE_GROWL, MOVE_WING_ATTACK, MOVE_STEEL_WING}, .itemTableId = BATTLE_FRONTIER_ITEM_METAL_COAT, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_NAIVE }, - [8] = { + [SLATEPORT_TENT_MON_PELIPPER_1] = { .species = SPECIES_PELIPPER, .moves = {MOVE_TWISTER, MOVE_WATER_SPORT, MOVE_GROWL, MOVE_WING_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_DRAGON_FANG, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, .nature = NATURE_MODEST }, - [9] = { + [SLATEPORT_TENT_MON_CACNEA_1] = { .species = SPECIES_CACNEA, .moves = {MOVE_SANDSTORM, MOVE_LEER, MOVE_LEECH_SEED, MOVE_PIN_MISSILE}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_SPEED, .nature = NATURE_JOLLY }, - [10] = { + [SLATEPORT_TENT_MON_LOMBRE_1] = { .species = SPECIES_LOMBRE, .moves = {MOVE_ASTONISH, MOVE_WATER_GUN, MOVE_FAKE_OUT, MOVE_ABSORB}, .itemTableId = BATTLE_FRONTIER_ITEM_MIRACLE_SEED, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [11] = { + [SLATEPORT_TENT_MON_LOTAD] = { .species = SPECIES_LOTAD, .moves = {MOVE_SYNTHESIS, MOVE_NATURE_POWER, MOVE_RAIN_DANCE, MOVE_MEGA_DRAIN}, .itemTableId = BATTLE_FRONTIER_ITEM_MYSTIC_WATER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_DOCILE }, - [12] = { + [SLATEPORT_TENT_MON_SEEDOT] = { .species = SPECIES_SEEDOT, .moves = {MOVE_SUNNY_DAY, MOVE_SYNTHESIS, MOVE_LEECH_SEED, MOVE_BIDE}, .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_TIMID }, - [13] = { + [SLATEPORT_TENT_MON_NUZLEAF] = { .species = SPECIES_NUZLEAF, .moves = {MOVE_FAKE_OUT, MOVE_NATURE_POWER, MOVE_HARDEN, MOVE_ATTRACT}, .itemTableId = BATTLE_FRONTIER_ITEM_NONE, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_LONELY }, - [14] = { + [SLATEPORT_TENT_MON_NINJASK_1] = { .species = SPECIES_NINJASK, .moves = {MOVE_FURY_CUTTER, MOVE_SCREECH, MOVE_SWORDS_DANCE, MOVE_DOUBLE_TEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_NONE, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [15] = { + [SLATEPORT_TENT_MON_NINJASK_2] = { .species = SPECIES_NINJASK, .moves = {MOVE_FURY_CUTTER, MOVE_DOUBLE_TEAM, MOVE_SCREECH, MOVE_SAND_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_SILVER_POWDER, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_NAUGHTY }, - [16] = { + [SLATEPORT_TENT_MON_GRAVELER] = { .species = SPECIES_GRAVELER, .moves = {MOVE_MUD_SPORT, MOVE_BLOCK, MOVE_ROCK_TOMB, MOVE_MAGNITUDE}, .itemTableId = BATTLE_FRONTIER_ITEM_NONE, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_BRAVE }, - [17] = { + [SLATEPORT_TENT_MON_BALTOY] = { .species = SPECIES_BALTOY, .moves = {MOVE_SELF_DESTRUCT, MOVE_ANCIENT_POWER, MOVE_PSYBEAM, MOVE_REFLECT}, .itemTableId = BATTLE_FRONTIER_ITEM_NONE, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_NAIVE }, - [18] = { + [SLATEPORT_TENT_MON_MIGHTYENA_1] = { .species = SPECIES_MIGHTYENA, .moves = {MOVE_BITE, MOVE_ROAR, MOVE_SWAGGER, MOVE_TACKLE}, .itemTableId = BATTLE_FRONTIER_ITEM_BLACK_GLASSES, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, .nature = NATURE_CALM }, - [19] = { + [SLATEPORT_TENT_MON_MIGHTYENA_2] = { .species = SPECIES_MIGHTYENA, .moves = {MOVE_ODOR_SLEUTH, MOVE_HOWL, MOVE_SAND_ATTACK, MOVE_POISON_FANG}, .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_LONELY }, - [20] = { + [SLATEPORT_TENT_MON_LINOONE] = { .species = SPECIES_LINOONE, .moves = {MOVE_HEADBUTT, MOVE_TICKLE, MOVE_TAIL_WHIP, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_MENTAL_HERB, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_JOLLY }, - [21] = { + [SLATEPORT_TENT_MON_GOLDEEN] = { .species = SPECIES_GOLDEEN, .moves = {MOVE_WATER_SPORT, MOVE_HORN_ATTACK, MOVE_WATERFALL, MOVE_SUPERSONIC}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, .nature = NATURE_CALM }, - [22] = { + [SLATEPORT_TENT_MON_ELECTRIKE_1] = { .species = SPECIES_ELECTRIKE, .moves = {MOVE_BITE, MOVE_SPARK, MOVE_ROAR, MOVE_FLASH}, .itemTableId = BATTLE_FRONTIER_ITEM_MAGNET, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_MODEST }, - [23] = { + [SLATEPORT_TENT_MON_VOLTORB] = { .species = SPECIES_VOLTORB, .moves = {MOVE_SPARK, MOVE_ROLLOUT, MOVE_CHARGE, MOVE_SCREECH}, .itemTableId = BATTLE_FRONTIER_ITEM_NONE, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK, .nature = NATURE_MILD }, - [24] = { + [SLATEPORT_TENT_MON_ARON_1] = { .species = SPECIES_ARON, .moves = {MOVE_DIG, MOVE_METAL_CLAW, MOVE_IRON_DEFENSE, MOVE_ENDEAVOR}, .itemTableId = BATTLE_FRONTIER_ITEM_NONE, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_NAUGHTY }, - [25] = { + [SLATEPORT_TENT_MON_ARON_2] = { .species = SPECIES_ARON, .moves = {MOVE_MUD_SLAP, MOVE_IRON_TAIL, MOVE_HARDEN, MOVE_ROAR}, .itemTableId = BATTLE_FRONTIER_ITEM_LEPPA_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [26] = { + [SLATEPORT_TENT_MON_TRAPINCH_1] = { .species = SPECIES_TRAPINCH, .moves = {MOVE_BODY_SLAM, MOVE_FOCUS_ENERGY, MOVE_SAND_TOMB, MOVE_SAND_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_NONE, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_BRAVE }, - [27] = { + [SLATEPORT_TENT_MON_CACNEA_2] = { .species = SPECIES_CACNEA, .moves = {MOVE_INGRAIN, MOVE_SANDSTORM, MOVE_POISON_STING, MOVE_DESTINY_BOND}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, .nature = NATURE_TIMID }, - [28] = { + [SLATEPORT_TENT_MON_TAILLOW] = { .species = SPECIES_TAILLOW, .moves = {MOVE_GROWL, MOVE_AERIAL_ACE, MOVE_AGILITY, MOVE_ENDEAVOR}, .itemTableId = BATTLE_FRONTIER_ITEM_SHARP_BEAK, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [29] = { + [SLATEPORT_TENT_MON_SWELLOW] = { .species = SPECIES_SWELLOW, .moves = {MOVE_SUPERSONIC, MOVE_GROWL, MOVE_FOCUS_ENERGY, MOVE_PECK}, .itemTableId = BATTLE_FRONTIER_ITEM_NONE, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_IMPISH }, - [30] = { + [SLATEPORT_TENT_MON_GOLBAT_1] = { .species = SPECIES_GOLBAT, .moves = {MOVE_ASTONISH, MOVE_GUST, MOVE_MEAN_LOOK, MOVE_CONFUSE_RAY}, .itemTableId = BATTLE_FRONTIER_ITEM_SPELL_TAG, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE, .nature = NATURE_TIMID }, - [31] = { + [SLATEPORT_TENT_MON_LOUDRED] = { .species = SPECIES_LOUDRED, .moves = {MOVE_ASTONISH, MOVE_SCREECH, MOVE_UPROAR, MOVE_SUPERSONIC}, .itemTableId = BATTLE_FRONTIER_ITEM_NONE, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [32] = { + [SLATEPORT_TENT_MON_SPINDA] = { .species = SPECIES_SPINDA, .moves = {MOVE_DIZZY_PUNCH, MOVE_FAINT_ATTACK, MOVE_HYPNOSIS, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [33] = { + [SLATEPORT_TENT_MON_MAGNEMITE] = { .species = SPECIES_MAGNEMITE, .moves = {MOVE_METAL_SOUND, MOVE_SUPERSONIC, MOVE_THUNDER_WAVE, MOVE_SPARK}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_SERIOUS }, - [34] = { + [SLATEPORT_TENT_MON_WHISMUR] = { .species = SPECIES_WHISMUR, .moves = {MOVE_REST, MOVE_SLEEP_TALK, MOVE_HOWL, MOVE_BODY_SLAM}, .itemTableId = BATTLE_FRONTIER_ITEM_SILK_SCARF, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [35] = { + [SLATEPORT_TENT_MON_MAKUHITA] = { .species = SPECIES_MAKUHITA, .moves = {MOVE_SAND_ATTACK, MOVE_KNOCK_OFF, MOVE_ARM_THRUST, MOVE_BELLY_DRUM}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [36] = { + [SLATEPORT_TENT_MON_NUMEL_1] = { .species = SPECIES_NUMEL, .moves = {MOVE_EMBER, MOVE_TAKE_DOWN, MOVE_GROWL, MOVE_FOCUS_ENERGY}, .itemTableId = BATTLE_FRONTIER_ITEM_NONE, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_MODEST }, - [37] = { + [SLATEPORT_TENT_MON_BARBOACH] = { .species = SPECIES_BARBOACH, .moves = {MOVE_MAGNITUDE, MOVE_MUD_SPORT, MOVE_WATER_SPORT, MOVE_WATER_GUN}, .itemTableId = BATTLE_FRONTIER_ITEM_SEA_INCENSE, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_JOLLY }, - [38] = { + [SLATEPORT_TENT_MON_TENTACOOL] = { .species = SPECIES_TENTACOOL, .moves = {MOVE_SCREECH, MOVE_BUBBLE_BEAM, MOVE_ACID, MOVE_BARRIER}, .itemTableId = BATTLE_FRONTIER_ITEM_POISON_BARB, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [39] = { + [SLATEPORT_TENT_MON_VIGOROTH] = { .species = SPECIES_VIGOROTH, .moves = {MOVE_FOCUS_ENERGY, MOVE_FURY_SWIPES, MOVE_ENDURE, MOVE_YAWN}, .itemTableId = BATTLE_FRONTIER_ITEM_AGUAV_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [40] = { + [SLATEPORT_TENT_MON_MAGIKARP] = { .species = SPECIES_MAGIKARP, .moves = {MOVE_TACKLE, MOVE_FLAIL, MOVE_SPLASH, MOVE_NONE}, .itemTableId = BATTLE_FRONTIER_ITEM_DRAGON_SCALE, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [41] = { + [SLATEPORT_TENT_MON_SEVIPER_1] = { .species = SPECIES_SEVIPER, .moves = {MOVE_LICK, MOVE_POISON_FANG, MOVE_GLARE, MOVE_WRAP}, .itemTableId = BATTLE_FRONTIER_ITEM_NONE, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [42] = { + [SLATEPORT_TENT_MON_SOLROCK] = { .species = SPECIES_SOLROCK, .moves = {MOVE_ROCK_THROW, MOVE_HARDEN, MOVE_PSYWAVE, MOVE_TACKLE}, .itemTableId = BATTLE_FRONTIER_ITEM_HARD_STONE, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [43] = { + [SLATEPORT_TENT_MON_KECLEON_1] = { .species = SPECIES_KECLEON, .moves = {MOVE_PSYBEAM, MOVE_SUBSTITUTE, MOVE_THIEF, MOVE_TAIL_WHIP}, .itemTableId = BATTLE_FRONTIER_ITEM_NONE, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [44] = { + [SLATEPORT_TENT_MON_KECLEON_2] = { .species = SPECIES_KECLEON, .moves = {MOVE_FAINT_ATTACK, MOVE_ASTONISH, MOVE_LICK, MOVE_SCREECH}, .itemTableId = BATTLE_FRONTIER_ITEM_IAPAPA_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_CALM }, - [45] = { + [SLATEPORT_TENT_MON_SHROOMISH_1] = { .species = SPECIES_SHROOMISH, .moves = {MOVE_STUN_SPORE, MOVE_TACKLE, MOVE_LEECH_SEED, MOVE_MEGA_DRAIN}, .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [46] = { + [SLATEPORT_TENT_MON_SHROOMISH_2] = { .species = SPECIES_SHROOMISH, .moves = {MOVE_ABSORB, MOVE_STUN_SPORE, MOVE_SPORE, MOVE_LEECH_SEED}, .itemTableId = BATTLE_FRONTIER_ITEM_FIGY_BERRY, .evSpread = F_EV_SPREAD_ATTACK, .nature = NATURE_BRAVE }, - [47] = { + [SLATEPORT_TENT_MON_LOMBRE_2] = { .species = SPECIES_LOMBRE, .moves = {MOVE_NATURE_POWER, MOVE_ASTONISH, MOVE_GROWL, MOVE_ABSORB}, .itemTableId = BATTLE_FRONTIER_ITEM_NONE, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_LONELY }, - [48] = { + [SLATEPORT_TENT_MON_NUMEL_2] = { .species = SPECIES_NUMEL, .moves = {MOVE_EMBER, MOVE_GROWL, MOVE_EARTHQUAKE, MOVE_SUNNY_DAY}, .itemTableId = BATTLE_FRONTIER_ITEM_CHARCOAL, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, .nature = NATURE_MODEST }, - [49] = { + [SLATEPORT_TENT_MON_TRAPINCH_2] = { .species = SPECIES_TRAPINCH, .moves = {MOVE_FAINT_ATTACK, MOVE_DIG, MOVE_BITE, MOVE_QUICK_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_ASPEAR_BERRY, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_BRAVE }, - [50] = { + [SLATEPORT_TENT_MON_PELIPPER_2] = { .species = SPECIES_PELIPPER, .moves = {MOVE_WING_ATTACK, MOVE_SUPERSONIC, MOVE_MIST, MOVE_AGILITY}, .itemTableId = BATTLE_FRONTIER_ITEM_WIKI_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [51] = { + [SLATEPORT_TENT_MON_WINGULL_2] = { .species = SPECIES_WINGULL, .moves = {MOVE_WATER_GUN, MOVE_SUPERSONIC, MOVE_GROWL, MOVE_ICY_WIND}, .itemTableId = BATTLE_FRONTIER_ITEM_NEVER_MELT_ICE, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [52] = { + [SLATEPORT_TENT_MON_MARILL_2] = { .species = SPECIES_MARILL, .moves = {MOVE_DOUBLE_EDGE, MOVE_RAIN_DANCE, MOVE_TAIL_WHIP, MOVE_WATER_GUN}, .itemTableId = BATTLE_FRONTIER_ITEM_GANLON_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [53] = { + [SLATEPORT_TENT_MON_SKITTY] = { .species = SPECIES_SKITTY, .moves = {MOVE_ASSIST, MOVE_ATTRACT, MOVE_SING, MOVE_CHARM}, .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_CAREFUL }, - [54] = { + [SLATEPORT_TENT_MON_SEVIPER_2] = { .species = SPECIES_SEVIPER, .moves = {MOVE_SWAGGER, MOVE_WRAP, MOVE_POISON_TAIL, MOVE_HAZE}, .itemTableId = BATTLE_FRONTIER_ITEM_NONE, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, .nature = NATURE_BRAVE }, - [55] = { + [SLATEPORT_TENT_MON_GOLBAT_2] = { .species = SPECIES_GOLBAT, .moves = {MOVE_BITE, MOVE_TORMENT, MOVE_SCREECH, MOVE_POISON_FANG}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, .nature = NATURE_HARDY }, - [56] = { + [SLATEPORT_TENT_MON_RALTS] = { .species = SPECIES_RALTS, .moves = {MOVE_HYPNOSIS, MOVE_IMPRISON, MOVE_PSYCHIC, MOVE_DREAM_EATER}, .itemTableId = BATTLE_FRONTIER_ITEM_MAGO_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_TIMID }, - [57] = { + [SLATEPORT_TENT_MON_SANDSHREW] = { .species = SPECIES_SANDSHREW, .moves = {MOVE_SLASH, MOVE_SAND_ATTACK, MOVE_SAND_TOMB, MOVE_DEFENSE_CURL}, .itemTableId = BATTLE_FRONTIER_ITEM_SOFT_SAND, .evSpread = 0, .nature = NATURE_HARDY }, - [58] = { + [SLATEPORT_TENT_MON_SWALOT] = { .species = SPECIES_SWALOT, .moves = {MOVE_YAWN, MOVE_SLUDGE, MOVE_ENCORE, MOVE_POUND}, .itemTableId = BATTLE_FRONTIER_ITEM_NONE, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_IMPISH }, - [59] = { + [SLATEPORT_TENT_MON_VOLBEAT] = { .species = SPECIES_VOLBEAT, .moves = {MOVE_TACKLE, MOVE_CONFUSE_RAY, MOVE_QUICK_ATTACK, MOVE_DOUBLE_TEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_NONE, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [60] = { + [SLATEPORT_TENT_MON_ILLUMISE] = { .species = SPECIES_ILLUMISE, .moves = {MOVE_CHARM, MOVE_TACKLE, MOVE_ENCORE, MOVE_MOONLIGHT}, .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [61] = { + [SLATEPORT_TENT_MON_KADABRA] = { .species = SPECIES_KADABRA, .moves = {MOVE_DISABLE, MOVE_CONFUSION, MOVE_REFLECT, MOVE_RECOVER}, .itemTableId = BATTLE_FRONTIER_ITEM_NONE, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_QUIRKY }, - [62] = { + [SLATEPORT_TENT_MON_KIRLIA] = { .species = SPECIES_KIRLIA, .moves = {MOVE_CALM_MIND, MOVE_CONFUSION, MOVE_DOUBLE_TEAM, MOVE_GROWL}, .itemTableId = BATTLE_FRONTIER_ITEM_TWISTED_SPOON, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_CAREFUL }, - [63] = { + [SLATEPORT_TENT_MON_BRELOOM] = { .species = SPECIES_BRELOOM, .moves = {MOVE_ABSORB, MOVE_TACKLE, MOVE_STUN_SPORE, MOVE_MEGA_DRAIN}, .itemTableId = BATTLE_FRONTIER_ITEM_NONE, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_NAIVE }, - [64] = { + [SLATEPORT_TENT_MON_PLUSLE_1] = { .species = SPECIES_PLUSLE, .moves = {MOVE_SPARK, MOVE_ENCORE, MOVE_THUNDER_WAVE, MOVE_GROWL}, .itemTableId = BATTLE_FRONTIER_ITEM_LIECHI_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_LONELY }, - [65] = { + [SLATEPORT_TENT_MON_PLUSLE_2] = { .species = SPECIES_PLUSLE, .moves = {MOVE_SPARK, MOVE_FAKE_TEARS, MOVE_SUBSTITUTE, MOVE_QUICK_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_PECHA_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_MILD }, - [66] = { + [SLATEPORT_TENT_MON_ELECTRIKE_2] = { .species = SPECIES_ELECTRIKE, .moves = {MOVE_SPARK, MOVE_CHARGE, MOVE_ROAR, MOVE_THUNDER_WAVE}, .itemTableId = BATTLE_FRONTIER_ITEM_APICOT_BERRY, .evSpread = F_EV_SPREAD_SPEED, .nature = NATURE_TIMID }, - [67] = { + [SLATEPORT_TENT_MON_SWABLU] = { .species = SPECIES_SWABLU, .moves = {MOVE_SING, MOVE_PECK, MOVE_STEEL_WING, MOVE_SAFEGUARD}, .itemTableId = BATTLE_FRONTIER_ITEM_NONE, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_JOLLY }, - [68] = { + [SLATEPORT_TENT_MON_MACHOP] = { .species = SPECIES_MACHOP, .moves = {MOVE_FOCUS_ENERGY, MOVE_VITAL_THROW, MOVE_SEISMIC_TOSS, MOVE_FORESIGHT}, .itemTableId = BATTLE_FRONTIER_ITEM_BLACK_BELT, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [69] = { + [SLATEPORT_TENT_MON_MACHOKE] = { .species = SPECIES_MACHOKE, .moves = {MOVE_FOCUS_ENERGY, MOVE_LEER, MOVE_KARATE_CHOP, MOVE_FORESIGHT}, .itemTableId = BATTLE_FRONTIER_ITEM_NONE, @@ -1248,321 +1248,321 @@ const struct FacilityMon gSlateportBattleTentMons[] = // Verdanturf Battle Tent. const u16 gVerdanturfBattleTentTrainerMons_Brenna[] = { - 4, - 11, - 13, - 18, - 26, + VERDANTURF_TENT_MON_SHROOMISH, + VERDANTURF_TENT_MON_SWALOT, + VERDANTURF_TENT_MON_BALTOY, + VERDANTURF_TENT_MON_LOTAD, + VERDANTURF_TENT_MON_NUZLEAF, -1 }; const u16 gVerdanturfBattleTentTrainerMons_Dilan[] = { - 30, - 37, - 13, - 29, - 42, + VERDANTURF_TENT_MON_GRAVELER, + VERDANTURF_TENT_MON_TRAPINCH, + VERDANTURF_TENT_MON_BALTOY, + VERDANTURF_TENT_MON_SOLROCK, + VERDANTURF_TENT_MON_MACHOKE, -1 }; const u16 gVerdanturfBattleTentTrainerMons_Eliana[] = { - 6, - 7, - 17, - 18, - 40, + VERDANTURF_TENT_MON_MAGIKARP, + VERDANTURF_TENT_MON_BARBOACH, + VERDANTURF_TENT_MON_GOLDEEN_1, + VERDANTURF_TENT_MON_LOTAD, + VERDANTURF_TENT_MON_WAILMER, -1 }; const u16 gVerdanturfBattleTentTrainerMons_Markus[] = { - 6, - 7, - 18, - 24, - 38, + VERDANTURF_TENT_MON_MAGIKARP, + VERDANTURF_TENT_MON_BARBOACH, + VERDANTURF_TENT_MON_LOTAD, + VERDANTURF_TENT_MON_GOLDEEN_2, + VERDANTURF_TENT_MON_TENTACOOL, -1 }; const u16 gVerdanturfBattleTentTrainerMons_Caitlyn[] = { - 0, - 12, - 25, - 28, - 22, - 44, + VERDANTURF_TENT_MON_POOCHYENA, + VERDANTURF_TENT_MON_KECLEON, + VERDANTURF_TENT_MON_ELECTRIKE, + VERDANTURF_TENT_MON_MIGHTYENA, + VERDANTURF_TENT_MON_SKARMORY, + VERDANTURF_TENT_MON_CACNEA, -1 }; const u16 gVerdanturfBattleTentTrainerMons_Desiree[] = { - 8, - 12, - 21, - 22, - 31, + VERDANTURF_TENT_MON_WINGULL, + VERDANTURF_TENT_MON_KECLEON, + VERDANTURF_TENT_MON_SEVIPER, + VERDANTURF_TENT_MON_SKARMORY, + VERDANTURF_TENT_MON_KADABRA, -1 }; const u16 gVerdanturfBattleTentTrainerMons_Ronald[] = { - 1, - 20, - 23, - 25, - 32, + VERDANTURF_TENT_MON_ZIGZAGOON, + VERDANTURF_TENT_MON_LINOONE, + VERDANTURF_TENT_MON_SWELLOW, + VERDANTURF_TENT_MON_ELECTRIKE, + VERDANTURF_TENT_MON_VOLTORB, -1 }; const u16 gVerdanturfBattleTentTrainerMons_Ashten[] = { - 9, - 12, - 27, - 37, - 43, + VERDANTURF_TENT_MON_ARON_1, + VERDANTURF_TENT_MON_KECLEON, + VERDANTURF_TENT_MON_ARON_2, + VERDANTURF_TENT_MON_TRAPINCH, + VERDANTURF_TENT_MON_WHISMUR, -1 }; const u16 gVerdanturfBattleTentTrainerMons_Gerard[] = { - 36, - 7, - 34, - 6, - 40, + VERDANTURF_TENT_MON_MARILL, + VERDANTURF_TENT_MON_BARBOACH, + VERDANTURF_TENT_MON_PELIPPER, + VERDANTURF_TENT_MON_MAGIKARP, + VERDANTURF_TENT_MON_WAILMER, -1 }; const u16 gVerdanturfBattleTentTrainerMons_Bradly[] = { - 26, - 3, - 0, - 2, - 17, + VERDANTURF_TENT_MON_NUZLEAF, + VERDANTURF_TENT_MON_TAILLOW, + VERDANTURF_TENT_MON_POOCHYENA, + VERDANTURF_TENT_MON_DUSTOX, + VERDANTURF_TENT_MON_GOLDEEN_1, -1 }; const u16 gVerdanturfBattleTentTrainerMons_Dennis[] = { - 14, - 37, - 2, - 38, - 27, + VERDANTURF_TENT_MON_NINJASK, + VERDANTURF_TENT_MON_TRAPINCH, + VERDANTURF_TENT_MON_DUSTOX, + VERDANTURF_TENT_MON_TENTACOOL, + VERDANTURF_TENT_MON_ARON_2, -1 }; const u16 gVerdanturfBattleTentTrainerMons_Prestin[] = { - 31, - 28, - 22, - 25, - 44, - 43, - 41, + VERDANTURF_TENT_MON_KADABRA, + VERDANTURF_TENT_MON_MIGHTYENA, + VERDANTURF_TENT_MON_SKARMORY, + VERDANTURF_TENT_MON_ELECTRIKE, + VERDANTURF_TENT_MON_CACNEA, + VERDANTURF_TENT_MON_WHISMUR, + VERDANTURF_TENT_MON_ILLUMISE, -1 }; const u16 gVerdanturfBattleTentTrainerMons_Ernesto[] = { - 33, - 32, - 25, - 35, - 34, + VERDANTURF_TENT_MON_MAGNEMITE, + VERDANTURF_TENT_MON_VOLTORB, + VERDANTURF_TENT_MON_ELECTRIKE, + VERDANTURF_TENT_MON_LOUDRED, + VERDANTURF_TENT_MON_PELIPPER, -1 }; const u16 gVerdanturfBattleTentTrainerMons_Nala[] = { - 1, - 4, - 8, - 11, - 17, - 40, - 34, + VERDANTURF_TENT_MON_ZIGZAGOON, + VERDANTURF_TENT_MON_SHROOMISH, + VERDANTURF_TENT_MON_WINGULL, + VERDANTURF_TENT_MON_SWALOT, + VERDANTURF_TENT_MON_GOLDEEN_1, + VERDANTURF_TENT_MON_WAILMER, + VERDANTURF_TENT_MON_PELIPPER, -1 }; const u16 gVerdanturfBattleTentTrainerMons_Darnell[] = { - 0, - 29, - 35, - 37, - 39, - 43, + VERDANTURF_TENT_MON_POOCHYENA, + VERDANTURF_TENT_MON_SOLROCK, + VERDANTURF_TENT_MON_LOUDRED, + VERDANTURF_TENT_MON_TRAPINCH, + VERDANTURF_TENT_MON_VIGOROTH, + VERDANTURF_TENT_MON_WHISMUR, -1 }; const u16 gVerdanturfBattleTentTrainerMons_Ashlyn[] = { - 29, - 36, - 32, - 30, - 17, - 6, - 44, + VERDANTURF_TENT_MON_SOLROCK, + VERDANTURF_TENT_MON_MARILL, + VERDANTURF_TENT_MON_VOLTORB, + VERDANTURF_TENT_MON_GRAVELER, + VERDANTURF_TENT_MON_GOLDEEN_1, + VERDANTURF_TENT_MON_MAGIKARP, + VERDANTURF_TENT_MON_CACNEA, -1 }; const u16 gVerdanturfBattleTentTrainerMons_Addison[] = { - 0, - 1, - 16, - 31, - 6, + VERDANTURF_TENT_MON_POOCHYENA, + VERDANTURF_TENT_MON_ZIGZAGOON, + VERDANTURF_TENT_MON_SWABLU, + VERDANTURF_TENT_MON_KADABRA, + VERDANTURF_TENT_MON_MAGIKARP, -1 }; const u16 gVerdanturfBattleTentTrainerMons_Justine[] = { - 0, - 1, - 16, - 36, - 18, + VERDANTURF_TENT_MON_POOCHYENA, + VERDANTURF_TENT_MON_ZIGZAGOON, + VERDANTURF_TENT_MON_SWABLU, + VERDANTURF_TENT_MON_MARILL, + VERDANTURF_TENT_MON_LOTAD, -1 }; const u16 gVerdanturfBattleTentTrainerMons_Tyson[] = { - 5, - 15, - 22, - 30, - 16, - 39, - 43, + VERDANTURF_TENT_MON_MACHOP, + VERDANTURF_TENT_MON_MAKUHITA, + VERDANTURF_TENT_MON_SKARMORY, + VERDANTURF_TENT_MON_GRAVELER, + VERDANTURF_TENT_MON_SWABLU, + VERDANTURF_TENT_MON_VIGOROTH, + VERDANTURF_TENT_MON_WHISMUR, -1 }; const u16 gVerdanturfBattleTentTrainerMons_Laila[] = { - 5, - 15, - 19, - 24, - 41, - 43, + VERDANTURF_TENT_MON_MACHOP, + VERDANTURF_TENT_MON_MAKUHITA, + VERDANTURF_TENT_MON_NUMEL_2, + VERDANTURF_TENT_MON_GOLDEEN_2, + VERDANTURF_TENT_MON_ILLUMISE, + VERDANTURF_TENT_MON_WHISMUR, -1 }; const u16 gVerdanturfBattleTentTrainerMons_Waren[] = { - 0, - 9, - 10, - 11, - 23, + VERDANTURF_TENT_MON_POOCHYENA, + VERDANTURF_TENT_MON_ARON_1, + VERDANTURF_TENT_MON_NUMEL_1, + VERDANTURF_TENT_MON_SWALOT, + VERDANTURF_TENT_MON_SWELLOW, -1 }; const u16 gVerdanturfBattleTentTrainerMons_Tobias[] = { - 6, - 7, - 24, - 38, - 40, + VERDANTURF_TENT_MON_MAGIKARP, + VERDANTURF_TENT_MON_BARBOACH, + VERDANTURF_TENT_MON_GOLDEEN_2, + VERDANTURF_TENT_MON_TENTACOOL, + VERDANTURF_TENT_MON_WAILMER, -1 }; const u16 gVerdanturfBattleTentTrainerMons_Josiah[] = { - 8, - 16, - 23, - 34, - 3, + VERDANTURF_TENT_MON_WINGULL, + VERDANTURF_TENT_MON_SWABLU, + VERDANTURF_TENT_MON_SWELLOW, + VERDANTURF_TENT_MON_PELIPPER, + VERDANTURF_TENT_MON_TAILLOW, -1 }; const u16 gVerdanturfBattleTentTrainerMons_Dion[] = { - 14, - 2, - 11, - 39, - 21, - 38, + VERDANTURF_TENT_MON_NINJASK, + VERDANTURF_TENT_MON_DUSTOX, + VERDANTURF_TENT_MON_SWALOT, + VERDANTURF_TENT_MON_VIGOROTH, + VERDANTURF_TENT_MON_SEVIPER, + VERDANTURF_TENT_MON_TENTACOOL, -1 }; const u16 gVerdanturfBattleTentTrainerMons_Kenzie[] = { - 18, - 10, - 16, - 26, - 25, - 27, + VERDANTURF_TENT_MON_LOTAD, + VERDANTURF_TENT_MON_NUMEL_1, + VERDANTURF_TENT_MON_SWABLU, + VERDANTURF_TENT_MON_NUZLEAF, + VERDANTURF_TENT_MON_ELECTRIKE, + VERDANTURF_TENT_MON_ARON_2, -1 }; const u16 gVerdanturfBattleTentTrainerMons_Lillian[] = { - 24, - 34, - 36, - 38, - 5, + VERDANTURF_TENT_MON_GOLDEEN_2, + VERDANTURF_TENT_MON_PELIPPER, + VERDANTURF_TENT_MON_MARILL, + VERDANTURF_TENT_MON_TENTACOOL, + VERDANTURF_TENT_MON_MACHOP, -1 }; const u16 gVerdanturfBattleTentTrainerMons_Lesley[] = { - 26, - 0, - 18, - 13, - 25, + VERDANTURF_TENT_MON_NUZLEAF, + VERDANTURF_TENT_MON_POOCHYENA, + VERDANTURF_TENT_MON_LOTAD, + VERDANTURF_TENT_MON_BALTOY, + VERDANTURF_TENT_MON_ELECTRIKE, -1 }; const u16 gVerdanturfBattleTentTrainerMons_Marquis[] = { - 24, - 34, - 5, - 15, - 7, - 42, + VERDANTURF_TENT_MON_GOLDEEN_2, + VERDANTURF_TENT_MON_PELIPPER, + VERDANTURF_TENT_MON_MACHOP, + VERDANTURF_TENT_MON_MAKUHITA, + VERDANTURF_TENT_MON_BARBOACH, + VERDANTURF_TENT_MON_MACHOKE, -1 }; const u16 gVerdanturfBattleTentTrainerMons_Freddy[] = { - 18, - 21, - 26, - 29, - 41, + VERDANTURF_TENT_MON_LOTAD, + VERDANTURF_TENT_MON_SEVIPER, + VERDANTURF_TENT_MON_NUZLEAF, + VERDANTURF_TENT_MON_SOLROCK, + VERDANTURF_TENT_MON_ILLUMISE, -1 }; const u16 gVerdanturfBattleTentTrainerMons_Cecilia[] = { - 23, - 26, - 27, - 28, - 31, + VERDANTURF_TENT_MON_SWELLOW, + VERDANTURF_TENT_MON_NUZLEAF, + VERDANTURF_TENT_MON_ARON_2, + VERDANTURF_TENT_MON_MIGHTYENA, + VERDANTURF_TENT_MON_KADABRA, -1 }; -const struct BattleFrontierTrainer gVerdanturfBattleTentTrainers[] = +const struct BattleFrontierTrainer gVerdanturfBattleTentTrainers[NUM_BATTLE_TENT_TRAINERS] = { - [0] = { + [VERDANTURF_TENT_TRAINER_BRENNA] = { .facilityClass = FACILITY_CLASS_AROMA_LADY, .trainerName = _("BRENNA"), .speechBefore = {EC_WORD_NO, EC_WORD_DAYS, EC_WORD_GO, EC_WORD_WITHOUT, EC_WORD_MY, EC_MOVE(FAKE_TEARS)}, @@ -1570,7 +1570,7 @@ const struct BattleFrontierTrainer gVerdanturfBattleTentTrainers[] = .speechLose = {EC_WORD_ALL, EC_WORD_I, EC_WORD_EVER, EC_WORD_GET, EC_WORD_IS, EC_MOVE(TORMENT)}, .monSet = gVerdanturfBattleTentTrainerMons_Brenna }, - [1] = { + [VERDANTURF_TENT_TRAINER_DILAN] = { .facilityClass = FACILITY_CLASS_RUIN_MANIAC, .trainerName = _("DILAN"), .speechBefore = {EC_WORD_YOU, EC_WORD_DON_T, EC_WORD_KNOW, EC_WORD_HOW, EC_WORD_BORED, EC_WORD_I_AM}, @@ -1578,7 +1578,7 @@ const struct BattleFrontierTrainer gVerdanturfBattleTentTrainers[] = .speechLose = {EC_WORD_EXCITING, EC_WORD_EXCL_EXCL, EC_WORD_BYE_BYE, EC_WORD_TO, EC_WORD_BEING, EC_WORD_BORED}, .monSet = gVerdanturfBattleTentTrainerMons_Dilan }, - [2] = { + [VERDANTURF_TENT_TRAINER_ELIANA] = { .facilityClass = FACILITY_CLASS_TUBER_F, .trainerName = _("ELIANA"), .speechBefore = {EC_WORD_I_AM, EC_WORD_GOING, EC_WORD_ON, EC_WORD_A, EC_WORD_VACATION, EC_WORD_SOON}, @@ -1586,7 +1586,7 @@ const struct BattleFrontierTrainer gVerdanturfBattleTentTrainers[] = .speechLose = {EC_WORD_NO, EC_WORD_SLEEP, EC_WORD_UNTIL, EC_WORD_I, EC_WORD_GET, EC_WORD_HOME}, .monSet = gVerdanturfBattleTentTrainerMons_Eliana }, - [3] = { + [VERDANTURF_TENT_TRAINER_MARKUS] = { .facilityClass = FACILITY_CLASS_TUBER_M, .trainerName = _("MARKUS"), .speechBefore = {EC_WORD_I_AM, EC_WORD_SMART, EC_WORD_EXCL, EC_WORD_IF_I_LOSE, EC_WORD_I, EC_MOVE(SELF_DESTRUCT)}, @@ -1594,7 +1594,7 @@ const struct BattleFrontierTrainer gVerdanturfBattleTentTrainers[] = .speechLose = {EC_WORD_I_VE, EC_WORD_LOST, EC_WORD_ELLIPSIS, EC_WORD_TIME, EC_WORD_TO, EC_MOVE(SELF_DESTRUCT)}, .monSet = gVerdanturfBattleTentTrainerMons_Markus }, - [4] = { + [VERDANTURF_TENT_TRAINER_CAITLYN] = { .facilityClass = FACILITY_CLASS_LADY, .trainerName = _("CAITLYN"), .speechBefore = {EC_WORD_I_AM, EC_WORD_BORED, EC_WORD_OF, EC_WORD_BEING, EC_WORD_AN, EC_WORD_IDOL}, @@ -1602,7 +1602,7 @@ const struct BattleFrontierTrainer gVerdanturfBattleTentTrainers[] = .speechLose = {EC_WORD_LOSING, EC_WORD_DOESN_T, EC_WORD_BUG, EC_WORD_ME, EC_WORD_AT, EC_WORD_ALL}, .monSet = gVerdanturfBattleTentTrainerMons_Caitlyn }, - [5] = { + [VERDANTURF_TENT_TRAINER_DESIREE] = { .facilityClass = FACILITY_CLASS_BEAUTY, .trainerName = _("DESIREE"), .speechBefore = {EC_WORD_DOESN_T, EC_WORD_MY, EC_WORD_BEAUTY, EC_MOVE(ASTONISH), EC_WORD_YOU, EC_WORD_QUES}, @@ -1610,7 +1610,7 @@ const struct BattleFrontierTrainer gVerdanturfBattleTentTrainers[] = .speechLose = {EC_WORD_MY, EC_WORD_BEAUTY, EC_WORD_DID, EC_WORD_NOTHING, EC_WORD_FOR, EC_WORD_YOU}, .monSet = gVerdanturfBattleTentTrainerMons_Desiree }, - [6] = { + [VERDANTURF_TENT_TRAINER_RONALD] = { .facilityClass = FACILITY_CLASS_RICH_BOY, .trainerName = _("RONALD"), .speechBefore = {EC_WORD_COME_ON, EC_WORD_I, EC_WORD_WILL, EC_WORD_BATTLE, EC_WORD_SERIOUSLY, -1}, @@ -1618,7 +1618,7 @@ const struct BattleFrontierTrainer gVerdanturfBattleTentTrainers[] = .speechLose = {EC_WORD_I, EC_WORD_NEED, EC_WORD_TO, EC_WORD_DO, EC_WORD_A, EC_MOVE2(BATON_PASS)}, .monSet = gVerdanturfBattleTentTrainerMons_Ronald }, - [7] = { + [VERDANTURF_TENT_TRAINER_ASHTEN] = { .facilityClass = FACILITY_CLASS_POKEMANIAC, .trainerName = _("ASHTEN"), .speechBefore = {EC_WORD_OH_YEAH, EC_WORD_ANOTHER, EC_WORD_EXCITING, EC_WORD_BATTLE, EC_WORD_EXCL, -1}, @@ -1626,7 +1626,7 @@ const struct BattleFrontierTrainer gVerdanturfBattleTentTrainers[] = .speechLose = {EC_WORD_THAT_WAS, EC_WORD_AN, EC_WORD_EXCITING, EC_WORD_LOSS, EC_WORD_WOW, EC_WORD_EXCL}, .monSet = gVerdanturfBattleTentTrainerMons_Ashten }, - [8] = { + [VERDANTURF_TENT_TRAINER_GERARD] = { .facilityClass = FACILITY_CLASS_SWIMMER_M, .trainerName = _("GERARD"), .speechBefore = {EC_WORD_LOOK, EC_WORD_AT, EC_WORD_MY, EC_WORD_SUPER, EC_MOVE2(TEETER_DANCE), EC_WORD_EXCL}, @@ -1634,7 +1634,7 @@ const struct BattleFrontierTrainer gVerdanturfBattleTentTrainers[] = .speechLose = {EC_WORD_I, EC_WORD_WON_T, EC_WORD_FORGIVE, EC_WORD_YOU, EC_WORD_FOR, EC_WORD_THAT}, .monSet = gVerdanturfBattleTentTrainerMons_Gerard }, - [9] = { + [VERDANTURF_TENT_TRAINER_BRADLY] = { .facilityClass = FACILITY_CLASS_CAMPER, .trainerName = _("BRADLY"), .speechBefore = {EC_WORD_IT_S, EC_WORD_LONESOME, EC_WORD_BUT, EC_WORD_I, EC_WORD_VACATION, EC_WORD_ALONE}, @@ -1642,7 +1642,7 @@ const struct BattleFrontierTrainer gVerdanturfBattleTentTrainers[] = .speechLose = {EC_WORD_OH, EC_WORD_ELLIPSIS, -1, EC_WORD_ALONE, EC_WORD_AS, EC_WORD_ALWAYS}, .monSet = gVerdanturfBattleTentTrainerMons_Bradly }, - [10] = { + [VERDANTURF_TENT_TRAINER_DENNIS] = { .facilityClass = FACILITY_CLASS_BUG_MANIAC, .trainerName = _("DENNIS"), .speechBefore = {EC_WORD_ARE, EC_WORD_YOU, EC_WORD_REALLY, EC_WORD_STRONG, EC_WORD_QUES, -1}, @@ -1650,7 +1650,7 @@ const struct BattleFrontierTrainer gVerdanturfBattleTentTrainers[] = .speechLose = {EC_WORD_NICE, EC_WORD_GOING, EC_WORD_EXCL, EC_WORD_I, EC_WORD_WAS, EC_WORD_CHILD_S_PLAY}, .monSet = gVerdanturfBattleTentTrainerMons_Dennis }, - [11] = { + [VERDANTURF_TENT_TRAINER_PRESTIN] = { .facilityClass = FACILITY_CLASS_GENTLEMAN, .trainerName = _("PRESTIN"), .speechBefore = {EC_WORD_THIS, EC_WORD_IS, EC_WORD_A, EC_MOVE(NIGHTMARE), EC_WORD_FOR, EC_WORD_YOU}, @@ -1658,7 +1658,7 @@ const struct BattleFrontierTrainer gVerdanturfBattleTentTrainers[] = .speechLose = {EC_WORD_I, EC_WORD_WANT, EC_WORD_TO, EC_WORD_WAKE_UP, EC_WORD_FROM, EC_WORD_THIS}, .monSet = gVerdanturfBattleTentTrainerMons_Prestin }, - [12] = { + [VERDANTURF_TENT_TRAINER_ERNESTO] = { .facilityClass = FACILITY_CLASS_GUITARIST, .trainerName = _("ERNESTO"), .speechBefore = {EC_WORD_THIS, EC_WORD_PARTY, EC_WORD_GOES, EC_WORD_ON, EC_WORD_FOREVER, EC_WORD_EXCL}, @@ -1666,7 +1666,7 @@ const struct BattleFrontierTrainer gVerdanturfBattleTentTrainers[] = .speechLose = {EC_WORD_NO, EC_WORD_EXCL, EC_WORD_THE, EC_WORD_MUSIC, EC_WORD_CAN_T, EC_WORD_STOP}, .monSet = gVerdanturfBattleTentTrainerMons_Ernesto }, - [13] = { + [VERDANTURF_TENT_TRAINER_NALA] = { .facilityClass = FACILITY_CLASS_SCHOOL_KID_F, .trainerName = _("NALA"), .speechBefore = {EC_WORD_I, EC_WORD_WANT, EC_WORD_THE, EC_WORD_WORLD, EC_WORD_MOVIE, EC_WORD_COLLECTION}, @@ -1674,7 +1674,7 @@ const struct BattleFrontierTrainer gVerdanturfBattleTentTrainers[] = .speechLose = {EC_WORD_I, EC_WORD_REFUSE, EC_WORD_TO, EC_WORD_BELIEVE, EC_WORD_THIS, EC_WORD_EXCL}, .monSet = gVerdanturfBattleTentTrainerMons_Nala }, - [14] = { + [VERDANTURF_TENT_TRAINER_DARNELL] = { .facilityClass = FACILITY_CLASS_COOLTRAINER_M, .trainerName = _("DARNELL"), .speechBefore = {EC_WORD_I, EC_WORD_WILL, EC_WORD_GO_EASY, EC_WORD_ON, EC_WORD_YOU, -1}, @@ -1682,7 +1682,7 @@ const struct BattleFrontierTrainer gVerdanturfBattleTentTrainers[] = .speechLose = {EC_WORD_YOU_RE, EC_WORD_TOO, EC_WORD_MUCH, EC_WORD_TO, EC_WORD_TAKE, EC_WORD_ELLIPSIS}, .monSet = gVerdanturfBattleTentTrainerMons_Darnell }, - [15] = { + [VERDANTURF_TENT_TRAINER_ASHLYN] = { .facilityClass = FACILITY_CLASS_COOLTRAINER_F, .trainerName = _("ASHLYN"), .speechBefore = {EC_WORD_I, EC_WORD_LOOK, EC_WORD_TOUGH, EC_WORD_DO, EC_WORD_I, EC_WORD_QUES}, @@ -1690,7 +1690,7 @@ const struct BattleFrontierTrainer gVerdanturfBattleTentTrainers[] = .speechLose = {EC_WORD_YOU_RE, EC_WORD_MEAN, EC_WORD_EXCL_EXCL, -1, -1, -1}, .monSet = gVerdanturfBattleTentTrainerMons_Ashlyn }, - [16] = { + [VERDANTURF_TENT_TRAINER_ADDISON] = { .facilityClass = FACILITY_CLASS_POKEFAN_M, .trainerName = _("ADDISON"), .speechBefore = {EC_WORD_YES, EC_WORD_EXCL, -1, EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_EXCL}, @@ -1698,7 +1698,7 @@ const struct BattleFrontierTrainer gVerdanturfBattleTentTrainers[] = .speechLose = {EC_WORD_WAAAH, EC_WORD_EXCL, -1, EC_WORD_BUT, EC_WORD_WHY, EC_WORD_QUES}, .monSet = gVerdanturfBattleTentTrainerMons_Addison }, - [17] = { + [VERDANTURF_TENT_TRAINER_JUSTINE] = { .facilityClass = FACILITY_CLASS_POKEFAN_F, .trainerName = _("JUSTINE"), .speechBefore = {EC_WORD_YES, EC_WORD_EXCL, -1, EC_WORD_COME_ON, EC_WORD_I_AM, EC_WORD_READY}, @@ -1706,7 +1706,7 @@ const struct BattleFrontierTrainer gVerdanturfBattleTentTrainers[] = .speechLose = {EC_WORD_WOWEE, EC_WORD_EXCL_EXCL, -1, -1, -1, -1}, .monSet = gVerdanturfBattleTentTrainerMons_Justine }, - [18] = { + [VERDANTURF_TENT_TRAINER_TYSON] = { .facilityClass = FACILITY_CLASS_EXPERT_M, .trainerName = _("TYSON"), .speechBefore = {EC_WORD_YOU_RE, EC_WORD_GOING, EC_WORD_TO, EC_WORD_PRESSURE, EC_WORD_ME, EC_WORD_QUES}, @@ -1714,7 +1714,7 @@ const struct BattleFrontierTrainer gVerdanturfBattleTentTrainers[] = .speechLose = {EC_WORD_THIS, EC_WORD_DOESN_T, EC_WORD_MAKE, EC_WORD_ME, EC_WORD_HAPPY, EC_WORD_EXCL}, .monSet = gVerdanturfBattleTentTrainerMons_Tyson }, - [19] = { + [VERDANTURF_TENT_TRAINER_LAILA] = { .facilityClass = FACILITY_CLASS_EXPERT_F, .trainerName = _("LAILA"), .speechBefore = {EC_WORD_A, EC_MOVE2(STRUGGLE), EC_WORD_ISN_T, EC_WORD_VERY, EC_WORD_COOL, -1}, @@ -1722,7 +1722,7 @@ const struct BattleFrontierTrainer gVerdanturfBattleTentTrainers[] = .speechLose = {EC_WORD_YOU_RE, EC_WORD_NOT, EC_WORD_COOL, EC_WORD_BUT, EC_WORD_YOU, EC_WORD_WON}, .monSet = gVerdanturfBattleTentTrainerMons_Laila }, - [20] = { + [VERDANTURF_TENT_TRAINER_WAREN] = { .facilityClass = FACILITY_CLASS_YOUNGSTER, .trainerName = _("WAREN"), .speechBefore = {EC_WORD_DANGER, EC_WORD_EXCL, -1, EC_WORD_I, EC_WORD_SENSE, EC_WORD_DANGER}, @@ -1730,7 +1730,7 @@ const struct BattleFrontierTrainer gVerdanturfBattleTentTrainers[] = .speechLose = {EC_WORD_I, EC_WORD_REALLY, EC_WORD_DID, EC_WORD_SENSE, EC_WORD_DANGER, EC_WORD_ELLIPSIS}, .monSet = gVerdanturfBattleTentTrainerMons_Waren }, - [21] = { + [VERDANTURF_TENT_TRAINER_TOBIAS] = { .facilityClass = FACILITY_CLASS_FISHERMAN, .trainerName = _("TOBIAS"), .speechBefore = {EC_MOVE2(BARRIER), EC_WORD_EXCL_EXCL, -1, EC_WORD_NOW, EC_WORD_COME_ON, EC_WORD_EXCL}, @@ -1738,7 +1738,7 @@ const struct BattleFrontierTrainer gVerdanturfBattleTentTrainers[] = .speechLose = {EC_WORD_I, EC_WORD_SHOULD, EC_WORD_KNOW, EC_WORD_THAT, EC_WORD_IT_S, EC_WORD_HOPELESS}, .monSet = gVerdanturfBattleTentTrainerMons_Tobias }, - [22] = { + [VERDANTURF_TENT_TRAINER_JOSIAH] = { .facilityClass = FACILITY_CLASS_BIRD_KEEPER, .trainerName = _("JOSIAH"), .speechBefore = {EC_WORD_I, EC_WORD_PROMISE, EC_WORD_TO, EC_MOVE(FLY), EC_WORD_IF_I_LOSE, -1}, @@ -1746,7 +1746,7 @@ const struct BattleFrontierTrainer gVerdanturfBattleTentTrainers[] = .speechLose = {EC_WORD_I, EC_WORD_PROMISE, EC_WORD_TO, EC_MOVE(FLY), EC_WORD_SOMETIME, EC_WORD_SOON}, .monSet = gVerdanturfBattleTentTrainerMons_Josiah }, - [23] = { + [VERDANTURF_TENT_TRAINER_DION] = { .facilityClass = FACILITY_CLASS_NINJA_BOY, .trainerName = _("DION"), .speechBefore = {EC_WORD_IT_S, EC_WORD_TRENDY, EC_WORD_UM, EC_WORD_BATTLE, EC_WORD_SOMETHING, -1}, @@ -1754,7 +1754,7 @@ const struct BattleFrontierTrainer gVerdanturfBattleTentTrainers[] = .speechLose = {EC_WORD_WAS, EC_WORD_IT, EC_WORD_ELLIPSIS, EC_WORD_BATTLE, EC_WORD_GOURMET, EC_WORD_QUES}, .monSet = gVerdanturfBattleTentTrainerMons_Dion }, - [24] = { + [VERDANTURF_TENT_TRAINER_KENZIE] = { .facilityClass = FACILITY_CLASS_PARASOL_LADY, .trainerName = _("KENZIE"), .speechBefore = {EC_WORD_THE, EC_MOVE(MORNING_SUN), EC_WORD_GIVES, EC_WORD_ME, EC_MOVE(STRENGTH), -1}, @@ -1762,7 +1762,7 @@ const struct BattleFrontierTrainer gVerdanturfBattleTentTrainers[] = .speechLose = {EC_WORD_YOU_RE, EC_WORD_LIKE, EC_WORD_A, EC_WORD_TERRIBLE, EC_MOVE(SANDSTORM), EC_WORD_ELLIPSIS}, .monSet = gVerdanturfBattleTentTrainerMons_Kenzie }, - [25] = { + [VERDANTURF_TENT_TRAINER_LILLIAN] = { .facilityClass = FACILITY_CLASS_SWIMMER_F, .trainerName = _("LILLIAN"), .speechBefore = {EC_WORD_I, EC_WORD_DO, EC_WORD_THINGS, EC_WORD_AT, EC_WORD_MY, EC_WORD_OWN_TEMPO}, @@ -1770,7 +1770,7 @@ const struct BattleFrontierTrainer gVerdanturfBattleTentTrainers[] = .speechLose = {EC_WORD_AWW, EC_WORD_ELLIPSIS, EC_WORD_I, EC_WORD_NEED, EC_WORD_A, EC_WORD_NAP}, .monSet = gVerdanturfBattleTentTrainerMons_Lillian }, - [26] = { + [VERDANTURF_TENT_TRAINER_LESLEY] = { .facilityClass = FACILITY_CLASS_PICNICKER, .trainerName = _("LESLEY"), .speechBefore = {EC_WORD_YOU, EC_WORD_SHOULD, EC_WORD_NOT, EC_WORD_BE, EC_WORD_LOLLING, EC_WORD_ABOUT}, @@ -1778,7 +1778,7 @@ const struct BattleFrontierTrainer gVerdanturfBattleTentTrainers[] = .speechLose = {EC_WORD_THIS, EC_WORD_SHOULD, EC_WORD_NOT, EC_WORD_BE, EC_WORD_HAPPENING, EC_WORD_EXCL}, .monSet = gVerdanturfBattleTentTrainerMons_Lesley }, - [27] = { + [VERDANTURF_TENT_TRAINER_MARQUIS] = { .facilityClass = FACILITY_CLASS_SAILOR, .trainerName = _("MARQUIS"), .speechBefore = {EC_WORD_NONE, EC_WORD_OF, EC_WORD_THIS, EC_WORD_IS, EC_WORD_MAKING, EC_WORD_SENSE}, @@ -1786,7 +1786,7 @@ const struct BattleFrontierTrainer gVerdanturfBattleTentTrainers[] = .speechLose = {EC_WORD_SHOULD, EC_WORD_I, EC_WORD_CAUSE, EC_WORD_AN, EC_MOVE(UPROAR), EC_WORD_QUES}, .monSet = gVerdanturfBattleTentTrainerMons_Marquis }, - [28] = { + [VERDANTURF_TENT_TRAINER_FREDDY] = { .facilityClass = FACILITY_CLASS_COLLECTOR, .trainerName = _("FREDDY"), .speechBefore = {EC_WORD_I, EC_WORD_ADORE, EC_WORD_THIS, EC_WORD_CUTE, EC_WORD_TELEVISION, EC_WORD_IDOL}, @@ -1794,7 +1794,7 @@ const struct BattleFrontierTrainer gVerdanturfBattleTentTrainers[] = .speechLose = {EC_WORD_LATE, EC_WORD_NIGHT, EC_WORD_TELEVISION, EC_WORD_IS, EC_WORD_MY, EC_WORD_LIFE}, .monSet = gVerdanturfBattleTentTrainerMons_Freddy }, - [29] = { + [VERDANTURF_TENT_TRAINER_CECILIA] = { .facilityClass = FACILITY_CLASS_LASS, .trainerName = _("CECILIA"), .speechBefore = {EC_WORD_MY, EC_WORD_FABULOUS, EC_WORD_CUTENESS, EC_WORD_IS, EC_WORD_IN, EC_WORD_FASHION}, @@ -1804,317 +1804,317 @@ const struct BattleFrontierTrainer gVerdanturfBattleTentTrainers[] = } }; -const struct FacilityMon gVerdanturfBattleTentMons[] = +const struct FacilityMon gVerdanturfBattleTentMons[NUM_VERDANTURF_TENT_MONS] = { - [0] = { + [VERDANTURF_TENT_MON_POOCHYENA] = { .species = SPECIES_POOCHYENA, .moves = {MOVE_ROAR, MOVE_THIEF, MOVE_BITE, MOVE_HOWL}, .itemTableId = BATTLE_FRONTIER_ITEM_BLACK_GLASSES, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_NAUGHTY }, - [1] = { + [VERDANTURF_TENT_MON_ZIGZAGOON] = { .species = SPECIES_ZIGZAGOON, .moves = {MOVE_COVET, MOVE_GROWL, MOVE_PIN_MISSILE, MOVE_MUD_SPORT}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [2] = { + [VERDANTURF_TENT_MON_DUSTOX] = { .species = SPECIES_DUSTOX, .moves = {MOVE_CONFUSION, MOVE_MOONLIGHT, MOVE_PROTECT, MOVE_FLASH}, .itemTableId = BATTLE_FRONTIER_ITEM_SILVER_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE, .nature = NATURE_MODEST }, - [3] = { + [VERDANTURF_TENT_MON_TAILLOW] = { .species = SPECIES_TAILLOW, .moves = {MOVE_AGILITY, MOVE_DOUBLE_TEAM, MOVE_WING_ATTACK, MOVE_GROWL}, .itemTableId = BATTLE_FRONTIER_ITEM_ORAN_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [4] = { + [VERDANTURF_TENT_MON_SHROOMISH] = { .species = SPECIES_SHROOMISH, .moves = {MOVE_HEADBUTT, MOVE_STUN_SPORE, MOVE_LEECH_SEED, MOVE_FLASH}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, .nature = NATURE_RASH }, - [5] = { + [VERDANTURF_TENT_MON_MACHOP] = { .species = SPECIES_MACHOP, .moves = {MOVE_LOW_KICK, MOVE_LEER, MOVE_FOCUS_ENERGY, MOVE_ENCORE}, .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_LONELY }, - [6] = { + [VERDANTURF_TENT_MON_MAGIKARP] = { .species = SPECIES_MAGIKARP, .moves = {MOVE_SPLASH, MOVE_FLAIL, MOVE_TACKLE, MOVE_NONE}, .itemTableId = BATTLE_FRONTIER_ITEM_SILK_SCARF, .evSpread = F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [7] = { + [VERDANTURF_TENT_MON_BARBOACH] = { .species = SPECIES_BARBOACH, .moves = {MOVE_MUD_SLAP, MOVE_WATER_GUN, MOVE_RAIN_DANCE, MOVE_SPARK}, .itemTableId = BATTLE_FRONTIER_ITEM_ASPEAR_BERRY, .evSpread = F_EV_SPREAD_SPEED, .nature = NATURE_HASTY }, - [8] = { + [VERDANTURF_TENT_MON_WINGULL] = { .species = SPECIES_WINGULL, .moves = {MOVE_ATTRACT, MOVE_TWISTER, MOVE_WING_ATTACK, MOVE_SUPERSONIC}, .itemTableId = BATTLE_FRONTIER_ITEM_DRAGON_FANG, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_IMPISH }, - [9] = { + [VERDANTURF_TENT_MON_ARON_1] = { .species = SPECIES_ARON, .moves = {MOVE_ENDEAVOR, MOVE_METAL_CLAW, MOVE_TACKLE, MOVE_ATTRACT}, .itemTableId = BATTLE_FRONTIER_ITEM_PECHA_BERRY, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY }, - [10] = { + [VERDANTURF_TENT_MON_NUMEL_1] = { .species = SPECIES_NUMEL, .moves = {MOVE_EMBER, MOVE_ROCK_SLIDE, MOVE_ROLLOUT, MOVE_GROWL}, .itemTableId = BATTLE_FRONTIER_ITEM_CHARCOAL, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_SASSY }, - [11] = { + [VERDANTURF_TENT_MON_SWALOT] = { .species = SPECIES_SWALOT, .moves = {MOVE_YAWN, MOVE_SLUDGE, MOVE_ACID_ARMOR, MOVE_AMNESIA}, .itemTableId = BATTLE_FRONTIER_ITEM_POISON_BARB, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_BOLD }, - [12] = { + [VERDANTURF_TENT_MON_KECLEON] = { .species = SPECIES_KECLEON, .moves = {MOVE_SUBSTITUTE, MOVE_FAINT_ATTACK, MOVE_DOUBLE_TEAM, MOVE_BIND}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_QUIET }, - [13] = { + [VERDANTURF_TENT_MON_BALTOY] = { .species = SPECIES_BALTOY, .moves = {MOVE_SANDSTORM, MOVE_FLASH, MOVE_SELF_DESTRUCT, MOVE_HARDEN}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_NAUGHTY }, - [14] = { + [VERDANTURF_TENT_MON_NINJASK] = { .species = SPECIES_NINJASK, .moves = {MOVE_DIG, MOVE_SCREECH, MOVE_SWORDS_DANCE, MOVE_LEECH_LIFE}, .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_SASSY }, - [15] = { + [VERDANTURF_TENT_MON_MAKUHITA] = { .species = SPECIES_MAKUHITA, .moves = {MOVE_BULK_UP, MOVE_ARM_THRUST, MOVE_SMELLING_SALT, MOVE_SAND_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_NAUGHTY }, - [16] = { + [VERDANTURF_TENT_MON_SWABLU] = { .species = SPECIES_SWABLU, .moves = {MOVE_REFRESH, MOVE_SAFEGUARD, MOVE_ATTRACT, MOVE_MIRROR_MOVE}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MILD }, - [17] = { + [VERDANTURF_TENT_MON_GOLDEEN_1] = { .species = SPECIES_GOLDEEN, .moves = {MOVE_WATERFALL, MOVE_MUD_SPORT, MOVE_SUPERSONIC, MOVE_DOUBLE_TEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_MYSTIC_WATER, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_GENTLE }, - [18] = { + [VERDANTURF_TENT_MON_LOTAD] = { .species = SPECIES_LOTAD, .moves = {MOVE_GROWL, MOVE_WATER_GUN, MOVE_MEGA_DRAIN, MOVE_PROTECT}, .itemTableId = BATTLE_FRONTIER_ITEM_IAPAPA_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [19] = { + [VERDANTURF_TENT_MON_NUMEL_2] = { .species = SPECIES_NUMEL, .moves = {MOVE_MAGNITUDE, MOVE_EMBER, MOVE_GROWL, MOVE_DEFENSE_CURL}, .itemTableId = BATTLE_FRONTIER_ITEM_CHARCOAL, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_RELAXED }, - [20] = { + [VERDANTURF_TENT_MON_LINOONE] = { .species = SPECIES_LINOONE, .moves = {MOVE_HEADBUTT, MOVE_TICKLE, MOVE_PROTECT, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_IMPISH }, - [21] = { + [VERDANTURF_TENT_MON_SEVIPER] = { .species = SPECIES_SEVIPER, .moves = {MOVE_WRAP, MOVE_GLARE, MOVE_POISON_FANG, MOVE_SWAGGER}, .itemTableId = BATTLE_FRONTIER_ITEM_ASPEAR_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_LONELY }, - [22] = { + [VERDANTURF_TENT_MON_SKARMORY] = { .species = SPECIES_SKARMORY, .moves = {MOVE_AIR_CUTTER, MOVE_SANDSTORM, MOVE_LEER, MOVE_AGILITY}, .itemTableId = BATTLE_FRONTIER_ITEM_MACHO_BRACE, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_BASHFUL }, - [23] = { + [VERDANTURF_TENT_MON_SWELLOW] = { .species = SPECIES_SWELLOW, .moves = {MOVE_AGILITY, MOVE_WING_ATTACK, MOVE_DOUBLE_TEAM, MOVE_SUPERSONIC}, .itemTableId = BATTLE_FRONTIER_ITEM_SHARP_BEAK, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_NAUGHTY }, - [24] = { + [VERDANTURF_TENT_MON_GOLDEEN_2] = { .species = SPECIES_GOLDEEN, .moves = {MOVE_PECK, MOVE_SUPERSONIC, MOVE_PSYBEAM, MOVE_RAIN_DANCE}, .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, .nature = NATURE_GENTLE }, - [25] = { + [VERDANTURF_TENT_MON_ELECTRIKE] = { .species = SPECIES_ELECTRIKE, .moves = {MOVE_SHOCK_WAVE, MOVE_TACKLE, MOVE_CHARGE, MOVE_THUNDER_WAVE}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_MILD }, - [26] = { + [VERDANTURF_TENT_MON_NUZLEAF] = { .species = SPECIES_NUZLEAF, .moves = {MOVE_SUNNY_DAY, MOVE_TORMENT, MOVE_FAKE_OUT, MOVE_THIEF}, .itemTableId = BATTLE_FRONTIER_ITEM_BLACK_GLASSES, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_BOLD }, - [27] = { + [VERDANTURF_TENT_MON_ARON_2] = { .species = SPECIES_ARON, .moves = {MOVE_TAKE_DOWN, MOVE_METAL_CLAW, MOVE_IRON_DEFENSE, MOVE_ATTRACT}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [28] = { + [VERDANTURF_TENT_MON_MIGHTYENA] = { .species = SPECIES_MIGHTYENA, .moves = {MOVE_HOWL, MOVE_TAKE_DOWN, MOVE_ODOR_SLEUTH, MOVE_SAND_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [29] = { + [VERDANTURF_TENT_MON_SOLROCK] = { .species = SPECIES_SOLROCK, .moves = {MOVE_HARDEN, MOVE_FIRE_SPIN, MOVE_MIMIC, MOVE_PSYWAVE}, .itemTableId = BATTLE_FRONTIER_ITEM_TWISTED_SPOON, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [30] = { + [VERDANTURF_TENT_MON_GRAVELER] = { .species = SPECIES_GRAVELER, .moves = {MOVE_ROLLOUT, MOVE_ROCK_SMASH, MOVE_SANDSTORM, MOVE_BLOCK}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_IMPISH }, - [31] = { + [VERDANTURF_TENT_MON_KADABRA] = { .species = SPECIES_KADABRA, .moves = {MOVE_ENCORE, MOVE_PSYBEAM, MOVE_DISABLE, MOVE_KINESIS}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, .nature = NATURE_QUIET }, - [32] = { + [VERDANTURF_TENT_MON_VOLTORB] = { .species = SPECIES_VOLTORB, .moves = {MOVE_PROTECT, MOVE_SELF_DESTRUCT, MOVE_SPARK, MOVE_SCREECH}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_BASHFUL }, - [33] = { + [VERDANTURF_TENT_MON_MAGNEMITE] = { .species = SPECIES_MAGNEMITE, .moves = {MOVE_METAL_SOUND, MOVE_SUPERSONIC, MOVE_THUNDER_WAVE, MOVE_SHOCK_WAVE}, .itemTableId = BATTLE_FRONTIER_ITEM_MAGNET, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_SERIOUS }, - [34] = { + [VERDANTURF_TENT_MON_PELIPPER] = { .species = SPECIES_PELIPPER, .moves = {MOVE_WING_ATTACK, MOVE_MIST, MOVE_AGILITY, MOVE_PROTECT}, .itemTableId = BATTLE_FRONTIER_ITEM_FIGY_BERRY, .evSpread = 0, .nature = NATURE_BRAVE }, - [35] = { + [VERDANTURF_TENT_MON_LOUDRED] = { .species = SPECIES_LOUDRED, .moves = {MOVE_HOWL, MOVE_UPROAR, MOVE_REST, MOVE_SCREECH}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_CALM }, - [36] = { + [VERDANTURF_TENT_MON_MARILL] = { .species = SPECIES_MARILL, .moves = {MOVE_ROLLOUT, MOVE_DEFENSE_CURL, MOVE_TAIL_WHIP, MOVE_BUBBLE_BEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_RAWST_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_JOLLY }, - [37] = { + [VERDANTURF_TENT_MON_TRAPINCH] = { .species = SPECIES_TRAPINCH, .moves = {MOVE_DIG, MOVE_ROCK_TOMB, MOVE_SANDSTORM, MOVE_FAINT_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_NONE, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_NAUGHTY }, - [38] = { + [VERDANTURF_TENT_MON_TENTACOOL] = { .species = SPECIES_TENTACOOL, .moves = {MOVE_SCREECH, MOVE_CONFUSE_RAY, MOVE_WRAP, MOVE_ATTRACT}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [39] = { + [VERDANTURF_TENT_MON_VIGOROTH] = { .species = SPECIES_VIGOROTH, .moves = {MOVE_ENCORE, MOVE_SLACK_OFF, MOVE_YAWN, MOVE_SECRET_POWER}, .itemTableId = BATTLE_FRONTIER_ITEM_MENTAL_HERB, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_QUIRKY }, - [40] = { + [VERDANTURF_TENT_MON_WAILMER] = { .species = SPECIES_WAILMER, .moves = {MOVE_WATER_PULSE, MOVE_ROLLOUT, MOVE_CURSE, MOVE_PROTECT}, .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, .evSpread = F_EV_SPREAD_HP, .nature = NATURE_RELAXED }, - [41] = { + [VERDANTURF_TENT_MON_ILLUMISE] = { .species = SPECIES_ILLUMISE, .moves = {MOVE_TACKLE, MOVE_SWEET_SCENT, MOVE_WISH, MOVE_ENCORE}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [42] = { + [VERDANTURF_TENT_MON_MACHOKE] = { .species = SPECIES_MACHOKE, .moves = {MOVE_LEER, MOVE_KARATE_CHOP, MOVE_BULK_UP, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_CALM }, - [43] = { + [VERDANTURF_TENT_MON_WHISMUR] = { .species = SPECIES_WHISMUR, .moves = {MOVE_SECRET_POWER, MOVE_SUPERSONIC, MOVE_STOMP, MOVE_ROAR}, .itemTableId = BATTLE_FRONTIER_ITEM_RAWST_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_QUIRKY }, - [44] = { + [VERDANTURF_TENT_MON_CACNEA] = { .species = SPECIES_CACNEA, .moves = {MOVE_INGRAIN, MOVE_LEECH_SEED, MOVE_NEEDLE_ARM, MOVE_GROWTH}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, @@ -2126,324 +2126,324 @@ const struct FacilityMon gVerdanturfBattleTentMons[] = // Fallarbor Battle Tent. const u16 gFallarborBattleTentTrainerMons_Amber[] = { - 39, - 40, - 41, - 42, - 43, - 44, + FALLARBOR_TENT_MON_SWALOT, + FALLARBOR_TENT_MON_SHROOMISH, + FALLARBOR_TENT_MON_KIRLIA, + FALLARBOR_TENT_MON_LOMBRE, + FALLARBOR_TENT_MON_NUZLEAF, + FALLARBOR_TENT_MON_CACNEA, -1 }; const u16 gFallarborBattleTentTrainerMons_Javier[] = { - 6, - 35, - 36, - 37, - 38, - 44, + FALLARBOR_TENT_MON_SOLROCK, + FALLARBOR_TENT_MON_TRAPINCH, + FALLARBOR_TENT_MON_BALTOY, + FALLARBOR_TENT_MON_GRAVELER, + FALLARBOR_TENT_MON_SANDSHREW, + FALLARBOR_TENT_MON_CACNEA, -1 }; const u16 gFallarborBattleTentTrainerMons_Natalie[] = { - 5, - 29, - 30, - 32, - 34, + FALLARBOR_TENT_MON_MAGIKARP, + FALLARBOR_TENT_MON_PELIPPER, + FALLARBOR_TENT_MON_BARBOACH, + FALLARBOR_TENT_MON_MARILL, + FALLARBOR_TENT_MON_GOLDEEN_2, -1 }; const u16 gFallarborBattleTentTrainerMons_Treve[] = { - 28, - 29, - 30, - 32, - 33, + FALLARBOR_TENT_MON_WINGULL, + FALLARBOR_TENT_MON_PELIPPER, + FALLARBOR_TENT_MON_BARBOACH, + FALLARBOR_TENT_MON_MARILL, + FALLARBOR_TENT_MON_GOLDEEN_1, -1 }; const u16 gFallarborBattleTentTrainerMons_Arianna[] = { - 18, - 23, - 24, - 27, - 44, + FALLARBOR_TENT_MON_ELECTRIKE, + FALLARBOR_TENT_MON_LINOONE_2, + FALLARBOR_TENT_MON_MIGHTYENA, + FALLARBOR_TENT_MON_GOLBAT, + FALLARBOR_TENT_MON_CACNEA, -1 }; const u16 gFallarborBattleTentTrainerMons_Jadyn[] = { - 0, - 22, - 24, - 27, - 32, - 39, + FALLARBOR_TENT_MON_NUMEL, + FALLARBOR_TENT_MON_LOUDRED, + FALLARBOR_TENT_MON_MIGHTYENA, + FALLARBOR_TENT_MON_GOLBAT, + FALLARBOR_TENT_MON_MARILL, + FALLARBOR_TENT_MON_SWALOT, -1 }; const u16 gFallarborBattleTentTrainerMons_Gerardo[] = { - 6, - 18, - 23, - 24, - 29, + FALLARBOR_TENT_MON_SOLROCK, + FALLARBOR_TENT_MON_ELECTRIKE, + FALLARBOR_TENT_MON_LINOONE_2, + FALLARBOR_TENT_MON_MIGHTYENA, + FALLARBOR_TENT_MON_PELIPPER, -1 }; const u16 gFallarborBattleTentTrainerMons_Jonn[] = { - 16, - 17, - 21, - 22, - 37, + FALLARBOR_TENT_MON_ARON_1, + FALLARBOR_TENT_MON_ARON_2, + FALLARBOR_TENT_MON_WHISMUR, + FALLARBOR_TENT_MON_LOUDRED, + FALLARBOR_TENT_MON_GRAVELER, -1 }; const u16 gFallarborBattleTentTrainerMons_Esteban[] = { - 5, - 28, - 30, - 33, - 42, + FALLARBOR_TENT_MON_MAGIKARP, + FALLARBOR_TENT_MON_WINGULL, + FALLARBOR_TENT_MON_BARBOACH, + FALLARBOR_TENT_MON_GOLDEEN_1, + FALLARBOR_TENT_MON_LOMBRE, -1 }; const u16 gFallarborBattleTentTrainerMons_Jameson[] = { - 1, - 2, - 3, - 5, - 9, + FALLARBOR_TENT_MON_LINOONE_1, + FALLARBOR_TENT_MON_PLUSLE, + FALLARBOR_TENT_MON_POOCHYENA, + FALLARBOR_TENT_MON_MAGIKARP, + FALLARBOR_TENT_MON_NINCADA, -1 }; const u16 gFallarborBattleTentTrainerMons_Alanzo[] = { - 9, - 10, - 11, - 12, - 13, - 14, - 15, + FALLARBOR_TENT_MON_NINCADA, + FALLARBOR_TENT_MON_BEAUTIFLY, + FALLARBOR_TENT_MON_DUSTOX, + FALLARBOR_TENT_MON_ILLUMISE, + FALLARBOR_TENT_MON_VOLBEAT, + FALLARBOR_TENT_MON_NINJASK_1, + FALLARBOR_TENT_MON_NINJASK_2, -1 }; const u16 gFallarborBattleTentTrainerMons_Howard[] = { - 18, - 23, - 31, - 38, - 43, + FALLARBOR_TENT_MON_ELECTRIKE, + FALLARBOR_TENT_MON_LINOONE_2, + FALLARBOR_TENT_MON_WAILMER, + FALLARBOR_TENT_MON_SANDSHREW, + FALLARBOR_TENT_MON_NUZLEAF, -1 }; const u16 gFallarborBattleTentTrainerMons_Conrad[] = { - 18, - 19, - 20, - 21, - 22, + FALLARBOR_TENT_MON_ELECTRIKE, + FALLARBOR_TENT_MON_MAGNEMITE, + FALLARBOR_TENT_MON_VOLTORB, + FALLARBOR_TENT_MON_WHISMUR, + FALLARBOR_TENT_MON_LOUDRED, -1 }; const u16 gFallarborBattleTentTrainerMons_Makenna[] = { - 4, - 21, - 25, - 36, - 40, + FALLARBOR_TENT_MON_KECLEON, + FALLARBOR_TENT_MON_WHISMUR, + FALLARBOR_TENT_MON_SWABLU, + FALLARBOR_TENT_MON_BALTOY, + FALLARBOR_TENT_MON_SHROOMISH, -1 }; const u16 gFallarborBattleTentTrainerMons_Brayan[] = { - 0, - 4, - 6, - 12, - 19, - 23, - 28, + FALLARBOR_TENT_MON_NUMEL, + FALLARBOR_TENT_MON_KECLEON, + FALLARBOR_TENT_MON_SOLROCK, + FALLARBOR_TENT_MON_ILLUMISE, + FALLARBOR_TENT_MON_MAGNEMITE, + FALLARBOR_TENT_MON_LINOONE_2, + FALLARBOR_TENT_MON_WINGULL, -1 }; const u16 gFallarborBattleTentTrainerMons_Mariana[] = { - 0, - 4, - 13, - 19, - 28, - 30, - 37, + FALLARBOR_TENT_MON_NUMEL, + FALLARBOR_TENT_MON_KECLEON, + FALLARBOR_TENT_MON_VOLBEAT, + FALLARBOR_TENT_MON_MAGNEMITE, + FALLARBOR_TENT_MON_WINGULL, + FALLARBOR_TENT_MON_BARBOACH, + FALLARBOR_TENT_MON_GRAVELER, -1 }; const u16 gFallarborBattleTentTrainerMons_Sheldon[] = { - 2, - 3, - 21, - 31, - 39, + FALLARBOR_TENT_MON_PLUSLE, + FALLARBOR_TENT_MON_POOCHYENA, + FALLARBOR_TENT_MON_WHISMUR, + FALLARBOR_TENT_MON_WAILMER, + FALLARBOR_TENT_MON_SWALOT, -1 }; const u16 gFallarborBattleTentTrainerMons_Gianna[] = { - 1, - 2, - 30, - 32, - 41, + FALLARBOR_TENT_MON_LINOONE_1, + FALLARBOR_TENT_MON_PLUSLE, + FALLARBOR_TENT_MON_BARBOACH, + FALLARBOR_TENT_MON_MARILL, + FALLARBOR_TENT_MON_KIRLIA, -1 }; const u16 gFallarborBattleTentTrainerMons_Yahir[] = { - 4, - 8, - 15, - 17, - 22, - 24, + FALLARBOR_TENT_MON_KECLEON, + FALLARBOR_TENT_MON_MACHOKE, + FALLARBOR_TENT_MON_NINJASK_2, + FALLARBOR_TENT_MON_ARON_2, + FALLARBOR_TENT_MON_LOUDRED, + FALLARBOR_TENT_MON_MIGHTYENA, -1 }; const u16 gFallarborBattleTentTrainerMons_Britney[] = { - 4, - 7, - 14, - 20, - 23, - 43, + FALLARBOR_TENT_MON_KECLEON, + FALLARBOR_TENT_MON_MAKUHITA, + FALLARBOR_TENT_MON_NINJASK_1, + FALLARBOR_TENT_MON_VOLTORB, + FALLARBOR_TENT_MON_LINOONE_2, + FALLARBOR_TENT_MON_NUZLEAF, -1 }; const u16 gFallarborBattleTentTrainerMons_Hecter[] = { - 0, - 1, - 2, - 5, - 9, - 35, + FALLARBOR_TENT_MON_NUMEL, + FALLARBOR_TENT_MON_LINOONE_1, + FALLARBOR_TENT_MON_PLUSLE, + FALLARBOR_TENT_MON_MAGIKARP, + FALLARBOR_TENT_MON_NINCADA, + FALLARBOR_TENT_MON_TRAPINCH, -1 }; const u16 gFallarborBattleTentTrainerMons_Tannor[] = { - 5, - 30, - 31, - 33, - 34, + FALLARBOR_TENT_MON_MAGIKARP, + FALLARBOR_TENT_MON_BARBOACH, + FALLARBOR_TENT_MON_WAILMER, + FALLARBOR_TENT_MON_GOLDEEN_1, + FALLARBOR_TENT_MON_GOLDEEN_2, -1 }; const u16 gFallarborBattleTentTrainerMons_Benji[] = { - 25, - 26, - 27, - 28, - 29, + FALLARBOR_TENT_MON_SWABLU, + FALLARBOR_TENT_MON_SKARMORY, + FALLARBOR_TENT_MON_GOLBAT, + FALLARBOR_TENT_MON_WINGULL, + FALLARBOR_TENT_MON_PELIPPER, -1 }; const u16 gFallarborBattleTentTrainerMons_Rory[] = { - 9, - 11, - 14, - 15, - 27, - 39, + FALLARBOR_TENT_MON_NINCADA, + FALLARBOR_TENT_MON_DUSTOX, + FALLARBOR_TENT_MON_NINJASK_1, + FALLARBOR_TENT_MON_NINJASK_2, + FALLARBOR_TENT_MON_GOLBAT, + FALLARBOR_TENT_MON_SWALOT, -1 }; const u16 gFallarborBattleTentTrainerMons_Eleanor[] = { - 23, - 28, - 31, - 36, - 38, - 42, - 44, + FALLARBOR_TENT_MON_LINOONE_2, + FALLARBOR_TENT_MON_WINGULL, + FALLARBOR_TENT_MON_WAILMER, + FALLARBOR_TENT_MON_BALTOY, + FALLARBOR_TENT_MON_SANDSHREW, + FALLARBOR_TENT_MON_LOMBRE, + FALLARBOR_TENT_MON_CACNEA, -1 }; const u16 gFallarborBattleTentTrainerMons_Evelyn[] = { - 29, - 31, - 32, - 33, - 34, + FALLARBOR_TENT_MON_PELIPPER, + FALLARBOR_TENT_MON_WAILMER, + FALLARBOR_TENT_MON_MARILL, + FALLARBOR_TENT_MON_GOLDEEN_1, + FALLARBOR_TENT_MON_GOLDEEN_2, -1 }; const u16 gFallarborBattleTentTrainerMons_Arielle[] = { - 1, - 3, - 38, - 39, - 41, + FALLARBOR_TENT_MON_LINOONE_1, + FALLARBOR_TENT_MON_POOCHYENA, + FALLARBOR_TENT_MON_SANDSHREW, + FALLARBOR_TENT_MON_SWALOT, + FALLARBOR_TENT_MON_KIRLIA, -1 }; const u16 gFallarborBattleTentTrainerMons_Connar[] = { - 7, - 8, - 28, - 29, - 31, - 32, + FALLARBOR_TENT_MON_MAKUHITA, + FALLARBOR_TENT_MON_MACHOKE, + FALLARBOR_TENT_MON_WINGULL, + FALLARBOR_TENT_MON_PELIPPER, + FALLARBOR_TENT_MON_WAILMER, + FALLARBOR_TENT_MON_MARILL, -1 }; const u16 gFallarborBattleTentTrainerMons_Maurice[] = { - 4, - 5, - 6, - 12, - 13, + FALLARBOR_TENT_MON_KECLEON, + FALLARBOR_TENT_MON_MAGIKARP, + FALLARBOR_TENT_MON_SOLROCK, + FALLARBOR_TENT_MON_ILLUMISE, + FALLARBOR_TENT_MON_VOLBEAT, -1 }; const u16 gFallarborBattleTentTrainerMons_Kianna[] = { - 22, - 24, - 26, - 27, - 34, - 37, + FALLARBOR_TENT_MON_LOUDRED, + FALLARBOR_TENT_MON_MIGHTYENA, + FALLARBOR_TENT_MON_SKARMORY, + FALLARBOR_TENT_MON_GOLBAT, + FALLARBOR_TENT_MON_GOLDEEN_2, + FALLARBOR_TENT_MON_GRAVELER, -1 }; -const struct BattleFrontierTrainer gFallarborBattleTentTrainers[] = +const struct BattleFrontierTrainer gFallarborBattleTentTrainers[NUM_BATTLE_TENT_TRAINERS] = { - [0] = { + [FALLARBOR_TENT_TRAINER_AMBER] = { .facilityClass = FACILITY_CLASS_AROMA_LADY, .trainerName = _("AMBER"), .speechBefore = {EC_WORD_I, EC_WORD_HAVE, EC_WORD_TO, EC_WORD_DIET, EC_WORD_EVERY, EC_WORD_DAY}, @@ -2451,7 +2451,7 @@ const struct BattleFrontierTrainer gFallarborBattleTentTrainers[] = .speechLose = {EC_WORD_IF, EC_WORD_YOU, EC_WORD_GIVE_UP, EC_WORD_YOU, EC_WORD_WILL, EC_WORD_LOSE}, .monSet = gFallarborBattleTentTrainerMons_Amber }, - [1] = { + [FALLARBOR_TENT_TRAINER_JAVIER] = { .facilityClass = FACILITY_CLASS_RUIN_MANIAC, .trainerName = _("JAVIER"), .speechBefore = {EC_WORD_I, EC_WORD_NEVER, EC_WORD_EVER, EC_WORD_HAVE, EC_WORD_ENOUGH, EC_WORD_MONEY}, @@ -2459,7 +2459,7 @@ const struct BattleFrontierTrainer gFallarborBattleTentTrainers[] = .speechLose = {EC_WORD_I, EC_WORD_NEED, EC_WORD_MONEY, EC_WORD_FOR, EC_WORD_A, EC_WORD_BIKE}, .monSet = gFallarborBattleTentTrainerMons_Javier }, - [2] = { + [FALLARBOR_TENT_TRAINER_NATALIA] = { .facilityClass = FACILITY_CLASS_TUBER_F, .trainerName = _("NATALIE"), .speechBefore = {EC_WORD_THE, EC_WORD_WAY, EC_WORD_I, EC_WORD_BATTLE, EC_WORD_IS, EC_WORD_WEIRD}, @@ -2467,7 +2467,7 @@ const struct BattleFrontierTrainer gFallarborBattleTentTrainers[] = .speechLose = {EC_WORD_GIVE_ME, EC_WORD_AN, EC_WORD_EASY, EC_WORD_MATCH, EC_WORD_NEXT, EC_WORD_TIME}, .monSet = gFallarborBattleTentTrainerMons_Natalie }, - [3] = { + [FALLARBOR_TENT_TRAINER_TREVE] = { .facilityClass = FACILITY_CLASS_TUBER_M, .trainerName = _("TREVE"), .speechBefore = {EC_WORD_LOOK, EC_WORD_AT, EC_WORD_MY, EC_MOVE2(METRONOME), EC_WORD_AND, EC_WORD_SLEEP}, @@ -2475,7 +2475,7 @@ const struct BattleFrontierTrainer gFallarborBattleTentTrainers[] = .speechLose = {EC_WORD_MY, EC_MOVE(HYPNOSIS), EC_WORD_DIDN_T, EC_WORD_WORK, EC_WORD_ELLIPSIS, -1}, .monSet = gFallarborBattleTentTrainerMons_Treve }, - [4] = { + [FALLARBOR_TENT_TRAINER_ARIANNA] = { .facilityClass = FACILITY_CLASS_LADY, .trainerName = _("ARIANNA"), .speechBefore = {EC_WORD_IF_I_WIN, EC_WORD_GIVE_ME, EC_WORD_POKEMON, EC_WORD_FOR, EC_WORD_MY, EC_WORD_COLLECTION}, @@ -2483,7 +2483,7 @@ const struct BattleFrontierTrainer gFallarborBattleTentTrainers[] = .speechLose = {EC_WORD_YOUR, EC_WORD_POKEMON, EC_WORD_ARE, EC_WORD_SOMETHING, EC_WORD_ELSE, EC_WORD_ELLIPSIS}, .monSet = gFallarborBattleTentTrainerMons_Arianna }, - [5] = { + [FALLARBOR_TENT_TRAINER_JADYN] = { .facilityClass = FACILITY_CLASS_BEAUTY, .trainerName = _("JADYN"), .speechBefore = {EC_WORD_MY, EC_WORD_NAME, EC_WORD_IS, EC_WORD_REALLY, EC_WORD_A, EC_WORD_MYSTERY}, @@ -2491,7 +2491,7 @@ const struct BattleFrontierTrainer gFallarborBattleTentTrainers[] = .speechLose = {EC_WORD_MY, EC_WORD_NAME, EC_WORD_QUES, EC_WORD_I_AM, EC_WORD_YOUR, EC_WORD_MOTHER}, .monSet = gFallarborBattleTentTrainerMons_Jadyn }, - [6] = { + [FALLARBOR_TENT_TRAINER_GERARDO] = { .facilityClass = FACILITY_CLASS_RICH_BOY, .trainerName = _("GERARDO"), .speechBefore = {EC_WORD_I_AM, EC_WORD_THE, EC_WORD_BEST, EC_WORD_HERO, EC_WORD_EVER, EC_WORD_EXCL}, @@ -2499,7 +2499,7 @@ const struct BattleFrontierTrainer gFallarborBattleTentTrainers[] = .speechLose = {EC_WORD_HUH_QUES, EC_WORD_YOU, EC_WORD_WERE, EC_WORD_RIGHT, EC_WORD_QUES, -1}, .monSet = gFallarborBattleTentTrainerMons_Gerardo }, - [7] = { + [FALLARBOR_TENT_TRAINER_JONN] = { .facilityClass = FACILITY_CLASS_POKEMANIAC, .trainerName = _("JONN"), .speechBefore = {EC_WORD_THE, EC_WORD_WORLD, EC_MOVE2(SUPERPOWER), EC_MOVE2(STOMP), EC_WORD_CONTEST, EC_WORD_EXCL_EXCL}, @@ -2507,7 +2507,7 @@ const struct BattleFrontierTrainer gFallarborBattleTentTrainers[] = .speechLose = {EC_WORD_I, EC_WORD_GIVE_UP, EC_WORD_EXCL, EC_WORD_YOU_RE, EC_WORD_NO_1, EC_WORD_EXCL}, .monSet = gFallarborBattleTentTrainerMons_Jonn }, - [8] = { + [FALLARBOR_TENT_TRAINER_ESTEBAN] = { .facilityClass = FACILITY_CLASS_SWIMMER_M, .trainerName = _("ESTEBAN"), .speechBefore = {EC_WORD_YOU_RE, EC_WORD_A, EC_WORD_GOOD, EC_WORD_TRAINER, EC_WORD_QUES, EC_WORD_UNBELIEVABLE}, @@ -2515,7 +2515,7 @@ const struct BattleFrontierTrainer gFallarborBattleTentTrainers[] = .speechLose = {EC_WORD_YOU_RE, EC_WORD_MUCH, EC_WORD_TOO, EC_WORD_MUCH, EC_WORD_FOR, EC_WORD_ME}, .monSet = gFallarborBattleTentTrainerMons_Esteban }, - [9] = { + [FALLARBOR_TENT_TRAINER_JAMESON] = { .facilityClass = FACILITY_CLASS_CAMPER, .trainerName = _("JAMESON"), .speechBefore = {EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_ARE, EC_WORD_SILKY, EC_WORD_SMOOTH, EC_WORD_EXCL}, @@ -2523,7 +2523,7 @@ const struct BattleFrontierTrainer gFallarborBattleTentTrainers[] = .speechLose = {EC_WORD_MY, EC_WORD_POKEMON, EC_MOVE2(STRUGGLE), EC_WORD_IN, EC_WORD_YOUR, EC_WORD_STICKY_HOLD}, .monSet = gFallarborBattleTentTrainerMons_Jameson }, - [10] = { + [FALLARBOR_TENT_TRAINER_ALANZO] = { .facilityClass = FACILITY_CLASS_BUG_MANIAC, .trainerName = _("ALANZO"), .speechBefore = {EC_MOVE2(FORESIGHT), EC_WORD_IS, EC_WORD_A, EC_WORD_POWER, EC_WORD_I, EC_WORD_HAVE}, @@ -2531,7 +2531,7 @@ const struct BattleFrontierTrainer gFallarborBattleTentTrainers[] = .speechLose = {EC_WORD_MY, EC_MOVE2(FORESIGHT), EC_WORD_IS, EC_WORD_ALWAYS, EC_WORD_RIGHT, EC_WORD_EXCL}, .monSet = gFallarborBattleTentTrainerMons_Alanzo }, - [11] = { + [FALLARBOR_TENT_TRAINER_HOWARD] = { .facilityClass = FACILITY_CLASS_GENTLEMAN, .trainerName = _("HOWARD"), .speechBefore = {EC_WORD_YOUR, EC_WORD_POKEMON, EC_WORD_CAN_T, EC_WORD_BEAT, EC_WORD_ME, -1}, @@ -2539,7 +2539,7 @@ const struct BattleFrontierTrainer gFallarborBattleTentTrainers[] = .speechLose = {EC_WORD_YOU, EC_WORD_WOULD, EC_WORD_GO, EC_WORD_ALL, EC_WORD_OUT, EC_WORD_ELLIPSIS}, .monSet = gFallarborBattleTentTrainerMons_Howard }, - [12] = { + [FALLARBOR_TENT_TRAINER_CONRAD] = { .facilityClass = FACILITY_CLASS_GUITARIST, .trainerName = _("CONRAD"), .speechBefore = {EC_WORD_YOUR, EC_WORD_POKEMON, EC_WORD_ARE, EC_WORD_PRETTY, EC_WORD_WILD, EC_WORD_EXCL}, @@ -2547,7 +2547,7 @@ const struct BattleFrontierTrainer gFallarborBattleTentTrainers[] = .speechLose = {EC_WORD_MY, EC_WORD_MUSIC, EC_WORD_WILL, EC_WORD_PLAY, EC_WORD_ON, EC_WORD_ELLIPSIS}, .monSet = gFallarborBattleTentTrainerMons_Conrad }, - [13] = { + [FALLARBOR_TENT_TRAINER_MAKENNA] = { .facilityClass = FACILITY_CLASS_SCHOOL_KID_F, .trainerName = _("MAKENNA"), .speechBefore = {EC_WORD_SHOW, EC_WORD_ME, EC_WORD_THAT, EC_WORD_YOU, EC_WORD_MEAN, EC_WORD_IT}, @@ -2555,7 +2555,7 @@ const struct BattleFrontierTrainer gFallarborBattleTentTrainers[] = .speechLose = {EC_WORD_AWW, EC_WORD_I, EC_WORD_STUDY, EC_WORD_EVERY, EC_WORD_DAY, EC_WORD_TOO}, .monSet = gFallarborBattleTentTrainerMons_Makenna }, - [14] = { + [FALLARBOR_TENT_TRAINER_BRAYAN] = { .facilityClass = FACILITY_CLASS_COOLTRAINER_M, .trainerName = _("BRAYAN"), .speechBefore = {EC_WORD_CAN, EC_WORD_YOU, EC_WORD_SEE, EC_WORD_MY, EC_WORD_POWER, EC_WORD_QUES}, @@ -2563,7 +2563,7 @@ const struct BattleFrontierTrainer gFallarborBattleTentTrainers[] = .speechLose = {EC_WORD_AM, EC_WORD_I, EC_WORD_THE, EC_WORD_WEAK, EC_WORD_TRAINER, EC_WORD_QUES}, .monSet = gFallarborBattleTentTrainerMons_Brayan }, - [15] = { + [FALLARBOR_TENT_TRAINER_MARIANA] = { .facilityClass = FACILITY_CLASS_COOLTRAINER_F, .trainerName = _("MARIANA"), .speechBefore = {EC_WORD_A, EC_WORD_LIE, EC_WORD_CAN, EC_WORD_BE, EC_WORD_KIND, EC_WORD_ELLIPSIS}, @@ -2571,7 +2571,7 @@ const struct BattleFrontierTrainer gFallarborBattleTentTrainers[] = .speechLose = {EC_WORD_THIS, EC_WORD_IS, EC_WORD_LIKE, EC_WORD_FROM, EC_WORD_A, EC_WORD_MOVIE}, .monSet = gFallarborBattleTentTrainerMons_Mariana }, - [16] = { + [FALLARBOR_TENT_TRAINER_SHELDON] = { .facilityClass = FACILITY_CLASS_POKEFAN_M, .trainerName = _("SHELDON"), .speechBefore = {EC_WORD_A, EC_WORD_POKEMON, EC_WORD_TEACHER, EC_WORD_GETS, EC_WORD_NO, EC_MOVE2(REST)}, @@ -2579,7 +2579,7 @@ const struct BattleFrontierTrainer gFallarborBattleTentTrainers[] = .speechLose = {EC_WORD_I, EC_WORD_HAVE, EC_WORD_TO, EC_WORD_GO, EC_WORD_WORK, EC_WORD_BYE_BYE}, .monSet = gFallarborBattleTentTrainerMons_Sheldon }, - [17] = { + [FALLARBOR_TENT_TRAINER_GIANNA] = { .facilityClass = FACILITY_CLASS_POKEFAN_F, .trainerName = _("GIANNA"), .speechBefore = {EC_WORD_AHAHA, EC_WORD_YES, EC_WORD_EXCL, EC_WORD_LOVEY_DOVEY, EC_WORD_POKEMON, EC_WORD_WORLD}, @@ -2587,7 +2587,7 @@ const struct BattleFrontierTrainer gFallarborBattleTentTrainers[] = .speechLose = {EC_WORD_DO, EC_WORD_YOU, EC_WORD_DISLIKE, EC_WORD_POKEMON, EC_WORD_QUES, -1}, .monSet = gFallarborBattleTentTrainerMons_Gianna }, - [18] = { + [FALLARBOR_TENT_TRAINER_YAHIR] = { .facilityClass = FACILITY_CLASS_EXPERT_M, .trainerName = _("YAHIR"), .speechBefore = {EC_WORD_YOU, EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, EC_WORD_COME_ON, EC_WORD_EXCL}, @@ -2595,7 +2595,7 @@ const struct BattleFrontierTrainer gFallarborBattleTentTrainers[] = .speechLose = {EC_WORD_NOT, EC_WORD_ENOUGH, EC_WORD_ELLIPSIS, EC_WORD_JUST, EC_WORD_NOT, EC_WORD_ENOUGH}, .monSet = gFallarborBattleTentTrainerMons_Yahir }, - [19] = { + [FALLARBOR_TENT_TRAINER_BRITNEY] = { .facilityClass = FACILITY_CLASS_EXPERT_F, .trainerName = _("BRITNEY"), .speechBefore = {EC_WORD_IT, EC_WORD_SEEMS, EC_WORD_THAT, EC_WORD_YOU_RE, EC_WORD_QUITE, EC_WORD_GOOD}, @@ -2603,7 +2603,7 @@ const struct BattleFrontierTrainer gFallarborBattleTentTrainers[] = .speechLose = {EC_WORD_YOU_RE, EC_WORD_A, EC_WORD_COOL, EC_WORD_HERO, EC_WORD_AT, EC_WORD_THIS}, .monSet = gFallarborBattleTentTrainerMons_Britney }, - [20] = { + [FALLARBOR_TENT_TRAINER_HECTER] = { .facilityClass = FACILITY_CLASS_YOUNGSTER, .trainerName = _("HECTER"), .speechBefore = {EC_WORD_MY, EC_MOVE2(HIDDEN_POWER), EC_WORD_IS, EC_WORD_EXCITING, EC_WORD_ME, EC_WORD_EXCL}, @@ -2611,7 +2611,7 @@ const struct BattleFrontierTrainer gFallarborBattleTentTrainers[] = .speechLose = {EC_WORD_WAAAH, EC_WORD_EXCL, EC_WORD_DON_T, EC_WORD_YOU, EC_MOVE2(MIMIC), EC_WORD_ME}, .monSet = gFallarborBattleTentTrainerMons_Hecter }, - [21] = { + [FALLARBOR_TENT_TRAINER_TANNOR] = { .facilityClass = FACILITY_CLASS_FISHERMAN, .trainerName = _("TANNOR"), .speechBefore = {EC_WORD_YOU, EC_WORD_HAVE, EC_WORD_GOT, EC_WORD_TO, EC_WORD_BE, EC_WORD_JOKING}, @@ -2619,7 +2619,7 @@ const struct BattleFrontierTrainer gFallarborBattleTentTrainers[] = .speechLose = {EC_WORD_YOU, EC_WORD_WEREN_T, EC_WORD_BEING, EC_WORD_FUNNY, EC_WORD_AT, EC_WORD_ALL}, .monSet = gFallarborBattleTentTrainerMons_Tannor }, - [22] = { + [FALLARBOR_TENT_TRAINER_BENJI] = { .facilityClass = FACILITY_CLASS_BIRD_KEEPER, .trainerName = _("BENJI"), .speechBefore = {EC_WORD_YOU, EC_WORD_DON_T, EC_WORD_THINK, EC_WORD_VERY, EC_WORD_FAST, EC_WORD_HUH_QUES}, @@ -2627,7 +2627,7 @@ const struct BattleFrontierTrainer gFallarborBattleTentTrainers[] = .speechLose = {EC_WORD_YOU, EC_WORD_LEFT, EC_WORD_ME, EC_WORD_FEELING, EC_WORD_SAD, EC_WORD_ELLIPSIS}, .monSet = gFallarborBattleTentTrainerMons_Benji }, - [23] = { + [FALLARBOR_TENT_TRAINER_RORY] = { .facilityClass = FACILITY_CLASS_NINJA_BOY, .trainerName = _("RORY"), .speechBefore = {EC_WORD_DON_T, EC_WORD_CAUSE, EC_WORD_AN, EC_MOVE(UPROAR), EC_WORD_YOU, EC_WORD_EXCL}, @@ -2635,7 +2635,7 @@ const struct BattleFrontierTrainer gFallarborBattleTentTrainers[] = .speechLose = {EC_WORD_I_AM, EC_WORD_GOING, EC_WORD_TO, EC_WORD_CAUSE, EC_WORD_AN, EC_MOVE(UPROAR)}, .monSet = gFallarborBattleTentTrainerMons_Rory }, - [24] = { + [FALLARBOR_TENT_TRAINER_ELEANOR] = { .facilityClass = FACILITY_CLASS_PARASOL_LADY, .trainerName = _("ELEANOR"), .speechBefore = {EC_WORD_I, EC_WORD_REALLY, EC_WORD_WANT, EC_WORD_TO, EC_WORD_PARTY, -1}, @@ -2643,7 +2643,7 @@ const struct BattleFrontierTrainer gFallarborBattleTentTrainers[] = .speechLose = {EC_WORD_DON_T, EC_WORD_YOU, EC_WORD_LIKE, EC_WORD_TO, EC_WORD_PARTY, EC_WORD_QUES}, .monSet = gFallarborBattleTentTrainerMons_Eleanor }, - [25] = { + [FALLARBOR_TENT_TRAINER_EVELYN] = { .facilityClass = FACILITY_CLASS_SWIMMER_F, .trainerName = _("EVELYN"), .speechBefore = {EC_WORD_MY, EC_WORD_PC, EC_WORD_IS, EC_WORD_MY, EC_WORD_SECRET_BASE, EC_WORD_EXCL}, @@ -2651,7 +2651,7 @@ const struct BattleFrontierTrainer gFallarborBattleTentTrainers[] = .speechLose = {EC_WORD_NO, EC_WORD_EXCL, -1, EC_WORD_I, EC_WORD_REJECT, EC_WORD_THIS}, .monSet = gFallarborBattleTentTrainerMons_Evelyn }, - [26] = { + [FALLARBOR_TENT_TRAINER_ARIELLE] = { .facilityClass = FACILITY_CLASS_PICNICKER, .trainerName = _("ARIELLE"), .speechBefore = {EC_WORD_IT_S, EC_WORD_NOT_VERY, EC_WORD_PRETTY, EC_WORD_BUT, EC_WORD_I, EC_WORD_TRY}, @@ -2659,7 +2659,7 @@ const struct BattleFrontierTrainer gFallarborBattleTentTrainers[] = .speechLose = {EC_WORD_THAT_WAS, EC_WORD_PRETTY, EC_WORD_MEAN, EC_WORD_OF, EC_WORD_YOU, EC_WORD_EXCL}, .monSet = gFallarborBattleTentTrainerMons_Arielle }, - [27] = { + [FALLARBOR_TENT_TRAINER_CONNAR] = { .facilityClass = FACILITY_CLASS_SAILOR, .trainerName = _("CONNAR"), .speechBefore = {EC_WORD_I_AM, EC_WORD_NOT, EC_WORD_STRONG, EC_WORD_ENOUGH, EC_WORD_FOR, EC_WORD_THIS}, @@ -2667,7 +2667,7 @@ const struct BattleFrontierTrainer gFallarborBattleTentTrainers[] = .speechLose = {EC_WORD_GOOD_BYE, EC_WORD_AND, EC_WORD_THANK_YOU, -1, -1, -1}, .monSet = gFallarborBattleTentTrainerMons_Connar }, - [28] = { + [FALLARBOR_TENT_TRAINER_MAURICE] = { .facilityClass = FACILITY_CLASS_COLLECTOR, .trainerName = _("MAURICE"), .speechBefore = {EC_WORD_THERE, EC_WORD_IS, EC_WORD_NO, EC_WORD_RADIO, EC_WORD_OR, EC_WORD_TELEVISION}, @@ -2675,7 +2675,7 @@ const struct BattleFrontierTrainer gFallarborBattleTentTrainers[] = .speechLose = {EC_WORD_I, EC_WORD_CAN_T, EC_WORD_ENJOY, EC_WORD_MYSELF, EC_WORD_WITHOUT, EC_WORD_MONEY}, .monSet = gFallarborBattleTentTrainerMons_Maurice }, - [29] = { + [FALLARBOR_TENT_TRAINER_KIANNA] = { .facilityClass = FACILITY_CLASS_LASS, .trainerName = _("KIANNA"), .speechBefore = {EC_WORD_I, EC_WORD_WANT, EC_WORD_TO, EC_WORD_GO, EC_WORD_DEPT_STORE, EC_WORD_SHOPPING}, @@ -2685,317 +2685,317 @@ const struct BattleFrontierTrainer gFallarborBattleTentTrainers[] = } }; -const struct FacilityMon gFallarborBattleTentMons[] = +const struct FacilityMon gFallarborBattleTentMons[NUM_FALLARBOR_TENT_MONS] = { - [0] = { + [FALLARBOR_TENT_MON_NUMEL] = { .species = SPECIES_NUMEL, .moves = {MOVE_GROWL, MOVE_FLAMETHROWER, MOVE_TACKLE, MOVE_SUNNY_DAY}, .itemTableId = BATTLE_FRONTIER_ITEM_CHARCOAL, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIET }, - [1] = { + [FALLARBOR_TENT_MON_LINOONE_1] = { .species = SPECIES_LINOONE, .moves = {MOVE_ODOR_SLEUTH, MOVE_COVET, MOVE_ROCK_SMASH, MOVE_CHARM}, .itemTableId = BATTLE_FRONTIER_ITEM_SILK_SCARF, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_SASSY }, - [2] = { + [FALLARBOR_TENT_MON_PLUSLE] = { .species = SPECIES_PLUSLE, .moves = {MOVE_SPARK, MOVE_GROWL, MOVE_QUICK_ATTACK, MOVE_FAKE_TEARS}, .itemTableId = BATTLE_FRONTIER_ITEM_MENTAL_HERB, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [3] = { + [FALLARBOR_TENT_MON_POOCHYENA] = { .species = SPECIES_POOCHYENA, .moves = {MOVE_YAWN, MOVE_ODOR_SLEUTH, MOVE_HOWL, MOVE_FRUSTRATION}, .itemTableId = BATTLE_FRONTIER_ITEM_LEPPA_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_NAUGHTY }, - [4] = { + [FALLARBOR_TENT_MON_KECLEON] = { .species = SPECIES_KECLEON, .moves = {MOVE_LICK, MOVE_SLASH, MOVE_FAINT_ATTACK, MOVE_PSYBEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_WIKI_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_MODEST }, - [5] = { + [FALLARBOR_TENT_MON_MAGIKARP] = { .species = SPECIES_MAGIKARP, .moves = {MOVE_SPLASH, MOVE_TACKLE, MOVE_FLAIL, MOVE_NONE}, .itemTableId = BATTLE_FRONTIER_ITEM_DRAGON_SCALE, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [6] = { + [FALLARBOR_TENT_MON_SOLROCK] = { .species = SPECIES_SOLROCK, .moves = {MOVE_ROCK_THROW, MOVE_FLASH, MOVE_SANDSTORM, MOVE_PSYWAVE}, .itemTableId = BATTLE_FRONTIER_ITEM_HARD_STONE, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_SASSY }, - [7] = { + [FALLARBOR_TENT_MON_MAKUHITA] = { .species = SPECIES_MAKUHITA, .moves = {MOVE_DETECT, MOVE_ARM_THRUST, MOVE_FAKE_OUT, MOVE_SMELLING_SALT}, .itemTableId = BATTLE_FRONTIER_ITEM_BLACK_BELT, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [8] = { + [FALLARBOR_TENT_MON_MACHOKE] = { .species = SPECIES_MACHOKE, .moves = {MOVE_COUNTER, MOVE_REVENGE, MOVE_BULK_UP, MOVE_FOCUS_ENERGY}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_NAIVE }, - [9] = { + [FALLARBOR_TENT_MON_NINCADA] = { .species = SPECIES_NINCADA, .moves = {MOVE_FURY_SWIPES, MOVE_ENDURE, MOVE_MUD_SLAP, MOVE_DIG}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_SERIOUS }, - [10] = { + [FALLARBOR_TENT_MON_BEAUTIFLY] = { .species = SPECIES_BEAUTIFLY, .moves = {MOVE_FLASH, MOVE_MORNING_SUN, MOVE_HARDEN, MOVE_MEGA_DRAIN}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_QUIRKY }, - [11] = { + [FALLARBOR_TENT_MON_DUSTOX] = { .species = SPECIES_DUSTOX, .moves = {MOVE_MOONLIGHT, MOVE_HARDEN, MOVE_POISON_STING, MOVE_PSYBEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE, .nature = NATURE_DOCILE }, - [12] = { + [FALLARBOR_TENT_MON_ILLUMISE] = { .species = SPECIES_ILLUMISE, .moves = {MOVE_METRONOME, MOVE_FLATTER, MOVE_WISH, MOVE_ATTRACT}, .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [13] = { + [FALLARBOR_TENT_MON_VOLBEAT] = { .species = SPECIES_VOLBEAT, .moves = {MOVE_TACKLE, MOVE_MOONLIGHT, MOVE_SIGNAL_BEAM, MOVE_TAIL_GLOW}, .itemTableId = BATTLE_FRONTIER_ITEM_LEPPA_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [14] = { + [FALLARBOR_TENT_MON_NINJASK_1] = { .species = SPECIES_NINJASK, .moves = {MOVE_DOUBLE_TEAM, MOVE_PROTECT, MOVE_DIG, MOVE_SAND_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_TIMID }, - [15] = { + [FALLARBOR_TENT_MON_NINJASK_2] = { .species = SPECIES_NINJASK, .moves = {MOVE_SWORDS_DANCE, MOVE_CUT, MOVE_FURY_CUTTER, MOVE_LEECH_LIFE}, .itemTableId = BATTLE_FRONTIER_ITEM_SILVER_POWDER, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [16] = { + [FALLARBOR_TENT_MON_ARON_1] = { .species = SPECIES_ARON, .moves = {MOVE_METAL_CLAW, MOVE_PROTECT, MOVE_SHOCK_WAVE, MOVE_METAL_SOUND}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_LONELY }, - [17] = { + [FALLARBOR_TENT_MON_ARON_2] = { .species = SPECIES_ARON, .moves = {MOVE_SECRET_POWER, MOVE_METAL_CLAW, MOVE_IRON_DEFENSE, MOVE_MUD_SLAP}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_GENTLE }, - [18] = { + [FALLARBOR_TENT_MON_ELECTRIKE] = { .species = SPECIES_ELECTRIKE, .moves = {MOVE_CRUNCH, MOVE_THUNDER_WAVE, MOVE_HOWL, MOVE_QUICK_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_SEA_INCENSE, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_HASTY }, - [19] = { + [FALLARBOR_TENT_MON_MAGNEMITE] = { .species = SPECIES_MAGNEMITE, .moves = {MOVE_THUNDER_WAVE, MOVE_SUPERSONIC, MOVE_ENDURE, MOVE_SPARK}, .itemTableId = BATTLE_FRONTIER_ITEM_MAGNET, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIET }, - [20] = { + [FALLARBOR_TENT_MON_VOLTORB] = { .species = SPECIES_VOLTORB, .moves = {MOVE_CHARGE, MOVE_SPARK, MOVE_SCREECH, MOVE_SONIC_BOOM}, .itemTableId = BATTLE_FRONTIER_ITEM_ASPEAR_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [21] = { + [FALLARBOR_TENT_MON_WHISMUR] = { .species = SPECIES_WHISMUR, .moves = {MOVE_REST, MOVE_SLEEP_TALK, MOVE_HYPER_VOICE, MOVE_ATTRACT}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [22] = { + [FALLARBOR_TENT_MON_LOUDRED] = { .species = SPECIES_LOUDRED, .moves = {MOVE_STOMP, MOVE_REST, MOVE_SCREECH, MOVE_UPROAR}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [23] = { + [FALLARBOR_TENT_MON_LINOONE_2] = { .species = SPECIES_LINOONE, .moves = {MOVE_FURY_SWIPES, MOVE_SAND_ATTACK, MOVE_SHOCK_WAVE, MOVE_GROWL}, .itemTableId = BATTLE_FRONTIER_ITEM_MAGNET, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [24] = { + [FALLARBOR_TENT_MON_MIGHTYENA] = { .species = SPECIES_MIGHTYENA, .moves = {MOVE_SAND_ATTACK, MOVE_HOWL, MOVE_SWAGGER, MOVE_SECRET_POWER}, .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_JOLLY }, - [25] = { + [FALLARBOR_TENT_MON_SWABLU] = { .species = SPECIES_SWABLU, .moves = {MOVE_TAKE_DOWN, MOVE_SING, MOVE_GROWL, MOVE_SAFEGUARD}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY }, - [26] = { + [FALLARBOR_TENT_MON_SKARMORY] = { .species = SPECIES_SKARMORY, .moves = {MOVE_AGILITY, MOVE_STEEL_WING, MOVE_SAND_ATTACK, MOVE_TORMENT}, .itemTableId = BATTLE_FRONTIER_ITEM_METAL_COAT, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_BOLD }, - [27] = { + [FALLARBOR_TENT_MON_GOLBAT] = { .species = SPECIES_GOLBAT, .moves = {MOVE_CONFUSE_RAY, MOVE_BITE, MOVE_DOUBLE_TEAM, MOVE_SUBSTITUTE}, .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_BOLD }, - [28] = { + [FALLARBOR_TENT_MON_WINGULL] = { .species = SPECIES_WINGULL, .moves = {MOVE_WING_ATTACK, MOVE_HAIL, MOVE_DOUBLE_TEAM, MOVE_SUPERSONIC}, .itemTableId = BATTLE_FRONTIER_ITEM_RAWST_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_MODEST }, - [29] = { + [FALLARBOR_TENT_MON_PELIPPER] = { .species = SPECIES_PELIPPER, .moves = {MOVE_TWISTER, MOVE_ICY_WIND, MOVE_DOUBLE_TEAM, MOVE_WATER_GUN}, .itemTableId = BATTLE_FRONTIER_ITEM_DRAGON_FANG, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [30] = { + [FALLARBOR_TENT_MON_BARBOACH] = { .species = SPECIES_BARBOACH, .moves = {MOVE_SPARK, MOVE_WATER_GUN, MOVE_EARTHQUAKE, MOVE_WATER_SPORT}, .itemTableId = BATTLE_FRONTIER_ITEM_LIECHI_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_MODEST }, - [31] = { + [FALLARBOR_TENT_MON_WAILMER] = { .species = SPECIES_WAILMER, .moves = {MOVE_WATER_PULSE, MOVE_RAIN_DANCE, MOVE_SPLASH, MOVE_CURSE}, .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_QUIET }, - [32] = { + [FALLARBOR_TENT_MON_MARILL] = { .species = SPECIES_MARILL, .moves = {MOVE_DEFENSE_CURL, MOVE_ROLLOUT, MOVE_BUBBLE_BEAM, MOVE_ATTRACT}, .itemTableId = BATTLE_FRONTIER_ITEM_HARD_STONE, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [33] = { + [FALLARBOR_TENT_MON_GOLDEEN_1] = { .species = SPECIES_GOLDEEN, .moves = {MOVE_WATERFALL, MOVE_RAIN_DANCE, MOVE_FLAIL, MOVE_PROTECT}, .itemTableId = BATTLE_FRONTIER_ITEM_GANLON_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, .nature = NATURE_HASTY }, - [34] = { + [FALLARBOR_TENT_MON_GOLDEEN_2] = { .species = SPECIES_GOLDEEN, .moves = {MOVE_SLEEP_TALK, MOVE_HORN_DRILL, MOVE_REST, MOVE_SUPERSONIC}, .itemTableId = BATTLE_FRONTIER_ITEM_MENTAL_HERB, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_CAREFUL }, - [35] = { + [FALLARBOR_TENT_MON_TRAPINCH] = { .species = SPECIES_TRAPINCH, .moves = {MOVE_RETURN, MOVE_SAND_ATTACK, MOVE_ATTRACT, MOVE_STRENGTH}, .itemTableId = BATTLE_FRONTIER_ITEM_MAGO_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [36] = { + [FALLARBOR_TENT_MON_BALTOY] = { .species = SPECIES_BALTOY, .moves = {MOVE_SELF_DESTRUCT, MOVE_SANDSTORM, MOVE_RAPID_SPIN, MOVE_MIMIC}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_JOLLY }, - [37] = { + [FALLARBOR_TENT_MON_GRAVELER] = { .species = SPECIES_GRAVELER, .moves = {MOVE_ROCK_BLAST, MOVE_DEFENSE_CURL, MOVE_MAGNITUDE, MOVE_MUD_SPORT}, .itemTableId = BATTLE_FRONTIER_ITEM_HARD_STONE, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, - [38] = { + [FALLARBOR_TENT_MON_SANDSHREW] = { .species = SPECIES_SANDSHREW, .moves = {MOVE_SAND_TOMB, MOVE_SANDSTORM, MOVE_DOUBLE_TEAM, MOVE_FOCUS_PUNCH}, .itemTableId = BATTLE_FRONTIER_ITEM_SOFT_SAND, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_JOLLY }, - [39] = { + [FALLARBOR_TENT_MON_SWALOT] = { .species = SPECIES_SWALOT, .moves = {MOVE_YAWN, MOVE_ENCORE, MOVE_BULLET_SEED, MOVE_SLUDGE}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_BRAVE }, - [40] = { + [FALLARBOR_TENT_MON_SHROOMISH] = { .species = SPECIES_SHROOMISH, .moves = {MOVE_HEADBUTT, MOVE_SPORE, MOVE_SWAGGER, MOVE_LEECH_SEED}, .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_IMPISH }, - [41] = { + [FALLARBOR_TENT_MON_KIRLIA] = { .species = SPECIES_KIRLIA, .moves = {MOVE_HYPNOSIS, MOVE_GROWL, MOVE_ATTRACT, MOVE_DREAM_EATER}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [42] = { + [FALLARBOR_TENT_MON_LOMBRE] = { .species = SPECIES_LOMBRE, .moves = {MOVE_NATURE_POWER, MOVE_WATER_GUN, MOVE_RAIN_DANCE, MOVE_FLASH}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_BASHFUL }, - [43] = { + [FALLARBOR_TENT_MON_NUZLEAF] = { .species = SPECIES_NUZLEAF, .moves = {MOVE_NATURE_POWER, MOVE_TORMENT, MOVE_SWAGGER, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT }, - [44] = { + [FALLARBOR_TENT_MON_CACNEA] = { .species = SPECIES_CACNEA, .moves = {MOVE_SANDSTORM, MOVE_NEEDLE_ARM, MOVE_TEETER_DANCE, MOVE_LEECH_SEED}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, From 98b2ab9a777ae9fd98da21e2ed6e8e0c4634e41e Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 10 Jan 2020 16:38:47 -0500 Subject: [PATCH 18/37] Match sub_8072308 --- src/battle_interface.c | 310 +++++------------------------------------ 1 file changed, 35 insertions(+), 275 deletions(-) diff --git a/src/battle_interface.c b/src/battle_interface.c index cf9aa7f1be..12273addb1 100644 --- a/src/battle_interface.c +++ b/src/battle_interface.c @@ -761,62 +761,52 @@ static s32 DummiedOutFunction(s16 unused1, s16 unused2, s32 unused3) { return 9; } - -#ifdef NONMATCHING -static void sub_8072308(s16 arg0, u16 *arg1, u8 arg2) +void sub_8072308(s16 number, u16 *dest, bool8 unk) { s8 i, j; - u8 array[4]; - u8 *arrayPtr; - s32 r9, vaaa; + u8 buff[4]; for (i = 0; i < 4; i++) - array[i] = 0; - - i = 3; - r9 = -1; - arrayPtr = array; - while (1) { - if (arg0 > 0) + buff[i] = 0; + } + + for (i = 3; ; i--) + { + if (number > 0) { - array[i] = arg0 % 10; - arg0 = arg0 / 10; - i--; + buff[i] = number % 10; + number /= 10; } else { + for (; i > -1; i--) + { + buff[i] = 0xFF; + } + if (buff[3] == 0xFF) + buff[3] = 0; break; } } - for (; i > -1; i--) - { - array[i] = 0xFF; - } - - if (arrayPtr[3] == 0xFF) - arrayPtr[3] = 0; - - if (arg2 == 0) + if (!unk) { for (i = 0, j = 0; i < 4; i++) { - if (array[j] == 0xFF) + if (buff[j] == 0xFF) { - arg1[j] &= 0xFC00; - arg1[j] |= 0x1E; - - arg1[i + 0x20] &= 0xFC00; - arg1[i + 0x20] |= 0x1E; + dest[j + 0x00] &= 0xFC00; + dest[j + 0x00] |= 0x1E; + dest[i + 0x20] &= 0xFC00; + dest[i + 0x20] |= 0x1E; } else { - arg1[j] &= 0xFC00; - arg1[j] |= array[j] + 0x14; - - arg1[i + 0x20] &= 0xFC00; - arg1[i + 0x20] |= array[i] + 0x34; + dest[j + 0x00] &= 0xFC00; + dest[j + 0x00] |= 0x14 + buff[j]; + dest[i + 0x20] &= 0xFC00; + dest[i + 0x20] |= 0x34 + buff[i]; } j++; } @@ -825,254 +815,24 @@ static void sub_8072308(s16 arg0, u16 *arg1, u8 arg2) { for (i = 0; i < 4; i++) { - if (array[i] == 0xFF) + if (buff[i] == 0xFF) { - arg1[i] &= 0xFC00; - arg1[i] |= 0x1E; - - arg1[i + 0x20] &= 0xFC00; - arg1[i + 0x20] |= 0x1E; + dest[i + 0x00] &= 0xFC00; + dest[i + 0x00] |= 0x1E; + dest[i + 0x20] &= 0xFC00; + dest[i + 0x20] |= 0x1E; } else { - arg1[i] &= 0xFC00; - arg1[i] |= array[i] + 0x14; - - arg1[i + 0x20] &= 0xFC00; - arg1[i + 0x20] |= array[i] + 0x34; + dest[i + 0x00] &= 0xFC00; + dest[i + 0x00] |= 0x14 + buff[i]; + dest[i + 0x20] &= 0xFC00; + dest[i + 0x20] |= 0x34 + buff[i]; } } } } -#else -NAKED -static void sub_8072308(s16 arg0, u16 *arg1, u8 arg2) -{ - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r10\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5-r7}\n\ - sub sp, 0x4\n\ - adds r7, r1, 0\n\ - lsls r0, 16\n\ - lsrs r5, r0, 16\n\ - lsls r2, 24\n\ - lsrs r2, 24\n\ - mov r10, r2\n\ - movs r3, 0\n\ - movs r2, 0\n\ -_08072324:\n\ - lsls r0, r3, 24\n\ - asrs r0, 24\n\ - mov r3, sp\n\ - adds r1, r3, r0\n\ - strb r2, [r1]\n\ - adds r0, 0x1\n\ - lsls r0, 24\n\ - lsrs r3, r0, 24\n\ - asrs r0, 24\n\ - cmp r0, 0x3\n\ - ble _08072324\n\ - movs r3, 0x3\n\ - movs r0, 0x1\n\ - negs r0, r0\n\ - mov r9, r0\n\ - mov r8, sp\n\ -_08072344:\n\ - lsls r0, r5, 16\n\ - asrs r6, r0, 16\n\ - cmp r6, 0\n\ - ble _08072372\n\ - lsls r4, r3, 24\n\ - asrs r4, 24\n\ - mov r1, sp\n\ - adds r5, r1, r4\n\ - adds r0, r6, 0\n\ - movs r1, 0xA\n\ - bl __modsi3\n\ - strb r0, [r5]\n\ - adds r0, r6, 0\n\ - movs r1, 0xA\n\ - bl __divsi3\n\ - lsls r0, 16\n\ - lsrs r5, r0, 16\n\ - subs r4, 0x1\n\ - lsls r4, 24\n\ - lsrs r3, r4, 24\n\ - b _08072344\n\ -_08072372:\n\ - lsls r1, r3, 24\n\ - asrs r0, r1, 24\n\ - cmp r0, r9\n\ - ble _08072396\n\ - movs r4, 0xFF\n\ - movs r3, 0x1\n\ - negs r3, r3\n\ -_08072380:\n\ - asrs r2, r1, 24\n\ - mov r5, sp\n\ - adds r1, r5, r2\n\ - ldrb r0, [r1]\n\ - orrs r0, r4\n\ - strb r0, [r1]\n\ - subs r2, 0x1\n\ - lsls r1, r2, 24\n\ - asrs r0, r1, 24\n\ - cmp r0, r3\n\ - bgt _08072380\n\ -_08072396:\n\ - mov r1, r8\n\ - ldrb r0, [r1, 0x3]\n\ - cmp r0, 0xFF\n\ - bne _080723A2\n\ - movs r0, 0\n\ - strb r0, [r1, 0x3]\n\ -_080723A2:\n\ - mov r2, r10\n\ - cmp r2, 0\n\ - bne _08072432\n\ - movs r3, 0\n\ - movs r1, 0\n\ - movs r6, 0xFC\n\ - lsls r6, 8\n\ - movs r5, 0x1E\n\ - mov r12, r5\n\ -_080723B4:\n\ - lsls r1, 24\n\ - asrs r2, r1, 24\n\ - mov r0, sp\n\ - adds r5, r0, r2\n\ - ldrb r0, [r5]\n\ - mov r8, r1\n\ - cmp r0, 0xFF\n\ - bne _080723EA\n\ - lsls r1, r2, 1\n\ - adds r1, r7\n\ - ldrh r2, [r1]\n\ - adds r0, r6, 0\n\ - ands r0, r2\n\ - mov r2, r12\n\ - orrs r0, r2\n\ - strh r0, [r1]\n\ - lsls r3, 24\n\ - asrs r1, r3, 23\n\ - adds r1, r7\n\ - adds r1, 0x40\n\ - ldrh r2, [r1]\n\ - adds r0, r6, 0\n\ - ands r0, r2\n\ - mov r5, r12\n\ - orrs r0, r5\n\ - strh r0, [r1]\n\ - b _0807241A\n\ -_080723EA:\n\ - lsls r2, 1\n\ - adds r2, r7\n\ - ldrh r0, [r2]\n\ - adds r1, r6, 0\n\ - ands r1, r0\n\ - ldrb r0, [r5]\n\ - adds r0, 0x14\n\ - orrs r1, r0\n\ - strh r1, [r2]\n\ - lsls r4, r3, 24\n\ - asrs r3, r4, 24\n\ - lsls r2, r3, 1\n\ - adds r2, r7\n\ - adds r2, 0x40\n\ - ldrh r0, [r2]\n\ - adds r1, r6, 0\n\ - ands r1, r0\n\ - mov r5, sp\n\ - adds r0, r5, r3\n\ - ldrb r0, [r0]\n\ - adds r0, 0x34\n\ - orrs r1, r0\n\ - strh r1, [r2]\n\ - adds r3, r4, 0\n\ -_0807241A:\n\ - movs r0, 0x80\n\ - lsls r0, 17\n\ - add r0, r8\n\ - lsrs r1, r0, 24\n\ - movs r2, 0x80\n\ - lsls r2, 17\n\ - adds r0, r3, r2\n\ - lsrs r3, r0, 24\n\ - asrs r0, 24\n\ - cmp r0, 0x3\n\ - ble _080723B4\n\ - b _08072496\n\ -_08072432:\n\ - movs r3, 0\n\ - movs r4, 0xFC\n\ - lsls r4, 8\n\ - movs r6, 0x1E\n\ -_0807243A:\n\ - lsls r1, r3, 24\n\ - asrs r2, r1, 24\n\ - mov r3, sp\n\ - adds r5, r3, r2\n\ - ldrb r0, [r5]\n\ - adds r3, r1, 0\n\ - cmp r0, 0xFF\n\ - bne _08072466\n\ - lsls r1, r2, 1\n\ - adds r1, r7\n\ - ldrh r2, [r1]\n\ - adds r0, r4, 0\n\ - ands r0, r2\n\ - orrs r0, r6\n\ - strh r0, [r1]\n\ - adds r1, 0x40\n\ - ldrh r2, [r1]\n\ - adds r0, r4, 0\n\ - ands r0, r2\n\ - orrs r0, r6\n\ - strh r0, [r1]\n\ - b _08072488\n\ -_08072466:\n\ - lsls r2, 1\n\ - adds r2, r7\n\ - ldrh r0, [r2]\n\ - adds r1, r4, 0\n\ - ands r1, r0\n\ - ldrb r0, [r5]\n\ - adds r0, 0x14\n\ - orrs r1, r0\n\ - strh r1, [r2]\n\ - adds r2, 0x40\n\ - ldrh r0, [r2]\n\ - adds r1, r4, 0\n\ - ands r1, r0\n\ - ldrb r0, [r5]\n\ - adds r0, 0x34\n\ - orrs r1, r0\n\ - strh r1, [r2]\n\ -_08072488:\n\ - movs r5, 0x80\n\ - lsls r5, 17\n\ - adds r0, r3, r5\n\ - lsrs r3, r0, 24\n\ - asrs r0, 24\n\ - cmp r0, 0x3\n\ - ble _0807243A\n\ -_08072496:\n\ - add sp, 0x4\n\ - pop {r3-r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov r10, r5\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .syntax divided"); -} - -#endif // NONMATCHING void sub_80724A8(s16 arg0, s16 arg1, u16 *arg2) { From f2e7b1507e564ba3b6b027a17aeeec2f89fba8c8 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Sat, 11 Jan 2020 12:02:58 -0500 Subject: [PATCH 19/37] Port some macro/script fixes from pokefirered --- asm/macros/event.inc | 54 ++- data/event_scripts.s | 63 +--- .../scripts.inc | 4 +- .../BattleFrontier_ScottsHouse/scripts.inc | 8 +- data/maps/DesertUnderpass/scripts.inc | 4 +- data/maps/DewfordTown/scripts.inc | 2 +- data/maps/DewfordTown_Gym/scripts.inc | 25 +- data/maps/DewfordTown_Hall/scripts.inc | 2 +- data/maps/DewfordTown_House2/scripts.inc | 2 +- .../FallarborTown_CozmosHouse/scripts.inc | 2 +- data/maps/FortreeCity_Gym/scripts.inc | 4 +- data/maps/FortreeCity_House2/scripts.inc | 2 +- data/maps/FortreeCity_House4/scripts.inc | 2 +- data/maps/GraniteCave_1F/scripts.inc | 2 +- data/maps/GraniteCave_StevensRoom/scripts.inc | 2 +- data/maps/LavaridgeTown/scripts.inc | 4 +- data/maps/LavaridgeTown_Gym_1F/scripts.inc | 28 +- data/maps/LavaridgeTown_Gym_B1F/scripts.inc | 24 +- data/maps/LavaridgeTown_HerbShop/scripts.inc | 2 +- data/maps/LilycoveCity/scripts.inc | 2 +- .../LilycoveCity_ContestLobby/scripts.inc | 2 +- .../scripts.inc | 6 +- .../scripts.inc | 4 +- data/maps/LilycoveCity_Harbor/scripts.inc | 4 +- data/maps/LilycoveCity_House2/scripts.inc | 2 +- .../scripts.inc | 2 +- data/maps/LittlerootTown/scripts.inc | 2 +- .../scripts.inc | 4 +- data/maps/MauvilleCity/scripts.inc | 4 +- data/maps/MauvilleCity_BikeShop/scripts.inc | 8 +- data/maps/MauvilleCity_GameCorner/scripts.inc | 22 +- data/maps/MauvilleCity_Gym/scripts.inc | 4 +- data/maps/MauvilleCity_House1/scripts.inc | 2 +- data/maps/MauvilleCity_House2/scripts.inc | 2 +- data/maps/MirageTower_4F/scripts.inc | 4 +- data/maps/MossdeepCity/scripts.inc | 2 +- data/maps/MossdeepCity_Gym/scripts.inc | 4 +- data/maps/MossdeepCity_House3/scripts.inc | 2 +- .../MossdeepCity_SpaceCenter_1F/scripts.inc | 4 +- .../MossdeepCity_StevensHouse/scripts.inc | 4 +- data/maps/MtChimney/scripts.inc | 4 +- data/maps/MtPyre_1F/scripts.inc | 2 +- data/maps/MtPyre_Summit/scripts.inc | 2 +- data/maps/OldaleTown/scripts.inc | 2 +- data/maps/PacifidlogTown_House2/scripts.inc | 4 +- data/maps/PetalburgCity_Gym/scripts.inc | 55 +-- .../PetalburgCity_WallysHouse/scripts.inc | 2 +- data/maps/PetalburgWoods/scripts.inc | 4 +- data/maps/Route104/scripts.inc | 6 +- .../scripts.inc | 4 +- data/maps/Route109/scripts.inc | 2 +- data/maps/Route109_SeashoreHouse/scripts.inc | 13 +- data/maps/Route110/scripts.inc | 2 +- data/maps/Route110_TrickHouseEnd/scripts.inc | 18 +- .../Route110_TrickHouseEntrance/scripts.inc | 18 +- data/maps/Route111/scripts.inc | 5 +- .../scripts.inc | 2 +- data/maps/Route113_GlassWorkshop/scripts.inc | 6 +- data/maps/Route114/scripts.inc | 4 +- .../Route114_FossilManiacsHouse/scripts.inc | 2 +- data/maps/Route114_LanettesHouse/scripts.inc | 2 +- data/maps/Route116/scripts.inc | 2 +- data/maps/Route118/scripts.inc | 2 +- data/maps/Route119/scripts.inc | 2 +- data/maps/Route120/scripts.inc | 4 +- data/maps/Route123/scripts.inc | 2 +- .../Route123_BerryMastersHouse/scripts.inc | 16 +- .../scripts.inc | 2 +- data/maps/RustboroCity/scripts.inc | 2 +- .../RustboroCity_CuttersHouse/scripts.inc | 2 +- .../RustboroCity_DevonCorp_3F/scripts.inc | 4 +- data/maps/RustboroCity_Flat2_2F/scripts.inc | 2 +- data/maps/RustboroCity_Gym/scripts.inc | 2 +- .../RustboroCity_PokemonSchool/scripts.inc | 2 +- data/maps/RusturfTunnel/scripts.inc | 4 +- data/maps/SSTidalCorridor/scripts.inc | 24 +- data/maps/SSTidalRooms/scripts.inc | 2 +- .../ShoalCave_LowTideEntranceRoom/scripts.inc | 2 +- .../ShoalCave_LowTideInnerRoom/scripts.inc | 12 +- .../ShoalCave_LowTideLowerRoom/scripts.inc | 4 +- .../ShoalCave_LowTideStairsRoom/scripts.inc | 2 +- data/maps/SlateportCity/scripts.inc | 4 +- .../SlateportCity_BattleTentLobby/scripts.inc | 2 +- data/maps/SlateportCity_Harbor/scripts.inc | 6 +- .../scripts.inc | 2 +- .../SlateportCity_PokemonFanClub/scripts.inc | 12 +- data/maps/SootopolisCity/scripts.inc | 8 +- data/maps/SootopolisCity_Gym_1F/scripts.inc | 4 +- data/maps/SootopolisCity_House1/scripts.inc | 2 +- data/maps/SootopolisCity_House6/scripts.inc | 2 +- .../scripts.inc | 4 +- .../scripts.inc | 2 +- data/scripts/berry_blender.inc | 4 +- data/scripts/cable_club.inc | 14 +- data/scripts/contest_hall.inc | 6 +- data/scripts/item_ball_scripts.inc | 330 +++++++++--------- data/scripts/lilycove_lady.inc | 4 +- data/scripts/mevent_aurora_ticket.inc | 8 +- data/scripts/mevent_battle_card.inc | 5 +- data/scripts/mevent_mystic_ticket.inc | 11 +- data/scripts/mevent_old_sea_map.inc | 8 +- data/scripts/mevent_pichu.inc | 3 +- data/scripts/obtain_item.inc | 8 +- data/scripts/players_house.inc | 4 +- data/scripts/secret_power_tm.inc | 2 +- data/scripts/std_msgbox.inc | 48 +++ data/scripts/trainer_battle.inc | 7 + 107 files changed, 528 insertions(+), 561 deletions(-) create mode 100644 data/scripts/std_msgbox.inc diff --git a/asm/macros/event.inc b/asm/macros/event.inc index 5865856c36..b268511489 100644 --- a/asm/macros/event.inc +++ b/asm/macros/event.inc @@ -469,14 +469,14 @@ .endm @ Attempts to add quantity of item index to the player's Bag. If the player has enough room, the item will be added and VAR_RESULT will be set to TRUE; otherwise, VAR_RESULT is set to FALSE. - .macro giveitem index:req, quantity:req + .macro additem index:req, quantity=1 .byte 0x44 .2byte \index .2byte \quantity .endm @ Removes quantity of item index from the player's Bag. - .macro takeitem index:req, quantity:req + .macro takeitem index:req, quantity=1 .byte 0x45 .2byte \index .2byte \quantity @@ -517,7 +517,7 @@ .endm @ Adds decoration to the player's PC. In FireRed, this command is a nop. (The argument is read, but not used for anything.) - .macro givedecoration decoration:req + .macro adddecoration decoration:req .byte 0x4b .2byte \decoration .endm @@ -1564,12 +1564,12 @@ .macro goto_if_unset flag:req, dest:req checkflag \flag - goto_if 0, \dest + goto_if FALSE, \dest .endm .macro goto_if_set flag:req, dest:req checkflag \flag - goto_if 1, \dest + goto_if TRUE, \dest .endm .macro goto_if_lt dest:req @ LESS THAN @@ -1598,12 +1598,12 @@ .macro call_if_unset flag:req, dest:req checkflag \flag - call_if 0, \dest + call_if FALSE, \dest .endm .macro call_if_set flag:req, dest:req checkflag \flag - call_if 1, \dest + call_if TRUE, \dest .endm .macro call_if_lt dest:req @ LESS THAN @@ -1631,11 +1631,41 @@ .endm .macro vgoto_if_eq dest:req - vgoto_if 1, \dest + vgoto_if TRUE, \dest .endm .macro vgoto_if_ne dest:req - vgoto_if 0, \dest + vgoto_if FALSE, \dest + .endm + + .macro vgoto_if_unset flag:req, dest:req + checkflag \flag + vgoto_if FALSE, \dest + .endm + + .macro vgoto_if_set flag:req, dest:req + checkflag \flag + vgoto_if TRUE, \dest + .endm + + .macro goto_if_defeated trainer:req, dest:req + checktrainerflag \trainer + goto_if TRUE, \dest + .endm + + .macro goto_if_undefeated trainer:req, dest:req + checktrainerflag \trainer + goto_if FALSE, \dest + .endm + + .macro call_if_defeated trainer:req, dest:req + checktrainerflag \trainer + call_if TRUE, \dest + .endm + + .macro call_if_undefeated trainer:req, dest:req + checktrainerflag \trainer + call_if FALSE, \dest .endm .macro switch var:req @@ -1663,19 +1693,19 @@ callstd \type .endm - .macro giveitem_std item:req, amount=1 + .macro giveitem item:req, amount=1 setorcopyvar VAR_0x8000, \item setorcopyvar VAR_0x8001, \amount callstd STD_OBTAIN_ITEM .endm - .macro finditem_std item:req, amount=1 + .macro finditem item:req, amount=1 setorcopyvar VAR_0x8000, \item setorcopyvar VAR_0x8001, \amount callstd STD_FIND_ITEM .endm - .macro givedecoration_std decoration:req + .macro givedecoration decoration:req setorcopyvar VAR_0x8000, \decoration callstd STD_OBTAIN_DECORATION .endm diff --git a/data/event_scripts.s b/data/event_scripts.s index 2d56bae9fb..942fc005bd 100644 --- a/data/event_scripts.s +++ b/data/event_scripts.s @@ -570,65 +570,8 @@ gStdScripts_End:: @ 81DC2CC .include "data/maps/Route119_House/scripts.inc" .include "data/maps/Route124_DivingTreasureHuntersHouse/scripts.inc" -@ Below could be split as std_msgbox.inc but autoclose straddles trainer_battle.inc -Std_MsgboxNPC: @ 8271315 - lock - faceplayer - message 0x0 - waitmessage - waitbuttonpress - release - return - -Std_MsgboxSign: @ 8271320 - lockall - message 0x0 - waitmessage - waitbuttonpress - releaseall - return - -Std_MsgboxDefault: @ 827132A - message 0x0 - waitmessage - waitbuttonpress - return - -Std_MsgboxYesNo: @ 8271332 - message 0x0 - waitmessage - yesnobox 20, 8 - return - -Std_MsgboxGetPoints: @ 827133C - message 0x0 - playfanfare MUS_ME_POINTGET - waitfanfare - waitmessage - return - -Std_10: @ 8271347 - pokenavcall 0x0 - waitmessage - return - -EventScript_UnusedReturn: @ 827134E - return - -Common_EventScript_SaveGame:: @ 827134F - special SaveGame - waitstate - return - + .include "data/scripts/std_msgbox.inc" .include "data/scripts/trainer_battle.inc" - -Std_MsgboxAutoclose:: @ 8271494 - message 0x0 - waitmessage - waitbuttonpress - release - return - .include "data/scripts/new_game.inc" .include "data/scripts/hall_of_fame.inc" @@ -844,7 +787,7 @@ EventScript_UnusedBoardFerry:: @ 827222B delay 30 applymovement EVENT_OBJ_ID_PLAYER, Common_Movement_WalkInPlaceFastestUp waitmovement 0 - showobjectat 255, MAP_PETALBURG_CITY + showobjectat EVENT_OBJ_ID_PLAYER, 0 delay 30 applymovement EVENT_OBJ_ID_PLAYER, Movement_UnusedBoardFerry waitmovement 0 @@ -861,7 +804,7 @@ Common_EventScript_FerryDepartIsland:: @ 8272250 compare VAR_FACING, DIR_WEST call_if_eq Ferry_EventScript_DepartIslandWest delay 30 - hideobjectat 255, MAP_PETALBURG_CITY + hideobjectat EVENT_OBJ_ID_PLAYER, 0 call Common_EventScript_FerryDepart return diff --git a/data/maps/BattleFrontier_ExchangeServiceCorner/scripts.inc b/data/maps/BattleFrontier_ExchangeServiceCorner/scripts.inc index a822c463b2..f0fb42bb49 100644 --- a/data/maps/BattleFrontier_ExchangeServiceCorner/scripts.inc +++ b/data/maps/BattleFrontier_ExchangeServiceCorner/scripts.inc @@ -40,7 +40,7 @@ BattleFrontier_ExchangeServiceCorner_EventScript_TryGiveDecor:: @ 825F0E5 goto_if_eq BattleFrontier_ExchangeServiceCorner_EventScript_NoRoomForDecor copyvar VAR_0x8004, VAR_0x8008 special TakeFrontierBattlePoints - givedecoration VAR_0x8009 + adddecoration VAR_0x8009 special UpdateBattlePointsWindow playse SE_REGI msgbox BattleFrontier_ExchangeServiceCorner_Text_WellSendItToPC, MSGBOX_DEFAULT @@ -61,7 +61,7 @@ BattleFrontier_ExchangeServiceCorner_EventScript_TryGiveItem:: @ 825F12A goto_if_eq BattleFrontier_ExchangeServiceCorner_EventScript_BagFull copyvar VAR_0x8004, VAR_0x8008 special TakeFrontierBattlePoints - giveitem VAR_0x8009, 1 + additem VAR_0x8009 special UpdateBattlePointsWindow playse SE_REGI msgbox BattleFrontier_ExchangeServiceCorner_Text_HereIsYourPrize, MSGBOX_DEFAULT diff --git a/data/maps/BattleFrontier_ScottsHouse/scripts.inc b/data/maps/BattleFrontier_ScottsHouse/scripts.inc index 0f3663f1ab..e4b0c28e9b 100644 --- a/data/maps/BattleFrontier_ScottsHouse/scripts.inc +++ b/data/maps/BattleFrontier_ScottsHouse/scripts.inc @@ -32,7 +32,7 @@ BattleFrontier_ScottsHouse_EventScript_CheckSilverSymbols:: @ 8263704 goto_if_unset FLAG_SYS_PIKE_SILVER, BattleFrontier_ScottsHouse_EventScript_CheckGiveShield goto_if_unset FLAG_SYS_PYRAMID_SILVER, BattleFrontier_ScottsHouse_EventScript_CheckGiveShield msgbox BattleFrontier_ScottsHouse_Text_YouveCollectedAllSilverSymbols, MSGBOX_DEFAULT - giveitem_std ITEM_LANSAT_BERRY + giveitem ITEM_LANSAT_BERRY compare VAR_RESULT, FALSE goto_if_eq BattleFrontier_ScottsHouse_EventScript_BerryPocketFull setflag FLAG_COLLECTED_ALL_SILVER_SYMBOLS @@ -49,7 +49,7 @@ BattleFrontier_ScottsHouse_EventScript_CheckGoldSymbols:: @ 826376A goto_if_unset FLAG_SYS_PIKE_GOLD, BattleFrontier_ScottsHouse_EventScript_CheckGiveShield goto_if_unset FLAG_SYS_PYRAMID_GOLD, BattleFrontier_ScottsHouse_EventScript_CheckGiveShield msgbox BattleFrontier_ScottsHouse_Text_YouveCollectedAllGoldSymbols, MSGBOX_DEFAULT - giveitem_std ITEM_STARF_BERRY + giveitem ITEM_STARF_BERRY compare VAR_RESULT, FALSE goto_if_eq BattleFrontier_ScottsHouse_EventScript_BerryPocketFull setflag FLAG_COLLECTED_ALL_GOLD_SYMBOLS @@ -102,7 +102,7 @@ BattleFrontier_ScottsHouse_EventScript_CheckGiveSilverShield:: @ 826381B BattleFrontier_ScottsHouse_EventScript_GiveSilverShield:: @ 826387A msgbox BattleFrontier_ScottsHouse_Text_Beat50TrainersInARow, MSGBOX_DEFAULT - givedecoration_std DECOR_SILVER_SHIELD + givedecoration DECOR_SILVER_SHIELD compare VAR_RESULT, FALSE goto_if_eq BattleFrontier_ScottsHouse_EventScript_NoRoomForShield setflag FLAG_RECEIVED_SILVER_SHIELD @@ -135,7 +135,7 @@ BattleFrontier_ScottsHouse_EventScript_CheckGiveGoldShield:: @ 82638B4 BattleFrontier_ScottsHouse_EventScript_GiveGoldShield:: @ 8263913 msgbox BattleFrontier_ScottsHouse_Text_Beat100TrainersInARow, MSGBOX_DEFAULT - givedecoration_std DECOR_GOLD_SHIELD + givedecoration DECOR_GOLD_SHIELD compare VAR_RESULT, FALSE goto_if_eq BattleFrontier_ScottsHouse_EventScript_NoRoomForShield setflag FLAG_RECEIVED_GOLD_SHIELD diff --git a/data/maps/DesertUnderpass/scripts.inc b/data/maps/DesertUnderpass/scripts.inc index 437f5de4b8..bba7dfe081 100644 --- a/data/maps/DesertUnderpass/scripts.inc +++ b/data/maps/DesertUnderpass/scripts.inc @@ -15,13 +15,13 @@ DesertUnderpass_EventScript_Fossil:: @ 823AF41 end DesertUnderpass_EventScript_GiveClawFossil:: @ 823AF57 - giveitem_std ITEM_CLAW_FOSSIL + giveitem ITEM_CLAW_FOSSIL removeobject 1 release end DesertUnderpass_EventScript_GiveRootFossil:: @ 823AF68 - giveitem_std ITEM_ROOT_FOSSIL + giveitem ITEM_ROOT_FOSSIL removeobject 1 release end diff --git a/data/maps/DewfordTown/scripts.inc b/data/maps/DewfordTown/scripts.inc index 137b394b19..62bd150631 100644 --- a/data/maps/DewfordTown/scripts.inc +++ b/data/maps/DewfordTown/scripts.inc @@ -83,7 +83,7 @@ DewfordTown_EventScript_OldRodFisherman:: @ 81E95D5 DewfordTown_EventScript_GiveOldRod:: @ 81E95FF msgbox DewfordTown_Text_GiveYouOneOfMyRods, MSGBOX_DEFAULT - giveitem_std ITEM_OLD_ROD + giveitem ITEM_OLD_ROD setflag FLAG_RECEIVED_OLD_ROD msgbox DewfordTown_Text_ThrowInFishingAdvice, MSGBOX_DEFAULT release diff --git a/data/maps/DewfordTown_Gym/scripts.inc b/data/maps/DewfordTown_Gym/scripts.inc index 2641db5dcd..c38bcc9062 100644 --- a/data/maps/DewfordTown_Gym/scripts.inc +++ b/data/maps/DewfordTown_Gym/scripts.inc @@ -7,8 +7,7 @@ DewfordTown_Gym_OnTransition: @ 81FC642 end DewfordTown_Gym_EventScript_SetFlashRadius:: @ 81FC648 - checktrainerflag TRAINER_BRAWLY_1 - goto_if_eq DewfordTown_Gym_EventScript_SetLightsOn + goto_if_defeated TRAINER_BRAWLY_1, DewfordTown_Gym_EventScript_SetLightsOn call DewfordTown_Gym_EventScript_CountTrainersDefeated copyvar VAR_0x8001, VAR_0x8000 compare VAR_0x8000, 0 @@ -124,28 +123,22 @@ DewfordTown_Gym_EventScript_AnimateFlashFullBrightness:: @ 81FC75D DewfordTown_Gym_EventScript_CountTrainersDefeated:: @ 81FC768 setvar VAR_0x8000, 0 - checktrainerflag TRAINER_TAKAO - goto_if_lt DewfordTown_Gym_EventScript_CheckJocelyn + goto_if_undefeated TRAINER_TAKAO, DewfordTown_Gym_EventScript_CheckJocelyn addvar VAR_0x8000, 1 DewfordTown_Gym_EventScript_CheckJocelyn:: @ 81FC77B - checktrainerflag TRAINER_JOCELYN - goto_if_lt DewfordTown_Gym_EventScript_CheckLaura + goto_if_undefeated TRAINER_JOCELYN, DewfordTown_Gym_EventScript_CheckLaura addvar VAR_0x8000, 1 DewfordTown_Gym_EventScript_CheckLaura:: @ 81FC789 - checktrainerflag TRAINER_LAURA - goto_if_lt DewfordTown_Gym_EventScript_CheckBrenden + goto_if_undefeated TRAINER_LAURA, DewfordTown_Gym_EventScript_CheckBrenden addvar VAR_0x8000, 1 DewfordTown_Gym_EventScript_CheckBrenden:: @ 81FC797 - checktrainerflag TRAINER_BRENDEN - goto_if_lt DewfordTown_Gym_EventScript_CheckCristian + goto_if_undefeated TRAINER_BRENDEN, DewfordTown_Gym_EventScript_CheckCristian addvar VAR_0x8000, 1 DewfordTown_Gym_EventScript_CheckCristian:: @ 81FC7A5 - checktrainerflag TRAINER_CRISTIAN - goto_if_lt DewfordTown_Gym_EventScript_CheckLilith + goto_if_undefeated TRAINER_CRISTIAN, DewfordTown_Gym_EventScript_CheckLilith addvar VAR_0x8000, 1 DewfordTown_Gym_EventScript_CheckLilith:: @ 81FC7B3 - checktrainerflag TRAINER_LILITH - goto_if_lt DewfordTown_Gym_EventScript_StopCountingTrainers + goto_if_undefeated TRAINER_LILITH, DewfordTown_Gym_EventScript_StopCountingTrainers addvar VAR_0x8000, 1 DewfordTown_Gym_EventScript_StopCountingTrainers:: @ 81FC7C1 return @@ -188,7 +181,7 @@ DewfordTown_Gym_EventScript_BrawlyDefeated:: @ 81FC7F7 end DewfordTown_Gym_EventScript_GiveBulkUp:: @ 81FC855 - giveitem_std ITEM_TM08 + giveitem ITEM_TM08 compare VAR_RESULT, 0 goto_if_eq Common_EventScript_BagIsFull msgbox DewfordTown_Gym_Text_ExplainBulkUp, MSGBOX_DEFAULT @@ -196,7 +189,7 @@ DewfordTown_Gym_EventScript_GiveBulkUp:: @ 81FC855 return DewfordTown_Gym_EventScript_GiveBulkUp2: @ 81FC878 - giveitem_std ITEM_TM08 + giveitem ITEM_TM08 compare VAR_RESULT, 0 goto_if_eq Common_EventScript_ShowBagIsFull msgbox DewfordTown_Gym_Text_ExplainBulkUp, MSGBOX_DEFAULT diff --git a/data/maps/DewfordTown_Hall/scripts.inc b/data/maps/DewfordTown_Hall/scripts.inc index 971dd23215..5091cb99bf 100644 --- a/data/maps/DewfordTown_Hall/scripts.inc +++ b/data/maps/DewfordTown_Hall/scripts.inc @@ -254,7 +254,7 @@ DewfordTown_Hall_EventScript_SludgeBombMan:: @ 81FD7DA call Common_EventScript_BufferTrendyPhrase goto_if_set FLAG_RECEIVED_TM36, DewfordTown_Hall_EventScript_ReceivedSludgeBomb msgbox DewfordTown_Hall_Text_GiveYouSludgeBomb, MSGBOX_DEFAULT - giveitem_std ITEM_TM36 + giveitem ITEM_TM36 compare VAR_RESULT, FALSE goto_if_eq Common_EventScript_ShowBagIsFull setflag FLAG_RECEIVED_TM36 diff --git a/data/maps/DewfordTown_House2/scripts.inc b/data/maps/DewfordTown_House2/scripts.inc index 43d2c1b5e6..4a57cfdcf5 100644 --- a/data/maps/DewfordTown_House2/scripts.inc +++ b/data/maps/DewfordTown_House2/scripts.inc @@ -6,7 +6,7 @@ DewfordTown_House2_EventScript_Man:: @ 81FE22E faceplayer goto_if_set FLAG_RECEIVED_SILK_SCARF, DewfordTown_House2_EventScript_ExplainSilkScarf msgbox DewfordTown_House2_Text_WantYouToHaveSilkScarf, MSGBOX_DEFAULT - giveitem_std ITEM_SILK_SCARF + giveitem ITEM_SILK_SCARF compare VAR_RESULT, FALSE goto_if_eq DewfordTown_House2_EventScript_NoRoomForScarf setflag FLAG_RECEIVED_SILK_SCARF diff --git a/data/maps/FallarborTown_CozmosHouse/scripts.inc b/data/maps/FallarborTown_CozmosHouse/scripts.inc index 224147bc53..3f4db18d3a 100644 --- a/data/maps/FallarborTown_CozmosHouse/scripts.inc +++ b/data/maps/FallarborTown_CozmosHouse/scripts.inc @@ -18,7 +18,7 @@ FallarborTown_CozmosHouse_EventScript_PlayerHasMeteorite:: @ 8200F38 compare VAR_RESULT, NO goto_if_eq FallarborTown_CozmosHouse_EventScript_DeclineGiveMeteorite msgbox FallarborTown_CozmosHouse_Text_PleaseUseThisTM, MSGBOX_DEFAULT - giveitem_std ITEM_TM27 + giveitem ITEM_TM27 compare VAR_RESULT, FALSE goto_if_eq Common_EventScript_ShowBagIsFull setvar VAR_0x8004, ITEM_METEORITE diff --git a/data/maps/FortreeCity_Gym/scripts.inc b/data/maps/FortreeCity_Gym/scripts.inc index f69ec82040..a3ee3aefe3 100644 --- a/data/maps/FortreeCity_Gym/scripts.inc +++ b/data/maps/FortreeCity_Gym/scripts.inc @@ -49,7 +49,7 @@ FortreeCity_Gym_EventScript_WinonaDefeated:: @ 82165FD end FortreeCity_Gym_EventScript_GiveAerialAce2:: @ 8216646 - giveitem_std ITEM_TM40 + giveitem ITEM_TM40 compare VAR_RESULT, 0 goto_if_eq Common_EventScript_ShowBagIsFull msgbox FortreeCity_Gym_Text_ExplainAerialAce, MSGBOX_DEFAULT @@ -58,7 +58,7 @@ FortreeCity_Gym_EventScript_GiveAerialAce2:: @ 8216646 end FortreeCity_Gym_EventScript_GiveAerialAce:: @ 821666A - giveitem_std ITEM_TM40 + giveitem ITEM_TM40 compare VAR_RESULT, 0 goto_if_eq Common_EventScript_BagIsFull msgbox FortreeCity_Gym_Text_ExplainAerialAce, MSGBOX_DEFAULT diff --git a/data/maps/FortreeCity_House2/scripts.inc b/data/maps/FortreeCity_House2/scripts.inc index bfbe40ff4b..98b8272fe7 100644 --- a/data/maps/FortreeCity_House2/scripts.inc +++ b/data/maps/FortreeCity_House2/scripts.inc @@ -19,7 +19,7 @@ FortreeCity_House2_EventScript_HiddenPowerGiver:: @ 82177CB switch VAR_RESULT case 0, FortreeCity_House2_EventScript_WrongGuess msgbox FortreeCity_House2_Text_YourHiddenPowerHasAwoken, MSGBOX_DEFAULT - giveitem_std ITEM_TM10 + giveitem ITEM_TM10 compare VAR_RESULT, 0 goto_if_eq Common_EventScript_ShowBagIsFull setflag FLAG_RECEIVED_TM10 diff --git a/data/maps/FortreeCity_House4/scripts.inc b/data/maps/FortreeCity_House4/scripts.inc index b050ba3f97..be5ff9c6e7 100644 --- a/data/maps/FortreeCity_House4/scripts.inc +++ b/data/maps/FortreeCity_House4/scripts.inc @@ -31,7 +31,7 @@ FortreeCity_House4_EventScript_WingullReturned:: @ 8217CD8 applymovement VAR_LAST_TALKED, Common_Movement_FacePlayer waitmovement 0 msgbox FortreeCity_House4_Text_WelcomeWingullTakeMentalHerb, MSGBOX_DEFAULT - giveitem_std ITEM_MENTAL_HERB + giveitem ITEM_MENTAL_HERB compare VAR_RESULT, FALSE goto_if_eq Common_EventScript_ShowBagIsFull setflag FLAG_RECEIVED_MENTAL_HERB diff --git a/data/maps/GraniteCave_1F/scripts.inc b/data/maps/GraniteCave_1F/scripts.inc index 9aa0332f7d..a351476919 100644 --- a/data/maps/GraniteCave_1F/scripts.inc +++ b/data/maps/GraniteCave_1F/scripts.inc @@ -6,7 +6,7 @@ GraniteCave_1F_EventScript_Hiker:: @ 822DA5E faceplayer goto_if_set FLAG_RECEIVED_HM05, GraniteCave_1F_EventScript_ReceivedFlash msgbox GraniteCave_1F_Text_GetsDarkAheadHereYouGo, MSGBOX_DEFAULT - giveitem_std ITEM_HM05 + giveitem ITEM_HM05 setflag FLAG_RECEIVED_HM05 msgbox GraniteCave_1F_Text_ExplainFlash, MSGBOX_DEFAULT release diff --git a/data/maps/GraniteCave_StevensRoom/scripts.inc b/data/maps/GraniteCave_StevensRoom/scripts.inc index 0456f5eafd..1e8c44766b 100644 --- a/data/maps/GraniteCave_StevensRoom/scripts.inc +++ b/data/maps/GraniteCave_StevensRoom/scripts.inc @@ -9,7 +9,7 @@ GraniteCave_StevensRoom_EventScript_Steven:: @ 822DC7B call Common_EventScript_PlayerHandedOverTheItem setflag FLAG_DELIVERED_STEVEN_LETTER msgbox GraniteCave_StevensRoom_Text_ThankYouTakeThis, MSGBOX_DEFAULT - giveitem_std ITEM_TM47 + giveitem ITEM_TM47 compare VAR_RESULT, FALSE call_if_eq GraniteCave_StevensRoom_EventScript_BagFull msgbox GraniteCave_StevensRoom_Text_CouldBecomeChampionLetsRegister, MSGBOX_DEFAULT diff --git a/data/maps/LavaridgeTown/scripts.inc b/data/maps/LavaridgeTown/scripts.inc index dc45f94d44..5d86f36528 100644 --- a/data/maps/LavaridgeTown/scripts.inc +++ b/data/maps/LavaridgeTown/scripts.inc @@ -70,7 +70,7 @@ LavaridgeTown_EventScript_RivalGiveGoGoggles:: @ 81EA551 LavaridgeTown_EventScript_MayGiveGoGoggles:: @ 81EA5B5 msgbox LavaridgeTown_Text_MayNiceBadgesTakeThis, MSGBOX_DEFAULT - giveitem_std ITEM_GO_GOGGLES + giveitem ITEM_GO_GOGGLES setflag FLAG_RECEIVED_GO_GOGGLES msgbox LavaridgeTown_Text_MayExplainGoGogglesChallengeDad, MSGBOX_DEFAULT goto LavaridgeTown_EventScript_RivalExit @@ -78,7 +78,7 @@ LavaridgeTown_EventScript_MayGiveGoGoggles:: @ 81EA5B5 LavaridgeTown_EventScript_BrendanGiveGoGoggles:: @ 81EA5DA msgbox LavaridgeTown_Text_BrendanNiceBadgesTakeThis, MSGBOX_DEFAULT - giveitem_std ITEM_GO_GOGGLES + giveitem ITEM_GO_GOGGLES setflag FLAG_RECEIVED_GO_GOGGLES msgbox LavaridgeTown_Text_BrendanExplainGoGogglesChallengeDad, MSGBOX_DEFAULT goto LavaridgeTown_EventScript_RivalExit diff --git a/data/maps/LavaridgeTown_Gym_1F/scripts.inc b/data/maps/LavaridgeTown_Gym_1F/scripts.inc index b94970e621..3a164450eb 100644 --- a/data/maps/LavaridgeTown_Gym_1F/scripts.inc +++ b/data/maps/LavaridgeTown_Gym_1F/scripts.inc @@ -14,39 +14,31 @@ LavaridgeTown_Gym_1F_EventScript_SetTrainerTempVars:: @ 81FE705 setvar VAR_TEMP_D, 0 setvar VAR_TEMP_E, 0 setvar VAR_TEMP_F, 0 - checktrainerflag TRAINER_COLE - goto_if_eq LavaridgeTown_Gym_1F_EventScript_SetGeraldTempVar + goto_if_defeated TRAINER_COLE LavaridgeTown_Gym_1F_EventScript_SetGeraldTempVar setvar VAR_TEMP_B, 1 LavaridgeTown_Gym_1F_EventScript_SetGeraldTempVar:: @ 81FE72C - checktrainerflag TRAINER_GERALD - goto_if_eq LavaridgeTown_Gym_1F_EventScript_SetAxleTempVar + goto_if_defeated TRAINER_GERALD, LavaridgeTown_Gym_1F_EventScript_SetAxleTempVar setvar VAR_TEMP_C, 1 LavaridgeTown_Gym_1F_EventScript_SetAxleTempVar:: @ 81FE73A - checktrainerflag TRAINER_AXLE - goto_if_eq LavaridgeTown_Gym_1F_EventScript_SetDanielleTempVar + goto_if_defeated TRAINER_AXLE, LavaridgeTown_Gym_1F_EventScript_SetDanielleTempVar setvar VAR_TEMP_D, 1 LavaridgeTown_Gym_1F_EventScript_SetDanielleTempVar:: @ 81FE748 - checktrainerflag TRAINER_DANIELLE - goto_if_eq LavaridgeTown_Gym_1F_EventScript_EndSetTrainerTempVars + goto_if_defeated TRAINER_DANIELLE, LavaridgeTown_Gym_1F_EventScript_EndSetTrainerTempVars setvar VAR_TEMP_E, 1 LavaridgeTown_Gym_1F_EventScript_EndSetTrainerTempVars:: @ 81FE756 return LavaridgeTown_Gym_1F_EventScript_CheckHideTrainers:: @ 81FE757 - checktrainerflag TRAINER_COLE - goto_if_eq LavaridgeTown_Gym_1F_EventScript_CheckHideGerald + goto_if_defeated TRAINER_COLE, LavaridgeTown_Gym_1F_EventScript_CheckHideGerald setobjectmovementtype 2, MOVEMENT_TYPE_HIDDEN LavaridgeTown_Gym_1F_EventScript_CheckHideGerald:: @ 81FE764 - checktrainerflag TRAINER_GERALD - goto_if_eq LavaridgeTown_Gym_1F_EventScript_CheckHideAxle + goto_if_defeated TRAINER_GERALD, LavaridgeTown_Gym_1F_EventScript_CheckHideAxle setobjectmovementtype 3, MOVEMENT_TYPE_HIDDEN LavaridgeTown_Gym_1F_EventScript_CheckHideAxle:: @ 81FE771 - checktrainerflag TRAINER_AXLE - goto_if_eq LavaridgeTown_Gym_1F_EventScript_CheckHideDanielle + goto_if_defeated TRAINER_AXLE, LavaridgeTown_Gym_1F_EventScript_CheckHideDanielle setobjectmovementtype 4, MOVEMENT_TYPE_HIDDEN LavaridgeTown_Gym_1F_EventScript_CheckHideDanielle:: @ 81FE77E - checktrainerflag TRAINER_DANIELLE - goto_if_eq LavaridgeTown_Gym_1F_EventScript_EndCheckHideTrainers + goto_if_defeated TRAINER_DANIELLE, LavaridgeTown_Gym_1F_EventScript_EndCheckHideTrainers setobjectmovementtype 5, MOVEMENT_TYPE_HIDDEN LavaridgeTown_Gym_1F_EventScript_EndCheckHideTrainers:: @ 81FE78B return @@ -89,7 +81,7 @@ LavaridgeTown_Gym_1F_EventScript_FlanneryDefeated:: @ 81FE7C1 end LavaridgeTown_Gym_1F_EventScript_GiveOverheat2:: @ 81FE81D - giveitem_std ITEM_TM50 + giveitem ITEM_TM50 compare VAR_RESULT, 0 goto_if_eq Common_EventScript_ShowBagIsFull msgbox LavaridgeTown_Gym_1F_Text_ExplainOverheat, MSGBOX_DEFAULT @@ -98,7 +90,7 @@ LavaridgeTown_Gym_1F_EventScript_GiveOverheat2:: @ 81FE81D end LavaridgeTown_Gym_1F_EventScript_GiveOverheat:: @ 81FE841 - giveitem_std ITEM_TM50 + giveitem ITEM_TM50 compare VAR_RESULT, 0 goto_if_eq Common_EventScript_BagIsFull msgbox LavaridgeTown_Gym_1F_Text_ExplainOverheat, MSGBOX_DEFAULT diff --git a/data/maps/LavaridgeTown_Gym_B1F/scripts.inc b/data/maps/LavaridgeTown_Gym_B1F/scripts.inc index 9be4e29751..3a8f71fadf 100644 --- a/data/maps/LavaridgeTown_Gym_B1F/scripts.inc +++ b/data/maps/LavaridgeTown_Gym_B1F/scripts.inc @@ -13,39 +13,31 @@ LavaridgeTown_Gym_B1F_EventScript_SetTrainerTempVars:: @ 81FF88F setvar VAR_TEMP_8, 0 setvar VAR_TEMP_9, 0 setvar VAR_TEMP_A, 0 - checktrainerflag TRAINER_KEEGAN - goto_if_eq LavaridgeTown_Gym_B1F_EventScript_SetJaceTempVar + goto_if_defeated TRAINER_KEEGAN, LavaridgeTown_Gym_B1F_EventScript_SetJaceTempVar setvar VAR_TEMP_7, 1 LavaridgeTown_Gym_B1F_EventScript_SetJaceTempVar:: @ 81FF8B1 - checktrainerflag TRAINER_JACE - goto_if_eq LavaridgeTown_Gym_B1F_EventScript_SetJeffTempVar + goto_if_defeated TRAINER_JACE, LavaridgeTown_Gym_B1F_EventScript_SetJeffTempVar setvar VAR_TEMP_8, 1 LavaridgeTown_Gym_B1F_EventScript_SetJeffTempVar:: @ 81FF8BF - checktrainerflag TRAINER_JEFF - goto_if_eq LavaridgeTown_Gym_B1F_EventScript_SetEliTempVar + goto_if_defeated TRAINER_JEFF, LavaridgeTown_Gym_B1F_EventScript_SetEliTempVar setvar VAR_TEMP_9, 1 LavaridgeTown_Gym_B1F_EventScript_SetEliTempVar:: @ 81FF8CD - checktrainerflag TRAINER_ELI - goto_if_eq LavaridgeTown_Gym_B1F_EventScript_EndSetTrainerTempVars + goto_if_defeated TRAINER_ELI, LavaridgeTown_Gym_B1F_EventScript_EndSetTrainerTempVars setvar VAR_TEMP_A, 1 LavaridgeTown_Gym_B1F_EventScript_EndSetTrainerTempVars:: @ 81FF8DB return LavaridgeTown_Gym_B1F_EventScript_CheckHideTrainers:: @ 81FF8DC - checktrainerflag TRAINER_KEEGAN - goto_if_eq LavaridgeTown_Gym_B1F_EventScript_CheckHideJace + goto_if_defeated TRAINER_KEEGAN, LavaridgeTown_Gym_B1F_EventScript_CheckHideJace setobjectmovementtype 2, MOVEMENT_TYPE_HIDDEN LavaridgeTown_Gym_B1F_EventScript_CheckHideJace:: @ 81FF8E9 - checktrainerflag TRAINER_JACE - goto_if_eq LavaridgeTown_Gym_B1F_EventScript_CheckHideJeff + goto_if_defeated TRAINER_JACE, LavaridgeTown_Gym_B1F_EventScript_CheckHideJeff setobjectmovementtype 1, MOVEMENT_TYPE_HIDDEN LavaridgeTown_Gym_B1F_EventScript_CheckHideJeff:: @ 81FF8F6 - checktrainerflag TRAINER_JEFF - goto_if_eq LavaridgeTown_Gym_B1F_EventScript_CheckHideEli + goto_if_defeated TRAINER_JEFF, LavaridgeTown_Gym_B1F_EventScript_CheckHideEli setobjectmovementtype 3, MOVEMENT_TYPE_HIDDEN LavaridgeTown_Gym_B1F_EventScript_CheckHideEli:: @ 81FF903 - checktrainerflag TRAINER_ELI - goto_if_eq LavaridgeTown_Gym_B1F_EventScript_EndCheckHideTrainers + goto_if_defeated TRAINER_ELI, LavaridgeTown_Gym_B1F_EventScript_EndCheckHideTrainers setobjectmovementtype 4, MOVEMENT_TYPE_HIDDEN LavaridgeTown_Gym_B1F_EventScript_EndCheckHideTrainers:: @ 81FF910 return diff --git a/data/maps/LavaridgeTown_HerbShop/scripts.inc b/data/maps/LavaridgeTown_HerbShop/scripts.inc index c324685896..5f320a9423 100644 --- a/data/maps/LavaridgeTown_HerbShop/scripts.inc +++ b/data/maps/LavaridgeTown_HerbShop/scripts.inc @@ -30,7 +30,7 @@ LavaridgeTown_HerbShop_EventScript_OldMan:: @ 81FE505 faceplayer goto_if_set FLFLAG_RECEIVED_CHARCOAL, LavaridgeTown_HerbShop_EventScript_ExplainCharcoal msgbox LavaridgeTown_HerbShop_Text_YouveComeToLookAtHerbalMedicine, MSGBOX_DEFAULT - giveitem_std ITEM_CHARCOAL + giveitem ITEM_CHARCOAL compare VAR_RESULT, 0 goto_if_eq Common_EventScript_ShowBagIsFull setflag FLFLAG_RECEIVED_CHARCOAL diff --git a/data/maps/LilycoveCity/scripts.inc b/data/maps/LilycoveCity/scripts.inc index ea0017f3c7..fb3775f95e 100644 --- a/data/maps/LilycoveCity/scripts.inc +++ b/data/maps/LilycoveCity/scripts.inc @@ -38,7 +38,7 @@ LilycoveCity_EventScript_BerryGentleman:: @ 81E2BD8 msgbox LilycoveCity_Text_BerrySuitsYou, MSGBOX_DEFAULT random 10 addvar VAR_RESULT, FIRST_BERRY_INDEX - giveitem_std VAR_RESULT + giveitem VAR_RESULT compare VAR_RESULT, FALSE goto_if_eq Common_EventScript_ShowBagIsFull setflag FLAG_DAILY_LILYCOVE_RECEIVED_BERRY diff --git a/data/maps/LilycoveCity_ContestLobby/scripts.inc b/data/maps/LilycoveCity_ContestLobby/scripts.inc index bdfce43253..3dd3259c71 100644 --- a/data/maps/LilycoveCity_ContestLobby/scripts.inc +++ b/data/maps/LilycoveCity_ContestLobby/scripts.inc @@ -360,7 +360,7 @@ LilycoveCity_ContestLobby_EventScript_SetMasterContestType:: @ 821A5C9 LilycoveCity_ContestLobby_EventScript_SetDebug:: @ 821A5CF setflag FLAG_HIDE_LILYCOVE_MUSEUM_CURATOR copyvar VAR_LILYCOVE_MUSEUM_2F_STATE, 1 - giveitem ITEM_CONTEST_PASS, 1 + additem ITEM_CONTEST_PASS setvar VAR_0x800B, 8 setvar VAR_CONTEST_RANK, CONTEST_RANK_MASTER setvar VAR_LILYCOVE_CONTEST_LOBBY_STATE, 1 diff --git a/data/maps/LilycoveCity_DepartmentStoreRooftop/scripts.inc b/data/maps/LilycoveCity_DepartmentStoreRooftop/scripts.inc index 906286bc78..2cf7909e9b 100644 --- a/data/maps/LilycoveCity_DepartmentStoreRooftop/scripts.inc +++ b/data/maps/LilycoveCity_DepartmentStoreRooftop/scripts.inc @@ -147,7 +147,7 @@ LilycoveCity_DepartmentStoreRooftop_EventScript_TryBuyDrink:: @ 822032F bufferitemname 0, VAR_TEMP_0 playse SE_JIHANKI msgbox LilycoveCity_DepartmentStoreRooftop_Text_CanOfDrinkDroppedDown, MSGBOX_DEFAULT - giveitem VAR_TEMP_0, 1 + additem VAR_TEMP_0 bufferitemname 1, VAR_TEMP_0 bufferstdstring 2, STDSTRING_ITEMS msgbox gText_PutItemInPocket, MSGBOX_DEFAULT @@ -159,7 +159,7 @@ LilycoveCity_DepartmentStoreRooftop_EventScript_TryBuyDrink:: @ 822032F goto_if_eq LilycoveCity_DepartmentStoreRooftop_EventScript_NoRoomForDrink playse SE_JIHANKI msgbox LilycoveCity_DepartmentStoreRooftop_Text_ExtraCanOfDrinkDroppedDown, MSGBOX_DEFAULT - giveitem VAR_TEMP_0, 1 + additem VAR_TEMP_0 bufferitemname 1, VAR_TEMP_0 bufferstdstring 2, STDSTRING_ITEMS msgbox gText_PutItemInPocket, MSGBOX_DEFAULT @@ -171,7 +171,7 @@ LilycoveCity_DepartmentStoreRooftop_EventScript_TryBuyDrink:: @ 822032F goto_if_eq LilycoveCity_DepartmentStoreRooftop_EventScript_NoRoomForDrink playse SE_JIHANKI msgbox LilycoveCity_DepartmentStoreRooftop_Text_ExtraCanOfDrinkDroppedDown, MSGBOX_DEFAULT - giveitem VAR_TEMP_0, 1 + additem VAR_TEMP_0 bufferitemname 1, VAR_TEMP_0 bufferstdstring 2, STDSTRING_ITEMS msgbox gText_PutItemInPocket, MSGBOX_DEFAULT diff --git a/data/maps/LilycoveCity_DepartmentStore_1F/scripts.inc b/data/maps/LilycoveCity_DepartmentStore_1F/scripts.inc index 117dc60347..a3cf54ee02 100644 --- a/data/maps/LilycoveCity_DepartmentStore_1F/scripts.inc +++ b/data/maps/LilycoveCity_DepartmentStore_1F/scripts.inc @@ -48,7 +48,7 @@ LilycoveCity_DepartmentStore_1F_EventScript_LotteryClerk:: @ 821F69C call_if_eq LilycoveCity_DepartmentStore_1F_EventScript_FourDigitMatch compare VAR_0x8004, 4 call_if_eq LilycoveCity_DepartmentStore_1F_EventScript_FullMatch - giveitem_std VAR_0x8005 + giveitem VAR_0x8005 compare VAR_RESULT, FALSE goto_if_eq LilycoveCity_DepartmentStore_1F_EventScript_RecordPrizeNoRoom special TryPutLotteryWinnerReportOnAir @@ -112,7 +112,7 @@ LilycoveCity_DepartmentStore_1F_EventScript_NoRoomForPrize:: @ 821F7ED LilycoveCity_DepartmentStore_1F_EventScript_GivePrizeFromEarlier:: @ 821F7F7 msgbox LilycoveCity_DepartmentStore_1F_Text_PrizeWeveBeenHolding, MSGBOX_DEFAULT - giveitem_std VAR_POKELOT_PRIZE_ITEM + giveitem VAR_POKELOT_PRIZE_ITEM compare VAR_RESULT, FALSE goto_if_eq LilycoveCity_DepartmentStore_1F_EventScript_NoRoomForPrize copyvar VAR_0x8004, VAR_POKELOT_PRIZE_PLACE diff --git a/data/maps/LilycoveCity_Harbor/scripts.inc b/data/maps/LilycoveCity_Harbor/scripts.inc index cf273bcb81..3d5af5b8f9 100644 --- a/data/maps/LilycoveCity_Harbor/scripts.inc +++ b/data/maps/LilycoveCity_Harbor/scripts.inc @@ -364,7 +364,7 @@ LilycoveCity_Harbor_EventScript_BoardFerryWithSailor:: @ 821E514 compare VAR_FACING, DIR_EAST call_if_eq LilycoveCity_Harbor_EventScript_PlayerBoardFerryEast delay 30 - hideobjectat EVENT_OBJ_ID_PLAYER, MAP_PETALBURG_CITY + hideobjectat EVENT_OBJ_ID_PLAYER, 0 setvar VAR_0x8004, 2 call Common_EventScript_FerryDepart return @@ -428,7 +428,7 @@ LilycoveCity_Harbor_EventScript_BoardFerry:: @ 821E5CC compare VAR_FACING, DIR_EAST call_if_eq LilycoveCity_Harbor_EventScript_PlayerBoardFerryEast delay 30 - hideobjectat EVENT_OBJ_ID_PLAYER, MAP_PETALBURG_CITY + hideobjectat EVENT_OBJ_ID_PLAYER, 0 setvar VAR_0x8004, 2 call Common_EventScript_FerryDepart return diff --git a/data/maps/LilycoveCity_House2/scripts.inc b/data/maps/LilycoveCity_House2/scripts.inc index 517ba04347..29d741abd4 100644 --- a/data/maps/LilycoveCity_House2/scripts.inc +++ b/data/maps/LilycoveCity_House2/scripts.inc @@ -6,7 +6,7 @@ LilycoveCity_House2_EventScript_FatMan:: @ 821ED75 faceplayer goto_if_set FLAG_RECEIVED_TM44, LilycoveCity_House2_EventScript_ReceivedRest msgbox LilycoveCity_House2_Text_NotAwakeYetHaveThis, MSGBOX_DEFAULT - giveitem_std ITEM_TM44 + giveitem ITEM_TM44 compare VAR_RESULT, FALSE goto_if_eq Common_EventScript_ShowBagIsFull setflag FLAG_RECEIVED_TM44 diff --git a/data/maps/LilycoveCity_LilycoveMuseum_2F/scripts.inc b/data/maps/LilycoveCity_LilycoveMuseum_2F/scripts.inc index f3328a9795..0d06d8af4c 100644 --- a/data/maps/LilycoveCity_LilycoveMuseum_2F/scripts.inc +++ b/data/maps/LilycoveCity_LilycoveMuseum_2F/scripts.inc @@ -118,7 +118,7 @@ LilycoveCity_LilycoveMuseum_2F_EventScript_ThankPlayer:: @ 82198C3 LilycoveCity_LilycoveMuseum_2F_EventScript_GiveGlassOrnament:: @ 82198EA applymovement 1, Common_Movement_FacePlayer msgbox LilycoveCity_LilycoveMuseum_2F_Text_TokenOfGratitude, MSGBOX_DEFAULT - givedecoration_std DECOR_GLASS_ORNAMENT + givedecoration DECOR_GLASS_ORNAMENT compare VAR_RESULT, FALSE goto_if_eq LilycoveCity_LilycoveMuseum_2F_EventScript_NoRoomForGlassOrnament setflag FLAG_RECEIVED_GLASS_ORNAMENT diff --git a/data/maps/LittlerootTown/scripts.inc b/data/maps/LittlerootTown/scripts.inc index cb2589ed25..72b7b10504 100644 --- a/data/maps/LittlerootTown/scripts.inc +++ b/data/maps/LittlerootTown/scripts.inc @@ -167,7 +167,7 @@ LittlerootTown_EventScript_GoInsideWithMom:: @ 81E7F17 waitmovement 0 setflag FLAG_HIDE_LITTLEROOT_TOWN_MOM_OUTSIDE setvar VAR_LITTLEROOT_INTRO_STATE, 3 - hideobjectat EVENT_OBJ_ID_PLAYER, MAP_PETALBURG_CITY + hideobjectat EVENT_OBJ_ID_PLAYER, 0 closedoor VAR_0x8004, VAR_0x8005 waitdooranim clearflag FLAG_HIDE_LITTLEROOT_TOWN_FAT_MAN diff --git a/data/maps/LittlerootTown_ProfessorBirchsLab/scripts.inc b/data/maps/LittlerootTown_ProfessorBirchsLab/scripts.inc index b27cb1f8ad..f6ed7d8cad 100644 --- a/data/maps/LittlerootTown_ProfessorBirchsLab/scripts.inc +++ b/data/maps/LittlerootTown_ProfessorBirchsLab/scripts.inc @@ -563,7 +563,7 @@ LittlerootTown_ProfessorBirchsLab_EventScript_GivePokedex:: @ 81FA2F8 LittlerootTown_ProfessorBirchsLab_EventScript_MayGivePokeBalls:: @ 81FA352 msgbox LittlerootTown_ProfessorBirchsLab_Text_MayGotPokedexTooTakeThese, MSGBOX_DEFAULT - giveitem_std ITEM_POKE_BALL, 5 + giveitem ITEM_POKE_BALL, 5 compare VAR_RESULT, FALSE call_if_eq LittlerootTown_ProfessorBirchsLab_EventScript_MayNoRoomForPokeBalls msgbox LittlerootTown_ProfessorBirchsLab_Text_CatchCutePokemonWithPokeBalls, MSGBOX_DEFAULT @@ -572,7 +572,7 @@ LittlerootTown_ProfessorBirchsLab_EventScript_MayGivePokeBalls:: @ 81FA352 LittlerootTown_ProfessorBirchsLab_EventScript_BrendanGivePokeBalls:: @ 81FA37F msgbox LittlerootTown_ProfessorBirchsLab_Text_BrendanGotPokedexTooTakeThese, MSGBOX_DEFAULT - giveitem_std ITEM_POKE_BALL, 5 + giveitem ITEM_POKE_BALL, 5 compare VAR_RESULT, FALSE call_if_eq LittlerootTown_ProfessorBirchsLab_EventScript_BrendanNoRoomForPokeBalls msgbox LittlerootTown_ProfessorBirchsLab_Text_CatchCoolPokemonWithPokeBalls, MSGBOX_DEFAULT diff --git a/data/maps/MauvilleCity/scripts.inc b/data/maps/MauvilleCity/scripts.inc index 9c83d80988..fac5e84ce5 100644 --- a/data/maps/MauvilleCity/scripts.inc +++ b/data/maps/MauvilleCity/scripts.inc @@ -425,7 +425,7 @@ MauvilleCity_EventScript_Wattson:: @ 81DF73A goto_if_eq MauvilleCity_EventScript_CompletedNewMauville goto_if_set FLAG_GOT_BASEMENT_KEY_FROM_WATTSON, MauvilleCity_EventScript_BegunNewMauville msgbox MauvilleCity_Text_WattsonNeedFavorTakeKey, MSGBOX_DEFAULT - giveitem_std ITEM_BASEMENT_KEY + giveitem ITEM_BASEMENT_KEY setflag FLAG_GOT_BASEMENT_KEY_FROM_WATTSON msgbox MauvilleCity_Text_WattsonWontBeChallenge, MSGBOX_DEFAULT release @@ -438,7 +438,7 @@ MauvilleCity_EventScript_BegunNewMauville:: @ 81DF77A MauvilleCity_EventScript_CompletedNewMauville:: @ 81DF784 msgbox MauvilleCity_Text_WattsonThanksTakeTM, MSGBOX_DEFAULT - giveitem_std ITEM_TM24 + giveitem ITEM_TM24 compare VAR_RESULT, FALSE goto_if_eq Common_EventScript_ShowBagIsFull setflag FLAG_GOT_TM24_FROM_WATTSON diff --git a/data/maps/MauvilleCity_BikeShop/scripts.inc b/data/maps/MauvilleCity_BikeShop/scripts.inc index 4b0372eac7..d953ecabbd 100644 --- a/data/maps/MauvilleCity_BikeShop/scripts.inc +++ b/data/maps/MauvilleCity_BikeShop/scripts.inc @@ -44,13 +44,13 @@ MauvilleCity_BikeShop_EventScript_YesFar:: @ 820EC4A MauvilleCity_BikeShop_EventScript_GetMachBike:: @ 820EC53 msgbox MauvilleCity_BikeShop_Text_ChoseMachBike, MSGBOX_DEFAULT - giveitem_std ITEM_MACH_BIKE + giveitem ITEM_MACH_BIKE goto MauvilleCity_BikeShop_EventScript_ComeBackToSwitchBikes end MauvilleCity_BikeShop_EventScript_GetAcroBike:: @ 820EC6D msgbox MauvilleCity_BikeShop_Text_ChoseAcroBike, MSGBOX_DEFAULT - giveitem_std ITEM_ACRO_BIKE + giveitem ITEM_ACRO_BIKE goto MauvilleCity_BikeShop_EventScript_ComeBackToSwitchBikes end @@ -90,7 +90,7 @@ MauvilleCity_BikeShop_EventScript_SwitchAcroForMach:: @ 820ECEF incrementgamestat GAME_STAT_TRADED_BIKES msgbox MauvilleCity_BikeShop_Text_ExchangedAcroForMach, MSGBOX_DEFAULT takeitem ITEM_ACRO_BIKE, 1 - giveitem_std ITEM_MACH_BIKE + giveitem ITEM_MACH_BIKE goto MauvilleCity_BikeShop_EventScript_ComeBackToSwitchBikes end @@ -98,7 +98,7 @@ MauvilleCity_BikeShop_EventScript_SwitchMachForAcro:: @ 820ED10 incrementgamestat GAME_STAT_TRADED_BIKES msgbox MauvilleCity_BikeShop_Text_ExchangedMachForAcro, MSGBOX_DEFAULT takeitem ITEM_MACH_BIKE, 1 - giveitem_std ITEM_ACRO_BIKE + giveitem ITEM_ACRO_BIKE goto MauvilleCity_BikeShop_EventScript_ComeBackToSwitchBikes end diff --git a/data/maps/MauvilleCity_GameCorner/scripts.inc b/data/maps/MauvilleCity_GameCorner/scripts.inc index 2bafd056ef..6efa647c91 100644 --- a/data/maps/MauvilleCity_GameCorner/scripts.inc +++ b/data/maps/MauvilleCity_GameCorner/scripts.inc @@ -170,7 +170,7 @@ MauvilleCity_GameCorner_EventScript_BuyTreeckoDoll:: @ 820FDCB compare VAR_RESULT, FALSE goto_if_eq MauvilleCity_GameCorner_EventScript_NoRoomForDoll takecoins DOLL_COINS - givedecoration DECOR_TREECKO_DOLL + adddecoration DECOR_TREECKO_DOLL updatecoinsbox 1, 1 playse SE_REGI msgbox MauvilleCity_GameCorner_Text_SendToYourHomePC, MSGBOX_DEFAULT @@ -186,7 +186,7 @@ MauvilleCity_GameCorner_EventScript_BuyTorchicDoll:: @ 820FE05 compare VAR_RESULT, FALSE goto_if_eq MauvilleCity_GameCorner_EventScript_NoRoomForDoll takecoins DOLL_COINS - givedecoration DECOR_TORCHIC_DOLL + adddecoration DECOR_TORCHIC_DOLL updatecoinsbox 1, 1 playse SE_REGI msgbox MauvilleCity_GameCorner_Text_SendToYourHomePC, MSGBOX_DEFAULT @@ -202,7 +202,7 @@ MauvilleCity_GameCorner_EventScript_BuyMudkipDoll:: @ 820FE3F compare VAR_RESULT, FALSE goto_if_eq MauvilleCity_GameCorner_EventScript_NoRoomForDoll takecoins DOLL_COINS - givedecoration DECOR_MUDKIP_DOLL + adddecoration DECOR_MUDKIP_DOLL updatecoinsbox 1, 1 playse SE_REGI msgbox MauvilleCity_GameCorner_Text_SendToYourHomePC, MSGBOX_DEFAULT @@ -310,7 +310,7 @@ MauvilleCity_GameCorner_EventScript_BuyTM32:: @ 820FFDD compare VAR_RESULT, FALSE goto_if_eq MauvilleCity_GameCorner_EventScript_NoRoomForTM takecoins TM32_COINS - giveitem ITEM_TM32, 1 + additem ITEM_TM32 updatecoinsbox 1, 1 playse SE_REGI msgbox MauvilleCity_GameCorner_Text_HereYouGo, MSGBOX_DEFAULT @@ -325,7 +325,7 @@ MauvilleCity_GameCorner_EventScript_BuyTM29:: @ 8210017 compare VAR_RESULT, FALSE goto_if_eq MauvilleCity_GameCorner_EventScript_NoRoomForTM takecoins TM29_COINS - giveitem ITEM_TM29, 1 + additem ITEM_TM29 updatecoinsbox 1, 1 playse SE_REGI msgbox MauvilleCity_GameCorner_Text_HereYouGo, MSGBOX_DEFAULT @@ -340,7 +340,7 @@ MauvilleCity_GameCorner_EventScript_BuyTM35:: @ 8210051 compare VAR_RESULT, FALSE goto_if_eq MauvilleCity_GameCorner_EventScript_NoRoomForTM takecoins TM35_COINS - giveitem ITEM_TM35, 1 + additem ITEM_TM35 updatecoinsbox 1, 1 playse SE_REGI msgbox MauvilleCity_GameCorner_Text_HereYouGo, MSGBOX_DEFAULT @@ -355,7 +355,7 @@ MauvilleCity_GameCorner_EventScript_BuyTM24:: @ 821008B compare VAR_RESULT, FALSE goto_if_eq MauvilleCity_GameCorner_EventScript_NoRoomForTM takecoins TM24_COINS - giveitem ITEM_TM24, 1 + additem ITEM_TM24 updatecoinsbox 1, 1 playse SE_REGI msgbox MauvilleCity_GameCorner_Text_HereYouGo, MSGBOX_DEFAULT @@ -370,7 +370,7 @@ MauvilleCity_GameCorner_EventScript_BuyTM13:: @ 82100C5 compare VAR_RESULT, FALSE goto_if_eq MauvilleCity_GameCorner_EventScript_NoRoomForTM takecoins TM13_COINS - giveitem ITEM_TM13, 1 + additem ITEM_TM13 updatecoinsbox 1, 1 playse SE_REGI msgbox MauvilleCity_GameCorner_Text_HereYouGo, MSGBOX_DEFAULT @@ -420,7 +420,7 @@ MauvilleCity_GameCorner_EventScript_GiveTreeckoDoll:: @ 821017C compare VAR_RESULT, FALSE goto_if_eq MauvilleCity_GameCorner_EventScript_NoRoomForStarterDoll msgbox MauvilleCity_GameCorner_Text_HereYouGo2, MSGBOX_DEFAULT - givedecoration_std DECOR_TREECKO_DOLL + givedecoration DECOR_TREECKO_DOLL setflag FLAG_RECEIVED_STARTER_DOLL goto MauvilleCity_GameCorner_EventScript_ReceivedStarterDoll end @@ -431,7 +431,7 @@ MauvilleCity_GameCorner_EventScript_GiveTorchicDoll:: @ 82101A6 compare VAR_RESULT, FALSE goto_if_eq MauvilleCity_GameCorner_EventScript_NoRoomForStarterDoll msgbox MauvilleCity_GameCorner_Text_HereYouGo2, MSGBOX_DEFAULT - givedecoration_std DECOR_TORCHIC_DOLL + givedecoration DECOR_TORCHIC_DOLL setflag FLAG_RECEIVED_STARTER_DOLL goto MauvilleCity_GameCorner_EventScript_ReceivedStarterDoll end @@ -442,7 +442,7 @@ MauvilleCity_GameCorner_EventScript_GiveMudkipDoll:: @ 82101D0 compare VAR_RESULT, FALSE goto_if_eq MauvilleCity_GameCorner_EventScript_NoRoomForStarterDoll msgbox MauvilleCity_GameCorner_Text_HereYouGo2, MSGBOX_DEFAULT - givedecoration_std DECOR_MUDKIP_DOLL + givedecoration DECOR_MUDKIP_DOLL setflag FLAG_RECEIVED_STARTER_DOLL goto MauvilleCity_GameCorner_EventScript_ReceivedStarterDoll end diff --git a/data/maps/MauvilleCity_Gym/scripts.inc b/data/maps/MauvilleCity_Gym/scripts.inc index 450f412203..2fcd29e1dc 100644 --- a/data/maps/MauvilleCity_Gym/scripts.inc +++ b/data/maps/MauvilleCity_Gym/scripts.inc @@ -115,7 +115,7 @@ MauvilleCity_Gym_EventScript_WattsonDefeated:: @ 820DF2B end MauvilleCity_Gym_EventScript_GiveShockWave2:: @ 820DF8D - giveitem_std ITEM_TM34 + giveitem ITEM_TM34 compare VAR_RESULT, 0 goto_if_eq Common_EventScript_ShowBagIsFull msgbox MauvilleCity_Gym_Text_ExplainShockWave, MSGBOX_DEFAULT @@ -124,7 +124,7 @@ MauvilleCity_Gym_EventScript_GiveShockWave2:: @ 820DF8D end MauvilleCity_Gym_EventScript_GiveShockWave:: @ 820DFB1 - giveitem_std ITEM_TM34 + giveitem ITEM_TM34 compare VAR_RESULT, 0 goto_if_eq Common_EventScript_BagIsFull msgbox MauvilleCity_Gym_Text_ExplainShockWave, MSGBOX_DEFAULT diff --git a/data/maps/MauvilleCity_House1/scripts.inc b/data/maps/MauvilleCity_House1/scripts.inc index eff01eb949..21655a1b86 100644 --- a/data/maps/MauvilleCity_House1/scripts.inc +++ b/data/maps/MauvilleCity_House1/scripts.inc @@ -6,7 +6,7 @@ MauvilleCity_House1_EventScript_RockSmashDude:: @ 820F976 faceplayer goto_if_set FLAG_RECEIVED_HM06, MauvilleCity_House1_EventScript_ReceivedRockSmash msgbox MauvilleCity_House1_Text_ImRockSmashDudeTakeThis, MSGBOX_DEFAULT - giveitem_std ITEM_HM06 + giveitem ITEM_HM06 setflag FLAG_RECEIVED_HM06 setflag FLAG_HIDE_ROUTE_111_ROCK_SMASH_TIP_GUY msgbox MauvilleCity_House1_Text_ExplainRockSmash, MSGBOX_DEFAULT diff --git a/data/maps/MauvilleCity_House2/scripts.inc b/data/maps/MauvilleCity_House2/scripts.inc index 5dbf5d4114..6022fcb385 100644 --- a/data/maps/MauvilleCity_House2/scripts.inc +++ b/data/maps/MauvilleCity_House2/scripts.inc @@ -28,7 +28,7 @@ MauvilleCity_House2_EventScript_AskToTradeForHarborMail:: @ 8210C82 MauvilleCity_House2_EventScript_AcceptTrade:: @ 8210CB8 msgbox MauvilleCity_House2_Text_IllTradeYouCoinCase, MSGBOX_DEFAULT takeitem ITEM_HARBOR_MAIL, 1 - giveitem_std ITEM_COIN_CASE + giveitem ITEM_COIN_CASE setflag FLAG_RECEIVED_COIN_CASE goto MauvilleCity_House2_EventScript_ReceivedCoinCase end diff --git a/data/maps/MirageTower_4F/scripts.inc b/data/maps/MirageTower_4F/scripts.inc index d23cb160e7..ceb78ab459 100644 --- a/data/maps/MirageTower_4F/scripts.inc +++ b/data/maps/MirageTower_4F/scripts.inc @@ -7,7 +7,7 @@ MirageTower_4F_EventScript_RootFossil:: @ 823AD48 msgbox MirageTower_4F_Text_TakeRootFossil, MSGBOX_YESNO compare VAR_RESULT, NO goto_if_eq MirageTower_4F_EventScript_LeaveRootFossil - giveitem_std ITEM_ROOT_FOSSIL + giveitem ITEM_ROOT_FOSSIL closemessage setflag FLAG_HIDE_MIRAGE_TOWER_ROOT_FOSSIL setflag FLAG_HIDE_MIRAGE_TOWER_CLAW_FOSSIL @@ -28,7 +28,7 @@ MirageTower_4F_EventScript_ClawFossil:: @ 823AD89 msgbox MirageTower_4F_Text_TakeClawFossil, MSGBOX_YESNO compare VAR_RESULT, NO goto_if_eq MirageTower_4F_EventScript_LeaveClawFossil - giveitem_std ITEM_CLAW_FOSSIL + giveitem ITEM_CLAW_FOSSIL closemessage setflag FLAG_HIDE_MIRAGE_TOWER_CLAW_FOSSIL setflag FLAG_HIDE_MIRAGE_TOWER_ROOT_FOSSIL diff --git a/data/maps/MossdeepCity/scripts.inc b/data/maps/MossdeepCity/scripts.inc index ce53af4278..945a92dfb4 100644 --- a/data/maps/MossdeepCity/scripts.inc +++ b/data/maps/MossdeepCity/scripts.inc @@ -229,7 +229,7 @@ MossdeepCity_EventScript_KingsRockBoy:: @ 81E4C26 compare VAR_RESULT, NO goto_if_eq MossdeepCity_EventScript_DeclineKingsRock msgbox MossdeepCity_Text_YouCanKeepIt, MSGBOX_DEFAULT - giveitem_std ITEM_KINGS_ROCK + giveitem ITEM_KINGS_ROCK compare VAR_RESULT, FALSE goto_if_eq Common_EventScript_ShowBagIsFull setflag FLAG_RECEIVED_KINGS_ROCK diff --git a/data/maps/MossdeepCity_Gym/scripts.inc b/data/maps/MossdeepCity_Gym/scripts.inc index ec5e2bb704..5c4b1a1689 100644 --- a/data/maps/MossdeepCity_Gym/scripts.inc +++ b/data/maps/MossdeepCity_Gym/scripts.inc @@ -91,7 +91,7 @@ MossdeepCity_Gym_EventScript_TateAndLizaDefeated:: @ 82208D1 end MossdeepCity_Gym_EventScript_GiveCalmMind2:: @ 8220937 - giveitem_std ITEM_TM04 + giveitem ITEM_TM04 compare VAR_RESULT, 0 goto_if_eq Common_EventScript_ShowBagIsFull msgbox MossdeepCity_Gym_Text_ExplainCalmMind, MSGBOX_DEFAULT @@ -100,7 +100,7 @@ MossdeepCity_Gym_EventScript_GiveCalmMind2:: @ 8220937 end MossdeepCity_Gym_EventScript_GiveCalmMind:: @ 822095B - giveitem_std ITEM_TM04 + giveitem ITEM_TM04 compare VAR_RESULT, 0 goto_if_eq Common_EventScript_BagIsFull msgbox MossdeepCity_Gym_Text_ExplainCalmMind, MSGBOX_DEFAULT diff --git a/data/maps/MossdeepCity_House3/scripts.inc b/data/maps/MossdeepCity_House3/scripts.inc index 96285cf257..b968dfc045 100644 --- a/data/maps/MossdeepCity_House3/scripts.inc +++ b/data/maps/MossdeepCity_House3/scripts.inc @@ -9,7 +9,7 @@ MossdeepCity_House3_EventScript_SuperRodFisherman:: @ 82225C3 compare VAR_RESULT, NO goto_if_eq MossdeepCity_House3_EventScript_DeclineSuperRod msgbox MossdeepCity_House3_Text_SuperRodIsSuper, MSGBOX_DEFAULT - giveitem_std ITEM_SUPER_ROD + giveitem ITEM_SUPER_ROD setflag FLAG_RECEIVED_SUPER_ROD msgbox MossdeepCity_House3_Text_TryDroppingRodInWater, MSGBOX_DEFAULT release diff --git a/data/maps/MossdeepCity_SpaceCenter_1F/scripts.inc b/data/maps/MossdeepCity_SpaceCenter_1F/scripts.inc index 3499244edc..05c14f11a5 100644 --- a/data/maps/MossdeepCity_SpaceCenter_1F/scripts.inc +++ b/data/maps/MossdeepCity_SpaceCenter_1F/scripts.inc @@ -119,7 +119,7 @@ MossdeepCity_SpaceCenter_1F_EventScript_SunStoneMan:: @ 822308E goto_if_eq MossdeepCity_SpaceCenter_1F_EventScript_SunStoneManMagma goto_if_set FLAG_RECEIVED_SUN_STONE_MOSSDEEP, MossdeepCity_SpaceCenter_1F_EventScript_GaveSunStone msgbox MossdeepCity_SpaceCenter_1F_Text_FoundThisYouCanHaveIt, MSGBOX_DEFAULT - giveitem_std ITEM_SUN_STONE + giveitem ITEM_SUN_STONE compare VAR_RESULT, 0 goto_if_eq Common_EventScript_ShowBagIsFull setflag FLAG_RECEIVED_SUN_STONE_MOSSDEEP @@ -135,7 +135,7 @@ MossdeepCity_SpaceCenter_1F_EventScript_GaveSunStone:: @ 82230D0 MossdeepCity_SpaceCenter_1F_EventScript_SunStoneManMagma:: @ 82230DA goto_if_set FLAG_RECEIVED_SUN_STONE_MOSSDEEP, MossdeepCity_SpaceCenter_1F_EventScript_GaveSunStoneMagma msgbox MossdeepCity_SpaceCenter_1F_Text_MagmaCantStealFuelTakeThis, MSGBOX_DEFAULT - giveitem_std ITEM_SUN_STONE + giveitem ITEM_SUN_STONE compare VAR_RESULT, 0 goto_if_eq Common_EventScript_ShowBagIsFull setflag FLAG_RECEIVED_SUN_STONE_MOSSDEEP diff --git a/data/maps/MossdeepCity_StevensHouse/scripts.inc b/data/maps/MossdeepCity_StevensHouse/scripts.inc index b5598e60d4..bc71c6ca4a 100644 --- a/data/maps/MossdeepCity_StevensHouse/scripts.inc +++ b/data/maps/MossdeepCity_StevensHouse/scripts.inc @@ -38,7 +38,7 @@ MossdeepCity_StevensHouse_EventScript_StevenGivesDive:: @ 82227CA applymovement 1, MossdeepCity_StevensHouse_Movement_StevenApproachPlayer waitmovement 0 msgbox MossdeepCity_StevensHouse_Text_YouveEarnedHMDive, MSGBOX_DEFAULT - giveitem_std ITEM_HM08 + giveitem ITEM_HM08 setflag FLAG_RECEIVED_HM08 setflag FLAG_OMIT_DIVE_FROM_STEVEN_LETTER msgbox MossdeepCity_StevensHouse_Text_ExplainDive, MSGBOX_DEFAULT @@ -149,7 +149,7 @@ MossdeepCity_StevensHouse_EventScript_Letter:: @ 822291B @ Unused, leftover from RS MossdeepCity_StevensHouse_EventScript_DiveItemBall:: @ 8222926 - finditem_std ITEM_HM08 + finditem ITEM_HM08 setflag FLAG_RECEIVED_HM08 end diff --git a/data/maps/MtChimney/scripts.inc b/data/maps/MtChimney/scripts.inc index 76559a8560..22c5a72d24 100644 --- a/data/maps/MtChimney/scripts.inc +++ b/data/maps/MtChimney/scripts.inc @@ -111,7 +111,7 @@ MtChimney_EventScript_LavaCookieLady:: @ 822EEF3 checkitemspace ITEM_LAVA_COOKIE, 1 compare VAR_RESULT, TRUE call_if_eq MtChimney_EventScript_TakeMoney - giveitem_std ITEM_LAVA_COOKIE + giveitem ITEM_LAVA_COOKIE compare VAR_RESULT, FALSE goto_if_eq MtChimney_EventScript_BagIsFull hidemoneybox @@ -464,7 +464,7 @@ MtChimney_EventScript_MeteoriteMachine:: @ 822F0E4 compare VAR_RESULT, NO goto_if_eq MtChimney_EventScript_LeaveMeteoriteAlone msgbox MtChimney_Text_PlayerRemovedMeteorite, MSGBOX_DEFAULT - giveitem_std ITEM_METEORITE + giveitem ITEM_METEORITE setflag FLAG_RECEIVED_METEORITE releaseall end diff --git a/data/maps/MtPyre_1F/scripts.inc b/data/maps/MtPyre_1F/scripts.inc index 2574e68516..a303cb2c10 100644 --- a/data/maps/MtPyre_1F/scripts.inc +++ b/data/maps/MtPyre_1F/scripts.inc @@ -6,7 +6,7 @@ MtPyre_1F_EventScript_CleanseTagWoman:: @ 8230F3F faceplayer goto_if_set FLAG_RECEIVED_CLEANSE_TAG, MtPyre_1F_EventScript_ReceivedCleanseTag msgbox MtPyre_1F_Text_TakeThisForYourOwnGood, MSGBOX_DEFAULT - giveitem_std ITEM_CLEANSE_TAG + giveitem ITEM_CLEANSE_TAG compare VAR_RESULT, FALSE goto_if_eq Common_EventScript_ShowBagIsFull setflag FLAG_RECEIVED_CLEANSE_TAG diff --git a/data/maps/MtPyre_Summit/scripts.inc b/data/maps/MtPyre_Summit/scripts.inc index c13dd0da7b..2b475b1ae9 100644 --- a/data/maps/MtPyre_Summit/scripts.inc +++ b/data/maps/MtPyre_Summit/scripts.inc @@ -64,7 +64,7 @@ MtPyre_Summit_EventScript_TeamAquaExits:: @ 823203C compare VAR_0x8008, 2 call_if_eq MtPyre_Summit_EventScript_OldLadyApproachPlayer2 msgbox MtPyre_Summit_Text_BothOrbsTakenMagmaLeftThis, MSGBOX_DEFAULT - giveitem_std ITEM_MAGMA_EMBLEM + giveitem ITEM_MAGMA_EMBLEM setflag FLAG_RECEIVED_RED_OR_BLUE_ORB setflag FLAG_HIDE_JAGGED_PASS_MAGMA_GUARD releaseall diff --git a/data/maps/OldaleTown/scripts.inc b/data/maps/OldaleTown/scripts.inc index 88f73d39bd..754e322a00 100644 --- a/data/maps/OldaleTown/scripts.inc +++ b/data/maps/OldaleTown/scripts.inc @@ -71,7 +71,7 @@ OldaleTown_EventScript_GoToMartEast:: @ 81E8F75 OldaleTown_EventScript_ExplainPokemonMart:: @ 81E8F8C msgbox OldaleTown_Text_ThisIsAPokemonMart, MSGBOX_DEFAULT - giveitem_std ITEM_POTION + giveitem ITEM_POTION compare VAR_RESULT, 0 goto_if_eq OldaleTown_EventScript_BagIsFull msgbox OldaleTown_Text_PotionExplanation, MSGBOX_DEFAULT diff --git a/data/maps/PacifidlogTown_House2/scripts.inc b/data/maps/PacifidlogTown_House2/scripts.inc index d22a87dc9c..2dcff9f29e 100644 --- a/data/maps/PacifidlogTown_House2/scripts.inc +++ b/data/maps/PacifidlogTown_House2/scripts.inc @@ -41,7 +41,7 @@ PacifidlogTown_House2_EventScript_ClearReceivedFanClubTM:: @ 8203812 PacifidlogTown_House2_EventScript_GiveReturn:: @ 8203816 msgbox PacifidlogTown_House2_Text_AdoringPokemonTakeThis, MSGBOX_DEFAULT - giveitem_std ITEM_TM27 + giveitem ITEM_TM27 compare VAR_RESULT, FALSE goto_if_eq Common_EventScript_ShowBagIsFull setflag FLAG_RECEIVED_FANCLUB_TM_THIS_WEEK @@ -57,7 +57,7 @@ PacifidlogTown_House2_EventScript_PutInEffort:: @ 8203845 PacifidlogTown_House2_EventScript_GiveFrustration:: @ 820384F msgbox PacifidlogTown_House2_Text_ViciousPokemonTakeThis, MSGBOX_DEFAULT - giveitem_std ITEM_TM21 + giveitem ITEM_TM21 compare VAR_RESULT, 0 goto_if_eq Common_EventScript_ShowBagIsFull setflag FLAG_RECEIVED_FANCLUB_TM_THIS_WEEK diff --git a/data/maps/PetalburgCity_Gym/scripts.inc b/data/maps/PetalburgCity_Gym/scripts.inc index d9f299db2c..e3b636a7eb 100644 --- a/data/maps/PetalburgCity_Gym/scripts.inc +++ b/data/maps/PetalburgCity_Gym/scripts.inc @@ -16,20 +16,13 @@ PetalburgCity_Gym_OnLoad: @ 820489E PetalburgCity_Gym_EventScript_OpenUnlockedDoors:: @ 82048B5 setvar VAR_0x8005, 1 call PetalburgCity_Gym_EventScript_OpenGymEntranceDoors - checktrainerflag TRAINER_RANDALL - call_if_eq PetalburgCity_Gym_EventScript_OpenSpeedRoomDoors - checktrainerflag TRAINER_MARY - call_if_eq PetalburgCity_Gym_EventScript_OpenAccuracyRoomDoors - checktrainerflag TRAINER_PARKER - call_if_eq PetalburgCity_Gym_EventScript_OpenConfusionRoomDoors - checktrainerflag TRAINER_ALEXIA - call_if_eq PetalburgCity_Gym_EventScript_OpenDefenseRoomDoors - checktrainerflag TRAINER_GEORGE - call_if_eq PetalburgCity_Gym_EventScript_OpenRecoveryRoomDoors - checktrainerflag TRAINER_JODY - call_if_eq PetalburgCity_Gym_EventScript_OpenStrengthRoomDoors - checktrainerflag TRAINER_BERKE - call_if_eq PetalburgCity_Gym_EventScript_OpenOHKORoomDoors + call_if_defeated TRAINER_RANDALL, PetalburgCity_Gym_EventScript_OpenSpeedRoomDoors + call_if_defeated TRAINER_MARY, PetalburgCity_Gym_EventScript_OpenAccuracyRoomDoors + call_if_defeated TRAINER_PARKER, PetalburgCity_Gym_EventScript_OpenConfusionRoomDoors + call_if_defeated TRAINER_ALEXIA, PetalburgCity_Gym_EventScript_OpenDefenseRoomDoors + call_if_defeated TRAINER_GEORGE, PetalburgCity_Gym_EventScript_OpenRecoveryRoomDoors + call_if_defeated TRAINER_JODY, PetalburgCity_Gym_EventScript_OpenStrengthRoomDoors + call_if_defeated TRAINER_BERKE, PetalburgCity_Gym_EventScript_OpenOHKORoomDoors end PetalburgCity_Gym_EventScript_UnlockAllDoors:: @ 82048FF @@ -403,7 +396,7 @@ PetalburgCity_Gym_EventScript_DontGiveEnigmaBerry:: @ 8204E17 return PetalburgCity_Gym_EventScript_GiveEnigmaBerry:: @ 8204E1D - giveitem_std ITEM_ENIGMA_BERRY + giveitem ITEM_ENIGMA_BERRY compare VAR_RESULT, 0 goto_if_eq Common_EventScript_ShowBagIsFull setvar VAR_ENIGMA_BERRY_AVAILABLE, 0 @@ -444,7 +437,7 @@ PetalburgCity_Gym_EventScript_NormanBattle:: @ 8204E3B end PetalburgCity_Gym_EventScript_GiveFacade:: @ 8204ED2 - giveitem_std ITEM_TM42 + giveitem ITEM_TM42 compare VAR_RESULT, 0 goto_if_eq Common_EventScript_BagIsFull setflag FLAG_RECEIVED_TM42 @@ -830,8 +823,7 @@ PetalburgCity_Gym_EventScript_AccuracyRoomDoor:: @ 8205187 PetalburgCity_Gym_EventScript_ConfusionRoomDoor:: @ 82051BC lockall - checktrainerflag TRAINER_RANDALL - goto_if_lt PetalburgCity_Gym_EventScript_DoorLocked + goto_if_undefeated TRAINER_RANDALL, PetalburgCity_Gym_EventScript_DoorLocked setvar VAR_0x8008, 7 setvar VAR_0x8009, 46 msgbox PetalburgCity_Gym_Text_EnterConfusionRoom, MSGBOX_YESNO @@ -843,8 +835,7 @@ PetalburgCity_Gym_EventScript_ConfusionRoomDoor:: @ 82051BC PetalburgCity_Gym_EventScript_LeftDefenseRoomDoor:: @ 82051EF lockall - checktrainerflag TRAINER_RANDALL - goto_if_lt PetalburgCity_Gym_EventScript_DoorLocked + goto_if_undefeated TRAINER_RANDALL, PetalburgCity_Gym_EventScript_DoorLocked setvar VAR_0x8008, 1 setvar VAR_0x8009, 59 msgbox PetalburgCity_Gym_Text_EnterDefenseRoom, MSGBOX_YESNO @@ -856,8 +847,7 @@ PetalburgCity_Gym_EventScript_LeftDefenseRoomDoor:: @ 82051EF PetalburgCity_Gym_EventScript_RightDefenseRoomDoor:: @ 8205222 lockall - checktrainerflag TRAINER_MARY - goto_if_lt PetalburgCity_Gym_EventScript_DoorLocked + goto_if_undefeated TRAINER_MARY, PetalburgCity_Gym_EventScript_DoorLocked setvar VAR_0x8008, 7 setvar VAR_0x8009, 59 msgbox PetalburgCity_Gym_Text_EnterDefenseRoom, MSGBOX_YESNO @@ -869,8 +859,7 @@ PetalburgCity_Gym_EventScript_RightDefenseRoomDoor:: @ 8205222 PetalburgCity_Gym_EventScript_RecoveryRoomDoor:: @ 8205255 lockall - checktrainerflag TRAINER_MARY - goto_if_lt PetalburgCity_Gym_EventScript_DoorLocked + goto_if_undefeated TRAINER_MARY, PetalburgCity_Gym_EventScript_DoorLocked setvar VAR_0x8008, 1 setvar VAR_0x8009, 72 msgbox PetalburgCity_Gym_Text_EnterRecoveryRoom, MSGBOX_YESNO @@ -882,8 +871,7 @@ PetalburgCity_Gym_EventScript_RecoveryRoomDoor:: @ 8205255 PetalburgCity_Gym_EventScript_LeftStrengthRoomDoor:: @ 8205288 lockall - checktrainerflag TRAINER_PARKER - goto_if_lt PetalburgCity_Gym_EventScript_DoorLocked + goto_if_undefeated TRAINER_PARKER, PetalburgCity_Gym_EventScript_DoorLocked setvar VAR_0x8008, 1 setvar VAR_0x8009, 20 msgbox PetalburgCity_Gym_Text_EnterStrengthRoom, MSGBOX_YESNO @@ -895,8 +883,7 @@ PetalburgCity_Gym_EventScript_LeftStrengthRoomDoor:: @ 8205288 PetalburgCity_Gym_EventScript_RightStrengthRoomDoor:: @ 82052BB lockall - checktrainerflag TRAINER_ALEXIA - goto_if_lt PetalburgCity_Gym_EventScript_DoorLocked + goto_if_undefeated TRAINER_ALEXIA, PetalburgCity_Gym_EventScript_DoorLocked setvar VAR_0x8008, 7 setvar VAR_0x8009, 20 msgbox PetalburgCity_Gym_Text_EnterStrengthRoom, MSGBOX_YESNO @@ -908,8 +895,7 @@ PetalburgCity_Gym_EventScript_RightStrengthRoomDoor:: @ 82052BB PetalburgCity_Gym_EventScript_LeftOHKORoomDoor:: @ 82052EE lockall - checktrainerflag TRAINER_ALEXIA - goto_if_lt PetalburgCity_Gym_EventScript_DoorLocked + goto_if_undefeated TRAINER_ALEXIA, PetalburgCity_Gym_EventScript_DoorLocked setvar VAR_0x8008, 1 setvar VAR_0x8009, 33 msgbox PetalburgCity_Gym_Text_EnterOHKORoom, MSGBOX_YESNO @@ -921,8 +907,7 @@ PetalburgCity_Gym_EventScript_LeftOHKORoomDoor:: @ 82052EE PetalburgCity_Gym_EventScript_RightOHKORoomDoor:: @ 8205321 lockall - checktrainerflag TRAINER_GEORGE - goto_if_lt PetalburgCity_Gym_EventScript_DoorLocked + goto_if_undefeated TRAINER_GEORGE, PetalburgCity_Gym_EventScript_DoorLocked setvar VAR_0x8008, 7 setvar VAR_0x8009, 33 msgbox PetalburgCity_Gym_Text_EnterOHKORoom, MSGBOX_YESNO @@ -934,8 +919,7 @@ PetalburgCity_Gym_EventScript_RightOHKORoomDoor:: @ 8205321 PetalburgCity_Gym_EventScript_LeftGymLeadersRoomDoor:: @ 8205354 lockall - checktrainerflag TRAINER_JODY - goto_if_lt PetalburgCity_Gym_EventScript_DoorLocked + goto_if_undefeated TRAINER_JODY, PetalburgCity_Gym_EventScript_DoorLocked setvar VAR_0x8008, 1 setvar VAR_0x8009, 7 msgbox PetalburgCity_Gym_Text_EnterGymLeadersRoom, MSGBOX_YESNO @@ -947,8 +931,7 @@ PetalburgCity_Gym_EventScript_LeftGymLeadersRoomDoor:: @ 8205354 PetalburgCity_Gym_EventScript_RightGymLeadersRoomDoor:: @ 8205387 lockall - checktrainerflag TRAINER_BERKE - goto_if_lt PetalburgCity_Gym_EventScript_DoorLocked + goto_if_undefeated TRAINER_BERKE, PetalburgCity_Gym_EventScript_DoorLocked setvar VAR_0x8008, 7 setvar VAR_0x8009, 7 msgbox PetalburgCity_Gym_Text_EnterGymLeadersRoom, MSGBOX_YESNO diff --git a/data/maps/PetalburgCity_WallysHouse/scripts.inc b/data/maps/PetalburgCity_WallysHouse/scripts.inc index 786fb26e78..2da3bf8704 100644 --- a/data/maps/PetalburgCity_WallysHouse/scripts.inc +++ b/data/maps/PetalburgCity_WallysHouse/scripts.inc @@ -19,7 +19,7 @@ PetalburgCity_WallysHouse_OnFrame: @ 8204247 PetalburgCity_WallysHouse_EventScript_GiveHM03Surf:: @ 8204251 lockall msgbox PetalburgCity_WallysHouse_Text_PleaseExcuseUs, MSGBOX_DEFAULT - giveitem_std ITEM_HM03 + giveitem ITEM_HM03 setflag FLAG_RECEIVED_HM03 msgbox PetalburgCity_WallysHouse_Text_SurfGoAllSortsOfPlaces, MSGBOX_DEFAULT setvar VAR_PETALBURG_CITY_STATE, 5 diff --git a/data/maps/PetalburgWoods/scripts.inc b/data/maps/PetalburgWoods/scripts.inc index 4c53891fd1..9b2d9d5860 100644 --- a/data/maps/PetalburgWoods/scripts.inc +++ b/data/maps/PetalburgWoods/scripts.inc @@ -88,7 +88,7 @@ PetalburgWoods_EventScript_DevonResearcherPostBattle:: @ 822E138 applymovement EVENT_OBJ_ID_PLAYER, Common_Movement_WalkInPlaceFastestDown waitmovement 0 msgbox PetalburgWoods_Text_ThatWasAwfullyClose, MSGBOX_DEFAULT - giveitem_std ITEM_GREAT_BALL + giveitem ITEM_GREAT_BALL compare VAR_RESULT, 0 goto_if_eq PetalburgWoods_EventScript_BagFull goto PetalburgWoods_EventScript_DevonResearcherFinish @@ -251,7 +251,7 @@ PetalburgWoods_EventScript_Girl:: @ 822E222 faceplayer goto_if_set FLAG_RECEIVED_MIRACLE_SEED, PetalburgWoods_EventScript_ExplainMiracleSeed msgbox PetalburgWoods_Text_TryUsingThisItem, MSGBOX_DEFAULT - giveitem_std ITEM_MIRACLE_SEED + giveitem ITEM_MIRACLE_SEED compare VAR_RESULT, 0 goto_if_eq Common_EventScript_ShowBagIsFull setflag FLAG_RECEIVED_MIRACLE_SEED diff --git a/data/maps/Route104/scripts.inc b/data/maps/Route104/scripts.inc index db8a329d6f..deb31d178e 100644 --- a/data/maps/Route104/scripts.inc +++ b/data/maps/Route104/scripts.inc @@ -269,7 +269,7 @@ Route104_EventScript_ExpertF:: @ 81ECF8C faceplayer goto_if_set FLAG_RECEIVED_CHESTO_BERRY_ROUTE_104, Route104_EventScript_ReceivedBerry msgbox Route104_Text_PlantBerriesInSoilTakeThis, MSGBOX_DEFAULT - giveitem_std ITEM_CHESTO_BERRY + giveitem ITEM_CHESTO_BERRY compare VAR_RESULT, FALSE goto_if_eq Common_EventScript_ShowBagIsFull setflag FLAG_RECEIVED_CHESTO_BERRY_ROUTE_104 @@ -287,7 +287,7 @@ Route104_EventScript_WhiteHerbFlorist:: @ 81ECFCD faceplayer goto_if_set FLAG_RECEIVED_WHITE_HERB, Route104_EventScript_ReceivedWhiteHerb msgbox Route104_Text_DontNeedThisTakeIt, MSGBOX_DEFAULT - giveitem_std ITEM_WHITE_HERB + giveitem ITEM_WHITE_HERB compare VAR_RESULT, FALSE goto_if_eq Common_EventScript_ShowBagIsFull setflag FLAG_RECEIVED_WHITE_HERB @@ -340,7 +340,7 @@ Route104_EventScript_Boy2:: @ 81ED057 faceplayer goto_if_set FLAG_RECEIVED_TM09, Route104_EventScript_ReceivedBulletSeed msgbox Route104_Text_LikeFillingMouthWithSeedsTakeThis, MSGBOX_DEFAULT - giveitem_std ITEM_TM09 + giveitem ITEM_TM09 compare VAR_RESULT, FALSE goto_if_eq Common_EventScript_ShowBagIsFull setflag FLAG_RECEIVED_TM09 diff --git a/data/maps/Route104_PrettyPetalFlowerShop/scripts.inc b/data/maps/Route104_PrettyPetalFlowerShop/scripts.inc index fe0dbf632b..253ae71923 100644 --- a/data/maps/Route104_PrettyPetalFlowerShop/scripts.inc +++ b/data/maps/Route104_PrettyPetalFlowerShop/scripts.inc @@ -75,7 +75,7 @@ Route104_PrettyPetalFlowerShop_EventScript_WailmerPailGirl:: @ 822A40C Route104_PrettyPetalFlowerShop_EventScript_GiveWailmerPail:: @ 822A421 msgbox Route104_PrettyPetalFlowerShop_Text_YouCanHaveThis, MSGBOX_DEFAULT - giveitem_std ITEM_WAILMER_PAIL + giveitem ITEM_WAILMER_PAIL msgbox Route104_PrettyPetalFlowerShop_Text_WailmerPailExplanation, MSGBOX_DEFAULT setflag FLAG_RECEIVED_WAILMER_PAIL release @@ -89,7 +89,7 @@ Route104_PrettyPetalFlowerShop_EventScript_RandomBerryGirl:: @ 822A442 msgbox Route104_PrettyPetalFlowerShop_Text_ImGrowingFlowers, MSGBOX_DEFAULT random 8 addvar VAR_RESULT, FIRST_BERRY_INDEX - giveitem_std VAR_RESULT + giveitem VAR_RESULT compare VAR_RESULT, 0 goto_if_eq Common_EventScript_ShowBagIsFull setflag FLAG_DAILY_FLOWER_SHOP_RECEIVED_BERRY diff --git a/data/maps/Route109/scripts.inc b/data/maps/Route109/scripts.inc index e7080ac503..7ec6701a8a 100644 --- a/data/maps/Route109/scripts.inc +++ b/data/maps/Route109/scripts.inc @@ -330,7 +330,7 @@ Route109_EventScript_SoftSandGirl:: @ 81EE9B5 special GetPlayerBigGuyGirlString goto_if_set FLAG_RECEIVED_SOFT_SAND, Route109_EventScript_AlreadyReceivedSoftSand msgbox Route109_Text_YouCanHaveThis, MSGBOX_DEFAULT - giveitem_std ITEM_SOFT_SAND + giveitem ITEM_SOFT_SAND compare VAR_RESULT, 0 goto_if_eq Common_EventScript_ShowBagIsFull closemessage diff --git a/data/maps/Route109_SeashoreHouse/scripts.inc b/data/maps/Route109_SeashoreHouse/scripts.inc index dc54ab491b..3a2c70c03b 100644 --- a/data/maps/Route109_SeashoreHouse/scripts.inc +++ b/data/maps/Route109_SeashoreHouse/scripts.inc @@ -24,7 +24,7 @@ Route109_SeashoreHouse_EventScript_AlreadyGaveIntroduction:: @ 8269428 Route109_SeashoreHouse_EventScript_DefeatedTrainers:: @ 8269432 msgbox Route109_SeashoreHouse_Text_TakeTheseSodaPopBottles, MSGBOX_DEFAULT - giveitem_std ITEM_SODA_POP, 6 + giveitem ITEM_SODA_POP, 6 compare VAR_RESULT, 0 goto_if_eq Route109_SeashoreHouse_EventScript_BagFull setflag FLAG_RECEIVED_6_SODA_POP @@ -56,7 +56,7 @@ Route109_SeashoreHouse_EventScript_BuySodaPop:: @ 8269484 msgbox Route109_SeashoreHouse_Text_HereYouGo, MSGBOX_DEFAULT takemoney 300, 0 updatemoneybox 0, 0 - giveitem_std ITEM_SODA_POP + giveitem ITEM_SODA_POP hidemoneybox release end @@ -89,12 +89,9 @@ Route109_SeashoreHouse_EventScript_Simon:: @ 8269518 end Route109_SeashoreHouse_EventScript_CheckTrainersCompletion:: @ 8269533 - checktrainerflag TRAINER_DWAYNE - goto_if_lt Route109_SeashoreHouse_EventScript_TrainersNotCompleted - checktrainerflag TRAINER_JOHANNA - goto_if_lt Route109_SeashoreHouse_EventScript_TrainersNotCompleted - checktrainerflag TRAINER_SIMON - goto_if_lt Route109_SeashoreHouse_EventScript_TrainersNotCompleted + goto_if_undefeated TRAINER_DWAYNE, Route109_SeashoreHouse_EventScript_TrainersNotCompleted + goto_if_undefeated TRAINER_JOHANNA, Route109_SeashoreHouse_EventScript_TrainersNotCompleted + goto_if_undefeated TRAINER_SIMON, Route109_SeashoreHouse_EventScript_TrainersNotCompleted setflag FLAG_DEFEATED_SEASHORE_HOUSE release end diff --git a/data/maps/Route110/scripts.inc b/data/maps/Route110/scripts.inc index be1931d193..1cb4f4b889 100644 --- a/data/maps/Route110/scripts.inc +++ b/data/maps/Route110/scripts.inc @@ -473,7 +473,7 @@ Route110_EventScript_BrendanDefeated:: @ 81EF8C4 end Route110_EventScript_GiveItemfinder:: @ 81EF8DF - giveitem_std ITEM_ITEMFINDER + giveitem ITEM_ITEMFINDER return Route110_EventScript_RivalExit:: @ 81EF8EC diff --git a/data/maps/Route110_TrickHouseEnd/scripts.inc b/data/maps/Route110_TrickHouseEnd/scripts.inc index 91d70160f3..218351b4c9 100644 --- a/data/maps/Route110_TrickHouseEnd/scripts.inc +++ b/data/maps/Route110_TrickHouseEnd/scripts.inc @@ -60,7 +60,7 @@ Route110_TrickHouseEnd_EventScript_CompletedPuzzle1:: @ 826AD84 msgbox Route110_TrickHouseEnd_Text_AllNightToPlantTrees, MSGBOX_DEFAULT msgbox Route110_TrickHouseEnd_Text_YouHaveEarnedThisReward, MSGBOX_DEFAULT setvar VAR_TRICK_HOUSE_PRIZE_PICKUP, 0 - giveitem_std ITEM_RARE_CANDY + giveitem ITEM_RARE_CANDY compare VAR_RESULT, FALSE call_if_eq Route110_TrickHouseEnd_EventScript_BagFull msgbox Route110_TrickHouseEnd_Text_MakeNewTricksToStumpYou, MSGBOX_DEFAULT @@ -73,7 +73,7 @@ Route110_TrickHouseEnd_EventScript_CompletedPuzzle2:: @ 826ADC0 msgbox Route110_TrickHouseEnd_Text_AllNightToMakeMaze, MSGBOX_DEFAULT msgbox Route110_TrickHouseEnd_Text_YouHaveEarnedThisReward, MSGBOX_DEFAULT setvar VAR_TRICK_HOUSE_PRIZE_PICKUP, 0 - giveitem_std ITEM_TIMER_BALL + giveitem ITEM_TIMER_BALL compare VAR_RESULT, FALSE call_if_eq Route110_TrickHouseEnd_EventScript_BagFull msgbox Route110_TrickHouseEnd_Text_MakeNewTricksToStumpYou, MSGBOX_DEFAULT @@ -86,7 +86,7 @@ Route110_TrickHouseEnd_EventScript_CompletedPuzzle3:: @ 826ADFC msgbox Route110_TrickHouseEnd_Text_AllNightToPreparePanels, MSGBOX_DEFAULT msgbox Route110_TrickHouseEnd_Text_YouHaveEarnedThisReward, MSGBOX_DEFAULT setvar VAR_TRICK_HOUSE_PRIZE_PICKUP, 0 - giveitem_std ITEM_HARD_STONE + giveitem ITEM_HARD_STONE compare VAR_RESULT, FALSE call_if_eq Route110_TrickHouseEnd_EventScript_BagFull msgbox Route110_TrickHouseEnd_Text_MakeNewTricksToStumpYou, MSGBOX_DEFAULT @@ -99,7 +99,7 @@ Route110_TrickHouseEnd_EventScript_CompletedPuzzle4:: @ 826AE38 msgbox Route110_TrickHouseEnd_Text_AllNightToShoveBoulders, MSGBOX_DEFAULT msgbox Route110_TrickHouseEnd_Text_YouHaveEarnedThisReward, MSGBOX_DEFAULT setvar VAR_TRICK_HOUSE_PRIZE_PICKUP, 0 - giveitem_std ITEM_SMOKE_BALL + giveitem ITEM_SMOKE_BALL compare VAR_RESULT, FALSE call_if_eq Route110_TrickHouseEnd_EventScript_BagFull msgbox Route110_TrickHouseEnd_Text_MakeNewTricksToStumpYou, MSGBOX_DEFAULT @@ -112,7 +112,7 @@ Route110_TrickHouseEnd_EventScript_CompletedPuzzle5:: @ 826AE74 msgbox Route110_TrickHouseEnd_Text_AllNightToMakeMechadolls, MSGBOX_DEFAULT msgbox Route110_TrickHouseEnd_Text_YouHaveEarnedThisReward, MSGBOX_DEFAULT setvar VAR_TRICK_HOUSE_PRIZE_PICKUP, 0 - giveitem_std ITEM_TM12 + giveitem ITEM_TM12 compare VAR_RESULT, FALSE call_if_eq Route110_TrickHouseEnd_EventScript_BagFull msgbox Route110_TrickHouseEnd_Text_MakeNewTricksToStumpYou, MSGBOX_DEFAULT @@ -125,7 +125,7 @@ Route110_TrickHouseEnd_EventScript_CompletedPuzzle6:: @ 826AEB0 msgbox Route110_TrickHouseEnd_Text_AllNightToInstallDoors, MSGBOX_DEFAULT msgbox Route110_TrickHouseEnd_Text_YouHaveEarnedThisReward, MSGBOX_DEFAULT setvar VAR_TRICK_HOUSE_PRIZE_PICKUP, 0 - giveitem_std ITEM_MAGNET + giveitem ITEM_MAGNET compare VAR_RESULT, FALSE call_if_eq Route110_TrickHouseEnd_EventScript_BagFull msgbox Route110_TrickHouseEnd_Text_MakeNewTricksToStumpYou, MSGBOX_DEFAULT @@ -138,7 +138,7 @@ Route110_TrickHouseEnd_EventScript_CompletedPuzzle7:: @ 826AEEC msgbox Route110_TrickHouseEnd_Text_AllNightSettingUpArrows, MSGBOX_DEFAULT msgbox Route110_TrickHouseEnd_Text_YouHaveEarnedThisReward, MSGBOX_DEFAULT setvar VAR_TRICK_HOUSE_PRIZE_PICKUP, 0 - giveitem_std ITEM_PP_MAX + giveitem ITEM_PP_MAX compare VAR_RESULT, FALSE call_if_eq Route110_TrickHouseEnd_EventScript_BagFull msgbox Route110_TrickHouseEnd_Text_MakeNewTricksToStumpYou, MSGBOX_DEFAULT @@ -182,11 +182,11 @@ Route110_TrickHouseEnd_EventScript_ChooseTent:: @ 826AFA5 goto Route110_TrickHouseEnd_EventScript_GiveBlueTent Route110_TrickHouseEnd_EventScript_GiveRedTent:: @ 826AFBF - givedecoration_std DECOR_RED_TENT + givedecoration DECOR_RED_TENT return Route110_TrickHouseEnd_EventScript_GiveBlueTent:: @ 826AFC7 - givedecoration_std DECOR_BLUE_TENT + givedecoration DECOR_BLUE_TENT return Route110_TrickHouseEnd_EventScript_TrickMasterExit:: @ 826AFCF diff --git a/data/maps/Route110_TrickHouseEntrance/scripts.inc b/data/maps/Route110_TrickHouseEntrance/scripts.inc index 0de4153cca..06cd236519 100644 --- a/data/maps/Route110_TrickHouseEntrance/scripts.inc +++ b/data/maps/Route110_TrickHouseEntrance/scripts.inc @@ -367,7 +367,7 @@ Route110_TrickHouseEntrance_EventScript_GiveReward:: @ 8269E8F end Route110_TrickHouseEntrance_EventScript_GivePuzzle1Reward:: @ 8269EEF - giveitem_std ITEM_RARE_CANDY + giveitem ITEM_RARE_CANDY compare VAR_RESULT, TRUE goto_if_eq Route110_TrickHouseEntrance_EventScript_GotReward compare VAR_RESULT, FALSE @@ -377,7 +377,7 @@ Route110_TrickHouseEntrance_EventScript_GivePuzzle1Reward:: @ 8269EEF end Route110_TrickHouseEntrance_EventScript_GivePuzzle2Reward:: @ 8269F1B - giveitem_std ITEM_TIMER_BALL + giveitem ITEM_TIMER_BALL compare VAR_RESULT, TRUE goto_if_eq Route110_TrickHouseEntrance_EventScript_GotReward compare VAR_RESULT, FALSE @@ -387,7 +387,7 @@ Route110_TrickHouseEntrance_EventScript_GivePuzzle2Reward:: @ 8269F1B end Route110_TrickHouseEntrance_EventScript_GivePuzzle3Reward:: @ 8269F47 - giveitem_std ITEM_HARD_STONE + giveitem ITEM_HARD_STONE compare VAR_RESULT, TRUE goto_if_eq Route110_TrickHouseEntrance_EventScript_GotReward compare VAR_RESULT, FALSE @@ -397,7 +397,7 @@ Route110_TrickHouseEntrance_EventScript_GivePuzzle3Reward:: @ 8269F47 end Route110_TrickHouseEntrance_EventScript_GivePuzzle4Reward:: @ 8269F73 - giveitem_std ITEM_SMOKE_BALL + giveitem ITEM_SMOKE_BALL compare VAR_RESULT, TRUE goto_if_eq Route110_TrickHouseEntrance_EventScript_GotReward compare VAR_RESULT, FALSE @@ -407,7 +407,7 @@ Route110_TrickHouseEntrance_EventScript_GivePuzzle4Reward:: @ 8269F73 end Route110_TrickHouseEntrance_EventScript_GivePuzzle5Reward:: @ 8269F9F - giveitem_std ITEM_TM12 + giveitem ITEM_TM12 compare VAR_RESULT, TRUE goto_if_eq Route110_TrickHouseEntrance_EventScript_GotReward compare VAR_RESULT, FALSE @@ -417,7 +417,7 @@ Route110_TrickHouseEntrance_EventScript_GivePuzzle5Reward:: @ 8269F9F end Route110_TrickHouseEntrance_EventScript_GivePuzzle6Reward:: @ 8269FCB - giveitem_std ITEM_MAGNET + giveitem ITEM_MAGNET compare VAR_RESULT, TRUE goto_if_eq Route110_TrickHouseEntrance_EventScript_GotReward compare VAR_RESULT, FALSE @@ -427,7 +427,7 @@ Route110_TrickHouseEntrance_EventScript_GivePuzzle6Reward:: @ 8269FCB end Route110_TrickHouseEntrance_EventScript_GivePuzzle7Reward:: @ 8269FF7 - giveitem_std ITEM_PP_MAX + giveitem ITEM_PP_MAX compare VAR_RESULT, TRUE goto_if_eq Route110_TrickHouseEntrance_EventScript_GotReward compare VAR_RESULT, FALSE @@ -464,11 +464,11 @@ Route110_TrickHouseEntrance_EventScript_ChooseTent:: @ 826A070 goto Route110_TrickHouseEntrance_EventScript_GiveBlueTent Route110_TrickHouseEntrance_EventScript_GiveRedTent:: @ 826A08A - givedecoration_std DECOR_RED_TENT + givedecoration DECOR_RED_TENT return Route110_TrickHouseEntrance_EventScript_GiveBlueTent:: @ 826A092 - givedecoration_std DECOR_BLUE_TENT + givedecoration DECOR_BLUE_TENT return Route110_TrickHouseEntrance_EventScript_ReceivedTent:: @ 826A09A diff --git a/data/maps/Route111/scripts.inc b/data/maps/Route111/scripts.inc index b80ef6b842..e905508de7 100644 --- a/data/maps/Route111/scripts.inc +++ b/data/maps/Route111/scripts.inc @@ -48,8 +48,7 @@ Route111_OnTransition: @ 81F0D87 call_if_eq Route111_EventScript_SetMirageTowerGone call Route111_EventScript_CheckSetSandstorm call GabbyAndTy_EventScript_UpdateLocation - checktrainerflag TRAINER_VICKY - goto_if_lt Route111_EventScript_SetWinstratesNotDefeated + goto_if_undefeated TRAINER_VICKY, Route111_EventScript_SetWinstratesNotDefeated end Route111_EventScript_SetFallingPlayerGfx:: @ 81F0DC2 @@ -162,7 +161,7 @@ Route111_EventScript_Girl:: @ 81F0EB9 dotimebasedevents goto_if_set FLAG_DAILY_ROUTE_111_RECEIVED_BERRY, Route111_EventScript_ReceivedBerry msgbox Route111_Text_WateredPlantsEveryDayTakeBerry, MSGBOX_DEFAULT - giveitem_std ITEM_RAZZ_BERRY + giveitem ITEM_RAZZ_BERRY compare VAR_RESULT, FALSE goto_if_eq Common_EventScript_ShowBagIsFull setflag FLAG_DAILY_ROUTE_111_RECEIVED_BERRY diff --git a/data/maps/Route111_WinstrateFamilysHouse/scripts.inc b/data/maps/Route111_WinstrateFamilysHouse/scripts.inc index 387b8f6302..499459c240 100644 --- a/data/maps/Route111_WinstrateFamilysHouse/scripts.inc +++ b/data/maps/Route111_WinstrateFamilysHouse/scripts.inc @@ -15,7 +15,7 @@ Route111_WinstrateFamilysHouse_EventScript_Victoria:: @ 822A4A2 setvar VAR_0x8008, 3 goto_if_set FLAG_RECEIVED_MACHO_BRACE, Route111_WinstrateFamilysHouse_EventScript_ReceivedMachoBrace msgbox Route111_WinstrateFamilysHouse_Text_LikeYouToHaveMachoBrace, MSGBOX_DEFAULT - giveitem_std ITEM_MACHO_BRACE + giveitem ITEM_MACHO_BRACE compare VAR_RESULT, FALSE goto_if_eq Common_EventScript_ShowBagIsFull setflag FLAG_RECEIVED_MACHO_BRACE diff --git a/data/maps/Route113_GlassWorkshop/scripts.inc b/data/maps/Route113_GlassWorkshop/scripts.inc index 57c5f9f572..eed6d8eaba 100644 --- a/data/maps/Route113_GlassWorkshop/scripts.inc +++ b/data/maps/Route113_GlassWorkshop/scripts.inc @@ -31,7 +31,7 @@ Route113_GlassWorkshop_EventScript_GlassWorker:: @ 826ED1E compare VAR_GLASS_WORKSHOP_STATE, 1 goto_if_eq Route113_GlassWorkshop_EventScript_ExplainSootSack msgbox Route113_GlassWorkshop_Text_GoCollectAshWithThis, MSGBOX_DEFAULT - giveitem_std ITEM_SOOT_SACK + giveitem ITEM_SOOT_SACK setvar VAR_GLASS_WORKSHOP_STATE, 1 msgbox Route113_GlassWorkshop_Text_ExplainSootSack, MSGBOX_DEFAULT release @@ -220,13 +220,13 @@ Route113_GlassWorkshop_EventScript_MakeGlassItem:: @ 826F00F end Route113_GlassWorkshop_EventScript_GiveGlassFlute:: @ 826F047 - giveitem_std VAR_0x8008 + giveitem VAR_0x8008 compare VAR_RESULT, FALSE goto_if_eq Route113_GlassWorkshop_EventScript_NoRoomForFlute return Route113_GlassWorkshop_EventScript_GiveGlassDecor:: @ 826F05F - givedecoration_std VAR_0x8008 + givedecoration VAR_0x8008 compare VAR_RESULT, FALSE goto_if_eq Route113_GlassWorkshop_EventScript_NoRoomForDecor return diff --git a/data/maps/Route114/scripts.inc b/data/maps/Route114/scripts.inc index 5e0e564b17..dda7f270d1 100644 --- a/data/maps/Route114/scripts.inc +++ b/data/maps/Route114/scripts.inc @@ -33,7 +33,7 @@ Route114_EventScript_Man:: @ 81F2582 random NUM_ROUTE_114_MAN_BERRIES addvar VAR_RESULT, NUM_ROUTE_114_MAN_BERRIES_SKIPPED addvar VAR_RESULT, FIRST_BERRY_INDEX - giveitem_std VAR_RESULT + giveitem VAR_RESULT compare VAR_RESULT, FALSE goto_if_eq Common_EventScript_ShowBagIsFull setflag FLAG_DAILY_ROUTE_114_RECEIVED_BERRY @@ -51,7 +51,7 @@ Route114_EventScript_RoarGentleman:: @ 81F25D1 faceplayer goto_if_set FLAG_RECEIVED_TM05, Route114_EventScript_ReceivedRoar msgbox Route114_Text_AllMyMonDoesIsRoarTakeThis, MSGBOX_DEFAULT - giveitem_std ITEM_TM05 + giveitem ITEM_TM05 compare VAR_RESULT, FALSE goto_if_eq Common_EventScript_ShowBagIsFull setflag FLAG_RECEIVED_TM05 diff --git a/data/maps/Route114_FossilManiacsHouse/scripts.inc b/data/maps/Route114_FossilManiacsHouse/scripts.inc index 5313f8705a..8db686d10b 100644 --- a/data/maps/Route114_FossilManiacsHouse/scripts.inc +++ b/data/maps/Route114_FossilManiacsHouse/scripts.inc @@ -11,7 +11,7 @@ Route114_FossilManiacsHouse_EventScript_FossilManiacsBrother:: @ 822AD3A faceplayer goto_if_set FLAG_RECEIVED_TM28, Route114_FossilManiacsHouse_EventScript_ReceivedDig msgbox Route114_FossilManiacsHouse_Text_HaveThisToDigLikeMyBrother, MSGBOX_DEFAULT - giveitem_std ITEM_TM28 + giveitem ITEM_TM28 compare VAR_RESULT, FALSE goto_if_eq Common_EventScript_ShowBagIsFull setflag FLAG_RECEIVED_TM28 diff --git a/data/maps/Route114_LanettesHouse/scripts.inc b/data/maps/Route114_LanettesHouse/scripts.inc index b772228e40..cd2f808fca 100644 --- a/data/maps/Route114_LanettesHouse/scripts.inc +++ b/data/maps/Route114_LanettesHouse/scripts.inc @@ -12,7 +12,7 @@ Route114_LanettesHouse_EventScript_Lanette:: @ 822B2D2 goto_if_set FLAG_RECEIVED_DOLL_LANETTE, Route114_LanettesHouse_EventScript_OfferAdvice setflag FLAG_SYS_PC_LANETTE msgbox Route114_LanettesHouse_Text_EverythingClutteredKeepThis, MSGBOX_DEFAULT - givedecoration_std DECOR_LOTAD_DOLL + givedecoration DECOR_LOTAD_DOLL compare VAR_RESULT, FALSE goto_if_eq Common_EventScript_ShowNoRoomForDecor setflag FLAG_RECEIVED_DOLL_LANETTE diff --git a/data/maps/Route116/scripts.inc b/data/maps/Route116/scripts.inc index 8dbdeb69de..eee823975d 100644 --- a/data/maps/Route116/scripts.inc +++ b/data/maps/Route116/scripts.inc @@ -58,7 +58,7 @@ Route116_EventScript_DevonEmployee:: @ 81F2CA2 Route116_EventScript_GiveRepeatBall:: @ 81F2CBB setflag FLAG_MET_DEVON_EMPLOYEE - giveitem_std ITEM_REPEAT_BALL + giveitem ITEM_REPEAT_BALL compare VAR_RESULT, FALSE goto_if_eq Route116_EventScript_NoRoomForRepeatBall msgbox Route116_Text_NewBallAvailableAtMart, MSGBOX_DEFAULT diff --git a/data/maps/Route118/scripts.inc b/data/maps/Route118/scripts.inc index cccbe00851..af77193bad 100644 --- a/data/maps/Route118/scripts.inc +++ b/data/maps/Route118/scripts.inc @@ -38,7 +38,7 @@ Route118_EventScript_GoodRodFisherman:: @ 81F3E14 Route118_EventScript_ReceiveGoodRod:: @ 81F3E3E msgbox Route118_Text_IdenticalMindsTakeThis, MSGBOX_DEFAULT - giveitem_std ITEM_GOOD_ROD + giveitem ITEM_GOOD_ROD setflag FLAG_RECEIVED_GOOD_ROD msgbox Route118_Text_TryYourLuckFishing, MSGBOX_DEFAULT release diff --git a/data/maps/Route119/scripts.inc b/data/maps/Route119/scripts.inc index 8377b62ad4..ee07cc5cdc 100644 --- a/data/maps/Route119/scripts.inc +++ b/data/maps/Route119/scripts.inc @@ -138,7 +138,7 @@ Route119_EventScript_DefeatedBrendan:: @ 81F45E4 end Route119_EventScript_GiveFlyHM:: @ 81F45FF - giveitem_std ITEM_HM02 + giveitem ITEM_HM02 setflag FLAG_RECEIVED_HM02 return diff --git a/data/maps/Route120/scripts.inc b/data/maps/Route120/scripts.inc index 6018e2d95d..2c97da9e11 100644 --- a/data/maps/Route120/scripts.inc +++ b/data/maps/Route120/scripts.inc @@ -145,7 +145,7 @@ Route120_EventScript_GiveIapapaBerry:: @ 81F55F6 end Route120_EventScript_GiveBerry:: @ 81F5601 - giveitem_std VAR_0x8004 + giveitem VAR_0x8004 compare VAR_RESULT, 0 goto_if_eq Common_EventScript_ShowBagIsFull setflag FLAG_DAILY_ROUTE_120_RECEIVED_BERRY @@ -237,7 +237,7 @@ Route120_EventScript_StevenGiveDeconScope:: @ 81F572C applymovement EVENT_OBJ_ID_PLAYER, Common_Movement_WalkInPlaceFastestUp waitmovement 0 msgbox Route120_Text_StevenGiveDevonScope, MSGBOX_DEFAULT - giveitem_std ITEM_DEVON_SCOPE + giveitem ITEM_DEVON_SCOPE setflag FLAG_RECEIVED_DEVON_SCOPE msgbox Route120_Text_StevenGoodbye, MSGBOX_DEFAULT closemessage diff --git a/data/maps/Route123/scripts.inc b/data/maps/Route123/scripts.inc index b74b168652..0c57d209cb 100644 --- a/data/maps/Route123/scripts.inc +++ b/data/maps/Route123/scripts.inc @@ -15,7 +15,7 @@ Route123_EventScript_GigaDrainGirl:: @ 81F6151 compare VAR_RESULT, FALSE goto_if_eq Route123_EventScript_NoGrassMons msgbox Route123_Text_YouLikeGrassMonsTooHaveThis, MSGBOX_DEFAULT - giveitem_std ITEM_TM19 + giveitem ITEM_TM19 compare VAR_RESULT, FALSE goto_if_eq Common_EventScript_ShowBagIsFull setflag FLAG_RECEIVED_TM19 diff --git a/data/maps/Route123_BerryMastersHouse/scripts.inc b/data/maps/Route123_BerryMastersHouse/scripts.inc index 9e63dc6083..8b2cc59191 100644 --- a/data/maps/Route123_BerryMastersHouse/scripts.inc +++ b/data/maps/Route123_BerryMastersHouse/scripts.inc @@ -15,7 +15,7 @@ Route123_BerryMastersHouse_EventScript_BerryMaster:: @ 826F845 random NUM_BERRY_MASTER_BERRIES addvar VAR_RESULT, NUM_BERRY_MASTER_BERRIES_SKIPPED addvar VAR_RESULT, FIRST_BERRY_INDEX - giveitem_std VAR_RESULT + giveitem VAR_RESULT compare VAR_RESULT, FALSE goto_if_eq Common_EventScript_ShowBagIsFull setflag FLAG_DAILY_BERRY_MASTER_RECEIVED_BERRY @@ -23,7 +23,7 @@ Route123_BerryMastersHouse_EventScript_BerryMaster:: @ 826F845 random NUM_BERRY_MASTER_BERRIES addvar VAR_RESULT, NUM_BERRY_MASTER_BERRIES_SKIPPED addvar VAR_RESULT, FIRST_BERRY_INDEX - giveitem_std VAR_RESULT + giveitem VAR_RESULT compare VAR_RESULT, FALSE goto_if_eq Common_EventScript_ShowBagIsFull msgbox Route123_BerryMastersHouse_Text_VisitPrettyPetalFlowerShop, MSGBOX_DEFAULT @@ -76,7 +76,7 @@ Route123_BerryMastersHouse_EventScript_GiveNormalBerry:: @ 826F94C msgbox Route123_BerryMastersHouse_Text_GoodSayingTakeThis, MSGBOX_DEFAULT random NUM_BERRY_MASTER_WIFE_BERRIES addvar VAR_RESULT, FIRST_BERRY_INDEX - giveitem_std VAR_RESULT + giveitem VAR_RESULT compare VAR_RESULT, FALSE goto_if_eq Common_EventScript_ShowBagIsFull goto Route123_BerryMastersHouse_EventScript_GaveBerry @@ -86,7 +86,7 @@ Route123_BerryMastersHouse_EventScript_GiveNormalBerry:: @ 826F94C Route123_BerryMastersHouse_EventScript_GiveSpelonBerry:: @ 826F97A goto_if_set FLAG_RECEIVED_SPELON_BERRY, Route123_BerryMastersHouse_EventScript_GiveNormalBerry msgbox Route123_BerryMastersHouse_Text_InspirationalTakeThis, MSGBOX_DEFAULT - giveitem_std ITEM_SPELON_BERRY + giveitem ITEM_SPELON_BERRY compare VAR_RESULT, FALSE goto_if_eq Common_EventScript_ShowBagIsFull setflag FLAG_RECEIVED_SPELON_BERRY @@ -96,7 +96,7 @@ Route123_BerryMastersHouse_EventScript_GiveSpelonBerry:: @ 826F97A Route123_BerryMastersHouse_EventScript_GivePamtreBerry:: @ 826F9AB goto_if_set FLAG_RECEIVED_PAMTRE_BERRY, Route123_BerryMastersHouse_EventScript_GiveNormalBerry msgbox Route123_BerryMastersHouse_Text_InspirationalTakeThis, MSGBOX_DEFAULT - giveitem_std ITEM_PAMTRE_BERRY + giveitem ITEM_PAMTRE_BERRY compare VAR_RESULT, FALSE goto_if_eq Common_EventScript_ShowBagIsFull setflag FLAG_RECEIVED_PAMTRE_BERRY @@ -106,7 +106,7 @@ Route123_BerryMastersHouse_EventScript_GivePamtreBerry:: @ 826F9AB Route123_BerryMastersHouse_EventScript_GiveWatmelBerry:: @ 826F9DC goto_if_set FLAG_RECEIVED_WATMEL_BERRY, Route123_BerryMastersHouse_EventScript_GiveNormalBerry msgbox Route123_BerryMastersHouse_Text_InspirationalTakeThis, MSGBOX_DEFAULT - giveitem_std ITEM_WATMEL_BERRY + giveitem ITEM_WATMEL_BERRY compare VAR_RESULT, FALSE goto_if_eq Common_EventScript_ShowBagIsFull setflag FLAG_RECEIVED_WATMEL_BERRY @@ -116,7 +116,7 @@ Route123_BerryMastersHouse_EventScript_GiveWatmelBerry:: @ 826F9DC Route123_BerryMastersHouse_EventScript_GiveDurinBerry:: @ 826FA0D goto_if_set FLAG_RECEIVED_DURIN_BERRY, Route123_BerryMastersHouse_EventScript_GiveNormalBerry msgbox Route123_BerryMastersHouse_Text_InspirationalTakeThis, MSGBOX_DEFAULT - giveitem_std ITEM_DURIN_BERRY + giveitem ITEM_DURIN_BERRY compare VAR_RESULT, FALSE goto_if_eq Common_EventScript_ShowBagIsFull setflag FLAG_RECEIVED_DURIN_BERRY @@ -126,7 +126,7 @@ Route123_BerryMastersHouse_EventScript_GiveDurinBerry:: @ 826FA0D Route123_BerryMastersHouse_EventScript_GiveBelueBerry:: @ 826FA3E goto_if_set FLAG_RECEIVED_BELUE_BERRY, Route123_BerryMastersHouse_EventScript_GiveNormalBerry msgbox Route123_BerryMastersHouse_Text_InspirationalTakeThis, MSGBOX_DEFAULT - giveitem_std ITEM_BELUE_BERRY + giveitem ITEM_BELUE_BERRY compare VAR_RESULT, FALSE goto_if_eq Common_EventScript_ShowBagIsFull setflag FLAG_RECEIVED_BELUE_BERRY diff --git a/data/maps/Route124_DivingTreasureHuntersHouse/scripts.inc b/data/maps/Route124_DivingTreasureHuntersHouse/scripts.inc index b2c00c1cc5..dfc705bfa4 100644 --- a/data/maps/Route124_DivingTreasureHuntersHouse/scripts.inc +++ b/data/maps/Route124_DivingTreasureHuntersHouse/scripts.inc @@ -259,7 +259,7 @@ Route124_DivingTreasureHuntersHouse_EventScript_TryTradeShard:: @ 8270EC0 Route124_DivingTreasureHuntersHouse_EventScript_TradeShard:: @ 8270F01 takeitem VAR_0x8008, 1 - giveitem_std VAR_0x8009 + giveitem VAR_0x8009 msgbox Route124_DivingTreasureHuntersHouse_Text_ItsADeal, MSGBOX_DEFAULT call Route124_DivingTreasureHuntersHouse_EventScript_GetPlayersShards compare VAR_TEMP_1, 0 diff --git a/data/maps/RustboroCity/scripts.inc b/data/maps/RustboroCity/scripts.inc index dbe5dfd41b..2c710a075f 100644 --- a/data/maps/RustboroCity/scripts.inc +++ b/data/maps/RustboroCity/scripts.inc @@ -605,7 +605,7 @@ RustboroCity_EventScript_ReturnGoods:: @ 81E0C5B compare VAR_TEMP_1, 4 call_if_eq RustboroCity_EventScript_EmployeeFacePlayerRight msgbox RustboroCity_Text_YouGotItThankYou, MSGBOX_DEFAULT - giveitem_std ITEM_GREAT_BALL + giveitem ITEM_GREAT_BALL compare VAR_RESULT, FALSE call_if_eq RustboroCity_EventScript_BagFull msgbox RustboroCity_Text_PleaseComeWithMe, MSGBOX_DEFAULT diff --git a/data/maps/RustboroCity_CuttersHouse/scripts.inc b/data/maps/RustboroCity_CuttersHouse/scripts.inc index f19d56a2dc..9ee4fc5756 100644 --- a/data/maps/RustboroCity_CuttersHouse/scripts.inc +++ b/data/maps/RustboroCity_CuttersHouse/scripts.inc @@ -6,7 +6,7 @@ RustboroCity_CuttersHouse_EventScript_Cutter:: @ 8215BD4 faceplayer goto_if_set FLAG_RECEIVED_HM01, RustboroCity_CuttersHouse_EventScript_ExplainCut msgbox RustboroCity_CuttersHouse_Text_YouCanPutThisHMToGoodUse, MSGBOX_DEFAULT - giveitem_std ITEM_HM01 + giveitem ITEM_HM01 setflag FLAG_RECEIVED_HM01 msgbox RustboroCity_CuttersHouse_Text_ExplainCut, MSGBOX_DEFAULT release diff --git a/data/maps/RustboroCity_DevonCorp_3F/scripts.inc b/data/maps/RustboroCity_DevonCorp_3F/scripts.inc index 143ff45430..caf93545b1 100644 --- a/data/maps/RustboroCity_DevonCorp_3F/scripts.inc +++ b/data/maps/RustboroCity_DevonCorp_3F/scripts.inc @@ -48,7 +48,7 @@ RustboroCity_DevonCorp_3F_EventScript_MeetPresident:: @ 821246E applymovement EVENT_OBJ_ID_PLAYER, RustboroCity_DevonCorp_3F_Movement_PlayerApproachDesk waitmovement 0 msgbox RustboroCity_DevonCorp_3F_Text_MrStoneIHaveFavor, MSGBOX_DEFAULT - giveitem_std ITEM_LETTER + giveitem ITEM_LETTER msgbox RustboroCity_DevonCorp_3F_Text_MrStoneWantYouToHaveThis, MSGBOX_DEFAULT playfanfare MUS_FANFA4 message RustboroCity_DevonCorp_3F_Text_ReceivedPokenav @@ -162,7 +162,7 @@ RustboroCity_DevonCorp_3F_EventScript_MrStone:: @ 821256C RustboroCity_DevonCorp_3F_EventScript_GiveExpShare:: @ 8212595 msgbox RustboroCity_DevonCorp_3F_Text_ThankYouForDeliveringLetter, MSGBOX_DEFAULT - giveitem_std ITEM_EXP_SHARE + giveitem ITEM_EXP_SHARE compare VAR_RESULT, 0 goto_if_eq Common_EventScript_ShowBagIsFull setflag FLAG_RECEIVED_EXP_SHARE diff --git a/data/maps/RustboroCity_Flat2_2F/scripts.inc b/data/maps/RustboroCity_Flat2_2F/scripts.inc index f328b71c15..1caeda683a 100644 --- a/data/maps/RustboroCity_Flat2_2F/scripts.inc +++ b/data/maps/RustboroCity_Flat2_2F/scripts.inc @@ -10,7 +10,7 @@ RustboroCity_Flat2_2F_EventScript_NinjaBoy:: @ 8215FE1 faceplayer goto_if_set FLAG_RECEIVED_PREMIER_BALL_RUSTBORO, RustboroCity_Flat2_2F_EventScript_GavePremierBall msgbox RustboroCity_Flat2_2F_Text_MyDaddyMadeThisYouCanHaveIt, MSGBOX_DEFAULT - giveitem_std ITEM_PREMIER_BALL + giveitem ITEM_PREMIER_BALL compare VAR_RESULT, 0 goto_if_eq Common_EventScript_ShowBagIsFull setflag FLAG_RECEIVED_PREMIER_BALL_RUSTBORO diff --git a/data/maps/RustboroCity_Gym/scripts.inc b/data/maps/RustboroCity_Gym/scripts.inc index 0a95a86e51..70178e1cce 100644 --- a/data/maps/RustboroCity_Gym/scripts.inc +++ b/data/maps/RustboroCity_Gym/scripts.inc @@ -28,7 +28,7 @@ RustboroCity_Gym_EventScript_RoxanneDefeated:: @ 8212F66 end RustboroCity_Gym_EventScript_GiveRockTomb:: @ 8212FA4 - giveitem_std ITEM_TM39 + giveitem ITEM_TM39 compare VAR_RESULT, 0 goto_if_eq Common_EventScript_ShowBagIsFull setflag FLAG_RECEIVED_TM39 diff --git a/data/maps/RustboroCity_PokemonSchool/scripts.inc b/data/maps/RustboroCity_PokemonSchool/scripts.inc index 9fb4146da1..6e5bf0fced 100644 --- a/data/maps/RustboroCity_PokemonSchool/scripts.inc +++ b/data/maps/RustboroCity_PokemonSchool/scripts.inc @@ -83,7 +83,7 @@ RustboroCity_PokemonSchool_EventScript_Teacher:: @ 8213F95 compare VAR_FACING, DIR_WEST call_if_eq RustboroCity_PokemonSchool_EventScript_TeacherCheckOnStudentsWest msgbox RustboroCity_PokemonSchool_Text_StudentsWhoDontStudyGetQuickClaw, MSGBOX_DEFAULT - giveitem_std ITEM_QUICK_CLAW + giveitem ITEM_QUICK_CLAW compare VAR_RESULT, 0 goto_if_eq Common_EventScript_ShowBagIsFull closemessage diff --git a/data/maps/RusturfTunnel/scripts.inc b/data/maps/RusturfTunnel/scripts.inc index 9219ba3e4d..0ccabbe5d4 100644 --- a/data/maps/RusturfTunnel/scripts.inc +++ b/data/maps/RusturfTunnel/scripts.inc @@ -62,7 +62,7 @@ RusturfTunnel_EventScript_ClearTunnelScene:: @ 822CEAE call_if_eq RusturfTunnel_EventScript_WandasBoyfriendApproachPlayer compare VAR_TEMP_1, 3 call_if_eq RusturfTunnel_EventScript_WandasBoyfriendApproachPlayer - giveitem_std ITEM_HM04 + giveitem ITEM_HM04 setflag FLAG_RECEIVED_HM04 msgbox RusturfTunnel_Text_ExplainStrength, MSGBOX_DEFAULT closemessage @@ -317,7 +317,7 @@ RusturfTunnel_EventScript_Grunt:: @ 822D0C2 msgbox RusturfTunnel_Text_GruntIntro, MSGBOX_DEFAULT trainerbattle_no_intro TRAINER_GRUNT_RUSTURF_TUNNEL, RusturfTunnel_Text_GruntDefeat msgbox RusturfTunnel_Text_GruntTakePackage, MSGBOX_DEFAULT - giveitem_std ITEM_DEVON_GOODS + giveitem ITEM_DEVON_GOODS closemessage applymovement EVENT_OBJ_ID_PLAYER, RusturfTunnel_Movement_PushPlayerAsideForGrunt applymovement 6, RusturfTunnel_Movement_GruntEscape diff --git a/data/maps/SSTidalCorridor/scripts.inc b/data/maps/SSTidalCorridor/scripts.inc index 6b88b7ae19..6673287255 100644 --- a/data/maps/SSTidalCorridor/scripts.inc +++ b/data/maps/SSTidalCorridor/scripts.inc @@ -174,22 +174,14 @@ SSTidalCorridor_EventScript_EnjoyYourCruise:: @ 823C1BD end SSTidalCorridor_EventScript_CheckIfTrainersDefeated:: @ 823C1C7 - checktrainerflag TRAINER_PHILLIP - goto_if_lt SSTidalCorridor_EventScript_TrainerNotDefeated - checktrainerflag TRAINER_LEONARD - goto_if_lt SSTidalCorridor_EventScript_TrainerNotDefeated - checktrainerflag TRAINER_COLTON - goto_if_lt SSTidalCorridor_EventScript_TrainerNotDefeated - checktrainerflag TRAINER_MICAH - goto_if_lt SSTidalCorridor_EventScript_TrainerNotDefeated - checktrainerflag TRAINER_THOMAS - goto_if_lt SSTidalCorridor_EventScript_TrainerNotDefeated - checktrainerflag TRAINER_LEA_AND_JED - goto_if_lt SSTidalCorridor_EventScript_TrainerNotDefeated - checktrainerflag TRAINER_GARRET - goto_if_lt SSTidalCorridor_EventScript_TrainerNotDefeated - checktrainerflag TRAINER_NAOMI - goto_if_lt SSTidalCorridor_EventScript_TrainerNotDefeated + goto_if_undefeated TRAINER_PHILLIP, SSTidalCorridor_EventScript_TrainerNotDefeated + goto_if_undefeated TRAINER_LEONARD, SSTidalCorridor_EventScript_TrainerNotDefeated + goto_if_undefeated TRAINER_COLTON, SSTidalCorridor_EventScript_TrainerNotDefeated + goto_if_undefeated TRAINER_MICAH, SSTidalCorridor_EventScript_TrainerNotDefeated + goto_if_undefeated TRAINER_THOMAS, SSTidalCorridor_EventScript_TrainerNotDefeated + goto_if_undefeated TRAINER_LEA_AND_JED, SSTidalCorridor_EventScript_TrainerNotDefeated + goto_if_undefeated TRAINER_GARRET, SSTidalCorridor_EventScript_TrainerNotDefeated + goto_if_undefeated TRAINER_NAOMI, SSTidalCorridor_EventScript_TrainerNotDefeated setflag FLAG_DEFEATED_SS_TIDAL_TRAINERS goto SSTidalCorridor_EventScript_EnjoyYourCruise return diff --git a/data/maps/SSTidalRooms/scripts.inc b/data/maps/SSTidalRooms/scripts.inc index bf2c5e36b2..1cf464d0de 100644 --- a/data/maps/SSTidalRooms/scripts.inc +++ b/data/maps/SSTidalRooms/scripts.inc @@ -6,7 +6,7 @@ SSTidalRooms_EventScript_SnatchGiver:: @ 823C9F2 faceplayer goto_if_set FLAG_RECEIVED_TM49, SSTidalRooms_EventScript_ExplainSnatch msgbox SSTidalRooms_Text_NotSuspiciousTakeThis, MSGBOX_DEFAULT - giveitem_std ITEM_TM49 + giveitem ITEM_TM49 compare VAR_RESULT, FALSE goto_if_eq Common_EventScript_ShowBagIsFull setflag FLAG_RECEIVED_TM49 diff --git a/data/maps/ShoalCave_LowTideEntranceRoom/scripts.inc b/data/maps/ShoalCave_LowTideEntranceRoom/scripts.inc index 8713578cff..c8d6f2612e 100644 --- a/data/maps/ShoalCave_LowTideEntranceRoom/scripts.inc +++ b/data/maps/ShoalCave_LowTideEntranceRoom/scripts.inc @@ -37,7 +37,7 @@ ShoalCave_LowTideEntranceRoom_EventScript_ShellBellExpert:: @ 8236DD9 msgbox ShoalCave_LowTideEntranceRoom_Text_MakeShellBellRightAway, MSGBOX_DEFAULT takeitem ITEM_SHOAL_SALT, 4 takeitem ITEM_SHOAL_SHELL, 4 - giveitem_std ITEM_SHELL_BELL + giveitem ITEM_SHELL_BELL compare VAR_RESULT, FALSE goto_if_eq Common_EventScript_ShowBagIsFull msgbox ShoalCave_LowTideEntranceRoom_Text_ExplainShellBell, MSGBOX_DEFAULT diff --git a/data/maps/ShoalCave_LowTideInnerRoom/scripts.inc b/data/maps/ShoalCave_LowTideInnerRoom/scripts.inc index 089d38458a..69ef1e75f7 100644 --- a/data/maps/ShoalCave_LowTideInnerRoom/scripts.inc +++ b/data/maps/ShoalCave_LowTideInnerRoom/scripts.inc @@ -62,7 +62,7 @@ ShoalCave_LowTideInnerRoom_EventScript_SetShoalItemMetatilesEnd:: @ 8236FB9 ShoalCave_LowTideInnerRoom_EventScript_ShoalShell1:: @ 8236FBA lockall goto_if_set FLAG_RECEIVED_SHOAL_SHELL_1, ShoalCave_LowTideInnerRoom_EventScript_ReceivedShoalShell - giveitem_std ITEM_SHOAL_SHELL + giveitem ITEM_SHOAL_SHELL compare VAR_RESULT, FALSE goto_if_eq Common_EventScript_ShowBagIsFull setmetatile 41, 20, METATILE_Cave_ShoalCave_BlueStone_Small, 0 @@ -79,7 +79,7 @@ ShoalCave_LowTideInnerRoom_EventScript_ReceivedShoalShell:: @ 8236FEC ShoalCave_LowTideInnerRoom_EventScript_ShoalShell2:: @ 8236FF6 lockall goto_if_set FLAG_RECEIVED_SHOAL_SHELL_2, ShoalCave_LowTideInnerRoom_EventScript_ReceivedShoalShell - giveitem_std ITEM_SHOAL_SHELL + giveitem ITEM_SHOAL_SHELL compare VAR_RESULT, FALSE goto_if_eq Common_EventScript_ShowBagIsFull setmetatile 41, 10, METATILE_Cave_ShoalCave_BlueStone_Small, 0 @@ -91,7 +91,7 @@ ShoalCave_LowTideInnerRoom_EventScript_ShoalShell2:: @ 8236FF6 ShoalCave_LowTideInnerRoom_EventScript_ShoalShell3:: @ 8237028 lockall goto_if_set FLAG_RECEIVED_SHOAL_SHELL_3, ShoalCave_LowTideInnerRoom_EventScript_ReceivedShoalShell - giveitem_std ITEM_SHOAL_SHELL + giveitem ITEM_SHOAL_SHELL compare VAR_RESULT, FALSE goto_if_eq Common_EventScript_ShowBagIsFull setmetatile 6, 9, METATILE_Cave_ShoalCave_BlueStone_Small, 0 @@ -103,7 +103,7 @@ ShoalCave_LowTideInnerRoom_EventScript_ShoalShell3:: @ 8237028 ShoalCave_LowTideInnerRoom_EventScript_ShoalShell4:: @ 823705A lockall goto_if_set FLAG_RECEIVED_SHOAL_SHELL_4, ShoalCave_LowTideInnerRoom_EventScript_ReceivedShoalShell - giveitem_std ITEM_SHOAL_SHELL + giveitem ITEM_SHOAL_SHELL compare VAR_RESULT, FALSE goto_if_eq Common_EventScript_ShowBagIsFull setmetatile 16, 13, METATILE_Cave_ShoalCave_BlueStone_Small, 0 @@ -115,7 +115,7 @@ ShoalCave_LowTideInnerRoom_EventScript_ShoalShell4:: @ 823705A ShoalCave_LowTideInnerRoom_EventScript_ShoalSalt1:: @ 823708C lockall goto_if_set FLAG_RECEIVED_SHOAL_SALT_1, ShoalCave_LowTideInnerRoom_EventScript_ReceivedShoalSalt - giveitem_std ITEM_SHOAL_SALT + giveitem ITEM_SHOAL_SALT compare VAR_RESULT, FALSE goto_if_eq Common_EventScript_ShowBagIsFull setmetatile 31, 8, METATILE_Cave_ShoalCave_DirtPile_Small, 0 @@ -132,7 +132,7 @@ ShoalCave_LowTideInnerRoom_EventScript_ReceivedShoalSalt:: @ 82370BE ShoalCave_LowTideInnerRoom_EventScript_ShoalSalt2:: @ 82370C8 lockall goto_if_set FLAG_RECEIVED_SHOAL_SALT_2, ShoalCave_LowTideInnerRoom_EventScript_ReceivedShoalSalt - giveitem_std ITEM_SHOAL_SALT + giveitem ITEM_SHOAL_SALT compare VAR_RESULT, FALSE goto_if_eq Common_EventScript_ShowBagIsFull setmetatile 14, 26, METATILE_Cave_ShoalCave_DirtPile_Small, 0 diff --git a/data/maps/ShoalCave_LowTideLowerRoom/scripts.inc b/data/maps/ShoalCave_LowTideLowerRoom/scripts.inc index 2cbf8138d1..0c259ff235 100644 --- a/data/maps/ShoalCave_LowTideLowerRoom/scripts.inc +++ b/data/maps/ShoalCave_LowTideLowerRoom/scripts.inc @@ -17,7 +17,7 @@ ShoalCave_LowTideLowerRoom_EventScript_SetShoalItemMetatilesEnd:: @ 8237175 ShoalCave_LowTideLowerRoom_EventScript_ShoalSalt4:: @ 8237176 lockall goto_if_set FLAG_RECEIVED_SHOAL_SALT_4, ShoalCave_LowTideLowerRoom_EventScript_ReceivedShoalSalt - giveitem_std ITEM_SHOAL_SALT + giveitem ITEM_SHOAL_SALT compare VAR_RESULT, FALSE goto_if_eq Common_EventScript_ShowBagIsFull setmetatile 18, 2, METATILE_Cave_ShoalCave_DirtPile_Small, 0 @@ -36,7 +36,7 @@ ShoalCave_LowTideLowerRoom_EventScript_BlackBelt:: @ 82371B2 faceplayer goto_if_set FLAG_RECEIVED_FOCUS_BAND, ShoalCave_LowTideLowerRoom_EventScript_ReceivedFocusBand msgbox ShoalCave_LowTideLowerRoom_Text_CanOvercomeColdWithFocus, MSGBOX_DEFAULT - giveitem_std ITEM_FOCUS_BAND + giveitem ITEM_FOCUS_BAND compare VAR_RESULT, FALSE goto_if_eq Common_EventScript_ShowBagIsFull setflag FLAG_RECEIVED_FOCUS_BAND diff --git a/data/maps/ShoalCave_LowTideStairsRoom/scripts.inc b/data/maps/ShoalCave_LowTideStairsRoom/scripts.inc index 32ec5b2987..6bbdf03457 100644 --- a/data/maps/ShoalCave_LowTideStairsRoom/scripts.inc +++ b/data/maps/ShoalCave_LowTideStairsRoom/scripts.inc @@ -17,7 +17,7 @@ ShoalCave_LowTideStairsRoom_EventScript_SetShoalItemMetatilesEnd:: @ 8237119 ShoalCave_LowTideStairsRoom_EventScript_ShoalSalt3:: @ 823711A lockall goto_if_set FLAG_RECEIVED_SHOAL_SALT_3, ShoalCave_LowTideStairsRoom_EventScript_ReceivedShoalSalt - giveitem_std ITEM_SHOAL_SALT + giveitem ITEM_SHOAL_SALT compare VAR_RESULT, FALSE goto_if_eq Common_EventScript_ShowBagIsFull setmetatile 11, 11, METATILE_Cave_ShoalCave_DirtPile_Small, 0 diff --git a/data/maps/SlateportCity/scripts.inc b/data/maps/SlateportCity/scripts.inc index 9f951e83d3..0e4157ba11 100644 --- a/data/maps/SlateportCity/scripts.inc +++ b/data/maps/SlateportCity/scripts.inc @@ -727,7 +727,7 @@ SlateportCity_EventScript_BerryPowderClerk:: @ 81DD36E faceplayer goto_if_set FLAG_RECEIVED_POWDER_JAR, SlateportCity_EventScript_ReceivedPowderJar msgbox SlateportCity_Text_ExplainBerries, MSGBOX_DEFAULT - giveitem_std ITEM_POWDER_JAR + giveitem ITEM_POWDER_JAR setflag FLAG_RECEIVED_POWDER_JAR msgbox SlateportCity_Text_ExplainBerryPowder, MSGBOX_DEFAULT release @@ -861,7 +861,7 @@ SlateportCity_EventScript_TryBuyBerryPowderItem:: @ 81DD557 specialvar VAR_RESULT, HasEnoughBerryPowder compare VAR_RESULT, FALSE goto_if_eq SlateportCity_EventScript_NotEnoughBerryPowder - giveitem_std VAR_0x8008 + giveitem VAR_0x8008 compare VAR_RESULT, FALSE goto_if_eq SlateportCity_EventScript_NoRoomForBerryPowderItem copyvar VAR_0x8004, VAR_0x8009 diff --git a/data/maps/SlateportCity_BattleTentLobby/scripts.inc b/data/maps/SlateportCity_BattleTentLobby/scripts.inc index 6a74d6a6f3..e0969a5910 100644 --- a/data/maps/SlateportCity_BattleTentLobby/scripts.inc +++ b/data/maps/SlateportCity_BattleTentLobby/scripts.inc @@ -201,7 +201,7 @@ SlateportCity_BattleTentLobby_EventScript_TormentGiver:: @ 8208A3D faceplayer goto_if_set FLAG_RECEIVED_TM41, SlateportCity_BattleTentLobby_EventScript_ReceivedTorment msgbox SlateportCity_BattleTentLobby_Text_CouldntFindMonForMe, MSGBOX_DEFAULT - giveitem_std ITEM_TM41 + giveitem ITEM_TM41 compare VAR_RESULT, FALSE goto_if_eq Common_EventScript_ShowBagIsFull setflag FLAG_RECEIVED_TM41 diff --git a/data/maps/SlateportCity_Harbor/scripts.inc b/data/maps/SlateportCity_Harbor/scripts.inc index 1abb66b579..8324c6ea09 100644 --- a/data/maps/SlateportCity_Harbor/scripts.inc +++ b/data/maps/SlateportCity_Harbor/scripts.inc @@ -237,7 +237,7 @@ SlateportCity_Harbor_EventScript_BoardFerry:: @ 820CBE9 compare VAR_FACING, DIR_EAST call_if_eq SlateportCity_Harbor_EventScript_BoardFerryEast delay 30 - hideobjectat EVENT_OBJ_ID_PLAYER, MAP_PETALBURG_CITY + hideobjectat EVENT_OBJ_ID_PLAYER, 0 setvar VAR_0x8004, 5 call Common_EventScript_FerryDepart return @@ -358,7 +358,7 @@ SlateportCity_Harbor_EventScript_DeepSeaTooth:: @ 820CD7B msgbox SlateportCity_Harbor_Text_TradeForDeepSeaTooth, MSGBOX_YESNO compare VAR_RESULT, NO goto_if_eq SlateportCity_Harbor_EventScript_ChooseDifferentTrade - giveitem_std ITEM_DEEP_SEA_TOOTH + giveitem ITEM_DEEP_SEA_TOOTH compare VAR_RESULT, FALSE goto_if_eq Common_EventScript_ShowBagIsFull takeitem ITEM_SCANNER, 1 @@ -371,7 +371,7 @@ SlateportCity_Harbor_EventScript_DeepSeaScale:: @ 820CDBB msgbox SlateportCity_Harbor_Text_TradeForDeepSeaScale, MSGBOX_YESNO compare VAR_RESULT, NO goto_if_eq SlateportCity_Harbor_EventScript_ChooseDifferentTrade - giveitem_std ITEM_DEEP_SEA_SCALE + giveitem ITEM_DEEP_SEA_SCALE compare VAR_RESULT, FALSE goto_if_eq Common_EventScript_ShowBagIsFull takeitem ITEM_SCANNER, 1 diff --git a/data/maps/SlateportCity_OceanicMuseum_1F/scripts.inc b/data/maps/SlateportCity_OceanicMuseum_1F/scripts.inc index a6e6541da7..e9dec5c348 100644 --- a/data/maps/SlateportCity_OceanicMuseum_1F/scripts.inc +++ b/data/maps/SlateportCity_OceanicMuseum_1F/scripts.inc @@ -151,7 +151,7 @@ SlateportCity_OceanicMuseum_1F_EventScript_FamiliarGrunt:: @ 820AEF8 applymovement 13, Common_Movement_Delay48 waitmovement 0 msgbox SlateportCity_OceanicMuseum_1F_Text_RememberMeTakeThis, MSGBOX_DEFAULT - giveitem_std ITEM_TM46 + giveitem ITEM_TM46 compare VAR_RESULT, 0 goto_if_eq SlateportCity_OceanicMuseum_1F_EventScript_NoRoomForThief setflag FLAG_RECEIVED_TM46 diff --git a/data/maps/SlateportCity_PokemonFanClub/scripts.inc b/data/maps/SlateportCity_PokemonFanClub/scripts.inc index 25de15889c..e4086fa195 100644 --- a/data/maps/SlateportCity_PokemonFanClub/scripts.inc +++ b/data/maps/SlateportCity_PokemonFanClub/scripts.inc @@ -77,7 +77,7 @@ SlateportCity_PokemonFanClub_EventScript_GiveRedScarf:: @ 8209FE0 goto_if_eq SlateportCity_PokemonFanClub_EventScript_NoRoomForScarf msgbox SlateportCity_PokemonFanClub_Text_MonMostImpressiveGiveItThis, MSGBOX_DEFAULT setflag FLAG_RECEIVED_RED_SCARF - giveitem_std ITEM_RED_SCARF + giveitem ITEM_RED_SCARF msgbox SlateportCity_PokemonFanClub_Text_ExplainRedScarf, MSGBOX_DEFAULT release end @@ -88,7 +88,7 @@ SlateportCity_PokemonFanClub_EventScript_GiveBlueScarf:: @ 820A011 goto_if_eq SlateportCity_PokemonFanClub_EventScript_NoRoomForScarf msgbox SlateportCity_PokemonFanClub_Text_MonMostImpressiveGiveItThis, MSGBOX_DEFAULT setflag FLAG_RECEIVED_BLUE_SCARF - giveitem_std ITEM_BLUE_SCARF + giveitem ITEM_BLUE_SCARF msgbox SlateportCity_PokemonFanClub_Text_ExplainBlueScarf, MSGBOX_DEFAULT release end @@ -99,7 +99,7 @@ SlateportCity_PokemonFanClub_EventScript_GivePinkScarf:: @ 820A042 goto_if_eq SlateportCity_PokemonFanClub_EventScript_NoRoomForScarf msgbox SlateportCity_PokemonFanClub_Text_MonMostImpressiveGiveItThis, MSGBOX_DEFAULT setflag FLAG_RECEIVED_PINK_SCARF - giveitem_std ITEM_PINK_SCARF + giveitem ITEM_PINK_SCARF msgbox SlateportCity_PokemonFanClub_Text_ExplainPinkScarf, MSGBOX_DEFAULT release end @@ -110,7 +110,7 @@ SlateportCity_PokemonFanClub_EventScript_GiveGreenScarf:: @ 820A073 goto_if_eq SlateportCity_PokemonFanClub_EventScript_NoRoomForScarf msgbox SlateportCity_PokemonFanClub_Text_MonMostImpressiveGiveItThis, MSGBOX_DEFAULT setflag FLAG_RECEIVED_GREEN_SCARF - giveitem_std ITEM_GREEN_SCARF + giveitem ITEM_GREEN_SCARF msgbox SlateportCity_PokemonFanClub_Text_ExplainGreenScarf, MSGBOX_DEFAULT release end @@ -121,7 +121,7 @@ SlateportCity_PokemonFanClub_EventScript_GiveYellowScarf:: @ 820A0A4 goto_if_eq SlateportCity_PokemonFanClub_EventScript_NoRoomForScarf msgbox SlateportCity_PokemonFanClub_Text_MonMostImpressiveGiveItThis, MSGBOX_DEFAULT setflag FLAG_RECEIVED_YELLOW_SCARF - giveitem_std ITEM_YELLOW_SCARF + giveitem ITEM_YELLOW_SCARF msgbox SlateportCity_PokemonFanClub_Text_ExplainYellowScarf, MSGBOX_DEFAULT release end @@ -216,7 +216,7 @@ SlateportCity_PokemonFanClub_EventScript_GiveSootheBell:: @ 820A1A3 applymovement VAR_LAST_TALKED, Common_Movement_Delay48 waitmovement 0 msgbox SlateportCity_PokemonFanClub_Text_PokemonAdoresYou, MSGBOX_DEFAULT - giveitem_std ITEM_SOOTHE_BELL + giveitem ITEM_SOOTHE_BELL compare VAR_RESULT, FALSE goto_if_eq Common_EventScript_ShowBagIsFull setflag FLAG_RECEIVED_SOOTHE_BELL diff --git a/data/maps/SootopolisCity/scripts.inc b/data/maps/SootopolisCity/scripts.inc index 8a4c6ea4e1..35cbcc4250 100644 --- a/data/maps/SootopolisCity/scripts.inc +++ b/data/maps/SootopolisCity/scripts.inc @@ -755,7 +755,7 @@ SootopolisCity_EventScript_KiriGiveBerry:: @ 81E5F1B random NUM_KIRI_BERRIES addvar VAR_RESULT, NUM_KIRI_BERRIES_SKIPPED addvar VAR_RESULT, FIRST_BERRY_INDEX - giveitem_std VAR_RESULT + giveitem VAR_RESULT compare VAR_RESULT, FALSE goto_if_eq Common_EventScript_ShowBagIsFull setflag FLAG_DAILY_SOOTOPOLIS_RECEIVED_BERRY @@ -768,7 +768,7 @@ SootopolisCity_EventScript_KiriGiveBerry:: @ 81E5F1B end SootopolisCity_EventScript_GiveFigyBerry:: @ 81E5F79 - giveitem_std ITEM_FIGY_BERRY + giveitem ITEM_FIGY_BERRY compare VAR_RESULT, FALSE goto_if_eq Common_EventScript_ShowBagIsFull msgbox SootopolisCity_Text_WhatKindOfWishInYourName, MSGBOX_DEFAULT @@ -776,7 +776,7 @@ SootopolisCity_EventScript_GiveFigyBerry:: @ 81E5F79 end SootopolisCity_EventScript_GiveIapapaBerry:: @ 81E5F9A - giveitem_std ITEM_IAPAPA_BERRY + giveitem ITEM_IAPAPA_BERRY compare VAR_RESULT, FALSE goto_if_eq Common_EventScript_ShowBagIsFull msgbox SootopolisCity_Text_WhatKindOfWishInYourName, MSGBOX_DEFAULT @@ -1356,7 +1356,7 @@ SootopolisCity_EventScript_Wallace:: @ 81E6446 SootopolisCity_EventScript_GiveWaterfall:: @ 81E646F msgbox SootopolisCity_Text_ThankYouForHelpAcceptThis, MSGBOX_DEFAULT - giveitem_std ITEM_HM07 + giveitem ITEM_HM07 setflag FLAG_RECEIVED_HM07 msgbox SootopolisCity_Text_ExplainWaterfallGoToGym, MSGBOX_DEFAULT closemessage diff --git a/data/maps/SootopolisCity_Gym_1F/scripts.inc b/data/maps/SootopolisCity_Gym_1F/scripts.inc index c455092255..45e5207258 100644 --- a/data/maps/SootopolisCity_Gym_1F/scripts.inc +++ b/data/maps/SootopolisCity_Gym_1F/scripts.inc @@ -120,7 +120,7 @@ SootopolisCity_Gym_1F_EventScript_JuanDefeated:: @ 8224F82 end SootopolisCity_Gym_1F_EventScript_GiveWaterPulse:: @ 8224FD4 - giveitem_std ITEM_TM03 + giveitem ITEM_TM03 compare VAR_RESULT, 0 goto_if_eq Common_EventScript_BagIsFull msgbox SootopolisCity_Gym_1F_Text_ExplainWaterPulse, MSGBOX_DEFAULT @@ -128,7 +128,7 @@ SootopolisCity_Gym_1F_EventScript_GiveWaterPulse:: @ 8224FD4 return SootopolisCity_Gym_1F_EventScript_GiveWaterPulse2:: @ 8224FF7 - giveitem_std ITEM_TM03 + giveitem ITEM_TM03 compare VAR_RESULT, 0 goto_if_eq Common_EventScript_ShowBagIsFull msgbox SootopolisCity_Gym_1F_Text_ExplainWaterPulse, MSGBOX_DEFAULT diff --git a/data/maps/SootopolisCity_House1/scripts.inc b/data/maps/SootopolisCity_House1/scripts.inc index d38e35494d..90a429c2c1 100644 --- a/data/maps/SootopolisCity_House1/scripts.inc +++ b/data/maps/SootopolisCity_House1/scripts.inc @@ -6,7 +6,7 @@ SootopolisCity_House1_EventScript_BrickBreakBlackBelt:: @ 822694D faceplayer goto_if_set FLAG_RECEIVED_TM31, SootopolisCity_House1_EventScript_ReceivedBrickBreak msgbox SootopolisCity_House1_Text_DevelopedThisTM, MSGBOX_DEFAULT - giveitem_std ITEM_TM31 + giveitem ITEM_TM31 compare VAR_RESULT, FALSE goto_if_eq Common_EventScript_ShowBagIsFull setflag FLAG_RECEIVED_TM31 diff --git a/data/maps/SootopolisCity_House6/scripts.inc b/data/maps/SootopolisCity_House6/scripts.inc index bd3ce0742a..d622738645 100644 --- a/data/maps/SootopolisCity_House6/scripts.inc +++ b/data/maps/SootopolisCity_House6/scripts.inc @@ -9,7 +9,7 @@ SootopolisCity_House6_EventScript_Woman:: @ 8226F5C compare VAR_RESULT, NO call_if_eq SootopolisCity_House6_EventScript_DeclineWailmerDoll msgbox SootopolisCity_House6_Text_TakeGoodCareOfIt, MSGBOX_DEFAULT - givedecoration_std DECOR_WAILMER_DOLL + givedecoration DECOR_WAILMER_DOLL compare VAR_RESULT, FALSE goto_if_eq SootopolisCity_House6_EventScript_NoRoomForWailmerDoll setflag FLAG_RECEIVED_WAILMER_DOLL diff --git a/data/maps/SootopolisCity_LotadAndSeedotHouse/scripts.inc b/data/maps/SootopolisCity_LotadAndSeedotHouse/scripts.inc index a9f3ffdf49..1951a33d55 100644 --- a/data/maps/SootopolisCity_LotadAndSeedotHouse/scripts.inc +++ b/data/maps/SootopolisCity_LotadAndSeedotHouse/scripts.inc @@ -38,7 +38,7 @@ SootopolisCity_LotadAndSeedotHouse_EventScript_SmallSeedot:: @ 8227286 SootopolisCity_LotadAndSeedotHouse_EventScript_BigSeedot:: @ 8227290 msgbox SootopolisCity_LotadAndSeedotHouse_Text_GoshMightBeBiggerThanLotad, MSGBOX_DEFAULT - giveitem_std ITEM_ELIXIR + giveitem ITEM_ELIXIR compare VAR_RESULT, FALSE goto_if_eq SootopolisCity_LotadAndSeedotHouse_EventScript_NoRoomForElixir1 closemessage @@ -87,7 +87,7 @@ SootopolisCity_LotadAndSeedotHouse_EventScript_SmallLotad:: @ 8227317 SootopolisCity_LotadAndSeedotHouse_EventScript_BigLotad:: @ 8227321 msgbox SootopolisCity_LotadAndSeedotHouse_Text_WowMightBeBiggerThanSeedot, MSGBOX_DEFAULT - giveitem_std ITEM_ELIXIR + giveitem ITEM_ELIXIR compare VAR_RESULT, FALSE goto_if_eq SootopolisCity_LotadAndSeedotHouse_EventScript_NoRoomForElixir2 closemessage diff --git a/data/maps/VerdanturfTown_BattleTentLobby/scripts.inc b/data/maps/VerdanturfTown_BattleTentLobby/scripts.inc index 882b0e8874..8a0de33f5c 100644 --- a/data/maps/VerdanturfTown_BattleTentLobby/scripts.inc +++ b/data/maps/VerdanturfTown_BattleTentLobby/scripts.inc @@ -229,7 +229,7 @@ VerdanturfTown_BattleTentLobby_EventScript_AttractGiver:: @ 8201A7B faceplayer goto_if_set FLAG_RECEIVED_TM45, VerdanturfTown_BattleTentLobby_EventScript_ReceivedAttract msgbox VerdanturfTown_BattleTentLobby_Text_AttractionRunsDeep, MSGBOX_DEFAULT - giveitem_std ITEM_TM45 + giveitem ITEM_TM45 compare VAR_RESULT, 0 goto_if_eq Common_EventScript_ShowBagIsFull setflag FLAG_RECEIVED_TM45 diff --git a/data/scripts/berry_blender.inc b/data/scripts/berry_blender.inc index b699c8e043..a3dc2a8e2b 100644 --- a/data/scripts/berry_blender.inc +++ b/data/scripts/berry_blender.inc @@ -263,7 +263,7 @@ BerryBlender_EventScript_Blender1NoSpareBerries: @ 8293C92 BerryBlender_EventScript_Blender1GiveSpareBerry: @ 8293C9C msgbox BerryBlender_Text_CanHaveOneOfMyBerries, MSGBOX_DEFAULT - giveitem_std ITEM_PECHA_BERRY + giveitem ITEM_PECHA_BERRY setflag FLAG_DAILY_CONTEST_LOBBY_RECEIVED_BERRY goto BerryBlender_EventScript_UseBerryBlender1 end @@ -551,7 +551,7 @@ BerryBlender_EventScript_ExpertMNoSpareBerries: @ 8294028 BerryBlender_EventScript_ExpertMGiveBerry: @ 8294032 msgbox BerryBlender_Text_DontHaveAnyBerriesHaveOne, MSGBOX_DEFAULT - giveitem_std ITEM_PECHA_BERRY + giveitem ITEM_PECHA_BERRY setflag FLAG_DAILY_CONTEST_LOBBY_RECEIVED_BERRY msgbox BerryBlender_Text_UseItToMakePokeblocksTogether, MSGBOX_DEFAULT release diff --git a/data/scripts/cable_club.inc b/data/scripts/cable_club.inc index f276924483..ce299b8642 100644 --- a/data/scripts/cable_club.inc +++ b/data/scripts/cable_club.inc @@ -41,7 +41,7 @@ CableClub_EventScript_DistributeEonTicket:: @ 8276B23 goto_if_eq CableClub_EventScript_AlreadyGotEonTicket goto_if_set FLAG_SYS_HAS_EON_TICKET, CableClub_EventScript_AlreadyGotEonTicket msgbox Mevent_Text_TheresATicketForYou, MSGBOX_DEFAULT - giveitem_std ITEM_EON_TICKET + giveitem ITEM_EON_TICKET setflag FLAG_SYS_HAS_EON_TICKET setvar VAR_DISTRIBUTE_EON_TICKET, 0 msgbox Mevent_Text_TryUsingItAtLilycovePort, MSGBOX_DEFAULT @@ -383,7 +383,7 @@ CableClub_EventScript_EnterColosseum:: @ 8276FBD waitdooranim applymovement EVENT_OBJ_ID_PLAYER, Movement_PlayerEnterLinkRoom waitmovement 0 - hideobjectat EVENT_OBJ_ID_PLAYER, MAP_PETALBURG_CITY + hideobjectat EVENT_OBJ_ID_PLAYER, 0 closedoor 9, 1 waitdooranim release @@ -488,7 +488,7 @@ CableClub_EventScript_EnterTradeCenter:: @ 827713A waitdooranim applymovement EVENT_OBJ_ID_PLAYER, Movement_PlayerEnterLinkRoom waitmovement 0 - hideobjectat EVENT_OBJ_ID_PLAYER, MAP_PETALBURG_CITY + hideobjectat EVENT_OBJ_ID_PLAYER, 0 closedoor 9, 1 waitdooranim release @@ -563,7 +563,7 @@ CableClub_EventScript_EnterRecordCorner:: @ 827724C waitdooranim applymovement EVENT_OBJ_ID_PLAYER, Movement_PlayerEnterLinkRoom waitmovement 0 - hideobjectat EVENT_OBJ_ID_PLAYER, MAP_PETALBURG_CITY + hideobjectat EVENT_OBJ_ID_PLAYER, 0 closedoor 9, 1 waitdooranim release @@ -965,7 +965,7 @@ CableClub_EventScript_EnterUnionRoom:: @ 827759F waitdooranim applymovement EVENT_OBJ_ID_PLAYER, Movement_PlayerEnterLinkRoom waitmovement 0 - hideobjectat EVENT_OBJ_ID_PLAYER, MAP_PETALBURG_CITY + hideobjectat EVENT_OBJ_ID_PLAYER, 0 closedoor 5, 1 waitdooranim special Script_ResetUnionRoomTrade @@ -1296,7 +1296,7 @@ CableClub_EventScript_EnterWirelessLinkRoom:: @ 8277B3A waitdooranim applymovement EVENT_OBJ_ID_PLAYER, Movement_PlayerEnterLinkRoom waitmovement 0 - hideobjectat EVENT_OBJ_ID_PLAYER, MAP_PETALBURG_CITY + hideobjectat EVENT_OBJ_ID_PLAYER, 0 closedoor 9, 1 waitdooranim release @@ -1488,7 +1488,7 @@ MossdeepCity_GameCorner_1F_EventScript_EnterMinigameRoom:: @ 8277E0E closemessage applymovement EVENT_OBJ_ID_PLAYER, Movement_PlayerEnterMinigameRoom waitmovement 0 - hideobjectat EVENT_OBJ_ID_PLAYER, MAP_PETALBURG_CITY + hideobjectat EVENT_OBJ_ID_PLAYER, 0 release waitstate end diff --git a/data/scripts/contest_hall.inc b/data/scripts/contest_hall.inc index cabf923b63..9775c40dc5 100644 --- a/data/scripts/contest_hall.inc +++ b/data/scripts/contest_hall.inc @@ -15,7 +15,7 @@ LilycoveCity_ContestLobby_EventScript_ReceptionWelcome:: @ 8279CEA LilycoveCity_ContestLobby_EventScript_GivePokeblockCase:: @ 8279CF3 msgbox LilycoveCity_ContestLobby_Text_ReceptionDontHavePokeblockCase, MSGBOX_DEFAULT - giveitem_std ITEM_POKEBLOCK_CASE + giveitem ITEM_POKEBLOCK_CASE setflag FLAG_RECEIVED_POKEBLOCK_CASE msgbox LilycoveCity_ContestLobby_Text_NowThatWeveClearedThatUp, MSGBOX_DEFAULT return @@ -27,7 +27,7 @@ LilycoveCity_ContestLobby_EventScript_PickUpPrize:: @ 8279D13 end LilycoveCity_ContestLobby_EventScript_GiveLuxuryBallAtCounter:: @ 8279D2C - giveitem_std ITEM_LUXURY_BALL + giveitem ITEM_LUXURY_BALL compare VAR_RESULT, FALSE goto_if_eq LilycoveCity_ContestLobby_EventScript_NoRoomForLuxuryBallAtCounter setvar VAR_CONTEST_PRIZE_PICKUP, 0 @@ -1236,7 +1236,7 @@ ContestHall_EventScript_NoRoomForLuxuryBall:: @ 827ACA8 return ContestHall_EventScript_GiveLuxuryBall:: @ 827ACBD - giveitem_std ITEM_LUXURY_BALL + giveitem ITEM_LUXURY_BALL compare VAR_RESULT, FALSE goto_if_eq ContestHall_EventScript_NoRoomForLuxuryBall lockall diff --git a/data/scripts/item_ball_scripts.inc b/data/scripts/item_ball_scripts.inc index 5e926afc0c..2876e9e8cb 100644 --- a/data/scripts/item_ball_scripts.inc +++ b/data/scripts/item_ball_scripts.inc @@ -1,659 +1,659 @@ Route102_EventScript_ItemPotion:: @ 8290CD8 - finditem_std ITEM_POTION + finditem ITEM_POTION end Route103_EventScript_ItemGuardSpec:: @ 8290CE5 - finditem_std ITEM_GUARD_SPEC + finditem ITEM_GUARD_SPEC end Route103_EventScript_ItemPPUp:: @ 8290CF2 - finditem_std ITEM_PP_UP + finditem ITEM_PP_UP end Route104_EventScript_ItemPPUp:: @ 8290CFF - finditem_std ITEM_PP_UP + finditem ITEM_PP_UP end Route104_EventScript_ItemPokeBall:: @ 8290D0C - finditem_std ITEM_POKE_BALL + finditem ITEM_POKE_BALL end Route104_EventScript_ItemXAccuracy:: @ 8290D19 - finditem_std ITEM_X_ACCURACY + finditem ITEM_X_ACCURACY end Route104_EventScript_ItemPotion:: @ 8290D26 - finditem_std ITEM_POTION + finditem ITEM_POTION end Route105_EventScript_ItemIron:: @ 8290D33 - finditem_std ITEM_IRON + finditem ITEM_IRON end Route106_EventScript_ItemProtein:: @ 8290D40 - finditem_std ITEM_PROTEIN + finditem ITEM_PROTEIN end Route108_EventScript_ItemStarPiece:: @ 8290D4D - finditem_std ITEM_STAR_PIECE + finditem ITEM_STAR_PIECE end Route109_EventScript_ItemPPUp:: @ 8290D5A - finditem_std ITEM_PP_UP + finditem ITEM_PP_UP end Route109_EventScript_ItemPotion:: @ 8290D67 - finditem_std ITEM_POTION + finditem ITEM_POTION end Route110_EventScript_ItemRareCandy:: @ 8290D74 - finditem_std ITEM_RARE_CANDY + finditem ITEM_RARE_CANDY end Route110_EventScript_ItemDireHit:: @ 8290D81 - finditem_std ITEM_DIRE_HIT + finditem ITEM_DIRE_HIT end Route110_EventScript_ItemElixir:: @ 8290D8E - finditem_std ITEM_ELIXIR + finditem ITEM_ELIXIR end Route111_EventScript_ItemTM37:: @ 8290D9B - finditem_std ITEM_TM37 + finditem ITEM_TM37 end Route111_EventScript_ItemStardust:: @ 8290DA8 - finditem_std ITEM_STARDUST + finditem ITEM_STARDUST end Route111_EventScript_ItemHPUp:: @ 8290DB5 - finditem_std ITEM_HP_UP + finditem ITEM_HP_UP end Route111_EventScript_ItemElixir:: @ 8290DC2 - finditem_std ITEM_ELIXIR + finditem ITEM_ELIXIR end Route112_EventScript_ItemNugget:: @ 8290DCF - finditem_std ITEM_NUGGET + finditem ITEM_NUGGET end Route113_EventScript_ItemMaxEther:: @ 8290DDC - finditem_std ITEM_MAX_ETHER + finditem ITEM_MAX_ETHER end Route113_EventScript_ItemSuperRepel:: @ 8290DE9 - finditem_std ITEM_SUPER_REPEL + finditem ITEM_SUPER_REPEL end Route113_EventScript_ItemHyperPotion:: @ 8290DF6 - finditem_std ITEM_HYPER_POTION + finditem ITEM_HYPER_POTION end Route114_EventScript_ItemRareCandy:: @ 8290E03 - finditem_std ITEM_RARE_CANDY + finditem ITEM_RARE_CANDY end Route114_EventScript_ItemProtein:: @ 8290E10 - finditem_std ITEM_PROTEIN + finditem ITEM_PROTEIN end Route114_EventScript_ItemEnergyPowder:: @ 8290E1D - finditem_std ITEM_ENERGY_POWDER + finditem ITEM_ENERGY_POWDER end Route115_EventScript_ItemSuperPotion:: @ 8290E2A - finditem_std ITEM_SUPER_POTION + finditem ITEM_SUPER_POTION end Route115_EventScript_ItemTM01:: @ 8290E37 - finditem_std ITEM_TM01 + finditem ITEM_TM01 end Route115_EventScript_ItemIron:: @ 8290E44 - finditem_std ITEM_IRON + finditem ITEM_IRON end Route115_EventScript_ItemGreatBall:: @ 8290E51 - finditem_std ITEM_GREAT_BALL + finditem ITEM_GREAT_BALL end Route115_EventScript_ItemHealPowder:: @ 8290E5E - finditem_std ITEM_HEAL_POWDER + finditem ITEM_HEAL_POWDER end Route115_EventScript_ItemPPUp:: @ 8290E6B - finditem_std ITEM_PP_UP + finditem ITEM_PP_UP end Route116_EventScript_ItemXSpecial:: @ 8290E78 - finditem_std ITEM_X_SPECIAL + finditem ITEM_X_SPECIAL end Route116_EventScript_ItemEther:: @ 8290E85 - finditem_std ITEM_ETHER + finditem ITEM_ETHER end Route116_EventScript_ItemRepel:: @ 8290E92 - finditem_std ITEM_REPEL + finditem ITEM_REPEL end Route116_EventScript_ItemHPUp:: @ 8290E9F - finditem_std ITEM_HP_UP + finditem ITEM_HP_UP end Route116_EventScript_ItemPotion:: @ 8290EAC - finditem_std ITEM_POTION + finditem ITEM_POTION end Route117_EventScript_ItemGreatBall:: @ 8290EB9 - finditem_std ITEM_GREAT_BALL + finditem ITEM_GREAT_BALL end Route117_EventScript_ItemRevive:: @ 8290EC6 - finditem_std ITEM_REVIVE + finditem ITEM_REVIVE end Route118_EventScript_ItemHyperPotion:: @ 8290ED3 - finditem_std ITEM_HYPER_POTION + finditem ITEM_HYPER_POTION end Route119_EventScript_ItemSuperRepel:: @ 8290EE0 - finditem_std ITEM_SUPER_REPEL + finditem ITEM_SUPER_REPEL end Route119_EventScript_ItemZinc:: @ 8290EED - finditem_std ITEM_ZINC + finditem ITEM_ZINC end Route119_EventScript_ItemElixir:: @ 8290EFA - finditem_std ITEM_ELIXIR + finditem ITEM_ELIXIR end Route119_EventScript_ItemLeafStone:: @ 8290F07 - finditem_std ITEM_LEAF_STONE + finditem ITEM_LEAF_STONE end Route119_EventScript_ItemRareCandy:: @ 8290F14 - finditem_std ITEM_RARE_CANDY + finditem ITEM_RARE_CANDY end Route119_EventScript_ItemHyperPotion:: @ 8290F21 - finditem_std ITEM_HYPER_POTION + finditem ITEM_HYPER_POTION end Route119_EventScript_ItemHyperPotion2:: @ 8290F2E - finditem_std ITEM_HYPER_POTION + finditem ITEM_HYPER_POTION end Route119_EventScript_ItemElixir2:: @ 8290F3B - finditem_std ITEM_ELIXIR + finditem ITEM_ELIXIR end Route120_EventScript_ItemNugget:: @ 8290F48 - finditem_std ITEM_NUGGET + finditem ITEM_NUGGET end Route120_EventScript_ItemFullHeal:: @ 8290F55 - finditem_std ITEM_FULL_HEAL + finditem ITEM_FULL_HEAL end Route120_EventScript_ItemHyperPotion:: @ 8290F62 - finditem_std ITEM_HYPER_POTION + finditem ITEM_HYPER_POTION end Route120_EventScript_ItemNestBall:: @ 8290F6F - finditem_std ITEM_NEST_BALL + finditem ITEM_NEST_BALL end Route120_EventScript_ItemRevive:: @ 8290F7C - finditem_std ITEM_REVIVE + finditem ITEM_REVIVE end Route121_EventScript_ItemCarbos:: @ 8290F89 - finditem_std ITEM_CARBOS + finditem ITEM_CARBOS end Route121_EventScript_ItemRevive:: @ 8290F96 - finditem_std ITEM_REVIVE + finditem ITEM_REVIVE end Route121_EventScript_ItemZinc:: @ 8290FA3 - finditem_std ITEM_ZINC + finditem ITEM_ZINC end Route123_EventScript_ItemCalcium:: @ 8290FB0 - finditem_std ITEM_CALCIUM + finditem ITEM_CALCIUM end Route123_EventScript_ItemUltraBall:: @ 8290FBD - finditem_std ITEM_ULTRA_BALL + finditem ITEM_ULTRA_BALL end Route123_EventScript_ItemElixir:: @ 8290FCA - finditem_std ITEM_ELIXIR + finditem ITEM_ELIXIR end Route123_EventScript_ItemPPUp:: @ 8290FD7 - finditem_std ITEM_PP_UP + finditem ITEM_PP_UP end Route123_EventScript_ItemRevivalHerb:: @ 8290FE4 - finditem_std ITEM_REVIVAL_HERB + finditem ITEM_REVIVAL_HERB end Route124_EventScript_ItemRedShard:: @ 8290FF1 - finditem_std ITEM_RED_SHARD + finditem ITEM_RED_SHARD end Route124_EventScript_ItemBlueShard:: @ 8290FFE - finditem_std ITEM_BLUE_SHARD + finditem ITEM_BLUE_SHARD end Route124_EventScript_ItemYellowShard:: @ 829100B - finditem_std ITEM_YELLOW_SHARD + finditem ITEM_YELLOW_SHARD end Route125_EventScript_ItemBigPearl:: @ 8291018 - finditem_std ITEM_BIG_PEARL + finditem ITEM_BIG_PEARL end Route126_EventScript_ItemGreenShard:: @ 8291025 - finditem_std ITEM_GREEN_SHARD + finditem ITEM_GREEN_SHARD end Route127_EventScript_ItemZinc:: @ 8291032 - finditem_std ITEM_ZINC + finditem ITEM_ZINC end Route127_EventScript_ItemCarbos:: @ 829103F - finditem_std ITEM_CARBOS + finditem ITEM_CARBOS end Route127_EventScript_ItemRareCandy:: @ 829104C - finditem_std ITEM_RARE_CANDY + finditem ITEM_RARE_CANDY end Route132_EventScript_ItemRareCandy:: @ 8291059 - finditem_std ITEM_RARE_CANDY + finditem ITEM_RARE_CANDY end Route132_EventScript_ItemProtein:: @ 8291066 - finditem_std ITEM_PROTEIN + finditem ITEM_PROTEIN end Route133_EventScript_ItemBigPearl:: @ 8291073 - finditem_std ITEM_BIG_PEARL + finditem ITEM_BIG_PEARL end Route133_EventScript_ItemStarPiece:: @ 8291080 - finditem_std ITEM_STAR_PIECE + finditem ITEM_STAR_PIECE end Route133_EventScript_ItemMaxRevive:: @ 829108D - finditem_std ITEM_MAX_REVIVE + finditem ITEM_MAX_REVIVE end Route134_EventScript_ItemCarbos:: @ 829109A - finditem_std ITEM_CARBOS + finditem ITEM_CARBOS end Route134_EventScript_ItemStarPiece:: @ 82910A7 - finditem_std ITEM_STAR_PIECE + finditem ITEM_STAR_PIECE end PetalburgCity_EventScript_ItemMaxRevive:: @ 82910B4 - finditem_std ITEM_MAX_REVIVE + finditem ITEM_MAX_REVIVE end PetalburgCity_EventScript_ItemEther:: @ 82910C1 - finditem_std ITEM_ETHER + finditem ITEM_ETHER end MauvilleCity_EventScript_ItemXSpeed:: @ 82910CE - finditem_std ITEM_X_SPEED + finditem ITEM_X_SPEED end RustboroCity_EventScript_ItemXDefend:: @ 82910DB - finditem_std ITEM_X_DEFEND + finditem ITEM_X_DEFEND end LilycoveCity_EventScript_ItemMaxRepel:: @ 82910E8 - finditem_std ITEM_MAX_REPEL + finditem ITEM_MAX_REPEL end MossdeepCity_EventScript_ItemNetBall:: @ 82910F5 - finditem_std ITEM_NET_BALL + finditem ITEM_NET_BALL end PetalburgWoods_EventScript_ItemXAttack:: @ 8291102 - finditem_std ITEM_X_ATTACK + finditem ITEM_X_ATTACK end PetalburgWoods_EventScript_ItemGreatBall:: @ 829110F - finditem_std ITEM_GREAT_BALL + finditem ITEM_GREAT_BALL end PetalburgWoods_EventScript_ItemEther:: @ 829111C - finditem_std ITEM_ETHER + finditem ITEM_ETHER end PetalburgWoods_EventScript_ItemParalyzeHeal:: @ 8291129 - finditem_std ITEM_PARALYZE_HEAL + finditem ITEM_PARALYZE_HEAL end RusturfTunnel_EventScript_ItemPokeBall:: @ 8291136 - finditem_std ITEM_POKE_BALL + finditem ITEM_POKE_BALL end RusturfTunnel_EventScript_ItemMaxEther:: @ 8291143 - finditem_std ITEM_MAX_ETHER + finditem ITEM_MAX_ETHER end GraniteCave_1F_EventScript_ItemEscapeRope:: @ 8291150 - finditem_std ITEM_ESCAPE_ROPE + finditem ITEM_ESCAPE_ROPE end GraniteCave_B1F_EventScript_ItemPokeBall:: @ 829115D - finditem_std ITEM_POKE_BALL + finditem ITEM_POKE_BALL end GraniteCave_B2F_EventScript_ItemRepel:: @ 829116A - finditem_std ITEM_REPEL + finditem ITEM_REPEL end GraniteCave_B2F_EventScript_ItemRareCandy:: @ 8291177 - finditem_std ITEM_RARE_CANDY + finditem ITEM_RARE_CANDY end JaggedPass_EventScript_ItemBurnHeal:: @ 8291184 - finditem_std ITEM_BURN_HEAL + finditem ITEM_BURN_HEAL end FieryPath_EventScript_ItemFireStone:: @ 8291191 - finditem_std ITEM_FIRE_STONE + finditem ITEM_FIRE_STONE end FieryPath_EventScript_ItemTM06:: @ 829119E - finditem_std ITEM_TM06 + finditem ITEM_TM06 end MeteorFalls_1F_1R_EventScript_ItemTM23:: @ 82911AB - finditem_std ITEM_TM23 + finditem ITEM_TM23 end MeteorFalls_1F_1R_EventScript_ItemFullHeal:: @ 82911B8 - finditem_std ITEM_FULL_HEAL + finditem ITEM_FULL_HEAL end MeteorFalls_1F_1R_EventScript_ItemMoonStone:: @ 82911C5 - finditem_std ITEM_MOON_STONE + finditem ITEM_MOON_STONE end MeteorFalls_1F_1R_EventScript_ItemPPUP:: @ 82911D2 - finditem_std ITEM_PP_UP + finditem ITEM_PP_UP end MeteorFalls_B1F_2R_EventScript_ItemTM02:: @ 82911DF - finditem_std ITEM_TM02 + finditem ITEM_TM02 end NewMauville_Inside_EventScript_ItemUltraRope:: @ 82911EC - finditem_std ITEM_ULTRA_BALL + finditem ITEM_ULTRA_BALL end NewMauville_Inside_EventScript_ItemEscapeRope:: @ 82911F9 - finditem_std ITEM_ESCAPE_ROPE + finditem ITEM_ESCAPE_ROPE end NewMauville_Inside_EventScript_ItemThunderStone:: @ 8291206 - finditem_std ITEM_THUNDER_STONE + finditem ITEM_THUNDER_STONE end NewMauville_Inside_EventScript_ItemFullHeal:: @ 8291213 - finditem_std ITEM_FULL_HEAL + finditem ITEM_FULL_HEAL end NewMauville_Inside_EventScript_ItemParalyzeHeal:: @ 8291220 - finditem_std ITEM_PARALYZE_HEAL + finditem ITEM_PARALYZE_HEAL end AbandonedShip_Rooms_1F_EventScript_ItemHarborMail:: @ 829122D - finditem_std ITEM_HARBOR_MAIL + finditem ITEM_HARBOR_MAIL end AbandonedShip_Rooms_B1F_EventScript_ItemEscapeRope:: @ 829123A - finditem_std ITEM_ESCAPE_ROPE + finditem ITEM_ESCAPE_ROPE end AbandonedShip_Rooms2_B1F_EventScript_ItemDiveBall:: @ 8291247 - finditem_std ITEM_DIVE_BALL + finditem ITEM_DIVE_BALL end AbandonedShip_Room_B1F_EventScript_ItemTM13:: @ 8291254 - finditem_std ITEM_TM13 + finditem ITEM_TM13 end AbandonedShip_Rooms2_1F_EventScript_ItemRevive:: @ 8291261 - finditem_std ITEM_REVIVE + finditem ITEM_REVIVE end AbandonedShip_CaptainsOffice_EventScript_ItemStorageKey:: @ 829126E - finditem_std ITEM_STORAGE_KEY + finditem ITEM_STORAGE_KEY end AbandonedShip_HiddenFloorRooms_EventScript_ItemLuxuryBall:: @ 829127B - finditem_std ITEM_LUXURY_BALL + finditem ITEM_LUXURY_BALL end AbandonedShip_HiddenFloorRooms_EventScript_ItemScanner:: @ 8291288 - finditem_std ITEM_SCANNER + finditem ITEM_SCANNER end AbandonedShip_HiddenFloorRooms_EventScript_ItemWaterStone:: @ 8291295 - finditem_std ITEM_WATER_STONE + finditem ITEM_WATER_STONE end AbandonedShip_HiddenFloorRooms_EventScript_ItemTM18:: @ 82912A2 - finditem_std ITEM_TM18 + finditem ITEM_TM18 end ScorchedSlab_EventScript_ItemTM11:: @ 82912AF - finditem_std ITEM_TM11 + finditem ITEM_TM11 end SafariZone_Northwest_EventScript_ItemTM22:: @ 82912BC - finditem_std ITEM_TM22 + finditem ITEM_TM22 end SafariZone_North_EventScript_ItemCalcium:: @ 82912C9 - finditem_std ITEM_CALCIUM + finditem ITEM_CALCIUM end SafariZone_Southwest_EventScript_ItemMaxRevive:: @ 82912D6 - finditem_std ITEM_MAX_REVIVE + finditem ITEM_MAX_REVIVE end SafariZone_Northeast_EventScript_ItemNugget:: @ 82912E3 - finditem_std ITEM_NUGGET + finditem ITEM_NUGGET end SafariZone_Southeast_EventScript_ItemBigPearl:: @ 82912F0 - finditem_std ITEM_BIG_PEARL + finditem ITEM_BIG_PEARL end MtPyre_2F_EventScript_ItemUltraBall:: @ 82912FD - finditem_std ITEM_ULTRA_BALL + finditem ITEM_ULTRA_BALL end MtPyre_3F_EventScript_ItemSuperRepel:: @ 829130A - finditem_std ITEM_SUPER_REPEL + finditem ITEM_SUPER_REPEL end MtPyre_4F_EventScript_ItemSeaIncense:: @ 8291317 - finditem_std ITEM_SEA_INCENSE + finditem ITEM_SEA_INCENSE end MtPyre_5F_EventScript_ItemLaxIncense:: @ 8291324 - finditem_std ITEM_LAX_INCENSE + finditem ITEM_LAX_INCENSE end MtPyre_6F_EventScript_ItemTM30:: @ 8291331 - finditem_std ITEM_TM30 + finditem ITEM_TM30 end MtPyre_Exterior_EventScript_ItemMaxPotion:: @ 829133E - finditem_std ITEM_MAX_POTION + finditem ITEM_MAX_POTION end MtPyre_Exterior_EventScript_ItemTM48:: @ 829134B - finditem_std ITEM_TM48 + finditem ITEM_TM48 end AquaHideout_B1F_EventScript_ItemMasterBall:: @ 8291358 - finditem_std ITEM_MASTER_BALL + finditem ITEM_MASTER_BALL end AquaHideout_B1F_EventScript_ItemNugget:: @ 8291365 - finditem_std ITEM_NUGGET + finditem ITEM_NUGGET end AquaHideout_B1F_EventScript_ItemMaxElixir:: @ 8291372 - finditem_std ITEM_MAX_ELIXIR + finditem ITEM_MAX_ELIXIR end AquaHideout_B2F_EventScript_ItemNestBall:: @ 829137F - finditem_std ITEM_NEST_BALL + finditem ITEM_NEST_BALL end AquaHideout_B2F_EventScript_ItemMasterBall:: @ 829138C - finditem_std ITEM_MASTER_BALL // Unused + finditem ITEM_MASTER_BALL // Unused end Route119_EventScript_ItemNugget:: @ 8291399 - finditem_std ITEM_NUGGET + finditem ITEM_NUGGET end Route119_EventScript_ItemMaxElixir:: @ 82913A6 - finditem_std ITEM_MAX_ELIXIR + finditem ITEM_MAX_ELIXIR end Route119_EventScript_ItemNestBall:: @ 82913B3 - finditem_std ITEM_NEST_BALL + finditem ITEM_NEST_BALL end ShoalCave_LowTideEntranceRoom_EventScript_ItemBigPearl:: @ 82913C0 - finditem_std ITEM_BIG_PEARL + finditem ITEM_BIG_PEARL end ShoalCave_LowTideInnerRoom_EventScript_ItemRareCandy:: @ 82913CD - finditem_std ITEM_RARE_CANDY + finditem ITEM_RARE_CANDY end ShoalCave_LowTideStairsRoom_EventScript_ItemIceHeal:: @ 82913DA - finditem_std ITEM_ICE_HEAL + finditem ITEM_ICE_HEAL end ShoalCave_LowTideIceRoom_EventScript_ItemTM07:: @ 82913E7 - finditem_std ITEM_TM07 + finditem ITEM_TM07 end ShoalCave_LowTideIceRoom_EventScript_ItemNeverMeltIce:: @ 82913F4 - finditem_std ITEM_NEVER_MELT_ICE + finditem ITEM_NEVER_MELT_ICE end SeafloorCavern_Room9_EventScript_ItemTM26:: @ 8291401 - finditem_std ITEM_TM26 + finditem ITEM_TM26 end Route110_TrickHousePuzzle1_EventScript_ItemOrangeMail:: @ 829140E - finditem_std ITEM_ORANGE_MAIL + finditem ITEM_ORANGE_MAIL end Route110_TrickHousePuzzle2_EventScript_ItemHarborMail:: @ 829141B - finditem_std ITEM_HARBOR_MAIL + finditem ITEM_HARBOR_MAIL end Route110_TrickHousePuzzle2_EventScript_ItemWaveMail:: @ 8291428 - finditem_std ITEM_WAVE_MAIL + finditem ITEM_WAVE_MAIL end Route110_TrickHousePuzzle3_EventScript_ItemShadowMail:: @ 8291435 - finditem_std ITEM_SHADOW_MAIL + finditem ITEM_SHADOW_MAIL end Route110_TrickHousePuzzle3_EventScript_ItemWoodMail:: @ 8291442 - finditem_std ITEM_WOOD_MAIL + finditem ITEM_WOOD_MAIL end Route110_TrickHousePuzzle4_EventScript_ItemMechMail:: @ 829144F - finditem_std ITEM_MECH_MAIL + finditem ITEM_MECH_MAIL end Route110_TrickHousePuzzle6_EventScript_ItemGlitterMail:: @ 829145C - finditem_std ITEM_GLITTER_MAIL + finditem ITEM_GLITTER_MAIL end Route110_TrickHousePuzzle7_EventScript_ItemTropicMail:: @ 8291469 - finditem_std ITEM_TROPIC_MAIL + finditem ITEM_TROPIC_MAIL end Route110_TrickHousePuzzle8_EventScript_ItemBeadMail:: @ 8291476 - finditem_std ITEM_BEAD_MAIL + finditem ITEM_BEAD_MAIL end VictoryRoad_1F_EventScript_ItemMaxElixir:: @ 8291483 - finditem_std ITEM_MAX_ELIXIR + finditem ITEM_MAX_ELIXIR end VictoryRoad_1F_EventScript_ItemPPUp:: @ 8291490 - finditem_std ITEM_PP_UP + finditem ITEM_PP_UP end VictoryRoad_B1F_EventScript_ItemTM29:: @ 829149D - finditem_std ITEM_TM29 + finditem ITEM_TM29 end VictoryRoad_B1F_EventScript_ItemFullRestore:: @ 82914AA - finditem_std ITEM_FULL_RESTORE + finditem ITEM_FULL_RESTORE end VictoryRoad_B2F_EventScript_ItemFullHeal:: @ 82914B7 - finditem_std ITEM_FULL_HEAL + finditem ITEM_FULL_HEAL end ArtisanCave_B1F_EventScript_ItemHPUp:: @ 82914C4 - finditem_std ITEM_HP_UP + finditem ITEM_HP_UP end ArtisanCave_1F_EventScript_ItemCarbos:: @ 82914D1 - finditem_std ITEM_CARBOS + finditem ITEM_CARBOS end MagmaHideout_1F_EventScript_ItemRareCandy:: @ 82914DE - finditem_std ITEM_RARE_CANDY + finditem ITEM_RARE_CANDY end MagmaHideout_2F_2R_EventScript_MaxElixir:: @ 82914EB - finditem_std ITEM_MAX_ELIXIR + finditem ITEM_MAX_ELIXIR end MagmaHideout_2F_2R_EventScript_ItemFullRestore:: @ 82914F8 - finditem_std ITEM_FULL_RESTORE + finditem ITEM_FULL_RESTORE end MagmaHideout_3F_1R_EventScript_ItemNugget:: @ 8291505 - finditem_std ITEM_NUGGET + finditem ITEM_NUGGET end MagmaHideout_3F_2R_EventScript_ItemPPMax:: @ 8291512 - finditem_std ITEM_PP_MAX + finditem ITEM_PP_MAX end MagmaHideout_4F_EventScript_MaxRevive:: @ 829151F - finditem_std ITEM_MAX_REVIVE + finditem ITEM_MAX_REVIVE end MagmaHideout_3F_3R_EventScript_ItemEscapeRope:: @ 829152C - finditem_std ITEM_ESCAPE_ROPE + finditem ITEM_ESCAPE_ROPE end diff --git a/data/scripts/lilycove_lady.inc b/data/scripts/lilycove_lady.inc index c2ff593cf7..bdd670031a 100644 --- a/data/scripts/lilycove_lady.inc +++ b/data/scripts/lilycove_lady.inc @@ -129,7 +129,7 @@ LilycoveCity_PokemonCenter_1F_EventScript_FavorLadyPrize:: @ 82A8510 setvar VAR_0x8004, 0 specialvar VAR_0x8004, FavorLadyGetPrize msgbox LilycoveCity_PokemonCenter_1F_Text_IllGiveYouThisInReturn, MSGBOX_DEFAULT - giveitem_std VAR_0x8004 + giveitem VAR_0x8004 compare VAR_RESULT, 0 goto_if_eq LilycoveCity_PokemonCenter_1F_EventScript_NoRoomForFavorPrize compare VAR_RESULT, 1 @@ -297,7 +297,7 @@ LilycoveCity_PokemonCenter_1F_EventScript_GivePrize:: @ 82A8724 setvar VAR_0x8005, 0 special BufferQuizPrizeItem special SetQuizLadyState_Complete - giveitem_std VAR_0x8005 + giveitem VAR_0x8005 compare VAR_RESULT, FALSE goto_if_eq LilycoveCity_PokemonCenter_1F_EventScript_NoSpaceForQuizPrize goto LilycoveCity_PokemonCenter_1F_EventScript_AskMakeQuiz diff --git a/data/scripts/mevent_aurora_ticket.inc b/data/scripts/mevent_aurora_ticket.inc index 177d69681a..f26be068f3 100644 --- a/data/scripts/mevent_aurora_ticket.inc +++ b/data/scripts/mevent_aurora_ticket.inc @@ -2,10 +2,8 @@ MysteryEventScript_AuroraTicket:: @ 867533C setvaddress MysteryEventScript_AuroraTicket lock faceplayer - checkflag FLAG_RECEIVED_AURORA_TICKET - vgoto_if_eq AuroraTicket_Obtained - checkflag FLAG_BATTLED_DEOXYS - vgoto_if_eq AuroraTicket_Obtained + vgoto_if_set FLAG_RECEIVED_AURORA_TICKET, AuroraTicket_Obtained + vgoto_if_set FLAG_BATTLED_DEOXYS, AuroraTicket_Obtained checkitem ITEM_AURORA_TICKET, 1 compare VAR_RESULT, TRUE vgoto_if_eq AuroraTicket_Obtained @@ -15,7 +13,7 @@ MysteryEventScript_AuroraTicket:: @ 867533C checkitemspace ITEM_AURORA_TICKET, 1 compare VAR_RESULT, FALSE vgoto_if_eq AuroraTicket_NoBagSpace - giveitem_std ITEM_AURORA_TICKET + giveitem ITEM_AURORA_TICKET setflag FLAG_ENABLE_SHIP_BIRTH_ISLAND setflag FLAG_RECEIVED_AURORA_TICKET vmessage sText_AuroraTicketUseAtPort diff --git a/data/scripts/mevent_battle_card.inc b/data/scripts/mevent_battle_card.inc index 77f9a9b24f..70462bdd9e 100644 --- a/data/scripts/mevent_battle_card.inc +++ b/data/scripts/mevent_battle_card.inc @@ -1,7 +1,6 @@ MysteryEventScript_BattleCard:: @ 867513C setvaddress MysteryEventScript_BattleCard - checkflag FLAG_MYSTERY_EVENT_DONE - vgoto_if_eq MysteryEventScript_BattleCardInfo + vgoto_if_set FLAG_MYSTERY_EVENT_DONE, MysteryEventScript_BattleCardInfo setorcopyvar VAR_RESULT, GET_CARD_BATTLES_WON specialvar VAR_0x8008, GetMysteryEventCardVal compare VAR_0x8008, REQUIRED_CARD_BATTLES @@ -11,7 +10,7 @@ MysteryEventScript_BattleCard:: @ 867513C vmessage sText_MysteryGiftBattleCountCard_WonPrize waitmessage waitbuttonpress - giveitem_std ITEM_POTION + giveitem ITEM_POTION release setflag FLAG_MYSTERY_EVENT_DONE end diff --git a/data/scripts/mevent_mystic_ticket.inc b/data/scripts/mevent_mystic_ticket.inc index 9d532b0436..8f938dc33a 100644 --- a/data/scripts/mevent_mystic_ticket.inc +++ b/data/scripts/mevent_mystic_ticket.inc @@ -2,12 +2,9 @@ MysteryEventScript_MysticTicket:: @ 867550B setvaddress MysteryEventScript_MysticTicket lock faceplayer - checkflag FLAG_RECEIVED_MYSTIC_TICKET - vgoto_if_eq MysticTicket_Obtained - checkflag FLAG_CAUGHT_LUGIA - vgoto_if_eq MysticTicket_Obtained - checkflag FLAG_CAUGHT_HO_OH - vgoto_if_eq MysticTicket_Obtained + vgoto_if_set FLAG_RECEIVED_MYSTIC_TICKET, MysticTicket_Obtained + vgoto_if_set FLAG_CAUGHT_LUGIA, MysticTicket_Obtained + vgoto_if_set FLAG_CAUGHT_HO_OH, MysticTicket_Obtained checkitem ITEM_MYSTIC_TICKET, 1 compare VAR_RESULT, TRUE vgoto_if_eq MysticTicket_Obtained @@ -17,7 +14,7 @@ MysteryEventScript_MysticTicket:: @ 867550B checkitemspace ITEM_MYSTIC_TICKET, 1 compare VAR_RESULT, FALSE vgoto_if_eq MysticTicket_NoBagSpace - giveitem_std ITEM_MYSTIC_TICKET + giveitem ITEM_MYSTIC_TICKET setflag FLAG_ENABLE_SHIP_NAVEL_ROCK setflag FLAG_RECEIVED_MYSTIC_TICKET vmessage sText_MysticTicketUseAtPort diff --git a/data/scripts/mevent_old_sea_map.inc b/data/scripts/mevent_old_sea_map.inc index 45c5f6728a..0fb3c10028 100644 --- a/data/scripts/mevent_old_sea_map.inc +++ b/data/scripts/mevent_old_sea_map.inc @@ -2,10 +2,8 @@ MysteryEventScript_OldSeaMap:: @ 86757F4 setvaddress MysteryEventScript_OldSeaMap lock faceplayer - checkflag FLAG_RECEIVED_OLD_SEA_MAP - vgoto_if_eq OldSeaMap_Obtained - checkflag FLAG_CAUGHT_MEW - vgoto_if_eq OldSeaMap_Obtained + vgoto_if_set FLAG_RECEIVED_OLD_SEA_MAP, OldSeaMap_Obtained + vgoto_if_set FLAG_CAUGHT_MEW, OldSeaMap_Obtained checkitem ITEM_OLD_SEA_MAP, 1 compare VAR_RESULT, TRUE vgoto_if_eq OldSeaMap_Obtained @@ -15,7 +13,7 @@ MysteryEventScript_OldSeaMap:: @ 86757F4 checkitemspace ITEM_OLD_SEA_MAP, 1 compare VAR_RESULT, FALSE vgoto_if_eq OldSeaMap_NoBagSpace - giveitem_std ITEM_OLD_SEA_MAP + giveitem ITEM_OLD_SEA_MAP setflag FLAG_ENABLE_SHIP_FARAWAY_ISLAND setflag FLAG_RECEIVED_OLD_SEA_MAP vmessage sText_MysteryGiftOldSeaMapUseAtPort diff --git a/data/scripts/mevent_pichu.inc b/data/scripts/mevent_pichu.inc index 4f5c739af2..cc947e396d 100644 --- a/data/scripts/mevent_pichu.inc +++ b/data/scripts/mevent_pichu.inc @@ -1,7 +1,6 @@ MysteryEventScript_SurfPichu:: @ 8674D3D setvaddress MysteryEventScript_SurfPichu - checkflag FLAG_MYSTERY_EVENT_DONE - vgoto_if_ne SurfPichu_GiveIfPossible + vgoto_if_unset FLAG_MYSTERY_EVENT_DONE, SurfPichu_GiveIfPossible returnram SurfPichu_GiveIfPossible: @ 8674D4C diff --git a/data/scripts/obtain_item.inc b/data/scripts/obtain_item.inc index 77b795f602..3afd92588a 100644 --- a/data/scripts/obtain_item.inc +++ b/data/scripts/obtain_item.inc @@ -1,5 +1,5 @@ Std_ObtainItem:: @ 8271AD3 - giveitem VAR_0x8000, VAR_0x8001 + additem VAR_0x8000, VAR_0x8001 copyvar VAR_0x8007, VAR_RESULT call EventScript_ObtainItemMessage return @@ -73,7 +73,7 @@ EventScript_PlayFanfareObtainedTMHM:: @ 8271BB3 return Std_ObtainDecoration:: @ 8271BB7 - givedecoration VAR_0x8000 + adddecoration VAR_0x8000 copyvar VAR_0x8007, VAR_RESULT call EventScript_ObtainDecorationMessage return @@ -118,7 +118,7 @@ Std_FindItem:: @ 8271BFD EventScript_PickUpItem:: @ 8271C3A removeobject VAR_LAST_TALKED - giveitem VAR_0x8004, VAR_0x8005 + additem VAR_0x8004, VAR_0x8005 specialvar VAR_RESULT, BufferTMHMMoveName copyvar VAR_0x8008, VAR_RESULT compare VAR_0x8008, 1 @@ -156,7 +156,7 @@ EventScript_NoRoomToPickUpItem:: @ 8271CA1 EventScript_HiddenItemScript:: @ 8271CB7 lockall waitse - giveitem VAR_0x8005, 1 + additem VAR_0x8005 copyvar VAR_0x8007, VAR_RESULT bufferitemnameplural 1, VAR_0x8005, 1 checkitemtype VAR_0x8005 diff --git a/data/scripts/players_house.inc b/data/scripts/players_house.inc index 58618efe7c..8f15fcd58b 100644 --- a/data/scripts/players_house.inc +++ b/data/scripts/players_house.inc @@ -345,7 +345,7 @@ PlayersHouse_1F_EventScript_CheckGiveAmuletCoin:: @ 8292A43 PlayersHouse_1F_EventScript_TryGiveAmuletCoin:: @ 8292A51 goto_if_set FLAG_RECEIVED_AMULET_COIN, PlayersHouse_1F_EventScript_MomHealsParty msgbox PlayersHouse_1F_Text_GotDadsBadgeHeresSomethingFromMom, MSGBOX_DEFAULT - giveitem_std ITEM_AMULET_COIN + giveitem ITEM_AMULET_COIN compare VAR_RESULT, FALSE goto_if_eq Common_EventScript_ShowBagIsFull msgbox PlayersHouse_1F_Text_DontPushYourselfTooHard, MSGBOX_DEFAULT @@ -448,7 +448,7 @@ PlayersHouse_1F_EventScript_GetSSTicketAndSeeLatiTV:: @ 8292AF2 compare VAR_0x8008, FEMALE call_if_eq PlayersHouse_1F_EventScript_DadApproachPlayerFemale msgbox PlayersHouse_1F_Text_TicketFromBrineyCameForYou, MSGBOX_DEFAULT - giveitem_std ITEM_SS_TICKET + giveitem ITEM_SS_TICKET msgbox PlayersHouse_1F_Text_PortsInSlateportLilycove, MSGBOX_DEFAULT closemessage delay 20 diff --git a/data/scripts/secret_power_tm.inc b/data/scripts/secret_power_tm.inc index 7be69ec58b..6684ec98b1 100644 --- a/data/scripts/secret_power_tm.inc +++ b/data/scripts/secret_power_tm.inc @@ -44,7 +44,7 @@ Route111_EventScript_SecretPowerMan:: @ 82765FF end Route111_EventScript_GiveSecretPower:: @ 827661E - giveitem_std ITEM_TM43 + giveitem ITEM_TM43 compare VAR_RESULT, FALSE goto_if_eq Route111_EventScript_NoRoomForSecretPower msgbox Route111_Text_ExplainSecretPower, MSGBOX_DEFAULT diff --git a/data/scripts/std_msgbox.inc b/data/scripts/std_msgbox.inc new file mode 100644 index 0000000000..1d82bb381b --- /dev/null +++ b/data/scripts/std_msgbox.inc @@ -0,0 +1,48 @@ +Std_MsgboxNPC: @ 8271315 + lock + faceplayer + message 0x0 + waitmessage + waitbuttonpress + release + return + +Std_MsgboxSign: @ 8271320 + lockall + message 0x0 + waitmessage + waitbuttonpress + releaseall + return + +Std_MsgboxDefault: @ 827132A + message 0x0 + waitmessage + waitbuttonpress + return + +Std_MsgboxYesNo: @ 8271332 + message 0x0 + waitmessage + yesnobox 20, 8 + return + +Std_MsgboxGetPoints: @ 827133C + message 0x0 + playfanfare MUS_ME_POINTGET + waitfanfare + waitmessage + return + +Std_10: @ 8271347 + pokenavcall 0x0 + waitmessage + return + +EventScript_UnusedReturn: @ 827134E + return + +Common_EventScript_SaveGame:: @ 827134F + special SaveGame + waitstate + return diff --git a/data/scripts/trainer_battle.inc b/data/scripts/trainer_battle.inc index 0ba8bcda6d..d609fcc932 100644 --- a/data/scripts/trainer_battle.inc +++ b/data/scripts/trainer_battle.inc @@ -130,3 +130,10 @@ EventScript_EndTrainerBattle:: @ 8271491 gotobeatenscript releaseall end + +Std_MsgboxAutoclose:: @ 8271494 + message 0x0 + waitmessage + waitbuttonpress + release + return From 58e64b9524d2dc5836db1359baee3425378031c3 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Sun, 12 Jan 2020 15:27:37 -0500 Subject: [PATCH 20/37] Clean up some of save.c --- common_syms/save.txt | 2 +- include/save.h | 21 ++- src/ereader_helpers.c | 10 +- src/hall_of_fame.c | 6 +- src/intro.c | 2 +- src/main_menu.c | 8 +- src/new_game.c | 2 +- src/overworld.c | 2 +- src/recorded_battle.c | 4 +- src/reset_rtc_screen.c | 4 +- src/reset_save_heap.c | 4 +- src/save.c | 295 +++++++++++++++++++++-------------------- src/start_menu.c | 12 +- 13 files changed, 190 insertions(+), 182 deletions(-) diff --git a/common_syms/save.txt b/common_syms/save.txt index d7668c332e..190a658406 100644 --- a/common_syms/save.txt +++ b/common_syms/save.txt @@ -10,4 +10,4 @@ gSaveFileStatus gGameContinueCallback gRamSaveSectionLocations gSaveUnusedVar2 -gUnknown_03006294 +gSaveAttemptStatus diff --git a/include/save.h b/include/save.h index 5e2cf72679..225b2b62c6 100644 --- a/include/save.h +++ b/include/save.h @@ -55,13 +55,25 @@ enum SAVE_HALL_OF_FAME_ERASE_BEFORE // unused }; +#define SECTOR_ID_SAVEBLOCK2 0 +#define SECTOR_ID_SAVEBLOCK1_START 1 +#define SECTOR_ID_SAVEBLOCK1_END 4 +#define SECTOR_ID_PKMN_STORAGE_START 5 +#define SECTOR_ID_PKMN_STORAGE_END 13 #define SECTOR_SAVE_SLOT_LENGTH 14 +// Save Slot 1: 0-13; Save Slot 2: 14-27 #define SECTOR_ID_HOF_1 28 #define SECTOR_ID_HOF_2 29 #define SECTOR_ID_TRAINER_HILL 30 #define SECTOR_ID_RECORDED_BATTLE 31 #define SECTORS_COUNT 32 +#define SAVE_STATUS_EMPTY 0 +#define SAVE_STATUS_OK 1 +#define SAVE_STATUS_CORRUPT 2 +#define SAVE_STATUS_NO_FLASH 4 +#define SAVE_STATUS_ERROR 0xFF + extern u16 gLastWrittenSector; extern u32 gLastSaveCounter; extern u16 gLastKnownGoodSector; @@ -82,13 +94,12 @@ u8 HandleSavingData(u8 saveType); u8 TrySavingData(u8 saveType); bool8 sub_8153380(void); bool8 sub_81533AC(void); -u8 sub_81533E0(void); -u8 sub_8153408(void); -u8 FullSaveGame(void); +bool8 sub_81533E0(void); +bool8 sub_8153408(void); +bool8 FullSaveGame(void); bool8 CheckSaveFile(void); -u8 Save_LoadGameData(u8 a1); +u8 Save_LoadGameData(u8 saveType); u16 sub_815355C(void); -u8 sub_81534D0(u8); u32 TryReadSpecialSaveSection(u8 sector, u8* dst); u32 TryWriteSpecialSaveSection(u8 sector, u8* src); void sub_8153688(u8 taskId); diff --git a/src/ereader_helpers.c b/src/ereader_helpers.c index 2419c28066..bdfbebf6b1 100755 --- a/src/ereader_helpers.c +++ b/src/ereader_helpers.c @@ -473,7 +473,7 @@ static bool32 TryWriteTrainerHill_r(struct EReaderTrainerHillSet *ttdata, struct } buffer2->checksum = CalcByteArraySum((u8 *)buffer2->floors, 4 * sizeof(struct TrHillFloor)); - if (TryWriteSpecialSaveSection(SECTOR_ID_TRAINER_HILL, (u8 *)buffer2) != 1) + if (TryWriteSpecialSaveSection(SECTOR_ID_TRAINER_HILL, (u8 *)buffer2) != SAVE_STATUS_OK) return FALSE; return TRUE; @@ -487,13 +487,13 @@ bool32 TryWriteTrainerHill(struct EReaderTrainerHillSet *arg0) return result; } -static bool32 TryReadTrainerHill_r(struct EReaderTrainerHillSet *arg0, u8 *arg1) +static bool32 TryReadTrainerHill_r(struct EReaderTrainerHillSet *dst, u8 *buffer) { - if (TryReadSpecialSaveSection(SECTOR_ID_TRAINER_HILL, arg1) != 1) + if (TryReadSpecialSaveSection(SECTOR_ID_TRAINER_HILL, buffer) != SAVE_STATUS_OK) return FALSE; - memcpy(arg0, arg1, sizeof(struct EReaderTrainerHillSet)); - if (!TrainerHill_VerifyChecksum(arg0)) + memcpy(dst, buffer, sizeof(struct EReaderTrainerHillSet)); + if (!TrainerHill_VerifyChecksum(dst)) return FALSE; return TRUE; diff --git a/src/hall_of_fame.c b/src/hall_of_fame.c index 95cbc11ef8..e6b4299e50 100644 --- a/src/hall_of_fame.c +++ b/src/hall_of_fame.c @@ -467,7 +467,7 @@ static void Task_Hof_InitTeamSaveData(u8 taskId) } else { - if (Save_LoadGameData(3) != TRUE) + if (Save_LoadGameData(SAVE_HALL_OF_FAME) != SAVE_STATUS_OK) memset(gDecompressionBuffer, 0, 0x2000); } @@ -498,7 +498,7 @@ static void Task_Hof_InitTeamSaveData(u8 taskId) static void Task_Hof_TrySaveData(u8 taskId) { gGameContinueCallback = CB2_DoHallOfFameScreenDontSaveData; - if (TrySavingData(SAVE_HALL_OF_FAME) == 0xFF && gDamagedSaveSectors != 0) + if (TrySavingData(SAVE_HALL_OF_FAME) == SAVE_STATUS_ERROR && gDamagedSaveSectors != 0) { UnsetBgTilemapBuffer(1); UnsetBgTilemapBuffer(3); @@ -836,7 +836,7 @@ void CB2_DoHallOfFamePC(void) static void Task_HofPC_CopySaveData(u8 taskId) { sub_81980F0(0, 0x1E, 0, 0xC, 0x226); - if (Save_LoadGameData(3) != 1) + if (Save_LoadGameData(SAVE_HALL_OF_FAME) != SAVE_STATUS_OK) { gTasks[taskId].func = Task_HofPC_PrintDataIsCorrupted; } diff --git a/src/intro.c b/src/intro.c index 539b07a750..7c2303dcce 100644 --- a/src/intro.c +++ b/src/intro.c @@ -1070,7 +1070,7 @@ void CB2_InitCopyrightScreenAfterBootup(void) ResetMenuAndMonGlobals(); Save_ResetSaveCounters(); Save_LoadGameData(SAVE_NORMAL); - if (gSaveFileStatus == 0 || gSaveFileStatus == 2) + if (gSaveFileStatus == SAVE_STATUS_EMPTY || gSaveFileStatus == SAVE_STATUS_CORRUPT) Sav2_ClearSetDefault(); SetPokemonCryStereo(gSaveBlock2Ptr->optionsSound); InitHeap(gHeap, HEAP_SIZE); diff --git a/src/main_menu.c b/src/main_menu.c index 01d9dfe4b0..9df4b5cb83 100644 --- a/src/main_menu.c +++ b/src/main_menu.c @@ -643,7 +643,7 @@ static void Task_MainMenuCheckSaveFile(u8 taskId) tWirelessAdapterConnected = TRUE; switch (gSaveFileStatus) { - case 1: + case SAVE_STATUS_OK: tMenuType = HAS_SAVED_GAME; if (IsMysteryGiftEnabled()) tMenuType++; @@ -654,19 +654,19 @@ static void Task_MainMenuCheckSaveFile(u8 taskId) tMenuType = HAS_NO_SAVED_GAME; gTasks[taskId].func = Task_WaitForSaveFileErrorWindow; break; - case 0xFF: + case SAVE_STATUS_ERROR: CreateMainMenuErrorWindow(gText_SaveFileCorrupted); gTasks[taskId].func = Task_WaitForSaveFileErrorWindow; tMenuType = HAS_SAVED_GAME; if (IsMysteryGiftEnabled() == TRUE) tMenuType++; break; - case 0: + case SAVE_STATUS_EMPTY: default: tMenuType = HAS_NO_SAVED_GAME; gTasks[taskId].func = Task_MainMenuCheckBattery; break; - case 4: + case SAVE_STATUS_NO_FLASH: CreateMainMenuErrorWindow(gJPText_No1MSubCircuit); gTasks[taskId].tMenuType = HAS_NO_SAVED_GAME; gTasks[taskId].func = Task_WaitForSaveFileErrorWindow; diff --git a/src/new_game.c b/src/new_game.c index b24114f774..464da64146 100644 --- a/src/new_game.c +++ b/src/new_game.c @@ -150,7 +150,7 @@ void ResetMenuAndMonGlobals(void) void NewGameInitData(void) { - if (gSaveFileStatus == 0 || gSaveFileStatus == 2) + if (gSaveFileStatus == SAVE_STATUS_EMPTY || gSaveFileStatus == SAVE_STATUS_CORRUPT) RtcReset(); gDifferentSaveFile = 1; diff --git a/src/overworld.c b/src/overworld.c index 1cb2643690..76b201c3b3 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -1714,7 +1714,7 @@ void CB2_ContinueSavedGame(void) FieldClearVBlankHBlankCallbacks(); StopMapMusic(); ResetSafariZoneFlag_(); - if (gSaveFileStatus == 0xFF) + if (gSaveFileStatus == SAVE_STATUS_ERROR) ResetWinStreaks(); LoadSaveblockMapHeader(); diff --git a/src/recorded_battle.c b/src/recorded_battle.c index 1533fd5ad0..5a0579f709 100644 --- a/src/recorded_battle.c +++ b/src/recorded_battle.c @@ -323,7 +323,7 @@ static bool32 RecordedBattleToSave(struct RecordedBattleSave *battleSave, struct saveSection->checksum = CalcByteArraySum((void*)(saveSection), sizeof(*saveSection) - 4); - if (TryWriteSpecialSaveSection(SECTOR_ID_RECORDED_BATTLE, (void*)(saveSection)) != 1) + if (TryWriteSpecialSaveSection(SECTOR_ID_RECORDED_BATTLE, (void*)(saveSection)) != SAVE_STATUS_OK) return FALSE; else return TRUE; @@ -492,7 +492,7 @@ bool32 MoveRecordedBattleToSaveData(void) static bool32 TryCopyRecordedBattleSaveData(struct RecordedBattleSave *dst, struct SaveSection *saveBuffer) { - if (TryReadSpecialSaveSection(SECTOR_ID_RECORDED_BATTLE, (void*)(saveBuffer)) != 1) + if (TryReadSpecialSaveSection(SECTOR_ID_RECORDED_BATTLE, (void*)(saveBuffer)) != SAVE_STATUS_OK) return FALSE; memcpy(dst, saveBuffer, sizeof(struct RecordedBattleSave)); diff --git a/src/reset_rtc_screen.c b/src/reset_rtc_screen.c index 8c4843ab59..efad640e34 100644 --- a/src/reset_rtc_screen.c +++ b/src/reset_rtc_screen.c @@ -559,7 +559,7 @@ static void Task_ResetRtcScreen(u8 taskId) case 1: if (!gPaletteFade.active) { - if (gSaveFileStatus == 0 || gSaveFileStatus == 2) + if (gSaveFileStatus == SAVE_STATUS_EMPTY || gSaveFileStatus == SAVE_STATUS_CORRUPT) { ShowMessage(gText_NoSaveFileCantSetTime); data[0] = 5; @@ -608,7 +608,7 @@ static void Task_ResetRtcScreen(u8 taskId) } break; case 4: - if (TrySavingData(SAVE_NORMAL) == 1) + if (TrySavingData(SAVE_NORMAL) == SAVE_STATUS_OK) { ShowMessage(gText_SaveCompleted); PlaySE(SE_PINPON); diff --git a/src/reset_save_heap.c b/src/reset_save_heap.c index 5a54a21771..577a48b0d8 100644 --- a/src/reset_save_heap.c +++ b/src/reset_save_heap.c @@ -21,8 +21,8 @@ void sub_81700F8(void) SetSaveBlocksPointers(sub_815355C()); ResetMenuAndMonGlobals(); Save_ResetSaveCounters(); - Save_LoadGameData(0); - if (gSaveFileStatus == 0 || gSaveFileStatus == 2) + Save_LoadGameData(SAVE_NORMAL); + if (gSaveFileStatus == SAVE_STATUS_EMPTY || gSaveFileStatus == SAVE_STATUS_CORRUPT) Sav2_ClearSetDefault(); SetPokemonCryStereo(gSaveBlock2Ptr->optionsSound); InitHeap(gHeap, HEAP_SIZE); diff --git a/src/save.c b/src/save.c index e1f5a6fff2..c19aff4d8d 100644 --- a/src/save.c +++ b/src/save.c @@ -14,7 +14,7 @@ #include "constants/game_stat.h" static u16 CalculateChecksum(void *data, u16 size); -static u8 DoReadFlashWholeSection(u8 sector, struct SaveSection *section); +static bool8 DoReadFlashWholeSection(u8 sector, struct SaveSection *section); static u8 GetSaveValidStatus(const struct SaveSectionLocation *location); static u8 sub_8152E10(u16 a1, const struct SaveSectionLocation *location); static u8 ClearSaveData_2(u16 a1, const struct SaveSectionLocation *location); @@ -53,7 +53,7 @@ static u8 HandleWriteSector(u16 a1, const struct SaveSectionLocation *location); min(sizeof(structure) - chunkNum * SECTOR_DATA_SIZE, SECTOR_DATA_SIZE) \ } \ -const struct SaveSectionOffsets gSaveSectionOffsets[] = +static const struct SaveSectionOffsets sSaveSectionOffsets[] = { SAVEBLOCK_CHUNK(gSaveblock2, 0), @@ -84,9 +84,9 @@ u16 gUnknown_03006208; u16 gSaveUnusedVar; u16 gSaveFileStatus; void (*gGameContinueCallback)(void); -struct SaveSectionLocation gRamSaveSectionLocations[0xE]; +struct SaveSectionLocation gRamSaveSectionLocations[SECTOR_SAVE_SLOT_LENGTH]; u16 gSaveUnusedVar2; -u16 gUnknown_03006294; +u16 gSaveAttemptStatus; EWRAM_DATA struct SaveSection gSaveDataBuffer = {0}; EWRAM_DATA static u8 sUnusedVar = 0; @@ -130,16 +130,16 @@ static bool32 SetDamagedSectorBits(u8 op, u8 bit) return retVal; } -static u8 save_write_to_flash(u16 a1, const struct SaveSectionLocation *location) +static u8 SaveWriteToFlash(u16 a1, const struct SaveSectionLocation *location) { - u32 retVal; + u32 status; u16 i; gFastSaveSection = &gSaveDataBuffer; if (a1 != 0xFFFF) // for link { - retVal = HandleWriteSector(a1, location); + status = HandleWriteSector(a1, location); } else { @@ -148,41 +148,41 @@ static u8 save_write_to_flash(u16 a1, const struct SaveSectionLocation *location gLastWrittenSector++; gLastWrittenSector = gLastWrittenSector % SECTOR_SAVE_SLOT_LENGTH; // array count save sector locations gSaveCounter++; - retVal = 1; + status = SAVE_STATUS_OK; for (i = 0; i < SECTOR_SAVE_SLOT_LENGTH; i++) HandleWriteSector(i, location); if (gDamagedSaveSectors != 0) // skip the damaged sector. { - retVal = 0xFF; + status = SAVE_STATUS_ERROR; gLastWrittenSector = gLastKnownGoodSector; gSaveCounter = gLastSaveCounter; } } - return retVal; + return status; } -static u8 HandleWriteSector(u16 a1, const struct SaveSectionLocation *location) +static u8 HandleWriteSector(u16 sectorId, const struct SaveSectionLocation *location) { u16 i; u16 sector; u8 *data; u16 size; - sector = a1 + gLastWrittenSector; + sector = sectorId + gLastWrittenSector; sector %= SECTOR_SAVE_SLOT_LENGTH; sector += SECTOR_SAVE_SLOT_LENGTH * (gSaveCounter % 2); - data = location[a1].data; - size = location[a1].size; + data = location[sectorId].data; + size = location[sectorId].size; // clear save section. for (i = 0; i < sizeof(struct SaveSection); i++) ((char *)gFastSaveSection)[i] = 0; - gFastSaveSection->id = a1; + gFastSaveSection->id = sectorId; gFastSaveSection->security = UNKNOWN_CHECK_VALUE; gFastSaveSection->counter = gSaveCounter; @@ -215,12 +215,12 @@ static u8 TryWriteSector(u8 sector, u8 *data) if (ProgramFlashSectorAndVerify(sector, data) != 0) // is damaged? { SetDamagedSectorBits(ENABLE, sector); // set damaged sector bits. - return 0xFF; + return SAVE_STATUS_ERROR; } else { SetDamagedSectorBits(DISABLE, sector); // unset damaged sector bits. it's safe now. - return 1; + return SAVE_STATUS_OK; } } @@ -247,46 +247,46 @@ static u32 RestoreSaveBackupVars(const struct SaveSectionLocation *location) // return 0; } -static u8 sub_81529D4(u16 a1, const struct SaveSectionLocation *location) +static u8 sub_81529D4(u16 sectorId, const struct SaveSectionLocation *location) { - u8 retVal; + u8 status; - if (gUnknown_03006208 < a1 - 1) + if (gUnknown_03006208 < sectorId - 1) { - retVal = 1; + status = SAVE_STATUS_OK; HandleWriteSector(gUnknown_03006208, location); gUnknown_03006208++; if (gDamagedSaveSectors) { - retVal = 0xFF; + status = SAVE_STATUS_ERROR; gLastWrittenSector = gLastKnownGoodSector; gSaveCounter = gLastSaveCounter; } } else { - retVal = 0xFF; + status = SAVE_STATUS_ERROR; } - return retVal; + return status; } -static u8 sub_8152A34(u16 a1, const struct SaveSectionLocation *location) +static u8 sub_8152A34(u16 sectorId, const struct SaveSectionLocation *location) { - u8 retVal = 1; + u8 status = SAVE_STATUS_OK; - ClearSaveData_2(a1 - 1, location); + ClearSaveData_2(sectorId - 1, location); if (gDamagedSaveSectors) { - retVal = 0xFF; + status = SAVE_STATUS_ERROR; gLastWrittenSector = gLastKnownGoodSector; gSaveCounter = gLastSaveCounter; } - return retVal; + return status; } -static u8 ClearSaveData_2(u16 a1, const struct SaveSectionLocation *location) +static u8 ClearSaveData_2(u16 sectorId, const struct SaveSectionLocation *location) { u16 i; u16 sector; @@ -294,18 +294,18 @@ static u8 ClearSaveData_2(u16 a1, const struct SaveSectionLocation *location) u16 size; u8 status; - sector = a1 + gLastWrittenSector; + sector = sectorId + gLastWrittenSector; sector %= SECTOR_SAVE_SLOT_LENGTH; sector += SECTOR_SAVE_SLOT_LENGTH * (gSaveCounter % 2); - data = location[a1].data; - size = location[a1].size; + data = location[sectorId].data; + size = location[sectorId].size; // clear temp save section. for (i = 0; i < sizeof(struct SaveSection); i++) ((char *)gFastSaveSection)[i] = 0; - gFastSaveSection->id = a1; + gFastSaveSection->id = sectorId; gFastSaveSection->security = UNKNOWN_CHECK_VALUE; gFastSaveSection->counter = gSaveCounter; @@ -318,53 +318,53 @@ static u8 ClearSaveData_2(u16 a1, const struct SaveSectionLocation *location) EraseFlashSector(sector); - status = 1; + status = SAVE_STATUS_OK; for (i = 0; i < sizeof(struct UnkSaveSection); i++) { if (ProgramFlashByte(sector, i, ((u8 *)gFastSaveSection)[i])) { - status = 0xFF; + status = SAVE_STATUS_ERROR; break; } } - if (status == 0xFF) + if (status == SAVE_STATUS_ERROR) { SetDamagedSectorBits(ENABLE, sector); - return 0xFF; + return SAVE_STATUS_ERROR; } else { - status = 1; + status = SAVE_STATUS_OK; for (i = 0; i < 7; i++) { if (ProgramFlashByte(sector, 0xFF9 + i, ((u8 *)gFastSaveSection)[0xFF9 + i])) { - status = 0xFF; + status = SAVE_STATUS_ERROR; break; } } - if (status == 0xFF) + if (status == SAVE_STATUS_ERROR) { SetDamagedSectorBits(ENABLE, sector); - return 0xFF; + return SAVE_STATUS_ERROR; } else { SetDamagedSectorBits(DISABLE, sector); - return 1; + return SAVE_STATUS_OK; } } } -static u8 sav12_xor_get(u16 a1, const struct SaveSectionLocation *location) +static u8 sav12_xor_get(u16 sectorId, const struct SaveSectionLocation *location) { u16 sector; - sector = a1 + gLastWrittenSector; // no sub 1? + sector = sectorId + gLastWrittenSector; // no sub 1? sector %= SECTOR_SAVE_SLOT_LENGTH; sector += SECTOR_SAVE_SLOT_LENGTH * (gSaveCounter % 2); @@ -374,20 +374,20 @@ static u8 sav12_xor_get(u16 a1, const struct SaveSectionLocation *location) SetDamagedSectorBits(ENABLE, sector); gLastWrittenSector = gLastKnownGoodSector; gSaveCounter = gLastSaveCounter; - return 0xFF; + return SAVE_STATUS_ERROR; } else { SetDamagedSectorBits(DISABLE, sector); - return 1; + return SAVE_STATUS_OK; } } -static u8 sub_8152CAC(u16 a1, const struct SaveSectionLocation *location) +static u8 sub_8152CAC(u16 sectorId, const struct SaveSectionLocation *location) { u16 sector; - sector = a1 + gLastWrittenSector - 1; + sector = sectorId + gLastWrittenSector - 1; sector %= SECTOR_SAVE_SLOT_LENGTH; sector += SECTOR_SAVE_SLOT_LENGTH * (gSaveCounter % 2); @@ -397,20 +397,20 @@ static u8 sub_8152CAC(u16 a1, const struct SaveSectionLocation *location) SetDamagedSectorBits(ENABLE, sector); gLastWrittenSector = gLastKnownGoodSector; gSaveCounter = gLastSaveCounter; - return 0xFF; + return SAVE_STATUS_ERROR; } else { SetDamagedSectorBits(DISABLE, sector); - return 1; + return SAVE_STATUS_OK; } } -static u8 sub_8152D44(u16 a1, const struct SaveSectionLocation *location) +static u8 sub_8152D44(u16 sectorId, const struct SaveSectionLocation *location) { u16 sector; - sector = a1 + gLastWrittenSector - 1; // no sub 1? + sector = sectorId + gLastWrittenSector - 1; // no sub 1? sector %= SECTOR_SAVE_SLOT_LENGTH; sector += SECTOR_SAVE_SLOT_LENGTH * (gSaveCounter % 2); @@ -420,30 +420,30 @@ static u8 sub_8152D44(u16 a1, const struct SaveSectionLocation *location) SetDamagedSectorBits(ENABLE, sector); gLastWrittenSector = gLastKnownGoodSector; gSaveCounter = gLastSaveCounter; - return 0xFF; + return SAVE_STATUS_ERROR; } else { SetDamagedSectorBits(DISABLE, sector); - return 1; + return SAVE_STATUS_OK; } } static u8 sub_8152DD0(u16 a1, const struct SaveSectionLocation *location) { - u8 retVal; + u8 status; gFastSaveSection = &gSaveDataBuffer; if (a1 != 0xFFFF) { - retVal = 0xFF; + status = SAVE_STATUS_ERROR; } else { - retVal = GetSaveValidStatus(location); + status = GetSaveValidStatus(location); sub_8152E10(0xFFFF, location); } - return retVal; + return status; } static u8 sub_8152E10(u16 a1, const struct SaveSectionLocation *location) @@ -469,7 +469,7 @@ static u8 sub_8152E10(u16 a1, const struct SaveSectionLocation *location) } } - return 1; + return SAVE_STATUS_OK; } static u8 GetSaveValidStatus(const struct SaveSectionLocation *location) @@ -502,13 +502,13 @@ static u8 GetSaveValidStatus(const struct SaveSectionLocation *location) if (securityPassed) { if (slotCheckField == 0x3FFF) - saveSlot1Status = 1; + saveSlot1Status = SAVE_STATUS_OK; else - saveSlot1Status = 255; + saveSlot1Status = SAVE_STATUS_ERROR; } else { - saveSlot1Status = 0; + saveSlot1Status = SAVE_STATUS_EMPTY; } slotCheckField = 0; @@ -533,16 +533,16 @@ static u8 GetSaveValidStatus(const struct SaveSectionLocation *location) if (securityPassed) { if (slotCheckField == 0x3FFF) - saveSlot2Status = 1; + saveSlot2Status = SAVE_STATUS_OK; else - saveSlot2Status = 255; + saveSlot2Status = SAVE_STATUS_ERROR; } else { - saveSlot2Status = 0; + saveSlot2Status = SAVE_STATUS_EMPTY; } - if (saveSlot1Status == 1 && saveSlot2Status == 1) + if (saveSlot1Status == SAVE_STATUS_OK && saveSlot2Status == SAVE_STATUS_OK) { if ((saveSlot1Counter == -1 && saveSlot2Counter == 0) || (saveSlot1Counter == 0 && saveSlot2Counter == -1)) { @@ -558,42 +558,42 @@ static u8 GetSaveValidStatus(const struct SaveSectionLocation *location) else gSaveCounter = saveSlot1Counter; } - return 1; + return SAVE_STATUS_OK; } - if (saveSlot1Status == 1) + if (saveSlot1Status == SAVE_STATUS_OK) { gSaveCounter = saveSlot1Counter; - if (saveSlot2Status == 255) - return 255; - return 1; + if (saveSlot2Status == SAVE_STATUS_ERROR) + return SAVE_STATUS_ERROR; + return SAVE_STATUS_OK; } - if (saveSlot2Status == 1) + if (saveSlot2Status == SAVE_STATUS_OK) { gSaveCounter = saveSlot2Counter; - if (saveSlot1Status == 255) - return 255; - return 1; + if (saveSlot1Status == SAVE_STATUS_ERROR) + return SAVE_STATUS_ERROR; + return SAVE_STATUS_OK; } - if (saveSlot1Status == 0 && saveSlot2Status == 0) + if (saveSlot1Status == SAVE_STATUS_EMPTY && saveSlot2Status == SAVE_STATUS_EMPTY) { gSaveCounter = 0; gLastWrittenSector = 0; - return 0; + return SAVE_STATUS_EMPTY; } gSaveCounter = 0; gLastWrittenSector = 0; - return 2; + return SAVE_STATUS_CORRUPT; } -static u8 sub_81530DC(u8 a1, u8 *data, u16 size) +static u8 sub_81530DC(u8 sectorId, u8 *data, u16 size) { u16 i; struct SaveSection *section = &gSaveDataBuffer; - DoReadFlashWholeSection(a1, section); + DoReadFlashWholeSection(sectorId, section); if (section->security == UNKNOWN_CHECK_VALUE) { u16 checksum = CalculateChecksum(section->data, size); @@ -601,23 +601,24 @@ static u8 sub_81530DC(u8 a1, u8 *data, u16 size) { for (i = 0; i < size; i++) data[i] = section->data[i]; - return 1; + return SAVE_STATUS_OK; } else { - return 2; + return SAVE_STATUS_CORRUPT; } } else { - return 0; + return SAVE_STATUS_EMPTY; } } -static u8 DoReadFlashWholeSection(u8 sector, struct SaveSection *section) +// Return value always ignored +static bool8 DoReadFlashWholeSection(u8 sector, struct SaveSection *section) { ReadFlash(sector, 0, section->data, sizeof(struct SaveSection)); - return 1; + return TRUE; } static u16 CalculateChecksum(void *data, u16 size) @@ -638,19 +639,19 @@ static void UpdateSaveAddresses(void) { int i = 0; - gRamSaveSectionLocations[i].data = (void*)(gSaveBlock2Ptr) + gSaveSectionOffsets[i].toAdd; - gRamSaveSectionLocations[i].size = gSaveSectionOffsets[i].size; + gRamSaveSectionLocations[i].data = (void*)(gSaveBlock2Ptr) + sSaveSectionOffsets[i].toAdd; + gRamSaveSectionLocations[i].size = sSaveSectionOffsets[i].size; - for (i = 1; i < 5; i++) + for (i = SECTOR_ID_SAVEBLOCK1_START; i <= SECTOR_ID_SAVEBLOCK1_END; i++) { - gRamSaveSectionLocations[i].data = (void*)(gSaveBlock1Ptr) + gSaveSectionOffsets[i].toAdd; - gRamSaveSectionLocations[i].size = gSaveSectionOffsets[i].size; + gRamSaveSectionLocations[i].data = (void*)(gSaveBlock1Ptr) + sSaveSectionOffsets[i].toAdd; + gRamSaveSectionLocations[i].size = sSaveSectionOffsets[i].size; } - for (i = 5; i < 14; i++) + for (i = SECTOR_ID_PKMN_STORAGE_START; i <= SECTOR_ID_PKMN_STORAGE_END; i++) { - gRamSaveSectionLocations[i].data = (void*)(gPokemonStoragePtr) + gSaveSectionOffsets[i].toAdd; - gRamSaveSectionLocations[i].size = gSaveSectionOffsets[i].size; + gRamSaveSectionLocations[i].data = (void*)(gPokemonStoragePtr) + sSaveSectionOffsets[i].toAdd; + gRamSaveSectionLocations[i].size = sSaveSectionOffsets[i].size; i++;i--; // needed to match } @@ -673,36 +674,36 @@ u8 HandleSavingData(u8 saveType) if (GetGameStat(GAME_STAT_ENTERED_HOF) < 999) IncrementGameStat(GAME_STAT_ENTERED_HOF); SaveSerializedGame(); - save_write_to_flash(0xFFFF, gRamSaveSectionLocations); + SaveWriteToFlash(0xFFFF, gRamSaveSectionLocations); tempAddr = gDecompressionBuffer; - HandleWriteSectorNBytes(SECTOR_ID_HOF_1, tempAddr, 0xF80); - HandleWriteSectorNBytes(SECTOR_ID_HOF_2, tempAddr + 0xF80, 0xF80); + HandleWriteSectorNBytes(SECTOR_ID_HOF_1, tempAddr, SECTOR_DATA_SIZE); + HandleWriteSectorNBytes(SECTOR_ID_HOF_2, tempAddr + SECTOR_DATA_SIZE, SECTOR_DATA_SIZE); break; case SAVE_NORMAL: // normal save. also called by overwriting your own save. default: SaveSerializedGame(); - save_write_to_flash(0xFFFF, gRamSaveSectionLocations); + SaveWriteToFlash(0xFFFF, gRamSaveSectionLocations); break; case SAVE_LINK: // Link and Battle Frontier case SAVE_LINK2: // Unused SaveSerializedGame(); - for(i = 0; i < 5; i++) + for(i = SECTOR_ID_SAVEBLOCK2; i <= SECTOR_ID_SAVEBLOCK1_END; i++) ClearSaveData_2(i, gRamSaveSectionLocations); - for(i = 0; i < 5; i++) + for(i = SECTOR_ID_SAVEBLOCK2; i <= SECTOR_ID_SAVEBLOCK1_END; i++) sav12_xor_get(i, gRamSaveSectionLocations); break; // Support for Ereader was removed in Emerald. /* case EREADER_SAVE: // used in mossdeep "game corner" before/after battling old man e-reader trainer SaveSerializedGame(); - save_write_to_flash(0, gRamSaveSectionLocations); + SaveWriteToFlash(0, gRamSaveSectionLocations); break; */ case SAVE_OVERWRITE_DIFFERENT_FILE: for (i = SECTOR_ID_HOF_1; i < SECTORS_COUNT; i++) EraseFlashSector(i); // erase HOF. SaveSerializedGame(); - save_write_to_flash(0xFFFF, gRamSaveSectionLocations); + SaveWriteToFlash(0xFFFF, gRamSaveSectionLocations); break; } gTrainerHillVBlankCounter = backupVar; @@ -713,25 +714,25 @@ u8 TrySavingData(u8 saveType) { if (gFlashMemoryPresent != TRUE) { - gUnknown_03006294 = 0xFF; - return 0xFF; + gSaveAttemptStatus = SAVE_STATUS_ERROR; + return SAVE_STATUS_ERROR; } HandleSavingData(saveType); if (!gDamagedSaveSectors) { - gUnknown_03006294 = 1; - return 1; + gSaveAttemptStatus = SAVE_STATUS_OK; + return SAVE_STATUS_OK; } else { DoSaveFailedScreen(saveType); - gUnknown_03006294 = 0xFF; - return 0xFF; + gSaveAttemptStatus = SAVE_STATUS_ERROR; + return SAVE_STATUS_ERROR; } } -bool8 sub_8153380(void) // trade.s save +bool8 sub_8153380(void) // trade.c { if (gFlashMemoryPresent != TRUE) return TRUE; @@ -741,92 +742,92 @@ bool8 sub_8153380(void) // trade.s save return FALSE; } -bool8 sub_81533AC(void) // trade.s save +bool8 sub_81533AC(void) // trade.c { - u8 retVal = sub_81529D4(SECTOR_SAVE_SLOT_LENGTH, gRamSaveSectionLocations); + u8 status = sub_81529D4(SECTOR_SAVE_SLOT_LENGTH, gRamSaveSectionLocations); if (gDamagedSaveSectors) - DoSaveFailedScreen(0); - if (retVal == 0xFF) + DoSaveFailedScreen(SAVE_NORMAL); + if (status == SAVE_STATUS_ERROR) return TRUE; else return FALSE; } -u8 sub_81533E0(void) // trade.s save +bool8 sub_81533E0(void) // trade.c { sub_8152A34(SECTOR_SAVE_SLOT_LENGTH, gRamSaveSectionLocations); if (gDamagedSaveSectors) - DoSaveFailedScreen(0); - return 0; + DoSaveFailedScreen(SAVE_NORMAL); + return FALSE; } -u8 sub_8153408(void) // trade.s save +bool8 sub_8153408(void) // trade.c { sub_8152CAC(SECTOR_SAVE_SLOT_LENGTH, gRamSaveSectionLocations); if (gDamagedSaveSectors) - DoSaveFailedScreen(0); - return 0; + DoSaveFailedScreen(SAVE_NORMAL); + return FALSE; } u8 FullSaveGame(void) { if (gFlashMemoryPresent != TRUE) - return 1; + return TRUE; UpdateSaveAddresses(); SaveSerializedGame(); RestoreSaveBackupVars(gRamSaveSectionLocations); sub_8152A34(gUnknown_03006208 + 1, gRamSaveSectionLocations); - return 0; + return FALSE; } bool8 CheckSaveFile(void) { u8 retVal = FALSE; - u16 val = ++gUnknown_03006208; - if (val <= 4) + u16 sectorId = ++gUnknown_03006208; + if (sectorId <= SECTOR_ID_SAVEBLOCK1_END) { sub_8152A34(gUnknown_03006208 + 1, gRamSaveSectionLocations); - sub_8152D44(val, gRamSaveSectionLocations); + sub_8152D44(sectorId, gRamSaveSectionLocations); } else { - sub_8152D44(val, gRamSaveSectionLocations); + sub_8152D44(sectorId, gRamSaveSectionLocations); retVal = TRUE; } if (gDamagedSaveSectors) - DoSaveFailedScreen(1); + DoSaveFailedScreen(SAVE_LINK); return retVal; } -u8 Save_LoadGameData(u8 a1) +u8 Save_LoadGameData(u8 saveType) { - u8 result; + u8 status; if (gFlashMemoryPresent != TRUE) { - gSaveFileStatus = 4; - return 0xFF; + gSaveFileStatus = SAVE_STATUS_NO_FLASH; + return SAVE_STATUS_ERROR; } UpdateSaveAddresses(); - switch (a1) + switch (saveType) { - case 0: + case SAVE_NORMAL: default: - result = sub_8152DD0(0xFFFF, gRamSaveSectionLocations); + status = sub_8152DD0(0xFFFF, gRamSaveSectionLocations); LoadSerializedGame(); - gSaveFileStatus = result; + gSaveFileStatus = status; gGameContinueCallback = 0; break; - case 3: - result = sub_81530DC(0x1C, gDecompressionBuffer, 0xF80); - if(result == 1) - result = sub_81530DC(0x1D, gDecompressionBuffer + 0xF80, 0xF80); + case SAVE_HALL_OF_FAME: + status = sub_81530DC(SECTOR_ID_HOF_1, gDecompressionBuffer, SECTOR_DATA_SIZE); + if (status == SAVE_STATUS_OK) + status = sub_81530DC(SECTOR_ID_HOF_2, gDecompressionBuffer + SECTOR_DATA_SIZE, SECTOR_DATA_SIZE); break; } - return result; + return status; } u16 sub_815355C(void) @@ -836,7 +837,7 @@ u16 sub_815355C(void) savSection = gFastSaveSection = &gSaveDataBuffer; if (gFlashMemoryPresent != TRUE) - return 0; + return SAVE_STATUS_EMPTY; UpdateSaveAddresses(); GetSaveValidStatus(gRamSaveSectionLocations); v3 = SECTOR_SAVE_SLOT_LENGTH * (gSaveCounter % 2); @@ -849,7 +850,7 @@ u16 sub_815355C(void) savSection->data[12] + savSection->data[13]; } - return 0; + return SAVE_STATUS_EMPTY; } u32 TryReadSpecialSaveSection(u8 sector, u8* dst) @@ -859,17 +860,17 @@ u32 TryReadSpecialSaveSection(u8 sector, u8* dst) u8* savData; if (sector != SECTOR_ID_TRAINER_HILL && sector != SECTOR_ID_RECORDED_BATTLE) - return 0xFF; + return SAVE_STATUS_ERROR; ReadFlash(sector, 0, (u8 *)&gSaveDataBuffer, sizeof(struct SaveSection)); if (*(u32*)(&gSaveDataBuffer.data[0]) != SPECIAL_SECTION_SENTINEL) - return 0xFF; + return SAVE_STATUS_ERROR; // copies whole save section except u32 counter i = 0; size = 0xFFB; savData = &gSaveDataBuffer.data[4]; for (; i <= size; i++) dst[i] = savData[i]; - return 1; + return SAVE_STATUS_OK; } u32 TryWriteSpecialSaveSection(u8 sector, u8* src) @@ -880,7 +881,7 @@ u32 TryWriteSpecialSaveSection(u8 sector, u8* src) void* savDataBuffer; if (sector != SECTOR_ID_TRAINER_HILL && sector != SECTOR_ID_RECORDED_BATTLE) - return 0xFF; + return SAVE_STATUS_ERROR; savDataBuffer = &gSaveDataBuffer; *(u32*)(savDataBuffer) = SPECIAL_SECTION_SENTINEL; @@ -892,8 +893,8 @@ u32 TryWriteSpecialSaveSection(u8 sector, u8* src) for (; i <= size; i++) savData[i] = src[i]; if (ProgramFlashSectorAndVerify(sector, savDataBuffer) != 0) - return 0xFF; - return 1; + return SAVE_STATUS_ERROR; + return SAVE_STATUS_OK; } void sub_8153688(u8 taskId) diff --git a/src/start_menu.c b/src/start_menu.c index b9ba683220..a816f4f2f0 100644 --- a/src/start_menu.c +++ b/src/start_menu.c @@ -966,8 +966,8 @@ static u8 SaveConfirmInputCallback(void) case 0: // Yes switch (gSaveFileStatus) { - case 0: - case 2: + case SAVE_STATUS_EMPTY: + case SAVE_STATUS_CORRUPT: if (gDifferentSaveFile == FALSE) { sSaveDialogCallback = SaveFileExistsCallback; @@ -1059,14 +1059,10 @@ static u8 SaveDoSaveCallback(void) saveStatus = TrySavingData(SAVE_NORMAL); } - if (saveStatus == 1) // Save succeded - { + if (saveStatus == SAVE_STATUS_OK) ShowSaveMessage(gText_PlayerSavedGame, SaveSuccessCallback); - } - else // Save error - { + else ShowSaveMessage(gText_SaveError, SaveErrorCallback); - } SaveStartTimer(); return SAVE_IN_PROGRESS; From 0284014e0e53449f030cc6429e81de080a10bebf Mon Sep 17 00:00:00 2001 From: GriffinR Date: Sun, 12 Jan 2020 17:50:27 -0500 Subject: [PATCH 21/37] Add missing save status use --- src/main_menu.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main_menu.c b/src/main_menu.c index 9df4b5cb83..7c4e82c765 100644 --- a/src/main_menu.c +++ b/src/main_menu.c @@ -649,7 +649,7 @@ static void Task_MainMenuCheckSaveFile(u8 taskId) tMenuType++; gTasks[taskId].func = Task_MainMenuCheckBattery; break; - case 2: + case SAVE_STATUS_CORRUPT: CreateMainMenuErrorWindow(gText_SaveFileErased); tMenuType = HAS_NO_SAVED_GAME; gTasks[taskId].func = Task_WaitForSaveFileErrorWindow; From e497fc64e302f6c9257da5a9435d2905e2e780a8 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Sun, 12 Jan 2020 20:20:02 -0500 Subject: [PATCH 22/37] if_undefeated macro to if_not_defeated --- asm/macros/event.inc | 4 ++-- data/maps/DewfordTown_Gym/scripts.inc | 12 ++++++------ data/maps/PetalburgCity_Gym/scripts.inc | 20 ++++++++++---------- data/maps/Route109_SeashoreHouse/scripts.inc | 6 +++--- data/maps/Route111/scripts.inc | 2 +- data/maps/SSTidalCorridor/scripts.inc | 16 ++++++++-------- 6 files changed, 30 insertions(+), 30 deletions(-) diff --git a/asm/macros/event.inc b/asm/macros/event.inc index b268511489..298e8eb7c9 100644 --- a/asm/macros/event.inc +++ b/asm/macros/event.inc @@ -1653,7 +1653,7 @@ goto_if TRUE, \dest .endm - .macro goto_if_undefeated trainer:req, dest:req + .macro goto_if_not_defeated trainer:req, dest:req checktrainerflag \trainer goto_if FALSE, \dest .endm @@ -1663,7 +1663,7 @@ call_if TRUE, \dest .endm - .macro call_if_undefeated trainer:req, dest:req + .macro call_if_not_defeated trainer:req, dest:req checktrainerflag \trainer call_if FALSE, \dest .endm diff --git a/data/maps/DewfordTown_Gym/scripts.inc b/data/maps/DewfordTown_Gym/scripts.inc index c38bcc9062..c2da7e3359 100644 --- a/data/maps/DewfordTown_Gym/scripts.inc +++ b/data/maps/DewfordTown_Gym/scripts.inc @@ -123,22 +123,22 @@ DewfordTown_Gym_EventScript_AnimateFlashFullBrightness:: @ 81FC75D DewfordTown_Gym_EventScript_CountTrainersDefeated:: @ 81FC768 setvar VAR_0x8000, 0 - goto_if_undefeated TRAINER_TAKAO, DewfordTown_Gym_EventScript_CheckJocelyn + goto_if_not_defeated TRAINER_TAKAO, DewfordTown_Gym_EventScript_CheckJocelyn addvar VAR_0x8000, 1 DewfordTown_Gym_EventScript_CheckJocelyn:: @ 81FC77B - goto_if_undefeated TRAINER_JOCELYN, DewfordTown_Gym_EventScript_CheckLaura + goto_if_not_defeated TRAINER_JOCELYN, DewfordTown_Gym_EventScript_CheckLaura addvar VAR_0x8000, 1 DewfordTown_Gym_EventScript_CheckLaura:: @ 81FC789 - goto_if_undefeated TRAINER_LAURA, DewfordTown_Gym_EventScript_CheckBrenden + goto_if_not_defeated TRAINER_LAURA, DewfordTown_Gym_EventScript_CheckBrenden addvar VAR_0x8000, 1 DewfordTown_Gym_EventScript_CheckBrenden:: @ 81FC797 - goto_if_undefeated TRAINER_BRENDEN, DewfordTown_Gym_EventScript_CheckCristian + goto_if_not_defeated TRAINER_BRENDEN, DewfordTown_Gym_EventScript_CheckCristian addvar VAR_0x8000, 1 DewfordTown_Gym_EventScript_CheckCristian:: @ 81FC7A5 - goto_if_undefeated TRAINER_CRISTIAN, DewfordTown_Gym_EventScript_CheckLilith + goto_if_not_defeated TRAINER_CRISTIAN, DewfordTown_Gym_EventScript_CheckLilith addvar VAR_0x8000, 1 DewfordTown_Gym_EventScript_CheckLilith:: @ 81FC7B3 - goto_if_undefeated TRAINER_LILITH, DewfordTown_Gym_EventScript_StopCountingTrainers + goto_if_not_defeated TRAINER_LILITH, DewfordTown_Gym_EventScript_StopCountingTrainers addvar VAR_0x8000, 1 DewfordTown_Gym_EventScript_StopCountingTrainers:: @ 81FC7C1 return diff --git a/data/maps/PetalburgCity_Gym/scripts.inc b/data/maps/PetalburgCity_Gym/scripts.inc index e3b636a7eb..2b708a3864 100644 --- a/data/maps/PetalburgCity_Gym/scripts.inc +++ b/data/maps/PetalburgCity_Gym/scripts.inc @@ -823,7 +823,7 @@ PetalburgCity_Gym_EventScript_AccuracyRoomDoor:: @ 8205187 PetalburgCity_Gym_EventScript_ConfusionRoomDoor:: @ 82051BC lockall - goto_if_undefeated TRAINER_RANDALL, PetalburgCity_Gym_EventScript_DoorLocked + goto_if_not_defeated TRAINER_RANDALL, PetalburgCity_Gym_EventScript_DoorLocked setvar VAR_0x8008, 7 setvar VAR_0x8009, 46 msgbox PetalburgCity_Gym_Text_EnterConfusionRoom, MSGBOX_YESNO @@ -835,7 +835,7 @@ PetalburgCity_Gym_EventScript_ConfusionRoomDoor:: @ 82051BC PetalburgCity_Gym_EventScript_LeftDefenseRoomDoor:: @ 82051EF lockall - goto_if_undefeated TRAINER_RANDALL, PetalburgCity_Gym_EventScript_DoorLocked + goto_if_not_defeated TRAINER_RANDALL, PetalburgCity_Gym_EventScript_DoorLocked setvar VAR_0x8008, 1 setvar VAR_0x8009, 59 msgbox PetalburgCity_Gym_Text_EnterDefenseRoom, MSGBOX_YESNO @@ -847,7 +847,7 @@ PetalburgCity_Gym_EventScript_LeftDefenseRoomDoor:: @ 82051EF PetalburgCity_Gym_EventScript_RightDefenseRoomDoor:: @ 8205222 lockall - goto_if_undefeated TRAINER_MARY, PetalburgCity_Gym_EventScript_DoorLocked + goto_if_not_defeated TRAINER_MARY, PetalburgCity_Gym_EventScript_DoorLocked setvar VAR_0x8008, 7 setvar VAR_0x8009, 59 msgbox PetalburgCity_Gym_Text_EnterDefenseRoom, MSGBOX_YESNO @@ -859,7 +859,7 @@ PetalburgCity_Gym_EventScript_RightDefenseRoomDoor:: @ 8205222 PetalburgCity_Gym_EventScript_RecoveryRoomDoor:: @ 8205255 lockall - goto_if_undefeated TRAINER_MARY, PetalburgCity_Gym_EventScript_DoorLocked + goto_if_not_defeated TRAINER_MARY, PetalburgCity_Gym_EventScript_DoorLocked setvar VAR_0x8008, 1 setvar VAR_0x8009, 72 msgbox PetalburgCity_Gym_Text_EnterRecoveryRoom, MSGBOX_YESNO @@ -871,7 +871,7 @@ PetalburgCity_Gym_EventScript_RecoveryRoomDoor:: @ 8205255 PetalburgCity_Gym_EventScript_LeftStrengthRoomDoor:: @ 8205288 lockall - goto_if_undefeated TRAINER_PARKER, PetalburgCity_Gym_EventScript_DoorLocked + goto_if_not_defeated TRAINER_PARKER, PetalburgCity_Gym_EventScript_DoorLocked setvar VAR_0x8008, 1 setvar VAR_0x8009, 20 msgbox PetalburgCity_Gym_Text_EnterStrengthRoom, MSGBOX_YESNO @@ -883,7 +883,7 @@ PetalburgCity_Gym_EventScript_LeftStrengthRoomDoor:: @ 8205288 PetalburgCity_Gym_EventScript_RightStrengthRoomDoor:: @ 82052BB lockall - goto_if_undefeated TRAINER_ALEXIA, PetalburgCity_Gym_EventScript_DoorLocked + goto_if_not_defeated TRAINER_ALEXIA, PetalburgCity_Gym_EventScript_DoorLocked setvar VAR_0x8008, 7 setvar VAR_0x8009, 20 msgbox PetalburgCity_Gym_Text_EnterStrengthRoom, MSGBOX_YESNO @@ -895,7 +895,7 @@ PetalburgCity_Gym_EventScript_RightStrengthRoomDoor:: @ 82052BB PetalburgCity_Gym_EventScript_LeftOHKORoomDoor:: @ 82052EE lockall - goto_if_undefeated TRAINER_ALEXIA, PetalburgCity_Gym_EventScript_DoorLocked + goto_if_not_defeated TRAINER_ALEXIA, PetalburgCity_Gym_EventScript_DoorLocked setvar VAR_0x8008, 1 setvar VAR_0x8009, 33 msgbox PetalburgCity_Gym_Text_EnterOHKORoom, MSGBOX_YESNO @@ -907,7 +907,7 @@ PetalburgCity_Gym_EventScript_LeftOHKORoomDoor:: @ 82052EE PetalburgCity_Gym_EventScript_RightOHKORoomDoor:: @ 8205321 lockall - goto_if_undefeated TRAINER_GEORGE, PetalburgCity_Gym_EventScript_DoorLocked + goto_if_not_defeated TRAINER_GEORGE, PetalburgCity_Gym_EventScript_DoorLocked setvar VAR_0x8008, 7 setvar VAR_0x8009, 33 msgbox PetalburgCity_Gym_Text_EnterOHKORoom, MSGBOX_YESNO @@ -919,7 +919,7 @@ PetalburgCity_Gym_EventScript_RightOHKORoomDoor:: @ 8205321 PetalburgCity_Gym_EventScript_LeftGymLeadersRoomDoor:: @ 8205354 lockall - goto_if_undefeated TRAINER_JODY, PetalburgCity_Gym_EventScript_DoorLocked + goto_if_not_defeated TRAINER_JODY, PetalburgCity_Gym_EventScript_DoorLocked setvar VAR_0x8008, 1 setvar VAR_0x8009, 7 msgbox PetalburgCity_Gym_Text_EnterGymLeadersRoom, MSGBOX_YESNO @@ -931,7 +931,7 @@ PetalburgCity_Gym_EventScript_LeftGymLeadersRoomDoor:: @ 8205354 PetalburgCity_Gym_EventScript_RightGymLeadersRoomDoor:: @ 8205387 lockall - goto_if_undefeated TRAINER_BERKE, PetalburgCity_Gym_EventScript_DoorLocked + goto_if_not_defeated TRAINER_BERKE, PetalburgCity_Gym_EventScript_DoorLocked setvar VAR_0x8008, 7 setvar VAR_0x8009, 7 msgbox PetalburgCity_Gym_Text_EnterGymLeadersRoom, MSGBOX_YESNO diff --git a/data/maps/Route109_SeashoreHouse/scripts.inc b/data/maps/Route109_SeashoreHouse/scripts.inc index 3a2c70c03b..641c469e17 100644 --- a/data/maps/Route109_SeashoreHouse/scripts.inc +++ b/data/maps/Route109_SeashoreHouse/scripts.inc @@ -89,9 +89,9 @@ Route109_SeashoreHouse_EventScript_Simon:: @ 8269518 end Route109_SeashoreHouse_EventScript_CheckTrainersCompletion:: @ 8269533 - goto_if_undefeated TRAINER_DWAYNE, Route109_SeashoreHouse_EventScript_TrainersNotCompleted - goto_if_undefeated TRAINER_JOHANNA, Route109_SeashoreHouse_EventScript_TrainersNotCompleted - goto_if_undefeated TRAINER_SIMON, Route109_SeashoreHouse_EventScript_TrainersNotCompleted + goto_if_not_defeated TRAINER_DWAYNE, Route109_SeashoreHouse_EventScript_TrainersNotCompleted + goto_if_not_defeated TRAINER_JOHANNA, Route109_SeashoreHouse_EventScript_TrainersNotCompleted + goto_if_not_defeated TRAINER_SIMON, Route109_SeashoreHouse_EventScript_TrainersNotCompleted setflag FLAG_DEFEATED_SEASHORE_HOUSE release end diff --git a/data/maps/Route111/scripts.inc b/data/maps/Route111/scripts.inc index e905508de7..5971dc7f95 100644 --- a/data/maps/Route111/scripts.inc +++ b/data/maps/Route111/scripts.inc @@ -48,7 +48,7 @@ Route111_OnTransition: @ 81F0D87 call_if_eq Route111_EventScript_SetMirageTowerGone call Route111_EventScript_CheckSetSandstorm call GabbyAndTy_EventScript_UpdateLocation - goto_if_undefeated TRAINER_VICKY, Route111_EventScript_SetWinstratesNotDefeated + goto_if_not_defeated TRAINER_VICKY, Route111_EventScript_SetWinstratesNotDefeated end Route111_EventScript_SetFallingPlayerGfx:: @ 81F0DC2 diff --git a/data/maps/SSTidalCorridor/scripts.inc b/data/maps/SSTidalCorridor/scripts.inc index 6673287255..a276be20f8 100644 --- a/data/maps/SSTidalCorridor/scripts.inc +++ b/data/maps/SSTidalCorridor/scripts.inc @@ -174,14 +174,14 @@ SSTidalCorridor_EventScript_EnjoyYourCruise:: @ 823C1BD end SSTidalCorridor_EventScript_CheckIfTrainersDefeated:: @ 823C1C7 - goto_if_undefeated TRAINER_PHILLIP, SSTidalCorridor_EventScript_TrainerNotDefeated - goto_if_undefeated TRAINER_LEONARD, SSTidalCorridor_EventScript_TrainerNotDefeated - goto_if_undefeated TRAINER_COLTON, SSTidalCorridor_EventScript_TrainerNotDefeated - goto_if_undefeated TRAINER_MICAH, SSTidalCorridor_EventScript_TrainerNotDefeated - goto_if_undefeated TRAINER_THOMAS, SSTidalCorridor_EventScript_TrainerNotDefeated - goto_if_undefeated TRAINER_LEA_AND_JED, SSTidalCorridor_EventScript_TrainerNotDefeated - goto_if_undefeated TRAINER_GARRET, SSTidalCorridor_EventScript_TrainerNotDefeated - goto_if_undefeated TRAINER_NAOMI, SSTidalCorridor_EventScript_TrainerNotDefeated + goto_if_not_defeated TRAINER_PHILLIP, SSTidalCorridor_EventScript_TrainerNotDefeated + goto_if_not_defeated TRAINER_LEONARD, SSTidalCorridor_EventScript_TrainerNotDefeated + goto_if_not_defeated TRAINER_COLTON, SSTidalCorridor_EventScript_TrainerNotDefeated + goto_if_not_defeated TRAINER_MICAH, SSTidalCorridor_EventScript_TrainerNotDefeated + goto_if_not_defeated TRAINER_THOMAS, SSTidalCorridor_EventScript_TrainerNotDefeated + goto_if_not_defeated TRAINER_LEA_AND_JED, SSTidalCorridor_EventScript_TrainerNotDefeated + goto_if_not_defeated TRAINER_GARRET, SSTidalCorridor_EventScript_TrainerNotDefeated + goto_if_not_defeated TRAINER_NAOMI, SSTidalCorridor_EventScript_TrainerNotDefeated setflag FLAG_DEFEATED_SS_TIDAL_TRAINERS goto SSTidalCorridor_EventScript_EnjoyYourCruise return From 6a470ddfdaf4480190792823464fcc05df8704f7 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Wed, 8 Jan 2020 04:26:26 -0500 Subject: [PATCH 23/37] Some script clean up, document secret base secrets show --- .../scripts.inc | 507 ------------------ .../scripts.inc | 4 +- data/maps/LilycoveCity_Harbor/scripts.inc | 3 +- data/maps/MtChimney/scripts.inc | 45 +- data/maps/PetalburgCity/scripts.inc | 3 +- data/maps/PetalburgCity_Gym/scripts.inc | 3 +- data/maps/Route128/scripts.inc | 6 +- .../RustboroCity_DevonCorp_3F/scripts.inc | 3 +- data/maps/RusturfTunnel/scripts.inc | 9 +- data/maps/SeafloorCavern_Room9/scripts.inc | 6 +- data/maps/SlateportCity/scripts.inc | 3 +- .../scripts.inc | 3 +- data/scripts/secret_base.inc | 42 +- data/scripts/shared_secret_base.inc | 20 +- data/specials.inc | 36 +- data/text/tv.inc | 86 +-- include/battle_tower.h | 2 +- include/constants/metatile_labels.h | 218 +++++++- include/constants/tv.h | 88 +++ include/event_scripts.h | 86 +-- include/fldeff_misc.h | 2 +- include/link.h | 2 +- include/secret_base.h | 10 +- include/tv.h | 4 +- src/battle_tower.c | 6 +- src/cable_club.c | 7 +- src/decoration.c | 3 +- src/field_control_avatar.c | 8 +- src/fldeff_misc.c | 84 +-- src/item.c | 3 +- src/link.c | 5 +- src/mevent_news.c | 1 + src/overworld.c | 2 +- src/script_pokemon_util_80F87D8.c | 40 +- src/secret_base.c | 482 ++++++++--------- src/tv.c | 375 +++++-------- 36 files changed, 920 insertions(+), 1287 deletions(-) delete mode 100644 data/maps/BattleFrontier_BattleTowerBattleRoom2/scripts.inc diff --git a/data/maps/BattleFrontier_BattleTowerBattleRoom2/scripts.inc b/data/maps/BattleFrontier_BattleTowerBattleRoom2/scripts.inc deleted file mode 100644 index 6d7bb156f5..0000000000 --- a/data/maps/BattleFrontier_BattleTowerBattleRoom2/scripts.inc +++ /dev/null @@ -1,507 +0,0 @@ -BattleFrontier_BattleTowerBattleRoom2_MapScripts:: @ 8248EE8 - map_script MAP_SCRIPT_ON_TRANSITION, BattleFrontier_BattleTowerBattleRoom2_MapScript1_248EF8 - map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, BattleFrontier_BattleTowerBattleRoom2_MapScript2_248F33 - map_script MAP_SCRIPT_ON_FRAME_TABLE, BattleFrontier_BattleTowerBattleRoom2_MapScript2_248F43 - .byte 0 - -BattleFrontier_BattleTowerBattleRoom2_MapScript1_248EF8: @ 8248EF8 - compare VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_MULTIS - call_if_eq BattleFrontier_BattleTowerBattleRoom2_EventScript_248F0F - compare VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_LINK_MULTIS - call_if_eq BattleFrontier_BattleTowerBattleRoom2_EventScript_248F2F - end - -BattleFrontier_BattleTowerBattleRoom2_EventScript_248F0F:: @ 8248F0F - setvar VAR_0x8004, BATTLE_TOWER_FUNC_14 - special CallBattleTowerFunc - checkplayergender - compare VAR_RESULT, FEMALE - goto_if_eq BattleFrontier_BattleTowerBattleRoom2_EventScript_248F29 - setvar VAR_OBJ_GFX_ID_F, EVENT_OBJ_GFX_BRENDAN_NORMAL - return - -BattleFrontier_BattleTowerBattleRoom2_EventScript_248F29:: @ 8248F29 - setvar VAR_OBJ_GFX_ID_F, EVENT_OBJ_GFX_MAY_NORMAL - return - -BattleFrontier_BattleTowerBattleRoom2_EventScript_248F2F:: @ 8248F2F - special SetBattleTowerLinkPlayerGfx - return - -BattleFrontier_BattleTowerBattleRoom2_MapScript2_248F33: @ 8248F33 - map_script_2 VAR_TEMP_1, 0, BattleFrontier_BattleTowerBattleRoom2_EventScript_248F3D - .2byte 0 - -BattleFrontier_BattleTowerBattleRoom2_EventScript_248F3D:: @ 8248F3D - hideobjectat EVENT_OBJ_ID_PLAYER, MAP_BATTLE_FRONTIER_BATTLE_TOWER_BATTLE_ROOM2 - end - -BattleFrontier_BattleTowerBattleRoom2_MapScript2_248F43: @ 8248F43 - map_script_2 VAR_TEMP_0, 0, BattleFrontier_BattleTowerBattleRoom2_EventScript_248F4D - .2byte 0 - -BattleFrontier_BattleTowerBattleRoom2_EventScript_248F4D:: @ 8248F4D - setvar VAR_TEMP_0, 1 - applymovement 5, BattleFrontier_BattleTowerBattleRoom2_Movement_249518 - applymovement 6, BattleFrontier_BattleTowerBattleRoom2_Movement_24951E - waitmovement 0 - frontier_get FRONTIER_DATA_BATTLE_NUM - compare VAR_RESULT, 0 - goto_if_eq BattleFrontier_BattleTowerBattleRoom2_EventScript_248FB4 - applymovement 2, BattleFrontier_BattleTowerBattleRoom2_Movement_24953E - applymovement 3, BattleFrontier_BattleTowerBattleRoom2_Movement_24953E - waitmovement 0 - applymovement 5, BattleFrontier_BattleTowerBattleRoom2_Movement_249524 - applymovement 6, BattleFrontier_BattleTowerBattleRoom2_Movement_249524 - waitmovement 0 - frontier_set FRONTIER_DATA_6, 1 - goto BattleFrontier_BattleTowerBattleRoom2_EventScript_249143 - -BattleFrontier_BattleTowerBattleRoom2_EventScript_248FB4:: @ 8248FB4 - tower_setopponent - addobject 1 - addobject 4 - applymovement 1, BattleFrontier_BattleTowerBattleRoom2_Movement_249528 - applymovement 4, BattleFrontier_BattleTowerBattleRoom2_Movement_24952E - waitmovement 0 - compare VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_LINK_MULTIS - goto_if_eq BattleFrontier_BattleTowerBattleRoom2_EventScript_249026 - tower_getopponentintro 0 - delay 15 - applymovement 1, BattleFrontier_BattleTowerBattleRoom2_Movement_249545 - waitmovement 0 - msgbox gStringVar4, MSGBOX_DEFAULT - waitmessage - tower_getopponentintro 1 - applymovement 4, BattleFrontier_BattleTowerBattleRoom2_Movement_249545 - waitmovement 0 - msgbox gStringVar4, MSGBOX_DEFAULT - waitmessage - goto BattleFrontier_BattleTowerBattleRoom2_EventScript_249069 - -BattleFrontier_BattleTowerBattleRoom2_EventScript_249026:: @ 8249026 - tower_getopponentintro 0 - delay 15 - applymovement 1, BattleFrontier_BattleTowerBattleRoom2_Movement_249545 - waitmovement 0 - messageautoscroll gStringVar4 - waitmessage - delay 48 - tower_getopponentintro 1 - applymovement 4, BattleFrontier_BattleTowerBattleRoom2_Movement_249545 - waitmovement 0 - messageautoscroll gStringVar4 - waitmessage - delay 48 - -BattleFrontier_BattleTowerBattleRoom2_EventScript_249069:: @ 8249069 - call BattleFrontier_BattleTowerBattleRoom2_EventScript_24210E - switch VAR_RESULT - case 1, BattleFrontier_BattleTowerBattleRoom2_EventScript_2490AA - -BattleFrontier_BattleTowerBattleRoom2_EventScript_24907E:: @ 824907E - frontier_set FRONTIER_DATA_CHALLENGE_STATUS, CHALLENGE_STATUS_LOST - tower_set TOWER_DATA_LVL_MODE - setvar VAR_0x8004, 3 - special Script_TryGainNewFanFromCounter - goto BattleFrontier_BattleTowerBattleRoom2_EventScript_2421B8 - -BattleFrontier_BattleTowerBattleRoom2_EventScript_2490AA:: @ 82490AA - call BattleFrontier_EventScript_IncrementWinStreak - tower_setbattlewon - switch VAR_RESULT - case 7, BattleFrontier_BattleTowerBattleRoom2_EventScript_2492AF - applymovement 4, BattleFrontier_BattleTowerBattleRoom2_Movement_249534 - applymovement 1, BattleFrontier_BattleTowerBattleRoom2_Movement_249539 - waitmovement 0 - removeobject 1 - removeobject 4 - applymovement 2, BattleFrontier_BattleTowerBattleRoom2_Movement_24953E - applymovement 3, BattleFrontier_BattleTowerBattleRoom2_Movement_24953E - waitmovement 0 - applymovement 5, BattleFrontier_BattleTowerBattleRoom2_Movement_249524 - applymovement 6, BattleFrontier_BattleTowerBattleRoom2_Movement_249524 - waitmovement 0 - compare VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_LINK_MULTIS - goto_if_eq BattleFrontier_BattleTowerBattleRoom2_EventScript_249118 - msgbox BattleFrontier_BattleTowerBattleRoom2_Text_242217, MSGBOX_DEFAULT - goto BattleFrontier_BattleTowerBattleRoom2_EventScript_249121 - -BattleFrontier_BattleTowerBattleRoom2_EventScript_249118:: @ 8249118 - messageautoscroll BattleFrontier_BattleTowerBattleRoom2_Text_242217 - waitmessage - delay 48 - -BattleFrontier_BattleTowerBattleRoom2_EventScript_249121:: @ 8249121 - special LoadPlayerParty - frontier_setpartyorder FRONTIER_MULTI_PARTY_SIZE - compare VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_LINK_MULTIS - call_if_eq BattleFrontier_BattleTowerBattleRoom2_EventScript_249514 - playfanfare MUS_ME_ASA - waitfanfare - special HealPlayerParty - -BattleFrontier_BattleTowerBattleRoom2_EventScript_249143:: @ 8249143 - frontier_get FRONTIER_DATA_BATTLE_NUM - call BattleFrontier_BattleTowerBattleRoom2_EventScript_2492FD - compare VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_LINK_MULTIS - goto_if_eq BattleFrontier_BattleTowerBattleRoom2_EventScript_249283 - call BattleFrontier_BattleTowerBattleRoom2_EventScript_23E8E0 - compare VAR_RESULT, 1 - goto_if_eq BattleFrontier_BattleTowerBattleRoom2_EventScript_2491B1 - multichoice 19, 4, MULTI_GO_ON_RECORD_REST_RETIRE, 1 - switch VAR_RESULT - case 0, BattleFrontier_BattleTowerBattleRoom2_EventScript_249283 - case 1, BattleFrontier_BattleTowerBattleRoom2_EventScript_2491E7 - case 2, BattleFrontier_BattleTowerBattleRoom2_EventScript_249223 - case 3, BattleFrontier_BattleTowerBattleRoom2_EventScript_249251 - case MULTI_B_PRESSED, BattleFrontier_BattleTowerBattleRoom2_EventScript_249143 - -BattleFrontier_BattleTowerBattleRoom2_EventScript_2491B1:: @ 82491B1 - multichoice 20, 6, MULTI_GO_ON_REST_RETIRE, 1 - switch VAR_RESULT - case 0, BattleFrontier_BattleTowerBattleRoom2_EventScript_249283 - case 1, BattleFrontier_BattleTowerBattleRoom2_EventScript_249223 - case 2, BattleFrontier_BattleTowerBattleRoom2_EventScript_249251 - case MULTI_B_PRESSED, BattleFrontier_BattleTowerBattleRoom2_EventScript_249143 - -BattleFrontier_BattleTowerBattleRoom2_EventScript_2491E7:: @ 82491E7 - message BattleFrontier_BattleTowerBattleRoom2_Text_2423A3 - waitmessage - multichoicedefault 20, 8, MULTI_YESNO, 1, 0 - switch VAR_RESULT - case 1, BattleFrontier_BattleTowerBattleRoom2_EventScript_249143 - case 0, BattleFrontier_BattleTowerBattleRoom2_EventScript_249219 - case MULTI_B_PRESSED, BattleFrontier_BattleTowerBattleRoom2_EventScript_249143 - -BattleFrontier_BattleTowerBattleRoom2_EventScript_249219:: @ 8249219 - call BattleFrontier_EventScript_SaveBattle - goto BattleFrontier_BattleTowerBattleRoom2_EventScript_249143 - -BattleFrontier_BattleTowerBattleRoom2_EventScript_249223:: @ 8249223 - msgbox BattleFrontier_BattleTowerBattleRoom2_Text_2423FC, MSGBOX_YESNO - switch VAR_RESULT - case NO, BattleFrontier_BattleTowerBattleRoom2_EventScript_249143 - case YES, BattleFrontier_BattleTowerBattleRoom2_EventScript_2492DB - case MULTI_B_PRESSED, BattleFrontier_BattleTowerBattleRoom2_EventScript_249143 - -BattleFrontier_BattleTowerBattleRoom2_EventScript_249251:: @ 8249251 - message BattleFrontier_BattleTowerBattleRoom2_Text_24244C - waitmessage - multichoicedefault 20, 8, MULTI_YESNO, 1, 0 - switch VAR_RESULT - case 1, BattleFrontier_BattleTowerBattleRoom2_EventScript_249143 - case 0, BattleFrontier_BattleTowerBattleRoom2_EventScript_24907E - case MULTI_B_PRESSED, BattleFrontier_BattleTowerBattleRoom2_EventScript_249143 - -BattleFrontier_BattleTowerBattleRoom2_EventScript_249283:: @ 8249283 - closemessage - clearflag FLAG_TEMP_2 - applymovement 5, BattleFrontier_BattleTowerBattleRoom2_Movement_249526 - applymovement 6, BattleFrontier_BattleTowerBattleRoom2_Movement_249526 - waitmovement 0 - applymovement 2, BattleFrontier_BattleTowerBattleRoom2_Movement_249541 - applymovement 3, BattleFrontier_BattleTowerBattleRoom2_Movement_249541 - waitmovement 0 - goto BattleFrontier_BattleTowerBattleRoom2_EventScript_248FB4 - end - -BattleFrontier_BattleTowerBattleRoom2_EventScript_2492AF:: @ 82492AF - frontier_set FRONTIER_DATA_CHALLENGE_STATUS, CHALLENGE_STATUS_WON - tower_set TOWER_DATA_LVL_MODE - setvar VAR_0x8004, 3 - special Script_TryGainNewFanFromCounter - goto BattleFrontier_BattleTowerBattleRoom2_EventScript_2421B8 - -BattleFrontier_BattleTowerBattleRoom2_EventScript_2492DB:: @ 82492DB - message BattleFrontier_BattleTowerBattleRoom2_Text_242426 - waitmessage - tower_save CHALLENGE_STATUS_PAUSED - playse SE_SAVE - waitse - fadescreen FADE_TO_BLACK - frontier_reset - end - -BattleFrontier_BattleTowerBattleRoom2_EventScript_2492FD:: @ 82492FD - compare VAR_FRONTIER_BATTLE_MODE, FRONTIER_MODE_LINK_MULTIS - goto_if_eq BattleFrontier_BattleTowerBattleRoom2_EventScript_24937E - copyvar VAR_TEMP_F, VAR_RESULT - switch VAR_TEMP_F - case 1, BattleFrontier_BattleTowerBattleRoom2_EventScript_249354 - case 2, BattleFrontier_BattleTowerBattleRoom2_EventScript_24935B - case 3, BattleFrontier_BattleTowerBattleRoom2_EventScript_249362 - case 4, BattleFrontier_BattleTowerBattleRoom2_EventScript_249369 - case 5, BattleFrontier_BattleTowerBattleRoom2_EventScript_249370 - case 6, BattleFrontier_BattleTowerBattleRoom2_EventScript_249377 - -BattleFrontier_BattleTowerBattleRoom2_EventScript_249354:: @ 8249354 - message BattleFrontier_BattleTowerBattleRoom2_Text_249547 - waitmessage - return - -BattleFrontier_BattleTowerBattleRoom2_EventScript_24935B:: @ 824935B - message BattleFrontier_BattleTowerBattleRoom2_Text_249578 - waitmessage - return - -BattleFrontier_BattleTowerBattleRoom2_EventScript_249362:: @ 8249362 - message BattleFrontier_BattleTowerBattleRoom2_Text_2495A9 - waitmessage - return - -BattleFrontier_BattleTowerBattleRoom2_EventScript_249369:: @ 8249369 - message BattleFrontier_BattleTowerBattleRoom2_Text_2495DA - waitmessage - return - -BattleFrontier_BattleTowerBattleRoom2_EventScript_249370:: @ 8249370 - message BattleFrontier_BattleTowerBattleRoom2_Text_24960B - waitmessage - return - -BattleFrontier_BattleTowerBattleRoom2_EventScript_249377:: @ 8249377 - message BattleFrontier_BattleTowerBattleRoom2_Text_24963C - waitmessage - return - -BattleFrontier_BattleTowerBattleRoom2_EventScript_24937E:: @ 824937E - copyvar VAR_TEMP_F, VAR_RESULT - switch VAR_TEMP_F - case 1, BattleFrontier_BattleTowerBattleRoom2_EventScript_2493CA - case 2, BattleFrontier_BattleTowerBattleRoom2_EventScript_2493D6 - case 3, BattleFrontier_BattleTowerBattleRoom2_EventScript_2493E2 - case 4, BattleFrontier_BattleTowerBattleRoom2_EventScript_2493EE - case 5, BattleFrontier_BattleTowerBattleRoom2_EventScript_2493FA - case 6, BattleFrontier_BattleTowerBattleRoom2_EventScript_249406 - -BattleFrontier_BattleTowerBattleRoom2_EventScript_2493CA:: @ 82493CA - message BattleFrontier_BattleTowerBattleRoom2_Text_249547 - waitmessage - goto BattleFrontier_BattleTowerBattleRoom2_EventScript_249417 - end - -BattleFrontier_BattleTowerBattleRoom2_EventScript_2493D6:: @ 82493D6 - message BattleFrontier_BattleTowerBattleRoom2_Text_249578 - waitmessage - goto BattleFrontier_BattleTowerBattleRoom2_EventScript_249417 - end - -BattleFrontier_BattleTowerBattleRoom2_EventScript_2493E2:: @ 82493E2 - message BattleFrontier_BattleTowerBattleRoom2_Text_2495A9 - waitmessage - goto BattleFrontier_BattleTowerBattleRoom2_EventScript_249417 - end - -BattleFrontier_BattleTowerBattleRoom2_EventScript_2493EE:: @ 82493EE - message BattleFrontier_BattleTowerBattleRoom2_Text_2495DA - waitmessage - goto BattleFrontier_BattleTowerBattleRoom2_EventScript_249417 - end - -BattleFrontier_BattleTowerBattleRoom2_EventScript_2493FA:: @ 82493FA - message BattleFrontier_BattleTowerBattleRoom2_Text_24960B - waitmessage - goto BattleFrontier_BattleTowerBattleRoom2_EventScript_249417 - end - -BattleFrontier_BattleTowerBattleRoom2_EventScript_249406:: @ 8249406 - message BattleFrontier_BattleTowerBattleRoom2_Text_24963C - waitmessage - goto BattleFrontier_BattleTowerBattleRoom2_EventScript_249417 - end - -BattleFrontier_BattleTowerBattleRoom2_EventScript_249412:: @ 8249412 - waitmessage - delay 48 - return - -BattleFrontier_BattleTowerBattleRoom2_EventScript_249417:: @ 8249417 - goto_if_set FLAG_TEMP_2, BattleFrontier_BattleTowerBattleRoom2_EventScript_249457 - multichoice 19, 6, MULTI_GO_ON_RECORD_RETIRE, 1 - switch VAR_RESULT - case 0, BattleFrontier_BattleTowerBattleRoom2_EventScript_249483 - case 1, BattleFrontier_BattleTowerBattleRoom2_EventScript_2494A8 - case 2, BattleFrontier_BattleTowerBattleRoom2_EventScript_2494DD - case MULTI_B_PRESSED, BattleFrontier_BattleTowerBattleRoom2_EventScript_2494DD - end - -BattleFrontier_BattleTowerBattleRoom2_EventScript_249457:: @ 8249457 - multichoice 20, 8, MULTI_GO_ON_RETIRE, 1 - switch VAR_RESULT - case 0, BattleFrontier_BattleTowerBattleRoom2_EventScript_249483 - case 1, BattleFrontier_BattleTowerBattleRoom2_EventScript_2494DD - case MULTI_B_PRESSED, BattleFrontier_BattleTowerBattleRoom2_EventScript_2494DD - end - -BattleFrontier_BattleTowerBattleRoom2_EventScript_249483:: @ 8249483 - setvar VAR_0x8004, 0 - setvar VAR_0x8005, 0 - message gText_LinkStandby3 - waitmessage - special sub_813B568 - waitstate - compare VAR_RESULT, 0 - goto_if_ne BattleFrontier_BattleTowerBattleRoom2_EventScript_24907E - goto BattleFrontier_BattleTowerBattleRoom2_EventScript_249412 - end - -BattleFrontier_BattleTowerBattleRoom2_EventScript_2494A8:: @ 82494A8 - message BattleFrontier_BattleTowerBattleRoom2_Text_2423A3 - waitmessage - multichoicedefault 20, 8, MULTI_YESNO, 1, 0 - switch VAR_RESULT - case 1, BattleFrontier_BattleTowerBattleRoom2_EventScript_249143 - case MULTI_B_PRESSED, BattleFrontier_BattleTowerBattleRoom2_EventScript_249143 - call BattleFrontier_EventScript_SaveBattle - setflag FLAG_TEMP_2 - goto BattleFrontier_BattleTowerBattleRoom2_EventScript_249143 - end - -BattleFrontier_BattleTowerBattleRoom2_EventScript_2494DD:: @ 82494DD - message BattleFrontier_BattleTowerBattleRoom2_Text_24244C - waitmessage - multichoicedefault 20, 8, MULTI_YESNO, 1, 0 - compare VAR_RESULT, 0 - goto_if_eq BattleFrontier_BattleTowerBattleRoom2_EventScript_2494FA - goto BattleFrontier_BattleTowerBattleRoom2_EventScript_249143 - end - -BattleFrontier_BattleTowerBattleRoom2_EventScript_2494FA:: @ 82494FA - setvar VAR_0x8004, 1 - setvar VAR_0x8005, 0 - message gText_LinkStandby3 - waitmessage - special sub_813B568 - waitstate - goto BattleFrontier_BattleTowerBattleRoom2_EventScript_24907E - end - -BattleFrontier_BattleTowerBattleRoom2_EventScript_249514:: @ 8249514 - special sub_813B534 - return - -BattleFrontier_BattleTowerBattleRoom2_Movement_249518: @ 8249518 - walk_up - walk_up - walk_up - walk_up - face_right - step_end - -BattleFrontier_BattleTowerBattleRoom2_Movement_24951E: @ 824951E - walk_left - walk_up - walk_up - walk_up - face_right - step_end - -BattleFrontier_BattleTowerBattleRoom2_Movement_249524: @ 8249524 - face_left - step_end - -BattleFrontier_BattleTowerBattleRoom2_Movement_249526: @ 8249526 - walk_in_place_fastest_right - step_end - -BattleFrontier_BattleTowerBattleRoom2_Movement_249528: @ 8249528 - walk_down - walk_down - walk_down - walk_down - face_left - step_end - -BattleFrontier_BattleTowerBattleRoom2_Movement_24952E: @ 824952E - walk_right - walk_down - walk_down - walk_down - face_left - step_end - -BattleFrontier_BattleTowerBattleRoom2_Movement_249534: @ 8249534 - walk_up - walk_up - walk_up - set_invisible - step_end - -BattleFrontier_BattleTowerBattleRoom2_Movement_249539: @ 8249539 - walk_up - walk_up - walk_up - walk_up - step_end - -BattleFrontier_BattleTowerBattleRoom2_Movement_24953E: @ 824953E - walk_right - walk_right - step_end - -BattleFrontier_BattleTowerBattleRoom2_Movement_249541: @ 8249541 - walk_left - walk_left - walk_in_place_fastest_right - step_end - -BattleFrontier_BattleTowerBattleRoom2_Movement_249545: @ 8249545 - walk_in_place_left - step_end - -BattleFrontier_BattleTowerBattleRoom2_Text_249547: @ 8249547 - .string "The 2nd set of opponents is next.\n" - .string "Are you ready?$" - -BattleFrontier_BattleTowerBattleRoom2_Text_249578: @ 8249578 - .string "The 3rd set of opponents is next.\n" - .string "Are you ready?$" - -BattleFrontier_BattleTowerBattleRoom2_Text_2495A9: @ 82495A9 - .string "The 4th set of opponents is next.\n" - .string "Are you ready?$" - -BattleFrontier_BattleTowerBattleRoom2_Text_2495DA: @ 82495DA - .string "The 5th set of opponents is next.\n" - .string "Are you ready?$" - -BattleFrontier_BattleTowerBattleRoom2_Text_24960B: @ 824960B - .string "The 6th set of opponents is next.\n" - .string "Are you ready?$" - -BattleFrontier_BattleTowerBattleRoom2_Text_24963C: @ 824963C - .string "The 7th set of opponents is next.\n" - .string "Are you ready?$" - -BattleFrontier_BattleTowerBattleRoom2_Text_24966D: @ 824966D - .string "The 2nd set of opponents is next.\n" - .string "Do your best!$" - -BattleFrontier_BattleTowerBattleRoom2_Text_24969D: @ 824969D - .string "The 3rd set of opponents is next.\n" - .string "Do your best!$" - -BattleFrontier_BattleTowerBattleRoom2_Text_2496CD: @ 82496CD - .string "The 4th set of opponents is next.\n" - .string "Do your best!$" - -BattleFrontier_BattleTowerBattleRoom2_Text_2496FD: @ 82496FD - .string "The 5th set of opponents is next.\n" - .string "Do your best!$" - -BattleFrontier_BattleTowerBattleRoom2_Text_24972D: @ 824972D - .string "The 6th set of opponents is next.\n" - .string "Do your best!$" - -BattleFrontier_BattleTowerBattleRoom2_Text_24975D: @ 824975D - .string "The 7th set of opponents is next.\n" - .string "Do your best!$" - -gText_LinkStandby3:: @ 824978D - .string "Link standby…$" - -gText_YourPartnerHasRetired:: @ 824979B - .string "Your partner has retired.\p" - .string "Your BATTLE ROOM challenge\n" - .string "will be canceled.$" diff --git a/data/maps/BattleFrontier_BattleTowerLobby/scripts.inc b/data/maps/BattleFrontier_BattleTowerLobby/scripts.inc index b3fd57a0a7..297f05fb07 100644 --- a/data/maps/BattleFrontier_BattleTowerLobby/scripts.inc +++ b/data/maps/BattleFrontier_BattleTowerLobby/scripts.inc @@ -6,7 +6,7 @@ BattleFrontier_BattleTowerLobby_MapScripts:: @ 823E67B .byte 0 BattleFrontier_BattleTowerLobby_OnResume: @ 823E690 - special sub_81653CC + special TryHideBattleTowerReporter end BattleFrontier_BattleTowerLobby_OnTransition: @ 823E694 @@ -857,7 +857,7 @@ BattleFrontier_BattleTowerLobby_EventScript_CableLinkSuccessful:: @ 823F3AF waitstate playse SE_SAVE waitse - special sub_80B3BC4 + special TrySetBattleTowerLinkType goto BattleFrontier_BattleTowerLobby_EventScript_EnterElevator end diff --git a/data/maps/LilycoveCity_Harbor/scripts.inc b/data/maps/LilycoveCity_Harbor/scripts.inc index cf273bcb81..1c2bf07eab 100644 --- a/data/maps/LilycoveCity_Harbor/scripts.inc +++ b/data/maps/LilycoveCity_Harbor/scripts.inc @@ -457,8 +457,7 @@ LilycoveCity_Harbor_Movement_PlayerBoardFerryNorth: @ 821E633 walk_up step_end -@ Unused -LilycoveCity_Harbor_Movement_21E635: @ 821E635 +LilycoveCity_Harbor_Movement_UnusedBoardFerry: @ 821E635 walk_up step_end diff --git a/data/maps/MtChimney/scripts.inc b/data/maps/MtChimney/scripts.inc index 76559a8560..158e136782 100644 --- a/data/maps/MtChimney/scripts.inc +++ b/data/maps/MtChimney/scripts.inc @@ -184,8 +184,7 @@ MtChimney_Movement_ArchieExitNorth: @ 822EF9C walk_down step_end -@ Unused -MtChimney_Movement_22EFA6: @ 822EFA6 +MtChimney_Movement_Unused1: @ 822EFA6 walk_down walk_down walk_down @@ -205,8 +204,7 @@ MtChimney_Movement_22EFA6: @ 822EFA6 walk_down step_end -@ Unused -MtChimney_Movement_22EFB8: @ 822EFB8 +MtChimney_Movement_Unused2: @ 822EFB8 walk_down walk_down walk_down @@ -217,8 +215,7 @@ MtChimney_Movement_22EFB8: @ 822EFB8 walk_down step_end -@ Unused -MtChimney_Movement_22EFC1: @ 822EFC1 +MtChimney_Movement_Unused3: @ 822EFC1 walk_right walk_down walk_down @@ -235,8 +232,7 @@ MtChimney_Movement_22EFC1: @ 822EFC1 walk_down step_end -@ Unused -MtChimney_Movement_22EFD0: @ 822EFD0 +MtChimney_Movement_Unused4: @ 822EFD0 walk_fast_down walk_fast_down walk_fast_down @@ -263,8 +259,7 @@ MtChimney_Movement_22EFD0: @ 822EFD0 walk_down step_end -@ Unused -MtChimney_Movement_22EFE9: @ 822EFE9 +MtChimney_Movement_Unused5: @ 822EFE9 delay_16 delay_16 delay_16 @@ -277,8 +272,7 @@ MtChimney_Movement_22EFE9: @ 822EFE9 walk_down step_end -@ Unused -MtChimney_Movement_22EFF4: @ 822EFF4 +MtChimney_Movement_Unused6: @ 822EFF4 delay_16 walk_left walk_down @@ -296,8 +290,7 @@ MtChimney_Movement_22EFF4: @ 822EFF4 walk_down step_end -@ Unused -MtChimney_Movement_22F004: @ 822F004 +MtChimney_Movement_Unused7: @ 822F004 delay_16 walk_left walk_left @@ -316,8 +309,7 @@ MtChimney_Movement_22F004: @ 822F004 walk_down step_end -@ Unused -MtChimney_Movement_22F015: @ 822F015 +MtChimney_Movement_Unused8: @ 822F015 delay_16 walk_down walk_left @@ -327,8 +319,7 @@ MtChimney_Movement_22F015: @ 822F015 walk_in_place_fastest_down step_end -@ Unused -MtChimney_Movement_22F01D: @ 822F01D +MtChimney_Movement_Unused9: @ 822F01D walk_down walk_down walk_down @@ -344,13 +335,11 @@ MtChimney_Movement_22F01D: @ 822F01D walk_down step_end -@ Unused -MtChimney_Movement_22F02B: @ 822F02B +MtChimney_Movement_Unused10: @ 822F02B walk_down step_end -@ Unused -MtChimney_Movement_22F02D: @ 822F02D +MtChimney_Movement_Unused11: @ 822F02D walk_down walk_down walk_down @@ -360,8 +349,7 @@ MtChimney_Movement_22F02D: @ 822F02D walk_down step_end -@ Unused -MtChimney_Movement_22F035: @ 822F035 +MtChimney_Movement_Unused12: @ 822F035 delay_16 delay_16 walk_in_place_fastest_left @@ -373,8 +361,7 @@ MtChimney_Movement_22F035: @ 822F035 walk_down step_end -@ Unused -MtChimney_Movement_22F03F: @ 822F03F +MtChimney_Movement_Unused13: @ 822F03F delay_16 delay_16 delay_16 @@ -387,16 +374,14 @@ MtChimney_Movement_22F03F: @ 822F03F walk_down step_end -@ Unused -MtChimney_Movement_22F04A: @ 822F04A +MtChimney_Movement_Unused14: @ 822F04A lock_facing_direction walk_fast_left unlock_facing_direction face_right step_end -@ Unused -MtChimney_Movement_22F04F: @ 822F04F +MtChimney_Movement_Unused15: @ 822F04F walk_left walk_in_place_fastest_right delay_16 diff --git a/data/maps/PetalburgCity/scripts.inc b/data/maps/PetalburgCity/scripts.inc index 5d3bbf1efa..80badcfd24 100644 --- a/data/maps/PetalburgCity/scripts.inc +++ b/data/maps/PetalburgCity/scripts.inc @@ -351,7 +351,8 @@ PetalburgCity_EventScript_LeadPlayerToGym3:: @ 81DC5FF waitmovement 0 return -PetalburgCity_Movement_1DC611:: @ 81DC611 +@ Unused +PetalburgCity_Movement_Delay48:: @ 81DC611 delay_16 delay_16 delay_16 diff --git a/data/maps/PetalburgCity_Gym/scripts.inc b/data/maps/PetalburgCity_Gym/scripts.inc index d9f299db2c..02685ef475 100644 --- a/data/maps/PetalburgCity_Gym/scripts.inc +++ b/data/maps/PetalburgCity_Gym/scripts.inc @@ -673,8 +673,7 @@ PetalburgCity_Gym_Movement_WallysUncleApproachPlayerWest: @ 82050D0 walk_up step_end -@ Unused -PetalburgCity_Gym_Movement_2050D8: @ 82050D8 +PetalburgCity_Gym_Movement_Unused: @ 82050D8 walk_in_place_fastest_up delay_16 delay_16 diff --git a/data/maps/Route128/scripts.inc b/data/maps/Route128/scripts.inc index 2ea7a5d064..90abbddd5b 100644 --- a/data/maps/Route128/scripts.inc +++ b/data/maps/Route128/scripts.inc @@ -78,13 +78,11 @@ Route128_EventScript_KyogreAwakenedScene:: @ 81F6B57 releaseall end -@ Unused -Route128_Movement_1F6C76: @ 81F6C76 +Route128_Movement_Unused1: @ 81F6C76 walk_fast_left step_end -@ Unused -Route128_Movement_1F6C78: @ 81F6C78 +Route128_Movement_Unused2: @ 81F6C78 walk_left walk_left walk_left diff --git a/data/maps/RustboroCity_DevonCorp_3F/scripts.inc b/data/maps/RustboroCity_DevonCorp_3F/scripts.inc index 143ff45430..034f6fbd44 100644 --- a/data/maps/RustboroCity_DevonCorp_3F/scripts.inc +++ b/data/maps/RustboroCity_DevonCorp_3F/scripts.inc @@ -72,8 +72,7 @@ RustboroCity_DevonCorp_3F_EventScript_MeetPresident:: @ 821246E releaseall end -@ Unused -RustboroCity_DevonCorp_3F_Movement_21252F: @ 821252F +RustboroCity_DevonCorp_3F_Movement_Unused: @ 821252F walk_up walk_up walk_up diff --git a/data/maps/RusturfTunnel/scripts.inc b/data/maps/RusturfTunnel/scripts.inc index 9219ba3e4d..aa99d87402 100644 --- a/data/maps/RusturfTunnel/scripts.inc +++ b/data/maps/RusturfTunnel/scripts.inc @@ -184,22 +184,19 @@ RusturfTunnel_Movement_PlayerWatchWandaExit: @ 822D02F walk_in_place_fastest_right step_end -@ Unused -RusturfTunnel_Movement_22D035: @ 822D035 +RusturfTunnel_Movement_Unused1: @ 822D035 walk_left walk_in_place_fastest_right step_end -@ Unused -RusturfTunnel_Movement_22D038: @ 822D038 +RusturfTunnel_Movement_Unused2: @ 822D038 walk_down walk_in_place_fastest_up delay_8 walk_in_place_fastest_right step_end -@ Unused -RusturfTunnel_Movement_22D03D: @ 822D03D +RusturfTunnel_Movement_Unused3: @ 822D03D walk_up walk_in_place_fastest_down delay_8 diff --git a/data/maps/SeafloorCavern_Room9/scripts.inc b/data/maps/SeafloorCavern_Room9/scripts.inc index 43c503682d..46d1a1f363 100644 --- a/data/maps/SeafloorCavern_Room9/scripts.inc +++ b/data/maps/SeafloorCavern_Room9/scripts.inc @@ -153,8 +153,7 @@ SeafloorCavern_Room9_Movement_ArchieApproachPlayer: @ 823502A walk_right step_end -@ Unused -SeafloorCavern_Room9_Movement_235032: @ 8235032 +SeafloorCavern_Room9_Movement_Unused1: @ 8235032 walk_left walk_left step_end @@ -164,8 +163,7 @@ SeafloorCavern_Room9_Movement_ArchieListenMessage: @ 8235035 delay_16 step_end -@ Unused -SeafloorCavern_Room9_Movement_235038: @ 8235038 +SeafloorCavern_Room9_Movement_Unused2: @ 8235038 walk_right step_end diff --git a/data/maps/SlateportCity/scripts.inc b/data/maps/SlateportCity/scripts.inc index 9f951e83d3..025618b61c 100644 --- a/data/maps/SlateportCity/scripts.inc +++ b/data/maps/SlateportCity/scripts.inc @@ -668,8 +668,7 @@ SlateportCity_Movement_TyExit: @ 81DD326 walk_left step_end -@ Unused -SlateportCity_Movement_1DD334: @ 81DD334 +SlateportCity_Movement_Unused: @ 81DD334 walk_down walk_in_place_fastest_up step_end diff --git a/data/maps/SlateportCity_OceanicMuseum_2F/scripts.inc b/data/maps/SlateportCity_OceanicMuseum_2F/scripts.inc index 38fb70e7d0..7593b78248 100644 --- a/data/maps/SlateportCity_OceanicMuseum_2F/scripts.inc +++ b/data/maps/SlateportCity_OceanicMuseum_2F/scripts.inc @@ -129,8 +129,7 @@ SlateportCity_OceanicMuseum_2F_Movement_PlayerApproachGruntWest: @ 820BCC2 walk_in_place_fastest_left step_end -@ Unused -SlateportCity_OceanicMuseum_2F_Movement_20BCC8: @ 820BCC8 +SlateportCity_OceanicMuseum_2F_Movement_Unused: @ 820BCC8 walk_up walk_left walk_left diff --git a/data/scripts/secret_base.inc b/data/scripts/secret_base.inc index 0f2ad02b1b..aa5f63b9e6 100644 --- a/data/scripts/secret_base.inc +++ b/data/scripts/secret_base.inc @@ -364,7 +364,7 @@ SecretBase_EventScript_Trainer0PreChampion:: @ 8275E25 end SecretBase_EventScript_Trainer0DeclineBattle:: @ 8275E2F - special sub_80EB300 + special DeclinedSecretBaseBattle setvar VAR_RESULT, 0 special SetBattledOwnerFromResult msgbox SecretBase_Text_Trainer0DeclineBattle, MSGBOX_DEFAULT @@ -401,7 +401,7 @@ SecretBase_EventScript_Trainer1PreChampion:: @ 8275E9D end SecretBase_EventScript_Trainer1DeclineBattle:: @ 8275EA7 - special sub_80EB300 + special DeclinedSecretBaseBattle setvar VAR_RESULT, 0 special SetBattledOwnerFromResult msgbox SecretBase_Text_Trainer1DeclineBattle, MSGBOX_DEFAULT @@ -438,7 +438,7 @@ SecretBase_EventScript_Trainer2PreChampion:: @ 8275F15 end SecretBase_EventScript_Trainer2DeclineBattle:: @ 8275F1F - special sub_80EB300 + special DeclinedSecretBaseBattle setvar VAR_RESULT, 0 special SetBattledOwnerFromResult msgbox SecretBase_Text_Trainer2DeclineBattle, MSGBOX_DEFAULT @@ -475,7 +475,7 @@ SecretBase_EventScript_Trainer3PreChampion:: @ 8275F8D end SecretBase_EventScript_Trainer3DeclineBattle:: @ 8275F97 - special sub_80EB300 + special DeclinedSecretBaseBattle setvar VAR_RESULT, 0 special SetBattledOwnerFromResult msgbox SecretBase_Text_Trainer3DeclineBattle, MSGBOX_DEFAULT @@ -512,7 +512,7 @@ SecretBase_EventScript_Trainer4PreChampion:: @ 8276005 end SecretBase_EventScript_Trainer4DeclineBattle:: @ 827600F - special sub_80EB300 + special DeclinedSecretBaseBattle setvar VAR_RESULT, 0 special SetBattledOwnerFromResult msgbox SecretBase_Text_Trainer4DeclineBattle, MSGBOX_DEFAULT @@ -549,7 +549,7 @@ SecretBase_EventScript_Trainer5PreChampion:: @ 827607D end SecretBase_EventScript_Trainer5DeclineBattle:: @ 8276087 - special sub_80EB300 + special DeclinedSecretBaseBattle setvar VAR_RESULT, 0 special SetBattledOwnerFromResult msgbox SecretBase_Text_Trainer5DeclineBattle, MSGBOX_DEFAULT @@ -586,7 +586,7 @@ SecretBase_EventScript_Trainer6PreChampion:: @ 82760F5 end SecretBase_EventScript_Trainer6DeclineBattle:: @ 82760FF - special sub_80EB300 + special DeclinedSecretBaseBattle setvar VAR_RESULT, 0 special SetBattledOwnerFromResult msgbox SecretBase_Text_Trainer6DeclineBattle, MSGBOX_DEFAULT @@ -623,7 +623,7 @@ SecretBase_EventScript_Trainer7PreChampion:: @ 827616D end SecretBase_EventScript_Trainer7DeclineBattle:: @ 8276177 - special sub_80EB300 + special DeclinedSecretBaseBattle setvar VAR_RESULT, 0 special SetBattledOwnerFromResult msgbox SecretBase_Text_Trainer7DeclineBattle, MSGBOX_DEFAULT @@ -660,7 +660,7 @@ SecretBase_EventScript_Trainer8PreChampion:: @ 82761E5 end SecretBase_EventScript_Trainer8DeclineBattle:: @ 82761EF - special sub_80EB300 + special DeclinedSecretBaseBattle setvar VAR_RESULT, 0 special SetBattledOwnerFromResult msgbox SecretBase_Text_Trainer8DeclineBattle, MSGBOX_DEFAULT @@ -697,7 +697,7 @@ SecretBase_EventScript_Trainer9PreChampion:: @ 827625D end SecretBase_EventScript_Trainer9DeclineBattle:: @ 8276267 - special sub_80EB300 + special DeclinedSecretBaseBattle setvar VAR_RESULT, 0 special SetBattledOwnerFromResult msgbox SecretBase_Text_Trainer9DeclineBattle, MSGBOX_DEFAULT @@ -716,35 +716,35 @@ SecretBase_EventScript_BattleTrainer:: @ 8276286 special DoSpecialTrainerBattle waitstate compare VAR_RESULT, B_OUTCOME_DREW - call_if_eq SecretBase_EventScript_2762BD + call_if_eq SecretBase_EventScript_DrewSecretBaseBattle compare VAR_RESULT, B_OUTCOME_WON - call_if_eq SecretBase_EventScript_2762C1 + call_if_eq SecretBase_EventScript_WonSecretBaseBattle compare VAR_RESULT, B_OUTCOME_LOST - call_if_eq SecretBase_EventScript_2762C5 + call_if_eq SecretBase_EventScript_LostSecretBaseBattle special HealPlayerParty release end -SecretBase_EventScript_2762BD:: @ 82762BD - special sub_80EB438 +SecretBase_EventScript_DrewSecretBaseBattle:: @ 82762BD + special DrewSecretBaseBattle return -SecretBase_EventScript_2762C1:: @ 82762C1 - special sub_80EB368 +SecretBase_EventScript_WonSecretBaseBattle:: @ 82762C1 + special WonSecretBaseBattle return -SecretBase_EventScript_2762C5:: @ 82762C5 - special sub_80EB3D0 +SecretBase_EventScript_LostSecretBaseBattle:: @ 82762C5 + special LostSecretBaseBattle return .include "data/scripts/secret_power_tm.inc" SecretBase_EventScript_DollInteract:: @ 82766A2 - special sub_80EB290 + special CheckInteractedWithFriendsDollDecor end SecretBase_EventScript_CushionInteract:: @ 82766A6 - special sub_80EB2C8 + special CheckInteractedWithFriendsCushionDecor end SecretBase_Text_AllDecorationsWillBeReturned: @ 82766AA diff --git a/data/scripts/shared_secret_base.inc b/data/scripts/shared_secret_base.inc index de5dcc703c..0fa61a214e 100644 --- a/data/scripts/shared_secret_base.inc +++ b/data/scripts/shared_secret_base.inc @@ -157,33 +157,33 @@ SecretBase_EventScript_PCTurnOff:: @ 823B66E end @ Unused -SecretBase_EventScript_23B674:: @ 823B674 - special SetSecretBaseSecretsTvFlags_Poster +SecretBase_EventScript_Poster:: @ 823B674 + special CheckInteractedWithFriendsPosterDecor end @ Unused -SecretBase_EventScript_23B678:: @ 823B678 - special SetSecretBaseSecretsTvFlags_MiscFurnature +SecretBase_EventScript_FurnitureBottom:: @ 823B678 + special CheckInteractedWithFriendsFurnitureBottom end @ Unused -SecretBase_EventScript_23B67C:: @ 823B67C - special SetSecretBaseSecretsTvFlags_LargeDecorationSpot +SecretBase_EventScript_FurnitureMiddle:: @ 823B67C + special CheckInteractedWithFriendsFurnitureMiddle end @ Unused -SecretBase_EventScript_23B680:: @ 823B680 - special SetSecretBaseSecretsTvFlags_SmallDecorationSpot +SecretBase_EventScript_FurnitureTop:: @ 823B680 + special CheckInteractedWithFriendsFurnitureTop end SecretBase_EventScript_SandOrnament:: @ 823B684 - special SetSecretBaseSecretsTvFlags_SandOrnament + special CheckInteractedWithFriendsSandOrnament dofieldeffect FLDEFF_SAND_PILLAR waitstate end SecretBase_EventScript_ShieldOrToyTV:: @ 823B68C - special GetShieldToyTVDecorationInfo + special InteractWithShieldOrTVDecoration compare VAR_RESULT, 0 goto_if_eq SecretBase_EventScript_BattleTowerShield compare VAR_RESULT, 1 diff --git a/data/specials.inc b/data/specials.inc index 17f459a1f4..95a0ac5d37 100644 --- a/data/specials.inc +++ b/data/specials.inc @@ -28,7 +28,7 @@ gSpecials:: @ 81DBA64 def_special GetSecretBaseOwnerAndState def_special InitSecretBaseDecorationSprites def_special SetDecoration - def_special sub_81297AC + def_special GetEventObjectLocalIdByFlag def_special GetSecretBaseTypeInFrontOfPlayer def_special SetSecretBaseOwnerGfxId def_special sub_8129708 @@ -44,7 +44,7 @@ gSpecials:: @ 81DBA64 def_special ColosseumPlayerSpotTriggered def_special PlayerEnteredTradeSeat def_special nullsub_37 - def_special sub_80B3254 + def_special CableClubSaveGame def_special TryBerryBlenderLinkup def_special GetLinkPartnerNames def_special SpawnLinkPartnerEventObject @@ -147,7 +147,7 @@ gSpecials:: @ 81DBA64 def_special CountPartyAliveNonEggMons_IgnoreVar0x8004Slot def_special ShouldReadyContestArtist def_special SaveMuseumContestPainting - def_special sub_80F8864 + def_special DoesContestCategoryHaveWinner def_special CountPlayerContestPaintings def_special ShowContestWinner def_special MauvilleGymSetDefaultBarriers @@ -317,7 +317,7 @@ gSpecials:: @ 81DBA64 def_special ScriptCheckFreePokemonStorageSpace def_special DoSealedChamberShakingEffect1 def_special ShowDeptStoreElevatorFloorSelect - def_special GetShieldToyTVDecorationInfo + def_special InteractWithShieldOrTVDecoration def_special IsPokerusInParty def_special SetSootopolisGymCrackedIceMetatiles def_special ShakeCamera @@ -348,7 +348,7 @@ gSpecials:: @ 81DBA64 def_special HasAllHoennMons def_special MonOTNameNotPlayer def_special BufferLottoTicketNumber - def_special sub_81653CC + def_special TryHideBattleTowerReporter def_special DoesPartyHaveEnigmaBerry def_special ScriptRandom def_special SetChampionSaveWarp @@ -361,17 +361,17 @@ gSpecials:: @ 81DBA64 def_special IncrementDailyPlantedBerries def_special IncrementDailyPickedBerries def_special InitSecretBaseVars - def_special SetSecretBaseSecretsTvFlags_SandOrnament - def_special sub_80EB300 - def_special sub_80EB438 - def_special sub_80EB368 - def_special sub_80EB3D0 - def_special sub_80EB290 - def_special sub_80EB2C8 - def_special SetSecretBaseSecretsTvFlags_MiscFurnature - def_special SetSecretBaseSecretsTvFlags_LargeDecorationSpot - def_special SetSecretBaseSecretsTvFlags_SmallDecorationSpot - def_special SetSecretBaseSecretsTvFlags_Poster + def_special CheckInteractedWithFriendsSandOrnament + def_special DeclinedSecretBaseBattle + def_special DrewSecretBaseBattle + def_special WonSecretBaseBattle + def_special LostSecretBaseBattle + def_special CheckInteractedWithFriendsDollDecor + def_special CheckInteractedWithFriendsCushionDecor + def_special CheckInteractedWithFriendsFurnitureBottom + def_special CheckInteractedWithFriendsFurnitureMiddle + def_special CheckInteractedWithFriendsFurnitureTop + def_special CheckInteractedWithFriendsPosterDecor def_special SetLilycoveLadyGfx def_special Script_GetLilycoveLadyId def_special GetFavorLadyState @@ -444,7 +444,7 @@ gSpecials:: @ 81DBA64 def_special GetDeptStoreDefaultFloorChoice def_special BufferVarsForIVRater def_special LinkContestWaitForConnection - def_special sub_800B518 + def_special GetWirelessCommType def_special LinkContestTryShowWirelessIndicator def_special LinkContestTryHideWirelessIndicator def_special IsWirelessContest @@ -534,4 +534,4 @@ gSpecials:: @ 81DBA64 def_special TryPrepareSecondApproachingTrainer def_special RemoveRecordsWindow def_special CloseDeptStoreElevatorWindow - def_special sub_80B3BC4 + def_special TrySetBattleTowerLinkType diff --git a/data/text/tv.inc b/data/text/tv.inc index c6453af0cb..c0d262cbf5 100644 --- a/data/text/tv.inc +++ b/data/text/tv.inc @@ -2079,7 +2079,7 @@ gTVWhatsNo1InHoennTodayText08:: @ 0828858B .string "Viewers, take heart from {STR_VAR_1}!\n" .string "You, too, can be no. 1 every day!$" -gTVSecretBaseSecretsText00:: @ 08288608 +TVSecretBaseSecrets_Text_Intro:: @ 08288608 .string "SECRET BASE SECRETS!\p" .string "What do TRAINERS do in the secrecy\n" .string "of SECRET BASES?\p" @@ -2090,88 +2090,88 @@ gTVSecretBaseSecretsText00:: @ 08288608 .string "Let's have a peek!\p" .string "What will {STR_VAR_2} do?$" -gTVSecretBaseSecretsText01:: @ 082886C8 +TVSecretBaseSecrets_Text_WhatWillPlayerDoNext1:: @ 082886C8 .string "What will {STR_VAR_2} do next?$" -gTVSecretBaseSecretsText02:: @ 082886DE +TVSecretBaseSecrets_Text_WhatWillPlayerDoNext2:: @ 082886DE .string "And now, what will {STR_VAR_2} do?$" -gTVSecretBaseSecretsText03:: @ 082886F8 +TVSecretBaseSecrets_Text_TookXStepsBeforeLeaving:: @ 082886F8 .string "In the end, {STR_VAR_2} took {STR_VAR_3} steps\n" .string "in {STR_VAR_1}'s SECRET BASE before\l" .string "leaving.$" -gTVSecretBaseSecretsText04:: @ 08288739 +TVSecretBaseSecrets_Text_BaseFailedToInterestPlayer:: @ 08288739 .string "Hmm…\p" .string "It appears as if {STR_VAR_1}'s SECRET\n" .string "BASE failed to interest {STR_VAR_2}…$" -gTVSecretBaseSecretsText05:: @ 08288777 +TVSecretBaseSecrets_Text_PlayerEnjoyedBase:: @ 08288777 .string "{STR_VAR_2} appears to have enjoyed\n" .string "{STR_VAR_1}'s SECRET BASE thoroughly.$" -gTVSecretBaseSecretsText06:: @ 082887AF +TVSecretBaseSecrets_Text_PlayerHugeFanOfBase:: @ 082887AF .string "{STR_VAR_2} appears to have become\n" .string "a huge fan of {STR_VAR_1}'s\l" .string "SECRET BASE.$" -gTVSecretBaseSecretsText07:: @ 082887E9 +TVSecretBaseSecrets_Text_Outro:: @ 082887E9 .string "Viewers may want to check out\n" .string "{STR_VAR_1}'s SECRET BASE, too.\p" .string "Tune in next time as we visit another\n" .string "SECRET BASE! Thanks for joining us!$" -gTVSecretBaseSecretsText08:: @ 08288868 +TVSecretBaseSecrets_Text_StoppedMoving1:: @ 08288868 .string "The visitor has stopped!\p" .string "The visitor isn't moving at all!\p" .string "Was {STR_VAR_1}'s SECRET BASE\n" .string "that unimpressive?$" -gTVSecretBaseSecretsText09:: @ 082888CA +TVSecretBaseSecrets_Text_StoppedMoving2:: @ 082888CA .string "The visitor has stopped!\p" .string "The visitor isn't moving at all!\p" .string "Is it fatigue?\n" .string "Has the visitor grown weary?$" -gTVSecretBaseSecretsText10:: @ 08288930 +TVSecretBaseSecrets_Text_UsedChair:: @ 08288930 .string "The visitor sat down on a chair!\n" .string "The visitor is seated!\p" .string "Look at that look of delight!\p" .string "That chair must be very comfortable\n" .string "to get that response!$" -gTVSecretBaseSecretsText11:: @ 082889C0 +TVSecretBaseSecrets_Text_UsedBalloon:: @ 082889C0 .string "The visitor charged at a balloon!\p" .string "It burst!\n" .string "Oh, my goodness, it popped!\p" .string "The visitor appears startled by\n" .string "the sudden noise!$" -gTVSecretBaseSecretsText12:: @ 08288A3A +TVSecretBaseSecrets_Text_UsedTent:: @ 08288A3A .string "The visitor entered a TENT!\p" .string "The visitor is running around!\p" .string "Oh, my, the visitor is frolicking!\p" .string "The visitor appears surprised by\n" .string "the TENT's size!$" -gTVSecretBaseSecretsText13:: @ 08288ACA +TVSecretBaseSecrets_Text_UsedPlant:: @ 08288ACA .string "The visitor is examining\n" .string "a potted plant!\p" .string "The visitor has surprisingly\n" .string "mature taste!$" -gTVSecretBaseSecretsText14:: @ 08288B1E +TVSecretBaseSecrets_Text_UsedGoldShield:: @ 08288B1E .string "The visitor is examining\n" .string "a GOLD SHIELD!\p" .string "The visitor's eyes appear to be\n" .string "lit up with wonder!$" -gTVSecretBaseSecretsText15:: @ 08288B7A +TVSecretBaseSecrets_Text_UsedSilverShield:: @ 08288B7A .string "The visitor is examining\n" .string "a SILVER SHIELD!\p" .string "The visitor appears to be wide-eyed!$" -gTVSecretBaseSecretsText16:: @ 08288BC9 +TVSecretBaseSecrets_Text_UsedGlassOrnament:: @ 08288BC9 .string "The visitor is examining\n" .string "a GLASS ORNAMENT!\p" .string "Oh, no!\p" @@ -2179,15 +2179,15 @@ gTVSecretBaseSecretsText16:: @ 08288BC9 .string "It's getting covered with\n" .string "fingerprints…$" -gTVSecretBaseSecretsText17:: @ 08288C40 +TVSecretBaseSecrets_Text_UsedTV:: @ 08288C40 .string "The visitor is watching television!\p" .string "Looks like we have a big fan of TV!$" -gTVSecretBaseSecretsText18:: @ 08288C88 +TVSecretBaseSecrets_Text_UsedMudBall:: @ 08288C88 .string "The visitor stomped on a MUD BALL!\p" .string "The visitor looks delighted!$" -gTVSecretBaseSecretsText19:: @ 08288CC8 +TVSecretBaseSecrets_Text_UsedBag:: @ 08288CC8 .string "…Oh?\p" .string "The visitor is reaching for their own\n" .string "BAG and rummaging about in it!\p" @@ -2197,19 +2197,19 @@ gTVSecretBaseSecretsText19:: @ 08288CC8 .string "holding up the {STR_VAR_2}!\p" .string "It's like a TV commercial!$" -gTVSecretBaseSecretsText20:: @ 08288D7F +TVSecretBaseSecrets_Text_UsedCushion:: @ 08288D7F .string "The visitor grabs a cushion and…$" -gTVSecretBaseSecretsText21:: @ 08288DA0 +TVSecretBaseSecrets_Text_HitCushion:: @ 08288DA0 .string "…begins hitting it!\p" .string "Is the visitor under a lot of stress?$" -gTVSecretBaseSecretsText22:: @ 08288DDA +TVSecretBaseSecrets_Text_HuggedCushion:: @ 08288DDA .string "…hugs it tight!\p" .string "Could the visitor be feeling happy\n" .string "about something?$" -gTVSecretBaseSecretsText23:: @ 08288E1E +TVSecretBaseSecrets_Text_BattledWon:: @ 08288E1E .string "The visitor is chatting with\n" .string "{STR_VAR_1}!\p" .string "It looks like they're going to\n" @@ -2220,7 +2220,7 @@ gTVSecretBaseSecretsText23:: @ 08288E1E .string "The visitor is doing\n" .string "a victory dance!$" -gTVSecretBaseSecretsText24:: @ 08288EC9 +TVSecretBaseSecrets_Text_BattledLost:: @ 08288EC9 .string "The visitor is chatting with\n" .string "{STR_VAR_1}!\p" .string "It looks like they're going to\n" @@ -2230,7 +2230,7 @@ gTVSecretBaseSecretsText24:: @ 08288EC9 .string "The visitor has lost!\p" .string "The visitor looks dejected!$" -gTVSecretBaseSecretsText25:: @ 08288F58 +TVSecretBaseSecrets_Text_DeclinedBattle:: @ 08288F58 .string "The visitor is chatting with\n" .string "{STR_VAR_1}!\p" .string "It looks like they're going to\n" @@ -2241,7 +2241,7 @@ gTVSecretBaseSecretsText25:: @ 08288F58 .string "Did the visitor find {STR_VAR_1}\n" .string "unappealing?$" -gTVSecretBaseSecretsText26:: @ 08289011 +TVSecretBaseSecrets_Text_UsedPoster:: @ 08289011 .string "The visitor is staring intently\n" .string "at a poster!\p" .string "Is the poster to the visitor's\n" @@ -2249,12 +2249,12 @@ gTVSecretBaseSecretsText26:: @ 08289011 .string "…But… There's something disturbing\n" .string "about the visitor's stares.$" -gTVSecretBaseSecretsText27:: @ 082890A4 +TVSecretBaseSecrets_Text_UsedNoteMat:: @ 082890A4 .string "The visitor stepped on a NOTE MAT!\p" .string "…Hmm…\n" .string "The visitor composed a funny tune!$" -gTVSecretBaseSecretsText28:: @ 082890F0 +TVSecretBaseSecrets_Text_BattledDraw:: @ 082890F0 .string "The visitor is chatting with\n" .string "{STR_VAR_1}!\p" .string "It looks like they're going to\n" @@ -2265,14 +2265,14 @@ gTVSecretBaseSecretsText28:: @ 082890F0 .string "Both TRAINERS appear to be very\n" .string "disappointed!$" -gTVSecretBaseSecretsText29:: @ 08289193 +TVSecretBaseSecrets_Text_UsedSpinMat:: @ 08289193 .string "The visitor stepped on\n" .string "a SPIN MAT!\p" .string "It looks like the visitor is dizzy!\p" .string "The visitor is tottering about!\n" .string "Look out!$" -gTVSecretBaseSecretsText30:: @ 08289204 +TVSecretBaseSecrets_Text_UsedSandOrnament:: @ 08289204 .string "The visitor is reaching for\n" .string "a SAND ORNAMENT!\p" .string "Oh!\p" @@ -2281,7 +2281,7 @@ gTVSecretBaseSecretsText30:: @ 08289204 .string "The visitor looks sheepish\n" .string "and guilty!$" -gTVSecretBaseSecretsText31:: @ 0828927C +TVSecretBaseSecrets_Text_UsedDesk:: @ 0828927C .string "The visitor is rubbing a desktop\n" .string "with their finger!\p" .string "Apparently, the visitor disapproves\n" @@ -2289,25 +2289,25 @@ gTVSecretBaseSecretsText31:: @ 0828927C .string "The visitor is surprisingly concerned\n" .string "about neatness!$" -gTVSecretBaseSecretsText32:: @ 08289313 +TVSecretBaseSecrets_Text_UsedBrick:: @ 08289313 .string "The visitor is staring at a BRICK!\p" .string "Perhaps the visitor is thinking about\n" .string "the object on the BRICK.$" -gTVSecretBaseSecretsText33:: @ 08289375 +TVSecretBaseSecrets_Text_UsedSolidBoard:: @ 08289375 .string "The visitor is walking across\n" .string "the SOLID BOARD.\p" .string "The visitor keeps looking down.\p" .string "The visitor appears to be surprisingly\n" .string "timid and cautious!$" -gTVSecretBaseSecretsText34:: @ 082893FF +TVSecretBaseSecrets_Text_UsedFence:: @ 082893FF .string "The visitor is looking intently\n" .string "at a FENCE!\p" .string "Has a new idea for a trap popped\n" .string "into the visitor's head?$" -gTVSecretBaseSecretsText35:: @ 08289465 +TVSecretBaseSecrets_Text_UsedGlitterMat:: @ 08289465 .string "The visitor stepped on\n" .string "a GLITTER MAT!\p" .string "The visitor is striking a variety\n" @@ -2315,13 +2315,13 @@ gTVSecretBaseSecretsText35:: @ 08289465 .string "The visitor appears to be fantasizing\n" .string "about being an idol!$" -gTVSecretBaseSecretsText36:: @ 082894F2 +TVSecretBaseSecrets_Text_UsedTire:: @ 082894F2 .string "The visitor is staring intently\n" .string "at a TIRE!\p" .string "Could the visitor be thinking about\n" .string "the kind of car that would use it?$" -gTVSecretBaseSecretsText37:: @ 08289564 +TVSecretBaseSecrets_Text_UsedStand:: @ 08289564 .string "The visitor climbed a STAND!\p" .string "The visitor is looking out across\n" .string "{STR_VAR_1}'s BASE from high up!\p" @@ -2329,16 +2329,16 @@ gTVSecretBaseSecretsText37:: @ 08289564 .string "Lets loose a roar!\n" .string "The visitor is roaring!$" -gTVSecretBaseSecretsText38:: @ 082895EB +TVSecretBaseSecrets_Text_BrokeDoor:: @ 082895EB .string "The visitor charged headlong into\n" .string "a BREAKABLE DOOR!\p" .string "The visitor is laughing uproariously!$" -gTVSecretBaseSecretsText39:: @ 08289645 +TVSecretBaseSecrets_Text_UsedDoll:: @ 08289645 .string "The visitor is talking to a DOLL!\p" .string "…It's a little creepy…$" -gTVSecretBaseSecretsText40:: @ 0828967E +TVSecretBaseSecrets_Text_UsedSlide:: @ 0828967E .string "The visitor is climbing the ladder\n" .string "on a SLIDE!\p" .string "And…\p" @@ -2346,7 +2346,7 @@ gTVSecretBaseSecretsText40:: @ 0828967E .string "Looks like the visitor is having\n" .string "a grand old time!$" -gTVSecretBaseSecretsText41:: @ 082896FC +TVSecretBaseSecrets_Text_UsedSlideButDidntGoDown:: @ 082896FC .string "The visitor is climbing the ladder\n" .string "on a SLIDE!\p" .string "And…\p" @@ -2354,7 +2354,7 @@ gTVSecretBaseSecretsText41:: @ 082896FC .string "the ladder!\p" .string "Did the visitor suddenly chicken out?$" -gTVSecretBaseSecretsText42:: @ 0828977D +TVSecretBaseSecrets_Text_UsedJumpMat:: @ 0828977D .string "The visitor stepped on\n" .string "a JUMP MAT!\p" .string "The visitor jumped once!\p" diff --git a/include/battle_tower.h b/include/battle_tower.h index 2366cac12a..2e85c80189 100644 --- a/include/battle_tower.h +++ b/include/battle_tower.h @@ -71,7 +71,7 @@ void GetEreaderTrainerName(u8 *dst); void ValidateEReaderTrainer(void); void ClearEReaderTrainer(struct BattleTowerEReaderTrainer *ereaderTrainer); void CopyEReaderTrainerGreeting(void); -void sub_81653CC(void); +void TryHideBattleTowerReporter(void); bool32 RubyBattleTowerRecordToEmerald(struct RSBattleTowerRecord *src, struct EmeraldBattleTowerRecord *dst); bool32 EmeraldBattleTowerRecordToRuby(struct EmeraldBattleTowerRecord *src, struct RSBattleTowerRecord *dst); void CalcApprenticeChecksum(struct Apprentice *apprentice); diff --git a/include/constants/metatile_labels.h b/include/constants/metatile_labels.h index 58ac90eaba..a0ea6855b0 100644 --- a/include/constants/metatile_labels.h +++ b/include/constants/metatile_labels.h @@ -2,29 +2,39 @@ #define GUARD_METATILE_LABELS_H // gTileset_General -#define METATILE_General_Grass 0x001 -#define METATILE_General_TallGrass 0x00D -#define METATILE_General_LongGrass 0x015 -#define METATILE_General_TallGrass_TreeUp 0x025 -#define METATILE_General_Grass_TreeUp 0x00E -#define METATILE_General_TallGrass_TreeLeft 0x1C6 -#define METATILE_General_TallGrass_TreeRight 0x1C7 -#define METATILE_General_Grass_TreeLeft 0x1CE -#define METATILE_General_Grass_TreeRight 0x1CF -#define METATILE_General_MuddySlope_Frame0 0x0E8 -#define METATILE_General_MuddySlope_Frame1 0x0E9 -#define METATILE_General_MuddySlope_Frame2 0x0EA -#define METATILE_General_MuddySlope_Frame3 0x0EB -#define METATILE_General_SandPit_Center 0x121 -#define METATILE_General_CaveEntrance_Top 0x09F -#define METATILE_General_CaveEntrance_Bottom 0x0A7 -#define METATILE_General_RockWall_GrassBase 0x079 -#define METATILE_General_RockWall_RockBase 0x07C -#define METATILE_General_RockWall_SandBase 0x091 -#define METATILE_General_CalmWater 0x170 -#define METATILE_General_RoughWater 0x14E -#define METATILE_General_RoughDeepWater 0x14F -#define METATILE_General_ReflectiveWater 0x0A1 +#define METATILE_General_Grass 0x001 +#define METATILE_General_TallGrass 0x00D +#define METATILE_General_LongGrass 0x015 +#define METATILE_General_TallGrass_TreeUp 0x025 +#define METATILE_General_Grass_TreeUp 0x00E +#define METATILE_General_TallGrass_TreeLeft 0x1C6 +#define METATILE_General_TallGrass_TreeRight 0x1C7 +#define METATILE_General_Grass_TreeLeft 0x1CE +#define METATILE_General_Grass_TreeRight 0x1CF +#define METATILE_General_MuddySlope_Frame0 0x0E8 +#define METATILE_General_MuddySlope_Frame1 0x0E9 +#define METATILE_General_MuddySlope_Frame2 0x0EA +#define METATILE_General_MuddySlope_Frame3 0x0EB +#define METATILE_General_SandPit_Center 0x121 +#define METATILE_General_CaveEntrance_Top 0x09F +#define METATILE_General_CaveEntrance_Bottom 0x0A7 +#define METATILE_General_RockWall_GrassBase 0x079 +#define METATILE_General_RockWall_RockBase 0x07C +#define METATILE_General_RockWall_SandBase 0x091 +#define METATILE_General_CalmWater 0x170 +#define METATILE_General_RoughWater 0x14E +#define METATILE_General_RoughDeepWater 0x14F +#define METATILE_General_ReflectiveWater 0x0A1 +#define METATILE_General_SecretBase_TreeLeft 0x026 +#define METATILE_General_SecretBase_TreeRight 0x027 +#define METATILE_General_SecretBase_VineLeft 0x036 +#define METATILE_General_SecretBase_VineRight 0x037 +#define METATILE_General_RedCaveIndent 0x1A0 +#define METATILE_General_RedCaveOpen 0x1A1 +#define METATILE_General_YellowCaveIndent 0x1A8 +#define METATILE_General_YellowCaveOpen 0x1A9 +#define METATILE_General_BlueCaveIndent 0x1B0 +#define METATILE_General_BlueCaveOpen 0x1B1 // gTileset_Building #define METATILE_Building_PC_Off 0x004 @@ -143,6 +153,8 @@ #define METATILE_Fortree_BridgeOverGrass_Lowered 0x24F #define METATILE_Fortree_BridgeOverTrees_Raised 0x256 #define METATILE_Fortree_BridgeOverTrees_Lowered 0x257 +#define METATILE_Fortree_SecretBase_Shrub 0x271 +#define METATILE_Fortree_SecretBase_ShrubOpen 0x278 #define METATILE_Fortree_SecretBase_LongGrass_TopLeft 0x279 #define METATILE_Fortree_SecretBase_LongGrass_TopMid 0x27A #define METATILE_Fortree_SecretBase_LongGrass_TopRight 0x27B @@ -164,6 +176,8 @@ // gTileset_Fallarbor #define METATILE_Fallarbor_AshGrass 0x20A +#define METATILE_Fallarbor_BrownCaveIndent 0x208 +#define METATILE_Fallarbor_BrownCaveOpen 0x210 #define METATILE_Fallarbor_NormalGrass 0x212 #define METATILE_Fallarbor_AshField 0x218 #define METATILE_Fallarbor_BrownCaveEntrance_Top 0x259 @@ -414,4 +428,162 @@ #define METATILE_Underwater_RockWall 0x21E #define METATILE_Underwater_FloorShadow 0x228 +// gTileset_SecretBase +#define METATILE_SecretBase_Wall_TopMid 0x202 +#define METATILE_SecretBase_Ground 0x20A +#define METATILE_SecretBase_PC 0x220 +#define METATILE_SecretBase_RegisterPC 0x221 +#define METATILE_SecretBase_PC_On 0x224 +#define METATILE_SecretBase_RedBrick_Top 0x225 +#define METATILE_SecretBase_RedBrick_Bottom 0x22D +#define METATILE_SecretBase_YellowBrick_Top 0x226 +#define METATILE_SecretBase_YellowBrick_Bottom 0x22E +#define METATILE_SecretBase_BlueBrick_Top 0x227 +#define METATILE_SecretBase_BlueBrick_Bottom 0x22F +#define METATILE_SecretBase_MudBall 0x228 +#define METATILE_SecretBase_Fence_Horizontal 0x22C +#define METATILE_SecretBase_Fence_Vertical 0x233 +#define METATILE_SecretBase_Board_Top 0x234 +#define METATILE_SecretBase_Board_Bottom 0x23C +#define METATILE_SecretBase_RedTent_DoorTop 0x239 +#define METATILE_SecretBase_RedTent_Door 0x241 +#define METATILE_SecretBase_BlueTent_DoorTop 0x251 +#define METATILE_SecretBase_BlueTent_Door 0x259 +#define METATILE_SecretBase_Slide_Stairs 0x23D +#define METATILE_SecretBase_Slide 0x23E +#define METATILE_SecretBase_Stand_LeftCorner 0x26A +#define METATILE_SecretBase_Stand_RightCorner 0x26D +#define METATILE_SecretBase_BreakableDoor_TopClosed 0x237 +#define METATILE_SecretBase_BreakableDoor_BottomClosed 0x23F +#define METATILE_SecretBase_BreakableDoor_TopOpen 0x26E +#define METATILE_SecretBase_BreakableDoor_BottomOpen 0x276 +#define METATILE_SecretBase_NoteMat_C 0x278 +#define METATILE_SecretBase_NoteMat_D 0x279 +#define METATILE_SecretBase_NoteMat_E 0x27A +#define METATILE_SecretBase_NoteMat_F 0x27B +#define METATILE_SecretBase_NoteMat_G 0x27C +#define METATILE_SecretBase_NoteMat_A 0x27D +#define METATILE_SecretBase_NoteMat_B 0x27E +#define METATILE_SecretBase_NoteMat_C_Sharp 0x2B3 +#define METATILE_SecretBase_Tire_TopLeft 0x280 +#define METATILE_SecretBase_Tire_TopRight 0x281 +#define METATILE_SecretBase_Tire_BottomLeft 0x288 +#define METATILE_SecretBase_Tire_BottomRight 0x289 +#define METATILE_SecretBase_GlassOrnament_Base1 0x28A +#define METATILE_SecretBase_GlassOrnament_Base2 0x28B +#define METATILE_SecretBase_SandOrnament_BrokenTop 0x284 +#define METATILE_SecretBase_SandOrnament_BrokenBase 0x28C +#define METATILE_SecretBase_SandOrnament_Top 0x285 +#define METATILE_SecretBase_SandOrnament_Base1 0x28D +#define METATILE_SecretBase_SandOrnament_TopWall 0x286 +#define METATILE_SecretBase_SandOrnament_Base2 0x28E +#define METATILE_SecretBase_SmallDesk 0x287 +#define METATILE_SecretBase_PokemonDesk 0x28F +#define METATILE_SecretBase_HeavyDesk_TopLeft 0x290 +#define METATILE_SecretBase_HeavyDesk_TopMid 0x291 +#define METATILE_SecretBase_HeavyDesk_TopRight 0x292 +#define METATILE_SecretBase_HeavyDesk_BottomLeft 0x298 +#define METATILE_SecretBase_HeavyDesk_BottomMid 0x299 +#define METATILE_SecretBase_HeavyDesk_BottomRight 0x29A +#define METATILE_SecretBase_RaggedDesk_TopLeft 0x293 +#define METATILE_SecretBase_RaggedDesk_TopMid 0x294 +#define METATILE_SecretBase_RaggedDesk_TopRight 0x295 +#define METATILE_SecretBase_RaggedDesk_BottomLeft 0x29B +#define METATILE_SecretBase_RaggedDesk_BottomMid 0x29C +#define METATILE_SecretBase_RaggedDesk_BottomRight 0x29D +#define METATILE_SecretBase_ComfortDesk_TopLeft 0x296 +#define METATILE_SecretBase_ComfortDesk_TopMid 0x297 +#define METATILE_SecretBase_ComfortDesk_TopRight 0x2A3 +#define METATILE_SecretBase_ComfortDesk_BottomLeft 0x29E +#define METATILE_SecretBase_ComfortDesk_BottomMid 0x29F +#define METATILE_SecretBase_ComfortDesk_BottomRight 0x2AB +#define METATILE_SecretBase_BrickDesk_TopLeft 0x2A0 +#define METATILE_SecretBase_BrickDesk_TopMid 0x2A1 +#define METATILE_SecretBase_BrickDesk_TopRight 0x2A2 +#define METATILE_SecretBase_BrickDesk_MidLeft 0x2A8 +#define METATILE_SecretBase_BrickDesk_Center 0x2A9 +#define METATILE_SecretBase_BrickDesk_MidRight 0x2AA +#define METATILE_SecretBase_BrickDesk_BottomLeft 0x2B0 +#define METATILE_SecretBase_BrickDesk_BottomMid 0x2B1 +#define METATILE_SecretBase_BrickDesk_BottomRight 0x2B2 +#define METATILE_SecretBase_CampDesk_TopLeft 0x2A4 +#define METATILE_SecretBase_CampDesk_TopMid 0x2A5 +#define METATILE_SecretBase_CampDesk_TopRight 0x2A6 +#define METATILE_SecretBase_CampDesk_MidLeft 0x2AC +#define METATILE_SecretBase_CampDesk_Center 0x2AD +#define METATILE_SecretBase_CampDesk_MidRight 0x2AE +#define METATILE_SecretBase_CampDesk_BottomLeft 0x2B4 +#define METATILE_SecretBase_CampDesk_BottomMid 0x2B5 +#define METATILE_SecretBase_CampDesk_BottomRight 0x2B6 +#define METATILE_SecretBase_HardDesk_TopLeft 0x2A7 +#define METATILE_SecretBase_HardDesk_TopMid 0x2BB +#define METATILE_SecretBase_HardDesk_TopRight 0x2BC +#define METATILE_SecretBase_HardDesk_MidLeft 0x2AF +#define METATILE_SecretBase_HardDesk_Center 0x2C3 +#define METATILE_SecretBase_HardDesk_MidRight 0x2C4 +#define METATILE_SecretBase_HardDesk_BottomLeft 0x2B7 +#define METATILE_SecretBase_HardDesk_BottomMid 0x2CB +#define METATILE_SecretBase_HardDesk_BottomRight 0x2CC +#define METATILE_SecretBase_PrettyDesk_TopLeft 0x2BD +#define METATILE_SecretBase_PrettyDesk_TopMid 0x2BE +#define METATILE_SecretBase_PrettyDesk_TopRight 0x2BF +#define METATILE_SecretBase_PrettyDesk_MidLeft 0x2C5 +#define METATILE_SecretBase_PrettyDesk_Center 0x2C6 +#define METATILE_SecretBase_PrettyDesk_MidRight 0x2C7 +#define METATILE_SecretBase_PrettyDesk_BottomLeft 0x2CD +#define METATILE_SecretBase_PrettyDesk_BottomMid 0x2CE +#define METATILE_SecretBase_PrettyDesk_BottomRight 0x2CF +#define METATILE_SecretBase_SmallChair 0x2B8 +#define METATILE_SecretBase_PokemonChair 0x2B9 +#define METATILE_SecretBase_HeavyChair 0x2BA +#define METATILE_SecretBase_PrettyChair 0x2C0 +#define METATILE_SecretBase_ComfortChair 0x2C1 +#define METATILE_SecretBase_RaggedChair 0x2C2 +#define METATILE_SecretBase_BrickChair 0x2C8 +#define METATILE_SecretBase_CampChair 0x2C9 +#define METATILE_SecretBase_HardChair 0x2Ca +#define METATILE_SecretBase_RedPlant_Base1 0x2D8 +#define METATILE_SecretBase_RedPlant_Base2 0x2D9 +#define METATILE_SecretBase_TropicalPlant_Base1 0x2DA +#define METATILE_SecretBase_TropicalPlant_Base2 0x2DB +#define METATILE_SecretBase_PrettyFlower_Base1 0x2DC +#define METATILE_SecretBase_PrettyFlower_Base2 0x2DD +#define METATILE_SecretBase_ColorfulFlowers_BaseLeft1 0x2E8 +#define METATILE_SecretBase_ColorfulFlowers_BaseRight1 0x2E9 +#define METATILE_SecretBase_ColorfulFlowers_BaseLeft2 0x2EA +#define METATILE_SecretBase_ColorfulFlowers_BaseRight2 0x2EB +#define METATILE_SecretBase_BigPlant_BaseLeft1 0x2EC +#define METATILE_SecretBase_BigPlant_BaseRight1 0x2ED +#define METATILE_SecretBase_BigPlant_BaseLeft2 0x2EE +#define METATILE_SecretBase_BigPlant_BaseRight2 0x2EF +#define METATILE_SecretBase_GorgeousPlant_BaseLeft1 0x2F8 +#define METATILE_SecretBase_GorgeousPlant_BaseRight1 0x2F9 +#define METATILE_SecretBase_GorgeousPlant_BaseLeft2 0x2FA +#define METATILE_SecretBase_GorgeousPlant_BaseRight2 0x2FB +#define METATILE_SecretBase_TV 0x2F4 +#define METATILE_SecretBase_RoundTV 0x2F5 +#define METATILE_SecretBase_CuteTV 0x2F6 +#define METATILE_SecretBase_PikaPoster_Left 0x31C +#define METATILE_SecretBase_PikaPoster_Right 0x31D +#define METATILE_SecretBase_LongPoster_Left 0x31E +#define METATILE_SecretBase_LongPoster_Right 0x31F +#define METATILE_SecretBase_SeaPoster_Left 0x324 +#define METATILE_SecretBase_SeaPoster_Right 0x325 +#define METATILE_SecretBase_SkyPoster_Left 0x326 +#define METATILE_SecretBase_SkyPoster_Right 0x327 +#define METATILE_SecretBase_KissPoster_Left 0x32C +#define METATILE_SecretBase_KissPoster_Right 0x32D +#define METATILE_SecretBase_BallPoster 0x330 +#define METATILE_SecretBase_GreenPoster 0x331 +#define METATILE_SecretBase_RedPoster 0x332 +#define METATILE_SecretBase_BluePoster 0x333 +#define METATILE_SecretBase_CutePoster 0x334 +#define METATILE_SecretBase_SilverShield_Base1 0x2DE +#define METATILE_SecretBase_SilverShield_Base2 0x2DF +#define METATILE_SecretBase_GoldShield_Base1 0x336 +#define METATILE_SecretBase_GoldShield_Base2 0x337 +#define METATILE_SecretBase_RedBalloon 0x338 +#define METATILE_SecretBase_BlueBalloon 0x33c +#define METATILE_SecretBase_YellowBalloon 0x340 + #endif // GUARD_METATILE_LABELS_H diff --git a/include/constants/tv.h b/include/constants/tv.h index fddf650e4c..6f686f7276 100644 --- a/include/constants/tv.h +++ b/include/constants/tv.h @@ -46,4 +46,92 @@ // Number of ribbons to put Spot the Cuties on air #define NUM_CUTIES_RIBBONS 4 +// TV Show states for Secret Base Secrets +#define SBSECRETS_STATE_INTRO 0 +#define SBSECRETS_STATE_DO_NEXT1 1 +#define SBSECRETS_STATE_DO_NEXT2 2 +#define SBSECRETS_STATE_TOOK_X_STEPS 3 +#define SBSECRETS_STATE_BASE_INTEREST_LOW 4 +#define SBSECRETS_STATE_BASE_INTEREST_MED 5 +#define SBSECRETS_STATE_BASE_INTEREST_HIGH 6 +#define SBSECRETS_STATE_OUTRO 7 +#define SBSECRETS_STATE_NOTHING_USED1 8 +#define SBSECRETS_STATE_NOTHING_USED2 9 +#define SBSECRETS_STATE_USED_CHAIR 10 +#define SBSECRETS_STATE_USED_BALLOON 11 +#define SBSECRETS_STATE_USED_TENT 12 +#define SBSECRETS_STATE_USED_PLANT 13 +#define SBSECRETS_STATE_USED_GOLD_SHIELD 14 +#define SBSECRETS_STATE_USED_SILVER_SHIELD 15 +#define SBSECRETS_STATE_USED_GLASS_ORNAMENT 16 +#define SBSECRETS_STATE_USED_TV 17 +#define SBSECRETS_STATE_USED_MUD_BALL 18 +#define SBSECRETS_STATE_USED_BAG 19 +#define SBSECRETS_STATE_USED_CUSHION 20 +#define SBSECRETS_STATE_HIT_CUSHION 21 +#define SBSECRETS_STATE_HUGGED_CUSHION 22 +#define SBSECRETS_STATE_BATTLED_WON 23 +#define SBSECRETS_STATE_BATTLED_LOST 24 +#define SBSECRETS_STATE_DECLINED_BATTLE 25 +#define SBSECRETS_STATE_USED_POSTER 26 +#define SBSECRETS_STATE_USED_NOTE_MAT 27 +#define SBSECRETS_STATE_BATTLED_DRAW 28 +#define SBSECRETS_STATE_USED_SPIN_MAT 29 +#define SBSECRETS_STATE_USED_SAND_ORNAMENT 30 +#define SBSECRETS_STATE_USED_DESK 31 +#define SBSECRETS_STATE_USED_BRICK 32 +#define SBSECRETS_STATE_USED_SOLID_BOARD 33 +#define SBSECRETS_STATE_USED_FENCE 34 +#define SBSECRETS_STATE_USED_GLITTER_MAT 35 +#define SBSECRETS_STATE_USED_TIRE 36 +#define SBSECRETS_STATE_USED_STAND 37 +#define SBSECRETS_STATE_USED_BREAKABLE_DOOR 38 +#define SBSECRETS_STATE_USED_DOLL 39 +#define SBSECRETS_STATE_USED_SLIDE 40 +#define SBSECRETS_STATE_DECLINED_SLIDE 41 +#define SBSECRETS_STATE_USED_JUMP_MAT 42 +#define SBSECRETS_NUM_STATES 43 + +// The below flags are set when interacting with objects in a friends secret base +// Theyre set as bits in a var, and with 32 flags they're spread across 2 vars + +// VAR_SECRET_BASE_LOW_TV_FLAGS +#define SECRET_BASE_USED_CHAIR (1 << 0) +#define SECRET_BASE_USED_BALLOON (1 << 1) +#define SECRET_BASE_USED_TENT (1 << 2) +#define SECRET_BASE_USED_PLANT (1 << 3) +#define SECRET_BASE_USED_GOLD_SHIELD (1 << 4) +#define SECRET_BASE_USED_SILVER_SHIELD (1 << 5) +#define SECRET_BASE_USED_GLASS_ORNAMENT (1 << 6) +#define SECRET_BASE_USED_TV (1 << 7) +#define SECRET_BASE_USED_MUD_BALL (1 << 8) +#define SECRET_BASE_USED_BAG (1 << 9) +#define SECRET_BASE_USED_CUSHION (1 << 10) +#define SECRET_BASE_BATTLED_WON (1 << 11) +#define SECRET_BASE_BATTLED_LOST (1 << 12) +#define SECRET_BASE_DECLINED_BATTLE (1 << 13) +#define SECRET_BASE_USED_POSTER (1 << 14) +#define SECRET_BASE_USED_NOTE_MAT (1 << 15) + +// VAR_SECRET_BASE_HIGH_TV_FLAGS +#define SECRET_BASE_BATTLED_DRAW (1 << 0) +#define SECRET_BASE_USED_SPIN_MAT (1 << 1) +#define SECRET_BASE_USED_SAND_ORNAMENT (1 << 2) +#define SECRET_BASE_USED_DESK (1 << 3) +#define SECRET_BASE_USED_BRICK (1 << 4) +#define SECRET_BASE_USED_SOLID_BOARD (1 << 5) +#define SECRET_BASE_USED_FENCE (1 << 6) +#define SECRET_BASE_USED_GLITTER_MAT (1 << 7) +#define SECRET_BASE_USED_TIRE (1 << 8) +#define SECRET_BASE_USED_STAND (1 << 9) +#define SECRET_BASE_USED_BREAKABLE_DOOR (1 << 10) +#define SECRET_BASE_USED_DOLL (1 << 11) +#define SECRET_BASE_USED_SLIDE (1 << 12) +#define SECRET_BASE_DECLINED_SLIDE (1 << 13) +#define SECRET_BASE_USED_JUMP_MAT (1 << 14) +#define SECRET_BASE_UNUSED_FLAG (1 << 15) + +#define NUM_SECRET_BASE_FLAGS 32 // by definition, bitfield of 2 u16s + + #endif //GUARD_CONSTANTS_TV_H diff --git a/include/event_scripts.h b/include/event_scripts.h index c2716a214a..a56ab89e02 100644 --- a/include/event_scripts.h +++ b/include/event_scripts.h @@ -240,49 +240,49 @@ extern const u8 gTVWhatsNo1InHoennTodayText05[]; extern const u8 gTVWhatsNo1InHoennTodayText06[]; extern const u8 gTVWhatsNo1InHoennTodayText07[]; extern const u8 gTVWhatsNo1InHoennTodayText08[]; -extern const u8 gTVSecretBaseSecretsText00[]; -extern const u8 gTVSecretBaseSecretsText01[]; -extern const u8 gTVSecretBaseSecretsText02[]; -extern const u8 gTVSecretBaseSecretsText03[]; -extern const u8 gTVSecretBaseSecretsText04[]; -extern const u8 gTVSecretBaseSecretsText05[]; -extern const u8 gTVSecretBaseSecretsText06[]; -extern const u8 gTVSecretBaseSecretsText07[]; -extern const u8 gTVSecretBaseSecretsText08[]; -extern const u8 gTVSecretBaseSecretsText09[]; -extern const u8 gTVSecretBaseSecretsText10[]; -extern const u8 gTVSecretBaseSecretsText11[]; -extern const u8 gTVSecretBaseSecretsText12[]; -extern const u8 gTVSecretBaseSecretsText13[]; -extern const u8 gTVSecretBaseSecretsText14[]; -extern const u8 gTVSecretBaseSecretsText15[]; -extern const u8 gTVSecretBaseSecretsText16[]; -extern const u8 gTVSecretBaseSecretsText17[]; -extern const u8 gTVSecretBaseSecretsText18[]; -extern const u8 gTVSecretBaseSecretsText19[]; -extern const u8 gTVSecretBaseSecretsText20[]; -extern const u8 gTVSecretBaseSecretsText21[]; -extern const u8 gTVSecretBaseSecretsText22[]; -extern const u8 gTVSecretBaseSecretsText23[]; -extern const u8 gTVSecretBaseSecretsText24[]; -extern const u8 gTVSecretBaseSecretsText25[]; -extern const u8 gTVSecretBaseSecretsText26[]; -extern const u8 gTVSecretBaseSecretsText27[]; -extern const u8 gTVSecretBaseSecretsText28[]; -extern const u8 gTVSecretBaseSecretsText29[]; -extern const u8 gTVSecretBaseSecretsText30[]; -extern const u8 gTVSecretBaseSecretsText31[]; -extern const u8 gTVSecretBaseSecretsText32[]; -extern const u8 gTVSecretBaseSecretsText33[]; -extern const u8 gTVSecretBaseSecretsText34[]; -extern const u8 gTVSecretBaseSecretsText35[]; -extern const u8 gTVSecretBaseSecretsText36[]; -extern const u8 gTVSecretBaseSecretsText37[]; -extern const u8 gTVSecretBaseSecretsText38[]; -extern const u8 gTVSecretBaseSecretsText39[]; -extern const u8 gTVSecretBaseSecretsText40[]; -extern const u8 gTVSecretBaseSecretsText41[]; -extern const u8 gTVSecretBaseSecretsText42[]; +extern const u8 TVSecretBaseSecrets_Text_Intro[]; +extern const u8 TVSecretBaseSecrets_Text_WhatWillPlayerDoNext1[]; +extern const u8 TVSecretBaseSecrets_Text_WhatWillPlayerDoNext2[]; +extern const u8 TVSecretBaseSecrets_Text_TookXStepsBeforeLeaving[]; +extern const u8 TVSecretBaseSecrets_Text_BaseFailedToInterestPlayer[]; +extern const u8 TVSecretBaseSecrets_Text_PlayerEnjoyedBase[]; +extern const u8 TVSecretBaseSecrets_Text_PlayerHugeFanOfBase[]; +extern const u8 TVSecretBaseSecrets_Text_Outro[]; +extern const u8 TVSecretBaseSecrets_Text_StoppedMoving1[]; +extern const u8 TVSecretBaseSecrets_Text_StoppedMoving2[]; +extern const u8 TVSecretBaseSecrets_Text_UsedChair[]; +extern const u8 TVSecretBaseSecrets_Text_UsedBalloon[]; +extern const u8 TVSecretBaseSecrets_Text_UsedTent[]; +extern const u8 TVSecretBaseSecrets_Text_UsedPlant[]; +extern const u8 TVSecretBaseSecrets_Text_UsedGoldShield[]; +extern const u8 TVSecretBaseSecrets_Text_UsedSilverShield[]; +extern const u8 TVSecretBaseSecrets_Text_UsedGlassOrnament[]; +extern const u8 TVSecretBaseSecrets_Text_UsedTV[]; +extern const u8 TVSecretBaseSecrets_Text_UsedMudBall[]; +extern const u8 TVSecretBaseSecrets_Text_UsedBag[]; +extern const u8 TVSecretBaseSecrets_Text_UsedCushion[]; +extern const u8 TVSecretBaseSecrets_Text_HitCushion[]; +extern const u8 TVSecretBaseSecrets_Text_HuggedCushion[]; +extern const u8 TVSecretBaseSecrets_Text_BattledWon[]; +extern const u8 TVSecretBaseSecrets_Text_BattledLost[]; +extern const u8 TVSecretBaseSecrets_Text_DeclinedBattle[]; +extern const u8 TVSecretBaseSecrets_Text_UsedPoster[]; +extern const u8 TVSecretBaseSecrets_Text_UsedNoteMat[]; +extern const u8 TVSecretBaseSecrets_Text_BattledDraw[]; +extern const u8 TVSecretBaseSecrets_Text_UsedSpinMat[]; +extern const u8 TVSecretBaseSecrets_Text_UsedSandOrnament[]; +extern const u8 TVSecretBaseSecrets_Text_UsedDesk[]; +extern const u8 TVSecretBaseSecrets_Text_UsedBrick[]; +extern const u8 TVSecretBaseSecrets_Text_UsedSolidBoard[]; +extern const u8 TVSecretBaseSecrets_Text_UsedFence[]; +extern const u8 TVSecretBaseSecrets_Text_UsedGlitterMat[]; +extern const u8 TVSecretBaseSecrets_Text_UsedTire[]; +extern const u8 TVSecretBaseSecrets_Text_UsedStand[]; +extern const u8 TVSecretBaseSecrets_Text_BrokeDoor[]; +extern const u8 TVSecretBaseSecrets_Text_UsedDoll[]; +extern const u8 TVSecretBaseSecrets_Text_UsedSlide[]; +extern const u8 TVSecretBaseSecrets_Text_UsedSlideButDidntGoDown[]; +extern const u8 TVSecretBaseSecrets_Text_UsedJumpMat[]; extern const u8 gTVSafariFanClubText00[]; extern const u8 gTVSafariFanClubText01[]; extern const u8 gTVSafariFanClubText02[]; diff --git a/include/fldeff_misc.h b/include/fldeff_misc.h index fd96f56469..6fd15c1ea7 100644 --- a/include/fldeff_misc.h +++ b/include/fldeff_misc.h @@ -21,7 +21,7 @@ void ShatterSecretBaseBreakableDoor(s16 x, s16 y); void PlaySecretBaseMusicNoteMatSound(s16 metatileId); void DoSecretBaseGlitterMatSparkle(void); bool8 FldEff_SandPillar(void); -void GetShieldToyTVDecorationInfo(void); +void InteractWithShieldOrTVDecoration(void); bool8 sub_80FADE4(u16 arg0, u8 arg1); void FldEffPoison_Start(void); bool32 FldEffPoison_IsActive(void); diff --git a/include/link.h b/include/link.h index 4d6771a03f..f41161d233 100644 --- a/include/link.h +++ b/include/link.h @@ -84,7 +84,7 @@ #define LINKTYPE_MULTI_BATTLE 0x2255 #define LINKTYPE_BATTLE_TOWER_50 0x2266 #define LINKTYPE_BATTLE_TOWER_OPEN 0x2277 -#define LINKTYPE_0x2288 0x2288 // battle? +#define LINKTYPE_BATTLE_TOWER 0x2288 #define LINKTYPE_0x3311 0x3311 #define LINKTYPE_0x3322 0x3322 #define LINKTYPE_BERRY_BLENDER_SETUP 0x4411 diff --git a/include/secret_base.h b/include/secret_base.h index 4e323b0c6d..b7d36a8ee9 100644 --- a/include/secret_base.h +++ b/include/secret_base.h @@ -12,13 +12,13 @@ void InitSecretBaseAppearance(bool8 hidePC); bool8 CurMapIsSecretBase(void); void SecretBasePerStepCallback(u8 taskId); bool8 TrySetCurSecretBase(void); -void SetSecretBaseSecretsTvFlags_Poster(void); -void SetSecretBaseSecretsTvFlags_MiscFurnature(void); -void SetSecretBaseSecretsTvFlags_LargeDecorationSpot(void); -void SetSecretBaseSecretsTvFlags_SmallDecorationSpot(void); +void CheckInteractedWithFriendsPosterDecor(void); +void CheckInteractedWithFriendsFurnitureBottom(void); +void CheckInteractedWithFriendsFurnitureMiddle(void); +void CheckInteractedWithFriendsFurnitureTop(void); void WarpIntoSecretBase(const struct MapPosition *position, const struct MapEvents *events); bool8 SecretBaseMapPopupEnabled(void); -void sub_80EB218(void); +void CheckLeftFriendsSecretBase(void); void ClearSecretBases(void); void SetCurSecretBaseIdFromPosition(const struct MapPosition *position, const struct MapEvents *events); void TrySetCurSecretBaseIndex(void); diff --git a/include/tv.h b/include/tv.h index dc4b22a99e..8e9233c2bd 100644 --- a/include/tv.h +++ b/include/tv.h @@ -18,7 +18,7 @@ void TryPutTrainerFanClubOnAir(void); void IncrementDailyPlantedBerries(void); void IncrementDailyPickedBerries(void); void IncrementDailyBattlePoints(u16 delta); -void sub_80F01B8(void); +void HideBattleTowerReporter(void); void ReceiveTvShowsData(void *src, u32 size, u8 masterIdx); void TryPutSpotTheCutiesOnAir(struct Pokemon *pokemon, u8 ribbonMonDataIdx); u32 GetPlayerIDAsU32(void); @@ -29,7 +29,7 @@ u8 GetRibbonCount(struct Pokemon *pokemon); void AlertTVThatPlayerPlayedSlotMachine(u16 nCoinsSpent); void AlertTVThatPlayerPlayedRoulette(u16 nCoinsSpent); void AlertTVOfNewCoinTotal(u16 nCoinsPaidOut); -void sub_80EEA70(void); +void TryPutSecretBaseSecretsOnAir(void); void sub_80EDB44(void); void sub_80EDC60(const u16 *words); void sub_80EDA80(void); diff --git a/src/battle_tower.c b/src/battle_tower.c index 47dc49065c..d84ddaa2a6 100644 --- a/src/battle_tower.c +++ b/src/battle_tower.c @@ -2908,13 +2908,13 @@ static void CopyEReaderTrainerFarewellMessage(void) FrontierSpeechToString(gSaveBlock2Ptr->frontier.ereaderTrainer.farewellPlayerLost); } -void sub_81653CC(void) +void TryHideBattleTowerReporter(void) { if (gSaveBlock2Ptr->frontier.challengeStatus == CHALLENGE_STATUS_SAVING) - sub_80F01B8(); + HideBattleTowerReporter(); if (FlagGet(FLAG_CANCEL_BATTLE_ROOM_CHALLENGE) == TRUE) { - sub_80F01B8(); + HideBattleTowerReporter(); FlagClear(FLAG_CANCEL_BATTLE_ROOM_CHALLENGE); } } diff --git a/src/cable_club.c b/src/cable_club.c index ab72ee3f2f..87a0bcfcaf 100644 --- a/src/cable_club.c +++ b/src/cable_club.c @@ -784,7 +784,8 @@ static void sub_80B3220(u8 taskId) } } -void sub_80B3254(void) +// Unused +void CableClubSaveGame(void) { SaveGame(); } @@ -1298,10 +1299,10 @@ void sub_80B3AF8(u8 taskId) } } -void sub_80B3BC4(void) +void TrySetBattleTowerLinkType(void) { if (gWirelessCommType == 0) { - gLinkType = LINKTYPE_0x2288; + gLinkType = LINKTYPE_BATTLE_TOWER; } } diff --git a/src/decoration.c b/src/decoration.c index d09f238d79..2a8fe973d4 100644 --- a/src/decoration.c +++ b/src/decoration.c @@ -2154,7 +2154,8 @@ void sub_8129708(void) } } -void sub_81297AC(void) +// Unused +void GetEventObjectLocalIdByFlag(void) { u8 i; diff --git a/src/field_control_avatar.c b/src/field_control_avatar.c index 424b85d625..4af42ca2fc 100644 --- a/src/field_control_avatar.c +++ b/src/field_control_avatar.c @@ -423,23 +423,23 @@ static const u8 *GetInteractedMetatileScript(struct MapPosition *position, u8 me return SecretBase_EventScript_ShieldOrToyTV; if (MetatileBehavior_IsMB_C6(metatileBehavior) == TRUE) { - SetSecretBaseSecretsTvFlags_MiscFurnature(); + CheckInteractedWithFriendsFurnitureBottom(); return NULL; } if (MetatileBehavior_HoldsLargeDecoration(metatileBehavior) == TRUE) { - SetSecretBaseSecretsTvFlags_LargeDecorationSpot(); + CheckInteractedWithFriendsFurnitureMiddle(); return NULL; } if (MetatileBehavior_HoldsSmallDecoration(metatileBehavior) == TRUE) { - SetSecretBaseSecretsTvFlags_SmallDecorationSpot(); + CheckInteractedWithFriendsFurnitureTop(); return NULL; } } else if (MetatileBehavior_IsSecretBasePoster(metatileBehavior) == TRUE) { - SetSecretBaseSecretsTvFlags_Poster(); + CheckInteractedWithFriendsPosterDecor(); return NULL; } diff --git a/src/fldeff_misc.c b/src/fldeff_misc.c index 591f61eb70..05fa433387 100644 --- a/src/fldeff_misc.c +++ b/src/fldeff_misc.c @@ -20,9 +20,11 @@ #include "string_util.h" #include "constants/field_effects.h" #include "constants/metatile_behaviors.h" -#include "constants/songs.h" -#include "constants/vars.h" #include "constants/metatile_labels.h" +#include "constants/songs.h" +#include "constants/tv.h" +#include "constants/vars.h" + EWRAM_DATA struct MapPosition gPlayerFacingPosition = {0}; @@ -801,16 +803,16 @@ static void Task_SecretBasePCTurnOn(u8 taskId) { case 4: case 12: - MapGridSetMetatileIdAt(data[0], data[1], 0x224); + MapGridSetMetatileIdAt(data[0], data[1], METATILE_SecretBase_PC_On); CurrentMapDrawMetatileAt(data[0], data[1]); break; case 8: case 16: - MapGridSetMetatileIdAt(data[0], data[1], 0x220); + MapGridSetMetatileIdAt(data[0], data[1], METATILE_SecretBase_PC); CurrentMapDrawMetatileAt(data[0], data[1]); break; case 20: - MapGridSetMetatileIdAt(data[0], data[1], 0x224); + MapGridSetMetatileIdAt(data[0], data[1], METATILE_SecretBase_PC_On); CurrentMapDrawMetatileAt(data[0], data[1]); FieldEffectActiveListRemove(FLDEFF_PCTURN_ON); EnableBothScriptContexts(); @@ -829,9 +831,9 @@ void DoSecretBasePCTurnOffEffect(void) PlaySE(SE_PC_OFF); if (!VarGet(VAR_CURRENT_SECRET_BASE)) - MapGridSetMetatileIdAt(x, y, 0x220 | METATILE_COLLISION_MASK); + MapGridSetMetatileIdAt(x, y, METATILE_SecretBase_PC | METATILE_COLLISION_MASK); else - MapGridSetMetatileIdAt(x, y, 0x221 | METATILE_COLLISION_MASK); + MapGridSetMetatileIdAt(x, y, METATILE_SecretBase_RegisterPC | METATILE_COLLISION_MASK); CurrentMapDrawMetatileAt(x, y); } @@ -875,16 +877,16 @@ static void DoBalloonSoundEffect(s16 metatileId) { switch (metatileId) { - case 824: + case METATILE_SecretBase_RedBalloon: PlaySE(SE_FUUSEN1); break; - case 828: + case METATILE_SecretBase_BlueBalloon: PlaySE(SE_FUUSEN2); break; - case 832: + case METATILE_SecretBase_YellowBalloon: PlaySE(SE_FUUSEN3); break; - case 552: + case METATILE_SecretBase_MudBall: PlaySE(SE_TOY_DANGO); break; } @@ -903,8 +905,8 @@ bool8 FldEff_NopA700(void) static void DoSecretBaseBreakableDoorEffect(s16 x, s16 y) { PlaySE(SE_TOY_KABE); - MapGridSetMetatileIdAt(x, y, 0x276); - MapGridSetMetatileIdAt(x, y - 1, 0x26E); + MapGridSetMetatileIdAt(x, y, METATILE_SecretBase_BreakableDoor_BottomOpen); + MapGridSetMetatileIdAt(x, y - 1, METATILE_SecretBase_BreakableDoor_TopOpen); CurrentMapDrawMetatileAt(x, y); CurrentMapDrawMetatileAt(x, y - 1); } @@ -946,28 +948,28 @@ static void Task_SecretBaseMusicNoteMatSound(u8 taskId) { switch (gTasks[taskId].tMetatileID) { - case 632: + case METATILE_SecretBase_NoteMat_C: PlaySE(SE_TOY_C); break; - case 633: + case METATILE_SecretBase_NoteMat_D: PlaySE(SE_TOY_D); break; - case 634: + case METATILE_SecretBase_NoteMat_E: PlaySE(SE_TOY_E); break; - case 635: + case METATILE_SecretBase_NoteMat_F: PlaySE(SE_TOY_F); break; - case 636: + case METATILE_SecretBase_NoteMat_G: PlaySE(SE_TOY_G); break; - case 637: + case METATILE_SecretBase_NoteMat_A: PlaySE(SE_TOY_A); break; - case 638: + case METATILE_SecretBase_NoteMat_B: PlaySE(SE_TOY_B); break; - case 691: + case METATILE_SecretBase_NoteMat_C_Sharp: PlaySE(SE_TOY_C1); break; } @@ -1071,12 +1073,12 @@ static void SpriteCB_SandPillar_0(struct Sprite *sprite) { PlaySE(SE_W088); - if (MapGridGetMetatileIdAt(gFieldEffectArguments[5], gFieldEffectArguments[6] - 1) == 646) - MapGridSetMetatileIdAt(gFieldEffectArguments[5], gFieldEffectArguments[6] - 1, 3586); + if (MapGridGetMetatileIdAt(gFieldEffectArguments[5], gFieldEffectArguments[6] - 1) == METATILE_SecretBase_SandOrnament_TopWall) + MapGridSetMetatileIdAt(gFieldEffectArguments[5], gFieldEffectArguments[6] - 1, METATILE_SecretBase_Wall_TopMid | METATILE_COLLISION_MASK); else - MapGridSetMetatileIdAt(gFieldEffectArguments[5], gFieldEffectArguments[6] - 1, 644); + MapGridSetMetatileIdAt(gFieldEffectArguments[5], gFieldEffectArguments[6] - 1, METATILE_SecretBase_SandOrnament_BrokenTop); - MapGridSetMetatileIdAt(gFieldEffectArguments[5], gFieldEffectArguments[6], 522); + MapGridSetMetatileIdAt(gFieldEffectArguments[5], gFieldEffectArguments[6], METATILE_SecretBase_Ground); CurrentMapDrawMetatileAt(gFieldEffectArguments[5], gFieldEffectArguments[6] - 1); CurrentMapDrawMetatileAt(gFieldEffectArguments[5], gFieldEffectArguments[6]); @@ -1092,7 +1094,7 @@ static void SpriteCB_SandPillar_1(struct Sprite *sprite) } else { - MapGridSetMetatileIdAt(gFieldEffectArguments[5], gFieldEffectArguments[6], 3724); + MapGridSetMetatileIdAt(gFieldEffectArguments[5], gFieldEffectArguments[6], METATILE_SecretBase_SandOrnament_BrokenBase | METATILE_COLLISION_MASK); CurrentMapDrawMetatileAt(gFieldEffectArguments[5], gFieldEffectArguments[6]); sprite->data[0] = 0; sprite->callback = SpriteCB_SandPillar_2; @@ -1105,7 +1107,7 @@ static void SpriteCB_SandPillar_2(struct Sprite *sprite) EnableBothScriptContexts(); } -void GetShieldToyTVDecorationInfo(void) +void InteractWithShieldOrTVDecoration(void) { s16 x, y; s32 metatileId; @@ -1116,7 +1118,7 @@ void GetShieldToyTVDecorationInfo(void) switch (metatileId) { - case 822: + case METATILE_SecretBase_GoldShield_Base1: ConvertIntToDecimalStringN(gStringVar1, 100, STR_CONV_MODE_LEFT_ALIGN, 3); StringCopy(gStringVar2, gText_Gold); @@ -1125,9 +1127,9 @@ void GetShieldToyTVDecorationInfo(void) if (!VarGet(VAR_CURRENT_SECRET_BASE)) return; - VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x10); + VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | SECRET_BASE_USED_GOLD_SHIELD); break; - case 734: + case METATILE_SecretBase_SilverShield_Base1: ConvertIntToDecimalStringN(gStringVar1, 50, STR_CONV_MODE_LEFT_ALIGN, 2); StringCopy(gStringVar2, gText_Silver); @@ -1136,31 +1138,31 @@ void GetShieldToyTVDecorationInfo(void) if (!VarGet(VAR_CURRENT_SECRET_BASE)) return; - VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x20); + VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | SECRET_BASE_USED_SILVER_SHIELD); break; - case 756: + case METATILE_SecretBase_TV: gSpecialVar_Result = 1; if (!VarGet(VAR_CURRENT_SECRET_BASE)) return; - VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x80); + VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | SECRET_BASE_USED_TV); break; - case 757: + case METATILE_SecretBase_RoundTV: gSpecialVar_Result = 2; if (!VarGet(VAR_CURRENT_SECRET_BASE)) return; - VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x80); + VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | SECRET_BASE_USED_TV); break; - case 758: + case METATILE_SecretBase_CuteTV: gSpecialVar_Result = 3; if (!VarGet(VAR_CURRENT_SECRET_BASE)) return; - VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x80); + VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | SECRET_BASE_USED_TV); break; } } @@ -1172,16 +1174,16 @@ bool8 sub_80FADE4(u16 metatileId, u8 arg1) if (!arg1) { - if (metatileId == 0x285 || metatileId == 0x286) + if (metatileId == METATILE_SecretBase_SandOrnament_Top || metatileId == METATILE_SecretBase_SandOrnament_TopWall) return TRUE; - if (metatileId == 0x237) + if (metatileId == METATILE_SecretBase_BreakableDoor_TopClosed) return TRUE; } else { - if (metatileId == 0x28d) + if (metatileId == METATILE_SecretBase_SandOrnament_Base1) return TRUE; - if (metatileId == 0x23F) + if (metatileId == METATILE_SecretBase_BreakableDoor_BottomClosed) return TRUE; } diff --git a/src/item.c b/src/item.c index 7b8b37c066..61069ca736 100644 --- a/src/item.c +++ b/src/item.c @@ -14,6 +14,7 @@ #include "battle_pyramid_bag.h" #include "constants/items.h" #include "constants/hold_effects.h" +#include "constants/tv.h" extern u16 gUnknown_0203CF30[]; @@ -542,7 +543,7 @@ bool8 RemoveBagItem(u16 itemId, u16 count) if (CurMapIsSecretBase() == TRUE) { - VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x200); + VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | SECRET_BASE_USED_BAG); VarSet(VAR_SECRET_BASE_LAST_ITEM_USED, itemId); } diff --git a/src/link.c b/src/link.c index d6ed9f5f34..939a4afc8b 100644 --- a/src/link.c +++ b/src/link.c @@ -1349,7 +1349,7 @@ bool8 sub_800AA60(void) { if (gLinkPlayers[i].trainerId == gSavedLinkPlayers[i].trainerId) { - if (gLinkType == LINKTYPE_0x2288) + if (gLinkType == LINKTYPE_BATTLE_TOWER) { if (gLinkType == gLinkPlayers[i].linkType) { @@ -1902,7 +1902,8 @@ bool32 sub_800B504(void) return FALSE; } -u8 sub_800B518(void) +// Unused +u8 GetWirelessCommType(void) { return gWirelessCommType; } diff --git a/src/mevent_news.c b/src/mevent_news.c index 192bb0fc7a..9e78cf406b 100644 --- a/src/mevent_news.c +++ b/src/mevent_news.c @@ -53,6 +53,7 @@ void sub_801DBDC(void) } } +// Unused u16 sub_801DC20(void) { u16 *r6 = &gSpecialVar_Result; diff --git a/src/overworld.c b/src/overworld.c index 76b201c3b3..4736d8a506 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -863,7 +863,7 @@ static void mli0_load_map(u32 a1) isOutdoors = IsMapTypeOutdoors(gMapHeader.mapType); isIndoors = IsMapTypeIndoors(gMapHeader.mapType); - sub_80EB218(); + CheckLeftFriendsSecretBase(); TrySetMapSaveWarpStatus(); ClearTempFieldEventData(); ResetCyclingRoadChallengeData(); diff --git a/src/script_pokemon_util_80F87D8.c b/src/script_pokemon_util_80F87D8.c index 0e191d652f..a5c6cfa916 100755 --- a/src/script_pokemon_util_80F87D8.c +++ b/src/script_pokemon_util_80F87D8.c @@ -52,6 +52,7 @@ void SetContestTrainerGfxIds(void) gSaveBlock1Ptr->vars[VAR_OBJ_GFX_ID_2 - VARS_START] = gContestMons[2].trainerGfxId; } +// Unused void sub_80F8814(void) { u16 var1; @@ -82,7 +83,8 @@ void BufferContestTrainerAndMonNames(void) BufferContestantMonSpecies(); } -void sub_80F8864(void) +// Unused +void DoesContestCategoryHaveWinner(void) { int contestWinner; switch (gSpecialVar_ContestCategory) @@ -105,10 +107,10 @@ void sub_80F8864(void) break; } - if (!gSaveBlock1Ptr->contestWinners[contestWinner].species) - gSpecialVar_0x8004 = 0; + if (gSaveBlock1Ptr->contestWinners[contestWinner].species == SPECIES_NONE) + gSpecialVar_0x8004 = FALSE; else - gSpecialVar_0x8004 = 1; + gSpecialVar_0x8004 = TRUE; } void SaveMuseumContestPainting(void) @@ -144,9 +146,10 @@ u8 CountPlayerContestPaintings(void) return count; } +// Unused void sub_80F8970(void) { - s16 sp[4]; + s16 conditions[CONTESTANT_COUNT]; int i, j; s16 condition; s8 var0; @@ -154,28 +157,27 @@ void sub_80F8970(void) u8 r8; u8 r7; - for (i = 0; i < 4; i++) - sp[i] = gContestMonConditions[i]; + for (i = 0; i < CONTESTANT_COUNT; i++) + conditions[i] = gContestMonConditions[i]; - for (i = 0; i < 3; i++) + for (i = 0; i < CONTESTANT_COUNT - 1; i++) { - for (j = 3; j > i; j--) + for (j = CONTESTANT_COUNT - 1; j > i; j--) { - if (sp[j - 1] < sp[j]) + if (conditions[j - 1] < conditions[j]) { - int temp = sp[j]; - sp[j] = sp[j - 1]; - sp[j - 1] = temp; + int temp; + SWAP(conditions[j], conditions[j - 1], temp) } } } - condition = sp[gSpecialVar_0x8006]; + condition = conditions[gSpecialVar_0x8006]; var0 = 0; r8 = 0; - for (i = 0; i < 4; i++) + for (i = 0; i < CONTESTANT_COUNT; i++) { - if (sp[i] == condition) + if (conditions[i] == condition) { var0++; if (i == gSpecialVar_0x8006) @@ -183,15 +185,15 @@ void sub_80F8970(void) } } - for (i = 0; i < 4; i++) + for (i = 0; i < CONTESTANT_COUNT; i++) { - if (sp[i] == condition) + if (conditions[i] == condition) break; } r7 = i; var2 = r8; - for (i = 0; i < 4; i++) + for (i = 0; i < CONTESTANT_COUNT; i++) { if (condition == gContestMonConditions[i]) { diff --git a/src/secret_base.c b/src/secret_base.c index f2ac6cb720..e7f40a72b9 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -41,11 +41,13 @@ #include "constants/maps.h" #include "constants/map_types.h" #include "constants/metatile_behaviors.h" +#include "constants/metatile_labels.h" #include "constants/moves.h" #include "constants/secret_bases.h" #include "constants/songs.h" #include "constants/species.h" #include "constants/trainers.h" +#include "constants/tv.h" struct SecretBaseRegistryMenu { @@ -88,13 +90,13 @@ static u8 GetSecretBaseOwnerType(u8 secretBaseId); static const struct SecretBaseEntranceMetatiles sSecretBaseEntranceMetatiles[] = { - {.closedMetatileId = 0x0026, .openMetatileId = 0x0036}, - {.closedMetatileId = 0x0027, .openMetatileId = 0x0037}, - {.closedMetatileId = 0x01a0, .openMetatileId = 0x01a1}, - {.closedMetatileId = 0x01a8, .openMetatileId = 0x01a9}, - {.closedMetatileId = 0x01b0, .openMetatileId = 0x01b1}, - {.closedMetatileId = 0x0208, .openMetatileId = 0x0210}, - {.closedMetatileId = 0x0271, .openMetatileId = 0x0278}, + {.closedMetatileId = METATILE_General_SecretBase_TreeLeft, .openMetatileId = METATILE_General_SecretBase_VineLeft}, + {.closedMetatileId = METATILE_General_SecretBase_TreeRight, .openMetatileId = METATILE_General_SecretBase_VineRight}, + {.closedMetatileId = METATILE_General_RedCaveIndent, .openMetatileId = METATILE_General_RedCaveOpen}, + {.closedMetatileId = METATILE_General_YellowCaveIndent, .openMetatileId = METATILE_General_YellowCaveOpen}, + {.closedMetatileId = METATILE_General_BlueCaveIndent, .openMetatileId = METATILE_General_BlueCaveOpen}, + {.closedMetatileId = METATILE_Fallarbor_BrownCaveIndent, .openMetatileId = METATILE_Fallarbor_BrownCaveOpen}, + {.closedMetatileId = METATILE_Fortree_SecretBase_Shrub, .openMetatileId = METATILE_Fortree_SecretBase_ShrubOpen}, }; // mapNum, warpId, x, y @@ -452,10 +454,10 @@ static void EnterNewlyCreatedSecretBase_StartFadeIn(void) ScriptContext2_Enable(); HideMapNamePopUpWindow(); - FindMetatileIdMapCoords(&x, &y, 0x220); + FindMetatileIdMapCoords(&x, &y, METATILE_SecretBase_PC); x += 7; y += 7; - MapGridSetMetatileIdAt(x, y, 0x220 | METATILE_COLLISION_MASK); + MapGridSetMetatileIdAt(x, y, METATILE_SecretBase_PC | METATILE_COLLISION_MASK); CurrentMapDrawMetatileAt(x, y); FadeInFromBlack(); CreateTask(EnterNewlyCreatedSecretBase_WaitFadeIn, 0); @@ -506,7 +508,7 @@ void InitSecretBaseAppearance(bool8 hidePC) secretBaseId = VarGet(VAR_CURRENT_SECRET_BASE); decorations = gSaveBlock1Ptr->secretBases[secretBaseId].decorations; decorPos = gSaveBlock1Ptr->secretBases[secretBaseId].decorationPositions; - for (x = 0; x < 16; x++) + for (x = 0; x < DECOR_MAX_SECRET_BASE; x++) { if (decorations[x] > 0 && decorations[x] <= NUM_DECORATIONS && gDecorations[decorations[x]].permission != DECORPERM_SPRITE) ShowDecorationOnMap((decorPos[x] >> 4) + 7, (decorPos[x] & 0xF) + 7, decorations[x]); @@ -515,14 +517,14 @@ void InitSecretBaseAppearance(bool8 hidePC) if (secretBaseId != 0) { // Another player's secret base. Change PC type to the "Register" PC. - FindMetatileIdMapCoords(&x, &y, 0x220); - MapGridSetMetatileIdAt(x + 7, y + 7, 0x221 | METATILE_COLLISION_MASK); + FindMetatileIdMapCoords(&x, &y, METATILE_SecretBase_PC); + MapGridSetMetatileIdAt(x + 7, y + 7, METATILE_SecretBase_RegisterPC | METATILE_COLLISION_MASK); } else if (hidePC == TRUE && VarGet(VAR_SECRET_BASE_INITIALIZED) == 1) { // Change PC to regular ground tile. - FindMetatileIdMapCoords(&x, &y, 0x220); - MapGridSetMetatileIdAt(x + 7, y + 7, 0x20a | METATILE_COLLISION_MASK); + FindMetatileIdMapCoords(&x, &y, METATILE_SecretBase_PC); + MapGridSetMetatileIdAt(x + 7, y + 7, METATILE_SecretBase_Ground | METATILE_COLLISION_MASK); } } } @@ -1174,48 +1176,60 @@ void SecretBasePerStepCallback(u8 taskId) VarSet(VAR_SECRET_BASE_STEP_COUNTER, VarGet(VAR_SECRET_BASE_STEP_COUNTER) + 1); behavior = MapGridGetMetatileBehaviorAt(x, y); tileId = MapGridGetMetatileIdAt(x, y); - if (tileId == 0x234 || tileId == 0x23C) + if (tileId == METATILE_SecretBase_Board_Top || tileId == METATILE_SecretBase_Board_Bottom) { if (sInFriendSecretBase == TRUE) { - VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x20); + VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | SECRET_BASE_USED_SOLID_BOARD); } } - else if (tileId == 0x2b8 || tileId == 0x2b9 || tileId == 0x2ba || tileId == 0x2c0 || tileId == 0x2c1 || tileId == 0x2c2 || tileId == 0x2c8 || tileId == 0x2c9 || tileId == 0x2ca) + else if (tileId == METATILE_SecretBase_SmallChair + || tileId == METATILE_SecretBase_PokemonChair + || tileId == METATILE_SecretBase_HeavyChair + || tileId == METATILE_SecretBase_PrettyChair + || tileId == METATILE_SecretBase_ComfortChair + || tileId == METATILE_SecretBase_RaggedChair + || tileId == METATILE_SecretBase_BrickChair + || tileId == METATILE_SecretBase_CampChair + || tileId == METATILE_SecretBase_HardChair) { if (sInFriendSecretBase == TRUE) - VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x01); + VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | SECRET_BASE_USED_CHAIR); } - else if (tileId == 0x239 || tileId == 0x241 || tileId == 0x251 || tileId == 0x259) + else if (tileId == METATILE_SecretBase_RedTent_DoorTop + || tileId == METATILE_SecretBase_RedTent_Door + || tileId == METATILE_SecretBase_BlueTent_DoorTop + || tileId == METATILE_SecretBase_BlueTent_Door) { if (sInFriendSecretBase == TRUE) - VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x04); + VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | SECRET_BASE_USED_TENT); } - else if ((behavior == 0x34 && tileId == 0x26d) || (behavior == 0x35 && MapGridGetMetatileIdAt(x, y) == 0x26a)) + else if ((behavior == MB_IMPASSABLE_NORTHEAST && tileId == METATILE_SecretBase_Stand_RightCorner) + || (behavior == MB_IMPASSABLE_NORTHWEST && MapGridGetMetatileIdAt(x, y) == METATILE_SecretBase_Stand_LeftCorner)) { if (sInFriendSecretBase == TRUE) - VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x200); + VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | SECRET_BASE_USED_STAND); } - else if (behavior == 0xc1 && tileId == 0x23d) + else if (behavior == MB_IMPASSABLE_WEST_AND_EAST && tileId == METATILE_SecretBase_Slide_Stairs) { if (sInFriendSecretBase == TRUE) { - VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) ^ 0x1000); - VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x2000); + VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) ^ SECRET_BASE_USED_SLIDE); + VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | SECRET_BASE_DECLINED_SLIDE); } } - else if (behavior == 0x47 && tileId == 0x23e) + else if (behavior == MB_SLIDE_SOUTH && tileId == METATILE_SecretBase_Slide) { if (sInFriendSecretBase == TRUE) { - VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x1000); - VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) ^ 0x2000); + VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | SECRET_BASE_USED_SLIDE); + VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) ^ SECRET_BASE_DECLINED_SLIDE); } } else if (MetatileBehavior_IsSecretBaseGlitterMat(behavior) == TRUE) { if (sInFriendSecretBase == TRUE) - VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x80); + VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | SECRET_BASE_USED_GLITTER_MAT); } else if (MetatileBehavior_IsSecretBaseBalloon(behavior) == TRUE) { @@ -1224,13 +1238,13 @@ void SecretBasePerStepCallback(u8 taskId) { switch ((int)MapGridGetMetatileIdAt(x, y)) { - case 0x338: - case 0x33c: - case 0x340: - VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x02); + case METATILE_SecretBase_RedBalloon: + case METATILE_SecretBase_BlueBalloon: + case METATILE_SecretBase_YellowBalloon: + VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | SECRET_BASE_USED_BALLOON); break; - case 0x228: - VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x100); + case METATILE_SecretBase_MudBall: + VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | SECRET_BASE_USED_MUD_BALL); break; } } @@ -1238,23 +1252,23 @@ void SecretBasePerStepCallback(u8 taskId) else if (MetatileBehavior_IsSecretBaseBreakableDoor(behavior) == TRUE) { if (sInFriendSecretBase == TRUE) - VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x400); + VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | SECRET_BASE_USED_BREAKABLE_DOOR); ShatterSecretBaseBreakableDoor(x, y); } else if (MetatileBehavior_IsSecretBaseSoundMat(behavior) == TRUE){ if (sInFriendSecretBase == TRUE) - VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x8000); + VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | SECRET_BASE_USED_NOTE_MAT); } else if (MetatileBehavior_IsSecretBaseJumpMat(behavior) == TRUE) { if (sInFriendSecretBase == TRUE) - VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x4000); + VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | SECRET_BASE_USED_JUMP_MAT); } else if (MetatileBehavior_IsSecretBaseSpinMat(behavior) == TRUE) { if (sInFriendSecretBase == TRUE) - VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x02); + VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | SECRET_BASE_USED_SPIN_MAT); } } break; @@ -1417,9 +1431,8 @@ static void SortSecretBasesByRegistryStatus(void) { if ((secretBases[i].registryStatus == 0 && secretBases[j].registryStatus == 1) || (secretBases[i].registryStatus == 2 && secretBases[j].registryStatus != 2)) { - struct SecretBase temp = secretBases[i]; - secretBases[i] = secretBases[j]; - secretBases[j] = temp; + struct SecretBase temp; + SWAP(secretBases[i], secretBases[j], temp) } } } @@ -1461,48 +1474,57 @@ bool8 SecretBaseBelongsToPlayer(struct SecretBase *secretBase) return TRUE; } +#define DELETED_BASE_A (1 << 0) +#define DELETED_BASE_B (1 << 1) +#define DELETED_BASE_C (1 << 2) + void DeleteFirstOldBaseFromPlayerInRecordMixingFriendsRecords(struct SecretBase *basesA, struct SecretBase *basesB, struct SecretBase *basesC) { u8 i; - u8 sbFlags = 0x0; + u8 sbFlags = 0; for (i = 0; i < SECRET_BASES_COUNT; i++) { - if (!(sbFlags & 0x1)) // 001 + if (!(sbFlags & DELETED_BASE_A)) { if (SecretBaseBelongsToPlayer(&basesA[i]) == TRUE) { ClearSecretBase(&basesA[i]); - sbFlags |= 1; + sbFlags |= DELETED_BASE_A; } } - if (!(sbFlags & 0x2)) // 010 + if (!(sbFlags & DELETED_BASE_B)) { if (SecretBaseBelongsToPlayer(&basesB[i]) == TRUE) { ClearSecretBase(&basesB[i]); - sbFlags |= 2; + sbFlags |= DELETED_BASE_B; } } - if (!(sbFlags & 0x4)) // 100 + if (!(sbFlags & DELETED_BASE_C)) { if (SecretBaseBelongsToPlayer(&basesC[i]) == TRUE) { ClearSecretBase(&basesC[i]); - sbFlags |= 4; + sbFlags |= DELETED_BASE_C; } } - if (sbFlags == 0x7) // 111 + if (sbFlags == (DELETED_BASE_A | DELETED_BASE_B | DELETED_BASE_C)) { break; } } } -bool8 sub_80EAD14(struct SecretBase *secretBase, struct SecretBase *secretBases, u8 c) +#undef DELETED_BASE_A +#undef DELETED_BASE_B +#undef DELETED_BASE_C + +// returns TRUE if secretBase was deleted, FALSE otherwise +static bool8 ClearDuplicateOwnedSecretBases(struct SecretBase *secretBase, struct SecretBase *secretBases, u8 c) { u8 i; @@ -1546,11 +1568,11 @@ void sub_80EAD94(struct SecretBase *basesA, struct SecretBase *basesB, struct Se { basesA[i].sbr_field_1_0 = 1; } - if (!sub_80EAD14(&basesA[i], basesB, i)) + if (!ClearDuplicateOwnedSecretBases(&basesA[i], basesB, i)) { - if (!sub_80EAD14(&basesA[i], basesC, i)) + if (!ClearDuplicateOwnedSecretBases(&basesA[i], basesC, i)) { - sub_80EAD14(&basesA[i], basesD, i); + ClearDuplicateOwnedSecretBases(&basesA[i], basesD, i); } } } @@ -1560,9 +1582,9 @@ void sub_80EAD94(struct SecretBase *basesA, struct SecretBase *basesB, struct Se if (basesB[i].secretBaseId) { basesB[i].battledOwnerToday = 0; - if (!sub_80EAD14(&basesB[i], basesC, i)) + if (!ClearDuplicateOwnedSecretBases(&basesB[i], basesC, i)) { - sub_80EAD14(&basesB[i], basesD, i); + ClearDuplicateOwnedSecretBases(&basesB[i], basesD, i); } } } @@ -1571,7 +1593,7 @@ void sub_80EAD94(struct SecretBase *basesA, struct SecretBase *basesB, struct Se if (basesC[i].secretBaseId) { basesC[i].battledOwnerToday = 0; - sub_80EAD14(&basesC[i], basesD, i); + ClearDuplicateOwnedSecretBases(&basesC[i], basesD, i); } if (basesD[i].secretBaseId) { @@ -1617,6 +1639,17 @@ void sub_80EAEF4(struct SecretBaseRecordMixer *mixers) sub_80EABA4(&mixers[2], 0); } +#define INIT_SECRET_BASE_RECORD_MIXER(linkId1, linkId2, linkId3) \ + mixers[0].secretBases = secretBases + linkId1 * recordSize; \ + mixers[0].version = gLinkPlayers[linkId1].version & 0xFF; \ + mixers[0].language = gLinkPlayers[linkId1].language; \ + mixers[1].secretBases = secretBases + linkId2 * recordSize; \ + mixers[1].version = gLinkPlayers[linkId2].version & 0xFF; \ + mixers[1].language = gLinkPlayers[linkId2].language; \ + mixers[2].secretBases = secretBases + linkId3 * recordSize; \ + mixers[2].version = gLinkPlayers[linkId3].version & 0xFF; \ + mixers[2].language = gLinkPlayers[linkId3].language; + void ReceiveSecretBasesData(void *secretBases, size_t recordSize, u8 linkIdx) { struct SecretBaseRecordMixer mixers[3]; @@ -1638,48 +1671,16 @@ void ReceiveSecretBasesData(void *secretBases, size_t recordSize, u8 linkIdx) switch (linkIdx) { case 0: - mixers[0].secretBases = secretBases + 1 * recordSize; - mixers[0].version = gLinkPlayers[1].version & 0xFF; - mixers[0].language = gLinkPlayers[1].language; - mixers[1].secretBases = secretBases + 2 * recordSize; - mixers[1].version = gLinkPlayers[2].version & 0xFF; - mixers[1].language = gLinkPlayers[2].language; - mixers[2].secretBases = secretBases + 3 * recordSize; - mixers[2].version = gLinkPlayers[3].version & 0xFF; - mixers[2].language = gLinkPlayers[3].language; + INIT_SECRET_BASE_RECORD_MIXER(1, 2, 3) break; case 1: - mixers[0].secretBases = secretBases + 2 * recordSize; - mixers[0].version = gLinkPlayers[2].version & 0xFF; - mixers[0].language = gLinkPlayers[2].language; - mixers[1].secretBases = secretBases + 3 * recordSize; - mixers[1].version = gLinkPlayers[3].version & 0xFF; - mixers[1].language = gLinkPlayers[3].language; - mixers[2].secretBases = secretBases + 0 * recordSize; - mixers[2].version = gLinkPlayers[0].version & 0xFF; - mixers[2].language = gLinkPlayers[0].language; + INIT_SECRET_BASE_RECORD_MIXER(2, 3, 0) break; case 2: - mixers[0].secretBases = secretBases + 3 * recordSize; - mixers[0].version = gLinkPlayers[3].version & 0xFF; - mixers[0].language = gLinkPlayers[3].language; - mixers[1].secretBases = secretBases + 0 * recordSize; - mixers[1].version = gLinkPlayers[0].version & 0xFF; - mixers[1].language = gLinkPlayers[0].language; - mixers[2].secretBases = secretBases + 1 * recordSize; - mixers[2].version = gLinkPlayers[1].version & 0xFF; - mixers[2].language = gLinkPlayers[1].language; + INIT_SECRET_BASE_RECORD_MIXER(3, 0, 1) break; case 3: - mixers[0].secretBases = secretBases + 0 * recordSize; - mixers[0].version = gLinkPlayers[0].version & 0xFF; - mixers[0].language = gLinkPlayers[0].language; - mixers[1].secretBases = secretBases + 1 * recordSize; - mixers[1].version = gLinkPlayers[1].version & 0xFF; - mixers[1].language = gLinkPlayers[1].language; - mixers[2].secretBases = secretBases + 2 * recordSize; - mixers[2].version = gLinkPlayers[2].version & 0xFF; - mixers[2].language = gLinkPlayers[2].language; + INIT_SECRET_BASE_RECORD_MIXER(0, 1, 2) break; } @@ -1734,13 +1735,13 @@ void InitSecretBaseVars(void) sInFriendSecretBase = FALSE; } -void sub_80EB218(void) +void CheckLeftFriendsSecretBase(void) { if (VarGet(VAR_SECRET_BASE_IS_NOT_LOCAL) && sInFriendSecretBase == TRUE && !CurMapIsSecretBase()) { VarSet(VAR_SECRET_BASE_IS_NOT_LOCAL, FALSE); sInFriendSecretBase = FALSE; - sub_80EEA70(); + TryPutSecretBaseSecretsOnAir(); VarSet(VAR_SECRET_BASE_STEP_COUNTER, 0); VarSet(VAR_SECRET_BASE_LAST_ITEM_USED, 0); VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, 0); @@ -1749,252 +1750,245 @@ void sub_80EB218(void) } } -void sub_80EB290(void) +void CheckInteractedWithFriendsDollDecor(void) { if (VarGet(VAR_CURRENT_SECRET_BASE) != 0) - VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x800); + VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | SECRET_BASE_USED_DOLL); } -void sub_80EB2C8(void) +void CheckInteractedWithFriendsCushionDecor(void) { if (VarGet(VAR_CURRENT_SECRET_BASE) != 0) - VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x400); + VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | SECRET_BASE_USED_CUSHION); } -void sub_80EB300(void) +void DeclinedSecretBaseBattle(void) { if (VarGet(VAR_CURRENT_SECRET_BASE) != 0) { - VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) & ~0x3800); - VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) & ~0x001); - VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x2000); + VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) & ~(SECRET_BASE_BATTLED_WON | SECRET_BASE_BATTLED_LOST | SECRET_BASE_DECLINED_BATTLE)); + VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) & ~(SECRET_BASE_BATTLED_DRAW)); + VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | SECRET_BASE_DECLINED_BATTLE); } } -void sub_80EB368(void) +void WonSecretBaseBattle(void) { if (VarGet(VAR_CURRENT_SECRET_BASE) != 0) { - VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) & ~0x3800); - VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) & ~0x001); - VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x800); + VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) & ~(SECRET_BASE_BATTLED_WON | SECRET_BASE_BATTLED_LOST | SECRET_BASE_DECLINED_BATTLE)); + VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) & ~(SECRET_BASE_BATTLED_DRAW)); + VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | SECRET_BASE_BATTLED_WON); } } -void sub_80EB3D0(void) +void LostSecretBaseBattle(void) { if (VarGet(VAR_CURRENT_SECRET_BASE) != 0) { - VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) & ~0x3800); - VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) & ~0x001); - VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x1000); + VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) & ~(SECRET_BASE_BATTLED_WON | SECRET_BASE_BATTLED_LOST | SECRET_BASE_DECLINED_BATTLE)); + VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) & ~(SECRET_BASE_BATTLED_DRAW)); + VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | SECRET_BASE_BATTLED_LOST); } } -void sub_80EB438(void) +void DrewSecretBaseBattle(void) { if (VarGet(VAR_CURRENT_SECRET_BASE) != 0) { - VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) & ~0x3800); - VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) & ~0x001); - VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x001); + VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) & ~(SECRET_BASE_BATTLED_WON | SECRET_BASE_BATTLED_LOST | SECRET_BASE_DECLINED_BATTLE)); + VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) & ~(SECRET_BASE_BATTLED_DRAW)); + VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | SECRET_BASE_BATTLED_DRAW); } } -void SetSecretBaseSecretsTvFlags_Poster(void) +void CheckInteractedWithFriendsPosterDecor(void) { s16 x, y; GetXYCoordsOneStepInFrontOfPlayer(&x, &y); switch (MapGridGetMetatileIdAt(x, y)) { - case 0x31C: - case 0x31D: - case 0x31E: - case 0x31F: - case 0x324: - case 0x325: - case 0x326: - case 0x327: - case 0x32C: - case 0x32D: - case 0x330: - case 0x331: - case 0x332: - case 0x333: - case 0x334: + case METATILE_SecretBase_PikaPoster_Left: + case METATILE_SecretBase_PikaPoster_Right: + case METATILE_SecretBase_LongPoster_Left: + case METATILE_SecretBase_LongPoster_Right: + case METATILE_SecretBase_SeaPoster_Left: + case METATILE_SecretBase_SeaPoster_Right: + case METATILE_SecretBase_SkyPoster_Left: + case METATILE_SecretBase_SkyPoster_Right: + case METATILE_SecretBase_KissPoster_Left: + case METATILE_SecretBase_KissPoster_Right: + case METATILE_SecretBase_BallPoster: + case METATILE_SecretBase_GreenPoster: + case METATILE_SecretBase_RedPoster: + case METATILE_SecretBase_BluePoster: + case METATILE_SecretBase_CutePoster: if (VarGet(VAR_CURRENT_SECRET_BASE) != 0) - VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x4000); + VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | SECRET_BASE_USED_POSTER); break; } } -void SetSecretBaseSecretsTvFlags_MiscFurnature(void) +void CheckInteractedWithFriendsFurnitureBottom(void) { s16 x, y; GetXYCoordsOneStepInFrontOfPlayer(&x, &y); switch (MapGridGetMetatileIdAt(x, y)) { - case 0x28a: - case 0x28b: - // Bird Statue + case METATILE_SecretBase_GlassOrnament_Base1: + case METATILE_SecretBase_GlassOrnament_Base2: if (VarGet(VAR_CURRENT_SECRET_BASE) != 0) - VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x40); + VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | SECRET_BASE_USED_GLASS_ORNAMENT); break; - case 0x2d8: - case 0x2d9: - case 0x2da: - case 0x2db: - case 0x2dc: - case 0x2dd: - case 0x2e8: - case 0x2e9: - case 0x2ea: - case 0x2eb: - case 0x2ec: - case 0x2ed: - case 0x2ee: - case 0x2ef: - case 0x2f8: - case 0x2f9: - case 0x2fa: - case 0x2fb: - // Plants + case METATILE_SecretBase_RedPlant_Base1: + case METATILE_SecretBase_RedPlant_Base2: + case METATILE_SecretBase_TropicalPlant_Base1: + case METATILE_SecretBase_TropicalPlant_Base2: + case METATILE_SecretBase_PrettyFlower_Base1: + case METATILE_SecretBase_PrettyFlower_Base2: + case METATILE_SecretBase_ColorfulFlowers_BaseLeft1: + case METATILE_SecretBase_ColorfulFlowers_BaseRight1: + case METATILE_SecretBase_ColorfulFlowers_BaseLeft2: + case METATILE_SecretBase_ColorfulFlowers_BaseRight2: + case METATILE_SecretBase_BigPlant_BaseLeft1: + case METATILE_SecretBase_BigPlant_BaseRight1: + case METATILE_SecretBase_BigPlant_BaseLeft2: + case METATILE_SecretBase_BigPlant_BaseRight2: + case METATILE_SecretBase_GorgeousPlant_BaseLeft1: + case METATILE_SecretBase_GorgeousPlant_BaseRight1: + case METATILE_SecretBase_GorgeousPlant_BaseLeft2: + case METATILE_SecretBase_GorgeousPlant_BaseRight2: if (VarGet(VAR_CURRENT_SECRET_BASE) != 0) - VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x8); + VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | SECRET_BASE_USED_PLANT); break; - case 0x22c: - case 0x233: - // Fence + case METATILE_SecretBase_Fence_Horizontal: + case METATILE_SecretBase_Fence_Vertical: if (VarGet(VAR_CURRENT_SECRET_BASE) != 0) - VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x40); + VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | SECRET_BASE_USED_FENCE); break; - case 0x288: - case 0x289: - // Tire + case METATILE_SecretBase_Tire_BottomLeft: + case METATILE_SecretBase_Tire_BottomRight: if (VarGet(VAR_CURRENT_SECRET_BASE) != 0) - VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x100); + VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | SECRET_BASE_USED_TIRE); break; - case 0x22d: - case 0x22e: - case 0x22f: - // Bricks + case METATILE_SecretBase_RedBrick_Bottom: + case METATILE_SecretBase_YellowBrick_Bottom: + case METATILE_SecretBase_BlueBrick_Bottom: if (VarGet(VAR_CURRENT_SECRET_BASE) != 0) - VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x10); + VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | SECRET_BASE_USED_BRICK); break; - case 0x287: - case 0x28f: - case 0x298: - case 0x299: - case 0x29a: - case 0x29b: - case 0x29c: - case 0x29d: - case 0x29e: - case 0x29f: - case 0x2ab: - case 0x2b0: - case 0x2b1: - case 0x2b2: - case 0x2b4: - case 0x2b5: - case 0x2b6: - case 0x2b7: - case 0x2cb: - case 0x2cc: - case 0x2cd: - case 0x2ce: - case 0x2cf: - // Tables + case METATILE_SecretBase_SmallDesk: + case METATILE_SecretBase_PokemonDesk: + case METATILE_SecretBase_HeavyDesk_BottomLeft: + case METATILE_SecretBase_HeavyDesk_BottomMid: + case METATILE_SecretBase_HeavyDesk_BottomRight: + case METATILE_SecretBase_RaggedDesk_BottomLeft: + case METATILE_SecretBase_RaggedDesk_BottomMid: + case METATILE_SecretBase_RaggedDesk_BottomRight: + case METATILE_SecretBase_ComfortDesk_BottomLeft: + case METATILE_SecretBase_ComfortDesk_BottomMid: + case METATILE_SecretBase_ComfortDesk_BottomRight: + case METATILE_SecretBase_BrickDesk_BottomLeft: + case METATILE_SecretBase_BrickDesk_BottomMid: + case METATILE_SecretBase_BrickDesk_BottomRight: + case METATILE_SecretBase_CampDesk_BottomLeft: + case METATILE_SecretBase_CampDesk_BottomMid: + case METATILE_SecretBase_CampDesk_BottomRight: + case METATILE_SecretBase_HardDesk_BottomLeft: + case METATILE_SecretBase_HardDesk_BottomMid: + case METATILE_SecretBase_HardDesk_BottomRight: + case METATILE_SecretBase_PrettyDesk_BottomLeft: + case METATILE_SecretBase_PrettyDesk_BottomMid: + case METATILE_SecretBase_PrettyDesk_BottomRight: if (VarGet(VAR_CURRENT_SECRET_BASE) != 0) - VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x8); + VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | SECRET_BASE_USED_DESK); break; } } -void SetSecretBaseSecretsTvFlags_LargeDecorationSpot(void) +void CheckInteractedWithFriendsFurnitureMiddle(void) { s16 x, y; GetXYCoordsOneStepInFrontOfPlayer(&x, &y); switch (MapGridGetMetatileIdAt(x, y)) { - case 0x291: - case 0x294: - case 0x297: - case 0x2a1: - case 0x2a5: - case 0x2a9: - case 0x2ad: - case 0x2bb: - case 0x2be: - case 0x2c3: - case 0x2c6: + case METATILE_SecretBase_HeavyDesk_TopMid: + case METATILE_SecretBase_RaggedDesk_TopMid: + case METATILE_SecretBase_ComfortDesk_TopMid: + case METATILE_SecretBase_BrickDesk_TopMid: + case METATILE_SecretBase_BrickDesk_Center: + case METATILE_SecretBase_CampDesk_TopMid: + case METATILE_SecretBase_CampDesk_Center: + case METATILE_SecretBase_HardDesk_TopMid: + case METATILE_SecretBase_HardDesk_Center: + case METATILE_SecretBase_PrettyDesk_TopMid: + case METATILE_SecretBase_PrettyDesk_Center: if (VarGet(VAR_CURRENT_SECRET_BASE) != 0) - VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x8); + VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | SECRET_BASE_USED_DESK); break; } } -void SetSecretBaseSecretsTvFlags_SmallDecorationSpot(void) +void CheckInteractedWithFriendsFurnitureTop(void) { s16 x, y; GetXYCoordsOneStepInFrontOfPlayer(&x, &y); switch (MapGridGetMetatileIdAt(x, y)) { - case 0x290: - case 0x292: - case 0x293: - case 0x295: - case 0x296: - case 0x2a0: - case 0x2a2: - case 0x2a3: - case 0x2a4: - case 0x2a6: - case 0x2a7: - case 0x2a8: - case 0x2aa: - case 0x2ac: - case 0x2ae: - case 0x2af: - case 0x2bc: - case 0x2bd: - case 0x2bf: - case 0x2c4: - case 0x2c5: - case 0x2c7: + case METATILE_SecretBase_HeavyDesk_TopLeft: + case METATILE_SecretBase_HeavyDesk_TopRight: + case METATILE_SecretBase_RaggedDesk_TopLeft: + case METATILE_SecretBase_RaggedDesk_TopRight: + case METATILE_SecretBase_ComfortDesk_TopLeft: + case METATILE_SecretBase_ComfortDesk_TopRight: + case METATILE_SecretBase_BrickDesk_TopLeft: + case METATILE_SecretBase_BrickDesk_TopRight: + case METATILE_SecretBase_BrickDesk_MidLeft: + case METATILE_SecretBase_BrickDesk_MidRight: + case METATILE_SecretBase_CampDesk_TopLeft: + case METATILE_SecretBase_CampDesk_TopRight: + case METATILE_SecretBase_CampDesk_MidLeft: + case METATILE_SecretBase_CampDesk_MidRight: + case METATILE_SecretBase_HardDesk_TopLeft: + case METATILE_SecretBase_HardDesk_TopRight: + case METATILE_SecretBase_HardDesk_MidLeft: + case METATILE_SecretBase_HardDesk_MidRight: + case METATILE_SecretBase_PrettyDesk_TopLeft: + case METATILE_SecretBase_PrettyDesk_TopRight: + case METATILE_SecretBase_PrettyDesk_MidLeft: + case METATILE_SecretBase_PrettyDesk_MidRight: if (VarGet(VAR_CURRENT_SECRET_BASE) != 0) - VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x8); + VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | SECRET_BASE_USED_DESK); break; - case 0x280: - case 0x281: + case METATILE_SecretBase_Tire_TopLeft: + case METATILE_SecretBase_Tire_TopRight: if (VarGet(VAR_CURRENT_SECRET_BASE) != 0) - VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x100); + VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | SECRET_BASE_USED_TIRE); break; - case 0x225: - case 0x226: - case 0x227: + case METATILE_SecretBase_RedBrick_Top: + case METATILE_SecretBase_YellowBrick_Top: + case METATILE_SecretBase_BlueBrick_Top: if (VarGet(VAR_CURRENT_SECRET_BASE) != 0) - VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x10); + VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | SECRET_BASE_USED_BRICK); break; } } -void SetSecretBaseSecretsTvFlags_SandOrnament(void) +void CheckInteractedWithFriendsSandOrnament(void) { s16 x, y; GetXYCoordsOneStepInFrontOfPlayer(&x, &y); switch ((int)MapGridGetMetatileIdAt(x, y)) { - case 0x28d: - case 0x28e: - // Sand Ornament + case METATILE_SecretBase_SandOrnament_Base1: + case METATILE_SecretBase_SandOrnament_Base2: if (VarGet(VAR_CURRENT_SECRET_BASE) != 0) - VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x4); + VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | SECRET_BASE_USED_SAND_ORNAMENT); break; } } diff --git a/src/tv.c b/src/tv.c index fc23e538de..2e92542530 100644 --- a/src/tv.c +++ b/src/tv.c @@ -637,50 +637,51 @@ static const u8 *const sTVWhatsNo1InHoennTodayTextGroup[] = { gTVWhatsNo1InHoennTodayText08 }; -static const u8 *const sTVSecretBaseSecretsTextGroup[] = { - gTVSecretBaseSecretsText00, - gTVSecretBaseSecretsText01, - gTVSecretBaseSecretsText02, - gTVSecretBaseSecretsText03, - gTVSecretBaseSecretsText04, - gTVSecretBaseSecretsText05, - gTVSecretBaseSecretsText06, - gTVSecretBaseSecretsText07, - gTVSecretBaseSecretsText08, - gTVSecretBaseSecretsText09, - gTVSecretBaseSecretsText10, - gTVSecretBaseSecretsText11, - gTVSecretBaseSecretsText12, - gTVSecretBaseSecretsText13, - gTVSecretBaseSecretsText14, - gTVSecretBaseSecretsText15, - gTVSecretBaseSecretsText16, - gTVSecretBaseSecretsText17, - gTVSecretBaseSecretsText18, - gTVSecretBaseSecretsText19, - gTVSecretBaseSecretsText20, - gTVSecretBaseSecretsText21, - gTVSecretBaseSecretsText22, - gTVSecretBaseSecretsText23, - gTVSecretBaseSecretsText24, - gTVSecretBaseSecretsText25, - gTVSecretBaseSecretsText26, - gTVSecretBaseSecretsText27, - gTVSecretBaseSecretsText28, - gTVSecretBaseSecretsText29, - gTVSecretBaseSecretsText30, - gTVSecretBaseSecretsText31, - gTVSecretBaseSecretsText32, - gTVSecretBaseSecretsText33, - gTVSecretBaseSecretsText34, - gTVSecretBaseSecretsText35, - gTVSecretBaseSecretsText36, - gTVSecretBaseSecretsText37, - gTVSecretBaseSecretsText38, - gTVSecretBaseSecretsText39, - gTVSecretBaseSecretsText40, - gTVSecretBaseSecretsText41, - gTVSecretBaseSecretsText42 +static const u8 *const sTVSecretBaseSecretsTextGroup[SBSECRETS_NUM_STATES] = +{ + [SBSECRETS_STATE_INTRO] = TVSecretBaseSecrets_Text_Intro, + [SBSECRETS_STATE_DO_NEXT1] = TVSecretBaseSecrets_Text_WhatWillPlayerDoNext1, + [SBSECRETS_STATE_DO_NEXT2] = TVSecretBaseSecrets_Text_WhatWillPlayerDoNext2, + [SBSECRETS_STATE_TOOK_X_STEPS] = TVSecretBaseSecrets_Text_TookXStepsBeforeLeaving, + [SBSECRETS_STATE_BASE_INTEREST_LOW] = TVSecretBaseSecrets_Text_BaseFailedToInterestPlayer, + [SBSECRETS_STATE_BASE_INTEREST_MED] = TVSecretBaseSecrets_Text_PlayerEnjoyedBase, + [SBSECRETS_STATE_BASE_INTEREST_HIGH] = TVSecretBaseSecrets_Text_PlayerHugeFanOfBase, + [SBSECRETS_STATE_OUTRO] = TVSecretBaseSecrets_Text_Outro, + [SBSECRETS_STATE_NOTHING_USED1] = TVSecretBaseSecrets_Text_StoppedMoving1, + [SBSECRETS_STATE_NOTHING_USED2] = TVSecretBaseSecrets_Text_StoppedMoving2, + [SBSECRETS_STATE_USED_CHAIR] = TVSecretBaseSecrets_Text_UsedChair, + [SBSECRETS_STATE_USED_BALLOON] = TVSecretBaseSecrets_Text_UsedBalloon, + [SBSECRETS_STATE_USED_TENT] = TVSecretBaseSecrets_Text_UsedTent, + [SBSECRETS_STATE_USED_PLANT] = TVSecretBaseSecrets_Text_UsedPlant, + [SBSECRETS_STATE_USED_GOLD_SHIELD] = TVSecretBaseSecrets_Text_UsedGoldShield, + [SBSECRETS_STATE_USED_SILVER_SHIELD] = TVSecretBaseSecrets_Text_UsedSilverShield, + [SBSECRETS_STATE_USED_GLASS_ORNAMENT] = TVSecretBaseSecrets_Text_UsedGlassOrnament, + [SBSECRETS_STATE_USED_TV] = TVSecretBaseSecrets_Text_UsedTV, + [SBSECRETS_STATE_USED_MUD_BALL] = TVSecretBaseSecrets_Text_UsedMudBall, + [SBSECRETS_STATE_USED_BAG] = TVSecretBaseSecrets_Text_UsedBag, + [SBSECRETS_STATE_USED_CUSHION] = TVSecretBaseSecrets_Text_UsedCushion, + [SBSECRETS_STATE_HIT_CUSHION] = TVSecretBaseSecrets_Text_HitCushion, + [SBSECRETS_STATE_HUGGED_CUSHION] = TVSecretBaseSecrets_Text_HuggedCushion, + [SBSECRETS_STATE_BATTLED_WON] = TVSecretBaseSecrets_Text_BattledWon, + [SBSECRETS_STATE_BATTLED_LOST] = TVSecretBaseSecrets_Text_BattledLost, + [SBSECRETS_STATE_DECLINED_BATTLE] = TVSecretBaseSecrets_Text_DeclinedBattle, + [SBSECRETS_STATE_USED_POSTER] = TVSecretBaseSecrets_Text_UsedPoster, + [SBSECRETS_STATE_USED_NOTE_MAT] = TVSecretBaseSecrets_Text_UsedNoteMat, + [SBSECRETS_STATE_BATTLED_DRAW] = TVSecretBaseSecrets_Text_BattledDraw, + [SBSECRETS_STATE_USED_SPIN_MAT] = TVSecretBaseSecrets_Text_UsedSpinMat, + [SBSECRETS_STATE_USED_SAND_ORNAMENT] = TVSecretBaseSecrets_Text_UsedSandOrnament, + [SBSECRETS_STATE_USED_DESK] = TVSecretBaseSecrets_Text_UsedDesk, + [SBSECRETS_STATE_USED_BRICK] = TVSecretBaseSecrets_Text_UsedBrick, + [SBSECRETS_STATE_USED_SOLID_BOARD] = TVSecretBaseSecrets_Text_UsedSolidBoard, + [SBSECRETS_STATE_USED_FENCE] = TVSecretBaseSecrets_Text_UsedFence, + [SBSECRETS_STATE_USED_GLITTER_MAT] = TVSecretBaseSecrets_Text_UsedGlitterMat, + [SBSECRETS_STATE_USED_TIRE] = TVSecretBaseSecrets_Text_UsedTire, + [SBSECRETS_STATE_USED_STAND] = TVSecretBaseSecrets_Text_UsedStand, + [SBSECRETS_STATE_USED_BREAKABLE_DOOR] = TVSecretBaseSecrets_Text_BrokeDoor, + [SBSECRETS_STATE_USED_DOLL] = TVSecretBaseSecrets_Text_UsedDoll, + [SBSECRETS_STATE_USED_SLIDE] = TVSecretBaseSecrets_Text_UsedSlide, + [SBSECRETS_STATE_DECLINED_SLIDE] = TVSecretBaseSecrets_Text_UsedSlideButDidntGoDown, + [SBSECRETS_STATE_USED_JUMP_MAT] = TVSecretBaseSecrets_Text_UsedJumpMat }; static const u8 *const sTVSafariFanClubTextGroup[] = { @@ -709,39 +710,42 @@ static const u8 *const sTVInSearchOfTrainersTextGroup[] = { gTVInSearchOfTrainersText08 }; -const u8 sTVSecretBaseSecretsStateLookup[] = { - 0x0a, - 0x0b, - 0x0c, - 0x0d, - 0x0e, - 0x0f, - 0x10, - 0x11, - 0x12, - 0x13, - 0x14, - 0x17, - 0x18, - 0x19, - 0x1a, - 0x1b, - 0x1c, - 0x1d, - 0x1e, - 0x1f, - 0x20, - 0x21, - 0x22, - 0x23, - 0x24, - 0x25, - 0x26, - 0x27, - 0x28, - 0x29, - 0x2a, - 0x2b +// Secret Base Secrets TV Show states for actions that can be taken in a secret base +// The flags that determine whether or not the action was taken are commented +const u8 sTVSecretBaseSecretsActions[NUM_SECRET_BASE_FLAGS] = +{ + SBSECRETS_STATE_USED_CHAIR, // SECRET_BASE_USED_CHAIR + SBSECRETS_STATE_USED_BALLOON, // SECRET_BASE_USED_BALLOON + SBSECRETS_STATE_USED_TENT, // SECRET_BASE_USED_TENT + SBSECRETS_STATE_USED_PLANT, // SECRET_BASE_USED_PLANT + SBSECRETS_STATE_USED_GOLD_SHIELD, // SECRET_BASE_USED_GOLD_SHIELD + SBSECRETS_STATE_USED_SILVER_SHIELD, // SECRET_BASE_USED_SILVER_SHIELD + SBSECRETS_STATE_USED_GLASS_ORNAMENT, // SECRET_BASE_USED_GLASS_ORNAMENT + SBSECRETS_STATE_USED_TV, // SECRET_BASE_USED_TV + SBSECRETS_STATE_USED_MUD_BALL, // SECRET_BASE_USED_MUD_BALL + SBSECRETS_STATE_USED_BAG, // SECRET_BASE_USED_BAG + SBSECRETS_STATE_USED_CUSHION, // SECRET_BASE_USED_CUSHION + SBSECRETS_STATE_BATTLED_WON, // SECRET_BASE_BATTLED_WON + SBSECRETS_STATE_BATTLED_LOST, // SECRET_BASE_BATTLED_LOST + SBSECRETS_STATE_DECLINED_BATTLE, // SECRET_BASE_DECLINED_BATTLE + SBSECRETS_STATE_USED_POSTER, // SECRET_BASE_USED_POSTER + SBSECRETS_STATE_USED_NOTE_MAT, // SECRET_BASE_USED_NOTE_MAT + SBSECRETS_STATE_BATTLED_DRAW, // SECRET_BASE_BATTLED_DRAW + SBSECRETS_STATE_USED_SPIN_MAT, // SECRET_BASE_USED_SPIN_MAT + SBSECRETS_STATE_USED_SAND_ORNAMENT, // SECRET_BASE_USED_SAND_ORNAMENT + SBSECRETS_STATE_USED_DESK, // SECRET_BASE_USED_DESK + SBSECRETS_STATE_USED_BRICK, // SECRET_BASE_USED_BRICK + SBSECRETS_STATE_USED_SOLID_BOARD, // SECRET_BASE_USED_SOLID_BOARD + SBSECRETS_STATE_USED_FENCE, // SECRET_BASE_USED_FENCE + SBSECRETS_STATE_USED_GLITTER_MAT, // SECRET_BASE_USED_GLITTER_MAT + SBSECRETS_STATE_USED_TIRE, // SECRET_BASE_USED_TIRE + SBSECRETS_STATE_USED_STAND, // SECRET_BASE_USED_STAND + SBSECRETS_STATE_USED_BREAKABLE_DOOR, // SECRET_BASE_USED_BREAKABLE_DOOR + SBSECRETS_STATE_USED_DOLL, // SECRET_BASE_USED_DOLL + SBSECRETS_STATE_USED_SLIDE, // SECRET_BASE_USED_SLIDE + SBSECRETS_STATE_DECLINED_SLIDE, // SECRET_BASE_DECLINED_SLIDE + SBSECRETS_STATE_USED_JUMP_MAT, // SECRET_BASE_USED_JUMP_MAT + SBSECRETS_NUM_STATES // SECRET_BASE_UNUSED_FLAG. Odd that this is included, if it were used it would overflow sTVSecretBaseSecretsTextGroup }; // .text @@ -2544,7 +2548,7 @@ void TryPutFrontierTVShowOnAir(u16 winStreak, u8 facilityAndMode) } } -void sub_80EEA70(void) +void TryPutSecretBaseSecretsOnAir(void) { TVShow *show; u8 strbuf[32]; @@ -3591,7 +3595,7 @@ void GetMomOrDadStringForTVMessage(void) } } -void sub_80F01B8(void) +void HideBattleTowerReporter(void) { VarSet(VAR_BRAVO_TRAINER_BATTLE_TOWER_ON, 0); RemoveEventObjectByLocalIdAndMap(5, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup); @@ -7340,35 +7344,32 @@ static void DoTVShowWhatsNo1InHoennToday(void) ShowFieldMessage(sTVWhatsNo1InHoennTodayTextGroup[state]); } -u8 TVShowGetFlagCount(TVShow *show) +u8 SecretBaseSecrets_GetNumActionsTaken(TVShow *show) { u8 i; - u8 tot; + u8 flagsSet; - for (i = 0, tot = 0; i < 32; i ++) + for (i = 0, flagsSet = 0; i < NUM_SECRET_BASE_FLAGS; i ++) { if ((show->secretBaseSecrets.flags >> i) & 1) - { - tot ++; - } + flagsSet++; } - return tot; + return flagsSet; } -static u8 SecretBaseSecrets_GetStateForFlagNumber(TVShow *show, u8 a1) +static u8 SecretBaseSecrets_GetStateByFlagNumber(TVShow *show, u8 flagId) { u8 i; - u8 tot; + u8 flagsSet; - for (i = 0, tot = 0; i < 32; i ++) + for (i = 0, flagsSet = 0; i < NUM_SECRET_BASE_FLAGS; i ++) { if ((show->secretBaseSecrets.flags >> i) & 1) { - if (tot == a1) - { - return sTVSecretBaseSecretsStateLookup[i]; - } - tot ++; + if (flagsSet == flagId) + return sTVSecretBaseSecretsActions[i]; + + flagsSet++; } } return 0; @@ -7378,7 +7379,7 @@ static void DoTVShowSecretBaseSecrets(void) { TVShow *show; u8 state; - u8 bitCount; + u8 numActions; u16 i; show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004]; @@ -7386,226 +7387,128 @@ static void DoTVShowSecretBaseSecrets(void) state = sTVShowState; switch (state) { - case 0: + case SBSECRETS_STATE_INTRO: TVShowConvertInternationalString(gStringVar1, show->secretBaseSecrets.baseOwnersName, show->secretBaseSecrets.baseOwnersNameLanguage); TVShowConvertInternationalString(gStringVar2, show->secretBaseSecrets.playerName, show->secretBaseSecrets.language); - bitCount = TVShowGetFlagCount(show); - if (bitCount == 0) + numActions = SecretBaseSecrets_GetNumActionsTaken(show); + if (numActions == 0) { - sTVShowState = 8; + sTVShowState = SBSECRETS_STATE_NOTHING_USED1; } else { - show->secretBaseSecrets.savedState = 1; - sTVSecretBaseSecretsRandomValues[0] = Random() % bitCount; - sTVShowState = SecretBaseSecrets_GetStateForFlagNumber(show, sTVSecretBaseSecretsRandomValues[0]); + show->secretBaseSecrets.savedState = SBSECRETS_STATE_DO_NEXT1; + sTVSecretBaseSecretsRandomValues[0] = Random() % numActions; + sTVShowState = SecretBaseSecrets_GetStateByFlagNumber(show, sTVSecretBaseSecretsRandomValues[0]); } break; - case 1: + case SBSECRETS_STATE_DO_NEXT1: TVShowConvertInternationalString(gStringVar2, show->secretBaseSecrets.playerName, show->secretBaseSecrets.language); - bitCount = TVShowGetFlagCount(show); - switch (bitCount) + numActions = SecretBaseSecrets_GetNumActionsTaken(show); + switch (numActions) { case 1: - sTVShowState = 9; + sTVShowState = SBSECRETS_STATE_NOTHING_USED2; break; case 2: - show->secretBaseSecrets.savedState = 2; + show->secretBaseSecrets.savedState = SBSECRETS_STATE_DO_NEXT2; if (sTVSecretBaseSecretsRandomValues[0] == 0) { - sTVShowState = SecretBaseSecrets_GetStateForFlagNumber(show, 1); + sTVShowState = SecretBaseSecrets_GetStateByFlagNumber(show, 1); } else { - sTVShowState = SecretBaseSecrets_GetStateForFlagNumber(show, 0); + sTVShowState = SecretBaseSecrets_GetStateByFlagNumber(show, 0); } break; default: for (i = 0; i < 0xFFFF; i ++) { - sTVSecretBaseSecretsRandomValues[1] = Random() % bitCount; + sTVSecretBaseSecretsRandomValues[1] = Random() % numActions; if (sTVSecretBaseSecretsRandomValues[1] != sTVSecretBaseSecretsRandomValues[0]) { break; } } - show->secretBaseSecrets.savedState = 2; - sTVShowState = SecretBaseSecrets_GetStateForFlagNumber(show, sTVSecretBaseSecretsRandomValues[1]); + show->secretBaseSecrets.savedState = SBSECRETS_STATE_DO_NEXT2; + sTVShowState = SecretBaseSecrets_GetStateByFlagNumber(show, sTVSecretBaseSecretsRandomValues[1]); break; } break; - case 2: + case SBSECRETS_STATE_DO_NEXT2: TVShowConvertInternationalString(gStringVar2, show->secretBaseSecrets.playerName, show->secretBaseSecrets.language); - bitCount = TVShowGetFlagCount(show); - if (bitCount == 2) + numActions = SecretBaseSecrets_GetNumActionsTaken(show); + if (numActions == 2) { - sTVShowState = 9; + sTVShowState = SBSECRETS_STATE_NOTHING_USED2; } else { for (i = 0; i < 0xFFFF; i ++) { - sTVSecretBaseSecretsRandomValues[2] = Random() % bitCount; + sTVSecretBaseSecretsRandomValues[2] = Random() % numActions; if (sTVSecretBaseSecretsRandomValues[2] != sTVSecretBaseSecretsRandomValues[0] && sTVSecretBaseSecretsRandomValues[2] != sTVSecretBaseSecretsRandomValues[1]) { break; } } - show->secretBaseSecrets.savedState = 3; - sTVShowState = SecretBaseSecrets_GetStateForFlagNumber(show, sTVSecretBaseSecretsRandomValues[2]); + show->secretBaseSecrets.savedState = SBSECRETS_STATE_TOOK_X_STEPS; + sTVShowState = SecretBaseSecrets_GetStateByFlagNumber(show, sTVSecretBaseSecretsRandomValues[2]); } break; - case 3: + case SBSECRETS_STATE_TOOK_X_STEPS: TVShowConvertInternationalString(gStringVar1, show->secretBaseSecrets.baseOwnersName, show->secretBaseSecrets.baseOwnersNameLanguage); TVShowConvertInternationalString(gStringVar2, show->secretBaseSecrets.playerName, show->secretBaseSecrets.language); TV_PrintIntToStringVar(2, show->secretBaseSecrets.stepsInBase); if (show->secretBaseSecrets.stepsInBase <= 30) { - sTVShowState = 4; + sTVShowState = SBSECRETS_STATE_BASE_INTEREST_LOW; } else if (show->secretBaseSecrets.stepsInBase <= 100) { - sTVShowState = 5; + sTVShowState = SBSECRETS_STATE_BASE_INTEREST_MED; } else { - sTVShowState = 6; + sTVShowState = SBSECRETS_STATE_BASE_INTEREST_HIGH; } break; - case 4: + case SBSECRETS_STATE_BASE_INTEREST_LOW ... SBSECRETS_STATE_BASE_INTEREST_HIGH: TVShowConvertInternationalString(gStringVar1, show->secretBaseSecrets.baseOwnersName, show->secretBaseSecrets.baseOwnersNameLanguage); TVShowConvertInternationalString(gStringVar2, show->secretBaseSecrets.playerName, show->secretBaseSecrets.language); - sTVShowState = 7; + sTVShowState = SBSECRETS_STATE_OUTRO; break; - case 5: - TVShowConvertInternationalString(gStringVar1, show->secretBaseSecrets.baseOwnersName, show->secretBaseSecrets.baseOwnersNameLanguage); - TVShowConvertInternationalString(gStringVar2, show->secretBaseSecrets.playerName, show->secretBaseSecrets.language); - sTVShowState = 7; - break; - case 6: - TVShowConvertInternationalString(gStringVar1, show->secretBaseSecrets.baseOwnersName, show->secretBaseSecrets.baseOwnersNameLanguage); - TVShowConvertInternationalString(gStringVar2, show->secretBaseSecrets.playerName, show->secretBaseSecrets.language); - sTVShowState = 7; - break; - case 7: + case SBSECRETS_STATE_OUTRO: TVShowConvertInternationalString(gStringVar1, show->secretBaseSecrets.baseOwnersName, show->secretBaseSecrets.baseOwnersNameLanguage); TVShowConvertInternationalString(gStringVar2, show->secretBaseSecrets.playerName, show->secretBaseSecrets.language); TVShowDone(); break; - case 8: - sTVShowState = 3; + // All below states are descriptions of what the player interacted with while in the secret base + case SBSECRETS_STATE_NOTHING_USED1: + sTVShowState = SBSECRETS_STATE_TOOK_X_STEPS; break; - case 9: - sTVShowState = 3; + case SBSECRETS_STATE_NOTHING_USED2: + sTVShowState = SBSECRETS_STATE_TOOK_X_STEPS; break; - case 10: + case SBSECRETS_STATE_USED_CHAIR ... SBSECRETS_STATE_USED_MUD_BALL: sTVShowState = show->secretBaseSecrets.savedState; break; - case 11: - sTVShowState = show->secretBaseSecrets.savedState; - break; - case 12: - sTVShowState = show->secretBaseSecrets.savedState; - break; - case 13: - sTVShowState = show->secretBaseSecrets.savedState; - break; - case 14: - sTVShowState = show->secretBaseSecrets.savedState; - break; - case 15: - sTVShowState = show->secretBaseSecrets.savedState; - break; - case 16: - sTVShowState = show->secretBaseSecrets.savedState; - break; - case 17: - sTVShowState = show->secretBaseSecrets.savedState; - break; - case 18: - sTVShowState = show->secretBaseSecrets.savedState; - break; - case 19: + case SBSECRETS_STATE_USED_BAG: StringCopy(gStringVar2, ItemId_GetName(show->secretBaseSecrets.item)); sTVShowState = show->secretBaseSecrets.savedState; break; - case 20: + case SBSECRETS_STATE_USED_CUSHION: + // Randomly decide based on trainer ID if the player hugged or hit the cushion if (show->common.trainerIdLo & 1) { - sTVShowState = 22; + sTVShowState = SBSECRETS_STATE_HUGGED_CUSHION; } else { - sTVShowState = 21; + sTVShowState = SBSECRETS_STATE_HIT_CUSHION; } break; - case 21: - sTVShowState = show->secretBaseSecrets.savedState; - break; - case 22: - sTVShowState = show->secretBaseSecrets.savedState; - break; - case 23: - sTVShowState = show->secretBaseSecrets.savedState; - break; - case 24: - sTVShowState = show->secretBaseSecrets.savedState; - break; - case 25: - sTVShowState = show->secretBaseSecrets.savedState; - break; - case 26: - sTVShowState = show->secretBaseSecrets.savedState; - break; - case 27: - sTVShowState = show->secretBaseSecrets.savedState; - break; - case 28: - sTVShowState = show->secretBaseSecrets.savedState; - break; - case 29: - sTVShowState = show->secretBaseSecrets.savedState; - break; - case 30: - sTVShowState = show->secretBaseSecrets.savedState; - break; - case 31: - sTVShowState = show->secretBaseSecrets.savedState; - break; - case 32: - sTVShowState = show->secretBaseSecrets.savedState; - break; - case 33: - sTVShowState = show->secretBaseSecrets.savedState; - break; - case 34: - sTVShowState = show->secretBaseSecrets.savedState; - break; - case 35: - sTVShowState = show->secretBaseSecrets.savedState; - break; - case 36: - sTVShowState = show->secretBaseSecrets.savedState; - break; - case 37: - sTVShowState = show->secretBaseSecrets.savedState; - break; - case 38: - sTVShowState = show->secretBaseSecrets.savedState; - break; - case 39: - sTVShowState = show->secretBaseSecrets.savedState; - break; - case 40: - sTVShowState = show->secretBaseSecrets.savedState; - break; - case 41: - sTVShowState = show->secretBaseSecrets.savedState; - break; - case 42: - sTVShowState = show->secretBaseSecrets.savedState; - break; - case 43: + case SBSECRETS_STATE_HIT_CUSHION ... SBSECRETS_NUM_STATES: sTVShowState = show->secretBaseSecrets.savedState; break; } From c27a4778eecb8b6c32969ab7520e2d5eaf44f3b9 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Wed, 8 Jan 2020 15:12:10 -0500 Subject: [PATCH 24/37] Standardize prebattle -> intro --- data/maps/DewfordTown_Gym/scripts.inc | 28 +++++----- .../EverGrandeCity_ChampionsRoom/scripts.inc | 4 +- .../EverGrandeCity_DrakesRoom/scripts.inc | 4 +- .../EverGrandeCity_GlaciasRoom/scripts.inc | 4 +- .../EverGrandeCity_PhoebesRoom/scripts.inc | 4 +- .../EverGrandeCity_SidneysRoom/scripts.inc | 4 +- data/maps/FortreeCity_Gym/scripts.inc | 28 +++++----- data/maps/LavaridgeTown_Gym_1F/scripts.inc | 36 ++++++------- data/maps/MauvilleCity_Gym/scripts.inc | 24 ++++----- data/maps/MossdeepCity_Gym/scripts.inc | 52 +++++++++---------- data/maps/PetalburgCity_Gym/scripts.inc | 32 ++++++------ data/maps/RustboroCity_Gym/scripts.inc | 16 +++--- data/maps/SootopolisCity_Gym_1F/scripts.inc | 4 +- data/maps/SootopolisCity_Gym_B1F/scripts.inc | 40 +++++++------- data/scripts/gabby_and_ty.inc | 20 +++---- data/scripts/secret_base.inc | 20 +++---- data/text/secret_base_trainers.inc | 20 +++---- data/text/tv.inc | 4 +- 18 files changed, 172 insertions(+), 172 deletions(-) diff --git a/data/maps/DewfordTown_Gym/scripts.inc b/data/maps/DewfordTown_Gym/scripts.inc index 2641db5dcd..9ddd4aa1da 100644 --- a/data/maps/DewfordTown_Gym/scripts.inc +++ b/data/maps/DewfordTown_Gym/scripts.inc @@ -151,7 +151,7 @@ DewfordTown_Gym_EventScript_StopCountingTrainers:: @ 81FC7C1 return DewfordTown_Gym_EventScript_Brawly:: @ 81FC7C2 - trainerbattle_single TRAINER_BRAWLY_1, DewfordTown_Gym_Text_BrawlyPreBattle, DewfordTown_Gym_Text_BrawlyDefeat, DewfordTown_Gym_EventScript_BrawlyDefeated, NO_MUSIC + trainerbattle_single TRAINER_BRAWLY_1, DewfordTown_Gym_Text_BrawlyIntro, DewfordTown_Gym_Text_BrawlyDefeat, DewfordTown_Gym_EventScript_BrawlyDefeated, NO_MUSIC specialvar VAR_RESULT, ShouldTryRematchBattle compare VAR_RESULT, TRUE goto_if_eq DewfordTown_Gym_EventScript_BrawlyRematch @@ -210,7 +210,7 @@ DewfordTown_Gym_EventScript_BrawlyRematch:: @ 81FC89C end DewfordTown_Gym_EventScript_Takao:: @ 81FC8B7 - trainerbattle_single TRAINER_TAKAO, DewfordTown_Gym_Text_TakaoPreBattle, DewfordTown_Gym_Text_TakaoDefeat, DewfordTown_Gym_EventScript_TakaoBrightenRoom + trainerbattle_single TRAINER_TAKAO, DewfordTown_Gym_Text_TakaoIntro, DewfordTown_Gym_Text_TakaoDefeat, DewfordTown_Gym_EventScript_TakaoBrightenRoom msgbox DewfordTown_Gym_Text_TakaoPostBattle, MSGBOX_AUTOCLOSE end @@ -220,7 +220,7 @@ DewfordTown_Gym_EventScript_TakaoBrightenRoom:: @ 81FC8D2 end DewfordTown_Gym_EventScript_Jocelyn:: @ 81FC8D9 - trainerbattle_single TRAINER_JOCELYN, DewfordTown_Gym_Text_JocelynPreBattle, DewfordTown_Gym_Text_JocelynDefeat, DewfordTown_Gym_EventScript_JocelynBrightenRoom + trainerbattle_single TRAINER_JOCELYN, DewfordTown_Gym_Text_JocelynIntro, DewfordTown_Gym_Text_JocelynDefeat, DewfordTown_Gym_EventScript_JocelynBrightenRoom msgbox DewfordTown_Gym_Text_JocelynPostBattle, MSGBOX_AUTOCLOSE end @@ -230,7 +230,7 @@ DewfordTown_Gym_EventScript_JocelynBrightenRoom:: @ 81FC8F4 end DewfordTown_Gym_EventScript_Laura:: @ 81FC8FB - trainerbattle_single TRAINER_LAURA, DewfordTown_Gym_Text_LauraPreBattle, DewfordTown_Gym_Text_LauraDefeat, DewfordTown_Gym_EventScript_LauraBrightenRoom + trainerbattle_single TRAINER_LAURA, DewfordTown_Gym_Text_LauraIntro, DewfordTown_Gym_Text_LauraDefeat, DewfordTown_Gym_EventScript_LauraBrightenRoom msgbox DewfordTown_Gym_Text_LauraPostBattle, MSGBOX_AUTOCLOSE end @@ -240,7 +240,7 @@ DewfordTown_Gym_EventScript_LauraBrightenRoom:: @ 81FC916 end DewfordTown_Gym_EventScript_Brenden:: @ 81FC91D - trainerbattle_single TRAINER_BRENDEN, DewfordTown_Gym_Text_BrendenPreBattle, DewfordTown_Gym_Text_BrendenDefeat, DewfordTown_Gym_EventScript_BrendenBrightenRoom + trainerbattle_single TRAINER_BRENDEN, DewfordTown_Gym_Text_BrendenIntro, DewfordTown_Gym_Text_BrendenDefeat, DewfordTown_Gym_EventScript_BrendenBrightenRoom msgbox DewfordTown_Gym_Text_BrendenPostBattle, MSGBOX_AUTOCLOSE end @@ -250,7 +250,7 @@ DewfordTown_Gym_EventScript_BrendenBrightenRoom:: @ 81FC938 end DewfordTown_Gym_EventScript_Cristian:: @ 81FC93F - trainerbattle_single TRAINER_CRISTIAN, DewfordTown_Gym_Text_CristianPreBattle, DewfordTown_Gym_Text_CristianDefeat, DewfordTown_Gym_EventScript_CristianBrightenRoom + trainerbattle_single TRAINER_CRISTIAN, DewfordTown_Gym_Text_CristianIntro, DewfordTown_Gym_Text_CristianDefeat, DewfordTown_Gym_EventScript_CristianBrightenRoom msgbox DewfordTown_Gym_Text_CristianPostBattle, MSGBOX_AUTOCLOSE end @@ -260,7 +260,7 @@ DewfordTown_Gym_EventScript_CristianBrightenRoom:: @ 81FC95A end DewfordTown_Gym_EventScript_Lilith:: @ 81FC961 - trainerbattle_single TRAINER_LILITH, DewfordTown_Gym_Text_LilithPreBattle, DewfordTown_Gym_Text_LilithDefeat, DewfordTown_Gym_EventScript_LilithBrightenRoom + trainerbattle_single TRAINER_LILITH, DewfordTown_Gym_Text_LilithIntro, DewfordTown_Gym_Text_LilithDefeat, DewfordTown_Gym_EventScript_LilithBrightenRoom msgbox DewfordTown_Gym_Text_LilithPostBattle, MSGBOX_AUTOCLOSE end @@ -324,7 +324,7 @@ DewfordTown_Gym_Text_GymGuidePostVictory: @ 81FCB5C .string "Whoah! It's turned too bright in here!\p" .string "Your future is bright, too!$" -DewfordTown_Gym_Text_TakaoPreBattle: @ 81FCB9F +DewfordTown_Gym_Text_TakaoIntro: @ 81FCB9F .string "Might is right!\n" .string "Come on!$" @@ -335,7 +335,7 @@ DewfordTown_Gym_Text_TakaoPostBattle: @ 81FCBCA .string "Your skill overcame my strength!\n" .string "Your technique is commendable!$" -DewfordTown_Gym_Text_JocelynPreBattle: @ 81FCC0A +DewfordTown_Gym_Text_JocelynIntro: @ 81FCC0A .string "There's no need for BRAWLY to be\n" .string "involved!\p" .string "I'll crush you!$" @@ -351,7 +351,7 @@ DewfordTown_Gym_Text_JocelynPostBattle: @ 81FCC6B .string "No, I'll become the POKéMON LEAGUE\n" .string "CHAMPION!$" -DewfordTown_Gym_Text_LauraPreBattle: @ 81FCD01 +DewfordTown_Gym_Text_LauraIntro: @ 81FCD01 .string "Don't you dare brush me off!\n" .string "It's not my fault if you cry!$" @@ -365,7 +365,7 @@ DewfordTown_Gym_Text_LauraPostBattle: @ 81FCD4F .string "But because it's so dark, I can never\n" .string "see BRAWLY's face…$" -DewfordTown_Gym_Text_LilithPreBattle: @ 81FCDB8 +DewfordTown_Gym_Text_LilithIntro: @ 81FCDB8 .string "Ufufu…\n" .string "Are you stumbling around in the dark?$" @@ -377,7 +377,7 @@ DewfordTown_Gym_Text_LilithPostBattle: @ 81FCE08 .string "You deserve to stay lost and end up\n" .string "back at the entrance again!$" -DewfordTown_Gym_Text_BrendenPreBattle: @ 81FCE48 +DewfordTown_Gym_Text_BrendenIntro: @ 81FCE48 .string "I'll show you the gumption of\n" .string "a sailing man!$" @@ -389,7 +389,7 @@ DewfordTown_Gym_Text_BrendenPostBattle: @ 81FCEAB .string "Oh, aye! You're worthy of seeing\n" .string "our GYM LEADER.$" -DewfordTown_Gym_Text_CristianPreBattle: @ 81FCEDC +DewfordTown_Gym_Text_CristianIntro: @ 81FCEDC .string "If you mean to pass, it has to be\n" .string "through me!$" @@ -401,7 +401,7 @@ DewfordTown_Gym_Text_CristianPostBattle: @ 81FCF26 .string "You win!\n" .string "Go after that BADGE!$" -DewfordTown_Gym_Text_BrawlyPreBattle: @ 81FCF44 +DewfordTown_Gym_Text_BrawlyIntro: @ 81FCF44 .string "I'm BRAWLY!\n" .string "DEWFORD's GYM LEADER!\p" .string "I've been churned in the rough waves\n" diff --git a/data/maps/EverGrandeCity_ChampionsRoom/scripts.inc b/data/maps/EverGrandeCity_ChampionsRoom/scripts.inc index 22acc0361d..69abb2974d 100644 --- a/data/maps/EverGrandeCity_ChampionsRoom/scripts.inc +++ b/data/maps/EverGrandeCity_ChampionsRoom/scripts.inc @@ -39,7 +39,7 @@ EverGrandeCity_ChampionsRoom_Movement_PlayerApproachWallace: @ 8228A42 EverGrandeCity_ChampionsRoom_EventScript_Wallace:: @ 8228A45 playbgm MUS_DAIGO, 0 - msgbox EverGrandeCity_ChampionsRoom_Text_PreBattleSpeech, MSGBOX_DEFAULT + msgbox EverGrandeCity_ChampionsRoom_Text_IntroSpeech, MSGBOX_DEFAULT trainerbattle_no_intro TRAINER_WALLACE, EverGrandeCity_ChampionsRoom_Text_Defeat goto EverGrandeCity_ChampionsRoom_EventScript_Defeated end @@ -225,7 +225,7 @@ EverGrandeCity_ChampionsRoom_Movement_BirchArrives: @ 8228C43 walk_in_place_fastest_left step_end -EverGrandeCity_ChampionsRoom_Text_PreBattleSpeech: @ 8228C4C +EverGrandeCity_ChampionsRoom_Text_IntroSpeech: @ 8228C4C .string "WALLACE: Welcome, {PLAYER}{KUN}.\p" .string "That incident in SOOTOPOLIS CITY…\n" .string "That was superb work, putting an end\l" diff --git a/data/maps/EverGrandeCity_DrakesRoom/scripts.inc b/data/maps/EverGrandeCity_DrakesRoom/scripts.inc index 139154fa95..0b5462c1c6 100644 --- a/data/maps/EverGrandeCity_DrakesRoom/scripts.inc +++ b/data/maps/EverGrandeCity_DrakesRoom/scripts.inc @@ -43,7 +43,7 @@ EverGrandeCity_DrakesRoom_EventScript_Drake:: @ 82286F3 faceplayer goto_if_set FLAG_DEFEATED_ELITE_4_DRAKE, EverGrandeCity_DrakesRoom_EventScript_PostBattleSpeech playbgm MUS_SITENNOU, 0 - msgbox EverGrandeCity_DrakesRoom_Text_PreBattleSpeech, MSGBOX_DEFAULT + msgbox EverGrandeCity_DrakesRoom_Text_IntroSpeech, MSGBOX_DEFAULT trainerbattle_no_intro TRAINER_DRAKE, EverGrandeCity_DrakesRoom_Text_Defeat goto EverGrandeCity_DrakesRoom_EventScript_Defeated end @@ -62,7 +62,7 @@ EverGrandeCity_DrakesRoom_EventScript_Defeated:: @ 8228724 release end -EverGrandeCity_DrakesRoom_Text_PreBattleSpeech: @ 822873E +EverGrandeCity_DrakesRoom_Text_IntroSpeech: @ 822873E .string "I am the last of the POKéMON LEAGUE\n" .string "ELITE FOUR, DRAKE the DRAGON master!\p" .string "In their natural state, POKéMON are\n" diff --git a/data/maps/EverGrandeCity_GlaciasRoom/scripts.inc b/data/maps/EverGrandeCity_GlaciasRoom/scripts.inc index 6836b886db..f852015a79 100644 --- a/data/maps/EverGrandeCity_GlaciasRoom/scripts.inc +++ b/data/maps/EverGrandeCity_GlaciasRoom/scripts.inc @@ -42,7 +42,7 @@ EverGrandeCity_GlaciasRoom_EventScript_Glacia:: @ 8228469 faceplayer goto_if_set FLAG_DEFEATED_ELITE_4_GLACIA, EverGrandeCity_GlaciasRoom_EventScript_PostBattleSpeech playbgm MUS_SITENNOU, 0 - msgbox EverGrandeCity_GlaciasRoom_Text_PreBattleSpeech, MSGBOX_DEFAULT + msgbox EverGrandeCity_GlaciasRoom_Text_IntroSpeech, MSGBOX_DEFAULT trainerbattle_no_intro TRAINER_GLACIA, EverGrandeCity_GlaciasRoom_Text_Defeat goto EverGrandeCity_GlaciasRoom_EventScript_Defeated end @@ -59,7 +59,7 @@ EverGrandeCity_GlaciasRoom_EventScript_Defeated:: @ 822849A release end -EverGrandeCity_GlaciasRoom_Text_PreBattleSpeech: @ 82284AC +EverGrandeCity_GlaciasRoom_Text_IntroSpeech: @ 82284AC .string "Welcome, my name is GLACIA\n" .string "of the ELITE FOUR.\p" .string "I've traveled from afar to HOENN\n" diff --git a/data/maps/EverGrandeCity_PhoebesRoom/scripts.inc b/data/maps/EverGrandeCity_PhoebesRoom/scripts.inc index 4843359c01..538e561cf4 100644 --- a/data/maps/EverGrandeCity_PhoebesRoom/scripts.inc +++ b/data/maps/EverGrandeCity_PhoebesRoom/scripts.inc @@ -42,7 +42,7 @@ EverGrandeCity_PhoebesRoom_EventScript_Phoebe:: @ 82281CB faceplayer goto_if_set FLAG_DEFEATED_ELITE_4_PHOEBE, EverGrandeCity_PhoebesRoom_EventScript_PostBattleSpeech playbgm MUS_SITENNOU, 0 - msgbox EverGrandeCity_PhoebesRoom_Text_PreBattleSpeech, MSGBOX_DEFAULT + msgbox EverGrandeCity_PhoebesRoom_Text_IntroSpeech, MSGBOX_DEFAULT trainerbattle_no_intro TRAINER_PHOEBE, EverGrandeCity_PhoebesRoom_Text_Defeat goto EverGrandeCity_PhoebesRoom_EventScript_Defeated end @@ -59,7 +59,7 @@ EverGrandeCity_PhoebesRoom_EventScript_Defeated:: @ 82281FC release end -EverGrandeCity_PhoebesRoom_Text_PreBattleSpeech: @ 822820E +EverGrandeCity_PhoebesRoom_Text_IntroSpeech: @ 822820E .string "Ahahaha!\p" .string "I'm PHOEBE of the ELITE FOUR.\n" .string "I did my training on MT. PYRE.\p" diff --git a/data/maps/EverGrandeCity_SidneysRoom/scripts.inc b/data/maps/EverGrandeCity_SidneysRoom/scripts.inc index 74cd384fb9..d671f49235 100644 --- a/data/maps/EverGrandeCity_SidneysRoom/scripts.inc +++ b/data/maps/EverGrandeCity_SidneysRoom/scripts.inc @@ -48,7 +48,7 @@ EverGrandeCity_SidneysRoom_EventScript_Sidney:: @ 8227F64 faceplayer goto_if_set FLAG_DEFEATED_ELITE_4_SIDNEY, EverGrandeCity_SidneysRoom_EventScript_PostBattleSpeech playbgm MUS_SITENNOU, 0 - msgbox EverGrandeCity_SidneysRoom_Text_PreBattleSpeech, MSGBOX_DEFAULT + msgbox EverGrandeCity_SidneysRoom_Text_IntroSpeech, MSGBOX_DEFAULT trainerbattle_no_intro TRAINER_SIDNEY, EverGrandeCity_SidneysRoom_Text_Defeat goto EverGrandeCity_SidneysRoom_EventScript_Defeated end @@ -65,7 +65,7 @@ EverGrandeCity_SidneysRoom_EventScript_Defeated:: @ 8227F95 release end -EverGrandeCity_SidneysRoom_Text_PreBattleSpeech: @ 8227FA7 +EverGrandeCity_SidneysRoom_Text_IntroSpeech: @ 8227FA7 .string "Welcome, challenger!\n" .string "I'm SIDNEY of the ELITE FOUR.\p" .string "I like that look you're giving me.\n" diff --git a/data/maps/FortreeCity_Gym/scripts.inc b/data/maps/FortreeCity_Gym/scripts.inc index f69ec82040..88fbe8b929 100644 --- a/data/maps/FortreeCity_Gym/scripts.inc +++ b/data/maps/FortreeCity_Gym/scripts.inc @@ -16,7 +16,7 @@ FortreeCity_Gym_EventScript_InitRotatingGates:: @ 82165C4 end FortreeCity_Gym_EventScript_Winona:: @ 82165C8 - trainerbattle_single TRAINER_WINONA_1, FortreeCity_Gym_Text_WinonaPreBattle, FortreeCity_Gym_Text_WinonaDefeat, FortreeCity_Gym_EventScript_WinonaDefeated, NO_MUSIC + trainerbattle_single TRAINER_WINONA_1, FortreeCity_Gym_Text_WinonaIntro, FortreeCity_Gym_Text_WinonaDefeat, FortreeCity_Gym_EventScript_WinonaDefeated, NO_MUSIC specialvar VAR_RESULT, ShouldTryRematchBattle compare VAR_RESULT, TRUE goto_if_eq FortreeCity_Gym_EventScript_WinonaRematch @@ -71,32 +71,32 @@ FortreeCity_Gym_EventScript_WinonaRematch:: @ 821668D end FortreeCity_Gym_EventScript_Jared:: @ 82166A8 - trainerbattle_single TRAINER_JARED, FortreeCity_Gym_Text_JaredPreBattle, FortreeCity_Gym_Text_JaredDefeat + trainerbattle_single TRAINER_JARED, FortreeCity_Gym_Text_JaredIntro, FortreeCity_Gym_Text_JaredDefeat msgbox FortreeCity_Gym_Text_JaredPostBattle, MSGBOX_AUTOCLOSE end FortreeCity_Gym_EventScript_Edwardo:: @ 82166BF - trainerbattle_single TRAINER_EDWARDO, FortreeCity_Gym_Text_EdwardoPreBattle, FortreeCity_Gym_Text_EdwardoDefeat + trainerbattle_single TRAINER_EDWARDO, FortreeCity_Gym_Text_EdwardoIntro, FortreeCity_Gym_Text_EdwardoDefeat msgbox FortreeCity_Gym_Text_EdwardoPostBattle, MSGBOX_AUTOCLOSE end FortreeCity_Gym_EventScript_Flint:: @ 82166D6 - trainerbattle_single TRAINER_FLINT, FortreeCity_Gym_Text_FlintPreBattle, FortreeCity_Gym_Text_FlintDefeat + trainerbattle_single TRAINER_FLINT, FortreeCity_Gym_Text_FlintIntro, FortreeCity_Gym_Text_FlintDefeat msgbox FortreeCity_Gym_Text_FlintPostBattle, MSGBOX_AUTOCLOSE end FortreeCity_Gym_EventScript_Ashley:: @ 82166ED - trainerbattle_single TRAINER_ASHLEY, FortreeCity_Gym_Text_AshleyPreBattle, FortreeCity_Gym_Text_AshleyDefeat + trainerbattle_single TRAINER_ASHLEY, FortreeCity_Gym_Text_AshleyIntro, FortreeCity_Gym_Text_AshleyDefeat msgbox FortreeCity_Gym_Text_AshleyPostBattle, MSGBOX_AUTOCLOSE end FortreeCity_Gym_EventScript_Humberto:: @ 8216704 - trainerbattle_single TRAINER_HUMBERTO, FortreeCity_Gym_Text_HumbertoPreBattle, FortreeCity_Gym_Text_HumbertoDefeat + trainerbattle_single TRAINER_HUMBERTO, FortreeCity_Gym_Text_HumbertoIntro, FortreeCity_Gym_Text_HumbertoDefeat msgbox FortreeCity_Gym_Text_HumbertoPostBattle, MSGBOX_AUTOCLOSE end FortreeCity_Gym_EventScript_Darius:: @ 821671B - trainerbattle_single TRAINER_DARIUS, FortreeCity_Gym_Text_DariusPreBattle, FortreeCity_Gym_Text_DariusDefeat + trainerbattle_single TRAINER_DARIUS, FortreeCity_Gym_Text_DariusIntro, FortreeCity_Gym_Text_DariusDefeat msgbox FortreeCity_Gym_Text_DariusPostBattle, MSGBOX_AUTOCLOSE end @@ -150,7 +150,7 @@ FortreeCity_Gym_Text_GymGuidePostVictory: @ 821687D .string "You did it!\n" .string "You've achieved liftoff!$" -FortreeCity_Gym_Text_JaredPreBattle: @ 82168A2 +FortreeCity_Gym_Text_JaredIntro: @ 82168A2 .string "Behold the elegant battle style of\n" .string "BIRD POKéMON!$" @@ -164,7 +164,7 @@ FortreeCity_Gym_Text_JaredPostBattle: @ 82168E7 .string "Do you have the smarts to get to\n" .string "our LEADER?$" -FortreeCity_Gym_Text_EdwardoPreBattle: @ 821695A +FortreeCity_Gym_Text_EdwardoIntro: @ 821695A .string "The lovers of BIRD POKéMON aspire\n" .string "to join this GYM.\p" .string "As a member of the FORTREE GYM,\n" @@ -180,7 +180,7 @@ FortreeCity_Gym_Text_EdwardoPostBattle: @ 82169F1 .string "I'm going to keep training and make\n" .string "myself even stronger.$" -FortreeCity_Gym_Text_FlintPreBattle: @ 8216A66 +FortreeCity_Gym_Text_FlintIntro: @ 8216A66 .string "There's no need for WINONA, our GYM\n" .string "LEADER, to deal with you!\p" .string "I'm plenty good enough for you!$" @@ -194,7 +194,7 @@ FortreeCity_Gym_Text_FlintPostBattle: @ 8216AD7 .string "She's the ultimate LEADER!\p" .string "Blush…$" -FortreeCity_Gym_Text_AshleyPreBattle: @ 8216B1A +FortreeCity_Gym_Text_AshleyIntro: @ 8216B1A .string "WINONA taught me personally!\n" .string "You can't beat me easily!$" @@ -205,7 +205,7 @@ FortreeCity_Gym_Text_AshleyPostBattle: @ 8216B5F .string "Thanks to WINONA, the people of\n" .string "FORTREE can live without fear.$" -FortreeCity_Gym_Text_HumbertoPreBattle: @ 8216B9E +FortreeCity_Gym_Text_HumbertoIntro: @ 8216B9E .string "When WINONA takes to battle, her face\n" .string "shines with beautiful determination…\p" .string "I'm not letting you witness that\n" @@ -220,7 +220,7 @@ FortreeCity_Gym_Text_HumbertoPostBattle: @ 8216C32 .string "Don't get distracted staring at WINONA\l" .string "or you'll go crashing down in a heap!$" -FortreeCity_Gym_Text_DariusPreBattle: @ 8216C96 +FortreeCity_Gym_Text_DariusIntro: @ 8216C96 .string "You'd better know that there are all\n" .string "sorts of FLYING-type POKéMON.\p" .string "You do know that, right?$" @@ -233,7 +233,7 @@ FortreeCity_Gym_Text_DariusPostBattle: @ 8216D0F .string "But you'd better watch it! Our LEADER\l" .string "WINONA's POKéMON are all business.$" -FortreeCity_Gym_Text_WinonaPreBattle: @ 8216D75 +FortreeCity_Gym_Text_WinonaIntro: @ 8216D75 .string "I am WINONA. I am the LEADER of\n" .string "the FORTREE POKéMON GYM.\p" .string "I have become one with BIRD POKéMON\n" diff --git a/data/maps/LavaridgeTown_Gym_1F/scripts.inc b/data/maps/LavaridgeTown_Gym_1F/scripts.inc index b94970e621..539917a903 100644 --- a/data/maps/LavaridgeTown_Gym_1F/scripts.inc +++ b/data/maps/LavaridgeTown_Gym_1F/scripts.inc @@ -52,7 +52,7 @@ LavaridgeTown_Gym_1F_EventScript_EndCheckHideTrainers:: @ 81FE78B return LavaridgeTown_Gym_1F_EventScript_Flannery:: @ 81FE78C - trainerbattle_single TRAINER_FLANNERY_1, LavaridgeTown_Gym_1F_Text_FlanneryPreBattle, LavaridgeTown_Gym_1F_Text_FlanneryDefeat, LavaridgeTown_Gym_1F_EventScript_FlanneryDefeated, NO_MUSIC + trainerbattle_single TRAINER_FLANNERY_1, LavaridgeTown_Gym_1F_Text_FlanneryIntro, LavaridgeTown_Gym_1F_Text_FlanneryDefeat, LavaridgeTown_Gym_1F_EventScript_FlanneryDefeated, NO_MUSIC specialvar VAR_RESULT, ShouldTryRematchBattle compare VAR_RESULT, 1 goto_if_eq LavaridgeTown_Gym_1F_EventScript_FlanneryRematch @@ -111,7 +111,7 @@ LavaridgeTown_Gym_1F_EventScript_FlanneryRematch:: @ 81FE864 end LavaridgeTown_Gym_1F_EventScript_Cole:: @ 81FE87F - trainerbattle TRAINER_BATTLE_CONTINUE_SCRIPT, TRAINER_COLE, 2, LavaridgeTown_Gym_1F_Text_ColePreBattle, LavaridgeTown_Gym_1F_Text_ColeDefeat, LavaridgeTown_Gym_EventScript_CheckTrainerScript + trainerbattle TRAINER_BATTLE_CONTINUE_SCRIPT, TRAINER_COLE, 2, LavaridgeTown_Gym_1F_Text_ColeIntro, LavaridgeTown_Gym_1F_Text_ColeDefeat, LavaridgeTown_Gym_EventScript_CheckTrainerScript msgbox LavaridgeTown_Gym_1F_Text_ColePostBattle MSGBOX_AUTOCLOSE end @@ -124,37 +124,37 @@ LavaridgeTown_Gym_EventScript_CheckTrainerScript:: @ 81FE89A end LavaridgeTown_Gym_1F_EventScript_Axle:: @ 81FE8AF - trainerbattle TRAINER_BATTLE_CONTINUE_SCRIPT, TRAINER_AXLE, 4, LavaridgeTown_Gym_1F_Text_AxlePreBattle, LavaridgeTown_Gym_1F_Text_AxleDefeat, LavaridgeTown_Gym_EventScript_CheckTrainerScript + trainerbattle TRAINER_BATTLE_CONTINUE_SCRIPT, TRAINER_AXLE, 4, LavaridgeTown_Gym_1F_Text_AxleIntro, LavaridgeTown_Gym_1F_Text_AxleDefeat, LavaridgeTown_Gym_EventScript_CheckTrainerScript msgbox LavaridgeTown_Gym_1F_Text_AxlePostBattle, MSGBOX_AUTOCLOSE end LavaridgeTown_Gym_B1F_EventScript_Keegan:: @ 81FE8CA - trainerbattle TRAINER_BATTLE_CONTINUE_SCRIPT, TRAINER_KEEGAN, 2, LavaridgeTown_Gym_B1F_Text_KeeganPreBattle, LavaridgeTown_Gym_B1F_Text_KeeganDefeat, LavaridgeTown_Gym_EventScript_CheckTrainerScript + trainerbattle TRAINER_BATTLE_CONTINUE_SCRIPT, TRAINER_KEEGAN, 2, LavaridgeTown_Gym_B1F_Text_KeeganIntro, LavaridgeTown_Gym_B1F_Text_KeeganDefeat, LavaridgeTown_Gym_EventScript_CheckTrainerScript msgbox LavaridgeTown_Gym_B1F_Text_KeeganPostBattle, MSGBOX_AUTOCLOSE end LavaridgeTown_Gym_1F_EventScript_Danielle:: @ 81FE8E5 - trainerbattle TRAINER_BATTLE_CONTINUE_SCRIPT, TRAINER_DANIELLE, 5, LavaridgeTown_Gym_1F_Text_DaniellePreBattle, LavaridgeTown_Gym_1F_Text_DanielleDefeat, LavaridgeTown_Gym_EventScript_CheckTrainerScript + trainerbattle TRAINER_BATTLE_CONTINUE_SCRIPT, TRAINER_DANIELLE, 5, LavaridgeTown_Gym_1F_Text_DanielleIntro, LavaridgeTown_Gym_1F_Text_DanielleDefeat, LavaridgeTown_Gym_EventScript_CheckTrainerScript msgbox LavaridgeTown_Gym_1F_Text_DaniellePostBattle, MSGBOX_AUTOCLOSE end LavaridgeTown_Gym_1F_EventScript_Gerald:: @ 81FE900 - trainerbattle TRAINER_BATTLE_CONTINUE_SCRIPT, TRAINER_GERALD, 3, LavaridgeTown_Gym_1F_Text_GeraldPreBattle, LavaridgeTown_Gym_1F_Text_GeraldDefeat, LavaridgeTown_Gym_EventScript_CheckTrainerScript + trainerbattle TRAINER_BATTLE_CONTINUE_SCRIPT, TRAINER_GERALD, 3, LavaridgeTown_Gym_1F_Text_GeraldIntro, LavaridgeTown_Gym_1F_Text_GeraldDefeat, LavaridgeTown_Gym_EventScript_CheckTrainerScript msgbox LavaridgeTown_Gym_1F_Text_GeraldPostBattle, MSGBOX_AUTOCLOSE end LavaridgeTown_Gym_B1F_EventScript_Jace:: @ 81FE91B - trainerbattle TRAINER_BATTLE_CONTINUE_SCRIPT, TRAINER_JACE, 1, LavaridgeTown_Gym_B1F_Text_JacePreBattle, LavaridgeTown_Gym_B1F_Text_JaceDefeat, LavaridgeTown_Gym_EventScript_CheckTrainerScript + trainerbattle TRAINER_BATTLE_CONTINUE_SCRIPT, TRAINER_JACE, 1, LavaridgeTown_Gym_B1F_Text_JaceIntro, LavaridgeTown_Gym_B1F_Text_JaceDefeat, LavaridgeTown_Gym_EventScript_CheckTrainerScript msgbox LavaridgeTown_Gym_B1F_Text_JacePostBattle, MSGBOX_AUTOCLOSE end LavaridgeTown_Gym_B1F_EventScript_Jeff:: @ 81FE936 - trainerbattle TRAINER_BATTLE_CONTINUE_SCRIPT, TRAINER_JEFF, 3, LavaridgeTown_Gym_B1F_Text_JeffPreBattle, LavaridgeTown_Gym_B1F_Text_JeffDefeat, LavaridgeTown_Gym_EventScript_CheckTrainerScript + trainerbattle TRAINER_BATTLE_CONTINUE_SCRIPT, TRAINER_JEFF, 3, LavaridgeTown_Gym_B1F_Text_JeffIntro, LavaridgeTown_Gym_B1F_Text_JeffDefeat, LavaridgeTown_Gym_EventScript_CheckTrainerScript msgbox LavaridgeTown_Gym_B1F_Text_JeffPostBattle, MSGBOX_AUTOCLOSE end LavaridgeTown_Gym_B1F_EventScript_Eli:: @ 81FE951 - trainerbattle TRAINER_BATTLE_CONTINUE_SCRIPT, TRAINER_ELI, 4, LavaridgeTown_Gym_B1F_Text_EliPreBattle, LavaridgeTown_Gym_B1F_Text_EliDefeat, LavaridgeTown_Gym_EventScript_CheckTrainerScript + trainerbattle TRAINER_BATTLE_CONTINUE_SCRIPT, TRAINER_ELI, 4, LavaridgeTown_Gym_B1F_Text_EliIntro, LavaridgeTown_Gym_B1F_Text_EliDefeat, LavaridgeTown_Gym_EventScript_CheckTrainerScript msgbox LavaridgeTown_Gym_B1F_Text_EliPostBattle, MSGBOX_AUTOCLOSE end @@ -207,7 +207,7 @@ LavaridgeTown_Gym_1F_Text_GymGuideAdvice: @ 81FE9BF LavaridgeTown_Gym_1F_Text_GymGuidePostVictory: @ 81FEAB8 .string "Yow! That was a scorching-hot battle!$" -LavaridgeTown_Gym_1F_Text_ColePreBattle: @ 81FEADE +LavaridgeTown_Gym_1F_Text_ColeIntro: @ 81FEADE .string "Owowowowow!\n" .string "Yikes, it's hot!$" @@ -220,7 +220,7 @@ LavaridgeTown_Gym_1F_Text_ColePostBattle: @ 81FEB1C .string "It's effective for healing pain in\n" .string "your joints.$" -LavaridgeTown_Gym_1F_Text_AxlePreBattle: @ 81FEB7B +LavaridgeTown_Gym_1F_Text_AxleIntro: @ 81FEB7B .string "I'm trying to relieve my stress.\n" .string "Don't come along and stress me out!$" @@ -232,7 +232,7 @@ LavaridgeTown_Gym_1F_Text_AxlePostBattle: @ 81FEBE1 .string "If you spend too much time buried in\n" .string "hot sand, it tuckers you out…$" -LavaridgeTown_Gym_B1F_Text_KeeganPreBattle: @ 81FEC31 +LavaridgeTown_Gym_B1F_Text_KeeganIntro: @ 81FEC31 .string "You must be getting tired by now.\n" .string "You'd like to rest in the hot sand,\l" .string "wouldn't you?\p" @@ -249,7 +249,7 @@ LavaridgeTown_Gym_B1F_Text_KeeganPostBattle: @ 81FED02 .string "If you don't watch yourself, you'll be\n" .string "burned seriously.$" -LavaridgeTown_Gym_1F_Text_GeraldPreBattle: @ 81FED72 +LavaridgeTown_Gym_1F_Text_GeraldIntro: @ 81FED72 .string "Can your POKéMON withstand\n" .string "392-degree heat?$" @@ -262,7 +262,7 @@ LavaridgeTown_Gym_1F_Text_GeraldPostBattle: @ 81FEDBB .string "Your POKéMON beat me, so they should\n" .string "easily survive in magma.$" -LavaridgeTown_Gym_1F_Text_DaniellePreBattle: @ 81FEE22 +LavaridgeTown_Gym_1F_Text_DanielleIntro: @ 81FEE22 .string "Um…\n" .string "Okay, I'll battle with you.$" @@ -273,7 +273,7 @@ LavaridgeTown_Gym_1F_Text_DaniellePostBattle: @ 81FEE5D .string "I'm going to be a pretty and strong\n" .string "TRAINER just like FLANNERY.$" -LavaridgeTown_Gym_B1F_Text_JacePreBattle: @ 81FEE9D +LavaridgeTown_Gym_B1F_Text_JaceIntro: @ 81FEE9D .string "Come on, get with it!\n" .string "Let's go before my feelings cool!$" @@ -286,7 +286,7 @@ LavaridgeTown_Gym_B1F_Text_JacePostBattle: @ 81FEF07 .string "within you, you may stand a chance\l" .string "against our LEADER.$" -LavaridgeTown_Gym_B1F_Text_JeffPreBattle: @ 81FEF60 +LavaridgeTown_Gym_B1F_Text_JeffIntro: @ 81FEF60 .string "See how the flames blaze wildly?\n" .string "They flare in anticipation of my win!$" @@ -298,7 +298,7 @@ LavaridgeTown_Gym_B1F_Text_JeffPostBattle: @ 81FEFC2 .string "I can walk on hot coals barefoot!\p" .string "…Don't even think about trying it!$" -LavaridgeTown_Gym_B1F_Text_EliPreBattle: @ 81FF025 +LavaridgeTown_Gym_B1F_Text_EliIntro: @ 81FF025 .string "As much as I love mountains,\n" .string "I especially love volcanoes.$" @@ -311,7 +311,7 @@ LavaridgeTown_Gym_B1F_Text_EliPostBattle: @ 81FF09A .string "of FLANNERY's power.\p" .string "Hehehehe.$" -LavaridgeTown_Gym_1F_Text_FlanneryPreBattle: @ 81FF0DC +LavaridgeTown_Gym_1F_Text_FlanneryIntro: @ 81FF0DC .string "Welcome… No, wait.\p" .string "Puny TRAINER, how good to see you've\n" .string "made it here!\p" diff --git a/data/maps/MauvilleCity_Gym/scripts.inc b/data/maps/MauvilleCity_Gym/scripts.inc index 450f412203..efc946fdcd 100644 --- a/data/maps/MauvilleCity_Gym/scripts.inc +++ b/data/maps/MauvilleCity_Gym/scripts.inc @@ -74,7 +74,7 @@ MauvilleCity_Gym_EventScript_DeactivatePuzzle:: @ 820DEE7 end MauvilleCity_Gym_EventScript_Wattson:: @ 820DEEB - trainerbattle_single TRAINER_WATTSON_1, MauvilleCity_Gym_Text_WattsonPreBattle, MauvilleCity_Gym_Text_WattsonDefeat, MauvilleCity_Gym_EventScript_WattsonDefeated, NO_MUSIC + trainerbattle_single TRAINER_WATTSON_1, MauvilleCity_Gym_Text_WattsonIntro, MauvilleCity_Gym_Text_WattsonDefeat, MauvilleCity_Gym_EventScript_WattsonDefeated, NO_MUSIC specialvar VAR_RESULT, ShouldTryRematchBattle compare VAR_RESULT, TRUE goto_if_eq MauvilleCity_Gym_EventScript_WattsonRematch @@ -206,27 +206,27 @@ MauvilleCity_Gym_EventScript_ClearBarriersAltState:: @ 820E0B4 end MauvilleCity_Gym_EventScript_Kirk:: @ 820E0B9 - trainerbattle_single TRAINER_KIRK, MauvilleCity_Gym_Text_KirkPreBattle, MauvilleCity_Gym_Text_KirkDefeat + trainerbattle_single TRAINER_KIRK, MauvilleCity_Gym_Text_KirkIntro, MauvilleCity_Gym_Text_KirkDefeat msgbox MauvilleCity_Gym_Text_KirkPostBattle, MSGBOX_AUTOCLOSE end MauvilleCity_Gym_EventScript_Shawn:: @ 820E0D0 - trainerbattle_single TRAINER_SHAWN, MauvilleCity_Gym_Text_ShawnPreBattle, MauvilleCity_Gym_Text_ShawnDefeat + trainerbattle_single TRAINER_SHAWN, MauvilleCity_Gym_Text_ShawnIntro, MauvilleCity_Gym_Text_ShawnDefeat msgbox MauvilleCity_Gym_Text_ShawnPostBattle, MSGBOX_AUTOCLOSE end MauvilleCity_Gym_EventScript_Ben:: @ 820E0E7 - trainerbattle_single TRAINER_BEN, MauvilleCity_Gym_Text_BenPreBattle, MauvilleCity_Gym_Text_BenDefeat + trainerbattle_single TRAINER_BEN, MauvilleCity_Gym_Text_BenIntro, MauvilleCity_Gym_Text_BenDefeat msgbox MauvilleCity_Gym_Text_BenPostBattle, MSGBOX_AUTOCLOSE end MauvilleCity_Gym_EventScript_Vivian:: @ 820E0FE - trainerbattle_single TRAINER_VIVIAN, MauvilleCity_Gym_Text_VivianPreBattle, MauvilleCity_Gym_Text_VivianDefeat + trainerbattle_single TRAINER_VIVIAN, MauvilleCity_Gym_Text_VivianIntro, MauvilleCity_Gym_Text_VivianDefeat msgbox MauvilleCity_Gym_Text_VivianPostBattle, MSGBOX_AUTOCLOSE end MauvilleCity_Gym_EventScript_Angelo:: @ 820E115 - trainerbattle_single TRAINER_ANGELO, MauvilleCity_Gym_Text_AngeloPreBattle, MauvilleCity_Gym_Text_AngeloDefeat + trainerbattle_single TRAINER_ANGELO, MauvilleCity_Gym_Text_AngeloIntro, MauvilleCity_Gym_Text_AngeloDefeat msgbox MauvilleCity_Gym_Text_AngeloPostBattle, MSGBOX_AUTOCLOSE end @@ -280,7 +280,7 @@ MauvilleCity_Gym_Text_GymGuidePostVictory: @ 820E283 .string "Whoa, you're electrifying!\n" .string "You've powered the door open!$" -MauvilleCity_Gym_Text_KirkPreBattle: @ 820E2BC +MauvilleCity_Gym_Text_KirkIntro: @ 820E2BC .string "My electric soul, it'll shatter your\n" .string "dreams whole, whoa-yeahah!$" @@ -292,7 +292,7 @@ MauvilleCity_Gym_Text_KirkPostBattle: @ 820E336 .string "POKéMON and rock, it's all about heart,\n" .string "whoa-yeah!$" -MauvilleCity_Gym_Text_ShawnPreBattle: @ 820E369 +MauvilleCity_Gym_Text_ShawnIntro: @ 820E369 .string "I trained under WATTSON!\n" .string "There ain't no way I'll lose easily!$" @@ -305,7 +305,7 @@ MauvilleCity_Gym_Text_ShawnPostBattle: @ 820E3C1 .string "He was battling even before your\n" .string "daddy was born, that tough coot.$" -MauvilleCity_Gym_Text_BenPreBattle: @ 820E443 +MauvilleCity_Gym_Text_BenIntro: @ 820E443 .string "This GYM's got puzzles!\n" .string "Isn't it fun?$" @@ -316,7 +316,7 @@ MauvilleCity_Gym_Text_BenPostBattle: @ 820E47E .string "WATTSON says he likes setting up\n" .string "little traps with switches.$" -MauvilleCity_Gym_Text_VivianPreBattle: @ 820E4BB +MauvilleCity_Gym_Text_VivianIntro: @ 820E4BB .string "With my charm and my POKéMON's moves,\n" .string "you'll be shocked!$" @@ -330,7 +330,7 @@ MauvilleCity_Gym_Text_VivianPostBattle: @ 820E50F .string "became TRAINERS.\l" .string "He must know all sorts of things!$" -MauvilleCity_Gym_Text_AngeloPreBattle: @ 820E593 +MauvilleCity_Gym_Text_AngeloIntro: @ 820E593 .string "I love shiny things!$" MauvilleCity_Gym_Text_AngeloDefeat: @ 820E5A8 @@ -341,7 +341,7 @@ MauvilleCity_Gym_Text_AngeloPostBattle: @ 820E5C2 .string "MAUVILLE GYM's WATTSON has a shiny\n" .string "forehead. It makes me happy!$" -MauvilleCity_Gym_Text_WattsonPreBattle: @ 820E602 +MauvilleCity_Gym_Text_WattsonIntro: @ 820E602 .string "I've given up on my plans to convert\n" .string "the city, I have.\p" .string "And so, I put my time into making\n" diff --git a/data/maps/MossdeepCity_Gym/scripts.inc b/data/maps/MossdeepCity_Gym/scripts.inc index ec5e2bb704..d1d1a7a238 100644 --- a/data/maps/MossdeepCity_Gym/scripts.inc +++ b/data/maps/MossdeepCity_Gym/scripts.inc @@ -49,7 +49,7 @@ MossdeepCity_Gym_EventScript_SetSwitch4Metatiles:: @ 8220885 end MossdeepCity_Gym_EventScript_TateAndLiza:: @ 8220898 - trainerbattle_double TRAINER_TATE_AND_LIZA_1, MossdeepCity_Gym_Text_TateAndLizaPreBattle, MossdeepCity_Gym_Text_TateAndLizaDefeat, MossdeepCity_Gym_Text_TateAndLizaNeedTwoMons, MossdeepCity_Gym_EventScript_TateAndLizaDefeated, NO_MUSIC + trainerbattle_double TRAINER_TATE_AND_LIZA_1, MossdeepCity_Gym_Text_TateAndLizaIntro, MossdeepCity_Gym_Text_TateAndLizaDefeat, MossdeepCity_Gym_Text_TateAndLizaNeedTwoMons, MossdeepCity_Gym_EventScript_TateAndLizaDefeated, NO_MUSIC specialvar VAR_RESULT, ShouldTryRematchBattle compare VAR_RESULT, TRUE goto_if_eq MossdeepCity_Gym_EventScript_TateAndLizaRematch @@ -207,62 +207,62 @@ MossdeepCity_Gym_EventScript_WarpToEntrance:: @ 8220AF1 end MossdeepCity_Gym_EventScript_Preston:: @ 8220AFD - trainerbattle_single TRAINER_PRESTON, MossdeepCity_Gym_Text_PrestonPreBattle, MossdeepCity_Gym_Text_PrestonDefeat + trainerbattle_single TRAINER_PRESTON, MossdeepCity_Gym_Text_PrestonIntro, MossdeepCity_Gym_Text_PrestonDefeat msgbox MossdeepCity_Gym_Text_PrestonPostBattle, MSGBOX_AUTOCLOSE end MossdeepCity_Gym_EventScript_Virgil:: @ 8220B14 - trainerbattle_single TRAINER_VIRGIL, MossdeepCity_Gym_Text_VirgilPreBattle, MossdeepCity_Gym_Text_VirgilDefeat + trainerbattle_single TRAINER_VIRGIL, MossdeepCity_Gym_Text_VirgilIntro, MossdeepCity_Gym_Text_VirgilDefeat msgbox MossdeepCity_Gym_Text_VirgilPostBattle, MSGBOX_AUTOCLOSE end MossdeepCity_Gym_EventScript_Blake:: @ 8220B2B - trainerbattle_single TRAINER_BLAKE, MossdeepCity_Gym_Text_BlakePreBattle, MossdeepCity_Gym_Text_BlakeDefeat + trainerbattle_single TRAINER_BLAKE, MossdeepCity_Gym_Text_BlakeIntro, MossdeepCity_Gym_Text_BlakeDefeat msgbox MossdeepCity_Gym_Text_BlakePostBattle, MSGBOX_AUTOCLOSE end MossdeepCity_Gym_EventScript_Hannah:: @ 8220B42 - trainerbattle_single TRAINER_HANNAH, MossdeepCity_Gym_Text_HannahPreBattle, MossdeepCity_Gym_Text_HannahDefeat + trainerbattle_single TRAINER_HANNAH, MossdeepCity_Gym_Text_HannahIntro, MossdeepCity_Gym_Text_HannahDefeat msgbox MossdeepCity_Gym_Text_HannahPostBattle, MSGBOX_AUTOCLOSE end MossdeepCity_Gym_EventScript_Samantha:: @ 8220B59 - trainerbattle_single TRAINER_SAMANTHA, MossdeepCity_Gym_Text_SamanthaPreBattle, MossdeepCity_Gym_Text_SamanthaDefeat + trainerbattle_single TRAINER_SAMANTHA, MossdeepCity_Gym_Text_SamanthaIntro, MossdeepCity_Gym_Text_SamanthaDefeat msgbox MossdeepCity_Gym_Text_SamanthaPostBattle, MSGBOX_AUTOCLOSE end MossdeepCity_Gym_EventScript_Maura:: @ 8220B70 - trainerbattle_single TRAINER_MAURA, MossdeepCity_Gym_Text_MauraPreBattle, MossdeepCity_Gym_Text_MauraDefeat + trainerbattle_single TRAINER_MAURA, MossdeepCity_Gym_Text_MauraIntro, MossdeepCity_Gym_Text_MauraDefeat msgbox MossdeepCity_Gym_Text_MauraPostBattle, MSGBOX_AUTOCLOSE end MossdeepCity_Gym_EventScript_Sylvia:: @ 8220B87 - trainerbattle_single TRAINER_SYLVIA, MossdeepCity_Gym_Text_SylviaPreBattle, MossdeepCity_Gym_Text_SylviaDefeat + trainerbattle_single TRAINER_SYLVIA, MossdeepCity_Gym_Text_SylviaIntro, MossdeepCity_Gym_Text_SylviaDefeat msgbox MossdeepCity_Gym_Text_SylviaPostBattle, MSGBOX_AUTOCLOSE end MossdeepCity_Gym_EventScript_Nate:: @ 8220B9E - trainerbattle_single TRAINER_NATE, MossdeepCity_Gym_Text_NatePreBattle, MossdeepCity_Gym_Text_NateDefeat + trainerbattle_single TRAINER_NATE, MossdeepCity_Gym_Text_NateIntro, MossdeepCity_Gym_Text_NateDefeat msgbox MossdeepCity_Gym_Text_NatePostBattle, MSGBOX_AUTOCLOSE end MossdeepCity_Gym_EventScript_Macey:: @ 8220BB5 - trainerbattle_single TRAINER_MACEY, MossdeepCity_Gym_Text_MaceyPreBattle, MossdeepCity_Gym_Text_MaceyDefeat + trainerbattle_single TRAINER_MACEY, MossdeepCity_Gym_Text_MaceyIntro, MossdeepCity_Gym_Text_MaceyDefeat msgbox MossdeepCity_Gym_Text_MaceyPostBattle, MSGBOX_AUTOCLOSE end MossdeepCity_Gym_EventScript_Clifford:: @ 8220BCC - trainerbattle_single TRAINER_CLIFFORD, MossdeepCity_Gym_Text_CliffordPreBattle, MossdeepCity_Gym_Text_CliffordDefeat + trainerbattle_single TRAINER_CLIFFORD, MossdeepCity_Gym_Text_CliffordIntro, MossdeepCity_Gym_Text_CliffordDefeat msgbox MossdeepCity_Gym_Text_CliffordPostBattle, MSGBOX_AUTOCLOSE end MossdeepCity_Gym_EventScript_Nicholas:: @ 8220BE3 - trainerbattle_single TRAINER_NICHOLAS, MossdeepCity_Gym_Text_NicholasPreBattle, MossdeepCity_Gym_Text_NicholasDefeat + trainerbattle_single TRAINER_NICHOLAS, MossdeepCity_Gym_Text_NicholasIntro, MossdeepCity_Gym_Text_NicholasDefeat msgbox MossdeepCity_Gym_Text_NicholasPostBattle, MSGBOX_AUTOCLOSE end MossdeepCity_Gym_EventScript_Kathleen:: @ 8220BFA - trainerbattle_single TRAINER_KATHLEEN, MossdeepCity_Gym_Text_KathleenPreBattle, MossdeepCity_Gym_Text_KathleenDefeat + trainerbattle_single TRAINER_KATHLEEN, MossdeepCity_Gym_Text_KathleenIntro, MossdeepCity_Gym_Text_KathleenDefeat msgbox MossdeepCity_Gym_Text_KathleenPostBattle, MSGBOX_AUTOCLOSE end @@ -385,7 +385,7 @@ MossdeepCity_Gym_Text_GymGuidePostVictory: @ 8220E2A .string "Wow, you're astounding!\n" .string "You're one great TRAINER!$" -MossdeepCity_Gym_Text_PrestonPreBattle: @ 8220E5C +MossdeepCity_Gym_Text_PrestonIntro: @ 8220E5C .string "Battles hinge on the strength of your\n" .string "spirit! The weak-spirited will never win!$" @@ -397,7 +397,7 @@ MossdeepCity_Gym_Text_PrestonPostBattle: @ 8220ED3 .string "The indecisive lose.\n" .string "That's my warning to you.$" -MossdeepCity_Gym_Text_VirgilPreBattle: @ 8220F02 +MossdeepCity_Gym_Text_VirgilIntro: @ 8220F02 .string "Let me see your talent!$" MossdeepCity_Gym_Text_VirgilDefeat: @ 8220F1A @@ -409,7 +409,7 @@ MossdeepCity_Gym_Text_VirgilPostBattle: @ 8220F3A .string "However, you may be even more talented\n" .string "than them…$" -MossdeepCity_Gym_Text_BlakePreBattle: @ 8220FB0 +MossdeepCity_Gym_Text_BlakeIntro: @ 8220FB0 .string "Fufufufu… Watch me levitate a POKé\n" .string "BALL telekinetically!\p" .string "Wrooooooooaaaar!\n" @@ -428,7 +428,7 @@ MossdeepCity_Gym_Text_BlakePostBattle: @ 8221055 .string "No, I'm not cheating!\n" .string "I didn't blow on it! Honestly!$" -MossdeepCity_Gym_Text_HannahPreBattle: @ 82210EE +MossdeepCity_Gym_Text_HannahIntro: @ 82210EE .string "When you lose to me, don't be too hard\n" .string "on yourself.\p" .string "It's not that you're weak--I'm just\n" @@ -443,7 +443,7 @@ MossdeepCity_Gym_Text_HannahPostBattle: @ 822116A .string "Positive thinking--that's my strong\n" .string "point!$" -MossdeepCity_Gym_Text_SamanthaPreBattle: @ 82211E2 +MossdeepCity_Gym_Text_SamanthaIntro: @ 82211E2 .string "I see it…\n" .string "I see your future…\p" .string "If you can beat me, I will tell you\n" @@ -458,7 +458,7 @@ MossdeepCity_Gym_Text_SamanthaPostBattle: @ 822123D .string "The result…\n" .string "You won't hear it from me!$" -MossdeepCity_Gym_Text_MauraPreBattle: @ 82212A6 +MossdeepCity_Gym_Text_MauraIntro: @ 82212A6 .string "The roads you have traveled…\n" .string "What you have experienced…\p" .string "Come at me with everything you've\n" @@ -474,7 +474,7 @@ MossdeepCity_Gym_Text_MauraPostBattle: @ 822132E .string "only despair at the end.\p" .string "What goes around comes around…$" -MossdeepCity_Gym_Text_SylviaPreBattle: @ 82213C2 +MossdeepCity_Gym_Text_SylviaIntro: @ 82213C2 .string "Even at the risk of life, I will win\n" .string "this battle!$" @@ -487,7 +487,7 @@ MossdeepCity_Gym_Text_SylviaPostBattle: @ 8221412 .string "It won't be my fault if something\n" .string "horrible befalls you…$" -MossdeepCity_Gym_Text_NatePreBattle: @ 8221460 +MossdeepCity_Gym_Text_NateIntro: @ 8221460 .string "Hohoho.\p" .string "You need me to show you how tenacious\n" .string "the PSYCHIC type can be.$" @@ -500,7 +500,7 @@ MossdeepCity_Gym_Text_NatePostBattle: @ 82214D3 .string "I… I don't let defeat rattle m-me,\n" .string "however b-badly.$" -MossdeepCity_Gym_Text_KathleenPreBattle: @ 8221507 +MossdeepCity_Gym_Text_KathleenIntro: @ 8221507 .string "Let me show you a perfectly awful,\n" .string "horrifying time!$" @@ -511,7 +511,7 @@ MossdeepCity_Gym_Text_KathleenPostBattle: @ 8221545 .string "Your vitality is contagious!\n" .string "Get away from me quickly!$" -MossdeepCity_Gym_Text_CliffordPreBattle: @ 822157C +MossdeepCity_Gym_Text_CliffordIntro: @ 822157C .string "I may be past my prime, but I suggest\n" .string "you not patronize me.$" @@ -523,7 +523,7 @@ MossdeepCity_Gym_Text_CliffordPostBattle: @ 82215E2 .string "It seems that I could not overcome\n" .string "your youthful energy.$" -MossdeepCity_Gym_Text_MaceyPreBattle: @ 822161B +MossdeepCity_Gym_Text_MaceyIntro: @ 822161B .string "You're not getting through to the end!\n" .string "Not if I can help it!$" @@ -536,7 +536,7 @@ MossdeepCity_Gym_Text_MaceyPostBattle: @ 8221680 .string "not suitable for the PSYCHIC type!\p" .string "The way you battle is somehow brutal!$" -MossdeepCity_Gym_Text_NicholasPreBattle: @ 82216EE +MossdeepCity_Gym_Text_NicholasIntro: @ 82216EE .string "Wroooar! Have a taste of my super\n" .string "POKéMON hard-battling power!$" @@ -548,7 +548,7 @@ MossdeepCity_Gym_Text_NicholasPostBattle: @ 822173A .string "All right! I think I'll develop a special\n" .string "invincible POKéMON power next.$" -MossdeepCity_Gym_Text_TateAndLizaPreBattle: @ 8221783 +MossdeepCity_Gym_Text_TateAndLizaIntro: @ 8221783 .string "TATE: Hehehe… Were you surprised?\p" .string "LIZA: Fufufu… Were you surprised?\p" .string "TATE: That there are two GYM LEADERS?\n" diff --git a/data/maps/PetalburgCity_Gym/scripts.inc b/data/maps/PetalburgCity_Gym/scripts.inc index 02685ef475..016f268967 100644 --- a/data/maps/PetalburgCity_Gym/scripts.inc +++ b/data/maps/PetalburgCity_Gym/scripts.inc @@ -411,7 +411,7 @@ PetalburgCity_Gym_EventScript_GiveEnigmaBerry:: @ 8204E1D end PetalburgCity_Gym_EventScript_NormanBattle:: @ 8204E3B - msgbox PetalburgCity_Gym_Text_NormanPreBattle, MSGBOX_DEFAULT + msgbox PetalburgCity_Gym_Text_NormanIntro, MSGBOX_DEFAULT trainerbattle_no_intro TRAINER_NORMAN_1, PetalburgCity_Gym_Text_NormanDefeat message PetalburgCity_Gym_Text_ReceivedBalanceBadge waitmessage @@ -958,7 +958,7 @@ PetalburgCity_Gym_EventScript_RightGymLeadersRoomDoor:: @ 8205387 end PetalburgCity_Gym_EventScript_Randall:: @ 82053BA - trainerbattle_single TRAINER_RANDALL, PetalburgCity_Gym_Text_RandallPreBattle, PetalburgCity_Gym_Text_RandallDefeat, PetalburgCity_Gym_EventScript_SlideOpenSpeedRoomDoors + trainerbattle_single TRAINER_RANDALL, PetalburgCity_Gym_Text_RandallIntro, PetalburgCity_Gym_Text_RandallDefeat, PetalburgCity_Gym_EventScript_SlideOpenSpeedRoomDoors goto_if_set FLAG_DEFEATED_PETALBURG_GYM, PetalburgCity_Gym_EventScript_RandallPostBadge msgbox PetalburgCity_Gym_Text_RandallPostBattle, MSGBOX_AUTOCLOSE end @@ -975,7 +975,7 @@ PetalburgCity_Gym_EventScript_RandallPostBadge:: @ 82053ED end PetalburgCity_Gym_EventScript_Parker:: @ 82053F6 - trainerbattle_single TRAINER_PARKER, PetalburgCity_Gym_Text_ParkerPreBattle, PetalburgCity_Gym_Text_ParkerDefeat, PetalburgCity_Gym_EventScript_SlideOpenConfusionRoomDoors + trainerbattle_single TRAINER_PARKER, PetalburgCity_Gym_Text_ParkerIntro, PetalburgCity_Gym_Text_ParkerDefeat, PetalburgCity_Gym_EventScript_SlideOpenConfusionRoomDoors goto_if_set FLAG_DEFEATED_PETALBURG_GYM, PetalburgCity_Gym_EventScript_ParkerPostBadge msgbox PetalburgCity_Gym_Text_ParkerPostBattle, MSGBOX_AUTOCLOSE end @@ -992,7 +992,7 @@ PetalburgCity_Gym_EventScript_ParkerPostBadge:: @ 8205429 end PetalburgCity_Gym_EventScript_George:: @ 8205432 - trainerbattle_single TRAINER_GEORGE, PetalburgCity_Gym_Text_GeorgePreBattle, PetalburgCity_Gym_Text_GeorgeDefeat, PetalburgCity_Gym_EventScript_SlideOpenRecoveryRoomDoors + trainerbattle_single TRAINER_GEORGE, PetalburgCity_Gym_Text_GeorgeIntro, PetalburgCity_Gym_Text_GeorgeDefeat, PetalburgCity_Gym_EventScript_SlideOpenRecoveryRoomDoors goto_if_set FLAG_DEFEATED_PETALBURG_GYM, PetalburgCity_Gym_EventScript_GeorgePostBadge msgbox PetalburgCity_Gym_Text_GeorgePostBattle, MSGBOX_AUTOCLOSE end @@ -1009,7 +1009,7 @@ PetalburgCity_Gym_EventScript_GeorgePostBadge:: @ 8205465 end PetalburgCity_Gym_EventScript_Berke:: @ 820546E - trainerbattle_single TRAINER_BERKE, PetalburgCity_Gym_Text_BerkePreBattle, PetalburgCity_Gym_Text_BerkeDefeat, PetalburgCity_Gym_EventScript_SlideOpenOHKORoomDoors + trainerbattle_single TRAINER_BERKE, PetalburgCity_Gym_Text_BerkeIntro, PetalburgCity_Gym_Text_BerkeDefeat, PetalburgCity_Gym_EventScript_SlideOpenOHKORoomDoors goto_if_set FLAG_DEFEATED_PETALBURG_GYM, PetalburgCity_Gym_EventScript_BerkePostBadge msgbox PetalburgCity_Gym_Text_BerkePostBattle, MSGBOX_AUTOCLOSE end @@ -1026,7 +1026,7 @@ PetalburgCity_Gym_EventScript_BerkePostBadge:: @ 82054A1 end PetalburgCity_Gym_EventScript_Mary:: @ 82054AA - trainerbattle_single TRAINER_MARY, PetalburgCity_Gym_Text_MaryPreBattle, PetalburgCity_Gym_Text_MaryDefeat, PetalburgCity_Gym_EventScript_SlideOpenAccuracyRoomDoors + trainerbattle_single TRAINER_MARY, PetalburgCity_Gym_Text_MaryIntro, PetalburgCity_Gym_Text_MaryDefeat, PetalburgCity_Gym_EventScript_SlideOpenAccuracyRoomDoors goto_if_set FLAG_DEFEATED_PETALBURG_GYM, PetalburgCity_Gym_EventScript_MaryPostBadge msgbox PetalburgCity_Gym_Text_MaryPostBattle, MSGBOX_AUTOCLOSE end @@ -1043,7 +1043,7 @@ PetalburgCity_Gym_EventScript_MaryPostBadge:: @ 82054DD end PetalburgCity_Gym_EventScript_Alexia:: @ 82054E6 - trainerbattle_single TRAINER_ALEXIA, PetalburgCity_Gym_Text_AlexiaPreBattle, PetalburgCity_Gym_Text_AlexiaDefeat, PetalburgCity_Gym_EventScript_SlideOpenDefenseRoomDoors + trainerbattle_single TRAINER_ALEXIA, PetalburgCity_Gym_Text_AlexiaIntro, PetalburgCity_Gym_Text_AlexiaDefeat, PetalburgCity_Gym_EventScript_SlideOpenDefenseRoomDoors goto_if_set FLAG_DEFEATED_PETALBURG_GYM, PetalburgCity_Gym_EventScript_AlexiaPostBadge msgbox PetalburgCity_Gym_Text_AlexiaPostBattle, MSGBOX_AUTOCLOSE end @@ -1060,7 +1060,7 @@ PetalburgCity_Gym_EventScript_AlexiaPostBadge:: @ 8205519 end PetalburgCity_Gym_EventScript_Jody:: @ 8205522 - trainerbattle_single TRAINER_JODY, PetalburgCity_Gym_Text_JodyPreBattle, PetalburgCity_Gym_Text_JodyDefeat, PetalburgCity_Gym_EventScript_SlideOpenStrengthRoomDoors + trainerbattle_single TRAINER_JODY, PetalburgCity_Gym_Text_JodyIntro, PetalburgCity_Gym_Text_JodyDefeat, PetalburgCity_Gym_EventScript_SlideOpenStrengthRoomDoors goto_if_set FLAG_DEFEATED_PETALBURG_GYM, PetalburgCity_Gym_EventScript_JodyPostBadge msgbox PetalburgCity_Gym_Text_JodyPostBattle, MSGBOX_AUTOCLOSE end @@ -1357,7 +1357,7 @@ PetalburgCity_Gym_Text_YouHaveGottenStronger: @ 8205F87 .string "I can tell by the number of BADGES\n" .string "that you've earned.$" -PetalburgCity_Gym_Text_NormanPreBattle: @ 8205FE5 +PetalburgCity_Gym_Text_NormanIntro: @ 8205FE5 .string "DAD: Hm…\n" .string "So, you did get four GYM BADGES.\p" .string "Fine, as I promised, we will have\n" @@ -1453,7 +1453,7 @@ PetalburgCity_Gym_Text_GymGuidePostVictory: @ 82066F3 .string "Like, whoa!\n" .string "What a stunning turn of events!$" -PetalburgCity_Gym_Text_RandallPreBattle: @ 820674F +PetalburgCity_Gym_Text_RandallIntro: @ 820674F .string "The ability to attack before the\n" .string "opponent…\p" .string "Just that alone puts me at a great\n" @@ -1476,7 +1476,7 @@ PetalburgCity_Gym_Text_RandallPostBadge: @ 820685E .string "That's what I think being a\n" .string "GYM LEADER is all about.$" -PetalburgCity_Gym_Text_ParkerPreBattle: @ 82068FD +PetalburgCity_Gym_Text_ParkerIntro: @ 82068FD .string "This is the CONFUSION ROOM.\p" .string "Let me see how well bonded you are\n" .string "with your POKéMON!$" @@ -1493,7 +1493,7 @@ PetalburgCity_Gym_Text_ParkerPostBadge: @ 82069D9 .string "After you beat our LEADER, the\n" .string "training has become a lot tougher.$" -PetalburgCity_Gym_Text_GeorgePreBattle: @ 8206A1B +PetalburgCity_Gym_Text_GeorgeIntro: @ 8206A1B .string "Just when you think you're going to\n" .string "win, your opponent restores HP…\p" .string "Can you just imagine how awful that\n" @@ -1518,7 +1518,7 @@ PetalburgCity_Gym_Text_GeorgePostBadge: @ 8206BB1 .string "I'm going to keep training at GYMS.\n" .string "One day, I'll become a LEADER.$" -PetalburgCity_Gym_Text_BerkePreBattle: @ 8206BF4 +PetalburgCity_Gym_Text_BerkeIntro: @ 8206BF4 .string "I'm not going to take it easy just\n" .string "because you're our LEADER's kid.\p" .string "I'll show you how horrid it is for\n" @@ -1541,7 +1541,7 @@ PetalburgCity_Gym_Text_BerkePostBadge: @ 8206D56 .string "the TRAINERS of PETALBURG CITY have\l" .string "become a lot tougher.$" -PetalburgCity_Gym_Text_MaryPreBattle: @ 8206DB2 +PetalburgCity_Gym_Text_MaryIntro: @ 8206DB2 .string "Giggle…\n" .string "This is the ACCURACY ROOM.\p" .string "It's pretty nasty when every attack\n" @@ -1564,7 +1564,7 @@ PetalburgCity_Gym_Text_MaryPostBadge: @ 8206ED8 .string "We're striving to become soul mates\n" .string "with our POKéMON.$" -PetalburgCity_Gym_Text_AlexiaPreBattle: @ 8206F44 +PetalburgCity_Gym_Text_AlexiaIntro: @ 8206F44 .string "The higher the DEFENSE, the more\n" .string "reckless I can be in attack.$" @@ -1584,7 +1584,7 @@ PetalburgCity_Gym_Text_AlexiaPostBattle: @ 8206F9F PetalburgCity_Gym_Text_AlexiaPostBadge: @ 8207069 .string "Hi! Have you tried using SURF?$" -PetalburgCity_Gym_Text_JodyPreBattle: @ 8207088 +PetalburgCity_Gym_Text_JodyIntro: @ 8207088 .string "Our GYM LEADER told us to go all out\n" .string "and beat you.\p" .string "Even if you happen to be the\n" diff --git a/data/maps/RustboroCity_Gym/scripts.inc b/data/maps/RustboroCity_Gym/scripts.inc index 0a95a86e51..bbe01389f4 100644 --- a/data/maps/RustboroCity_Gym/scripts.inc +++ b/data/maps/RustboroCity_Gym/scripts.inc @@ -2,7 +2,7 @@ RustboroCity_Gym_MapScripts:: @ 8212F30 .byte 0 RustboroCity_Gym_EventScript_Roxanne:: @ 8212F31 - trainerbattle_single TRAINER_ROXANNE_1, RustboroCity_Gym_Text_RoxannePreBattle, RustboroCity_Gym_Text_RoxanneDefeat, RustboroCity_Gym_EventScript_RoxanneDefeated, NO_MUSIC + trainerbattle_single TRAINER_ROXANNE_1, RustboroCity_Gym_Text_RoxanneIntro, RustboroCity_Gym_Text_RoxanneDefeat, RustboroCity_Gym_EventScript_RoxanneDefeated, NO_MUSIC specialvar VAR_RESULT, ShouldTryRematchBattle compare VAR_RESULT, TRUE goto_if_eq RustboroCity_Gym_EventScript_RoxanneRematch @@ -42,17 +42,17 @@ RustboroCity_Gym_EventScript_RoxanneRematch:: @ 8212FC8 end RustboroCity_Gym_EventScript_Josh:: @ 8212FE3 - trainerbattle_single TRAINER_JOSH, RustboroCity_Gym_Text_JoshPreBattle, RustboroCity_Gym_Text_JoshDefeat + trainerbattle_single TRAINER_JOSH, RustboroCity_Gym_Text_JoshIntro, RustboroCity_Gym_Text_JoshDefeat msgbox RustboroCity_Gym_Text_JoshPostBattle, MSGBOX_AUTOCLOSE end RustboroCity_Gym_EventScript_Tommy:: @ 8212FFA - trainerbattle_single TRAINER_TOMMY, RustboroCity_Gym_Text_TommyPreBattle, RustboroCity_Gym_Text_TommyDefeat + trainerbattle_single TRAINER_TOMMY, RustboroCity_Gym_Text_TommyIntro, RustboroCity_Gym_Text_TommyDefeat msgbox RustboroCity_Gym_Text_TommyPostBattle, MSGBOX_AUTOCLOSE end RustboroCity_Gym_EventScript_Marc:: @ 8213011 - trainerbattle_single TRAINER_MARC, RustboroCity_Gym_Text_MarcPreBattle, RustboroCity_Gym_Text_MarcDefeat + trainerbattle_single TRAINER_MARC, RustboroCity_Gym_Text_MarcIntro, RustboroCity_Gym_Text_MarcDefeat msgbox RustboroCity_Gym_Text_MarcPostBattle, MSGBOX_AUTOCLOSE end @@ -140,7 +140,7 @@ RustboroCity_Gym_Text_GymGuidePostVictory: @ 82132E2 .string "the stairs to the CHAMPIONSHIP!\p" .string "That's got to feel awesome!$" -RustboroCity_Gym_Text_JoshPreBattle: @ 82133E9 +RustboroCity_Gym_Text_JoshIntro: @ 82133E9 .string "Don't take us GYM TRAINERS lightly!\n" .string "I'll show you why we're better!$" @@ -151,7 +151,7 @@ RustboroCity_Gym_Text_JoshPostBattle: @ 8213447 .string "You haven't seen anything of the ROCK\n" .string "type's terrifying power!$" -RustboroCity_Gym_Text_TommyPreBattle: @ 8213486 +RustboroCity_Gym_Text_TommyIntro: @ 8213486 .string "If you can't beat me, you won't stand\n" .string "a chance against ROXANNE!$" @@ -163,7 +163,7 @@ RustboroCity_Gym_Text_TommyPostBattle: @ 82134E6 .string "several times.\p" .string "You'd better be on your guard!$" -RustboroCity_Gym_Text_MarcPreBattle: @ 8213533 +RustboroCity_Gym_Text_MarcIntro: @ 8213533 .string "We might be in the middle of town,\n" .string "but so what?\p" .string "My ROCK POKéMON need room to\n" @@ -178,7 +178,7 @@ RustboroCity_Gym_Text_MarcPostBattle: @ 82135C0 .string "It took smarts and sense for her to\n" .string "pick the ROCK type at her young age.$" -RustboroCity_Gym_Text_RoxannePreBattle: @ 821362A +RustboroCity_Gym_Text_RoxanneIntro: @ 821362A .string "Hello, I am ROXANNE, the RUSTBORO\n" .string "POKéMON GYM LEADER.\p" .string "I became a GYM LEADER so that I might\n" diff --git a/data/maps/SootopolisCity_Gym_1F/scripts.inc b/data/maps/SootopolisCity_Gym_1F/scripts.inc index c455092255..b32b322d81 100644 --- a/data/maps/SootopolisCity_Gym_1F/scripts.inc +++ b/data/maps/SootopolisCity_Gym_1F/scripts.inc @@ -83,7 +83,7 @@ SootopolisCity_Gym_1F_Movement_FallThroughIce: @ 8224F42 step_end SootopolisCity_Gym_1F_EventScript_Juan:: @ 8224F44 - trainerbattle_single TRAINER_JUAN_1, SootopolisCity_Gym_1F_Text_JuanPreBattle, SootopolisCity_Gym_1F_Text_JuanDefeat, SootopolisCity_Gym_1F_EventScript_JuanDefeated, NO_MUSIC + trainerbattle_single TRAINER_JUAN_1, SootopolisCity_Gym_1F_Text_JuanIntro, SootopolisCity_Gym_1F_Text_JuanDefeat, SootopolisCity_Gym_1F_EventScript_JuanDefeated, NO_MUSIC specialvar VAR_RESULT, ShouldTryRematchBattle compare VAR_RESULT, TRUE goto_if_eq SootopolisCity_Gym_1F_EventScript_JuanRematch @@ -200,7 +200,7 @@ SootopolisCity_Gym_1F_Text_GymGuidePostVictory: @ 82251AF .string "If you've gotten all the BADGES, you're\n" .string "set for the POKéMON LEAGUE challenge!$" -SootopolisCity_Gym_1F_Text_JuanPreBattle: @ 8225268 +SootopolisCity_Gym_1F_Text_JuanIntro: @ 8225268 .string "Let me ask you.\n" .string "Did you know?\l" .string "Ah, I should not be so coy.\p" diff --git a/data/maps/SootopolisCity_Gym_B1F/scripts.inc b/data/maps/SootopolisCity_Gym_B1F/scripts.inc index fad5878fbb..735722db5a 100644 --- a/data/maps/SootopolisCity_Gym_B1F/scripts.inc +++ b/data/maps/SootopolisCity_Gym_B1F/scripts.inc @@ -2,56 +2,56 @@ SootopolisCity_Gym_B1F_MapScripts:: @ 8225C8A .byte 0 SootopolisCity_Gym_B1F_EventScript_Andrea:: @ 8225C8B - trainerbattle_single TRAINER_ANDREA, SootopolisCity_Gym_B1F_Text_AndreaPreBattle, SootopolisCity_Gym_B1F_Text_AndreaDefeat + trainerbattle_single TRAINER_ANDREA, SootopolisCity_Gym_B1F_Text_AndreaIntro, SootopolisCity_Gym_B1F_Text_AndreaDefeat msgbox SootopolisCity_Gym_B1F_Text_AndreaPostBattle, MSGBOX_AUTOCLOSE end SootopolisCity_Gym_B1F_EventScript_Crissy:: @ 8225CA2 - trainerbattle_single TRAINER_CRISSY, SootopolisCity_Gym_B1F_Text_CrissyPreBattle, SootopolisCity_Gym_B1F_Text_CrissyDefeat + trainerbattle_single TRAINER_CRISSY, SootopolisCity_Gym_B1F_Text_CrissyIntro, SootopolisCity_Gym_B1F_Text_CrissyDefeat msgbox SootopolisCity_Gym_B1F_Text_CrissyPostBattle, MSGBOX_AUTOCLOSE end SootopolisCity_Gym_B1F_EventScript_Brianna:: @ 8225CB9 - trainerbattle_single TRAINER_BRIANNA, SootopolisCity_Gym_B1F_Text_BriannaPreBattle, SootopolisCity_Gym_B1F_Text_BriannaDefeat + trainerbattle_single TRAINER_BRIANNA, SootopolisCity_Gym_B1F_Text_BriannaIntro, SootopolisCity_Gym_B1F_Text_BriannaDefeat msgbox SootopolisCity_Gym_B1F_Text_BriannaPostBattle, MSGBOX_AUTOCLOSE end SootopolisCity_Gym_B1F_EventScript_Connie:: @ 8225CD0 - trainerbattle_single TRAINER_CONNIE, SootopolisCity_Gym_B1F_Text_ConniePreBattle, SootopolisCity_Gym_B1F_Text_ConnieDefeat + trainerbattle_single TRAINER_CONNIE, SootopolisCity_Gym_B1F_Text_ConnieIntro, SootopolisCity_Gym_B1F_Text_ConnieDefeat msgbox SootopolisCity_Gym_B1F_Text_ConniePostBattle, MSGBOX_AUTOCLOSE end SootopolisCity_Gym_B1F_EventScript_Bridget:: @ 8225CE7 - trainerbattle_single TRAINER_BRIDGET, SootopolisCity_Gym_B1F_Text_BridgetPreBattle, SootopolisCity_Gym_B1F_Text_BridgetDefeat + trainerbattle_single TRAINER_BRIDGET, SootopolisCity_Gym_B1F_Text_BridgetIntro, SootopolisCity_Gym_B1F_Text_BridgetDefeat msgbox SootopolisCity_Gym_B1F_Text_BridgetPostBattle, MSGBOX_AUTOCLOSE end SootopolisCity_Gym_B1F_EventScript_Olivia:: @ 8225CFE - trainerbattle_single TRAINER_OLIVIA, SootopolisCity_Gym_B1F_Text_OliviaPreBattle, SootopolisCity_Gym_B1F_Text_OliviaDefeat + trainerbattle_single TRAINER_OLIVIA, SootopolisCity_Gym_B1F_Text_OliviaIntro, SootopolisCity_Gym_B1F_Text_OliviaDefeat msgbox SootopolisCity_Gym_B1F_Text_OliviaPostBattle, MSGBOX_AUTOCLOSE end SootopolisCity_Gym_B1F_EventScript_Tiffany:: @ 8225D15 - trainerbattle_single TRAINER_TIFFANY, SootopolisCity_Gym_B1F_Text_TiffanyPreBattle, SootopolisCity_Gym_B1F_Text_TiffanyDefeat + trainerbattle_single TRAINER_TIFFANY, SootopolisCity_Gym_B1F_Text_TiffanyIntro, SootopolisCity_Gym_B1F_Text_TiffanyDefeat msgbox SootopolisCity_Gym_B1F_Text_TiffanyPostBattle, MSGBOX_AUTOCLOSE end SootopolisCity_Gym_B1F_EventScript_Bethany:: @ 8225D2C - trainerbattle_single TRAINER_BETHANY, SootopolisCity_Gym_B1F_Text_BethanyPreBattle, SootopolisCity_Gym_B1F_Text_BethanyDefeat + trainerbattle_single TRAINER_BETHANY, SootopolisCity_Gym_B1F_Text_BethanyIntro, SootopolisCity_Gym_B1F_Text_BethanyDefeat msgbox SootopolisCity_Gym_B1F_Text_BethanyPostBattle, MSGBOX_AUTOCLOSE end SootopolisCity_Gym_B1F_EventScript_Annika:: @ 8225D43 - trainerbattle_single TRAINER_ANNIKA, SootopolisCity_Gym_B1F_Text_AnnikaPreBattle, SootopolisCity_Gym_B1F_Text_AnnikaDefeat + trainerbattle_single TRAINER_ANNIKA, SootopolisCity_Gym_B1F_Text_AnnikaIntro, SootopolisCity_Gym_B1F_Text_AnnikaDefeat msgbox SootopolisCity_Gym_B1F_Text_AnnikaPostBattle, MSGBOX_AUTOCLOSE end SootopolisCity_Gym_B1F_EventScript_Daphne:: @ 8225D5A - trainerbattle_single TRAINER_DAPHNE, SootopolisCity_Gym_B1F_Text_DaphnePreBattle, SootopolisCity_Gym_B1F_Text_DaphneDefeat + trainerbattle_single TRAINER_DAPHNE, SootopolisCity_Gym_B1F_Text_DaphneIntro, SootopolisCity_Gym_B1F_Text_DaphneDefeat msgbox SootopolisCity_Gym_B1F_Text_DaphnePostBattle, MSGBOX_AUTOCLOSE end -SootopolisCity_Gym_B1F_Text_AndreaPreBattle: @ 8225D71 +SootopolisCity_Gym_B1F_Text_AndreaIntro: @ 8225D71 .string "I'll show you the sublime techniques\n" .string "I learned from our LEADER JUAN!$" @@ -62,7 +62,7 @@ SootopolisCity_Gym_B1F_Text_AndreaPostBattle: @ 8225DCF .string "Watch what happens if you crack all\n" .string "the floor tiles.$" -SootopolisCity_Gym_B1F_Text_CrissyPreBattle: @ 8225E04 +SootopolisCity_Gym_B1F_Text_CrissyIntro: @ 8225E04 .string "You came all the way here, but you won't\n" .string "get to see JUAN.\p" .string "Not if you lose to me, you won't!$" @@ -75,7 +75,7 @@ SootopolisCity_Gym_B1F_Text_CrissyPostBattle: @ 8225E90 .string "You might be good enough to avoid\n" .string "being wiped out in one hit by JUAN.$" -SootopolisCity_Gym_B1F_Text_DaphnePreBattle: @ 8225ED6 +SootopolisCity_Gym_B1F_Text_DaphneIntro: @ 8225ED6 .string "The sight of JUAN conducting\n" .string "a battle…\p" .string "The very beauty of it compelled me to\n" @@ -91,7 +91,7 @@ SootopolisCity_Gym_B1F_Text_DaphnePostBattle: @ 8225F67 .string "Oh… I'm so fortunate to have found\n" .string "POKéMON.$" -SootopolisCity_Gym_B1F_Text_ConniePreBattle: @ 8225FBE +SootopolisCity_Gym_B1F_Text_ConnieIntro: @ 8225FBE .string "I should teach you how harsh battles\n" .string "can be.$" @@ -104,7 +104,7 @@ SootopolisCity_Gym_B1F_Text_ConniePostBattle: @ 8225FFE .string "If you want to reach JUAN, you\n" .string "need to walk on each floor tile once.$" -SootopolisCity_Gym_B1F_Text_BridgetPreBattle: @ 8226061 +SootopolisCity_Gym_B1F_Text_BridgetIntro: @ 8226061 .string "The POKéMON GYM of the highest level\n" .string "in the HOENN region…\p" .string "That's the SOOTOPOLIS GYM.$" @@ -118,7 +118,7 @@ SootopolisCity_Gym_B1F_Text_BridgetPostBattle: @ 82260D1 .string "other places will make you stronger.\l" .string "But above all, it looks more fun.$" -SootopolisCity_Gym_B1F_Text_OliviaPreBattle: @ 8226164 +SootopolisCity_Gym_B1F_Text_OliviaIntro: @ 8226164 .string "I train my POKéMON together with\n" .string "JUAN.\p" .string "Don't think I'm a pushover.$" @@ -130,7 +130,7 @@ SootopolisCity_Gym_B1F_Text_OliviaPostBattle: @ 82261B5 .string "I think you have potential.\n" .string "Why don't you stay and train with us?$" -SootopolisCity_Gym_B1F_Text_TiffanyPreBattle: @ 82261F7 +SootopolisCity_Gym_B1F_Text_TiffanyIntro: @ 82261F7 .string "A graceful glide across the ice while\n" .string "crossing no lines…\p" .string "A TRAINER putting on that performance\n" @@ -144,7 +144,7 @@ SootopolisCity_Gym_B1F_Text_TiffanyPostBattle: @ 8226286 .string "you are as a TRAINER has nothing to do\l" .string "with how young or old you are.$" -SootopolisCity_Gym_B1F_Text_BethanyPreBattle: @ 82262F3 +SootopolisCity_Gym_B1F_Text_BethanyIntro: @ 82262F3 .string "When I'm with my POKéMON, the time\n" .string "flies by before you can say, “Oops!”$" @@ -155,7 +155,7 @@ SootopolisCity_Gym_B1F_Text_BethanyPostBattle: @ 8226341 .string "I wish I could forget about lost causes\n" .string "before I can manage an “Oops!”$" -SootopolisCity_Gym_B1F_Text_AnnikaPreBattle: @ 8226388 +SootopolisCity_Gym_B1F_Text_AnnikaIntro: @ 8226388 .string "I can battle with really rare POKéMON\n" .string "if you'd like.$" @@ -169,7 +169,7 @@ SootopolisCity_Gym_B1F_Text_AnnikaPostBattle: @ 82263F4 .string "Oh, if only I'd met JUAN years ago\n" .string "when I was younger…$" -SootopolisCity_Gym_B1F_Text_BriannaPreBattle: @ 822646E +SootopolisCity_Gym_B1F_Text_BriannaIntro: @ 822646E .string "Giggle…\n" .string "Your grim look is so charming.$" diff --git a/data/scripts/gabby_and_ty.inc b/data/scripts/gabby_and_ty.inc index 456f56f45c..90b3b3088a 100644 --- a/data/scripts/gabby_and_ty.inc +++ b/data/scripts/gabby_and_ty.inc @@ -149,61 +149,61 @@ GabbyAndTy_EventScript_TyBattle1:: @ 828CDF6 end GabbyAndTy_EventScript_GabbyBattle2:: @ 828CE16 - trainerbattle_double TRAINER_GABBY_AND_TY_2, GabbyAndTy_Text_GabbyPreBattle, GabbyAndTy_Text_GabbyDefeat, GabbyAndTy_Text_GabbyNotEnoughMons, GabbyAndTy_EventScript_RequestInterview + trainerbattle_double TRAINER_GABBY_AND_TY_2, GabbyAndTy_Text_GabbyIntro, GabbyAndTy_Text_GabbyDefeat, GabbyAndTy_Text_GabbyNotEnoughMons, GabbyAndTy_EventScript_RequestInterview msgbox GabbyAndTy_Text_KeepingAnEyeOutForYou, MSGBOX_DEFAULT release end GabbyAndTy_EventScript_TyBattle2:: @ 828CE36 - trainerbattle_double TRAINER_GABBY_AND_TY_2, GabbyAndTy_Text_TyPreBattle, GabbyAndTy_Text_TyDefeat, GabbyAndTy_Text_TyNotEnoughMons, GabbyAndTy_EventScript_RequestInterview + trainerbattle_double TRAINER_GABBY_AND_TY_2, GabbyAndTy_Text_TyIntro, GabbyAndTy_Text_TyDefeat, GabbyAndTy_Text_TyNotEnoughMons, GabbyAndTy_EventScript_RequestInterview msgbox GabbyAndTy_Text_TyPostBattle, MSGBOX_DEFAULT release end GabbyAndTy_EventScript_GabbyBattle3:: @ 828CE56 - trainerbattle_double TRAINER_GABBY_AND_TY_3, GabbyAndTy_Text_GabbyPreBattle, GabbyAndTy_Text_GabbyDefeat, GabbyAndTy_Text_GabbyNotEnoughMons, GabbyAndTy_EventScript_RequestInterview + trainerbattle_double TRAINER_GABBY_AND_TY_3, GabbyAndTy_Text_GabbyIntro, GabbyAndTy_Text_GabbyDefeat, GabbyAndTy_Text_GabbyNotEnoughMons, GabbyAndTy_EventScript_RequestInterview msgbox GabbyAndTy_Text_KeepingAnEyeOutForYou, MSGBOX_DEFAULT release end GabbyAndTy_EventScript_TyBattle3:: @ 828CE76 - trainerbattle_double TRAINER_GABBY_AND_TY_3, GabbyAndTy_Text_TyPreBattle, GabbyAndTy_Text_TyDefeat, GabbyAndTy_Text_TyNotEnoughMons, GabbyAndTy_EventScript_RequestInterview + trainerbattle_double TRAINER_GABBY_AND_TY_3, GabbyAndTy_Text_TyIntro, GabbyAndTy_Text_TyDefeat, GabbyAndTy_Text_TyNotEnoughMons, GabbyAndTy_EventScript_RequestInterview msgbox GabbyAndTy_Text_TyPostBattle, MSGBOX_DEFAULT release end GabbyAndTy_EventScript_GabbyBattle4:: @ 828CE96 - trainerbattle_double TRAINER_GABBY_AND_TY_4, GabbyAndTy_Text_GabbyPreBattle, GabbyAndTy_Text_GabbyDefeat, GabbyAndTy_Text_GabbyNotEnoughMons, GabbyAndTy_EventScript_RequestInterview + trainerbattle_double TRAINER_GABBY_AND_TY_4, GabbyAndTy_Text_GabbyIntro, GabbyAndTy_Text_GabbyDefeat, GabbyAndTy_Text_GabbyNotEnoughMons, GabbyAndTy_EventScript_RequestInterview msgbox GabbyAndTy_Text_KeepingAnEyeOutForYou, MSGBOX_DEFAULT release end GabbyAndTy_EventScript_TyBattle4:: @ 828CEB6 - trainerbattle_double TRAINER_GABBY_AND_TY_4, GabbyAndTy_Text_TyPreBattle, GabbyAndTy_Text_TyDefeat, GabbyAndTy_Text_TyNotEnoughMons, GabbyAndTy_EventScript_RequestInterview + trainerbattle_double TRAINER_GABBY_AND_TY_4, GabbyAndTy_Text_TyIntro, GabbyAndTy_Text_TyDefeat, GabbyAndTy_Text_TyNotEnoughMons, GabbyAndTy_EventScript_RequestInterview msgbox GabbyAndTy_Text_TyPostBattle, MSGBOX_DEFAULT release end GabbyAndTy_EventScript_GabbyBattle5:: @ 828CED6 - trainerbattle_double TRAINER_GABBY_AND_TY_5, GabbyAndTy_Text_GabbyPreBattle, GabbyAndTy_Text_GabbyDefeat, GabbyAndTy_Text_GabbyNotEnoughMons, GabbyAndTy_EventScript_RequestInterview + trainerbattle_double TRAINER_GABBY_AND_TY_5, GabbyAndTy_Text_GabbyIntro, GabbyAndTy_Text_GabbyDefeat, GabbyAndTy_Text_GabbyNotEnoughMons, GabbyAndTy_EventScript_RequestInterview msgbox GabbyAndTy_Text_KeepingAnEyeOutForYou, MSGBOX_DEFAULT release end GabbyAndTy_EventScript_TyBattle5:: @ 828CEF6 - trainerbattle_double TRAINER_GABBY_AND_TY_5, GabbyAndTy_Text_TyPreBattle, GabbyAndTy_Text_TyDefeat, GabbyAndTy_Text_TyNotEnoughMons, GabbyAndTy_EventScript_RequestInterview + trainerbattle_double TRAINER_GABBY_AND_TY_5, GabbyAndTy_Text_TyIntro, GabbyAndTy_Text_TyDefeat, GabbyAndTy_Text_TyNotEnoughMons, GabbyAndTy_EventScript_RequestInterview msgbox GabbyAndTy_Text_TyPostBattle, MSGBOX_DEFAULT release end GabbyAndTy_EventScript_GabbyBattle6:: @ 828CF16 - trainerbattle_double TRAINER_GABBY_AND_TY_6, GabbyAndTy_Text_GabbyPreBattle, GabbyAndTy_Text_GabbyDefeat, GabbyAndTy_Text_GabbyNotEnoughMons, GabbyAndTy_EventScript_RequestInterview + trainerbattle_double TRAINER_GABBY_AND_TY_6, GabbyAndTy_Text_GabbyIntro, GabbyAndTy_Text_GabbyDefeat, GabbyAndTy_Text_GabbyNotEnoughMons, GabbyAndTy_EventScript_RequestInterview msgbox GabbyAndTy_Text_KeepingAnEyeOutForYou, MSGBOX_DEFAULT release end GabbyAndTy_EventScript_TyBattle6:: @ 828CF36 - trainerbattle_double TRAINER_GABBY_AND_TY_6, GabbyAndTy_Text_TyPreBattle, GabbyAndTy_Text_TyDefeat, GabbyAndTy_Text_TyNotEnoughMons, GabbyAndTy_EventScript_RequestInterview + trainerbattle_double TRAINER_GABBY_AND_TY_6, GabbyAndTy_Text_TyIntro, GabbyAndTy_Text_TyDefeat, GabbyAndTy_Text_TyNotEnoughMons, GabbyAndTy_EventScript_RequestInterview msgbox GabbyAndTy_Text_TyPostBattle, MSGBOX_DEFAULT release end diff --git a/data/scripts/secret_base.inc b/data/scripts/secret_base.inc index aa5f63b9e6..7bb20e3784 100644 --- a/data/scripts/secret_base.inc +++ b/data/scripts/secret_base.inc @@ -346,7 +346,7 @@ SecretBase_EventScript_Trainer0:: @ 8275DD6 goto_if_unset FLAG_SYS_GAME_CLEAR, SecretBase_EventScript_Trainer0PreChampion compare VAR_RESULT, 1 goto_if_eq SecretBase_EventScript_Trainer0PostBattle - msgbox SecretBase_Text_Trainer0PreBattle, MSGBOX_YESNO + msgbox SecretBase_Text_Trainer0Intro, MSGBOX_YESNO compare VAR_RESULT, NO goto_if_eq SecretBase_EventScript_Trainer0DeclineBattle setvar VAR_RESULT, 1 @@ -383,7 +383,7 @@ SecretBase_EventScript_Trainer1:: @ 8275E4E goto_if_unset FLAG_SYS_GAME_CLEAR, SecretBase_EventScript_Trainer1PreChampion compare VAR_RESULT, 1 goto_if_eq SecretBase_EventScript_Trainer1PostBattle - msgbox SecretBase_Text_Trainer1PreBattle, MSGBOX_YESNO + msgbox SecretBase_Text_Trainer1Intro, MSGBOX_YESNO compare VAR_RESULT, NO goto_if_eq SecretBase_EventScript_Trainer1DeclineBattle setvar VAR_RESULT, 1 @@ -420,7 +420,7 @@ SecretBase_EventScript_Trainer2:: @ 8275EC6 goto_if_unset FLAG_SYS_GAME_CLEAR, SecretBase_EventScript_Trainer2PreChampion compare VAR_RESULT, 1 goto_if_eq SecretBase_EventScript_Trainer2PostBattle - msgbox SecretBase_Text_Trainer2PreBattle, MSGBOX_YESNO + msgbox SecretBase_Text_Trainer2Intro, MSGBOX_YESNO compare VAR_RESULT, NO goto_if_eq SecretBase_EventScript_Trainer2DeclineBattle setvar VAR_RESULT, 1 @@ -457,7 +457,7 @@ SecretBase_EventScript_Trainer3:: @ 8275F3E goto_if_unset FLAG_SYS_GAME_CLEAR, SecretBase_EventScript_Trainer3PreChampion compare VAR_RESULT, 1 goto_if_eq SecretBase_EventScript_Trainer3PostBattle - msgbox SecretBase_Text_Trainer3PreBattle, MSGBOX_YESNO + msgbox SecretBase_Text_Trainer3Intro, MSGBOX_YESNO compare VAR_RESULT, NO goto_if_eq SecretBase_EventScript_Trainer3DeclineBattle setvar VAR_RESULT, 1 @@ -494,7 +494,7 @@ SecretBase_EventScript_Trainer4:: @ 8275FB6 goto_if_unset FLAG_SYS_GAME_CLEAR, SecretBase_EventScript_Trainer4PreChampion compare VAR_RESULT, 1 goto_if_eq SecretBase_EventScript_Trainer4PostBattle - msgbox SecretBase_Text_Trainer4PreBattle, MSGBOX_YESNO + msgbox SecretBase_Text_Trainer4Intro, MSGBOX_YESNO compare VAR_RESULT, NO goto_if_eq SecretBase_EventScript_Trainer4DeclineBattle setvar VAR_RESULT, 1 @@ -531,7 +531,7 @@ SecretBase_EventScript_Trainer5:: @ 827602E goto_if_unset FLAG_SYS_GAME_CLEAR, SecretBase_EventScript_Trainer5PreChampion compare VAR_RESULT, 1 goto_if_eq SecretBase_EventScript_Trainer5PostBattle - msgbox SecretBase_Text_Trainer5PreBattle, MSGBOX_YESNO + msgbox SecretBase_Text_Trainer5Intro, MSGBOX_YESNO compare VAR_RESULT, NO goto_if_eq SecretBase_EventScript_Trainer5DeclineBattle setvar VAR_RESULT, 1 @@ -568,7 +568,7 @@ SecretBase_EventScript_Trainer6:: @ 82760A6 goto_if_unset FLAG_SYS_GAME_CLEAR, SecretBase_EventScript_Trainer6PreChampion compare VAR_RESULT, 1 goto_if_eq SecretBase_EventScript_Trainer6PostBattle - msgbox SecretBase_Text_Trainer6PreBattle, MSGBOX_YESNO + msgbox SecretBase_Text_Trainer6Intro, MSGBOX_YESNO compare VAR_RESULT, NO goto_if_eq SecretBase_EventScript_Trainer6DeclineBattle setvar VAR_RESULT, 1 @@ -605,7 +605,7 @@ SecretBase_EventScript_Trainer7:: @ 827611E goto_if_unset FLAG_SYS_GAME_CLEAR, SecretBase_EventScript_Trainer7PreChampion compare VAR_RESULT, 1 goto_if_eq SecretBase_EventScript_Trainer7PostBattle - msgbox SecretBase_Text_Trainer7PreBattle, MSGBOX_YESNO + msgbox SecretBase_Text_Trainer7Intro, MSGBOX_YESNO compare VAR_RESULT, NO goto_if_eq SecretBase_EventScript_Trainer7DeclineBattle setvar VAR_RESULT, 1 @@ -642,7 +642,7 @@ SecretBase_EventScript_Trainer8:: @ 8276196 goto_if_unset FLAG_SYS_GAME_CLEAR, SecretBase_EventScript_Trainer8PreChampion compare VAR_RESULT, 1 goto_if_eq SecretBase_EventScript_Trainer8PostBattle - msgbox SecretBase_Text_Trainer8PreBattle, MSGBOX_YESNO + msgbox SecretBase_Text_Trainer8Intro, MSGBOX_YESNO compare VAR_RESULT, NO goto_if_eq SecretBase_EventScript_Trainer8DeclineBattle setvar VAR_RESULT, 1 @@ -679,7 +679,7 @@ SecretBase_EventScript_Trainer9:: @ 827620E goto_if_unset FLAG_SYS_GAME_CLEAR, SecretBase_EventScript_Trainer9PreChampion compare VAR_RESULT, 1 goto_if_eq SecretBase_EventScript_Trainer9PostBattle - msgbox SecretBase_Text_Trainer9PreBattle, MSGBOX_YESNO + msgbox SecretBase_Text_Trainer9Intro, MSGBOX_YESNO compare VAR_RESULT, NO goto_if_eq SecretBase_EventScript_Trainer9DeclineBattle setvar VAR_RESULT, 1 diff --git a/data/text/secret_base_trainers.inc b/data/text/secret_base_trainers.inc index 46ecaaec96..979aa4ff3a 100644 --- a/data/text/secret_base_trainers.inc +++ b/data/text/secret_base_trainers.inc @@ -1,4 +1,4 @@ -SecretBase_Text_Trainer0PreBattle: @ 82748A0 +SecretBase_Text_Trainer0Intro: @ 82748A0 .string "Have you made a SECRET BASE already?\p" .string "I went here, there, everywhere before\n" .string "choosing this place.\p" @@ -27,7 +27,7 @@ SecretBase_Text_Trainer0PreChampion: @ 82749ED .string "choosing this place.\p" .string "Feel free to hang out!$" -SecretBase_Text_Trainer5PreBattle: @ 8274A64 +SecretBase_Text_Trainer5Intro: @ 8274A64 .string "There're a lot of places where\n" .string "you can make a SECRET BASE.\p" .string "But I like this spot best.\n" @@ -56,7 +56,7 @@ SecretBase_Text_Trainer5PreChampion: @ 8274BA2 .string "But I like this spot best.\n" .string "Don't you think it's nice?$" -SecretBase_Text_Trainer1PreBattle: @ 8274C13 +SecretBase_Text_Trainer1Intro: @ 8274C13 .string "This is a popular spot.\n" .string "It's always taken.\p" .string "Oh! Were you thinking about\n" @@ -86,7 +86,7 @@ SecretBase_Text_Trainer1PreChampion: @ 8274D69 .string "I waited a long time for it to open.\n" .string "I finally got to use it!$" -SecretBase_Text_Trainer6PreBattle: @ 8274DD2 +SecretBase_Text_Trainer6Intro: @ 8274DD2 .string "Welcome to my POKéMON LAB.\p" .string "I carry out research on battling in\n" .string "secrecy.\p" @@ -112,7 +112,7 @@ SecretBase_Text_Trainer6PreChampion: @ 8274EF1 .string "I carry out research on battling in\n" .string "secrecy.$" -SecretBase_Text_Trainer2PreBattle: @ 8274F39 +SecretBase_Text_Trainer2Intro: @ 8274F39 .string "A big mansion is nice, but I like this\n" .string "sort of place more.\p" .string "I like it because all kinds of people\n" @@ -141,7 +141,7 @@ SecretBase_Text_Trainer2PreChampion: @ 82750A4 .string "I like it because all kinds of people\n" .string "come visit me.$" -SecretBase_Text_Trainer7PreBattle: @ 8275114 +SecretBase_Text_Trainer7Intro: @ 8275114 .string "I simply adore shopping for decorations\n" .string "and furniture.\p" .string "I also love raising POKéMON just\n" @@ -170,7 +170,7 @@ SecretBase_Text_Trainer7PreChampion: @ 8275226 .string "I also love raising POKéMON just\n" .string "as much.$" -SecretBase_Text_Trainer3PreBattle: @ 8275287 +SecretBase_Text_Trainer3Intro: @ 8275287 .string "Some people make their SECRET BASES in\n" .string "hard-to-find places.\l" .string "Do they want to just lie low?\p" @@ -196,7 +196,7 @@ SecretBase_Text_Trainer3PreChampion: @ 82753AB .string "hard-to-find places.\l" .string "Do they want to just lie low?$" -SecretBase_Text_Trainer8PreBattle: @ 8275405 +SecretBase_Text_Trainer8Intro: @ 8275405 .string "People have told me that you can get\n" .string "decorations in several ways.\p" .string "We should have a race to see who can\n" @@ -224,7 +224,7 @@ SecretBase_Text_Trainer8PreChampion: @ 8275546 .string "We should have a race to see who can\n" .string "get nicer decorations and furniture!$" -SecretBase_Text_Trainer4PreBattle: @ 82755D2 +SecretBase_Text_Trainer4Intro: @ 82755D2 .string "I found a spot I liked, and I did it up\n" .string "with my favorite decorations.\p" .string "I raise my favorite POKéMON and grow\n" @@ -253,7 +253,7 @@ SecretBase_Text_Trainer4PreChampion: @ 827571E .string "stronger with it.\p" .string "Every day is a great day.$" -SecretBase_Text_Trainer9PreBattle: @ 82757B5 +SecretBase_Text_Trainer9Intro: @ 82757B5 .string "You can learn a lot about the taste\n" .string "and sense of people by the kinds of\l" .string "decorations they have, and how they\l" diff --git a/data/text/tv.inc b/data/text/tv.inc index c0d262cbf5..63a1eff652 100644 --- a/data/text/tv.inc +++ b/data/text/tv.inc @@ -2700,7 +2700,7 @@ GabbyAndTy_Text_GabbyPreFirstBattle: @ 0828AF05 .string "Okay, roll camera!\n" .string "Let's get this interview.$" -GabbyAndTy_Text_GabbyPreBattle: @ 0828AF7D +GabbyAndTy_Text_GabbyIntro: @ 0828AF7D .string "GABBY: Oh! You're {PLAYER}! Hi!\n" .string "Do you remember us from last time?\p" .string "Can you show us how much stronger\n" @@ -2806,7 +2806,7 @@ GabbyAndTy_Text_TyPreFirstBattle: @ 0828B75C .string "TRAINER here, of all places!\l" .string "Camera's rolling!$" -GabbyAndTy_Text_TyPreBattle: @ 0828B7B1 +GabbyAndTy_Text_TyIntro: @ 0828B7B1 .string "TY: Hey, lookie here!\n" .string "I remember you!\p" .string "I'll get this battle all on this\n" From e736c2d2fd7bfb7cbc722a4bdf2e8c7d6bb4376d Mon Sep 17 00:00:00 2001 From: GriffinR Date: Wed, 8 Jan 2020 15:26:14 -0500 Subject: [PATCH 25/37] Document some easy chat specials --- data/maps/DewfordTown_Hall/scripts.inc | 2 +- data/scripts/mystery_event_club.inc | 2 +- data/specials.inc | 4 ++-- include/easy_chat.h | 4 ++-- src/dewford_trend.c | 6 ++--- src/easy_chat.c | 31 +++++++++++++------------- src/mauville_old_man.c | 2 +- 7 files changed, 26 insertions(+), 25 deletions(-) diff --git a/data/maps/DewfordTown_Hall/scripts.inc b/data/maps/DewfordTown_Hall/scripts.inc index 971dd23215..9f9a36d993 100644 --- a/data/maps/DewfordTown_Hall/scripts.inc +++ b/data/maps/DewfordTown_Hall/scripts.inc @@ -29,7 +29,7 @@ DewfordTown_Hall_EventScript_Man:: @ 81FD50A lock faceplayer call Common_EventScript_BufferTrendyPhrase - special sub_811EF6C + special BufferDeepLinkPhrase msgbox DewfordTown_Hall_Text_DeepLinkBetweenXAndY, MSGBOX_YESNO compare VAR_RESULT, YES goto_if_eq DewfordTown_Hall_EventScript_ConfirmTrendLink diff --git a/data/scripts/mystery_event_club.inc b/data/scripts/mystery_event_club.inc index 6687bbd476..16e9a657f2 100644 --- a/data/scripts/mystery_event_club.inc +++ b/data/scripts/mystery_event_club.inc @@ -41,7 +41,7 @@ MysteryEventClub_EventScript_CancelShowProfile:: @ 82915CB MysteryEventClub_EventScript_ShowProfile:: @ 82915D5 setvar VAR_0x8004, 0 - special sub_811EECC + special ShowEasyChatProfile waitmessage delay 80 msgbox MysteryEventClub_Text_FantasticProfile, MSGBOX_DEFAULT diff --git a/data/specials.inc b/data/specials.inc index 95a0ac5d37..a001462a0c 100644 --- a/data/specials.inc +++ b/data/specials.inc @@ -107,7 +107,7 @@ gSpecials:: @ 81DBA64 def_special SaveGame def_special DoWateringBerryTreeAnim def_special ShowEasyChatScreen - def_special sub_811EECC + def_special ShowEasyChatProfile def_special ScrSpecial_GetCurrentMauvilleMan def_special ScrSpecial_HasBardSongBeenChanged def_special ScrSpecial_SaveBardSongLyrics @@ -139,7 +139,7 @@ gSpecials:: @ 81DBA64 def_special IsMonOTIDNotPlayers def_special BufferTrendyPhraseString def_special TrendyPhraseIsOld - def_special sub_811EF6C + def_special BufferDeepLinkPhrase def_special GetDewfordHallPaintingNameIndex def_special SwapRegisteredBike def_special CalculatePlayerPartyCount diff --git a/include/easy_chat.h b/include/easy_chat.h index 221cbd1da4..f2ef066d42 100644 --- a/include/easy_chat.h +++ b/include/easy_chat.h @@ -128,10 +128,10 @@ bool32 sub_811F8D8(int word); void InitializeEasyChatWordArray(u16 *words, u16 length); u8 *ConvertEasyChatWordsToString(u8 *dest, const u16 *src, u16 columns, u16 rows); bool8 ECWord_CheckIfOutsideOfValidRange(u16 word); -u16 sub_811EE38(u16 group); +u16 GetRandomEasyChatWordFromGroup(u16 group); u16 GetNewHipsterPhraseToTeach(void); u16 EasyChat_GetNumWordsInGroup(u8); -u16 sub_811EE90(u16); +u16 GetRandomEasyChatWordFromUnlockedGroup(u16); void DoEasyChatScreen(u8 type, u16 *words, MainCallback callback, u8 displayedPersonType); void sub_811F8BC(void); void UnlockAdditionalPhrase(u8 additionalPhraseId); diff --git a/src/dewford_trend.c b/src/dewford_trend.c index 57a97d8f3c..9c5e69d993 100644 --- a/src/dewford_trend.c +++ b/src/dewford_trend.c @@ -25,12 +25,12 @@ void InitDewfordTrend(void) for (i = 0; i < 5; i++) { - gSaveBlock1Ptr->easyChatPairs[i].words[0] = sub_811EE38(EC_GROUP_CONDITIONS); + gSaveBlock1Ptr->easyChatPairs[i].words[0] = GetRandomEasyChatWordFromGroup(EC_GROUP_CONDITIONS); if (Random() & 1) - gSaveBlock1Ptr->easyChatPairs[i].words[1] = sub_811EE38(EC_GROUP_LIFESTYLE); + gSaveBlock1Ptr->easyChatPairs[i].words[1] = GetRandomEasyChatWordFromGroup(EC_GROUP_LIFESTYLE); else - gSaveBlock1Ptr->easyChatPairs[i].words[1] = sub_811EE38(EC_GROUP_HOBBIES); + gSaveBlock1Ptr->easyChatPairs[i].words[1] = GetRandomEasyChatWordFromGroup(EC_GROUP_HOBBIES); gSaveBlock1Ptr->easyChatPairs[i].unk1_6 = Random() & 1; sub_8122B28(&(gSaveBlock1Ptr->easyChatPairs[i])); diff --git a/src/easy_chat.c b/src/easy_chat.c index 6bb1d9c862..86349cbd61 100644 --- a/src/easy_chat.c +++ b/src/easy_chat.c @@ -222,7 +222,7 @@ static void sub_811E1A4(s8, s8); static void sub_811E2DC(struct Sprite *); static void sub_811E34C(u8, u8); static bool8 EasyChatIsNationalPokedexEnabled(void); -static u16 sub_811F108(void); +static u16 GetRandomUnlockedEasyChatPokemon(void); static void sub_811F2D4(void); static void sub_811F46C(void); static u8 *CopyEasyChatWordPadded(u8 *, u16, u16); @@ -5039,24 +5039,24 @@ static u16 GetEasyChatWordStringLength(u16 easyChatWord) } } -bool8 sub_811EDC4(const u16 *easyChatWords, u8 arg1, u8 arg2, u16 arg3) +static bool8 CanPhraseFitInXRowsYCols(const u16 *easyChatWords, u8 numRows, u8 numColumns, u16 maxLength) { u8 i, j; - for (i = 0; i < arg2; i++) + for (i = 0; i < numColumns; i++) { - u16 totalLength = arg1 - 1; - for (j = 0; j < arg1; j++) + u16 totalLength = numRows - 1; + for (j = 0; j < numRows; j++) totalLength += GetEasyChatWordStringLength(*(easyChatWords++)); - if (totalLength > arg3) + if (totalLength > maxLength) return TRUE; } return FALSE; } -u16 sub_811EE38(u16 groupId) +u16 GetRandomEasyChatWordFromGroup(u16 groupId) { u16 index = Random() % gEasyChatGroups[groupId].numWords; if (groupId == EC_GROUP_POKEMON @@ -5070,18 +5070,18 @@ u16 sub_811EE38(u16 groupId) return EC_WORD(groupId, index); } -u16 sub_811EE90(u16 groupId) +u16 GetRandomEasyChatWordFromUnlockedGroup(u16 groupId) { if (!IsEasyChatGroupUnlocked(groupId)) return 0xFFFF; if (groupId == EC_GROUP_POKEMON) - return sub_811F108(); + return GetRandomUnlockedEasyChatPokemon(); - return sub_811EE38(groupId); + return GetRandomEasyChatWordFromGroup(groupId); } -void sub_811EECC(void) +void ShowEasyChatProfile(void) { u16 *easyChatWords; int columns, rows; @@ -5094,7 +5094,7 @@ void sub_811EECC(void) break; case 1: easyChatWords = gSaveBlock1Ptr->easyChatBattleStart; - if (sub_811EDC4(gSaveBlock1Ptr->easyChatBattleStart, 3, 2, 18)) + if (CanPhraseFitInXRowsYCols(gSaveBlock1Ptr->easyChatBattleStart, 3, 2, 18)) { columns = 2; rows = 3; @@ -5123,10 +5123,11 @@ void sub_811EECC(void) ShowFieldAutoScrollMessage(gStringVar4); } -void sub_811EF6C(void) +// The phrase that a man in Dewford Hall suggests has a "deep link" to the current trendy phrase +void BufferDeepLinkPhrase(void) { int groupId = Random() & 1 ? EC_GROUP_HOBBIES : EC_GROUP_LIFESTYLE; - u16 easyChatWord = sub_811EE90(groupId); + u16 easyChatWord = GetRandomEasyChatWordFromUnlockedGroup(groupId); CopyEasyChatWord(gStringVar2, easyChatWord); } @@ -5217,7 +5218,7 @@ static bool8 EasyChatIsNationalPokedexEnabled(void) return IsNationalPokedexEnabled(); } -static u16 sub_811F108(void) +static u16 GetRandomUnlockedEasyChatPokemon(void) { u16 i; u16 numWords; diff --git a/src/mauville_old_man.c b/src/mauville_old_man.c index add48efd86..8fe233fc1c 100644 --- a/src/mauville_old_man.c +++ b/src/mauville_old_man.c @@ -360,7 +360,7 @@ static void InitGiddyTaleList(void) break; if (r1 == 6) r1 = 0; - giddy->randomWords[i] = sub_811EE90(arr[r1][0]); + giddy->randomWords[i] = GetRandomEasyChatWordFromUnlockedGroup(arr[r1][0]); } } } From 10220d3b76021044b3e1f7ebc7a2b3b4812813f8 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Wed, 8 Jan 2020 15:46:49 -0500 Subject: [PATCH 26/37] Label TryRecordMixLinkup --- data/scripts/cable_club.inc | 2 +- data/specials.inc | 2 +- src/cable_club.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/data/scripts/cable_club.inc b/data/scripts/cable_club.inc index f276924483..006ad9688c 100644 --- a/data/scripts/cable_club.inc +++ b/data/scripts/cable_club.inc @@ -525,7 +525,7 @@ CableClub_EventScript_RecordCorner:: @ 82771DB goto_if_eq CableClub_EventScript_AbortLink message gText_PleaseWaitForLink waitmessage - special sub_80B2E74 + special TryRecordMixLinkup waitstate special sub_80B2EA8 waitstate diff --git a/data/specials.inc b/data/specials.inc index a001462a0c..da9f9a17a1 100644 --- a/data/specials.inc +++ b/data/specials.inc @@ -38,7 +38,7 @@ gSpecials:: @ 81DBA64 def_special RecordMixingPlayerSpotTriggered def_special TryBattleLinkup def_special TryTradeLinkup - def_special sub_80B2E74 + def_special TryRecordMixLinkup def_special sub_80B2EA8 def_special CloseLink def_special ColosseumPlayerSpotTriggered diff --git a/src/cable_club.c b/src/cable_club.c index 87a0bcfcaf..11920bea98 100644 --- a/src/cable_club.c +++ b/src/cable_club.c @@ -592,7 +592,7 @@ void TryTradeLinkup(void) sub_80B236C(2, 2); } -void sub_80B2E74(void) +void TryRecordMixLinkup(void) { gSpecialVar_Result = 0; gLinkType = LINKTYPE_0x3311; From 43962fe141d8ca5e4c53530992de4378c541a6f1 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Wed, 8 Jan 2020 13:19:41 -0500 Subject: [PATCH 27/37] Fix BuffeInGameTradeMonName typo --- src/trade.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/trade.c b/src/trade.c index af60d64c96..a9a0b9b2ad 100644 --- a/src/trade.c +++ b/src/trade.c @@ -217,7 +217,7 @@ static void sub_807E55C(struct Sprite *sprite); static void sub_807E5D8(struct Sprite *sprite); static void sub_807E64C(struct Sprite *sprite); static void sub_807E6AC(struct Sprite *sprite); -static void BuffeInGameTradeMonName(void); +static void BufferInGameTradeMonName(void); static void SetInGameTradeMail(struct MailStruct *mail, const struct InGameTrade *trade); static void CB2_UpdateLinkTrade(void); static void CB2_TryFinishTrade(void); @@ -3761,7 +3761,7 @@ static bool8 AnimateTradeSequenceCable(void) FREE_AND_SET_NULL(sTradeData); } SetMainCallback2(CB2_ReturnToField); - BuffeInGameTradeMonName(); + BufferInGameTradeMonName(); } break; } @@ -4276,7 +4276,7 @@ static bool8 AnimateTradeSequenceWireless(void) FREE_AND_SET_NULL(sTradeData); } SetMainCallback2(CB2_ReturnToField); - BuffeInGameTradeMonName(); + BufferInGameTradeMonName(); } break; } @@ -4418,7 +4418,7 @@ u16 GetInGameTradeSpeciesInfo(void) return inGameTrade->requestedSpecies; } -static void BuffeInGameTradeMonName(void) +static void BufferInGameTradeMonName(void) { u8 nickname[32]; const struct InGameTrade *inGameTrade = &sIngameTrades[gSpecialVar_0x8004]; From c19289596da7ccd86219d3f7e246a2e48a2f9ed7 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Sun, 12 Jan 2020 23:24:52 -0500 Subject: [PATCH 28/37] Give/Take to Add/Remove for silent script macros --- asm/macros/event.inc | 14 +++++----- data/event_scripts.s | 2 +- .../AbandonedShip_Corridors_B1F/scripts.inc | 2 +- .../scripts.inc | 8 +++--- .../scripts.inc | 2 +- .../scripts.inc | 18 ++++++------- data/maps/MauvilleCity_BikeShop/scripts.inc | 4 +-- data/maps/MauvilleCity_GameCorner/scripts.inc | 26 +++++++++---------- data/maps/MauvilleCity_House2/scripts.inc | 2 +- data/maps/MtChimney/scripts.inc | 6 ++--- data/maps/Route109_SeashoreHouse/scripts.inc | 2 +- .../Route121_SafariZoneEntrance/scripts.inc | 2 +- .../scripts.inc | 2 +- .../RustboroCity_DevonCorp_2F/scripts.inc | 4 +-- .../ShoalCave_LowTideEntranceRoom/scripts.inc | 4 +-- data/maps/SlateportCity_Harbor/scripts.inc | 4 +-- .../scripts.inc | 2 +- data/script_cmd_table.inc | 18 ++++++------- data/scripts/berry_tree.inc | 2 +- include/coins.h | 4 +-- src/coins.c | 4 +-- src/scrcmd.c | 22 ++++++++-------- 22 files changed, 77 insertions(+), 77 deletions(-) diff --git a/asm/macros/event.inc b/asm/macros/event.inc index 298e8eb7c9..abb2eb13a5 100644 --- a/asm/macros/event.inc +++ b/asm/macros/event.inc @@ -476,7 +476,7 @@ .endm @ Removes quantity of item index from the player's Bag. - .macro takeitem index:req, quantity=1 + .macro removeitem index:req, quantity=1 .byte 0x45 .2byte \index .2byte \quantity @@ -503,7 +503,7 @@ .endm @ Adds a quantity amount of item index to the player's PC. Both arguments can be variables. - .macro givepcitem index:req, quantity:req + .macro addpcitem index:req, quantity:req .byte 0x49 .2byte \index .2byte \quantity @@ -523,7 +523,7 @@ .endm @ Removes a decoration from the player's PC. In FireRed, this command is a nop. (The argument is read, but not used for anything.) - .macro takedecoration decoration:req + .macro removedecoration decoration:req .byte 0x4c .2byte \decoration .endm @@ -1050,14 +1050,14 @@ .endm @ If check is 0x00, this command adds value to the player's money. - .macro givemoney value:req, check:req + .macro addmoney value:req, check:req .byte 0x90 .4byte \value .byte \check .endm @ If check is 0x00, this command subtracts value from the player's money. - .macro takemoney value:req, check:req + .macro removemoney value:req, check:req .byte 0x91 .4byte \value .byte \check @@ -1281,12 +1281,12 @@ .2byte \out .endm - .macro givecoins count:req + .macro addcoins count:req .byte 0xb4 .2byte \count .endm - .macro takecoins count:req + .macro removecoins count:req .byte 0xb5 .2byte \count .endm diff --git a/data/event_scripts.s b/data/event_scripts.s index 942fc005bd..58dd1951f3 100644 --- a/data/event_scripts.s +++ b/data/event_scripts.s @@ -823,7 +823,7 @@ Common_EventScript_PlayerHandedOverTheItem:: @ 82723E4 message gText_PlayerHandedOverTheItem waitmessage waitfanfare - takeitem VAR_0x8004, 1 + removeitem VAR_0x8004 return .include "data/scripts/elite_four.inc" diff --git a/data/maps/AbandonedShip_Corridors_B1F/scripts.inc b/data/maps/AbandonedShip_Corridors_B1F/scripts.inc index c56951a033..94ed2ef7e7 100644 --- a/data/maps/AbandonedShip_Corridors_B1F/scripts.inc +++ b/data/maps/AbandonedShip_Corridors_B1F/scripts.inc @@ -32,7 +32,7 @@ AbandonedShip_Corridors_B1F_EventScript_StorageRoomDoor:: @ 8237DC8 goto_if_eq AbandonedShip_Corridors_B1F_EventScript_DoorIsLocked msgbox AbandonedShip_Corridors_B1F_Text_InsertedStorageKey, MSGBOX_DEFAULT playse SE_PIN - takeitem ITEM_STORAGE_KEY, 1 + removeitem ITEM_STORAGE_KEY setflag FLAG_USED_STORAGE_KEY call AbandonedShip_Corridors_B1F_EventScript_UnlockStorageRoom special DrawWholeMapView diff --git a/data/maps/AbandonedShip_HiddenFloorCorridors/scripts.inc b/data/maps/AbandonedShip_HiddenFloorCorridors/scripts.inc index 5fc4160f89..4fcfb117ae 100644 --- a/data/maps/AbandonedShip_HiddenFloorCorridors/scripts.inc +++ b/data/maps/AbandonedShip_HiddenFloorCorridors/scripts.inc @@ -58,7 +58,7 @@ AbandonedShip_HiddenFloorCorridors_EventScript_Room1Door:: @ 8238A19 goto_if_eq AbandonedShip_HiddenFloorCorridors_EventScript_Rm1IsLocked msgbox AbandonedShip_HiddenFloorCorridors_Text_InsertedKey, MSGBOX_DEFAULT playse SE_PIN - takeitem ITEM_ROOM_1_KEY, 1 + removeitem ITEM_ROOM_1_KEY setflag FLAG_USED_ROOM_1_KEY call AbandonedShip_HiddenFloorCorridors_EventScript_UnlockRoom1 special DrawWholeMapView @@ -73,7 +73,7 @@ AbandonedShip_HiddenFloorCorridors_EventScript_Room2Door:: @ 8238A50 goto_if_eq AbandonedShip_HiddenFloorCorridors_EventScript_Rm2IsLocked msgbox AbandonedShip_HiddenFloorCorridors_Text_InsertedKey, MSGBOX_DEFAULT playse SE_PIN - takeitem ITEM_ROOM_2_KEY, 1 + removeitem ITEM_ROOM_2_KEY, 1 setflag FLAG_USED_ROOM_2_KEY call AbandonedShip_HiddenFloorCorridors_EventScript_UnlockRoom2 special DrawWholeMapView @@ -88,7 +88,7 @@ AbandonedShip_HiddenFloorCorridors_EventScript_Room4Door:: @ 8238A87 goto_if_eq AbandonedShip_HiddenFloorCorridors_EventScript_Rm4IsLocked msgbox AbandonedShip_HiddenFloorCorridors_Text_InsertedKey, MSGBOX_DEFAULT playse SE_PIN - takeitem ITEM_ROOM_4_KEY, 1 + removeitem ITEM_ROOM_4_KEY setflag FLAG_USED_ROOM_4_KEY call AbandonedShip_HiddenFloorCorridors_EventScript_UnlockRoom4 special DrawWholeMapView @@ -103,7 +103,7 @@ AbandonedShip_HiddenFloorCorridors_EventScript_Room6Door:: @ 8238ABE goto_if_eq AbandonedShip_HiddenFloorCorridors_EventScript_Rm6IsLocked msgbox AbandonedShip_HiddenFloorCorridors_Text_InsertedKey, MSGBOX_DEFAULT playse SE_PIN - takeitem ITEM_ROOM_6_KEY, 1 + removeitem ITEM_ROOM_6_KEY setflag FLAG_USED_ROOM_6_KEY call AbandonedShip_HiddenFloorCorridors_EventScript_UnlockRoom6 special DrawWholeMapView diff --git a/data/maps/FallarborTown_MoveRelearnersHouse/scripts.inc b/data/maps/FallarborTown_MoveRelearnersHouse/scripts.inc index 788ee088d0..aa2eeb3e8e 100644 --- a/data/maps/FallarborTown_MoveRelearnersHouse/scripts.inc +++ b/data/maps/FallarborTown_MoveRelearnersHouse/scripts.inc @@ -42,7 +42,7 @@ FallarborTown_MoveRelearnersHouse_EventScript_ChooseMove:: @ 820140C compare VAR_0x8004, 0 goto_if_eq FallarborTown_MoveRelearnersHouse_EventScript_ChooseMon msgbox FallarborTown_MoveRelearnersHouse_Text_HandedOverHeartScale, MSGBOX_DEFAULT - takeitem ITEM_HEART_SCALE, 1 + removeitem ITEM_HEART_SCALE, 1 goto FallarborTown_MoveRelearnersHouse_EventScript_ComeBackWithHeartScale end diff --git a/data/maps/LilycoveCity_DepartmentStoreRooftop/scripts.inc b/data/maps/LilycoveCity_DepartmentStoreRooftop/scripts.inc index 2cf7909e9b..12cb4727c3 100644 --- a/data/maps/LilycoveCity_DepartmentStoreRooftop/scripts.inc +++ b/data/maps/LilycoveCity_DepartmentStoreRooftop/scripts.inc @@ -113,16 +113,16 @@ LilycoveCity_DepartmentStoreRooftop_EventScript_CheckMoneyLemonade:: @ 8220313 checkmoney 350, 0 return -LilycoveCity_DepartmentStoreRooftop_EventScript_TakeMoneyFreshWater:: @ 822031A - takemoney 200, 0 +LilycoveCity_DepartmentStoreRooftop_EventScript_RemoveMoneyFreshWater:: @ 822031A + removemoney 200, 0 return -LilycoveCity_DepartmentStoreRooftop_EventScript_TakeMoneySodaPop:: @ 8220321 - takemoney 300, 0 +LilycoveCity_DepartmentStoreRooftop_EventScript_RemoveMoneySodaPop:: @ 8220321 + removemoney 300, 0 return -LilycoveCity_DepartmentStoreRooftop_EventScript_TakeMoneyLemonade:: @ 8220328 - takemoney 350, 0 +LilycoveCity_DepartmentStoreRooftop_EventScript_RemoveMoneyLemonade:: @ 8220328 + removemoney 350, 0 return LilycoveCity_DepartmentStoreRooftop_EventScript_TryBuyDrink:: @ 822032F @@ -138,11 +138,11 @@ LilycoveCity_DepartmentStoreRooftop_EventScript_TryBuyDrink:: @ 822032F compare VAR_RESULT, FALSE goto_if_eq LilycoveCity_DepartmentStoreRooftop_EventScript_NoRoomForDrink compare VAR_TEMP_1, 0 - call_if_eq LilycoveCity_DepartmentStoreRooftop_EventScript_TakeMoneyFreshWater + call_if_eq LilycoveCity_DepartmentStoreRooftop_EventScript_RemoveMoneyFreshWater compare VAR_TEMP_1, 1 - call_if_eq LilycoveCity_DepartmentStoreRooftop_EventScript_TakeMoneySodaPop + call_if_eq LilycoveCity_DepartmentStoreRooftop_EventScript_RemoveMoneySodaPop compare VAR_TEMP_1, 2 - call_if_eq LilycoveCity_DepartmentStoreRooftop_EventScript_TakeMoneyLemonade + call_if_eq LilycoveCity_DepartmentStoreRooftop_EventScript_RemoveMoneyLemonade updatemoneybox 0, 0 bufferitemname 0, VAR_TEMP_0 playse SE_JIHANKI diff --git a/data/maps/MauvilleCity_BikeShop/scripts.inc b/data/maps/MauvilleCity_BikeShop/scripts.inc index d953ecabbd..ffde9583b6 100644 --- a/data/maps/MauvilleCity_BikeShop/scripts.inc +++ b/data/maps/MauvilleCity_BikeShop/scripts.inc @@ -89,7 +89,7 @@ MauvilleCity_BikeShop_EventScript_KeepBike:: @ 820ECE5 MauvilleCity_BikeShop_EventScript_SwitchAcroForMach:: @ 820ECEF incrementgamestat GAME_STAT_TRADED_BIKES msgbox MauvilleCity_BikeShop_Text_ExchangedAcroForMach, MSGBOX_DEFAULT - takeitem ITEM_ACRO_BIKE, 1 + removeitem ITEM_ACRO_BIKE giveitem ITEM_MACH_BIKE goto MauvilleCity_BikeShop_EventScript_ComeBackToSwitchBikes end @@ -97,7 +97,7 @@ MauvilleCity_BikeShop_EventScript_SwitchAcroForMach:: @ 820ECEF MauvilleCity_BikeShop_EventScript_SwitchMachForAcro:: @ 820ED10 incrementgamestat GAME_STAT_TRADED_BIKES msgbox MauvilleCity_BikeShop_Text_ExchangedMachForAcro, MSGBOX_DEFAULT - takeitem ITEM_MACH_BIKE, 1 + removeitem ITEM_MACH_BIKE giveitem ITEM_ACRO_BIKE goto MauvilleCity_BikeShop_EventScript_ComeBackToSwitchBikes end diff --git a/data/maps/MauvilleCity_GameCorner/scripts.inc b/data/maps/MauvilleCity_GameCorner/scripts.inc index 6efa647c91..3401251cf0 100644 --- a/data/maps/MauvilleCity_GameCorner/scripts.inc +++ b/data/maps/MauvilleCity_GameCorner/scripts.inc @@ -49,8 +49,8 @@ MauvilleCity_GameCorner_EventScript_Buy50Coins:: @ 820FC33 checkmoney COINS_PRICE_50, 0 compare VAR_RESULT, FALSE goto_if_eq MauvilleCity_GameCorner_EventScript_NotEnoughMoney - givecoins 50 - takemoney COINS_PRICE_50, 0 + addcoins 50 + removemoney COINS_PRICE_50, 0 updatemoneybox 0, 0 updatecoinsbox 1, 6 playse SE_REGI @@ -67,8 +67,8 @@ MauvilleCity_GameCorner_EventScript_Buy500Coins:: @ 820FC75 checkmoney COINS_PRICE_500, 0 compare VAR_RESULT, FALSE goto_if_eq MauvilleCity_GameCorner_EventScript_NotEnoughMoney - givecoins 500 - takemoney COINS_PRICE_500, 0 + addcoins 500 + removemoney COINS_PRICE_500, 0 updatemoneybox 0, 0 updatecoinsbox 1, 6 playse SE_REGI @@ -169,7 +169,7 @@ MauvilleCity_GameCorner_EventScript_BuyTreeckoDoll:: @ 820FDCB checkdecorspace DECOR_TREECKO_DOLL compare VAR_RESULT, FALSE goto_if_eq MauvilleCity_GameCorner_EventScript_NoRoomForDoll - takecoins DOLL_COINS + removecoins DOLL_COINS adddecoration DECOR_TREECKO_DOLL updatecoinsbox 1, 1 playse SE_REGI @@ -185,7 +185,7 @@ MauvilleCity_GameCorner_EventScript_BuyTorchicDoll:: @ 820FE05 checkdecorspace DECOR_TORCHIC_DOLL compare VAR_RESULT, FALSE goto_if_eq MauvilleCity_GameCorner_EventScript_NoRoomForDoll - takecoins DOLL_COINS + removecoins DOLL_COINS adddecoration DECOR_TORCHIC_DOLL updatecoinsbox 1, 1 playse SE_REGI @@ -201,7 +201,7 @@ MauvilleCity_GameCorner_EventScript_BuyMudkipDoll:: @ 820FE3F checkdecorspace DECOR_MUDKIP_DOLL compare VAR_RESULT, FALSE goto_if_eq MauvilleCity_GameCorner_EventScript_NoRoomForDoll - takecoins DOLL_COINS + removecoins DOLL_COINS adddecoration DECOR_MUDKIP_DOLL updatecoinsbox 1, 1 playse SE_REGI @@ -309,7 +309,7 @@ MauvilleCity_GameCorner_EventScript_BuyTM32:: @ 820FFDD checkitemspace ITEM_TM32, 1 compare VAR_RESULT, FALSE goto_if_eq MauvilleCity_GameCorner_EventScript_NoRoomForTM - takecoins TM32_COINS + removecoins TM32_COINS additem ITEM_TM32 updatecoinsbox 1, 1 playse SE_REGI @@ -324,7 +324,7 @@ MauvilleCity_GameCorner_EventScript_BuyTM29:: @ 8210017 checkitemspace ITEM_TM29, 1 compare VAR_RESULT, FALSE goto_if_eq MauvilleCity_GameCorner_EventScript_NoRoomForTM - takecoins TM29_COINS + removecoins TM29_COINS additem ITEM_TM29 updatecoinsbox 1, 1 playse SE_REGI @@ -339,7 +339,7 @@ MauvilleCity_GameCorner_EventScript_BuyTM35:: @ 8210051 checkitemspace ITEM_TM35, 1 compare VAR_RESULT, FALSE goto_if_eq MauvilleCity_GameCorner_EventScript_NoRoomForTM - takecoins TM35_COINS + removecoins TM35_COINS additem ITEM_TM35 updatecoinsbox 1, 1 playse SE_REGI @@ -354,7 +354,7 @@ MauvilleCity_GameCorner_EventScript_BuyTM24:: @ 821008B checkitemspace ITEM_TM24, 1 compare VAR_RESULT, FALSE goto_if_eq MauvilleCity_GameCorner_EventScript_NoRoomForTM - takecoins TM24_COINS + removecoins TM24_COINS additem ITEM_TM24 updatecoinsbox 1, 1 playse SE_REGI @@ -369,7 +369,7 @@ MauvilleCity_GameCorner_EventScript_BuyTM13:: @ 82100C5 checkitemspace ITEM_TM13, 1 compare VAR_RESULT, FALSE goto_if_eq MauvilleCity_GameCorner_EventScript_NoRoomForTM - takecoins TM13_COINS + removecoins TM13_COINS additem ITEM_TM13 updatecoinsbox 1, 1 playse SE_REGI @@ -479,7 +479,7 @@ MauvilleCity_GameCorner_EventScript_TryGive20Coins:: @ 821023D compare VAR_TEMP_1, 1 @ Only give 20 coins if player has no coins goto_if_ge MauvilleCity_GameCorner_EventScript_PokefanMNormal setflag FLAG_RECEIVED_20_COINS - givecoins 20 + addcoins 20 msgbox MauvilleCity_GameCorner_Text_LuckOnlyLastSoLongTakeCoins, MSGBOX_DEFAULT playse SE_REGI goto MauvilleCity_GameCorner_EventScript_PokefanMNormal diff --git a/data/maps/MauvilleCity_House2/scripts.inc b/data/maps/MauvilleCity_House2/scripts.inc index 6022fcb385..0d1da98129 100644 --- a/data/maps/MauvilleCity_House2/scripts.inc +++ b/data/maps/MauvilleCity_House2/scripts.inc @@ -27,7 +27,7 @@ MauvilleCity_House2_EventScript_AskToTradeForHarborMail:: @ 8210C82 MauvilleCity_House2_EventScript_AcceptTrade:: @ 8210CB8 msgbox MauvilleCity_House2_Text_IllTradeYouCoinCase, MSGBOX_DEFAULT - takeitem ITEM_HARBOR_MAIL, 1 + removeitem ITEM_HARBOR_MAIL, 1 giveitem ITEM_COIN_CASE setflag FLAG_RECEIVED_COIN_CASE goto MauvilleCity_House2_EventScript_ReceivedCoinCase diff --git a/data/maps/MtChimney/scripts.inc b/data/maps/MtChimney/scripts.inc index 22c5a72d24..647ec4d07a 100644 --- a/data/maps/MtChimney/scripts.inc +++ b/data/maps/MtChimney/scripts.inc @@ -110,7 +110,7 @@ MtChimney_EventScript_LavaCookieLady:: @ 822EEF3 msgbox MtChimney_Text_ThankYouDear, MSGBOX_DEFAULT checkitemspace ITEM_LAVA_COOKIE, 1 compare VAR_RESULT, TRUE - call_if_eq MtChimney_EventScript_TakeMoney + call_if_eq MtChimney_EventScript_RemoveMoney giveitem ITEM_LAVA_COOKIE compare VAR_RESULT, FALSE goto_if_eq MtChimney_EventScript_BagIsFull @@ -124,8 +124,8 @@ MtChimney_EventScript_BagIsFull:: @ 822EF51 release end -MtChimney_EventScript_TakeMoney:: @ 822EF5E - takemoney 200, 0 +MtChimney_EventScript_RemoveMoney:: @ 822EF5E + removemoney 200, 0 updatemoneybox 0, 0 return diff --git a/data/maps/Route109_SeashoreHouse/scripts.inc b/data/maps/Route109_SeashoreHouse/scripts.inc index 641c469e17..dd29e47c3a 100644 --- a/data/maps/Route109_SeashoreHouse/scripts.inc +++ b/data/maps/Route109_SeashoreHouse/scripts.inc @@ -54,7 +54,7 @@ Route109_SeashoreHouse_EventScript_BuySodaPop:: @ 8269484 compare VAR_RESULT, FALSE goto_if_eq Route109_SeashoreHouse_EventScript_NotEnoughSpace msgbox Route109_SeashoreHouse_Text_HereYouGo, MSGBOX_DEFAULT - takemoney 300, 0 + removemoney 300, 0 updatemoneybox 0, 0 giveitem ITEM_SODA_POP hidemoneybox diff --git a/data/maps/Route121_SafariZoneEntrance/scripts.inc b/data/maps/Route121_SafariZoneEntrance/scripts.inc index 6da6396be2..f29fe583e1 100644 --- a/data/maps/Route121_SafariZoneEntrance/scripts.inc +++ b/data/maps/Route121_SafariZoneEntrance/scripts.inc @@ -66,7 +66,7 @@ Route121_SafariZoneEntrance_EventScript_TryEnterSafariZone:: @ 822BC48 goto_if_eq Route121_SafariZoneEntrance_EventScript_NotEnoughMoney playse SE_REGI msgbox Route121_SafariZoneEntrance_Text_ThatWillBe500Please, MSGBOX_DEFAULT - takemoney 500, 0 + removemoney 500, 0 updatemoneybox 0, 0 msgbox Route121_SafariZoneEntrance_Text_HereAreYourSafariBalls, MSGBOX_DEFAULT playfanfare MUS_FANFA4 diff --git a/data/maps/Route124_DivingTreasureHuntersHouse/scripts.inc b/data/maps/Route124_DivingTreasureHuntersHouse/scripts.inc index dfc705bfa4..c5d43799d9 100644 --- a/data/maps/Route124_DivingTreasureHuntersHouse/scripts.inc +++ b/data/maps/Route124_DivingTreasureHuntersHouse/scripts.inc @@ -258,7 +258,7 @@ Route124_DivingTreasureHuntersHouse_EventScript_TryTradeShard:: @ 8270EC0 end Route124_DivingTreasureHuntersHouse_EventScript_TradeShard:: @ 8270F01 - takeitem VAR_0x8008, 1 + removeitem VAR_0x8008 giveitem VAR_0x8009 msgbox Route124_DivingTreasureHuntersHouse_Text_ItsADeal, MSGBOX_DEFAULT call Route124_DivingTreasureHuntersHouse_EventScript_GetPlayersShards diff --git a/data/maps/RustboroCity_DevonCorp_2F/scripts.inc b/data/maps/RustboroCity_DevonCorp_2F/scripts.inc index 7b8dbdadf2..098de81087 100644 --- a/data/maps/RustboroCity_DevonCorp_2F/scripts.inc +++ b/data/maps/RustboroCity_DevonCorp_2F/scripts.inc @@ -96,7 +96,7 @@ RustboroCity_DevonCorp_2F_EventScript_NoticeRootFossil:: @ 8211933 RustboroCity_DevonCorp_2F_EventScript_GiveRootFossil:: @ 8211974 bufferitemname 0, ITEM_ROOT_FOSSIL msgbox RustboroCity_DevonCorp_2F_Text_HandedFossilToResearcher, MSGBOX_DEFAULT - takeitem ITEM_ROOT_FOSSIL, 1 + removeitem ITEM_ROOT_FOSSIL, 1 setvar VAR_FOSSIL_RESURRECTION_STATE, 1 setvar VAR_WHICH_FOSSIL_REVIVED, 1 release @@ -121,7 +121,7 @@ RustboroCity_DevonCorp_2F_EventScript_NoticeClawFossil:: @ 8211991 RustboroCity_DevonCorp_2F_EventScript_GiveClawFossil:: @ 82119D2 bufferitemname 0, ITEM_CLAW_FOSSIL msgbox RustboroCity_DevonCorp_2F_Text_HandedFossilToResearcher, MSGBOX_DEFAULT - takeitem ITEM_CLAW_FOSSIL, 1 + removeitem ITEM_CLAW_FOSSIL, 1 setvar VAR_FOSSIL_RESURRECTION_STATE, 1 setvar VAR_WHICH_FOSSIL_REVIVED, 2 release diff --git a/data/maps/ShoalCave_LowTideEntranceRoom/scripts.inc b/data/maps/ShoalCave_LowTideEntranceRoom/scripts.inc index c8d6f2612e..89cadd56d1 100644 --- a/data/maps/ShoalCave_LowTideEntranceRoom/scripts.inc +++ b/data/maps/ShoalCave_LowTideEntranceRoom/scripts.inc @@ -35,8 +35,8 @@ ShoalCave_LowTideEntranceRoom_EventScript_ShellBellExpert:: @ 8236DD9 compare VAR_RESULT, 2 goto_if_eq ShoalCave_LowTideEntranceRoom_EventScript_NoRoomForShellBell msgbox ShoalCave_LowTideEntranceRoom_Text_MakeShellBellRightAway, MSGBOX_DEFAULT - takeitem ITEM_SHOAL_SALT, 4 - takeitem ITEM_SHOAL_SHELL, 4 + removeitem ITEM_SHOAL_SALT, 4 + removeitem ITEM_SHOAL_SHELL, 4 giveitem ITEM_SHELL_BELL compare VAR_RESULT, FALSE goto_if_eq Common_EventScript_ShowBagIsFull diff --git a/data/maps/SlateportCity_Harbor/scripts.inc b/data/maps/SlateportCity_Harbor/scripts.inc index 8324c6ea09..39025033e1 100644 --- a/data/maps/SlateportCity_Harbor/scripts.inc +++ b/data/maps/SlateportCity_Harbor/scripts.inc @@ -361,7 +361,7 @@ SlateportCity_Harbor_EventScript_DeepSeaTooth:: @ 820CD7B giveitem ITEM_DEEP_SEA_TOOTH compare VAR_RESULT, FALSE goto_if_eq Common_EventScript_ShowBagIsFull - takeitem ITEM_SCANNER, 1 + removeitem ITEM_SCANNER msgbox SlateportCity_Harbor_Text_HandedScannerToStern, MSGBOX_DEFAULT setflag FLAG_EXCHANGED_SCANNER goto SlateportCity_Harbor_EventScript_TradedScanner @@ -374,7 +374,7 @@ SlateportCity_Harbor_EventScript_DeepSeaScale:: @ 820CDBB giveitem ITEM_DEEP_SEA_SCALE compare VAR_RESULT, FALSE goto_if_eq Common_EventScript_ShowBagIsFull - takeitem ITEM_SCANNER, 1 + removeitem ITEM_SCANNER msgbox SlateportCity_Harbor_Text_HandedScannerToStern, MSGBOX_DEFAULT setflag FLAG_EXCHANGED_SCANNER goto SlateportCity_Harbor_EventScript_TradedScanner diff --git a/data/maps/SlateportCity_OceanicMuseum_1F/scripts.inc b/data/maps/SlateportCity_OceanicMuseum_1F/scripts.inc index e9dec5c348..aeb9f3ac90 100644 --- a/data/maps/SlateportCity_OceanicMuseum_1F/scripts.inc +++ b/data/maps/SlateportCity_OceanicMuseum_1F/scripts.inc @@ -36,7 +36,7 @@ SlateportCity_OceanicMuseum_1F_EventScript_CheckMoneyForFee:: @ 820ADE8 compare VAR_RESULT, 0 goto_if_eq SlateportCity_OceanicMuseum_1F_EventScript_NotEnoughMoney playse SE_REGI - takemoney 50, 0 + removemoney 50, 0 updatemoneybox 0, 0 msgbox SlateportCity_OceanicMuseum_1F_Text_PleaseEnjoyYourself, MSGBOX_DEFAULT setvar VAR_SLATEPORT_MUSEUM_1F_STATE, 1 diff --git a/data/script_cmd_table.inc b/data/script_cmd_table.inc index f447d5f25c..2cde7190fe 100644 --- a/data/script_cmd_table.inc +++ b/data/script_cmd_table.inc @@ -68,15 +68,15 @@ gScriptCmdTable:: @ 81DB67C .4byte ScrCmd_setholewarp .4byte ScrCmd_getplayerxy .4byte ScrCmd_getpartysize - .4byte ScrCmd_giveitem - .4byte ScrCmd_takeitem + .4byte ScrCmd_additem + .4byte ScrCmd_removeitem .4byte ScrCmd_checkitemspace .4byte ScrCmd_checkitem .4byte ScrCmd_checkitemtype - .4byte ScrCmd_givepcitem + .4byte ScrCmd_addpcitem .4byte ScrCmd_checkpcitem - .4byte ScrCmd_givedecoration - .4byte ScrCmd_takedecoration + .4byte ScrCmd_adddecoration + .4byte ScrCmd_removedecoration .4byte ScrCmd_checkdecor .4byte ScrCmd_checkdecorspace .4byte ScrCmd_applymovement @@ -144,8 +144,8 @@ gScriptCmdTable:: @ 81DB67C .4byte ScrCmd_showcontestresults .4byte ScrCmd_contestlinktransfer .4byte ScrCmd_random - .4byte ScrCmd_givemoney - .4byte ScrCmd_takemoney + .4byte ScrCmd_addmoney + .4byte ScrCmd_removemoney .4byte ScrCmd_checkmoney .4byte ScrCmd_showmoneybox .4byte ScrCmd_hidemoneybox @@ -180,8 +180,8 @@ gScriptCmdTable:: @ 81DB67C .4byte ScrCmd_addelevmenuitem .4byte ScrCmd_showelevmenu .4byte ScrCmd_checkcoins - .4byte ScrCmd_givecoins - .4byte ScrCmd_takecoins + .4byte ScrCmd_addcoins + .4byte ScrCmd_removecoins .4byte ScrCmd_setwildbattle .4byte ScrCmd_dowildbattle .4byte ScrCmd_setvaddress diff --git a/data/scripts/berry_tree.inc b/data/scripts/berry_tree.inc index f4b592b699..18378077c0 100644 --- a/data/scripts/berry_tree.inc +++ b/data/scripts/berry_tree.inc @@ -45,7 +45,7 @@ BerryTree_EventScript_ChooseBerryToPlant:: @ 8274393 waitstate compare VAR_ITEM_ID, 0 goto_if_eq BerryTree_EventScript_CancelPlanting - takeitem VAR_ITEM_ID, 1 + removeitem VAR_ITEM_ID call BerryTree_EventScript_PlantBerry BerryTree_EventScript_CancelPlanting:: @ 82743AF diff --git a/include/coins.h b/include/coins.h index 996519605d..6190ebbab5 100644 --- a/include/coins.h +++ b/include/coins.h @@ -6,7 +6,7 @@ void ShowCoinsWindow(u32 coinAmount, u8 x, u8 y); void HideCoinsWindow(void); u16 GetCoins(void); void SetCoins(u16 coinAmount); -bool8 GiveCoins(u16 toAdd); -bool8 TakeCoins(u16 toSub); +bool8 AddCoins(u16 toAdd); +bool8 RemoveCoins(u16 toSub); #endif // GUARD_COINS_H diff --git a/src/coins.c b/src/coins.c index 1b9656abde..302817f8db 100644 --- a/src/coins.c +++ b/src/coins.c @@ -48,7 +48,7 @@ void SetCoins(u16 coinAmount) gSaveBlock1Ptr->coins = coinAmount ^ gSaveBlock2Ptr->encryptionKey; } -bool8 GiveCoins(u16 toAdd) +bool8 AddCoins(u16 toAdd) { u16 newAmount; u16 ownedCoins = GetCoins(); @@ -70,7 +70,7 @@ bool8 GiveCoins(u16 toAdd) return TRUE; } -bool8 TakeCoins(u16 toSub) +bool8 RemoveCoins(u16 toSub) { u16 ownedCoins = GetCoins(); if (ownedCoins >= toSub) diff --git a/src/scrcmd.c b/src/scrcmd.c index ac6e2d6890..0e52f59532 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -486,7 +486,7 @@ bool8 ScrCmd_random(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_giveitem(struct ScriptContext *ctx) +bool8 ScrCmd_additem(struct ScriptContext *ctx) { u16 itemId = VarGet(ScriptReadHalfword(ctx)); u32 quantity = VarGet(ScriptReadHalfword(ctx)); @@ -495,7 +495,7 @@ bool8 ScrCmd_giveitem(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_takeitem(struct ScriptContext *ctx) +bool8 ScrCmd_removeitem(struct ScriptContext *ctx) { u16 itemId = VarGet(ScriptReadHalfword(ctx)); u32 quantity = VarGet(ScriptReadHalfword(ctx)); @@ -530,7 +530,7 @@ bool8 ScrCmd_checkitemtype(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_givepcitem(struct ScriptContext *ctx) +bool8 ScrCmd_addpcitem(struct ScriptContext *ctx) { u16 itemId = VarGet(ScriptReadHalfword(ctx)); u16 quantity = VarGet(ScriptReadHalfword(ctx)); @@ -548,7 +548,7 @@ bool8 ScrCmd_checkpcitem(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_givedecoration(struct ScriptContext *ctx) +bool8 ScrCmd_adddecoration(struct ScriptContext *ctx) { u32 decorId = VarGet(ScriptReadHalfword(ctx)); @@ -556,7 +556,7 @@ bool8 ScrCmd_givedecoration(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_takedecoration(struct ScriptContext *ctx) +bool8 ScrCmd_removedecoration(struct ScriptContext *ctx) { u32 decorId = VarGet(ScriptReadHalfword(ctx)); @@ -1726,7 +1726,7 @@ bool8 ScrCmd_checkpartymove(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_givemoney(struct ScriptContext *ctx) +bool8 ScrCmd_addmoney(struct ScriptContext *ctx) { u32 amount = ScriptReadWord(ctx); u8 ignore = ScriptReadByte(ctx); @@ -1736,7 +1736,7 @@ bool8 ScrCmd_givemoney(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_takemoney(struct ScriptContext *ctx) +bool8 ScrCmd_removemoney(struct ScriptContext *ctx) { u32 amount = ScriptReadWord(ctx); u8 ignore = ScriptReadByte(ctx); @@ -2127,22 +2127,22 @@ bool8 ScrCmd_checkcoins(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_givecoins(struct ScriptContext *ctx) +bool8 ScrCmd_addcoins(struct ScriptContext *ctx) { u16 coins = VarGet(ScriptReadHalfword(ctx)); - if (GiveCoins(coins) == TRUE) + if (AddCoins(coins) == TRUE) gSpecialVar_Result = 0; else gSpecialVar_Result = 1; return FALSE; } -bool8 ScrCmd_takecoins(struct ScriptContext *ctx) +bool8 ScrCmd_removecoins(struct ScriptContext *ctx) { u16 coins = VarGet(ScriptReadHalfword(ctx)); - if (TakeCoins(coins) == TRUE) + if (RemoveCoins(coins) == TRUE) gSpecialVar_Result = 0; else gSpecialVar_Result = 1; From 96720db08319d8f69d7864e186722d13dc9ceb05 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Sun, 12 Jan 2020 23:28:38 -0500 Subject: [PATCH 29/37] Remove unnecessary removeitem arguments --- data/maps/AbandonedShip_HiddenFloorCorridors/scripts.inc | 2 +- data/maps/FallarborTown_MoveRelearnersHouse/scripts.inc | 2 +- data/maps/MauvilleCity_House2/scripts.inc | 2 +- data/maps/RustboroCity_DevonCorp_2F/scripts.inc | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/data/maps/AbandonedShip_HiddenFloorCorridors/scripts.inc b/data/maps/AbandonedShip_HiddenFloorCorridors/scripts.inc index 4fcfb117ae..612d46a9a4 100644 --- a/data/maps/AbandonedShip_HiddenFloorCorridors/scripts.inc +++ b/data/maps/AbandonedShip_HiddenFloorCorridors/scripts.inc @@ -73,7 +73,7 @@ AbandonedShip_HiddenFloorCorridors_EventScript_Room2Door:: @ 8238A50 goto_if_eq AbandonedShip_HiddenFloorCorridors_EventScript_Rm2IsLocked msgbox AbandonedShip_HiddenFloorCorridors_Text_InsertedKey, MSGBOX_DEFAULT playse SE_PIN - removeitem ITEM_ROOM_2_KEY, 1 + removeitem ITEM_ROOM_2_KEY setflag FLAG_USED_ROOM_2_KEY call AbandonedShip_HiddenFloorCorridors_EventScript_UnlockRoom2 special DrawWholeMapView diff --git a/data/maps/FallarborTown_MoveRelearnersHouse/scripts.inc b/data/maps/FallarborTown_MoveRelearnersHouse/scripts.inc index aa2eeb3e8e..ac0f42f203 100644 --- a/data/maps/FallarborTown_MoveRelearnersHouse/scripts.inc +++ b/data/maps/FallarborTown_MoveRelearnersHouse/scripts.inc @@ -42,7 +42,7 @@ FallarborTown_MoveRelearnersHouse_EventScript_ChooseMove:: @ 820140C compare VAR_0x8004, 0 goto_if_eq FallarborTown_MoveRelearnersHouse_EventScript_ChooseMon msgbox FallarborTown_MoveRelearnersHouse_Text_HandedOverHeartScale, MSGBOX_DEFAULT - removeitem ITEM_HEART_SCALE, 1 + removeitem ITEM_HEART_SCALE goto FallarborTown_MoveRelearnersHouse_EventScript_ComeBackWithHeartScale end diff --git a/data/maps/MauvilleCity_House2/scripts.inc b/data/maps/MauvilleCity_House2/scripts.inc index 0d1da98129..06ec830ea1 100644 --- a/data/maps/MauvilleCity_House2/scripts.inc +++ b/data/maps/MauvilleCity_House2/scripts.inc @@ -27,7 +27,7 @@ MauvilleCity_House2_EventScript_AskToTradeForHarborMail:: @ 8210C82 MauvilleCity_House2_EventScript_AcceptTrade:: @ 8210CB8 msgbox MauvilleCity_House2_Text_IllTradeYouCoinCase, MSGBOX_DEFAULT - removeitem ITEM_HARBOR_MAIL, 1 + removeitem ITEM_HARBOR_MAIL giveitem ITEM_COIN_CASE setflag FLAG_RECEIVED_COIN_CASE goto MauvilleCity_House2_EventScript_ReceivedCoinCase diff --git a/data/maps/RustboroCity_DevonCorp_2F/scripts.inc b/data/maps/RustboroCity_DevonCorp_2F/scripts.inc index 098de81087..9df6d7ab6e 100644 --- a/data/maps/RustboroCity_DevonCorp_2F/scripts.inc +++ b/data/maps/RustboroCity_DevonCorp_2F/scripts.inc @@ -96,7 +96,7 @@ RustboroCity_DevonCorp_2F_EventScript_NoticeRootFossil:: @ 8211933 RustboroCity_DevonCorp_2F_EventScript_GiveRootFossil:: @ 8211974 bufferitemname 0, ITEM_ROOT_FOSSIL msgbox RustboroCity_DevonCorp_2F_Text_HandedFossilToResearcher, MSGBOX_DEFAULT - removeitem ITEM_ROOT_FOSSIL, 1 + removeitem ITEM_ROOT_FOSSIL setvar VAR_FOSSIL_RESURRECTION_STATE, 1 setvar VAR_WHICH_FOSSIL_REVIVED, 1 release @@ -121,7 +121,7 @@ RustboroCity_DevonCorp_2F_EventScript_NoticeClawFossil:: @ 8211991 RustboroCity_DevonCorp_2F_EventScript_GiveClawFossil:: @ 82119D2 bufferitemname 0, ITEM_CLAW_FOSSIL msgbox RustboroCity_DevonCorp_2F_Text_HandedFossilToResearcher, MSGBOX_DEFAULT - removeitem ITEM_CLAW_FOSSIL, 1 + removeitem ITEM_CLAW_FOSSIL setvar VAR_FOSSIL_RESURRECTION_STATE, 1 setvar VAR_WHICH_FOSSIL_REVIVED, 2 release From 736f3bbbe0d1685474364a68038554f024bff62e Mon Sep 17 00:00:00 2001 From: GriffinR Date: Mon, 13 Jan 2020 13:52:15 -0500 Subject: [PATCH 30/37] Remove false positives from partial doc calcrom --- .travis/calcrom/calcrom.pl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis/calcrom/calcrom.pl b/.travis/calcrom/calcrom.pl index c5972ae108..1bc8bc74b4 100755 --- a/.travis/calcrom/calcrom.pl +++ b/.travis/calcrom/calcrom.pl @@ -64,7 +64,7 @@ my $undoc_cmd = "grep '[Uu]nknown_[0-9a-fA-F]*\\|sub_[0-9a-fA-F]*'"; # This looks for every symbol with an address at the end of it. Some things are # given a name based on their type / location, but still have an unknown purpose. # For example, FooMap_EventScript_FFFFFFF. -my $partial_doc_cmd = "grep '[0-9a-fA-F]\\{6,7\\}'"; +my $partial_doc_cmd = "grep '_[0-28][0-9a-fA-F]\\{5,6\\}'"; my $count_cmd = "wc -l"; From 22931846d680de2bc585093678db3f5721aab891 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Mon, 13 Jan 2020 21:13:33 -0500 Subject: [PATCH 31/37] Fix Colosseum name porymap issue --- data/event_scripts.s | 4 +-- .../border.bin | Bin .../map.bin | Bin .../border.bin | Bin .../map.bin | Bin data/layouts/layouts.json | 12 ++++---- data/maps/BattleColosseum2P/scripts.inc | 3 -- data/maps/BattleColosseum4P/scripts.inc | 3 -- .../map.json | 8 +++--- data/maps/BattleColosseum_2P/scripts.inc | 3 ++ .../map.json | 10 +++---- data/maps/BattleColosseum_4P/scripts.inc | 3 ++ data/maps/map_groups.json | 4 +-- data/scripts/cable_club.inc | 26 +++++++++--------- data/text/cable_club.inc | 2 +- src/overworld.c | 24 ++++++++-------- 16 files changed, 51 insertions(+), 51 deletions(-) rename data/layouts/{BattleColosseum2P => BattleColosseum_2P}/border.bin (100%) rename data/layouts/{BattleColosseum2P => BattleColosseum_2P}/map.bin (100%) rename data/layouts/{BattleColosseum4P => BattleColosseum_4P}/border.bin (100%) rename data/layouts/{BattleColosseum4P => BattleColosseum_4P}/map.bin (100%) delete mode 100644 data/maps/BattleColosseum2P/scripts.inc delete mode 100644 data/maps/BattleColosseum4P/scripts.inc rename data/maps/{BattleColosseum2P => BattleColosseum_2P}/map.json (86%) create mode 100644 data/maps/BattleColosseum_2P/scripts.inc rename data/maps/{BattleColosseum4P => BattleColosseum_4P}/map.json (84%) create mode 100644 data/maps/BattleColosseum_4P/scripts.inc diff --git a/data/event_scripts.s b/data/event_scripts.s index 58dd1951f3..05984f3b52 100644 --- a/data/event_scripts.s +++ b/data/event_scripts.s @@ -447,10 +447,10 @@ gStdScripts_End:: @ 81DC2CC .include "data/maps/AlteringCave/scripts.inc" .include "data/maps/MeteorFalls_StevensCave/scripts.inc" .include "data/scripts/shared_secret_base.inc" - .include "data/maps/BattleColosseum2P/scripts.inc" + .include "data/maps/BattleColosseum_2P/scripts.inc" .include "data/maps/TradeCenter/scripts.inc" .include "data/maps/RecordCorner/scripts.inc" - .include "data/maps/BattleColosseum4P/scripts.inc" + .include "data/maps/BattleColosseum_4P/scripts.inc" .include "data/maps/ContestHall/scripts.inc" .include "data/maps/InsideOfTruck/scripts.inc" .include "data/maps/SSTidalCorridor/scripts.inc" diff --git a/data/layouts/BattleColosseum2P/border.bin b/data/layouts/BattleColosseum_2P/border.bin similarity index 100% rename from data/layouts/BattleColosseum2P/border.bin rename to data/layouts/BattleColosseum_2P/border.bin diff --git a/data/layouts/BattleColosseum2P/map.bin b/data/layouts/BattleColosseum_2P/map.bin similarity index 100% rename from data/layouts/BattleColosseum2P/map.bin rename to data/layouts/BattleColosseum_2P/map.bin diff --git a/data/layouts/BattleColosseum4P/border.bin b/data/layouts/BattleColosseum_4P/border.bin similarity index 100% rename from data/layouts/BattleColosseum4P/border.bin rename to data/layouts/BattleColosseum_4P/border.bin diff --git a/data/layouts/BattleColosseum4P/map.bin b/data/layouts/BattleColosseum_4P/map.bin similarity index 100% rename from data/layouts/BattleColosseum4P/map.bin rename to data/layouts/BattleColosseum_4P/map.bin diff --git a/data/layouts/layouts.json b/data/layouts/layouts.json index cb41ff9e9c..681f46f752 100644 --- a/data/layouts/layouts.json +++ b/data/layouts/layouts.json @@ -2203,13 +2203,13 @@ }, { "id": "LAYOUT_BATTLE_COLOSSEUM_2P", - "name": "BattleColosseum2P_Layout", + "name": "BattleColosseum_2P_Layout", "width": 14, "height": 9, "primary_tileset": "gTileset_Building", "secondary_tileset": "gTileset_CableClub", - "border_filepath": "data/layouts/BattleColosseum2P/border.bin", - "blockdata_filepath": "data/layouts/BattleColosseum2P/map.bin" + "border_filepath": "data/layouts/BattleColosseum_2P/border.bin", + "blockdata_filepath": "data/layouts/BattleColosseum_2P/map.bin" }, { "id": "LAYOUT_TRADE_CENTER", @@ -2233,13 +2233,13 @@ }, { "id": "LAYOUT_BATTLE_COLOSSEUM_4P", - "name": "BattleColosseum4P_Layout", + "name": "BattleColosseum_4P_Layout", "width": 14, "height": 9, "primary_tileset": "gTileset_Building", "secondary_tileset": "gTileset_CableClub", - "border_filepath": "data/layouts/BattleColosseum4P/border.bin", - "blockdata_filepath": "data/layouts/BattleColosseum4P/map.bin" + "border_filepath": "data/layouts/BattleColosseum_4P/border.bin", + "blockdata_filepath": "data/layouts/BattleColosseum_4P/map.bin" }, { "id": "LAYOUT_CONTEST_HALL", diff --git a/data/maps/BattleColosseum2P/scripts.inc b/data/maps/BattleColosseum2P/scripts.inc deleted file mode 100644 index efa01af6c3..0000000000 --- a/data/maps/BattleColosseum2P/scripts.inc +++ /dev/null @@ -1,3 +0,0 @@ -BattleColosseum2P_MapScripts:: @ 823B77D - .byte 0 - diff --git a/data/maps/BattleColosseum4P/scripts.inc b/data/maps/BattleColosseum4P/scripts.inc deleted file mode 100644 index b1733aecd0..0000000000 --- a/data/maps/BattleColosseum4P/scripts.inc +++ /dev/null @@ -1,3 +0,0 @@ -BattleColosseum4P_MapScripts:: @ 823B780 - .byte 0 - diff --git a/data/maps/BattleColosseum2P/map.json b/data/maps/BattleColosseum_2P/map.json similarity index 86% rename from data/maps/BattleColosseum2P/map.json rename to data/maps/BattleColosseum_2P/map.json index 18df18491a..282be1e5cf 100644 --- a/data/maps/BattleColosseum2P/map.json +++ b/data/maps/BattleColosseum_2P/map.json @@ -1,6 +1,6 @@ { "id": "MAP_BATTLE_COLOSSEUM_2P", - "name": "BattleColosseum2P", + "name": "BattleColosseum_2P", "layout": "LAYOUT_BATTLE_COLOSSEUM_2P", "music": "MUS_RAINBOW", "region_map_section": "MAPSEC_DYNAMIC", @@ -24,7 +24,7 @@ "movement_range_y": 0, "trainer_type": "0", "trainer_sight_or_berry_tree_id": "0", - "script": "BattleColosseum2P_EventScript_Attendant", + "script": "BattleColosseum_2P_EventScript_Attendant", "flag": "0" } ], @@ -52,7 +52,7 @@ "elevation": 3, "var": "VAR_TEMP_0", "var_value": "0", - "script": "EventScript_BattleColosseum2P_PlayerSpot0" + "script": "EventScript_BattleColosseum_2P_PlayerSpot0" }, { "type": "trigger", @@ -61,7 +61,7 @@ "elevation": 3, "var": "VAR_TEMP_0", "var_value": "0", - "script": "EventScript_BattleColosseum2P_PlayerSpot1" + "script": "EventScript_BattleColosseum_2P_PlayerSpot1" } ], "bg_events": [] diff --git a/data/maps/BattleColosseum_2P/scripts.inc b/data/maps/BattleColosseum_2P/scripts.inc new file mode 100644 index 0000000000..97c6a5d0bd --- /dev/null +++ b/data/maps/BattleColosseum_2P/scripts.inc @@ -0,0 +1,3 @@ +BattleColosseum_2P_MapScripts:: @ 823B77D + .byte 0 + diff --git a/data/maps/BattleColosseum4P/map.json b/data/maps/BattleColosseum_4P/map.json similarity index 84% rename from data/maps/BattleColosseum4P/map.json rename to data/maps/BattleColosseum_4P/map.json index d17851aaf3..2b849cfc19 100644 --- a/data/maps/BattleColosseum4P/map.json +++ b/data/maps/BattleColosseum_4P/map.json @@ -1,6 +1,6 @@ { "id": "MAP_BATTLE_COLOSSEUM_4P", - "name": "BattleColosseum4P", + "name": "BattleColosseum_4P", "layout": "LAYOUT_BATTLE_COLOSSEUM_4P", "music": "MUS_RAINBOW", "region_map_section": "MAPSEC_DYNAMIC", @@ -52,7 +52,7 @@ "elevation": 3, "var": "VAR_TEMP_0", "var_value": "0", - "script": "EventScript_BattleColosseum4P_PlayerSpot0" + "script": "EventScript_BattleColosseum_4P_PlayerSpot0" }, { "type": "trigger", @@ -61,7 +61,7 @@ "elevation": 3, "var": "VAR_TEMP_0", "var_value": "0", - "script": "EventScript_BattleColosseum4P_PlayerSpot2" + "script": "EventScript_BattleColosseum_4P_PlayerSpot2" }, { "type": "trigger", @@ -70,7 +70,7 @@ "elevation": 3, "var": "VAR_TEMP_0", "var_value": "0", - "script": "EventScript_BattleColosseum4P_PlayerSpot1" + "script": "EventScript_BattleColosseum_4P_PlayerSpot1" }, { "type": "trigger", @@ -79,7 +79,7 @@ "elevation": 3, "var": "VAR_TEMP_0", "var_value": "0", - "script": "EventScript_BattleColosseum4P_PlayerSpot3" + "script": "EventScript_BattleColosseum_4P_PlayerSpot3" } ], "bg_events": [] diff --git a/data/maps/BattleColosseum_4P/scripts.inc b/data/maps/BattleColosseum_4P/scripts.inc new file mode 100644 index 0000000000..70dca8e276 --- /dev/null +++ b/data/maps/BattleColosseum_4P/scripts.inc @@ -0,0 +1,3 @@ +BattleColosseum_4P_MapScripts:: @ 823B780 + .byte 0 + diff --git a/data/maps/map_groups.json b/data/maps/map_groups.json index 0a62eb0eab..0a5ee32cf3 100644 --- a/data/maps/map_groups.json +++ b/data/maps/map_groups.json @@ -456,10 +456,10 @@ "SecretBase_YellowCave4", "SecretBase_Tree4", "SecretBase_Shrub4", - "BattleColosseum2P", + "BattleColosseum_2P", "TradeCenter", "RecordCorner", - "BattleColosseum4P", + "BattleColosseum_4P", "ContestHall", "UnknownLinkContestRoom_25_29", "UnknownLinkContestRoom_25_30", diff --git a/data/scripts/cable_club.inc b/data/scripts/cable_club.inc index 4f2fab0f44..4cf046c024 100644 --- a/data/scripts/cable_club.inc +++ b/data/scripts/cable_club.inc @@ -710,63 +710,63 @@ EventScript_CableBoxResults:: @ 8277365 releaseall end -EventScript_BattleColosseum2P_PlayerSpot0:: @ 8277374 +EventScript_BattleColosseum_2P_PlayerSpot0:: @ 8277374 setvar VAR_0x8005, 0 special ColosseumPlayerSpotTriggered waitstate end -EventScript_BattleColosseum2P_PlayerSpot1:: @ 827737E +EventScript_BattleColosseum_2P_PlayerSpot1:: @ 827737E setvar VAR_0x8005, 1 special ColosseumPlayerSpotTriggered waitstate end -EventScript_BattleColosseum4P_PlayerSpot0:: @ 8277388 +EventScript_BattleColosseum_4P_PlayerSpot0:: @ 8277388 fadescreen FADE_TO_BLACK special ChooseHalfPartyForBattle waitstate compare VAR_RESULT, 0 - goto_if_eq EventScript_BattleColosseum4P_CancelSpotTrigger + goto_if_eq EventScript_BattleColosseum_4P_CancelSpotTrigger setvar VAR_0x8005, 0 special ColosseumPlayerSpotTriggered waitstate end -EventScript_BattleColosseum4P_PlayerSpot1:: @ 82773A3 +EventScript_BattleColosseum_4P_PlayerSpot1:: @ 82773A3 fadescreen FADE_TO_BLACK special ChooseHalfPartyForBattle waitstate compare VAR_RESULT, 0 - goto_if_eq EventScript_BattleColosseum4P_CancelSpotTrigger + goto_if_eq EventScript_BattleColosseum_4P_CancelSpotTrigger setvar VAR_0x8005, 1 special ColosseumPlayerSpotTriggered waitstate end -EventScript_BattleColosseum4P_PlayerSpot2:: @ 82773BE +EventScript_BattleColosseum_4P_PlayerSpot2:: @ 82773BE fadescreen FADE_TO_BLACK special ChooseHalfPartyForBattle waitstate compare VAR_RESULT, 0 - goto_if_eq EventScript_BattleColosseum4P_CancelSpotTrigger + goto_if_eq EventScript_BattleColosseum_4P_CancelSpotTrigger setvar VAR_0x8005, 2 special ColosseumPlayerSpotTriggered waitstate end -EventScript_BattleColosseum4P_PlayerSpot3:: @ 82773D9 +EventScript_BattleColosseum_4P_PlayerSpot3:: @ 82773D9 fadescreen FADE_TO_BLACK special ChooseHalfPartyForBattle waitstate compare VAR_RESULT, 0 - goto_if_eq EventScript_BattleColosseum4P_CancelSpotTrigger + goto_if_eq EventScript_BattleColosseum_4P_CancelSpotTrigger setvar VAR_0x8005, 3 special ColosseumPlayerSpotTriggered waitstate end -EventScript_BattleColosseum4P_CancelSpotTrigger:: @ 82773F4 +EventScript_BattleColosseum_4P_CancelSpotTrigger:: @ 82773F4 end EventScript_TradeCenter_Chair0:: @ 82773F5 @@ -855,9 +855,9 @@ CableClub_EventScript_TooBusyToNotice:: @ 827749C closemessage end -BattleColosseum2P_EventScript_Attendant:: @ 82774A6 +BattleColosseum_2P_EventScript_Attendant:: @ 82774A6 special Script_FacePlayer - msgbox BattleColosseum2P_Text_TakePlaceStartBattle, MSGBOX_DEFAULT + msgbox BattleColosseum_2P_Text_TakePlaceStartBattle, MSGBOX_DEFAULT special Script_ClearHeldMovement closemessage end diff --git a/data/text/cable_club.inc b/data/text/cable_club.inc index c1922d1476..b4f656a004 100644 --- a/data/text/cable_club.inc +++ b/data/text/cable_club.inc @@ -123,7 +123,7 @@ CableClub_Text_GotToLookAtColoredTrainerCard: @ 827847B .string "TRAINER CARD!\p" .string "It's a {STR_VAR_2} card!$" -BattleColosseum2P_Text_TakePlaceStartBattle: @ 82784B4 +BattleColosseum_2P_Text_TakePlaceStartBattle: @ 82784B4 .string "Please take your place and start\n" .string "your battle.$" diff --git a/src/overworld.c b/src/overworld.c index 4736d8a506..d0a153e09c 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -89,16 +89,16 @@ extern const u8 EventScript_DoLinkRoomExit[]; extern const u8 CableClub_EventScript_TooBusyToNotice[]; extern const u8 CableClub_EventScript_ReadTrainerCard[]; extern const u8 CableClub_EventScript_ReadTrainerCardColored[]; -extern const u8 EventScript_BattleColosseum4P_PlayerSpot0[]; -extern const u8 EventScript_BattleColosseum4P_PlayerSpot1[]; -extern const u8 EventScript_BattleColosseum4P_PlayerSpot2[]; -extern const u8 EventScript_BattleColosseum4P_PlayerSpot3[]; +extern const u8 EventScript_BattleColosseum_4P_PlayerSpot0[]; +extern const u8 EventScript_BattleColosseum_4P_PlayerSpot1[]; +extern const u8 EventScript_BattleColosseum_4P_PlayerSpot2[]; +extern const u8 EventScript_BattleColosseum_4P_PlayerSpot3[]; extern const u8 EventScript_RecordCenter_Spot0[]; extern const u8 EventScript_RecordCenter_Spot1[]; extern const u8 EventScript_RecordCenter_Spot2[]; extern const u8 EventScript_RecordCenter_Spot3[]; -extern const u8 EventScript_BattleColosseum2P_PlayerSpot0[]; -extern const u8 EventScript_BattleColosseum2P_PlayerSpot1[]; +extern const u8 EventScript_BattleColosseum_2P_PlayerSpot0[]; +extern const u8 EventScript_BattleColosseum_2P_PlayerSpot1[]; extern const u8 EventScript_TradeCenter_Chair1[]; extern const u8 EventScript_TradeCenter_Chair0[]; extern const u8 EventScript_ConfirmLeaveTradeRoom[]; @@ -2782,13 +2782,13 @@ static const u8 *TryInteractWithPlayer(struct TradeRoomPlayer *player) // these event scripts runs. static u16 GetDirectionForEventScript(const u8 *script) { - if (script == EventScript_BattleColosseum4P_PlayerSpot0) + if (script == EventScript_BattleColosseum_4P_PlayerSpot0) return FACING_FORCED_RIGHT; - else if (script == EventScript_BattleColosseum4P_PlayerSpot1) + else if (script == EventScript_BattleColosseum_4P_PlayerSpot1) return FACING_FORCED_LEFT; - else if (script == EventScript_BattleColosseum4P_PlayerSpot2) + else if (script == EventScript_BattleColosseum_4P_PlayerSpot2) return FACING_FORCED_RIGHT; - else if (script == EventScript_BattleColosseum4P_PlayerSpot3) + else if (script == EventScript_BattleColosseum_4P_PlayerSpot3) return FACING_FORCED_LEFT; else if (script == EventScript_RecordCenter_Spot0) return FACING_FORCED_RIGHT; @@ -2798,9 +2798,9 @@ static u16 GetDirectionForEventScript(const u8 *script) return FACING_FORCED_RIGHT; else if (script == EventScript_RecordCenter_Spot3) return FACING_FORCED_LEFT; - else if (script == EventScript_BattleColosseum2P_PlayerSpot0) + else if (script == EventScript_BattleColosseum_2P_PlayerSpot0) return FACING_FORCED_RIGHT; - else if (script == EventScript_BattleColosseum2P_PlayerSpot1) + else if (script == EventScript_BattleColosseum_2P_PlayerSpot1) return FACING_FORCED_LEFT; else if (script == EventScript_TradeCenter_Chair0) return FACING_FORCED_RIGHT; From 755ae0faccc8c11c6b4966e1c0639890085598db Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Mon, 13 Jan 2020 20:31:40 -0600 Subject: [PATCH 32/37] Use empty braces for last null entry in sTransitionTypes array --- src/fldeff_flash.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/fldeff_flash.c b/src/fldeff_flash.c index 5f3dabd038..e2497ca950 100644 --- a/src/fldeff_flash.c +++ b/src/fldeff_flash.c @@ -61,7 +61,7 @@ static const struct FlashStruct sTransitionTypes[] = {MAP_TYPE_UNDERGROUND, MAP_TYPE_UNUSED_2, FALSE, TRUE, DoExitCaveTransition}, {MAP_TYPE_UNDERGROUND, MAP_TYPE_INDOOR, FALSE, TRUE, DoExitCaveTransition}, {MAP_TYPE_UNDERGROUND, MAP_TYPE_SECRET_BASE, FALSE, TRUE, DoExitCaveTransition}, - {0, 0, FALSE, FALSE, NULL}, + {}, }; static const u16 gCaveTransitionPalette_White[] = INCBIN_U16("graphics/misc/cave_transition_white.gbapal"); From 5fff2f2234755af166612a4829d178408eb740bb Mon Sep 17 00:00:00 2001 From: Sebastian Gabl Date: Wed, 15 Jan 2020 14:48:17 +0100 Subject: [PATCH 33/37] Use SHINY_ODDS macro where intended The 3 locations where SHINY_ODDS was added generate mon sprites for display in the dex, at game start and on starter choice. The arguments are intended for otId but in this case they are set to the same value as SHINY_ODDS to prevent the pictures created from using the shiny palette. --- src/main_menu.c | 2 +- src/pokedex.c | 2 +- src/starter_choose.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main_menu.c b/src/main_menu.c index 7c4e82c765..61a60a8e7f 100644 --- a/src/main_menu.c +++ b/src/main_menu.c @@ -1884,7 +1884,7 @@ static void SpriteCB_MovePlayerDownWhileShrinking(struct Sprite *sprite) static u8 NewGameBirchSpeech_CreateLotadSprite(u8 a, u8 b) { - return CreatePicSprite2(SPECIES_LOTAD, 8, 0, 1, a, b, 14, -1); + return CreatePicSprite2(SPECIES_LOTAD, SHINY_ODDS, 0, 1, a, b, 14, -1); } static void AddBirchSpeechObjects(u8 taskId) diff --git a/src/pokedex.c b/src/pokedex.c index 78c204d2d2..bd766fbf7c 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -4674,7 +4674,7 @@ u32 sub_80C0E68(u16 a) u16 CreateMonSpriteFromNationalDexNumber(u16 nationalNum, s16 x, s16 y, u16 paletteSlot) { nationalNum = NationalPokedexNumToSpecies(nationalNum); - return CreateMonPicSprite_HandleDeoxys(nationalNum, 8, sub_80C0E68(nationalNum), TRUE, x, y, paletteSlot, 0xFFFF); + return CreateMonPicSprite_HandleDeoxys(nationalNum, SHINY_ODDS, sub_80C0E68(nationalNum), TRUE, x, y, paletteSlot, 0xFFFF); } u16 sub_80C0EF8(u16 species, s16 x, s16 y, s8 paletteSlot) diff --git a/src/starter_choose.c b/src/starter_choose.c index 3484919925..11b84a9e2b 100644 --- a/src/starter_choose.c +++ b/src/starter_choose.c @@ -640,7 +640,7 @@ static u8 CreatePokemonFrontSprite(u16 species, u8 x, u8 y) { u8 spriteId; - spriteId = CreatePicSprite2(species, 8, 0, 1, x, y, 0xE, 0xFFFF); + spriteId = CreatePicSprite2(species, SHINY_ODDS, 0, 1, x, y, 0xE, 0xFFFF); gSprites[spriteId].oam.priority = 0; return spriteId; } From 8a5f292618e7464340a28bb584295510e4b50b3d Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Thu, 16 Jan 2020 04:46:17 +0800 Subject: [PATCH 34/37] document symbols --- asm/librfu.s | 473 ++++++++++++++++++------------------ asm/librfu_intr.s | 40 +-- common_syms/librfu.txt | 12 +- common_syms/librfu_stwi.txt | 2 +- data/librfu_rodata.s | 6 +- include/librfu.h | 62 ++--- include/link_rfu.h | 27 ++ include/union_room.h | 2 +- src/crt0.s | 2 +- src/librfu.c | 12 +- src/librfu_rfu.c | 30 +-- src/librfu_stwi.c | 290 +++++++++++----------- src/link_rfu.c | 230 +++++++++--------- src/trade.c | 2 +- src/union_room.c | 2 +- 15 files changed, 596 insertions(+), 596 deletions(-) diff --git a/asm/librfu.s b/asm/librfu.s index 82fba2202e..28cc015943 100644 --- a/asm/librfu.s +++ b/asm/librfu.s @@ -47,21 +47,21 @@ _082E3EEE: .align 2, 0 .pool _082E3EFC: - ldr r0, =gUnknown_03007890 + ldr r0, =gRfuLinkStatus str r4, [r0] - ldr r1, =gUnknown_03007894 + ldr r1, =gRfuStatic adds r0, r4, 0 adds r0, 0xB4 str r0, [r1] - ldr r1, =gUnknown_03007898 + ldr r1, =gRfuFixed adds r0, 0x28 str r0, [r1] - ldr r2, =gUnknown_03007880 + ldr r2, =gRfuSlotStatusNI movs r1, 0xDE lsls r1, 1 adds r0, r4, r1 str r0, [r2] - ldr r1, =gUnknown_03007870 + ldr r1, =gRfuSlotStatusUNI movs r3, 0xDF lsls r3, 2 adds r0, r4, r3 @@ -88,10 +88,10 @@ _082E3F28: lsrs r5, r0, 16 cmp r5, 0x3 bls _082E3F28 - ldr r0, =gUnknown_03007898 + ldr r0, =gRfuFixed ldr r1, [r0] adds r1, 0xDC - ldr r4, =gUnknown_03007870 + ldr r4, =gRfuSlotStatusUNI ldr r0, [r4, 0xC] adds r0, 0x1C str r0, [r1] @@ -100,7 +100,7 @@ _082E3F28: bl STWI_init_all bl rfu_STC_clearAPIVariables movs r5, 0 - ldr r3, =gUnknown_03007880 + ldr r3, =gRfuSlotStatusNI movs r2, 0 _082E3F6C: lsls r1, r5, 2 @@ -121,7 +121,7 @@ _082E3F6C: movs r0, 0x2 negs r0, r0 ands r4, r0 - ldr r1, =gUnknown_03007898 + ldr r1, =gRfuFixed ldr r0, [r1] adds r2, r0, 0 adds r2, 0x8 @@ -159,7 +159,7 @@ rfu_STC_clearAPIVariables: @ 82E3FDC adds r7, r0, 0 movs r6, 0 strh r6, [r1] - ldr r5, =gUnknown_03007894 + ldr r5, =gRfuStatic ldr r1, [r5] ldrb r4, [r1] mov r0, sp @@ -174,7 +174,7 @@ rfu_STC_clearAPIVariables: @ 82E3FDC mov r0, sp adds r0, 0x2 strh r1, [r0] - ldr r4, =gUnknown_03007890 + ldr r4, =gRfuLinkStatus ldr r1, [r4] ldr r2, =0x0100005a bl CpuSet @@ -230,7 +230,7 @@ rfu_UNI_PARENT_getDRAC_ACK: @ 82E4078 adds r4, r0, 0 movs r0, 0 strb r0, [r4] - ldr r5, =gUnknown_03007890 + ldr r5, =gRfuLinkStatus ldr r0, [r5] ldrb r0, [r0] cmp r0, 0x1 @@ -284,7 +284,7 @@ rfu_setTimerInterrupt: @ 82E40C0 thumb_func_start rfu_getSTWIRecvBuffer rfu_getSTWIRecvBuffer: @ 82E40D4 - ldr r0, =gUnknown_03007898 + ldr r0, =gRfuFixed ldr r0, [r0] adds r0, 0xDC ldr r0, [r0] @@ -305,7 +305,7 @@ rfu_setMSCCallback: @ 82E40E4 rfu_setREQCallback: @ 82E40F0 push {lr} adds r1, r0, 0 - ldr r0, =gUnknown_03007898 + ldr r0, =gRfuFixed ldr r0, [r0] str r1, [r0] negs r0, r1 @@ -324,7 +324,7 @@ rfu_enableREQCallback: @ 82E410C lsls r0, 24 cmp r0, 0 beq _082E4124 - ldr r0, =gUnknown_03007894 + ldr r0, =gRfuStatic ldr r2, [r0] ldrb r1, [r2] movs r0, 0x8 @@ -333,7 +333,7 @@ rfu_enableREQCallback: @ 82E410C .align 2, 0 .pool _082E4124: - ldr r0, =gUnknown_03007894 + ldr r0, =gRfuStatic ldr r2, [r0] ldrb r1, [r2] movs r0, 0xF7 @@ -355,7 +355,7 @@ rfu_STC_REQ_callback: @ 82E4138 lsrs r4, r1, 16 ldr r0, =rfu_CB_defaultCallback bl STWI_set_Callback_M - ldr r0, =gUnknown_03007894 + ldr r0, =gRfuStatic ldr r0, [r0] strh r4, [r0, 0x1C] ldrb r1, [r0] @@ -363,7 +363,7 @@ rfu_STC_REQ_callback: @ 82E4138 ands r0, r1 cmp r0, 0 beq _082E4166 - ldr r0, =gUnknown_03007898 + ldr r0, =gRfuFixed ldr r0, [r0] ldr r2, [r0] adds r0, r5, 0 @@ -386,21 +386,21 @@ rfu_CB_defaultCallback: @ 82E4178 lsrs r3, r1, 16 cmp r0, 0xFF bne _082E41D4 - ldr r0, =gUnknown_03007894 + ldr r0, =gRfuStatic ldr r0, [r0] ldrb r1, [r0] movs r0, 0x8 ands r0, r1 cmp r0, 0 beq _082E41A2 - ldr r0, =gUnknown_03007898 + ldr r0, =gRfuFixed ldr r0, [r0] ldr r2, [r0] movs r0, 0xFF adds r1, r3, 0 bl _call_via_r2 _082E41A2: - ldr r0, =gUnknown_03007890 + ldr r0, =gRfuLinkStatus ldr r0, [r0] ldrb r1, [r0, 0x2] ldrb r0, [r0, 0x3] @@ -422,7 +422,7 @@ _082E41C2: lsrs r4, r0, 24 cmp r4, 0x3 bls _082E41B0 - ldr r0, =gUnknown_03007890 + ldr r0, =gRfuLinkStatus ldr r1, [r0] movs r0, 0xFF strb r0, [r1] @@ -438,7 +438,7 @@ _082E41D4: rfu_waitREQComplete: @ 82E41E8 push {lr} bl STWI_poll_CommandEnd - ldr r0, =gUnknown_03007894 + ldr r0, =gRfuStatic ldr r0, [r0] ldrh r0, [r0, 0x1C] pop {r1} @@ -463,7 +463,7 @@ rfu_REQ_RFUStatus: @ 82E41FC rfu_getRFUStatus: @ 82E4210 push {r4,r5,lr} adds r4, r0, 0 - ldr r5, =gUnknown_03007898 + ldr r5, =gRfuFixed ldr r0, [r5] adds r0, 0xDC ldr r0, [r0] @@ -495,18 +495,15 @@ _082E4246: bx r1 thumb_func_end rfu_getRFUStatus - thumb_func_start sub_82E424C -sub_82E424C: @ 82E424C + thumb_func_start rfu_MBOOT_CHILD_inheritanceLinkStatus +rfu_MBOOT_CHILD_inheritanceLinkStatus: @ 82E424C push {lr} - ldr r2, =gUnknown_089A324C + ldr r2, =str_checkMbootLL ldr r3, =gDma3Requests + 0xE0 b _082E4266 .align 2, 0 .pool - thumb_func_end sub_82E424C - - thumb_func_start sub_82E425C -sub_82E425C: @ 82E425C +_082E425C: ldrb r0, [r3] adds r3, 0x1 adds r2, 0x1 @@ -515,7 +512,7 @@ sub_82E425C: @ 82E425C _082E4266: ldrb r1, [r2] cmp r1, 0 - bne sub_82E425C + bne _082E425C movs r2, 0xC0 lsls r2, 18 movs r3, 0 @@ -537,11 +534,11 @@ _082E4274: bne _082E42BC movs r0, 0xC0 lsls r0, 18 - ldr r1, =gUnknown_03007890 + ldr r1, =gRfuLinkStatus ldr r1, [r1] movs r2, 0x5A bl CpuSet - ldr r0, =gUnknown_03007894 + ldr r0, =gRfuStatic ldr r2, [r0] ldrb r1, [r2] movs r0, 0x80 @@ -556,7 +553,7 @@ _082E42BC: _082E42BE: pop {r1} bx r1 - thumb_func_end sub_82E425C + thumb_func_end rfu_MBOOT_CHILD_inheritanceLinkStatus thumb_func_start rfu_REQ_stopMode rfu_REQ_stopMode: @ 82E42C4 @@ -568,7 +565,7 @@ rfu_REQ_stopMode: @ 82E42C4 movs r0, 0x3D movs r1, 0x6 bl rfu_STC_REQ_callback - ldr r0, =gRfuState + ldr r0, =gSTWIStatus ldr r1, [r0] ldrh r0, [r1, 0x12] movs r0, 0x6 @@ -580,11 +577,11 @@ _082E42EC: bl AgbRFU_SoftReset bl rfu_STC_clearAPIVariables movs r0, 0x8 - bl sub_82E6D6C + bl AgbRFU_checkID ldr r1, =0x00008001 cmp r0, r1 bne _082E4350 - ldr r0, =gRfuState + ldr r0, =gSTWIStatus ldr r0, [r0] ldrb r0, [r0, 0xA] lsls r0, 2 @@ -673,7 +670,7 @@ _082E43AC: bl AgbRFU_SoftReset bl rfu_STC_clearAPIVariables movs r0, 0x1E - bl sub_82E6D6C + bl AgbRFU_checkID adds r2, r0, 0 cmp r2, 0 bne _082E43CA @@ -746,7 +743,7 @@ rfu_REQ_configSystem: @ 82E440C bl STWI_send_SystemConfigREQ cmp r6, 0 bne _082E444C - ldr r0, =gUnknown_03007894 + ldr r0, =gRfuStatic ldr r1, [r0] movs r0, 0x1 strh r0, [r1, 0x1A] @@ -762,7 +759,7 @@ _082E444C: lsls r0, 2 adds r1, r6, 0 bl Div - ldr r1, =gUnknown_03007894 + ldr r1, =gRfuStatic ldr r1, [r1] strh r0, [r1, 0x1A] strh r4, [r5] @@ -860,10 +857,10 @@ rfu_CB_configGameData: @ 82E4500 lsrs r7, r1, 16 cmp r7, 0 bne _082E458A - ldr r0, =gRfuState + ldr r0, =gSTWIStatus ldr r0, [r0] ldr r1, [r0, 0x24] - ldr r0, =gUnknown_03007890 + ldr r0, =gRfuLinkStatus ldr r6, [r0] ldrb r2, [r1, 0x4] adds r5, r6, 0 @@ -895,7 +892,7 @@ _082E454C: _082E4552: strb r0, [r1] movs r2, 0 - ldr r3, =gUnknown_03007890 + ldr r3, =gRfuLinkStatus _082E4558: ldr r0, [r3] adds r0, 0x9A @@ -910,7 +907,7 @@ _082E4558: bls _082E4558 adds r4, 0x1 movs r2, 0 - ldr r3, =gUnknown_03007890 + ldr r3, =gRfuLinkStatus _082E4574: ldr r0, [r3] adds r0, 0xA9 @@ -939,7 +936,7 @@ rfu_REQ_startSearchChild: @ 82E459C push {r4,lr} movs r1, 0 ldr r4, =rfu_CB_defaultCallback - ldr r3, =gUnknown_03007894 + ldr r3, =gRfuStatic movs r2, 0 _082E45A6: ldr r0, [r3] @@ -959,7 +956,7 @@ _082E45A6: lsrs r1, r0, 16 cmp r1, 0 bne _082E45F0 - ldr r0, =gUnknown_03007898 + ldr r0, =gRfuFixed ldr r0, [r0] adds r0, 0xDC ldr r0, [r0] @@ -995,7 +992,7 @@ rfu_CB_startSearchChild: @ 82E460C adds r2, r1, 0 cmp r2, 0 bne _082E4624 - ldr r0, =gUnknown_03007894 + ldr r0, =gRfuStatic ldr r1, [r0] movs r0, 0x1 strb r0, [r1, 0x9] @@ -1022,7 +1019,7 @@ rfu_STC_clearLinkStatus: @ 82E4634 mov r0, sp movs r5, 0 strh r5, [r0] - ldr r4, =gUnknown_03007890 + ldr r4, =gRfuLinkStatus ldr r1, [r4] adds r1, 0x14 ldr r2, =0x01000040 @@ -1031,7 +1028,7 @@ rfu_STC_clearLinkStatus: @ 82E4634 strb r5, [r0, 0x8] _082E465C: movs r1, 0 - ldr r2, =gUnknown_03007890 + ldr r2, =gRfuLinkStatus adds r4, r2, 0 movs r3, 0 _082E4664: @@ -1098,7 +1095,7 @@ rfu_CB_pollAndEndSearchChild: @ 82E46C0 _082E46D2: cmp r4, 0x1A bne _082E4714 - ldr r5, =gUnknown_03007890 + ldr r5, =gRfuLinkStatus ldr r0, [r5] adds r0, 0x94 ldrh r0, [r0] @@ -1112,7 +1109,7 @@ _082E46D2: cmp r0, 0 bne _082E4730 ldr r1, [r5] - ldr r0, =gUnknown_03007898 + ldr r0, =gRfuFixed ldr r0, [r0] adds r0, 0xDC ldr r0, [r0] @@ -1125,7 +1122,7 @@ _082E46D2: _082E4714: cmp r4, 0x1B bne _082E4730 - ldr r0, =gUnknown_03007890 + ldr r0, =gRfuLinkStatus ldr r1, [r0] ldrb r0, [r1] cmp r0, 0xFF @@ -1134,7 +1131,7 @@ _082E4714: movs r0, 0 strh r0, [r1] _082E4728: - ldr r0, =gUnknown_03007894 + ldr r0, =gRfuStatic ldr r1, [r0] movs r0, 0 strb r0, [r1, 0x9] @@ -1154,7 +1151,7 @@ rfu_STC_readChildList: @ 82E4748 push {r4-r7,lr} mov r7, r8 push {r7} - ldr r0, =gUnknown_03007898 + ldr r0, =gRfuFixed ldr r0, [r0] adds r0, 0xDC ldr r0, [r0] @@ -1162,9 +1159,9 @@ rfu_STC_readChildList: @ 82E4748 adds r6, r0, 0x4 cmp r7, 0 beq _082E47EE - ldr r0, =gUnknown_03007894 + ldr r0, =gRfuStatic mov r8, r0 - ldr r1, =gUnknown_03007890 + ldr r1, =gRfuLinkStatus mov r12, r1 _082E4766: ldrb r4, [r6, 0x2] @@ -1332,12 +1329,12 @@ rfu_STC_readParentCandidateList: @ 82E4888 mov r0, sp movs r4, 0 strh r4, [r0] - ldr r5, =gUnknown_03007890 + ldr r5, =gRfuLinkStatus ldr r1, [r5] adds r1, 0x14 ldr r2, =0x01000040 bl CpuSet - ldr r0, =gUnknown_03007898 + ldr r0, =gRfuFixed ldr r0, [r0] adds r0, 0xDC ldr r2, [r0] @@ -1471,7 +1468,7 @@ rfu_REQ_startConnectParent: @ 82E4998 lsrs r4, r0, 16 movs r3, 0 movs r2, 0 - ldr r1, =gUnknown_03007890 + ldr r1, =gRfuLinkStatus ldr r0, [r1] ldrh r0, [r0, 0x14] cmp r0, r4 @@ -1497,7 +1494,7 @@ _082E49C4: _082E49CC: cmp r3, 0 bne _082E49F0 - ldr r0, =gUnknown_03007894 + ldr r0, =gRfuStatic ldr r0, [r0] strh r4, [r0, 0x1E] ldr r0, =rfu_STC_REQ_callback @@ -1545,7 +1542,7 @@ rfu_CB_pollConnectParent: @ 82E4A14 str r1, [sp, 0x28] cmp r1, 0 bne _082E4B16 - ldr r0, =gUnknown_03007898 + ldr r0, =gRfuFixed ldr r0, [r0] adds r0, 0xDC ldr r0, [r0] @@ -1559,7 +1556,7 @@ rfu_CB_pollConnectParent: @ 82E4A14 lsls r0, 17 lsls r0, r1 lsrs r2, r0, 24 - ldr r4, =gUnknown_03007890 + ldr r4, =gRfuLinkStatus ldr r3, [r4] ldrb r1, [r3, 0x2] adds r0, r2, 0 @@ -1583,7 +1580,7 @@ rfu_CB_pollConnectParent: @ 82E4A14 strb r0, [r1, 0x1] ldr r0, [r4] strb r2, [r0] - ldr r3, =gUnknown_03007894 + ldr r3, =gRfuStatic ldr r2, [r3] ldrb r1, [r2] movs r0, 0x80 @@ -1641,7 +1638,7 @@ _082E4AEA: _082E4AF4: cmp r5, 0x3 bhi _082E4B16 - ldr r4, =gUnknown_03007890 + ldr r4, =gRfuLinkStatus mov r0, r10 lsls r5, r0, 5 adds r0, r5, 0 @@ -1677,7 +1674,7 @@ rfu_getConnectParentStatus: @ 82E4B34 adds r3, r0, 0 movs r0, 0xFF strb r0, [r3] - ldr r0, =gUnknown_03007898 + ldr r0, =gRfuFixed ldr r0, [r0] adds r0, 0xDC ldr r2, [r0] @@ -1709,14 +1706,14 @@ rfu_REQ_endConnectParent: @ 82E4B68 ldr r0, =rfu_CB_pollConnectParent bl STWI_set_Callback_M bl STWI_send_CP_EndREQ - ldr r0, =gUnknown_03007898 + ldr r0, =gRfuFixed ldr r0, [r0] adds r0, 0xDC ldr r1, [r0] ldrb r0, [r1, 0x6] cmp r0, 0x3 bhi _082E4B90 - ldr r0, =gUnknown_03007894 + ldr r0, =gRfuStatic ldr r0, [r0] adds r0, 0xA ldrb r1, [r1, 0x6] @@ -1734,12 +1731,12 @@ _082E4B90: rfu_syncVBlank: @ 82E4BA0 push {r4,r5,lr} bl rfu_NI_checkCommFailCounter - ldr r0, =gUnknown_03007890 + ldr r0, =gRfuLinkStatus ldr r0, [r0] ldrb r0, [r0] cmp r0, 0xFF beq _082E4C78 - ldr r4, =gUnknown_03007894 + ldr r4, =gRfuStatic ldr r1, [r4] ldrb r0, [r1, 0x6] cmp r0, 0 @@ -1778,7 +1775,7 @@ _082E4BFA: cmp r3, 0 beq _082E4C10 _082E4BFE: - ldr r3, =gUnknown_03007894 + ldr r3, =gRfuStatic ldr r2, [r3] ldrb r1, [r2] movs r0, 0xFD @@ -1787,7 +1784,7 @@ _082E4BFE: .align 2, 0 .pool _082E4C10: - ldr r3, =gUnknown_03007894 + ldr r3, =gRfuStatic ldr r2, [r3] ldrb r1, [r2] movs r0, 0x2 @@ -1806,7 +1803,7 @@ _082E4C1A: movs r0, 0xFB ands r0, r1 strb r0, [r3] - ldr r0, =gUnknown_03007890 + ldr r0, =gRfuLinkStatus ldr r0, [r0] ldrb r1, [r0, 0x2] ldrb r0, [r0, 0x3] @@ -1828,7 +1825,7 @@ _082E4C54: lsrs r4, r0, 24 cmp r4, 0x3 bls _082E4C42 - ldr r0, =gUnknown_03007890 + ldr r0, =gRfuLinkStatus ldr r1, [r0] movs r0, 0xFF strb r0, [r1] @@ -1874,21 +1871,21 @@ rfu_REQBN_watchLink: @ 82E4C80 ldrb r0, [r2, 0xC] ldr r2, [sp, 0x4] strb r0, [r2] - ldr r5, =gUnknown_03007890 + ldr r5, =gRfuLinkStatus ldr r0, [r5] ldrb r0, [r0] cmp r0, 0xFF bne _082E4CBE b _082E504E _082E4CBE: - ldr r0, =gRfuState + ldr r0, =gSTWIStatus ldr r0, [r0] ldrb r0, [r0, 0x14] cmp r0, 0 bne _082E4CCA b _082E504E _082E4CCA: - ldr r3, =gUnknown_03007894 + ldr r3, =gRfuStatic ldr r2, [r3] ldrb r1, [r2] movs r4, 0x4 @@ -1912,7 +1909,7 @@ _082E4CEE: lsrs r0, 24 cmp r0, 0x29 bne _082E4D30 - ldr r0, =gUnknown_03007898 + ldr r0, =gRfuFixed ldr r0, [r0] adds r0, 0xDC ldr r1, [r0] @@ -1940,7 +1937,7 @@ _082E4D30: lsls r0, 1 cmp r6, r0 bne _082E4D80 - ldr r0, =gUnknown_03007898 + ldr r0, =gRfuFixed ldr r0, [r0] adds r0, 0xDC ldr r0, [r0] @@ -1963,7 +1960,7 @@ _082E4D56: ands r0, r1 cmp r0, 0 beq _082E4D76 - ldr r0, =gUnknown_03007890 + ldr r0, =gRfuLinkStatus ldr r0, [r0] adds r0, 0xA adds r0, r5 @@ -1983,7 +1980,7 @@ _082E4D80: bne _082E4D88 b _082E504E _082E4D88: - ldr r4, =gUnknown_03007898 + ldr r4, =gRfuFixed ldr r0, [r4] adds r0, 0xDC ldr r0, [r0] @@ -2005,7 +2002,7 @@ _082E4D88: ldr r0, [r0] adds r2, r0, 0x4 movs r5, 0 - ldr r3, =gUnknown_03007890 + ldr r3, =gRfuLinkStatus _082E4DBC: ldr r0, [r3] adds r0, 0xA @@ -2031,7 +2028,7 @@ _082E4DE8: ldr r0, [sp, 0xC] b _082E5050 _082E4DF4: - ldr r1, =gUnknown_03007894 + ldr r1, =gRfuStatic ldr r0, [r1] adds r0, 0xE adds r2, r0, r5 @@ -2041,7 +2038,7 @@ _082E4DF4: beq _082E4E1A subs r0, 0x4 strb r0, [r2] - ldr r0, =gUnknown_03007890 + ldr r0, =gRfuLinkStatus ldr r0, [r0] adds r0, 0xA adds r1, r0, r5 @@ -2065,7 +2062,7 @@ _082E4E2E: ldr r2, [sp, 0x8] cmp r2, 0x1 bne _082E4F10 - ldr r4, =gUnknown_03007890 + ldr r4, =gRfuLinkStatus ldr r1, [r4] ldrb r0, [r1, 0x2] ands r0, r6 @@ -2109,7 +2106,7 @@ _082E4E84: lsls r0, 16 cmp r0, 0 bne _082E4F10 - ldr r0, =gUnknown_03007898 + ldr r0, =gRfuFixed ldr r0, [r0] adds r0, 0xDC ldr r0, [r0] @@ -2128,7 +2125,7 @@ _082E4E84: .align 2, 0 .pool _082E4EB8: - ldr r2, =gUnknown_03007894 + ldr r2, =gRfuStatic ldr r1, [r2] adds r1, 0xA adds r1, r5 @@ -2173,7 +2170,7 @@ _082E4F04: _082E4F0E: strb r1, [r0] _082E4F10: - ldr r2, =gUnknown_03007890 + ldr r2, =gRfuLinkStatus mov r12, r2 ldr r1, [r2] ldrb r7, [r1] @@ -2215,7 +2212,7 @@ _082E4F10: ldrb r0, [r1, 0x1] adds r0, 0x1 strb r0, [r1, 0x1] - ldr r0, =gUnknown_03007894 + ldr r0, =gRfuStatic ldr r0, [r0] adds r0, 0xA adds r0, r5 @@ -2235,7 +2232,7 @@ _082E4F7E: bne _082E5002 bl STWI_send_SlotStatusREQ bl STWI_poll_CommandEnd - ldr r0, =gUnknown_03007898 + ldr r0, =gRfuFixed ldr r0, [r0] adds r0, 0xDC ldr r2, [r0] @@ -2250,7 +2247,7 @@ _082E4F7E: ldrb r0, [r2, 0x2] cmp r0, r5 bne _082E4FD0 - ldr r0, =gUnknown_03007894 + ldr r0, =gRfuStatic ldr r0, [r0] lsls r1, r5, 1 adds r0, 0x12 @@ -2276,7 +2273,7 @@ _082E4FD0: ldrb r0, [r2, 0x2] cmp r0, r5 bne _082E4FD0 - ldr r0, =gUnknown_03007894 + ldr r0, =gRfuStatic ldr r0, [r0] lsls r1, r5, 1 adds r0, 0x12 @@ -2293,7 +2290,7 @@ _082E4FFE: lsrs r0, 24 mov r9, r0 _082E5002: - ldr r0, =gUnknown_03007890 + ldr r0, =gRfuLinkStatus ldr r0, [r0] ldrb r1, [r0, 0x2] mov r2, r8 @@ -2320,7 +2317,7 @@ _082E5028: bl STWI_send_DisconnectREQ bl STWI_poll_CommandEnd _082E5038: - ldr r1, =gUnknown_03007898 + ldr r1, =gRfuFixed ldr r0, [r1] adds r0, 0xDC ldr r0, [r0] @@ -2361,13 +2358,13 @@ rfu_STC_removeLinkData: @ 82E506C lsls r0, 17 lsls r0, r7 lsrs r6, r0, 24 - ldr r0, =gUnknown_03007894 + ldr r0, =gRfuStatic ldr r0, [r0] adds r0, 0xE adds r0, r7 movs r1, 0 strb r1, [r0] - ldr r1, =gUnknown_03007890 + ldr r1, =gRfuLinkStatus ldr r4, [r1] ldrb r0, [r4, 0x2] ands r0, r6 @@ -2447,7 +2444,7 @@ rfu_REQ_disconnect: @ 82E512C push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 - ldr r2, =gUnknown_03007890 + ldr r2, =gRfuLinkStatus ldr r1, [r2] ldrb r0, [r1, 0x2] ldrb r1, [r1, 0x3] @@ -2455,7 +2452,7 @@ rfu_REQ_disconnect: @ 82E512C ands r0, r4 cmp r0, 0 beq _082E51B0 - ldr r0, =gUnknown_03007894 + ldr r0, =gRfuStatic ldr r1, [r0] strb r4, [r1, 0x5] ldr r2, [r2] @@ -2519,7 +2516,7 @@ rfu_CB_disconnect: @ 82E51BC lsrs r5, r1, 16 cmp r5, 0x3 bne _082E51F8 - ldr r0, =gUnknown_03007890 + ldr r0, =gRfuLinkStatus ldr r0, [r0] ldrb r0, [r0] cmp r0, 0 @@ -2531,7 +2528,7 @@ rfu_CB_disconnect: @ 82E51BC lsls r0, 16 cmp r0, 0 bne _082E51F8 - ldr r0, =gUnknown_03007898 + ldr r0, =gRfuFixed ldr r0, [r0] adds r0, 0xDC ldr r0, [r0] @@ -2540,9 +2537,9 @@ rfu_CB_disconnect: @ 82E51BC bne _082E51F8 movs r5, 0 _082E51F8: - ldr r3, =gUnknown_03007894 + ldr r3, =gRfuStatic ldr r2, [r3] - ldr r0, =gUnknown_03007890 + ldr r0, =gRfuLinkStatus ldr r1, [r0] ldrb r0, [r1, 0x2] ldrb r1, [r1, 0x3] @@ -2550,7 +2547,7 @@ _082E51F8: ldrb r1, [r2, 0x5] ands r0, r1 strb r0, [r2, 0x5] - ldr r0, =gUnknown_03007898 + ldr r0, =gRfuFixed ldr r0, [r0] adds r0, 0xDC ldr r1, [r0] @@ -2565,7 +2562,7 @@ _082E5220: lsls r0, 17 lsls r0, r4 lsrs r0, 24 - ldr r1, =gUnknown_03007894 + ldr r1, =gRfuStatic ldr r1, [r1] ldrb r1, [r1, 0x5] ands r0, r1 @@ -2581,7 +2578,7 @@ _082E523C: cmp r4, 0x3 bls _082E5220 _082E5246: - ldr r0, =gUnknown_03007890 + ldr r0, =gRfuLinkStatus ldr r2, [r0] ldrb r1, [r2, 0x2] ldrb r0, [r2, 0x3] @@ -2594,7 +2591,7 @@ _082E5258: adds r0, r6, 0 adds r1, r5, 0 bl rfu_STC_REQ_callback - ldr r0, =gUnknown_03007894 + ldr r0, =gRfuStatic ldr r0, [r0] ldrb r0, [r0, 0x9] cmp r0, 0 @@ -2622,7 +2619,7 @@ rfu_REQ_CHILD_startConnectRecovery: @ 82E529C push {r4,r5,lr} lsls r0, 24 lsrs r5, r0, 24 - ldr r0, =gUnknown_03007894 + ldr r0, =gRfuStatic ldr r0, [r0] strb r5, [r0, 0x5] movs r4, 0 @@ -2646,7 +2643,7 @@ _082E52B6: _082E52CA: adds r0, r2, 0 bl STWI_set_Callback_M - ldr r0, =gUnknown_03007890 + ldr r0, =gRfuLinkStatus ldr r1, [r0] lsls r0, r4, 5 adds r0, r1, r0 @@ -2686,20 +2683,20 @@ rfu_CB_CHILD_pollConnectRecovery: @ 82E530C lsrs r7, r1, 16 cmp r7, 0 bne _082E5390 - ldr r0, =gUnknown_03007898 + ldr r0, =gRfuFixed ldr r0, [r0] adds r0, 0xDC ldr r0, [r0] ldrb r0, [r0, 0x4] cmp r0, 0 bne _082E5390 - ldr r0, =gUnknown_03007894 + ldr r0, =gRfuStatic ldr r1, [r0] ldrb r1, [r1, 0x5] adds r6, r0, 0 cmp r1, 0 beq _082E5390 - ldr r1, =gUnknown_03007890 + ldr r1, =gRfuLinkStatus ldr r0, [r1] strb r7, [r0] movs r4, 0 @@ -2763,7 +2760,7 @@ rfu_CHILD_getConnectRecoveryStatus: @ 82E53B0 adds r2, r0, 0 movs r0, 0xFF strb r0, [r2] - ldr r0, =gUnknown_03007898 + ldr r0, =gRfuFixed ldr r0, [r0] adds r0, 0xDC ldr r1, [r0] @@ -2863,7 +2860,7 @@ rfu_getMasterSlave: @ 82E5450 lsrs r2, r0, 24 cmp r2, 0x1 bne _082E547E - ldr r0, =gRfuState + ldr r0, =gSTWIStatus ldr r1, [r0] adds r0, r1, 0 adds r0, 0x2C @@ -2906,7 +2903,7 @@ rfu_clearAllSlot: @ 82E5488 _082E54A4: mov r0, sp strh r7, [r0] - ldr r0, =gUnknown_03007880 + ldr r0, =gRfuSlotStatusNI lsls r4, r5, 2 adds r0, r4, r0 ldr r1, [r0] @@ -2914,13 +2911,13 @@ _082E54A4: ldr r2, =0x01000034 bl CpuSet strh r7, [r6] - ldr r0, =gUnknown_03007870 + ldr r0, =gRfuSlotStatusUNI adds r4, r0 ldr r1, [r4] adds r0, r6, 0 ldr r2, =0x0100000a bl CpuSet - ldr r3, =gUnknown_03007890 + ldr r3, =gRfuLinkStatus ldr r0, [r3] adds r0, 0x10 adds r0, r5 @@ -2941,7 +2938,7 @@ _082E54A4: strb r1, [r0, 0x5] ldr r0, [r3] strb r1, [r0, 0x6] - ldr r0, =gUnknown_03007894 + ldr r0, =gRfuStatic ldr r0, [r0] strb r1, [r0, 0x2] ldr r0, =0x04000208 @@ -2966,14 +2963,14 @@ rfu_STC_releaseFrame: @ 82E5528 adds r5, r2, 0 lsls r1, 24 lsrs r3, r1, 24 - ldr r0, =gUnknown_03007894 + ldr r0, =gRfuStatic ldr r0, [r0] ldrb r1, [r0] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _082E5568 - ldr r6, =gUnknown_03007890 + ldr r6, =gRfuLinkStatus cmp r3, 0 bne _082E5554 ldr r1, [r6] @@ -2990,7 +2987,7 @@ _082E5554: .align 2, 0 .pool _082E5568: - ldr r6, =gUnknown_03007890 + ldr r6, =gRfuLinkStatus cmp r3, 0 bne _082E557C ldr r1, [r6] @@ -3054,7 +3051,7 @@ _082E55C4: cmp r0, 0 beq _082E568C movs r3, 0 - ldr r1, =gUnknown_03007880 + ldr r1, =gRfuSlotStatusNI lsls r0, r7, 2 adds r0, r1 mov r9, r0 @@ -3069,7 +3066,7 @@ _082E55E2: beq _082E5634 mov r2, r9 ldr r4, [r2] - ldr r0, =gUnknown_03007890 + ldr r0, =gRfuLinkStatus ldr r2, [r0] adds r0, r4, 0 adds r0, 0x2C @@ -3090,7 +3087,7 @@ _082E5614: ldr r0, [r2] adds r4, r0, 0 adds r4, 0x34 - ldr r0, =gUnknown_03007890 + ldr r0, =gRfuLinkStatus ldr r2, [r0] movs r1, 0x1 lsls r1, r7 @@ -3150,7 +3147,7 @@ _082E568C: ands r0, r4 cmp r0, 0 beq _082E5702 - ldr r1, =gUnknown_03007870 + ldr r1, =gRfuSlotStatusUNI lsls r0, r7, 2 adds r0, r1 ldr r3, [r0] @@ -3160,14 +3157,14 @@ _082E568C: ands r0, r1 cmp r0, 0 beq _082E56F4 - ldr r0, =gUnknown_03007894 + ldr r0, =gRfuStatic ldr r0, [r0] ldrb r1, [r0] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _082E56D8 - ldr r2, =gUnknown_03007890 + ldr r2, =gRfuLinkStatus ldr r1, [r2] ldrb r0, [r1, 0xF] adds r0, 0x3 @@ -3178,7 +3175,7 @@ _082E568C: .align 2, 0 .pool _082E56D8: - ldr r2, =gUnknown_03007890 + ldr r2, =gRfuLinkStatus ldr r1, [r2] adds r1, 0x10 adds r1, r7 @@ -3209,7 +3206,7 @@ _082E5702: mov r1, sp movs r0, 0 strh r0, [r1] - ldr r1, =gUnknown_03007870 + ldr r1, =gRfuSlotStatusUNI lsls r0, r7, 2 adds r0, r1 ldr r1, [r0] @@ -3256,7 +3253,7 @@ _082E576C: ands r0, r3 cmp r0, 0 beq _082E5788 - ldr r0, =gUnknown_03007880 + ldr r0, =gRfuSlotStatusNI lsls r1, 2 adds r1, r0 ldr r0, [r1] @@ -3274,7 +3271,7 @@ _082E5788: lsls r0, 3 b _082E57A4 _082E5796: - ldr r0, =gUnknown_03007870 + ldr r0, =gRfuSlotStatusUNI lsls r1, r4, 2 adds r1, r0 ldr r0, [r1] @@ -3324,7 +3321,7 @@ rfu_UNI_setSendData: @ 82E57DC lsrs r1, r0, 24 lsls r2, 24 lsrs r2, 24 - ldr r0, =gUnknown_03007890 + ldr r0, =gRfuLinkStatus ldr r0, [r0] ldrb r0, [r0] cmp r0, 0x1 @@ -3362,7 +3359,7 @@ rfu_NI_CHILD_setSendGameName: @ 82E5818 lsls r1, 17 lsls r1, r0 lsrs r1, 24 - ldr r0, =gUnknown_03007890 + ldr r0, =gRfuLinkStatus ldr r3, [r0] adds r3, 0x98 movs r0, 0x1A @@ -3394,7 +3391,7 @@ rfu_STC_setSendData_org: @ 82E584C lsls r2, 24 lsrs r2, 24 mov r8, r2 - ldr r0, =gUnknown_03007890 + ldr r0, =gRfuLinkStatus ldr r2, [r0] ldrb r1, [r2] mov r10, r0 @@ -3444,7 +3441,7 @@ _082E58C0: movs r2, 0 movs r0, 0x1 ands r0, r3 - ldr r4, =gUnknown_089A3220 + ldr r4, =llsf_struct cmp r0, 0 bne _082E58E2 movs r1, 0x1 @@ -3509,7 +3506,7 @@ _082E591E: cmp r6, 0x40 bne _082E59F4 _082E5938: - ldr r1, =gUnknown_03007880 + ldr r1, =gRfuSlotStatusNI lsls r0, r2, 2 adds r0, r1 ldr r0, [r0] @@ -3568,7 +3565,7 @@ _082E5998: bls _082E5998 movs r2, 0 movs r5, 0x1 - ldr r4, =gUnknown_03007880 + ldr r4, =gRfuSlotStatusNI movs r1, 0 _082E59B2: adds r0, r3, 0 @@ -3608,7 +3605,7 @@ _082E59F4: ands r0, r6 cmp r0, 0 beq _082E5A2C - ldr r1, =gUnknown_03007870 + ldr r1, =gRfuSlotStatusUNI lsls r0, r2, 2 adds r0, r1 ldr r1, [r0] @@ -3674,7 +3671,7 @@ rfu_changeSendTarget: @ 82E5A54 _082E5A78: cmp r0, 0x20 bne _082E5B18 - ldr r0, =gUnknown_03007880 + ldr r0, =gRfuSlotStatusNI mov r12, r0 lsls r0, r7, 2 add r0, r12 @@ -3725,7 +3722,7 @@ _082E5AD2: lsrs r2, r0, 24 cmp r2, 0x3 bls _082E5ABE - ldr r0, =gUnknown_03007890 + ldr r0, =gRfuLinkStatus ldr r1, [r0] ldrb r0, [r1, 0x4] ldr r2, [sp] @@ -3751,7 +3748,7 @@ _082E5AFE: _082E5B18: cmp r3, 0x10 bne _082E5BA4 - ldr r3, =gUnknown_03007870 + ldr r3, =gRfuSlotStatusUNI lsls r1, r7, 2 adds r0, r1, r3 ldr r0, [r0] @@ -3797,7 +3794,7 @@ _082E5B70: ldrh r0, [r3] mov r8, r0 strh r2, [r3] - ldr r4, =gUnknown_03007890 + ldr r4, =gRfuLinkStatus ldr r2, [r4] adds r5, r1, r5 ldr r0, [r5] @@ -3845,7 +3842,7 @@ rfu_NI_stopReceivingData: @ 82E5BBC lsls r0, 3 b _082E5C26 _082E5BCC: - ldr r1, =gUnknown_03007880 + ldr r1, =gRfuSlotStatusNI lsls r0, r3, 2 adds r0, r1 ldr r2, [r0] @@ -3873,7 +3870,7 @@ _082E5C04: movs r0, 0x47 _082E5C06: strh r0, [r2, 0x34] - ldr r0, =gUnknown_03007890 + ldr r0, =gRfuLinkStatus ldr r2, [r0] movs r1, 0x1 lsls r1, r3 @@ -3911,7 +3908,7 @@ rfu_UNI_changeAndReadySendData: @ 82E5C34 lsls r0, 3 b _082E5CC0 _082E5C4C: - ldr r1, =gUnknown_03007870 + ldr r1, =gRfuSlotStatusUNI lsls r0, 2 adds r0, r1 ldr r4, [r0] @@ -3924,7 +3921,7 @@ _082E5C4C: .align 2, 0 .pool _082E5C6C: - ldr r0, =gUnknown_03007890 + ldr r0, =gRfuLinkStatus ldr r1, [r0] ldrb r0, [r1] cmp r0, 0x1 @@ -3981,7 +3978,7 @@ rfu_UNI_readySendData: @ 82E5CC8 lsrs r0, 24 cmp r0, 0x3 bhi _082E5CE6 - ldr r1, =gUnknown_03007870 + ldr r1, =gRfuSlotStatusUNI lsls r0, 2 adds r0, r1 ldr r2, [r0] @@ -4005,7 +4002,7 @@ rfu_UNI_clearRecvNewDataFlag: @ 82E5CF4 lsrs r0, 24 cmp r0, 0x3 bhi _082E5D0A - ldr r1, =gUnknown_03007870 + ldr r1, =gRfuSlotStatusUNI lsls r0, 2 adds r0, r1 ldr r1, [r0] @@ -4023,7 +4020,7 @@ rfu_REQ_sendData: @ 82E5D14 push {r4,r5,lr} lsls r0, 24 lsrs r5, r0, 24 - ldr r0, =gUnknown_03007890 + ldr r0, =gRfuLinkStatus ldr r2, [r0] ldrb r1, [r2] adds r4, r0, 0 @@ -4041,7 +4038,7 @@ _082E5D28: orrs r3, r0 cmp r3, 0 bne _082E5DB8 - ldr r0, =gUnknown_03007894 + ldr r0, =gRfuStatic ldr r2, [r0] ldrb r1, [r2, 0x3] adds r4, r0, 0 @@ -4076,7 +4073,7 @@ _082E5D6E: cmp r0, 0 bne _082E5E12 _082E5D80: - ldr r4, =gUnknown_03007898 + ldr r4, =gRfuFixed ldr r1, [r4] movs r0, 0x1 str r0, [r1, 0x68] @@ -4114,10 +4111,10 @@ _082E5DC4: bl STWI_set_Callback_M cmp r5, 0 beq _082E5DFC - ldr r0, =gUnknown_03007898 + ldr r0, =gRfuFixed ldr r0, [r0] adds r0, 0x68 - ldr r1, =gUnknown_03007894 + ldr r1, =gRfuStatic ldr r1, [r1] ldr r1, [r1, 0x24] adds r1, 0x4 @@ -4128,10 +4125,10 @@ _082E5DC4: .align 2, 0 .pool _082E5DFC: - ldr r0, =gUnknown_03007898 + ldr r0, =gRfuFixed ldr r0, [r0] adds r0, 0x68 - ldr r1, =gUnknown_03007894 + ldr r1, =gRfuStatic ldr r1, [r1] ldr r1, [r1, 0x24] adds r1, 0x4 @@ -4141,12 +4138,12 @@ _082E5DFC: _082E5E12: cmp r5, 0 beq _082E5E4E - ldr r0, =gUnknown_03007890 + ldr r0, =gRfuLinkStatus ldr r0, [r0] ldrb r0, [r0] cmp r0, 0x1 bne _082E5E44 - ldr r0, =gRfuState + ldr r0, =gSTWIStatus ldr r0, [r0] ldr r1, [r0, 0x1C] cmp r1, 0 @@ -4181,7 +4178,7 @@ rfu_CB_sendData: @ 82E5E58 ldr r0, =0x00008020 mov r8, r0 _082E5E6C: - ldr r0, =gUnknown_03007870 + ldr r0, =gRfuSlotStatusUNI lsls r2, r6, 2 adds r0, r2, r0 ldr r1, [r0] @@ -4191,7 +4188,7 @@ _082E5E6C: movs r0, 0 strb r0, [r1, 0x2] _082E5E7E: - ldr r0, =gUnknown_03007880 + ldr r0, =gRfuSlotStatusNI adds r0, r2, r0 ldr r4, [r0] ldrh r0, [r4] @@ -4201,7 +4198,7 @@ _082E5E7E: movs r1, 0 adds r2, r4, 0 bl rfu_STC_releaseFrame - ldr r5, =gUnknown_03007890 + ldr r5, =gRfuLinkStatus ldr r2, [r5] ldrb r1, [r4, 0x1A] ldrb r0, [r2, 0x4] @@ -4227,7 +4224,7 @@ _082E5EB8: cmp r6, 0x3 bls _082E5E6C _082E5EC2: - ldr r0, =gUnknown_03007890 + ldr r0, =gRfuLinkStatus ldr r1, [r0] ldrb r0, [r1, 0xE] movs r0, 0 @@ -4286,7 +4283,7 @@ rfu_constructSendLLFrame: @ 82E5F28 mov r5, r8 push {r5-r7} sub sp, 0x4 - ldr r0, =gUnknown_03007890 + ldr r0, =gRfuLinkStatus ldr r2, [r0] ldrb r0, [r2] cmp r0, 0xFF @@ -4304,7 +4301,7 @@ _082E5F40: movs r0, 0 strb r0, [r2, 0xE] mov r8, r0 - ldr r0, =gUnknown_03007898 + ldr r0, =gRfuFixed ldr r0, [r0] adds r0, 0x6C str r0, [sp] @@ -4316,7 +4313,7 @@ _082E5F40: mov r10, r1 _082E5F6A: movs r5, 0 - ldr r0, =gUnknown_03007880 + ldr r0, =gRfuSlotStatusNI lsls r7, r6, 2 adds r4, r7, r0 ldr r2, [r4] @@ -4345,7 +4342,7 @@ _082E5F8A: lsrs r0, 16 adds r5, r0 _082E5FA6: - ldr r0, =gUnknown_03007870 + ldr r0, =gRfuSlotStatusUNI adds r0, r7, r0 ldr r0, [r0] ldrh r0, [r0] @@ -4360,7 +4357,7 @@ _082E5FA6: _082E5FC0: cmp r5, 0 beq _082E5FF4 - ldr r0, =gUnknown_03007890 + ldr r0, =gRfuLinkStatus ldr r0, [r0] ldrb r0, [r0] cmp r0, 0x1 @@ -4382,15 +4379,15 @@ _082E5FF4: lsrs r6, r0, 24 cmp r6, 0x3 bls _082E5F6A - ldr r6, =gUnknown_03007894 + ldr r6, =gRfuStatic mov r0, r8 cmp r0, 0 beq _082E603E ldr r2, [sp] movs r0, 0x3 ands r0, r2 - ldr r5, =gUnknown_03007890 - ldr r1, =gUnknown_03007898 + ldr r5, =gRfuLinkStatus + ldr r1, =gRfuFixed cmp r0, 0 beq _082E6026 movs r4, 0 @@ -4446,11 +4443,11 @@ rfu_STC_NI_constructLLSF: @ 82E6060 lsls r0, 24 lsrs r0, 24 mov r10, r0 - ldr r2, =gUnknown_03007890 + ldr r2, =gRfuLinkStatus ldr r0, [r2] ldrb r0, [r0] lsls r0, 4 - ldr r1, =gUnknown_089A3220 + ldr r1, =llsf_struct adds r0, r1 mov r8, r0 ldrh r1, [r4] @@ -4570,7 +4567,7 @@ _082E6130: orrs r3, r0 orrs r3, r5 str r3, [sp] - ldr r2, =gUnknown_03007890 + ldr r2, =gRfuLinkStatus ldr r0, [r2] ldrb r0, [r0] cmp r0, 0x1 @@ -4611,7 +4608,7 @@ _082E61A2: adds r0, r1 ldr r0, [r0] str r0, [sp, 0x4] - ldr r0, =gUnknown_03007898 + ldr r0, =gRfuFixed ldr r1, [r0] add r0, sp, 0x4 ldr r3, [r1, 0x4] @@ -4633,7 +4630,7 @@ _082E61C2: movs r0, 0 strb r0, [r6] _082E61DC: - ldr r0, =gUnknown_03007890 + ldr r0, =gRfuLinkStatus ldr r2, [r0] ldrb r1, [r2] cmp r1, 0x1 @@ -4677,7 +4674,7 @@ rfu_STC_UNI_constructLLSF: @ 82E6220 lsls r0, 24 lsrs r0, 24 mov r8, r0 - ldr r1, =gUnknown_03007870 + ldr r1, =gRfuSlotStatusUNI lsls r0, 2 adds r0, r1 ldr r4, [r0] @@ -4693,11 +4690,11 @@ _082E6244: .align 2, 0 .pool _082E624C: - ldr r0, =gUnknown_03007890 + ldr r0, =gRfuLinkStatus ldr r2, [r0] ldrb r0, [r2] lsls r0, 4 - ldr r1, =gUnknown_089A3220 + ldr r1, =llsf_struct adds r5, r0, r1 ldrh r0, [r4] movs r1, 0xF @@ -4717,7 +4714,7 @@ _082E624C: _082E6276: mov r2, sp movs r3, 0 - ldr r1, =gUnknown_03007898 + ldr r1, =gRfuFixed mov r12, r1 add r7, sp, 0x4 ldrb r0, [r5] @@ -4746,7 +4743,7 @@ _082E629E: adds r0, r7, 0 adds r1, r6, 0 bl _call_via_r3 - ldr r0, =gUnknown_03007890 + ldr r0, =gRfuLinkStatus ldr r2, [r0] ldrb r0, [r2] cmp r0, 0x1 @@ -4782,12 +4779,12 @@ _082E62E8: thumb_func_start rfu_REQ_recvData rfu_REQ_recvData: @ 82E62F4 push {r4,lr} - ldr r0, =gUnknown_03007890 + ldr r0, =gRfuLinkStatus ldr r4, [r0] ldrb r0, [r4] cmp r0, 0xFF beq _082E6320 - ldr r2, =gUnknown_03007894 + ldr r2, =gRfuStatic ldr r3, [r2] ldrb r0, [r4, 0x4] ldrb r1, [r4, 0x5] @@ -4823,17 +4820,17 @@ rfu_CB_recvData: @ 82E6334 lsrs r7, r1, 16 cmp r7, 0 bne _082E63F8 - ldr r0, =gUnknown_03007898 + ldr r0, =gRfuFixed ldr r0, [r0] adds r0, 0xDC ldr r0, [r0] ldrb r0, [r0, 0x1] cmp r0, 0 beq _082E63F8 - ldr r0, =gUnknown_03007894 + ldr r0, =gRfuStatic ldr r0, [r0] strb r7, [r0, 0x1] - ldr r0, =gUnknown_03007890 + ldr r0, =gRfuLinkStatus ldr r0, [r0] ldrb r0, [r0] cmp r0, 0x1 @@ -4848,16 +4845,16 @@ _082E6380: movs r6, 0 ldr r0, =0x00008043 mov r8, r0 - ldr r3, =gUnknown_03007890 + ldr r3, =gRfuLinkStatus _082E6388: - ldr r0, =gUnknown_03007880 + ldr r0, =gRfuSlotStatusNI lsls r1, r6, 2 adds r1, r0 ldr r4, [r1] ldrh r0, [r4, 0x34] cmp r0, r8 bne _082E63DA - ldr r0, =gUnknown_03007894 + ldr r0, =gRfuStatic ldr r0, [r0] ldrb r0, [r0, 0x1] asrs r0, r6 @@ -4897,7 +4894,7 @@ _082E63DA: lsrs r6, r0, 24 cmp r6, 0x3 bls _082E6388 - ldr r0, =gUnknown_03007894 + ldr r0, =gRfuStatic ldr r1, [r0] ldrb r0, [r1, 0x4] cmp r0, 0 @@ -4926,7 +4923,7 @@ _082E63F8: rfu_STC_PARENT_analyzeRecvPacket: @ 82E6420 push {r4-r7,lr} sub sp, 0x4 - ldr r1, =gUnknown_03007898 + ldr r1, =gRfuFixed ldr r0, [r1] adds r0, 0xDC ldr r0, [r0] @@ -4935,7 +4932,7 @@ rfu_STC_PARENT_analyzeRecvPacket: @ 82E6420 movs r5, 0 mov r12, r1 movs r7, 0x1F - ldr r4, =gUnknown_03007894 + ldr r4, =gRfuStatic movs r6, 0x1 _082E643A: mov r0, sp @@ -5007,7 +5004,7 @@ _082E64A0: thumb_func_start rfu_STC_CHILD_analyzeRecvPacket rfu_STC_CHILD_analyzeRecvPacket: @ 82E64B8 push {r4-r6,lr} - ldr r0, =gUnknown_03007898 + ldr r0, =gRfuFixed ldr r0, [r0] adds r0, 0xDC ldr r1, [r0] @@ -5018,7 +5015,7 @@ rfu_STC_CHILD_analyzeRecvPacket: @ 82E64B8 adds r5, 0x8 cmp r4, 0 bne _082E64D8 - ldr r0, =gUnknown_03007894 + ldr r0, =gRfuStatic ldr r1, [r0] movs r0, 0xF strb r0, [r1, 0x1] @@ -5065,14 +5062,14 @@ rfu_STC_analyzeLLSF: @ 82E6510 mov r12, r0 lsls r2, 16 lsrs r3, r2, 16 - ldr r2, =gUnknown_03007890 + ldr r2, =gRfuLinkStatus ldr r0, [r2] ldrb r0, [r0] mvns r0, r0 movs r1, 0x1 ands r0, r1 lsls r0, 4 - ldr r1, =gUnknown_089A3220 + ldr r1, =llsf_struct adds r6, r0, r1 ldrb r0, [r6] cmp r3, r0 @@ -5188,7 +5185,7 @@ _082E6574: beq _082E661A b _082E673C _082E661A: - ldr r2, =gUnknown_03007890 + ldr r2, =gRfuLinkStatus ldr r3, [r2] ldrb r2, [r3] cmp r2, 0x1 @@ -5226,7 +5223,7 @@ _082E6664: b _082E673C _082E6678: movs r4, 0 - ldr r1, =gUnknown_03007880 + ldr r1, =gRfuSlotStatusNI ldr r0, [r1] ldrb r0, [r0, 0x1A] mov r5, r12 @@ -5254,7 +5251,7 @@ _082E6694: ands r0, r2 cmp r0, 0 beq _082E6694 - ldr r3, =gUnknown_03007890 + ldr r3, =gRfuLinkStatus ldr r0, [r3] ldrb r0, [r0, 0x4] mov r5, r12 @@ -5307,7 +5304,7 @@ _082E6706: bl rfu_STC_NI_receive_Receiver b _082E6732 _082E6718: - ldr r0, =gUnknown_03007890 + ldr r0, =gRfuLinkStatus ldr r0, [r0] ldrb r0, [r0, 0x4] asrs r0, r4 @@ -5348,7 +5345,7 @@ rfu_STC_UNI_receive: @ 82E6754 str r2, [sp] lsls r0, 24 lsrs r7, r0, 24 - ldr r2, =gUnknown_03007870 + ldr r2, =gRfuSlotStatusUNI lsls r1, r7, 2 adds r1, r2 ldr r3, [r1] @@ -5401,7 +5398,7 @@ _082E67B4: ldr r0, [r0] ldr r0, [r0, 0x14] str r0, [sp, 0x4] - ldr r0, =gUnknown_03007898 + ldr r0, =gRfuFixed ldr r0, [r0] add r1, sp, 0x4 ldr r3, [r0, 0x4] @@ -5414,7 +5411,7 @@ _082E67DE: ldrh r0, [r5, 0x2] cmp r0, 0 beq _082E67F2 - ldr r0, =gUnknown_03007894 + ldr r0, =gRfuStatic ldr r2, [r0] movs r0, 0x10 lsls r0, r7 @@ -5443,7 +5440,7 @@ rfu_STC_NI_receive_Sender: @ 82E6808 lsls r1, 24 lsrs r1, 24 mov r10, r1 - ldr r1, =gUnknown_03007880 + ldr r1, =gRfuSlotStatusNI lsrs r0, 22 adds r0, r1 ldr r0, [r0] @@ -5645,7 +5642,7 @@ _082E69A8: ldrh r2, [r4] movs r0, 0 strh r0, [r4] - ldr r0, =gUnknown_03007894 + ldr r0, =gRfuStatic ldr r3, [r0] movs r0, 0x10 mov r7, r10 @@ -5655,7 +5652,7 @@ _082E69A8: movs r1, 0 strb r0, [r3, 0x2] lsls r0, r7, 2 - ldr r3, =gUnknown_03007880 + ldr r3, =gRfuSlotStatusNI adds r0, r3 ldr r0, [r0] strh r1, [r0, 0x2] @@ -5687,7 +5684,7 @@ rfu_STC_NI_receive_Receiver: @ 82E69F4 lsrs r0, 24 mov r8, r0 movs r7, 0 - ldr r1, =gUnknown_03007880 + ldr r1, =gRfuSlotStatusNI lsls r0, 2 adds r0, r1 ldr r4, [r0] @@ -5704,7 +5701,7 @@ rfu_STC_NI_receive_Receiver: @ 82E69F4 ldrb r0, [r6, 0x2] cmp r0, 0x3 bne _082E6A64 - ldr r0, =gUnknown_03007894 + ldr r0, =gRfuStatic ldr r2, [r0] movs r0, 0x1 mov r1, r8 @@ -5773,7 +5770,7 @@ _082E6AAE: ands r0, r1 cmp r2, r0 bne _082E6B04 - ldr r0, =gUnknown_03007898 + ldr r0, =gRfuFixed ldr r0, [r0] lsls r1, r3, 2 adds r1, 0x4 @@ -5831,7 +5828,7 @@ _082E6B2C: ldrh r2, [r3] movs r0, 0 strh r0, [r3] - ldr r0, =gUnknown_03007894 + ldr r0, =gRfuStatic ldr r4, [r0] movs r0, 0x1 mov r1, r8 @@ -5861,7 +5858,7 @@ rfu_STC_NI_initSlot_asRecvControllData: @ 82E6B70 adds r2, r1, 0 lsls r0, 24 lsrs r4, r0, 24 - ldr r0, =gUnknown_03007890 + ldr r0, =gRfuLinkStatus ldr r3, [r0] ldrb r1, [r3] mov r12, r0 @@ -5895,7 +5892,7 @@ _082E6B98: strh r0, [r2] ldr r0, =0x00000702 strh r0, [r2, 0x18] - ldr r0, =gUnknown_03007894 + ldr r0, =gRfuStatic ldr r2, [r0] ldrb r1, [r2, 0x4] adds r0, r6, 0 @@ -5943,7 +5940,7 @@ rfu_STC_NI_initSlot_asRecvDataEntity: @ 82E6C00 ldrb r0, [r0] cmp r0, 0x1 bne _082E6C24 - ldr r0, =gUnknown_03007890 + ldr r0, =gRfuLinkStatus lsls r1, r5, 5 adds r1, 0x14 ldr r0, [r0] @@ -5953,7 +5950,7 @@ rfu_STC_NI_initSlot_asRecvDataEntity: @ 82E6C00 .align 2, 0 .pool _082E6C24: - ldr r1, =gUnknown_03007880 + ldr r1, =gRfuSlotStatusNI lsls r0, r5, 2 adds r0, r1 ldr r2, [r0] @@ -5965,13 +5962,13 @@ _082E6C24: lsls r1, 17 lsls r1, r5 lsrs r1, 24 - ldr r0, =gUnknown_03007894 + ldr r0, =gRfuStatic ldr r3, [r0] ldrb r2, [r3, 0x4] adds r0, r1, 0 orrs r0, r2 strb r0, [r3, 0x4] - ldr r0, =gUnknown_03007890 + ldr r0, =gRfuLinkStatus ldr r2, [r0] ldrb r0, [r2, 0x5] bics r0, r1 @@ -6027,7 +6024,7 @@ _082E6CAC: thumb_func_start rfu_NI_checkCommFailCounter rfu_NI_checkCommFailCounter: @ 82E6CB8 push {r4-r7,lr} - ldr r2, =gUnknown_03007890 + ldr r2, =gRfuLinkStatus ldr r0, [r2] ldrb r1, [r0, 0x4] ldrb r0, [r0, 0x5] @@ -6039,14 +6036,14 @@ rfu_NI_checkCommFailCounter: @ 82E6CB8 mov r12, r0 movs r0, 0 strh r0, [r1] - ldr r1, =gUnknown_03007894 + ldr r1, =gRfuStatic ldr r0, [r1] ldrb r0, [r0, 0x2] lsrs r7, r0, 4 movs r3, 0 adds r6, r1, 0 adds r5, r2, 0 - ldr r4, =gUnknown_03007880 + ldr r4, =gRfuSlotStatusNI _082E6CE2: movs r0, 0x80 lsls r0, 17 @@ -6118,8 +6115,8 @@ rfu_REQ_noise: @ 82E6D54 .pool thumb_func_end rfu_REQ_noise - thumb_func_start sub_82E6D6C -sub_82E6D6C: @ 82E6D6C + thumb_func_start AgbRFU_checkID +AgbRFU_checkID: @ 82E6D6C push {r4-r7,lr} mov r7, r8 push {r7} @@ -6138,13 +6135,13 @@ _082E6D88: ldr r0, =0x04000200 ldrh r0, [r0] mov r8, r0 - ldr r4, =gRfuState + ldr r4, =gSTWIStatus ldr r1, [r4] movs r0, 0xA str r0, [r1] - ldr r0, =sub_82E6F88 + ldr r0, =Sio32IDIntr bl STWI_set_Callback_ID - bl sub_82E6E20 + bl Sio32IDInit ldr r0, [r4] ldrb r0, [r0, 0xA] lsls r0, 2 @@ -6173,7 +6170,7 @@ _082E6DD6: lsrs r5, r0, 24 cmp r5, 0xFF beq _082E6DEA - bl sub_82E6E94 + bl Sio32IDMain adds r6, r0, 0 cmp r6, 0 beq _082E6DC4 @@ -6186,7 +6183,7 @@ _082E6DEA: strh r2, [r0] movs r0, 0x1 strh r0, [r1] - ldr r0, =gRfuState + ldr r0, =gSTWIStatus ldr r1, [r0] movs r0, 0 str r0, [r1] @@ -6200,17 +6197,17 @@ _082E6E08: bx r1 .align 2, 0 .pool - thumb_func_end sub_82E6D6C + thumb_func_end AgbRFU_checkID - thumb_func_start sub_82E6E20 -sub_82E6E20: @ 82E6E20 + thumb_func_start Sio32IDInit +Sio32IDInit: @ 82E6E20 push {r4,r5,lr} sub sp, 0x4 ldr r3, =0x04000208 movs r4, 0 strh r4, [r3] ldr r2, =0x04000200 - ldr r0, =gRfuState + ldr r0, =gSTWIStatus ldr r0, [r0] movs r1, 0x8 ldrb r0, [r0, 0xA] @@ -6237,7 +6234,7 @@ sub_82E6E20: @ 82E6E20 strh r0, [r2] movs r0, 0 str r0, [sp] - ldr r1, =gUnknown_030078A0 + ldr r1, =gRfuSIO32Id ldr r2, =0x05000003 mov r0, sp bl CpuSet @@ -6249,12 +6246,12 @@ sub_82E6E20: @ 82E6E20 bx r0 .align 2, 0 .pool - thumb_func_end sub_82E6E20 + thumb_func_end Sio32IDInit - thumb_func_start sub_82E6E94 -sub_82E6E94: @ 82E6E94 + thumb_func_start Sio32IDMain +Sio32IDMain: @ 82E6E94 push {r4-r7,lr} - ldr r0, =gUnknown_030078A0 + ldr r0, =gRfuSIO32Id ldrb r1, [r0, 0x1] mov r12, r1 adds r7, r0, 0 @@ -6364,14 +6361,14 @@ _082E6F82: pop {r4-r7} pop {r1} bx r1 - thumb_func_end sub_82E6E94 + thumb_func_end Sio32IDMain - thumb_func_start sub_82E6F88 -sub_82E6F88: @ 82E6F88 + thumb_func_start Sio32IDIntr +Sio32IDIntr: @ 82E6F88 push {r4,r5,lr} ldr r0, =0x04000120 ldr r5, [r0] - ldr r0, =gUnknown_030078A0 + ldr r0, =gRfuSIO32Id ldrb r1, [r0] adds r4, r0, 0 cmp r1, 0x1 @@ -6381,7 +6378,7 @@ sub_82E6F88: @ 82E6F88 movs r2, 0x80 orrs r1, r2 strh r1, [r0] - thumb_func_end sub_82E6F88 + thumb_func_end Sio32IDIntr non_word_aligned_thumb_func_start sub_82E6FA2 sub_82E6FA2: @ 82E6FA2 @@ -6429,7 +6426,7 @@ _082E6FF6: cmp r0, 0x3 bhi _082E700C lsls r0, 1 - ldr r1, =gUnknown_089A3258 + ldr r1, =Sio32ConnectionData adds r0, r1 ldrh r0, [r0] b _082E700E diff --git a/asm/librfu_intr.s b/asm/librfu_intr.s index 7f375e419e..fe79ae17dc 100644 --- a/asm/librfu_intr.s +++ b/asm/librfu_intr.s @@ -18,7 +18,7 @@ IntrSIO32: @ 82E3554 cmp r0, 0 ldmdbeq r11, {r11,sp,lr} bxeq lr - bl sub_82E3EB0 + bl Callback_Dummy_ID ldmdb r11, {r11,sp,lr} bx lr _082E3590: @@ -33,7 +33,7 @@ _082E35A8: ldmdb r11, {r11,sp,lr} bx lr .align 2, 0 -_082E35B4: .4byte gRfuState +_082E35B4: .4byte gSTWIStatus arm_func_end IntrSIO32 arm_func_start sio32intr_clock_master @@ -204,10 +204,10 @@ _082E3800: beq _082E3840 ldrh r1, [r0, 0x12] ldrb r0, [r0, 0x6] - bl sub_82E3EA8 + bl Callback_Dummy_M b _082E3840 .align 2, 0 -_082E382C: .4byte gRfuState +_082E382C: .4byte gSTWIStatus _082E3830: add r3, r5, 0x3 strh r3, [r4] @@ -423,7 +423,7 @@ _082E3AD4: beq _082E3C4C mov r0, 0x1EC add r0, r0, 0x2 - bl sub_82E3EAC + bl Callback_Dummy_S b _082E3C4C _082E3B48: mov r3, 0x120 @@ -445,7 +445,7 @@ _082E3B48: ldrb r0, [r0, 0x6] mov r1, r2 orr r0, r0, r3, lsl 8 - bl sub_82E3EAC + bl Callback_Dummy_S b _082E3C4C _082E3B9C: mov r3, 0x208 @@ -472,7 +472,7 @@ _082E3BE4: bhi _082E3BE4 b _082E3C20 .align 2, 0 -_082E3BF4: .4byte gRfuState +_082E3BF4: .4byte gSTWIStatus _082E3BF8: .4byte 0x996601ee _082E3BFC: mov r2, 0xFF00 @@ -532,7 +532,7 @@ _082E3CA4: ldmdb r11, {r11,sp,lr} bx lr .align 2, 0 -_082E3CB8: .4byte gRfuState +_082E3CB8: .4byte gSTWIStatus arm_func_end handshake_wait arm_func_start STWI_set_timer_in_RAM @@ -588,7 +588,7 @@ _082E3D5C: mov r3, 0x3 b _082E3D8C .align 2, 0 -_082E3D74: .4byte gRfuState +_082E3D74: .4byte gSTWIStatus _082E3D78: mvn r3, 0x850 sub r3, r3, 0x2 @@ -637,7 +637,7 @@ STWI_stop_timer_in_RAM: @ 82E3DCC ldmdb r11, {r11,sp,lr} bx lr .align 2, 0 -_082E3E18: .4byte gRfuState +_082E3E18: .4byte gSTWIStatus arm_func_end STWI_stop_timer_in_RAM arm_func_start STWI_init_slave @@ -677,20 +677,20 @@ STWI_init_slave: @ 82E3E1C ldmdb r11, {r11,sp,lr} bx lr .align 2, 0 -_082E3EA4: .4byte gRfuState +_082E3EA4: .4byte gSTWIStatus arm_func_end STWI_init_slave - arm_func_start sub_82E3EA8 -sub_82E3EA8: @ 82E3EA8 + arm_func_start Callback_Dummy_M +Callback_Dummy_M: @ 82E3EA8 bx r2 - arm_func_end sub_82E3EA8 + arm_func_end Callback_Dummy_M - arm_func_start sub_82E3EAC -sub_82E3EAC: @ 82E3EAC + arm_func_start Callback_Dummy_S +Callback_Dummy_S: @ 82E3EAC bx r1 - arm_func_end sub_82E3EAC + arm_func_end Callback_Dummy_S - arm_func_start sub_82E3EB0 -sub_82E3EB0: @ 82E3EB0 + arm_func_start Callback_Dummy_ID +Callback_Dummy_ID: @ 82E3EB0 bx r0 - arm_func_end sub_82E3EB0 + arm_func_end Callback_Dummy_ID diff --git a/common_syms/librfu.txt b/common_syms/librfu.txt index e81d78795c..820c865bef 100644 --- a/common_syms/librfu.txt +++ b/common_syms/librfu.txt @@ -1,6 +1,6 @@ -gUnknown_03007870 -gUnknown_03007880 -gUnknown_03007890 -gUnknown_03007894 -gUnknown_03007898 -gUnknown_030078A0 +gRfuSlotStatusUNI +gRfuSlotStatusNI +gRfuLinkStatus +gRfuStatic +gRfuFixed +gRfuSIO32Id diff --git a/common_syms/librfu_stwi.txt b/common_syms/librfu_stwi.txt index 0e8468f4d1..a1f7735535 100644 --- a/common_syms/librfu_stwi.txt +++ b/common_syms/librfu_stwi.txt @@ -1 +1 @@ -gRfuState +gSTWIStatus diff --git a/data/librfu_rodata.s b/data/librfu_rodata.s index aa8f5170d3..679256541d 100644 --- a/data/librfu_rodata.s +++ b/data/librfu_rodata.s @@ -1,6 +1,6 @@ .section .rodata -gUnknown_089A3220:: @ 89A3220 +llsf_struct:: @ 89A3220 .byte 2, 14, 0, 10, 9, 5, 7, 2 .byte 0, 15, 1, 3, 3, 0, 31, 0 .byte 3, 22, 18, 14, 13, 9, 11, 3 @@ -9,9 +9,9 @@ gUnknown_089A3220:: @ 89A3220 .asciz "RFU_V1026" .align 2 -gUnknown_089A324C:: @ 89A324C +str_checkMbootLL:: @ 89A324C .asciz "RFU-MBOOT" .align 2 -gUnknown_089A3258:: @ 89A3258 +Sio32ConnectionData:: @ 89A3258 .asciz "NINTENDOSio32ID_030820" diff --git a/include/librfu.h b/include/librfu.h index 55b5d264cc..1806482e41 100644 --- a/include/librfu.h +++ b/include/librfu.h @@ -1,6 +1,7 @@ #ifndef GUARD_LIBRFU_H #define GUARD_LIBRFU_H +#include "global.h" #include "main.h" enum @@ -70,34 +71,7 @@ union RfuPacket struct RfuPacket8 rfuPacket8; }; -struct UnkLinkRfuStruct_02022B14Substruct -{ - u16 unk_00_0:4; - u16 unk_00_4:1; - u16 unk_00_5:1; - u16 unk_00_6:1; - u16 isChampion:1; - u16 hasNationalDex:1; - u16 gameClear:1; // never read, redundant with isChampion - u16 unk_01_2:4; // always 3? - u16 unk_01_6:2; - u8 playerTrainerId[2]; -}; - -struct __attribute__((packed, aligned(2))) UnkLinkRfuStruct_02022B14 -{ - struct UnkLinkRfuStruct_02022B14Substruct unk_00; - u8 unk_04[4]; - u16 species:10; - u16 type:6; - u8 unk_0a_0:7; - u8 unk_0a_7:1; - u8 playerGender:1; - u8 level:7; - u8 unk_0c; -}; - -struct RfuStruct +struct STWIStatus { vs32 unk_0; u8 txParams; @@ -133,7 +107,7 @@ struct RfuIntrStruct u8 block2[0x30]; }; -struct RfuUnk1 +struct RfuSlotStatusUNI { u16 unk_0; u8 unk_2; @@ -145,7 +119,7 @@ struct RfuUnk1 struct RfuIntrStruct unk_1c; }; -struct RfuUnk2 +struct RfuSlotStatusNI { u16 unk_0; u16 unk_2; @@ -164,7 +138,7 @@ struct RfuUnk2 u8 unk_70[0x70]; }; -struct RfuUnk3 +struct RfuFixed { u32 unk_0; u32 unk_4; @@ -172,17 +146,19 @@ struct RfuUnk3 u32 unk_dc; }; +#define RFU_GAME_NAME_LENGTH 13 // Possible length of game name set by rfu_REQB_configGameData +#define RFU_USER_NAME_LENGTH 8 + struct RfuUnk5Sub { u16 unk_00; u8 unk_02; u16 unk_04; - struct UnkLinkRfuStruct_02022B14 unk_06; - u8 fill_13[1]; - u8 playerName[PLAYER_NAME_LENGTH + 1]; + u8 gname[RFU_GAME_NAME_LENGTH + 2]; // Game name of parent candidate Game name of connection partner + u8 uname[RFU_USER_NAME_LENGTH + 1]; // User name for parent candidate User name for connection partner }; -struct RfuUnk5 +struct RfuLinkStatus { u8 unk_00; u8 unk_01; @@ -196,16 +172,16 @@ struct RfuUnk5 u8 filler_09[1]; u8 unk_0a[4]; u8 filler_0e[6]; - struct RfuUnk5Sub unk_14[4]; + struct RfuUnk5Sub unk_14[5]; }; -extern struct RfuStruct *gRfuState; +extern struct STWIStatus *gSTWIStatus; -extern struct RfuUnk5 *gUnknown_03007890; -extern u32 *gUnknown_03007894; -extern struct RfuUnk3* gUnknown_03007898; -extern struct RfuUnk2* gUnknown_03007880[4]; -extern struct RfuUnk1* gUnknown_03007870[4]; +extern struct RfuLinkStatus *gRfuLinkStatus; +extern u32 *gRfuStatic; +extern struct RfuFixed* gRfuFixed; +extern struct RfuSlotStatusNI* gRfuSlotStatusNI[4]; +extern struct RfuSlotStatusUNI* gRfuSlotStatusUNI[4]; extern void* sub_82E53F4; extern void rfu_STC_clearAPIVariables(void); @@ -221,7 +197,7 @@ void rfu_REQBN_watchLink(u16 a0, u8 *a1, u8 *a2, u8 *a3); bool16 rfu_syncVBlank(void); void rfu_REQ_reset(void); void rfu_REQ_configSystem(u16, u8, u8); -void rfu_REQ_configGameData(u8, u16, struct UnkLinkRfuStruct_02022B14 *, u8 *); +void rfu_REQ_configGameData(u8, u16, const u8 *gname, const u8 *uname); void rfu_REQ_startSearchChild(void); void rfu_REQ_pollSearchChild(void); void rfu_REQ_endSearchChild(void); diff --git a/include/link_rfu.h b/include/link_rfu.h index 533e515c5f..0c169dd263 100644 --- a/include/link_rfu.h +++ b/include/link_rfu.h @@ -6,6 +6,33 @@ // Exported type declarations +struct UnkLinkRfuStruct_02022B14Substruct +{ + u16 unk_00_0:4; + u16 unk_00_4:1; + u16 unk_00_5:1; + u16 unk_00_6:1; + u16 isChampion:1; + u16 hasNationalDex:1; + u16 gameClear:1; // never read, redundant with isChampion + u16 unk_01_2:4; // always 3? + u16 unk_01_6:2; + u8 playerTrainerId[2]; +}; + +struct __attribute__((packed, aligned(2))) UnkLinkRfuStruct_02022B14 +{ + struct UnkLinkRfuStruct_02022B14Substruct unk_00; + u8 unk_04[4]; + u16 species:10; + u16 type:6; + u8 unk_0a_0:7; + u8 unk_0a_7:1; + u8 playerGender:1; + u8 level:7; + u8 unk_0c; +}; + struct UnkLinkRfuStruct_02022B2C { u8 unk_00; diff --git a/include/union_room.h b/include/union_room.h index 54f09cbeb0..cc0415155e 100644 --- a/include/union_room.h +++ b/include/union_room.h @@ -1,7 +1,7 @@ #ifndef GUARD_UNION_ROOM_H #define GUARD_UNION_ROOM_H -#include "librfu.h" +#include "link_rfu.h" // Exported type declarations diff --git a/src/crt0.s b/src/crt0.s index 9ed6789684..3ab7117133 100644 --- a/src/crt0.s +++ b/src/crt0.s @@ -163,7 +163,7 @@ IntrMain: @ 8000248 IntrMain_FoundIntr: strh r0, [r3, OFFSET_REG_IF - 0x200] bic r2, r2, r0 - ldr r0, =gRfuState + ldr r0, =gSTWIStatus ldr r0, [r0] ldrb r0, [r0, 0xA] mov r1, 0x8 diff --git a/src/librfu.c b/src/librfu.c index cdf14b6936..b84ba7ae54 100644 --- a/src/librfu.c +++ b/src/librfu.c @@ -1,9 +1,9 @@ #include "global.h" #include "librfu.h" -struct RfuUnk1* gUnknown_03007870[4]; -struct RfuUnk2* gUnknown_03007880[4]; -struct RfuUnk5 *gUnknown_03007890; -u32 *gUnknown_03007894; -struct RfuUnk3* gUnknown_03007898; -u8 gUnknown_030078A0[12]; +struct RfuSlotStatusUNI* gRfuSlotStatusUNI[4]; +struct RfuSlotStatusNI* gRfuSlotStatusNI[4]; +struct RfuLinkStatus *gRfuLinkStatus; +u32 *gRfuStatic; +struct RfuFixed* gRfuFixed; +u8 gRfuSIO32Id[12]; diff --git a/src/librfu_rfu.c b/src/librfu_rfu.c index c5aa25c10d..7437bcecf6 100644 --- a/src/librfu_rfu.c +++ b/src/librfu_rfu.c @@ -36,33 +36,33 @@ if (unk1 < num) return 1; } - gUnknown_03007890 = unk0; - gUnknown_03007894 = unk0 + (0xB4 / sizeof(u32)); - gUnknown_03007898 = (struct RfuUnk3*)(unk0 + (0xDC / sizeof(u32))); - gUnknown_03007880[0] = (struct RfuUnk2*)(unk0 + (0x1BC / sizeof(u32))); - gUnknown_03007870[0] = (struct RfuUnk1*)(unk0 + (0x37C / sizeof(u32))); + gRfuLinkStatus = unk0; + gRfuStatic = unk0 + (0xB4 / sizeof(u32)); + gRfuFixed = (struct RfuFixed*)(unk0 + (0xDC / sizeof(u32))); + gRfuSlotStatusNI[0] = (struct RfuSlotStatusNI*)(unk0 + (0x1BC / sizeof(u32))); + gRfuSlotStatusUNI[0] = (struct RfuSlotStatusUNI*)(unk0 + (0x37C / sizeof(u32))); for (i = 1; i < 4; i++, num) { - gUnknown_03007880[i] = (struct RfuUnk2*)&gUnknown_03007880[i-1]->unk_70; - gUnknown_03007870[i] = (struct RfuUnk1*)&gUnknown_03007870[i-1]->unk_1c; + gRfuSlotStatusNI[i] = (struct RfuSlotStatusNI*)&gRfuSlotStatusNI[i-1]->unk_70; + gRfuSlotStatusUNI[i] = (struct RfuSlotStatusUNI*)&gRfuSlotStatusUNI[i-1]->unk_1c; } - gUnknown_03007898->unk_dc = (u32)&gUnknown_03007870[3]->unk_1c; - STWI_init_all(&gUnknown_03007870[3]->unk_1c, interrupt, copyInterruptToRam); + gRfuFixed->unk_dc = (u32)&gRfuSlotStatusUNI[3]->unk_1c; + STWI_init_all(&gRfuSlotStatusUNI[3]->unk_1c, interrupt, copyInterruptToRam); rfu_STC_clearAPIVariables(); for (i = 0; i < 4; i++) { - gUnknown_03007880[i]->unk_68 = 0; - gUnknown_03007880[i]->unk_6c = 0; - gUnknown_03007870[i]->unk_14 = 0; - gUnknown_03007870[i]->unk_18 = 0; + gRfuSlotStatusNI[i]->unk_68 = 0; + gRfuSlotStatusNI[i]->unk_6c = 0; + gRfuSlotStatusUNI[i]->unk_14 = 0; + gRfuSlotStatusUNI[i]->unk_18 = 0; } // Not matching, register differences v12 = (u16*)((u32)&sub_82E53F4 & ~1); - v13 = (u16*)gUnknown_03007898->unk_8; + v13 = (u16*)gRfuFixed->unk_8; for (i = 47; i != 0xFFFF; i--) { @@ -71,7 +71,7 @@ ++v13; } - gUnknown_03007898->unk_4 = (u32)(&gUnknown_03007898->unk_8[1]); + gRfuFixed->unk_4 = (u32)(&gRfuFixed->unk_8[1]); return 0; }*/ diff --git a/src/librfu_stwi.c b/src/librfu_stwi.c index 670692118e..45abaa70bc 100644 --- a/src/librfu_stwi.c +++ b/src/librfu_stwi.c @@ -1,7 +1,7 @@ #include "global.h" #include "librfu.h" -struct RfuStruct *gRfuState; +struct STWIStatus *gSTWIStatus; extern IntrFunc IntrSIO32(void); @@ -22,34 +22,34 @@ int STWI_reset_ClockCounter(void); void STWI_init_all(struct RfuIntrStruct *interruptStruct, IntrFunc *interrupt, bool8 copyInterruptToRam) { // If we're copying our interrupt into RAM, DMA it to block1 and use - // block2 for our RfuStruct, otherwise block1 holds the RfuStruct. + // block2 for our STWIStatus, otherwise block1 holds the STWIStatus. // interrupt usually is a pointer to gIntrTable[1] if (copyInterruptToRam == TRUE) { *interrupt = (IntrFunc)interruptStruct->block1; DmaCopy16(3, &IntrSIO32, interruptStruct->block1, 0x960); - gRfuState = (struct RfuStruct*)interruptStruct->block2; + gSTWIStatus = (struct STWIStatus*)interruptStruct->block2; } else { *interrupt = (IntrFunc)IntrSIO32; - gRfuState = (struct RfuStruct*)interruptStruct->block1; + gSTWIStatus = (struct STWIStatus*)interruptStruct->block1; } - gRfuState->rxPacket = (union RfuPacket*)interruptStruct->rxPacketAlloc; - gRfuState->txPacket = (union RfuPacket*)interruptStruct->txPacketAlloc; - gRfuState->msMode = 1; - gRfuState->unk_0 = 0; - gRfuState->txParams = 0; - gRfuState->unk_5 = 0; - gRfuState->unk_7 = 0; - gRfuState->unk_8 = 0; - gRfuState->unk_9 = 0; - gRfuState->timerState = 0; - gRfuState->timerActive = 0; - gRfuState->unk_12 = 0; - gRfuState->unk_15 = 0; - gRfuState->unk_2c = 0; + gSTWIStatus->rxPacket = (union RfuPacket*)interruptStruct->rxPacketAlloc; + gSTWIStatus->txPacket = (union RfuPacket*)interruptStruct->txPacketAlloc; + gSTWIStatus->msMode = 1; + gSTWIStatus->unk_0 = 0; + gSTWIStatus->txParams = 0; + gSTWIStatus->unk_5 = 0; + gSTWIStatus->unk_7 = 0; + gSTWIStatus->unk_8 = 0; + gSTWIStatus->unk_9 = 0; + gSTWIStatus->timerState = 0; + gSTWIStatus->timerActive = 0; + gSTWIStatus->unk_12 = 0; + gSTWIStatus->unk_15 = 0; + gSTWIStatus->unk_2c = 0; REG_RCNT = 0x100; //TODO: mystery bit? REG_SIOCNT = SIO_INTR_ENABLE | SIO_32BIT_MODE | SIO_115200_BPS; @@ -62,9 +62,9 @@ void STWI_init_all(struct RfuIntrStruct *interruptStruct, IntrFunc *interrupt, b void STWI_init_timer(IntrFunc *interrupt, int timerSelect) { *interrupt = STWI_intr_timer; - gRfuState->timerSelect = timerSelect; + gSTWIStatus->timerSelect = timerSelect; - IntrEnable(INTR_FLAG_TIMER0 << gRfuState->timerSelect); + IntrEnable(INTR_FLAG_TIMER0 << gSTWIStatus->timerSelect); } void AgbRFU_SoftReset(void) @@ -74,8 +74,8 @@ void AgbRFU_SoftReset(void) REG_RCNT = 0x8000; REG_RCNT = 0x80A0; // all these bits are undocumented - timerL = ®_TMCNT_L(gRfuState->timerSelect); - timerH = ®_TMCNT_H(gRfuState->timerSelect); + timerL = ®_TMCNT_L(gSTWIStatus->timerSelect); + timerH = ®_TMCNT_H(gSTWIStatus->timerSelect); *timerH = 0; *timerL = 0; *timerH = 0x83; @@ -85,24 +85,24 @@ void AgbRFU_SoftReset(void) REG_RCNT = 0x80A0; REG_SIOCNT = SIO_INTR_ENABLE | SIO_32BIT_MODE | SIO_115200_BPS; - gRfuState->unk_0 = 0; - gRfuState->txParams = 0; - gRfuState->unk_5 = 0; - gRfuState->activeCommand = 0; - gRfuState->unk_7 = 0; - gRfuState->unk_8 = 0; - gRfuState->unk_9 = 0; - gRfuState->timerState = 0; - gRfuState->timerActive = 0; - gRfuState->unk_12 = 0; - gRfuState->msMode = 1; - gRfuState->unk_15 = 0; - gRfuState->unk_2c = 0; + gSTWIStatus->unk_0 = 0; + gSTWIStatus->txParams = 0; + gSTWIStatus->unk_5 = 0; + gSTWIStatus->activeCommand = 0; + gSTWIStatus->unk_7 = 0; + gSTWIStatus->unk_8 = 0; + gSTWIStatus->unk_9 = 0; + gSTWIStatus->timerState = 0; + gSTWIStatus->timerActive = 0; + gSTWIStatus->unk_12 = 0; + gSTWIStatus->msMode = 1; + gSTWIStatus->unk_15 = 0; + gSTWIStatus->unk_2c = 0; } void STWI_set_MS_mode(u8 mode) { - gRfuState->msMode = mode; + gSTWIStatus->msMode = mode; } u16 STWI_read_status(u8 index) @@ -110,13 +110,13 @@ u16 STWI_read_status(u8 index) switch (index) { case 0: - return gRfuState->unk_12; + return gSTWIStatus->unk_12; case 1: - return gRfuState->msMode; + return gSTWIStatus->msMode; case 2: - return gRfuState->unk_0; + return gSTWIStatus->unk_0; case 3: - return gRfuState->activeCommand; + return gSTWIStatus->activeCommand; default: return 0xFFFF; } @@ -134,31 +134,31 @@ void STWI_init_Callback_S(void) void STWI_set_Callback_M(void *callback) { - gRfuState->callbackM = callback; + gSTWIStatus->callbackM = callback; } void STWI_set_Callback_S(void *callback) { - gRfuState->callbackS = callback; + gSTWIStatus->callbackS = callback; } void STWI_set_Callback_ID(u32 id) { - gRfuState->callbackID = id; + gSTWIStatus->callbackID = id; } u16 STWI_poll_CommandEnd(void) { - while (gRfuState->unk_2c == TRUE) + while (gSTWIStatus->unk_2c == TRUE) ; - return gRfuState->unk_12; + return gSTWIStatus->unk_12; } void STWI_send_ResetREQ(void) { if (!STWI_init(RFU_RESET)) { - gRfuState->txParams = 0; + gSTWIStatus->txParams = 0; STWI_start_Command(); } } @@ -167,7 +167,7 @@ void STWI_send_LinkStatusREQ(void) { if (!STWI_init(RFU_LINK_STATUS)) { - gRfuState->txParams = 0; + gSTWIStatus->txParams = 0; STWI_start_Command(); } } @@ -176,7 +176,7 @@ void STWI_send_VersionStatusREQ(void) { if (!STWI_init(RFU_VERSION_STATUS)) { - gRfuState->txParams = 0; + gSTWIStatus->txParams = 0; STWI_start_Command(); } } @@ -185,7 +185,7 @@ void STWI_send_SystemStatusREQ(void) { if (!STWI_init(RFU_SYSTEM_STATUS)) { - gRfuState->txParams = 0; + gSTWIStatus->txParams = 0; STWI_start_Command(); } } @@ -194,7 +194,7 @@ void STWI_send_SlotStatusREQ(void) { if (!STWI_init(RFU_SLOT_STATUS)) { - gRfuState->txParams = 0; + gSTWIStatus->txParams = 0; STWI_start_Command(); } } @@ -203,7 +203,7 @@ void STWI_send_ConfigStatusREQ(void) { if (!STWI_init(RFU_CONFIG_STATUS)) { - gRfuState->txParams = 0; + gSTWIStatus->txParams = 0; STWI_start_Command(); } } @@ -215,10 +215,10 @@ void STWI_send_GameConfigREQ(u8 * unk1, u8 *data) if (!STWI_init(RFU_GAME_CONFIG)) { - gRfuState->txParams = 6; + gSTWIStatus->txParams = 6; //TODO: what is unk1 - packetBytes = gRfuState->txPacket->rfuPacket8.data; + packetBytes = gSTWIStatus->txPacket->rfuPacket8.data; packetBytes += sizeof(u32); *(u16*)packetBytes = *(u16*)unk1; @@ -249,9 +249,9 @@ void STWI_send_SystemConfigREQ(u16 unk1, u8 unk2, u8 unk3) { u8 *packetBytes; - gRfuState->txParams = 1; + gSTWIStatus->txParams = 1; - packetBytes = gRfuState->txPacket->rfuPacket8.data; + packetBytes = gSTWIStatus->txPacket->rfuPacket8.data; packetBytes += sizeof(u32); *packetBytes++ = unk3; @@ -265,7 +265,7 @@ void STWI_send_SC_StartREQ(void) { if (!STWI_init(RFU_SC_START)) { - gRfuState->txParams = 0; + gSTWIStatus->txParams = 0; STWI_start_Command(); } } @@ -274,7 +274,7 @@ void STWI_send_SC_PollingREQ(void) { if (!STWI_init(RFU_SC_POLLING)) { - gRfuState->txParams = 0; + gSTWIStatus->txParams = 0; STWI_start_Command(); } } @@ -283,7 +283,7 @@ void STWI_send_SC_EndREQ(void) { if (!STWI_init(RFU_SC_END)) { - gRfuState->txParams = 0; + gSTWIStatus->txParams = 0; STWI_start_Command(); } } @@ -292,7 +292,7 @@ void STWI_send_SP_StartREQ(void) { if (!STWI_init(RFU_SP_START)) { - gRfuState->txParams = 0; + gSTWIStatus->txParams = 0; STWI_start_Command(); } } @@ -301,7 +301,7 @@ void STWI_send_SP_PollingREQ(void) { if (!STWI_init(RFU_SP_POLLING)) { - gRfuState->txParams = 0; + gSTWIStatus->txParams = 0; STWI_start_Command(); } } @@ -310,7 +310,7 @@ void STWI_send_SP_EndREQ(void) { if (!STWI_init(RFU_SP_END)) { - gRfuState->txParams = 0; + gSTWIStatus->txParams = 0; STWI_start_Command(); } } @@ -319,8 +319,8 @@ void STWI_send_CP_StartREQ(u16 unk1) { if (!STWI_init(RFU_CP_START)) { - gRfuState->txParams = 1; - gRfuState->txPacket->rfuPacket32.data[0] = unk1; + gSTWIStatus->txParams = 1; + gSTWIStatus->txPacket->rfuPacket32.data[0] = unk1; STWI_start_Command(); } } @@ -329,7 +329,7 @@ void STWI_send_CP_PollingREQ(void) { if (!STWI_init(RFU_CP_POLLING)) { - gRfuState->txParams = 0; + gSTWIStatus->txParams = 0; STWI_start_Command(); } } @@ -338,7 +338,7 @@ void STWI_send_CP_EndREQ(void) { if (!STWI_init(RFU_CP_END)) { - gRfuState->txParams = 0; + gSTWIStatus->txParams = 0; STWI_start_Command(); } } @@ -351,8 +351,8 @@ void STWI_send_DataTxREQ(void *in, u8 size) if (size & (sizeof(u32) - 1)) txParams += 1; - gRfuState->txParams = txParams; - CpuCopy32(in, gRfuState->txPacket->rfuPacket32.data, gRfuState->txParams * sizeof(u32)); + gSTWIStatus->txParams = txParams; + CpuCopy32(in, gSTWIStatus->txPacket->rfuPacket32.data, gSTWIStatus->txParams * sizeof(u32)); STWI_start_Command(); } } @@ -365,8 +365,8 @@ void STWI_send_DataTxAndChangeREQ(void *in, u8 size) if (size & (sizeof(u32) - 1)) txParams += 1; - gRfuState->txParams = txParams; - CpuCopy32(in, gRfuState->txPacket->rfuPacket32.data, gRfuState->txParams * sizeof(u32)); + gSTWIStatus->txParams = txParams; + CpuCopy32(in, gSTWIStatus->txPacket->rfuPacket32.data, gSTWIStatus->txParams * sizeof(u32)); STWI_start_Command(); } } @@ -375,7 +375,7 @@ void STWI_send_DataRxREQ(void) { if (!STWI_init(RFU_DATA_RX)) { - gRfuState->txParams = 0; + gSTWIStatus->txParams = 0; STWI_start_Command(); } } @@ -384,7 +384,7 @@ void STWI_send_MS_ChangeREQ(void) { if (!STWI_init(RFU_MS_CHANGE)) { - gRfuState->txParams = 0; + gSTWIStatus->txParams = 0; STWI_start_Command(); } } @@ -395,15 +395,15 @@ void STWI_send_DataReadyAndChangeREQ(u8 unk) { if (!unk) { - gRfuState->txParams = 0; + gSTWIStatus->txParams = 0; } else { u8 *packetBytes; - gRfuState->txParams = 1; + gSTWIStatus->txParams = 1; - packetBytes = gRfuState->txPacket->rfuPacket8.data; + packetBytes = gSTWIStatus->txPacket->rfuPacket8.data; packetBytes += sizeof(u32); *packetBytes++ = unk; @@ -422,9 +422,9 @@ void STWI_send_DisconnectedAndChangeREQ(u8 unk0, u8 unk1) { u8 *packetBytes; - gRfuState->txParams = 1; + gSTWIStatus->txParams = 1; - packetBytes = gRfuState->txPacket->rfuPacket8.data; + packetBytes = gSTWIStatus->txPacket->rfuPacket8.data; packetBytes += sizeof(u32); *packetBytes++ = unk0; @@ -440,7 +440,7 @@ void STWI_send_ResumeRetransmitAndChangeREQ(void) { if (!STWI_init(RFU_RESUME_RETRANSMIT_AND_CHANGE)) { - gRfuState->txParams = 0; + gSTWIStatus->txParams = 0; STWI_start_Command(); } } @@ -449,8 +449,8 @@ void STWI_send_DisconnectREQ(u8 unk) { if (!STWI_init(RFU_DISCONNECT)) { - gRfuState->txParams = 1; - gRfuState->txPacket->rfuPacket32.data[0] = unk; + gSTWIStatus->txParams = 1; + gSTWIStatus->txPacket->rfuPacket32.data[0] = unk; STWI_start_Command(); } @@ -460,8 +460,8 @@ void STWI_send_TestModeREQ(u8 unk0, u8 unk1) { if (!STWI_init(RFU_TEST_MODE)) { - gRfuState->txParams = 1; - gRfuState->txPacket->rfuPacket32.data[0] = unk0 | (unk1 << 8); + gSTWIStatus->txParams = 1; + gSTWIStatus->txPacket->rfuPacket32.data[0] = unk0 | (unk1 << 8); STWI_start_Command(); } @@ -474,10 +474,10 @@ void STWI_send_CPR_StartREQ(u16 unk0, u16 unk1, u8 unk2) if (!STWI_init(RFU_CPR_START)) { - gRfuState->txParams = 2; + gSTWIStatus->txParams = 2; arg1 = unk1 | (unk0 << 16); - packetData = gRfuState->txPacket->rfuPacket32.data; + packetData = gSTWIStatus->txPacket->rfuPacket32.data; packetData[0] = arg1; packetData[1] = unk2; @@ -489,7 +489,7 @@ void STWI_send_CPR_PollingREQ(void) { if (!STWI_init(RFU_CPR_POLLING)) { - gRfuState->txParams = 0; + gSTWIStatus->txParams = 0; STWI_start_Command(); } } @@ -498,7 +498,7 @@ void STWI_send_CPR_EndREQ(void) { if (!STWI_init(RFU_CPR_END)) { - gRfuState->txParams = 0; + gSTWIStatus->txParams = 0; STWI_start_Command(); } } @@ -507,18 +507,18 @@ void STWI_send_StopModeREQ(void) { if (!STWI_init(RFU_STOP_MODE)) { - gRfuState->txParams = 0; + gSTWIStatus->txParams = 0; STWI_start_Command(); } } void STWI_intr_timer(void) { - switch (gRfuState->timerState) + switch (gSTWIStatus->timerState) { //TODO: Make an enum for these case 2: - gRfuState->timerActive = 1; + gSTWIStatus->timerActive = 1; STWI_set_timer(50); break; case 1: @@ -527,11 +527,11 @@ void STWI_intr_timer(void) STWI_restart_Command(); break; case 3: - gRfuState->timerActive = 1; + gSTWIStatus->timerActive = 1; STWI_stop_timer(); STWI_reset_ClockCounter(); - if (gRfuState->callbackM) - gRfuState->callbackM(255, 0); + if (gSTWIStatus->callbackM) + gSTWIStatus->callbackM(255, 0); break; } } @@ -541,79 +541,79 @@ void STWI_set_timer(u8 unk) vu16 *timerL; vu16 *timerH; - timerL = ®_TMCNT_L(gRfuState->timerSelect); - timerH = ®_TMCNT_H(gRfuState->timerSelect); + timerL = ®_TMCNT_L(gSTWIStatus->timerSelect); + timerH = ®_TMCNT_H(gSTWIStatus->timerSelect); REG_IME = 0; switch (unk) { case 50: *timerL = 0xFCCB; - gRfuState->timerState = 1; + gSTWIStatus->timerState = 1; break; case 80: *timerL = 0xFAE0; - gRfuState->timerState = 2; + gSTWIStatus->timerState = 2; break; case 100: *timerL = 0xF996; - gRfuState->timerState = 3; + gSTWIStatus->timerState = 3; break; case 130: *timerL = 0xF7AD; - gRfuState->timerState = 4; + gSTWIStatus->timerState = 4; break; } *timerH = TIMER_ENABLE | TIMER_INTR_ENABLE | TIMER_1024CLK; - REG_IF = INTR_FLAG_TIMER0 << gRfuState->timerSelect; + REG_IF = INTR_FLAG_TIMER0 << gSTWIStatus->timerSelect; REG_IME = 1; } void STWI_stop_timer(void) { - gRfuState->timerState = 0; + gSTWIStatus->timerState = 0; - REG_TMCNT_L(gRfuState->timerSelect) = 0; - REG_TMCNT_H(gRfuState->timerSelect) = 0; + REG_TMCNT_L(gSTWIStatus->timerSelect) = 0; + REG_TMCNT_H(gSTWIStatus->timerSelect) = 0; } u16 STWI_init(u8 request) { if (!REG_IME) { - gRfuState->unk_12 = 6; - if (gRfuState->callbackM) - gRfuState->callbackM(request, gRfuState->unk_12); + gSTWIStatus->unk_12 = 6; + if (gSTWIStatus->callbackM) + gSTWIStatus->callbackM(request, gSTWIStatus->unk_12); return TRUE; } - else if (gRfuState->unk_2c == TRUE) + else if (gSTWIStatus->unk_2c == TRUE) { - gRfuState->unk_12 = 2; - gRfuState->unk_2c = FALSE; - if (gRfuState->callbackM) - gRfuState->callbackM(request, gRfuState->unk_12); + gSTWIStatus->unk_12 = 2; + gSTWIStatus->unk_2c = FALSE; + if (gSTWIStatus->callbackM) + gSTWIStatus->callbackM(request, gSTWIStatus->unk_12); return TRUE; } - else if(!gRfuState->msMode) + else if(!gSTWIStatus->msMode) { - gRfuState->unk_12 = 4; - if (gRfuState->callbackM) - gRfuState->callbackM(request, gRfuState->unk_12, gRfuState); + gSTWIStatus->unk_12 = 4; + if (gSTWIStatus->callbackM) + gSTWIStatus->callbackM(request, gSTWIStatus->unk_12, gSTWIStatus); return TRUE; } else { - gRfuState->unk_2c = TRUE; - gRfuState->activeCommand = request; - gRfuState->unk_0 = 0; - gRfuState->txParams = 0; - gRfuState->unk_5 = 0; - gRfuState->unk_7 = 0; - gRfuState->unk_8 = 0; - gRfuState->unk_9 = 0; - gRfuState->timerState = 0; - gRfuState->timerActive = 0; - gRfuState->unk_12 = 0; - gRfuState->unk_15 = 0; + gSTWIStatus->unk_2c = TRUE; + gSTWIStatus->activeCommand = request; + gSTWIStatus->unk_0 = 0; + gSTWIStatus->txParams = 0; + gSTWIStatus->unk_5 = 0; + gSTWIStatus->unk_7 = 0; + gSTWIStatus->unk_8 = 0; + gSTWIStatus->unk_9 = 0; + gSTWIStatus->timerState = 0; + gSTWIStatus->timerActive = 0; + gSTWIStatus->unk_12 = 0; + gSTWIStatus->unk_15 = 0; REG_RCNT = 0x100; REG_SIOCNT = SIO_INTR_ENABLE | SIO_32BIT_MODE | SIO_115200_BPS; @@ -626,15 +626,15 @@ int STWI_start_Command() u16 imeTemp; // Yes, it matters that it's casted to a u32... - *(u32*)gRfuState->txPacket->rfuPacket8.data = 0x99660000 | (gRfuState->txParams << 8) | gRfuState->activeCommand; - REG_SIODATA32 = gRfuState->txPacket->rfuPacket32.command; + *(u32*)gSTWIStatus->txPacket->rfuPacket8.data = 0x99660000 | (gSTWIStatus->txParams << 8) | gSTWIStatus->activeCommand; + REG_SIODATA32 = gSTWIStatus->txPacket->rfuPacket32.command; - gRfuState->unk_0 = 0; - gRfuState->unk_5 = 1; + gSTWIStatus->unk_0 = 0; + gSTWIStatus->unk_5 = 1; imeTemp = REG_IME; REG_IME = 0; - REG_IE |= (INTR_FLAG_TIMER0 << gRfuState->timerSelect); + REG_IE |= (INTR_FLAG_TIMER0 << gSTWIStatus->timerSelect); REG_IE |= INTR_FLAG_SERIAL; REG_IME = imeTemp; @@ -645,30 +645,30 @@ int STWI_start_Command() int STWI_restart_Command(void) { - if (gRfuState->unk_15 <= 1) + if (gSTWIStatus->unk_15 <= 1) { - gRfuState->unk_15++; + gSTWIStatus->unk_15++; STWI_start_Command(); } else { - if (gRfuState->activeCommand == RFU_MS_CHANGE || gRfuState->activeCommand == RFU_DATA_TX_AND_CHANGE || gRfuState->activeCommand == RFU_UNK35 || gRfuState->activeCommand == RFU_RESUME_RETRANSMIT_AND_CHANGE) + if (gSTWIStatus->activeCommand == RFU_MS_CHANGE || gSTWIStatus->activeCommand == RFU_DATA_TX_AND_CHANGE || gSTWIStatus->activeCommand == RFU_UNK35 || gSTWIStatus->activeCommand == RFU_RESUME_RETRANSMIT_AND_CHANGE) { - gRfuState->unk_12 = 1; - gRfuState->unk_2c = 0; + gSTWIStatus->unk_12 = 1; + gSTWIStatus->unk_2c = 0; - if (gRfuState->callbackM) - gRfuState->callbackM(gRfuState->activeCommand, gRfuState->unk_12); + if (gSTWIStatus->callbackM) + gSTWIStatus->callbackM(gSTWIStatus->activeCommand, gSTWIStatus->unk_12); } else { - gRfuState->unk_12 = 1; - gRfuState->unk_2c = 0; + gSTWIStatus->unk_12 = 1; + gSTWIStatus->unk_2c = 0; - if (gRfuState->callbackM) - gRfuState->callbackM(gRfuState->activeCommand, gRfuState->unk_12); + if (gSTWIStatus->callbackM) + gSTWIStatus->callbackM(gSTWIStatus->activeCommand, gSTWIStatus->unk_12); - gRfuState->unk_0 = 4; //TODO: what's 4 + gSTWIStatus->unk_0 = 4; //TODO: what's 4 } } @@ -677,9 +677,9 @@ int STWI_restart_Command(void) int STWI_reset_ClockCounter(void) { - gRfuState->unk_0 = 5; //TODO: what is 5 - gRfuState->txParams = 0; - gRfuState->unk_5 = 0; + gSTWIStatus->unk_0 = 5; //TODO: what is 5 + gSTWIStatus->txParams = 0; + gSTWIStatus->unk_5 = 0; REG_SIODATA32 = (1 << 31); REG_SIOCNT = 0; REG_SIOCNT = SIO_INTR_ENABLE | SIO_32BIT_MODE | SIO_115200_BPS; diff --git a/src/link_rfu.c b/src/link_rfu.c index cedc6b2fba..6f45b528e3 100644 --- a/src/link_rfu.c +++ b/src/link_rfu.c @@ -364,7 +364,7 @@ u32 sub_800BEC0(void) void rfu_REQ_sendData_wrapper(u8 r2) { u8 val; - if (!gUnknown_03007890->unk_00) + if (!gRfuLinkStatus->unk_00) { val = gUnknown_03004140.unk_02; r2 = 0; @@ -515,14 +515,14 @@ u8 sub_800C12C(u16 r6, u16 r8) sub_800D30C(0xF3, 0x01); return 2; } - for (i = 0; i < gUnknown_03007890->unk_08; i++) + for (i = 0; i < gRfuLinkStatus->unk_08; i++) { - if (gUnknown_03007890->unk_14[i].unk_00 == r6) + if (gRfuLinkStatus->unk_14[i].unk_00 == r6) { break; } } - if (gUnknown_03007890->unk_08 == 0 || i == gUnknown_03007890->unk_08) + if (gRfuLinkStatus->unk_08 == 0 || i == gRfuLinkStatus->unk_08) { gUnknown_03004140.unk_14 = 3; sub_800D30C(0xF3, 0x01); @@ -561,7 +561,7 @@ void sub_800C210(u8 a0) gUnknown_03004140.unk_34[i] = 0; } } - i = gUnknown_03007890->unk_03 & a0; + i = gRfuLinkStatus->unk_03 & a0; if (i) { sub_800D334(i); @@ -630,8 +630,8 @@ void sub_800C27C(bool8 a0) case 16: gUnknown_03004140.unk_04 = gUnknown_03004140.unk_11; gUnknown_03004140.unk_05 = gUnknown_03004140.unk_12; - sub_800D334(gUnknown_03007890->unk_03); - gUnknown_03004140.unk_14 = gUnknown_03007890->unk_03; + sub_800D334(gRfuLinkStatus->unk_03); + gUnknown_03004140.unk_14 = gRfuLinkStatus->unk_03; sub_800D30C(0x33, 0x01); return; case 17: @@ -703,7 +703,7 @@ bool8 sub_800C36C(u16 a0) } sub_800D610(); } - if (gUnknown_03007890->unk_00 == 1) + if (gRfuLinkStatus->unk_00 == 1) { if (sp2) { @@ -800,7 +800,7 @@ void sub_800C54C(u32 a0) rfu_REQ_configSystem(gUnknown_03004140.unk_3c->unk_02, gUnknown_03004140.unk_3c->unk_00, gUnknown_03004140.unk_3c->unk_01); break; case 4: - rfu_REQ_configGameData(gUnknown_03004140.unk_3c->unk_04, gUnknown_03004140.unk_3c->unk_06, gUnknown_03004140.unk_3c->unk_08, gUnknown_03004140.unk_3c->unk_0c); + rfu_REQ_configGameData(gUnknown_03004140.unk_3c->unk_04, gUnknown_03004140.unk_3c->unk_06, (const u8 *)gUnknown_03004140.unk_3c->unk_08, gUnknown_03004140.unk_3c->unk_0c); break; case 5: rfu_REQ_startSearchChild(); @@ -834,7 +834,7 @@ void sub_800C54C(u32 a0) case 15: break; case 16: - rfu_REQ_CHILD_startConnectRecovery(gUnknown_03007890->unk_03); + rfu_REQ_CHILD_startConnectRecovery(gRfuLinkStatus->unk_03); break; case 17: rfu_REQ_CHILD_pollConnectRecovery(); @@ -857,7 +857,7 @@ void sub_800C54C(u32 a0) gUnknown_03004140.unk_0e = 0; } } while (gUnknown_03004140.unk_04 == 18 || gUnknown_03004140.unk_04 == 19); - if (gUnknown_03007890->unk_00 != 1 || !sub_800C36C(0)) + if (gRfuLinkStatus->unk_00 != 1 || !sub_800C36C(0)) { sub_800CF34(); sub_800D158(); @@ -983,7 +983,7 @@ static void sub_800C7B4(u16 r8, u16 r6) { sub_800D30C(0x20, 0x01); } - if (gUnknown_03004140.unk_0b && gUnknown_03004140.unk_1a != 1 && gUnknown_03007890->unk_08 == 4) + if (gUnknown_03004140.unk_0b && gUnknown_03004140.unk_1a != 1 && gRfuLinkStatus->unk_08 == 4) { rfu_REQ_endSearchParent(); rfu_waitREQComplete(); @@ -1059,11 +1059,11 @@ static void sub_800C7B4(u16 r8, u16 r6) case 50: if (r6 == 0) { - gUnknown_03004140.unk_14 = gUnknown_03007890->unk_03; + gUnknown_03004140.unk_14 = gRfuLinkStatus->unk_03; gUnknown_03004140.unk_04 = gUnknown_03004140.unk_05 = 17; for (gUnknown_03004140.unk_10 = 0; gUnknown_03004140.unk_10 < 4; gUnknown_03004140.unk_10 ++) { - if ((gUnknown_03007890->unk_03 >> gUnknown_03004140.unk_10) & 1) + if ((gRfuLinkStatus->unk_03 >> gUnknown_03004140.unk_10) & 1) { break; } @@ -1092,7 +1092,7 @@ static void sub_800C7B4(u16 r8, u16 r6) else { gUnknown_03004140.unk_04 = gUnknown_03004140.unk_05 = 0; - sub_800D334(gUnknown_03007890->unk_03); + sub_800D334(gRfuLinkStatus->unk_03); gUnknown_03004140.unk_1e = 0x33; } gUnknown_03004140.unk_34[gUnknown_03004140.unk_10] = 0; @@ -1126,7 +1126,7 @@ static void sub_800C7B4(u16 r8, u16 r6) { gUnknown_03004140.unk_04 = gUnknown_03004140.unk_05 = 0; sub_800D610(); - sub_800D334(gUnknown_03007890->unk_02 | gUnknown_03007890->unk_03); + sub_800D334(gRfuLinkStatus->unk_02 | gRfuLinkStatus->unk_03); gUnknown_03004140.unk_14 = sp0; sub_800D30C(0x25, 0x01); } @@ -1148,10 +1148,10 @@ static void sub_800C7B4(u16 r8, u16 r6) rfu_REQ_RFUStatus(); rfu_waitREQComplete(); rfu_getRFUStatus(&sp0); - if (sp0 == 0 && gUnknown_03007890->unk_00 == 0) + if (sp0 == 0 && gRfuLinkStatus->unk_00 == 0) { stwiRecvBuffer = rfu_getSTWIRecvBuffer(); - stwiRecvBuffer[4] = gUnknown_03007890->unk_02; + stwiRecvBuffer[4] = gRfuLinkStatus->unk_02; stwiRecvBuffer[5] = 1; sub_800C36C(0x29); r6 = 0; @@ -1191,7 +1191,7 @@ static void sub_800C7B4(u16 r8, u16 r6) gUnknown_03004140.unk_00 &= ~gUnknown_03004140.unk_14; if (gUnknown_03004140.unk_07) { - if (gUnknown_03007890->unk_00 == 0xFF) + if (gRfuLinkStatus->unk_00 == 0xFF) { if (gUnknown_03004140.unk_07 == 8) { @@ -1206,7 +1206,7 @@ static void sub_800C7B4(u16 r8, u16 r6) } } } - if (gUnknown_03007890->unk_00 == 0xFF) + if (gRfuLinkStatus->unk_00 == 0xFF) { if (gUnknown_03004140.unk_04 == 0) { @@ -1221,7 +1221,7 @@ static void sub_800C7B4(u16 r8, u16 r6) break; case 38: sub_800D20C(); - if (gUnknown_03007890->unk_00 != 0xFF) + if (gRfuLinkStatus->unk_00 != 0xFF) { sub_800D30C(0x50, 0x00); } @@ -1246,8 +1246,8 @@ static void sub_800C7B4(u16 r8, u16 r6) { if (r8 == 28 && r6 != 0 && gUnknown_03004140.unk_07 == 4) { - gUnknown_03007890->unk_00 = 1; - gUnknown_03007890->unk_02 = 15; + gRfuLinkStatus->unk_00 = 1; + gRfuLinkStatus->unk_02 = 15; sub_800D334(15); rfu_waitREQComplete(); return; @@ -1279,7 +1279,7 @@ static void sub_800CEB0(u16 r6) r7 = gUnknown_03004140.unk_0e; gUnknown_03004140.unk_0e = 0; gUnknown_03004140.unk_0f = 1; - if (gUnknown_03007890->unk_00 == 0) + if (gRfuLinkStatus->unk_00 == 0) { sub_800C36C(r6); if (gUnknown_03004140.unk_02 != 1) @@ -1321,8 +1321,8 @@ static void sub_800CF34(void) if (gUnknown_03004140.unk_04 == 5 || gUnknown_03004140.unk_04 == 6 || gUnknown_03004140.unk_04 == 7 || gUnknown_03004140.unk_04 == 8) { - flags = ((gUnknown_03007890->unk_02 ^ gUnknown_03004140.unk_0c) & gUnknown_03007890->unk_02) & ~gUnknown_03007890->unk_07; - gUnknown_03004140.unk_0c = gUnknown_03007890->unk_02; + flags = ((gRfuLinkStatus->unk_02 ^ gUnknown_03004140.unk_0c) & gRfuLinkStatus->unk_02) & ~gRfuLinkStatus->unk_07; + gUnknown_03004140.unk_0c = gRfuLinkStatus->unk_02; if (flags) { gUnknown_03004140.unk_14 = flags; @@ -1340,14 +1340,14 @@ static void sub_800CF34(void) } else if (gUnknown_03004140.unk_24 & r4) { - if (gUnknown_03007880[i]->unk_34 == 0x46) + if (gRfuSlotStatusNI[i]->unk_34 == 0x46) { - if (gUnknown_03007880[i]->unk_61 == 1) + if (gRfuSlotStatusNI[i]->unk_61 == 1) { r5 = 0x02; for (ptr = gUnknown_03004140.unk_20; *ptr != 0xFFFF; ptr++) { - if (gUnknown_03007890->unk_14[i].unk_04 == *ptr) + if (gRfuLinkStatus->unk_14[i].unk_04 == *ptr) { gUnknown_03004140.unk_00 |= r4; gUnknown_03004140.unk_01++; @@ -1386,7 +1386,7 @@ static void sub_800CF34(void) if (gUnknown_03004140.unk_0d) { r5 = 0x01; - if (gUnknown_03007890->unk_06 && ((gUnknown_03004140.unk_03 & gUnknown_03004140.unk_00) != gUnknown_03004140.unk_00)) + if (gRfuLinkStatus->unk_06 && ((gUnknown_03004140.unk_03 & gUnknown_03004140.unk_00) != gUnknown_03004140.unk_00)) { r5 = 0x00; } @@ -1434,7 +1434,7 @@ static void sub_800D158(void) REG_IME = 0; if (gUnknown_03004140.unk_04 == 15) { - if (--gUnknown_03004140.unk_28[gUnknown_03004140.unk_10] == 0 || gUnknown_03007880[gUnknown_03004140.unk_10]->unk_0 == 0x27) + if (--gUnknown_03004140.unk_28[gUnknown_03004140.unk_10] == 0 || gRfuSlotStatusNI[gUnknown_03004140.unk_10]->unk_0 == 0x27) { sub_800D630(); gUnknown_03004140.unk_04 = 24; @@ -1453,7 +1453,7 @@ static void sub_800D158(void) if (gUnknown_03004140.unk_02 == 0) { gUnknown_03004140.unk_04 = gUnknown_03004140.unk_05 = 0; - sub_800D334(gUnknown_03007890->unk_02 | gUnknown_03007890->unk_03); + sub_800D334(gRfuLinkStatus->unk_02 | gRfuLinkStatus->unk_03); gUnknown_03004140.unk_14 = 0; sub_800D30C(0x25, 0x01); } @@ -1462,7 +1462,7 @@ static void sub_800D158(void) static void sub_800D20C(void) { - if (gUnknown_03004140.unk_04 == 15 && gUnknown_03007880[gUnknown_03004140.unk_10]->unk_0 == 0x26) + if (gUnknown_03004140.unk_04 == 15 && gRfuSlotStatusNI[gUnknown_03004140.unk_10]->unk_0 == 0x26) { gUnknown_03004140.unk_04 = gUnknown_03004140.unk_05 = 0; rfu_clearSlot(4, gUnknown_03004140.unk_10); @@ -1490,11 +1490,11 @@ static u8 sub_800D294(void) const u16 *ptr; u8 flags = 0x00; - for (i = 0; i < gUnknown_03007890->unk_08; i++) + for (i = 0; i < gRfuLinkStatus->unk_08; i++) { for (ptr = gUnknown_03004140.unk_20; *ptr != 0xFFFF; ptr++) { - if (gUnknown_03007890->unk_14[i].unk_04 == *ptr) + if (gRfuLinkStatus->unk_14[i].unk_04 == *ptr) { flags |= (1 << i); } @@ -1525,34 +1525,34 @@ static void sub_800D358(u8 a0) { u8 i; - if (gUnknown_03007890->unk_04) + if (gRfuLinkStatus->unk_04) { for (i = 0; i < 4; i++) { - if (gUnknown_03007880[i]->unk_0 & 0x8000 && gUnknown_03007880[i]->unk_1a & a0) + if (gRfuSlotStatusNI[i]->unk_0 & 0x8000 && gRfuSlotStatusNI[i]->unk_1a & a0) { - rfu_changeSendTarget(0x20, i, gUnknown_03007880[i]->unk_1a & ~a0); + rfu_changeSendTarget(0x20, i, gRfuSlotStatusNI[i]->unk_1a & ~a0); } } } - if (gUnknown_03007890->unk_05) + if (gRfuLinkStatus->unk_05) { for (i = 0; i < 4; i++) { - if (gUnknown_03007880[i]->unk_34 & 0x8000 && gUnknown_03007880[i]->unk_4e & a0) + if (gRfuSlotStatusNI[i]->unk_34 & 0x8000 && gRfuSlotStatusNI[i]->unk_4e & a0) { rfu_NI_stopReceivingData(i); } } } - if (gUnknown_03007890->unk_06) + if (gRfuLinkStatus->unk_06) { - gUnknown_03007890->unk_06 &= ~a0; + gRfuLinkStatus->unk_06 &= ~a0; for (i = 0; i < 4; i++) { - if (gUnknown_03007870[i]->unk_0 == 0x8024 && a0 & gUnknown_03007870[i]->unk_3) + if (gRfuSlotStatusUNI[i]->unk_0 == 0x8024 && a0 & gRfuSlotStatusUNI[i]->unk_3) { - gUnknown_03007870[i]->unk_3 &= ~a0; + gRfuSlotStatusUNI[i]->unk_3 &= ~a0; } } } @@ -1566,32 +1566,32 @@ static void sub_800D434(void) if (gUnknown_03004140.unk_18) { - if (gUnknown_03007890->unk_04) + if (gRfuLinkStatus->unk_04) { for (i = 0; i < 4; i ++) { - if (gUnknown_03007880[i]->unk_0 & 0x8000) + if (gRfuSlotStatusNI[i]->unk_0 & 0x8000) { flags = 0; for (j = 0; j < 4; j++) { - if ((gUnknown_03007880[i]->unk_1a >> j) & 1 && gUnknown_03007880[j]->unk_2 > gUnknown_03004140.unk_18) + if ((gRfuSlotStatusNI[i]->unk_1a >> j) & 1 && gRfuSlotStatusNI[j]->unk_2 > gUnknown_03004140.unk_18) { flags |= (1 << j); } if (flags) { - rfu_changeSendTarget(0x20, i, flags ^ gUnknown_03007880[i]->unk_1a); + rfu_changeSendTarget(0x20, i, flags ^ gRfuSlotStatusNI[i]->unk_1a); } } } } } - if (gUnknown_03007890->unk_05) + if (gRfuLinkStatus->unk_05) { for (i = 0; i < 4; i++) { - if (gUnknown_03007880[i]->unk_34 & 0x8000 && gUnknown_03007880[i]->unk_36 > gUnknown_03004140.unk_18) + if (gRfuSlotStatusNI[i]->unk_34 & 0x8000 && gRfuSlotStatusNI[i]->unk_36 > gUnknown_03004140.unk_18) { rfu_NI_stopReceivingData(i); } @@ -1628,7 +1628,7 @@ u8 sub_800D550(u8 a0, u16 a1) u8 sub_800D594(u16 a0) { - if (gUnknown_03007890->unk_04 | gUnknown_03007890->unk_05) + if (gRfuLinkStatus->unk_04 | gRfuLinkStatus->unk_05) { gUnknown_03004140.unk_14 = 6; sub_800D30C(0xf3, 0x01); @@ -2049,17 +2049,17 @@ void ASCIIToPkmnStr(u8 *q1, const u8 *q2) u8 sub_800DD1C(u8 maxFlags) { u8 flagCount = 0; - u32 flags = gUnknown_03007890->unk_02; + u32 flags = gRfuLinkStatus->unk_02; u8 i; - if (gUnknown_03007890->unk_00 == 1) + if (gRfuLinkStatus->unk_00 == 1) { for (i = 0; i < 4; flags >>= 1, i++) { if (flags & 1) { if (maxFlags == flagCount + 1) - return gUnknown_03007890->unk_0a[i]; + return gRfuLinkStatus->unk_0a[i]; flagCount++; } } @@ -2069,7 +2069,7 @@ u8 sub_800DD1C(u8 maxFlags) for (i = 0; i < 4; flags >>= 1, i++) { if (flags & 1) - return gUnknown_03007890->unk_0a[i]; + return gRfuLinkStatus->unk_0a[i]; } } return 0; @@ -2081,7 +2081,7 @@ NAKED u8 sub_800DD1C(u8 maxFlags) "\tlsls r0, 24\n" "\tlsrs r5, r0, 24\n" "\tmovs r6, 0\n" - "\tldr r0, =gUnknown_03007890\n" + "\tldr r0, =gRfuLinkStatus\n" "\tldr r4, [r0]\n" "\tldrb r2, [r4, 0x2]\n" "\tldrb r1, [r4]\n" @@ -2177,24 +2177,24 @@ bool8 sub_800DE7C(struct UnkLinkRfuStruct_02022B14 *buff1, u8 *buff2, u8 idx) if (gUnknown_03004140.unk_06 == 1) { retVal = TRUE; - if (sub_8010454(gUnknown_03007890->unk_14[idx].unk_04) && ((gUnknown_03007890->unk_07 >> idx) & 1)) + if (sub_8010454(gRfuLinkStatus->unk_14[idx].unk_04) && ((gRfuLinkStatus->unk_07 >> idx) & 1)) { - memcpy(buff1, &gUnknown_03007890->unk_14[idx].unk_06, 0xD); - memcpy(buff2, gUnknown_03007890->unk_14[idx].playerName, PLAYER_NAME_LENGTH + 1); + memcpy(buff1, gRfuLinkStatus->unk_14[idx].gname, 0xD); + memcpy(buff2, gRfuLinkStatus->unk_14[idx].uname, PLAYER_NAME_LENGTH + 1); } else { memset(buff1, 0, 0xD); - memset(buff2, 0, sizeof(gUnknown_03007890->unk_14[idx].playerName)); + memset(buff2, 0, PLAYER_NAME_LENGTH + 1); } } else { retVal = FALSE; - if (sub_8010454(gUnknown_03007890->unk_14[idx].unk_04)) + if (sub_8010454(gRfuLinkStatus->unk_14[idx].unk_04)) { - memcpy(buff1, &gUnknown_03007890->unk_14[idx].unk_06, 0xD); - memcpy(buff2, gUnknown_03007890->unk_14[idx].playerName, PLAYER_NAME_LENGTH + 1); + memcpy(buff1, gRfuLinkStatus->unk_14[idx].gname, 0xD); + memcpy(buff2, gRfuLinkStatus->unk_14[idx].uname, PLAYER_NAME_LENGTH + 1); } else { @@ -2208,10 +2208,10 @@ bool8 sub_800DE7C(struct UnkLinkRfuStruct_02022B14 *buff1, u8 *buff2, u8 idx) bool8 sub_800DF34(struct UnkLinkRfuStruct_02022B14 *buff1, u8 *buff2, u8 idx) { bool8 retVal = FALSE; - if (gUnknown_03007890->unk_14[idx].unk_04 == 0x7F7D) + if (gRfuLinkStatus->unk_14[idx].unk_04 == 0x7F7D) { - memcpy(buff1, &gUnknown_03007890->unk_14[idx].unk_06, 0xD); - memcpy(buff2, gUnknown_03007890->unk_14[idx].playerName, 8); + memcpy(buff1, gRfuLinkStatus->unk_14[idx].gname, 0xD); + memcpy(buff2, gRfuLinkStatus->unk_14[idx].uname, 8); retVal = TRUE; } else @@ -2237,7 +2237,7 @@ void CreateWirelessStatusIndicatorSprite(u8 x, u8 y) x = 0xE7; y = 0x08; } - if (gUnknown_03007890->unk_00 == 1) + if (gRfuLinkStatus->unk_00 == 1) { sprId = CreateSprite(&sWirelessStatusIndicatorSpriteTemplate, x, y, 0); gSprites[sprId].data[7] = 0x1234; @@ -2278,12 +2278,12 @@ void LoadWirelessStatusIndicatorSpriteGfx(void) u8 sub_800E124(void) { u8 i; - u8 flags = gUnknown_03007890->unk_02; + u8 flags = gRfuLinkStatus->unk_02; for (i = 0; i < 4; i++) { if (flags & 1) { - return gUnknown_03007890->unk_0a[i]; + return gRfuLinkStatus->unk_0a[i]; } flags >>= 1; } @@ -2307,7 +2307,7 @@ void sub_800E174(void) struct Sprite *sprite = &gSprites[gWirelessStatusIndicatorSpriteId]; u8 signalStrength = 255; u8 i = 0; - if (gUnknown_03007890->unk_00 == 1) + if (gRfuLinkStatus->unk_00 == 1) { for (i = 0; i < GetLinkPlayerCount() - 1; i++) { @@ -2787,7 +2787,7 @@ void sub_800ED34(u16 unused) } rfu_REQ_recvData(); rfu_waitREQComplete(); - if (gUnknown_03007870[gUnknown_03005000.unk_c3e]->unk_12) + if (gRfuSlotStatusUNI[gUnknown_03005000.unk_c3e]->unk_12) { gUnknown_03005000.unk_cd0++; sub_800D7D8(&gUnknown_03005000.unk_124, gUnknown_03005000.unk_c3f); @@ -2858,7 +2858,7 @@ bool8 sub_800EE94(void) bool32 sub_800EEBC(void) { - if (gUnknown_03005000.unk_04 == 7 && !sub_800C12C(gUnknown_03007890->unk_14[gUnknown_03005000.unk_c3d].unk_00, 240)) + if (gUnknown_03005000.unk_04 == 7 && !sub_800C12C(gRfuLinkStatus->unk_14[gUnknown_03005000.unk_c3d].unk_00, 240)) { gUnknown_03005000.unk_04 = 9; return TRUE; @@ -2971,7 +2971,7 @@ bool32 IsRfuRecvQueueEmpty(void) s32 i; s32 j; - if (gUnknown_03007890->unk_06 == 0) + if (gRfuLinkStatus->unk_06 == 0) { return FALSE; } @@ -2999,7 +2999,7 @@ bool32 sub_800F0F8(void) else { gUnknown_03005000.unk_cdb = 0; - if ((gUnknown_03005000.unk_ce2 & gUnknown_03007890->unk_02) == gUnknown_03005000.unk_ce2 && (gUnknown_03005000.unk_ce2 & gUnknown_03007890->unk_02)) + if ((gUnknown_03005000.unk_ce2 & gRfuLinkStatus->unk_02) == gUnknown_03005000.unk_ce2 && (gUnknown_03005000.unk_ce2 & gRfuLinkStatus->unk_02)) { if (!gUnknown_03005000.unk_cdc) { @@ -3119,7 +3119,7 @@ bool32 sub_800F1E0(void) gUnknown_03005000.unk_0e = 0; } retval = gUnknown_03005000.unk_cdc; - return gUnknown_03007890->unk_06 ? retval & 1 : FALSE; + return gRfuLinkStatus->unk_06 ? retval & 1 : FALSE; } void sub_800F498(u16 *a0, u8 *a1) @@ -3162,7 +3162,7 @@ bool32 sub_800F4F0(void) sub_800F86C(0); if (gUnknown_03004140.unk_02 == 0 && gUnknown_03005000.unk_ce4) { - rfu_REQ_disconnect(gUnknown_03007890->unk_02 | gUnknown_03007890->unk_03); + rfu_REQ_disconnect(gRfuLinkStatus->unk_02 | gRfuLinkStatus->unk_03); rfu_waitREQComplete(); switchval = sub_8011A74(); if (switchval != 1 && switchval != 6 && switchval != 9) @@ -3305,7 +3305,7 @@ static void sub_800F86C(u8 unused) return; // fallthrough case 0x7700: - if (gUnknown_03007890->unk_00 == 0) + if (gRfuLinkStatus->unk_00 == 0) { gUnknown_03005000.playerCount = gRecvCmds[i][1]; gUnknown_03005000.unk_cce = sub_800F74C((u8 *)(gRecvCmds[i] + 2)); @@ -3353,7 +3353,7 @@ static void sub_800F86C(u8 unused) { if (gReceivedRemoteLinkPlayers != 0) { - if (gRecvCmds[i][1] & gUnknown_03007890->unk_02) + if (gRecvCmds[i][1] & gRfuLinkStatus->unk_02) { gReceivedRemoteLinkPlayers = 0; sub_800D630(); @@ -3611,7 +3611,7 @@ void sub_801011C(void) void sub_8010148(void) { - rfu_REQ_disconnect(gUnknown_03007890->unk_02 | gUnknown_03007890->unk_03); + rfu_REQ_disconnect(gRfuLinkStatus->unk_02 | gRfuLinkStatus->unk_03); rfu_waitREQComplete(); sub_801011C(); } @@ -3631,7 +3631,7 @@ void LinkRfu_FatalError(void) { sub_800D630(); gUnknown_03005000.unk_ce4 = 1; - gUnknown_03005000.unk_ce3 = gUnknown_03007890->unk_02 | gUnknown_03007890->unk_03; + gUnknown_03005000.unk_ce3 = gRfuLinkStatus->unk_02 | gRfuLinkStatus->unk_03; } void sub_80101CC(void) @@ -3821,7 +3821,7 @@ bool8 sub_8010540(void) { if (gUnknown_03005000.unk_cd1[i] < 5 || gUnknown_03005000.unk_cd1[i] > 6) { - if (gUnknown_03007880[i]->unk_34 == 0x46 || gUnknown_03007880[i]->unk_34 == 0x48) + if (gRfuSlotStatusNI[i]->unk_34 == 0x46 || gRfuSlotStatusNI[i]->unk_34 == 0x48) { if (gUnknown_03005000.unk_cd5[i] == 8) { @@ -3833,7 +3833,7 @@ bool8 sub_8010540(void) } } - else if (gUnknown_03007880[gUnknown_03005000.unk_c3e]->unk_34 == 0x47) + else if (gRfuSlotStatusNI[gUnknown_03005000.unk_c3e]->unk_34 == 0x47) rfu_clearSlot(8, i); { @@ -3898,7 +3898,7 @@ u32 sub_8010714(u16 a0, const u8 *a1) u8 r0 = sub_8011CE4(a1, a0); if (r0 == 0xFF) return 2; - if (gUnknown_03007880[r0]->unk_0 == 0) + if (gRfuSlotStatusNI[r0]->unk_0 == 0) return 1; return 0; } @@ -3910,7 +3910,7 @@ void sub_8010750(void) sub_8010540(); for (i = 0; i < 4; i++) { - if (gUnknown_03007880[i]->unk_0 == 0x26 || gUnknown_03007880[i]->unk_0 == 0x27) + if (gRfuSlotStatusNI[i]->unk_0 == 0x26 || gRfuSlotStatusNI[i]->unk_0 == 0x27) { if (gUnknown_03005000.unk_cd5[i] == 10) gUnknown_03005000.unk_cd5[i] = 11; @@ -3924,16 +3924,16 @@ s32 sub_80107A0(void) s32 retval = 0; if (gUnknown_03005000.unk_c85 == 8) { - if (gUnknown_03007880[gUnknown_03005000.unk_c3e]->unk_0 == 0x26 || gUnknown_03007880[gUnknown_03005000.unk_c3e]->unk_0 == 0x27) + if (gRfuSlotStatusNI[gUnknown_03005000.unk_c3e]->unk_0 == 0x26 || gRfuSlotStatusNI[gUnknown_03005000.unk_c3e]->unk_0 == 0x27) rfu_clearSlot(4, gUnknown_03005000.unk_c3e); } - if (gUnknown_03007880[gUnknown_03005000.unk_c3e]->unk_34 == 0x46 || gUnknown_03007880[gUnknown_03005000.unk_c3e]->unk_34 == 0x48) + if (gRfuSlotStatusNI[gUnknown_03005000.unk_c3e]->unk_34 == 0x46 || gRfuSlotStatusNI[gUnknown_03005000.unk_c3e]->unk_34 == 0x48) { rfu_clearSlot(8, gUnknown_03005000.unk_c3e); sub_8011A64(gUnknown_03005000.unk_c86, 0); retval = gUnknown_03005000.unk_c86; } - else if (gUnknown_03007880[gUnknown_03005000.unk_c3e]->unk_34 == 0x47) + else if (gRfuSlotStatusNI[gUnknown_03005000.unk_c3e]->unk_34 == 0x47) { rfu_clearSlot(8, gUnknown_03005000.unk_c3e); retval = 6; @@ -4282,14 +4282,14 @@ void sub_801103C(void) void sub_8011068(u8 a0) { gUnknown_02022B14.unk_0a_7 = a0; - rfu_REQ_configGameData(0, 2, &gUnknown_02022B14, gUnknown_02022B22); + rfu_REQ_configGameData(0, 2, (const u8 *)&gUnknown_02022B14, gUnknown_02022B22); } void sub_8011090(u8 a0, u32 a1, u32 a2) { if (a0) sub_8010F84(a0, a1, a2); - rfu_REQ_configGameData(0, 2, &gUnknown_02022B14, gUnknown_02022B22); + rfu_REQ_configGameData(0, 2, (const u8 *)&gUnknown_02022B14, gUnknown_02022B22); } void sub_80110B8(u32 a0) @@ -4370,7 +4370,7 @@ void sub_801120C(u8 a0, u8 unused1) { if ((gUnknown_03004140.unk_14 >> i) & 1) { - struct UnkLinkRfuStruct_02022B14 *structPtr = &gUnknown_03007890->unk_14[i].unk_06; + struct UnkLinkRfuStruct_02022B14 *structPtr = (void *)gRfuLinkStatus->unk_14[i].gname; if (structPtr->unk_0a_0 == sub_800F7DC()->unk_0a_0) { gUnknown_03005000.unk_cd1[i] = 0; @@ -4528,7 +4528,7 @@ u8 sub_8011628(s32 a0) { if ((a0 >> i) & 1) { - struct UnkLinkRfuStruct_02022B14 *structPtr = &gUnknown_03007890->unk_14[i].unk_06; + struct UnkLinkRfuStruct_02022B14 *structPtr = (void *)gRfuLinkStatus->unk_14[i].gname; if (structPtr->unk_0a_0 == 0x45) ret |= (1 << i); } @@ -4629,7 +4629,7 @@ void sub_8011674(u8 a0, u8 unused1) break; case 0x32: gUnknown_03005000.unk_f0 = 3; - if (gUnknown_03007890->unk_00 == 0) + if (gRfuLinkStatus->unk_00 == 0) gUnknown_03005000.unk_c3c = 1; break; case 0x30: @@ -4654,7 +4654,7 @@ void sub_8011674(u8 a0, u8 unused1) sub_800C27C(0); } - if (gUnknown_03007890->unk_00 == 0xFF && gUnknown_03004140.unk_07 == 0 && FuncIsActiveTask(sub_800EB44) == TRUE) + if (gRfuLinkStatus->unk_00 == 0xFF && gUnknown_03004140.unk_07 == 0 && FuncIsActiveTask(sub_800EB44) == TRUE) gUnknown_03005000.unk_04 = 0x11; sub_8011A64(2, a0); @@ -4825,13 +4825,13 @@ u8 sub_8011CE4(const u8 *a0, u16 a1) for (i = 0; i < 4; i++) { - u16 trainerId = ReadU16(gUnknown_03007890->unk_14[i].unk_06.unk_00.playerTrainerId); - if (sub_8010454(gUnknown_03007890->unk_14[i].unk_04) - && !StringCompare(a0, gUnknown_03007890->unk_14[i].playerName) + u16 trainerId = ReadU16(gRfuLinkStatus->unk_14[i].gname + 2); + if (sub_8010454(gRfuLinkStatus->unk_14[i].unk_04) + && !StringCompare(a0, gRfuLinkStatus->unk_14[i].uname) && a1 == trainerId) { ret = i; - if (gUnknown_03007890->unk_14[i].unk_02 != 0xFF) + if (gRfuLinkStatus->unk_14[i].unk_02 != 0xFF) break; } } @@ -4911,7 +4911,7 @@ void sub_8011EF4(u8 taskId) u8 id = sub_8011CE4((u8*)data, ReadU16(&data[8])); if (id != 0xFF) { - if (gUnknown_03007890->unk_14[id].unk_02 != 0xFF) + if (gRfuLinkStatus->unk_14[id].unk_02 != 0xFF) { gUnknown_03005000.unk_c3d = id; if (sub_800EEBC()) @@ -5006,9 +5006,9 @@ void sub_801209C(u8 taskId) u8 id = sub_8011CE4(gUnknown_03005000.playerName, trainerId); if (id != 0xFF) { - if (!sub_801200C(gTasks[taskId].data[1], &gUnknown_03007890->unk_14[id].unk_06)) + if (!sub_801200C(gTasks[taskId].data[1], (void *)gRfuLinkStatus->unk_14[id].gname)) { - if (gUnknown_03007890->unk_14[id].unk_02 != 0xFF && !sub_800C12C(gUnknown_03007890->unk_14[id].unk_00, 0x5A)) + if (gRfuLinkStatus->unk_14[id].unk_02 != 0xFF && !sub_800C12C(gRfuLinkStatus->unk_14[id].unk_00, 0x5A)) { gUnknown_03005000.unk_04 = 0xA; DestroyTask(taskId); @@ -5081,17 +5081,17 @@ void sub_801229C(void) s32 i, j; nullsub_13(GetBlockReceivedStatus(), 0x1C, 0x13, 2); - nullsub_13(gUnknown_03007890->unk_02, 0x14, 1, 1); - nullsub_13(gUnknown_03007890->unk_03, 0x17, 1, 1); + nullsub_13(gRfuLinkStatus->unk_02, 0x14, 1, 1); + nullsub_13(gRfuLinkStatus->unk_03, 0x17, 1, 1); if (gUnknown_03005000.unk_0c == 1) { for (i = 0; i < 4; i++) { - if ((gUnknown_03007890->unk_07 >> i) & 1) + if ((gRfuLinkStatus->unk_07 >> i) & 1) { - nullsub_13(gUnknown_03007890->unk_14[i].unk_04, 1, i + 3, 4); - nullsub_5((void*) &gUnknown_03007890->unk_14[i].unk_06, 6, i + 3); - nullsub_5(gUnknown_03007890->unk_14[i].playerName, 0x16, i + 3); + nullsub_13(gRfuLinkStatus->unk_14[i].unk_04, 1, i + 3, 4); + nullsub_5((void*)gRfuLinkStatus->unk_14[i].gname, 6, i + 3); + nullsub_5(gRfuLinkStatus->unk_14[i].uname, 0x16, i + 3); } } for (i = 0; i < 4; i++) @@ -5103,7 +5103,7 @@ void sub_801229C(void) } nullsub_5(gUnknown_082ED868, 1, 0xF); } - else if (gUnknown_03007890->unk_02 != 0 && gUnknown_03007890->unk_07 != 0) + else if (gRfuLinkStatus->unk_02 != 0 && gRfuLinkStatus->unk_07 != 0) { for (i = 0; i < 4; i++) { @@ -5111,19 +5111,19 @@ void sub_801229C(void) nullsub_5(gUnknown_082ED84B, 6, i + 3); nullsub_5(gUnknown_082ED85B, 0x16, i + 3); } - nullsub_13(gUnknown_03007890->unk_14[gUnknown_03005000.unk_c3e].unk_04, 1, 3, 4); - nullsub_5((void*) &gUnknown_03007890->unk_14[gUnknown_03005000.unk_c3e].unk_06, 6, 3); - nullsub_5(gUnknown_03007890->unk_14[gUnknown_03005000.unk_c3e].playerName, 0x16, 3); + nullsub_13(gRfuLinkStatus->unk_14[gUnknown_03005000.unk_c3e].unk_04, 1, 3, 4); + nullsub_5((void*)gRfuLinkStatus->unk_14[gUnknown_03005000.unk_c3e].gname, 6, 3); + nullsub_5(gRfuLinkStatus->unk_14[gUnknown_03005000.unk_c3e].uname, 0x16, 3); } else { - for (i = 0; i < gUnknown_03007890->unk_08; i++) + for (i = 0; i < gRfuLinkStatus->unk_08; i++) { - if (gUnknown_03007890->unk_14[i].unk_02 != 0xFF) + if (gRfuLinkStatus->unk_14[i].unk_02 != 0xFF) { - nullsub_13(gUnknown_03007890->unk_14[i].unk_04, 1, i + 3, 4); - nullsub_13(gUnknown_03007890->unk_14[i].unk_00, 6, i + 3, 4); - nullsub_5(gUnknown_03007890->unk_14[i].playerName, 0x16, i + 3); + nullsub_13(gRfuLinkStatus->unk_14[i].unk_04, 1, i + 3, 4); + nullsub_13(gRfuLinkStatus->unk_14[i].unk_00, 6, i + 3, 4); + nullsub_5(gRfuLinkStatus->unk_14[i].uname, 0x16, i + 3); } } for (; i < 4; i++) diff --git a/src/trade.c b/src/trade.c index a9a0b9b2ad..9abc614280 100644 --- a/src/trade.c +++ b/src/trade.c @@ -254,7 +254,7 @@ static bool32 sub_80771BC(void) { if (gUnknown_02022C2C == 29) { - if (gUnknown_03007880[sub_800E87C(gUnknown_03004140.unk_00)]->unk_0 == 0) + if (gRfuSlotStatusNI[sub_800E87C(gUnknown_03004140.unk_00)]->unk_0 == 0) return TRUE; else return FALSE; diff --git a/src/union_room.c b/src/union_room.c index 4eea421baa..9cb3bec797 100644 --- a/src/union_room.c +++ b/src/union_room.c @@ -4077,7 +4077,7 @@ s32 sub_8017EA0(u8 *dst, u32 gender, u16 *arg2, struct UnkStruct_URoom *arg3) StringCopy(arg3->field_58 + 0x10, gSpeciesNames[sUnionRoomTrade.playerSpecies]); for (i = 0; i < 4; i++) { - if (gUnknown_03007890->unk_14[i].unk_04 == 2) + if (gRfuLinkStatus->unk_14[i].unk_04 == 2) { ConvertIntToDecimalStringN(arg3->field_58 + 0x20, arg2[2], STR_CONV_MODE_LEFT_ALIGN, 3); StringCopy(arg3->field_58 + 0x30, gSpeciesNames[arg2[1]]); From c2be2e8c69eda4ecf0a1daa499dde10174b0891b Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Thu, 16 Jan 2020 05:38:24 +0800 Subject: [PATCH 35/37] sync documentation from firered --- include/librfu.h | 732 ++++++++++++++++++++++++++++++++++++---------- src/librfu.c | 4 +- src/librfu_stwi.c | 446 +++++++++++++--------------- src/link_rfu.c | 228 +++++++-------- src/trade.c | 2 +- src/union_room.c | 2 +- 6 files changed, 896 insertions(+), 518 deletions(-) diff --git a/include/librfu.h b/include/librfu.h index 1806482e41..8dd25541f6 100644 --- a/include/librfu.h +++ b/include/librfu.h @@ -4,56 +4,278 @@ #include "global.h" #include "main.h" -enum -{ - RFU_RESET = 0x10, - RFU_LINK_STATUS, - RFU_VERSION_STATUS, - RFU_SYSTEM_STATUS, - RFU_SLOT_STATUS, - RFU_CONFIG_STATUS, - RFU_GAME_CONFIG, - RFU_SYSTEM_CONFIG, - RFU_UNK18, - RFU_SC_START, - RFU_SC_POLLING, - RFU_SC_END, - RFU_SP_START, - RFU_SP_POLLING, - RFU_SP_END, - RFU_CP_START, - RFU_CP_POLLING, - RFU_CP_END, - RFU_UNK22, - RFU_UNK23, - RFU_DATA_TX, - RFU_DATA_TX_AND_CHANGE, - RFU_DATA_RX, - RFU_MS_CHANGE, - RFU_DATA_READY_AND_CHANGE, - RFU_DISCONNECTED_AND_CHANGE, - RFU_UNK2A, - RFU_UNK2B, - RFU_UNK2C, - RFU_UNK2D, - RFU_UNK2E, - RFU_UNK2F, - RFU_DISCONNECT, - RFU_TEST_MODE, - RFU_CPR_START, - RFU_CPR_POLLING, - RFU_CPR_END, - RFU_UNK35, - RFU_UNK36, - RFU_RESUME_RETRANSMIT_AND_CHANGE, - RFU_UNK38, - RFU_UNK39, - RFU_UNK3A, - RFU_UNK3B, - RFU_UNK3C, - RFU_STOP_MODE, // 3D -}; +/* TODOs: + * - split files + * - documentation + * - decompile librfu_intr.s once arm support is back again + (for internal structs not documented in SDK) + * - check if any field needs to be volatile + * - check if field names make sense + */ +// -------------------------------------------------------------------------- +// +// Restrictions When Using RFU +// +// -------------------------------------------------------------------------- +/* + The following restrictions apply when using RFU. + + + (a) The timer for Sound DMA uses only 0 + (b) The prescaler for the timer count for the Sound DMA uses 59.5 ns. + (c) The sound sampling rate is Max36.314KHz. + + + These types of DMA can be operated on a maximum CPU cycle of 42 cycles. + Calculate the number of the transferable DMA count based on this 42 cycles and the access cycles of the destination and source. + For example, if both the CPU internal RAM --> VRAM have a one cycle access, then a 21 count DMA can occur. + + + If RFU is used outside of these restrictions, problems, such as the loss of data caused by the failure of the AGB, as a clock slave, + to notify that data has been received from the RFU, will occur. + When this problem occurs, the REQ callback will send a REQ_commandID=ID_CLOCK_SLAVE_MS_CHANGE_ERROR_BY_DMA_REQ notification. + (When using Link Manager, the LMAN call back will send a LMAN_msg=LMAN_MSG_CLOCK_SLAVE_MS_CHANGE_ERROR_BY_DMA notification.) + +*/ + +// REQ-COMMAND (STWI) ID CODE LIST + +// REQ Command ID returned by the REQ callback +#define ID_RESET_REQ 0x0010 +#define ID_LINK_STATUS_REQ 0x0011 +#define ID_VERSION_STATUS_REQ 0x0012 // not defined in SDK header +#define ID_SYSTEM_STATUS_REQ 0x0013 +#define ID_SLOT_STATUS_REQ 0x0014 // not defined in SDK header +#define ID_CONFIG_STATUS_REQ 0x0015 // not defined in SDK header +#define ID_GAME_CONFIG_REQ 0x0016 +#define ID_SYSTEM_CONFIG_REQ 0x0017 +#define ID_SC_START_REQ 0x0019 +#define ID_SC_POLL_REQ 0x001a +#define ID_SC_END_REQ 0x001b +#define ID_SP_START_REQ 0x001c +#define ID_SP_POLL_REQ 0x001d +#define ID_SP_END_REQ 0x001e +#define ID_CP_START_REQ 0x001f +#define ID_CP_POLL_REQ 0x0020 +#define ID_CP_END_REQ 0x0021 +#define ID_DATA_TX_REQ 0x0024 +#define ID_DATA_TX_AND_CHANGE_REQ 0x0025 +#define ID_DATA_RX_REQ 0x0026 +#define ID_MS_CHANGE_REQ 0x0027 // When returned by the REQ callback, this ID indicates that execution of rfu_REQ_changeMasterSlave has finished. + // This ID is returned by both the REQ callback and the MSC callback. + // When returned by the MSC callback, this is notification that after the AGB has been made into the clock slave, the MC_Timer expired and the RFU returned the AGB to be the clock master. +#define ID_DISCONNECT_REQ 0x0030 +#define ID_TEST_MODE_REQ 0x0031 // not defined in SDK header +#define ID_CPR_START_REQ 0x0032 +#define ID_CPR_POLL_REQ 0x0033 +#define ID_CPR_END_REQ 0x0034 +#define ID_UNK35_REQ 0x0035 // not defined in SDK header +#define ID_RESUME_RETRANSMIT_AND_CHANGE_REQ 0x0037 +#define ID_STOP_MODE_REQ 0x003d +#define ID_CLOCK_SLAVE_MS_CHANGE_ERROR_BY_DMA_REQ 0x00ff // When the AGB is the clock slave, the RFU generates an informational notice, and an automatically started DMA, such as HDMA, is generated at the instant the AGB is being returned as the clock master. This ID is notified by a REQ callback when the exchange of this information (REQ command) fails. + +// REQ Command ID returned by the MSC callback +#define ID_DISCONNECTED_AND_CHANGE_REQ 0x0029 +#define ID_DATA_READY_AND_CHANGE_REQ 0x0028 +#define ID_DRAC_REQ_WITH_ACK_FLAG 0x0128 + +// -------------------------------------------------------------------------- +// +// Data Definitions +// +// -------------------------------------------------------------------------- + +#define RFU_ID 0x00008001 // ID number of AGB-RFU device: ID returned by execution of rfu_REQBN_softReset_and_checkID. + +#define RFU_MBOOT_DOWNLOADER_SERIAL_NO 0x0000 // The game serial number of the multi-boot downloader (programs that boot without a Game Pak) + +#define RFU_API_BUFF_SIZE_RAM 0x0e8c // Necessary size for buffer specified by rfu_initializeAPI (fast communication version that operates the library SIO interrupt routines in RAM) +#define RFU_API_BUFF_SIZE_ROM 0x052c // Necessary size for buffer specified by rfu_initializeAPI (fast communication version that operates the library SIO interrupt routines in ROM) + +#define RFU_CHILD_MAX 4 // Maximum number of slaves that can be connected to one parent device + +#define RFU_GAME_NAME_LENGTH 13 // Possible length of game name set by rfu_REQB_configGameData +#define RFU_USER_NAME_LENGTH 8 // Possible length of user name set by rfu_REQB_configGameData + +#define RFU_H_DMA_MAX_CPU_CYCLE 42 // Maximum number of CPU cycles for H-DMA or DMA that starts with V-Blank that can operate when using RFU + +// Value to determine the level of the icon that displays the link strength of the wireless status (value of rfuLinkStatus->strength[0-3]) +#define RFU_LINK_ICON_LEVEL4_MAX 255 // 90% -100% (If the value is betwen 229 and 255, the icon level is 4) +#define RFU_LINK_ICON_LEVEL4_MIN 229 +#define RFU_LINK_ICON_LEVEL3_MAX 228 // 50% - 89% (If the value is betwen 127 and 228, the icon level is 3) +#define RFU_LINK_ICON_LEVEL3_MIN 127 +#define RFU_LINK_ICON_LEVEL2_MAX 126 // 10% - 49% (If the value is betwen 25 and 126, the icon level is 2) +#define RFU_LINK_ICON_LEVEL2_MIN 25 +#define RFU_LINK_ICON_LEVEL1_MAX 24 // 0% - 9% (If the value is betwen 0 and 24, the icon level is 1) +#define RFU_LINK_ICON_LEVEL1_MIN 0 + + +// ******************************************************* +// Definition Data for Arguments Used in Library Functions +// ******************************************************* +// Specified by u16 mbootFlag in rfu_REQ_configGameData +#define RFU_MBOOT_FLAG 0x01 // Enabling this flag, allows connection to a multi-boot program. + +// AvailSlot (number of slots available for connection) used in u16 availSlotFlag in rfu_REQ_configSystem +#define AVAIL_SLOT4 0x0000 +#define AVAIL_SLOT3 0x0001 +#define AVAIL_SLOT2 0x0002 +#define AVAIL_SLOT1 0x0003 + +// u8 connTypeFlag specified by rfu_setRecvBuffer +#define TYPE_UNI 0x10 // UNI-type +#define TYPE_NI 0x20 // NI-type + +// u8 connTypeFlag specified by rfu_clearSlot +#define TYPE_UNI_SEND 0x01 // UNI-type send +#define TYPE_UNI_RECV 0x02 // UNI-type receive +#define TYPE_NI_SEND 0x04 // NI-type send +#define TYPE_NI_RECV 0x08 // NI-type receive + +// ******************************************************* +// Definition Data Returned by Return Values for Library Functions +// ******************************************************* + +// The function doesn't have return value. +// Value of u8 *status for rfu_REQ_pollConnectParent (Connection Trial Status) +// #define CP_STATUS_DONE 0x00 // Connection successful +// #define CP_STATUS_IN_PROCESS 0x01 // Connecting +// #define CP_STATUS_SLOT_CLOSED 0x02 // Parent device is not in connection mode with child device +// #define CP_STATUS_DISCONNECTED 0x03 // Disconnected by parent device while connecting +// #define CP_STATUS_UNKNOWN 0xff // Cannot read status due to REQ-API execution error + +// The function doesn't exist. +// Value of u8 *status argument for rfu_REQ_pollRecoveryConnect (Link Restore Status) +// #define RC_STATUS_DONE 0x00 // Connection restore successful +// #define RC_STATUS_FAILED 0x01 // Connection restore failure (meaningless to try anymore) +// #define RC_STATUS_SEARCHING_PARENT 0x02 // Searching for parent device +// #define RC_STATUS_UNKNOWN 0xff // Cannot read status due to REQ-API execution error + +// Value of u8 *linkLossReason argument for rfu_REQBN_watchLink (Reason for Link Loss) +#define REASON_DISCONNECTED 0x00 // State of complete disconnection with rfuLL_disconnect and no possibility of restoring the link (can detect only child device) +#define REASON_LINK_LOSS 0x01 // State of link loss that allows for the possibility for the link to be restored + + +// ******************************************************* +// Definition Data Returned with Return Values for Library Functions +// ******************************************************* + +// Value returned by rfu_getMasterSlave +#define AGB_CLK_SLAVE 0 // AGB clock slave +#define AGB_CLK_MASTER 1 // AGB clock master + +// ******************************************************* +// Error Code Group for Library Functions +// ******************************************************* + +// Error codes returned by u16 REQ_result with a REQ callback when a REQ-API function is executed +#define ERR_REQ_CMD 0x0000 +#define ERR_REQ_CMD_CLOCK_DRIFT (ERR_REQ_CMD | 0x0001) // Clock drift occurs when a REQ command is sent +#define ERR_REQ_CMD_SENDING (ERR_REQ_CMD | 0x0002) // The next command cannot be issued because a REQ command is being sent +#define ERR_REQ_CMD_ACK_REJECTION (ERR_REQ_CMD | 0x0003) // The REQ command was refused when issued +#define ERR_REQ_CMD_CLOCK_SLAVE (ERR_REQ_CMD | 0x0004) // Issuing the REQ command was attempted but failed because the AGB is the clock slave +#define ERR_REQ_CMD_IME_DISABLE (ERR_REQ_CMD | 0x0006) // Issuing the REQ command was attempted but failed because the IME register is 0 + +#define ERR_PID_NOT_FOUND 0x0100 // The specified PID does not exist in the gRfuLinkStatus->partner[0-3].id list + +// Error code returned by the return value of rfu_initializeAPI +#define ERR_RFU_API_BUFF_SIZE 0x0001 +#define ERR_RFU_API_BUFF_ADR 0x0002 + +// Error codes returned by return values for rfu_REQBN_softReset_and_checkID +#define ERR_ID_CHECK_IME_DISABLE 0xffffffff // ID check could not be executed because REG_IME=0 when executing rfu_REQBN_softReset_and_checkID + +// Error codes returned by rfu_getConnectParentStatus and rfu_CHILD_getConnectRecoveryStatus +#define ERR_REQ_CMD_ID (ERR_REQ_CMD | 0x0010) // A required REQ command was not executed within this function execution + +// Error codes returned by rfu_NI_setSendData, rfu_UNI_setSendData, and rfu_NI_CHILD_setSendGameName +#define ERR_MODE 0x0300 +#define ERR_MODE_NOT_PARENT (ERR_MODE | 0x0000) // not in SDK +#define ERR_MODE_NOT_CONNECTED (ERR_MODE | 0x0001) // RFU is not in connection mode (parent or child) + +#define ERR_SLOT 0x0400 +#define ERR_SLOT_NO (ERR_SLOT | 0x0000) // The specified slot number is not right +#define ERR_SLOT_NOT_CONNECTED (ERR_SLOT | 0x0001) // The specified slot is not connected +#define ERR_SLOT_BUSY (ERR_SLOT | 0x0002) // The specified slot is already communicating +#define ERR_SLOT_NOT_SENDING (ERR_SLOT | 0x0003) // The specified slot is not currently sending (Note: This is returned by rfu_UNI_re_setSendData) +#define ERR_SLOT_TARGET (ERR_SLOT | 0x0004) // The specified target slot is not right + +#define ERR_SUBFRAME_SIZE 0x0500 // The specified subframe size is either larger than the remaining communication frame size or smaller than the link layer subframe header size + +// Error code returned by rfu_clearSlot, rfu_setRecvBuffer, and rfu_changeSendTarget +#define ERR_COMM_TYPE 0x0600 // The specified communication format is not right + +// Error code returned by rfu_REQ_recvData (when receiving NI-type or UNI-type data) +#define ERR_DATA_RECV 0x0700 // Error notification is issued in the following format. + // "ERR_DATA_RECV | (slot number issuing error with 0x0010<recv.errorCode. + +// Error code during NI-type communication (code entered into gRfuSlotStatusNI[x]->recv.errorCode) +#define ERR_RECV_BUFF_OVER (ERR_DATA_RECV | 0x0001) // The receive data size is larger than the receive buffer (Note: This error is used for both NI and UNI) +#define ERR_RECV_REPLY_SUBFRAME_SIZE (ERR_DATA_RECV | 0x0002) // All frames are already in use by other communications, and a subframe for reception response could not be secured + +// Error code during UNI-type communication (code entered into gRfuSlotStatusUNI[x]->recv.errorCode) +#define ERR_RECV_DATA_OVERWRITED (ERR_DATA_RECV | 0x0008) // Received new data when gRfuSlotStatusUNI[x]->recv.newDataFlag=1 + +// not in SDK header +#define ERR_RECV_UNK (ERR_DATA_RECV | 0x0001 | 0x0008) + +// ******************************************************* +// Definition Data Used by Global Variables in the Library +// ******************************************************* + +// gRfuLinkStatus------------------------------------------- +// Connection status (refer to gRfuLinkStatus->parentChild) +#define MODE_NEUTRAL 0xff // Initialization +#define MODE_CHILD 0x00 // Child +#define MODE_PARENT 0x01 // Parent + + +// gRfuSlotStatusNI,UNI----------------------------------- +// Definition data for NI-(Numbered Information) and UNI-(Un-Numbered Information) type communication + +// Definition data common to NI- and UNI-type communication +#define LLF_P_SIZE 87 // Maximum link layer communication frame size for the Parent (Maximum number of bytes per transmission) +#define LLF_C_SIZE 16 // " " for the Child +#define LLSF_P_HEADER_SIZE 3 // Header size used by one link layer subframe (NI or UNI frame) for the Parent +#define LLSF_C_HEADER_SIZE 2 // " " for the Child + +// Link Layer Communication Code +#define LCOM_NULL 0x0000 +#define LCOM_NI_START 0x0001 +#define LCOM_NI 0x0002 +#define LCOM_NI_END 0x0003 +#define LCOM_UNI 0x0004 + +// Flag for Slot Status Data +#define SLOT_BUSY_FLAG 0x8000 // Slot in use +#define SLOT_SEND_FLAG 0x0020 // Send +#define SLOT_RECV_FLAG 0x0040 // Receive + +// NI- and UNI-type shared slot stand-by data (same state as gRfuSlotStatusNI[x]->send or ->recv.state or gRfuSlotStatusUNI) +#define SLOT_STATE_READY 0x0000 // Slot initialization + +// Status data for NI-type communication (gRfuSlotStatusNI[x]->send or ->recv.state) +#define SLOT_STATE_SEND_START (SLOT_BUSY_FLAG | SLOT_SEND_FLAG | LCOM_NI_START) // Start transmission +#define SLOT_STATE_SENDING (SLOT_BUSY_FLAG | SLOT_SEND_FLAG | LCOM_NI) // Transmitting +#define SLOT_STATE_SEND_LAST (SLOT_BUSY_FLAG | SLOT_SEND_FLAG | LCOM_NI_END) // Verify transmission end +#define SLOT_STATE_SEND_NULL (SLOT_BUSY_FLAG | SLOT_SEND_FLAG | LCOM_NULL) // Send NULL subframe to notify end of transmission +#define SLOT_STATE_SEND_SUCCESS ( SLOT_SEND_FLAG | 0x006) // Transmission successful +#define SLOT_STATE_SEND_FAILED ( SLOT_SEND_FLAG | 0x007) // Transmission failed + // Distinction of slot where transmission succeeded/failed compares gRfuSlotStatusNI[x]->send.bmSlot and same bmSlot_org +#define SLOT_STATE_RECV_START (SLOT_BUSY_FLAG | SLOT_RECV_FLAG | LCOM_NI_START) // Start reception +#define SLOT_STATE_RECEIVING (SLOT_BUSY_FLAG | SLOT_RECV_FLAG | LCOM_NI) // Receiving +#define SLOT_STATE_RECV_LAST (SLOT_BUSY_FLAG | SLOT_RECV_FLAG | LCOM_NI_END) // Verify reception end +#define SLOT_STATE_RECV_SUCCESS ( SLOT_RECV_FLAG | 0x006) // Reception successful +#define SLOT_STATE_RECV_FAILED ( SLOT_RECV_FLAG | 0x007) // Reception failed +#define SLOT_STATE_RECV_SUCCESS_AND_SENDSIDE_UNKNOWN (SLOT_RECV_FLAG | 0x008) // The data was received successful, but because the end of the communication was incomplete, whether the transmission side status is successful or failed is unknown +#define SLOT_STATE_RECV_IGNORE ( SLOT_RECV_FLAG | 0x009) // Ignore reception (refer to gRfuSlotStatusNI[x]->recv.errorCode for reason for ignoring) + +// Status data for UNI-type communication (refer to gRfuSlotStatusUNI[x]->send.state) +#define SLOT_STATE_SEND_UNI (SLOT_BUSY_FLAG | SLOT_SEND_FLAG | LCOM_UNI) // Transmitting + +// the following structs are not documented in SDK struct RfuPacket8 { u8 data[0x74]; @@ -73,164 +295,362 @@ union RfuPacket struct STWIStatus { - vs32 unk_0; - u8 txParams; - u8 unk_5; - u8 activeCommand; - u8 unk_7; - u8 unk_8; - u8 unk_9; + vs32 state; + u8 reqLength; + u8 reqNext; + u8 reqActiveCommand; + u8 ackLength; + u8 ackNext; + u8 ackActiveCommand; u8 timerSelect; u8 unk_b; - int timerState; + s32 timerState; // this field is u32 in firered vu8 timerActive; u8 unk_11; - vu16 unk_12; + vu16 error; vu8 msMode; - u8 unk_15; + u8 recoveryCount; u8 unk_16; u8 unk_17; void (*callbackM)(); - void (*callbackS)(); - u32 callbackID; + void (*callbackS)(u16); + void (*unk_20)(void); union RfuPacket *txPacket; union RfuPacket *rxPacket; vu8 unk_2c; - u8 padding[3]; }; +// This struct is used as u8 array in SDK. struct RfuIntrStruct { - u8 rxPacketAlloc[0x74]; - u8 txPacketAlloc[0x74]; - u8 block1[0x960]; - u8 block2[0x30]; + union RfuPacket rxPacketAlloc; + union RfuPacket txPacketAlloc; + u8 block1[0x960]; // size of librfu_intr.s binary + struct STWIStatus block2; }; +// Data Structure for Transmitting UNI-Type Data +struct UNISend +{ + u16 state; // Slot communication state (SLOT_STATE_READY, SLOT_STATE_SEND_UNI) + u8 dataReadyFlag; // Flag indicating transmission data is prepared (0: data sent; 1: transmission data ready) + // Set with rfu_UNI_re_setSendData or rfu_UNI_readySendData, cleared when data is sent with rfu_REQ_sendData. + u8 bmSlot; // Expresses transmission destination slot as bits + u16 payloadSize; // Payload size of 1 transmission. "size" specified by rfu_UNI_setSendData or rfu_UNI_re_setSendData is used. + const void *src; // Beginning address of transmission data +}; + +// Data Structure for Receiving UNI Data +struct UNIRecv +{ + u16 state; // Slot communication state (SLOT_STATE_READY, SLOT_STATE_RECEIVING, SLOT_STATE_RECV_IGNORE) + u16 errorCode; // Error code during reception + u16 dataSize; // Size of receive data + u8 newDataFlag; // Flag indicating whether receive data has newly arrived (0: no newly arrived data; 1: newly arrived data) + // The flag is cleared with rfu_UNI_clearRecvNewDataFlag; it is set when data is received with rfu_REQ_recvData. + u8 dataBlockFlag; // Flag for unreferenced receive data overwrite block (default is 0 Note: not used) +}; + +// Slot Status Data Structure for UNI-Type Communication struct RfuSlotStatusUNI { - u16 unk_0; - u8 unk_2; - u8 unk_3; - u8 fill_4[14]; - u8 unk_12; - u32 unk_14; - u32 unk_18; - struct RfuIntrStruct unk_1c; + struct UNISend send; // Transmission Status + struct UNIRecv recv; // Reception Status + void *recvBuffer; // Reception Buffer Address + u32 recvBufferSize; // Reception Buffer Size +}; + +#define WINDOW_COUNT 4 + +struct NIComm +{ + u16 state; // Communication state of slot + u16 failCounter; // Count of failed transmissions/receptions (Count is increased when transmission/reception of data does not succeed within 1PF=16.7 ms) + const u8 *now_p[WINDOW_COUNT]; // Address of current send/receive (The data is divided into WINDOW_COUNT blocks and sent in payloadSize units.) + // remainSize is u32 in SDK. This is a hack to match ASM + s32 remainSize; // Size of remaining communication data + u16 errorCode; // Error code + u8 bmSlot; // Expresses the current communication slot in bits + // (When sending from the Master, because multiple slaves can be specified with bmSlot, communications are terminated based on the failCounter for each child device) + // Parameters used inside the Library + u8 recvAckFlag[WINDOW_COUNT]; + u8 ack; + u8 phase; + u8 n[WINDOW_COUNT]; + // Parameters indicating the current communication content + const void *src; // Start address transmission data (valid only for transmitting device) + u8 bmSlotOrg; // Expresses the communication source slot at the beginning of the transmission in bits (valid only for transmitting device) + u8 dataType; // Transmission/reception data type (0: User data; 1: Game identification information) + u16 payloadSize; // Payload size for one transmission + u32 dataSize; // Size of transmission/reception data + // Calculated by subtracting link layer header size from subFrameSize specified by the rfu_NI_setSendData function }; struct RfuSlotStatusNI { - u16 unk_0; - u16 unk_2; - u8 fill_4[0x16]; - u8 unk_1a; - u8 fill_1b[0x19]; - u16 unk_34; - u16 unk_36; - u8 fill_38[0x16]; - u8 unk_4e; - u8 fill_4f[0x12]; - u8 unk_61; - u8 fill_62[6]; - void *unk_68; - void *unk_6c; - u8 unk_70[0x70]; + struct NIComm send; // Transmission Status + struct NIComm recv; // Reception Status + void *recvBuffer; // Reception Buffer Address + u32 recvBufferSize; // Reception Buffer Size }; -struct RfuFixed +// Game Identification Information Data Structure +struct RfuTgtData { - u32 unk_0; - u32 unk_4; - u8 unk_8[0xD4]; - u32 unk_dc; -}; - -#define RFU_GAME_NAME_LENGTH 13 // Possible length of game name set by rfu_REQB_configGameData -#define RFU_USER_NAME_LENGTH 8 - -struct RfuUnk5Sub -{ - u16 unk_00; - u8 unk_02; - u16 unk_04; + u16 id; // ID of parent candidate ID of connection partner + u8 slot; // Slot number where parent candidate can enter Connection slot number + u8 mbootFlag; // Flag to indicate whether or not the parent candidate Flag to indicate whether or not the connection partner + // is multiboot program for download is multiboot program for download + u16 serialNo; // Game serial number of parent candidate Game serial number of connection partner u8 gname[RFU_GAME_NAME_LENGTH + 2]; // Game name of parent candidate Game name of connection partner u8 uname[RFU_USER_NAME_LENGTH + 1]; // User name for parent candidate User name for connection partner }; struct RfuLinkStatus { - u8 unk_00; - u8 unk_01; - u8 unk_02; - u8 unk_03; - u8 unk_04; - u8 unk_05; - u8 unk_06; - u8 unk_07; - u8 unk_08; - u8 filler_09[1]; - u8 unk_0a[4]; - u8 filler_0e[6]; - struct RfuUnk5Sub unk_14[5]; + u8 parentChild; // Connection status (0x01:MODE_PARENT 0x00:MODE_CHILD 0xff:MODE_NEUTRAL) + u8 connCount; // Number of connections + u8 connSlotFlag; // Flag to indicate in bits the connection slot (0x01<block1; - DmaCopy16(3, &IntrSIO32, interruptStruct->block1, 0x960); - gSTWIStatus = (struct STWIStatus*)interruptStruct->block2; + DmaCopy16(3, &IntrSIO32, interruptStruct->block1, sizeof(interruptStruct->block1)); + gSTWIStatus = &interruptStruct->block2; } else { - *interrupt = (IntrFunc)IntrSIO32; - gSTWIStatus = (struct STWIStatus*)interruptStruct->block1; + *interrupt = IntrSIO32; + gSTWIStatus = (struct STWIStatus *)interruptStruct->block1; } - - gSTWIStatus->rxPacket = (union RfuPacket*)interruptStruct->rxPacketAlloc; - gSTWIStatus->txPacket = (union RfuPacket*)interruptStruct->txPacketAlloc; + gSTWIStatus->rxPacket = &interruptStruct->rxPacketAlloc; + gSTWIStatus->txPacket = &interruptStruct->txPacketAlloc; gSTWIStatus->msMode = 1; - gSTWIStatus->unk_0 = 0; - gSTWIStatus->txParams = 0; - gSTWIStatus->unk_5 = 0; - gSTWIStatus->unk_7 = 0; - gSTWIStatus->unk_8 = 0; - gSTWIStatus->unk_9 = 0; + gSTWIStatus->state = 0; + gSTWIStatus->reqLength = 0; + gSTWIStatus->reqNext = 0; + gSTWIStatus->ackLength = 0; + gSTWIStatus->ackNext = 0; + gSTWIStatus->ackActiveCommand = 0; gSTWIStatus->timerState = 0; gSTWIStatus->timerActive = 0; - gSTWIStatus->unk_12 = 0; - gSTWIStatus->unk_15 = 0; + gSTWIStatus->error = 0; + gSTWIStatus->recoveryCount = 0; gSTWIStatus->unk_2c = 0; - - REG_RCNT = 0x100; //TODO: mystery bit? + REG_RCNT = 0x100; // TODO: mystery bit? REG_SIOCNT = SIO_INTR_ENABLE | SIO_32BIT_MODE | SIO_115200_BPS; STWI_init_Callback_M(); STWI_init_Callback_S(); - IntrEnable(INTR_FLAG_SERIAL); } -void STWI_init_timer(IntrFunc *interrupt, int timerSelect) +void STWI_init_timer(IntrFunc *interrupt, s32 timerSelect) { *interrupt = STWI_intr_timer; gSTWIStatus->timerSelect = timerSelect; - IntrEnable(INTR_FLAG_TIMER0 << gSTWIStatus->timerSelect); } @@ -78,25 +65,24 @@ void AgbRFU_SoftReset(void) timerH = ®_TMCNT_H(gSTWIStatus->timerSelect); *timerH = 0; *timerL = 0; - *timerH = 0x83; + *timerH = TIMER_ENABLE | TIMER_1024CLK; while (*timerL <= 0x11) REG_RCNT = 0x80A2; *timerH = 3; REG_RCNT = 0x80A0; REG_SIOCNT = SIO_INTR_ENABLE | SIO_32BIT_MODE | SIO_115200_BPS; - - gSTWIStatus->unk_0 = 0; - gSTWIStatus->txParams = 0; - gSTWIStatus->unk_5 = 0; - gSTWIStatus->activeCommand = 0; - gSTWIStatus->unk_7 = 0; - gSTWIStatus->unk_8 = 0; - gSTWIStatus->unk_9 = 0; + gSTWIStatus->state = 0; + gSTWIStatus->reqLength = 0; + gSTWIStatus->reqNext = 0; + gSTWIStatus->reqActiveCommand = 0; + gSTWIStatus->ackLength = 0; + gSTWIStatus->ackNext = 0; + gSTWIStatus->ackActiveCommand = 0; gSTWIStatus->timerState = 0; gSTWIStatus->timerActive = 0; - gSTWIStatus->unk_12 = 0; + gSTWIStatus->error = 0; gSTWIStatus->msMode = 1; - gSTWIStatus->unk_15 = 0; + gSTWIStatus->recoveryCount = 0; gSTWIStatus->unk_2c = 0; } @@ -110,13 +96,13 @@ u16 STWI_read_status(u8 index) switch (index) { case 0: - return gSTWIStatus->unk_12; + return gSTWIStatus->error; case 1: return gSTWIStatus->msMode; case 2: - return gSTWIStatus->unk_0; + return gSTWIStatus->state; case 3: - return gSTWIStatus->activeCommand; + return gSTWIStatus->reqActiveCommand; default: return 0xFFFF; } @@ -124,136 +110,130 @@ u16 STWI_read_status(u8 index) void STWI_init_Callback_M(void) { - STWI_set_Callback_M(0); + STWI_set_Callback_M(NULL); } void STWI_init_Callback_S(void) { - STWI_set_Callback_S(0); + STWI_set_Callback_S(NULL); } -void STWI_set_Callback_M(void *callback) +// The callback can take 2 or 3 arguments. +void STWI_set_Callback_M(void *callbackM) { - gSTWIStatus->callbackM = callback; + gSTWIStatus->callbackM = callbackM; } -void STWI_set_Callback_S(void *callback) +void STWI_set_Callback_S(void (*callbackS)(u16)) { - gSTWIStatus->callbackS = callback; + gSTWIStatus->callbackS = callbackS; } -void STWI_set_Callback_ID(u32 id) +void STWI_set_Callback_ID(void (*func)(void)) // name in SDK, but is actually setting a function pointer { - gSTWIStatus->callbackID = id; + gSTWIStatus->unk_20 = func; } u16 STWI_poll_CommandEnd(void) { while (gSTWIStatus->unk_2c == TRUE) ; - return gSTWIStatus->unk_12; + return gSTWIStatus->error; } void STWI_send_ResetREQ(void) { - if (!STWI_init(RFU_RESET)) + if (!STWI_init(ID_RESET_REQ)) { - gSTWIStatus->txParams = 0; + gSTWIStatus->reqLength = 0; STWI_start_Command(); } } void STWI_send_LinkStatusREQ(void) { - if (!STWI_init(RFU_LINK_STATUS)) + if (!STWI_init(ID_LINK_STATUS_REQ)) { - gSTWIStatus->txParams = 0; + gSTWIStatus->reqLength = 0; STWI_start_Command(); } } void STWI_send_VersionStatusREQ(void) { - if (!STWI_init(RFU_VERSION_STATUS)) + if (!STWI_init(ID_VERSION_STATUS_REQ)) { - gSTWIStatus->txParams = 0; + gSTWIStatus->reqLength = 0; STWI_start_Command(); } } void STWI_send_SystemStatusREQ(void) { - if (!STWI_init(RFU_SYSTEM_STATUS)) + if (!STWI_init(ID_SYSTEM_STATUS_REQ)) { - gSTWIStatus->txParams = 0; + gSTWIStatus->reqLength = 0; STWI_start_Command(); } } void STWI_send_SlotStatusREQ(void) { - if (!STWI_init(RFU_SLOT_STATUS)) + if (!STWI_init(ID_SLOT_STATUS_REQ)) { - gSTWIStatus->txParams = 0; + gSTWIStatus->reqLength = 0; STWI_start_Command(); } } void STWI_send_ConfigStatusREQ(void) { - if (!STWI_init(RFU_CONFIG_STATUS)) + if (!STWI_init(ID_CONFIG_STATUS_REQ)) { - gSTWIStatus->txParams = 0; + gSTWIStatus->reqLength = 0; STWI_start_Command(); } } -void STWI_send_GameConfigREQ(u8 * unk1, u8 *data) +void STWI_send_GameConfigREQ(const u8 *unk1, const u8 *data) { u8 *packetBytes; - int i; + s32 i; - if (!STWI_init(RFU_GAME_CONFIG)) + if (!STWI_init(ID_GAME_CONFIG_REQ)) { - gSTWIStatus->txParams = 6; - - //TODO: what is unk1 + gSTWIStatus->reqLength = 6; + // TODO: what is unk1 packetBytes = gSTWIStatus->txPacket->rfuPacket8.data; packetBytes += sizeof(u32); - *(u16*)packetBytes = *(u16*)unk1; - + *(u16 *)packetBytes = *(u16 *)unk1; packetBytes += sizeof(u16); unk1 += sizeof(u16); - - for (i = 0; i < 14; i++) + for (i = 0; i < 14; ++i) { *packetBytes = *unk1; - packetBytes++; - unk1++; + ++packetBytes; + ++unk1; } - - for (i = 0; i < 8; i++) + for (i = 0; i < 8; ++i) { *packetBytes = *data; - packetBytes++; - data++; + ++packetBytes; + ++data; } - STWI_start_Command(); } } void STWI_send_SystemConfigREQ(u16 unk1, u8 unk2, u8 unk3) { - if (!STWI_init(RFU_SYSTEM_CONFIG)) + if (!STWI_init(ID_SYSTEM_CONFIG_REQ)) { u8 *packetBytes; - gSTWIStatus->txParams = 1; - + gSTWIStatus->reqLength = 1; packetBytes = gSTWIStatus->txPacket->rfuPacket8.data; packetBytes += sizeof(u32); - *packetBytes++ = unk3; *packetBytes++ = unk2; *(u16*)packetBytes = unk1; @@ -263,63 +243,63 @@ void STWI_send_SystemConfigREQ(u16 unk1, u8 unk2, u8 unk3) void STWI_send_SC_StartREQ(void) { - if (!STWI_init(RFU_SC_START)) + if (!STWI_init(ID_SC_START_REQ)) { - gSTWIStatus->txParams = 0; + gSTWIStatus->reqLength = 0; STWI_start_Command(); } } void STWI_send_SC_PollingREQ(void) { - if (!STWI_init(RFU_SC_POLLING)) + if (!STWI_init(ID_SC_POLL_REQ)) { - gSTWIStatus->txParams = 0; + gSTWIStatus->reqLength = 0; STWI_start_Command(); } } void STWI_send_SC_EndREQ(void) { - if (!STWI_init(RFU_SC_END)) + if (!STWI_init(ID_SC_END_REQ)) { - gSTWIStatus->txParams = 0; + gSTWIStatus->reqLength = 0; STWI_start_Command(); } } void STWI_send_SP_StartREQ(void) { - if (!STWI_init(RFU_SP_START)) + if (!STWI_init(ID_SP_START_REQ)) { - gSTWIStatus->txParams = 0; + gSTWIStatus->reqLength = 0; STWI_start_Command(); } } void STWI_send_SP_PollingREQ(void) { - if (!STWI_init(RFU_SP_POLLING)) + if (!STWI_init(ID_SP_POLL_REQ)) { - gSTWIStatus->txParams = 0; + gSTWIStatus->reqLength = 0; STWI_start_Command(); } } void STWI_send_SP_EndREQ(void) { - if (!STWI_init(RFU_SP_END)) + if (!STWI_init(ID_SP_END_REQ)) { - gSTWIStatus->txParams = 0; + gSTWIStatus->reqLength = 0; STWI_start_Command(); } } void STWI_send_CP_StartREQ(u16 unk1) { - if (!STWI_init(RFU_CP_START)) + if (!STWI_init(ID_CP_START_REQ)) { - gSTWIStatus->txParams = 1; + gSTWIStatus->reqLength = 1; gSTWIStatus->txPacket->rfuPacket32.data[0] = unk1; STWI_start_Command(); } @@ -327,142 +307,132 @@ void STWI_send_CP_StartREQ(u16 unk1) void STWI_send_CP_PollingREQ(void) { - if (!STWI_init(RFU_CP_POLLING)) + if (!STWI_init(ID_CP_POLL_REQ)) { - gSTWIStatus->txParams = 0; + gSTWIStatus->reqLength = 0; STWI_start_Command(); } } void STWI_send_CP_EndREQ(void) { - if (!STWI_init(RFU_CP_END)) + if (!STWI_init(ID_CP_END_REQ)) { - gSTWIStatus->txParams = 0; + gSTWIStatus->reqLength = 0; STWI_start_Command(); } } -void STWI_send_DataTxREQ(void *in, u8 size) +void STWI_send_DataTxREQ(const void *in, u8 size) { - if (!STWI_init(RFU_DATA_TX)) + if (!STWI_init(ID_DATA_TX_REQ)) { - u8 txParams = (size / sizeof(u32)); + u8 reqLength = (size / sizeof(u32)); if (size & (sizeof(u32) - 1)) - txParams += 1; - - gSTWIStatus->txParams = txParams; - CpuCopy32(in, gSTWIStatus->txPacket->rfuPacket32.data, gSTWIStatus->txParams * sizeof(u32)); + reqLength += 1; + gSTWIStatus->reqLength = reqLength; + CpuCopy32(in, gSTWIStatus->txPacket->rfuPacket32.data, gSTWIStatus->reqLength * sizeof(u32)); STWI_start_Command(); } } -void STWI_send_DataTxAndChangeREQ(void *in, u8 size) +void STWI_send_DataTxAndChangeREQ(const void *in, u8 size) { - if (!STWI_init(RFU_DATA_TX_AND_CHANGE)) + if (!STWI_init(ID_DATA_TX_AND_CHANGE_REQ)) { - u8 txParams = (size / sizeof(u32)); + u8 reqLength = (size / sizeof(u32)); if (size & (sizeof(u32) - 1)) - txParams += 1; - - gSTWIStatus->txParams = txParams; - CpuCopy32(in, gSTWIStatus->txPacket->rfuPacket32.data, gSTWIStatus->txParams * sizeof(u32)); + reqLength += 1; + gSTWIStatus->reqLength = reqLength; + CpuCopy32(in, gSTWIStatus->txPacket->rfuPacket32.data, gSTWIStatus->reqLength * sizeof(u32)); STWI_start_Command(); } } void STWI_send_DataRxREQ(void) { - if (!STWI_init(RFU_DATA_RX)) + if (!STWI_init(ID_DATA_RX_REQ)) { - gSTWIStatus->txParams = 0; + gSTWIStatus->reqLength = 0; STWI_start_Command(); } } void STWI_send_MS_ChangeREQ(void) { - if (!STWI_init(RFU_MS_CHANGE)) + if (!STWI_init(ID_MS_CHANGE_REQ)) { - gSTWIStatus->txParams = 0; + gSTWIStatus->reqLength = 0; STWI_start_Command(); } } void STWI_send_DataReadyAndChangeREQ(u8 unk) { - if (!STWI_init(RFU_DATA_READY_AND_CHANGE)) + if (!STWI_init(ID_DATA_READY_AND_CHANGE_REQ)) { if (!unk) { - gSTWIStatus->txParams = 0; + gSTWIStatus->reqLength = 0; } else { u8 *packetBytes; - gSTWIStatus->txParams = 1; - + gSTWIStatus->reqLength = 1; packetBytes = gSTWIStatus->txPacket->rfuPacket8.data; packetBytes += sizeof(u32); - *packetBytes++ = unk; *packetBytes++ = 0; *packetBytes++ = 0; *packetBytes = 0; } - STWI_start_Command(); } } void STWI_send_DisconnectedAndChangeREQ(u8 unk0, u8 unk1) { - if (!STWI_init(RFU_DISCONNECTED_AND_CHANGE)) + if (!STWI_init(ID_DISCONNECTED_AND_CHANGE_REQ)) { u8 *packetBytes; - gSTWIStatus->txParams = 1; - + gSTWIStatus->reqLength = 1; packetBytes = gSTWIStatus->txPacket->rfuPacket8.data; packetBytes += sizeof(u32); - *packetBytes++ = unk0; *packetBytes++ = unk1; *packetBytes++ = 0; *packetBytes = 0; - STWI_start_Command(); } } void STWI_send_ResumeRetransmitAndChangeREQ(void) { - if (!STWI_init(RFU_RESUME_RETRANSMIT_AND_CHANGE)) + if (!STWI_init(ID_RESUME_RETRANSMIT_AND_CHANGE_REQ)) { - gSTWIStatus->txParams = 0; + gSTWIStatus->reqLength = 0; STWI_start_Command(); } } void STWI_send_DisconnectREQ(u8 unk) { - if (!STWI_init(RFU_DISCONNECT)) + if (!STWI_init(ID_DISCONNECT_REQ)) { - gSTWIStatus->txParams = 1; + gSTWIStatus->reqLength = 1; gSTWIStatus->txPacket->rfuPacket32.data[0] = unk; - STWI_start_Command(); } } void STWI_send_TestModeREQ(u8 unk0, u8 unk1) { - if (!STWI_init(RFU_TEST_MODE)) + if (!STWI_init(ID_TEST_MODE_REQ)) { - gSTWIStatus->txParams = 1; + gSTWIStatus->reqLength = 1; gSTWIStatus->txPacket->rfuPacket32.data[0] = unk0 | (unk1 << 8); - STWI_start_Command(); } } @@ -472,71 +442,69 @@ void STWI_send_CPR_StartREQ(u16 unk0, u16 unk1, u8 unk2) u32 *packetData; u32 arg1; - if (!STWI_init(RFU_CPR_START)) + if (!STWI_init(ID_CPR_START_REQ)) { - gSTWIStatus->txParams = 2; - + gSTWIStatus->reqLength = 2; arg1 = unk1 | (unk0 << 16); packetData = gSTWIStatus->txPacket->rfuPacket32.data; packetData[0] = arg1; packetData[1] = unk2; - STWI_start_Command(); } } void STWI_send_CPR_PollingREQ(void) { - if (!STWI_init(RFU_CPR_POLLING)) + if (!STWI_init(ID_CPR_POLL_REQ)) { - gSTWIStatus->txParams = 0; + gSTWIStatus->reqLength = 0; STWI_start_Command(); } } void STWI_send_CPR_EndREQ(void) { - if (!STWI_init(RFU_CPR_END)) + if (!STWI_init(ID_CPR_END_REQ)) { - gSTWIStatus->txParams = 0; + gSTWIStatus->reqLength = 0; STWI_start_Command(); } } void STWI_send_StopModeREQ(void) { - if (!STWI_init(RFU_STOP_MODE)) + if (!STWI_init(ID_STOP_MODE_REQ)) { - gSTWIStatus->txParams = 0; + gSTWIStatus->reqLength = 0; STWI_start_Command(); } } -void STWI_intr_timer(void) +static void STWI_intr_timer(void) { switch (gSTWIStatus->timerState) { - //TODO: Make an enum for these - case 2: - gSTWIStatus->timerActive = 1; - STWI_set_timer(50); - break; - case 1: - case 4: - STWI_stop_timer(); - STWI_restart_Command(); - break; - case 3: - gSTWIStatus->timerActive = 1; - STWI_stop_timer(); - STWI_reset_ClockCounter(); - if (gSTWIStatus->callbackM) - gSTWIStatus->callbackM(255, 0); - break; + // TODO: Make an enum for these + case 2: + gSTWIStatus->timerActive = 1; + STWI_set_timer(50); + break; + case 1: + case 4: + STWI_stop_timer(); + STWI_restart_Command(); + break; + case 3: + gSTWIStatus->timerActive = 1; + STWI_stop_timer(); + STWI_reset_ClockCounter(); + if (gSTWIStatus->callbackM != NULL) + gSTWIStatus->callbackM(255, 0); + break; } } -void STWI_set_timer(u8 unk) +static void STWI_set_timer(u8 unk) { vu16 *timerL; vu16 *timerH; @@ -546,144 +514,134 @@ void STWI_set_timer(u8 unk) REG_IME = 0; switch (unk) { - case 50: - *timerL = 0xFCCB; - gSTWIStatus->timerState = 1; - break; - case 80: - *timerL = 0xFAE0; - gSTWIStatus->timerState = 2; - break; - case 100: - *timerL = 0xF996; - gSTWIStatus->timerState = 3; - break; - case 130: - *timerL = 0xF7AD; - gSTWIStatus->timerState = 4; - break; + case 50: + *timerL = 0xFCCB; + gSTWIStatus->timerState = 1; + break; + case 80: + *timerL = 0xFAE0; + gSTWIStatus->timerState = 2; + break; + case 100: + *timerL = 0xF996; + gSTWIStatus->timerState = 3; + break; + case 130: + *timerL = 0xF7AD; + gSTWIStatus->timerState = 4; + break; } *timerH = TIMER_ENABLE | TIMER_INTR_ENABLE | TIMER_1024CLK; REG_IF = INTR_FLAG_TIMER0 << gSTWIStatus->timerSelect; REG_IME = 1; } -void STWI_stop_timer(void) +static void STWI_stop_timer(void) { gSTWIStatus->timerState = 0; - REG_TMCNT_L(gSTWIStatus->timerSelect) = 0; REG_TMCNT_H(gSTWIStatus->timerSelect) = 0; } -u16 STWI_init(u8 request) +static u16 STWI_init(u8 request) { if (!REG_IME) { - gSTWIStatus->unk_12 = 6; - if (gSTWIStatus->callbackM) - gSTWIStatus->callbackM(request, gSTWIStatus->unk_12); + gSTWIStatus->error = ERR_REQ_CMD_IME_DISABLE; + if (gSTWIStatus->callbackM != NULL) + gSTWIStatus->callbackM(request, gSTWIStatus->error); return TRUE; } else if (gSTWIStatus->unk_2c == TRUE) { - gSTWIStatus->unk_12 = 2; + gSTWIStatus->error = ERR_REQ_CMD_SENDING; gSTWIStatus->unk_2c = FALSE; - if (gSTWIStatus->callbackM) - gSTWIStatus->callbackM(request, gSTWIStatus->unk_12); + if (gSTWIStatus->callbackM != NULL) + gSTWIStatus->callbackM(request, gSTWIStatus->error); return TRUE; } else if(!gSTWIStatus->msMode) { - gSTWIStatus->unk_12 = 4; - if (gSTWIStatus->callbackM) - gSTWIStatus->callbackM(request, gSTWIStatus->unk_12, gSTWIStatus); + gSTWIStatus->error = ERR_REQ_CMD_CLOCK_SLAVE; + if (gSTWIStatus->callbackM != NULL) + gSTWIStatus->callbackM(request, gSTWIStatus->error, gSTWIStatus); return TRUE; } else { gSTWIStatus->unk_2c = TRUE; - gSTWIStatus->activeCommand = request; - gSTWIStatus->unk_0 = 0; - gSTWIStatus->txParams = 0; - gSTWIStatus->unk_5 = 0; - gSTWIStatus->unk_7 = 0; - gSTWIStatus->unk_8 = 0; - gSTWIStatus->unk_9 = 0; + gSTWIStatus->reqActiveCommand = request; + gSTWIStatus->state = 0; + gSTWIStatus->reqLength = 0; + gSTWIStatus->reqNext = 0; + gSTWIStatus->ackLength = 0; + gSTWIStatus->ackNext = 0; + gSTWIStatus->ackActiveCommand = 0; gSTWIStatus->timerState = 0; gSTWIStatus->timerActive = 0; - gSTWIStatus->unk_12 = 0; - gSTWIStatus->unk_15 = 0; - + gSTWIStatus->error = 0; + gSTWIStatus->recoveryCount = 0; REG_RCNT = 0x100; REG_SIOCNT = SIO_INTR_ENABLE | SIO_32BIT_MODE | SIO_115200_BPS; return FALSE; } } -int STWI_start_Command() +static s32 STWI_start_Command(void) { u16 imeTemp; - // Yes, it matters that it's casted to a u32... - *(u32*)gSTWIStatus->txPacket->rfuPacket8.data = 0x99660000 | (gSTWIStatus->txParams << 8) | gSTWIStatus->activeCommand; + // equivalent to gSTWIStatus->txPacket->rfuPacket32.command, + // but the cast here is required to avoid register issue + *(u32 *)gSTWIStatus->txPacket->rfuPacket8.data = 0x99660000 | (gSTWIStatus->reqLength << 8) | gSTWIStatus->reqActiveCommand; REG_SIODATA32 = gSTWIStatus->txPacket->rfuPacket32.command; - - gSTWIStatus->unk_0 = 0; - gSTWIStatus->unk_5 = 1; - + gSTWIStatus->state = 0; + gSTWIStatus->reqNext = 1; imeTemp = REG_IME; REG_IME = 0; REG_IE |= (INTR_FLAG_TIMER0 << gSTWIStatus->timerSelect); REG_IE |= INTR_FLAG_SERIAL; REG_IME = imeTemp; - REG_SIOCNT = SIO_INTR_ENABLE | SIO_32BIT_MODE | SIO_MULTI_BUSY | SIO_115200_BPS; - return 0; } -int STWI_restart_Command(void) +static s32 STWI_restart_Command(void) { - if (gSTWIStatus->unk_15 <= 1) + if (gSTWIStatus->recoveryCount <= 1) { - gSTWIStatus->unk_15++; + ++gSTWIStatus->recoveryCount; STWI_start_Command(); } else { - if (gSTWIStatus->activeCommand == RFU_MS_CHANGE || gSTWIStatus->activeCommand == RFU_DATA_TX_AND_CHANGE || gSTWIStatus->activeCommand == RFU_UNK35 || gSTWIStatus->activeCommand == RFU_RESUME_RETRANSMIT_AND_CHANGE) + if (gSTWIStatus->reqActiveCommand == ID_MS_CHANGE_REQ || gSTWIStatus->reqActiveCommand == ID_DATA_TX_AND_CHANGE_REQ || gSTWIStatus->reqActiveCommand == ID_UNK35_REQ || gSTWIStatus->reqActiveCommand == ID_RESUME_RETRANSMIT_AND_CHANGE_REQ) { - gSTWIStatus->unk_12 = 1; + gSTWIStatus->error = ERR_REQ_CMD_CLOCK_DRIFT; gSTWIStatus->unk_2c = 0; - - if (gSTWIStatus->callbackM) - gSTWIStatus->callbackM(gSTWIStatus->activeCommand, gSTWIStatus->unk_12); + if (gSTWIStatus->callbackM != NULL) + gSTWIStatus->callbackM(gSTWIStatus->reqActiveCommand, gSTWIStatus->error); } else { - gSTWIStatus->unk_12 = 1; + gSTWIStatus->error = ERR_REQ_CMD_CLOCK_DRIFT; gSTWIStatus->unk_2c = 0; - - if (gSTWIStatus->callbackM) - gSTWIStatus->callbackM(gSTWIStatus->activeCommand, gSTWIStatus->unk_12); - - gSTWIStatus->unk_0 = 4; //TODO: what's 4 + if (gSTWIStatus->callbackM != NULL) + gSTWIStatus->callbackM(gSTWIStatus->reqActiveCommand, gSTWIStatus->error); + gSTWIStatus->state = 4; // TODO: what's 4 } } - return 0; } -int STWI_reset_ClockCounter(void) +static s32 STWI_reset_ClockCounter(void) { - gSTWIStatus->unk_0 = 5; //TODO: what is 5 - gSTWIStatus->txParams = 0; - gSTWIStatus->unk_5 = 0; + gSTWIStatus->state = 5; // TODO: what is 5 + gSTWIStatus->reqLength = 0; + gSTWIStatus->reqNext = 0; REG_SIODATA32 = (1 << 31); REG_SIOCNT = 0; REG_SIOCNT = SIO_INTR_ENABLE | SIO_32BIT_MODE | SIO_115200_BPS; REG_SIOCNT = (SIO_INTR_ENABLE | SIO_32BIT_MODE | SIO_115200_BPS) + 0x7F; - return 0; } diff --git a/src/link_rfu.c b/src/link_rfu.c index 6f45b528e3..9291f574eb 100644 --- a/src/link_rfu.c +++ b/src/link_rfu.c @@ -364,7 +364,7 @@ u32 sub_800BEC0(void) void rfu_REQ_sendData_wrapper(u8 r2) { u8 val; - if (!gRfuLinkStatus->unk_00) + if (!gRfuLinkStatus->parentChild) { val = gUnknown_03004140.unk_02; r2 = 0; @@ -515,14 +515,14 @@ u8 sub_800C12C(u16 r6, u16 r8) sub_800D30C(0xF3, 0x01); return 2; } - for (i = 0; i < gRfuLinkStatus->unk_08; i++) + for (i = 0; i < gRfuLinkStatus->findParentCount; i++) { - if (gRfuLinkStatus->unk_14[i].unk_00 == r6) + if (gRfuLinkStatus->partner[i].id == r6) { break; } } - if (gRfuLinkStatus->unk_08 == 0 || i == gRfuLinkStatus->unk_08) + if (gRfuLinkStatus->findParentCount == 0 || i == gRfuLinkStatus->findParentCount) { gUnknown_03004140.unk_14 = 3; sub_800D30C(0xF3, 0x01); @@ -561,7 +561,7 @@ void sub_800C210(u8 a0) gUnknown_03004140.unk_34[i] = 0; } } - i = gRfuLinkStatus->unk_03 & a0; + i = gRfuLinkStatus->linkLossSlotFlag & a0; if (i) { sub_800D334(i); @@ -630,8 +630,8 @@ void sub_800C27C(bool8 a0) case 16: gUnknown_03004140.unk_04 = gUnknown_03004140.unk_11; gUnknown_03004140.unk_05 = gUnknown_03004140.unk_12; - sub_800D334(gRfuLinkStatus->unk_03); - gUnknown_03004140.unk_14 = gRfuLinkStatus->unk_03; + sub_800D334(gRfuLinkStatus->linkLossSlotFlag); + gUnknown_03004140.unk_14 = gRfuLinkStatus->linkLossSlotFlag; sub_800D30C(0x33, 0x01); return; case 17: @@ -703,7 +703,7 @@ bool8 sub_800C36C(u16 a0) } sub_800D610(); } - if (gRfuLinkStatus->unk_00 == 1) + if (gRfuLinkStatus->parentChild == 1) { if (sp2) { @@ -834,7 +834,7 @@ void sub_800C54C(u32 a0) case 15: break; case 16: - rfu_REQ_CHILD_startConnectRecovery(gRfuLinkStatus->unk_03); + rfu_REQ_CHILD_startConnectRecovery(gRfuLinkStatus->linkLossSlotFlag); break; case 17: rfu_REQ_CHILD_pollConnectRecovery(); @@ -857,7 +857,7 @@ void sub_800C54C(u32 a0) gUnknown_03004140.unk_0e = 0; } } while (gUnknown_03004140.unk_04 == 18 || gUnknown_03004140.unk_04 == 19); - if (gRfuLinkStatus->unk_00 != 1 || !sub_800C36C(0)) + if (gRfuLinkStatus->parentChild != 1 || !sub_800C36C(0)) { sub_800CF34(); sub_800D158(); @@ -910,7 +910,7 @@ static void sub_800C744(u32 a0) static void sub_800C7B4(u16 r8, u16 r6) { u8 sp0; - register u8 *stwiRecvBuffer asm("r0"); + register struct RfuIntrStruct *stwiRecvBuffer asm("r0"); u8 *tmp; u8 i; @@ -983,7 +983,7 @@ static void sub_800C7B4(u16 r8, u16 r6) { sub_800D30C(0x20, 0x01); } - if (gUnknown_03004140.unk_0b && gUnknown_03004140.unk_1a != 1 && gRfuLinkStatus->unk_08 == 4) + if (gUnknown_03004140.unk_0b && gUnknown_03004140.unk_1a != 1 && gRfuLinkStatus->findParentCount == 4) { rfu_REQ_endSearchParent(); rfu_waitREQComplete(); @@ -1059,11 +1059,11 @@ static void sub_800C7B4(u16 r8, u16 r6) case 50: if (r6 == 0) { - gUnknown_03004140.unk_14 = gRfuLinkStatus->unk_03; + gUnknown_03004140.unk_14 = gRfuLinkStatus->linkLossSlotFlag; gUnknown_03004140.unk_04 = gUnknown_03004140.unk_05 = 17; for (gUnknown_03004140.unk_10 = 0; gUnknown_03004140.unk_10 < 4; gUnknown_03004140.unk_10 ++) { - if ((gRfuLinkStatus->unk_03 >> gUnknown_03004140.unk_10) & 1) + if ((gRfuLinkStatus->linkLossSlotFlag >> gUnknown_03004140.unk_10) & 1) { break; } @@ -1092,7 +1092,7 @@ static void sub_800C7B4(u16 r8, u16 r6) else { gUnknown_03004140.unk_04 = gUnknown_03004140.unk_05 = 0; - sub_800D334(gRfuLinkStatus->unk_03); + sub_800D334(gRfuLinkStatus->linkLossSlotFlag); gUnknown_03004140.unk_1e = 0x33; } gUnknown_03004140.unk_34[gUnknown_03004140.unk_10] = 0; @@ -1126,7 +1126,7 @@ static void sub_800C7B4(u16 r8, u16 r6) { gUnknown_03004140.unk_04 = gUnknown_03004140.unk_05 = 0; sub_800D610(); - sub_800D334(gRfuLinkStatus->unk_02 | gRfuLinkStatus->unk_03); + sub_800D334(gRfuLinkStatus->connSlotFlag | gRfuLinkStatus->linkLossSlotFlag); gUnknown_03004140.unk_14 = sp0; sub_800D30C(0x25, 0x01); } @@ -1148,11 +1148,11 @@ static void sub_800C7B4(u16 r8, u16 r6) rfu_REQ_RFUStatus(); rfu_waitREQComplete(); rfu_getRFUStatus(&sp0); - if (sp0 == 0 && gRfuLinkStatus->unk_00 == 0) + if (sp0 == 0 && gRfuLinkStatus->parentChild == 0) { stwiRecvBuffer = rfu_getSTWIRecvBuffer(); - stwiRecvBuffer[4] = gRfuLinkStatus->unk_02; - stwiRecvBuffer[5] = 1; + stwiRecvBuffer->rxPacketAlloc.rfuPacket8.data[4] = gRfuLinkStatus->connSlotFlag; + stwiRecvBuffer->rxPacketAlloc.rfuPacket8.data[5] = 1; sub_800C36C(0x29); r6 = 0; } @@ -1163,7 +1163,7 @@ static void sub_800C7B4(u16 r8, u16 r6) if (r6 == 0) { stwiRecvBuffer = rfu_getSTWIRecvBuffer(); - gUnknown_03004140.unk_14 = stwiRecvBuffer[8]; + gUnknown_03004140.unk_14 = stwiRecvBuffer->rxPacketAlloc.rfuPacket8.data[8]; sub_800D358(gUnknown_03004140.unk_14); if (gUnknown_03004140.unk_30) { @@ -1191,7 +1191,7 @@ static void sub_800C7B4(u16 r8, u16 r6) gUnknown_03004140.unk_00 &= ~gUnknown_03004140.unk_14; if (gUnknown_03004140.unk_07) { - if (gRfuLinkStatus->unk_00 == 0xFF) + if (gRfuLinkStatus->parentChild == 0xFF) { if (gUnknown_03004140.unk_07 == 8) { @@ -1206,7 +1206,7 @@ static void sub_800C7B4(u16 r8, u16 r6) } } } - if (gRfuLinkStatus->unk_00 == 0xFF) + if (gRfuLinkStatus->parentChild == 0xFF) { if (gUnknown_03004140.unk_04 == 0) { @@ -1221,7 +1221,7 @@ static void sub_800C7B4(u16 r8, u16 r6) break; case 38: sub_800D20C(); - if (gRfuLinkStatus->unk_00 != 0xFF) + if (gRfuLinkStatus->parentChild != 0xFF) { sub_800D30C(0x50, 0x00); } @@ -1246,8 +1246,8 @@ static void sub_800C7B4(u16 r8, u16 r6) { if (r8 == 28 && r6 != 0 && gUnknown_03004140.unk_07 == 4) { - gRfuLinkStatus->unk_00 = 1; - gRfuLinkStatus->unk_02 = 15; + gRfuLinkStatus->parentChild = 1; + gRfuLinkStatus->connSlotFlag = 15; sub_800D334(15); rfu_waitREQComplete(); return; @@ -1279,7 +1279,7 @@ static void sub_800CEB0(u16 r6) r7 = gUnknown_03004140.unk_0e; gUnknown_03004140.unk_0e = 0; gUnknown_03004140.unk_0f = 1; - if (gRfuLinkStatus->unk_00 == 0) + if (gRfuLinkStatus->parentChild == 0) { sub_800C36C(r6); if (gUnknown_03004140.unk_02 != 1) @@ -1321,8 +1321,8 @@ static void sub_800CF34(void) if (gUnknown_03004140.unk_04 == 5 || gUnknown_03004140.unk_04 == 6 || gUnknown_03004140.unk_04 == 7 || gUnknown_03004140.unk_04 == 8) { - flags = ((gRfuLinkStatus->unk_02 ^ gUnknown_03004140.unk_0c) & gRfuLinkStatus->unk_02) & ~gRfuLinkStatus->unk_07; - gUnknown_03004140.unk_0c = gRfuLinkStatus->unk_02; + flags = ((gRfuLinkStatus->connSlotFlag ^ gUnknown_03004140.unk_0c) & gRfuLinkStatus->connSlotFlag) & ~gRfuLinkStatus->getNameFlag; + gUnknown_03004140.unk_0c = gRfuLinkStatus->connSlotFlag; if (flags) { gUnknown_03004140.unk_14 = flags; @@ -1340,14 +1340,14 @@ static void sub_800CF34(void) } else if (gUnknown_03004140.unk_24 & r4) { - if (gRfuSlotStatusNI[i]->unk_34 == 0x46) + if (gRfuSlotStatusNI[i]->recv.state == 0x46) { - if (gRfuSlotStatusNI[i]->unk_61 == 1) + if (gRfuSlotStatusNI[i]->recv.dataType == 1) { r5 = 0x02; for (ptr = gUnknown_03004140.unk_20; *ptr != 0xFFFF; ptr++) { - if (gRfuLinkStatus->unk_14[i].unk_04 == *ptr) + if (gRfuLinkStatus->partner[i].serialNo == *ptr) { gUnknown_03004140.unk_00 |= r4; gUnknown_03004140.unk_01++; @@ -1386,7 +1386,7 @@ static void sub_800CF34(void) if (gUnknown_03004140.unk_0d) { r5 = 0x01; - if (gRfuLinkStatus->unk_06 && ((gUnknown_03004140.unk_03 & gUnknown_03004140.unk_00) != gUnknown_03004140.unk_00)) + if (gRfuLinkStatus->sendSlotUNIFlag && ((gUnknown_03004140.unk_03 & gUnknown_03004140.unk_00) != gUnknown_03004140.unk_00)) { r5 = 0x00; } @@ -1434,7 +1434,7 @@ static void sub_800D158(void) REG_IME = 0; if (gUnknown_03004140.unk_04 == 15) { - if (--gUnknown_03004140.unk_28[gUnknown_03004140.unk_10] == 0 || gRfuSlotStatusNI[gUnknown_03004140.unk_10]->unk_0 == 0x27) + if (--gUnknown_03004140.unk_28[gUnknown_03004140.unk_10] == 0 || gRfuSlotStatusNI[gUnknown_03004140.unk_10]->send.state == 0x27) { sub_800D630(); gUnknown_03004140.unk_04 = 24; @@ -1453,7 +1453,7 @@ static void sub_800D158(void) if (gUnknown_03004140.unk_02 == 0) { gUnknown_03004140.unk_04 = gUnknown_03004140.unk_05 = 0; - sub_800D334(gRfuLinkStatus->unk_02 | gRfuLinkStatus->unk_03); + sub_800D334(gRfuLinkStatus->connSlotFlag | gRfuLinkStatus->linkLossSlotFlag); gUnknown_03004140.unk_14 = 0; sub_800D30C(0x25, 0x01); } @@ -1462,7 +1462,7 @@ static void sub_800D158(void) static void sub_800D20C(void) { - if (gUnknown_03004140.unk_04 == 15 && gRfuSlotStatusNI[gUnknown_03004140.unk_10]->unk_0 == 0x26) + if (gUnknown_03004140.unk_04 == 15 && gRfuSlotStatusNI[gUnknown_03004140.unk_10]->send.state == 0x26) { gUnknown_03004140.unk_04 = gUnknown_03004140.unk_05 = 0; rfu_clearSlot(4, gUnknown_03004140.unk_10); @@ -1490,11 +1490,11 @@ static u8 sub_800D294(void) const u16 *ptr; u8 flags = 0x00; - for (i = 0; i < gRfuLinkStatus->unk_08; i++) + for (i = 0; i < gRfuLinkStatus->findParentCount; i++) { for (ptr = gUnknown_03004140.unk_20; *ptr != 0xFFFF; ptr++) { - if (gRfuLinkStatus->unk_14[i].unk_04 == *ptr) + if (gRfuLinkStatus->partner[i].serialNo == *ptr) { flags |= (1 << i); } @@ -1525,34 +1525,34 @@ static void sub_800D358(u8 a0) { u8 i; - if (gRfuLinkStatus->unk_04) + if (gRfuLinkStatus->sendSlotNIFlag) { for (i = 0; i < 4; i++) { - if (gRfuSlotStatusNI[i]->unk_0 & 0x8000 && gRfuSlotStatusNI[i]->unk_1a & a0) + if (gRfuSlotStatusNI[i]->send.state & 0x8000 && gRfuSlotStatusNI[i]->send.bmSlot & a0) { - rfu_changeSendTarget(0x20, i, gRfuSlotStatusNI[i]->unk_1a & ~a0); + rfu_changeSendTarget(0x20, i, gRfuSlotStatusNI[i]->send.bmSlot & ~a0); } } } - if (gRfuLinkStatus->unk_05) + if (gRfuLinkStatus->recvSlotNIFlag) { for (i = 0; i < 4; i++) { - if (gRfuSlotStatusNI[i]->unk_34 & 0x8000 && gRfuSlotStatusNI[i]->unk_4e & a0) + if (gRfuSlotStatusNI[i]->recv.state & 0x8000 && gRfuSlotStatusNI[i]->recv.bmSlot & a0) { rfu_NI_stopReceivingData(i); } } } - if (gRfuLinkStatus->unk_06) + if (gRfuLinkStatus->sendSlotUNIFlag) { - gRfuLinkStatus->unk_06 &= ~a0; + gRfuLinkStatus->sendSlotUNIFlag &= ~a0; for (i = 0; i < 4; i++) { - if (gRfuSlotStatusUNI[i]->unk_0 == 0x8024 && a0 & gRfuSlotStatusUNI[i]->unk_3) + if (gRfuSlotStatusUNI[i]->send.state == 0x8024 && a0 & gRfuSlotStatusUNI[i]->send.bmSlot) { - gRfuSlotStatusUNI[i]->unk_3 &= ~a0; + gRfuSlotStatusUNI[i]->send.bmSlot &= ~a0; } } } @@ -1566,32 +1566,32 @@ static void sub_800D434(void) if (gUnknown_03004140.unk_18) { - if (gRfuLinkStatus->unk_04) + if (gRfuLinkStatus->sendSlotNIFlag) { for (i = 0; i < 4; i ++) { - if (gRfuSlotStatusNI[i]->unk_0 & 0x8000) + if (gRfuSlotStatusNI[i]->send.state & 0x8000) { flags = 0; for (j = 0; j < 4; j++) { - if ((gRfuSlotStatusNI[i]->unk_1a >> j) & 1 && gRfuSlotStatusNI[j]->unk_2 > gUnknown_03004140.unk_18) + if ((gRfuSlotStatusNI[i]->send.bmSlot >> j) & 1 && gRfuSlotStatusNI[j]->send.failCounter > gUnknown_03004140.unk_18) { flags |= (1 << j); } if (flags) { - rfu_changeSendTarget(0x20, i, flags ^ gRfuSlotStatusNI[i]->unk_1a); + rfu_changeSendTarget(0x20, i, flags ^ gRfuSlotStatusNI[i]->send.bmSlot); } } } } } - if (gRfuLinkStatus->unk_05) + if (gRfuLinkStatus->recvSlotNIFlag) { for (i = 0; i < 4; i++) { - if (gRfuSlotStatusNI[i]->unk_34 & 0x8000 && gRfuSlotStatusNI[i]->unk_36 > gUnknown_03004140.unk_18) + if (gRfuSlotStatusNI[i]->recv.state & 0x8000 && gRfuSlotStatusNI[i]->recv.failCounter > gUnknown_03004140.unk_18) { rfu_NI_stopReceivingData(i); } @@ -1628,7 +1628,7 @@ u8 sub_800D550(u8 a0, u16 a1) u8 sub_800D594(u16 a0) { - if (gRfuLinkStatus->unk_04 | gRfuLinkStatus->unk_05) + if (gRfuLinkStatus->sendSlotNIFlag | gRfuLinkStatus->recvSlotNIFlag) { gUnknown_03004140.unk_14 = 6; sub_800D30C(0xf3, 0x01); @@ -2049,17 +2049,17 @@ void ASCIIToPkmnStr(u8 *q1, const u8 *q2) u8 sub_800DD1C(u8 maxFlags) { u8 flagCount = 0; - u32 flags = gRfuLinkStatus->unk_02; + u32 flags = gRfuLinkStatus->connSlotFlag; u8 i; - if (gRfuLinkStatus->unk_00 == 1) + if (gRfuLinkStatus->parentChild == 1) { for (i = 0; i < 4; flags >>= 1, i++) { if (flags & 1) { if (maxFlags == flagCount + 1) - return gRfuLinkStatus->unk_0a[i]; + return gRfuLinkStatus->strength[i]; flagCount++; } } @@ -2069,7 +2069,7 @@ u8 sub_800DD1C(u8 maxFlags) for (i = 0; i < 4; flags >>= 1, i++) { if (flags & 1) - return gRfuLinkStatus->unk_0a[i]; + return gRfuLinkStatus->strength[i]; } } return 0; @@ -2177,10 +2177,10 @@ bool8 sub_800DE7C(struct UnkLinkRfuStruct_02022B14 *buff1, u8 *buff2, u8 idx) if (gUnknown_03004140.unk_06 == 1) { retVal = TRUE; - if (sub_8010454(gRfuLinkStatus->unk_14[idx].unk_04) && ((gRfuLinkStatus->unk_07 >> idx) & 1)) + if (sub_8010454(gRfuLinkStatus->partner[idx].serialNo) && ((gRfuLinkStatus->getNameFlag >> idx) & 1)) { - memcpy(buff1, gRfuLinkStatus->unk_14[idx].gname, 0xD); - memcpy(buff2, gRfuLinkStatus->unk_14[idx].uname, PLAYER_NAME_LENGTH + 1); + memcpy(buff1, gRfuLinkStatus->partner[idx].gname, 0xD); + memcpy(buff2, gRfuLinkStatus->partner[idx].uname, PLAYER_NAME_LENGTH + 1); } else { @@ -2191,10 +2191,10 @@ bool8 sub_800DE7C(struct UnkLinkRfuStruct_02022B14 *buff1, u8 *buff2, u8 idx) else { retVal = FALSE; - if (sub_8010454(gRfuLinkStatus->unk_14[idx].unk_04)) + if (sub_8010454(gRfuLinkStatus->partner[idx].serialNo)) { - memcpy(buff1, gRfuLinkStatus->unk_14[idx].gname, 0xD); - memcpy(buff2, gRfuLinkStatus->unk_14[idx].uname, PLAYER_NAME_LENGTH + 1); + memcpy(buff1, gRfuLinkStatus->partner[idx].gname, 0xD); + memcpy(buff2, gRfuLinkStatus->partner[idx].uname, PLAYER_NAME_LENGTH + 1); } else { @@ -2208,10 +2208,10 @@ bool8 sub_800DE7C(struct UnkLinkRfuStruct_02022B14 *buff1, u8 *buff2, u8 idx) bool8 sub_800DF34(struct UnkLinkRfuStruct_02022B14 *buff1, u8 *buff2, u8 idx) { bool8 retVal = FALSE; - if (gRfuLinkStatus->unk_14[idx].unk_04 == 0x7F7D) + if (gRfuLinkStatus->partner[idx].serialNo == 0x7F7D) { - memcpy(buff1, gRfuLinkStatus->unk_14[idx].gname, 0xD); - memcpy(buff2, gRfuLinkStatus->unk_14[idx].uname, 8); + memcpy(buff1, gRfuLinkStatus->partner[idx].gname, 0xD); + memcpy(buff2, gRfuLinkStatus->partner[idx].uname, 8); retVal = TRUE; } else @@ -2237,7 +2237,7 @@ void CreateWirelessStatusIndicatorSprite(u8 x, u8 y) x = 0xE7; y = 0x08; } - if (gRfuLinkStatus->unk_00 == 1) + if (gRfuLinkStatus->parentChild == 1) { sprId = CreateSprite(&sWirelessStatusIndicatorSpriteTemplate, x, y, 0); gSprites[sprId].data[7] = 0x1234; @@ -2278,12 +2278,12 @@ void LoadWirelessStatusIndicatorSpriteGfx(void) u8 sub_800E124(void) { u8 i; - u8 flags = gRfuLinkStatus->unk_02; + u8 flags = gRfuLinkStatus->connSlotFlag; for (i = 0; i < 4; i++) { if (flags & 1) { - return gRfuLinkStatus->unk_0a[i]; + return gRfuLinkStatus->strength[i]; } flags >>= 1; } @@ -2307,7 +2307,7 @@ void sub_800E174(void) struct Sprite *sprite = &gSprites[gWirelessStatusIndicatorSpriteId]; u8 signalStrength = 255; u8 i = 0; - if (gRfuLinkStatus->unk_00 == 1) + if (gRfuLinkStatus->parentChild == 1) { for (i = 0; i < GetLinkPlayerCount() - 1; i++) { @@ -2530,7 +2530,7 @@ void sub_800E6D0(void) void sub_800E700(void) { - if (!rfu_initializeAPI(gUnknown_03004140.unk_50, sizeof gUnknown_03004140.unk_50, gIntrTable + 1, TRUE)) + if (!rfu_initializeAPI((void *)gUnknown_03004140.unk_50, sizeof gUnknown_03004140.unk_50, gIntrTable + 1, TRUE)) { gLinkType = 0; sub_800AAF4(); @@ -2787,7 +2787,7 @@ void sub_800ED34(u16 unused) } rfu_REQ_recvData(); rfu_waitREQComplete(); - if (gRfuSlotStatusUNI[gUnknown_03005000.unk_c3e]->unk_12) + if (gRfuSlotStatusUNI[gUnknown_03005000.unk_c3e]->recv.newDataFlag) { gUnknown_03005000.unk_cd0++; sub_800D7D8(&gUnknown_03005000.unk_124, gUnknown_03005000.unk_c3f); @@ -2858,7 +2858,7 @@ bool8 sub_800EE94(void) bool32 sub_800EEBC(void) { - if (gUnknown_03005000.unk_04 == 7 && !sub_800C12C(gRfuLinkStatus->unk_14[gUnknown_03005000.unk_c3d].unk_00, 240)) + if (gUnknown_03005000.unk_04 == 7 && !sub_800C12C(gRfuLinkStatus->partner[gUnknown_03005000.unk_c3d].id, 240)) { gUnknown_03005000.unk_04 = 9; return TRUE; @@ -2971,7 +2971,7 @@ bool32 IsRfuRecvQueueEmpty(void) s32 i; s32 j; - if (gRfuLinkStatus->unk_06 == 0) + if (gRfuLinkStatus->sendSlotUNIFlag == 0) { return FALSE; } @@ -2999,7 +2999,7 @@ bool32 sub_800F0F8(void) else { gUnknown_03005000.unk_cdb = 0; - if ((gUnknown_03005000.unk_ce2 & gRfuLinkStatus->unk_02) == gUnknown_03005000.unk_ce2 && (gUnknown_03005000.unk_ce2 & gRfuLinkStatus->unk_02)) + if ((gUnknown_03005000.unk_ce2 & gRfuLinkStatus->connSlotFlag) == gUnknown_03005000.unk_ce2 && (gUnknown_03005000.unk_ce2 & gRfuLinkStatus->connSlotFlag)) { if (!gUnknown_03005000.unk_cdc) { @@ -3119,7 +3119,7 @@ bool32 sub_800F1E0(void) gUnknown_03005000.unk_0e = 0; } retval = gUnknown_03005000.unk_cdc; - return gRfuLinkStatus->unk_06 ? retval & 1 : FALSE; + return gRfuLinkStatus->sendSlotUNIFlag ? retval & 1 : FALSE; } void sub_800F498(u16 *a0, u8 *a1) @@ -3162,7 +3162,7 @@ bool32 sub_800F4F0(void) sub_800F86C(0); if (gUnknown_03004140.unk_02 == 0 && gUnknown_03005000.unk_ce4) { - rfu_REQ_disconnect(gRfuLinkStatus->unk_02 | gRfuLinkStatus->unk_03); + rfu_REQ_disconnect(gRfuLinkStatus->connSlotFlag | gRfuLinkStatus->linkLossSlotFlag); rfu_waitREQComplete(); switchval = sub_8011A74(); if (switchval != 1 && switchval != 6 && switchval != 9) @@ -3305,7 +3305,7 @@ static void sub_800F86C(u8 unused) return; // fallthrough case 0x7700: - if (gRfuLinkStatus->unk_00 == 0) + if (gRfuLinkStatus->parentChild == 0) { gUnknown_03005000.playerCount = gRecvCmds[i][1]; gUnknown_03005000.unk_cce = sub_800F74C((u8 *)(gRecvCmds[i] + 2)); @@ -3353,7 +3353,7 @@ static void sub_800F86C(u8 unused) { if (gReceivedRemoteLinkPlayers != 0) { - if (gRecvCmds[i][1] & gRfuLinkStatus->unk_02) + if (gRecvCmds[i][1] & gRfuLinkStatus->connSlotFlag) { gReceivedRemoteLinkPlayers = 0; sub_800D630(); @@ -3611,7 +3611,7 @@ void sub_801011C(void) void sub_8010148(void) { - rfu_REQ_disconnect(gRfuLinkStatus->unk_02 | gRfuLinkStatus->unk_03); + rfu_REQ_disconnect(gRfuLinkStatus->connSlotFlag | gRfuLinkStatus->linkLossSlotFlag); rfu_waitREQComplete(); sub_801011C(); } @@ -3631,7 +3631,7 @@ void LinkRfu_FatalError(void) { sub_800D630(); gUnknown_03005000.unk_ce4 = 1; - gUnknown_03005000.unk_ce3 = gRfuLinkStatus->unk_02 | gRfuLinkStatus->unk_03; + gUnknown_03005000.unk_ce3 = gRfuLinkStatus->connSlotFlag | gRfuLinkStatus->linkLossSlotFlag; } void sub_80101CC(void) @@ -3821,7 +3821,7 @@ bool8 sub_8010540(void) { if (gUnknown_03005000.unk_cd1[i] < 5 || gUnknown_03005000.unk_cd1[i] > 6) { - if (gRfuSlotStatusNI[i]->unk_34 == 0x46 || gRfuSlotStatusNI[i]->unk_34 == 0x48) + if (gRfuSlotStatusNI[i]->recv.state == 0x46 || gRfuSlotStatusNI[i]->recv.state == 0x48) { if (gUnknown_03005000.unk_cd5[i] == 8) { @@ -3833,7 +3833,7 @@ bool8 sub_8010540(void) } } - else if (gRfuSlotStatusNI[gUnknown_03005000.unk_c3e]->unk_34 == 0x47) + else if (gRfuSlotStatusNI[gUnknown_03005000.unk_c3e]->recv.state == 0x47) rfu_clearSlot(8, i); { @@ -3898,7 +3898,7 @@ u32 sub_8010714(u16 a0, const u8 *a1) u8 r0 = sub_8011CE4(a1, a0); if (r0 == 0xFF) return 2; - if (gRfuSlotStatusNI[r0]->unk_0 == 0) + if (gRfuSlotStatusNI[r0]->send.state == 0) return 1; return 0; } @@ -3910,7 +3910,7 @@ void sub_8010750(void) sub_8010540(); for (i = 0; i < 4; i++) { - if (gRfuSlotStatusNI[i]->unk_0 == 0x26 || gRfuSlotStatusNI[i]->unk_0 == 0x27) + if (gRfuSlotStatusNI[i]->send.state == 0x26 || gRfuSlotStatusNI[i]->send.state == 0x27) { if (gUnknown_03005000.unk_cd5[i] == 10) gUnknown_03005000.unk_cd5[i] = 11; @@ -3924,16 +3924,16 @@ s32 sub_80107A0(void) s32 retval = 0; if (gUnknown_03005000.unk_c85 == 8) { - if (gRfuSlotStatusNI[gUnknown_03005000.unk_c3e]->unk_0 == 0x26 || gRfuSlotStatusNI[gUnknown_03005000.unk_c3e]->unk_0 == 0x27) + if (gRfuSlotStatusNI[gUnknown_03005000.unk_c3e]->send.state == 0x26 || gRfuSlotStatusNI[gUnknown_03005000.unk_c3e]->send.state == 0x27) rfu_clearSlot(4, gUnknown_03005000.unk_c3e); } - if (gRfuSlotStatusNI[gUnknown_03005000.unk_c3e]->unk_34 == 0x46 || gRfuSlotStatusNI[gUnknown_03005000.unk_c3e]->unk_34 == 0x48) + if (gRfuSlotStatusNI[gUnknown_03005000.unk_c3e]->recv.state == 0x46 || gRfuSlotStatusNI[gUnknown_03005000.unk_c3e]->recv.state == 0x48) { rfu_clearSlot(8, gUnknown_03005000.unk_c3e); sub_8011A64(gUnknown_03005000.unk_c86, 0); retval = gUnknown_03005000.unk_c86; } - else if (gRfuSlotStatusNI[gUnknown_03005000.unk_c3e]->unk_34 == 0x47) + else if (gRfuSlotStatusNI[gUnknown_03005000.unk_c3e]->recv.state == 0x47) { rfu_clearSlot(8, gUnknown_03005000.unk_c3e); retval = 6; @@ -4370,7 +4370,7 @@ void sub_801120C(u8 a0, u8 unused1) { if ((gUnknown_03004140.unk_14 >> i) & 1) { - struct UnkLinkRfuStruct_02022B14 *structPtr = (void *)gRfuLinkStatus->unk_14[i].gname; + struct UnkLinkRfuStruct_02022B14 *structPtr = (void *)gRfuLinkStatus->partner[i].gname; if (structPtr->unk_0a_0 == sub_800F7DC()->unk_0a_0) { gUnknown_03005000.unk_cd1[i] = 0; @@ -4528,7 +4528,7 @@ u8 sub_8011628(s32 a0) { if ((a0 >> i) & 1) { - struct UnkLinkRfuStruct_02022B14 *structPtr = (void *)gRfuLinkStatus->unk_14[i].gname; + struct UnkLinkRfuStruct_02022B14 *structPtr = (void *)gRfuLinkStatus->partner[i].gname; if (structPtr->unk_0a_0 == 0x45) ret |= (1 << i); } @@ -4629,7 +4629,7 @@ void sub_8011674(u8 a0, u8 unused1) break; case 0x32: gUnknown_03005000.unk_f0 = 3; - if (gRfuLinkStatus->unk_00 == 0) + if (gRfuLinkStatus->parentChild == 0) gUnknown_03005000.unk_c3c = 1; break; case 0x30: @@ -4654,7 +4654,7 @@ void sub_8011674(u8 a0, u8 unused1) sub_800C27C(0); } - if (gRfuLinkStatus->unk_00 == 0xFF && gUnknown_03004140.unk_07 == 0 && FuncIsActiveTask(sub_800EB44) == TRUE) + if (gRfuLinkStatus->parentChild == 0xFF && gUnknown_03004140.unk_07 == 0 && FuncIsActiveTask(sub_800EB44) == TRUE) gUnknown_03005000.unk_04 = 0x11; sub_8011A64(2, a0); @@ -4825,13 +4825,13 @@ u8 sub_8011CE4(const u8 *a0, u16 a1) for (i = 0; i < 4; i++) { - u16 trainerId = ReadU16(gRfuLinkStatus->unk_14[i].gname + 2); - if (sub_8010454(gRfuLinkStatus->unk_14[i].unk_04) - && !StringCompare(a0, gRfuLinkStatus->unk_14[i].uname) + u16 trainerId = ReadU16(gRfuLinkStatus->partner[i].gname + 2); + if (sub_8010454(gRfuLinkStatus->partner[i].serialNo) + && !StringCompare(a0, gRfuLinkStatus->partner[i].uname) && a1 == trainerId) { ret = i; - if (gRfuLinkStatus->unk_14[i].unk_02 != 0xFF) + if (gRfuLinkStatus->partner[i].slot != 0xFF) break; } } @@ -4911,7 +4911,7 @@ void sub_8011EF4(u8 taskId) u8 id = sub_8011CE4((u8*)data, ReadU16(&data[8])); if (id != 0xFF) { - if (gRfuLinkStatus->unk_14[id].unk_02 != 0xFF) + if (gRfuLinkStatus->partner[id].slot != 0xFF) { gUnknown_03005000.unk_c3d = id; if (sub_800EEBC()) @@ -5006,9 +5006,9 @@ void sub_801209C(u8 taskId) u8 id = sub_8011CE4(gUnknown_03005000.playerName, trainerId); if (id != 0xFF) { - if (!sub_801200C(gTasks[taskId].data[1], (void *)gRfuLinkStatus->unk_14[id].gname)) + if (!sub_801200C(gTasks[taskId].data[1], (void *)gRfuLinkStatus->partner[id].gname)) { - if (gRfuLinkStatus->unk_14[id].unk_02 != 0xFF && !sub_800C12C(gRfuLinkStatus->unk_14[id].unk_00, 0x5A)) + if (gRfuLinkStatus->partner[id].slot != 0xFF && !sub_800C12C(gRfuLinkStatus->partner[id].id, 0x5A)) { gUnknown_03005000.unk_04 = 0xA; DestroyTask(taskId); @@ -5081,17 +5081,17 @@ void sub_801229C(void) s32 i, j; nullsub_13(GetBlockReceivedStatus(), 0x1C, 0x13, 2); - nullsub_13(gRfuLinkStatus->unk_02, 0x14, 1, 1); - nullsub_13(gRfuLinkStatus->unk_03, 0x17, 1, 1); + nullsub_13(gRfuLinkStatus->connSlotFlag, 0x14, 1, 1); + nullsub_13(gRfuLinkStatus->linkLossSlotFlag, 0x17, 1, 1); if (gUnknown_03005000.unk_0c == 1) { for (i = 0; i < 4; i++) { - if ((gRfuLinkStatus->unk_07 >> i) & 1) + if ((gRfuLinkStatus->getNameFlag >> i) & 1) { - nullsub_13(gRfuLinkStatus->unk_14[i].unk_04, 1, i + 3, 4); - nullsub_5((void*)gRfuLinkStatus->unk_14[i].gname, 6, i + 3); - nullsub_5(gRfuLinkStatus->unk_14[i].uname, 0x16, i + 3); + nullsub_13(gRfuLinkStatus->partner[i].serialNo, 1, i + 3, 4); + nullsub_5((void*)gRfuLinkStatus->partner[i].gname, 6, i + 3); + nullsub_5(gRfuLinkStatus->partner[i].uname, 0x16, i + 3); } } for (i = 0; i < 4; i++) @@ -5103,7 +5103,7 @@ void sub_801229C(void) } nullsub_5(gUnknown_082ED868, 1, 0xF); } - else if (gRfuLinkStatus->unk_02 != 0 && gRfuLinkStatus->unk_07 != 0) + else if (gRfuLinkStatus->connSlotFlag != 0 && gRfuLinkStatus->getNameFlag != 0) { for (i = 0; i < 4; i++) { @@ -5111,19 +5111,19 @@ void sub_801229C(void) nullsub_5(gUnknown_082ED84B, 6, i + 3); nullsub_5(gUnknown_082ED85B, 0x16, i + 3); } - nullsub_13(gRfuLinkStatus->unk_14[gUnknown_03005000.unk_c3e].unk_04, 1, 3, 4); - nullsub_5((void*)gRfuLinkStatus->unk_14[gUnknown_03005000.unk_c3e].gname, 6, 3); - nullsub_5(gRfuLinkStatus->unk_14[gUnknown_03005000.unk_c3e].uname, 0x16, 3); + nullsub_13(gRfuLinkStatus->partner[gUnknown_03005000.unk_c3e].serialNo, 1, 3, 4); + nullsub_5((void*)gRfuLinkStatus->partner[gUnknown_03005000.unk_c3e].gname, 6, 3); + nullsub_5(gRfuLinkStatus->partner[gUnknown_03005000.unk_c3e].uname, 0x16, 3); } else { - for (i = 0; i < gRfuLinkStatus->unk_08; i++) + for (i = 0; i < gRfuLinkStatus->findParentCount; i++) { - if (gRfuLinkStatus->unk_14[i].unk_02 != 0xFF) + if (gRfuLinkStatus->partner[i].slot != 0xFF) { - nullsub_13(gRfuLinkStatus->unk_14[i].unk_04, 1, i + 3, 4); - nullsub_13(gRfuLinkStatus->unk_14[i].unk_00, 6, i + 3, 4); - nullsub_5(gRfuLinkStatus->unk_14[i].uname, 0x16, i + 3); + nullsub_13(gRfuLinkStatus->partner[i].serialNo, 1, i + 3, 4); + nullsub_13(gRfuLinkStatus->partner[i].id, 6, i + 3, 4); + nullsub_5(gRfuLinkStatus->partner[i].uname, 0x16, i + 3); } } for (; i < 4; i++) diff --git a/src/trade.c b/src/trade.c index 9abc614280..bd97471e38 100644 --- a/src/trade.c +++ b/src/trade.c @@ -254,7 +254,7 @@ static bool32 sub_80771BC(void) { if (gUnknown_02022C2C == 29) { - if (gRfuSlotStatusNI[sub_800E87C(gUnknown_03004140.unk_00)]->unk_0 == 0) + if (gRfuSlotStatusNI[sub_800E87C(gUnknown_03004140.unk_00)]->send.state == 0) return TRUE; else return FALSE; diff --git a/src/union_room.c b/src/union_room.c index 9cb3bec797..6098ce3496 100644 --- a/src/union_room.c +++ b/src/union_room.c @@ -4077,7 +4077,7 @@ s32 sub_8017EA0(u8 *dst, u32 gender, u16 *arg2, struct UnkStruct_URoom *arg3) StringCopy(arg3->field_58 + 0x10, gSpeciesNames[sUnionRoomTrade.playerSpecies]); for (i = 0; i < 4; i++) { - if (gRfuLinkStatus->unk_14[i].unk_04 == 2) + if (gRfuLinkStatus->partner[i].serialNo == 2) { ConvertIntToDecimalStringN(arg3->field_58 + 0x20, arg2[2], STR_CONV_MODE_LEFT_ALIGN, 3); StringCopy(arg3->field_58 + 0x30, gSpeciesNames[arg2[1]]); From 46b00b11d4f62d866f55247f291678c8366498bd Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Thu, 16 Jan 2020 07:21:54 +0800 Subject: [PATCH 36/37] match all the functions --- asm/librfu.s | 6487 ----------------------------------------- include/gba/io_reg.h | 2 +- include/gba/syscall.h | 2 + ld_script.txt | 2 +- src/agb_flash.c | 2 +- src/librfu_rfu.c | 2257 +++++++++++++- src/librfu_sio32id.c | 167 ++ 7 files changed, 2371 insertions(+), 6548 deletions(-) delete mode 100644 asm/librfu.s create mode 100644 src/librfu_sio32id.c diff --git a/asm/librfu.s b/asm/librfu.s deleted file mode 100644 index 28cc015943..0000000000 --- a/asm/librfu.s +++ /dev/null @@ -1,6487 +0,0 @@ - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start rfu_initializeAPI -rfu_initializeAPI: @ 82E3EB4 - push {r4-r7,lr} - adds r4, r0, 0 - mov r12, r2 - lsls r1, 16 - lsrs r2, r1, 16 - lsls r3, 24 - lsrs r7, r3, 24 - movs r0, 0xF0 - lsls r0, 20 - ands r0, r4 - movs r1, 0x80 - lsls r1, 18 - cmp r0, r1 - bne _082E3ED4 - cmp r7, 0 - bne _082E3EDC -_082E3ED4: - movs r0, 0x3 - ands r0, r4 - cmp r0, 0 - beq _082E3EE0 -_082E3EDC: - movs r0, 0x2 - b _082E3FB8 -_082E3EE0: - cmp r7, 0 - beq _082E3EEC - ldr r3, =0x00000e64 - b _082E3EEE - .align 2, 0 - .pool -_082E3EEC: - ldr r3, =0x00000504 -_082E3EEE: - cmp r2, r3 - bcs _082E3EFC - movs r0, 0x1 - b _082E3FB8 - .align 2, 0 - .pool -_082E3EFC: - ldr r0, =gRfuLinkStatus - str r4, [r0] - ldr r1, =gRfuStatic - adds r0, r4, 0 - adds r0, 0xB4 - str r0, [r1] - ldr r1, =gRfuFixed - adds r0, 0x28 - str r0, [r1] - ldr r2, =gRfuSlotStatusNI - movs r1, 0xDE - lsls r1, 1 - adds r0, r4, r1 - str r0, [r2] - ldr r1, =gRfuSlotStatusUNI - movs r3, 0xDF - lsls r3, 2 - adds r0, r4, r3 - str r0, [r1] - movs r5, 0x1 - adds r6, r2, 0 - adds r4, r1, 0 -_082E3F28: - lsls r2, r5, 2 - adds r3, r2, r6 - subs r1, r5, 0x1 - lsls r1, 2 - adds r0, r1, r6 - ldr r0, [r0] - adds r0, 0x70 - str r0, [r3] - adds r2, r4 - adds r1, r4 - ldr r0, [r1] - adds r0, 0x1C - str r0, [r2] - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0x3 - bls _082E3F28 - ldr r0, =gRfuFixed - ldr r1, [r0] - adds r1, 0xDC - ldr r4, =gRfuSlotStatusUNI - ldr r0, [r4, 0xC] - adds r0, 0x1C - str r0, [r1] - mov r1, r12 - adds r2, r7, 0 - bl STWI_init_all - bl rfu_STC_clearAPIVariables - movs r5, 0 - ldr r3, =gRfuSlotStatusNI - movs r2, 0 -_082E3F6C: - lsls r1, r5, 2 - adds r0, r1, r3 - ldr r0, [r0] - str r2, [r0, 0x68] - str r2, [r0, 0x6C] - adds r1, r4 - ldr r0, [r1] - str r2, [r0, 0x14] - str r2, [r0, 0x18] - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0x3 - bls _082E3F6C - ldr r4, =sub_82E53F4 - movs r0, 0x2 - negs r0, r0 - ands r4, r0 - ldr r1, =gRfuFixed - ldr r0, [r1] - adds r2, r0, 0 - adds r2, 0x8 - movs r3, 0x2F - ldr r5, =0x0000ffff -_082E3F9C: - ldrh r0, [r4] - strh r0, [r2] - adds r4, 0x2 - adds r2, 0x2 - subs r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, r5 - bne _082E3F9C - ldr r1, [r1] - adds r0, r1, 0 - adds r0, 0x9 - str r0, [r1, 0x4] - movs r0, 0 -_082E3FB8: - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 - .pool - thumb_func_end rfu_initializeAPI - - thumb_func_start rfu_STC_clearAPIVariables -rfu_STC_clearAPIVariables: @ 82E3FDC - push {r4-r7,lr} - sub sp, 0x4 - ldr r1, =0x04000208 - ldrh r0, [r1] - adds r7, r0, 0 - movs r6, 0 - strh r6, [r1] - ldr r5, =gRfuStatic - ldr r1, [r5] - ldrb r4, [r1] - mov r0, sp - strh r6, [r0] - ldr r2, =0x01000014 - bl CpuSet - ldr r2, [r5] - movs r0, 0x8 - ands r4, r0 - movs r1, 0 - strb r4, [r2] - mov r0, sp - adds r0, 0x2 - strh r1, [r0] - ldr r4, =gRfuLinkStatus - ldr r1, [r4] - ldr r2, =0x0100005a - bl CpuSet - ldr r1, [r4] - movs r0, 0x4 - strb r0, [r1, 0x9] - ldr r0, [r5] - strb r6, [r0, 0x6] - ldr r1, [r4] - movs r0, 0xFF - strb r0, [r1] - bl rfu_clearAllSlot - ldr r0, [r5] - strb r6, [r0, 0x9] - movs r2, 0 - movs r3, 0 -_082E4030: - ldr r0, [r5] - lsls r1, r2, 1 - adds r0, 0x12 - adds r0, r1 - strh r3, [r0] - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x3 - bls _082E4030 - ldr r0, =0x04000208 - strh r7, [r0] - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 - .pool - thumb_func_end rfu_STC_clearAPIVariables - - thumb_func_start rfu_REQ_PARENT_resumeRetransmitAndChange -rfu_REQ_PARENT_resumeRetransmitAndChange: @ 82E4064 - push {lr} - ldr r0, =rfu_STC_REQ_callback - bl STWI_set_Callback_M - bl STWI_send_ResumeRetransmitAndChangeREQ - pop {r0} - bx r0 - .align 2, 0 - .pool - thumb_func_end rfu_REQ_PARENT_resumeRetransmitAndChange - - thumb_func_start rfu_UNI_PARENT_getDRAC_ACK -rfu_UNI_PARENT_getDRAC_ACK: @ 82E4078 - push {r4,r5,lr} - adds r4, r0, 0 - movs r0, 0 - strb r0, [r4] - ldr r5, =gRfuLinkStatus - ldr r0, [r5] - ldrb r0, [r0] - cmp r0, 0x1 - beq _082E4094 - movs r0, 0xC0 - lsls r0, 2 - b _082E40BA - .align 2, 0 - .pool -_082E4094: - bl rfu_getSTWIRecvBuffer - adds r1, r0, 0 - ldrb r0, [r1] - cmp r0, 0x28 - beq _082E40A4 - cmp r0, 0x36 - bne _082E40B8 -_082E40A4: - ldrb r0, [r1, 0x1] - cmp r0, 0 - bne _082E40B0 - ldr r0, [r5] - ldrb r0, [r0, 0x2] - b _082E40B2 -_082E40B0: - ldrb r0, [r1, 0x4] -_082E40B2: - strb r0, [r4] - movs r0, 0 - b _082E40BA -_082E40B8: - movs r0, 0x10 -_082E40BA: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end rfu_UNI_PARENT_getDRAC_ACK - - thumb_func_start rfu_setTimerInterrupt -rfu_setTimerInterrupt: @ 82E40C0 - push {lr} - adds r2, r0, 0 - adds r0, r1, 0 - lsls r2, 24 - lsrs r2, 24 - adds r1, r2, 0 - bl STWI_init_timer - pop {r0} - bx r0 - thumb_func_end rfu_setTimerInterrupt - - thumb_func_start rfu_getSTWIRecvBuffer -rfu_getSTWIRecvBuffer: @ 82E40D4 - ldr r0, =gRfuFixed - ldr r0, [r0] - adds r0, 0xDC - ldr r0, [r0] - bx lr - .align 2, 0 - .pool - thumb_func_end rfu_getSTWIRecvBuffer - - thumb_func_start rfu_setMSCCallback -rfu_setMSCCallback: @ 82E40E4 - push {lr} - bl STWI_set_Callback_S - pop {r0} - bx r0 - thumb_func_end rfu_setMSCCallback - - thumb_func_start rfu_setREQCallback -rfu_setREQCallback: @ 82E40F0 - push {lr} - adds r1, r0, 0 - ldr r0, =gRfuFixed - ldr r0, [r0] - str r1, [r0] - negs r0, r1 - orrs r0, r1 - lsrs r0, 31 - bl rfu_enableREQCallback - pop {r0} - bx r0 - .align 2, 0 - .pool - thumb_func_end rfu_setREQCallback - - thumb_func_start rfu_enableREQCallback -rfu_enableREQCallback: @ 82E410C - push {lr} - lsls r0, 24 - cmp r0, 0 - beq _082E4124 - ldr r0, =gRfuStatic - ldr r2, [r0] - ldrb r1, [r2] - movs r0, 0x8 - orrs r0, r1 - b _082E412E - .align 2, 0 - .pool -_082E4124: - ldr r0, =gRfuStatic - ldr r2, [r0] - ldrb r1, [r2] - movs r0, 0xF7 - ands r0, r1 -_082E412E: - strb r0, [r2] - pop {r0} - bx r0 - .align 2, 0 - .pool - thumb_func_end rfu_enableREQCallback - - thumb_func_start rfu_STC_REQ_callback -rfu_STC_REQ_callback: @ 82E4138 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r1, 16 - lsrs r4, r1, 16 - ldr r0, =rfu_CB_defaultCallback - bl STWI_set_Callback_M - ldr r0, =gRfuStatic - ldr r0, [r0] - strh r4, [r0, 0x1C] - ldrb r1, [r0] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _082E4166 - ldr r0, =gRfuFixed - ldr r0, [r0] - ldr r2, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl _call_via_r2 -_082E4166: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 - .pool - thumb_func_end rfu_STC_REQ_callback - - thumb_func_start rfu_CB_defaultCallback -rfu_CB_defaultCallback: @ 82E4178 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 16 - lsrs r3, r1, 16 - cmp r0, 0xFF - bne _082E41D4 - ldr r0, =gRfuStatic - ldr r0, [r0] - ldrb r1, [r0] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _082E41A2 - ldr r0, =gRfuFixed - ldr r0, [r0] - ldr r2, [r0] - movs r0, 0xFF - adds r1, r3, 0 - bl _call_via_r2 -_082E41A2: - ldr r0, =gRfuLinkStatus - ldr r0, [r0] - ldrb r1, [r0, 0x2] - ldrb r0, [r0, 0x3] - adds r5, r0, 0 - orrs r5, r1 - movs r4, 0 -_082E41B0: - adds r0, r5, 0 - asrs r0, r4 - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _082E41C2 - adds r0, r4, 0 - bl rfu_STC_removeLinkData -_082E41C2: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x3 - bls _082E41B0 - ldr r0, =gRfuLinkStatus - ldr r1, [r0] - movs r0, 0xFF - strb r0, [r1] -_082E41D4: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 - .pool - thumb_func_end rfu_CB_defaultCallback - - thumb_func_start rfu_waitREQComplete -rfu_waitREQComplete: @ 82E41E8 - push {lr} - bl STWI_poll_CommandEnd - ldr r0, =gRfuStatic - ldr r0, [r0] - ldrh r0, [r0, 0x1C] - pop {r1} - bx r1 - .align 2, 0 - .pool - thumb_func_end rfu_waitREQComplete - - thumb_func_start rfu_REQ_RFUStatus -rfu_REQ_RFUStatus: @ 82E41FC - push {lr} - ldr r0, =rfu_STC_REQ_callback - bl STWI_set_Callback_M - bl STWI_send_SystemStatusREQ - pop {r0} - bx r0 - .align 2, 0 - .pool - thumb_func_end rfu_REQ_RFUStatus - - thumb_func_start rfu_getRFUStatus -rfu_getRFUStatus: @ 82E4210 - push {r4,r5,lr} - adds r4, r0, 0 - ldr r5, =gRfuFixed - ldr r0, [r5] - adds r0, 0xDC - ldr r0, [r0] - ldrb r0, [r0] - cmp r0, 0x93 - beq _082E422C - movs r0, 0x10 - b _082E4246 - .align 2, 0 - .pool -_082E422C: - bl STWI_poll_CommandEnd - lsls r0, 16 - cmp r0, 0 - bne _082E4240 - ldr r0, [r5] - adds r0, 0xDC - ldr r0, [r0] - ldrb r0, [r0, 0x7] - b _082E4242 -_082E4240: - movs r0, 0xFF -_082E4242: - strb r0, [r4] - movs r0, 0 -_082E4246: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end rfu_getRFUStatus - - thumb_func_start rfu_MBOOT_CHILD_inheritanceLinkStatus -rfu_MBOOT_CHILD_inheritanceLinkStatus: @ 82E424C - push {lr} - ldr r2, =str_checkMbootLL - ldr r3, =gDma3Requests + 0xE0 - b _082E4266 - .align 2, 0 - .pool -_082E425C: - ldrb r0, [r3] - adds r3, 0x1 - adds r2, 0x1 - cmp r1, r0 - bne _082E42BC -_082E4266: - ldrb r1, [r2] - cmp r1, 0 - bne _082E425C - movs r2, 0xC0 - lsls r2, 18 - movs r3, 0 - movs r1, 0 -_082E4274: - ldrh r0, [r2] - adds r0, r3, r0 - lsls r0, 16 - lsrs r3, r0, 16 - adds r2, 0x2 - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x59 - bls _082E4274 - ldr r0, =gDma3Requests + 0xEA - ldrh r0, [r0] - cmp r3, r0 - bne _082E42BC - movs r0, 0xC0 - lsls r0, 18 - ldr r1, =gRfuLinkStatus - ldr r1, [r1] - movs r2, 0x5A - bl CpuSet - ldr r0, =gRfuStatic - ldr r2, [r0] - ldrb r1, [r2] - movs r0, 0x80 - orrs r0, r1 - strb r0, [r2] - movs r0, 0 - b _082E42BE - .align 2, 0 - .pool -_082E42BC: - movs r0, 0x1 -_082E42BE: - pop {r1} - bx r1 - thumb_func_end rfu_MBOOT_CHILD_inheritanceLinkStatus - - thumb_func_start rfu_REQ_stopMode -rfu_REQ_stopMode: @ 82E42C4 - push {lr} - ldr r0, =0x04000208 - ldrh r0, [r0] - cmp r0, 0 - bne _082E42EC - movs r0, 0x3D - movs r1, 0x6 - bl rfu_STC_REQ_callback - ldr r0, =gSTWIStatus - ldr r1, [r0] - ldrh r0, [r1, 0x12] - movs r0, 0x6 - strh r0, [r1, 0x12] - b _082E4362 - .align 2, 0 - .pool -_082E42EC: - bl AgbRFU_SoftReset - bl rfu_STC_clearAPIVariables - movs r0, 0x8 - bl AgbRFU_checkID - ldr r1, =0x00008001 - cmp r0, r1 - bne _082E4350 - ldr r0, =gSTWIStatus - ldr r0, [r0] - ldrb r0, [r0, 0xA] - lsls r0, 2 - ldr r2, =0x04000100 - adds r1, r0, r2 - movs r0, 0 - str r0, [r1] - movs r0, 0x83 - lsls r0, 16 - str r0, [r1] - ldr r0, [r1] - lsls r0, 16 - ldr r2, =0x0105ffff - ldr r3, =rfu_CB_stopMode - cmp r0, r2 - bhi _082E432A -_082E4322: - ldr r0, [r1] - lsls r0, 16 - cmp r0, r2 - bls _082E4322 -_082E432A: - movs r0, 0 - str r0, [r1] - adds r0, r3, 0 - bl STWI_set_Callback_M - bl STWI_send_StopModeREQ - b _082E4362 - .align 2, 0 - .pool -_082E4350: - ldr r1, =0x04000128 - movs r2, 0x80 - lsls r2, 6 - adds r0, r2, 0 - strh r0, [r1] - movs r0, 0x3D - movs r1, 0 - bl rfu_STC_REQ_callback -_082E4362: - pop {r0} - bx r0 - .align 2, 0 - .pool - thumb_func_end rfu_REQ_stopMode - - thumb_func_start rfu_CB_stopMode -rfu_CB_stopMode: @ 82E436C - push {r4,lr} - lsls r0, 24 - lsrs r3, r0, 24 - lsls r1, 16 - lsrs r1, 16 - adds r2, r1, 0 - cmp r2, 0 - bne _082E4386 - ldr r1, =0x04000128 - movs r4, 0x80 - lsls r4, 6 - adds r0, r4, 0 - strh r0, [r1] -_082E4386: - adds r0, r3, 0 - adds r1, r2, 0 - bl rfu_STC_REQ_callback - pop {r4} - pop {r0} - bx r0 - .align 2, 0 - .pool - thumb_func_end rfu_CB_stopMode - - thumb_func_start rfu_REQBN_softReset_and_checkID -rfu_REQBN_softReset_and_checkID: @ 82E4398 - push {lr} - ldr r0, =0x04000208 - ldrh r0, [r0] - cmp r0, 0 - bne _082E43AC - movs r0, 0x1 - negs r0, r0 - b _082E43CC - .align 2, 0 - .pool -_082E43AC: - bl AgbRFU_SoftReset - bl rfu_STC_clearAPIVariables - movs r0, 0x1E - bl AgbRFU_checkID - adds r2, r0, 0 - cmp r2, 0 - bne _082E43CA - ldr r1, =0x04000128 - movs r3, 0x80 - lsls r3, 6 - adds r0, r3, 0 - strh r0, [r1] -_082E43CA: - adds r0, r2, 0 -_082E43CC: - pop {r1} - bx r1 - .align 2, 0 - .pool - thumb_func_end rfu_REQBN_softReset_and_checkID - - thumb_func_start rfu_REQ_reset -rfu_REQ_reset: @ 82E43D4 - push {lr} - ldr r0, =rfu_CB_reset - bl STWI_set_Callback_M - bl STWI_send_ResetREQ - pop {r0} - bx r0 - .align 2, 0 - .pool - thumb_func_end rfu_REQ_reset - - thumb_func_start rfu_CB_reset -rfu_CB_reset: @ 82E43E8 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r1, 16 - lsrs r1, 16 - adds r4, r1, 0 - cmp r4, 0 - bne _082E43FC - bl rfu_STC_clearAPIVariables -_082E43FC: - adds r0, r5, 0 - adds r1, r4, 0 - bl rfu_STC_REQ_callback - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end rfu_CB_reset - - thumb_func_start rfu_REQ_configSystem -rfu_REQ_configSystem: @ 82E440C - push {r4-r6,lr} - adds r4, r0, 0 - adds r5, r1, 0 - lsls r4, 16 - lsrs r4, 16 - lsls r5, 24 - lsrs r5, 24 - lsls r2, 24 - lsrs r6, r2, 24 - ldr r0, =rfu_STC_REQ_callback - bl STWI_set_Callback_M - movs r0, 0x3 - ands r4, r0 - movs r0, 0x3C - orrs r4, r0 - adds r0, r4, 0 - adds r1, r5, 0 - adds r2, r6, 0 - bl STWI_send_SystemConfigREQ - cmp r6, 0 - bne _082E444C - ldr r0, =gRfuStatic - ldr r1, [r0] - movs r0, 0x1 - strh r0, [r1, 0x1A] - b _082E4466 - .align 2, 0 - .pool -_082E444C: - ldr r5, =0x04000208 - ldrh r4, [r5] - movs r0, 0 - strh r0, [r5] - movs r0, 0x96 - lsls r0, 2 - adds r1, r6, 0 - bl Div - ldr r1, =gRfuStatic - ldr r1, [r1] - strh r0, [r1, 0x1A] - strh r4, [r5] -_082E4466: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 - .pool - thumb_func_end rfu_REQ_configSystem - - thumb_func_start rfu_REQ_configGameData -rfu_REQ_configGameData: @ 82E4474 - push {r4-r7,lr} - sub sp, 0x10 - adds r4, r2, 0 - adds r7, r3, 0 - lsls r0, 24 - lsrs r6, r0, 24 - lsls r2, r1, 16 - adds r5, r4, 0 - mov r0, sp - strb r1, [r0] - lsrs r2, 24 - strb r2, [r0, 0x1] - cmp r6, 0 - beq _082E449A - movs r1, 0x80 - orrs r2, r1 - movs r1, 0 - orrs r2, r1 - strb r2, [r0, 0x1] -_082E449A: - movs r2, 0x2 - ldr r0, =rfu_CB_configGameData - mov r12, r0 -_082E44A0: - mov r3, sp - adds r1, r3, r2 - ldrb r0, [r4] - strb r0, [r1] - adds r4, 0x1 - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0xE - bls _082E44A0 - movs r3, 0 - adds r1, r7, 0 - movs r2, 0 -_082E44BA: - ldrb r0, [r1] - adds r0, r3, r0 - lsls r0, 24 - adds r1, 0x1 - lsrs r0, 24 - ldrb r3, [r5] - adds r0, r3 - lsls r0, 24 - lsrs r3, r0, 24 - adds r5, 0x1 - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x7 - bls _082E44BA - mov r1, sp - mvns r0, r3 - strb r0, [r1, 0xF] - cmp r6, 0 - beq _082E44E6 - movs r0, 0 - strb r0, [r1, 0xE] -_082E44E6: - mov r0, r12 - bl STWI_set_Callback_M - mov r0, sp - adds r1, r7, 0 - bl STWI_send_GameConfigREQ - add sp, 0x10 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 - .pool - thumb_func_end rfu_REQ_configGameData - - thumb_func_start rfu_CB_configGameData -rfu_CB_configGameData: @ 82E4500 - push {r4-r7,lr} - lsls r0, 24 - lsrs r0, 24 - mov r12, r0 - lsls r1, 16 - lsrs r7, r1, 16 - cmp r7, 0 - bne _082E458A - ldr r0, =gSTWIStatus - ldr r0, [r0] - ldr r1, [r0, 0x24] - ldr r0, =gRfuLinkStatus - ldr r6, [r0] - ldrb r2, [r1, 0x4] - adds r5, r6, 0 - adds r5, 0x98 - strh r2, [r5] - ldrb r0, [r1, 0x5] - lsls r3, r0, 8 - orrs r3, r2 - strh r3, [r5] - adds r4, r1, 0x6 - movs r1, 0x80 - lsls r1, 8 - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _082E454C - eors r3, r1 - strh r3, [r5] - adds r1, r6, 0 - adds r1, 0x97 - movs r0, 0x1 - b _082E4552 - .align 2, 0 - .pool -_082E454C: - adds r1, r6, 0 - adds r1, 0x97 - movs r0, 0 -_082E4552: - strb r0, [r1] - movs r2, 0 - ldr r3, =gRfuLinkStatus -_082E4558: - ldr r0, [r3] - adds r0, 0x9A - adds r0, r2 - ldrb r1, [r4] - strb r1, [r0] - adds r4, 0x1 - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0xC - bls _082E4558 - adds r4, 0x1 - movs r2, 0 - ldr r3, =gRfuLinkStatus -_082E4574: - ldr r0, [r3] - adds r0, 0xA9 - adds r0, r2 - ldrb r1, [r4] - strb r1, [r0] - adds r4, 0x1 - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x7 - bls _082E4574 -_082E458A: - mov r0, r12 - adds r1, r7, 0 - bl rfu_STC_REQ_callback - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 - .pool - thumb_func_end rfu_CB_configGameData - - thumb_func_start rfu_REQ_startSearchChild -rfu_REQ_startSearchChild: @ 82E459C - push {r4,lr} - movs r1, 0 - ldr r4, =rfu_CB_defaultCallback - ldr r3, =gRfuStatic - movs r2, 0 -_082E45A6: - ldr r0, [r3] - adds r0, 0xE - adds r0, r1 - strb r2, [r0] - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0x3 - bls _082E45A6 - adds r0, r4, 0 - bl STWI_set_Callback_M - bl STWI_send_SystemStatusREQ - bl STWI_poll_CommandEnd - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0 - bne _082E45F0 - ldr r0, =gRfuFixed - ldr r0, [r0] - adds r0, 0xDC - ldr r0, [r0] - ldrb r0, [r0, 0x7] - cmp r0, 0 - bne _082E45F6 - movs r0, 0x1 - bl rfu_STC_clearLinkStatus - b _082E45F6 - .align 2, 0 - .pool -_082E45F0: - movs r0, 0x19 - bl rfu_STC_REQ_callback -_082E45F6: - ldr r0, =rfu_CB_startSearchChild - bl STWI_set_Callback_M - bl STWI_send_SC_StartREQ - pop {r4} - pop {r0} - bx r0 - .align 2, 0 - .pool - thumb_func_end rfu_REQ_startSearchChild - - thumb_func_start rfu_CB_startSearchChild -rfu_CB_startSearchChild: @ 82E460C - push {lr} - lsls r0, 24 - lsrs r3, r0, 24 - lsls r1, 16 - lsrs r1, 16 - adds r2, r1, 0 - cmp r2, 0 - bne _082E4624 - ldr r0, =gRfuStatic - ldr r1, [r0] - movs r0, 0x1 - strb r0, [r1, 0x9] -_082E4624: - adds r0, r3, 0 - adds r1, r2, 0 - bl rfu_STC_REQ_callback - pop {r0} - bx r0 - .align 2, 0 - .pool - thumb_func_end rfu_CB_startSearchChild - - thumb_func_start rfu_STC_clearLinkStatus -rfu_STC_clearLinkStatus: @ 82E4634 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl rfu_clearAllSlot - cmp r4, 0 - beq _082E465C - mov r0, sp - movs r5, 0 - strh r5, [r0] - ldr r4, =gRfuLinkStatus - ldr r1, [r4] - adds r1, 0x14 - ldr r2, =0x01000040 - bl CpuSet - ldr r0, [r4] - strb r5, [r0, 0x8] -_082E465C: - movs r1, 0 - ldr r2, =gRfuLinkStatus - adds r4, r2, 0 - movs r3, 0 -_082E4664: - ldr r0, [r4] - adds r0, 0xA - adds r0, r1 - strb r3, [r0] - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x3 - bls _082E4664 - ldr r0, [r2] - movs r1, 0 - strb r1, [r0, 0x1] - ldr r0, [r2] - strb r1, [r0, 0x2] - ldr r0, [r2] - strb r1, [r0, 0x3] - ldr r0, [r2] - strb r1, [r0, 0x7] - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 - .pool - thumb_func_end rfu_STC_clearLinkStatus - - thumb_func_start rfu_REQ_pollSearchChild -rfu_REQ_pollSearchChild: @ 82E4698 - push {lr} - ldr r0, =rfu_CB_pollAndEndSearchChild - bl STWI_set_Callback_M - bl STWI_send_SC_PollingREQ - pop {r0} - bx r0 - .align 2, 0 - .pool - thumb_func_end rfu_REQ_pollSearchChild - - thumb_func_start rfu_REQ_endSearchChild -rfu_REQ_endSearchChild: @ 82E46AC - push {lr} - ldr r0, =rfu_CB_pollAndEndSearchChild - bl STWI_set_Callback_M - bl STWI_send_SC_EndREQ - pop {r0} - bx r0 - .align 2, 0 - .pool - thumb_func_end rfu_REQ_endSearchChild - - thumb_func_start rfu_CB_pollAndEndSearchChild -rfu_CB_pollAndEndSearchChild: @ 82E46C0 - push {r4-r6,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r1, 16 - lsrs r6, r1, 16 - cmp r6, 0 - bne _082E46D2 - bl rfu_STC_readChildList -_082E46D2: - cmp r4, 0x1A - bne _082E4714 - ldr r5, =gRfuLinkStatus - ldr r0, [r5] - adds r0, 0x94 - ldrh r0, [r0] - cmp r0, 0 - bne _082E4730 - ldr r0, =rfu_CB_defaultCallback - bl STWI_set_Callback_M - bl STWI_send_SystemStatusREQ - bl STWI_poll_CommandEnd - lsls r0, 16 - cmp r0, 0 - bne _082E4730 - ldr r1, [r5] - ldr r0, =gRfuFixed - ldr r0, [r0] - adds r0, 0xDC - ldr r0, [r0] - ldrh r0, [r0, 0x4] - adds r1, 0x94 - strh r0, [r1] - b _082E4730 - .align 2, 0 - .pool -_082E4714: - cmp r4, 0x1B - bne _082E4730 - ldr r0, =gRfuLinkStatus - ldr r1, [r0] - ldrb r0, [r1] - cmp r0, 0xFF - bne _082E4728 - adds r1, 0x94 - movs r0, 0 - strh r0, [r1] -_082E4728: - ldr r0, =gRfuStatic - ldr r1, [r0] - movs r0, 0 - strb r0, [r1, 0x9] -_082E4730: - adds r0, r4, 0 - adds r1, r6, 0 - bl rfu_STC_REQ_callback - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 - .pool - thumb_func_end rfu_CB_pollAndEndSearchChild - - thumb_func_start rfu_STC_readChildList -rfu_STC_readChildList: @ 82E4748 - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r0, =gRfuFixed - ldr r0, [r0] - adds r0, 0xDC - ldr r0, [r0] - ldrb r7, [r0, 0x1] - adds r6, r0, 0x4 - cmp r7, 0 - beq _082E47EE - ldr r0, =gRfuStatic - mov r8, r0 - ldr r1, =gRfuLinkStatus - mov r12, r1 -_082E4766: - ldrb r4, [r6, 0x2] - cmp r4, 0x3 - bhi _082E47E2 - mov r2, r12 - ldr r1, [r2] - ldrb r0, [r1, 0x2] - asrs r0, r4 - movs r5, 0x1 - ands r0, r5 - cmp r0, 0 - bne _082E47E2 - ldrb r0, [r1, 0x3] - asrs r0, r4 - ands r0, r5 - cmp r0, 0 - bne _082E47E2 - mov r1, r8 - ldr r0, [r1] - adds r0, 0xE - adds r0, r4 - movs r1, 0xF0 - strb r1, [r0] - ldr r0, [r2] - adds r0, 0xA - adds r0, r4 - movs r1, 0x10 - strb r1, [r0] - ldr r2, [r2] - adds r0, r5, 0 - lsls r0, r4 - ldrb r1, [r2, 0x2] - orrs r0, r1 - strb r0, [r2, 0x2] - mov r2, r12 - ldr r1, [r2] - ldrb r0, [r1, 0x1] - adds r0, 0x1 - strb r0, [r1, 0x1] - ldr r1, [r2] - lsls r3, r4, 5 - adds r1, r3 - ldrh r0, [r6] - strh r0, [r1, 0x14] - strb r4, [r1, 0x16] - ldr r0, [r2] - strb r5, [r0] - mov r0, r8 - ldr r2, [r0] - ldrb r1, [r2] - movs r0, 0x7F - ands r0, r1 - strb r0, [r2] - mov r2, r8 - ldr r1, [r2] - lsls r0, r4, 1 - adds r1, 0x12 - adds r1, r0 - mov r2, r12 - ldr r0, [r2] - adds r0, r3 - ldrh r0, [r0, 0x14] - strh r0, [r1] -_082E47E2: - subs r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - adds r6, 0x4 - cmp r7, 0 - bne _082E4766 -_082E47EE: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 - .pool - thumb_func_end rfu_STC_readChildList - - thumb_func_start rfu_REQ_startSearchParent -rfu_REQ_startSearchParent: @ 82E4804 - push {lr} - ldr r0, =rfu_CB_startSearchParent - bl STWI_set_Callback_M - bl STWI_send_SP_StartREQ - pop {r0} - bx r0 - .align 2, 0 - .pool - thumb_func_end rfu_REQ_startSearchParent - - thumb_func_start rfu_CB_startSearchParent -rfu_CB_startSearchParent: @ 82E4818 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r1, 16 - lsrs r1, 16 - adds r4, r1, 0 - cmp r4, 0 - bne _082E482E - movs r0, 0 - bl rfu_STC_clearLinkStatus -_082E482E: - adds r0, r5, 0 - adds r1, r4, 0 - bl rfu_STC_REQ_callback - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end rfu_CB_startSearchParent - - thumb_func_start rfu_REQ_pollSearchParent -rfu_REQ_pollSearchParent: @ 82E483C - push {lr} - ldr r0, =sub_82E4850 - bl STWI_set_Callback_M - bl STWI_send_SP_PollingREQ - pop {r0} - bx r0 - .align 2, 0 - .pool - thumb_func_end rfu_REQ_pollSearchParent - - thumb_func_start sub_82E4850 -sub_82E4850: @ 82E4850 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r1, 16 - lsrs r1, 16 - adds r4, r1, 0 - cmp r4, 0 - bne _082E4864 - bl rfu_STC_readParentCandidateList -_082E4864: - adds r0, r5, 0 - adds r1, r4, 0 - bl rfu_STC_REQ_callback - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_82E4850 - - thumb_func_start rfu_REQ_endSearchParent -rfu_REQ_endSearchParent: @ 82E4874 - push {lr} - ldr r0, =rfu_STC_REQ_callback - bl STWI_set_Callback_M - bl STWI_send_SP_EndREQ - pop {r0} - bx r0 - .align 2, 0 - .pool - thumb_func_end rfu_REQ_endSearchParent - - thumb_func_start rfu_STC_readParentCandidateList -rfu_STC_readParentCandidateList: @ 82E4888 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - mov r0, sp - movs r4, 0 - strh r4, [r0] - ldr r5, =gRfuLinkStatus - ldr r1, [r5] - adds r1, 0x14 - ldr r2, =0x01000040 - bl CpuSet - ldr r0, =gRfuFixed - ldr r0, [r0] - adds r0, 0xDC - ldr r2, [r0] - ldrb r7, [r2, 0x1] - adds r2, 0x4 - ldr r0, [r5] - strb r4, [r0, 0x8] - movs r6, 0 - cmp r7, 0 - beq _082E498C - mov r12, r5 - ldr r0, =0x00007fff - mov r8, r0 -_082E48BE: - subs r0, r7, 0x7 - lsls r0, 24 - lsrs r7, r0, 24 - adds r1, r2, 0x6 - adds r2, 0x13 - ldrb r0, [r2] - mvns r0, r0 - lsls r0, 24 - lsrs r5, r0, 24 - adds r2, 0x1 - movs r4, 0 - movs r3, 0 - adds r6, 0x1 -_082E48D8: - ldrb r0, [r2] - adds r0, r4, r0 - lsls r0, 24 - adds r2, 0x1 - lsrs r0, 24 - ldrb r4, [r1] - adds r0, r4 - lsls r0, 24 - lsrs r4, r0, 24 - adds r1, 0x1 - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x7 - bls _082E48D8 - cmp r4, r5 - bne _082E4980 - subs r2, 0x1C - mov r0, r12 - ldr r1, [r0] - ldrb r0, [r1, 0x8] - lsls r0, 5 - adds r0, 0x14 - adds r4, r1, r0 - ldrh r0, [r2] - movs r3, 0 - strh r0, [r4] - adds r2, 0x2 - ldrb r0, [r2] - strb r0, [r4, 0x2] - adds r2, 0x2 - ldrh r1, [r2] - mov r0, r8 - ands r0, r1 - strh r0, [r4, 0x4] - ldrh r1, [r2] - movs r0, 0x80 - lsls r0, 8 - ands r0, r1 - cmp r0, 0 - beq _082E4940 - movs r0, 0x1 - strb r0, [r4, 0x3] - b _082E4942 - .align 2, 0 - .pool -_082E4940: - strb r3, [r4, 0x3] -_082E4942: - adds r2, 0x2 - movs r3, 0 - adds r5, r4, 0 - adds r5, 0x15 - adds r4, 0x6 -_082E494C: - adds r1, r4, r3 - ldrb r0, [r2] - strb r0, [r1] - adds r2, 0x1 - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0xC - bls _082E494C - adds r2, 0x1 - movs r3, 0 - adds r4, r5, 0 -_082E4964: - adds r1, r4, r3 - ldrb r0, [r2] - strb r0, [r1] - adds r2, 0x1 - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x7 - bls _082E4964 - mov r4, r12 - ldr r1, [r4] - ldrb r0, [r1, 0x8] - adds r0, 0x1 - strb r0, [r1, 0x8] -_082E4980: - lsls r0, r6, 24 - lsrs r6, r0, 24 - cmp r6, 0x3 - bhi _082E498C - cmp r7, 0 - bne _082E48BE -_082E498C: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end rfu_STC_readParentCandidateList - - thumb_func_start rfu_REQ_startConnectParent -rfu_REQ_startConnectParent: @ 82E4998 - push {r4,r5,lr} - lsls r0, 16 - lsrs r4, r0, 16 - movs r3, 0 - movs r2, 0 - ldr r1, =gRfuLinkStatus - ldr r0, [r1] - ldrh r0, [r0, 0x14] - cmp r0, r4 - beq _082E49C4 - adds r5, r1, 0 -_082E49AE: - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x3 - bhi _082E49C4 - ldr r0, [r5] - lsls r1, r2, 5 - adds r0, r1 - ldrh r0, [r0, 0x14] - cmp r0, r4 - bne _082E49AE -_082E49C4: - cmp r2, 0x4 - bne _082E49CC - movs r3, 0x80 - lsls r3, 1 -_082E49CC: - cmp r3, 0 - bne _082E49F0 - ldr r0, =gRfuStatic - ldr r0, [r0] - strh r4, [r0, 0x1E] - ldr r0, =rfu_STC_REQ_callback - bl STWI_set_Callback_M - adds r0, r4, 0 - bl STWI_send_CP_StartREQ - b _082E49F8 - .align 2, 0 - .pool -_082E49F0: - movs r0, 0x1F - adds r1, r3, 0 - bl rfu_STC_REQ_callback -_082E49F8: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end rfu_REQ_startConnectParent - - thumb_func_start rfu_REQ_pollConnectParent -rfu_REQ_pollConnectParent: @ 82E4A00 - push {lr} - ldr r0, =rfu_CB_pollConnectParent - bl STWI_set_Callback_M - bl STWI_send_CP_PollingREQ - pop {r0} - bx r0 - .align 2, 0 - .pool - thumb_func_end rfu_REQ_pollConnectParent - - thumb_func_start rfu_CB_pollConnectParent -rfu_CB_pollConnectParent: @ 82E4A14 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x2C - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x24] - lsls r1, 16 - lsrs r1, 16 - str r1, [sp, 0x28] - cmp r1, 0 - bne _082E4B16 - ldr r0, =gRfuFixed - ldr r0, [r0] - adds r0, 0xDC - ldr r0, [r0] - ldrh r5, [r0, 0x4] - ldrb r1, [r0, 0x6] - mov r10, r1 - ldrb r0, [r0, 0x7] - cmp r0, 0 - bne _082E4B16 - movs r0, 0x80 - lsls r0, 17 - lsls r0, r1 - lsrs r2, r0, 24 - ldr r4, =gRfuLinkStatus - ldr r3, [r4] - ldrb r1, [r3, 0x2] - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - bne _082E4B16 - adds r0, r2, 0 - orrs r0, r1 - strb r0, [r3, 0x2] - ldr r1, [r4] - ldrb r0, [r1, 0x3] - bics r0, r2 - strb r0, [r1, 0x3] - ldr r1, [r4] - adds r0, r1, 0 - adds r0, 0x94 - movs r2, 0 - strh r5, [r0] - ldrb r0, [r1, 0x1] - adds r0, 0x1 - strb r0, [r1, 0x1] - ldr r0, [r4] - strb r2, [r0] - ldr r3, =gRfuStatic - ldr r2, [r3] - ldrb r1, [r2] - movs r0, 0x80 - orrs r0, r1 - strb r0, [r2] - movs r5, 0 - adds r7, r4, 0 - add r6, sp, 0x20 - movs r0, 0 - mov r8, r0 -_082E4A92: - ldr r2, [r7] - lsls r4, r5, 5 - adds r0, r2, r4 - ldr r1, [r3] - ldrh r0, [r0, 0x14] - ldrh r1, [r1, 0x1E] - cmp r0, r1 - bne _082E4AEA - ldrb r0, [r2, 0x8] - cmp r0, 0 - beq _082E4AE0 - mov r9, sp - adds r0, r4, 0 - adds r0, 0x14 - adds r0, r2, r0 - mov r1, sp - movs r2, 0x10 - bl CpuSet - mov r1, r8 - strh r1, [r6] - ldr r1, [r7] - adds r1, 0x14 - adds r0, r6, 0 - ldr r2, =0x01000040 - bl CpuSet - ldr r0, [r7] - mov r1, r8 - strb r1, [r0, 0x8] - b _082E4AF4 - .align 2, 0 - .pool -_082E4AE0: - adds r0, r4, 0 - adds r0, 0x14 - adds r2, r0 - mov r9, r2 - b _082E4AF4 -_082E4AEA: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x3 - bls _082E4A92 -_082E4AF4: - cmp r5, 0x3 - bhi _082E4B16 - ldr r4, =gRfuLinkStatus - mov r0, r10 - lsls r5, r0, 5 - adds r0, r5, 0 - adds r0, 0x14 - ldr r1, [r4] - adds r1, r0 - mov r0, r9 - movs r2, 0x10 - bl CpuSet - ldr r0, [r4] - adds r0, r5 - mov r1, r10 - strb r1, [r0, 0x16] -_082E4B16: - ldr r0, [sp, 0x24] - ldr r1, [sp, 0x28] - bl rfu_STC_REQ_callback - add sp, 0x2C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 - .pool - thumb_func_end rfu_CB_pollConnectParent - - thumb_func_start rfu_getConnectParentStatus -rfu_getConnectParentStatus: @ 82E4B34 - push {lr} - adds r3, r0, 0 - movs r0, 0xFF - strb r0, [r3] - ldr r0, =gRfuFixed - ldr r0, [r0] - adds r0, 0xDC - ldr r2, [r0] - ldrb r0, [r2] - adds r0, 0x60 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bls _082E4B58 - movs r0, 0x10 - b _082E4B64 - .align 2, 0 - .pool -_082E4B58: - adds r2, 0x6 - ldrb r0, [r2] - strb r0, [r1] - ldrb r0, [r2, 0x1] - strb r0, [r3] - movs r0, 0 -_082E4B64: - pop {r1} - bx r1 - thumb_func_end rfu_getConnectParentStatus - - thumb_func_start rfu_REQ_endConnectParent -rfu_REQ_endConnectParent: @ 82E4B68 - push {lr} - ldr r0, =rfu_CB_pollConnectParent - bl STWI_set_Callback_M - bl STWI_send_CP_EndREQ - ldr r0, =gRfuFixed - ldr r0, [r0] - adds r0, 0xDC - ldr r1, [r0] - ldrb r0, [r1, 0x6] - cmp r0, 0x3 - bhi _082E4B90 - ldr r0, =gRfuStatic - ldr r0, [r0] - adds r0, 0xA - ldrb r1, [r1, 0x6] - adds r0, r1 - movs r1, 0 - strb r1, [r0] -_082E4B90: - pop {r0} - bx r0 - .align 2, 0 - .pool - thumb_func_end rfu_REQ_endConnectParent - - thumb_func_start rfu_syncVBlank -rfu_syncVBlank: @ 82E4BA0 - push {r4,r5,lr} - bl rfu_NI_checkCommFailCounter - ldr r0, =gRfuLinkStatus - ldr r0, [r0] - ldrb r0, [r0] - cmp r0, 0xFF - beq _082E4C78 - ldr r4, =gRfuStatic - ldr r1, [r4] - ldrb r0, [r1, 0x6] - cmp r0, 0 - beq _082E4BBE - subs r0, 0x1 - strb r0, [r1, 0x6] -_082E4BBE: - bl rfu_getMasterSlave - lsls r0, 24 - lsrs r3, r0, 24 - ldr r2, [r4] - ldrb r1, [r2] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _082E4BF0 - cmp r3, 0 - bne _082E4BFE - movs r0, 0x4 - orrs r0, r1 - strb r0, [r2] - ldr r1, [r4] - movs r0, 0xB4 - lsls r0, 1 - strh r0, [r1, 0x20] - b _082E4BFA - .align 2, 0 - .pool -_082E4BF0: - cmp r3, 0 - beq _082E4C10 - movs r0, 0xFB - ands r0, r1 - strb r0, [r2] -_082E4BFA: - cmp r3, 0 - beq _082E4C10 -_082E4BFE: - ldr r3, =gRfuStatic - ldr r2, [r3] - ldrb r1, [r2] - movs r0, 0xFD - ands r0, r1 - b _082E4C1A - .align 2, 0 - .pool -_082E4C10: - ldr r3, =gRfuStatic - ldr r2, [r3] - ldrb r1, [r2] - movs r0, 0x2 - orrs r0, r1 -_082E4C1A: - strb r0, [r2] - ldr r3, [r3] - ldrb r1, [r3] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _082E4C78 - ldrh r0, [r3, 0x20] - cmp r0, 0 - bne _082E4C74 - movs r0, 0xFB - ands r0, r1 - strb r0, [r3] - ldr r0, =gRfuLinkStatus - ldr r0, [r0] - ldrb r1, [r0, 0x2] - ldrb r0, [r0, 0x3] - adds r5, r0, 0 - orrs r5, r1 - movs r4, 0 -_082E4C42: - adds r0, r5, 0 - asrs r0, r4 - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _082E4C54 - adds r0, r4, 0 - bl rfu_STC_removeLinkData -_082E4C54: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x3 - bls _082E4C42 - ldr r0, =gRfuLinkStatus - ldr r1, [r0] - movs r0, 0xFF - strb r0, [r1] - movs r0, 0x1 - b _082E4C7A - .align 2, 0 - .pool -_082E4C74: - subs r0, 0x1 - strh r0, [r3, 0x20] -_082E4C78: - movs r0, 0 -_082E4C7A: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end rfu_syncVBlank - - thumb_func_start rfu_REQBN_watchLink -rfu_REQBN_watchLink: @ 82E4C80 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x18 - mov r8, r1 - str r2, [sp] - str r3, [sp, 0x4] - lsls r0, 16 - lsrs r6, r0, 16 - movs r0, 0 - str r0, [sp, 0x8] - movs r1, 0 - str r1, [sp, 0xC] - mov r2, r8 - strb r1, [r2] - mov r0, sp - ldrb r1, [r0, 0xC] - ldr r0, [sp] - strb r1, [r0] - mov r2, sp - ldrb r0, [r2, 0xC] - ldr r2, [sp, 0x4] - strb r0, [r2] - ldr r5, =gRfuLinkStatus - ldr r0, [r5] - ldrb r0, [r0] - cmp r0, 0xFF - bne _082E4CBE - b _082E504E -_082E4CBE: - ldr r0, =gSTWIStatus - ldr r0, [r0] - ldrb r0, [r0, 0x14] - cmp r0, 0 - bne _082E4CCA - b _082E504E -_082E4CCA: - ldr r3, =gRfuStatic - ldr r2, [r3] - ldrb r1, [r2] - movs r4, 0x4 - adds r0, r4, 0 - ands r0, r1 - cmp r0, 0 - beq _082E4CE0 - movs r0, 0xB4 - lsls r0, 1 - strh r0, [r2, 0x20] -_082E4CE0: - ldr r1, [r3] - ldrb r0, [r1, 0x6] - cmp r0, 0 - bne _082E4CEE - strb r4, [r1, 0x6] - movs r1, 0x1 - str r1, [sp, 0x8] -_082E4CEE: - lsls r0, r6, 24 - lsrs r0, 24 - cmp r0, 0x29 - bne _082E4D30 - ldr r0, =gRfuFixed - ldr r0, [r0] - adds r0, 0xDC - ldr r1, [r0] - ldrb r0, [r1, 0x4] - mov r2, r8 - strb r0, [r2] - ldrb r0, [r1, 0x5] - ldr r1, [sp] - strb r0, [r1] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _082E4D18 - ldr r0, [r5] - ldrb r0, [r0, 0x2] - strb r0, [r2] -_082E4D18: - movs r2, 0x2 - str r2, [sp, 0x8] - b _082E4D88 - .align 2, 0 - .pool -_082E4D30: - movs r0, 0x9B - lsls r0, 1 - cmp r6, r0 - bne _082E4D80 - ldr r0, =gRfuFixed - ldr r0, [r0] - adds r0, 0xDC - ldr r0, [r0] - ldrb r6, [r0, 0x5] - ldr r0, [r5] - ldrb r0, [r0, 0x2] - eors r6, r0 - ands r6, r0 - mov r0, r8 - strb r6, [r0] - movs r0, 0x1 - ldr r1, [sp] - strb r0, [r1] - movs r5, 0 -_082E4D56: - mov r2, r8 - ldrb r0, [r2] - asrs r0, r5 - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _082E4D76 - ldr r0, =gRfuLinkStatus - ldr r0, [r0] - adds r0, 0xA - adds r0, r5 - movs r1, 0 - strb r1, [r0] - adds r0, r5, 0 - bl rfu_STC_removeLinkData -_082E4D76: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x3 - bls _082E4D56 -_082E4D80: - ldr r0, [sp, 0x8] - cmp r0, 0 - bne _082E4D88 - b _082E504E -_082E4D88: - ldr r4, =gRfuFixed - ldr r0, [r4] - adds r0, 0xDC - ldr r0, [r0] - ldr r1, [r0] - str r1, [sp, 0x10] - ldr r0, [r0, 0x4] - str r0, [sp, 0x14] - ldr r0, =rfu_CB_defaultCallback - bl STWI_set_Callback_M - bl STWI_send_LinkStatusREQ - bl STWI_poll_CommandEnd - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0xC] - cmp r0, 0 - bne _082E4DE8 - ldr r0, [r4] - adds r0, 0xDC - ldr r0, [r0] - adds r2, r0, 0x4 - movs r5, 0 - ldr r3, =gRfuLinkStatus -_082E4DBC: - ldr r0, [r3] - adds r0, 0xA - adds r0, r5 - ldrb r1, [r2] - strb r1, [r0] - adds r2, 0x1 - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x3 - bls _082E4DBC - movs r2, 0 - mov r9, r2 - movs r5, 0 - b _082E4DF4 - .align 2, 0 - .pool -_082E4DE8: - movs r0, 0x11 - ldr r1, [sp, 0xC] - bl rfu_STC_REQ_callback - ldr r0, [sp, 0xC] - b _082E5050 -_082E4DF4: - ldr r1, =gRfuStatic - ldr r0, [r1] - adds r0, 0xE - adds r2, r0, r5 - ldrb r0, [r2] - adds r3, r1, 0 - cmp r0, 0 - beq _082E4E1A - subs r0, 0x4 - strb r0, [r2] - ldr r0, =gRfuLinkStatus - ldr r0, [r0] - adds r0, 0xA - adds r1, r0, r5 - ldrb r0, [r1] - cmp r0, 0xF - bhi _082E4E1A - movs r0, 0x10 - strb r0, [r1] -_082E4E1A: - movs r0, 0x80 - lsls r0, 17 - lsls r0, r5 - lsrs r6, r0, 24 - adds r0, r5, 0x1 - mov r10, r0 - ldr r1, [sp, 0xC] - cmp r1, 0 - beq _082E4E2E - b _082E5002 -_082E4E2E: - ldr r2, [sp, 0x8] - cmp r2, 0x1 - bne _082E4F10 - ldr r4, =gRfuLinkStatus - ldr r1, [r4] - ldrb r0, [r1, 0x2] - ands r0, r6 - cmp r0, 0 - beq _082E4F10 - adds r0, r1, 0 - adds r0, 0xA - adds r0, r5 - ldrb r0, [r0] - cmp r0, 0 - bne _082E4F04 - ldrb r0, [r1] - cmp r0, 0x1 - bne _082E4E84 - ldr r1, [r3] - adds r1, 0xA - adds r1, r5 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r0, [r3] - adds r0, 0xA - adds r0, r5 - ldrb r0, [r0] - cmp r0, 0x3 - bls _082E4F10 - mov r0, r8 - ldrb r1, [r0] - adds r0, r6, 0 - orrs r0, r1 - mov r1, r8 - strb r0, [r1] - ldr r0, [sp] - strb r2, [r0] - b _082E4F10 - .align 2, 0 - .pool -_082E4E84: - bl STWI_send_SystemStatusREQ - bl STWI_poll_CommandEnd - lsls r0, 16 - cmp r0, 0 - bne _082E4F10 - ldr r0, =gRfuFixed - ldr r0, [r0] - adds r0, 0xDC - ldr r0, [r0] - ldrb r0, [r0, 0x7] - cmp r0, 0 - bne _082E4EB8 - mov r2, r8 - ldrb r1, [r2] - adds r0, r6, 0 - orrs r0, r1 - strb r0, [r2] - mov r0, sp - ldrb r1, [r0, 0x8] - ldr r0, [sp] - b _082E4F0E - .align 2, 0 - .pool -_082E4EB8: - ldr r2, =gRfuStatic - ldr r1, [r2] - adds r1, 0xA - adds r1, r5 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - lsls r0, 24 - ldr r2, [r2] - lsrs r0, 24 - ldrh r1, [r2, 0x1A] - cmp r0, r1 - bls _082E4F10 - adds r0, r2, 0 - adds r0, 0xA - adds r0, r5 - mov r2, sp - ldrb r2, [r2, 0xC] - strb r2, [r0] - ldr r0, [r4] - ldrb r0, [r0, 0x2] - bl STWI_send_DisconnectREQ - bl STWI_poll_CommandEnd - mov r0, r8 - ldrb r1, [r0] - adds r0, r6, 0 - orrs r0, r1 - mov r1, r8 - strb r0, [r1] - mov r2, sp - ldrb r0, [r2, 0x8] - ldr r2, [sp] - strb r0, [r2] - b _082E4F10 - .align 2, 0 - .pool -_082E4F04: - ldr r0, [r3] - adds r0, 0xA - adds r0, r5 - mov r1, sp - ldrb r1, [r1, 0xC] -_082E4F0E: - strb r1, [r0] -_082E4F10: - ldr r2, =gRfuLinkStatus - mov r12, r2 - ldr r1, [r2] - ldrb r7, [r1] - adds r0, r5, 0x1 - mov r10, r0 - cmp r7, 0x1 - bne _082E5002 - adds r0, r1, 0 - adds r0, 0xA - adds r4, r0, r5 - ldrb r3, [r4] - cmp r3, 0 - beq _082E5002 - ldrb r2, [r1, 0x3] - adds r0, r6, 0 - ands r0, r2 - cmp r0, 0 - beq _082E4F7E - cmp r3, 0xA - bls _082E4F78 - ldr r2, [sp, 0x4] - ldrb r1, [r2] - adds r0, r6, 0 - orrs r0, r1 - strb r0, [r2] - mov r0, r12 - ldr r2, [r0] - ldrb r1, [r2, 0x2] - adds r0, r6, 0 - orrs r0, r1 - movs r3, 0 - strb r0, [r2, 0x2] - mov r2, r12 - ldr r1, [r2] - ldrb r0, [r1, 0x3] - bics r0, r6 - strb r0, [r1, 0x3] - ldr r1, [r2] - ldrb r0, [r1, 0x1] - adds r0, 0x1 - strb r0, [r1, 0x1] - ldr r0, =gRfuStatic - ldr r0, [r0] - adds r0, 0xA - adds r0, r5 - strb r3, [r0] - b _082E5002 - .align 2, 0 - .pool -_082E4F78: - movs r0, 0 - strb r0, [r4] - b _082E5002 -_082E4F7E: - ldrb r0, [r1, 0x2] - orrs r0, r2 - ands r0, r6 - cmp r0, 0 - bne _082E5002 - bl STWI_send_SlotStatusREQ - bl STWI_poll_CommandEnd - ldr r0, =gRfuFixed - ldr r0, [r0] - adds r0, 0xDC - ldr r2, [r0] - ldrb r0, [r2, 0x1] - subs r0, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - adds r2, 0x8 - cmp r3, 0 - beq _082E5002 - ldrh r4, [r2] - ldrb r0, [r2, 0x2] - cmp r0, r5 - bne _082E4FD0 - ldr r0, =gRfuStatic - ldr r0, [r0] - lsls r1, r5, 1 - adds r0, 0x12 - adds r0, r1 - ldrh r0, [r0] - cmp r4, r0 - bne _082E4FD0 - lsls r7, r5 - mov r0, r9 - orrs r0, r7 - lsls r0, 24 - b _082E4FFE - .align 2, 0 - .pool -_082E4FD0: - adds r2, 0x4 - subs r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0 - beq _082E5002 - ldrh r4, [r2] - ldrb r0, [r2, 0x2] - cmp r0, r5 - bne _082E4FD0 - ldr r0, =gRfuStatic - ldr r0, [r0] - lsls r1, r5, 1 - adds r0, 0x12 - adds r0, r1 - ldrh r0, [r0] - cmp r4, r0 - bne _082E4FD0 - movs r0, 0x1 - lsls r0, r5 - mov r1, r9 - orrs r1, r0 - lsls r0, r1, 24 -_082E4FFE: - lsrs r0, 24 - mov r9, r0 -_082E5002: - ldr r0, =gRfuLinkStatus - ldr r0, [r0] - ldrb r1, [r0, 0x2] - mov r2, r8 - ldrb r0, [r2] - ands r0, r1 - ands r6, r0 - cmp r6, 0 - beq _082E501C - adds r0, r5, 0 - movs r1, 0 - bl rfu_STC_removeLinkData -_082E501C: - mov r1, r10 - lsls r0, r1, 24 - lsrs r5, r0, 24 - cmp r5, 0x3 - bhi _082E5028 - b _082E4DF4 -_082E5028: - mov r2, r9 - cmp r2, 0 - beq _082E5038 - mov r0, r9 - bl STWI_send_DisconnectREQ - bl STWI_poll_CommandEnd -_082E5038: - ldr r1, =gRfuFixed - ldr r0, [r1] - adds r0, 0xDC - ldr r0, [r0] - ldr r2, [sp, 0x10] - str r2, [r0] - ldr r0, [r1] - adds r0, 0xDC - ldr r0, [r0] - ldr r1, [sp, 0x14] - str r1, [r0, 0x4] -_082E504E: - movs r0, 0 -_082E5050: - add sp, 0x18 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 - .pool - thumb_func_end rfu_REQBN_watchLink - - thumb_func_start rfu_STC_removeLinkData -rfu_STC_removeLinkData: @ 82E506C - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r7, r0, 24 - lsls r1, 24 - lsrs r1, 24 - mov r12, r1 - movs r0, 0x80 - lsls r0, 17 - lsls r0, r7 - lsrs r6, r0, 24 - ldr r0, =gRfuStatic - ldr r0, [r0] - adds r0, 0xE - adds r0, r7 - movs r1, 0 - strb r1, [r0] - ldr r1, =gRfuLinkStatus - ldr r4, [r1] - ldrb r0, [r4, 0x2] - ands r0, r6 - mov r8, r1 - cmp r0, 0 - beq _082E50AA - ldrb r0, [r4, 0x1] - cmp r0, 0 - beq _082E50AA - subs r0, 0x1 - strb r0, [r4, 0x1] -_082E50AA: - mov r3, r8 - ldr r2, [r3] - mvns r5, r6 - ldrb r1, [r2, 0x2] - adds r0, r5, 0 - ands r0, r1 - strb r0, [r2, 0x2] - ldr r2, [r3] - ldrb r1, [r2, 0x3] - adds r0, r6, 0 - orrs r0, r1 - strb r0, [r2, 0x3] - ldr r3, [r3] - ldr r0, [r3] - ldr r1, =0x00ff00ff - ands r0, r1 - cmp r0, 0 - bne _082E50D2 - movs r0, 0xFF - strb r0, [r3] -_082E50D2: - mov r0, r12 - cmp r0, 0 - beq _082E5110 - mov r1, sp - movs r4, 0 - movs r0, 0 - strh r0, [r1] - lsls r0, r7, 5 - adds r0, 0x14 - mov r2, r8 - ldr r1, [r2] - adds r1, r0 - ldr r2, =0x01000010 - mov r0, sp - bl CpuSet - mov r0, r8 - ldr r2, [r0] - ldrb r1, [r2, 0x3] - adds r0, r5, 0 - ands r0, r1 - strb r0, [r2, 0x3] - mov r2, r8 - ldr r1, [r2] - ldrb r0, [r1, 0x7] - ands r5, r0 - strb r5, [r1, 0x7] - ldr r0, [r2] - adds r0, 0xA - adds r0, r7 - strb r4, [r0] -_082E5110: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 - .pool - thumb_func_end rfu_STC_removeLinkData - - thumb_func_start rfu_REQ_disconnect -rfu_REQ_disconnect: @ 82E512C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r2, =gRfuLinkStatus - ldr r1, [r2] - ldrb r0, [r1, 0x2] - ldrb r1, [r1, 0x3] - orrs r0, r1 - ands r0, r4 - cmp r0, 0 - beq _082E51B0 - ldr r0, =gRfuStatic - ldr r1, [r0] - strb r4, [r1, 0x5] - ldr r2, [r2] - ldrb r1, [r2] - adds r3, r0, 0 - cmp r1, 0xFF - bne _082E5178 - ldr r0, [r3] - ldrb r1, [r0] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _082E5178 - ldrb r0, [r2, 0x3] - ands r0, r4 - cmp r0, 0 - beq _082E51B0 - movs r0, 0x30 - movs r1, 0 - bl rfu_CB_disconnect - b _082E51B0 - .align 2, 0 - .pool -_082E5178: - ldr r0, [r3] - ldrb r0, [r0, 0x9] - cmp r0, 0 - beq _082E51A4 - ldr r0, =rfu_CB_defaultCallback - bl STWI_set_Callback_M - bl STWI_send_SC_EndREQ - bl STWI_poll_CommandEnd - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0 - beq _082E51A4 - movs r0, 0x1B - bl rfu_STC_REQ_callback - b _082E51B0 - .align 2, 0 - .pool -_082E51A4: - ldr r0, =rfu_CB_disconnect - bl STWI_set_Callback_M - adds r0, r4, 0 - bl STWI_send_DisconnectREQ -_082E51B0: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 - .pool - thumb_func_end rfu_REQ_disconnect - - thumb_func_start rfu_CB_disconnect -rfu_CB_disconnect: @ 82E51BC - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r1, 16 - lsrs r5, r1, 16 - cmp r5, 0x3 - bne _082E51F8 - ldr r0, =gRfuLinkStatus - ldr r0, [r0] - ldrb r0, [r0] - cmp r0, 0 - bne _082E51F8 - ldr r0, =rfu_CB_defaultCallback - bl STWI_set_Callback_M - bl STWI_send_SystemStatusREQ - bl STWI_poll_CommandEnd - lsls r0, 16 - cmp r0, 0 - bne _082E51F8 - ldr r0, =gRfuFixed - ldr r0, [r0] - adds r0, 0xDC - ldr r0, [r0] - ldrb r0, [r0, 0x7] - cmp r0, 0 - bne _082E51F8 - movs r5, 0 -_082E51F8: - ldr r3, =gRfuStatic - ldr r2, [r3] - ldr r0, =gRfuLinkStatus - ldr r1, [r0] - ldrb r0, [r1, 0x2] - ldrb r1, [r1, 0x3] - orrs r0, r1 - ldrb r1, [r2, 0x5] - ands r0, r1 - strb r0, [r2, 0x5] - ldr r0, =gRfuFixed - ldr r0, [r0] - adds r0, 0xDC - ldr r1, [r0] - ldr r0, [r3] - ldrb r0, [r0, 0x5] - strb r0, [r1, 0x8] - cmp r5, 0 - bne _082E5246 - movs r4, 0 -_082E5220: - movs r0, 0x80 - lsls r0, 17 - lsls r0, r4 - lsrs r0, 24 - ldr r1, =gRfuStatic - ldr r1, [r1] - ldrb r1, [r1, 0x5] - ands r0, r1 - cmp r0, 0 - beq _082E523C - adds r0, r4, 0 - movs r1, 0x1 - bl rfu_STC_removeLinkData -_082E523C: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x3 - bls _082E5220 -_082E5246: - ldr r0, =gRfuLinkStatus - ldr r2, [r0] - ldrb r1, [r2, 0x2] - ldrb r0, [r2, 0x3] - orrs r0, r1 - cmp r0, 0 - bne _082E5258 - movs r0, 0xFF - strb r0, [r2] -_082E5258: - adds r0, r6, 0 - adds r1, r5, 0 - bl rfu_STC_REQ_callback - ldr r0, =gRfuStatic - ldr r0, [r0] - ldrb r0, [r0, 0x9] - cmp r0, 0 - beq _082E5286 - ldr r0, =rfu_CB_defaultCallback - bl STWI_set_Callback_M - bl STWI_send_SC_StartREQ - bl STWI_poll_CommandEnd - adds r5, r0, 0 - cmp r5, 0 - beq _082E5286 - movs r0, 0x19 - adds r1, r5, 0 - bl rfu_STC_REQ_callback -_082E5286: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 - .pool - thumb_func_end rfu_CB_disconnect - - thumb_func_start rfu_REQ_CHILD_startConnectRecovery -rfu_REQ_CHILD_startConnectRecovery: @ 82E529C - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, =gRfuStatic - ldr r0, [r0] - strb r5, [r0, 0x5] - movs r4, 0 - movs r0, 0x1 - ands r0, r5 - ldr r2, =rfu_STC_REQ_callback - cmp r0, 0 - bne _082E52CA - movs r1, 0x1 -_082E52B6: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x3 - bhi _082E52CA - adds r0, r5, 0 - asrs r0, r4 - ands r0, r1 - cmp r0, 0 - beq _082E52B6 -_082E52CA: - adds r0, r2, 0 - bl STWI_set_Callback_M - ldr r0, =gRfuLinkStatus - ldr r1, [r0] - lsls r0, r4, 5 - adds r0, r1, r0 - ldrh r0, [r0, 0x14] - adds r1, 0x94 - ldrh r1, [r1] - adds r2, r5, 0 - bl STWI_send_CPR_StartREQ - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 - .pool - thumb_func_end rfu_REQ_CHILD_startConnectRecovery - - thumb_func_start rfu_REQ_CHILD_pollConnectRecovery -rfu_REQ_CHILD_pollConnectRecovery: @ 82E52F8 - push {lr} - ldr r0, =rfu_CB_CHILD_pollConnectRecovery - bl STWI_set_Callback_M - bl STWI_send_CPR_PollingREQ - pop {r0} - bx r0 - .align 2, 0 - .pool - thumb_func_end rfu_REQ_CHILD_pollConnectRecovery - - thumb_func_start rfu_CB_CHILD_pollConnectRecovery -rfu_CB_CHILD_pollConnectRecovery: @ 82E530C - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - lsls r1, 16 - lsrs r7, r1, 16 - cmp r7, 0 - bne _082E5390 - ldr r0, =gRfuFixed - ldr r0, [r0] - adds r0, 0xDC - ldr r0, [r0] - ldrb r0, [r0, 0x4] - cmp r0, 0 - bne _082E5390 - ldr r0, =gRfuStatic - ldr r1, [r0] - ldrb r1, [r1, 0x5] - adds r6, r0, 0 - cmp r1, 0 - beq _082E5390 - ldr r1, =gRfuLinkStatus - ldr r0, [r1] - strb r7, [r0] - movs r4, 0 - adds r5, r1, 0 - mov r12, r4 -_082E5346: - movs r0, 0x80 - lsls r0, 17 - lsls r0, r4 - lsrs r3, r0, 24 - ldr r2, [r5] - ldr r0, [r6] - ldrb r0, [r0, 0x5] - ands r0, r3 - ldrb r1, [r2, 0x3] - ands r0, r1 - cmp r0, 0 - beq _082E5380 - ldrb r1, [r2, 0x2] - adds r0, r3, 0 - orrs r0, r1 - strb r0, [r2, 0x2] - ldr r1, [r5] - ldrb r0, [r1, 0x3] - bics r0, r3 - strb r0, [r1, 0x3] - ldr r1, [r5] - ldrb r0, [r1, 0x1] - adds r0, 0x1 - strb r0, [r1, 0x1] - ldr r0, [r6] - adds r0, 0xA - adds r0, r4 - mov r1, r12 - strb r1, [r0] -_082E5380: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x3 - bls _082E5346 - ldr r1, [r6] - movs r0, 0 - strb r0, [r1, 0x5] -_082E5390: - mov r0, r8 - adds r1, r7, 0 - bl rfu_STC_REQ_callback - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 - .pool - thumb_func_end rfu_CB_CHILD_pollConnectRecovery - - thumb_func_start rfu_CHILD_getConnectRecoveryStatus -rfu_CHILD_getConnectRecoveryStatus: @ 82E53B0 - push {lr} - adds r2, r0, 0 - movs r0, 0xFF - strb r0, [r2] - ldr r0, =gRfuFixed - ldr r0, [r0] - adds r0, 0xDC - ldr r1, [r0] - ldrb r0, [r1] - adds r0, 0x4D - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bls _082E53D4 - movs r0, 0x10 - b _082E53DA - .align 2, 0 - .pool -_082E53D4: - ldrb r0, [r1, 0x4] - strb r0, [r2] - movs r0, 0 -_082E53DA: - pop {r1} - bx r1 - thumb_func_end rfu_CHILD_getConnectRecoveryStatus - - thumb_func_start rfu_REQ_CHILD_endConnectRecovery -rfu_REQ_CHILD_endConnectRecovery: @ 82E53E0 - push {lr} - ldr r0, =rfu_CB_CHILD_pollConnectRecovery - bl STWI_set_Callback_M - bl STWI_send_CPR_EndREQ - pop {r0} - bx r0 - .align 2, 0 - .pool - thumb_func_end rfu_REQ_CHILD_endConnectRecovery - - thumb_func_start sub_82E53F4 -sub_82E53F4: @ 82E53F4 - push {r4-r6,lr} - adds r5, r0, 0 - adds r6, r1, 0 - ldr r3, [r5] - ldr r1, [r6] - subs r2, 0x1 - movs r0, 0x1 - negs r0, r0 - cmp r2, r0 - beq _082E5418 - adds r4, r0, 0 - thumb_func_end sub_82E53F4 - - non_word_aligned_thumb_func_start sub_82E540A -sub_82E540A: @ 82E540A - ldrb r0, [r3] - strb r0, [r1] - adds r3, 0x1 - adds r1, 0x1 - subs r2, 0x1 - cmp r2, r4 - bne sub_82E540A -_082E5418: - str r3, [r5] - str r1, [r6] - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_82E540A - - thumb_func_start rfu_REQ_changeMasterSlave -rfu_REQ_changeMasterSlave: @ 82E5424 - push {lr} - movs r0, 0x1 - bl STWI_read_status - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - bne _082E5444 - ldr r0, =rfu_STC_REQ_callback - bl STWI_set_Callback_M - bl STWI_send_MS_ChangeREQ - b _082E544C - .align 2, 0 - .pool -_082E5444: - movs r0, 0x27 - movs r1, 0 - bl rfu_STC_REQ_callback -_082E544C: - pop {r0} - bx r0 - thumb_func_end rfu_REQ_changeMasterSlave - - thumb_func_start rfu_getMasterSlave -rfu_getMasterSlave: @ 82E5450 - push {lr} - movs r0, 0x1 - bl STWI_read_status - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x1 - bne _082E547E - ldr r0, =gSTWIStatus - ldr r1, [r0] - adds r0, r1, 0 - adds r0, 0x2C - ldrb r0, [r0] - cmp r0, 0 - beq _082E547E - ldrb r0, [r1, 0x6] - cmp r0, 0x27 - beq _082E547C - cmp r0, 0x25 - beq _082E547C - cmp r0, 0x37 - bne _082E547E -_082E547C: - movs r2, 0 -_082E547E: - adds r0, r2, 0 - pop {r1} - bx r1 - .align 2, 0 - .pool - thumb_func_end rfu_getMasterSlave - - thumb_func_start rfu_clearAllSlot -rfu_clearAllSlot: @ 82E5488 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - ldr r1, =0x04000208 - ldrh r0, [r1] - mov r8, r0 - movs r0, 0 - strh r0, [r1] - movs r5, 0 - mov r0, sp - adds r0, 0x2 - movs r7, 0 - adds r6, r0, 0 -_082E54A4: - mov r0, sp - strh r7, [r0] - ldr r0, =gRfuSlotStatusNI - lsls r4, r5, 2 - adds r0, r4, r0 - ldr r1, [r0] - mov r0, sp - ldr r2, =0x01000034 - bl CpuSet - strh r7, [r6] - ldr r0, =gRfuSlotStatusUNI - adds r4, r0 - ldr r1, [r4] - adds r0, r6, 0 - ldr r2, =0x0100000a - bl CpuSet - ldr r3, =gRfuLinkStatus - ldr r0, [r3] - adds r0, 0x10 - adds r0, r5 - movs r1, 0x10 - strb r1, [r0] - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0x3 - bls _082E54A4 - ldr r2, [r3] - movs r1, 0 - movs r0, 0x57 - strb r0, [r2, 0xF] - ldr r0, [r3] - strb r1, [r0, 0x4] - ldr r0, [r3] - strb r1, [r0, 0x5] - ldr r0, [r3] - strb r1, [r0, 0x6] - ldr r0, =gRfuStatic - ldr r0, [r0] - strb r1, [r0, 0x2] - ldr r0, =0x04000208 - mov r1, r8 - strh r1, [r0] - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 - .pool - thumb_func_end rfu_clearAllSlot - - thumb_func_start rfu_STC_releaseFrame -rfu_STC_releaseFrame: @ 82E5528 - push {r4-r6,lr} - adds r4, r2, 0 - lsls r0, 24 - lsrs r2, r0, 24 - adds r5, r2, 0 - lsls r1, 24 - lsrs r3, r1, 24 - ldr r0, =gRfuStatic - ldr r0, [r0] - ldrb r1, [r0] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _082E5568 - ldr r6, =gRfuLinkStatus - cmp r3, 0 - bne _082E5554 - ldr r1, [r6] - ldrb r0, [r1, 0xF] - ldrh r4, [r4, 0x2E] - adds r0, r4 - strb r0, [r1, 0xF] -_082E5554: - ldr r1, [r6] - ldrb r0, [r1, 0xF] - adds r0, 0x3 - strb r0, [r1, 0xF] - b _082E5588 - .align 2, 0 - .pool -_082E5568: - ldr r6, =gRfuLinkStatus - cmp r3, 0 - bne _082E557C - ldr r1, [r6] - adds r1, 0x10 - adds r1, r2 - ldrb r0, [r1] - ldrh r4, [r4, 0x2E] - adds r0, r4 - strb r0, [r1] -_082E557C: - ldr r1, [r6] - adds r1, 0x10 - adds r1, r5 - ldrb r0, [r1] - adds r0, 0x2 - strb r0, [r1] -_082E5588: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 - .pool - thumb_func_end rfu_STC_releaseFrame - - thumb_func_start rfu_clearSlot -rfu_clearSlot: @ 82E5594 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - lsls r1, 24 - lsrs r7, r1, 24 - cmp r7, 0x3 - bls _082E55B4 - movs r0, 0x80 - lsls r0, 3 - b _082E572C -_082E55B4: - movs r0, 0xF - mov r1, r8 - ands r0, r1 - cmp r0, 0 - bne _082E55C4 - movs r0, 0xC0 - lsls r0, 3 - b _082E572C -_082E55C4: - ldr r1, =0x04000208 - ldrh r0, [r1] - mov r10, r0 - movs r0, 0 - strh r0, [r1] - movs r0, 0xC - mov r2, r8 - ands r0, r2 - cmp r0, 0 - beq _082E568C - movs r3, 0 - ldr r1, =gRfuSlotStatusNI - lsls r0, r7, 2 - adds r0, r1 - mov r9, r0 -_082E55E2: - movs r4, 0 - cmp r3, 0 - bne _082E5614 - movs r0, 0x4 - mov r1, r8 - ands r0, r1 - cmp r0, 0 - beq _082E5634 - mov r2, r9 - ldr r4, [r2] - ldr r0, =gRfuLinkStatus - ldr r2, [r0] - adds r0, r4, 0 - adds r0, 0x2C - ldrb r1, [r0] - ldrb r0, [r2, 0x4] - bics r0, r1 - strb r0, [r2, 0x4] - b _082E5634 - .align 2, 0 - .pool -_082E5614: - movs r0, 0x8 - mov r1, r8 - ands r0, r1 - cmp r0, 0 - beq _082E5634 - mov r2, r9 - ldr r0, [r2] - adds r4, r0, 0 - adds r4, 0x34 - ldr r0, =gRfuLinkStatus - ldr r2, [r0] - movs r1, 0x1 - lsls r1, r7 - ldrb r0, [r2, 0x5] - bics r0, r1 - strb r0, [r2, 0x5] -_082E5634: - adds r6, r3, 0x1 - cmp r4, 0 - beq _082E5684 - ldrh r0, [r4] - movs r2, 0x80 - lsls r2, 8 - adds r1, r2, 0 - ands r0, r1 - cmp r0, 0 - beq _082E5674 - lsls r1, r3, 24 - lsrs r1, 24 - adds r0, r7, 0 - adds r2, r4, 0 - bl rfu_STC_releaseFrame - movs r1, 0 - adds r2, r4, 0 - adds r2, 0x2C - movs r5, 0x1 - movs r3, 0 -_082E565E: - ldrb r0, [r2] - asrs r0, r1 - ands r0, r5 - cmp r0, 0 - beq _082E566A - strh r3, [r4, 0x2] -_082E566A: - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0x3 - bls _082E565E -_082E5674: - mov r1, sp - movs r0, 0 - strh r0, [r1] - mov r0, sp - adds r1, r4, 0 - ldr r2, =0x0100001a - bl CpuSet -_082E5684: - lsls r0, r6, 16 - lsrs r3, r0, 16 - cmp r3, 0x1 - bls _082E55E2 -_082E568C: - movs r0, 0x1 - mov r4, r8 - ands r0, r4 - cmp r0, 0 - beq _082E5702 - ldr r1, =gRfuSlotStatusUNI - lsls r0, r7, 2 - adds r0, r1 - ldr r3, [r0] - ldrh r1, [r3] - movs r0, 0x80 - lsls r0, 8 - ands r0, r1 - cmp r0, 0 - beq _082E56F4 - ldr r0, =gRfuStatic - ldr r0, [r0] - ldrb r1, [r0] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _082E56D8 - ldr r2, =gRfuLinkStatus - ldr r1, [r2] - ldrb r0, [r1, 0xF] - adds r0, 0x3 - ldrb r4, [r3, 0x4] - adds r0, r4 - strb r0, [r1, 0xF] - b _082E56EA - .align 2, 0 - .pool -_082E56D8: - ldr r2, =gRfuLinkStatus - ldr r1, [r2] - adds r1, 0x10 - adds r1, r7 - ldrb r0, [r1] - adds r0, 0x2 - ldrb r4, [r3, 0x4] - adds r0, r4 - strb r0, [r1] -_082E56EA: - ldr r2, [r2] - ldrb r1, [r3, 0x3] - ldrb r0, [r2, 0x6] - bics r0, r1 - strb r0, [r2, 0x6] -_082E56F4: - mov r0, sp - movs r1, 0 - strh r1, [r0] - ldr r2, =0x01000006 - adds r1, r3, 0 - bl CpuSet -_082E5702: - movs r0, 0x2 - mov r1, r8 - ands r0, r1 - cmp r0, 0 - beq _082E5724 - mov r1, sp - movs r0, 0 - strh r0, [r1] - ldr r1, =gRfuSlotStatusUNI - lsls r0, r7, 2 - adds r0, r1 - ldr r1, [r0] - adds r1, 0xC - ldr r2, =0x01000004 - mov r0, sp - bl CpuSet -_082E5724: - ldr r0, =0x04000208 - mov r2, r10 - strh r2, [r0] - movs r0, 0 -_082E572C: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 - .pool - thumb_func_end rfu_clearSlot - - thumb_func_start rfu_setRecvBuffer -rfu_setRecvBuffer: @ 82E5750 - push {r4-r6,lr} - adds r5, r2, 0 - adds r6, r3, 0 - lsls r0, 24 - lsrs r3, r0, 24 - adds r2, r3, 0 - lsls r1, 24 - lsrs r1, 24 - adds r4, r1, 0 - cmp r1, 0x3 - bls _082E576C - movs r0, 0x80 - lsls r0, 3 - b _082E57A4 -_082E576C: - movs r0, 0x20 - ands r0, r3 - cmp r0, 0 - beq _082E5788 - ldr r0, =gRfuSlotStatusNI - lsls r1, 2 - adds r1, r0 - ldr r0, [r1] - str r5, [r0, 0x68] - str r6, [r0, 0x6C] - b _082E57A2 - .align 2, 0 - .pool -_082E5788: - movs r0, 0x10 - ands r2, r0 - cmp r2, 0 - bne _082E5796 - movs r0, 0xC0 - lsls r0, 3 - b _082E57A4 -_082E5796: - ldr r0, =gRfuSlotStatusUNI - lsls r1, r4, 2 - adds r1, r0 - ldr r0, [r1] - str r5, [r0, 0x14] - str r6, [r0, 0x18] -_082E57A2: - movs r0, 0 -_082E57A4: - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 - .pool - thumb_func_end rfu_setRecvBuffer - - thumb_func_start rfu_NI_setSendData -rfu_NI_setSendData: @ 82E57B0 - push {r4-r6,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - adds r6, r2, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r5, 24 - lsrs r5, 24 - str r3, [sp] - movs r0, 0x20 - adds r1, r4, 0 - adds r2, r5, 0 - adds r3, r6, 0 - bl rfu_STC_setSendData_org - lsls r0, 16 - lsrs r0, 16 - add sp, 0x4 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end rfu_NI_setSendData - - thumb_func_start rfu_UNI_setSendData -rfu_UNI_setSendData: @ 82E57DC - push {lr} - sub sp, 0x4 - adds r3, r1, 0 - lsls r0, 24 - lsrs r1, r0, 24 - lsls r2, 24 - lsrs r2, 24 - ldr r0, =gRfuLinkStatus - ldr r0, [r0] - ldrb r0, [r0] - cmp r0, 0x1 - bne _082E57FC - adds r0, r2, 0x3 - b _082E57FE - .align 2, 0 - .pool -_082E57FC: - adds r0, r2, 0x2 -_082E57FE: - lsls r0, 24 - lsrs r2, r0, 24 - movs r0, 0 - str r0, [sp] - movs r0, 0x10 - bl rfu_STC_setSendData_org - lsls r0, 16 - lsrs r0, 16 - add sp, 0x4 - pop {r1} - bx r1 - thumb_func_end rfu_UNI_setSendData - - thumb_func_start rfu_NI_CHILD_setSendGameName -rfu_NI_CHILD_setSendGameName: @ 82E5818 - push {lr} - sub sp, 0x4 - adds r2, r1, 0 - lsls r0, 24 - lsrs r0, 24 - lsls r2, 24 - lsrs r2, 24 - movs r1, 0x80 - lsls r1, 17 - lsls r1, r0 - lsrs r1, 24 - ldr r0, =gRfuLinkStatus - ldr r3, [r0] - adds r3, 0x98 - movs r0, 0x1A - str r0, [sp] - movs r0, 0x40 - bl rfu_STC_setSendData_org - lsls r0, 16 - lsrs r0, 16 - add sp, 0x4 - pop {r1} - bx r1 - .align 2, 0 - .pool - thumb_func_end rfu_NI_CHILD_setSendGameName - - thumb_func_start rfu_STC_setSendData_org -rfu_STC_setSendData_org: @ 82E584C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - str r3, [sp] - lsls r0, 24 - lsrs r6, r0, 24 - lsls r1, 24 - lsrs r3, r1, 24 - lsls r2, 24 - lsrs r2, 24 - mov r8, r2 - ldr r0, =gRfuLinkStatus - ldr r2, [r0] - ldrb r1, [r2] - mov r10, r0 - cmp r1, 0xFF - bne _082E5880 - ldr r0, =0x00000301 - b _082E5A36 - .align 2, 0 - .pool -_082E5880: - movs r0, 0xF - ands r0, r3 - cmp r0, 0 - bne _082E588E - movs r0, 0x80 - lsls r0, 3 - b _082E5A36 -_082E588E: - ldrb r0, [r2, 0x2] - ldrb r1, [r2, 0x3] - orrs r0, r1 - ands r0, r3 - cmp r0, r3 - beq _082E58A4 - ldr r0, =0x00000401 - b _082E5A36 - .align 2, 0 - .pool -_082E58A4: - movs r0, 0x10 - ands r0, r6 - cmp r0, 0 - beq _082E58B0 - ldrb r0, [r2, 0x6] - b _082E58B2 -_082E58B0: - ldrb r0, [r2, 0x4] -_082E58B2: - ands r0, r3 - cmp r0, 0 - beq _082E58C0 - ldr r0, =0x00000402 - b _082E5A36 - .align 2, 0 - .pool -_082E58C0: - movs r2, 0 - movs r0, 0x1 - ands r0, r3 - ldr r4, =llsf_struct - cmp r0, 0 - bne _082E58E2 - movs r1, 0x1 -_082E58CE: - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x3 - bhi _082E58E2 - adds r0, r3, 0 - asrs r0, r2 - ands r0, r1 - cmp r0, 0 - beq _082E58CE -_082E58E2: - mov r0, r10 - ldr r1, [r0] - ldrb r0, [r1] - cmp r0, 0x1 - bne _082E58F4 - adds r1, 0xF - b _082E58FE - .align 2, 0 - .pool -_082E58F4: - cmp r0, 0 - bne _082E5900 - adds r0, r2, 0 - adds r0, 0x10 - adds r1, r0 -_082E58FE: - mov r9, r1 -_082E5900: - mov r1, r10 - ldr r0, [r1] - ldrb r0, [r0] - lsls r0, 4 - adds r0, r4 - ldrb r4, [r0] - mov r0, r9 - ldrb r0, [r0] - cmp r8, r0 - bhi _082E5918 - cmp r8, r4 - bhi _082E591E -_082E5918: - movs r0, 0xA0 - lsls r0, 3 - b _082E5A36 -_082E591E: - ldr r1, =0x04000208 - ldrh r0, [r1] - str r0, [sp, 0x4] - movs r7, 0 - strh r7, [r1] - movs r0, 0x20 - ands r0, r6 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0 - bne _082E5938 - cmp r6, 0x40 - bne _082E59F4 -_082E5938: - ldr r1, =gRfuSlotStatusNI - lsls r0, r2, 2 - adds r0, r1 - ldr r0, [r0] - mov r12, r0 - movs r1, 0 - strh r1, [r0, 0x18] - mov r1, r12 - adds r1, 0x2D - mov r2, r12 - str r1, [r2, 0x4] - movs r0, 0x7 - str r0, [r2, 0x14] - mov r0, r12 - adds r0, 0x2C - strb r3, [r0] - strb r3, [r2, 0x1A] - mov r2, r8 - subs r0, r2, r4 - mov r2, r12 - strh r0, [r2, 0x2E] - cmp r5, 0 - beq _082E5974 - strb r7, [r1] - b _082E5978 - .align 2, 0 - .pool -_082E5974: - movs r0, 0x1 - strb r0, [r1] -_082E5978: - ldr r0, [sp, 0x28] - mov r1, r12 - str r0, [r1, 0x30] - ldr r2, [sp] - str r2, [r1, 0x28] - movs r1, 0 - mov r0, r12 - strb r1, [r0, 0x1F] - adds r0, 0x20 - strb r1, [r0] - mov r4, r12 - adds r4, 0x1B - movs r6, 0 - mov r2, r12 - adds r2, 0x21 - movs r5, 0x1 -_082E5998: - adds r0, r4, r1 - strb r6, [r0] - adds r0, r2, r1 - strb r5, [r0] - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x3 - bls _082E5998 - movs r2, 0 - movs r5, 0x1 - ldr r4, =gRfuSlotStatusNI - movs r1, 0 -_082E59B2: - adds r0, r3, 0 - asrs r0, r2 - ands r0, r5 - cmp r0, 0 - beq _082E59C4 - lsls r0, r2, 2 - adds r0, r4 - ldr r0, [r0] - strh r1, [r0, 0x2] -_082E59C4: - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x3 - bls _082E59B2 - mov r1, r10 - ldr r2, [r1] - ldrb r1, [r2, 0x4] - adds r0, r3, 0 - orrs r0, r1 - strb r0, [r2, 0x4] - mov r2, r9 - ldrb r0, [r2] - mov r1, r8 - subs r0, r1 - strb r0, [r2] - ldr r0, =0x00008021 - mov r2, r12 - strh r0, [r2] - b _082E5A2C - .align 2, 0 - .pool -_082E59F4: - movs r0, 0x10 - ands r0, r6 - cmp r0, 0 - beq _082E5A2C - ldr r1, =gRfuSlotStatusUNI - lsls r0, r2, 2 - adds r0, r1 - ldr r1, [r0] - strb r3, [r1, 0x3] - ldr r0, [sp] - str r0, [r1, 0x8] - mov r2, r8 - subs r0, r2, r4 - strh r0, [r1, 0x4] - mov r2, r9 - ldrb r0, [r2] - mov r2, r8 - subs r0, r2 - mov r2, r9 - strb r0, [r2] - ldr r0, =0x00008024 - strh r0, [r1] - mov r0, r10 - ldr r2, [r0] - ldrb r1, [r2, 0x6] - adds r0, r3, 0 - orrs r0, r1 - strb r0, [r2, 0x6] -_082E5A2C: - ldr r0, =0x04000208 - mov r1, sp - ldrh r1, [r1, 0x4] - strh r1, [r0] - movs r0, 0 -_082E5A36: - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 - .pool - thumb_func_end rfu_STC_setSendData_org - - thumb_func_start rfu_changeSendTarget -rfu_changeSendTarget: @ 82E5A54 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - adds r3, r0, 0 - lsls r1, 24 - lsrs r7, r1, 24 - lsls r2, 24 - lsrs r6, r2, 24 - cmp r7, 0x3 - bls _082E5A78 - movs r0, 0x80 - lsls r0, 3 - b _082E5BAC -_082E5A78: - cmp r0, 0x20 - bne _082E5B18 - ldr r0, =gRfuSlotStatusNI - mov r12, r0 - lsls r0, r7, 2 - add r0, r12 - ldr r5, [r0] - ldrh r2, [r5] - ldr r1, =0x00008020 - adds r0, r1, 0 - ands r0, r2 - cmp r0, r1 - bne _082E5B2E - ldrb r0, [r5, 0x1A] - adds r3, r6, 0 - eors r3, r0 - adds r2, r3, 0 - ands r2, r6 - cmp r2, 0 - bne _082E5B66 - cmp r3, 0 - bne _082E5AA6 - b _082E5BAA -_082E5AA6: - ldr r1, =0x04000208 - ldrh r0, [r1] - mov r8, r0 - strh r2, [r1] - movs r2, 0 - mvns r1, r3 - str r1, [sp] - lsls r4, r6, 24 - mov r10, r4 - movs r0, 0x1 - mov r9, r0 - movs r1, 0 -_082E5ABE: - adds r0, r3, 0 - asrs r0, r2 - mov r4, r9 - ands r0, r4 - cmp r0, 0 - beq _082E5AD2 - lsls r0, r2, 2 - add r0, r12 - ldr r0, [r0] - strh r1, [r0, 0x2] -_082E5AD2: - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x3 - bls _082E5ABE - ldr r0, =gRfuLinkStatus - ldr r1, [r0] - ldrb r0, [r1, 0x4] - ldr r2, [sp] - ands r2, r0 - strb r2, [r1, 0x4] - strb r6, [r5, 0x1A] - mov r0, r10 - cmp r0, 0 - bne _082E5AFE - adds r0, r7, 0 - movs r1, 0 - adds r2, r5, 0 - bl rfu_STC_releaseFrame - movs r0, 0x27 - strh r0, [r5] -_082E5AFE: - ldr r0, =0x04000208 - mov r1, r8 - strh r1, [r0] - b _082E5BAA - .align 2, 0 - .pool -_082E5B18: - cmp r3, 0x10 - bne _082E5BA4 - ldr r3, =gRfuSlotStatusUNI - lsls r1, r7, 2 - adds r0, r1, r3 - ldr r0, [r0] - ldrh r2, [r0] - ldr r0, =0x00008024 - adds r5, r3, 0 - cmp r2, r0 - beq _082E5B40 -_082E5B2E: - ldr r0, =0x00000403 - b _082E5BAC - .align 2, 0 - .pool -_082E5B40: - movs r3, 0 - movs r2, 0 - adds r4, r5, 0 -_082E5B46: - cmp r2, r7 - beq _082E5B54 - lsls r0, r2, 2 - adds r0, r4 - ldr r0, [r0] - ldrb r0, [r0, 0x3] - orrs r3, r0 -_082E5B54: - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x3 - bls _082E5B46 - adds r2, r6, 0 - ands r2, r3 - cmp r2, 0 - beq _082E5B70 -_082E5B66: - ldr r0, =0x00000404 - b _082E5BAC - .align 2, 0 - .pool -_082E5B70: - ldr r3, =0x04000208 - ldrh r0, [r3] - mov r8, r0 - strh r2, [r3] - ldr r4, =gRfuLinkStatus - ldr r2, [r4] - adds r5, r1, r5 - ldr r0, [r5] - ldrb r1, [r0, 0x3] - ldrb r0, [r2, 0x6] - bics r0, r1 - strb r0, [r2, 0x6] - ldr r2, [r4] - ldrb r1, [r2, 0x6] - adds r0, r6, 0 - orrs r0, r1 - strb r0, [r2, 0x6] - ldr r0, [r5] - strb r6, [r0, 0x3] - mov r2, r8 - strh r2, [r3] - b _082E5BAA - .align 2, 0 - .pool -_082E5BA4: - movs r0, 0xC0 - lsls r0, 3 - b _082E5BAC -_082E5BAA: - movs r0, 0 -_082E5BAC: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end rfu_changeSendTarget - - thumb_func_start rfu_NI_stopReceivingData -rfu_NI_stopReceivingData: @ 82E5BBC - push {r4,r5,lr} - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x3 - bls _082E5BCC - movs r0, 0x80 - lsls r0, 3 - b _082E5C26 -_082E5BCC: - ldr r1, =gRfuSlotStatusNI - lsls r0, r3, 2 - adds r0, r1 - ldr r2, [r0] - adds r5, r2, 0 - adds r5, 0x34 - ldr r1, =0x04000208 - ldrh r0, [r1] - adds r4, r0, 0 - movs r0, 0 - strh r0, [r1] - ldrh r1, [r2, 0x34] - movs r0, 0x80 - lsls r0, 8 - ands r0, r1 - cmp r0, 0 - beq _082E5C20 - ldr r0, =0x00008043 - cmp r1, r0 - bne _082E5C04 - movs r0, 0x48 - b _082E5C06 - .align 2, 0 - .pool -_082E5C04: - movs r0, 0x47 -_082E5C06: - strh r0, [r2, 0x34] - ldr r0, =gRfuLinkStatus - ldr r2, [r0] - movs r1, 0x1 - lsls r1, r3 - ldrb r0, [r2, 0x5] - bics r0, r1 - strb r0, [r2, 0x5] - adds r0, r3, 0 - movs r1, 0x1 - adds r2, r5, 0 - bl rfu_STC_releaseFrame -_082E5C20: - ldr r0, =0x04000208 - strh r4, [r0] - movs r0, 0 -_082E5C26: - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 - .pool - thumb_func_end rfu_NI_stopReceivingData - - thumb_func_start rfu_UNI_changeAndReadySendData -rfu_UNI_changeAndReadySendData: @ 82E5C34 - push {r4-r7,lr} - adds r7, r1, 0 - lsls r0, 24 - lsrs r0, 24 - adds r3, r0, 0 - lsls r2, 24 - lsrs r5, r2, 24 - cmp r0, 0x3 - bls _082E5C4C - movs r0, 0x80 - lsls r0, 3 - b _082E5CC0 -_082E5C4C: - ldr r1, =gRfuSlotStatusUNI - lsls r0, 2 - adds r0, r1 - ldr r4, [r0] - ldrh r1, [r4] - ldr r0, =0x00008024 - cmp r1, r0 - beq _082E5C6C - ldr r0, =0x00000403 - b _082E5CC0 - .align 2, 0 - .pool -_082E5C6C: - ldr r0, =gRfuLinkStatus - ldr r1, [r0] - ldrb r0, [r1] - cmp r0, 0x1 - bne _082E5C84 - adds r6, r1, 0 - adds r6, 0xF - ldrb r0, [r4, 0x4] - ldrb r1, [r1, 0xF] - b _082E5C92 - .align 2, 0 - .pool -_082E5C84: - adds r0, r3, 0 - adds r0, 0x10 - adds r6, r1, r0 - adds r1, 0x10 - adds r1, r3 - ldrb r0, [r4, 0x4] - ldrb r1, [r1] -_082E5C92: - adds r0, r1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, r5 - bcc _082E5CBC - ldr r2, =0x04000208 - ldrh r1, [r2] - movs r0, 0 - strh r0, [r2] - str r7, [r4, 0x8] - subs r0, r3, r5 - strb r0, [r6] - strh r5, [r4, 0x4] - movs r0, 0x1 - strb r0, [r4, 0x2] - strh r1, [r2] - movs r0, 0 - b _082E5CC0 - .align 2, 0 - .pool -_082E5CBC: - movs r0, 0xA0 - lsls r0, 3 -_082E5CC0: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end rfu_UNI_changeAndReadySendData - - thumb_func_start rfu_UNI_readySendData -rfu_UNI_readySendData: @ 82E5CC8 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - bhi _082E5CE6 - ldr r1, =gRfuSlotStatusUNI - lsls r0, 2 - adds r0, r1 - ldr r2, [r0] - ldrh r1, [r2] - ldr r0, =0x00008024 - cmp r1, r0 - bne _082E5CE6 - movs r0, 0x1 - strb r0, [r2, 0x2] -_082E5CE6: - pop {r0} - bx r0 - .align 2, 0 - .pool - thumb_func_end rfu_UNI_readySendData - - thumb_func_start rfu_UNI_clearRecvNewDataFlag -rfu_UNI_clearRecvNewDataFlag: @ 82E5CF4 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - bhi _082E5D0A - ldr r1, =gRfuSlotStatusUNI - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - movs r0, 0 - strb r0, [r1, 0x12] -_082E5D0A: - pop {r0} - bx r0 - .align 2, 0 - .pool - thumb_func_end rfu_UNI_clearRecvNewDataFlag - - thumb_func_start rfu_REQ_sendData -rfu_REQ_sendData: @ 82E5D14 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, =gRfuLinkStatus - ldr r2, [r0] - ldrb r1, [r2] - adds r4, r0, 0 - cmp r1, 0xFF - bne _082E5D28 - b _082E5E4E -_082E5D28: - cmp r1, 0x1 - bne _082E5DB8 - ldrb r0, [r2, 0x4] - ldrb r1, [r2, 0x5] - adds r3, r0, 0 - orrs r3, r1 - ldrb r0, [r2, 0x6] - orrs r3, r0 - cmp r3, 0 - bne _082E5DB8 - ldr r0, =gRfuStatic - ldr r2, [r0] - ldrb r1, [r2, 0x3] - adds r4, r0, 0 - cmp r1, 0 - beq _082E5D50 - movs r0, 0x10 - strb r0, [r2, 0x8] - ldr r0, [r4] - strb r3, [r0, 0x7] -_082E5D50: - ldr r1, [r4] - ldrb r0, [r1, 0x8] - cmp r0, 0 - beq _082E5D68 - subs r0, 0x1 - strb r0, [r1, 0x8] - b _082E5D6E - .align 2, 0 - .pool -_082E5D68: - ldrb r0, [r1, 0x7] - adds r0, 0x1 - strb r0, [r1, 0x7] -_082E5D6E: - ldr r1, [r4] - ldrb r0, [r1, 0x8] - cmp r0, 0 - bne _082E5D80 - ldrb r1, [r1, 0x7] - movs r0, 0xF - ands r0, r1 - cmp r0, 0 - bne _082E5E12 -_082E5D80: - ldr r4, =gRfuFixed - ldr r1, [r4] - movs r0, 0x1 - str r0, [r1, 0x68] - movs r0, 0xFF - str r0, [r1, 0x78] - ldr r0, =sub_82E5F00 - bl STWI_set_Callback_M - cmp r5, 0 - bne _082E5DAC - ldr r0, [r4] - adds r0, 0x68 - movs r1, 0x1 - bl STWI_send_DataTxREQ - b _082E5E4E - .align 2, 0 - .pool -_082E5DAC: - ldr r0, [r4] - adds r0, 0x68 - movs r1, 0x1 - bl STWI_send_DataTxAndChangeREQ - b _082E5E4E -_082E5DB8: - ldr r0, [r4] - ldrb r0, [r0, 0xE] - cmp r0, 0 - bne _082E5DC4 - bl rfu_constructSendLLFrame -_082E5DC4: - ldr r0, [r4] - ldrb r0, [r0, 0xE] - cmp r0, 0 - beq _082E5E12 - ldr r0, =rfu_CB_sendData - bl STWI_set_Callback_M - cmp r5, 0 - beq _082E5DFC - ldr r0, =gRfuFixed - ldr r0, [r0] - adds r0, 0x68 - ldr r1, =gRfuStatic - ldr r1, [r1] - ldr r1, [r1, 0x24] - adds r1, 0x4 - lsls r1, 24 - lsrs r1, 24 - bl STWI_send_DataTxAndChangeREQ - b _082E5E4E - .align 2, 0 - .pool -_082E5DFC: - ldr r0, =gRfuFixed - ldr r0, [r0] - adds r0, 0x68 - ldr r1, =gRfuStatic - ldr r1, [r1] - ldr r1, [r1, 0x24] - adds r1, 0x4 - lsls r1, 24 - lsrs r1, 24 - bl STWI_send_DataTxREQ -_082E5E12: - cmp r5, 0 - beq _082E5E4E - ldr r0, =gRfuLinkStatus - ldr r0, [r0] - ldrb r0, [r0] - cmp r0, 0x1 - bne _082E5E44 - ldr r0, =gSTWIStatus - ldr r0, [r0] - ldr r1, [r0, 0x1C] - cmp r1, 0 - beq _082E5E4E - movs r0, 0x27 - bl _call_via_r1 - b _082E5E4E - .align 2, 0 - .pool -_082E5E44: - ldr r0, =rfu_CB_sendData2 - bl STWI_set_Callback_M - bl STWI_send_MS_ChangeREQ -_082E5E4E: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 - .pool - thumb_func_end rfu_REQ_sendData - - thumb_func_start rfu_CB_sendData -rfu_CB_sendData: @ 82E5E58 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r1, 16 - lsrs r7, r1, 16 - cmp r7, 0 - bne _082E5EC2 - movs r6, 0 - ldr r0, =0x00008020 - mov r8, r0 -_082E5E6C: - ldr r0, =gRfuSlotStatusUNI - lsls r2, r6, 2 - adds r0, r2, r0 - ldr r1, [r0] - ldrb r0, [r1, 0x2] - cmp r0, 0 - beq _082E5E7E - movs r0, 0 - strb r0, [r1, 0x2] -_082E5E7E: - ldr r0, =gRfuSlotStatusNI - adds r0, r2, r0 - ldr r4, [r0] - ldrh r0, [r4] - cmp r0, r8 - bne _082E5EB8 - adds r0, r6, 0 - movs r1, 0 - adds r2, r4, 0 - bl rfu_STC_releaseFrame - ldr r5, =gRfuLinkStatus - ldr r2, [r5] - ldrb r1, [r4, 0x1A] - ldrb r0, [r2, 0x4] - bics r0, r1 - strb r0, [r2, 0x4] - adds r0, r4, 0 - adds r0, 0x2D - ldrb r3, [r0] - cmp r3, 0x1 - bne _082E5EB4 - ldr r1, [r5] - lsls r3, r6 - ldrb r0, [r1, 0x7] - orrs r3, r0 - strb r3, [r1, 0x7] -_082E5EB4: - movs r0, 0x26 - strh r0, [r4] -_082E5EB8: - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x3 - bls _082E5E6C -_082E5EC2: - ldr r0, =gRfuLinkStatus - ldr r1, [r0] - ldrb r0, [r1, 0xE] - movs r0, 0 - strb r0, [r1, 0xE] - movs r0, 0x24 - adds r1, r7, 0 - bl rfu_STC_REQ_callback - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 - .pool - thumb_func_end rfu_CB_sendData - - thumb_func_start rfu_CB_sendData2 -rfu_CB_sendData2: @ 82E5EF0 - push {lr} - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x24 - bl rfu_STC_REQ_callback - pop {r0} - bx r0 - thumb_func_end rfu_CB_sendData2 - - thumb_func_start sub_82E5F00 -sub_82E5F00: @ 82E5F00 - push {lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 16 - lsrs r1, 16 - cmp r1, 0 - beq _082E5F16 - movs r0, 0x24 - bl rfu_STC_REQ_callback - b _082E5F22 -_082E5F16: - cmp r0, 0xFF - bne _082E5F22 - movs r0, 0xFF - movs r1, 0 - bl rfu_STC_REQ_callback -_082E5F22: - pop {r0} - bx r0 - thumb_func_end sub_82E5F00 - - thumb_func_start rfu_constructSendLLFrame -rfu_constructSendLLFrame: @ 82E5F28 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - ldr r0, =gRfuLinkStatus - ldr r2, [r0] - ldrb r0, [r2] - cmp r0, 0xFF - bne _082E5F40 - b _082E6044 -_082E5F40: - ldrb r0, [r2, 0x4] - ldrb r1, [r2, 0x5] - orrs r0, r1 - ldrb r1, [r2, 0x6] - orrs r0, r1 - cmp r0, 0 - beq _082E6044 - ldrb r0, [r2, 0xE] - movs r0, 0 - strb r0, [r2, 0xE] - mov r8, r0 - ldr r0, =gRfuFixed - ldr r0, [r0] - adds r0, 0x6C - str r0, [sp] - movs r6, 0 - movs r0, 0x80 - lsls r0, 8 - mov r9, r0 - ldr r1, =0x00008024 - mov r10, r1 -_082E5F6A: - movs r5, 0 - ldr r0, =gRfuSlotStatusNI - lsls r7, r6, 2 - adds r4, r7, r0 - ldr r2, [r4] - ldrh r1, [r2] - mov r0, r9 - ands r0, r1 - cmp r0, 0 - beq _082E5F8A - adds r0, r6, 0 - mov r1, sp - bl rfu_STC_NI_constructLLSF - lsls r0, 16 - lsrs r5, r0, 16 -_082E5F8A: - ldr r2, [r4] - ldrh r1, [r2, 0x34] - mov r0, r9 - ands r0, r1 - cmp r0, 0 - beq _082E5FA6 - adds r2, 0x34 - adds r0, r6, 0 - mov r1, sp - bl rfu_STC_NI_constructLLSF - lsls r0, 16 - lsrs r0, 16 - adds r5, r0 -_082E5FA6: - ldr r0, =gRfuSlotStatusUNI - adds r0, r7, r0 - ldr r0, [r0] - ldrh r0, [r0] - cmp r0, r10 - bne _082E5FC0 - adds r0, r6, 0 - mov r1, sp - bl rfu_STC_UNI_constructLLSF - lsls r0, 16 - lsrs r0, 16 - adds r5, r0 -_082E5FC0: - cmp r5, 0 - beq _082E5FF4 - ldr r0, =gRfuLinkStatus - ldr r0, [r0] - ldrb r0, [r0] - cmp r0, 0x1 - bne _082E5FE8 - add r8, r5 - b _082E5FF4 - .align 2, 0 - .pool -_082E5FE8: - adds r0, r7, r6 - adds r0, 0x8 - lsls r5, r0 - mov r2, r8 - orrs r2, r5 - mov r8, r2 -_082E5FF4: - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x3 - bls _082E5F6A - ldr r6, =gRfuStatic - mov r0, r8 - cmp r0, 0 - beq _082E603E - ldr r2, [sp] - movs r0, 0x3 - ands r0, r2 - ldr r5, =gRfuLinkStatus - ldr r1, =gRfuFixed - cmp r0, 0 - beq _082E6026 - movs r4, 0 - movs r3, 0x3 -_082E6018: - strb r4, [r2] - adds r0, r2, 0x1 - str r0, [sp] - adds r2, r0, 0 - ands r0, r3 - cmp r0, 0 - bne _082E6018 -_082E6026: - ldr r0, [r1] - mov r2, r8 - str r2, [r0, 0x68] - ldr r0, [r5] - ldrb r0, [r0] - cmp r0, 0 - bne _082E603E - ldr r0, [sp] - subs r0, 0x6C - ldr r1, [r1] - subs r0, r1 - mov r8, r0 -_082E603E: - ldr r0, [r6] - mov r1, r8 - str r1, [r0, 0x24] -_082E6044: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 - .pool - thumb_func_end rfu_constructSendLLFrame - - thumb_func_start rfu_STC_NI_constructLLSF -rfu_STC_NI_constructLLSF: @ 82E6060 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - mov r12, r1 - adds r4, r2, 0 - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - ldr r2, =gRfuLinkStatus - ldr r0, [r2] - ldrb r0, [r0] - lsls r0, 4 - ldr r1, =llsf_struct - adds r0, r1 - mov r8, r0 - ldrh r1, [r4] - ldr r0, =0x00008022 - cmp r1, r0 - bne _082E60CA - adds r3, r4, 0 - adds r3, 0x20 - ldrb r1, [r3] - lsls r1, 2 - adds r5, r4, 0x4 - adds r1, r5, r1 - ldr r2, [r4, 0x28] - ldr r0, [r4, 0x30] - adds r2, r0 - ldr r0, [r1] - adds r6, r3, 0 - cmp r0, r2 - bcc _082E60CA - movs r7, 0 -_082E60A8: - ldrb r0, [r3] - adds r0, 0x1 - strb r0, [r3] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x4 - bne _082E60B8 - strb r7, [r6] -_082E60B8: - ldrb r1, [r3] - lsls r1, 2 - adds r1, r5, r1 - ldr r2, [r4, 0x28] - ldr r0, [r4, 0x30] - adds r2, r0 - ldr r0, [r1] - cmp r0, r2 - bcs _082E60A8 -_082E60CA: - ldrh r1, [r4] - movs r0, 0x40 - ands r0, r1 - mov r9, r1 - cmp r0, 0 - beq _082E60E8 - movs r5, 0 - b _082E612C - .align 2, 0 - .pool -_082E60E8: - ldr r0, =0x00008022 - cmp r9, r0 - bne _082E611C - adds r3, r4, 0 - adds r3, 0x20 - ldrb r0, [r3] - lsls r0, 2 - adds r1, r4, 0x4 - adds r1, r0 - ldrh r7, [r4, 0x2E] - ldr r5, [r1] - adds r2, r5, r7 - ldr r1, [r4, 0x28] - ldr r0, [r4, 0x30] - adds r0, r1, r0 - adds r6, r3, 0 - cmp r2, r0 - bls _082E6118 - subs r0, r5 - lsls r0, 16 - lsrs r5, r0, 16 - b _082E6130 - .align 2, 0 - .pool -_082E6118: - adds r5, r7, 0 - b _082E6130 -_082E611C: - ldrh r2, [r4, 0x2E] - ldr r0, [r4, 0x14] - cmp r0, r2 - bcc _082E6128 - adds r5, r2, 0 - b _082E612C -_082E6128: - lsls r0, 16 - lsrs r5, r0, 16 -_082E612C: - adds r6, r4, 0 - adds r6, 0x20 -_082E6130: - movs r3, 0xF - mov r0, r9 - ands r3, r0 - mov r1, r8 - ldrb r1, [r1, 0x3] - lsls r3, r1 - ldrb r0, [r4, 0x1F] - mov r2, r8 - ldrb r2, [r2, 0x4] - lsls r0, r2 - orrs r3, r0 - ldrb r1, [r6] - adds r0, r1, 0 - mov r7, r8 - ldrb r7, [r7, 0x5] - lsls r0, r7 - orrs r3, r0 - adds r0, r4, 0 - adds r0, 0x21 - adds r0, r1 - ldrb r0, [r0] - mov r1, r8 - ldrb r1, [r1, 0x6] - lsls r0, r1 - orrs r3, r0 - orrs r3, r5 - str r3, [sp] - ldr r2, =gRfuLinkStatus - ldr r0, [r2] - ldrb r0, [r0] - cmp r0, 0x1 - bne _082E6178 - ldrb r0, [r4, 0x1A] - lsls r0, 18 - orrs r3, r0 - str r3, [sp] -_082E6178: - mov r2, sp - movs r3, 0 - mov r7, r8 - ldrb r7, [r7] - cmp r3, r7 - bcs _082E61A2 -_082E6184: - mov r0, r12 - ldr r1, [r0] - ldrb r0, [r2] - strb r0, [r1] - adds r2, 0x1 - adds r1, 0x1 - mov r7, r12 - str r1, [r7] - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - mov r0, r8 - ldrb r0, [r0] - cmp r3, r0 - bcc _082E6184 -_082E61A2: - cmp r5, 0 - beq _082E61C2 - ldrb r1, [r6] - lsls r1, 2 - adds r0, r4, 0x4 - adds r0, r1 - ldr r0, [r0] - str r0, [sp, 0x4] - ldr r0, =gRfuFixed - ldr r1, [r0] - add r0, sp, 0x4 - ldr r3, [r1, 0x4] - mov r1, r12 - adds r2, r5, 0 - bl _call_via_r3 -_082E61C2: - ldrh r1, [r4] - ldr r0, =0x00008022 - cmp r1, r0 - bne _082E61DC - ldrb r0, [r6] - adds r0, 0x1 - strb r0, [r6] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x4 - bne _082E61DC - movs r0, 0 - strb r0, [r6] -_082E61DC: - ldr r0, =gRfuLinkStatus - ldr r2, [r0] - ldrb r1, [r2] - cmp r1, 0x1 - bne _082E61F8 - ldrb r0, [r2, 0xE] - strb r1, [r2, 0xE] - b _082E6206 - .align 2, 0 - .pool -_082E61F8: - movs r0, 0x1 - mov r1, r10 - lsls r0, r1 - ldrb r1, [r2, 0xE] - orrs r0, r1 - ldrb r1, [r2, 0xE] - strb r0, [r2, 0xE] -_082E6206: - mov r2, r8 - ldrb r0, [r2] - adds r0, r5, r0 - lsls r0, 16 - lsrs r0, 16 - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end rfu_STC_NI_constructLLSF - - thumb_func_start rfu_STC_UNI_constructLLSF -rfu_STC_UNI_constructLLSF: @ 82E6220 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - adds r6, r1, 0 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldr r1, =gRfuSlotStatusUNI - lsls r0, 2 - adds r0, r1 - ldr r4, [r0] - ldrb r0, [r4, 0x2] - cmp r0, 0 - beq _082E6244 - ldrb r0, [r4, 0x3] - cmp r0, 0 - bne _082E624C -_082E6244: - movs r0, 0 - b _082E62E8 - .align 2, 0 - .pool -_082E624C: - ldr r0, =gRfuLinkStatus - ldr r2, [r0] - ldrb r0, [r2] - lsls r0, 4 - ldr r1, =llsf_struct - adds r5, r0, r1 - ldrh r0, [r4] - movs r1, 0xF - ands r1, r0 - ldrb r0, [r5, 0x3] - lsls r1, r0 - ldrh r0, [r4, 0x4] - orrs r1, r0 - str r1, [sp] - ldrb r0, [r2] - cmp r0, 0x1 - bne _082E6276 - ldrb r0, [r4, 0x3] - lsls r0, 18 - orrs r1, r0 - str r1, [sp] -_082E6276: - mov r2, sp - movs r3, 0 - ldr r1, =gRfuFixed - mov r12, r1 - add r7, sp, 0x4 - ldrb r0, [r5] - cmp r3, r0 - bcs _082E629E -_082E6286: - ldr r1, [r6] - ldrb r0, [r2] - strb r0, [r1] - adds r2, 0x1 - adds r1, 0x1 - str r1, [r6] - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - ldrb r1, [r5] - cmp r3, r1 - bcc _082E6286 -_082E629E: - ldr r0, [r4, 0x8] - str r0, [sp, 0x4] - mov r2, r12 - ldr r0, [r2] - ldrh r2, [r4, 0x4] - ldr r3, [r0, 0x4] - adds r0, r7, 0 - adds r1, r6, 0 - bl _call_via_r3 - ldr r0, =gRfuLinkStatus - ldr r2, [r0] - ldrb r0, [r2] - cmp r0, 0x1 - bne _082E62D0 - ldrb r0, [r2, 0xE] - movs r0, 0x10 - b _082E62DC - .align 2, 0 - .pool -_082E62D0: - movs r0, 0x10 - mov r1, r8 - lsls r0, r1 - ldrb r1, [r2, 0xE] - orrs r0, r1 - ldrb r1, [r2, 0xE] -_082E62DC: - strb r0, [r2, 0xE] - ldrh r0, [r4, 0x4] - ldrb r5, [r5] - adds r0, r5 - lsls r0, 16 - lsrs r0, 16 -_082E62E8: - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end rfu_STC_UNI_constructLLSF - - thumb_func_start rfu_REQ_recvData -rfu_REQ_recvData: @ 82E62F4 - push {r4,lr} - ldr r0, =gRfuLinkStatus - ldr r4, [r0] - ldrb r0, [r4] - cmp r0, 0xFF - beq _082E6320 - ldr r2, =gRfuStatic - ldr r3, [r2] - ldrb r0, [r4, 0x4] - ldrb r1, [r4, 0x5] - orrs r0, r1 - ldrb r1, [r4, 0x6] - orrs r0, r1 - movs r1, 0 - strb r0, [r3, 0x3] - ldr r0, [r2] - strb r1, [r0, 0x4] - ldr r0, =rfu_CB_recvData - bl STWI_set_Callback_M - bl STWI_send_DataRxREQ -_082E6320: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 - .pool - thumb_func_end rfu_REQ_recvData - - thumb_func_start rfu_CB_recvData -rfu_CB_recvData: @ 82E6334 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - lsls r1, 16 - lsrs r7, r1, 16 - cmp r7, 0 - bne _082E63F8 - ldr r0, =gRfuFixed - ldr r0, [r0] - adds r0, 0xDC - ldr r0, [r0] - ldrb r0, [r0, 0x1] - cmp r0, 0 - beq _082E63F8 - ldr r0, =gRfuStatic - ldr r0, [r0] - strb r7, [r0, 0x1] - ldr r0, =gRfuLinkStatus - ldr r0, [r0] - ldrb r0, [r0] - cmp r0, 0x1 - bne _082E637C - bl rfu_STC_PARENT_analyzeRecvPacket - b _082E6380 - .align 2, 0 - .pool -_082E637C: - bl rfu_STC_CHILD_analyzeRecvPacket -_082E6380: - movs r6, 0 - ldr r0, =0x00008043 - mov r8, r0 - ldr r3, =gRfuLinkStatus -_082E6388: - ldr r0, =gRfuSlotStatusNI - lsls r1, r6, 2 - adds r1, r0 - ldr r4, [r1] - ldrh r0, [r4, 0x34] - cmp r0, r8 - bne _082E63DA - ldr r0, =gRfuStatic - ldr r0, [r0] - ldrb r0, [r0, 0x1] - asrs r0, r6 - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - bne _082E63DA - adds r5, r4, 0 - adds r5, 0x34 - adds r0, r4, 0 - adds r0, 0x61 - ldrb r2, [r0] - cmp r2, 0x1 - bne _082E63BE - ldr r1, [r3] - lsls r2, r6 - ldrb r0, [r1, 0x7] - orrs r2, r0 - strb r2, [r1, 0x7] -_082E63BE: - adds r0, r6, 0 - movs r1, 0x1 - adds r2, r5, 0 - str r3, [sp] - bl rfu_STC_releaseFrame - ldr r3, [sp] - ldr r2, [r3] - ldrb r1, [r5, 0x1A] - ldrb r0, [r2, 0x5] - bics r0, r1 - strb r0, [r2, 0x5] - movs r0, 0x46 - strh r0, [r4, 0x34] -_082E63DA: - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x3 - bls _082E6388 - ldr r0, =gRfuStatic - ldr r1, [r0] - ldrb r0, [r1, 0x4] - cmp r0, 0 - beq _082E63F8 - adds r7, r0, 0 - movs r1, 0xE0 - lsls r1, 3 - adds r0, r1, 0 - orrs r7, r0 -_082E63F8: - mov r0, r9 - adds r1, r7, 0 - bl rfu_STC_REQ_callback - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 - .pool - thumb_func_end rfu_CB_recvData - - thumb_func_start rfu_STC_PARENT_analyzeRecvPacket -rfu_STC_PARENT_analyzeRecvPacket: @ 82E6420 - push {r4-r7,lr} - sub sp, 0x4 - ldr r1, =gRfuFixed - ldr r0, [r1] - adds r0, 0xDC - ldr r0, [r0] - ldr r0, [r0, 0x4] - lsrs r3, r0, 8 - movs r5, 0 - mov r12, r1 - movs r7, 0x1F - ldr r4, =gRfuStatic - movs r6, 0x1 -_082E643A: - mov r0, sp - adds r1, r0, r5 - adds r0, r3, 0 - ands r0, r7 - strb r0, [r1] - lsrs r3, 5 - cmp r0, 0 - bne _082E6456 - ldr r0, [r4] - adds r1, r6, 0 - lsls r1, r5 - ldrb r2, [r0, 0x1] - orrs r1, r2 - strb r1, [r0, 0x1] -_082E6456: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x3 - bls _082E643A - mov r1, r12 - ldr r0, [r1] - adds r0, 0xDC - ldr r0, [r0] - adds r6, r0, 0 - adds r6, 0x8 - movs r5, 0 -_082E646E: - mov r0, sp - adds r1, r0, r5 - ldrb r0, [r1] - adds r7, r5, 0x1 - cmp r0, 0 - beq _082E64A0 - adds r4, r1, 0 -_082E647C: - ldrb r2, [r4] - adds r0, r5, 0 - adds r1, r6, 0 - bl rfu_STC_analyzeLLSF - lsls r0, 24 - lsrs r0, 24 - adds r6, r0 - ldrb r1, [r4] - subs r1, r0 - strb r1, [r4] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _082E64A0 - lsls r0, r1, 24 - cmp r0, 0 - bne _082E647C -_082E64A0: - lsls r0, r7, 24 - lsrs r5, r0, 24 - cmp r5, 0x3 - bls _082E646E - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 - .pool - thumb_func_end rfu_STC_PARENT_analyzeRecvPacket - - thumb_func_start rfu_STC_CHILD_analyzeRecvPacket -rfu_STC_CHILD_analyzeRecvPacket: @ 82E64B8 - push {r4-r6,lr} - ldr r0, =gRfuFixed - ldr r0, [r0] - adds r0, 0xDC - ldr r1, [r0] - ldrh r0, [r1, 0x4] - movs r4, 0x7F - ands r4, r0 - adds r5, r1, 0 - adds r5, 0x8 - cmp r4, 0 - bne _082E64D8 - ldr r0, =gRfuStatic - ldr r1, [r0] - movs r0, 0xF - strb r0, [r1, 0x1] -_082E64D8: - movs r0, 0x80 - lsls r0, 8 - adds r6, r0, 0 -_082E64DE: - cmp r4, 0 - beq _082E6500 - movs r0, 0 - adds r1, r5, 0 - adds r2, r4, 0 - bl rfu_STC_analyzeLLSF - lsls r0, 16 - lsrs r0, 16 - adds r5, r0 - subs r0, r4, r0 - lsls r0, 16 - lsrs r4, r0, 16 - adds r0, r4, 0 - ands r0, r6 - cmp r0, 0 - beq _082E64DE -_082E6500: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 - .pool - thumb_func_end rfu_STC_CHILD_analyzeRecvPacket - - thumb_func_start rfu_STC_analyzeLLSF -rfu_STC_analyzeLLSF: @ 82E6510 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - adds r7, r1, 0 - lsls r0, 24 - lsrs r0, 24 - mov r12, r0 - lsls r2, 16 - lsrs r3, r2, 16 - ldr r2, =gRfuLinkStatus - ldr r0, [r2] - ldrb r0, [r0] - mvns r0, r0 - movs r1, 0x1 - ands r0, r1 - lsls r0, 4 - ldr r1, =llsf_struct - adds r6, r0, r1 - ldrb r0, [r6] - cmp r3, r0 - bcs _082E654C - adds r0, r3, 0 - b _082E673E - .align 2, 0 - .pool -_082E654C: - movs r5, 0 - movs r4, 0 - ldrb r3, [r6, 0x1] - ldrb r1, [r6, 0x7] - mov r8, r1 - ldr r2, [sp] - mov r9, r2 - cmp r4, r0 - bcs _082E6574 - adds r2, r0, 0 -_082E6560: - ldrb r0, [r7] - lsls r1, r4, 3 - lsls r0, r1 - orrs r5, r0 - adds r7, 0x1 - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, r2 - bcc _082E6560 -_082E6574: - adds r0, r5, 0 - lsrs r0, r3 - mov r3, r8 - ands r0, r3 - ldr r1, =0xffffff00 - mov r10, r1 - mov r3, r10 - mov r2, r9 - ands r3, r2 - orrs r3, r0 - str r3, [sp] - adds r0, r5, 0 - ldrb r1, [r6, 0x2] - lsrs r0, r1 - ldrb r1, [r6, 0x8] - ands r0, r1 - lsls r0, 8 - ldr r4, =0xffff00ff - adds r2, r4, 0 - ands r2, r3 - orrs r2, r0 - str r2, [sp] - adds r0, r5, 0 - ldrb r3, [r6, 0x3] - lsrs r0, r3 - ldrb r1, [r6, 0x9] - ands r0, r1 - lsls r0, 16 - ldr r3, =0xff00ffff - ands r3, r2 - orrs r3, r0 - str r3, [sp] - adds r0, r5, 0 - ldrb r1, [r6, 0x4] - lsrs r0, r1 - ldrb r1, [r6, 0xA] - ands r0, r1 - lsls r0, 24 - ldr r2, =0x00ffffff - mov r8, r2 - mov r1, r8 - ands r1, r3 - orrs r1, r0 - mov r8, r1 - str r1, [sp] - adds r1, r5, 0 - ldrb r2, [r6, 0x5] - lsrs r1, r2 - ldrb r0, [r6, 0xB] - ands r1, r0 - mov r9, sp - ldr r2, [sp, 0x4] - mov r3, r10 - ands r2, r3 - orrs r2, r1 - str r2, [sp, 0x4] - adds r0, r5, 0 - ldrb r1, [r6, 0x6] - lsrs r0, r1 - ldrb r1, [r6, 0xC] - ands r0, r1 - lsls r0, 8 - ands r4, r2 - orrs r4, r0 - str r4, [sp, 0x4] - ldrh r0, [r6, 0xE] - ands r5, r0 - lsls r1, r5, 16 - ldr r0, =0x0000ffff - ands r0, r4 - orrs r0, r1 - str r0, [sp, 0x4] - lsrs r0, 16 - ldrb r6, [r6] - adds r0, r6 - lsls r0, 16 - lsrs r0, 16 - mov r10, r0 - mov r0, sp - ldrb r0, [r0] - cmp r0, 0 - beq _082E661A - b _082E673C -_082E661A: - ldr r2, =gRfuLinkStatus - ldr r3, [r2] - ldrb r2, [r3] - cmp r2, 0x1 - bne _082E66D8 - ldrb r0, [r3, 0x2] - mov r5, r12 - asrs r0, r5 - ands r0, r2 - cmp r0, 0 - bne _082E6632 - b _082E673C -_082E6632: - mov r1, r8 - lsrs r0, r1, 16 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x4 - bne _082E6664 - mov r0, r12 - mov r1, sp - adds r2, r7, 0 - bl rfu_STC_UNI_receive - b _082E673C - .align 2, 0 - .pool -_082E6664: - mov r5, r9 - ldrb r0, [r5, 0x3] - cmp r0, 0 - bne _082E6678 - mov r0, r12 - mov r1, sp - adds r2, r7, 0 - bl rfu_STC_NI_receive_Receiver - b _082E673C -_082E6678: - movs r4, 0 - ldr r1, =gRfuSlotStatusNI - ldr r0, [r1] - ldrb r0, [r0, 0x1A] - mov r5, r12 - asrs r0, r5 - ands r0, r2 - cmp r0, 0 - beq _082E6694 - ldrb r0, [r3, 0x4] - b _082E66BA - .align 2, 0 - .pool -_082E6694: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x3 - bhi _082E673C - lsls r0, r4, 2 - adds r0, r1 - ldr r0, [r0] - ldrb r0, [r0, 0x1A] - mov r2, r12 - asrs r0, r2 - movs r2, 0x1 - ands r0, r2 - cmp r0, 0 - beq _082E6694 - ldr r3, =gRfuLinkStatus - ldr r0, [r3] - ldrb r0, [r0, 0x4] - mov r5, r12 -_082E66BA: - asrs r0, r5 - ands r0, r2 - cmp r0, 0 - beq _082E6694 - cmp r4, 0x3 - bhi _082E673C - adds r0, r4, 0 - mov r1, r12 - mov r2, sp - adds r3, r7, 0 - bl rfu_STC_NI_receive_Sender - b _082E673C - .align 2, 0 - .pool -_082E66D8: - ldrb r1, [r3, 0x2] - mov r2, r9 - ldrb r0, [r2, 0x1] - adds r5, r1, 0 - ands r5, r0 - cmp r5, 0 - beq _082E673C - movs r4, 0 - movs r6, 0x1 -_082E66EA: - adds r0, r5, 0 - asrs r0, r4 - ands r0, r6 - cmp r0, 0 - beq _082E6732 - mov r1, sp - ldrb r0, [r1, 0x2] - cmp r0, 0x4 - bne _082E6706 - adds r0, r4, 0 - adds r2, r7, 0 - bl rfu_STC_UNI_receive - b _082E6732 -_082E6706: - ldrb r0, [r1, 0x3] - cmp r0, 0 - bne _082E6718 - adds r0, r4, 0 - mov r1, sp - adds r2, r7, 0 - bl rfu_STC_NI_receive_Receiver - b _082E6732 -_082E6718: - ldr r0, =gRfuLinkStatus - ldr r0, [r0] - ldrb r0, [r0, 0x4] - asrs r0, r4 - ands r0, r6 - cmp r0, 0 - beq _082E6732 - adds r0, r4, 0 - adds r1, r4, 0 - mov r2, sp - adds r3, r7, 0 - bl rfu_STC_NI_receive_Sender -_082E6732: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x3 - bls _082E66EA -_082E673C: - mov r0, r10 -_082E673E: - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 - .pool - thumb_func_end rfu_STC_analyzeLLSF - - thumb_func_start rfu_STC_UNI_receive -rfu_STC_UNI_receive: @ 82E6754 - push {r4-r7,lr} - sub sp, 0x8 - adds r6, r1, 0 - str r2, [sp] - lsls r0, 24 - lsrs r7, r0, 24 - ldr r2, =gRfuSlotStatusUNI - lsls r1, r7, 2 - adds r1, r2 - ldr r3, [r1] - adds r5, r3, 0 - adds r5, 0xC - movs r4, 0 - movs r0, 0 - strh r0, [r5, 0x2] - ldr r0, [r1] - ldr r0, [r0, 0x18] - adds r1, r2, 0 - ldrh r2, [r6, 0x6] - cmp r0, r2 - bcs _082E6790 - movs r0, 0x49 - strh r0, [r3, 0xC] - ldr r0, =0x00000701 - strh r0, [r5, 0x2] - b _082E67DE - .align 2, 0 - .pool -_082E6790: - ldrb r0, [r5, 0x7] - cmp r0, 0 - beq _082E67A8 - ldrb r0, [r5, 0x6] - cmp r0, 0 - beq _082E67B4 - ldr r0, =0x00000709 - strh r0, [r5, 0x2] - b _082E67DE - .align 2, 0 - .pool -_082E67A8: - ldrb r0, [r5, 0x6] - cmp r0, 0 - beq _082E67B4 - movs r0, 0xE1 - lsls r0, 3 - strh r0, [r5, 0x2] -_082E67B4: - movs r4, 0 - ldr r0, =0x00008042 - strh r0, [r5] - ldrh r0, [r6, 0x6] - strh r0, [r5, 0x4] - ldrh r2, [r6, 0x6] - lsls r0, r7, 2 - adds r0, r1 - ldr r0, [r0] - ldr r0, [r0, 0x14] - str r0, [sp, 0x4] - ldr r0, =gRfuFixed - ldr r0, [r0] - add r1, sp, 0x4 - ldr r3, [r0, 0x4] - mov r0, sp - bl _call_via_r3 - movs r0, 0x1 - strb r0, [r5, 0x6] - strh r4, [r5] -_082E67DE: - ldrh r0, [r5, 0x2] - cmp r0, 0 - beq _082E67F2 - ldr r0, =gRfuStatic - ldr r2, [r0] - movs r0, 0x10 - lsls r0, r7 - ldrb r1, [r2, 0x4] - orrs r0, r1 - strb r0, [r2, 0x4] -_082E67F2: - add sp, 0x8 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 - .pool - thumb_func_end rfu_STC_UNI_receive - - thumb_func_start rfu_STC_NI_receive_Sender -rfu_STC_NI_receive_Sender: @ 82E6808 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - adds r6, r2, 0 - lsls r0, 24 - lsls r1, 24 - lsrs r1, 24 - mov r10, r1 - ldr r1, =gRfuSlotStatusNI - lsrs r0, 22 - adds r0, r1 - ldr r0, [r0] - mov r12, r0 - ldrh r0, [r0] - mov r9, r0 - mov r0, r12 - adds r0, 0x21 - ldrb r2, [r6, 0x4] - adds r0, r2 - ldrb r0, [r0] - str r0, [sp] - ldrb r2, [r6, 0x2] - cmp r2, 0x2 - bne _082E6844 - ldr r0, =0x00008022 - cmp r9, r0 - beq _082E685E -_082E6844: - cmp r2, 0x1 - bne _082E684E - ldr r0, =0x00008021 - cmp r9, r0 - beq _082E685E -_082E684E: - movs r3, 0x1B - add r3, r12 - mov r8, r3 - cmp r2, 0x3 - bne _082E6882 - ldr r0, =0x00008023 - cmp r9, r0 - bne _082E6882 -_082E685E: - ldrb r1, [r6, 0x4] - mov r0, r12 - adds r0, 0x21 - adds r0, r1 - ldrb r0, [r0] - movs r7, 0x1B - add r7, r12 - mov r8, r7 - ldrb r2, [r6, 0x5] - cmp r0, r2 - bne _082E6882 - adds r0, r7, r1 - movs r1, 0x1 - mov r3, r10 - lsls r1, r3 - ldrb r2, [r0] - orrs r1, r2 - strb r1, [r0] -_082E6882: - ldrb r2, [r6, 0x4] - mov r7, r8 - adds r0, r7, r2 - ldrb r0, [r0] - mov r3, r12 - ldrb r1, [r3, 0x1A] - ands r0, r1 - cmp r0, r1 - bne _082E697E - adds r3, 0x21 - adds r2, r3, r2 - ldrb r0, [r2] - adds r0, 0x1 - movs r1, 0x3 - ands r0, r1 - movs r1, 0 - strb r0, [r2] - ldrb r0, [r6, 0x4] - add r0, r8 - strb r1, [r0] - mov r7, r12 - ldrh r1, [r7] - ldr r2, =0x00007fdf - adds r0, r1, r2 - lsls r0, 16 - lsrs r0, 16 - adds r5, r3, 0 - cmp r0, 0x1 - bhi _082E6970 - ldr r0, =0x00008021 - cmp r1, r0 - bne _082E68E8 - ldrb r1, [r6, 0x4] - lsls r1, 2 - subs r3, 0x1D - adds r1, r3, r1 - ldrh r2, [r7, 0x2E] - ldr r0, [r1] - adds r0, r2 - str r0, [r1] - b _082E68FE - .align 2, 0 - .pool -_082E68E8: - ldrb r2, [r6, 0x4] - lsls r2, 2 - mov r3, r12 - adds r3, 0x4 - adds r2, r3, r2 - mov r7, r12 - ldrh r1, [r7, 0x2E] - lsls r1, 2 - ldr r0, [r2] - adds r0, r1 - str r0, [r2] -_082E68FE: - mov r0, r12 - ldrh r1, [r0, 0x2E] - ldr r0, [r0, 0x14] - subs r0, r1 - mov r1, r12 - str r0, [r1, 0x14] - cmp r0, 0 - beq _082E6912 - cmp r0, 0 - bge _082E697E -_082E6912: - mov r0, r12 - adds r0, 0x20 - movs r2, 0 - strb r2, [r0] - mov r7, r12 - ldrh r1, [r7] - ldr r0, =0x00008021 - cmp r1, r0 - bne _082E695C - movs r4, 0 -_082E6926: - adds r0, r5, r4 - movs r1, 0x1 - strb r1, [r0] - lsls r1, r4, 2 - adds r1, r3, r1 - mov r2, r12 - ldrh r0, [r2, 0x2E] - adds r2, r0, 0 - muls r2, r4 - mov r7, r12 - ldr r0, [r7, 0x28] - adds r0, r2 - str r0, [r1] - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x3 - bls _082E6926 - ldr r0, [r7, 0x30] - str r0, [r7, 0x14] - ldr r0, =0x00008022 - strh r0, [r7] - b _082E697E - .align 2, 0 - .pool -_082E695C: - strb r2, [r5] - mov r0, r12 - str r2, [r0, 0x14] - ldr r0, =0x00008023 - mov r1, r12 - strh r0, [r1] - b _082E697E - .align 2, 0 - .pool -_082E6970: - lsls r1, 16 - ldr r0, =0x80230000 - cmp r1, r0 - bne _082E697E - ldr r0, =0x00008020 - mov r2, r12 - strh r0, [r2] -_082E697E: - mov r3, r12 - ldrh r0, [r3] - cmp r0, r9 - bne _082E69A8 - ldrb r2, [r6, 0x4] - mov r0, r12 - adds r0, 0x21 - adds r0, r2 - ldrb r0, [r0] - ldr r7, [sp] - cmp r0, r7 - bne _082E69A8 - mov r1, r8 - adds r0, r1, r2 - ldrb r0, [r0] - mov r2, r10 - asrs r0, r2 - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _082E69CE -_082E69A8: - ldr r4, =0x04000208 - ldrh r2, [r4] - movs r0, 0 - strh r0, [r4] - ldr r0, =gRfuStatic - ldr r3, [r0] - movs r0, 0x10 - mov r7, r10 - lsls r0, r7 - ldrb r1, [r3, 0x2] - orrs r0, r1 - movs r1, 0 - strb r0, [r3, 0x2] - lsls r0, r7, 2 - ldr r3, =gRfuSlotStatusNI - adds r0, r3 - ldr r0, [r0] - strh r1, [r0, 0x2] - strh r2, [r4] -_082E69CE: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 - .pool - thumb_func_end rfu_STC_NI_receive_Sender - - thumb_func_start rfu_STC_NI_receive_Receiver -rfu_STC_NI_receive_Receiver: @ 82E69F4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - adds r6, r1, 0 - str r2, [sp] - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - movs r7, 0 - ldr r1, =gRfuSlotStatusNI - lsls r0, 2 - adds r0, r1 - ldr r4, [r0] - adds r5, r4, 0 - adds r5, 0x34 - ldrh r0, [r4, 0x34] - mov r9, r0 - ldrb r0, [r6, 0x4] - adds r3, r4, 0 - adds r3, 0x55 - adds r0, r3, r0 - ldrb r0, [r0] - mov r10, r0 - ldrb r0, [r6, 0x2] - cmp r0, 0x3 - bne _082E6A64 - ldr r0, =gRfuStatic - ldr r2, [r0] - movs r0, 0x1 - mov r1, r8 - lsls r0, r1 - ldrb r1, [r2, 0x1] - orrs r0, r1 - strb r0, [r2, 0x1] - ldrh r1, [r4, 0x34] - ldr r0, =0x00008042 - cmp r1, r0 - bne _082E6AAA - adds r0, r4, 0 - adds r0, 0x54 - strb r7, [r0] - strb r7, [r3] - ldr r0, =0x00008043 - strh r0, [r4, 0x34] - b _082E6AAA - .align 2, 0 - .pool -_082E6A64: - cmp r0, 0x2 - bne _082E6A90 - ldr r0, =0x00008041 - cmp r9, r0 - bne _082E6A7C - ldr r0, [r5, 0x14] - cmp r0, 0 - bne _082E6A7C - mov r0, r8 - adds r1, r5, 0 - bl rfu_STC_NI_initSlot_asRecvDataEntity -_082E6A7C: - ldrh r1, [r5] - ldr r0, =0x00008042 - cmp r1, r0 - bne _082E6AAA - b _082E6AAE - .align 2, 0 - .pool -_082E6A90: - cmp r0, 0x1 - bne _082E6AAA - ldr r7, =0x00008041 - cmp r9, r7 - beq _082E6AAE - mov r0, r8 - adds r1, r5, 0 - bl rfu_STC_NI_initSlot_asRecvControllData - ldrh r0, [r4, 0x34] - cmp r0, r7 - bne _082E6B4A - movs r7, 0x1 -_082E6AAA: - cmp r7, 0 - beq _082E6B04 -_082E6AAE: - ldrb r2, [r6, 0x5] - ldrb r3, [r6, 0x4] - adds r4, r5, 0 - adds r4, 0x21 - adds r0, r4, r3 - ldrb r0, [r0] - adds r0, 0x1 - movs r1, 0x3 - ands r0, r1 - cmp r2, r0 - bne _082E6B04 - ldr r0, =gRfuFixed - ldr r0, [r0] - lsls r1, r3, 2 - adds r1, 0x4 - adds r1, r5, r1 - ldrh r2, [r6, 0x6] - ldr r3, [r0, 0x4] - mov r0, sp - bl _call_via_r3 - ldrh r1, [r5] - ldr r0, =0x00008042 - cmp r1, r0 - bne _082E6AF4 - ldrb r0, [r6, 0x4] - lsls r0, 2 - adds r2, r5, 0x4 - adds r2, r0 - ldrh r0, [r5, 0x2E] - lsls r1, r0, 1 - adds r1, r0 - ldr r0, [r2] - adds r0, r1 - str r0, [r2] -_082E6AF4: - ldrh r1, [r6, 0x6] - ldr r0, [r5, 0x14] - subs r0, r1 - str r0, [r5, 0x14] - ldrb r0, [r6, 0x4] - adds r0, r4, r0 - ldrb r1, [r6, 0x5] - strb r1, [r0] -_082E6B04: - ldrh r0, [r5, 0x18] - cmp r0, 0 - bne _082E6B4A - ldrb r0, [r6, 0x4] - adds r1, r5, 0 - adds r1, 0x20 - strb r0, [r1] - ldrh r0, [r5] - cmp r0, r9 - bne _082E6B2C - adds r0, r5, 0 - adds r0, 0x21 - ldrb r2, [r6, 0x4] - adds r0, r2 - ldrb r0, [r0] - cmp r0, r10 - bne _082E6B2C - ldrb r6, [r6, 0x5] - cmp r0, r6 - bne _082E6B4A -_082E6B2C: - ldr r3, =0x04000208 - ldrh r2, [r3] - movs r0, 0 - strh r0, [r3] - ldr r0, =gRfuStatic - ldr r4, [r0] - movs r0, 0x1 - mov r1, r8 - lsls r0, r1 - ldrb r1, [r4, 0x2] - orrs r0, r1 - movs r1, 0 - strb r0, [r4, 0x2] - strh r1, [r5, 0x2] - strh r2, [r3] -_082E6B4A: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 - .pool - thumb_func_end rfu_STC_NI_receive_Receiver - - thumb_func_start rfu_STC_NI_initSlot_asRecvControllData -rfu_STC_NI_initSlot_asRecvControllData: @ 82E6B70 - push {r4-r7,lr} - adds r2, r1, 0 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, =gRfuLinkStatus - ldr r3, [r0] - ldrb r1, [r3] - mov r12, r0 - cmp r1, 0x1 - bne _082E6B90 - movs r5, 0x3 - adds r1, r3, 0 - adds r1, 0xF - b _082E6B98 - .align 2, 0 - .pool -_082E6B90: - movs r5, 0x2 - adds r0, r4, 0 - adds r0, 0x10 - adds r1, r3, r0 -_082E6B98: - movs r7, 0x1 - adds r0, r7, 0 - lsls r0, r4 - lsls r0, 24 - lsrs r6, r0, 24 - adds r4, r6, 0 - ldrh r3, [r2] - cmp r3, 0 - bne _082E6BF6 - ldrb r0, [r1] - cmp r0, r5 - bcs _082E6BD0 - movs r0, 0x49 - strh r0, [r2] - ldr r0, =0x00000702 - strh r0, [r2, 0x18] - ldr r0, =gRfuStatic - ldr r2, [r0] - ldrb r1, [r2, 0x4] - adds r0, r6, 0 - orrs r0, r1 - strb r0, [r2, 0x4] - b _082E6BF6 - .align 2, 0 - .pool -_082E6BD0: - strh r3, [r2, 0x18] - ldrb r0, [r1] - subs r0, r5 - strb r0, [r1] - adds r0, r2, 0 - adds r0, 0x2D - str r0, [r2, 0x4] - movs r0, 0x7 - str r0, [r2, 0x14] - strb r7, [r2, 0x1F] - strh r3, [r2, 0x2E] - strb r4, [r2, 0x1A] - ldr r0, =0x00008041 - strh r0, [r2] - mov r0, r12 - ldr r1, [r0] - ldrb r0, [r1, 0x5] - orrs r4, r0 - strb r4, [r1, 0x5] -_082E6BF6: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 - .pool - thumb_func_end rfu_STC_NI_initSlot_asRecvControllData - - thumb_func_start rfu_STC_NI_initSlot_asRecvDataEntity -rfu_STC_NI_initSlot_asRecvDataEntity: @ 82E6C00 - push {r4-r7,lr} - adds r4, r1, 0 - lsls r0, 24 - lsrs r5, r0, 24 - adds r0, r4, 0 - adds r0, 0x2D - ldrb r0, [r0] - cmp r0, 0x1 - bne _082E6C24 - ldr r0, =gRfuLinkStatus - lsls r1, r5, 5 - adds r1, 0x14 - ldr r0, [r0] - adds r0, r1 - adds r0, 0x4 - b _082E6C7A - .align 2, 0 - .pool -_082E6C24: - ldr r1, =gRfuSlotStatusNI - lsls r0, r5, 2 - adds r0, r1 - ldr r2, [r0] - ldr r1, [r4, 0x30] - ldr r0, [r2, 0x6C] - cmp r1, r0 - bls _082E6C78 - movs r1, 0x80 - lsls r1, 17 - lsls r1, r5 - lsrs r1, 24 - ldr r0, =gRfuStatic - ldr r3, [r0] - ldrb r2, [r3, 0x4] - adds r0, r1, 0 - orrs r0, r2 - strb r0, [r3, 0x4] - ldr r0, =gRfuLinkStatus - ldr r2, [r0] - ldrb r0, [r2, 0x5] - bics r0, r1 - strb r0, [r2, 0x5] - ldr r0, =0x00000701 - strh r0, [r4, 0x18] - movs r0, 0x47 - strh r0, [r4] - adds r0, r5, 0 - movs r1, 0x1 - adds r2, r4, 0 - bl rfu_STC_releaseFrame - b _082E6CAC - .align 2, 0 - .pool -_082E6C78: - ldr r0, [r2, 0x68] -_082E6C7A: - str r0, [r4, 0x4] - movs r3, 0 - adds r6, r4, 0 - adds r6, 0x21 - movs r7, 0 - adds r5, r4, 0x4 -_082E6C86: - adds r0, r6, r3 - strb r7, [r0] - lsls r1, r3, 2 - adds r1, r5, r1 - ldrh r0, [r4, 0x2E] - adds r2, r0, 0 - muls r2, r3 - ldr r0, [r4, 0x4] - adds r0, r2 - str r0, [r1] - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x3 - bls _082E6C86 - ldr r0, [r4, 0x30] - str r0, [r4, 0x14] - ldr r0, =0x00008042 - strh r0, [r4] -_082E6CAC: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 - .pool - thumb_func_end rfu_STC_NI_initSlot_asRecvDataEntity - - thumb_func_start rfu_NI_checkCommFailCounter -rfu_NI_checkCommFailCounter: @ 82E6CB8 - push {r4-r7,lr} - ldr r2, =gRfuLinkStatus - ldr r0, [r2] - ldrb r1, [r0, 0x4] - ldrb r0, [r0, 0x5] - orrs r0, r1 - cmp r0, 0 - beq _082E6D3E - ldr r1, =0x04000208 - ldrh r0, [r1] - mov r12, r0 - movs r0, 0 - strh r0, [r1] - ldr r1, =gRfuStatic - ldr r0, [r1] - ldrb r0, [r0, 0x2] - lsrs r7, r0, 4 - movs r3, 0 - adds r6, r1, 0 - adds r5, r2, 0 - ldr r4, =gRfuSlotStatusNI -_082E6CE2: - movs r0, 0x80 - lsls r0, 17 - lsls r0, r3 - lsrs r2, r0, 24 - ldr r0, [r5] - ldrb r0, [r0, 0x4] - ands r0, r2 - cmp r0, 0 - beq _082E6D0A - ldr r0, [r6] - ldrb r0, [r0, 0x2] - ands r0, r2 - cmp r0, 0 - bne _082E6D0A - lsls r0, r3, 2 - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x2] - adds r0, 0x1 - strh r0, [r1, 0x2] -_082E6D0A: - ldr r0, [r5] - ldrb r0, [r0, 0x5] - ands r0, r2 - cmp r0, 0 - beq _082E6D28 - adds r0, r7, 0 - ands r0, r2 - cmp r0, 0 - bne _082E6D28 - lsls r0, r3, 2 - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x36] - adds r0, 0x1 - strh r0, [r1, 0x36] -_082E6D28: - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x3 - bls _082E6CE2 - ldr r0, [r6] - movs r1, 0 - strb r1, [r0, 0x2] - ldr r0, =0x04000208 - mov r1, r12 - strh r1, [r0] -_082E6D3E: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 - .pool - thumb_func_end rfu_NI_checkCommFailCounter - - thumb_func_start rfu_REQ_noise -rfu_REQ_noise: @ 82E6D54 - push {lr} - ldr r0, =rfu_STC_REQ_callback - bl STWI_set_Callback_M - movs r0, 0x1 - movs r1, 0 - bl STWI_send_TestModeREQ - pop {r0} - bx r0 - .align 2, 0 - .pool - thumb_func_end rfu_REQ_noise - - thumb_func_start AgbRFU_checkID -AgbRFU_checkID: @ 82E6D6C - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, =0x04000208 - ldrh r0, [r0] - cmp r0, 0 - bne _082E6D88 - movs r0, 0x1 - negs r0, r0 - b _082E6E08 - .align 2, 0 - .pool -_082E6D88: - ldr r0, =0x04000200 - ldrh r0, [r0] - mov r8, r0 - ldr r4, =gSTWIStatus - ldr r1, [r4] - movs r0, 0xA - str r0, [r1] - ldr r0, =Sio32IDIntr - bl STWI_set_Callback_ID - bl Sio32IDInit - ldr r0, [r4] - ldrb r0, [r0, 0xA] - lsls r0, 2 - ldr r1, =0x04000100 - adds r4, r0, r1 - lsls r0, r5, 27 - lsrs r5, r0, 24 - movs r7, 0 - b _082E6DD6 - .align 2, 0 - .pool -_082E6DC4: - strh r6, [r4, 0x2] - strh r6, [r4] - movs r0, 0x83 - strh r0, [r4, 0x2] -_082E6DCC: - ldrh r0, [r4] - cmp r0, 0x1F - bls _082E6DCC - strh r7, [r4, 0x2] - strh r7, [r4] -_082E6DD6: - subs r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0xFF - beq _082E6DEA - bl Sio32IDMain - adds r6, r0, 0 - cmp r6, 0 - beq _082E6DC4 -_082E6DEA: - ldr r1, =0x04000208 - movs r0, 0 - strh r0, [r1] - ldr r0, =0x04000200 - mov r2, r8 - strh r2, [r0] - movs r0, 0x1 - strh r0, [r1] - ldr r0, =gSTWIStatus - ldr r1, [r0] - movs r0, 0 - str r0, [r1] - bl STWI_set_Callback_ID - adds r0, r6, 0 -_082E6E08: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 - .pool - thumb_func_end AgbRFU_checkID - - thumb_func_start Sio32IDInit -Sio32IDInit: @ 82E6E20 - push {r4,r5,lr} - sub sp, 0x4 - ldr r3, =0x04000208 - movs r4, 0 - strh r4, [r3] - ldr r2, =0x04000200 - ldr r0, =gSTWIStatus - ldr r0, [r0] - movs r1, 0x8 - ldrb r0, [r0, 0xA] - lsls r1, r0 - movs r5, 0x80 - orrs r1, r5 - ldrh r0, [r2] - bics r0, r1 - strh r0, [r2] - movs r0, 0x1 - strh r0, [r3] - ldr r0, =0x04000134 - strh r4, [r0] - subs r2, 0xD8 - movs r1, 0x80 - lsls r1, 5 - adds r0, r1, 0 - strh r0, [r2] - ldrh r0, [r2] - movs r3, 0x81 - lsls r3, 7 - adds r1, r3, 0 - orrs r0, r1 - strh r0, [r2] - movs r0, 0 - str r0, [sp] - ldr r1, =gRfuSIO32Id - ldr r2, =0x05000003 - mov r0, sp - bl CpuSet - ldr r0, =0x04000202 - strh r5, [r0] - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 - .pool - thumb_func_end Sio32IDInit - - thumb_func_start Sio32IDMain -Sio32IDMain: @ 82E6E94 - push {r4-r7,lr} - ldr r0, =gRfuSIO32Id - ldrb r1, [r0, 0x1] - mov r12, r1 - adds r7, r0, 0 - cmp r1, 0 - beq _082E6EAC - cmp r1, 0x1 - beq _082E6EE4 - b _082E6F7C - .align 2, 0 - .pool -_082E6EAC: - movs r6, 0x1 - strb r6, [r7] - ldr r3, =0x04000128 - ldrh r0, [r3] - movs r5, 0x1 - orrs r0, r5 - strh r0, [r3] - ldr r4, =0x04000208 - mov r0, r12 - strh r0, [r4] - ldr r2, =0x04000200 - ldrh r0, [r2] - movs r1, 0x80 - orrs r0, r1 - strh r0, [r2] - strh r6, [r4] - strb r5, [r7, 0x1] - ldrb r0, [r3] - orrs r0, r1 - strb r0, [r3] - b _082E6F80 - .align 2, 0 - .pool -_082E6EE4: - ldrh r0, [r7, 0xA] - cmp r0, 0 - bne _082E6F78 - ldrb r0, [r7] - cmp r0, 0x1 - bne _082E6F14 - ldrh r0, [r7, 0x2] - cmp r0, 0 - bne _082E6F80 - ldr r3, =0x04000208 - strh r0, [r3] - ldr r2, =0x04000128 - ldrh r0, [r2] - movs r1, 0x80 - orrs r0, r1 - strh r0, [r2] - mov r1, r12 - strh r1, [r3] - b _082E6F80 - .align 2, 0 - .pool -_082E6F14: - ldrh r1, [r7, 0x4] - ldr r0, =0x00008001 - cmp r1, r0 - beq _082E6F80 - ldrh r6, [r7, 0x2] - cmp r6, 0 - bne _082E6F80 - ldr r4, =0x04000208 - strh r6, [r4] - ldr r3, =0x04000200 - ldrh r1, [r3] - ldr r0, =0x0000ff7f - ands r0, r1 - strh r0, [r3] - mov r7, r12 - strh r7, [r4] - ldr r2, =0x04000128 - strh r6, [r2] - movs r1, 0x80 - lsls r1, 5 - adds r0, r1, 0 - strh r0, [r2] - ldr r0, =0x04000202 - movs r5, 0x80 - strh r5, [r0] - ldrh r0, [r2] - movs r7, 0x81 - lsls r7, 7 - adds r1, r7, 0 - orrs r0, r1 - strh r0, [r2] - strh r6, [r4] - ldrh r0, [r3] - orrs r0, r5 - strh r0, [r3] - mov r0, r12 - strh r0, [r4] - b _082E6F80 - .align 2, 0 - .pool -_082E6F78: - movs r0, 0x2 - strb r0, [r7, 0x1] -_082E6F7C: - ldrh r0, [r7, 0xA] - b _082E6F82 -_082E6F80: - movs r0, 0 -_082E6F82: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end Sio32IDMain - - thumb_func_start Sio32IDIntr -Sio32IDIntr: @ 82E6F88 - push {r4,r5,lr} - ldr r0, =0x04000120 - ldr r5, [r0] - ldr r0, =gRfuSIO32Id - ldrb r1, [r0] - adds r4, r0, 0 - cmp r1, 0x1 - beq sub_82E6FA2 - ldr r0, =0x04000128 - ldrh r1, [r0] - movs r2, 0x80 - orrs r1, r2 - strh r1, [r0] - thumb_func_end Sio32IDIntr - - non_word_aligned_thumb_func_start sub_82E6FA2 -sub_82E6FA2: @ 82E6FA2 - ldrb r2, [r4] - lsls r1, r2, 4 - adds r0, r5, 0 - lsls r0, r1 - lsrs r1, r0, 16 - movs r0, 0x1 - subs r0, r2 - lsls r0, 4 - lsls r5, r0 - adds r0, r5, 0 - lsrs r5, r0, 16 - ldrh r0, [r4, 0xA] - cmp r0, 0 - bne _082E6FF6 - ldrh r2, [r4, 0x6] - cmp r1, r2 - bne _082E6FF4 - ldrh r3, [r4, 0x2] - cmp r3, 0x3 - bls _082E6FDC - strh r5, [r4, 0xA] - b _082E6FF6 - .align 2, 0 - .pool -_082E6FDC: - ldrh r0, [r4, 0x4] - mvns r0, r0 - lsls r0, 16 - lsrs r0, 16 - cmp r1, r0 - bne _082E6FF6 - mvns r0, r2 - lsls r0, 16 - lsrs r0, 16 - cmp r5, r0 - bne _082E6FF6 - adds r0, r3, 0x1 -_082E6FF4: - strh r0, [r4, 0x2] -_082E6FF6: - ldrh r0, [r4, 0x2] - cmp r0, 0x3 - bhi _082E700C - lsls r0, 1 - ldr r1, =Sio32ConnectionData - adds r0, r1 - ldrh r0, [r0] - b _082E700E - .align 2, 0 - .pool -_082E700C: - ldr r0, =0x00008001 -_082E700E: - strh r0, [r4, 0x4] - mvns r0, r5 - strh r0, [r4, 0x6] - ldr r3, =0x04000120 - ldrh r2, [r4, 0x4] - ldrb r1, [r4] - movs r0, 0x1 - subs r0, r1 - lsls r0, 4 - lsls r2, r0 - ldrh r0, [r4, 0x6] - lsls r1, 4 - lsls r0, r1 - adds r2, r0 - str r2, [r3] - ldrb r0, [r4] - cmp r0, 0x1 - bne _082E705C - ldrh r0, [r4, 0x2] - cmp r0, 0 - bne _082E703E - ldr r0, =0x0000494e - cmp r5, r0 - bne _082E705C -_082E703E: - movs r0, 0 - ldr r1, =0x00000257 -_082E7042: - adds r0, 0x1 - lsls r0, 16 - lsrs r0, 16 - cmp r0, r1 - bls _082E7042 - ldrh r0, [r4, 0xA] - cmp r0, 0 - bne _082E705C - ldr r0, =0x04000128 - ldrh r1, [r0] - movs r2, 0x80 - orrs r1, r2 - strh r1, [r0] -_082E705C: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 - .pool - thumb_func_end sub_82E6FA2 - - .align 2, 0 @ Don't pad with nop. diff --git a/include/gba/io_reg.h b/include/gba/io_reg.h index df79b084d3..071a89bc58 100644 --- a/include/gba/io_reg.h +++ b/include/gba/io_reg.h @@ -461,7 +461,7 @@ #define REG_DMA3CNT_L (*(vu16 *)REG_ADDR_DMA3CNT_L) #define REG_DMA3CNT_H (*(vu16 *)REG_ADDR_DMA3CNT_H) -#define REG_TMCNT(n) (*(vu16 *)(REG_ADDR_TMCNT + ((n) * 4))) +#define REG_TMCNT(n) (*(vu32 *)(REG_ADDR_TMCNT + ((n) * 4))) #define REG_TMCNT_L(n) (*(vu16 *)(REG_ADDR_TMCNT_L + ((n) * 4))) #define REG_TMCNT_H(n) (*(vu16 *)(REG_ADDR_TMCNT_H + ((n) * 4))) #define REG_TM0CNT (*(vu32 *)REG_ADDR_TM0CNT) diff --git a/include/gba/syscall.h b/include/gba/syscall.h index f3382b874c..56cd4ba587 100644 --- a/include/gba/syscall.h +++ b/include/gba/syscall.h @@ -45,4 +45,6 @@ void RLUnCompVram(const void *src, void *dest); int MultiBoot(struct MultiBootParam *mp); +s32 Div(s32 num, s32 denom); + #endif // GUARD_GBA_SYSCALL_H diff --git a/ld_script.txt b/ld_script.txt index 7e0eeac3de..6719b69075 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -358,7 +358,7 @@ SECTIONS { src/librfu_intr.o(.text); asm/librfu_intr.o(.text); src/librfu_rfu.o(.text); - asm/librfu.o(.text); + src/librfu_sio32id.o(.text); src/libisagbprn.o(.text); *libagbsyscall.a:ArcTan2.o(.text); *libagbsyscall.a:BgAffineSet.o(.text); diff --git a/src/agb_flash.c b/src/agb_flash.c index 34fb4e84a6..a9cf13d5f4 100644 --- a/src/agb_flash.c +++ b/src/agb_flash.c @@ -74,7 +74,7 @@ u16 SetFlashTimerIntr(u8 timerNum, void (**intrFunc)(void)) return 1; sTimerNum = timerNum; - sTimerReg = ®_TMCNT(sTimerNum); + sTimerReg = ®_TMCNT_L(sTimerNum); *intrFunc = FlashTimerIntr; return 0; } diff --git a/src/librfu_rfu.c b/src/librfu_rfu.c index 7437bcecf6..f5f13cc5d4 100644 --- a/src/librfu_rfu.c +++ b/src/librfu_rfu.c @@ -1,77 +1,2218 @@ -#include "global.h" -#include "main.h" - #include "librfu.h" -// Nonmatching, only register differences -/*u16 rfu_initializeAPI(u32 *unk0, u16 unk1, IntrFunc *interrupt, bool8 copyInterruptToRam) +struct LLSFStruct +{ + u8 unk00; + u8 unk01; + u8 unk02; + u8 unk03; + u8 unk04; + u8 unk05; + u8 unk06; + u8 unk07; + u8 unk08; + u8 unk09; + u8 unk0A; + u8 unk0B; + u8 unk0C; + u16 unk0E; +}; + +struct RfuLocalStruct +{ + u8 unk00; + u8 unk01; + u8 unk02; + u8 unk03; + u8 unk04; + u8 unk05; + u16 unk06; +}; + +static void rfu_CB_defaultCallback(u8, u16); +static void rfu_CB_reset(u8, u16); +static void rfu_CB_configGameData(u8, u16); +static void rfu_CB_stopMode(u8, u16); +static void rfu_CB_startSearchChild(u8, u16); +static void rfu_CB_pollAndEndSearchChild(u8, u16); +static void rfu_CB_startSearchParent(u8, u16); +static void rfu_CB_pollSearchParent(u8, u16); +static void rfu_CB_pollConnectParent(u8, u16); +static void rfu_CB_pollConnectParent(u8, u16); +static void rfu_CB_disconnect(u8, u16); +static void rfu_CB_CHILD_pollConnectRecovery(u8, u16); +static void rfu_CB_sendData(__attribute__((unused)) u8, u16); +static void rfu_CB_sendData2(__attribute__((unused)) u8, u16); +static void rfu_CB_sendData3(u8, u16); +static void rfu_CB_recvData(u8, u16); +static void rfu_enableREQCallback(bool8); +static void rfu_STC_clearAPIVariables(void); +static void rfu_STC_readChildList(void); +static void rfu_STC_readParentCandidateList(void); +static void rfu_STC_REQ_callback(u8, u16); +static void rfu_STC_removeLinkData(u8, u8); +static void rfu_STC_fastCopy(const u8 **, u8 **, s32); +static void rfu_STC_clearLinkStatus(u8); +static void rfu_NI_checkCommFailCounter(void); +static u16 rfu_STC_setSendData_org(u8, u8, u8, const void *, u32); +static void rfu_constructSendLLFrame(void); +static u16 rfu_STC_NI_constructLLSF(u8, u8 **, struct NIComm *); +static u16 rfu_STC_UNI_constructLLSF(u8, u8 **); +static void rfu_STC_PARENT_analyzeRecvPacket(void); +static void rfu_STC_CHILD_analyzeRecvPacket(void); +static u16 rfu_STC_analyzeLLSF(u8, const u8 *, u16); +static void rfu_STC_UNI_receive(u8, const struct RfuLocalStruct *, const u8 *); +static void rfu_STC_NI_receive_Receiver(u8, const struct RfuLocalStruct *, const u8 *); +static void rfu_STC_NI_receive_Sender(u8, u8, const struct RfuLocalStruct *, __attribute__((unused)) const u8 *); +static void rfu_STC_NI_initSlot_asRecvDataEntity(u8, struct NIComm *); +static void rfu_STC_NI_initSlot_asRecvControllData(u8, struct NIComm *); + +//struct RfuSlotStatusUNI *gRfuSlotStatusUNI[RFU_CHILD_MAX]; +//struct RfuSlotStatusNI *gRfuSlotStatusNI[RFU_CHILD_MAX]; +//struct RfuLinkStatus *gRfuLinkStatus; +//struct RfuStatic *gRfuStatic; +//struct RfuFixed *gRfuFixed; + +/*static const struct LLSFStruct llsf_struct[2] = { + { + 2, 14, 0, 10, 9, 5, 7, 2, + 0, 15, 1, 3, 3, 0x1f + }, { + 3, 22, 18, 14, 13, 9, 11, 3, + 15, 15, 1, 3, 3, 0x7f + } +}; + +#ifdef EMERALD +static const char lib_ver[] = "RFU_V1026"; +#else +static const char lib_ver[] = "RFU_V1024"; +#endif + +static const char str_checkMbootLL[] = "RFU-MBOOT"; +*/ +extern const struct LLSFStruct llsf_struct[2]; +extern const char str_checkMbootLL[];// = "RFU-MBOOT"; + +u16 rfu_initializeAPI(struct RfuAPIBuffer *APIBuffer, u16 buffByteSize, IntrFunc *sioIntrTable_p, bool8 copyInterruptToRam) { u16 i; - u16 *v13; - u16 *v12; - u16 num; + u16 *dst; + const u16 *src; + u16 r3; - if (((u32)unk0 & 0xF000000) == 0x2000000 && copyInterruptToRam) - { - return 2; - } - - if ((u32)unk0 & 3) - return 2; - - // Nintendo pls, just use a ternary for once + // is in EWRAM? + if (((u32)APIBuffer & 0xF000000) == 0x2000000 && copyInterruptToRam) + return ERR_RFU_API_BUFF_ADR; + // is not 4-byte aligned? + if ((u32)APIBuffer & 3) + return ERR_RFU_API_BUFF_ADR; if (copyInterruptToRam) { // An assert/debug print may have existed before, ie - // printf("%s %u < %u", "somefile.c:12345", unk1, num) + // printf("%s %u < %u", "somefile.c:12345", buffByteSize, num) // to push this into r3? - num = 0xe64; - if (unk1 < num) - return 1; + r3 = sizeof(struct RfuAPIBuffer); + if (buffByteSize < r3) + return ERR_RFU_API_BUFF_SIZE; } - - if (copyInterruptToRam == FALSE) + if (!copyInterruptToRam) { - num = 0x504; // same as above, this should be r3 not r0 - if (unk1 < num) - return 1; + r3 = 0x504; // same issue as above + if (buffByteSize < r3) + return ERR_RFU_API_BUFF_SIZE; } - gRfuLinkStatus = unk0; - gRfuStatic = unk0 + (0xB4 / sizeof(u32)); - gRfuFixed = (struct RfuFixed*)(unk0 + (0xDC / sizeof(u32))); - gRfuSlotStatusNI[0] = (struct RfuSlotStatusNI*)(unk0 + (0x1BC / sizeof(u32))); - gRfuSlotStatusUNI[0] = (struct RfuSlotStatusUNI*)(unk0 + (0x37C / sizeof(u32))); - - for (i = 1; i < 4; i++, num) + gRfuLinkStatus = &APIBuffer->linkStatus; + gRfuStatic = &APIBuffer->static_; + gRfuFixed = &APIBuffer->fixed; + gRfuSlotStatusNI[0] = &APIBuffer->NI[0]; + gRfuSlotStatusUNI[0] = &APIBuffer->UNI[0]; + for (i = 1; i < RFU_CHILD_MAX; ++i) { - gRfuSlotStatusNI[i] = (struct RfuSlotStatusNI*)&gRfuSlotStatusNI[i-1]->unk_70; - gRfuSlotStatusUNI[i] = (struct RfuSlotStatusUNI*)&gRfuSlotStatusUNI[i-1]->unk_1c; + gRfuSlotStatusNI[i] = &gRfuSlotStatusNI[i - 1][1]; + gRfuSlotStatusUNI[i] = &gRfuSlotStatusUNI[i - 1][1]; } - - gRfuFixed->unk_dc = (u32)&gRfuSlotStatusUNI[3]->unk_1c; - STWI_init_all(&gRfuSlotStatusUNI[3]->unk_1c, interrupt, copyInterruptToRam); + // TODO: Is it possible to fix the following 2 statements? + // It's equivalent to: + // gRfuFixed->STWIBuffer = &APIBuffer->intr; + // STWI_init_all(&APIBuffer->intr, sioIntrTable_p, copyInterruptToRam); + gRfuFixed->STWIBuffer = (struct RfuIntrStruct *)&gRfuSlotStatusUNI[3][1]; + STWI_init_all((struct RfuIntrStruct *)&gRfuSlotStatusUNI[3][1], sioIntrTable_p, copyInterruptToRam); rfu_STC_clearAPIVariables(); - - for (i = 0; i < 4; i++) + for (i = 0; i < RFU_CHILD_MAX; ++i) { - gRfuSlotStatusNI[i]->unk_68 = 0; - gRfuSlotStatusNI[i]->unk_6c = 0; - gRfuSlotStatusUNI[i]->unk_14 = 0; - gRfuSlotStatusUNI[i]->unk_18 = 0; + gRfuSlotStatusNI[i]->recvBuffer = NULL; + gRfuSlotStatusNI[i]->recvBufferSize = 0; + gRfuSlotStatusUNI[i]->recvBuffer = NULL; + gRfuSlotStatusUNI[i]->recvBufferSize = 0; } - - // Not matching, register differences - v12 = (u16*)((u32)&sub_82E53F4 & ~1); - v13 = (u16*)gRfuFixed->unk_8; - - for (i = 47; i != 0xFFFF; i--) + // looks like a macro copying data + do { - *v13 = *v12; - ++v12; - ++v13; - } - - gRfuFixed->unk_4 = (u32)(&gRfuFixed->unk_8[1]); - + src = (const u16 *)((u32)&rfu_STC_fastCopy & 0xFFFFFFFE); + dst = gRfuFixed->fastCopyBuffer; + for (r3 = 0x2F; r3 != 0xFFFF; --r3) // copy rfu_STC_fastCopy function body to buffer + *dst++ = *src++; + gRfuFixed->fastCopyPtr = (void *)gRfuFixed->fastCopyBuffer + 1; + } while (0); return 0; -}*/ +} + +static void rfu_STC_clearAPIVariables(void) +{ + u16 IMEBackup = REG_IME; + u8 i, r4; + + REG_IME = 0; + r4 = gRfuStatic->flags; + CpuFill16(0, gRfuStatic, sizeof(struct RfuStatic)); + gRfuStatic->flags = r4 & 8; + CpuFill16(0, gRfuLinkStatus, sizeof(struct RfuLinkStatus)); + gRfuLinkStatus->watchInterval = 4; + gRfuStatic->nowWatchInterval = 0; + gRfuLinkStatus->parentChild = MODE_NEUTRAL; + rfu_clearAllSlot(); + gRfuStatic->SCStartFlag = 0; + for (i = 0; i < NELEMS(gRfuStatic->cidBak); ++i) + gRfuStatic->cidBak[i] = 0; + REG_IME = IMEBackup; +} + +void rfu_REQ_PARENT_resumeRetransmitAndChange(void) +{ + STWI_set_Callback_M(rfu_STC_REQ_callback); + STWI_send_ResumeRetransmitAndChangeREQ(); +} + +u16 rfu_UNI_PARENT_getDRAC_ACK(u8 *ackFlag) +{ + struct RfuIntrStruct *buf; + + *ackFlag = 0; + if (gRfuLinkStatus->parentChild != MODE_PARENT) + return ERR_MODE_NOT_PARENT; + buf = rfu_getSTWIRecvBuffer(); + switch (buf->rxPacketAlloc.rfuPacket8.data[0]) + { + case 40: + case 54: + if (buf->rxPacketAlloc.rfuPacket8.data[1] == 0) + *ackFlag = gRfuLinkStatus->connSlotFlag; + else + *ackFlag = buf->rxPacketAlloc.rfuPacket8.data[4]; + return 0; + default: + return ERR_REQ_CMD_ID; + } +} + +void rfu_setTimerInterrupt(u8 timerNo, IntrFunc *timerIntrTable_p) +{ + STWI_init_timer(timerIntrTable_p, timerNo); +} + +struct RfuIntrStruct *rfu_getSTWIRecvBuffer(void) +{ + return gRfuFixed->STWIBuffer; +} + +void rfu_setMSCCallback(void (*callback)(u16 reqCommandId)) +{ + STWI_set_Callback_S(callback); +} + +void rfu_setREQCallback(void (*callback)(u16 reqCommandId, u16 reqResult)) +{ + gRfuFixed->reqCallback = callback; + rfu_enableREQCallback(callback != NULL); +} + +static void rfu_enableREQCallback(bool8 enable) +{ + if (enable) + gRfuStatic->flags |= 8; + else + gRfuStatic->flags &= 0xF7; +} + +static void rfu_STC_REQ_callback(u8 r5, u16 reqResult) +{ + STWI_set_Callback_M(rfu_CB_defaultCallback); + gRfuStatic->reqResult = reqResult; + if (gRfuStatic->flags & 8) + gRfuFixed->reqCallback(r5, reqResult); +} + +static void rfu_CB_defaultCallback(u8 r0, u16 reqResult) +{ + s32 r5; + u8 i; + + if (r0 == 0xFF) + { + if (gRfuStatic->flags & 8) + gRfuFixed->reqCallback(r0, reqResult); + r5 = gRfuLinkStatus->connSlotFlag | gRfuLinkStatus->linkLossSlotFlag; + for (i = 0; i < RFU_CHILD_MAX; ++i) + if ((r5 >> i) & 1) + rfu_STC_removeLinkData(i, 1); + gRfuLinkStatus->parentChild = MODE_NEUTRAL; + } +} + +u16 rfu_waitREQComplete(void) +{ + STWI_poll_CommandEnd(); + return gRfuStatic->reqResult; +} + +void rfu_REQ_RFUStatus(void) +{ + STWI_set_Callback_M(rfu_STC_REQ_callback); + STWI_send_SystemStatusREQ(); +} + +u16 rfu_getRFUStatus(u8 *rfuState) +{ + if (gRfuFixed->STWIBuffer->rxPacketAlloc.rfuPacket8.data[0] != 0x93) + return ERR_REQ_CMD_ID; + if (STWI_poll_CommandEnd() == 0) + *rfuState = gRfuFixed->STWIBuffer->rxPacketAlloc.rfuPacket8.data[7]; + else + *rfuState = 0xFF; + return 0; +} + +u16 rfu_MBOOT_CHILD_inheritanceLinkStatus(void) +{ + const char *s1 = str_checkMbootLL; + char *s2 = (char *)0x30000F0; + u16 checksum; + u16 *r2; + u8 i; + + while (*s1 != '\0') + if (*s1++ != *s2++) + return 1; + r2 = (u16 *)0x3000000; + checksum = 0; + for (i = 0; i < 90; ++i) + checksum += *r2++; + if (checksum != *(u16 *)0x30000FA) + return 1; + CpuCopy16((u16 *)0x3000000, gRfuLinkStatus, sizeof(struct RfuLinkStatus)); + gRfuStatic->flags |= 0x80; + return 0; +} + +void rfu_REQ_stopMode(void) +{ + vu32 *timerReg; + + if (REG_IME == 0) + { + rfu_STC_REQ_callback(61, 6); + gSTWIStatus->error = ERR_REQ_CMD_IME_DISABLE; + } + else + { + AgbRFU_SoftReset(); + rfu_STC_clearAPIVariables(); + if (AgbRFU_checkID(8) == 0x8001) + { + timerReg = ®_TMCNT(gSTWIStatus->timerSelect); + *timerReg = 0; + *timerReg = (TIMER_ENABLE | TIMER_1024CLK) << 16; + while (*timerReg << 16 < 262 << 16) + ; + *timerReg = 0; + STWI_set_Callback_M(rfu_CB_stopMode); + STWI_send_StopModeREQ(); + } + else + { + REG_SIOCNT = SIO_MULTI_MODE; + rfu_STC_REQ_callback(61, 0); + } + } +} + +static void rfu_CB_stopMode(u8 a1, u16 reqResult) +{ + if (reqResult == 0) + REG_SIOCNT = SIO_MULTI_MODE; + rfu_STC_REQ_callback(a1, reqResult); +} + +u32 rfu_REQBN_softReset_and_checkID(void) +{ + u32 r2; + + if (REG_IME == 0) + return ERR_ID_CHECK_IME_DISABLE; + AgbRFU_SoftReset(); + rfu_STC_clearAPIVariables(); + if ((r2 = AgbRFU_checkID(30)) == 0) + REG_SIOCNT = SIO_MULTI_MODE; + return r2; +} + +void rfu_REQ_reset(void) +{ + STWI_set_Callback_M(rfu_CB_reset); + STWI_send_ResetREQ(); +} + +static void rfu_CB_reset(u8 a1, u16 reqResult) +{ + if (reqResult == 0) + rfu_STC_clearAPIVariables(); + rfu_STC_REQ_callback(a1, reqResult); +} + +void rfu_REQ_configSystem(u16 availSlotFlag, u8 maxMFrame, u8 mcTimer) +{ + STWI_set_Callback_M(rfu_STC_REQ_callback); + STWI_send_SystemConfigREQ((availSlotFlag & AVAIL_SLOT1) | 0x3C, maxMFrame, mcTimer); + if (mcTimer == 0) + { + gRfuStatic->unk_1a = 1; + } + else + { + u16 IMEBackup = REG_IME; + + REG_IME = 0; + gRfuStatic->unk_1a = Div(600, mcTimer); + REG_IME = IMEBackup; + } +} + +void rfu_REQ_configGameData(u8 mbootFlag, u16 serialNo, const u8 *gname, const u8 *uname) +{ + u8 sp[16]; + u8 i; + u8 r3; + const u8 *gnameBackup = gname; + const u8 *unameBackup; + + sp[0] = serialNo; + sp[1] = serialNo >> 8; + if (mbootFlag != 0) + sp[1] = (serialNo >> 8) | 0x80; + for (i = 2; i < 15; ++i) + sp[i] = *gname++; + r3 = 0; + unameBackup = uname; + for (i = 0; i < 8; ++i) + { + r3 += *unameBackup++; + r3 += *gnameBackup++; + } + sp[15] = ~r3; + if (mbootFlag != 0) + sp[14] = 0; + STWI_set_Callback_M(rfu_CB_configGameData); + STWI_send_GameConfigREQ(sp, uname); +} + +static void rfu_CB_configGameData(u8 ip, u16 r7) +{ + s32 r2, r3; + u8 *r4; + u8 i; + u8 *r1; + + if (r7 == 0) + { + r1 = gSTWIStatus->txPacket->rfuPacket8.data; + r2 = gRfuLinkStatus->my.serialNo = r1[4]; + gRfuLinkStatus->my.serialNo = (r1[5] << 8) | r2; + r4 = &r1[6]; + if (gRfuLinkStatus->my.serialNo & 0x8000) + { + gRfuLinkStatus->my.serialNo = gRfuLinkStatus->my.serialNo ^ 0x8000; + gRfuLinkStatus->my.mbootFlag = 1; + } + else + { + gRfuLinkStatus->my.mbootFlag = 0; + } + for (i = 0; i < RFU_GAME_NAME_LENGTH; ++i) + gRfuLinkStatus->my.gname[i] = *r4++; + ++r4; + for (i = 0; i < RFU_USER_NAME_LENGTH; ++i) + gRfuLinkStatus->my.uname[i] = *r4++; + } + rfu_STC_REQ_callback(ip, r7); +} + +void rfu_REQ_startSearchChild(void) +{ + u16 r1; + + for (r1 = 0; r1 < 4; ++r1) + gRfuStatic->lsFixedCount[r1] = 0; + STWI_set_Callback_M(rfu_CB_defaultCallback); + STWI_send_SystemStatusREQ(); + r1 = STWI_poll_CommandEnd(); + if (r1 == 0) + { + if (gRfuFixed->STWIBuffer->rxPacketAlloc.rfuPacket8.data[7] == 0) + rfu_STC_clearLinkStatus(1); + } + else + { + rfu_STC_REQ_callback(25, r1); + } + STWI_set_Callback_M(rfu_CB_startSearchChild); + STWI_send_SC_StartREQ(); +} + +static void rfu_CB_startSearchChild(u8 r3, u16 reqResult) +{ + if (reqResult == 0) + gRfuStatic->SCStartFlag = 1; + rfu_STC_REQ_callback(r3, reqResult); +} + +static void rfu_STC_clearLinkStatus(u8 r4) +{ + u8 i; + + rfu_clearAllSlot(); + if (r4 != 0) + { + CpuFill16(0, gRfuLinkStatus->partner, sizeof(gRfuLinkStatus->partner)); + gRfuLinkStatus->findParentCount = 0; + } + for (i = 0; i < RFU_CHILD_MAX; ++i) + gRfuLinkStatus->strength[i] = 0; + gRfuLinkStatus->connCount = 0; + gRfuLinkStatus->connSlotFlag = 0; + gRfuLinkStatus->linkLossSlotFlag = 0; + gRfuLinkStatus->getNameFlag = 0; +} + +void rfu_REQ_pollSearchChild(void) +{ + STWI_set_Callback_M(rfu_CB_pollAndEndSearchChild); + STWI_send_SC_PollingREQ(); +} + +void rfu_REQ_endSearchChild(void) +{ + STWI_set_Callback_M(rfu_CB_pollAndEndSearchChild); + STWI_send_SC_EndREQ(); +} + +static void rfu_CB_pollAndEndSearchChild(u8 r4, u16 reqResult) +{ + if (reqResult == 0) + rfu_STC_readChildList(); + if (r4 == 26) + { + if (gRfuLinkStatus->my.id == 0) + { + STWI_set_Callback_M(rfu_CB_defaultCallback); + STWI_send_SystemStatusREQ(); + if (STWI_poll_CommandEnd() == 0) + gRfuLinkStatus->my.id = *(u16 *)&gRfuFixed->STWIBuffer->rxPacketAlloc.rfuPacket32.data[0]; + } + } + else if (r4 == 27) + { + if (gRfuLinkStatus->parentChild == MODE_NEUTRAL) + gRfuLinkStatus->my.id = 0; + gRfuStatic->SCStartFlag = 0; + } + rfu_STC_REQ_callback(r4, reqResult); +} + +static void rfu_STC_readChildList(void) +{ + u32 r5; + u8 r8 = gRfuFixed->STWIBuffer->rxPacketAlloc.rfuPacket8.data[1]; + u8 *r4; + u8 i; + u8 r2; + + for (r4 = &gRfuFixed->STWIBuffer->rxPacketAlloc.rfuPacket8.data[4]; + r8 != 0; + r4 += 4) + { + r2 = r4[2]; + if (r2 < RFU_CHILD_MAX && !((gRfuLinkStatus->connSlotFlag >> r2) & 1) && !((gRfuLinkStatus->linkLossSlotFlag >> r2) & 1)) + { + gRfuStatic->lsFixedCount[r2] = 0xF0; + gRfuLinkStatus->strength[r2] = 0x10; + gRfuLinkStatus->connSlotFlag |= 1 << r2; + ++gRfuLinkStatus->connCount; + gRfuLinkStatus->partner[r2].id = *(u16 *)r4; + gRfuLinkStatus->partner[r2].slot = r2; + gRfuLinkStatus->parentChild = MODE_PARENT; + gRfuStatic->flags &= 0x7F; + gRfuStatic->cidBak[r2] = gRfuLinkStatus->partner[r2].id; + } + --r8; + } +} + +void rfu_REQ_startSearchParent(void) +{ + STWI_set_Callback_M(rfu_CB_startSearchParent); + STWI_send_SP_StartREQ(); +} + +static void rfu_CB_startSearchParent(u8 r5, u16 reqResult) +{ + if (reqResult == 0) + rfu_STC_clearLinkStatus(0); + rfu_STC_REQ_callback(r5, reqResult); +} + +void rfu_REQ_pollSearchParent(void) +{ + STWI_set_Callback_M(rfu_CB_pollSearchParent); + STWI_send_SP_PollingREQ(); +} + +static void rfu_CB_pollSearchParent(u8 r5, u16 reqResult) +{ + if (reqResult == 0) + rfu_STC_readParentCandidateList(); + rfu_STC_REQ_callback(r5, reqResult); +} + +void rfu_REQ_endSearchParent(void) +{ + STWI_set_Callback_M(rfu_STC_REQ_callback); + STWI_send_SP_EndREQ(); +} + +static void rfu_STC_readParentCandidateList(void) +{ + u8 r7, r6, r5, r4, r3; + u8 *r1, *r2; + struct RfuTgtData *r4_; + + CpuFill16(0, gRfuLinkStatus->partner, sizeof(gRfuLinkStatus->partner)); + r2 = &gRfuFixed->STWIBuffer->rxPacketAlloc.rfuPacket8.data[0]; + r7 = r2[1]; + r2 += 4; + gRfuLinkStatus->findParentCount = 0; + for (r6 = 0; r6 < 4 && r7 != 0; ++r6) + { + r7 -= 7; + r1 = r2 + 6; + r2 += 19; + r5 = ~*r2; + ++r2; + r4 = 0; + for (r3 = 0; r3 < 8; ++r3) + { + r4 += *r2++; + r4 += *r1++; + } + if (r4 == r5) + { + r2 -= 28; + r4_ = &gRfuLinkStatus->partner[gRfuLinkStatus->findParentCount]; + r4_->id = *(u16 *)r2; + r2 += 2; + r4_->slot = *r2; + r2 += 2; + r4_->serialNo = *(u16 *)r2 & 0x7FFF; + if (*(u16 *)r2 & 0x8000) + r4_->mbootFlag = 1; + else + r4_->mbootFlag = 0; + r2 += 2; + for (r3 = 0; r3 < RFU_GAME_NAME_LENGTH; ++r3) + r4_->gname[r3] = *r2++; + ++r2; + for (r3 = 0; r3 < RFU_USER_NAME_LENGTH; ++r3) + r4_->uname[r3] = *r2++; + ++gRfuLinkStatus->findParentCount; + } + } +} + +void rfu_REQ_startConnectParent(u16 pid) +{ + u16 r3 = 0; + u8 i; + for (i = 0; i < RFU_CHILD_MAX && gRfuLinkStatus->partner[i].id != pid; ++i) + ; + if (i == 4) + r3 = 256; + if (r3 == 0) + { + gRfuStatic->tryPid = pid; + STWI_set_Callback_M(rfu_STC_REQ_callback); + STWI_send_CP_StartREQ(pid); + } + else + { + rfu_STC_REQ_callback(31, r3); + } +} + +void rfu_REQ_pollConnectParent(void) +{ + STWI_set_Callback_M(rfu_CB_pollConnectParent); + STWI_send_CP_PollingREQ(); +} + +static void rfu_CB_pollConnectParent(u8 sp24, u16 sp28) +{ + u16 id; + u8 slot; + u8 r2, r5; + struct RfuTgtData *r9; + struct RfuTgtData sp; + + if (sp28 == 0) + { + id = gRfuFixed->STWIBuffer->rxPacketAlloc.rfuPacket32.data[0]; + slot = gRfuFixed->STWIBuffer->rxPacketAlloc.rfuPacket8.data[6]; + if (gRfuFixed->STWIBuffer->rxPacketAlloc.rfuPacket8.data[7] == 0) + { + r2 = 1 << slot; + if (!(r2 & gRfuLinkStatus->connSlotFlag)) + { + gRfuLinkStatus->connSlotFlag |= r2; + gRfuLinkStatus->linkLossSlotFlag &= ~r2; + gRfuLinkStatus->my.id = id; + ++gRfuLinkStatus->connCount; + gRfuLinkStatus->parentChild = MODE_CHILD; + gRfuStatic->flags |= 0x80; + for (r5 = 0; r5 < RFU_CHILD_MAX; ++r5) + { + if (gRfuLinkStatus->partner[r5].id == gRfuStatic->tryPid) + { + if (gRfuLinkStatus->findParentCount != 0) + { + r9 = &sp; + CpuCopy16(&gRfuLinkStatus->partner[r5], &sp, sizeof(struct RfuTgtData)); + CpuFill16(0, gRfuLinkStatus->partner, sizeof(gRfuLinkStatus->partner)); + gRfuLinkStatus->findParentCount = 0; + } + else + { + r9 = &gRfuLinkStatus->partner[r5]; + } + break; + } + } + if (r5 < RFU_CHILD_MAX) + { + CpuCopy16(r9, &gRfuLinkStatus->partner[slot], sizeof(struct RfuTgtData)); + gRfuLinkStatus->partner[slot].slot = slot; + } + } + } + } + rfu_STC_REQ_callback(sp24, sp28); +} + +u16 rfu_getConnectParentStatus(u8 *status, u8 *connectSlotNo) +{ + u8 r0, *r2; + + *status = 0xFF; + r2 = gRfuFixed->STWIBuffer->rxPacketAlloc.rfuPacket8.data; + r0 = r2[0] + 96; + if (r0 <= 1) + { + r2 += 6; + *connectSlotNo = r2[0]; + *status = r2[1]; + return 0; + } + return ERR_REQ_CMD_ID; +} + +void rfu_REQ_endConnectParent(void) +{ + STWI_set_Callback_M(rfu_CB_pollConnectParent); + STWI_send_CP_EndREQ(); + if (gRfuFixed->STWIBuffer->rxPacketAlloc.rfuPacket8.data[6] < 4) + gRfuStatic->linkEmergencyFlag[gRfuFixed->STWIBuffer->rxPacketAlloc.rfuPacket8.data[6]] = 0; +} + +u16 rfu_syncVBlank(void) +{ + u8 r3, r4; + s32 r5; + + rfu_NI_checkCommFailCounter(); + if (gRfuLinkStatus->parentChild == MODE_NEUTRAL) + return 0; + if (gRfuStatic->nowWatchInterval != 0) + --gRfuStatic->nowWatchInterval; + r3 = rfu_getMasterSlave(); + if (!(gRfuStatic->flags & 2)) + { + if (r3 == 0) + { + gRfuStatic->flags |= 4; + gRfuStatic->watchdogTimer = 360; + } + } + else if (r3 != 0) + { + gRfuStatic->flags &= 0xFB; + } + if (r3 != 0) + gRfuStatic->flags &= 0xFD; + else + gRfuStatic->flags |= 2; + if (!(gRfuStatic->flags & 4)) + return 0; + if (gRfuStatic->watchdogTimer == 0) + { + gRfuStatic->flags &= 0xFB; + r5 = gRfuLinkStatus->connSlotFlag | gRfuLinkStatus->linkLossSlotFlag; + for (r4 = 0; r4 < RFU_CHILD_MAX; ++r4) + if ((r5 >> r4) & 1) + rfu_STC_removeLinkData(r4, 1); + gRfuLinkStatus->parentChild = MODE_NEUTRAL; + return 1; + } + --gRfuStatic->watchdogTimer; + return 0; +} + +u16 rfu_REQBN_watchLink(u16 reqCommandId, u8 *bmLinkLossSlot, u8 *linkLossReason, u8 *parentBmLinkRecoverySlot) +{ + u8 sp08 = 0; + u8 sp0C = 0; + u8 i; + s32 sp10, sp14; + u8 *r2; + u8 r9, r6, r3, connSlotFlag, r0; + + *bmLinkLossSlot = 0; + *linkLossReason = REASON_DISCONNECTED; + *parentBmLinkRecoverySlot = 0; + if (gRfuLinkStatus->parentChild == MODE_NEUTRAL || gSTWIStatus->msMode == 0) + return 0; + if (gRfuStatic->flags & 4) + gRfuStatic->watchdogTimer = 360; + if (gRfuStatic->nowWatchInterval == 0) + { + gRfuStatic->nowWatchInterval = 4; + sp08 = 1; + } + if ((u8)reqCommandId == 41) + { + u8 *r1 = gRfuFixed->STWIBuffer->rxPacketAlloc.rfuPacket8.data; + + *bmLinkLossSlot = r1[4]; + *linkLossReason = r1[5]; + if (*linkLossReason == REASON_LINK_LOSS) + *bmLinkLossSlot = gRfuLinkStatus->connSlotFlag; + sp08 = 2; + } + else + { + if (reqCommandId == 310) + { + r6 = gRfuFixed->STWIBuffer->rxPacketAlloc.rfuPacket8.data[5]; + r6 ^= gRfuLinkStatus->connSlotFlag; + *bmLinkLossSlot = r6 & gRfuLinkStatus->connSlotFlag; + *linkLossReason = REASON_LINK_LOSS; + for (i = 0; i < RFU_CHILD_MAX; ++i) + { + if ((*bmLinkLossSlot >> i) & 1) + { + gRfuLinkStatus->strength[i] = 0; + rfu_STC_removeLinkData(i, 0); + } + } + } + if (sp08 == 0) + return 0; + } + sp10 = gRfuFixed->STWIBuffer->rxPacketAlloc.rfuPacket32.command; + sp14 = gRfuFixed->STWIBuffer->rxPacketAlloc.rfuPacket32.data[0]; + STWI_set_Callback_M(rfu_CB_defaultCallback); + STWI_send_LinkStatusREQ(); + sp0C = STWI_poll_CommandEnd(); + if (sp0C == 0) + { + r2 = &gRfuFixed->STWIBuffer->rxPacketAlloc.rfuPacket8.data[4]; + for (i = 0; i < RFU_CHILD_MAX; ++i) + gRfuLinkStatus->strength[i] = *r2++; + r9 = 0; + i = 0; + } + else + { + rfu_STC_REQ_callback(17, sp0C); + return sp0C; + } + for (; i < RFU_CHILD_MAX; ++i) + { + if (gRfuStatic->lsFixedCount[i] != 0) + { + gRfuStatic->lsFixedCount[i] -= 4; + if (gRfuLinkStatus->strength[i] <= 15) + gRfuLinkStatus->strength[i] = 16; + } + r6 = 1 << i; + if (sp0C == 0) + { + if (sp08 == 1 && (gRfuLinkStatus->connSlotFlag & r6)) + { + if (gRfuLinkStatus->strength[i] == 0) + { + if (gRfuLinkStatus->parentChild == MODE_PARENT) + { + ++gRfuStatic->linkEmergencyFlag[i]; + if (gRfuStatic->linkEmergencyFlag[i] > 3) + { + *bmLinkLossSlot |= r6; + *linkLossReason = sp08; // why not directly use REASON_LINK_LOSS? + } + } + else + { + STWI_send_SystemStatusREQ(); + if (STWI_poll_CommandEnd() == 0) + { + if (gRfuFixed->STWIBuffer->rxPacketAlloc.rfuPacket8.data[7] == 0) + { + *bmLinkLossSlot |= r6; + *linkLossReason = sp08; // why not directly use REASON_LINK_LOSS? + } + else + { + if (++gRfuStatic->linkEmergencyFlag[i] > gRfuStatic->unk_1a) + { + gRfuStatic->linkEmergencyFlag[i] = 0; + STWI_send_DisconnectREQ(gRfuLinkStatus->connSlotFlag); + STWI_poll_CommandEnd(); + *bmLinkLossSlot |= r6; + *linkLossReason = sp08; // why not directly use REASON_LINK_LOSS? + } + } + } + } + } + else + { + gRfuStatic->linkEmergencyFlag[i] = sp0C; // why not directly use 0? + } + } + if (gRfuLinkStatus->parentChild == MODE_PARENT && gRfuLinkStatus->strength[i] != 0) + { + if (r6 & gRfuLinkStatus->linkLossSlotFlag) + { + if (gRfuLinkStatus->strength[i] > 10) + { + *parentBmLinkRecoverySlot |= r6; + gRfuLinkStatus->connSlotFlag |= r6; + gRfuLinkStatus->linkLossSlotFlag &= ~r6; + ++gRfuLinkStatus->connCount; + gRfuStatic->linkEmergencyFlag[i] = 0; + } + else + { + gRfuLinkStatus->strength[i] = 0; + } + } + else + { + if (!((gRfuLinkStatus->connSlotFlag | gRfuLinkStatus->linkLossSlotFlag) & r6)) + { + STWI_send_SlotStatusREQ(); + STWI_poll_CommandEnd(); + r2 = gRfuFixed->STWIBuffer->rxPacketAlloc.rfuPacket8.data; + r3 = r2[1] - 1; + for (r2 += 8; r3 != 0; r2 += 4, --r3) + { + u16 r4 = *(u16 *)r2; + + if (r2[2] == i && r4 == gRfuStatic->cidBak[i]) + { + r9 |= 1 << i; + break; + } + } + } + } + } + } + connSlotFlag = gRfuLinkStatus->connSlotFlag; + r0 = *bmLinkLossSlot; + r0 &= connSlotFlag; + if (r6 & r0) + rfu_STC_removeLinkData(i, 0); + } + if (r9 != 0) + { + STWI_send_DisconnectREQ(r9); + STWI_poll_CommandEnd(); + } + // equivalent to: + // gRfuFixed->STWIBuffer->rxPacketAlloc.rfuPacket32.command = sp10; + *(u32 *)gRfuFixed->STWIBuffer->rxPacketAlloc.rfuPacket8.data = sp10; + gRfuFixed->STWIBuffer->rxPacketAlloc.rfuPacket32.data[0] = sp14; + return 0; +} + +static void rfu_STC_removeLinkData(u8 r7, u8 r12) +{ + u8 r5 = 1 << r7; + s32 r6; + + gRfuStatic->lsFixedCount[r7] = 0; + if ((gRfuLinkStatus->connSlotFlag & r5) && gRfuLinkStatus->connCount != 0) + --gRfuLinkStatus->connCount; + gRfuLinkStatus->connSlotFlag &= r6 = ~r5; + gRfuLinkStatus->linkLossSlotFlag |= r5; + if ((*(u32 *)gRfuLinkStatus & 0xFF00FF) == 0) + gRfuLinkStatus->parentChild = MODE_NEUTRAL; + if (r12 != 0) + { + CpuFill16(0, &gRfuLinkStatus->partner[r7], sizeof(struct RfuTgtData)); + gRfuLinkStatus->linkLossSlotFlag &= r6; + gRfuLinkStatus->getNameFlag &= r6; + gRfuLinkStatus->strength[r7] = 0; + } +} + +void rfu_REQ_disconnect(u8 bmDisconnectSlot) +{ + u16 r1; + + if ((gRfuLinkStatus->connSlotFlag | gRfuLinkStatus->linkLossSlotFlag) & bmDisconnectSlot) + { + gRfuStatic->recoveryBmSlot = bmDisconnectSlot; + if (gRfuLinkStatus->parentChild == MODE_NEUTRAL && gRfuStatic->flags & 0x80) + { + if (gRfuLinkStatus->linkLossSlotFlag & bmDisconnectSlot) + rfu_CB_disconnect(48, 0); + } + else if (gRfuStatic->SCStartFlag + && (STWI_set_Callback_M(rfu_CB_defaultCallback), + STWI_send_SC_EndREQ(), + (r1 = STWI_poll_CommandEnd()) != 0)) + { + rfu_STC_REQ_callback(27, r1); + } + else + { + STWI_set_Callback_M(rfu_CB_disconnect); + STWI_send_DisconnectREQ(bmDisconnectSlot); + } + } +} + +static void rfu_CB_disconnect(u8 r6, u16 r5) +{ + u8 r4, r0; + + if (r5 == 3 && gRfuLinkStatus->parentChild == MODE_CHILD) + { + STWI_set_Callback_M(rfu_CB_defaultCallback); + STWI_send_SystemStatusREQ(); + if (STWI_poll_CommandEnd() == 0 && gRfuFixed->STWIBuffer->rxPacketAlloc.rfuPacket8.data[7] == 0) + r5 = 0; + } + gRfuStatic->recoveryBmSlot &= gRfuLinkStatus->connSlotFlag | gRfuLinkStatus->linkLossSlotFlag; + gRfuFixed->STWIBuffer->rxPacketAlloc.rfuPacket8.data[8] = gRfuStatic->recoveryBmSlot; + if (r5 == 0) + { + for (r4 = 0; r4 < RFU_CHILD_MAX; ++r4) + { + r0 = 1 << r4; + if (r0 & gRfuStatic->recoveryBmSlot) + rfu_STC_removeLinkData(r4, 1); + } + } + if ((gRfuLinkStatus->connSlotFlag | gRfuLinkStatus->linkLossSlotFlag) == 0) + gRfuLinkStatus->parentChild = MODE_NEUTRAL; + rfu_STC_REQ_callback(r6, r5); + if (gRfuStatic->SCStartFlag) + { + STWI_set_Callback_M(rfu_CB_defaultCallback); + STWI_send_SC_StartREQ(); + r5 = STWI_poll_CommandEnd(); + if (r5 != 0) + rfu_STC_REQ_callback(25, r5); + } +} + +void rfu_REQ_CHILD_startConnectRecovery(u8 bmRecoverySlot) +{ + u8 i; + + gRfuStatic->recoveryBmSlot = bmRecoverySlot; + for (i = 0; i < RFU_CHILD_MAX && !((bmRecoverySlot >> i) & 1); ++i) + ; + STWI_set_Callback_M(rfu_STC_REQ_callback); + // if i == 4, gRfuLinkStatus->partner[i].id becomes gRfuLinkStatus->my.id + STWI_send_CPR_StartREQ(gRfuLinkStatus->partner[i].id, gRfuLinkStatus->my.id, bmRecoverySlot); +} + +void rfu_REQ_CHILD_pollConnectRecovery(void) +{ + STWI_set_Callback_M(rfu_CB_CHILD_pollConnectRecovery); + STWI_send_CPR_PollingREQ(); +} + +static void rfu_CB_CHILD_pollConnectRecovery(u8 r8, u16 r7) +{ + u8 r3, r4; + struct RfuLinkStatus *r2; + + if (r7 == 0 && gRfuFixed->STWIBuffer->rxPacketAlloc.rfuPacket8.data[4] == 0 && gRfuStatic->recoveryBmSlot) + { + gRfuLinkStatus->parentChild = MODE_CHILD; + for (r4 = 0; r4 < NELEMS(gRfuStatic->linkEmergencyFlag); ++r4) + { + r3 = 1 << r4; + r2 = gRfuLinkStatus; // ??? + if (gRfuStatic->recoveryBmSlot & r3 & r2->linkLossSlotFlag) + { + gRfuLinkStatus->connSlotFlag |= r3; + gRfuLinkStatus->linkLossSlotFlag &= ~r3; + ++gRfuLinkStatus->connCount; + gRfuStatic->linkEmergencyFlag[r4] = 0; + } + } + gRfuStatic->recoveryBmSlot = 0; + } + rfu_STC_REQ_callback(r8, r7); +} + +u16 rfu_CHILD_getConnectRecoveryStatus(u8 *status) +{ + u8 r0; + + *status = 0xFF; + r0 = gRfuFixed->STWIBuffer->rxPacketAlloc.rfuPacket8.data[0] + 77; + if (r0 <= 1) + { + *status = gRfuFixed->STWIBuffer->rxPacketAlloc.rfuPacket8.data[4]; + return 0; + } + return ERR_REQ_CMD_ID; +} + +void rfu_REQ_CHILD_endConnectRecovery(void) +{ + STWI_set_Callback_M(rfu_CB_CHILD_pollConnectRecovery); + STWI_send_CPR_EndREQ(); +} + +static void rfu_STC_fastCopy(const u8 **src_p, u8 **dst_p, s32 size) +{ + const u8 *src = *src_p; + u8 *dst = *dst_p; + s32 i; + + for (i = size - 1; i != -1; --i) + *dst++ = *src++; + *src_p = src; + *dst_p = dst; +} + +void rfu_REQ_changeMasterSlave(void) +{ + if (STWI_read_status(1) == 1) + { + STWI_set_Callback_M(rfu_STC_REQ_callback); + STWI_send_MS_ChangeREQ(); + } + else + { + rfu_STC_REQ_callback(39, 0); + } +} + +bool8 rfu_getMasterSlave(void) +{ + bool8 masterSlave = STWI_read_status(1); + + if (masterSlave == AGB_CLK_MASTER) + { + if (gSTWIStatus->unk_2c) + { + if (gSTWIStatus->reqActiveCommand == 39 + || gSTWIStatus->reqActiveCommand == 37 + || gSTWIStatus->reqActiveCommand == 55) + masterSlave = AGB_CLK_SLAVE; + } + } + return masterSlave; +} + +void rfu_clearAllSlot(void) +{ + u16 i; + u16 IMEBackup = REG_IME; + + REG_IME = 0; + for (i = 0; i < RFU_CHILD_MAX; ++i) + { + CpuFill16(0, gRfuSlotStatusNI[i], 2 * sizeof(struct NIComm)); + CpuFill16(0, gRfuSlotStatusUNI[i], sizeof(struct UNISend) + sizeof(struct UNIRecv)); + gRfuLinkStatus->remainLLFrameSizeChild[i] = 16; + } + gRfuLinkStatus->remainLLFrameSizeParent = LLF_P_SIZE; + gRfuLinkStatus->sendSlotNIFlag = 0; + gRfuLinkStatus->recvSlotNIFlag = 0; + gRfuLinkStatus->sendSlotUNIFlag = 0; + gRfuStatic->recvRenewalFlag = 0; + REG_IME = IMEBackup; +} + +static void rfu_STC_releaseFrame(u8 r5, u8 r3, struct NIComm *r4) +{ + + if (!(gRfuStatic->flags & 0x80)) + { + if (r3 == 0) + gRfuLinkStatus->remainLLFrameSizeParent += r4->payloadSize; + gRfuLinkStatus->remainLLFrameSizeParent += 3; + } + else + { + if (r3 == 0) + gRfuLinkStatus->remainLLFrameSizeChild[r5] += r4->payloadSize; + gRfuLinkStatus->remainLLFrameSizeChild[r5] += 2; + } +} + +u16 rfu_clearSlot(u8 connTypeFlag, u8 slotStatusIndex) +{ + u16 r10, r3, r1; + struct NIComm *r4; + + if (slotStatusIndex >= RFU_CHILD_MAX) + return ERR_SLOT_NO; + if (!(connTypeFlag & (TYPE_UNI_SEND | TYPE_UNI_RECV | TYPE_NI_SEND | TYPE_NI_RECV))) + return ERR_COMM_TYPE; + r10 = REG_IME; + REG_IME = 0; + if (connTypeFlag & (TYPE_NI_SEND | TYPE_NI_RECV)) + { + for (r3 = 0; r3 < 2; ++r3) + { + r4 = NULL; + if (r3 == 0) + { + if (connTypeFlag & TYPE_NI_SEND) + { + r4 = &gRfuSlotStatusNI[slotStatusIndex]->send; + gRfuLinkStatus->sendSlotNIFlag &= ~r4->bmSlotOrg; + } + } + else + { + if (connTypeFlag & TYPE_NI_RECV) + { + r4 = &gRfuSlotStatusNI[slotStatusIndex]->recv; + gRfuLinkStatus->recvSlotNIFlag &= ~(1 << slotStatusIndex); + } + } + if (r4 != NULL) + { + if (r4->state & SLOT_BUSY_FLAG) + { + rfu_STC_releaseFrame(slotStatusIndex, r3, r4); + for (r1 = 0; r1 < RFU_CHILD_MAX; ++r1) + if ((r4->bmSlotOrg >> r1) & 1) + r4->failCounter = 0; + } + CpuFill16(0, r4, sizeof(struct NIComm)); + } + } + } + if (connTypeFlag & TYPE_UNI_SEND) + { + struct RfuSlotStatusUNI *r3 = gRfuSlotStatusUNI[slotStatusIndex]; + + if (r3->send.state & SLOT_BUSY_FLAG) + { + if (!(gRfuStatic->flags & 0x80)) + gRfuLinkStatus->remainLLFrameSizeParent += 3 + (u8)r3->send.payloadSize; + else + gRfuLinkStatus->remainLLFrameSizeChild[slotStatusIndex] += 2 + (u8)r3->send.payloadSize; + gRfuLinkStatus->sendSlotUNIFlag &= ~r3->send.bmSlot; + } + CpuFill16(0, &r3->send, sizeof(struct UNISend)); + } + if (connTypeFlag & TYPE_UNI_RECV) + { + CpuFill16(0, &gRfuSlotStatusUNI[slotStatusIndex]->recv, sizeof(struct UNIRecv)); + } + REG_IME = r10; + return 0; +} + +u16 rfu_setRecvBuffer(u8 connType, u8 slotNo, void *buffer, u32 buffSize) +{ + if (slotNo >= RFU_CHILD_MAX) + return ERR_SLOT_NO; + if (connType & TYPE_NI) + { + gRfuSlotStatusNI[slotNo]->recvBuffer = buffer; + gRfuSlotStatusNI[slotNo]->recvBufferSize = buffSize; + } + else if (!(connType & TYPE_UNI)) + { + return ERR_COMM_TYPE; + } + else + { + gRfuSlotStatusUNI[slotNo]->recvBuffer = buffer; + gRfuSlotStatusUNI[slotNo]->recvBufferSize = buffSize; + } + return 0; +} + +u16 rfu_NI_setSendData(u8 bmSendSlot, u8 subFrameSize, const void *src, u32 size) +{ + return rfu_STC_setSendData_org(32, bmSendSlot, subFrameSize, src, size); +} + +u16 rfu_UNI_setSendData(u8 bmSendSlot, const void *src, u8 size) +{ + u8 subFrameSize; + + if (gRfuLinkStatus->parentChild == MODE_PARENT) + subFrameSize = size + 3; + else + subFrameSize = size + 2; + return rfu_STC_setSendData_org(16, bmSendSlot, subFrameSize, src, 0); +} + +u16 rfu_NI_CHILD_setSendGameName(u8 slotNo, u8 subFrameSize) +{ + return rfu_STC_setSendData_org(64, 1 << slotNo, subFrameSize, &gRfuLinkStatus->my.serialNo, 26); +} + +static u16 rfu_STC_setSendData_org(u8 r6, u8 bmSendSlot, u8 subFrameSize, const void *src, u32 sp28) +{ + u8 r2, r0; + u8 r4; + u8 *r9; + u8 r5; + u8 i; + u16 sp04; + struct RfuSlotStatusUNI *r1; + struct RfuSlotStatusNI *r12; + + if (gRfuLinkStatus->parentChild == MODE_NEUTRAL) + return ERR_MODE_NOT_CONNECTED; + if (!(bmSendSlot & 0xF)) + return ERR_SLOT_NO; + if (((gRfuLinkStatus->connSlotFlag | gRfuLinkStatus->linkLossSlotFlag) & bmSendSlot) != bmSendSlot) + return ERR_SLOT_NOT_CONNECTED; + if (r6 & 0x10) + r0 = gRfuLinkStatus->sendSlotUNIFlag; + else + r0 = gRfuLinkStatus->sendSlotNIFlag; + if (r0 & bmSendSlot) + return ERR_SLOT_BUSY; + for (r2 = 0; r2 < RFU_CHILD_MAX && !((bmSendSlot >> r2) & 1); ++r2) + ; + if (gRfuLinkStatus->parentChild == MODE_PARENT) + r9 = &gRfuLinkStatus->remainLLFrameSizeParent; + else if (gRfuLinkStatus->parentChild == MODE_CHILD) + r9 = &gRfuLinkStatus->remainLLFrameSizeChild[r2]; + r4 = llsf_struct[gRfuLinkStatus->parentChild].unk00; + if (subFrameSize > *r9 || subFrameSize <= r4) + return ERR_SUBFRAME_SIZE; + sp04 = REG_IME; + REG_IME = 0; + r5 = r6 & 0x20; + if (r5 || r6 == 0x40) + { + u8 *r1; // a hack to swap instructions + + r12 = gRfuSlotStatusNI[r2]; + r1 = NULL; + r12->send.errorCode = 0; + *r12->send.now_p = r1 = &r12->send.dataType; + r12->send.remainSize = 7; + r12->send.bmSlotOrg = bmSendSlot; + r12->send.bmSlot = bmSendSlot; + r12->send.payloadSize = subFrameSize - r4; + if (r5 != 0) + *r1 = 0; + else + *r1 = 1; + r12->send.dataSize = sp28; + r12->send.src = src; + r12->send.ack = 0; + r12->send.phase = 0; + #ifndef NONMATCHING // to fix r2, r3, r4, r5 register roulette + asm("":::"r2"); + #endif + for (i = 0; i < WINDOW_COUNT; ++i) + { + r12->send.recvAckFlag[i] = 0; + r12->send.n[i] = 1; + } + for (r2 = 0; r2 < RFU_CHILD_MAX; ++r2) + if ((bmSendSlot >> r2) & 1) + gRfuSlotStatusNI[r2]->send.failCounter = 0; + gRfuLinkStatus->sendSlotNIFlag |= bmSendSlot; + *r9 -= subFrameSize; + r12->send.state = SLOT_STATE_SEND_START; + } + else if (r6 & 0x10) + { + r1 = gRfuSlotStatusUNI[r2]; + r1->send.bmSlot = bmSendSlot; + r1->send.src = src; + r1->send.payloadSize = subFrameSize - r4; + *r9 -= subFrameSize; + r1->send.state = SLOT_STATE_SEND_UNI; + gRfuLinkStatus->sendSlotUNIFlag |= bmSendSlot; + } + REG_IME = sp04; + return 0; +} + +u16 rfu_changeSendTarget(u8 connType, u8 slotStatusIndex, u8 bmNewTgtSlot) +{ + struct RfuSlotStatusNI *r5; + u16 r8; + u8 r2; + + if (slotStatusIndex >= RFU_CHILD_MAX) + return ERR_SLOT_NO; + if (connType == 0x20) + { + r5 = gRfuSlotStatusNI[slotStatusIndex]; + if ((r5->send.state & SLOT_BUSY_FLAG) + && (r5->send.state & SLOT_SEND_FLAG)) + { + connType = bmNewTgtSlot ^ r5->send.bmSlot; + + if (!(connType & bmNewTgtSlot)) + { + if (connType) + { + r8 = REG_IME; + REG_IME = 0; + for (r2 = 0; r2 < RFU_CHILD_MAX; ++r2) + { + if ((connType >> r2) & 1) + gRfuSlotStatusNI[r2]->send.failCounter = 0; + } + gRfuLinkStatus->sendSlotNIFlag &= ~connType; + r5->send.bmSlot = bmNewTgtSlot; + if (r5->send.bmSlot == 0) + { + rfu_STC_releaseFrame(slotStatusIndex, 0, &r5->send); + r5->send.state = SLOT_STATE_SEND_FAILED; + } + REG_IME = r8; + } + } + else + { + return ERR_SLOT_TARGET; + } + } + else + { + return ERR_SLOT_NOT_SENDING; + } + } + else + { + if (connType == 16) + { + s32 r3; + + if (gRfuSlotStatusUNI[slotStatusIndex]->send.state != SLOT_STATE_SEND_UNI) + return ERR_SLOT_NOT_SENDING; + for (r3 = 0, r2 = 0; r2 < RFU_CHILD_MAX; ++r2) + if (r2 != slotStatusIndex) + r3 |= gRfuSlotStatusUNI[r2]->send.bmSlot; + if (bmNewTgtSlot & r3) + return ERR_SLOT_TARGET; + r8 = REG_IME; + REG_IME = 0; + gRfuLinkStatus->sendSlotUNIFlag &= ~gRfuSlotStatusUNI[slotStatusIndex]->send.bmSlot; + gRfuLinkStatus->sendSlotUNIFlag |= bmNewTgtSlot; + gRfuSlotStatusUNI[slotStatusIndex]->send.bmSlot = bmNewTgtSlot; + REG_IME = r8; + } + else + { + return ERR_COMM_TYPE; + } + } + return 0; +} + +u16 rfu_NI_stopReceivingData(u8 slotStatusIndex) +{ + struct NIComm *r5; + u16 r4, r1; + + if (slotStatusIndex >= RFU_CHILD_MAX) + return ERR_SLOT_NO; + r5 = &gRfuSlotStatusNI[slotStatusIndex]->recv; + r4 = REG_IME; + ++r4; --r4; // fix r4, r5 register swap + REG_IME = 0; + if (gRfuSlotStatusNI[slotStatusIndex]->recv.state & SLOT_BUSY_FLAG) + { + if (gRfuSlotStatusNI[slotStatusIndex]->recv.state == SLOT_STATE_RECV_LAST) + gRfuSlotStatusNI[slotStatusIndex]->recv.state = SLOT_STATE_RECV_SUCCESS_AND_SENDSIDE_UNKNOWN; + else + gRfuSlotStatusNI[slotStatusIndex]->recv.state = SLOT_STATE_RECV_FAILED; + gRfuLinkStatus->recvSlotNIFlag &= ~(1 << slotStatusIndex); + rfu_STC_releaseFrame(slotStatusIndex, 1, r5); + } + REG_IME = r4; + return 0; +} + +u16 rfu_UNI_changeAndReadySendData(u8 slotStatusIndex, const void *src, u8 size) +{ + struct UNISend *r4; + u8 *r6; + u16 r1; + u8 r3_; + + if (slotStatusIndex >= RFU_CHILD_MAX) + return ERR_SLOT_NO; + r4 = &gRfuSlotStatusUNI[slotStatusIndex]->send; + if (r4->state != SLOT_STATE_SEND_UNI) + return ERR_SLOT_NOT_SENDING; + if (gRfuLinkStatus->parentChild == MODE_PARENT) + { + r6 = &gRfuLinkStatus->remainLLFrameSizeParent; + r3_ = gRfuLinkStatus->remainLLFrameSizeParent + (u8)r4->payloadSize; + } + else + { + r6 = &gRfuLinkStatus->remainLLFrameSizeChild[slotStatusIndex]; + r3_ = gRfuLinkStatus->remainLLFrameSizeChild[slotStatusIndex] + (u8)r4->payloadSize; + } + if (r3_ < size) + return ERR_SUBFRAME_SIZE; + r1 = REG_IME; + REG_IME = 0; + r4->src = src; + *r6 = r3_ - size; + r4->payloadSize = size; + r4->dataReadyFlag = 1; + REG_IME = r1; + return 0; +} + +void rfu_UNI_readySendData(u8 slotStatusIndex) +{ + if (slotStatusIndex < RFU_CHILD_MAX) + { + if (gRfuSlotStatusUNI[slotStatusIndex]->send.state == SLOT_STATE_SEND_UNI) + gRfuSlotStatusUNI[slotStatusIndex]->send.dataReadyFlag = 1; + } +} + +void rfu_UNI_clearRecvNewDataFlag(u8 slotStatusIndex) +{ + if (slotStatusIndex < RFU_CHILD_MAX) + gRfuSlotStatusUNI[slotStatusIndex]->recv.newDataFlag = 0; +} + +void rfu_REQ_sendData(bool8 clockChangeFlag) +{ + if (gRfuLinkStatus->parentChild != MODE_NEUTRAL) + { + if (gRfuLinkStatus->parentChild == MODE_PARENT + && !(gRfuLinkStatus->sendSlotNIFlag | gRfuLinkStatus->recvSlotNIFlag | gRfuLinkStatus->sendSlotUNIFlag)) + { + if (gRfuStatic->commExistFlag) + { + gRfuStatic->emberCount = 16; + gRfuStatic->nullFrameCount = 0; + } + if (gRfuStatic->emberCount) + --gRfuStatic->emberCount; + else + ++gRfuStatic->nullFrameCount; + if (gRfuStatic->emberCount + || !(gRfuStatic->nullFrameCount & 0xF)) + { + gRfuFixed->LLFBuffer[0] = 1; + gRfuFixed->LLFBuffer[4] = 0xFF; + STWI_set_Callback_M(rfu_CB_sendData3); + if (!clockChangeFlag) + STWI_send_DataTxREQ(gRfuFixed->LLFBuffer, 1); + else + STWI_send_DataTxAndChangeREQ(gRfuFixed->LLFBuffer, 1); + return; + } + } + else + { + if (!gRfuLinkStatus->LLFReadyFlag) + rfu_constructSendLLFrame(); + if (gRfuLinkStatus->LLFReadyFlag) + { + STWI_set_Callback_M(rfu_CB_sendData); + if (clockChangeFlag) + { + STWI_send_DataTxAndChangeREQ(gRfuFixed->LLFBuffer, gRfuStatic->totalPacketSize + 4); + return; + } + STWI_send_DataTxREQ(gRfuFixed->LLFBuffer, gRfuStatic->totalPacketSize + 4); + } + } + if (clockChangeFlag) + { + if (gRfuLinkStatus->parentChild == MODE_PARENT) + { + if (gSTWIStatus->callbackS != NULL) + gSTWIStatus->callbackS(39); + } + else + { + STWI_set_Callback_M(rfu_CB_sendData2); + STWI_send_MS_ChangeREQ(); + } + } + } +} + +static void rfu_CB_sendData(__attribute__((unused)) u8 r0, u16 r7) +{ + u8 r6; + struct NIComm *r4; + + if (r7 == 0) + { + for (r6 = 0; r6 < RFU_CHILD_MAX; ++r6) + { + if (gRfuSlotStatusUNI[r6]->send.dataReadyFlag) + gRfuSlotStatusUNI[r6]->send.dataReadyFlag = 0; + r4 = &gRfuSlotStatusNI[r6]->send; + if (r4->state == SLOT_STATE_SEND_NULL) + { + rfu_STC_releaseFrame(r6, 0, r4); + gRfuLinkStatus->sendSlotNIFlag &= ~r4->bmSlot; + if (r4->dataType == 1) + gRfuLinkStatus->getNameFlag |= 1 << r6; + r4->state = SLOT_STATE_SEND_SUCCESS; + } + } + } + gRfuLinkStatus->LLFReadyFlag = 0; + rfu_STC_REQ_callback(36, r7); +} + +static void rfu_CB_sendData2(__attribute__((unused)) u8 r0, u16 r1) +{ + rfu_STC_REQ_callback(36, r1); +} + +static void rfu_CB_sendData3(u8 r0, u16 r1) +{ + if (r1 != 0) + rfu_STC_REQ_callback(36, r1); + else if (r0 == 0xFF) + rfu_STC_REQ_callback(0xFF, 0); +} + +static void rfu_constructSendLLFrame(void) +{ + u32 r8, r5; + u8 r6; + u8 *sp00; + struct RfuSlotStatusNI *r2; + + if (gRfuLinkStatus->parentChild != MODE_NEUTRAL + && gRfuLinkStatus->sendSlotNIFlag | gRfuLinkStatus->recvSlotNIFlag | gRfuLinkStatus->sendSlotUNIFlag) + { + gRfuLinkStatus->LLFReadyFlag = 0; + r8 = 0; + sp00 = (u8 *)&gRfuFixed->LLFBuffer[1]; + for (r6 = 0; r6 < RFU_CHILD_MAX; ++r6) + { + r5 = 0; + if (gRfuSlotStatusNI[r6]->send.state & SLOT_BUSY_FLAG) + r5 = rfu_STC_NI_constructLLSF(r6, &sp00, &gRfuSlotStatusNI[r6]->send); + if (gRfuSlotStatusNI[r6]->recv.state & SLOT_BUSY_FLAG) + r5 += rfu_STC_NI_constructLLSF(r6, &sp00, &gRfuSlotStatusNI[r6]->recv); + if (gRfuSlotStatusUNI[r6]->send.state == SLOT_STATE_SEND_UNI) + r5 += rfu_STC_UNI_constructLLSF(r6, &sp00); + if (r5 != 0) + { + if (gRfuLinkStatus->parentChild == MODE_PARENT) + r8 += r5; + else + r8 |= r5 << (5 * r6 + 8); + } + } + if (r8 != 0) + { + while ((u32)sp00 & 3) + *sp00++ = 0; + gRfuFixed->LLFBuffer[0] = r8; + if (gRfuLinkStatus->parentChild == MODE_CHILD) + { + u8 *r0 = sp00 - offsetof(struct RfuFixed, LLFBuffer[1]); + + // Does the volatile qualifier make sense? + // It's the same as: + // asm("":::"memory"); + r8 = r0 - *(u8 *volatile *)&gRfuFixed; + } + } + gRfuStatic->totalPacketSize = r8; + } +} + +static u16 rfu_STC_NI_constructLLSF(u8 r10, u8 **r12, struct NIComm *r4) +{ + u16 r5; + u32 sp00; + u8 i; + u8 *r2; + const struct LLSFStruct *r8 = &llsf_struct[gRfuLinkStatus->parentChild]; + + if (r4->state == SLOT_STATE_SENDING) + { + while (r4->now_p[r4->phase] >= (const u8 *)r4->src + r4->dataSize) + { + ++r4->phase; + if (r4->phase == 4) + r4->phase = 0; + } + } + if (r4->state & SLOT_RECV_FLAG) + { + r5 = 0; + } + else if (r4->state == SLOT_STATE_SENDING) + { + if (r4->now_p[r4->phase] + r4->payloadSize > (const u8 *)r4->src + r4->dataSize) + r5 = (const u8 *)r4->src + r4->dataSize - r4->now_p[r4->phase]; + else + r5 = r4->payloadSize; + } + else + { + if ((u32)r4->remainSize >= r4->payloadSize) + r5 = r4->payloadSize; + else + r5 = r4->remainSize; + } + sp00 = (r4->state & 0xF) << r8->unk03 + | r4->ack << r8->unk04 + | r4->phase << r8->unk05 + | r4->n[r4->phase] << r8->unk06 + | r5; + if (gRfuLinkStatus->parentChild == MODE_PARENT) + sp00 |= r4->bmSlot << 18; + r2 = (u8 *)&sp00; + for (i = 0; i < r8->unk00; ++i) + *(*r12)++ = *r2++; + if (r5 != 0) + { + const u8 *sp04 = r4->now_p[r4->phase]; + + gRfuFixed->fastCopyPtr(&sp04, r12, r5); + } + if (r4->state == SLOT_STATE_SENDING) + { + ++r4->phase; + if (r4->phase == 4) + r4->phase = 0; + } + if (gRfuLinkStatus->parentChild == MODE_PARENT) + gRfuLinkStatus->LLFReadyFlag = 1; + else + gRfuLinkStatus->LLFReadyFlag |= 1 << r10; + return r5 + r8->unk00; +} + +static u16 rfu_STC_UNI_constructLLSF(u8 r8, u8 **r6) +{ + const struct LLSFStruct *r5; + const u8 *sp04; + u32 sp00; + u8 *r2; + u8 i; + struct UNISend *r4 = &gRfuSlotStatusUNI[r8]->send; + + if (!r4->dataReadyFlag || !r4->bmSlot) + return 0; + r5 = &llsf_struct[gRfuLinkStatus->parentChild]; + sp00 = (r4->state & 0xF) << r5->unk03 + | r4->payloadSize; + if (gRfuLinkStatus->parentChild == MODE_PARENT) + sp00 |= r4->bmSlot << 18; + r2 = (u8 *)&sp00; + for (i = 0; i < r5->unk00; ++i) + *(*r6)++ = *r2++; + sp04 = r4->src; + gRfuFixed->fastCopyPtr(&sp04, r6, r4->payloadSize); + if (gRfuLinkStatus->parentChild == MODE_PARENT) + gRfuLinkStatus->LLFReadyFlag = 16; + else + gRfuLinkStatus->LLFReadyFlag |= 16 << r8; + return r5->unk00 + r4->payloadSize; +} + +void rfu_REQ_recvData(void) +{ + if (gRfuLinkStatus->parentChild != MODE_NEUTRAL) + { + gRfuStatic->commExistFlag = gRfuLinkStatus->sendSlotNIFlag | gRfuLinkStatus->recvSlotNIFlag | gRfuLinkStatus->sendSlotUNIFlag; + gRfuStatic->recvErrorFlag = 0; + STWI_set_Callback_M(rfu_CB_recvData); + STWI_send_DataRxREQ(); + } +} + +static void rfu_CB_recvData(u8 r9, u16 r7) +{ + u8 r6; + struct RfuSlotStatusNI *r4; + struct NIComm *r5; + + if (r7 == 0 && gRfuFixed->STWIBuffer->rxPacketAlloc.rfuPacket8.data[1]) + { + gRfuStatic->NIEndRecvFlag = 0; + if (gRfuLinkStatus->parentChild == MODE_PARENT) + rfu_STC_PARENT_analyzeRecvPacket(); + else + rfu_STC_CHILD_analyzeRecvPacket(); + for (r6 = 0; r6 < RFU_CHILD_MAX; ++r6) + { + r4 = gRfuSlotStatusNI[r6]; + if (r4->recv.state == SLOT_STATE_RECV_LAST && !((gRfuStatic->NIEndRecvFlag >> r6) & 1)) + { + r5 = &r4->recv; + if (r5->dataType == 1) + gRfuLinkStatus->getNameFlag |= 1 << r6; + rfu_STC_releaseFrame(r6, 1, r5); + gRfuLinkStatus->recvSlotNIFlag &= ~r5->bmSlot; + r4->recv.state = SLOT_STATE_RECV_SUCCESS; + } + } + if (gRfuStatic->recvErrorFlag) + r7 = gRfuStatic->recvErrorFlag | ERR_DATA_RECV; + } + rfu_STC_REQ_callback(r9, r7); +} + +static void rfu_STC_PARENT_analyzeRecvPacket(void) +{ + u32 r3; + u8 r5; + u8 sp[4]; + u8 *r6; + + r3 = gRfuFixed->STWIBuffer->rxPacketAlloc.rfuPacket32.data[0] >> 8; + for (r5 = 0; r5 < NELEMS(sp); ++r5) + { + sp[r5] = r3 & 0x1F; + r3 >>= 5; + if (sp[r5] == 0) + gRfuStatic->NIEndRecvFlag |= 1 << r5; + } + r6 = &gRfuFixed->STWIBuffer->rxPacketAlloc.rfuPacket8.data[8]; + for (r5 = 0; r5 < NELEMS(sp); ++r5) + { + if (sp[r5]) + { + u8 *r4 = &sp[r5]; + + do + { + u8 r0 = rfu_STC_analyzeLLSF(r5, r6, *r4); + + r6 += r0; + *r4 -= r0; + } while (!(*r4 & 0x80) && (*r4)); + } + } +} + +static void rfu_STC_CHILD_analyzeRecvPacket(void) +{ + u16 r4; + u8 *r5; + u16 r0; + + r4 = *(u16 *)&gRfuFixed->STWIBuffer->rxPacketAlloc.rfuPacket8.data[4] & 0x7F; + r5 = &gRfuFixed->STWIBuffer->rxPacketAlloc.rfuPacket8.data[8]; + if (r4 == 0) + gRfuStatic->NIEndRecvFlag = 15; + do + { + if (r4 == 0) + break; + r0 = rfu_STC_analyzeLLSF(0, r5, r4); + r5 += r0; + r4 -= r0; + } while (!(r4 & 0x8000)); +} + +static u16 rfu_STC_analyzeLLSF(u8 r12, const u8 *r7, u16 r3) +{ + struct RfuLocalStruct sp00; + const struct LLSFStruct *r6; + u32 r5; + u8 r4; + u32 r0; + u16 r10; + + r6 = &llsf_struct[~gRfuLinkStatus->parentChild & (MODE_NEUTRAL & MODE_PARENT)]; + if (r3 < r6->unk00) + return r3; + r5 = 0; + for (r4 = 0; r4 < r6->unk00; ++r4) + r5 |= *r7++ << 8 * r4; + sp00.unk00 = (r5 >> r6->unk01) & r6->unk07; + sp00.unk01 = (r5 >> r6->unk02) & r6->unk08; + sp00.unk02 = (r5 >> r6->unk03) & r6->unk09; + sp00.unk03 = (r5 >> r6->unk04) & r6->unk0A; + sp00.unk04 = (r5 >> r6->unk05) & r6->unk0B; + sp00.unk05 = (r5 >> r6->unk06) & r6->unk0C; + sp00.unk06 = (r5 & r6->unk0E) & r5; + r10 = sp00.unk06 + r6->unk00; + if (sp00.unk00 == 0) + { + if (gRfuLinkStatus->parentChild == MODE_PARENT) + { + if ((gRfuLinkStatus->connSlotFlag >> r12) & 1) + { + if (sp00.unk02 == 4) + { + rfu_STC_UNI_receive(r12, &sp00, r7); + } + else if (sp00.unk03 == 0) + { + rfu_STC_NI_receive_Receiver(r12, &sp00, r7); + } + else + { + for (r4 = 0; r4 < RFU_CHILD_MAX; ++r4) + if (((gRfuSlotStatusNI[r4]->send.bmSlot >> r12) & 1) + && ((gRfuLinkStatus->sendSlotNIFlag >> r12) & 1)) + break; + if (r4 <= 3) + rfu_STC_NI_receive_Sender(r4, r12, &sp00, r7); + } + } + } + else + { + s32 r5 = gRfuLinkStatus->connSlotFlag & sp00.unk01; + + if (r5) + { + for (r4 = 0; r4 < RFU_CHILD_MAX; ++r4) + { + if ((r5 >> r4) & 1) + { + if (sp00.unk02 == 4) + rfu_STC_UNI_receive(r4, &sp00, r7); + else if (sp00.unk03 == 0) + rfu_STC_NI_receive_Receiver(r4, &sp00, r7); + else if ((gRfuLinkStatus->sendSlotNIFlag >> r4) & 1) + rfu_STC_NI_receive_Sender(r4, r4, &sp00, r7); + } + } + } + } + } + return r10; +} + +static void rfu_STC_UNI_receive(u8 r7, const struct RfuLocalStruct *r6, const u8 *sp00) +{ + u8 *sp04; + u32 r2; + struct RfuSlotStatusUNI *r3 = gRfuSlotStatusUNI[r7]; + struct UNIRecv *r5 = &r3->recv; + + r5->errorCode = 0; + if (gRfuSlotStatusUNI[r7]->recvBufferSize < r6->unk06) + { + r3->recv.state = SLOT_STATE_RECV_IGNORE; + r5->errorCode = ERR_RECV_BUFF_OVER; + } + else + { + if (r5->dataBlockFlag) + { + if (r5->newDataFlag) + { + r5->errorCode = ERR_RECV_UNK; + goto _081E2F0E; + } + } + else + { + if (r5->newDataFlag) + r5->errorCode = ERR_RECV_DATA_OVERWRITED; + } + r5->state = SLOT_STATE_RECEIVING; + r2 = r5->dataSize = r6->unk06; + sp04 = gRfuSlotStatusUNI[r7]->recvBuffer; + gRfuFixed->fastCopyPtr(&sp00, &sp04, r2); + r5->newDataFlag = 1; + r5->state = 0; + } +_081E2F0E: + if (r5->errorCode) + gRfuStatic->recvErrorFlag |= 16 << r7; +} + +static void rfu_STC_NI_receive_Sender(u8 r0, u8 r10, const struct RfuLocalStruct *r6, const u8 *r3) +{ + struct NIComm *r12 = &gRfuSlotStatusNI[r0]->send; + u16 r9 = r12->state; + u8 sp00 = r12->n[r6->unk04]; + u8 *r8; + u8 r4; + u16 r2; + + if ((r6->unk02 == 2 && r9 == SLOT_STATE_SENDING) + || (r6->unk02 == 1 && r9 == SLOT_STATE_SEND_START) + || (r6->unk02 == 3 && r9 == SLOT_STATE_SEND_LAST)) + { + if (r12->n[r6->unk04] == r6->unk05) + r12->recvAckFlag[r6->unk04] |= 1 << r10; + } + if ((r12->recvAckFlag[r6->unk04] & r12->bmSlot) == r12->bmSlot) + { + r12->n[r6->unk04] = (r12->n[r6->unk04] + 1) & 3; + r12->recvAckFlag[r6->unk04] = 0; + if ((u16)(r12->state + ~SLOT_STATE_SEND_NULL) <= 1) + { + if (r12->state == SLOT_STATE_SEND_START) + r12->now_p[r6->unk04] += r12->payloadSize; + else + r12->now_p[r6->unk04] += r12->payloadSize << 2; + r12->remainSize -= r12->payloadSize; + if (r12->remainSize != 0) + if (r12->remainSize >= 0) + goto _081E30AE; + // Above is a hack to avoid optimization over comparison. + // rfu_STC_NI_constructLLSF uses this field as u32. + // It's equivalent to the following condition: + // if (r12->remainSize == 0 || r12->remainSize < 0) + { + r12->phase = 0; + if (r12->state == SLOT_STATE_SEND_START) + { + for (r4 = 0; r4 < WINDOW_COUNT; ++r4) + { + r12->n[r4] = 1; + r12->now_p[r4] = r12->src + r12->payloadSize * r4; + } + r12->remainSize = r12->dataSize; + r12->state = SLOT_STATE_SENDING; + } + else + { + r12->n[0] = 0; + r12->remainSize = 0; + r12->state = SLOT_STATE_SEND_LAST; + } + } + _081E30AE: + } + else if (r12->state == SLOT_STATE_SEND_LAST) + { + r12->state = SLOT_STATE_SEND_NULL; + } + } + if (r12->state != r9 + || r12->n[r6->unk04] != sp00 + || (r12->recvAckFlag[r6->unk04] >> r10) & 1) + { + r2 = REG_IME; + REG_IME = 0; + gRfuStatic->recvRenewalFlag |= 16 << r10; + gRfuSlotStatusNI[r10]->send.failCounter = 0; + REG_IME = r2; + } +} + +static void rfu_STC_NI_receive_Receiver(u8 r8, const struct RfuLocalStruct *r6, const u8 *sp00) +{ + u16 r2; + u32 r7 = 0; + struct RfuSlotStatusNI *r4 = gRfuSlotStatusNI[r8]; + struct NIComm *r5 = &r4->recv; + u16 r9 = r4->recv.state; + u8 r10 = r4->recv.n[r6->unk04]; + + if (r6->unk02 == 3) + { + gRfuStatic->NIEndRecvFlag |= 1 << r8; + if (r4->recv.state == SLOT_STATE_RECEIVING) + { + r4->recv.phase = 0; + r4->recv.n[0] = 0; + r4->recv.state = SLOT_STATE_RECV_LAST; + } + } + else if (r6->unk02 == 2) + { + if (r9 == SLOT_STATE_RECV_START && !r5->remainSize) + rfu_STC_NI_initSlot_asRecvDataEntity(r8, r5); + if (r5->state == SLOT_STATE_RECEIVING) + r7 = 1; + } + else if (r6->unk02 == 1) + { + if (r9 == SLOT_STATE_RECV_START) + { + r7 = 1; + } + else + { + rfu_STC_NI_initSlot_asRecvControllData(r8, r5); + if (r4->recv.state != SLOT_STATE_RECV_START) + return; + r7 = 1; + } + } + if (r7 != 0) + { + if (r6->unk05 == ((r5->n[r6->unk04] + 1) & 3)) + { + gRfuFixed->fastCopyPtr(&sp00, (u8 **)&r5->now_p[r6->unk04], r6->unk06); + if (r5->state == SLOT_STATE_RECEIVING) + r5->now_p[r6->unk04] += 3 * r5->payloadSize; + r5->remainSize -= r6->unk06; + r5->n[r6->unk04] = r6->unk05; + } + } + if (r5->errorCode == 0) + { + r5->phase = r6->unk04; + if (r5->state != r9 || r5->n[r6->unk04] != r10 || r5->n[r6->unk04] == r6->unk05) + { + r2 = REG_IME; + REG_IME = 0; + gRfuStatic->recvRenewalFlag |= 1 << r8; + r5->failCounter = 0; + REG_IME = r2; + } + } +} + +static void rfu_STC_NI_initSlot_asRecvControllData(u8 r4, struct NIComm *r2) +{ + u8 *r1; + u32 r5; + u8 r6; + + if (gRfuLinkStatus->parentChild == MODE_PARENT) + { + r5 = 3; + r1 = &gRfuLinkStatus->remainLLFrameSizeParent; + } + else + { + r5 = 2; + r1 = &gRfuLinkStatus->remainLLFrameSizeChild[r4]; + } + r6 = 1 << r4; + if (r2->state == 0) + { + if (*r1 < r5) + { + r2->state = SLOT_STATE_RECV_IGNORE; + r2->errorCode = ERR_RECV_REPLY_SUBFRAME_SIZE; + gRfuStatic->recvErrorFlag |= r6; + } + else + { + r2->errorCode = 0; + *r1 -= r5; + r2->now_p[0] = &r2->dataType; + r2->remainSize = 7; + r2->ack = 1; + r2->payloadSize = 0; + r2->bmSlot = r6; + r2->state = SLOT_STATE_RECV_START; + gRfuLinkStatus->recvSlotNIFlag |= r6; + } + } +} + +static void rfu_STC_NI_initSlot_asRecvDataEntity(u8 r5, struct NIComm *r4) +{ + u8 r1, r3; + + if (r4->dataType == 1) + { + r4->now_p[0] = (void *)&gRfuLinkStatus->partner[r5].serialNo; + } + else + { + if (r4->dataSize > gRfuSlotStatusNI[r5]->recvBufferSize) + { + r1 = 1 << r5; + gRfuStatic->recvErrorFlag |= r1; + gRfuLinkStatus->recvSlotNIFlag &= ~r1; + r4->errorCode = ERR_RECV_BUFF_OVER; + r4->state = SLOT_STATE_RECV_FAILED; + rfu_STC_releaseFrame(r5, 1, r4); + return; + } + r4->now_p[0] = gRfuSlotStatusNI[r5]->recvBuffer; + } + for (r3 = 0; r3 < WINDOW_COUNT; ++r3) + { + r4->n[r3] = 0; + r4->now_p[r3] = &r4->now_p[0][r4->payloadSize * r3]; + } + r4->remainSize = r4->dataSize; + r4->state = SLOT_STATE_RECEIVING; +} + +static void rfu_NI_checkCommFailCounter(void) +{ + u16 r12; + u32 r7; + u8 r2, r3; + + if (gRfuLinkStatus->sendSlotNIFlag | gRfuLinkStatus->recvSlotNIFlag) + { + r12 = REG_IME; + REG_IME = 0; + r7 = gRfuStatic->recvRenewalFlag >> 4; + for (r3 = 0; r3 < RFU_CHILD_MAX; ++r3) + { + r2 = 1 << r3; + if (gRfuLinkStatus->sendSlotNIFlag & r2 + && !(gRfuStatic->recvRenewalFlag & r2)) + ++gRfuSlotStatusNI[r3]->send.failCounter; + if (gRfuLinkStatus->recvSlotNIFlag & r2 + && !(r7 & r2)) + ++gRfuSlotStatusNI[r3]->recv.failCounter; + } + gRfuStatic->recvRenewalFlag = 0; + REG_IME = r12; + } +} + +void rfu_REQ_noise(void) +{ + STWI_set_Callback_M(rfu_STC_REQ_callback); + STWI_send_TestModeREQ(1, 0); +} diff --git a/src/librfu_sio32id.c b/src/librfu_sio32id.c new file mode 100644 index 0000000000..f5d652348f --- /dev/null +++ b/src/librfu_sio32id.c @@ -0,0 +1,167 @@ +#include "librfu.h" + +static void Sio32IDIntr(void); +static void Sio32IDInit(void); +static s32 Sio32IDMain(void); + +//struct RfuSIO32Id gRfuSIO32Id; + +//static const u16 Sio32ConnectionData[] = { 0x494e, 0x544e, 0x4e45, 0x4f44 }; // NINTENDO +//static const char Sio32IDLib_Var[] = "Sio32ID_030820"; + +extern const u16 Sio32ConnectionData[]; +extern const char Sio32IDLib_Var[]; + +s32 AgbRFU_checkID(u8 r5) +{ + u16 r8; + vu16 *r4; + s32 r6; + + if (REG_IME == 0) + return -1; + r8 = REG_IE; + gSTWIStatus->state = 10; + STWI_set_Callback_ID(Sio32IDIntr); + Sio32IDInit(); + r4 = ®_TMCNT_L(gSTWIStatus->timerSelect); + r5 *= 8; + while (--r5 != 0xFF) + { + r6 = Sio32IDMain(); + if (r6 != 0) + break; + r4[1] = 0; + r4[0] = 0; + r4[1] = TIMER_1024CLK | TIMER_ENABLE; + while (r4[0] < 32) + ; + r4[1] = 0; + r4[0] = 0; + } + REG_IME = 0; + REG_IE = r8; + REG_IME = 1; + gSTWIStatus->state = 0; + STWI_set_Callback_ID(NULL); + return r6; +} + +static void Sio32IDInit(void) +{ + REG_IME = 0; + REG_IE &= ~((8 << gSTWIStatus->timerSelect) | INTR_FLAG_SERIAL); + REG_IME = 1; + REG_RCNT = 0; + REG_SIOCNT = SIO_32BIT_MODE; + REG_SIOCNT |= SIO_INTR_ENABLE | SIO_ENABLE; + CpuFill32(0, &gRfuSIO32Id, sizeof(struct RfuSIO32Id)); + REG_IF = INTR_FLAG_SERIAL; +} + +static s32 Sio32IDMain(void) +{ + u8 r12; + + switch (r12 = gRfuSIO32Id.unk1) + { + case 0: + gRfuSIO32Id.unk0 = 1; + REG_SIOCNT |= SIO_38400_BPS; + REG_IME = r12; + REG_IE |= INTR_FLAG_SERIAL; + REG_IME = 1; + gRfuSIO32Id.unk1 = 1; + *(vu8 *)®_SIOCNT |= SIO_ENABLE; + break; + case 1: + if (gRfuSIO32Id.unkA == 0) + { + if (gRfuSIO32Id.unk0 == 1) + { + if (gRfuSIO32Id.unk2 == 0) + { + REG_IME = gRfuSIO32Id.unk2; + REG_SIOCNT |= SIO_ENABLE; + REG_IME = r12; + } + } + else if (gRfuSIO32Id.unk4 != 0x8001 && !gRfuSIO32Id.unk2) + { + REG_IME = gRfuSIO32Id.unk2; + REG_IE &= ~INTR_FLAG_SERIAL; + REG_IME = r12; + REG_SIOCNT = gRfuSIO32Id.unk2; + REG_SIOCNT = SIO_32BIT_MODE; + REG_IF = INTR_FLAG_SERIAL; + REG_SIOCNT |= SIO_INTR_ENABLE | SIO_ENABLE; + REG_IME = gRfuSIO32Id.unk2; + REG_IE |= INTR_FLAG_SERIAL; + REG_IME = r12; + } + break; + } + else + { + gRfuSIO32Id.unk1 = 2; + // fallthrough + } + default: + return gRfuSIO32Id.unkA; + } + return 0; +} + +static void Sio32IDIntr(void) +{ + u32 r5; + u16 r0; +#ifndef NONMATCHING + register u32 r1 asm("r1"); + register u16 r0_ asm("r0"); +#else + u32 r1; + u16 r0_; +#endif + + r5 = REG_SIODATA32; + if (gRfuSIO32Id.unk0 != 1) + REG_SIOCNT |= SIO_ENABLE; + r1 = 16 * gRfuSIO32Id.unk0; // to handle side effect of inline asm + r1 = (r5 << r1) >> 16; + r5 = (r5 << 16 * (1 - gRfuSIO32Id.unk0)) >> 16; + if (gRfuSIO32Id.unkA == 0) + { + if (r1 == gRfuSIO32Id.unk6) + { + if (gRfuSIO32Id.unk2 > 3) + { + gRfuSIO32Id.unkA = r5; + } + else if (r1 == (u16)~gRfuSIO32Id.unk4) + { + r0_ = ~gRfuSIO32Id.unk6; + if (r5 == r0_) + ++gRfuSIO32Id.unk2; + } + } + else + { + gRfuSIO32Id.unk2 = gRfuSIO32Id.unkA; + } + } + if (gRfuSIO32Id.unk2 < 4) + gRfuSIO32Id.unk4 = *(gRfuSIO32Id.unk2 + Sio32ConnectionData); + else + gRfuSIO32Id.unk4 = 0x8001; + gRfuSIO32Id.unk6 = ~r5; + REG_SIODATA32 = (gRfuSIO32Id.unk4 << 16 * (1 - gRfuSIO32Id.unk0)) + + (gRfuSIO32Id.unk6 << 16 * gRfuSIO32Id.unk0); + if (gRfuSIO32Id.unk0 == 1 && (gRfuSIO32Id.unk2 || r5 == 0x494E)) + { + for (r0 = 0; r0 < 600; ++r0) + ; + if (gRfuSIO32Id.unkA == 0) + REG_SIOCNT |= SIO_ENABLE; + } +} From aa631825fcf8661f7ef57afe0cb652a4147ca77a Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Thu, 16 Jan 2020 07:28:23 +0800 Subject: [PATCH 37/37] resolve data sections --- common_syms/{librfu.txt => librfu_rfu.txt} | 1 - common_syms/librfu_sio32id.txt | 1 + data/librfu_rodata.s | 17 ----------------- include/librfu.h | 1 - ld_script.txt | 3 ++- ld_script_modern.txt | 5 +++-- src/librfu.c | 9 --------- src/librfu_rfu.c | 20 +++++++------------- src/librfu_sio32id.c | 9 +++------ sym_common.txt | 3 ++- 10 files changed, 18 insertions(+), 51 deletions(-) rename common_syms/{librfu.txt => librfu_rfu.txt} (85%) create mode 100644 common_syms/librfu_sio32id.txt delete mode 100644 data/librfu_rodata.s delete mode 100644 src/librfu.c diff --git a/common_syms/librfu.txt b/common_syms/librfu_rfu.txt similarity index 85% rename from common_syms/librfu.txt rename to common_syms/librfu_rfu.txt index 820c865bef..4b742dcd25 100644 --- a/common_syms/librfu.txt +++ b/common_syms/librfu_rfu.txt @@ -3,4 +3,3 @@ gRfuSlotStatusNI gRfuLinkStatus gRfuStatic gRfuFixed -gRfuSIO32Id diff --git a/common_syms/librfu_sio32id.txt b/common_syms/librfu_sio32id.txt new file mode 100644 index 0000000000..97395e84b3 --- /dev/null +++ b/common_syms/librfu_sio32id.txt @@ -0,0 +1 @@ +gRfuSIO32Id diff --git a/data/librfu_rodata.s b/data/librfu_rodata.s deleted file mode 100644 index 679256541d..0000000000 --- a/data/librfu_rodata.s +++ /dev/null @@ -1,17 +0,0 @@ - .section .rodata - -llsf_struct:: @ 89A3220 - .byte 2, 14, 0, 10, 9, 5, 7, 2 - .byte 0, 15, 1, 3, 3, 0, 31, 0 - .byte 3, 22, 18, 14, 13, 9, 11, 3 - .byte 15, 15, 1, 3, 3, 0, 0x7f, 0 - - .asciz "RFU_V1026" - - .align 2 -str_checkMbootLL:: @ 89A324C - .asciz "RFU-MBOOT" - - .align 2 -Sio32ConnectionData:: @ 89A3258 - .asciz "NINTENDOSio32ID_030820" diff --git a/include/librfu.h b/include/librfu.h index 8dd25541f6..39cc68319f 100644 --- a/include/librfu.h +++ b/include/librfu.h @@ -5,7 +5,6 @@ #include "main.h" /* TODOs: - * - split files * - documentation * - decompile librfu_intr.s once arm support is back again (for internal structs not documented in SDK) diff --git a/ld_script.txt b/ld_script.txt index 6719b69075..b7cb97a17d 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -1235,7 +1235,8 @@ SECTIONS { src/agb_flash_mx.o(.rodata); src/agb_flash_le.o(.rodata); src/siirtc.o(.rodata); - data/librfu_rodata.o(.rodata); + src/librfu_rfu.o(.rodata); + src/librfu_sio32id.o(.rodata); *libgcc.a:_divdi3.o(.rodata); *libgcc.a:_udivdi3.o(.rodata); *libc.a(.rodata); diff --git a/ld_script_modern.txt b/ld_script_modern.txt index bf575857e6..52b08fd4b3 100644 --- a/ld_script_modern.txt +++ b/ld_script_modern.txt @@ -70,7 +70,7 @@ SECTIONS { src/librfu_intr.o(.text); asm/librfu_intr.o(.text); src/librfu_rfu.o(.text); - asm/librfu.o(.text); + src/librfu_sio32id.o(.text); *libagbsyscall.a:*.o(.text*); *libgcc.a:*.o(.text*); *libc.a:*.o(.text*); @@ -100,7 +100,8 @@ SECTIONS { src/agb_flash_mx.o(.rodata); src/agb_flash_le.o(.rodata); src/siirtc.o(.rodata); - data/librfu_rodata.o(.rodata); + src/librfu_rfu.o(.rodata); + src/librfu_sio32id.o(.rodata); *libgcc.a:*.o(.rodata*); *libc.a:*.o(.rodata*); *libc.a:*.o(.data*); diff --git a/src/librfu.c b/src/librfu.c deleted file mode 100644 index 1a295fd48c..0000000000 --- a/src/librfu.c +++ /dev/null @@ -1,9 +0,0 @@ -#include "global.h" -#include "librfu.h" - -struct RfuSlotStatusUNI* gRfuSlotStatusUNI[4]; -struct RfuSlotStatusNI* gRfuSlotStatusNI[4]; -struct RfuLinkStatus *gRfuLinkStatus; -struct RfuStatic *gRfuStatic; -struct RfuFixed* gRfuFixed; -struct RfuSIO32Id gRfuSIO32Id; diff --git a/src/librfu_rfu.c b/src/librfu_rfu.c index f5f13cc5d4..732cc532d2 100644 --- a/src/librfu_rfu.c +++ b/src/librfu_rfu.c @@ -67,13 +67,13 @@ static void rfu_STC_NI_receive_Sender(u8, u8, const struct RfuLocalStruct *, __a static void rfu_STC_NI_initSlot_asRecvDataEntity(u8, struct NIComm *); static void rfu_STC_NI_initSlot_asRecvControllData(u8, struct NIComm *); -//struct RfuSlotStatusUNI *gRfuSlotStatusUNI[RFU_CHILD_MAX]; -//struct RfuSlotStatusNI *gRfuSlotStatusNI[RFU_CHILD_MAX]; -//struct RfuLinkStatus *gRfuLinkStatus; -//struct RfuStatic *gRfuStatic; -//struct RfuFixed *gRfuFixed; +struct RfuSlotStatusUNI *gRfuSlotStatusUNI[RFU_CHILD_MAX]; +struct RfuSlotStatusNI *gRfuSlotStatusNI[RFU_CHILD_MAX]; +struct RfuLinkStatus *gRfuLinkStatus; +struct RfuStatic *gRfuStatic; +struct RfuFixed *gRfuFixed; -/*static const struct LLSFStruct llsf_struct[2] = { +static const struct LLSFStruct llsf_struct[2] = { { 2, 14, 0, 10, 9, 5, 7, 2, 0, 15, 1, 3, 3, 0x1f @@ -83,16 +83,9 @@ static void rfu_STC_NI_initSlot_asRecvControllData(u8, struct NIComm *); } }; -#ifdef EMERALD static const char lib_ver[] = "RFU_V1026"; -#else -static const char lib_ver[] = "RFU_V1024"; -#endif static const char str_checkMbootLL[] = "RFU-MBOOT"; -*/ -extern const struct LLSFStruct llsf_struct[2]; -extern const char str_checkMbootLL[];// = "RFU-MBOOT"; u16 rfu_initializeAPI(struct RfuAPIBuffer *APIBuffer, u16 buffByteSize, IntrFunc *sioIntrTable_p, bool8 copyInterruptToRam) { @@ -2031,6 +2024,7 @@ static void rfu_STC_NI_receive_Sender(u8 r0, u8 r10, const struct RfuLocalStruct } } _081E30AE: + ; } else if (r12->state == SLOT_STATE_SEND_LAST) { diff --git a/src/librfu_sio32id.c b/src/librfu_sio32id.c index f5d652348f..fc57019865 100644 --- a/src/librfu_sio32id.c +++ b/src/librfu_sio32id.c @@ -4,13 +4,10 @@ static void Sio32IDIntr(void); static void Sio32IDInit(void); static s32 Sio32IDMain(void); -//struct RfuSIO32Id gRfuSIO32Id; +struct RfuSIO32Id gRfuSIO32Id; -//static const u16 Sio32ConnectionData[] = { 0x494e, 0x544e, 0x4e45, 0x4f44 }; // NINTENDO -//static const char Sio32IDLib_Var[] = "Sio32ID_030820"; - -extern const u16 Sio32ConnectionData[]; -extern const char Sio32IDLib_Var[]; +static const u16 Sio32ConnectionData[] = { 0x494e, 0x544e, 0x4e45, 0x4f44 }; // NINTENDO +static const char Sio32IDLib_Var[] = "Sio32ID_030820"; s32 AgbRFU_checkID(u8 r5) { diff --git a/sym_common.txt b/sym_common.txt index 8f08952071..a804a76e76 100644 --- a/sym_common.txt +++ b/sym_common.txt @@ -77,4 +77,5 @@ gReservedSpritePaletteCount: .include "m4a.o" .include "agb_flash.o" .include "librfu_stwi.o" - .include "librfu.o" + .include "librfu_rfu.o" + .include "librfu_sio32id.o"