Continue documenting Quest Log
This commit is contained in:
+2
-2
@@ -193,7 +193,7 @@ void SetQuestLogEvent(u16, const u16 *);
|
|||||||
void SetQLPlayedTheSlots(void);
|
void SetQLPlayedTheSlots(void);
|
||||||
void QuestLog_RecordEnteredMap(u16);
|
void QuestLog_RecordEnteredMap(u16);
|
||||||
u8 sub_8112CAC(void);
|
u8 sub_8112CAC(void);
|
||||||
bool8 QuestLog_SchedulePlaybackCB(void (*func)(void));
|
bool8 QL_AvoidDisplay(void (*func)(void));
|
||||||
void QuestLog_BackUpPalette(u16 offset, u16 size);
|
void QuestLog_BackUpPalette(u16 offset, u16 size);
|
||||||
void CommitQuestLogWindow1(void);
|
void CommitQuestLogWindow1(void);
|
||||||
void QuestLog_DrawPreviouslyOnQuestHeaderIfInPlaybackMode(void);
|
void QuestLog_DrawPreviouslyOnQuestHeaderIfInPlaybackMode(void);
|
||||||
@@ -220,7 +220,7 @@ void QuestLogRecordPlayerStepWithDuration(u8 movementActionId, u8 duration);
|
|||||||
void QuestLogRecordNPCStepWithDuration(u8 localId, u8 mapNum, u8 mapGroup, u8 movementActionId, u8 duration);
|
void QuestLogRecordNPCStepWithDuration(u8 localId, u8 mapNum, u8 mapGroup, u8 movementActionId, u8 duration);
|
||||||
void QL_AfterRecordFishActionSuccessful(void);
|
void QL_AfterRecordFishActionSuccessful(void);
|
||||||
void sub_8110920(void);
|
void sub_8110920(void);
|
||||||
void sub_8111708(void);
|
void QL_RestoreMapLayoutId(void);
|
||||||
void sub_81127F8(struct FieldInput * a0);
|
void sub_81127F8(struct FieldInput * a0);
|
||||||
void sub_8112B3C(void);
|
void sub_8112B3C(void);
|
||||||
void RunQuestLogCB(void);
|
void RunQuestLogCB(void);
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ bool8 CreatePCMenu(void);
|
|||||||
void ScriptMenu_DisplayPCStartupPrompt(void);
|
void ScriptMenu_DisplayPCStartupPrompt(void);
|
||||||
|
|
||||||
bool8 (*ScriptMenu_HidePokemonPic(void))(void);
|
bool8 (*ScriptMenu_HidePokemonPic(void))(void);
|
||||||
void QLPlaybackCB_DestroyScriptMenuMonPicSprites(void);
|
void QL_DestroyAbortedDisplay(void);
|
||||||
void PicboxCancel(void);
|
void PicboxCancel(void);
|
||||||
|
|
||||||
#endif //GUARD_SCRIPT_MENU_H
|
#endif //GUARD_SCRIPT_MENU_H
|
||||||
|
|||||||
+3
-3
@@ -113,15 +113,15 @@ void DisplayBerryPowderVendorMenu(void)
|
|||||||
{
|
{
|
||||||
struct WindowTemplate template;
|
struct WindowTemplate template;
|
||||||
|
|
||||||
if (QuestLog_SchedulePlaybackCB(QLPlaybackCB_DestroyScriptMenuMonPicSprites) != TRUE)
|
if (QL_AvoidDisplay(QL_DestroyAbortedDisplay) == TRUE)
|
||||||
{
|
return;
|
||||||
|
|
||||||
template = SetWindowTemplateFields(0, 1, 1, 8, 3, 15, 32);
|
template = SetWindowTemplateFields(0, 1, 1, 8, 3, 15, 32);
|
||||||
sBerryPowderVendorWindowId = AddWindow(&template);
|
sBerryPowderVendorWindowId = AddWindow(&template);
|
||||||
FillWindowPixelBuffer(sBerryPowderVendorWindowId, 0);
|
FillWindowPixelBuffer(sBerryPowderVendorWindowId, 0);
|
||||||
PutWindowTilemap(sBerryPowderVendorWindowId);
|
PutWindowTilemap(sBerryPowderVendorWindowId);
|
||||||
LoadStdWindowGfx(sBerryPowderVendorWindowId, 0x21D, 0xD0);
|
LoadStdWindowGfx(sBerryPowderVendorWindowId, 0x21D, 0xD0);
|
||||||
DrawPlayerPowderAmount(sBerryPowderVendorWindowId, 0x21D, 0xD, GetBerryPowder());
|
DrawPlayerPowderAmount(sBerryPowderVendorWindowId, 0x21D, 0xD, GetBerryPowder());
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void RemoveBerryPowderVendorMenu(void)
|
void RemoveBerryPowderVendorMenu(void)
|
||||||
|
|||||||
@@ -1095,8 +1095,10 @@ void DrawElevatorCurrentFloorWindow(void)
|
|||||||
{
|
{
|
||||||
const u8 *floorname;
|
const u8 *floorname;
|
||||||
u32 strwidth;
|
u32 strwidth;
|
||||||
if (QuestLog_SchedulePlaybackCB(QLPlaybackCB_DestroyScriptMenuMonPicSprites) != TRUE)
|
|
||||||
{
|
if (QL_AvoidDisplay(QL_DestroyAbortedDisplay) == TRUE)
|
||||||
|
return;
|
||||||
|
|
||||||
sElevatorCurrentFloorWindowId = AddWindow(&sElevatorCurrentFloorWindowTemplate);
|
sElevatorCurrentFloorWindowId = AddWindow(&sElevatorCurrentFloorWindowTemplate);
|
||||||
LoadStdWindowGfx(sElevatorCurrentFloorWindowId, 0x21D, 0xD0);
|
LoadStdWindowGfx(sElevatorCurrentFloorWindowId, 0x21D, 0xD0);
|
||||||
DrawStdFrameWithCustomTileAndPalette(sElevatorCurrentFloorWindowId, FALSE, 0x21D, 0xD);
|
DrawStdFrameWithCustomTileAndPalette(sElevatorCurrentFloorWindowId, FALSE, 0x21D, 0xD);
|
||||||
@@ -1106,7 +1108,6 @@ void DrawElevatorCurrentFloorWindow(void)
|
|||||||
AddTextPrinterParameterized(sElevatorCurrentFloorWindowId, FONT_NORMAL, floorname, 56 - strwidth, 16, 0xFF, NULL);
|
AddTextPrinterParameterized(sElevatorCurrentFloorWindowId, FONT_NORMAL, floorname, 56 - strwidth, 16, 0xFF, NULL);
|
||||||
PutWindowTilemap(sElevatorCurrentFloorWindowId);
|
PutWindowTilemap(sElevatorCurrentFloorWindowId);
|
||||||
CopyWindowToVram(sElevatorCurrentFloorWindowId, COPYWIN_FULL);
|
CopyWindowToVram(sElevatorCurrentFloorWindowId, COPYWIN_FULL);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void CloseElevatorCurrentFloorWindow(void)
|
void CloseElevatorCurrentFloorWindow(void)
|
||||||
@@ -1164,8 +1165,10 @@ void ListMenu(void)
|
|||||||
{
|
{
|
||||||
u8 taskId;
|
u8 taskId;
|
||||||
struct Task *task;
|
struct Task *task;
|
||||||
if (QuestLog_SchedulePlaybackCB(QLPlaybackCB_DestroyScriptMenuMonPicSprites) != TRUE)
|
|
||||||
{
|
if (QL_AvoidDisplay(QL_DestroyAbortedDisplay) == TRUE)
|
||||||
|
return;
|
||||||
|
|
||||||
taskId = CreateTask(Task_CreateScriptListMenu, 8);
|
taskId = CreateTask(Task_CreateScriptListMenu, 8);
|
||||||
task = &gTasks[taskId];
|
task = &gTasks[taskId];
|
||||||
switch (gSpecialVar_0x8004)
|
switch (gSpecialVar_0x8004)
|
||||||
@@ -1249,7 +1252,6 @@ void ListMenu(void)
|
|||||||
DestroyTask(taskId);
|
DestroyTask(taskId);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static const u8 *const sListMenuLabels[][12] = {
|
static const u8 *const sListMenuLabels[][12] = {
|
||||||
|
|||||||
+1
-1
@@ -819,7 +819,7 @@ static void QL_LoadMapNormal(void)
|
|||||||
ChooseAmbientCrySpecies();
|
ChooseAmbientCrySpecies();
|
||||||
SetDefaultFlashLevel();
|
SetDefaultFlashLevel();
|
||||||
sub_8110920();
|
sub_8110920();
|
||||||
sub_8111708();
|
QL_RestoreMapLayoutId();
|
||||||
LoadSaveblockMapHeader();
|
LoadSaveblockMapHeader();
|
||||||
InitMap();
|
InitMap();
|
||||||
}
|
}
|
||||||
|
|||||||
+97
-62
@@ -69,11 +69,17 @@ enum {
|
|||||||
// sQuestLogActionRecordBuffer should be large enough to fill a scene's script with the maximum number of actions
|
// sQuestLogActionRecordBuffer should be large enough to fill a scene's script with the maximum number of actions
|
||||||
#define SCRIPT_BUFFER_SIZE (sizeof(gSaveBlock1Ptr->questLog[0].script) / sizeof(struct QuestLogAction))
|
#define SCRIPT_BUFFER_SIZE (sizeof(gSaveBlock1Ptr->questLog[0].script) / sizeof(struct QuestLogAction))
|
||||||
|
|
||||||
|
enum {
|
||||||
|
END_MODE_NONE,
|
||||||
|
END_MODE_FINISH,
|
||||||
|
END_MODE_SCENE,
|
||||||
|
};
|
||||||
|
|
||||||
struct PlaybackControl
|
struct PlaybackControl
|
||||||
{
|
{
|
||||||
u8 state:4;
|
u8 state:4;
|
||||||
u8 playingEvent:2;
|
u8 playingEvent:2;
|
||||||
u8 sceneEndMode:2;
|
u8 endMode:2;
|
||||||
u8 cursor;
|
u8 cursor;
|
||||||
u8 timer;
|
u8 timer;
|
||||||
u8 overlapTimer;
|
u8 overlapTimer;
|
||||||
@@ -118,8 +124,8 @@ static void QLogCB_Playback(void);
|
|||||||
static void SetPlayerInitialCoordsAtScene(u8);
|
static void SetPlayerInitialCoordsAtScene(u8);
|
||||||
static void SetNPCInitialCoordsAtScene(u8);
|
static void SetNPCInitialCoordsAtScene(u8);
|
||||||
static void RecordSceneEnd(void);
|
static void RecordSceneEnd(void);
|
||||||
static void BackUpTrainerRematchesToVars(void);
|
static void BackUpTrainerRematches(void);
|
||||||
static void BackUpMapLayoutToVar(void);
|
static void BackUpMapLayout(void);
|
||||||
static void SetGameStateAtScene(u8);
|
static void SetGameStateAtScene(u8);
|
||||||
static u8 TryRecordActionSequence(struct QuestLogAction *);
|
static u8 TryRecordActionSequence(struct QuestLogAction *);
|
||||||
static void Task_BeginQuestLogPlayback(u8);
|
static void Task_BeginQuestLogPlayback(u8);
|
||||||
@@ -128,19 +134,19 @@ static void QLPlayback_InitOverworldState(void);
|
|||||||
static void SetPokemonCounts(void);
|
static void SetPokemonCounts(void);
|
||||||
static u16 QuestLog_GetPartyCount(void);
|
static u16 QuestLog_GetPartyCount(void);
|
||||||
static u16 QuestLog_GetBoxMonCount(void);
|
static u16 QuestLog_GetBoxMonCount(void);
|
||||||
static void sub_8111688(void);
|
static void RestoreTrainerRematches(void);
|
||||||
static void ReadQuestLogScriptFromSav1(u8, struct QuestLogAction *);
|
static void ReadQuestLogScriptFromSav1(u8, struct QuestLogAction *);
|
||||||
static void QuestLog_BeginFadeAtEndOfScene(s8 delay);
|
static void DoSceneEndTransition(s8 delay);
|
||||||
|
static void DoSkipToEndTransition(s8 delay);
|
||||||
static void QuestLog_AdvancePlayhead(void);
|
static void QuestLog_AdvancePlayhead(void);
|
||||||
static void QuestLog_StartFinalScene(void);
|
static void QuestLog_StartFinalScene(void);
|
||||||
static void Task_RunPlaybackCB(u8);
|
static void Task_AvoidDisplay(u8);
|
||||||
static void QuestLog_PlayCurrentEvent(void);
|
static void QuestLog_PlayCurrentEvent(void);
|
||||||
static void HandleShowQuestLogMessage(void);
|
static void HandleShowQuestLogMessage(void);
|
||||||
static u8 GetQuestLogTextDisplayDuration(void);
|
static u8 GetQuestLogTextDisplayDuration(void);
|
||||||
static void DrawSceneDescription(void);
|
static void DrawSceneDescription(void);
|
||||||
static void CopyDescriptionWindowTiles(u8);
|
static void CopyDescriptionWindowTiles(u8);
|
||||||
static void QuestLog_CloseTextWindow(void);
|
static void QuestLog_CloseTextWindow(void);
|
||||||
static void QuestLog_SkipToEndOfPlayback(s8 delay);
|
|
||||||
static void QuestLog_WaitFadeAndCancelPlayback(void);
|
static void QuestLog_WaitFadeAndCancelPlayback(void);
|
||||||
static bool8 FieldCB2_FinalScene(void);
|
static bool8 FieldCB2_FinalScene(void);
|
||||||
static void Task_FinalScene_WaitFade(u8);
|
static void Task_FinalScene_WaitFade(u8);
|
||||||
@@ -205,7 +211,7 @@ void SetQuestLogRecordAndPlaybackPointers(void *oldPointer)
|
|||||||
if (gQuestLogState == QL_STATE_PLAYBACK)
|
if (gQuestLogState == QL_STATE_PLAYBACK)
|
||||||
{
|
{
|
||||||
int r3;
|
int r3;
|
||||||
for (r3 = 0; r3 < (int)NELEMS(gUnknown_203AE0C); r3++)
|
for (r3 = 0; r3 < (int)ARRAY_COUNT(gUnknown_203AE0C); r3++)
|
||||||
if (gUnknown_203AE0C[r3])
|
if (gUnknown_203AE0C[r3])
|
||||||
gUnknown_203AE0C[r3] = (void *)gUnknown_203AE0C[r3] + offset;
|
gUnknown_203AE0C[r3] = (void *)gUnknown_203AE0C[r3] + offset;
|
||||||
}
|
}
|
||||||
@@ -287,18 +293,18 @@ static void QLogCB_Playback(void)
|
|||||||
if (sPlaybackControl.state == 2)
|
if (sPlaybackControl.state == 2)
|
||||||
sPlaybackControl.state = 0;
|
sPlaybackControl.state = 0;
|
||||||
|
|
||||||
if (sPlaybackControl.sceneEndMode == 0)
|
if (sPlaybackControl.endMode == END_MODE_NONE)
|
||||||
{
|
{
|
||||||
if (gQuestLogPlaybackState != QL_PLAYBACK_STATE_0
|
if (gQuestLogPlaybackState != QL_PLAYBACK_STATE_0
|
||||||
|| sPlaybackControl.state == 1
|
|| sPlaybackControl.state == 1
|
||||||
|| (sPlaybackControl.cursor < NELEMS(gUnknown_203AE0C)
|
|| (sPlaybackControl.cursor < ARRAY_COUNT(gUnknown_203AE0C)
|
||||||
&& gUnknown_203AE0C[sPlaybackControl.cursor] != NULL))
|
&& gUnknown_203AE0C[sPlaybackControl.cursor] != NULL))
|
||||||
QuestLog_PlayCurrentEvent();
|
QuestLog_PlayCurrentEvent();
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
sPlaybackControl.sceneEndMode = 2;
|
sPlaybackControl.endMode = END_MODE_SCENE;
|
||||||
LockPlayerFieldControls();
|
LockPlayerFieldControls();
|
||||||
QuestLog_BeginFadeAtEndOfScene(0);
|
DoSceneEndTransition(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -328,8 +334,8 @@ void StartRecordingQuestLogAction(u16 eventId)
|
|||||||
SetPokemonCounts();
|
SetPokemonCounts();
|
||||||
SetPlayerInitialCoordsAtScene(sCurrentSceneNum);
|
SetPlayerInitialCoordsAtScene(sCurrentSceneNum);
|
||||||
SetNPCInitialCoordsAtScene(sCurrentSceneNum);
|
SetNPCInitialCoordsAtScene(sCurrentSceneNum);
|
||||||
BackUpTrainerRematchesToVars();
|
BackUpTrainerRematches();
|
||||||
BackUpMapLayoutToVar();
|
BackUpMapLayout();
|
||||||
SetGameStateAtScene(sCurrentSceneNum);
|
SetGameStateAtScene(sCurrentSceneNum);
|
||||||
gUnknown_203ADFC = 0;
|
gUnknown_203ADFC = 0;
|
||||||
SetUpQuestLogAction(2, sQuestLogActionRecordBuffer, sizeof(sQuestLogActionRecordBuffer));
|
SetUpQuestLogAction(2, sQuestLogActionRecordBuffer, sizeof(sQuestLogActionRecordBuffer));
|
||||||
@@ -389,26 +395,32 @@ static void SetGameStateAtScene(u8 sceneNum)
|
|||||||
CpuCopy16(gSaveBlock1Ptr->vars, questLog->vars, sizeof(gSaveBlock1Ptr->vars));
|
CpuCopy16(gSaveBlock1Ptr->vars, questLog->vars, sizeof(gSaveBlock1Ptr->vars));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void BackUpTrainerRematchesToVars(void)
|
static void BackUpTrainerRematches(void)
|
||||||
{
|
{
|
||||||
u16 i, j;
|
u16 i, j;
|
||||||
u16 sp0[4];
|
u16 vars[4];
|
||||||
|
|
||||||
for (i = 0; i < 4; i++)
|
// Save the contents of gSaveBlock1Ptr->trainerRematches to the 4 saveblock
|
||||||
|
// vars starting at VAR_QLBAK_TRAINER_REMATCHES. The rematch array is 100 bytes
|
||||||
|
// long, but each byte is only ever 0 or 1 to indicate that a rematch is available.
|
||||||
|
// They're compressed into single bits across 4 u16 save vars, which is only enough
|
||||||
|
// to save 64 elements of gSaveBlock1Ptr->trainerRematches. 64 however is the maximum
|
||||||
|
// that could ever be used, as its the maximum number of NPCs per map (OBJECT_EVENT_TEMPLATES_COUNT).
|
||||||
|
for (i = 0; i < ARRAY_COUNT(vars); i++)
|
||||||
{
|
{
|
||||||
sp0[i] = 0;
|
vars[i] = 0;
|
||||||
|
|
||||||
|
// 16 bits per var
|
||||||
for (j = 0; j < 16; j++)
|
for (j = 0; j < 16; j++)
|
||||||
{
|
{
|
||||||
if (gSaveBlock1Ptr->trainerRematches[16 * i + j])
|
if (gSaveBlock1Ptr->trainerRematches[16 * i + j])
|
||||||
{
|
vars[i] += (1 << j);
|
||||||
sp0[i] += (1 << j);
|
|
||||||
}
|
}
|
||||||
}
|
VarSet(VAR_QLBAK_TRAINER_REMATCHES + i, vars[i]);
|
||||||
VarSet(VAR_QLBAK_TRAINER_REMATCHES + i, sp0[i]);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void BackUpMapLayoutToVar(void)
|
static void BackUpMapLayout(void)
|
||||||
{
|
{
|
||||||
VarSet(VAR_QLBAK_MAP_LAYOUT, gSaveBlock1Ptr->mapLayoutId);
|
VarSet(VAR_QLBAK_MAP_LAYOUT, gSaveBlock1Ptr->mapLayoutId);
|
||||||
}
|
}
|
||||||
@@ -623,7 +635,7 @@ void sub_81113E4(void)
|
|||||||
|
|
||||||
CpuCopy16(questLog->flags, gSaveBlock1Ptr->flags, sizeof(gSaveBlock1Ptr->flags));
|
CpuCopy16(questLog->flags, gSaveBlock1Ptr->flags, sizeof(gSaveBlock1Ptr->flags));
|
||||||
CpuCopy16(questLog->vars, gSaveBlock1Ptr->vars, sizeof(gSaveBlock1Ptr->vars));
|
CpuCopy16(questLog->vars, gSaveBlock1Ptr->vars, sizeof(gSaveBlock1Ptr->vars));
|
||||||
sub_8111688();
|
RestoreTrainerRematches();
|
||||||
}
|
}
|
||||||
|
|
||||||
struct PokemonAndSomethingElse
|
struct PokemonAndSomethingElse
|
||||||
@@ -735,35 +747,36 @@ static u16 QuestLog_GetBoxMonCount(void)
|
|||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_8111688(void)
|
// Inverse of BackUpTrainerRematches
|
||||||
|
static void RestoreTrainerRematches(void)
|
||||||
{
|
{
|
||||||
u16 i, j;
|
u16 i, j;
|
||||||
u16 sp0[4];
|
u16 vars[4];
|
||||||
|
|
||||||
for (i = 0; i < 4; i++)
|
for (i = 0; i < ARRAY_COUNT(vars); i++)
|
||||||
{
|
{
|
||||||
sp0[i] = VarGet(VAR_QLBAK_TRAINER_REMATCHES + i);
|
vars[i] = VarGet(VAR_QLBAK_TRAINER_REMATCHES + i);
|
||||||
|
|
||||||
|
// 16 bits per var
|
||||||
for (j = 0; j < 16; j++)
|
for (j = 0; j < 16; j++)
|
||||||
{
|
{
|
||||||
if (sp0[i] & 1)
|
if (vars[i] & 1)
|
||||||
gSaveBlock1Ptr->trainerRematches[16 * i + j] = 30;
|
gSaveBlock1Ptr->trainerRematches[16 * i + j] = 30;
|
||||||
else
|
else
|
||||||
gSaveBlock1Ptr->trainerRematches[16 * i + j] = 0;
|
gSaveBlock1Ptr->trainerRematches[16 * i + j] = 0;
|
||||||
sp0[i] >>= 1;
|
vars[i] >>= 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void sub_8111708(void)
|
// Inverse of BackUpMapLayout
|
||||||
|
void QL_RestoreMapLayoutId(void)
|
||||||
{
|
{
|
||||||
struct MapHeader sp0;
|
|
||||||
|
|
||||||
gSaveBlock1Ptr->mapLayoutId = VarGet(VAR_QLBAK_MAP_LAYOUT);
|
gSaveBlock1Ptr->mapLayoutId = VarGet(VAR_QLBAK_MAP_LAYOUT);
|
||||||
if (gSaveBlock1Ptr->mapLayoutId == 0)
|
if (gSaveBlock1Ptr->mapLayoutId == 0)
|
||||||
{
|
{
|
||||||
sp0 = *Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum);
|
struct MapHeader header = *Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum);
|
||||||
gSaveBlock1Ptr->mapLayoutId = sp0.mapLayoutId;
|
gSaveBlock1Ptr->mapLayoutId = header.mapLayoutId;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -775,7 +788,7 @@ static void ReadQuestLogScriptFromSav1(u8 sceneNum, struct QuestLogAction * a1)
|
|||||||
u16 r9 = 0;
|
u16 r9 = 0;
|
||||||
|
|
||||||
memset(a1, 0, 32 * sizeof(struct QuestLogAction));
|
memset(a1, 0, 32 * sizeof(struct QuestLogAction));
|
||||||
for (i = 0; i < NELEMS(gUnknown_203AE0C); i++)
|
for (i = 0; i < ARRAY_COUNT(gUnknown_203AE0C); i++)
|
||||||
{
|
{
|
||||||
gUnknown_203AE0C[i] = NULL;
|
gUnknown_203AE0C[i] = NULL;
|
||||||
}
|
}
|
||||||
@@ -814,7 +827,7 @@ static void ReadQuestLogScriptFromSav1(u8 sceneNum, struct QuestLogAction * a1)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void QuestLog_BeginFadeAtEndOfScene(s8 delay)
|
static void DoSceneEndTransition(s8 delay)
|
||||||
{
|
{
|
||||||
FadeScreen(FADE_TO_BLACK, delay);
|
FadeScreen(FADE_TO_BLACK, delay);
|
||||||
sQuestLogCB = QuestLog_AdvancePlayhead;
|
sQuestLogCB = QuestLog_AdvancePlayhead;
|
||||||
@@ -822,8 +835,9 @@ static void QuestLog_BeginFadeAtEndOfScene(s8 delay)
|
|||||||
|
|
||||||
static void QuestLog_AdvancePlayhead(void)
|
static void QuestLog_AdvancePlayhead(void)
|
||||||
{
|
{
|
||||||
if (!gPaletteFade.active)
|
if (gPaletteFade.active)
|
||||||
{
|
return;
|
||||||
|
|
||||||
LockPlayerFieldControls();
|
LockPlayerFieldControls();
|
||||||
if (++sCurrentSceneNum < QUEST_LOG_SCENE_COUNT && gSaveBlock1Ptr->questLog[sCurrentSceneNum].startType != 0)
|
if (++sCurrentSceneNum < QUEST_LOG_SCENE_COUNT && gSaveBlock1Ptr->questLog[sCurrentSceneNum].startType != 0)
|
||||||
{
|
{
|
||||||
@@ -835,7 +849,6 @@ static void QuestLog_AdvancePlayhead(void)
|
|||||||
gQuestLogPlaybackState = QL_PLAYBACK_STATE_0;
|
gQuestLogPlaybackState = QL_PLAYBACK_STATE_0;
|
||||||
QuestLog_StartFinalScene();
|
QuestLog_StartFinalScene();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void QuestLog_StartFinalScene(void)
|
static void QuestLog_StartFinalScene(void)
|
||||||
@@ -855,7 +868,17 @@ void QuestLog_AdvancePlayhead_(void)
|
|||||||
QuestLog_AdvancePlayhead();
|
QuestLog_AdvancePlayhead();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool8 QuestLog_SchedulePlaybackCB(void (*callback)(void))
|
#define tTimer data[0]
|
||||||
|
#define tState data[1]
|
||||||
|
#define DATA_IDX_CALLBACK 14 // data[14] and data[15]
|
||||||
|
|
||||||
|
// This is used to avoid recording or displaying certain windows or images, like a shop menu.
|
||||||
|
// During playback it returns TRUE (meaning the action should be avoided) and calls the
|
||||||
|
// provided callback, which would be used to e.g. destroy any resources that were set up to do
|
||||||
|
// whatever is being avoided. In all cases the provided callback will be QL_DestroyAbortedDisplay.
|
||||||
|
// If we are not currently in playback return FALSE (meaning allow the action to occur) and
|
||||||
|
// stop recording (if we are currently).
|
||||||
|
bool8 QL_AvoidDisplay(void (*callback)(void))
|
||||||
{
|
{
|
||||||
u8 taskId;
|
u8 taskId;
|
||||||
|
|
||||||
@@ -866,37 +889,41 @@ bool8 QuestLog_SchedulePlaybackCB(void (*callback)(void))
|
|||||||
break;
|
break;
|
||||||
case QL_STATE_PLAYBACK:
|
case QL_STATE_PLAYBACK:
|
||||||
gQuestLogPlaybackState = QL_PLAYBACK_STATE_3;
|
gQuestLogPlaybackState = QL_PLAYBACK_STATE_3;
|
||||||
taskId = CreateTask(Task_RunPlaybackCB, 80);
|
taskId = CreateTask(Task_AvoidDisplay, 80);
|
||||||
gTasks[taskId].data[0] = 0;
|
gTasks[taskId].tTimer = 0;
|
||||||
gTasks[taskId].data[1] = 0;
|
gTasks[taskId].tState = 0;
|
||||||
SetWordTaskArg(taskId, 14, (uintptr_t)callback);
|
SetWordTaskArg(taskId, DATA_IDX_CALLBACK, (uintptr_t)callback);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void Task_RunPlaybackCB(u8 taskId)
|
static void Task_AvoidDisplay(u8 taskId)
|
||||||
{
|
{
|
||||||
void (*routine)(void);
|
void (*routine)(void);
|
||||||
s16 *data = gTasks[taskId].data;
|
s16 *data = gTasks[taskId].data;
|
||||||
|
|
||||||
switch (data[1])
|
switch (tState)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
if (++data[0] == 0x7F)
|
// Instead of displaying anything, wait and then end the scene.
|
||||||
|
if (++tTimer == 127)
|
||||||
{
|
{
|
||||||
BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, 0);
|
BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, 0);
|
||||||
sPlaybackControl.sceneEndMode = 2;
|
sPlaybackControl.endMode = END_MODE_SCENE;
|
||||||
data[1]++;
|
tState++;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
if (!gPaletteFade.active)
|
if (!gPaletteFade.active)
|
||||||
{
|
{
|
||||||
gQuestLogPlaybackState = QL_PLAYBACK_STATE_0;
|
gQuestLogPlaybackState = QL_PLAYBACK_STATE_0;
|
||||||
routine = (void (*)(void)) GetWordTaskArg(taskId, 14);
|
|
||||||
|
// Call the provided function (if any). In practice this is always QL_DestroyAbortedDisplay
|
||||||
|
routine = (void (*)(void)) GetWordTaskArg(taskId, DATA_IDX_CALLBACK);
|
||||||
if (routine != NULL)
|
if (routine != NULL)
|
||||||
routine();
|
routine();
|
||||||
|
|
||||||
DestroyTask(taskId);
|
DestroyTask(taskId);
|
||||||
sQuestLogCB = QuestLog_AdvancePlayhead;
|
sQuestLogCB = QuestLog_AdvancePlayhead;
|
||||||
}
|
}
|
||||||
@@ -904,6 +931,9 @@ static void Task_RunPlaybackCB(u8 taskId)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#undef tTimer
|
||||||
|
#undef tState
|
||||||
|
|
||||||
static void QuestLog_PlayCurrentEvent(void)
|
static void QuestLog_PlayCurrentEvent(void)
|
||||||
{
|
{
|
||||||
if (sPlaybackControl.state == 1)
|
if (sPlaybackControl.state == 1)
|
||||||
@@ -924,7 +954,7 @@ static void QuestLog_PlayCurrentEvent(void)
|
|||||||
sPlaybackControl.overlapTimer = 0;
|
sPlaybackControl.overlapTimer = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (sPlaybackControl.cursor < NELEMS(gUnknown_203AE0C))
|
if (sPlaybackControl.cursor < ARRAY_COUNT(gUnknown_203AE0C))
|
||||||
{
|
{
|
||||||
if (sub_8113B44(gUnknown_203AE0C[sPlaybackControl.cursor]) == 1)
|
if (sub_8113B44(gUnknown_203AE0C[sPlaybackControl.cursor]) == 1)
|
||||||
HandleShowQuestLogMessage();
|
HandleShowQuestLogMessage();
|
||||||
@@ -981,26 +1011,29 @@ bool8 sub_8111C2C(void)
|
|||||||
|
|
||||||
void HandleQuestLogInput(void)
|
void HandleQuestLogInput(void)
|
||||||
{
|
{
|
||||||
if (sPlaybackControl.sceneEndMode != 0)
|
// Ignore input if we're currently ending a scene/playback
|
||||||
|
if (sPlaybackControl.endMode != END_MODE_NONE)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (JOY_NEW(A_BUTTON))
|
if (JOY_NEW(A_BUTTON))
|
||||||
{
|
{
|
||||||
sPlaybackControl.sceneEndMode = 2;
|
// Pressed A, skip to next scene
|
||||||
|
sPlaybackControl.endMode = END_MODE_SCENE;
|
||||||
gQuestLogPlaybackState = QL_PLAYBACK_STATE_0;
|
gQuestLogPlaybackState = QL_PLAYBACK_STATE_0;
|
||||||
QuestLog_BeginFadeAtEndOfScene(-3);
|
DoSceneEndTransition(-3);
|
||||||
}
|
}
|
||||||
else if (JOY_NEW(B_BUTTON))
|
else if (JOY_NEW(B_BUTTON))
|
||||||
{
|
{
|
||||||
sPlaybackControl.sceneEndMode = 1;
|
// Pressed B, end playback
|
||||||
|
sPlaybackControl.endMode = END_MODE_FINISH;
|
||||||
gQuestLogPlaybackState = QL_PLAYBACK_STATE_0;
|
gQuestLogPlaybackState = QL_PLAYBACK_STATE_0;
|
||||||
QuestLog_SkipToEndOfPlayback(-3);
|
DoSkipToEndTransition(-3);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool8 QuestLogScenePlaybackIsEnding(void)
|
bool8 QuestLogScenePlaybackIsEnding(void)
|
||||||
{
|
{
|
||||||
if (sPlaybackControl.sceneEndMode != 0)
|
if (sPlaybackControl.endMode != END_MODE_NONE)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
@@ -1072,7 +1105,7 @@ static void QuestLog_CloseTextWindow(void)
|
|||||||
CopyWindowToVram(sWindowIds[WIN_BOTTOM_BAR], COPYWIN_MAP);
|
CopyWindowToVram(sWindowIds[WIN_BOTTOM_BAR], COPYWIN_MAP);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void QuestLog_SkipToEndOfPlayback(s8 delay)
|
static void DoSkipToEndTransition(s8 delay)
|
||||||
{
|
{
|
||||||
FadeScreen(FADE_TO_BLACK, delay);
|
FadeScreen(FADE_TO_BLACK, delay);
|
||||||
sQuestLogCB = QuestLog_WaitFadeAndCancelPlayback;
|
sQuestLogCB = QuestLog_WaitFadeAndCancelPlayback;
|
||||||
@@ -1134,7 +1167,7 @@ static void Task_QuestLogScene_SavedGame(u8 taskId)
|
|||||||
|
|
||||||
if (!gPaletteFade.active)
|
if (!gPaletteFade.active)
|
||||||
{
|
{
|
||||||
if (sPlaybackControl.sceneEndMode != 1)
|
if (sPlaybackControl.endMode != END_MODE_FINISH)
|
||||||
{
|
{
|
||||||
GetMapNameGeneric(gStringVar1, gMapHeader.regionMapSectionId);
|
GetMapNameGeneric(gStringVar1, gMapHeader.regionMapSectionId);
|
||||||
StringExpandPlaceholders(gStringVar4, gText_QuestLog_SavedGameAtLocation);
|
StringExpandPlaceholders(gStringVar4, gText_QuestLog_SavedGameAtLocation);
|
||||||
@@ -1154,7 +1187,7 @@ static void Task_WaitAtEndOfQuestLog(u8 taskId)
|
|||||||
{
|
{
|
||||||
struct Task *task = &gTasks[taskId];
|
struct Task *task = &gTasks[taskId];
|
||||||
|
|
||||||
if (JOY_NEW(A_BUTTON | B_BUTTON) || task->tTimer >= 127 || sPlaybackControl.sceneEndMode == 1)
|
if (JOY_NEW(A_BUTTON | B_BUTTON) || task->tTimer >= 127 || sPlaybackControl.endMode == END_MODE_FINISH)
|
||||||
{
|
{
|
||||||
QuestLog_CloseTextWindow();
|
QuestLog_CloseTextWindow();
|
||||||
task->tTimer = 0;
|
task->tTimer = 0;
|
||||||
@@ -1207,7 +1240,7 @@ static void Task_EndQuestLog(u8 taskId)
|
|||||||
tState++;
|
tState++;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
if (sPlaybackControl.sceneEndMode == 1)
|
if (sPlaybackControl.endMode == END_MODE_FINISH)
|
||||||
ShowMapNamePopup(TRUE);
|
ShowMapNamePopup(TRUE);
|
||||||
CpuCopy16(sPalettesBackup, gPlttBufferUnfaded, PLTT_SIZE);
|
CpuCopy16(sPalettesBackup, gPlttBufferUnfaded, PLTT_SIZE);
|
||||||
Free(sPalettesBackup);
|
Free(sPalettesBackup);
|
||||||
@@ -1618,6 +1651,8 @@ void sub_8112B3C(void)
|
|||||||
gQuestLogPlaybackState = QL_PLAYBACK_STATE_3;
|
gQuestLogPlaybackState = QL_PLAYBACK_STATE_3;
|
||||||
break;
|
break;
|
||||||
case QL_ACTION_WAIT:
|
case QL_ACTION_WAIT:
|
||||||
|
// Nothing. The wait action uses sNextActionDelay to add a pause to playback.
|
||||||
|
// When the counter is finished and this is reached there's nothing else that needs to be done.
|
||||||
break;
|
break;
|
||||||
case QL_ACTION_SCENE_END:
|
case QL_ACTION_SCENE_END:
|
||||||
gQuestLogPlaybackState = QL_PLAYBACK_STATE_0;
|
gQuestLogPlaybackState = QL_PLAYBACK_STATE_0;
|
||||||
|
|||||||
+2
-2
@@ -1818,7 +1818,7 @@ bool8 ScrCmd_showmoneybox(struct ScriptContext * ctx)
|
|||||||
u8 y = ScriptReadByte(ctx);
|
u8 y = ScriptReadByte(ctx);
|
||||||
u8 ignore = ScriptReadByte(ctx);
|
u8 ignore = ScriptReadByte(ctx);
|
||||||
|
|
||||||
if (!ignore && QuestLog_SchedulePlaybackCB(QLPlaybackCB_DestroyScriptMenuMonPicSprites) != TRUE)
|
if (!ignore && QL_AvoidDisplay(QL_DestroyAbortedDisplay) != TRUE)
|
||||||
DrawMoneyBox(GetMoney(&gSaveBlock1Ptr->money), x, y);
|
DrawMoneyBox(GetMoney(&gSaveBlock1Ptr->money), x, y);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
@@ -1848,7 +1848,7 @@ bool8 ScrCmd_showcoinsbox(struct ScriptContext * ctx)
|
|||||||
u8 x = ScriptReadByte(ctx);
|
u8 x = ScriptReadByte(ctx);
|
||||||
u8 y = ScriptReadByte(ctx);
|
u8 y = ScriptReadByte(ctx);
|
||||||
|
|
||||||
if (QuestLog_SchedulePlaybackCB(QLPlaybackCB_DestroyScriptMenuMonPicSprites) != TRUE)
|
if (QL_AvoidDisplay(QL_DestroyAbortedDisplay) != TRUE)
|
||||||
ShowCoinsWindow(GetCoins(), x, y);
|
ShowCoinsWindow(GetCoins(), x, y);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|||||||
+19
-15
@@ -711,7 +711,7 @@ static void DrawVerticalMultichoiceMenu(u8 left, u8 top, u8 mcId, u8 ignoreBpres
|
|||||||
u8 windowId;
|
u8 windowId;
|
||||||
const struct MenuAction * list;
|
const struct MenuAction * list;
|
||||||
|
|
||||||
if ((ignoreBpress & 2) || QuestLog_SchedulePlaybackCB(QLPlaybackCB_DestroyScriptMenuMonPicSprites) != TRUE)
|
if ((ignoreBpress & 2) || QL_AvoidDisplay(QL_DestroyAbortedDisplay) != TRUE)
|
||||||
{
|
{
|
||||||
ignoreBpress &= 1;
|
ignoreBpress &= 1;
|
||||||
count = gScriptMultiChoiceMenus[mcId].count;
|
count = gScriptMultiChoiceMenus[mcId].count;
|
||||||
@@ -729,7 +729,7 @@ static void DrawVerticalMultichoiceMenu(u8 left, u8 top, u8 mcId, u8 ignoreBpres
|
|||||||
height = GetMCWindowHeight(count);
|
height = GetMCWindowHeight(count);
|
||||||
windowId = CreateWindowFromRect(left, top, width, height);
|
windowId = CreateWindowFromRect(left, top, width, height);
|
||||||
SetStdWindowBorderStyle(windowId, FALSE);
|
SetStdWindowBorderStyle(windowId, FALSE);
|
||||||
if (mcId == 30 || mcId == 13 || mcId == 41)
|
if (mcId == MULTICHOICE_GAME_CORNER_TMPRIZES || mcId == MULTICHOICE_BIKE_SHOP || mcId == MULTICHOICE_GAME_CORNER_BATTLE_ITEM_PRIZES)
|
||||||
MultichoiceList_PrintItems(windowId, FONT_NORMAL, 8, 2, 14, count, list, 0, 2);
|
MultichoiceList_PrintItems(windowId, FONT_NORMAL, 8, 2, 14, count, list, 0, 2);
|
||||||
else
|
else
|
||||||
MultichoiceList_PrintItems(windowId, FONT_NORMAL, 8, 2, 14, count, list, 0, 2);
|
MultichoiceList_PrintItems(windowId, FONT_NORMAL, 8, 2, 14, count, list, 0, 2);
|
||||||
@@ -769,7 +769,7 @@ static u8 GetMCWindowHeight(u8 count)
|
|||||||
static void CreateMCMenuInputHandlerTask(u8 ignoreBpress, u8 count, u8 windowId, u8 mcId)
|
static void CreateMCMenuInputHandlerTask(u8 ignoreBpress, u8 count, u8 windowId, u8 mcId)
|
||||||
{
|
{
|
||||||
u8 taskId;
|
u8 taskId;
|
||||||
if (mcId == 39 || mcId == 47 || mcId == 50)
|
if (mcId == MULTICHOICE_TRADE_CENTER_COLOSSEUM || mcId == MULTICHOICE_TRADE_COLOSSEUM_CRUSH || mcId == MULTICHOICE_TRADE_COLOSSEUM_2)
|
||||||
sDelay = 12;
|
sDelay = 12;
|
||||||
else
|
else
|
||||||
sDelay = 0;
|
sDelay = 0;
|
||||||
@@ -845,11 +845,12 @@ bool8 ScriptMenu_YesNo(u8 unused, u8 stuff)
|
|||||||
if (FuncIsActiveTask(Task_YesNoMenu_HandleInput) == TRUE)
|
if (FuncIsActiveTask(Task_YesNoMenu_HandleInput) == TRUE)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
gSpecialVar_Result = SCR_MENU_UNSET;
|
gSpecialVar_Result = SCR_MENU_UNSET;
|
||||||
if (!QuestLog_SchedulePlaybackCB(QLPlaybackCB_DestroyScriptMenuMonPicSprites))
|
|
||||||
{
|
if (QL_AvoidDisplay(QL_DestroyAbortedDisplay))
|
||||||
|
return TRUE;
|
||||||
|
|
||||||
DisplayYesNoMenuDefaultYes();
|
DisplayYesNoMenuDefaultYes();
|
||||||
CreateTask(Task_YesNoMenu_HandleInput, 80);
|
CreateTask(Task_YesNoMenu_HandleInput, 80);
|
||||||
}
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -900,8 +901,10 @@ bool8 ScriptMenu_MultichoiceGrid(u8 left, u8 top, u8 multichoiceId, u8 a4, u8 co
|
|||||||
if (FuncIsActiveTask(Hask_MultichoiceGridMenu_HandleInput) == TRUE)
|
if (FuncIsActiveTask(Hask_MultichoiceGridMenu_HandleInput) == TRUE)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
gSpecialVar_Result = SCR_MENU_UNSET;
|
gSpecialVar_Result = SCR_MENU_UNSET;
|
||||||
if (QuestLog_SchedulePlaybackCB(QLPlaybackCB_DestroyScriptMenuMonPicSprites) != TRUE)
|
|
||||||
{
|
if (QL_AvoidDisplay(QL_DestroyAbortedDisplay) == TRUE)
|
||||||
|
return TRUE;
|
||||||
|
|
||||||
list = gScriptMultiChoiceMenus[multichoiceId].list;
|
list = gScriptMultiChoiceMenus[multichoiceId].list;
|
||||||
count = gScriptMultiChoiceMenus[multichoiceId].count;
|
count = gScriptMultiChoiceMenus[multichoiceId].count;
|
||||||
width = GetMenuWidthFromList(list, count) + 1;
|
width = GetMenuWidthFromList(list, count) + 1;
|
||||||
@@ -913,7 +916,7 @@ bool8 ScriptMenu_MultichoiceGrid(u8 left, u8 top, u8 multichoiceId, u8 a4, u8 co
|
|||||||
MultichoiceGrid_PrintItems(gTasks[taskId].data[6], FONT_NORMAL_COPY_1, width * 8, 16, columnCount, rowCount, list);
|
MultichoiceGrid_PrintItems(gTasks[taskId].data[6], FONT_NORMAL_COPY_1, width * 8, 16, columnCount, rowCount, list);
|
||||||
MultichoiceGrid_InitCursor(gTasks[taskId].data[6], FONT_NORMAL_COPY_1, 0, 1, width * 8, columnCount, rowCount, 0);
|
MultichoiceGrid_InitCursor(gTasks[taskId].data[6], FONT_NORMAL_COPY_1, 0, 1, width * 8, columnCount, rowCount, 0);
|
||||||
ScheduleBgCopyTilemapToVram(0);
|
ScheduleBgCopyTilemapToVram(0);
|
||||||
}
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1032,7 +1035,7 @@ bool8 ScriptMenu_ShowPokemonPic(u16 species, u8 x, u8 y)
|
|||||||
{
|
{
|
||||||
u8 spriteId;
|
u8 spriteId;
|
||||||
u8 taskId;
|
u8 taskId;
|
||||||
if (QuestLog_SchedulePlaybackCB(QLPlaybackCB_DestroyScriptMenuMonPicSprites) == TRUE)
|
if (QL_AvoidDisplay(QL_DestroyAbortedDisplay) == TRUE)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
if (FindTaskIdByFunc(Task_ScriptShowMonPic) != 0xFF)
|
if (FindTaskIdByFunc(Task_ScriptShowMonPic) != 0xFF)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
@@ -1116,7 +1119,7 @@ bool8 OpenMuseumFossilPic(void)
|
|||||||
{
|
{
|
||||||
u8 spriteId;
|
u8 spriteId;
|
||||||
u8 taskId;
|
u8 taskId;
|
||||||
if (QuestLog_SchedulePlaybackCB(QLPlaybackCB_DestroyScriptMenuMonPicSprites) == TRUE)
|
if (QL_AvoidDisplay(QL_DestroyAbortedDisplay) == TRUE)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
if (FindTaskIdByFunc(Task_WaitMuseumFossilPic) != 0xFF)
|
if (FindTaskIdByFunc(Task_WaitMuseumFossilPic) != 0xFF)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
@@ -1169,7 +1172,7 @@ static void DestroyScriptMenuWindow(u8 windowId)
|
|||||||
RemoveWindow(windowId);
|
RemoveWindow(windowId);
|
||||||
}
|
}
|
||||||
|
|
||||||
void QLPlaybackCB_DestroyScriptMenuMonPicSprites(void)
|
void QL_DestroyAbortedDisplay(void)
|
||||||
{
|
{
|
||||||
u8 taskId;
|
u8 taskId;
|
||||||
s16 *data;
|
s16 *data;
|
||||||
@@ -1205,8 +1208,10 @@ void DrawSeagallopDestinationMenu(void)
|
|||||||
u8 windowId;
|
u8 windowId;
|
||||||
u8 i;
|
u8 i;
|
||||||
gSpecialVar_Result = SCR_MENU_UNSET;
|
gSpecialVar_Result = SCR_MENU_UNSET;
|
||||||
if (QuestLog_SchedulePlaybackCB(QLPlaybackCB_DestroyScriptMenuMonPicSprites) != TRUE)
|
|
||||||
{
|
if (QL_AvoidDisplay(QL_DestroyAbortedDisplay) == TRUE)
|
||||||
|
return;
|
||||||
|
|
||||||
if (gSpecialVar_0x8005 == 1)
|
if (gSpecialVar_0x8005 == 1)
|
||||||
{
|
{
|
||||||
if (gSpecialVar_0x8004 < SEAGALLOP_FIVE_ISLAND)
|
if (gSpecialVar_0x8004 < SEAGALLOP_FIVE_ISLAND)
|
||||||
@@ -1242,7 +1247,6 @@ void DrawSeagallopDestinationMenu(void)
|
|||||||
Menu_InitCursor(windowId, FONT_NORMAL, 0, 2, 16, nitems, 0);
|
Menu_InitCursor(windowId, FONT_NORMAL, 0, 2, 16, nitems, 0);
|
||||||
CreateMCMenuInputHandlerTask(FALSE, nitems, windowId, 0xFF);
|
CreateMCMenuInputHandlerTask(FALSE, nitems, windowId, 0xFF);
|
||||||
ScheduleBgCopyTilemapToVram(0);
|
ScheduleBgCopyTilemapToVram(0);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
u16 GetSelectedSeagallopDestination(void)
|
u16 GetSelectedSeagallopDestination(void)
|
||||||
|
|||||||
+353
-350
@@ -26,6 +26,13 @@
|
|||||||
#include "constants/quest_log.h"
|
#include "constants/quest_log.h"
|
||||||
#include "constants/trainer_types.h"
|
#include "constants/trainer_types.h"
|
||||||
|
|
||||||
|
// Each trainer can have up to 6 parties, including their original party.
|
||||||
|
// Each rematch is unavailable until the player has progressed to a certain point in the story (see TryGetRematchTrainerIdGivenGameState).
|
||||||
|
// A list of the trainer ids for each party is in sRematches. If a party doesn't update for a progression point it will have SKIP instead,
|
||||||
|
// and that trainer id will be ignored.
|
||||||
|
#define MAX_REMATCH_PARTIES 6
|
||||||
|
#define SKIP 0xFFFF
|
||||||
|
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
VSSEEKER_NOT_CHARGED,
|
VSSEEKER_NOT_CHARGED,
|
||||||
@@ -47,13 +54,12 @@ typedef enum
|
|||||||
VSSEEKER_RESPONSE_FOUND_REMATCHES
|
VSSEEKER_RESPONSE_FOUND_REMATCHES
|
||||||
} VsSeekerResponseCode;
|
} VsSeekerResponseCode;
|
||||||
|
|
||||||
// static types
|
struct RematchData
|
||||||
typedef struct VsSeekerData
|
|
||||||
{
|
{
|
||||||
u16 trainerIdxs[6];
|
u16 trainerIdxs[MAX_REMATCH_PARTIES];
|
||||||
u16 mapGroup; // unused
|
u16 mapGroup; // unused
|
||||||
u16 mapNum; // unused
|
u16 mapNum; // unused
|
||||||
} VsSeekerData;
|
};
|
||||||
|
|
||||||
struct VsSeekerTrainerInfo
|
struct VsSeekerTrainerInfo
|
||||||
{
|
{
|
||||||
@@ -91,19 +97,19 @@ static void Task_VsSeeker_2(u8 taskId);
|
|||||||
static void GatherNearbyTrainerInfo(void);
|
static void GatherNearbyTrainerInfo(void);
|
||||||
static void Task_VsSeeker_3(u8 taskId);
|
static void Task_VsSeeker_3(u8 taskId);
|
||||||
static bool8 CanUseVsSeeker(void);
|
static bool8 CanUseVsSeeker(void);
|
||||||
static u8 GetVsSeekerResponseInArea(const VsSeekerData * vsSeekerData);
|
static u8 GetVsSeekerResponseInArea(const struct RematchData * vsSeekerData);
|
||||||
static u8 GetRematchTrainerIdGivenGameState(const u16 *trainerIdxs, u8 rematchIdx);
|
static u8 GetRematchTrainerIdGivenGameState(const u16 *trainerIdxs, u8 rematchIdx);
|
||||||
static u8 ShouldTryRematchBattleInternal(const VsSeekerData * vsSeekerData, u16 trainerBattleOpponent);
|
static u8 ShouldTryRematchBattleInternal(const struct RematchData * vsSeekerData, u16 trainerBattleOpponent);
|
||||||
static u8 HasRematchTrainerAlreadyBeenFought(const VsSeekerData * vsSeekerData, u16 trainerBattleOpponent);
|
static u8 HasRematchTrainerAlreadyBeenFought(const struct RematchData * vsSeekerData, u16 trainerBattleOpponent);
|
||||||
static int LookupVsSeekerOpponentInArray(const VsSeekerData * array, u16 trainerId);
|
static int LookupVsSeekerOpponentInArray(const struct RematchData * array, u16 trainerId);
|
||||||
static bool8 IsTrainerReadyForRematchInternal(const VsSeekerData * array, u16 trainerIdx);
|
static bool8 IsTrainerReadyForRematchInternal(const struct RematchData * array, u16 trainerIdx);
|
||||||
static u8 GetRunningBehaviorFromGraphicsId(u8 graphicsId);
|
static u8 GetRunningBehaviorFromGraphicsId(u8 graphicsId);
|
||||||
static u16 GetTrainerFlagFromScript(const u8 * script);
|
static u16 GetTrainerFlagFromScript(const u8 * script);
|
||||||
static int GetRematchIdx(const VsSeekerData * vsSeekerData, u16 trainerFlagIdx);
|
static int GetRematchIdx(const struct RematchData * vsSeekerData, u16 trainerFlagIdx);
|
||||||
static bool32 IsThisTrainerRematchable(u32 localId);
|
static bool32 IsThisTrainerRematchable(u32 localId);
|
||||||
static void ClearAllTrainerRematchStates(void);
|
static void ClearAllTrainerRematchStates(void);
|
||||||
static bool8 IsTrainerVisibleOnScreen(struct VsSeekerTrainerInfo * trainerInfo);
|
static bool8 IsTrainerVisibleOnScreen(struct VsSeekerTrainerInfo * trainerInfo);
|
||||||
static u8 GetNextAvailableRematchTrainer(const VsSeekerData * vsSeekerData, u16 trainerFlagNo, u8 * idxPtr);
|
static u8 GetNextAvailableRematchTrainer(const struct RematchData * vsSeekerData, u16 trainerFlagNo, u8 * idxPtr);
|
||||||
static u8 GetRematchableTrainerLocalId(void);
|
static u8 GetRematchableTrainerLocalId(void);
|
||||||
static void StartTrainerObjectMovementScript(struct VsSeekerTrainerInfo * trainerInfo, const u8 * script);
|
static void StartTrainerObjectMovementScript(struct VsSeekerTrainerInfo * trainerInfo, const u8 * script);
|
||||||
static u8 GetCurVsSeekerResponse(s32 vsSeekerIdx, u16 trainerIdx);
|
static u8 GetCurVsSeekerResponse(s32 vsSeekerIdx, u16 trainerIdx);
|
||||||
@@ -111,450 +117,447 @@ static void StartAllRespondantIdleMovements(void);
|
|||||||
static bool8 ObjectEventIdIsSane(u8 objectEventId);
|
static bool8 ObjectEventIdIsSane(u8 objectEventId);
|
||||||
static u8 GetRandomFaceDirectionMovementType();
|
static u8 GetRandomFaceDirectionMovementType();
|
||||||
|
|
||||||
// rodata
|
static const struct RematchData sRematches[] = {
|
||||||
static const VsSeekerData sVsSeekerData[] = {
|
{ {TRAINER_YOUNGSTER_BEN, TRAINER_YOUNGSTER_BEN_2, SKIP, TRAINER_YOUNGSTER_BEN_3, TRAINER_YOUNGSTER_BEN_4}, MAP(ROUTE3) },
|
||||||
{ {TRAINER_YOUNGSTER_BEN, TRAINER_YOUNGSTER_BEN_2, 0xFFFF, TRAINER_YOUNGSTER_BEN_3, TRAINER_YOUNGSTER_BEN_4},
|
{ {TRAINER_YOUNGSTER_CALVIN, TRAINER_YOUNGSTER_CALVIN}, MAP(ROUTE3) },
|
||||||
MAP_GROUP(ROUTE3), MAP_NUM(ROUTE3) },
|
{ {TRAINER_BUG_CATCHER_COLTON, TRAINER_BUG_CATCHER_COLTON_2, SKIP, TRAINER_BUG_CATCHER_COLTON_3, SKIP, TRAINER_BUG_CATCHER_COLTON_4},
|
||||||
{ {TRAINER_YOUNGSTER_CALVIN, TRAINER_YOUNGSTER_CALVIN},
|
MAP(ROUTE3) },
|
||||||
MAP_GROUP(ROUTE3), MAP_NUM(ROUTE3) },
|
|
||||||
{ {TRAINER_BUG_CATCHER_COLTON, TRAINER_BUG_CATCHER_COLTON_2, 0xFFFF, TRAINER_BUG_CATCHER_COLTON_3, 0xFFFF, TRAINER_BUG_CATCHER_COLTON_4},
|
|
||||||
MAP_GROUP(ROUTE3), MAP_NUM(ROUTE3) },
|
|
||||||
{ {TRAINER_BUG_CATCHER_GREG, TRAINER_BUG_CATCHER_GREG},
|
{ {TRAINER_BUG_CATCHER_GREG, TRAINER_BUG_CATCHER_GREG},
|
||||||
MAP_GROUP(ROUTE3), MAP_NUM(ROUTE3) },
|
MAP(ROUTE3) },
|
||||||
{ {TRAINER_BUG_CATCHER_JAMES, TRAINER_BUG_CATCHER_JAMES},
|
{ {TRAINER_BUG_CATCHER_JAMES, TRAINER_BUG_CATCHER_JAMES},
|
||||||
MAP_GROUP(ROUTE3), MAP_NUM(ROUTE3) },
|
MAP(ROUTE3) },
|
||||||
{ {TRAINER_LASS_JANICE, TRAINER_LASS_JANICE_2, 0xFFFF, TRAINER_LASS_JANICE_3},
|
{ {TRAINER_LASS_JANICE, TRAINER_LASS_JANICE_2, SKIP, TRAINER_LASS_JANICE_3},
|
||||||
MAP_GROUP(ROUTE3), MAP_NUM(ROUTE3) },
|
MAP(ROUTE3) },
|
||||||
{ {TRAINER_LASS_SALLY, TRAINER_LASS_SALLY},
|
{ {TRAINER_LASS_SALLY, TRAINER_LASS_SALLY},
|
||||||
MAP_GROUP(ROUTE3), MAP_NUM(ROUTE3) },
|
MAP(ROUTE3) },
|
||||||
{ {TRAINER_LASS_ROBIN, TRAINER_LASS_ROBIN},
|
{ {TRAINER_LASS_ROBIN, TRAINER_LASS_ROBIN},
|
||||||
MAP_GROUP(ROUTE3), MAP_NUM(ROUTE3) },
|
MAP(ROUTE3) },
|
||||||
{ {TRAINER_LASS_CRISSY, TRAINER_LASS_CRISSY},
|
{ {TRAINER_LASS_CRISSY, TRAINER_LASS_CRISSY},
|
||||||
MAP_GROUP(ROUTE4), MAP_NUM(ROUTE4) },
|
MAP(ROUTE4) },
|
||||||
{ {TRAINER_YOUNGSTER_TIMMY, TRAINER_YOUNGSTER_TIMMY_2, 0xFFFF, TRAINER_YOUNGSTER_TIMMY_3, 0xFFFF, TRAINER_YOUNGSTER_TIMMY_4},
|
{ {TRAINER_YOUNGSTER_TIMMY, TRAINER_YOUNGSTER_TIMMY_2, SKIP, TRAINER_YOUNGSTER_TIMMY_3, SKIP, TRAINER_YOUNGSTER_TIMMY_4},
|
||||||
MAP_GROUP(ROUTE24), MAP_NUM(ROUTE24) },
|
MAP(ROUTE24) },
|
||||||
{ {TRAINER_BUG_CATCHER_CALE, TRAINER_BUG_CATCHER_CALE},
|
{ {TRAINER_BUG_CATCHER_CALE, TRAINER_BUG_CATCHER_CALE},
|
||||||
MAP_GROUP(ROUTE24), MAP_NUM(ROUTE24) },
|
MAP(ROUTE24) },
|
||||||
{ {TRAINER_LASS_RELI, TRAINER_LASS_RELI_2, 0xFFFF, TRAINER_LASS_RELI_3},
|
{ {TRAINER_LASS_RELI, TRAINER_LASS_RELI_2, SKIP, TRAINER_LASS_RELI_3},
|
||||||
MAP_GROUP(ROUTE24), MAP_NUM(ROUTE24) },
|
MAP(ROUTE24) },
|
||||||
{ {TRAINER_LASS_ALI, TRAINER_LASS_ALI},
|
{ {TRAINER_LASS_ALI, TRAINER_LASS_ALI},
|
||||||
MAP_GROUP(ROUTE24), MAP_NUM(ROUTE24) },
|
MAP(ROUTE24) },
|
||||||
{ {TRAINER_CAMPER_SHANE, TRAINER_CAMPER_SHANE},
|
{ {TRAINER_CAMPER_SHANE, TRAINER_CAMPER_SHANE},
|
||||||
MAP_GROUP(ROUTE24), MAP_NUM(ROUTE24) },
|
MAP(ROUTE24) },
|
||||||
{ {TRAINER_CAMPER_ETHAN, TRAINER_CAMPER_ETHAN},
|
{ {TRAINER_CAMPER_ETHAN, TRAINER_CAMPER_ETHAN},
|
||||||
MAP_GROUP(ROUTE24), MAP_NUM(ROUTE24) },
|
MAP(ROUTE24) },
|
||||||
{ {TRAINER_YOUNGSTER_JOEY, TRAINER_YOUNGSTER_JOEY},
|
{ {TRAINER_YOUNGSTER_JOEY, TRAINER_YOUNGSTER_JOEY},
|
||||||
MAP_GROUP(ROUTE25), MAP_NUM(ROUTE25) },
|
MAP(ROUTE25) },
|
||||||
{ {TRAINER_YOUNGSTER_DAN, TRAINER_YOUNGSTER_DAN},
|
{ {TRAINER_YOUNGSTER_DAN, TRAINER_YOUNGSTER_DAN},
|
||||||
MAP_GROUP(ROUTE25), MAP_NUM(ROUTE25) },
|
MAP(ROUTE25) },
|
||||||
{ {TRAINER_YOUNGSTER_CHAD, TRAINER_YOUNGSTER_CHAD_2, 0xFFFF, TRAINER_YOUNGSTER_CHAD_3, TRAINER_YOUNGSTER_CHAD_4},
|
{ {TRAINER_YOUNGSTER_CHAD, TRAINER_YOUNGSTER_CHAD_2, SKIP, TRAINER_YOUNGSTER_CHAD_3, TRAINER_YOUNGSTER_CHAD_4},
|
||||||
MAP_GROUP(ROUTE25), MAP_NUM(ROUTE25) },
|
MAP(ROUTE25) },
|
||||||
{ {TRAINER_PICNICKER_KELSEY, TRAINER_PICNICKER_KELSEY_2, 0xFFFF, TRAINER_PICNICKER_KELSEY_3, TRAINER_PICNICKER_KELSEY_4},
|
{ {TRAINER_PICNICKER_KELSEY, TRAINER_PICNICKER_KELSEY_2, SKIP, TRAINER_PICNICKER_KELSEY_3, TRAINER_PICNICKER_KELSEY_4},
|
||||||
MAP_GROUP(ROUTE25), MAP_NUM(ROUTE25) },
|
MAP(ROUTE25) },
|
||||||
{ {TRAINER_LASS_HALEY, TRAINER_LASS_HALEY},
|
{ {TRAINER_LASS_HALEY, TRAINER_LASS_HALEY},
|
||||||
MAP_GROUP(ROUTE25), MAP_NUM(ROUTE25) },
|
MAP(ROUTE25) },
|
||||||
{ {TRAINER_HIKER_FRANKLIN, 0xFFFF, TRAINER_HIKER_FRANKLIN_2},
|
{ {TRAINER_HIKER_FRANKLIN, SKIP, TRAINER_HIKER_FRANKLIN_2},
|
||||||
MAP_GROUP(ROUTE25), MAP_NUM(ROUTE25) },
|
MAP(ROUTE25) },
|
||||||
{ {TRAINER_HIKER_NOB, TRAINER_HIKER_NOB},
|
{ {TRAINER_HIKER_NOB, TRAINER_HIKER_NOB},
|
||||||
MAP_GROUP(ROUTE25), MAP_NUM(ROUTE25) },
|
MAP(ROUTE25) },
|
||||||
{ {TRAINER_HIKER_WAYNE, TRAINER_HIKER_WAYNE},
|
{ {TRAINER_HIKER_WAYNE, TRAINER_HIKER_WAYNE},
|
||||||
MAP_GROUP(ROUTE25), MAP_NUM(ROUTE25) },
|
MAP(ROUTE25) },
|
||||||
{ {TRAINER_CAMPER_FLINT, TRAINER_CAMPER_FLINT},
|
{ {TRAINER_CAMPER_FLINT, TRAINER_CAMPER_FLINT},
|
||||||
MAP_GROUP(ROUTE25), MAP_NUM(ROUTE25) },
|
MAP(ROUTE25) },
|
||||||
{ {TRAINER_BUG_CATCHER_KEIGO, TRAINER_BUG_CATCHER_KEIGO},
|
{ {TRAINER_BUG_CATCHER_KEIGO, TRAINER_BUG_CATCHER_KEIGO},
|
||||||
MAP_GROUP(ROUTE6), MAP_NUM(ROUTE6) },
|
MAP(ROUTE6) },
|
||||||
{ {TRAINER_BUG_CATCHER_ELIJAH, TRAINER_BUG_CATCHER_ELIJAH},
|
{ {TRAINER_BUG_CATCHER_ELIJAH, TRAINER_BUG_CATCHER_ELIJAH},
|
||||||
MAP_GROUP(ROUTE6), MAP_NUM(ROUTE6) },
|
MAP(ROUTE6) },
|
||||||
{ {TRAINER_CAMPER_RICKY, TRAINER_CAMPER_RICKY_2, 0xFFFF, TRAINER_CAMPER_RICKY_3, 0xFFFF, TRAINER_CAMPER_RICKY_4},
|
{ {TRAINER_CAMPER_RICKY, TRAINER_CAMPER_RICKY_2, SKIP, TRAINER_CAMPER_RICKY_3, SKIP, TRAINER_CAMPER_RICKY_4},
|
||||||
MAP_GROUP(ROUTE6), MAP_NUM(ROUTE6) },
|
MAP(ROUTE6) },
|
||||||
{ {TRAINER_CAMPER_JEFF, TRAINER_CAMPER_JEFF_2, 0xFFFF, TRAINER_CAMPER_JEFF_3, 0xFFFF, TRAINER_CAMPER_JEFF_4},
|
{ {TRAINER_CAMPER_JEFF, TRAINER_CAMPER_JEFF_2, SKIP, TRAINER_CAMPER_JEFF_3, SKIP, TRAINER_CAMPER_JEFF_4},
|
||||||
MAP_GROUP(ROUTE6), MAP_NUM(ROUTE6) },
|
MAP(ROUTE6) },
|
||||||
{ {TRAINER_PICNICKER_NANCY, TRAINER_PICNICKER_NANCY},
|
{ {TRAINER_PICNICKER_NANCY, TRAINER_PICNICKER_NANCY},
|
||||||
MAP_GROUP(ROUTE6), MAP_NUM(ROUTE6) },
|
MAP(ROUTE6) },
|
||||||
{ {TRAINER_PICNICKER_ISABELLE, TRAINER_PICNICKER_ISABELLE_2, 0xFFFF, TRAINER_PICNICKER_ISABELLE_3, TRAINER_PICNICKER_ISABELLE_4},
|
{ {TRAINER_PICNICKER_ISABELLE, TRAINER_PICNICKER_ISABELLE_2, SKIP, TRAINER_PICNICKER_ISABELLE_3, TRAINER_PICNICKER_ISABELLE_4},
|
||||||
MAP_GROUP(ROUTE6), MAP_NUM(ROUTE6) },
|
MAP(ROUTE6) },
|
||||||
{ {TRAINER_YOUNGSTER_EDDIE, TRAINER_YOUNGSTER_EDDIE},
|
{ {TRAINER_YOUNGSTER_EDDIE, TRAINER_YOUNGSTER_EDDIE},
|
||||||
MAP_GROUP(ROUTE11), MAP_NUM(ROUTE11) },
|
MAP(ROUTE11) },
|
||||||
{ {TRAINER_YOUNGSTER_DILLON, TRAINER_YOUNGSTER_DILLON},
|
{ {TRAINER_YOUNGSTER_DILLON, TRAINER_YOUNGSTER_DILLON},
|
||||||
MAP_GROUP(ROUTE11), MAP_NUM(ROUTE11) },
|
MAP(ROUTE11) },
|
||||||
{ {TRAINER_YOUNGSTER_YASU, 0xFFFF, TRAINER_YOUNGSTER_YASU_2, 0xFFFF, TRAINER_YOUNGSTER_YASU_3},
|
{ {TRAINER_YOUNGSTER_YASU, SKIP, TRAINER_YOUNGSTER_YASU_2, SKIP, TRAINER_YOUNGSTER_YASU_3},
|
||||||
MAP_GROUP(ROUTE11), MAP_NUM(ROUTE11) },
|
MAP(ROUTE11) },
|
||||||
{ {TRAINER_YOUNGSTER_DAVE, TRAINER_YOUNGSTER_DAVE},
|
{ {TRAINER_YOUNGSTER_DAVE, TRAINER_YOUNGSTER_DAVE},
|
||||||
MAP_GROUP(ROUTE11), MAP_NUM(ROUTE11) },
|
MAP(ROUTE11) },
|
||||||
{ {TRAINER_ENGINEER_BRAXTON, TRAINER_ENGINEER_BRAXTON},
|
{ {TRAINER_ENGINEER_BRAXTON, TRAINER_ENGINEER_BRAXTON},
|
||||||
MAP_GROUP(ROUTE11), MAP_NUM(ROUTE11) },
|
MAP(ROUTE11) },
|
||||||
{ {TRAINER_ENGINEER_BERNIE, 0xFFFF, 0xFFFF, TRAINER_ENGINEER_BERNIE_2},
|
{ {TRAINER_ENGINEER_BERNIE, SKIP, SKIP, TRAINER_ENGINEER_BERNIE_2},
|
||||||
MAP_GROUP(ROUTE11), MAP_NUM(ROUTE11) },
|
MAP(ROUTE11) },
|
||||||
{ {TRAINER_GAMER_HUGO, TRAINER_GAMER_HUGO},
|
{ {TRAINER_GAMER_HUGO, TRAINER_GAMER_HUGO},
|
||||||
MAP_GROUP(ROUTE11), MAP_NUM(ROUTE11) },
|
MAP(ROUTE11) },
|
||||||
{ {TRAINER_GAMER_JASPER, TRAINER_GAMER_JASPER},
|
{ {TRAINER_GAMER_JASPER, TRAINER_GAMER_JASPER},
|
||||||
MAP_GROUP(ROUTE11), MAP_NUM(ROUTE11) },
|
MAP(ROUTE11) },
|
||||||
{ {TRAINER_GAMER_DIRK, TRAINER_GAMER_DIRK},
|
{ {TRAINER_GAMER_DIRK, TRAINER_GAMER_DIRK},
|
||||||
MAP_GROUP(ROUTE11), MAP_NUM(ROUTE11) },
|
MAP(ROUTE11) },
|
||||||
{ {TRAINER_GAMER_DARIAN, 0xFFFF, 0xFFFF, TRAINER_GAMER_DARIAN_2},
|
{ {TRAINER_GAMER_DARIAN, SKIP, SKIP, TRAINER_GAMER_DARIAN_2},
|
||||||
MAP_GROUP(ROUTE11), MAP_NUM(ROUTE11) },
|
MAP(ROUTE11) },
|
||||||
{ {TRAINER_BUG_CATCHER_BRENT, TRAINER_BUG_CATCHER_BRENT},
|
{ {TRAINER_BUG_CATCHER_BRENT, TRAINER_BUG_CATCHER_BRENT},
|
||||||
MAP_GROUP(ROUTE9), MAP_NUM(ROUTE9) },
|
MAP(ROUTE9) },
|
||||||
{ {TRAINER_BUG_CATCHER_CONNER, TRAINER_BUG_CATCHER_CONNER},
|
{ {TRAINER_BUG_CATCHER_CONNER, TRAINER_BUG_CATCHER_CONNER},
|
||||||
MAP_GROUP(ROUTE9), MAP_NUM(ROUTE9) },
|
MAP(ROUTE9) },
|
||||||
{ {TRAINER_CAMPER_CHRIS, 0xFFFF, TRAINER_CAMPER_CHRIS_2, TRAINER_CAMPER_CHRIS_3, 0xFFFF, TRAINER_CAMPER_CHRIS_4},
|
{ {TRAINER_CAMPER_CHRIS, SKIP, TRAINER_CAMPER_CHRIS_2, TRAINER_CAMPER_CHRIS_3, SKIP, TRAINER_CAMPER_CHRIS_4},
|
||||||
MAP_GROUP(ROUTE9), MAP_NUM(ROUTE9) },
|
MAP(ROUTE9) },
|
||||||
{ {TRAINER_CAMPER_DREW, TRAINER_CAMPER_DREW},
|
{ {TRAINER_CAMPER_DREW, TRAINER_CAMPER_DREW},
|
||||||
MAP_GROUP(ROUTE9), MAP_NUM(ROUTE9) },
|
MAP(ROUTE9) },
|
||||||
{ {TRAINER_PICNICKER_ALICIA, 0xFFFF, TRAINER_PICNICKER_ALICIA_2, TRAINER_PICNICKER_ALICIA_3, 0xFFFF, TRAINER_PICNICKER_ALICIA_4},
|
{ {TRAINER_PICNICKER_ALICIA, SKIP, TRAINER_PICNICKER_ALICIA_2, TRAINER_PICNICKER_ALICIA_3, SKIP, TRAINER_PICNICKER_ALICIA_4},
|
||||||
MAP_GROUP(ROUTE9), MAP_NUM(ROUTE9) },
|
MAP(ROUTE9) },
|
||||||
{ {TRAINER_PICNICKER_CAITLIN, TRAINER_PICNICKER_CAITLIN},
|
{ {TRAINER_PICNICKER_CAITLIN, TRAINER_PICNICKER_CAITLIN},
|
||||||
MAP_GROUP(ROUTE9), MAP_NUM(ROUTE9) },
|
MAP(ROUTE9) },
|
||||||
{ {TRAINER_HIKER_ALAN, TRAINER_HIKER_ALAN},
|
{ {TRAINER_HIKER_ALAN, TRAINER_HIKER_ALAN},
|
||||||
MAP_GROUP(ROUTE9), MAP_NUM(ROUTE9) },
|
MAP(ROUTE9) },
|
||||||
{ {TRAINER_HIKER_BRICE, TRAINER_HIKER_BRICE},
|
{ {TRAINER_HIKER_BRICE, TRAINER_HIKER_BRICE},
|
||||||
MAP_GROUP(ROUTE9), MAP_NUM(ROUTE9) },
|
MAP(ROUTE9) },
|
||||||
{ {TRAINER_HIKER_JEREMY, 0xFFFF, 0xFFFF, TRAINER_HIKER_JEREMY_2},
|
{ {TRAINER_HIKER_JEREMY, SKIP, SKIP, TRAINER_HIKER_JEREMY_2},
|
||||||
MAP_GROUP(ROUTE9), MAP_NUM(ROUTE9) },
|
MAP(ROUTE9) },
|
||||||
{ {TRAINER_PICNICKER_HEIDI, TRAINER_PICNICKER_HEIDI},
|
{ {TRAINER_PICNICKER_HEIDI, TRAINER_PICNICKER_HEIDI},
|
||||||
MAP_GROUP(ROUTE10), MAP_NUM(ROUTE10) },
|
MAP(ROUTE10) },
|
||||||
{ {TRAINER_PICNICKER_CAROL, TRAINER_PICNICKER_CAROL},
|
{ {TRAINER_PICNICKER_CAROL, TRAINER_PICNICKER_CAROL},
|
||||||
MAP_GROUP(ROUTE10), MAP_NUM(ROUTE10) },
|
MAP(ROUTE10) },
|
||||||
{ {TRAINER_POKEMANIAC_MARK, 0xFFFF, 0xFFFF, TRAINER_POKEMANIAC_MARK_2, 0xFFFF, TRAINER_POKEMANIAC_MARK_3},
|
{ {TRAINER_POKEMANIAC_MARK, SKIP, SKIP, TRAINER_POKEMANIAC_MARK_2, SKIP, TRAINER_POKEMANIAC_MARK_3},
|
||||||
MAP_GROUP(ROUTE10), MAP_NUM(ROUTE10) },
|
MAP(ROUTE10) },
|
||||||
{ {TRAINER_POKEMANIAC_HERMAN, 0xFFFF, 0xFFFF, TRAINER_POKEMANIAC_HERMAN_2, 0xFFFF, TRAINER_POKEMANIAC_HERMAN_3},
|
{ {TRAINER_POKEMANIAC_HERMAN, SKIP, SKIP, TRAINER_POKEMANIAC_HERMAN_2, SKIP, TRAINER_POKEMANIAC_HERMAN_3},
|
||||||
MAP_GROUP(ROUTE10), MAP_NUM(ROUTE10) },
|
MAP(ROUTE10) },
|
||||||
{ {TRAINER_HIKER_CLARK, TRAINER_HIKER_CLARK},
|
{ {TRAINER_HIKER_CLARK, TRAINER_HIKER_CLARK},
|
||||||
MAP_GROUP(ROUTE10), MAP_NUM(ROUTE10) },
|
MAP(ROUTE10) },
|
||||||
{ {TRAINER_HIKER_TRENT, 0xFFFF, 0xFFFF, TRAINER_HIKER_TRENT_2},
|
{ {TRAINER_HIKER_TRENT, SKIP, SKIP, TRAINER_HIKER_TRENT_2},
|
||||||
MAP_GROUP(ROUTE10), MAP_NUM(ROUTE10) },
|
MAP(ROUTE10) },
|
||||||
{ {TRAINER_LASS_PAIGE, TRAINER_LASS_PAIGE},
|
{ {TRAINER_LASS_PAIGE, TRAINER_LASS_PAIGE},
|
||||||
MAP_GROUP(ROUTE8), MAP_NUM(ROUTE8) },
|
MAP(ROUTE8) },
|
||||||
{ {TRAINER_LASS_ANDREA, TRAINER_LASS_ANDREA},
|
{ {TRAINER_LASS_ANDREA, TRAINER_LASS_ANDREA},
|
||||||
MAP_GROUP(ROUTE8), MAP_NUM(ROUTE8) },
|
MAP(ROUTE8) },
|
||||||
{ {TRAINER_LASS_MEGAN, 0xFFFF, TRAINER_LASS_MEGAN_2, 0xFFFF, TRAINER_LASS_MEGAN_3},
|
{ {TRAINER_LASS_MEGAN, SKIP, TRAINER_LASS_MEGAN_2, SKIP, TRAINER_LASS_MEGAN_3},
|
||||||
MAP_GROUP(ROUTE8), MAP_NUM(ROUTE8) },
|
MAP(ROUTE8) },
|
||||||
{ {TRAINER_LASS_JULIA, TRAINER_LASS_JULIA},
|
{ {TRAINER_LASS_JULIA, TRAINER_LASS_JULIA},
|
||||||
MAP_GROUP(ROUTE8), MAP_NUM(ROUTE8) },
|
MAP(ROUTE8) },
|
||||||
{ {TRAINER_SUPER_NERD_AIDAN, TRAINER_SUPER_NERD_AIDAN},
|
{ {TRAINER_SUPER_NERD_AIDAN, TRAINER_SUPER_NERD_AIDAN},
|
||||||
MAP_GROUP(ROUTE8), MAP_NUM(ROUTE8) },
|
MAP(ROUTE8) },
|
||||||
{ {TRAINER_SUPER_NERD_GLENN, 0xFFFF, 0xFFFF, TRAINER_SUPER_NERD_GLENN_2},
|
{ {TRAINER_SUPER_NERD_GLENN, SKIP, SKIP, TRAINER_SUPER_NERD_GLENN_2},
|
||||||
MAP_GROUP(ROUTE8), MAP_NUM(ROUTE8) },
|
MAP(ROUTE8) },
|
||||||
{ {TRAINER_SUPER_NERD_LESLIE, TRAINER_SUPER_NERD_LESLIE},
|
{ {TRAINER_SUPER_NERD_LESLIE, TRAINER_SUPER_NERD_LESLIE},
|
||||||
MAP_GROUP(ROUTE8), MAP_NUM(ROUTE8) },
|
MAP(ROUTE8) },
|
||||||
{ {TRAINER_GAMER_STAN, TRAINER_GAMER_STAN},
|
{ {TRAINER_GAMER_STAN, TRAINER_GAMER_STAN},
|
||||||
MAP_GROUP(ROUTE8), MAP_NUM(ROUTE8) },
|
MAP(ROUTE8) },
|
||||||
{ {TRAINER_GAMER_RICH, 0xFFFF, 0xFFFF, TRAINER_GAMER_RICH_2},
|
{ {TRAINER_GAMER_RICH, SKIP, SKIP, TRAINER_GAMER_RICH_2},
|
||||||
MAP_GROUP(ROUTE8), MAP_NUM(ROUTE8) },
|
MAP(ROUTE8) },
|
||||||
{ {TRAINER_TWINS_ELI_ANNE, 0xFFFF, 0xFFFF, TRAINER_TWINS_ELI_ANNE_2},
|
{ {TRAINER_TWINS_ELI_ANNE, SKIP, SKIP, TRAINER_TWINS_ELI_ANNE_2},
|
||||||
MAP_GROUP(ROUTE8), MAP_NUM(ROUTE8) },
|
MAP(ROUTE8) },
|
||||||
{ {TRAINER_BIKER_RICARDO, TRAINER_BIKER_RICARDO},
|
{ {TRAINER_BIKER_RICARDO, TRAINER_BIKER_RICARDO},
|
||||||
MAP_GROUP(ROUTE8), MAP_NUM(ROUTE8) },
|
MAP(ROUTE8) },
|
||||||
{ {TRAINER_BIKER_JAREN, 0xFFFF, 0xFFFF, TRAINER_BIKER_JAREN_2},
|
{ {TRAINER_BIKER_JAREN, SKIP, SKIP, TRAINER_BIKER_JAREN_2},
|
||||||
MAP_GROUP(ROUTE8), MAP_NUM(ROUTE8) },
|
MAP(ROUTE8) },
|
||||||
{ {TRAINER_FISHERMAN_NED, TRAINER_FISHERMAN_NED},
|
{ {TRAINER_FISHERMAN_NED, TRAINER_FISHERMAN_NED},
|
||||||
MAP_GROUP(ROUTE12), MAP_NUM(ROUTE12) },
|
MAP(ROUTE12) },
|
||||||
{ {TRAINER_FISHERMAN_CHIP, TRAINER_FISHERMAN_CHIP},
|
{ {TRAINER_FISHERMAN_CHIP, TRAINER_FISHERMAN_CHIP},
|
||||||
MAP_GROUP(ROUTE12), MAP_NUM(ROUTE12) },
|
MAP(ROUTE12) },
|
||||||
{ {TRAINER_FISHERMAN_HANK, TRAINER_FISHERMAN_HANK},
|
{ {TRAINER_FISHERMAN_HANK, TRAINER_FISHERMAN_HANK},
|
||||||
MAP_GROUP(ROUTE12), MAP_NUM(ROUTE12) },
|
MAP(ROUTE12) },
|
||||||
{ {TRAINER_FISHERMAN_ELLIOT, 0xFFFF, 0xFFFF, TRAINER_FISHERMAN_ELLIOT_2},
|
{ {TRAINER_FISHERMAN_ELLIOT, SKIP, SKIP, TRAINER_FISHERMAN_ELLIOT_2},
|
||||||
MAP_GROUP(ROUTE12), MAP_NUM(ROUTE12) },
|
MAP(ROUTE12) },
|
||||||
{ {TRAINER_FISHERMAN_ANDREW, TRAINER_FISHERMAN_ANDREW},
|
{ {TRAINER_FISHERMAN_ANDREW, TRAINER_FISHERMAN_ANDREW},
|
||||||
MAP_GROUP(ROUTE12), MAP_NUM(ROUTE12) },
|
MAP(ROUTE12) },
|
||||||
{ {TRAINER_ROCKER_LUCA, 0xFFFF, 0xFFFF, TRAINER_ROCKER_LUCA_2},
|
{ {TRAINER_ROCKER_LUCA, SKIP, SKIP, TRAINER_ROCKER_LUCA_2},
|
||||||
MAP_GROUP(ROUTE12), MAP_NUM(ROUTE12) },
|
MAP(ROUTE12) },
|
||||||
{ {TRAINER_CAMPER_JUSTIN, TRAINER_CAMPER_JUSTIN},
|
{ {TRAINER_CAMPER_JUSTIN, TRAINER_CAMPER_JUSTIN},
|
||||||
MAP_GROUP(ROUTE12), MAP_NUM(ROUTE12) },
|
MAP(ROUTE12) },
|
||||||
{ {TRAINER_YOUNG_COUPLE_GIA_JES, 0xFFFF, 0xFFFF, TRAINER_YOUNG_COUPLE_GIA_JES_2, 0xFFFF, TRAINER_YOUNG_COUPLE_GIA_JES_3},
|
{ {TRAINER_YOUNG_COUPLE_GIA_JES, SKIP, SKIP, TRAINER_YOUNG_COUPLE_GIA_JES_2, SKIP, TRAINER_YOUNG_COUPLE_GIA_JES_3},
|
||||||
MAP_GROUP(ROUTE12), MAP_NUM(ROUTE12) },
|
MAP(ROUTE12) },
|
||||||
{ {TRAINER_BIKER_JARED, TRAINER_BIKER_JARED},
|
{ {TRAINER_BIKER_JARED, TRAINER_BIKER_JARED},
|
||||||
MAP_GROUP(ROUTE13), MAP_NUM(ROUTE13) },
|
MAP(ROUTE13) },
|
||||||
{ {TRAINER_BEAUTY_LOLA, TRAINER_BEAUTY_LOLA},
|
{ {TRAINER_BEAUTY_LOLA, TRAINER_BEAUTY_LOLA},
|
||||||
MAP_GROUP(ROUTE13), MAP_NUM(ROUTE13) },
|
MAP(ROUTE13) },
|
||||||
{ {TRAINER_BEAUTY_SHEILA, 0xFFFF, 0xFFFF, 0xFFFF, TRAINER_BEAUTY_SHEILA_2},
|
{ {TRAINER_BEAUTY_SHEILA, SKIP, SKIP, SKIP, TRAINER_BEAUTY_SHEILA_2},
|
||||||
MAP_GROUP(ROUTE13), MAP_NUM(ROUTE13) },
|
MAP(ROUTE13) },
|
||||||
{ {TRAINER_BIRD_KEEPER_SEBASTIAN, TRAINER_BIRD_KEEPER_SEBASTIAN},
|
{ {TRAINER_BIRD_KEEPER_SEBASTIAN, TRAINER_BIRD_KEEPER_SEBASTIAN},
|
||||||
MAP_GROUP(ROUTE13), MAP_NUM(ROUTE13) },
|
MAP(ROUTE13) },
|
||||||
{ {TRAINER_BIRD_KEEPER_PERRY, TRAINER_BIRD_KEEPER_PERRY},
|
{ {TRAINER_BIRD_KEEPER_PERRY, TRAINER_BIRD_KEEPER_PERRY},
|
||||||
MAP_GROUP(ROUTE13), MAP_NUM(ROUTE13) },
|
MAP(ROUTE13) },
|
||||||
{ {TRAINER_BIRD_KEEPER_ROBERT, 0xFFFF, 0xFFFF, TRAINER_BIRD_KEEPER_ROBERT_2, TRAINER_BIRD_KEEPER_ROBERT_3},
|
{ {TRAINER_BIRD_KEEPER_ROBERT, SKIP, SKIP, TRAINER_BIRD_KEEPER_ROBERT_2, TRAINER_BIRD_KEEPER_ROBERT_3},
|
||||||
MAP_GROUP(ROUTE13), MAP_NUM(ROUTE13) },
|
MAP(ROUTE13) },
|
||||||
{ {TRAINER_PICNICKER_ALMA, TRAINER_PICNICKER_ALMA},
|
{ {TRAINER_PICNICKER_ALMA, TRAINER_PICNICKER_ALMA},
|
||||||
MAP_GROUP(ROUTE13), MAP_NUM(ROUTE13) },
|
MAP(ROUTE13) },
|
||||||
{ {TRAINER_PICNICKER_SUSIE, 0xFFFF, 0xFFFF, TRAINER_PICNICKER_SUSIE_2, TRAINER_PICNICKER_SUSIE_3, TRAINER_PICNICKER_SUSIE_4},
|
{ {TRAINER_PICNICKER_SUSIE, SKIP, SKIP, TRAINER_PICNICKER_SUSIE_2, TRAINER_PICNICKER_SUSIE_3, TRAINER_PICNICKER_SUSIE_4},
|
||||||
MAP_GROUP(ROUTE13), MAP_NUM(ROUTE13) },
|
MAP(ROUTE13) },
|
||||||
{ {TRAINER_PICNICKER_VALERIE, TRAINER_PICNICKER_VALERIE},
|
{ {TRAINER_PICNICKER_VALERIE, TRAINER_PICNICKER_VALERIE},
|
||||||
MAP_GROUP(ROUTE13), MAP_NUM(ROUTE13) },
|
MAP(ROUTE13) },
|
||||||
{ {TRAINER_PICNICKER_GWEN, TRAINER_PICNICKER_GWEN},
|
{ {TRAINER_PICNICKER_GWEN, TRAINER_PICNICKER_GWEN},
|
||||||
MAP_GROUP(ROUTE13), MAP_NUM(ROUTE13) },
|
MAP(ROUTE13) },
|
||||||
{ {TRAINER_BIKER_MALIK, TRAINER_BIKER_MALIK},
|
{ {TRAINER_BIKER_MALIK, TRAINER_BIKER_MALIK},
|
||||||
MAP_GROUP(ROUTE14), MAP_NUM(ROUTE14) },
|
MAP(ROUTE14) },
|
||||||
{ {TRAINER_BIKER_LUKAS, 0xFFFF, 0xFFFF, 0xFFFF, TRAINER_BIKER_LUKAS_2},
|
{ {TRAINER_BIKER_LUKAS, SKIP, SKIP, SKIP, TRAINER_BIKER_LUKAS_2},
|
||||||
MAP_GROUP(ROUTE14), MAP_NUM(ROUTE14) },
|
MAP(ROUTE14) },
|
||||||
{ {TRAINER_BIKER_ISAAC, TRAINER_BIKER_ISAAC},
|
{ {TRAINER_BIKER_ISAAC, TRAINER_BIKER_ISAAC},
|
||||||
MAP_GROUP(ROUTE14), MAP_NUM(ROUTE14) },
|
MAP(ROUTE14) },
|
||||||
{ {TRAINER_BIKER_GERALD, TRAINER_BIKER_GERALD},
|
{ {TRAINER_BIKER_GERALD, TRAINER_BIKER_GERALD},
|
||||||
MAP_GROUP(ROUTE14), MAP_NUM(ROUTE14) },
|
MAP(ROUTE14) },
|
||||||
{ {TRAINER_BIRD_KEEPER_DONALD, TRAINER_BIRD_KEEPER_DONALD},
|
{ {TRAINER_BIRD_KEEPER_DONALD, TRAINER_BIRD_KEEPER_DONALD},
|
||||||
MAP_GROUP(ROUTE14), MAP_NUM(ROUTE14) },
|
MAP(ROUTE14) },
|
||||||
{ {TRAINER_BIRD_KEEPER_BENNY, 0xFFFF, 0xFFFF, TRAINER_BIRD_KEEPER_BENNY_2, TRAINER_BIRD_KEEPER_BENNY_3},
|
{ {TRAINER_BIRD_KEEPER_BENNY, SKIP, SKIP, TRAINER_BIRD_KEEPER_BENNY_2, TRAINER_BIRD_KEEPER_BENNY_3},
|
||||||
MAP_GROUP(ROUTE14), MAP_NUM(ROUTE14) },
|
MAP(ROUTE14) },
|
||||||
{ {TRAINER_BIRD_KEEPER_CARTER, TRAINER_BIRD_KEEPER_CARTER},
|
{ {TRAINER_BIRD_KEEPER_CARTER, TRAINER_BIRD_KEEPER_CARTER},
|
||||||
MAP_GROUP(ROUTE14), MAP_NUM(ROUTE14) },
|
MAP(ROUTE14) },
|
||||||
{ {TRAINER_BIRD_KEEPER_MITCH, TRAINER_BIRD_KEEPER_MITCH},
|
{ {TRAINER_BIRD_KEEPER_MITCH, TRAINER_BIRD_KEEPER_MITCH},
|
||||||
MAP_GROUP(ROUTE14), MAP_NUM(ROUTE14) },
|
MAP(ROUTE14) },
|
||||||
{ {TRAINER_BIRD_KEEPER_BECK, TRAINER_BIRD_KEEPER_BECK},
|
{ {TRAINER_BIRD_KEEPER_BECK, TRAINER_BIRD_KEEPER_BECK},
|
||||||
MAP_GROUP(ROUTE14), MAP_NUM(ROUTE14) },
|
MAP(ROUTE14) },
|
||||||
{ {TRAINER_BIRD_KEEPER_MARLON, 0xFFFF, 0xFFFF, TRAINER_BIRD_KEEPER_MARLON_2, TRAINER_BIRD_KEEPER_MARLON_3},
|
{ {TRAINER_BIRD_KEEPER_MARLON, SKIP, SKIP, TRAINER_BIRD_KEEPER_MARLON_2, TRAINER_BIRD_KEEPER_MARLON_3},
|
||||||
MAP_GROUP(ROUTE14), MAP_NUM(ROUTE14) },
|
MAP(ROUTE14) },
|
||||||
{ {TRAINER_TWINS_KIRI_JAN, TRAINER_TWINS_KIRI_JAN},
|
{ {TRAINER_TWINS_KIRI_JAN, TRAINER_TWINS_KIRI_JAN},
|
||||||
MAP_GROUP(ROUTE14), MAP_NUM(ROUTE14) },
|
MAP(ROUTE14) },
|
||||||
{ {TRAINER_BIKER_ERNEST, TRAINER_BIKER_ERNEST},
|
{ {TRAINER_BIKER_ERNEST, TRAINER_BIKER_ERNEST},
|
||||||
MAP_GROUP(ROUTE15), MAP_NUM(ROUTE15) },
|
MAP(ROUTE15) },
|
||||||
{ {TRAINER_BIKER_ALEX, TRAINER_BIKER_ALEX},
|
{ {TRAINER_BIKER_ALEX, TRAINER_BIKER_ALEX},
|
||||||
MAP_GROUP(ROUTE15), MAP_NUM(ROUTE15) },
|
MAP(ROUTE15) },
|
||||||
{ {TRAINER_BEAUTY_GRACE, 0xFFFF, 0xFFFF, 0xFFFF, TRAINER_BEAUTY_GRACE_2},
|
{ {TRAINER_BEAUTY_GRACE, SKIP, SKIP, SKIP, TRAINER_BEAUTY_GRACE_2},
|
||||||
MAP_GROUP(ROUTE15), MAP_NUM(ROUTE15) },
|
MAP(ROUTE15) },
|
||||||
{ {TRAINER_BEAUTY_OLIVIA, TRAINER_BEAUTY_OLIVIA},
|
{ {TRAINER_BEAUTY_OLIVIA, TRAINER_BEAUTY_OLIVIA},
|
||||||
MAP_GROUP(ROUTE15), MAP_NUM(ROUTE15) },
|
MAP(ROUTE15) },
|
||||||
{ {TRAINER_BIRD_KEEPER_EDWIN, TRAINER_BIRD_KEEPER_EDWIN},
|
{ {TRAINER_BIRD_KEEPER_EDWIN, TRAINER_BIRD_KEEPER_EDWIN},
|
||||||
MAP_GROUP(ROUTE15), MAP_NUM(ROUTE15) },
|
MAP(ROUTE15) },
|
||||||
{ {TRAINER_BIRD_KEEPER_CHESTER, 0xFFFF, 0xFFFF, TRAINER_BIRD_KEEPER_CHESTER_2, TRAINER_BIRD_KEEPER_CHESTER_3},
|
{ {TRAINER_BIRD_KEEPER_CHESTER, SKIP, SKIP, TRAINER_BIRD_KEEPER_CHESTER_2, TRAINER_BIRD_KEEPER_CHESTER_3},
|
||||||
MAP_GROUP(ROUTE15), MAP_NUM(ROUTE15) },
|
MAP(ROUTE15) },
|
||||||
{ {TRAINER_PICNICKER_YAZMIN, TRAINER_PICNICKER_YAZMIN},
|
{ {TRAINER_PICNICKER_YAZMIN, TRAINER_PICNICKER_YAZMIN},
|
||||||
MAP_GROUP(ROUTE15), MAP_NUM(ROUTE15) },
|
MAP(ROUTE15) },
|
||||||
{ {TRAINER_PICNICKER_KINDRA, TRAINER_PICNICKER_KINDRA},
|
{ {TRAINER_PICNICKER_KINDRA, TRAINER_PICNICKER_KINDRA},
|
||||||
MAP_GROUP(ROUTE15), MAP_NUM(ROUTE15) },
|
MAP(ROUTE15) },
|
||||||
{ {TRAINER_PICNICKER_BECKY, 0xFFFF, 0xFFFF, TRAINER_PICNICKER_BECKY_2, TRAINER_PICNICKER_BECKY_3, TRAINER_PICNICKER_BECKY_4},
|
{ {TRAINER_PICNICKER_BECKY, SKIP, SKIP, TRAINER_PICNICKER_BECKY_2, TRAINER_PICNICKER_BECKY_3, TRAINER_PICNICKER_BECKY_4},
|
||||||
MAP_GROUP(ROUTE15), MAP_NUM(ROUTE15) },
|
MAP(ROUTE15) },
|
||||||
{ {TRAINER_PICNICKER_CELIA, TRAINER_PICNICKER_CELIA},
|
{ {TRAINER_PICNICKER_CELIA, TRAINER_PICNICKER_CELIA},
|
||||||
MAP_GROUP(ROUTE15), MAP_NUM(ROUTE15) },
|
MAP(ROUTE15) },
|
||||||
{ {TRAINER_CRUSH_KIN_RON_MYA, 0xFFFF, 0xFFFF, TRAINER_CRUSH_KIN_RON_MYA_2, TRAINER_CRUSH_KIN_RON_MYA_3, TRAINER_CRUSH_KIN_RON_MYA_4},
|
{ {TRAINER_CRUSH_KIN_RON_MYA, SKIP, SKIP, TRAINER_CRUSH_KIN_RON_MYA_2, TRAINER_CRUSH_KIN_RON_MYA_3, TRAINER_CRUSH_KIN_RON_MYA_4},
|
||||||
MAP_GROUP(ROUTE15), MAP_NUM(ROUTE15) },
|
MAP(ROUTE15) },
|
||||||
{ {TRAINER_BIKER_LAO, TRAINER_BIKER_LAO},
|
{ {TRAINER_BIKER_LAO, TRAINER_BIKER_LAO},
|
||||||
MAP_GROUP(ROUTE16), MAP_NUM(ROUTE16) },
|
MAP(ROUTE16) },
|
||||||
{ {TRAINER_BIKER_HIDEO, TRAINER_BIKER_HIDEO},
|
{ {TRAINER_BIKER_HIDEO, TRAINER_BIKER_HIDEO},
|
||||||
MAP_GROUP(ROUTE16), MAP_NUM(ROUTE16) },
|
MAP(ROUTE16) },
|
||||||
{ {TRAINER_BIKER_RUBEN, 0xFFFF, 0xFFFF, 0xFFFF, TRAINER_BIKER_RUBEN_2},
|
{ {TRAINER_BIKER_RUBEN, SKIP, SKIP, SKIP, TRAINER_BIKER_RUBEN_2},
|
||||||
MAP_GROUP(ROUTE16), MAP_NUM(ROUTE16) },
|
MAP(ROUTE16) },
|
||||||
{ {TRAINER_CUE_BALL_KOJI, TRAINER_CUE_BALL_KOJI},
|
{ {TRAINER_CUE_BALL_KOJI, TRAINER_CUE_BALL_KOJI},
|
||||||
MAP_GROUP(ROUTE16), MAP_NUM(ROUTE16) },
|
MAP(ROUTE16) },
|
||||||
{ {TRAINER_CUE_BALL_LUKE, TRAINER_CUE_BALL_LUKE},
|
{ {TRAINER_CUE_BALL_LUKE, TRAINER_CUE_BALL_LUKE},
|
||||||
MAP_GROUP(ROUTE16), MAP_NUM(ROUTE16) },
|
MAP(ROUTE16) },
|
||||||
{ {TRAINER_CUE_BALL_CAMRON, 0xFFFF, 0xFFFF, 0xFFFF, TRAINER_CUE_BALL_CAMRON_2},
|
{ {TRAINER_CUE_BALL_CAMRON, SKIP, SKIP, SKIP, TRAINER_CUE_BALL_CAMRON_2},
|
||||||
MAP_GROUP(ROUTE16), MAP_NUM(ROUTE16) },
|
MAP(ROUTE16) },
|
||||||
{ {TRAINER_YOUNG_COUPLE_LEA_JED, TRAINER_YOUNG_COUPLE_LEA_JED},
|
{ {TRAINER_YOUNG_COUPLE_LEA_JED, TRAINER_YOUNG_COUPLE_LEA_JED},
|
||||||
MAP_GROUP(ROUTE16), MAP_NUM(ROUTE16) },
|
MAP(ROUTE16) },
|
||||||
{ {TRAINER_BIKER_BILLY, TRAINER_BIKER_BILLY},
|
{ {TRAINER_BIKER_BILLY, TRAINER_BIKER_BILLY},
|
||||||
MAP_GROUP(ROUTE17), MAP_NUM(ROUTE17) },
|
MAP(ROUTE17) },
|
||||||
{ {TRAINER_BIKER_NIKOLAS, TRAINER_BIKER_NIKOLAS},
|
{ {TRAINER_BIKER_NIKOLAS, TRAINER_BIKER_NIKOLAS},
|
||||||
MAP_GROUP(ROUTE17), MAP_NUM(ROUTE17) },
|
MAP(ROUTE17) },
|
||||||
{ {TRAINER_BIKER_JAXON, 0xFFFF, 0xFFFF, 0xFFFF, TRAINER_BIKER_JAXON_2},
|
{ {TRAINER_BIKER_JAXON, SKIP, SKIP, SKIP, TRAINER_BIKER_JAXON_2},
|
||||||
MAP_GROUP(ROUTE17), MAP_NUM(ROUTE17) },
|
MAP(ROUTE17) },
|
||||||
{ {TRAINER_BIKER_WILLIAM, TRAINER_BIKER_WILLIAM},
|
{ {TRAINER_BIKER_WILLIAM, TRAINER_BIKER_WILLIAM},
|
||||||
MAP_GROUP(ROUTE17), MAP_NUM(ROUTE17) },
|
MAP(ROUTE17) },
|
||||||
{ {TRAINER_CUE_BALL_RAUL, TRAINER_CUE_BALL_RAUL},
|
{ {TRAINER_CUE_BALL_RAUL, TRAINER_CUE_BALL_RAUL},
|
||||||
MAP_GROUP(ROUTE17), MAP_NUM(ROUTE17) },
|
MAP(ROUTE17) },
|
||||||
{ {TRAINER_CUE_BALL_ISAIAH, 0xFFFF, 0xFFFF, 0xFFFF, TRAINER_CUE_BALL_ISAIAH_2},
|
{ {TRAINER_CUE_BALL_ISAIAH, SKIP, SKIP, SKIP, TRAINER_CUE_BALL_ISAIAH_2},
|
||||||
MAP_GROUP(ROUTE17), MAP_NUM(ROUTE17) },
|
MAP(ROUTE17) },
|
||||||
{ {TRAINER_CUE_BALL_ZEEK, TRAINER_CUE_BALL_ZEEK},
|
{ {TRAINER_CUE_BALL_ZEEK, TRAINER_CUE_BALL_ZEEK},
|
||||||
MAP_GROUP(ROUTE17), MAP_NUM(ROUTE17) },
|
MAP(ROUTE17) },
|
||||||
{ {TRAINER_CUE_BALL_JAMAL, TRAINER_CUE_BALL_JAMAL},
|
{ {TRAINER_CUE_BALL_JAMAL, TRAINER_CUE_BALL_JAMAL},
|
||||||
MAP_GROUP(ROUTE17), MAP_NUM(ROUTE17) },
|
MAP(ROUTE17) },
|
||||||
{ {TRAINER_CUE_BALL_COREY, 0xFFFF, 0xFFFF, 0xFFFF, TRAINER_CUE_BALL_COREY_2},
|
{ {TRAINER_CUE_BALL_COREY, SKIP, SKIP, SKIP, TRAINER_CUE_BALL_COREY_2},
|
||||||
MAP_GROUP(ROUTE17), MAP_NUM(ROUTE17) },
|
MAP(ROUTE17) },
|
||||||
{ {TRAINER_BIKER_VIRGIL, TRAINER_BIKER_VIRGIL},
|
{ {TRAINER_BIKER_VIRGIL, TRAINER_BIKER_VIRGIL},
|
||||||
MAP_GROUP(ROUTE17), MAP_NUM(ROUTE17) },
|
MAP(ROUTE17) },
|
||||||
{ {TRAINER_BIRD_KEEPER_WILTON, TRAINER_BIRD_KEEPER_WILTON},
|
{ {TRAINER_BIRD_KEEPER_WILTON, TRAINER_BIRD_KEEPER_WILTON},
|
||||||
MAP_GROUP(ROUTE18), MAP_NUM(ROUTE18) },
|
MAP(ROUTE18) },
|
||||||
{ {TRAINER_BIRD_KEEPER_RAMIRO, TRAINER_BIRD_KEEPER_RAMIRO},
|
{ {TRAINER_BIRD_KEEPER_RAMIRO, TRAINER_BIRD_KEEPER_RAMIRO},
|
||||||
MAP_GROUP(ROUTE18), MAP_NUM(ROUTE18) },
|
MAP(ROUTE18) },
|
||||||
{ {TRAINER_BIRD_KEEPER_JACOB, 0xFFFF, 0xFFFF, TRAINER_BIRD_KEEPER_JACOB_2, TRAINER_BIRD_KEEPER_JACOB_3},
|
{ {TRAINER_BIRD_KEEPER_JACOB, SKIP, SKIP, TRAINER_BIRD_KEEPER_JACOB_2, TRAINER_BIRD_KEEPER_JACOB_3},
|
||||||
MAP_GROUP(ROUTE18), MAP_NUM(ROUTE18) },
|
MAP(ROUTE18) },
|
||||||
{ {TRAINER_SWIMMER_MALE_RICHARD, TRAINER_SWIMMER_MALE_RICHARD},
|
{ {TRAINER_SWIMMER_MALE_RICHARD, TRAINER_SWIMMER_MALE_RICHARD},
|
||||||
MAP_GROUP(ROUTE19), MAP_NUM(ROUTE19) },
|
MAP(ROUTE19) },
|
||||||
{ {TRAINER_SWIMMER_MALE_REECE, TRAINER_SWIMMER_MALE_REECE},
|
{ {TRAINER_SWIMMER_MALE_REECE, TRAINER_SWIMMER_MALE_REECE},
|
||||||
MAP_GROUP(ROUTE19), MAP_NUM(ROUTE19) },
|
MAP(ROUTE19) },
|
||||||
{ {TRAINER_SWIMMER_MALE_MATTHEW, 0xFFFF, 0xFFFF, 0xFFFF, TRAINER_SWIMMER_MALE_MATTHEW_2},
|
{ {TRAINER_SWIMMER_MALE_MATTHEW, SKIP, SKIP, SKIP, TRAINER_SWIMMER_MALE_MATTHEW_2},
|
||||||
MAP_GROUP(ROUTE19), MAP_NUM(ROUTE19) },
|
MAP(ROUTE19) },
|
||||||
{ {TRAINER_SWIMMER_MALE_DOUGLAS, TRAINER_SWIMMER_MALE_DOUGLAS},
|
{ {TRAINER_SWIMMER_MALE_DOUGLAS, TRAINER_SWIMMER_MALE_DOUGLAS},
|
||||||
MAP_GROUP(ROUTE19), MAP_NUM(ROUTE19) },
|
MAP(ROUTE19) },
|
||||||
{ {TRAINER_SWIMMER_MALE_DAVID, TRAINER_SWIMMER_MALE_DAVID},
|
{ {TRAINER_SWIMMER_MALE_DAVID, TRAINER_SWIMMER_MALE_DAVID},
|
||||||
MAP_GROUP(ROUTE19), MAP_NUM(ROUTE19) },
|
MAP(ROUTE19) },
|
||||||
{ {TRAINER_SWIMMER_MALE_TONY, 0xFFFF, 0xFFFF, 0xFFFF, TRAINER_SWIMMER_MALE_TONY_2},
|
{ {TRAINER_SWIMMER_MALE_TONY, SKIP, SKIP, SKIP, TRAINER_SWIMMER_MALE_TONY_2},
|
||||||
MAP_GROUP(ROUTE19), MAP_NUM(ROUTE19) },
|
MAP(ROUTE19) },
|
||||||
{ {TRAINER_SWIMMER_MALE_AXLE, TRAINER_SWIMMER_MALE_AXLE},
|
{ {TRAINER_SWIMMER_MALE_AXLE, TRAINER_SWIMMER_MALE_AXLE},
|
||||||
MAP_GROUP(ROUTE19), MAP_NUM(ROUTE19) },
|
MAP(ROUTE19) },
|
||||||
{ {TRAINER_SWIMMER_FEMALE_ANYA, TRAINER_SWIMMER_FEMALE_ANYA},
|
{ {TRAINER_SWIMMER_FEMALE_ANYA, TRAINER_SWIMMER_FEMALE_ANYA},
|
||||||
MAP_GROUP(ROUTE19), MAP_NUM(ROUTE19) },
|
MAP(ROUTE19) },
|
||||||
{ {TRAINER_SWIMMER_FEMALE_ALICE, 0xFFFF, 0xFFFF, 0xFFFF, TRAINER_SWIMMER_FEMALE_ALICE_2},
|
{ {TRAINER_SWIMMER_FEMALE_ALICE, SKIP, SKIP, SKIP, TRAINER_SWIMMER_FEMALE_ALICE_2},
|
||||||
MAP_GROUP(ROUTE19), MAP_NUM(ROUTE19) },
|
MAP(ROUTE19) },
|
||||||
{ {TRAINER_SWIMMER_FEMALE_CONNIE, TRAINER_SWIMMER_FEMALE_CONNIE},
|
{ {TRAINER_SWIMMER_FEMALE_CONNIE, TRAINER_SWIMMER_FEMALE_CONNIE},
|
||||||
MAP_GROUP(ROUTE19), MAP_NUM(ROUTE19) },
|
MAP(ROUTE19) },
|
||||||
{ {TRAINER_SIS_AND_BRO_LIA_LUC, TRAINER_SIS_AND_BRO_LIA_LUC},
|
{ {TRAINER_SIS_AND_BRO_LIA_LUC, TRAINER_SIS_AND_BRO_LIA_LUC},
|
||||||
MAP_GROUP(ROUTE19), MAP_NUM(ROUTE19) },
|
MAP(ROUTE19) },
|
||||||
{ {TRAINER_SWIMMER_MALE_BARRY, TRAINER_SWIMMER_MALE_BARRY},
|
{ {TRAINER_SWIMMER_MALE_BARRY, TRAINER_SWIMMER_MALE_BARRY},
|
||||||
MAP_GROUP(ROUTE20), MAP_NUM(ROUTE20) },
|
MAP(ROUTE20) },
|
||||||
{ {TRAINER_SWIMMER_MALE_DEAN, TRAINER_SWIMMER_MALE_DEAN},
|
{ {TRAINER_SWIMMER_MALE_DEAN, TRAINER_SWIMMER_MALE_DEAN},
|
||||||
MAP_GROUP(ROUTE20), MAP_NUM(ROUTE20) },
|
MAP(ROUTE20) },
|
||||||
{ {TRAINER_SWIMMER_MALE_DARRIN, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, TRAINER_SWIMMER_MALE_DARRIN_2},
|
{ {TRAINER_SWIMMER_MALE_DARRIN, SKIP, SKIP, SKIP, SKIP, TRAINER_SWIMMER_MALE_DARRIN_2},
|
||||||
MAP_GROUP(ROUTE20), MAP_NUM(ROUTE20) },
|
MAP(ROUTE20) },
|
||||||
{ {TRAINER_SWIMMER_FEMALE_TIFFANY, TRAINER_SWIMMER_FEMALE_TIFFANY},
|
{ {TRAINER_SWIMMER_FEMALE_TIFFANY, TRAINER_SWIMMER_FEMALE_TIFFANY},
|
||||||
MAP_GROUP(ROUTE20), MAP_NUM(ROUTE20) },
|
MAP(ROUTE20) },
|
||||||
{ {TRAINER_SWIMMER_FEMALE_NORA, TRAINER_SWIMMER_FEMALE_NORA},
|
{ {TRAINER_SWIMMER_FEMALE_NORA, TRAINER_SWIMMER_FEMALE_NORA},
|
||||||
MAP_GROUP(ROUTE20), MAP_NUM(ROUTE20) },
|
MAP(ROUTE20) },
|
||||||
{ {TRAINER_SWIMMER_FEMALE_MELISSA, 0xFFFF, 0xFFFF, 0xFFFF, TRAINER_SWIMMER_FEMALE_MELISSA_2},
|
{ {TRAINER_SWIMMER_FEMALE_MELISSA, SKIP, SKIP, SKIP, TRAINER_SWIMMER_FEMALE_MELISSA_2},
|
||||||
MAP_GROUP(ROUTE20), MAP_NUM(ROUTE20) },
|
MAP(ROUTE20) },
|
||||||
{ {TRAINER_SWIMMER_FEMALE_SHIRLEY, TRAINER_SWIMMER_FEMALE_SHIRLEY},
|
{ {TRAINER_SWIMMER_FEMALE_SHIRLEY, TRAINER_SWIMMER_FEMALE_SHIRLEY},
|
||||||
MAP_GROUP(ROUTE20), MAP_NUM(ROUTE20) },
|
MAP(ROUTE20) },
|
||||||
{ {TRAINER_BIRD_KEEPER_ROGER, TRAINER_BIRD_KEEPER_ROGER},
|
{ {TRAINER_BIRD_KEEPER_ROGER, TRAINER_BIRD_KEEPER_ROGER},
|
||||||
MAP_GROUP(ROUTE20), MAP_NUM(ROUTE20) },
|
MAP(ROUTE20) },
|
||||||
{ {TRAINER_PICNICKER_MISSY, 0xFFFF, 0xFFFF, 0xFFFF, TRAINER_PICNICKER_MISSY_2, TRAINER_PICNICKER_MISSY_3},
|
{ {TRAINER_PICNICKER_MISSY, SKIP, SKIP, SKIP, TRAINER_PICNICKER_MISSY_2, TRAINER_PICNICKER_MISSY_3},
|
||||||
MAP_GROUP(ROUTE20), MAP_NUM(ROUTE20) },
|
MAP(ROUTE20) },
|
||||||
{ {TRAINER_PICNICKER_IRENE, TRAINER_PICNICKER_IRENE},
|
{ {TRAINER_PICNICKER_IRENE, TRAINER_PICNICKER_IRENE},
|
||||||
MAP_GROUP(ROUTE20), MAP_NUM(ROUTE20) },
|
MAP(ROUTE20) },
|
||||||
{ {TRAINER_FISHERMAN_RONALD, TRAINER_FISHERMAN_RONALD},
|
{ {TRAINER_FISHERMAN_RONALD, TRAINER_FISHERMAN_RONALD},
|
||||||
MAP_GROUP(ROUTE21_NORTH), MAP_NUM(ROUTE21_NORTH) },
|
MAP(ROUTE21_NORTH) },
|
||||||
{ {TRAINER_FISHERMAN_CLAUDE, TRAINER_FISHERMAN_CLAUDE},
|
{ {TRAINER_FISHERMAN_CLAUDE, TRAINER_FISHERMAN_CLAUDE},
|
||||||
MAP_GROUP(ROUTE21_NORTH), MAP_NUM(ROUTE21_NORTH) },
|
MAP(ROUTE21_NORTH) },
|
||||||
{ {TRAINER_FISHERMAN_WADE, 0xFFFF, 0xFFFF, 0xFFFF, TRAINER_FISHERMAN_WADE_2},
|
{ {TRAINER_FISHERMAN_WADE, SKIP, SKIP, SKIP, TRAINER_FISHERMAN_WADE_2},
|
||||||
MAP_GROUP(ROUTE21_NORTH), MAP_NUM(ROUTE21_NORTH) },
|
MAP(ROUTE21_NORTH) },
|
||||||
{ {TRAINER_FISHERMAN_NOLAN, TRAINER_FISHERMAN_NOLAN},
|
{ {TRAINER_FISHERMAN_NOLAN, TRAINER_FISHERMAN_NOLAN},
|
||||||
MAP_GROUP(ROUTE21_NORTH), MAP_NUM(ROUTE21_NORTH) },
|
MAP(ROUTE21_NORTH) },
|
||||||
{ {TRAINER_SWIMMER_MALE_SPENCER, TRAINER_SWIMMER_MALE_SPENCER},
|
{ {TRAINER_SWIMMER_MALE_SPENCER, TRAINER_SWIMMER_MALE_SPENCER},
|
||||||
MAP_GROUP(ROUTE21_NORTH), MAP_NUM(ROUTE21_NORTH) },
|
MAP(ROUTE21_NORTH) },
|
||||||
{ {TRAINER_SWIMMER_MALE_JACK, 0xFFFF, 0xFFFF, 0xFFFF, TRAINER_SWIMMER_MALE_JACK_2},
|
{ {TRAINER_SWIMMER_MALE_JACK, SKIP, SKIP, SKIP, TRAINER_SWIMMER_MALE_JACK_2},
|
||||||
MAP_GROUP(ROUTE21_NORTH), MAP_NUM(ROUTE21_NORTH) },
|
MAP(ROUTE21_NORTH) },
|
||||||
{ {TRAINER_SWIMMER_MALE_JEROME, TRAINER_SWIMMER_MALE_JEROME},
|
{ {TRAINER_SWIMMER_MALE_JEROME, TRAINER_SWIMMER_MALE_JEROME},
|
||||||
MAP_GROUP(ROUTE21_NORTH), MAP_NUM(ROUTE21_NORTH) },
|
MAP(ROUTE21_NORTH) },
|
||||||
{ {TRAINER_SWIMMER_MALE_ROLAND, TRAINER_SWIMMER_MALE_ROLAND},
|
{ {TRAINER_SWIMMER_MALE_ROLAND, TRAINER_SWIMMER_MALE_ROLAND},
|
||||||
MAP_GROUP(ROUTE21_NORTH), MAP_NUM(ROUTE21_NORTH) },
|
MAP(ROUTE21_NORTH) },
|
||||||
{ {TRAINER_SIS_AND_BRO_LIL_IAN, 0xFFFF, 0xFFFF, 0xFFFF, TRAINER_SIS_AND_BRO_LIL_IAN_2, TRAINER_SIS_AND_BRO_LIL_IAN_3},
|
{ {TRAINER_SIS_AND_BRO_LIL_IAN, SKIP, SKIP, SKIP, TRAINER_SIS_AND_BRO_LIL_IAN_2, TRAINER_SIS_AND_BRO_LIL_IAN_3},
|
||||||
MAP_GROUP(ROUTE21_NORTH), MAP_NUM(ROUTE21_NORTH) },
|
MAP(ROUTE21_NORTH) },
|
||||||
{ {TRAINER_SWIMMER_FEMALE_MARIA, TRAINER_SWIMMER_FEMALE_MARIA},
|
{ {TRAINER_SWIMMER_FEMALE_MARIA, TRAINER_SWIMMER_FEMALE_MARIA},
|
||||||
MAP_GROUP(ONE_ISLAND_KINDLE_ROAD), MAP_NUM(ONE_ISLAND_KINDLE_ROAD) },
|
MAP(ONE_ISLAND_KINDLE_ROAD) },
|
||||||
{ {TRAINER_SWIMMER_FEMALE_ABIGAIL, TRAINER_SWIMMER_FEMALE_ABIGAIL},
|
{ {TRAINER_SWIMMER_FEMALE_ABIGAIL, TRAINER_SWIMMER_FEMALE_ABIGAIL},
|
||||||
MAP_GROUP(ONE_ISLAND_KINDLE_ROAD), MAP_NUM(ONE_ISLAND_KINDLE_ROAD) },
|
MAP(ONE_ISLAND_KINDLE_ROAD) },
|
||||||
{ {TRAINER_SWIMMER_MALE_FINN, 0xFFFF, 0xFFFF, 0xFFFF, TRAINER_SWIMMER_MALE_FINN_2},
|
{ {TRAINER_SWIMMER_MALE_FINN, SKIP, SKIP, SKIP, TRAINER_SWIMMER_MALE_FINN_2},
|
||||||
MAP_GROUP(ONE_ISLAND_KINDLE_ROAD), MAP_NUM(ONE_ISLAND_KINDLE_ROAD) },
|
MAP(ONE_ISLAND_KINDLE_ROAD) },
|
||||||
{ {TRAINER_SWIMMER_MALE_GARRETT, TRAINER_SWIMMER_MALE_GARRETT},
|
{ {TRAINER_SWIMMER_MALE_GARRETT, TRAINER_SWIMMER_MALE_GARRETT},
|
||||||
MAP_GROUP(ONE_ISLAND_KINDLE_ROAD), MAP_NUM(ONE_ISLAND_KINDLE_ROAD) },
|
MAP(ONE_ISLAND_KINDLE_ROAD) },
|
||||||
{ {TRAINER_FISHERMAN_TOMMY, TRAINER_FISHERMAN_TOMMY},
|
{ {TRAINER_FISHERMAN_TOMMY, TRAINER_FISHERMAN_TOMMY},
|
||||||
MAP_GROUP(ONE_ISLAND_KINDLE_ROAD), MAP_NUM(ONE_ISLAND_KINDLE_ROAD) },
|
MAP(ONE_ISLAND_KINDLE_ROAD) },
|
||||||
{ {TRAINER_CRUSH_GIRL_SHARON, 0xFFFF, 0xFFFF, 0xFFFF, TRAINER_CRUSH_GIRL_SHARON_2, TRAINER_CRUSH_GIRL_SHARON_3},
|
{ {TRAINER_CRUSH_GIRL_SHARON, SKIP, SKIP, SKIP, TRAINER_CRUSH_GIRL_SHARON_2, TRAINER_CRUSH_GIRL_SHARON_3},
|
||||||
MAP_GROUP(ONE_ISLAND_KINDLE_ROAD), MAP_NUM(ONE_ISLAND_KINDLE_ROAD) },
|
MAP(ONE_ISLAND_KINDLE_ROAD) },
|
||||||
{ {TRAINER_CRUSH_GIRL_TANYA, 0xFFFF, 0xFFFF, 0xFFFF, TRAINER_CRUSH_GIRL_TANYA_2, TRAINER_CRUSH_GIRL_TANYA_3},
|
{ {TRAINER_CRUSH_GIRL_TANYA, SKIP, SKIP, SKIP, TRAINER_CRUSH_GIRL_TANYA_2, TRAINER_CRUSH_GIRL_TANYA_3},
|
||||||
MAP_GROUP(ONE_ISLAND_KINDLE_ROAD), MAP_NUM(ONE_ISLAND_KINDLE_ROAD) },
|
MAP(ONE_ISLAND_KINDLE_ROAD) },
|
||||||
{ {TRAINER_BLACK_BELT_SHEA, 0xFFFF, 0xFFFF, 0xFFFF, TRAINER_BLACK_BELT_SHEA_2, TRAINER_BLACK_BELT_SHEA_3},
|
{ {TRAINER_BLACK_BELT_SHEA, SKIP, SKIP, SKIP, TRAINER_BLACK_BELT_SHEA_2, TRAINER_BLACK_BELT_SHEA_3},
|
||||||
MAP_GROUP(ONE_ISLAND_KINDLE_ROAD), MAP_NUM(ONE_ISLAND_KINDLE_ROAD) },
|
MAP(ONE_ISLAND_KINDLE_ROAD) },
|
||||||
{ {TRAINER_BLACK_BELT_HUGH, 0xFFFF, 0xFFFF, 0xFFFF, TRAINER_BLACK_BELT_HUGH_2, TRAINER_BLACK_BELT_HUGH_3},
|
{ {TRAINER_BLACK_BELT_HUGH, SKIP, SKIP, SKIP, TRAINER_BLACK_BELT_HUGH_2, TRAINER_BLACK_BELT_HUGH_3},
|
||||||
MAP_GROUP(ONE_ISLAND_KINDLE_ROAD), MAP_NUM(ONE_ISLAND_KINDLE_ROAD) },
|
MAP(ONE_ISLAND_KINDLE_ROAD) },
|
||||||
{ {TRAINER_CAMPER_BRYCE, TRAINER_CAMPER_BRYCE},
|
{ {TRAINER_CAMPER_BRYCE, TRAINER_CAMPER_BRYCE},
|
||||||
MAP_GROUP(ONE_ISLAND_KINDLE_ROAD), MAP_NUM(ONE_ISLAND_KINDLE_ROAD) },
|
MAP(ONE_ISLAND_KINDLE_ROAD) },
|
||||||
{ {TRAINER_PICNICKER_CLAIRE, TRAINER_PICNICKER_CLAIRE},
|
{ {TRAINER_PICNICKER_CLAIRE, TRAINER_PICNICKER_CLAIRE},
|
||||||
MAP_GROUP(ONE_ISLAND_KINDLE_ROAD), MAP_NUM(ONE_ISLAND_KINDLE_ROAD) },
|
MAP(ONE_ISLAND_KINDLE_ROAD) },
|
||||||
{ {TRAINER_CRUSH_KIN_MIK_KIA, 0xFFFF, 0xFFFF, 0xFFFF, TRAINER_CRUSH_KIN_MIK_KIA_2, TRAINER_CRUSH_KIN_MIK_KIA_3},
|
{ {TRAINER_CRUSH_KIN_MIK_KIA, SKIP, SKIP, SKIP, TRAINER_CRUSH_KIN_MIK_KIA_2, TRAINER_CRUSH_KIN_MIK_KIA_3},
|
||||||
MAP_GROUP(ONE_ISLAND_KINDLE_ROAD), MAP_NUM(ONE_ISLAND_KINDLE_ROAD) },
|
MAP(ONE_ISLAND_KINDLE_ROAD) },
|
||||||
{ {TRAINER_SWIMMER_FEMALE_AMARA, TRAINER_SWIMMER_FEMALE_AMARA},
|
{ {TRAINER_SWIMMER_FEMALE_AMARA, TRAINER_SWIMMER_FEMALE_AMARA},
|
||||||
MAP_GROUP(ONE_ISLAND_TREASURE_BEACH), MAP_NUM(ONE_ISLAND_TREASURE_BEACH) },
|
MAP(ONE_ISLAND_TREASURE_BEACH) },
|
||||||
{ {TRAINER_AROMA_LADY_NIKKI, TRAINER_AROMA_LADY_NIKKI},
|
{ {TRAINER_AROMA_LADY_NIKKI, TRAINER_AROMA_LADY_NIKKI},
|
||||||
MAP_GROUP(THREE_ISLAND_BOND_BRIDGE), MAP_NUM(THREE_ISLAND_BOND_BRIDGE) },
|
MAP(THREE_ISLAND_BOND_BRIDGE) },
|
||||||
{ {TRAINER_AROMA_LADY_VIOLET, TRAINER_AROMA_LADY_VIOLET},
|
{ {TRAINER_AROMA_LADY_VIOLET, TRAINER_AROMA_LADY_VIOLET},
|
||||||
MAP_GROUP(THREE_ISLAND_BOND_BRIDGE), MAP_NUM(THREE_ISLAND_BOND_BRIDGE) },
|
MAP(THREE_ISLAND_BOND_BRIDGE) },
|
||||||
{ {TRAINER_TUBER_AMIRA, 0xFFFF, 0xFFFF, 0xFFFF, TRAINER_TUBER_AMIRA_2},
|
{ {TRAINER_TUBER_AMIRA, SKIP, SKIP, SKIP, TRAINER_TUBER_AMIRA_2},
|
||||||
MAP_GROUP(THREE_ISLAND_BOND_BRIDGE), MAP_NUM(THREE_ISLAND_BOND_BRIDGE) },
|
MAP(THREE_ISLAND_BOND_BRIDGE) },
|
||||||
{ {TRAINER_TUBER_ALEXIS, TRAINER_TUBER_ALEXIS},
|
{ {TRAINER_TUBER_ALEXIS, TRAINER_TUBER_ALEXIS},
|
||||||
MAP_GROUP(THREE_ISLAND_BOND_BRIDGE), MAP_NUM(THREE_ISLAND_BOND_BRIDGE) },
|
MAP(THREE_ISLAND_BOND_BRIDGE) },
|
||||||
{ {TRAINER_SWIMMER_FEMALE_TISHA, TRAINER_SWIMMER_FEMALE_TISHA},
|
{ {TRAINER_SWIMMER_FEMALE_TISHA, TRAINER_SWIMMER_FEMALE_TISHA},
|
||||||
MAP_GROUP(THREE_ISLAND_BOND_BRIDGE), MAP_NUM(THREE_ISLAND_BOND_BRIDGE) },
|
MAP(THREE_ISLAND_BOND_BRIDGE) },
|
||||||
{ {TRAINER_TWINS_JOY_MEG, 0xFFFF, 0xFFFF, 0xFFFF, TRAINER_TWINS_JOY_MEG_2},
|
{ {TRAINER_TWINS_JOY_MEG, SKIP, SKIP, SKIP, TRAINER_TWINS_JOY_MEG_2},
|
||||||
MAP_GROUP(THREE_ISLAND_BOND_BRIDGE), MAP_NUM(THREE_ISLAND_BOND_BRIDGE) },
|
MAP(THREE_ISLAND_BOND_BRIDGE) },
|
||||||
{ {TRAINER_PAINTER_DAISY, TRAINER_PAINTER_DAISY},
|
{ {TRAINER_PAINTER_DAISY, TRAINER_PAINTER_DAISY},
|
||||||
MAP_GROUP(FIVE_ISLAND_RESORT_GORGEOUS), MAP_NUM(FIVE_ISLAND_RESORT_GORGEOUS) },
|
MAP(FIVE_ISLAND_RESORT_GORGEOUS) },
|
||||||
{ {TRAINER_PAINTER_CELINA, TRAINER_PAINTER_CELINA},
|
{ {TRAINER_PAINTER_CELINA, TRAINER_PAINTER_CELINA},
|
||||||
MAP_GROUP(FIVE_ISLAND_RESORT_GORGEOUS), MAP_NUM(FIVE_ISLAND_RESORT_GORGEOUS) },
|
MAP(FIVE_ISLAND_RESORT_GORGEOUS) },
|
||||||
{ {TRAINER_PAINTER_RAYNA, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, TRAINER_PAINTER_RAYNA_2},
|
{ {TRAINER_PAINTER_RAYNA, SKIP, SKIP, SKIP, SKIP, TRAINER_PAINTER_RAYNA_2},
|
||||||
MAP_GROUP(FIVE_ISLAND_RESORT_GORGEOUS), MAP_NUM(FIVE_ISLAND_RESORT_GORGEOUS) },
|
MAP(FIVE_ISLAND_RESORT_GORGEOUS) },
|
||||||
{ {TRAINER_LADY_JACKI, TRAINER_LADY_JACKI},
|
{ {TRAINER_LADY_JACKI, TRAINER_LADY_JACKI},
|
||||||
MAP_GROUP(FIVE_ISLAND_RESORT_GORGEOUS), MAP_NUM(FIVE_ISLAND_RESORT_GORGEOUS) },
|
MAP(FIVE_ISLAND_RESORT_GORGEOUS) },
|
||||||
{ {TRAINER_LADY_GILLIAN, TRAINER_LADY_GILLIAN},
|
{ {TRAINER_LADY_GILLIAN, TRAINER_LADY_GILLIAN},
|
||||||
MAP_GROUP(FIVE_ISLAND_RESORT_GORGEOUS), MAP_NUM(FIVE_ISLAND_RESORT_GORGEOUS) },
|
MAP(FIVE_ISLAND_RESORT_GORGEOUS) },
|
||||||
{ {TRAINER_YOUNGSTER_DESTIN, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, TRAINER_YOUNGSTER_DESTIN_2},
|
{ {TRAINER_YOUNGSTER_DESTIN, SKIP, SKIP, SKIP, SKIP, TRAINER_YOUNGSTER_DESTIN_2},
|
||||||
MAP_GROUP(FIVE_ISLAND_RESORT_GORGEOUS), MAP_NUM(FIVE_ISLAND_RESORT_GORGEOUS) },
|
MAP(FIVE_ISLAND_RESORT_GORGEOUS) },
|
||||||
{ {TRAINER_SWIMMER_MALE_TOBY, TRAINER_SWIMMER_MALE_TOBY},
|
{ {TRAINER_SWIMMER_MALE_TOBY, TRAINER_SWIMMER_MALE_TOBY},
|
||||||
MAP_GROUP(FIVE_ISLAND_RESORT_GORGEOUS), MAP_NUM(FIVE_ISLAND_RESORT_GORGEOUS) },
|
MAP(FIVE_ISLAND_RESORT_GORGEOUS) },
|
||||||
{ {TRAINER_PKMN_BREEDER_ALIZE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, TRAINER_PKMN_BREEDER_ALIZE_2},
|
{ {TRAINER_PKMN_BREEDER_ALIZE, SKIP, SKIP, SKIP, SKIP, TRAINER_PKMN_BREEDER_ALIZE_2},
|
||||||
MAP_GROUP(FIVE_ISLAND_WATER_LABYRINTH), MAP_NUM(FIVE_ISLAND_WATER_LABYRINTH) },
|
MAP(FIVE_ISLAND_WATER_LABYRINTH) },
|
||||||
{ {TRAINER_BIRD_KEEPER_MILO, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, TRAINER_BIRD_KEEPER_MILO_2},
|
{ {TRAINER_BIRD_KEEPER_MILO, SKIP, SKIP, SKIP, SKIP, TRAINER_BIRD_KEEPER_MILO_2},
|
||||||
MAP_GROUP(FIVE_ISLAND_MEMORIAL_PILLAR), MAP_NUM(FIVE_ISLAND_MEMORIAL_PILLAR) },
|
MAP(FIVE_ISLAND_MEMORIAL_PILLAR) },
|
||||||
{ {TRAINER_BIRD_KEEPER_CHAZ, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, TRAINER_BIRD_KEEPER_CHAZ_2},
|
{ {TRAINER_BIRD_KEEPER_CHAZ, SKIP, SKIP, SKIP, SKIP, TRAINER_BIRD_KEEPER_CHAZ_2},
|
||||||
MAP_GROUP(FIVE_ISLAND_MEMORIAL_PILLAR), MAP_NUM(FIVE_ISLAND_MEMORIAL_PILLAR) },
|
MAP(FIVE_ISLAND_MEMORIAL_PILLAR) },
|
||||||
{ {TRAINER_BIRD_KEEPER_HAROLD, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, TRAINER_BIRD_KEEPER_HAROLD_2},
|
{ {TRAINER_BIRD_KEEPER_HAROLD, SKIP, SKIP, SKIP, SKIP, TRAINER_BIRD_KEEPER_HAROLD_2},
|
||||||
MAP_GROUP(FIVE_ISLAND_MEMORIAL_PILLAR), MAP_NUM(FIVE_ISLAND_MEMORIAL_PILLAR) },
|
MAP(FIVE_ISLAND_MEMORIAL_PILLAR) },
|
||||||
{ {TRAINER_FISHERMAN_TYLOR, TRAINER_FISHERMAN_TYLOR},
|
{ {TRAINER_FISHERMAN_TYLOR, TRAINER_FISHERMAN_TYLOR},
|
||||||
MAP_GROUP(SIX_ISLAND_OUTCAST_ISLAND), MAP_NUM(SIX_ISLAND_OUTCAST_ISLAND) },
|
MAP(SIX_ISLAND_OUTCAST_ISLAND) },
|
||||||
{ {TRAINER_SWIMMER_MALE_MYMO, TRAINER_SWIMMER_MALE_MYMO},
|
{ {TRAINER_SWIMMER_MALE_MYMO, TRAINER_SWIMMER_MALE_MYMO},
|
||||||
MAP_GROUP(SIX_ISLAND_OUTCAST_ISLAND), MAP_NUM(SIX_ISLAND_OUTCAST_ISLAND) },
|
MAP(SIX_ISLAND_OUTCAST_ISLAND) },
|
||||||
{ {TRAINER_SWIMMER_FEMALE_NICOLE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, TRAINER_SWIMMER_FEMALE_NICOLE_2},
|
{ {TRAINER_SWIMMER_FEMALE_NICOLE, SKIP, SKIP, SKIP, SKIP, TRAINER_SWIMMER_FEMALE_NICOLE_2},
|
||||||
MAP_GROUP(SIX_ISLAND_OUTCAST_ISLAND), MAP_NUM(SIX_ISLAND_OUTCAST_ISLAND) },
|
MAP(SIX_ISLAND_OUTCAST_ISLAND) },
|
||||||
{ {TRAINER_SIS_AND_BRO_AVA_GEB, TRAINER_SIS_AND_BRO_AVA_GEB},
|
{ {TRAINER_SIS_AND_BRO_AVA_GEB, TRAINER_SIS_AND_BRO_AVA_GEB},
|
||||||
MAP_GROUP(SIX_ISLAND_OUTCAST_ISLAND), MAP_NUM(SIX_ISLAND_OUTCAST_ISLAND) },
|
MAP(SIX_ISLAND_OUTCAST_ISLAND) },
|
||||||
{ {TRAINER_PSYCHIC_JACLYN, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, TRAINER_PSYCHIC_JACLYN_2},
|
{ {TRAINER_PSYCHIC_JACLYN, SKIP, SKIP, SKIP, SKIP, TRAINER_PSYCHIC_JACLYN_2},
|
||||||
MAP_GROUP(SIX_ISLAND_GREEN_PATH), MAP_NUM(SIX_ISLAND_GREEN_PATH) },
|
MAP(SIX_ISLAND_GREEN_PATH) },
|
||||||
{ {TRAINER_AROMA_LADY_ROSE, TRAINER_AROMA_LADY_ROSE},
|
{ {TRAINER_AROMA_LADY_ROSE, TRAINER_AROMA_LADY_ROSE},
|
||||||
MAP_GROUP(SIX_ISLAND_WATER_PATH), MAP_NUM(SIX_ISLAND_WATER_PATH) },
|
MAP(SIX_ISLAND_WATER_PATH) },
|
||||||
{ {TRAINER_JUGGLER_EDWARD, TRAINER_JUGGLER_EDWARD},
|
{ {TRAINER_JUGGLER_EDWARD, TRAINER_JUGGLER_EDWARD},
|
||||||
MAP_GROUP(SIX_ISLAND_WATER_PATH), MAP_NUM(SIX_ISLAND_WATER_PATH) },
|
MAP(SIX_ISLAND_WATER_PATH) },
|
||||||
{ {TRAINER_SWIMMER_MALE_SAMIR, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, TRAINER_SWIMMER_MALE_SAMIR_2},
|
{ {TRAINER_SWIMMER_MALE_SAMIR, SKIP, SKIP, SKIP, SKIP, TRAINER_SWIMMER_MALE_SAMIR_2},
|
||||||
MAP_GROUP(SIX_ISLAND_WATER_PATH), MAP_NUM(SIX_ISLAND_WATER_PATH) },
|
MAP(SIX_ISLAND_WATER_PATH) },
|
||||||
{ {TRAINER_SWIMMER_FEMALE_DENISE, TRAINER_SWIMMER_FEMALE_DENISE},
|
{ {TRAINER_SWIMMER_FEMALE_DENISE, TRAINER_SWIMMER_FEMALE_DENISE},
|
||||||
MAP_GROUP(SIX_ISLAND_WATER_PATH), MAP_NUM(SIX_ISLAND_WATER_PATH) },
|
MAP(SIX_ISLAND_WATER_PATH) },
|
||||||
{ {TRAINER_TWINS_MIU_MIA, TRAINER_TWINS_MIU_MIA},
|
{ {TRAINER_TWINS_MIU_MIA, TRAINER_TWINS_MIU_MIA},
|
||||||
MAP_GROUP(SIX_ISLAND_WATER_PATH), MAP_NUM(SIX_ISLAND_WATER_PATH) },
|
MAP(SIX_ISLAND_WATER_PATH) },
|
||||||
{ {TRAINER_HIKER_EARL, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, TRAINER_HIKER_EARL_2},
|
{ {TRAINER_HIKER_EARL, SKIP, SKIP, SKIP, SKIP, TRAINER_HIKER_EARL_2},
|
||||||
MAP_GROUP(SIX_ISLAND_WATER_PATH), MAP_NUM(SIX_ISLAND_WATER_PATH) },
|
MAP(SIX_ISLAND_WATER_PATH) },
|
||||||
{ {TRAINER_RUIN_MANIAC_STANLY, TRAINER_RUIN_MANIAC_STANLY},
|
{ {TRAINER_RUIN_MANIAC_STANLY, TRAINER_RUIN_MANIAC_STANLY},
|
||||||
MAP_GROUP(SIX_ISLAND_RUIN_VALLEY), MAP_NUM(SIX_ISLAND_RUIN_VALLEY) },
|
MAP(SIX_ISLAND_RUIN_VALLEY) },
|
||||||
{ {TRAINER_RUIN_MANIAC_FOSTER, TRAINER_RUIN_MANIAC_FOSTER},
|
{ {TRAINER_RUIN_MANIAC_FOSTER, TRAINER_RUIN_MANIAC_FOSTER},
|
||||||
MAP_GROUP(SIX_ISLAND_RUIN_VALLEY), MAP_NUM(SIX_ISLAND_RUIN_VALLEY) },
|
MAP(SIX_ISLAND_RUIN_VALLEY) },
|
||||||
{ {TRAINER_RUIN_MANIAC_LARRY, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, TRAINER_RUIN_MANIAC_LARRY_2},
|
{ {TRAINER_RUIN_MANIAC_LARRY, SKIP, SKIP, SKIP, SKIP, TRAINER_RUIN_MANIAC_LARRY_2},
|
||||||
MAP_GROUP(SIX_ISLAND_RUIN_VALLEY), MAP_NUM(SIX_ISLAND_RUIN_VALLEY) },
|
MAP(SIX_ISLAND_RUIN_VALLEY) },
|
||||||
{ {TRAINER_HIKER_DARYL, TRAINER_HIKER_DARYL},
|
{ {TRAINER_HIKER_DARYL, TRAINER_HIKER_DARYL},
|
||||||
MAP_GROUP(SIX_ISLAND_RUIN_VALLEY), MAP_NUM(SIX_ISLAND_RUIN_VALLEY) },
|
MAP(SIX_ISLAND_RUIN_VALLEY) },
|
||||||
{ {TRAINER_POKEMANIAC_HECTOR, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, TRAINER_POKEMANIAC_HECTOR_2},
|
{ {TRAINER_POKEMANIAC_HECTOR, SKIP, SKIP, SKIP, SKIP, TRAINER_POKEMANIAC_HECTOR_2},
|
||||||
MAP_GROUP(SIX_ISLAND_RUIN_VALLEY), MAP_NUM(SIX_ISLAND_RUIN_VALLEY) },
|
MAP(SIX_ISLAND_RUIN_VALLEY) },
|
||||||
{ {TRAINER_PSYCHIC_DARIO, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, TRAINER_PSYCHIC_DARIO_2},
|
{ {TRAINER_PSYCHIC_DARIO, SKIP, SKIP, SKIP, SKIP, TRAINER_PSYCHIC_DARIO_2},
|
||||||
MAP_GROUP(SEVEN_ISLAND_TRAINER_TOWER), MAP_NUM(SEVEN_ISLAND_TRAINER_TOWER) },
|
MAP(SEVEN_ISLAND_TRAINER_TOWER) },
|
||||||
{ {TRAINER_PSYCHIC_RODETTE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, TRAINER_PSYCHIC_RODETTE_2},
|
{ {TRAINER_PSYCHIC_RODETTE, SKIP, SKIP, SKIP, SKIP, TRAINER_PSYCHIC_RODETTE_2},
|
||||||
MAP_GROUP(SEVEN_ISLAND_TRAINER_TOWER), MAP_NUM(SEVEN_ISLAND_TRAINER_TOWER) },
|
MAP(SEVEN_ISLAND_TRAINER_TOWER) },
|
||||||
{ {TRAINER_AROMA_LADY_MIAH, TRAINER_AROMA_LADY_MIAH},
|
{ {TRAINER_AROMA_LADY_MIAH, TRAINER_AROMA_LADY_MIAH},
|
||||||
MAP_GROUP(SEVEN_ISLAND_SEVAULT_CANYON_ENTRANCE), MAP_NUM(SEVEN_ISLAND_SEVAULT_CANYON_ENTRANCE) },
|
MAP(SEVEN_ISLAND_SEVAULT_CANYON_ENTRANCE) },
|
||||||
{ {TRAINER_YOUNG_COUPLE_EVE_JON, TRAINER_YOUNG_COUPLE_EVE_JON},
|
{ {TRAINER_YOUNG_COUPLE_EVE_JON, TRAINER_YOUNG_COUPLE_EVE_JON},
|
||||||
MAP_GROUP(SEVEN_ISLAND_SEVAULT_CANYON_ENTRANCE), MAP_NUM(SEVEN_ISLAND_SEVAULT_CANYON_ENTRANCE) },
|
MAP(SEVEN_ISLAND_SEVAULT_CANYON_ENTRANCE) },
|
||||||
{ {TRAINER_JUGGLER_MASON, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, TRAINER_JUGGLER_MASON_2},
|
{ {TRAINER_JUGGLER_MASON, SKIP, SKIP, SKIP, SKIP, TRAINER_JUGGLER_MASON_2},
|
||||||
MAP_GROUP(SEVEN_ISLAND_SEVAULT_CANYON_ENTRANCE), MAP_NUM(SEVEN_ISLAND_SEVAULT_CANYON_ENTRANCE) },
|
MAP(SEVEN_ISLAND_SEVAULT_CANYON_ENTRANCE) },
|
||||||
{ {TRAINER_PKMN_RANGER_NICOLAS, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, TRAINER_PKMN_RANGER_NICOLAS_2},
|
{ {TRAINER_PKMN_RANGER_NICOLAS, SKIP, SKIP, SKIP, SKIP, TRAINER_PKMN_RANGER_NICOLAS_2},
|
||||||
MAP_GROUP(SEVEN_ISLAND_SEVAULT_CANYON_ENTRANCE), MAP_NUM(SEVEN_ISLAND_SEVAULT_CANYON_ENTRANCE) },
|
MAP(SEVEN_ISLAND_SEVAULT_CANYON_ENTRANCE) },
|
||||||
{ {TRAINER_PKMN_RANGER_MADELINE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, TRAINER_PKMN_RANGER_MADELINE_2},
|
{ {TRAINER_PKMN_RANGER_MADELINE, SKIP, SKIP, SKIP, SKIP, TRAINER_PKMN_RANGER_MADELINE_2},
|
||||||
MAP_GROUP(SEVEN_ISLAND_SEVAULT_CANYON_ENTRANCE), MAP_NUM(SEVEN_ISLAND_SEVAULT_CANYON_ENTRANCE) },
|
MAP(SEVEN_ISLAND_SEVAULT_CANYON_ENTRANCE) },
|
||||||
{ {TRAINER_CRUSH_GIRL_CYNDY, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, TRAINER_CRUSH_GIRL_CYNDY_2},
|
{ {TRAINER_CRUSH_GIRL_CYNDY, SKIP, SKIP, SKIP, SKIP, TRAINER_CRUSH_GIRL_CYNDY_2},
|
||||||
MAP_GROUP(SEVEN_ISLAND_SEVAULT_CANYON), MAP_NUM(SEVEN_ISLAND_SEVAULT_CANYON) },
|
MAP(SEVEN_ISLAND_SEVAULT_CANYON) },
|
||||||
{ {TRAINER_TAMER_EVAN, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, TRAINER_TAMER_EVAN_2},
|
{ {TRAINER_TAMER_EVAN, SKIP, SKIP, SKIP, SKIP, TRAINER_TAMER_EVAN_2},
|
||||||
MAP_GROUP(SEVEN_ISLAND_SEVAULT_CANYON), MAP_NUM(SEVEN_ISLAND_SEVAULT_CANYON) },
|
MAP(SEVEN_ISLAND_SEVAULT_CANYON) },
|
||||||
{ {TRAINER_PKMN_RANGER_JACKSON, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, TRAINER_PKMN_RANGER_JACKSON_2},
|
{ {TRAINER_PKMN_RANGER_JACKSON, SKIP, SKIP, SKIP, SKIP, TRAINER_PKMN_RANGER_JACKSON_2},
|
||||||
MAP_GROUP(SEVEN_ISLAND_SEVAULT_CANYON), MAP_NUM(SEVEN_ISLAND_SEVAULT_CANYON) },
|
MAP(SEVEN_ISLAND_SEVAULT_CANYON) },
|
||||||
{ {TRAINER_PKMN_RANGER_KATELYN, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, TRAINER_PKMN_RANGER_KATELYN_2},
|
{ {TRAINER_PKMN_RANGER_KATELYN, SKIP, SKIP, SKIP, SKIP, TRAINER_PKMN_RANGER_KATELYN_2},
|
||||||
MAP_GROUP(SEVEN_ISLAND_SEVAULT_CANYON), MAP_NUM(SEVEN_ISLAND_SEVAULT_CANYON) },
|
MAP(SEVEN_ISLAND_SEVAULT_CANYON) },
|
||||||
{ {TRAINER_COOLTRAINER_LEROY, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, TRAINER_COOLTRAINER_LEROY_2},
|
{ {TRAINER_COOLTRAINER_LEROY, SKIP, SKIP, SKIP, SKIP, TRAINER_COOLTRAINER_LEROY_2},
|
||||||
MAP_GROUP(SEVEN_ISLAND_SEVAULT_CANYON), MAP_NUM(SEVEN_ISLAND_SEVAULT_CANYON) },
|
MAP(SEVEN_ISLAND_SEVAULT_CANYON) },
|
||||||
{ {TRAINER_COOLTRAINER_MICHELLE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, TRAINER_COOLTRAINER_MICHELLE_2},
|
{ {TRAINER_COOLTRAINER_MICHELLE, SKIP, SKIP, SKIP, SKIP, TRAINER_COOLTRAINER_MICHELLE_2},
|
||||||
MAP_GROUP(SEVEN_ISLAND_SEVAULT_CANYON), MAP_NUM(SEVEN_ISLAND_SEVAULT_CANYON) },
|
MAP(SEVEN_ISLAND_SEVAULT_CANYON) },
|
||||||
{ {TRAINER_COOL_COUPLE_LEX_NYA, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, TRAINER_COOL_COUPLE_LEX_NYA_2},
|
{ {TRAINER_COOL_COUPLE_LEX_NYA, SKIP, SKIP, SKIP, SKIP, TRAINER_COOL_COUPLE_LEX_NYA_2},
|
||||||
MAP_GROUP(SEVEN_ISLAND_SEVAULT_CANYON), MAP_NUM(SEVEN_ISLAND_SEVAULT_CANYON) },
|
MAP(SEVEN_ISLAND_SEVAULT_CANYON) },
|
||||||
{ {TRAINER_RUIN_MANIAC_BRANDON, TRAINER_RUIN_MANIAC_BRANDON},
|
{ {TRAINER_RUIN_MANIAC_BRANDON, TRAINER_RUIN_MANIAC_BRANDON},
|
||||||
MAP_GROUP(SEVEN_ISLAND_TANOBY_RUINS), MAP_NUM(SEVEN_ISLAND_TANOBY_RUINS) },
|
MAP(SEVEN_ISLAND_TANOBY_RUINS) },
|
||||||
{ {TRAINER_RUIN_MANIAC_BENJAMIN, TRAINER_RUIN_MANIAC_BENJAMIN},
|
{ {TRAINER_RUIN_MANIAC_BENJAMIN, TRAINER_RUIN_MANIAC_BENJAMIN},
|
||||||
MAP_GROUP(SEVEN_ISLAND_TANOBY_RUINS), MAP_NUM(SEVEN_ISLAND_TANOBY_RUINS) },
|
MAP(SEVEN_ISLAND_TANOBY_RUINS) },
|
||||||
{ {TRAINER_PAINTER_EDNA, TRAINER_PAINTER_EDNA},
|
{ {TRAINER_PAINTER_EDNA, TRAINER_PAINTER_EDNA},
|
||||||
MAP_GROUP(SEVEN_ISLAND_TANOBY_RUINS), MAP_NUM(SEVEN_ISLAND_TANOBY_RUINS) },
|
MAP(SEVEN_ISLAND_TANOBY_RUINS) },
|
||||||
{ {TRAINER_GENTLEMAN_CLIFFORD, TRAINER_GENTLEMAN_CLIFFORD},
|
{ {TRAINER_GENTLEMAN_CLIFFORD, TRAINER_GENTLEMAN_CLIFFORD},
|
||||||
MAP_GROUP(SEVEN_ISLAND_TANOBY_RUINS), MAP_NUM(SEVEN_ISLAND_TANOBY_RUINS) },
|
MAP(SEVEN_ISLAND_TANOBY_RUINS) },
|
||||||
};
|
};
|
||||||
|
|
||||||
static const u8 sMovementScript_Wait48[] = {
|
static const u8 sMovementScript_Wait48[] = {
|
||||||
@@ -760,7 +763,7 @@ void Task_VsSeeker_0(u8 taskId)
|
|||||||
}
|
}
|
||||||
else if (respval == VSSEEKER_CAN_USE)
|
else if (respval == VSSEEKER_CAN_USE)
|
||||||
{
|
{
|
||||||
ItemUse_SetQuestLogEvent(QL_EVENT_USED_ITEM, 0, gSpecialVar_ItemId, 0xffff);
|
ItemUse_SetQuestLogEvent(QL_EVENT_USED_ITEM, 0, gSpecialVar_ItemId, 0xFFFF);
|
||||||
FieldEffectStart(FLDEFF_USE_VS_SEEKER);
|
FieldEffectStart(FLDEFF_USE_VS_SEEKER);
|
||||||
gTasks[taskId].func = Task_VsSeeker_1;
|
gTasks[taskId].func = Task_VsSeeker_1;
|
||||||
gTasks[taskId].data[0] = 15;
|
gTasks[taskId].data[0] = 15;
|
||||||
@@ -792,7 +795,7 @@ static void Task_VsSeeker_2(u8 taskId)
|
|||||||
data[1] = 0;
|
data[1] = 0;
|
||||||
data[2] = 0;
|
data[2] = 0;
|
||||||
VsSeekerResetInBagStepCounter();
|
VsSeekerResetInBagStepCounter();
|
||||||
sVsSeeker->responseCode = GetVsSeekerResponseInArea(sVsSeekerData);
|
sVsSeeker->responseCode = GetVsSeekerResponseInArea(sRematches);
|
||||||
ScriptMovement_StartObjectMovementScript(0xFF, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, sMovementScript_Wait48);
|
ScriptMovement_StartObjectMovementScript(0xFF, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, sMovementScript_Wait48);
|
||||||
gTasks[taskId].func = Task_VsSeeker_3;
|
gTasks[taskId].func = Task_VsSeeker_3;
|
||||||
}
|
}
|
||||||
@@ -861,7 +864,7 @@ static u8 CanUseVsSeeker(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static u8 GetVsSeekerResponseInArea(const VsSeekerData * vsSeekerData)
|
static u8 GetVsSeekerResponseInArea(const struct RematchData * vsSeekerData)
|
||||||
{
|
{
|
||||||
u16 trainerIdx = 0;
|
u16 trainerIdx = 0;
|
||||||
u16 rval = 0;
|
u16 rval = 0;
|
||||||
@@ -933,7 +936,7 @@ void ClearRematchStateByTrainerId(void)
|
|||||||
{
|
{
|
||||||
u8 objEventId = 0;
|
u8 objEventId = 0;
|
||||||
struct ObjectEventTemplate *objectEventTemplates = gSaveBlock1Ptr->objectEventTemplates;
|
struct ObjectEventTemplate *objectEventTemplates = gSaveBlock1Ptr->objectEventTemplates;
|
||||||
int vsSeekerDataIdx = LookupVsSeekerOpponentInArray(sVsSeekerData, gTrainerBattleOpponent_A);
|
int vsSeekerDataIdx = LookupVsSeekerOpponentInArray(sRematches, gTrainerBattleOpponent_A);
|
||||||
|
|
||||||
if (vsSeekerDataIdx != -1)
|
if (vsSeekerDataIdx != -1)
|
||||||
{
|
{
|
||||||
@@ -943,7 +946,7 @@ void ClearRematchStateByTrainerId(void)
|
|||||||
{
|
{
|
||||||
if ((objectEventTemplates[i].objUnion.normal.trainerType == TRAINER_TYPE_NORMAL
|
if ((objectEventTemplates[i].objUnion.normal.trainerType == TRAINER_TYPE_NORMAL
|
||||||
|| objectEventTemplates[i].objUnion.normal.trainerType == TRAINER_TYPE_BURIED)
|
|| objectEventTemplates[i].objUnion.normal.trainerType == TRAINER_TYPE_BURIED)
|
||||||
&& vsSeekerDataIdx == LookupVsSeekerOpponentInArray(sVsSeekerData, GetTrainerFlagFromScript(objectEventTemplates[i].script)))
|
&& vsSeekerDataIdx == LookupVsSeekerOpponentInArray(sRematches, GetTrainerFlagFromScript(objectEventTemplates[i].script)))
|
||||||
{
|
{
|
||||||
struct ObjectEvent *objectEvent;
|
struct ObjectEvent *objectEvent;
|
||||||
|
|
||||||
@@ -995,7 +998,7 @@ static u8 GetRematchTrainerIdGivenGameState(const u16 *trainerIdxs, u8 rematchId
|
|||||||
while (--rematchIdx != 0)
|
while (--rematchIdx != 0)
|
||||||
{
|
{
|
||||||
const u16 *rematch_p = trainerIdxs + rematchIdx;
|
const u16 *rematch_p = trainerIdxs + rematchIdx;
|
||||||
if (*rematch_p != 0xFFFF)
|
if (*rematch_p != SKIP)
|
||||||
return rematchIdx;
|
return rematchIdx;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
@@ -1003,20 +1006,20 @@ static u8 GetRematchTrainerIdGivenGameState(const u16 *trainerIdxs, u8 rematchId
|
|||||||
|
|
||||||
bool8 ShouldTryRematchBattle(void)
|
bool8 ShouldTryRematchBattle(void)
|
||||||
{
|
{
|
||||||
if (ShouldTryRematchBattleInternal(sVsSeekerData, gTrainerBattleOpponent_A))
|
if (ShouldTryRematchBattleInternal(sRematches, gTrainerBattleOpponent_A))
|
||||||
{
|
{
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
return HasRematchTrainerAlreadyBeenFought(sVsSeekerData, gTrainerBattleOpponent_A);
|
return HasRematchTrainerAlreadyBeenFought(sRematches, gTrainerBattleOpponent_A);
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool8 ShouldTryRematchBattleInternal(const VsSeekerData *vsSeekerData, u16 trainerBattleOpponent)
|
static bool8 ShouldTryRematchBattleInternal(const struct RematchData *vsSeekerData, u16 trainerBattleOpponent)
|
||||||
{
|
{
|
||||||
s32 rematchIdx = GetRematchIdx(vsSeekerData, trainerBattleOpponent);
|
s32 rematchIdx = GetRematchIdx(vsSeekerData, trainerBattleOpponent);
|
||||||
|
|
||||||
if (rematchIdx == -1)
|
if (rematchIdx == -1)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
if (rematchIdx >= 0 && rematchIdx < NELEMS(sVsSeekerData))
|
if (rematchIdx >= 0 && rematchIdx < NELEMS(sRematches))
|
||||||
{
|
{
|
||||||
if (IsThisTrainerRematchable(gSpecialVar_LastTalked))
|
if (IsThisTrainerRematchable(gSpecialVar_LastTalked))
|
||||||
return TRUE;
|
return TRUE;
|
||||||
@@ -1024,7 +1027,7 @@ static bool8 ShouldTryRematchBattleInternal(const VsSeekerData *vsSeekerData, u1
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool8 HasRematchTrainerAlreadyBeenFought(const VsSeekerData *vsSeekerData, u16 trainerBattleOpponent)
|
static bool8 HasRematchTrainerAlreadyBeenFought(const struct RematchData *vsSeekerData, u16 trainerBattleOpponent)
|
||||||
{
|
{
|
||||||
s32 rematchIdx = GetRematchIdx(vsSeekerData, trainerBattleOpponent);
|
s32 rematchIdx = GetRematchIdx(vsSeekerData, trainerBattleOpponent);
|
||||||
|
|
||||||
@@ -1041,19 +1044,19 @@ void ClearRematchStateOfLastTalked(void)
|
|||||||
SetBattledTrainerFlag();
|
SetBattledTrainerFlag();
|
||||||
}
|
}
|
||||||
|
|
||||||
static int LookupVsSeekerOpponentInArray(const VsSeekerData * array, u16 trainerId)
|
static int LookupVsSeekerOpponentInArray(const struct RematchData * array, u16 trainerId)
|
||||||
{
|
{
|
||||||
int i, j;
|
int i, j;
|
||||||
|
|
||||||
for (i = 0; i < NELEMS(sVsSeekerData); i++)
|
for (i = 0; i < NELEMS(sRematches); i++)
|
||||||
{
|
{
|
||||||
for (j = 0; j < 6; j++)
|
for (j = 0; j < MAX_REMATCH_PARTIES; j++)
|
||||||
{
|
{
|
||||||
u16 testTrainerId;
|
u16 testTrainerId;
|
||||||
if (array[i].trainerIdxs[j] == 0)
|
if (array[i].trainerIdxs[j] == 0)
|
||||||
break;
|
break;
|
||||||
testTrainerId = array[i].trainerIdxs[j];
|
testTrainerId = array[i].trainerIdxs[j];
|
||||||
if (testTrainerId == 0xFFFF)
|
if (testTrainerId == SKIP)
|
||||||
continue;
|
continue;
|
||||||
if (testTrainerId == trainerId)
|
if (testTrainerId == trainerId)
|
||||||
return i;
|
return i;
|
||||||
@@ -1067,25 +1070,25 @@ int GetRematchTrainerId(u16 trainerId)
|
|||||||
{
|
{
|
||||||
u8 i;
|
u8 i;
|
||||||
u8 j;
|
u8 j;
|
||||||
j = GetNextAvailableRematchTrainer(sVsSeekerData, trainerId, &i);
|
j = GetNextAvailableRematchTrainer(sRematches, trainerId, &i);
|
||||||
if (!j)
|
if (!j)
|
||||||
return 0;
|
return 0;
|
||||||
TryGetRematchTrainerIdGivenGameState(sVsSeekerData[i].trainerIdxs, &j);
|
TryGetRematchTrainerIdGivenGameState(sRematches[i].trainerIdxs, &j);
|
||||||
return sVsSeekerData[i].trainerIdxs[j];
|
return sRematches[i].trainerIdxs[j];
|
||||||
}
|
}
|
||||||
|
|
||||||
u8 IsTrainerReadyForRematch(void)
|
u8 IsTrainerReadyForRematch(void)
|
||||||
{
|
{
|
||||||
return IsTrainerReadyForRematchInternal(sVsSeekerData, gTrainerBattleOpponent_A);
|
return IsTrainerReadyForRematchInternal(sRematches, gTrainerBattleOpponent_A);
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool8 IsTrainerReadyForRematchInternal(const VsSeekerData * array, u16 trainerId)
|
static bool8 IsTrainerReadyForRematchInternal(const struct RematchData * array, u16 trainerId)
|
||||||
{
|
{
|
||||||
int rematchTrainerIdx = LookupVsSeekerOpponentInArray(array, trainerId);
|
int rematchTrainerIdx = LookupVsSeekerOpponentInArray(array, trainerId);
|
||||||
|
|
||||||
if (rematchTrainerIdx == -1)
|
if (rematchTrainerIdx == -1)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
if (rematchTrainerIdx >= NELEMS(sVsSeekerData))
|
if (rematchTrainerIdx >= NELEMS(sRematches))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
if (!IsThisTrainerRematchable(gSpecialVar_LastTalked))
|
if (!IsThisTrainerRematchable(gSpecialVar_LastTalked))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
@@ -1177,11 +1180,11 @@ static u16 GetTrainerFlagFromScript(const u8 *script)
|
|||||||
return trainerFlag;
|
return trainerFlag;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int GetRematchIdx(const VsSeekerData * vsSeekerData, u16 trainerFlagIdx)
|
static int GetRematchIdx(const struct RematchData * vsSeekerData, u16 trainerFlagIdx)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i = 0; i < NELEMS(sVsSeekerData); i++)
|
for (i = 0; i < NELEMS(sRematches); i++)
|
||||||
{
|
{
|
||||||
if (vsSeekerData[i].trainerIdxs[0] == trainerFlagIdx)
|
if (vsSeekerData[i].trainerIdxs[0] == trainerFlagIdx)
|
||||||
return i;
|
return i;
|
||||||
@@ -1223,20 +1226,20 @@ static bool8 IsTrainerVisibleOnScreen(struct VsSeekerTrainerInfo * trainerInfo)
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static u8 GetNextAvailableRematchTrainer(const VsSeekerData * vsSeekerData, u16 trainerFlagNo, u8 * idxPtr)
|
static u8 GetNextAvailableRematchTrainer(const struct RematchData * vsSeekerData, u16 trainerFlagNo, u8 * idxPtr)
|
||||||
{
|
{
|
||||||
int i, j;
|
int i, j;
|
||||||
|
|
||||||
for (i = 0; i < NELEMS(sVsSeekerData); i++)
|
for (i = 0; i < NELEMS(sRematches); i++)
|
||||||
{
|
{
|
||||||
if (vsSeekerData[i].trainerIdxs[0] == trainerFlagNo)
|
if (vsSeekerData[i].trainerIdxs[0] == trainerFlagNo)
|
||||||
{
|
{
|
||||||
*idxPtr = i;
|
*idxPtr = i;
|
||||||
for (j = 1; j < 6; j++)
|
for (j = 1; j < MAX_REMATCH_PARTIES; j++)
|
||||||
{
|
{
|
||||||
if (vsSeekerData[i].trainerIdxs[j] == 0)
|
if (vsSeekerData[i].trainerIdxs[j] == TRAINER_NONE)
|
||||||
return j - 1;
|
return j - 1;
|
||||||
if (vsSeekerData[i].trainerIdxs[j] == 0xffff)
|
if (vsSeekerData[i].trainerIdxs[j] == SKIP)
|
||||||
continue;
|
continue;
|
||||||
if (HasTrainerBeenFought(vsSeekerData[i].trainerIdxs[j]))
|
if (HasTrainerBeenFought(vsSeekerData[i].trainerIdxs[j]))
|
||||||
continue;
|
continue;
|
||||||
@@ -1259,7 +1262,7 @@ static u8 GetRematchableTrainerLocalId(void)
|
|||||||
{
|
{
|
||||||
if (IsTrainerVisibleOnScreen(&sVsSeeker->trainerInfo[i]) == 1)
|
if (IsTrainerVisibleOnScreen(&sVsSeeker->trainerInfo[i]) == 1)
|
||||||
{
|
{
|
||||||
if (HasTrainerBeenFought(sVsSeeker->trainerInfo[i].trainerIdx) != 1 || GetNextAvailableRematchTrainer(sVsSeekerData, sVsSeeker->trainerInfo[i].trainerIdx, &idx))
|
if (HasTrainerBeenFought(sVsSeeker->trainerInfo[i].trainerIdx) != 1 || GetNextAvailableRematchTrainer(sRematches, sVsSeeker->trainerInfo[i].trainerIdx, &idx))
|
||||||
return sVsSeeker->trainerInfo[i].localId;
|
return sVsSeeker->trainerInfo[i].localId;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1310,7 +1313,7 @@ static void StartAllRespondantIdleMovements(void)
|
|||||||
if (ObjectEventIdIsSane(sVsSeeker->trainerInfo[j].objectEventId) == 1)
|
if (ObjectEventIdIsSane(sVsSeeker->trainerInfo[j].objectEventId) == 1)
|
||||||
SetTrainerMovementType(objectEvent, sVsSeeker->runningBehaviourEtcArray[i]);
|
SetTrainerMovementType(objectEvent, sVsSeeker->runningBehaviourEtcArray[i]);
|
||||||
OverrideMovementTypeForObjectEvent(objectEvent, sVsSeeker->runningBehaviourEtcArray[i]);
|
OverrideMovementTypeForObjectEvent(objectEvent, sVsSeeker->runningBehaviourEtcArray[i]);
|
||||||
gSaveBlock1Ptr->trainerRematches[sVsSeeker->trainerInfo[j].localId] = GetNextAvailableRematchTrainer(sVsSeekerData, sVsSeeker->trainerInfo[j].trainerIdx, &dummy);
|
gSaveBlock1Ptr->trainerRematches[sVsSeeker->trainerInfo[j].localId] = GetNextAvailableRematchTrainer(sRematches, sVsSeeker->trainerInfo[j].trainerIdx, &dummy);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user