Merge branch 'master' into doc-dome
This commit is contained in:
@@ -84,7 +84,7 @@ const u32 gMonFrontPic_Slowpoke[] = INCBIN_U32("graphics/pokemon/slowpoke/anim_f
|
||||
const u32 gMonFrontPic_Slowbro[] = INCBIN_U32("graphics/pokemon/slowbro/anim_front.4bpp.lz");
|
||||
const u32 gMonFrontPic_Magnemite[] = INCBIN_U32("graphics/pokemon/magnemite/anim_front.4bpp.lz");
|
||||
const u32 gMonFrontPic_Magneton[] = INCBIN_U32("graphics/pokemon/magneton/anim_front.4bpp.lz");
|
||||
const u32 gMonFrontPic_Farfetchd[] = INCBIN_U32("graphics/pokemon/farfetch_d/anim_front.4bpp.lz");
|
||||
const u32 gMonFrontPic_Farfetchd[] = INCBIN_U32("graphics/pokemon/farfetchd/anim_front.4bpp.lz");
|
||||
const u32 gMonFrontPic_Doduo[] = INCBIN_U32("graphics/pokemon/doduo/anim_front.4bpp.lz");
|
||||
const u32 gMonFrontPic_Dodrio[] = INCBIN_U32("graphics/pokemon/dodrio/anim_front.4bpp.lz");
|
||||
const u32 gMonFrontPic_Seel[] = INCBIN_U32("graphics/pokemon/seel/anim_front.4bpp.lz");
|
||||
|
||||
@@ -787,9 +787,9 @@ static u8 GetAI_ItemType(u8 itemId, const u8 *itemEffect) // NOTE: should take u
|
||||
return AI_ITEM_HEAL_HP;
|
||||
else if (itemEffect[3] & ITEM3_STATUS_ALL)
|
||||
return AI_ITEM_CURE_CONDITION;
|
||||
else if (itemEffect[0] & (ITEM0_HIGH_CRIT | ITEM0_X_ATTACK) || itemEffect[1] != 0 || itemEffect[2] != 0)
|
||||
else if (itemEffect[0] & (ITEM0_DIRE_HIT | ITEM0_X_ATTACK) || itemEffect[1] != 0 || itemEffect[2] != 0)
|
||||
return AI_ITEM_X_STAT;
|
||||
else if (itemEffect[3] & ITEM3_MIST)
|
||||
else if (itemEffect[3] & ITEM3_GUARD_SPEC)
|
||||
return AI_ITEM_GUARD_SPECS;
|
||||
else
|
||||
return AI_ITEM_NOT_RECOGNIZABLE;
|
||||
@@ -907,7 +907,7 @@ static bool8 ShouldUseItem(void)
|
||||
*(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= 0x8;
|
||||
if (itemEffects[2] & ITEM2_X_ACCURACY)
|
||||
*(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= 0x20;
|
||||
if (itemEffects[0] & ITEM0_HIGH_CRIT)
|
||||
if (itemEffects[0] & ITEM0_DIRE_HIT)
|
||||
*(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= 0x80;
|
||||
shouldUse = TRUE;
|
||||
break;
|
||||
|
||||
+1
-1
@@ -791,7 +791,7 @@ static void InitArenaChallenge(void)
|
||||
gSaveBlock2Ptr->frontier.challengeStatus = 0;
|
||||
gSaveBlock2Ptr->frontier.curChallengeBattleNum = 0;
|
||||
gSaveBlock2Ptr->frontier.challengePaused = FALSE;
|
||||
gSaveBlock2Ptr->frontier.field_CA9_b = 0;
|
||||
gSaveBlock2Ptr->frontier.disableRecordBattle = FALSE;
|
||||
if (lvlMode != FRONTIER_LVL_50)
|
||||
isCurrent = gSaveBlock2Ptr->frontier.winStreakActiveFlags & STREAK_ARENA_OPEN;
|
||||
else
|
||||
|
||||
@@ -1846,7 +1846,7 @@ static void LinkOpponentHandleCmd55(void)
|
||||
else
|
||||
gBattleOutcome = gBattleBufferA[gActiveBattler][1] ^ B_OUTCOME_DREW;
|
||||
|
||||
gSaveBlock2Ptr->frontier.field_CA9_b = gBattleBufferA[gActiveBattler][2];
|
||||
gSaveBlock2Ptr->frontier.disableRecordBattle = gBattleBufferA[gActiveBattler][2];
|
||||
FadeOutMapMusic(5);
|
||||
BeginFastPaletteFade(3);
|
||||
LinkOpponentBufferExecCompleted();
|
||||
|
||||
@@ -1676,7 +1676,7 @@ static void LinkPartnerHandleCmd55(void)
|
||||
{
|
||||
sub_81851A8(&gBattleBufferA[gActiveBattler][4]);
|
||||
gBattleOutcome = gBattleBufferA[gActiveBattler][1];
|
||||
gSaveBlock2Ptr->frontier.field_CA9_b = gBattleBufferA[gActiveBattler][2];
|
||||
gSaveBlock2Ptr->frontier.disableRecordBattle = gBattleBufferA[gActiveBattler][2];
|
||||
FadeOutMapMusic(5);
|
||||
BeginFastPaletteFade(3);
|
||||
LinkPartnerBufferExecCompleted();
|
||||
|
||||
@@ -3094,7 +3094,7 @@ static void PlayerHandleCmd55(void)
|
||||
{
|
||||
sub_81851A8(&gBattleBufferA[gActiveBattler][4]);
|
||||
gBattleOutcome = gBattleBufferA[gActiveBattler][1];
|
||||
gSaveBlock2Ptr->frontier.field_CA9_b = gBattleBufferA[gActiveBattler][2];
|
||||
gSaveBlock2Ptr->frontier.disableRecordBattle = gBattleBufferA[gActiveBattler][2];
|
||||
FadeOutMapMusic(5);
|
||||
BeginFastPaletteFade(3);
|
||||
PlayerBufferExecCompleted();
|
||||
|
||||
@@ -1509,8 +1509,8 @@ void BtlController_EmitCmd55(u8 bufferId, u8 battleOutcome)
|
||||
{
|
||||
sBattleBuffersTransferData[0] = CONTROLLER_55;
|
||||
sBattleBuffersTransferData[1] = battleOutcome;
|
||||
sBattleBuffersTransferData[2] = gSaveBlock2Ptr->frontier.field_CA9_b;
|
||||
sBattleBuffersTransferData[3] = gSaveBlock2Ptr->frontier.field_CA9_b;
|
||||
sBattleBuffersTransferData[2] = gSaveBlock2Ptr->frontier.disableRecordBattle;
|
||||
sBattleBuffersTransferData[3] = gSaveBlock2Ptr->frontier.disableRecordBattle;
|
||||
sBattleBuffersTransferData[5] = sBattleBuffersTransferData[4] = sub_81850DC(&sBattleBuffersTransferData[6]);
|
||||
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, sBattleBuffersTransferData[4] + 6);
|
||||
}
|
||||
|
||||
+1
-1
@@ -2094,7 +2094,7 @@ static void InitDomeChallenge(void)
|
||||
gSaveBlock2Ptr->frontier.challengeStatus = 0;
|
||||
gSaveBlock2Ptr->frontier.curChallengeBattleNum = 0;
|
||||
gSaveBlock2Ptr->frontier.challengePaused = FALSE;
|
||||
gSaveBlock2Ptr->frontier.field_CA9_b = 0;
|
||||
gSaveBlock2Ptr->frontier.disableRecordBattle = FALSE;
|
||||
if (!(gSaveBlock2Ptr->frontier.winStreakActiveFlags & sWinStreakFlags[battleMode][lvlMode]))
|
||||
gSaveBlock2Ptr->frontier.domeWinStreaks[battleMode][lvlMode] = 0;
|
||||
|
||||
|
||||
@@ -194,7 +194,7 @@ static void InitFactoryChallenge(void)
|
||||
gSaveBlock2Ptr->frontier.challengeStatus = 0;
|
||||
gSaveBlock2Ptr->frontier.curChallengeBattleNum = 0;
|
||||
gSaveBlock2Ptr->frontier.challengePaused = FALSE;
|
||||
gSaveBlock2Ptr->frontier.field_CA9_b = 0;
|
||||
gSaveBlock2Ptr->frontier.disableRecordBattle = FALSE;
|
||||
if (!(gSaveBlock2Ptr->frontier.winStreakActiveFlags & sWinStreakFlags[battleMode][lvlMode]))
|
||||
{
|
||||
gSaveBlock2Ptr->frontier.factoryWinStreaks[battleMode][lvlMode] = 0;
|
||||
|
||||
+6
-6
@@ -715,7 +715,7 @@ static void CB2_InitBattleInternal(void)
|
||||
}
|
||||
|
||||
gMain.inBattle = TRUE;
|
||||
gSaveBlock2Ptr->frontier.field_CA9_b = 0;
|
||||
gSaveBlock2Ptr->frontier.disableRecordBattle = FALSE;
|
||||
|
||||
for (i = 0; i < PARTY_SIZE; i++)
|
||||
AdjustFriendship(&gPlayerParty[i], 3);
|
||||
@@ -2315,7 +2315,7 @@ static void sub_8038F34(void)
|
||||
|
||||
for (i = 0; i < monsCount && (gLinkPlayers[i].version & 0xFF) == VERSION_EMERALD; i++);
|
||||
|
||||
if (!gSaveBlock2Ptr->frontier.field_CA9_b && i == monsCount)
|
||||
if (!gSaveBlock2Ptr->frontier.disableRecordBattle && i == monsCount)
|
||||
{
|
||||
if (FlagGet(FLAG_SYS_FRONTIER_PASS))
|
||||
{
|
||||
@@ -2594,7 +2594,7 @@ static void sub_803939C(void)
|
||||
}
|
||||
else
|
||||
{
|
||||
BattleStringExpandPlaceholdersToDisplayedString(gText_BattleRecordCouldntBeSaved);
|
||||
BattleStringExpandPlaceholdersToDisplayedString(BattleFrontier_BattleTowerBattleRoom_Text_RecordCouldntBeSaved);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, 0);
|
||||
gBattleCommunication[1] = 0x80;
|
||||
gBattleCommunication[MULTIUSE_STATE]++;
|
||||
@@ -5070,7 +5070,7 @@ static void HandleEndTurn_BattleLost(void)
|
||||
{
|
||||
gBattlescriptCurrInstr = BattleScript_PrintPlayerForfeitedLinkBattle;
|
||||
gBattleOutcome &= ~(B_OUTCOME_LINK_BATTLE_RAN);
|
||||
gSaveBlock2Ptr->frontier.field_CA9_b = 1;
|
||||
gSaveBlock2Ptr->frontier.disableRecordBattle = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -5102,7 +5102,7 @@ static void HandleEndTurn_RanFromBattle(void)
|
||||
{
|
||||
gBattlescriptCurrInstr = BattleScript_PrintPlayerForfeited;
|
||||
gBattleOutcome = B_OUTCOME_FORFEITED;
|
||||
gSaveBlock2Ptr->frontier.field_CA9_b = 1;
|
||||
gSaveBlock2Ptr->frontier.disableRecordBattle = TRUE;
|
||||
}
|
||||
else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER_HILL)
|
||||
{
|
||||
@@ -5721,7 +5721,7 @@ static void HandleAction_Run(void)
|
||||
}
|
||||
|
||||
gBattleOutcome |= B_OUTCOME_LINK_BATTLE_RAN;
|
||||
gSaveBlock2Ptr->frontier.field_CA9_b = 1;
|
||||
gSaveBlock2Ptr->frontier.disableRecordBattle = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
+1
-1
@@ -89,7 +89,7 @@ static void InitPalaceChallenge(void)
|
||||
gSaveBlock2Ptr->frontier.challengeStatus = 0;
|
||||
gSaveBlock2Ptr->frontier.curChallengeBattleNum = 0;
|
||||
gSaveBlock2Ptr->frontier.challengePaused = FALSE;
|
||||
gSaveBlock2Ptr->frontier.field_CA9_b = 0;
|
||||
gSaveBlock2Ptr->frontier.disableRecordBattle = FALSE;
|
||||
if (!(gSaveBlock2Ptr->frontier.winStreakActiveFlags & sWinStreakFlags[battleMode][lvlMode]))
|
||||
gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][lvlMode] = 0;
|
||||
|
||||
|
||||
+10
-10
@@ -67,7 +67,7 @@ static void sub_81C700C(void);
|
||||
static void sub_81C6E98(void);
|
||||
static void sub_81C6F20(void);
|
||||
static void sub_81C6404(void);
|
||||
static void sub_81C6E1C(void);
|
||||
static void CloseBattlePyramidBagTextWindow(void);
|
||||
static bool8 sub_81C5238(void);
|
||||
static bool8 sub_81C5078(void);
|
||||
static void ShowItemImage(u16 itemId, u8 itemSpriteArrayId);
|
||||
@@ -809,7 +809,7 @@ static void sub_81C5AB8(u8 y, u8 arg1)
|
||||
PrintOnWindow_Font1(0, gText_SelectorArrow2, 0, y, 0, 0, 0, arg1);
|
||||
}
|
||||
|
||||
void sub_81C5B14(u8 taskId)
|
||||
void CloseBattlePyramidBagAndSetCallback(u8 taskId)
|
||||
{
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK);
|
||||
gTasks[taskId].func = sub_81C5B4C;
|
||||
@@ -862,7 +862,7 @@ static void Task_HandlePyramidBagInput(u8 taskId)
|
||||
case LIST_CANCEL:
|
||||
PlaySE(SE_SELECT);
|
||||
gSpecialVar_ItemId = 0;
|
||||
sub_81C5B14(taskId);
|
||||
CloseBattlePyramidBagAndSetCallback(taskId);
|
||||
break;
|
||||
default:
|
||||
PlaySE(SE_SELECT);
|
||||
@@ -1043,7 +1043,7 @@ static void BagAction_UseOnField(u8 taskId)
|
||||
|| ItemIsMail(gSpecialVar_ItemId) == TRUE)
|
||||
{
|
||||
sub_81C61A8();
|
||||
DisplayItemMessageInBattlePyramid(taskId, gText_DadsAdvice, sub_81C6714);
|
||||
DisplayItemMessageInBattlePyramid(taskId, gText_DadsAdvice, Task_CloseBattlePyramidBagMessage);
|
||||
}
|
||||
else if (ItemId_GetFieldFunc(gSpecialVar_ItemId) != NULL)
|
||||
{
|
||||
@@ -1203,7 +1203,7 @@ static void BagAction_Give(u8 taskId)
|
||||
else if (!ItemId_GetImportance(gSpecialVar_ItemId))
|
||||
{
|
||||
gPyramidBagResources->callback2 = CB2_ChooseMonToGiveItem;
|
||||
sub_81C5B14(taskId);
|
||||
CloseBattlePyramidBagAndSetCallback(taskId);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1223,15 +1223,15 @@ static void sub_81C66EC(u8 taskId)
|
||||
if (gMain.newKeys & A_BUTTON)
|
||||
{
|
||||
PlaySE(SE_SELECT);
|
||||
sub_81C6714(taskId);
|
||||
Task_CloseBattlePyramidBagMessage(taskId);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_81C6714(u8 taskId)
|
||||
void Task_CloseBattlePyramidBagMessage(u8 taskId)
|
||||
{
|
||||
s16 *data = gTasks[taskId].data;
|
||||
|
||||
sub_81C6E1C();
|
||||
CloseBattlePyramidBagTextWindow();
|
||||
PrintItemDescription(data[1]);
|
||||
sub_81C5A98(data[0], 0);
|
||||
SetTaskToMainPyramidBagInputHandler(taskId);
|
||||
@@ -1242,7 +1242,7 @@ static void sub_81C674C(u8 taskId)
|
||||
if (!itemid_80BF6D8_mail_related(gSpecialVar_ItemId))
|
||||
DisplayItemMessageInBattlePyramid(taskId, gText_CantWriteMail, sub_81C66EC);
|
||||
else if (!ItemId_GetImportance(gSpecialVar_ItemId))
|
||||
sub_81C5B14(taskId);
|
||||
CloseBattlePyramidBagAndSetCallback(taskId);
|
||||
else
|
||||
sub_81C66AC(taskId);
|
||||
}
|
||||
@@ -1462,7 +1462,7 @@ void DisplayItemMessageInBattlePyramid(u8 taskId, const u8 *str, void (*callback
|
||||
schedule_bg_copy_tilemap_to_vram(1);
|
||||
}
|
||||
|
||||
static void sub_81C6E1C(void)
|
||||
static void CloseBattlePyramidBagTextWindow(void)
|
||||
{
|
||||
ClearDialogWindowAndFrameToTransparent(2, FALSE);
|
||||
// This ClearWindowTilemap call is redundant, since ClearDialogWindowAndFrameToTransparent already calls it.
|
||||
|
||||
+1
-1
@@ -305,7 +305,7 @@ const struct RematchTrainer gRematchTable[REMATCH_TABLE_ENTRIES] =
|
||||
[REMATCH_TRENT] = REMATCH(TRAINER_TRENT_1, TRAINER_TRENT_2, TRAINER_TRENT_3, TRAINER_TRENT_4, TRAINER_TRENT_5, ROUTE112),
|
||||
[REMATCH_SAWYER] = REMATCH(TRAINER_SAWYER_1, TRAINER_SAWYER_2, TRAINER_SAWYER_3, TRAINER_SAWYER_4, TRAINER_SAWYER_5, MT_CHIMNEY),
|
||||
[REMATCH_KIRA_AND_DAN] = REMATCH(TRAINER_KIRA_AND_DAN_1, TRAINER_KIRA_AND_DAN_2, TRAINER_KIRA_AND_DAN_3, TRAINER_KIRA_AND_DAN_4, TRAINER_KIRA_AND_DAN_5, ABANDONED_SHIP_ROOMS2_1F),
|
||||
[REMATCH_WALLY_3] = REMATCH(TRAINER_WALLY_3, TRAINER_WALLY_4, TRAINER_WALLY_5, TRAINER_WALLY_6, TRAINER_WALLY_6, VICTORY_ROAD_1F),
|
||||
[REMATCH_WALLY_3] = REMATCH(TRAINER_WALLY_VR_2, TRAINER_WALLY_VR_3, TRAINER_WALLY_VR_4, TRAINER_WALLY_VR_5, TRAINER_WALLY_VR_5, VICTORY_ROAD_1F),
|
||||
[REMATCH_ROXANNE] = REMATCH(TRAINER_ROXANNE_1, TRAINER_ROXANNE_2, TRAINER_ROXANNE_3, TRAINER_ROXANNE_4, TRAINER_ROXANNE_5, RUSTBORO_CITY),
|
||||
[REMATCH_BRAWLY] = REMATCH(TRAINER_BRAWLY_1, TRAINER_BRAWLY_2, TRAINER_BRAWLY_3, TRAINER_BRAWLY_4, TRAINER_BRAWLY_5, DEWFORD_TOWN),
|
||||
[REMATCH_WATTSON] = REMATCH(TRAINER_WATTSON_1, TRAINER_WATTSON_2, TRAINER_WATTSON_3, TRAINER_WATTSON_4, TRAINER_WATTSON_5, MAUVILLE_CITY),
|
||||
|
||||
+260
-512
File diff suppressed because it is too large
Load Diff
@@ -527,7 +527,7 @@ static void Task_CloseBerryTagScreen(u8 taskId)
|
||||
DestroyFlavorCircleSprites();
|
||||
Free(sBerryTag);
|
||||
FreeAllWindowBuffers();
|
||||
SetMainCallback2(bag_menu_mail_related);
|
||||
SetMainCallback2(CB2_ReturnToBagMenuPocket);
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -1056,7 +1056,7 @@ void Bike_HandleBumpySlopeJump(void)
|
||||
|
||||
bool32 IsRunningDisallowed(u8 metatile)
|
||||
{
|
||||
if (!(gMapHeader.flags & 4) || IsRunningDisallowedByMetatile(metatile) == TRUE)
|
||||
if (!(gMapHeader.flags & MAP_ALLOW_RUN) || IsRunningDisallowedByMetatile(metatile) == TRUE)
|
||||
return TRUE;
|
||||
else
|
||||
return FALSE;
|
||||
|
||||
@@ -934,7 +934,7 @@ static const bool8 sValidApprenticeMoves[MOVES_COUNT] =
|
||||
// WHICH_MOVE has max 5 occurrences, defined as NUM_WHICH_MOVE_QUESTIONS
|
||||
// WHICH_FIRST has max 1 occurrence, lead mon should only be chosen once
|
||||
// WHICH_SPEECH has max 1 occurrence, as the apprentice leaves after its asked
|
||||
static const u8 sQuestionPossibilities[] =
|
||||
static const u8 sQuestionPossibilities[MAX_APPRENTICE_QUESTIONS] =
|
||||
{
|
||||
QUESTION_ID_WHAT_ITEM,
|
||||
QUESTION_ID_WHAT_ITEM,
|
||||
|
||||
@@ -326,7 +326,7 @@ const u32 gFieldEffectObjectPic_SandDisguisePlaceholder[] = INCBIN_U32("graphics
|
||||
const u32 gFieldEffectObjectPic_HotSpringsWater[] = INCBIN_U32("graphics/event_objects/pics/effects/hot_springs_water.4bpp");
|
||||
const u16 gFieldEffectObjectPalette2[] = INCBIN_U16("graphics/event_objects/palettes/field_effect_object_palette_02.gbapal");
|
||||
const u32 gFieldEffectObjectPic_JumpOutOfAsh[] = INCBIN_U32("graphics/event_objects/pics/effects/jump_out_of_ash.4bpp");
|
||||
const u32 gFieldEffectObjectPic_Unknown33[] = INCBIN_U32("graphics/event_objects/pics/effects/unknown_33.4bpp");
|
||||
const u32 gFieldEffectObjectPic_LavaridgeGymWarp[] = INCBIN_U32("graphics/event_objects/pics/effects/lavaridge_gym_warp.4bpp");
|
||||
const u32 gFieldEffectObjectPic_Bubbles[] = INCBIN_U32("graphics/event_objects/pics/effects/bubbles.4bpp");
|
||||
const u32 gFieldEffectObjectPic_Unknown35[] = INCBIN_U32("graphics/event_objects/pics/effects/unknown_35.4bpp");
|
||||
const u16 gFieldEffectObjectPalette3[] = INCBIN_U16("graphics/event_objects/palettes/field_effect_object_palette_03.gbapal");
|
||||
|
||||
@@ -31,7 +31,7 @@ const struct SpriteTemplate gFieldEffectObjectTemplate_Unknown29;
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_ShortGrass;
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_HotSpringsWater;
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_JumpOutOfAsh;
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_Unknown33;
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_LavaridgeGymWarp;
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_Bubbles;
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_Unknown35;
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_Rayquaza;
|
||||
@@ -70,7 +70,7 @@ const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[] = {
|
||||
&gFieldEffectObjectTemplate_ShortGrass,
|
||||
&gFieldEffectObjectTemplate_HotSpringsWater,
|
||||
&gFieldEffectObjectTemplate_JumpOutOfAsh,
|
||||
&gFieldEffectObjectTemplate_Unknown33,
|
||||
&gFieldEffectObjectTemplate_LavaridgeGymWarp,
|
||||
&gFieldEffectObjectTemplate_Bubbles,
|
||||
&gFieldEffectObjectTemplate_Unknown35,
|
||||
&gFieldEffectObjectTemplate_Rayquaza,
|
||||
|
||||
@@ -892,19 +892,28 @@ const union AnimCmd *const gFieldEffectObjectImageAnimTable_JumpOutOfAsh[] =
|
||||
gFieldEffectObjectImageAnim_850D54C,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_JumpOutOfAsh = {0xFFFF, 0x100D, &gEventObjectBaseOam_16x16, gFieldEffectObjectImageAnimTable_JumpOutOfAsh, gFieldEffectObjectPicTable_JumpOutOfAsh, gDummySpriteAffineAnimTable, sub_80B7CAC};
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_JumpOutOfAsh =
|
||||
{
|
||||
.tileTag = 0xFFFF,
|
||||
.paletteTag = 0x100D,
|
||||
.oam = &gEventObjectBaseOam_16x16,
|
||||
.anims = gFieldEffectObjectImageAnimTable_JumpOutOfAsh,
|
||||
.images = gFieldEffectObjectPicTable_JumpOutOfAsh,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = SpriteCB_PopOutOfAsh
|
||||
};
|
||||
|
||||
const struct SpritePalette gFieldEffectObjectPaletteInfo2 = {gFieldEffectObjectPalette2, 0x100D};
|
||||
|
||||
const struct SpriteFrameImage gFieldEffectObjectPicTable_Unknown33[] = {
|
||||
overworld_frame(gFieldEffectObjectPic_Unknown33, 2, 2, 0),
|
||||
overworld_frame(gFieldEffectObjectPic_Unknown33, 2, 2, 1),
|
||||
overworld_frame(gFieldEffectObjectPic_Unknown33, 2, 2, 2),
|
||||
overworld_frame(gFieldEffectObjectPic_Unknown33, 2, 2, 3),
|
||||
overworld_frame(gFieldEffectObjectPic_Unknown33, 2, 2, 4),
|
||||
const struct SpriteFrameImage gFieldEffectObjectPicTable_LavaridgeGymWarp[] = {
|
||||
overworld_frame(gFieldEffectObjectPic_LavaridgeGymWarp, 2, 2, 0),
|
||||
overworld_frame(gFieldEffectObjectPic_LavaridgeGymWarp, 2, 2, 1),
|
||||
overworld_frame(gFieldEffectObjectPic_LavaridgeGymWarp, 2, 2, 2),
|
||||
overworld_frame(gFieldEffectObjectPic_LavaridgeGymWarp, 2, 2, 3),
|
||||
overworld_frame(gFieldEffectObjectPic_LavaridgeGymWarp, 2, 2, 4),
|
||||
};
|
||||
|
||||
const union AnimCmd gFieldEffectObjectImageAnim_850D5B0[] =
|
||||
const union AnimCmd gFieldEffectObjectImageAnim_LavaridgeGymWarp[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 6),
|
||||
ANIMCMD_FRAME(1, 6),
|
||||
@@ -914,12 +923,21 @@ const union AnimCmd gFieldEffectObjectImageAnim_850D5B0[] =
|
||||
ANIMCMD_END,
|
||||
};
|
||||
|
||||
const union AnimCmd *const gFieldEffectObjectImageAnimTable_Unknown33[] =
|
||||
const union AnimCmd *const gFieldEffectObjectImageAnimTable_LavaridgeGymWarp[] =
|
||||
{
|
||||
gFieldEffectObjectImageAnim_850D5B0,
|
||||
gFieldEffectObjectImageAnim_LavaridgeGymWarp,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_Unknown33 = {0xFFFF, 0x100D, &gEventObjectBaseOam_16x16, gFieldEffectObjectImageAnimTable_Unknown33, gFieldEffectObjectPicTable_Unknown33, gDummySpriteAffineAnimTable, sub_80B7A58};
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_LavaridgeGymWarp =
|
||||
{
|
||||
.tileTag = 0xFFFF,
|
||||
.paletteTag = 0x100D,
|
||||
.oam = &gEventObjectBaseOam_16x16,
|
||||
.anims = gFieldEffectObjectImageAnimTable_LavaridgeGymWarp,
|
||||
.images = gFieldEffectObjectPicTable_LavaridgeGymWarp,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = SpriteCB_LavaridgeGymWarp
|
||||
};
|
||||
|
||||
const struct SpriteFrameImage gFieldEffectObjectPicTable_Bubbles[] = {
|
||||
overworld_frame(gFieldEffectObjectPic_Bubbles, 2, 4, 0),
|
||||
|
||||
@@ -572,12 +572,12 @@ const u32 gMonShinyPalette_Magneton[] = INCBIN_U32("graphics/pokemon/magneton/sh
|
||||
const u8 gMonIcon_Magneton[] = INCBIN_U8("graphics/pokemon/magneton/icon.4bpp");
|
||||
const u8 gMonFootprint_Magneton[] = INCBIN_U8("graphics/pokemon/magneton/footprint.1bpp");
|
||||
|
||||
const u32 gMonStillFrontPic_Farfetchd[] = INCBIN_U32("graphics/pokemon/farfetch_d/front.4bpp.lz");
|
||||
const u32 gMonPalette_Farfetchd[] = INCBIN_U32("graphics/pokemon/farfetch_d/normal.gbapal.lz");
|
||||
const u32 gMonBackPic_Farfetchd[] = INCBIN_U32("graphics/pokemon/farfetch_d/back.4bpp.lz");
|
||||
const u32 gMonShinyPalette_Farfetchd[] = INCBIN_U32("graphics/pokemon/farfetch_d/shiny.gbapal.lz");
|
||||
const u8 gMonIcon_Farfetchd[] = INCBIN_U8("graphics/pokemon/farfetch_d/icon.4bpp");
|
||||
const u8 gMonFootprint_Farfetchd[] = INCBIN_U8("graphics/pokemon/farfetch_d/footprint.1bpp");
|
||||
const u32 gMonStillFrontPic_Farfetchd[] = INCBIN_U32("graphics/pokemon/farfetchd/front.4bpp.lz");
|
||||
const u32 gMonPalette_Farfetchd[] = INCBIN_U32("graphics/pokemon/farfetchd/normal.gbapal.lz");
|
||||
const u32 gMonBackPic_Farfetchd[] = INCBIN_U32("graphics/pokemon/farfetchd/back.4bpp.lz");
|
||||
const u32 gMonShinyPalette_Farfetchd[] = INCBIN_U32("graphics/pokemon/farfetchd/shiny.gbapal.lz");
|
||||
const u8 gMonIcon_Farfetchd[] = INCBIN_U8("graphics/pokemon/farfetchd/icon.4bpp");
|
||||
const u8 gMonFootprint_Farfetchd[] = INCBIN_U8("graphics/pokemon/farfetchd/footprint.1bpp");
|
||||
|
||||
const u32 gMonStillFrontPic_Doduo[] = INCBIN_U32("graphics/pokemon/doduo/front.4bpp.lz");
|
||||
const u32 gMonPalette_Doduo[] = INCBIN_U32("graphics/pokemon/doduo/normal.gbapal.lz");
|
||||
|
||||
@@ -236,7 +236,7 @@ const u8 gItemEffect_PPMax[9] = {
|
||||
};
|
||||
|
||||
const u8 gItemEffect_GuardSpec[8] = {
|
||||
[3] = ITEM3_MIST,
|
||||
[3] = ITEM3_GUARD_SPEC,
|
||||
[5] = ITEM5_FRIENDSHIP_LOW | ITEM5_FRIENDSHIP_MID,
|
||||
[6] = 1,
|
||||
[7] = 1,
|
||||
|
||||
+27
-10
@@ -276,48 +276,65 @@ static const u8 sTradeMonSpriteCoords[(PARTY_SIZE * 2) + 1][2] =
|
||||
{23, 18} // CANCEL
|
||||
};
|
||||
|
||||
static const u8 sTradeMonLevelCoords[][PARTY_SIZE][2] =
|
||||
static const u8 sTradeMonLevelCoords[][2][2] =
|
||||
{
|
||||
// Your party
|
||||
{
|
||||
// Your party
|
||||
{5, 4},
|
||||
{12, 4},
|
||||
},
|
||||
{
|
||||
{5, 9},
|
||||
{12, 9},
|
||||
},
|
||||
{
|
||||
{5, 14},
|
||||
{12, 14},
|
||||
},
|
||||
// Friend's party
|
||||
{
|
||||
// Friend's party
|
||||
|
||||
{20, 4},
|
||||
{27, 4},
|
||||
},
|
||||
{
|
||||
{20, 9},
|
||||
{27, 9},
|
||||
},
|
||||
{
|
||||
{20, 14},
|
||||
{27, 14}
|
||||
}
|
||||
{27, 14},
|
||||
},
|
||||
};
|
||||
|
||||
static const u8 sTradeMonBoxCoords[][PARTY_SIZE][2] =
|
||||
static const u8 sTradeMonBoxCoords[][2][2] =
|
||||
{
|
||||
// Your party
|
||||
{
|
||||
// Your party
|
||||
{1, 3},
|
||||
{8, 3},
|
||||
},
|
||||
{
|
||||
{1, 8},
|
||||
{8, 8},
|
||||
},
|
||||
{
|
||||
{1, 13},
|
||||
{8, 13},
|
||||
},
|
||||
// Friend's party
|
||||
{
|
||||
// Friend's party
|
||||
{16, 3},
|
||||
{23, 3},
|
||||
},
|
||||
{
|
||||
{16, 8},
|
||||
{23, 8},
|
||||
},
|
||||
{
|
||||
{16, 13},
|
||||
{23, 13}
|
||||
}
|
||||
{23, 13},
|
||||
},
|
||||
};
|
||||
|
||||
static const u8 sUnref_0832DE6E[] =
|
||||
|
||||
+482
-482
File diff suppressed because it is too large
Load Diff
+138
-138
@@ -447,7 +447,7 @@ const struct Trainer gTrainers[] = {
|
||||
.party = {.NoItemDefaultMoves = sParty_Zander},
|
||||
},
|
||||
|
||||
[TRAINER_SHELLY_1] =
|
||||
[TRAINER_SHELLY_WEATHER_INSTITUTE] =
|
||||
{
|
||||
.partyFlags = 0,
|
||||
.trainerClass = TRAINER_CLASS_AQUA_ADMIN,
|
||||
@@ -457,11 +457,11 @@ const struct Trainer gTrainers[] = {
|
||||
.items = {},
|
||||
.doubleBattle = FALSE,
|
||||
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
|
||||
.partySize = ARRAY_COUNT(sParty_Shelly1),
|
||||
.party = {.NoItemDefaultMoves = sParty_Shelly1},
|
||||
.partySize = ARRAY_COUNT(sParty_ShellyWeatherInstitute),
|
||||
.party = {.NoItemDefaultMoves = sParty_ShellyWeatherInstitute},
|
||||
},
|
||||
|
||||
[TRAINER_SHELLY_2] =
|
||||
[TRAINER_SHELLY_SEAFLOOR_CAVERN] =
|
||||
{
|
||||
.partyFlags = 0,
|
||||
.trainerClass = TRAINER_CLASS_AQUA_ADMIN,
|
||||
@@ -471,8 +471,8 @@ const struct Trainer gTrainers[] = {
|
||||
.items = {},
|
||||
.doubleBattle = FALSE,
|
||||
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
|
||||
.partySize = ARRAY_COUNT(sParty_Shelly2),
|
||||
.party = {.NoItemDefaultMoves = sParty_Shelly2},
|
||||
.partySize = ARRAY_COUNT(sParty_ShellySeafloorCavern),
|
||||
.party = {.NoItemDefaultMoves = sParty_ShellySeafloorCavern},
|
||||
},
|
||||
|
||||
[TRAINER_ARCHIE] =
|
||||
@@ -7195,7 +7195,7 @@ const struct Trainer gTrainers[] = {
|
||||
.party = {.NoItemDefaultMoves = sParty_Hector},
|
||||
},
|
||||
|
||||
[TRAINER_TABITHA_1] =
|
||||
[TRAINER_TABITHA_MOSSDEEP] =
|
||||
{
|
||||
.partyFlags = 0,
|
||||
.trainerClass = TRAINER_CLASS_MAGMA_ADMIN,
|
||||
@@ -7205,8 +7205,8 @@ const struct Trainer gTrainers[] = {
|
||||
.items = {},
|
||||
.doubleBattle = FALSE,
|
||||
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
|
||||
.partySize = ARRAY_COUNT(sParty_Tabitha1),
|
||||
.party = {.NoItemDefaultMoves = sParty_Tabitha1},
|
||||
.partySize = ARRAY_COUNT(sParty_TabithaMossdeep),
|
||||
.party = {.NoItemDefaultMoves = sParty_TabithaMossdeep},
|
||||
},
|
||||
|
||||
[TRAINER_EDWIN_2] =
|
||||
@@ -7265,7 +7265,7 @@ const struct Trainer gTrainers[] = {
|
||||
.party = {.NoItemDefaultMoves = sParty_Edwin5},
|
||||
},
|
||||
|
||||
[TRAINER_WALLY_1] =
|
||||
[TRAINER_WALLY_VR_1] =
|
||||
{
|
||||
.partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
|
||||
.trainerClass = TRAINER_CLASS_PKMN_TRAINER_3,
|
||||
@@ -7275,11 +7275,11 @@ const struct Trainer gTrainers[] = {
|
||||
.items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE},
|
||||
.doubleBattle = FALSE,
|
||||
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
|
||||
.partySize = ARRAY_COUNT(sParty_Wally1),
|
||||
.party = {.NoItemCustomMoves = sParty_Wally1},
|
||||
.partySize = ARRAY_COUNT(sParty_WallyVR1),
|
||||
.party = {.NoItemCustomMoves = sParty_WallyVR1},
|
||||
},
|
||||
|
||||
[TRAINER_BRENDAN_1] =
|
||||
[TRAINER_BRENDAN_ROUTE_103_MUDKIP] =
|
||||
{
|
||||
.partyFlags = 0,
|
||||
.trainerClass = TRAINER_CLASS_PKMN_TRAINER_3,
|
||||
@@ -7289,11 +7289,11 @@ const struct Trainer gTrainers[] = {
|
||||
.items = {},
|
||||
.doubleBattle = FALSE,
|
||||
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
|
||||
.partySize = ARRAY_COUNT(sParty_Brendan1),
|
||||
.party = {.NoItemDefaultMoves = sParty_Brendan1},
|
||||
.partySize = ARRAY_COUNT(sParty_BrendanRoute103Mudkip),
|
||||
.party = {.NoItemDefaultMoves = sParty_BrendanRoute103Mudkip},
|
||||
},
|
||||
|
||||
[TRAINER_BRENDAN_2] =
|
||||
[TRAINER_BRENDAN_ROUTE_110_MUDKIP] =
|
||||
{
|
||||
.partyFlags = 0,
|
||||
.trainerClass = TRAINER_CLASS_PKMN_TRAINER_3,
|
||||
@@ -7303,11 +7303,11 @@ const struct Trainer gTrainers[] = {
|
||||
.items = {},
|
||||
.doubleBattle = FALSE,
|
||||
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
|
||||
.partySize = ARRAY_COUNT(sParty_Brendan2),
|
||||
.party = {.NoItemDefaultMoves = sParty_Brendan2},
|
||||
.partySize = ARRAY_COUNT(sParty_BrendanRoute110Mudkip),
|
||||
.party = {.NoItemDefaultMoves = sParty_BrendanRoute110Mudkip},
|
||||
},
|
||||
|
||||
[TRAINER_BRENDAN_3] =
|
||||
[TRAINER_BRENDAN_ROUTE_119_MUDKIP] =
|
||||
{
|
||||
.partyFlags = 0,
|
||||
.trainerClass = TRAINER_CLASS_PKMN_TRAINER_3,
|
||||
@@ -7317,11 +7317,11 @@ const struct Trainer gTrainers[] = {
|
||||
.items = {},
|
||||
.doubleBattle = FALSE,
|
||||
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
|
||||
.partySize = ARRAY_COUNT(sParty_Brendan3),
|
||||
.party = {.NoItemDefaultMoves = sParty_Brendan3},
|
||||
.partySize = ARRAY_COUNT(sParty_BrendanRoute119Mudkip),
|
||||
.party = {.NoItemDefaultMoves = sParty_BrendanRoute119Mudkip},
|
||||
},
|
||||
|
||||
[TRAINER_BRENDAN_4] =
|
||||
[TRAINER_BRENDAN_ROUTE_103_TREECKO] =
|
||||
{
|
||||
.partyFlags = 0,
|
||||
.trainerClass = TRAINER_CLASS_PKMN_TRAINER_3,
|
||||
@@ -7331,11 +7331,11 @@ const struct Trainer gTrainers[] = {
|
||||
.items = {},
|
||||
.doubleBattle = FALSE,
|
||||
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_SETUP_FIRST_TURN,
|
||||
.partySize = ARRAY_COUNT(sParty_Brendan4),
|
||||
.party = {.NoItemDefaultMoves = sParty_Brendan4},
|
||||
.partySize = ARRAY_COUNT(sParty_BrendanRoute103Treecko),
|
||||
.party = {.NoItemDefaultMoves = sParty_BrendanRoute103Treecko},
|
||||
},
|
||||
|
||||
[TRAINER_BRENDAN_5] =
|
||||
[TRAINER_BRENDAN_ROUTE_110_TREECKO] =
|
||||
{
|
||||
.partyFlags = 0,
|
||||
.trainerClass = TRAINER_CLASS_PKMN_TRAINER_3,
|
||||
@@ -7345,11 +7345,11 @@ const struct Trainer gTrainers[] = {
|
||||
.items = {},
|
||||
.doubleBattle = FALSE,
|
||||
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
|
||||
.partySize = ARRAY_COUNT(sParty_Brendan5),
|
||||
.party = {.NoItemDefaultMoves = sParty_Brendan5},
|
||||
.partySize = ARRAY_COUNT(sParty_BrendanRoute110Treecko),
|
||||
.party = {.NoItemDefaultMoves = sParty_BrendanRoute110Treecko},
|
||||
},
|
||||
|
||||
[TRAINER_BRENDAN_6] =
|
||||
[TRAINER_BRENDAN_ROUTE_119_TREECKO] =
|
||||
{
|
||||
.partyFlags = 0,
|
||||
.trainerClass = TRAINER_CLASS_PKMN_TRAINER_3,
|
||||
@@ -7359,11 +7359,11 @@ const struct Trainer gTrainers[] = {
|
||||
.items = {},
|
||||
.doubleBattle = FALSE,
|
||||
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
|
||||
.partySize = ARRAY_COUNT(sParty_Brendan6),
|
||||
.party = {.NoItemDefaultMoves = sParty_Brendan6},
|
||||
.partySize = ARRAY_COUNT(sParty_BrendanRoute119Treecko),
|
||||
.party = {.NoItemDefaultMoves = sParty_BrendanRoute119Treecko},
|
||||
},
|
||||
|
||||
[TRAINER_BRENDAN_7] =
|
||||
[TRAINER_BRENDAN_ROUTE_103_TORCHIC] =
|
||||
{
|
||||
.partyFlags = 0,
|
||||
.trainerClass = TRAINER_CLASS_PKMN_TRAINER_3,
|
||||
@@ -7373,11 +7373,11 @@ const struct Trainer gTrainers[] = {
|
||||
.items = {},
|
||||
.doubleBattle = FALSE,
|
||||
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
|
||||
.partySize = ARRAY_COUNT(sParty_Brendan7),
|
||||
.party = {.NoItemDefaultMoves = sParty_Brendan7},
|
||||
.partySize = ARRAY_COUNT(sParty_BrendanRoute103Torchic),
|
||||
.party = {.NoItemDefaultMoves = sParty_BrendanRoute103Torchic},
|
||||
},
|
||||
|
||||
[TRAINER_BRENDAN_8] =
|
||||
[TRAINER_BRENDAN_ROUTE_110_TORCHIC] =
|
||||
{
|
||||
.partyFlags = 0,
|
||||
.trainerClass = TRAINER_CLASS_PKMN_TRAINER_3,
|
||||
@@ -7387,11 +7387,11 @@ const struct Trainer gTrainers[] = {
|
||||
.items = {},
|
||||
.doubleBattle = FALSE,
|
||||
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
|
||||
.partySize = ARRAY_COUNT(sParty_Brendan8),
|
||||
.party = {.NoItemDefaultMoves = sParty_Brendan8},
|
||||
.partySize = ARRAY_COUNT(sParty_BrendanRoute110Torchic),
|
||||
.party = {.NoItemDefaultMoves = sParty_BrendanRoute110Torchic},
|
||||
},
|
||||
|
||||
[TRAINER_BRENDAN_9] =
|
||||
[TRAINER_BRENDAN_ROUTE_119_TORCHIC] =
|
||||
{
|
||||
.partyFlags = 0,
|
||||
.trainerClass = TRAINER_CLASS_PKMN_TRAINER_3,
|
||||
@@ -7401,11 +7401,11 @@ const struct Trainer gTrainers[] = {
|
||||
.items = {},
|
||||
.doubleBattle = FALSE,
|
||||
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
|
||||
.partySize = ARRAY_COUNT(sParty_Brendan9),
|
||||
.party = {.NoItemDefaultMoves = sParty_Brendan9},
|
||||
.partySize = ARRAY_COUNT(sParty_BrendanRoute119Torchic),
|
||||
.party = {.NoItemDefaultMoves = sParty_BrendanRoute119Torchic},
|
||||
},
|
||||
|
||||
[TRAINER_MAY_1] =
|
||||
[TRAINER_MAY_ROUTE_103_MUDKIP] =
|
||||
{
|
||||
.partyFlags = 0,
|
||||
.trainerClass = TRAINER_CLASS_PKMN_TRAINER_3,
|
||||
@@ -7415,11 +7415,11 @@ const struct Trainer gTrainers[] = {
|
||||
.items = {},
|
||||
.doubleBattle = FALSE,
|
||||
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
|
||||
.partySize = ARRAY_COUNT(sParty_May1),
|
||||
.party = {.NoItemDefaultMoves = sParty_May1},
|
||||
.partySize = ARRAY_COUNT(sParty_MayRoute103Mudkip),
|
||||
.party = {.NoItemDefaultMoves = sParty_MayRoute103Mudkip},
|
||||
},
|
||||
|
||||
[TRAINER_MAY_2] =
|
||||
[TRAINER_MAY_ROUTE_110_MUDKIP] =
|
||||
{
|
||||
.partyFlags = 0,
|
||||
.trainerClass = TRAINER_CLASS_PKMN_TRAINER_3,
|
||||
@@ -7429,11 +7429,11 @@ const struct Trainer gTrainers[] = {
|
||||
.items = {},
|
||||
.doubleBattle = FALSE,
|
||||
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
|
||||
.partySize = ARRAY_COUNT(sParty_May2),
|
||||
.party = {.NoItemDefaultMoves = sParty_May2},
|
||||
.partySize = ARRAY_COUNT(sParty_MayRoute110Mudkip),
|
||||
.party = {.NoItemDefaultMoves = sParty_MayRoute110Mudkip},
|
||||
},
|
||||
|
||||
[TRAINER_MAY_3] =
|
||||
[TRAINER_MAY_ROUTE_119_MUDKIP] =
|
||||
{
|
||||
.partyFlags = 0,
|
||||
.trainerClass = TRAINER_CLASS_PKMN_TRAINER_3,
|
||||
@@ -7443,11 +7443,11 @@ const struct Trainer gTrainers[] = {
|
||||
.items = {},
|
||||
.doubleBattle = FALSE,
|
||||
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
|
||||
.partySize = ARRAY_COUNT(sParty_May3),
|
||||
.party = {.NoItemDefaultMoves = sParty_May3},
|
||||
.partySize = ARRAY_COUNT(sParty_MayRoute119Mudkip),
|
||||
.party = {.NoItemDefaultMoves = sParty_MayRoute119Mudkip},
|
||||
},
|
||||
|
||||
[TRAINER_MAY_4] =
|
||||
[TRAINER_MAY_ROUTE_103_TREECKO] =
|
||||
{
|
||||
.partyFlags = 0,
|
||||
.trainerClass = TRAINER_CLASS_PKMN_TRAINER_3,
|
||||
@@ -7457,11 +7457,11 @@ const struct Trainer gTrainers[] = {
|
||||
.items = {},
|
||||
.doubleBattle = FALSE,
|
||||
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
|
||||
.partySize = ARRAY_COUNT(sParty_May4),
|
||||
.party = {.NoItemDefaultMoves = sParty_May4},
|
||||
.partySize = ARRAY_COUNT(sParty_MayRoute103Treecko),
|
||||
.party = {.NoItemDefaultMoves = sParty_MayRoute103Treecko},
|
||||
},
|
||||
|
||||
[TRAINER_MAY_5] =
|
||||
[TRAINER_MAY_ROUTE_110_TREECKO] =
|
||||
{
|
||||
.partyFlags = 0,
|
||||
.trainerClass = TRAINER_CLASS_PKMN_TRAINER_3,
|
||||
@@ -7471,11 +7471,11 @@ const struct Trainer gTrainers[] = {
|
||||
.items = {},
|
||||
.doubleBattle = FALSE,
|
||||
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
|
||||
.partySize = ARRAY_COUNT(sParty_May5),
|
||||
.party = {.NoItemDefaultMoves = sParty_May5},
|
||||
.partySize = ARRAY_COUNT(sParty_MayRoute110Treecko),
|
||||
.party = {.NoItemDefaultMoves = sParty_MayRoute110Treecko},
|
||||
},
|
||||
|
||||
[TRAINER_MAY_6] =
|
||||
[TRAINER_MAY_ROUTE_119_TREECKO] =
|
||||
{
|
||||
.partyFlags = 0,
|
||||
.trainerClass = TRAINER_CLASS_PKMN_TRAINER_3,
|
||||
@@ -7485,11 +7485,11 @@ const struct Trainer gTrainers[] = {
|
||||
.items = {},
|
||||
.doubleBattle = FALSE,
|
||||
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
|
||||
.partySize = ARRAY_COUNT(sParty_May6),
|
||||
.party = {.NoItemDefaultMoves = sParty_May6},
|
||||
.partySize = ARRAY_COUNT(sParty_MayRoute119Treecko),
|
||||
.party = {.NoItemDefaultMoves = sParty_MayRoute119Treecko},
|
||||
},
|
||||
|
||||
[TRAINER_MAY_7] =
|
||||
[TRAINER_MAY_ROUTE_103_TORCHIC] =
|
||||
{
|
||||
.partyFlags = 0,
|
||||
.trainerClass = TRAINER_CLASS_PKMN_TRAINER_3,
|
||||
@@ -7499,11 +7499,11 @@ const struct Trainer gTrainers[] = {
|
||||
.items = {},
|
||||
.doubleBattle = FALSE,
|
||||
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
|
||||
.partySize = ARRAY_COUNT(sParty_May7),
|
||||
.party = {.NoItemDefaultMoves = sParty_May7},
|
||||
.partySize = ARRAY_COUNT(sParty_MayRoute103Torchic),
|
||||
.party = {.NoItemDefaultMoves = sParty_MayRoute103Torchic},
|
||||
},
|
||||
|
||||
[TRAINER_MAY_8] =
|
||||
[TRAINER_MAY_ROUTE_110_TORCHIC] =
|
||||
{
|
||||
.partyFlags = 0,
|
||||
.trainerClass = TRAINER_CLASS_PKMN_TRAINER_3,
|
||||
@@ -7513,11 +7513,11 @@ const struct Trainer gTrainers[] = {
|
||||
.items = {},
|
||||
.doubleBattle = FALSE,
|
||||
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
|
||||
.partySize = ARRAY_COUNT(sParty_May8),
|
||||
.party = {.NoItemDefaultMoves = sParty_May8},
|
||||
.partySize = ARRAY_COUNT(sParty_MayRoute110Torchic),
|
||||
.party = {.NoItemDefaultMoves = sParty_MayRoute110Torchic},
|
||||
},
|
||||
|
||||
[TRAINER_MAY_9] =
|
||||
[TRAINER_MAY_ROUTE_119_TORCHIC] =
|
||||
{
|
||||
.partyFlags = 0,
|
||||
.trainerClass = TRAINER_CLASS_PKMN_TRAINER_3,
|
||||
@@ -7527,8 +7527,8 @@ const struct Trainer gTrainers[] = {
|
||||
.items = {},
|
||||
.doubleBattle = FALSE,
|
||||
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
|
||||
.partySize = ARRAY_COUNT(sParty_May9),
|
||||
.party = {.NoItemDefaultMoves = sParty_May9},
|
||||
.partySize = ARRAY_COUNT(sParty_MayRoute119Torchic),
|
||||
.party = {.NoItemDefaultMoves = sParty_MayRoute119Torchic},
|
||||
},
|
||||
|
||||
[TRAINER_ISAAC_1] =
|
||||
@@ -8287,7 +8287,7 @@ const struct Trainer gTrainers[] = {
|
||||
.party = {.NoItemDefaultMoves = sParty_Macey},
|
||||
},
|
||||
|
||||
[TRAINER_BRENDAN_10] =
|
||||
[TRAINER_BRENDAN_RUSTBORO_TREECKO] =
|
||||
{
|
||||
.partyFlags = 0,
|
||||
.trainerClass = TRAINER_CLASS_PKMN_TRAINER_3,
|
||||
@@ -8297,11 +8297,11 @@ const struct Trainer gTrainers[] = {
|
||||
.items = {},
|
||||
.doubleBattle = FALSE,
|
||||
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
|
||||
.partySize = ARRAY_COUNT(sParty_Brendan10),
|
||||
.party = {.NoItemDefaultMoves = sParty_Brendan10},
|
||||
.partySize = ARRAY_COUNT(sParty_BrendanRustboroTreecko),
|
||||
.party = {.NoItemDefaultMoves = sParty_BrendanRustboroTreecko},
|
||||
},
|
||||
|
||||
[TRAINER_BRENDAN_11] =
|
||||
[TRAINER_BRENDAN_RUSTBORO_MUDKIP] =
|
||||
{
|
||||
.partyFlags = 0,
|
||||
.trainerClass = TRAINER_CLASS_PKMN_TRAINER_3,
|
||||
@@ -8311,8 +8311,8 @@ const struct Trainer gTrainers[] = {
|
||||
.items = {},
|
||||
.doubleBattle = FALSE,
|
||||
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
|
||||
.partySize = ARRAY_COUNT(sParty_Brendan11),
|
||||
.party = {.NoItemDefaultMoves = sParty_Brendan11},
|
||||
.partySize = ARRAY_COUNT(sParty_BrendanRustboroMudkip),
|
||||
.party = {.NoItemDefaultMoves = sParty_BrendanRustboroMudkip},
|
||||
},
|
||||
|
||||
[TRAINER_PAXTON] =
|
||||
@@ -8357,7 +8357,7 @@ const struct Trainer gTrainers[] = {
|
||||
.party = {.NoItemDefaultMoves = sParty_GruntWeatherInst5},
|
||||
},
|
||||
|
||||
[TRAINER_TABITHA_2] =
|
||||
[TRAINER_TABITHA_MT_CHIMNEY] =
|
||||
{
|
||||
.partyFlags = 0,
|
||||
.trainerClass = TRAINER_CLASS_MAGMA_ADMIN,
|
||||
@@ -8367,8 +8367,8 @@ const struct Trainer gTrainers[] = {
|
||||
.items = {},
|
||||
.doubleBattle = FALSE,
|
||||
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
|
||||
.partySize = ARRAY_COUNT(sParty_Tabitha2),
|
||||
.party = {.NoItemDefaultMoves = sParty_Tabitha2},
|
||||
.partySize = ARRAY_COUNT(sParty_TabithaMtChimney),
|
||||
.party = {.NoItemDefaultMoves = sParty_TabithaMtChimney},
|
||||
},
|
||||
|
||||
[TRAINER_JONATHAN] =
|
||||
@@ -8385,7 +8385,7 @@ const struct Trainer gTrainers[] = {
|
||||
.party = {.NoItemDefaultMoves = sParty_Jonathan},
|
||||
},
|
||||
|
||||
[TRAINER_BRENDAN_12] =
|
||||
[TRAINER_BRENDAN_RUSTBORO_TORCHIC] =
|
||||
{
|
||||
.partyFlags = 0,
|
||||
.trainerClass = TRAINER_CLASS_PKMN_TRAINER_3,
|
||||
@@ -8395,11 +8395,11 @@ const struct Trainer gTrainers[] = {
|
||||
.items = {},
|
||||
.doubleBattle = FALSE,
|
||||
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
|
||||
.partySize = ARRAY_COUNT(sParty_Brendan12),
|
||||
.party = {.NoItemDefaultMoves = sParty_Brendan12},
|
||||
.partySize = ARRAY_COUNT(sParty_BrendanRustboroTorchic),
|
||||
.party = {.NoItemDefaultMoves = sParty_BrendanRustboroTorchic},
|
||||
},
|
||||
|
||||
[TRAINER_MAY_10] =
|
||||
[TRAINER_MAY_RUSTBORO_MUDKIP] =
|
||||
{
|
||||
.partyFlags = 0,
|
||||
.trainerClass = TRAINER_CLASS_PKMN_TRAINER_3,
|
||||
@@ -8409,11 +8409,11 @@ const struct Trainer gTrainers[] = {
|
||||
.items = {},
|
||||
.doubleBattle = FALSE,
|
||||
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_SETUP_FIRST_TURN,
|
||||
.partySize = ARRAY_COUNT(sParty_May10),
|
||||
.party = {.NoItemDefaultMoves = sParty_May10},
|
||||
.partySize = ARRAY_COUNT(sParty_MayRustboroMudkip),
|
||||
.party = {.NoItemDefaultMoves = sParty_MayRustboroMudkip},
|
||||
},
|
||||
|
||||
[TRAINER_MAXIE_1] =
|
||||
[TRAINER_MAXIE_MAGMA_HIDEOUT] =
|
||||
{
|
||||
.partyFlags = 0,
|
||||
.trainerClass = TRAINER_CLASS_MAGMA_LEADER,
|
||||
@@ -8423,11 +8423,11 @@ const struct Trainer gTrainers[] = {
|
||||
.items = {ITEM_SUPER_POTION, ITEM_SUPER_POTION, ITEM_NONE, ITEM_NONE},
|
||||
.doubleBattle = FALSE,
|
||||
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
|
||||
.partySize = ARRAY_COUNT(sParty_Maxie1),
|
||||
.party = {.NoItemDefaultMoves = sParty_Maxie1},
|
||||
.partySize = ARRAY_COUNT(sParty_MaxieMagmaHideout),
|
||||
.party = {.NoItemDefaultMoves = sParty_MaxieMagmaHideout},
|
||||
},
|
||||
|
||||
[TRAINER_MAXIE_2] =
|
||||
[TRAINER_MAXIE_MT_CHIMNEY] =
|
||||
{
|
||||
.partyFlags = 0,
|
||||
.trainerClass = TRAINER_CLASS_MAGMA_LEADER,
|
||||
@@ -8437,8 +8437,8 @@ const struct Trainer gTrainers[] = {
|
||||
.items = {ITEM_SUPER_POTION, ITEM_SUPER_POTION, ITEM_NONE, ITEM_NONE},
|
||||
.doubleBattle = FALSE,
|
||||
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
|
||||
.partySize = ARRAY_COUNT(sParty_Maxie2),
|
||||
.party = {.NoItemDefaultMoves = sParty_Maxie2},
|
||||
.partySize = ARRAY_COUNT(sParty_MaxieMtChimney),
|
||||
.party = {.NoItemDefaultMoves = sParty_MaxieMtChimney},
|
||||
},
|
||||
|
||||
[TRAINER_TIANA] =
|
||||
@@ -9183,7 +9183,7 @@ const struct Trainer gTrainers[] = {
|
||||
.party = {.NoItemDefaultMoves = sParty_Ashley},
|
||||
},
|
||||
|
||||
[TRAINER_WALLY_2] =
|
||||
[TRAINER_WALLY_MAUVILLE] =
|
||||
{
|
||||
.partyFlags = 0,
|
||||
.trainerClass = TRAINER_CLASS_PKMN_TRAINER_3,
|
||||
@@ -9193,11 +9193,11 @@ const struct Trainer gTrainers[] = {
|
||||
.items = {},
|
||||
.doubleBattle = FALSE,
|
||||
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
|
||||
.partySize = ARRAY_COUNT(sParty_Wally2),
|
||||
.party = {.NoItemDefaultMoves = sParty_Wally2},
|
||||
.partySize = ARRAY_COUNT(sParty_WallyMauville),
|
||||
.party = {.NoItemDefaultMoves = sParty_WallyMauville},
|
||||
},
|
||||
|
||||
[TRAINER_WALLY_3] =
|
||||
[TRAINER_WALLY_VR_2] =
|
||||
{
|
||||
.partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
|
||||
.trainerClass = TRAINER_CLASS_PKMN_TRAINER_3,
|
||||
@@ -9207,11 +9207,11 @@ const struct Trainer gTrainers[] = {
|
||||
.items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE},
|
||||
.doubleBattle = FALSE,
|
||||
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
|
||||
.partySize = ARRAY_COUNT(sParty_Wally3),
|
||||
.party = {.NoItemCustomMoves = sParty_Wally3},
|
||||
.partySize = ARRAY_COUNT(sParty_WallyVR2),
|
||||
.party = {.NoItemCustomMoves = sParty_WallyVR2},
|
||||
},
|
||||
|
||||
[TRAINER_WALLY_4] =
|
||||
[TRAINER_WALLY_VR_3] =
|
||||
{
|
||||
.partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
|
||||
.trainerClass = TRAINER_CLASS_PKMN_TRAINER_3,
|
||||
@@ -9221,11 +9221,11 @@ const struct Trainer gTrainers[] = {
|
||||
.items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE},
|
||||
.doubleBattle = FALSE,
|
||||
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
|
||||
.partySize = ARRAY_COUNT(sParty_Wally4),
|
||||
.party = {.NoItemCustomMoves = sParty_Wally4},
|
||||
.partySize = ARRAY_COUNT(sParty_WallyVR3),
|
||||
.party = {.NoItemCustomMoves = sParty_WallyVR3},
|
||||
},
|
||||
|
||||
[TRAINER_WALLY_5] =
|
||||
[TRAINER_WALLY_VR_4] =
|
||||
{
|
||||
.partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
|
||||
.trainerClass = TRAINER_CLASS_PKMN_TRAINER_3,
|
||||
@@ -9235,11 +9235,11 @@ const struct Trainer gTrainers[] = {
|
||||
.items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE},
|
||||
.doubleBattle = FALSE,
|
||||
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
|
||||
.partySize = ARRAY_COUNT(sParty_Wally5),
|
||||
.party = {.NoItemCustomMoves = sParty_Wally5},
|
||||
.partySize = ARRAY_COUNT(sParty_WallyVR4),
|
||||
.party = {.NoItemCustomMoves = sParty_WallyVR4},
|
||||
},
|
||||
|
||||
[TRAINER_WALLY_6] =
|
||||
[TRAINER_WALLY_VR_5] =
|
||||
{
|
||||
.partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
|
||||
.trainerClass = TRAINER_CLASS_PKMN_TRAINER_3,
|
||||
@@ -9249,11 +9249,11 @@ const struct Trainer gTrainers[] = {
|
||||
.items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE},
|
||||
.doubleBattle = FALSE,
|
||||
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
|
||||
.partySize = ARRAY_COUNT(sParty_Wally6),
|
||||
.party = {.NoItemCustomMoves = sParty_Wally6},
|
||||
.partySize = ARRAY_COUNT(sParty_WallyVR5),
|
||||
.party = {.NoItemCustomMoves = sParty_WallyVR5},
|
||||
},
|
||||
|
||||
[TRAINER_BRENDAN_13] =
|
||||
[TRAINER_BRENDAN_LILYCOVE_MUDKIP] =
|
||||
{
|
||||
.partyFlags = 0,
|
||||
.trainerClass = TRAINER_CLASS_PKMN_TRAINER_3,
|
||||
@@ -9263,11 +9263,11 @@ const struct Trainer gTrainers[] = {
|
||||
.items = {},
|
||||
.doubleBattle = FALSE,
|
||||
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
|
||||
.partySize = ARRAY_COUNT(sParty_Brendan13),
|
||||
.party = {.NoItemDefaultMoves = sParty_Brendan13},
|
||||
.partySize = ARRAY_COUNT(sParty_BrendanLilycoveMudkip),
|
||||
.party = {.NoItemDefaultMoves = sParty_BrendanLilycoveMudkip},
|
||||
},
|
||||
|
||||
[TRAINER_BRENDAN_14] =
|
||||
[TRAINER_BRENDAN_LILYCOVE_TREECKO] =
|
||||
{
|
||||
.partyFlags = 0,
|
||||
.trainerClass = TRAINER_CLASS_PKMN_TRAINER_3,
|
||||
@@ -9277,11 +9277,11 @@ const struct Trainer gTrainers[] = {
|
||||
.items = {},
|
||||
.doubleBattle = FALSE,
|
||||
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
|
||||
.partySize = ARRAY_COUNT(sParty_Brendan14),
|
||||
.party = {.NoItemDefaultMoves = sParty_Brendan14},
|
||||
.partySize = ARRAY_COUNT(sParty_BrendanLilycoveTreecko),
|
||||
.party = {.NoItemDefaultMoves = sParty_BrendanLilycoveTreecko},
|
||||
},
|
||||
|
||||
[TRAINER_BRENDAN_15] =
|
||||
[TRAINER_BRENDAN_LILYCOVE_TORCHIC] =
|
||||
{
|
||||
.partyFlags = 0,
|
||||
.trainerClass = TRAINER_CLASS_PKMN_TRAINER_3,
|
||||
@@ -9291,11 +9291,11 @@ const struct Trainer gTrainers[] = {
|
||||
.items = {},
|
||||
.doubleBattle = FALSE,
|
||||
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
|
||||
.partySize = ARRAY_COUNT(sParty_Brendan15),
|
||||
.party = {.NoItemDefaultMoves = sParty_Brendan15},
|
||||
.partySize = ARRAY_COUNT(sParty_BrendanLilycoveTorchic),
|
||||
.party = {.NoItemDefaultMoves = sParty_BrendanLilycoveTorchic},
|
||||
},
|
||||
|
||||
[TRAINER_MAY_11] =
|
||||
[TRAINER_MAY_LILYCOVE_MUDKIP] =
|
||||
{
|
||||
.partyFlags = 0,
|
||||
.trainerClass = TRAINER_CLASS_PKMN_TRAINER_3,
|
||||
@@ -9305,11 +9305,11 @@ const struct Trainer gTrainers[] = {
|
||||
.items = {},
|
||||
.doubleBattle = FALSE,
|
||||
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
|
||||
.partySize = ARRAY_COUNT(sParty_May11),
|
||||
.party = {.NoItemDefaultMoves = sParty_May11},
|
||||
.partySize = ARRAY_COUNT(sParty_MayLilycoveMudkip),
|
||||
.party = {.NoItemDefaultMoves = sParty_MayLilycoveMudkip},
|
||||
},
|
||||
|
||||
[TRAINER_MAY_12] =
|
||||
[TRAINER_MAY_LILYCOVE_TREECKO] =
|
||||
{
|
||||
.partyFlags = 0,
|
||||
.trainerClass = TRAINER_CLASS_PKMN_TRAINER_3,
|
||||
@@ -9319,11 +9319,11 @@ const struct Trainer gTrainers[] = {
|
||||
.items = {},
|
||||
.doubleBattle = FALSE,
|
||||
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
|
||||
.partySize = ARRAY_COUNT(sParty_May12),
|
||||
.party = {.NoItemDefaultMoves = sParty_May12},
|
||||
.partySize = ARRAY_COUNT(sParty_MayLilycoveTreecko),
|
||||
.party = {.NoItemDefaultMoves = sParty_MayLilycoveTreecko},
|
||||
},
|
||||
|
||||
[TRAINER_MAY_13] =
|
||||
[TRAINER_MAY_LILYCOVE_TORCHIC] =
|
||||
{
|
||||
.partyFlags = 0,
|
||||
.trainerClass = TRAINER_CLASS_PKMN_TRAINER_3,
|
||||
@@ -9333,8 +9333,8 @@ const struct Trainer gTrainers[] = {
|
||||
.items = {},
|
||||
.doubleBattle = FALSE,
|
||||
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
|
||||
.partySize = ARRAY_COUNT(sParty_May13),
|
||||
.party = {.NoItemDefaultMoves = sParty_May13},
|
||||
.partySize = ARRAY_COUNT(sParty_MayLilycoveTorchic),
|
||||
.party = {.NoItemDefaultMoves = sParty_MayLilycoveTorchic},
|
||||
},
|
||||
|
||||
[TRAINER_JONAH] =
|
||||
@@ -10247,7 +10247,7 @@ const struct Trainer gTrainers[] = {
|
||||
.party = {.NoItemDefaultMoves = sParty_GruntMagmaHideout16},
|
||||
},
|
||||
|
||||
[TRAINER_TABITHA_3] =
|
||||
[TRAINER_TABITHA_MAGMA_HIDEOUT] =
|
||||
{
|
||||
.partyFlags = 0,
|
||||
.trainerClass = TRAINER_CLASS_MAGMA_ADMIN,
|
||||
@@ -10257,8 +10257,8 @@ const struct Trainer gTrainers[] = {
|
||||
.items = {},
|
||||
.doubleBattle = FALSE,
|
||||
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
|
||||
.partySize = ARRAY_COUNT(sParty_Tabitha3),
|
||||
.party = {.NoItemDefaultMoves = sParty_Tabitha3},
|
||||
.partySize = ARRAY_COUNT(sParty_TabithaMagmaHideout),
|
||||
.party = {.NoItemDefaultMoves = sParty_TabithaMagmaHideout},
|
||||
},
|
||||
|
||||
[TRAINER_DARCY] =
|
||||
@@ -10275,7 +10275,7 @@ const struct Trainer gTrainers[] = {
|
||||
.party = {.NoItemDefaultMoves = sParty_Darcy},
|
||||
},
|
||||
|
||||
[TRAINER_MAXIE_3] =
|
||||
[TRAINER_MAXIE_MOSSDEEP] =
|
||||
{
|
||||
.partyFlags = 0,
|
||||
.trainerClass = TRAINER_CLASS_MAGMA_LEADER,
|
||||
@@ -10285,8 +10285,8 @@ const struct Trainer gTrainers[] = {
|
||||
.items = {},
|
||||
.doubleBattle = FALSE,
|
||||
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
|
||||
.partySize = ARRAY_COUNT(sParty_Maxie3),
|
||||
.party = {.NoItemDefaultMoves = sParty_Maxie3},
|
||||
.partySize = ARRAY_COUNT(sParty_MaxieMossdeep),
|
||||
.party = {.NoItemDefaultMoves = sParty_MaxieMossdeep},
|
||||
},
|
||||
|
||||
[TRAINER_PETE] =
|
||||
@@ -10751,7 +10751,7 @@ const struct Trainer gTrainers[] = {
|
||||
.party = {.NoItemDefaultMoves = sParty_Cristin1},
|
||||
},
|
||||
|
||||
[TRAINER_MAY_14] =
|
||||
[TRAINER_MAY_RUSTBORO_TREECKO] =
|
||||
{
|
||||
.partyFlags = 0,
|
||||
.trainerClass = TRAINER_CLASS_PKMN_TRAINER_3,
|
||||
@@ -10761,11 +10761,11 @@ const struct Trainer gTrainers[] = {
|
||||
.items = {},
|
||||
.doubleBattle = FALSE,
|
||||
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
|
||||
.partySize = ARRAY_COUNT(sParty_May14),
|
||||
.party = {.NoItemDefaultMoves = sParty_May14},
|
||||
.partySize = ARRAY_COUNT(sParty_MayRustboroTreecko),
|
||||
.party = {.NoItemDefaultMoves = sParty_MayRustboroTreecko},
|
||||
},
|
||||
|
||||
[TRAINER_MAY_15] =
|
||||
[TRAINER_MAY_RUSTBORO_TORCHIC] =
|
||||
{
|
||||
.partyFlags = 0,
|
||||
.trainerClass = TRAINER_CLASS_PKMN_TRAINER_3,
|
||||
@@ -10775,8 +10775,8 @@ const struct Trainer gTrainers[] = {
|
||||
.items = {},
|
||||
.doubleBattle = FALSE,
|
||||
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
|
||||
.partySize = ARRAY_COUNT(sParty_May15),
|
||||
.party = {.NoItemDefaultMoves = sParty_May15},
|
||||
.partySize = ARRAY_COUNT(sParty_MayRustboroTorchic),
|
||||
.party = {.NoItemDefaultMoves = sParty_MayRustboroTorchic},
|
||||
},
|
||||
|
||||
[TRAINER_ROXANNE_2] =
|
||||
@@ -11941,7 +11941,7 @@ const struct Trainer gTrainers[] = {
|
||||
.party = {.NoItemDefaultMoves = sParty_Leaf},
|
||||
},
|
||||
|
||||
[TRAINER_BRENDAN_16] =
|
||||
[TRAINER_BRENDAN_PLACEHOLDER] =
|
||||
{
|
||||
.partyFlags = 0,
|
||||
.trainerClass = TRAINER_CLASS_RS_PROTAG,
|
||||
@@ -11951,11 +11951,11 @@ const struct Trainer gTrainers[] = {
|
||||
.items = {},
|
||||
.doubleBattle = FALSE,
|
||||
.aiFlags = 0,
|
||||
.partySize = ARRAY_COUNT(sParty_Brendan16),
|
||||
.party = {.NoItemDefaultMoves = sParty_Brendan16},
|
||||
.partySize = ARRAY_COUNT(sParty_BrendanLinkPlaceholder),
|
||||
.party = {.NoItemDefaultMoves = sParty_BrendanLinkPlaceholder},
|
||||
},
|
||||
|
||||
[TRAINER_MAY_16] =
|
||||
[TRAINER_MAY_PLACEHOLDER] =
|
||||
{
|
||||
.partyFlags = 0,
|
||||
.trainerClass = TRAINER_CLASS_RS_PROTAG,
|
||||
@@ -11965,7 +11965,7 @@ const struct Trainer gTrainers[] = {
|
||||
.items = {},
|
||||
.doubleBattle = FALSE,
|
||||
.aiFlags = 0,
|
||||
.partySize = ARRAY_COUNT(sParty_May16),
|
||||
.party = {.NoItemDefaultMoves = sParty_May16},
|
||||
.partySize = ARRAY_COUNT(sParty_MayLinkPlaceholder),
|
||||
.party = {.NoItemDefaultMoves = sParty_MayLinkPlaceholder},
|
||||
},
|
||||
};
|
||||
|
||||
+6
-5
@@ -14,6 +14,7 @@
|
||||
#include "graphics.h"
|
||||
#include "international_string_util.h"
|
||||
#include "item_icon.h"
|
||||
#include "item_menu.h"
|
||||
#include "list_menu.h"
|
||||
#include "main.h"
|
||||
#include "menu.h"
|
||||
@@ -1332,7 +1333,7 @@ void sub_8128060(u8 taskId)
|
||||
ConfigureCameraObjectForPlacingDecoration(&sPlaceDecorationGraphicsDataBuffer, gCurDecorationItems[gCurDecorationIndex]);
|
||||
sub_812826C(taskId);
|
||||
SetUpPlacingDecorationPlayerAvatar(taskId, &sPlaceDecorationGraphicsDataBuffer);
|
||||
pal_fill_black();
|
||||
FadeInFromBlack();
|
||||
gPaletteFade.bufferTransferDisabled = FALSE;
|
||||
gTasks[taskId].data[2] = 2;
|
||||
break;
|
||||
@@ -1738,7 +1739,7 @@ void sub_8128CD4(void)
|
||||
u8 taskId;
|
||||
|
||||
ScriptContext2_Enable();
|
||||
pal_fill_black();
|
||||
FadeInFromBlack();
|
||||
taskId = CreateTask(sub_8128C64, 8);
|
||||
sub_8127580(taskId);
|
||||
gTasks[taskId].data[2] = 0;
|
||||
@@ -2215,7 +2216,7 @@ void sub_81298EC(u8 taskId)
|
||||
case 2:
|
||||
ScriptContext2_Enable();
|
||||
IdentifyOwnedDecorationsCurrentlyInUseInternal(taskId);
|
||||
pal_fill_black();
|
||||
FadeInFromBlack();
|
||||
gTasks[taskId].data[2] = 3;
|
||||
break;
|
||||
case 3:
|
||||
@@ -2278,7 +2279,7 @@ void sub_8129ABC(u8 taskId)
|
||||
break;
|
||||
case 1:
|
||||
SetUpPuttingAwayDecorationPlayerAvatar();
|
||||
pal_fill_black();
|
||||
FadeInFromBlack();
|
||||
data[2] = 2;
|
||||
break;
|
||||
case 2:
|
||||
@@ -2623,7 +2624,7 @@ void sub_812A334(void)
|
||||
{
|
||||
u8 taskId;
|
||||
|
||||
pal_fill_black();
|
||||
FadeInFromBlack();
|
||||
DrawDialogueFrame(0, 1);
|
||||
InitDecorationActionsWindow();
|
||||
taskId = CreateTask(sub_812A2C4, 8);
|
||||
|
||||
+1
-1
@@ -470,7 +470,7 @@ static void Task_EggHatch(u8 taskID)
|
||||
{
|
||||
CleanupOverworldWindowsAndTilemaps();
|
||||
SetMainCallback2(CB2_EggHatch_0);
|
||||
gFieldCallback = FieldCallback_ReturnToEventScript2;
|
||||
gFieldCallback = FieldCB_ContinueScriptHandleMusic;
|
||||
DestroyTask(taskID);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
#include "trainer_see.h"
|
||||
#include "constants/event_objects.h"
|
||||
|
||||
bool8 walkrun_is_standing_still(void)
|
||||
bool8 IsPlayerStandingStill(void)
|
||||
{
|
||||
if (gPlayerAvatar.tileTransitionState == T_TILE_TRANSITION)
|
||||
return FALSE;
|
||||
@@ -18,7 +18,7 @@ bool8 walkrun_is_standing_still(void)
|
||||
|
||||
static void sub_80983A4(u8 taskId)
|
||||
{
|
||||
if (walkrun_is_standing_still())
|
||||
if (IsPlayerStandingStill())
|
||||
{
|
||||
sub_808B864();
|
||||
DestroyTask(taskId);
|
||||
@@ -49,7 +49,7 @@ static void sub_8098400(u8 taskId)
|
||||
{
|
||||
struct Task *task = &gTasks[taskId];
|
||||
|
||||
if (!task->data[0] && walkrun_is_standing_still() == TRUE)
|
||||
if (!task->data[0] && IsPlayerStandingStill() == TRUE)
|
||||
{
|
||||
sub_808B864();
|
||||
task->data[0] = 1;
|
||||
@@ -123,7 +123,7 @@ static void sub_80985BC(u8 taskId)
|
||||
struct Task *task = &gTasks[taskId];
|
||||
u8 eventObjectId = task->data[2];
|
||||
|
||||
if (!task->data[0] && walkrun_is_standing_still() == TRUE)
|
||||
if (!task->data[0] && IsPlayerStandingStill() == TRUE)
|
||||
{
|
||||
sub_808B864();
|
||||
task->data[0] = 1;
|
||||
|
||||
@@ -710,22 +710,22 @@ static bool8 TryStartWarpEventScript(struct MapPosition *position, u16 metatileB
|
||||
SetupWarp(&gMapHeader, warpEventId, position);
|
||||
if (MetatileBehavior_IsEscalator(metatileBehavior) == TRUE)
|
||||
{
|
||||
sub_80AF80C(metatileBehavior);
|
||||
DoEscalatorWarp(metatileBehavior);
|
||||
return TRUE;
|
||||
}
|
||||
if (MetatileBehavior_IsLavaridgeB1FWarp(metatileBehavior) == TRUE)
|
||||
{
|
||||
sub_80AF828();
|
||||
DoLavaridgeGymB1FWarp();
|
||||
return TRUE;
|
||||
}
|
||||
if (MetatileBehavior_IsLavaridge1FWarp(metatileBehavior) == TRUE)
|
||||
{
|
||||
sub_80AF838();
|
||||
DoLavaridgeGym1FWarp();
|
||||
return TRUE;
|
||||
}
|
||||
if (MetatileBehavior_IsAquaHideoutWarp(metatileBehavior) == TRUE)
|
||||
{
|
||||
sub_80AF848();
|
||||
DoTeleportWarp();
|
||||
return TRUE;
|
||||
}
|
||||
if (MetatileBehavior_IsWarpOrBridge(metatileBehavior) == TRUE)
|
||||
|
||||
+8
-6
@@ -9,7 +9,7 @@
|
||||
#include "constants/maps.h"
|
||||
#include "constants/songs.h"
|
||||
|
||||
bool8 sub_808A964(void);
|
||||
static bool8 ShouldUseMultiCorridorDoor(void);
|
||||
|
||||
const u8 DoorAnimTiles_04[][0x100] =
|
||||
{
|
||||
@@ -698,14 +698,14 @@ static void DrawDoor(const struct DoorGraphics *gfx, const struct DoorAnimFrame
|
||||
if (frame->offset == 0xFFFF)
|
||||
{
|
||||
DrawClosedDoorTiles(gfx, x, y);
|
||||
if (sub_808A964())
|
||||
if (ShouldUseMultiCorridorDoor())
|
||||
DrawClosedDoorTiles(gfx, gSpecialVar_0x8004 + 7, gSpecialVar_0x8005 + 7);
|
||||
}
|
||||
else
|
||||
{
|
||||
CopyDoorTilesToVram(gfx, frame);
|
||||
DrawCurrentDoorAnimFrame(gfx, x, y, gfx->palette);
|
||||
if (sub_808A964())
|
||||
if (ShouldUseMultiCorridorDoor())
|
||||
DrawCurrentDoorAnimFrame(gfx, gSpecialVar_0x8004 + 7, gSpecialVar_0x8005 + 7, gfx->palette);
|
||||
}
|
||||
}
|
||||
@@ -885,11 +885,13 @@ u32 GetDoorSoundEffect(u32 x, u32 y)
|
||||
return SE_DOOR;
|
||||
}
|
||||
|
||||
bool8 sub_808A964(void)
|
||||
// Opens the Battle Tower multi partner's door in sync with the player's door
|
||||
static bool8 ShouldUseMultiCorridorDoor(void)
|
||||
{
|
||||
if (FlagGet(FLAG_SPECIAL_FLAG_0x4002))
|
||||
if (FlagGet(FLAG_ENABLE_MULTI_CORRIDOR_DOOR))
|
||||
{
|
||||
if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(BATTLE_FRONTIER_BATTLE_TOWER_CORRIDOR2) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(BATTLE_FRONTIER_BATTLE_TOWER_CORRIDOR2))
|
||||
if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(BATTLE_FRONTIER_BATTLE_TOWER_MULTI_CORRIDOR)
|
||||
&& gSaveBlock1Ptr->location.mapNum == MAP_NUM(BATTLE_FRONTIER_BATTLE_TOWER_MULTI_CORRIDOR))
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
+140
-140
@@ -28,6 +28,7 @@
|
||||
#include "util.h"
|
||||
#include "constants/field_effects.h"
|
||||
#include "constants/event_object_movement_constants.h"
|
||||
#include "constants/metatile_behaviors.h"
|
||||
#include "constants/rgb.h"
|
||||
#include "constants/songs.h"
|
||||
|
||||
@@ -68,22 +69,22 @@ static void task00_8084310(u8);
|
||||
static void mapldr_08084390(void);
|
||||
static void c3_080843F8(u8);
|
||||
|
||||
static void sub_80B6B94(u8);
|
||||
static bool8 sub_80B6BCC(struct Task *);
|
||||
static bool8 sub_80B6C74(struct Task *);
|
||||
static bool8 sub_80B6C90(struct Task *);
|
||||
static bool8 sub_80B6D04(struct Task *);
|
||||
static bool8 sub_80B6DBC(struct Task *);
|
||||
static bool8 sub_80B6DD8(struct Task *);
|
||||
static bool8 sub_80B6E18(struct Task *);
|
||||
static void Task_FallWarpFieldEffect(u8);
|
||||
static bool8 FallWarpEffect_1(struct Task *);
|
||||
static bool8 FallWarpEffect_2(struct Task *);
|
||||
static bool8 FallWarpEffect_3(struct Task *);
|
||||
static bool8 FallWarpEffect_4(struct Task *);
|
||||
static bool8 FallWarpEffect_5(struct Task *);
|
||||
static bool8 FallWarpEffect_6(struct Task *);
|
||||
static bool8 FallWarpEffect_7(struct Task *);
|
||||
|
||||
static void sub_80B6E88(u8);
|
||||
static bool8 sub_80B6EC0(struct Task *);
|
||||
static bool8 sub_80B6EE0(struct Task *);
|
||||
static bool8 sub_80B6F50(struct Task *);
|
||||
static bool8 sub_80B6F74(struct Task *);
|
||||
static bool8 sub_80B6F84(struct Task *);
|
||||
static bool8 sub_80B6FA8(struct Task *);
|
||||
static void Task_EscalatorWarpFieldEffect(u8);
|
||||
static bool8 EscalatorWarpEffect_1(struct Task *);
|
||||
static bool8 EscalatorWarpEffect_2(struct Task *);
|
||||
static bool8 EscalatorWarpEffect_3(struct Task *);
|
||||
static bool8 EscalatorWarpEffect_4(struct Task *);
|
||||
static bool8 EscalatorWarpEffect_5(struct Task *);
|
||||
static bool8 EscalatorWarpEffect_6(struct Task *);
|
||||
|
||||
static void sub_80B6FB8(struct Task *);
|
||||
static void sub_80B7004(struct Task *);
|
||||
@@ -112,29 +113,27 @@ static bool8 dive_1_lock(struct Task *);
|
||||
static bool8 dive_2_unknown(struct Task *);
|
||||
static bool8 dive_3_unknown(struct Task *);
|
||||
|
||||
static void sub_80B75F0(u8);
|
||||
static bool8 sub_80B764C(struct Task *, struct EventObject *, struct Sprite *);
|
||||
static bool8 sub_80B7684(struct Task *, struct EventObject *, struct Sprite *);
|
||||
static bool8 sub_80B76B8(struct Task *, struct EventObject *, struct Sprite *);
|
||||
static bool8 sub_80B7704(struct Task *, struct EventObject *, struct Sprite *);
|
||||
static bool8 sub_80B77F8(struct Task *, struct EventObject *, struct Sprite *);
|
||||
static bool8 sub_80B7814(struct Task *, struct EventObject *, struct Sprite *);
|
||||
static void Task_LavaridgeGymB1FWarp(u8);
|
||||
static bool8 LavaridgeGymB1FWarpEffect_1(struct Task *, struct EventObject *, struct Sprite *);
|
||||
static bool8 LavaridgeGymB1FWarpEffect_2(struct Task *, struct EventObject *, struct Sprite *);
|
||||
static bool8 LavaridgeGymB1FWarpEffect_3(struct Task *, struct EventObject *, struct Sprite *);
|
||||
static bool8 LavaridgeGymB1FWarpEffect_4(struct Task *, struct EventObject *, struct Sprite *);
|
||||
static bool8 LavaridgeGymB1FWarpEffect_5(struct Task *, struct EventObject *, struct Sprite *);
|
||||
static bool8 LavaridgeGymB1FWarpEffect_6(struct Task *, struct EventObject *, struct Sprite *);
|
||||
|
||||
static void mapldr_080851BC(void);
|
||||
static void sub_80B7890(u8);
|
||||
static void FieldCB_LavaridgeGymB1FWarpExit(void);
|
||||
static void Task_LavaridgeGymB1FWarpExit(u8);
|
||||
static bool8 LavaridgeGymB1FWarpExitEffect_1(struct Task *, struct EventObject *, struct Sprite *);
|
||||
static bool8 LavaridgeGymB1FWarpExitEffect_2(struct Task *, struct EventObject *, struct Sprite *);
|
||||
static bool8 LavaridgeGymB1FWarpExitEffect_3(struct Task *, struct EventObject *, struct Sprite *);
|
||||
static bool8 LavaridgeGymB1FWarpExitEffect_4(struct Task *, struct EventObject *, struct Sprite *);
|
||||
|
||||
static bool8 sub_80B78EC(struct Task *, struct EventObject *, struct Sprite *);
|
||||
static bool8 sub_80B791C(struct Task *, struct EventObject *, struct Sprite *);
|
||||
static bool8 sub_80B7968(struct Task *, struct EventObject *, struct Sprite *);
|
||||
static bool8 sub_80B79BC(struct Task *, struct EventObject *, struct Sprite *);
|
||||
|
||||
static void sub_80B7A8C(u8);
|
||||
|
||||
static bool8 sub_80B7AE8(struct Task *, struct EventObject *, struct Sprite *);
|
||||
static bool8 sub_80B7B18(struct Task *, struct EventObject *, struct Sprite *);
|
||||
static bool8 sub_80B7B94(struct Task *, struct EventObject *, struct Sprite *);
|
||||
static bool8 sub_80B7BCC(struct Task *, struct EventObject *, struct Sprite *);
|
||||
static bool8 sub_80B7BF4(struct Task *, struct EventObject *, struct Sprite *);
|
||||
static void Task_LavaridgeGym1FWarp(u8);
|
||||
static bool8 LavaridgeGym1FWarpEffect_1(struct Task *, struct EventObject *, struct Sprite *);
|
||||
static bool8 LavaridgeGym1FWarpEffect_2(struct Task *, struct EventObject *, struct Sprite *);
|
||||
static bool8 LavaridgeGym1FWarpEffect_3(struct Task *, struct EventObject *, struct Sprite *);
|
||||
static bool8 LavaridgeGym1FWarpEffect_4(struct Task *, struct EventObject *, struct Sprite *);
|
||||
static bool8 LavaridgeGym1FWarpEffect_5(struct Task *, struct EventObject *, struct Sprite *);
|
||||
|
||||
static void DoEscapeRopeFieldEffect(u8);
|
||||
static void EscapeRopeFieldEffect_Step0(struct Task *);
|
||||
@@ -596,25 +595,25 @@ const u8 gUnknown_0855C3BC[] = {16, 12, 8, 0};
|
||||
const u8 gUnknown_0855C3C0[] = {16, 12, 8, 0};
|
||||
const u8 gUnknown_0855C3C4[] = { 0, 0, 0, 0};
|
||||
|
||||
bool8 (*const gUnknown_0855C3C8[])(struct Task *) =
|
||||
bool8 (*const sFallWarpFieldEffectFuncs[])(struct Task *) =
|
||||
{
|
||||
sub_80B6BCC,
|
||||
sub_80B6C74,
|
||||
sub_80B6C90,
|
||||
sub_80B6D04,
|
||||
sub_80B6DBC,
|
||||
sub_80B6DD8,
|
||||
sub_80B6E18,
|
||||
FallWarpEffect_1,
|
||||
FallWarpEffect_2,
|
||||
FallWarpEffect_3,
|
||||
FallWarpEffect_4,
|
||||
FallWarpEffect_5,
|
||||
FallWarpEffect_6,
|
||||
FallWarpEffect_7,
|
||||
};
|
||||
|
||||
bool8 (*const gUnknown_0855C3E4[])(struct Task *) =
|
||||
bool8 (*const sEscalatorWarpFieldEffectFuncs[])(struct Task *) =
|
||||
{
|
||||
sub_80B6EC0,
|
||||
sub_80B6EE0,
|
||||
sub_80B6F50,
|
||||
sub_80B6F74,
|
||||
sub_80B6F84,
|
||||
sub_80B6FA8,
|
||||
EscalatorWarpEffect_1,
|
||||
EscalatorWarpEffect_2,
|
||||
EscalatorWarpEffect_3,
|
||||
EscalatorWarpEffect_4,
|
||||
EscalatorWarpEffect_5,
|
||||
EscalatorWarpEffect_6,
|
||||
};
|
||||
|
||||
bool8 (*const gUnknown_0855C3FC[])(struct Task *) =
|
||||
@@ -644,31 +643,31 @@ bool8 (*const gUnknown_0855C42C[])(struct Task *) =
|
||||
dive_3_unknown,
|
||||
};
|
||||
|
||||
bool8 (*const gUnknown_0855C438[])(struct Task *, struct EventObject *, struct Sprite *) =
|
||||
bool8 (*const sLavaridgeGymB1FWarpEffectFuncs[])(struct Task *, struct EventObject *, struct Sprite *) =
|
||||
{
|
||||
sub_80B764C,
|
||||
sub_80B7684,
|
||||
sub_80B76B8,
|
||||
sub_80B7704,
|
||||
sub_80B77F8,
|
||||
sub_80B7814,
|
||||
LavaridgeGymB1FWarpEffect_1,
|
||||
LavaridgeGymB1FWarpEffect_2,
|
||||
LavaridgeGymB1FWarpEffect_3,
|
||||
LavaridgeGymB1FWarpEffect_4,
|
||||
LavaridgeGymB1FWarpEffect_5,
|
||||
LavaridgeGymB1FWarpEffect_6,
|
||||
};
|
||||
|
||||
bool8 (*const gUnknown_0855C450[])(struct Task *, struct EventObject *, struct Sprite *) =
|
||||
bool8 (*const sLavaridgeGymB1FWarpExitEffectFuncs[])(struct Task *, struct EventObject *, struct Sprite *) =
|
||||
{
|
||||
sub_80B78EC,
|
||||
sub_80B791C,
|
||||
sub_80B7968,
|
||||
sub_80B79BC,
|
||||
LavaridgeGymB1FWarpExitEffect_1,
|
||||
LavaridgeGymB1FWarpExitEffect_2,
|
||||
LavaridgeGymB1FWarpExitEffect_3,
|
||||
LavaridgeGymB1FWarpExitEffect_4,
|
||||
};
|
||||
|
||||
bool8 (*const gUnknown_0855C460[])(struct Task *, struct EventObject *, struct Sprite *) =
|
||||
bool8 (*const sLavaridgeGym1FWarpEffectFuncs[])(struct Task *, struct EventObject *, struct Sprite *) =
|
||||
{
|
||||
sub_80B7AE8,
|
||||
sub_80B7B18,
|
||||
sub_80B7B94,
|
||||
sub_80B7BCC,
|
||||
sub_80B7BF4,
|
||||
LavaridgeGym1FWarpEffect_1,
|
||||
LavaridgeGym1FWarpEffect_2,
|
||||
LavaridgeGym1FWarpEffect_3,
|
||||
LavaridgeGym1FWarpEffect_4,
|
||||
LavaridgeGym1FWarpEffect_5,
|
||||
};
|
||||
|
||||
void (*const gEscapeRopeFieldEffectFuncs[])(struct Task *) =
|
||||
@@ -1428,7 +1427,7 @@ void ReturnToFieldFromFlyMapSelect(void)
|
||||
|
||||
static void FieldCallback_Fly(void)
|
||||
{
|
||||
pal_fill_black();
|
||||
FadeInFromBlack();
|
||||
CreateTask(task00_8084310, 0);
|
||||
ScriptContext2_Enable();
|
||||
FreezeEventObjects();
|
||||
@@ -1466,7 +1465,7 @@ static void task00_8084310(u8 taskId)
|
||||
static void mapldr_08084390(void)
|
||||
{
|
||||
Overworld_PlaySpecialMapMusic();
|
||||
pal_fill_black();
|
||||
FadeInFromBlack();
|
||||
CreateTask(c3_080843F8, 0);
|
||||
gEventObjects[gPlayerAvatar.eventObjectId].invisible = TRUE;
|
||||
if (gPlayerAvatar.flags & 0x08)
|
||||
@@ -1499,24 +1498,24 @@ static void c3_080843F8(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80B6B68(void)
|
||||
void FieldCB_FallWarpExit(void)
|
||||
{
|
||||
Overworld_PlaySpecialMapMusic();
|
||||
pal_fill_for_maplights();
|
||||
WarpFadeInScreen();
|
||||
ScriptContext2_Enable();
|
||||
FreezeEventObjects();
|
||||
CreateTask(sub_80B6B94, 0);
|
||||
CreateTask(Task_FallWarpFieldEffect, 0);
|
||||
gFieldCallback = NULL;
|
||||
}
|
||||
|
||||
static void sub_80B6B94(u8 taskId)
|
||||
static void Task_FallWarpFieldEffect(u8 taskId)
|
||||
{
|
||||
struct Task *task;
|
||||
task = &gTasks[taskId];
|
||||
while (gUnknown_0855C3C8[task->data[0]](task)); // return code signifies whether to continue blocking here
|
||||
while (sFallWarpFieldEffectFuncs[task->data[0]](task)); // return code signifies whether to continue blocking here
|
||||
}
|
||||
|
||||
static bool8 sub_80B6BCC(struct Task *task) // gUnknown_0855C3C8[0]
|
||||
static bool8 FallWarpEffect_1(struct Task *task)
|
||||
{
|
||||
struct EventObject *playerObject;
|
||||
struct Sprite *playerSprite;
|
||||
@@ -1534,7 +1533,7 @@ static bool8 sub_80B6BCC(struct Task *task) // gUnknown_0855C3C8[0]
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static bool8 sub_80B6C74(struct Task *task) // gUnknown_0855C3C8[1]
|
||||
static bool8 FallWarpEffect_2(struct Task *task)
|
||||
{
|
||||
if (IsWeatherNotFadingIn())
|
||||
{
|
||||
@@ -1543,7 +1542,7 @@ static bool8 sub_80B6C74(struct Task *task) // gUnknown_0855C3C8[1]
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static bool8 sub_80B6C90(struct Task *task) // gUnknown_0855C3C8[2]
|
||||
static bool8 FallWarpEffect_3(struct Task *task)
|
||||
{
|
||||
struct Sprite *sprite;
|
||||
s16 centerToCornerVecY;
|
||||
@@ -1558,7 +1557,7 @@ static bool8 sub_80B6C90(struct Task *task) // gUnknown_0855C3C8[2]
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static bool8 sub_80B6D04(struct Task *task)
|
||||
static bool8 FallWarpEffect_4(struct Task *task)
|
||||
{
|
||||
struct EventObject *eventObject;
|
||||
struct Sprite *sprite;
|
||||
@@ -1592,7 +1591,7 @@ static bool8 sub_80B6D04(struct Task *task)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static bool8 sub_80B6DBC(struct Task *task)
|
||||
static bool8 FallWarpEffect_5(struct Task *task)
|
||||
{
|
||||
task->data[0]++;
|
||||
task->data[1] = 4;
|
||||
@@ -1601,7 +1600,7 @@ static bool8 sub_80B6DBC(struct Task *task)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static bool8 sub_80B6DD8(struct Task *task)
|
||||
static bool8 FallWarpEffect_6(struct Task *task)
|
||||
{
|
||||
SetCameraPanning(0, task->data[1]);
|
||||
task->data[1] = -task->data[1];
|
||||
@@ -1617,36 +1616,36 @@ static bool8 sub_80B6DD8(struct Task *task)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static bool8 sub_80B6E18(struct Task *task)
|
||||
static bool8 FallWarpEffect_7(struct Task *task)
|
||||
{
|
||||
gPlayerAvatar.preventStep = FALSE;
|
||||
ScriptContext2_Disable();
|
||||
CameraObjectReset1();
|
||||
UnfreezeEventObjects();
|
||||
InstallCameraPanAheadCallback();
|
||||
DestroyTask(FindTaskIdByFunc(sub_80B6B94));
|
||||
DestroyTask(FindTaskIdByFunc(Task_FallWarpFieldEffect));
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void sub_80B6E4C(u8 a0, u8 priority)
|
||||
void StartEscalatorWarp(u8 metatileBehavior, u8 priority)
|
||||
{
|
||||
u8 taskId;
|
||||
taskId = CreateTask(sub_80B6E88, priority);
|
||||
taskId = CreateTask(Task_EscalatorWarpFieldEffect, priority);
|
||||
gTasks[taskId].data[1] = 0;
|
||||
if (a0 == 0x6a)
|
||||
if (metatileBehavior == MB_UP_ESCALATOR)
|
||||
{
|
||||
gTasks[taskId].data[1] = 1;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80B6E88(u8 taskId)
|
||||
static void Task_EscalatorWarpFieldEffect(u8 taskId)
|
||||
{
|
||||
struct Task *task;
|
||||
task = &gTasks[taskId];
|
||||
while (gUnknown_0855C3E4[task->data[0]](task));
|
||||
while (sEscalatorWarpFieldEffectFuncs[task->data[0]](task));
|
||||
}
|
||||
|
||||
static bool8 sub_80B6EC0(struct Task *task)
|
||||
static bool8 EscalatorWarpEffect_1(struct Task *task)
|
||||
{
|
||||
FreezeEventObjects();
|
||||
CameraObjectReset2();
|
||||
@@ -1655,7 +1654,7 @@ static bool8 sub_80B6EC0(struct Task *task)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static bool8 sub_80B6EE0(struct Task *task)
|
||||
static bool8 EscalatorWarpEffect_2(struct Task *task)
|
||||
{
|
||||
struct EventObject *eventObject;
|
||||
eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
|
||||
@@ -1674,7 +1673,7 @@ static bool8 sub_80B6EE0(struct Task *task)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static bool8 sub_80B6F50(struct Task *task)
|
||||
static bool8 EscalatorWarpEffect_3(struct Task *task)
|
||||
{
|
||||
sub_80B6FB8(task);
|
||||
if (task->data[2] > 3)
|
||||
@@ -1685,14 +1684,14 @@ static bool8 sub_80B6F50(struct Task *task)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static bool8 sub_80B6F74(struct Task *task)
|
||||
static bool8 EscalatorWarpEffect_4(struct Task *task)
|
||||
{
|
||||
sub_80B6FB8(task);
|
||||
sub_80B7060();
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static bool8 sub_80B6F84(struct Task *task)
|
||||
static bool8 EscalatorWarpEffect_5(struct Task *task)
|
||||
{
|
||||
sub_80B7004(task);
|
||||
if (task->data[2] > 3)
|
||||
@@ -1703,7 +1702,7 @@ static bool8 sub_80B6F84(struct Task *task)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static bool8 sub_80B6FA8(struct Task *task)
|
||||
static bool8 EscalatorWarpEffect_6(struct Task *task)
|
||||
{
|
||||
sub_80B7004(task);
|
||||
sub_80B7060();
|
||||
@@ -1739,7 +1738,7 @@ static void sub_80B7004(struct Task *task)
|
||||
static void sub_80B7050(void)
|
||||
{
|
||||
TryFadeOutOldMapMusic();
|
||||
WarpFadeScreen();
|
||||
WarpFadeOutScreen();
|
||||
}
|
||||
|
||||
static void sub_80B7060(void)
|
||||
@@ -1750,14 +1749,14 @@ static void sub_80B7060(void)
|
||||
WarpIntoMap();
|
||||
gFieldCallback = sub_80B70B4;
|
||||
SetMainCallback2(CB2_LoadMap);
|
||||
DestroyTask(FindTaskIdByFunc(sub_80B6E88));
|
||||
DestroyTask(FindTaskIdByFunc(Task_EscalatorWarpFieldEffect));
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80B70B4(void)
|
||||
{
|
||||
Overworld_PlaySpecialMapMusic();
|
||||
pal_fill_for_maplights();
|
||||
WarpFadeInScreen();
|
||||
ScriptContext2_Enable();
|
||||
CreateTask(sub_80B70DC, 0);
|
||||
gFieldCallback = NULL;
|
||||
@@ -1994,17 +1993,17 @@ static bool8 dive_3_unknown(struct Task *task)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void sub_80B75D8(u8 priority)
|
||||
void StartLavaridgeGymB1FWarp(u8 priority)
|
||||
{
|
||||
CreateTask(sub_80B75F0, priority);
|
||||
CreateTask(Task_LavaridgeGymB1FWarp, priority);
|
||||
}
|
||||
|
||||
static void sub_80B75F0(u8 taskId)
|
||||
static void Task_LavaridgeGymB1FWarp(u8 taskId)
|
||||
{
|
||||
while (gUnknown_0855C438[gTasks[taskId].data[0]](&gTasks[taskId], &gEventObjects[gPlayerAvatar.eventObjectId], &gSprites[gPlayerAvatar.spriteId]));
|
||||
while (sLavaridgeGymB1FWarpEffectFuncs[gTasks[taskId].data[0]](&gTasks[taskId], &gEventObjects[gPlayerAvatar.eventObjectId], &gSprites[gPlayerAvatar.spriteId]));
|
||||
}
|
||||
|
||||
static bool8 sub_80B764C(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
|
||||
static bool8 LavaridgeGymB1FWarpEffect_1(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
|
||||
{
|
||||
FreezeEventObjects();
|
||||
CameraObjectReset2();
|
||||
@@ -2016,7 +2015,7 @@ static bool8 sub_80B764C(struct Task *task, struct EventObject *eventObject, str
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static bool8 sub_80B7684(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
|
||||
static bool8 LavaridgeGymB1FWarpEffect_2(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
|
||||
{
|
||||
SetCameraPanning(0, task->data[1]);
|
||||
task->data[1] = -task->data[1];
|
||||
@@ -2029,7 +2028,7 @@ static bool8 sub_80B7684(struct Task *task, struct EventObject *eventObject, str
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static bool8 sub_80B76B8(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
|
||||
static bool8 LavaridgeGymB1FWarpEffect_3(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos2.y = 0;
|
||||
task->data[3] = 1;
|
||||
@@ -2043,7 +2042,7 @@ static bool8 sub_80B76B8(struct Task *task, struct EventObject *eventObject, str
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static bool8 sub_80B7704(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
|
||||
static bool8 LavaridgeGymB1FWarpEffect_4(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
|
||||
{
|
||||
s16 centerToCornerVecY;
|
||||
SetCameraPanning(0, task->data[1]);
|
||||
@@ -2086,41 +2085,41 @@ static bool8 sub_80B7704(struct Task *task, struct EventObject *eventObject, str
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static bool8 sub_80B77F8(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
|
||||
static bool8 LavaridgeGymB1FWarpEffect_5(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
|
||||
{
|
||||
TryFadeOutOldMapMusic();
|
||||
WarpFadeScreen();
|
||||
WarpFadeOutScreen();
|
||||
task->data[0]++;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static bool8 sub_80B7814(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
|
||||
static bool8 LavaridgeGymB1FWarpEffect_6(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
|
||||
{
|
||||
if (!gPaletteFade.active && BGMusicStopped() == TRUE)
|
||||
{
|
||||
WarpIntoMap();
|
||||
gFieldCallback = mapldr_080851BC;
|
||||
gFieldCallback = FieldCB_LavaridgeGymB1FWarpExit;
|
||||
SetMainCallback2(CB2_LoadMap);
|
||||
DestroyTask(FindTaskIdByFunc(sub_80B75F0));
|
||||
DestroyTask(FindTaskIdByFunc(Task_LavaridgeGymB1FWarp));
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void mapldr_080851BC(void)
|
||||
static void FieldCB_LavaridgeGymB1FWarpExit(void)
|
||||
{
|
||||
Overworld_PlaySpecialMapMusic();
|
||||
pal_fill_for_maplights();
|
||||
WarpFadeInScreen();
|
||||
ScriptContext2_Enable();
|
||||
gFieldCallback = NULL;
|
||||
CreateTask(sub_80B7890, 0);
|
||||
CreateTask(Task_LavaridgeGymB1FWarpExit, 0);
|
||||
}
|
||||
|
||||
static void sub_80B7890(u8 taskId)
|
||||
static void Task_LavaridgeGymB1FWarpExit(u8 taskId)
|
||||
{
|
||||
while (gUnknown_0855C450[gTasks[taskId].data[0]](&gTasks[taskId], &gEventObjects[gPlayerAvatar.eventObjectId], &gSprites[gPlayerAvatar.spriteId]));
|
||||
while (sLavaridgeGymB1FWarpExitEffectFuncs[gTasks[taskId].data[0]](&gTasks[taskId], &gEventObjects[gPlayerAvatar.eventObjectId], &gSprites[gPlayerAvatar.spriteId]));
|
||||
}
|
||||
|
||||
static bool8 sub_80B78EC(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
|
||||
static bool8 LavaridgeGymB1FWarpExitEffect_1(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
|
||||
{
|
||||
CameraObjectReset2();
|
||||
FreezeEventObjects();
|
||||
@@ -2130,7 +2129,7 @@ static bool8 sub_80B78EC(struct Task *task, struct EventObject *eventObject, str
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static bool8 sub_80B791C(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
|
||||
static bool8 LavaridgeGymB1FWarpExitEffect_2(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
|
||||
{
|
||||
if (IsWeatherNotFadingIn())
|
||||
{
|
||||
@@ -2144,7 +2143,7 @@ static bool8 sub_80B791C(struct Task *task, struct EventObject *eventObject, str
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static bool8 sub_80B7968(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
|
||||
static bool8 LavaridgeGymB1FWarpExitEffect_3(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
|
||||
{
|
||||
sprite = &gSprites[task->data[1]];
|
||||
if (sprite->animCmdIndex > 1)
|
||||
@@ -2158,18 +2157,19 @@ static bool8 sub_80B7968(struct Task *task, struct EventObject *eventObject, str
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static bool8 sub_80B79BC(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
|
||||
static bool8 LavaridgeGymB1FWarpExitEffect_4(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
|
||||
{
|
||||
if (EventObjectClearHeldMovementIfFinished(eventObject))
|
||||
{
|
||||
gPlayerAvatar.preventStep = FALSE;
|
||||
ScriptContext2_Disable();
|
||||
UnfreezeEventObjects();
|
||||
DestroyTask(FindTaskIdByFunc(sub_80B7890));
|
||||
DestroyTask(FindTaskIdByFunc(Task_LavaridgeGymB1FWarpExit));
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
// For the ash puff effect when warping off the B1F ash tiles
|
||||
u8 FldEff_LavaridgeGymWarp(void)
|
||||
{
|
||||
u8 spriteId;
|
||||
@@ -2180,7 +2180,7 @@ u8 FldEff_LavaridgeGymWarp(void)
|
||||
return spriteId;
|
||||
}
|
||||
|
||||
void sub_80B7A58(struct Sprite *sprite)
|
||||
void SpriteCB_LavaridgeGymWarp(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->animEnded)
|
||||
{
|
||||
@@ -2188,17 +2188,17 @@ void sub_80B7A58(struct Sprite *sprite)
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80B7A74(u8 priority)
|
||||
void StartLavaridgeGym1FWarp(u8 priority)
|
||||
{
|
||||
CreateTask(sub_80B7A8C, priority);
|
||||
CreateTask(Task_LavaridgeGym1FWarp, priority);
|
||||
}
|
||||
|
||||
static void sub_80B7A8C(u8 taskId)
|
||||
static void Task_LavaridgeGym1FWarp(u8 taskId)
|
||||
{
|
||||
while(gUnknown_0855C460[gTasks[taskId].data[0]](&gTasks[taskId], &gEventObjects[gPlayerAvatar.eventObjectId], &gSprites[gPlayerAvatar.spriteId]));
|
||||
while(sLavaridgeGym1FWarpEffectFuncs[gTasks[taskId].data[0]](&gTasks[taskId], &gEventObjects[gPlayerAvatar.eventObjectId], &gSprites[gPlayerAvatar.spriteId]));
|
||||
}
|
||||
|
||||
static bool8 sub_80B7AE8(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
|
||||
static bool8 LavaridgeGym1FWarpEffect_1(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
|
||||
{
|
||||
FreezeEventObjects();
|
||||
CameraObjectReset2();
|
||||
@@ -2208,7 +2208,7 @@ static bool8 sub_80B7AE8(struct Task *task, struct EventObject *eventObject, str
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static bool8 sub_80B7B18(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
|
||||
static bool8 LavaridgeGym1FWarpEffect_2(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
|
||||
{
|
||||
if (EventObjectClearHeldMovementIfFinished(eventObject))
|
||||
{
|
||||
@@ -2230,7 +2230,7 @@ static bool8 sub_80B7B18(struct Task *task, struct EventObject *eventObject, str
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static bool8 sub_80B7B94(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
|
||||
static bool8 LavaridgeGym1FWarpEffect_3(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
|
||||
{
|
||||
if (gSprites[task->data[1]].animCmdIndex == 2)
|
||||
{
|
||||
@@ -2240,25 +2240,25 @@ static bool8 sub_80B7B94(struct Task *task, struct EventObject *eventObject, str
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static bool8 sub_80B7BCC(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
|
||||
static bool8 LavaridgeGym1FWarpEffect_4(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
|
||||
{
|
||||
if (!FieldEffectActiveListContains(FLDEFF_POP_OUT_OF_ASH))
|
||||
{
|
||||
TryFadeOutOldMapMusic();
|
||||
WarpFadeScreen();
|
||||
WarpFadeOutScreen();
|
||||
task->data[0]++;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static bool8 sub_80B7BF4(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
|
||||
static bool8 LavaridgeGym1FWarpEffect_5(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
|
||||
{
|
||||
if (!gPaletteFade.active && BGMusicStopped() == TRUE)
|
||||
{
|
||||
WarpIntoMap();
|
||||
gFieldCallback = sub_80B6B68;
|
||||
gFieldCallback = FieldCB_FallWarpExit;
|
||||
SetMainCallback2(CB2_LoadMap);
|
||||
DestroyTask(FindTaskIdByFunc(sub_80B7A8C));
|
||||
DestroyTask(FindTaskIdByFunc(Task_LavaridgeGym1FWarp));
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
@@ -2273,7 +2273,7 @@ u8 FldEff_PopOutOfAsh(void)
|
||||
return spriteId;
|
||||
}
|
||||
|
||||
void sub_80B7CAC(struct Sprite *sprite)
|
||||
void SpriteCB_PopOutOfAsh(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->animEnded)
|
||||
{
|
||||
@@ -2307,7 +2307,7 @@ static void EscapeRopeFieldEffect_Step1(struct Task *task)
|
||||
if (task->data[14] != 0 && (--task->data[14]) == 0)
|
||||
{
|
||||
TryFadeOutOldMapMusic();
|
||||
WarpFadeScreen();
|
||||
WarpFadeOutScreen();
|
||||
}
|
||||
eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
|
||||
if (!EventObjectIsMovementOverridden(eventObject) || EventObjectClearHeldMovementIfFinished(eventObject))
|
||||
@@ -2340,7 +2340,7 @@ void (*const gUnknown_0855C484[])(struct Task *) = {
|
||||
static void mapldr_080859D4(void)
|
||||
{
|
||||
Overworld_PlaySpecialMapMusic();
|
||||
pal_fill_for_maplights();
|
||||
WarpFadeInScreen();
|
||||
ScriptContext2_Enable();
|
||||
FreezeEventObjects();
|
||||
gFieldCallback = NULL;
|
||||
@@ -2460,7 +2460,7 @@ static void TeleportFieldEffectTask3(struct Task *task)
|
||||
{
|
||||
task->data[0]++;
|
||||
TryFadeOutOldMapMusic();
|
||||
WarpFadeScreen();
|
||||
WarpFadeOutScreen();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2488,7 +2488,7 @@ static void TeleportFieldEffectTask4(struct Task *task)
|
||||
static void mapldr_08085D88(void)
|
||||
{
|
||||
Overworld_PlaySpecialMapMusic();
|
||||
pal_fill_for_maplights();
|
||||
WarpFadeInScreen();
|
||||
ScriptContext2_Enable();
|
||||
FreezeEventObjects();
|
||||
gFieldCallback = NULL;
|
||||
@@ -3268,7 +3268,7 @@ static void sub_80B9474(struct Task *task)
|
||||
{
|
||||
if (sub_80B9508(task->data[1]))
|
||||
{
|
||||
WarpFadeScreen();
|
||||
WarpFadeOutScreen();
|
||||
task->data[0]++;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1396,11 +1396,11 @@ void InitPlayerAvatar(s16 x, s16 y, u8 direction, u8 gender)
|
||||
SetPlayerAvatarStateMask(PLAYER_AVATAR_FLAG_5 | PLAYER_AVATAR_FLAG_ON_FOOT);
|
||||
}
|
||||
|
||||
void sub_808C0A8(u8 a)
|
||||
void SetPlayerInvisibility(bool8 invisible)
|
||||
{
|
||||
gEventObjects[gPlayerAvatar.eventObjectId].invisible = a;
|
||||
gEventObjects[gPlayerAvatar.eventObjectId].invisible = invisible;
|
||||
if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING))
|
||||
gSprites[gEventObjects[gPlayerAvatar.eventObjectId].fieldEffectSpriteId].invisible = a;
|
||||
gSprites[gEventObjects[gPlayerAvatar.eventObjectId].fieldEffectSpriteId].invisible = invisible;
|
||||
}
|
||||
|
||||
void sub_808C114(void)
|
||||
|
||||
+129
-128
@@ -28,6 +28,7 @@
|
||||
#include "task.h"
|
||||
#include "text.h"
|
||||
#include "constants/event_object_movement_constants.h"
|
||||
#include "constants/event_objects.h"
|
||||
#include "constants/songs.h"
|
||||
#include "constants/rgb.h"
|
||||
#include "trainer_hill.h"
|
||||
@@ -38,21 +39,21 @@ extern const u16 gOrbEffectBackgroundLayerFlags[];
|
||||
|
||||
// This file's functions.
|
||||
static void sub_8080B9C(u8);
|
||||
static void task_map_chg_seq_0807E20C(u8);
|
||||
static void task_map_chg_seq_0807E2CC(u8);
|
||||
static void Task_ExitNonAnimDoor(u8);
|
||||
static void Task_ExitNonDoor(u8);
|
||||
static void task0A_fade_n_map_maybe(u8);
|
||||
static void sub_808115C(u8);
|
||||
static void palette_bg_faded_fill_white(void);
|
||||
static void sub_80AF438(u8);
|
||||
static void FillPalBufferWhite(void);
|
||||
static void Task_ExitDoor(u8);
|
||||
static bool32 WaitForWeatherFadeIn(void);
|
||||
static void task0A_mpl_807E31C(u8 taskId);
|
||||
static void sub_80AFA0C(u8 taskId);
|
||||
static void sub_80AFA88(u8 taskId);
|
||||
static void Task_WarpAndLoadMap(u8 taskId);
|
||||
static void Task_DoDoorWarp(u8 taskId);
|
||||
static void Task_EnableScriptAfterMusicFade(u8 taskId);
|
||||
|
||||
// const
|
||||
const u16 sFlashLevelPixelRadii[] = { 200, 72, 64, 56, 48, 40, 32, 24, 0 };
|
||||
const s32 gMaxFlashLevel = 8;
|
||||
static const u16 sFlashLevelPixelRadii[] = { 200, 72, 64, 56, 48, 40, 32, 24, 0 };
|
||||
const s32 gMaxFlashLevel = ARRAY_COUNT(sFlashLevelPixelRadii) - 1;
|
||||
|
||||
const struct ScanlineEffectParams sFlashEffectParams =
|
||||
{
|
||||
@@ -62,44 +63,44 @@ const struct ScanlineEffectParams sFlashEffectParams =
|
||||
};
|
||||
|
||||
// code
|
||||
static void palette_bg_faded_fill_white(void)
|
||||
static void FillPalBufferWhite(void)
|
||||
{
|
||||
CpuFastFill16(RGB_WHITE, gPlttBufferFaded, PLTT_SIZE);
|
||||
}
|
||||
|
||||
static void palette_bg_faded_fill_black(void)
|
||||
static void FillPalBufferBlack(void)
|
||||
{
|
||||
CpuFastFill16(RGB_BLACK, gPlttBufferFaded, PLTT_SIZE);
|
||||
}
|
||||
|
||||
void pal_fill_for_maplights(void)
|
||||
void WarpFadeInScreen(void)
|
||||
{
|
||||
u8 previousMapType = GetLastUsedWarpMapType();
|
||||
switch (GetMapPairFadeFromType(previousMapType, GetCurrentMapType()))
|
||||
{
|
||||
case 0:
|
||||
palette_bg_faded_fill_black();
|
||||
FillPalBufferBlack();
|
||||
FadeScreen(FADE_FROM_BLACK, 0);
|
||||
break;
|
||||
case 1:
|
||||
palette_bg_faded_fill_white();
|
||||
FillPalBufferWhite();
|
||||
FadeScreen(FADE_FROM_WHITE, 0);
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80AF08C(void)
|
||||
void FadeInFromWhite(void)
|
||||
{
|
||||
palette_bg_faded_fill_white();
|
||||
FillPalBufferWhite();
|
||||
FadeScreen(FADE_FROM_WHITE, 8);
|
||||
}
|
||||
|
||||
void pal_fill_black(void)
|
||||
void FadeInFromBlack(void)
|
||||
{
|
||||
palette_bg_faded_fill_black();
|
||||
FillPalBufferBlack();
|
||||
FadeScreen(FADE_FROM_BLACK, 0);
|
||||
}
|
||||
|
||||
void WarpFadeScreen(void)
|
||||
void WarpFadeOutScreen(void)
|
||||
{
|
||||
u8 currentMapType = GetCurrentMapType();
|
||||
switch (GetMapPairFadeToType(currentMapType, GetDestinationWarpMapHeader()->mapType))
|
||||
@@ -112,26 +113,26 @@ void WarpFadeScreen(void)
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80AF0F4(u8 arg)
|
||||
static void SetPlayerVisibility(bool8 visible)
|
||||
{
|
||||
sub_808C0A8(!arg);
|
||||
SetPlayerInvisibility(!visible);
|
||||
}
|
||||
|
||||
static void task0A_nop_for_a_while(u8 taskId)
|
||||
static void Task_WaitForUnionRoomFade(u8 taskId)
|
||||
{
|
||||
if (WaitForWeatherFadeIn() == TRUE)
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
|
||||
void sub_80AF128(void)
|
||||
void FieldCB_ContinueScriptUnionRoom(void)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
Overworld_PlaySpecialMapMusic();
|
||||
pal_fill_black();
|
||||
CreateTask(task0A_nop_for_a_while, 10);
|
||||
FadeInFromBlack();
|
||||
CreateTask(Task_WaitForUnionRoomFade, 10);
|
||||
}
|
||||
|
||||
static void task0A_asap_script_env_2_enable_and_set_ctx_running(u8 taskID)
|
||||
static void Task_WaitForFadeAndEnableScriptCtx(u8 taskID)
|
||||
{
|
||||
if (WaitForWeatherFadeIn() == TRUE)
|
||||
{
|
||||
@@ -140,22 +141,22 @@ static void task0A_asap_script_env_2_enable_and_set_ctx_running(u8 taskID)
|
||||
}
|
||||
}
|
||||
|
||||
void FieldCallback_ReturnToEventScript2(void)
|
||||
void FieldCB_ContinueScriptHandleMusic(void)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
Overworld_PlaySpecialMapMusic();
|
||||
pal_fill_black();
|
||||
CreateTask(task0A_asap_script_env_2_enable_and_set_ctx_running, 10);
|
||||
FadeInFromBlack();
|
||||
CreateTask(Task_WaitForFadeAndEnableScriptCtx, 10);
|
||||
}
|
||||
|
||||
void sub_80AF188(void)
|
||||
void FieldCB_ContinueScript(void)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
pal_fill_black();
|
||||
CreateTask(task0A_asap_script_env_2_enable_and_set_ctx_running, 10);
|
||||
FadeInFromBlack();
|
||||
CreateTask(Task_WaitForFadeAndEnableScriptCtx, 10);
|
||||
}
|
||||
|
||||
static void task_mpl_807DD60(u8 taskId)
|
||||
static void Task_ReturnToFieldCableLink(u8 taskId)
|
||||
{
|
||||
struct Task *task = &gTasks[taskId];
|
||||
|
||||
@@ -168,7 +169,7 @@ static void task_mpl_807DD60(u8 taskId)
|
||||
case 1:
|
||||
if (gTasks[task->data[1]].isActive != TRUE)
|
||||
{
|
||||
pal_fill_for_maplights();
|
||||
WarpFadeInScreen();
|
||||
task->data[0]++;
|
||||
}
|
||||
break;
|
||||
@@ -182,15 +183,15 @@ static void task_mpl_807DD60(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80AF214(void)
|
||||
void FieldCB_ReturnToFieldCableLink(void)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
Overworld_PlaySpecialMapMusic();
|
||||
palette_bg_faded_fill_black();
|
||||
CreateTask(task_mpl_807DD60, 10);
|
||||
FillPalBufferBlack();
|
||||
CreateTask(Task_ReturnToFieldCableLink, 10);
|
||||
}
|
||||
|
||||
static void sub_80AF234(u8 taskId)
|
||||
static void Task_ReturnToFieldWirelessLink(u8 taskId)
|
||||
{
|
||||
struct Task *task = &gTasks[taskId];
|
||||
|
||||
@@ -208,7 +209,7 @@ static void sub_80AF234(u8 taskId)
|
||||
}
|
||||
else
|
||||
{
|
||||
pal_fill_for_maplights();
|
||||
WarpFadeInScreen();
|
||||
task->data[0]++;
|
||||
}
|
||||
break;
|
||||
@@ -223,7 +224,7 @@ static void sub_80AF234(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80AF2B4(u8 taskId)
|
||||
void Task_ReturnToFieldRecordMixing(u8 taskId)
|
||||
{
|
||||
struct Task *task = &gTasks[taskId];
|
||||
|
||||
@@ -248,15 +249,15 @@ void sub_80AF2B4(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80AF314(void)
|
||||
void FieldCB_ReturnToFieldWirelessLink(void)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
Overworld_PlaySpecialMapMusic();
|
||||
palette_bg_faded_fill_black();
|
||||
CreateTask(sub_80AF234, 10);
|
||||
FillPalBufferBlack();
|
||||
CreateTask(Task_ReturnToFieldWirelessLink, 10);
|
||||
}
|
||||
|
||||
static void sub_80AF334(void)
|
||||
static void SetUpWarpExitTask(void)
|
||||
{
|
||||
s16 x, y;
|
||||
u8 behavior;
|
||||
@@ -265,59 +266,59 @@ static void sub_80AF334(void)
|
||||
PlayerGetDestCoords(&x, &y);
|
||||
behavior = MapGridGetMetatileBehaviorAt(x, y);
|
||||
if (MetatileBehavior_IsDoor(behavior) == TRUE)
|
||||
func = sub_80AF438;
|
||||
func = Task_ExitDoor;
|
||||
else if (MetatileBehavior_IsNonAnimDoor(behavior) == TRUE)
|
||||
func = task_map_chg_seq_0807E20C;
|
||||
func = Task_ExitNonAnimDoor;
|
||||
else
|
||||
func = task_map_chg_seq_0807E2CC;
|
||||
func = Task_ExitNonDoor;
|
||||
CreateTask(func, 10);
|
||||
}
|
||||
|
||||
void mapldr_default(void)
|
||||
void FieldCB_DefaultWarpExit(void)
|
||||
{
|
||||
Overworld_PlaySpecialMapMusic();
|
||||
pal_fill_for_maplights();
|
||||
sub_80AF334();
|
||||
WarpFadeInScreen();
|
||||
SetUpWarpExitTask();
|
||||
ScriptContext2_Enable();
|
||||
}
|
||||
|
||||
void sub_80AF3B0(void)
|
||||
void FieldCB_WarpExitFadeFromWhite(void)
|
||||
{
|
||||
Overworld_PlaySpecialMapMusic();
|
||||
sub_80AF08C();
|
||||
sub_80AF334();
|
||||
FadeInFromWhite();
|
||||
SetUpWarpExitTask();
|
||||
ScriptContext2_Enable();
|
||||
}
|
||||
|
||||
void sub_80AF3C8(void)
|
||||
void FieldCB_WarpExitFadeFromBlack(void)
|
||||
{
|
||||
if (!sub_81D6534())
|
||||
if (!sub_81D6534()) // sub_81D6534 always returns false
|
||||
Overworld_PlaySpecialMapMusic();
|
||||
pal_fill_black();
|
||||
sub_80AF334();
|
||||
FadeInFromBlack();
|
||||
SetUpWarpExitTask();
|
||||
ScriptContext2_Enable();
|
||||
}
|
||||
|
||||
void sub_80AF3E8(void)
|
||||
static void FieldCB_TeleportWarpExit(void)
|
||||
{
|
||||
Overworld_PlaySpecialMapMusic();
|
||||
pal_fill_for_maplights();
|
||||
WarpFadeInScreen();
|
||||
PlaySE(SE_TK_WARPOUT);
|
||||
CreateTask(task0A_mpl_807E31C, 10);
|
||||
ScriptContext2_Enable();
|
||||
}
|
||||
|
||||
void sub_80AF40C(void)
|
||||
static void FieldCB_MossdeepGymWarpExit(void)
|
||||
{
|
||||
Overworld_PlaySpecialMapMusic();
|
||||
pal_fill_for_maplights();
|
||||
WarpFadeInScreen();
|
||||
PlaySE(SE_TK_WARPOUT);
|
||||
CreateTask(task_map_chg_seq_0807E2CC, 10);
|
||||
CreateTask(Task_ExitNonDoor, 10);
|
||||
ScriptContext2_Enable();
|
||||
sub_8085540(0xE);
|
||||
}
|
||||
|
||||
static void sub_80AF438(u8 taskId)
|
||||
static void Task_ExitDoor(u8 taskId)
|
||||
{
|
||||
struct Task *task = &gTasks[taskId];
|
||||
s16 *x = &task->data[2];
|
||||
@@ -326,7 +327,7 @@ static void sub_80AF438(u8 taskId)
|
||||
switch (task->data[0])
|
||||
{
|
||||
case 0:
|
||||
sub_80AF0F4(0);
|
||||
SetPlayerVisibility(FALSE);
|
||||
FreezeEventObjects();
|
||||
PlayerGetDestCoords(x, y);
|
||||
FieldSetDoorOpened(*x, *y);
|
||||
@@ -336,18 +337,18 @@ static void sub_80AF438(u8 taskId)
|
||||
if (WaitForWeatherFadeIn())
|
||||
{
|
||||
u8 eventObjId;
|
||||
sub_80AF0F4(1);
|
||||
eventObjId = GetEventObjectIdByLocalIdAndMap(0xFF, 0, 0);
|
||||
SetPlayerVisibility(TRUE);
|
||||
eventObjId = GetEventObjectIdByLocalIdAndMap(EVENT_OBJ_ID_PLAYER, 0, 0);
|
||||
EventObjectSetHeldMovement(&gEventObjects[eventObjId], MOVEMENT_ACTION_WALK_NORMAL_DOWN);
|
||||
task->data[0] = 2;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (walkrun_is_standing_still())
|
||||
if (IsPlayerStandingStill())
|
||||
{
|
||||
u8 eventObjId;
|
||||
task->data[1] = FieldAnimateDoorClose(*x, *y);
|
||||
eventObjId = GetEventObjectIdByLocalIdAndMap(0xFF, 0, 0);
|
||||
eventObjId = GetEventObjectIdByLocalIdAndMap(EVENT_OBJ_ID_PLAYER, 0, 0);
|
||||
EventObjectClearHeldMovementIfFinished(&gEventObjects[eventObjId]);
|
||||
task->data[0] = 3;
|
||||
}
|
||||
@@ -366,7 +367,7 @@ static void sub_80AF438(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
static void task_map_chg_seq_0807E20C(u8 taskId)
|
||||
static void Task_ExitNonAnimDoor(u8 taskId)
|
||||
{
|
||||
struct Task *task = &gTasks[taskId];
|
||||
s16 *x = &task->data[2];
|
||||
@@ -375,7 +376,7 @@ static void task_map_chg_seq_0807E20C(u8 taskId)
|
||||
switch (task->data[0])
|
||||
{
|
||||
case 0:
|
||||
sub_80AF0F4(0);
|
||||
SetPlayerVisibility(FALSE);
|
||||
FreezeEventObjects();
|
||||
PlayerGetDestCoords(x, y);
|
||||
task->data[0] = 1;
|
||||
@@ -384,14 +385,14 @@ static void task_map_chg_seq_0807E20C(u8 taskId)
|
||||
if (WaitForWeatherFadeIn())
|
||||
{
|
||||
u8 eventObjId;
|
||||
sub_80AF0F4(1);
|
||||
eventObjId = GetEventObjectIdByLocalIdAndMap(0xFF, 0, 0);
|
||||
SetPlayerVisibility(TRUE);
|
||||
eventObjId = GetEventObjectIdByLocalIdAndMap(EVENT_OBJ_ID_PLAYER, 0, 0);
|
||||
EventObjectSetHeldMovement(&gEventObjects[eventObjId], GetWalkNormalMovementAction(GetPlayerFacingDirection()));
|
||||
task->data[0] = 2;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (walkrun_is_standing_still())
|
||||
if (IsPlayerStandingStill())
|
||||
{
|
||||
UnfreezeEventObjects();
|
||||
task->data[0] = 3;
|
||||
@@ -404,7 +405,7 @@ static void task_map_chg_seq_0807E20C(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
static void task_map_chg_seq_0807E2CC(u8 taskId)
|
||||
static void Task_ExitNonDoor(u8 taskId)
|
||||
{
|
||||
switch (gTasks[taskId].data[0])
|
||||
{
|
||||
@@ -424,7 +425,7 @@ static void task_map_chg_seq_0807E2CC(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80AF660(u8 taskId)
|
||||
static void Task_WaitForFadeShowStartMenu(u8 taskId)
|
||||
{
|
||||
if (WaitForWeatherFadeIn() == TRUE)
|
||||
{
|
||||
@@ -433,16 +434,16 @@ static void sub_80AF660(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80AF688(void)
|
||||
void ReturnToFieldOpenStartMenu(void)
|
||||
{
|
||||
pal_fill_black();
|
||||
CreateTask(sub_80AF660, 0x50);
|
||||
FadeInFromBlack();
|
||||
CreateTask(Task_WaitForFadeShowStartMenu, 0x50);
|
||||
ScriptContext2_Enable();
|
||||
}
|
||||
|
||||
bool8 sub_80AF6A4(void)
|
||||
bool8 FieldCB_ReturnToFieldOpenStartMenu(void)
|
||||
{
|
||||
sub_809FA18();
|
||||
ShowReturnToFieldStartMenu();
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@@ -459,7 +460,7 @@ static void task_mpl_807E3C8(u8 taskId)
|
||||
void sub_80AF6D4(void)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
pal_fill_black();
|
||||
FadeInFromBlack();
|
||||
CreateTask(task_mpl_807E3C8, 10);
|
||||
}
|
||||
|
||||
@@ -467,7 +468,7 @@ void sub_80AF6F0(void)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
Overworld_PlaySpecialMapMusic();
|
||||
pal_fill_black();
|
||||
FadeInFromBlack();
|
||||
CreateTask(task_mpl_807E3C8, 10);
|
||||
}
|
||||
|
||||
@@ -488,72 +489,72 @@ void DoWarp(void)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
TryFadeOutOldMapMusic();
|
||||
WarpFadeScreen();
|
||||
WarpFadeOutScreen();
|
||||
PlayRainStoppingSoundEffect();
|
||||
PlaySE(SE_KAIDAN);
|
||||
gFieldCallback = mapldr_default;
|
||||
CreateTask(sub_80AFA0C, 10);
|
||||
gFieldCallback = FieldCB_DefaultWarpExit;
|
||||
CreateTask(Task_WarpAndLoadMap, 10);
|
||||
}
|
||||
|
||||
void DoDiveWarp(void)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
TryFadeOutOldMapMusic();
|
||||
WarpFadeScreen();
|
||||
WarpFadeOutScreen();
|
||||
PlayRainStoppingSoundEffect();
|
||||
gFieldCallback = mapldr_default;
|
||||
CreateTask(sub_80AFA0C, 10);
|
||||
gFieldCallback = FieldCB_DefaultWarpExit;
|
||||
CreateTask(Task_WarpAndLoadMap, 10);
|
||||
}
|
||||
|
||||
void sub_80AF79C(void)
|
||||
void DoSootopolisLegendWarp(void)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
TryFadeOutOldMapMusic();
|
||||
FadeScreen(FADE_TO_WHITE, 8);
|
||||
PlayRainStoppingSoundEffect();
|
||||
gFieldCallback = sub_80AF3B0;
|
||||
CreateTask(sub_80AFA0C, 10);
|
||||
gFieldCallback = FieldCB_WarpExitFadeFromWhite;
|
||||
CreateTask(Task_WarpAndLoadMap, 10);
|
||||
}
|
||||
|
||||
void DoDoorWarp(void)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
gFieldCallback = mapldr_default;
|
||||
CreateTask(sub_80AFA88, 10);
|
||||
gFieldCallback = FieldCB_DefaultWarpExit;
|
||||
CreateTask(Task_DoDoorWarp, 10);
|
||||
}
|
||||
|
||||
void DoFallWarp(void)
|
||||
{
|
||||
DoDiveWarp();
|
||||
gFieldCallback = sub_80B6B68;
|
||||
gFieldCallback = FieldCB_FallWarpExit;
|
||||
}
|
||||
|
||||
void sub_80AF80C(u8 metatileBehavior)
|
||||
void DoEscalatorWarp(u8 metatileBehavior)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
sub_80B6E4C(metatileBehavior, 10);
|
||||
StartEscalatorWarp(metatileBehavior, 10);
|
||||
}
|
||||
|
||||
void sub_80AF828(void)
|
||||
void DoLavaridgeGymB1FWarp(void)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
sub_80B75D8(10);
|
||||
StartLavaridgeGymB1FWarp(10);
|
||||
}
|
||||
|
||||
void sub_80AF838(void)
|
||||
void DoLavaridgeGym1FWarp(void)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
sub_80B7A74(10);
|
||||
StartLavaridgeGym1FWarp(10);
|
||||
}
|
||||
|
||||
void sub_80AF848(void)
|
||||
void DoTeleportWarp(void)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
TryFadeOutOldMapMusic();
|
||||
WarpFadeScreen();
|
||||
WarpFadeOutScreen();
|
||||
PlaySE(SE_TK_WARPIN);
|
||||
CreateTask(sub_80AFA0C, 10);
|
||||
gFieldCallback = sub_80AF3E8;
|
||||
CreateTask(Task_WarpAndLoadMap, 10);
|
||||
gFieldCallback = FieldCB_TeleportWarpExit;
|
||||
}
|
||||
|
||||
void DoMossdeepGymWarp(void)
|
||||
@@ -562,18 +563,18 @@ void DoMossdeepGymWarp(void)
|
||||
ScriptContext2_Enable();
|
||||
SaveEventObjects();
|
||||
TryFadeOutOldMapMusic();
|
||||
WarpFadeScreen();
|
||||
WarpFadeOutScreen();
|
||||
PlaySE(SE_TK_WARPIN);
|
||||
CreateTask(sub_80AFA0C, 10);
|
||||
gFieldCallback = sub_80AF40C;
|
||||
CreateTask(Task_WarpAndLoadMap, 10);
|
||||
gFieldCallback = FieldCB_MossdeepGymWarpExit;
|
||||
}
|
||||
|
||||
void sub_80AF8B8(void)
|
||||
void DoPortholeWarp(void)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
WarpFadeScreen();
|
||||
CreateTask(sub_80AFA0C, 10);
|
||||
gFieldCallback = sub_80FB768;
|
||||
WarpFadeOutScreen();
|
||||
CreateTask(Task_WarpAndLoadMap, 10);
|
||||
gFieldCallback = FieldCB_ShowPortholeView;
|
||||
}
|
||||
|
||||
static void sub_80AF8E0(u8 taskId)
|
||||
@@ -592,17 +593,17 @@ static void sub_80AF8E0(u8 taskId)
|
||||
break;
|
||||
case 2:
|
||||
WarpIntoMap();
|
||||
SetMainCallback2(sub_8086074);
|
||||
SetMainCallback2(CB2_ReturnToFieldCableClub);
|
||||
DestroyTask(taskId);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80AF948(void)
|
||||
void DoCableClubWarp(void)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
TryFadeOutOldMapMusic();
|
||||
WarpFadeScreen();
|
||||
WarpFadeOutScreen();
|
||||
PlaySE(SE_KAIDAN);
|
||||
CreateTask(sub_80AF8E0, 10);
|
||||
}
|
||||
@@ -643,7 +644,7 @@ void ReturnFromLinkRoom(void)
|
||||
CreateTask(Task_ReturnToWorldFromLinkRoom, 10);
|
||||
}
|
||||
|
||||
static void sub_80AFA0C(u8 taskId)
|
||||
static void Task_WarpAndLoadMap(u8 taskId)
|
||||
{
|
||||
struct Task *task = &gTasks[taskId];
|
||||
|
||||
@@ -674,7 +675,7 @@ static void sub_80AFA0C(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80AFA88(u8 taskId)
|
||||
static void Task_DoDoorWarp(u8 taskId)
|
||||
{
|
||||
struct Task *task = &gTasks[taskId];
|
||||
s16 *x = &task->data[2];
|
||||
@@ -693,21 +694,21 @@ static void sub_80AFA88(u8 taskId)
|
||||
if (task->data[1] < 0 || gTasks[task->data[1]].isActive != TRUE)
|
||||
{
|
||||
u8 eventObjId;
|
||||
eventObjId = GetEventObjectIdByLocalIdAndMap(0xFF, 0, 0);
|
||||
eventObjId = GetEventObjectIdByLocalIdAndMap(EVENT_OBJ_ID_PLAYER, 0, 0);
|
||||
EventObjectClearHeldMovementIfActive(&gEventObjects[eventObjId]);
|
||||
eventObjId = GetEventObjectIdByLocalIdAndMap(0xFF, 0, 0);
|
||||
eventObjId = GetEventObjectIdByLocalIdAndMap(EVENT_OBJ_ID_PLAYER, 0, 0);
|
||||
EventObjectSetHeldMovement(&gEventObjects[eventObjId], MOVEMENT_ACTION_WALK_NORMAL_UP);
|
||||
task->data[0] = 2;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (walkrun_is_standing_still())
|
||||
if (IsPlayerStandingStill())
|
||||
{
|
||||
u8 eventObjId;
|
||||
task->data[1] = FieldAnimateDoorClose(*x, *y - 1);
|
||||
eventObjId = GetEventObjectIdByLocalIdAndMap(0xFF, 0, 0);
|
||||
eventObjId = GetEventObjectIdByLocalIdAndMap(EVENT_OBJ_ID_PLAYER, 0, 0);
|
||||
EventObjectClearHeldMovementIfFinished(&gEventObjects[eventObjId]);
|
||||
sub_80AF0F4(0);
|
||||
SetPlayerVisibility(FALSE);
|
||||
task->data[0] = 3;
|
||||
}
|
||||
break;
|
||||
@@ -719,10 +720,10 @@ static void sub_80AFA88(u8 taskId)
|
||||
break;
|
||||
case 4:
|
||||
TryFadeOutOldMapMusic();
|
||||
WarpFadeScreen();
|
||||
WarpFadeOutScreen();
|
||||
PlayRainStoppingSoundEffect();
|
||||
task->data[0] = 0;
|
||||
task->func = sub_80AFA0C;
|
||||
task->func = Task_WarpAndLoadMap;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -756,10 +757,10 @@ void DoContestHallWarp(void)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
TryFadeOutOldMapMusic();
|
||||
WarpFadeScreen();
|
||||
WarpFadeOutScreen();
|
||||
PlayRainStoppingSoundEffect();
|
||||
PlaySE(SE_KAIDAN);
|
||||
gFieldCallback = sub_80AF3C8;
|
||||
gFieldCallback = FieldCB_WarpExitFadeFromBlack;
|
||||
CreateTask(task0A_fade_n_map_maybe, 10);
|
||||
}
|
||||
|
||||
@@ -1033,7 +1034,7 @@ static void sub_80B01BC(u8 taskId)
|
||||
case 1:
|
||||
if (!sub_808D1E8())
|
||||
{
|
||||
WarpFadeScreen();
|
||||
WarpFadeOutScreen();
|
||||
task->data[0]++;
|
||||
}
|
||||
break;
|
||||
@@ -1052,14 +1053,14 @@ static void sub_80B01BC(u8 taskId)
|
||||
void sub_80B0244(void)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
CreateTask(sub_80AFA0C, 10);
|
||||
gFieldCallback = sub_80AF3E8;
|
||||
CreateTask(Task_WarpAndLoadMap, 10);
|
||||
gFieldCallback = FieldCB_TeleportWarpExit;
|
||||
}
|
||||
|
||||
void sub_80B0268(void)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
gFieldCallback = mapldr_default;
|
||||
gFieldCallback = FieldCB_DefaultWarpExit;
|
||||
CreateTask(sub_80B01BC, 10);
|
||||
}
|
||||
|
||||
|
||||
@@ -179,7 +179,7 @@ void Task_HandleTruckSequence(u8 taskId)
|
||||
data[1]++;
|
||||
if (data[1] == SECONDS(2.5))
|
||||
{
|
||||
pal_fill_black();
|
||||
FadeInFromBlack();
|
||||
data[1] = 0;
|
||||
data[0] = 2;
|
||||
}
|
||||
@@ -249,12 +249,12 @@ void EndTruckSequence(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
bool8 sub_80FB59C(void)
|
||||
bool8 TrySetPortholeWarpDestination(void)
|
||||
{
|
||||
s8 mapGroup, mapNum;
|
||||
s16 x, y;
|
||||
|
||||
if (GetSSTidalLocation(&mapGroup, &mapNum, &x, &y))
|
||||
if (GetSSTidalLocation(&mapGroup, &mapNum, &x, &y) != SS_TIDAL_LOCATION_CURRENTS)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
@@ -336,11 +336,11 @@ static void ShowSSTidalWhileSailing(void)
|
||||
StartSpriteAnim(&gSprites[spriteId], GetFaceDirectionAnimNum(DIR_WEST));
|
||||
}
|
||||
|
||||
void sub_80FB768(void)
|
||||
void FieldCB_ShowPortholeView(void)
|
||||
{
|
||||
ShowSSTidalWhileSailing();
|
||||
gEventObjects[gPlayerAvatar.eventObjectId].invisible = TRUE;
|
||||
pal_fill_black();
|
||||
FadeInFromBlack();
|
||||
CreateTask(Task_HandlePorthole, 80);
|
||||
ScriptContext2_Enable();
|
||||
}
|
||||
@@ -351,6 +351,6 @@ void LookThroughPorthole(void)
|
||||
FlagSet(FLAG_DONT_TRANSITION_MUSIC);
|
||||
FlagSet(FLAG_HIDE_MAP_NAME_POPUP);
|
||||
SetDynamicWarp(0, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1);
|
||||
sub_80FB59C();
|
||||
sub_80AF8B8();
|
||||
TrySetPortholeWarpDestination();
|
||||
DoPortholeWarp();
|
||||
}
|
||||
|
||||
+24
-20
@@ -46,6 +46,7 @@
|
||||
#include "wallclock.h"
|
||||
#include "window.h"
|
||||
#include "constants/battle_frontier.h"
|
||||
#include "constants/battle_tower.h"
|
||||
#include "constants/decorations.h"
|
||||
#include "constants/event_objects.h"
|
||||
#include "constants/event_object_movement_constants.h"
|
||||
@@ -83,7 +84,7 @@ static EWRAM_DATA u8 sScrollableMultichoice_ItemSpriteId = 0;
|
||||
static EWRAM_DATA u8 sBattlePointsWindowId = 0;
|
||||
static EWRAM_DATA u8 sFrontierExchangeCorner_ItemIconWindowId = 0;
|
||||
static EWRAM_DATA u8 sPCBoxToSendMon = 0;
|
||||
static EWRAM_DATA u32 sUnknown_0203AB70 = 0;
|
||||
static EWRAM_DATA u32 sBattleTowerMultiBattleTypeFlags = 0;
|
||||
|
||||
struct ListMenuTemplate gScrollableMultichoice_ListMenuTemplate;
|
||||
|
||||
@@ -128,7 +129,7 @@ static void ShowFrontierExchangeCornerItemIcon(u16 item);
|
||||
static void Task_DeoxysRockInteraction(u8 taskId);
|
||||
static void ChangeDeoxysRockLevel(u8 a0);
|
||||
static void WaitForDeoxysRockMovement(u8 taskId);
|
||||
static void sub_813B57C(u8 taskId);
|
||||
static void Task_LinkRetireStatusWithBattleTowerPartner(u8 taskId);
|
||||
static void Task_LoopWingFlapSE(u8 taskId);
|
||||
static void Task_CloseBattlePikeCurtain(u8 taskId);
|
||||
static u8 DidPlayerGetFirstFans(void);
|
||||
@@ -366,7 +367,7 @@ u8 GetSSTidalLocation(s8 *mapGroup, s8 *mapNum, s16 *x, s16 *y)
|
||||
}
|
||||
*mapGroup = MAP_GROUP(ROUTE132);
|
||||
*y = 20;
|
||||
return SS_TIDAL_LOCATION_OTHER;
|
||||
return SS_TIDAL_LOCATION_CURRENTS;
|
||||
}
|
||||
|
||||
bool32 ShouldDoWallyCall(void)
|
||||
@@ -1701,10 +1702,10 @@ bool8 IsBadEggInParty(void)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 InMultiBattleRoom(void)
|
||||
bool8 InMultiPartnerRoom(void)
|
||||
{
|
||||
if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(BATTLE_FRONTIER_BATTLE_TOWER_MULTI_BATTLE_ROOM)
|
||||
&& gSaveBlock1Ptr->location.mapNum == MAP_NUM(BATTLE_FRONTIER_BATTLE_TOWER_MULTI_BATTLE_ROOM) &&
|
||||
if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(BATTLE_FRONTIER_BATTLE_TOWER_MULTI_PARTNER_ROOM)
|
||||
&& gSaveBlock1Ptr->location.mapNum == MAP_NUM(BATTLE_FRONTIER_BATTLE_TOWER_MULTI_PARTNER_ROOM) &&
|
||||
VarGet(VAR_FRONTIER_BATTLE_MODE) == FRONTIER_MODE_MULTIS)
|
||||
return TRUE;
|
||||
return FALSE;
|
||||
@@ -3746,7 +3747,7 @@ bool32 ShouldDistributeEonTicket(void)
|
||||
|
||||
void sub_813B534(void)
|
||||
{
|
||||
sUnknown_0203AB70 = gBattleTypeFlags;
|
||||
sBattleTowerMultiBattleTypeFlags = gBattleTypeFlags;
|
||||
gBattleTypeFlags = 0;
|
||||
if (!gReceivedRemoteLinkPlayers)
|
||||
{
|
||||
@@ -3754,12 +3755,12 @@ void sub_813B534(void)
|
||||
}
|
||||
}
|
||||
|
||||
void sub_813B568(void)
|
||||
void LinkRetireStatusWithBattleTowerPartner(void)
|
||||
{
|
||||
CreateTask(sub_813B57C, 5);
|
||||
CreateTask(Task_LinkRetireStatusWithBattleTowerPartner, 5);
|
||||
}
|
||||
|
||||
static void sub_813B57C(u8 taskId)
|
||||
static void Task_LinkRetireStatusWithBattleTowerPartner(u8 taskId)
|
||||
{
|
||||
switch (gTasks[taskId].data[0])
|
||||
{
|
||||
@@ -3790,21 +3791,24 @@ static void sub_813B57C(u8 taskId)
|
||||
{
|
||||
gSpecialVar_0x8005 = gBlockRecvBuffer[1][0];
|
||||
ResetBlockReceivedFlag(1);
|
||||
if (gSpecialVar_0x8004 == 1 && gSpecialVar_0x8005 == 1)
|
||||
if (gSpecialVar_0x8004 == BATTLE_TOWER_LINK_RETIRE
|
||||
&& gSpecialVar_0x8005 == BATTLE_TOWER_LINK_RETIRE)
|
||||
{
|
||||
gSpecialVar_Result = 1;
|
||||
gSpecialVar_Result = BATTLE_TOWER_LINKSTAT_BOTH_RETIRE;
|
||||
}
|
||||
else if (gSpecialVar_0x8004 == 0 && gSpecialVar_0x8005 == 1)
|
||||
else if (gSpecialVar_0x8004 == BATTLE_TOWER_LINK_CONTINUE
|
||||
&& gSpecialVar_0x8005 == BATTLE_TOWER_LINK_RETIRE)
|
||||
{
|
||||
gSpecialVar_Result = 2;
|
||||
gSpecialVar_Result = BATTLE_TOWER_LINKSTAT_PARTNER_RETIRE;
|
||||
}
|
||||
else if (gSpecialVar_0x8004 == 1 && gSpecialVar_0x8005 == 0)
|
||||
else if (gSpecialVar_0x8004 == BATTLE_TOWER_LINK_RETIRE
|
||||
&& gSpecialVar_0x8005 == BATTLE_TOWER_LINK_CONTINUE)
|
||||
{
|
||||
gSpecialVar_Result = 3;
|
||||
gSpecialVar_Result = BATTLE_TOWER_LINKSTAT_PLAYER_RETIRE;
|
||||
}
|
||||
else
|
||||
{
|
||||
gSpecialVar_Result = 0;
|
||||
gSpecialVar_Result = BATTLE_TOWER_LINKSTAT_CONTINUE;
|
||||
}
|
||||
}
|
||||
gTasks[taskId].data[0]++;
|
||||
@@ -3842,14 +3846,14 @@ static void sub_813B57C(u8 taskId)
|
||||
case 5:
|
||||
if (GetMultiplayerId() == 0)
|
||||
{
|
||||
if (gSpecialVar_Result == 2)
|
||||
if (gSpecialVar_Result == BATTLE_TOWER_LINKSTAT_PARTNER_RETIRE)
|
||||
{
|
||||
ShowFieldAutoScrollMessage(gText_YourPartnerHasRetired);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (gSpecialVar_Result == 3)
|
||||
if (gSpecialVar_Result == BATTLE_TOWER_LINKSTAT_PLAYER_RETIRE)
|
||||
{
|
||||
ShowFieldAutoScrollMessage(gText_YourPartnerHasRetired);
|
||||
}
|
||||
@@ -3880,7 +3884,7 @@ static void sub_813B57C(u8 taskId)
|
||||
{
|
||||
sub_800AC34();
|
||||
}
|
||||
gBattleTypeFlags = sUnknown_0203AB70;
|
||||
gBattleTypeFlags = sBattleTowerMultiBattleTypeFlags;
|
||||
EnableBothScriptContexts();
|
||||
DestroyTask(taskId);
|
||||
break;
|
||||
|
||||
+1
-1
@@ -859,7 +859,7 @@ int sub_8088A4C(struct MapConnection *connection, int x, int y)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
struct MapConnection *sub_8088A8C(s16 x, s16 y)
|
||||
struct MapConnection *GetConnectionAtCoords(s16 x, s16 y)
|
||||
{
|
||||
int count;
|
||||
struct MapConnection *connection;
|
||||
|
||||
+1
-1
@@ -57,7 +57,7 @@ static void sub_8135780(void)
|
||||
}
|
||||
else
|
||||
{
|
||||
taskId = CreateTask(task08_080A1C44, 8);
|
||||
taskId = CreateTask(Task_UseDigEscapeRopeOnField, 8);
|
||||
gTasks[taskId].data[0] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -1531,7 +1531,7 @@ static void Task_HandleFrontierMap(u8 taskId)
|
||||
static u8 MapNumToFrontierFacilityId(u16 mapNum) // id + 1, zero means not a frontier map number
|
||||
{
|
||||
if ((mapNum >= MAP_NUM(BATTLE_FRONTIER_BATTLE_TOWER_LOBBY) && mapNum <= MAP_NUM(BATTLE_FRONTIER_BATTLE_TOWER_BATTLE_ROOM))
|
||||
|| (mapNum >= MAP_NUM(BATTLE_FRONTIER_BATTLE_TOWER_MULTI_BATTLE_ROOM) && mapNum <= MAP_NUM(BATTLE_FRONTIER_BATTLE_TOWER_BATTLE_ROOM2)))
|
||||
|| (mapNum >= MAP_NUM(BATTLE_FRONTIER_BATTLE_TOWER_MULTI_PARTNER_ROOM) && mapNum <= MAP_NUM(BATTLE_FRONTIER_BATTLE_TOWER_MULTI_BATTLE_ROOM)))
|
||||
return FRONTIER_FACILITY_TOWER + 1;
|
||||
else if (mapNum == MAP_NUM(BATTLE_FRONTIER_BATTLE_DOME_LOBBY)
|
||||
|| mapNum == MAP_NUM(BATTLE_FRONTIER_BATTLE_DOME_CORRIDOR)
|
||||
|
||||
+5
-5
@@ -840,8 +840,8 @@ static void GetFrontierData(void)
|
||||
gSpecialVar_Result = gBattleOutcome;
|
||||
gBattleOutcome = 0;
|
||||
break;
|
||||
case FRONTIER_DATA_6:
|
||||
gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_CA9_b;
|
||||
case FRONTIER_DATA_RECORD_DISABLED:
|
||||
gSpecialVar_Result = gSaveBlock2Ptr->frontier.disableRecordBattle;
|
||||
break;
|
||||
case FRONTIER_DATA_HEARD_BRAIN_SPEECH:
|
||||
gSpecialVar_Result = gSaveBlock2Ptr->frontier.battledBrainFlags & sBattledBrainBitFlags[facility][hasSymbol];
|
||||
@@ -875,8 +875,8 @@ static void SetFrontierData(void)
|
||||
for (i = 0; i < MAX_FRONTIER_PARTY_SIZE; i++)
|
||||
gSaveBlock2Ptr->frontier.selectedPartyMons[i] = gSelectedOrderFromParty[i];
|
||||
break;
|
||||
case FRONTIER_DATA_6:
|
||||
gSaveBlock2Ptr->frontier.field_CA9_b = gSpecialVar_0x8006;
|
||||
case FRONTIER_DATA_RECORD_DISABLED:
|
||||
gSaveBlock2Ptr->frontier.disableRecordBattle = gSpecialVar_0x8006;
|
||||
break;
|
||||
case FRONTIER_DATA_HEARD_BRAIN_SPEECH:
|
||||
gSaveBlock2Ptr->frontier.battledBrainFlags |= sBattledBrainBitFlags[facility][hasSymbol];
|
||||
@@ -2173,7 +2173,7 @@ static void RestoreHeldItems(void)
|
||||
static void SaveRecordBattle(void)
|
||||
{
|
||||
gSpecialVar_Result = MoveRecordedBattleToSaveData();
|
||||
gSaveBlock2Ptr->frontier.field_CA9_b = 1;
|
||||
gSaveBlock2Ptr->frontier.disableRecordBattle = TRUE;
|
||||
}
|
||||
|
||||
static void BufferFrontierTrainerName(void)
|
||||
|
||||
+27
-21
@@ -136,7 +136,7 @@ void ItemMenu_Give(u8 taskId);
|
||||
void ItemMenu_Cancel(u8 taskId);
|
||||
void ItemMenu_UseInBattle(u8 taskId);
|
||||
void ItemMenu_CheckTag(u8 taskId);
|
||||
void unknown_ItemMenu_Confirm(u8 taskId);
|
||||
void Task_FadeAndCloseBagMenu(u8 taskId);
|
||||
void unknown_ItemMenu_Show(u8 taskId);
|
||||
void unknown_ItemMenu_Give2(u8 taskId);
|
||||
void unknown_ItemMenu_Confirm2(u8 taskId);
|
||||
@@ -216,7 +216,7 @@ const struct MenuAction sItemMenuActions[] = {
|
||||
{gMenuText_Walk, ItemMenu_UseOutOfBattle},
|
||||
{gMenuText_Deselect, ItemMenu_Register},
|
||||
{gMenuText_CheckTag, ItemMenu_CheckTag},
|
||||
{gMenuText_Confirm, unknown_ItemMenu_Confirm},
|
||||
{gMenuText_Confirm, Task_FadeAndCloseBagMenu},
|
||||
{gMenuText_Show, unknown_ItemMenu_Show},
|
||||
{gMenuText_Give2, unknown_ItemMenu_Give2},
|
||||
{gMenuText_Confirm, unknown_ItemMenu_Confirm2},
|
||||
@@ -241,7 +241,7 @@ const TaskFunc gUnknown_08614054[] = {
|
||||
unknown_item_menu_type,
|
||||
item_menu_type_2,
|
||||
DisplaySellItemAskString,
|
||||
unknown_ItemMenu_Confirm,
|
||||
Task_FadeAndCloseBagMenu,
|
||||
unknown_item_menu_type,
|
||||
DisplayDepositItemAskString,
|
||||
unknown_item_menu_type,
|
||||
@@ -942,7 +942,7 @@ void FreeBagItemListBuffers(void)
|
||||
Free(gBagMenu);
|
||||
}
|
||||
|
||||
void unknown_ItemMenu_Confirm(u8 taskId)
|
||||
void Task_FadeAndCloseBagMenu(u8 taskId)
|
||||
{
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
|
||||
gTasks[taskId].func = TaskCloseBagMenu_2;
|
||||
@@ -966,7 +966,7 @@ void TaskCloseBagMenu_2(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
void sub_81AB9A8(u8 pocketId)
|
||||
void UpdatePocketItemList(u8 pocketId)
|
||||
{
|
||||
u16 i;
|
||||
struct BagPocket *pocket = &gBagPockets[pocketId];
|
||||
@@ -997,7 +997,7 @@ void sub_81ABA6C(void)
|
||||
{
|
||||
u8 i;
|
||||
for (i = 0; i < POCKETS_COUNT; i++)
|
||||
sub_81AB9A8(i);
|
||||
UpdatePocketItemList(i);
|
||||
}
|
||||
|
||||
void SetInitialScrollAndCursorPositions(u8 pocketId)
|
||||
@@ -1041,7 +1041,7 @@ void BagMenu_InitListsMenu(u8 taskId)
|
||||
u16* cursorPos = &gBagPositionStruct.cursorPosition[gBagPositionStruct.pocket];
|
||||
bag_menu_RemoveBagItem_message_window(4);
|
||||
DestroyListMenuTask(data[0], scrollPos, cursorPos);
|
||||
sub_81AB9A8(gBagPositionStruct.pocket);
|
||||
UpdatePocketItemList(gBagPositionStruct.pocket);
|
||||
SetInitialScrollAndCursorPositions(gBagPositionStruct.pocket);
|
||||
LoadBagItemListBuffers(gBagPositionStruct.pocket);
|
||||
data[0] = ListMenuInit(&gMultiuseListMenuTemplate, *scrollPos, *cursorPos);
|
||||
@@ -1117,7 +1117,7 @@ void Task_BagMenu(u8 taskId)
|
||||
}
|
||||
PlaySE(SE_SELECT);
|
||||
gSpecialVar_ItemId = select;
|
||||
gTasks[taskId].func = unknown_ItemMenu_Confirm;
|
||||
gTasks[taskId].func = Task_FadeAndCloseBagMenu;
|
||||
break;
|
||||
default: // A_BUTTON
|
||||
PlaySE(SE_SELECT);
|
||||
@@ -1744,7 +1744,7 @@ void Task_ActuallyToss(u8 taskId)
|
||||
PlaySE(SE_SELECT);
|
||||
RemoveBagItem(gSpecialVar_ItemId, data[8]);
|
||||
DestroyListMenuTask(data[0], scrollPos, cursorPos);
|
||||
sub_81AB9A8(gBagPositionStruct.pocket);
|
||||
UpdatePocketItemList(gBagPositionStruct.pocket);
|
||||
SetInitialScrollAndCursorPositions(gBagPositionStruct.pocket);
|
||||
LoadBagItemListBuffers(gBagPositionStruct.pocket);
|
||||
data[0] = ListMenuInit(&gMultiuseListMenuTemplate, *scrollPos, *cursorPos);
|
||||
@@ -1784,7 +1784,7 @@ void ItemMenu_Give(u8 taskId)
|
||||
else
|
||||
{
|
||||
gBagMenu->mainCallback2 = CB2_ChooseMonToGiveItem;
|
||||
unknown_ItemMenu_Confirm(taskId);
|
||||
Task_FadeAndCloseBagMenu(taskId);
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -1817,7 +1817,7 @@ void sub_81AD350(u8 taskId)
|
||||
void ItemMenu_CheckTag(u8 taskId)
|
||||
{
|
||||
gBagMenu->mainCallback2 = DoBerryTagScreen;
|
||||
unknown_ItemMenu_Confirm(taskId);
|
||||
Task_FadeAndCloseBagMenu(taskId);
|
||||
}
|
||||
|
||||
void ItemMenu_Cancel(u8 taskId)
|
||||
@@ -1841,7 +1841,7 @@ void ItemMenu_UseInBattle(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
void bag_menu_mail_related(void)
|
||||
void CB2_ReturnToBagMenuPocket(void)
|
||||
{
|
||||
GoToBagMenu(RETURN_LOCATION_UNCHANGED, POCKETS_COUNT, NULL);
|
||||
}
|
||||
@@ -1860,7 +1860,7 @@ void item_menu_type_2(u8 taskId)
|
||||
}
|
||||
else if (gBagPositionStruct.pocket != KEYITEMS_POCKET && !ItemId_GetImportance(gSpecialVar_ItemId))
|
||||
{
|
||||
unknown_ItemMenu_Confirm(taskId);
|
||||
Task_FadeAndCloseBagMenu(taskId);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1873,16 +1873,18 @@ void item_menu_type_b(u8 taskId)
|
||||
if (ItemIsMail(gSpecialVar_ItemId) == TRUE)
|
||||
DisplayItemMessage(taskId, 1, gText_CantWriteMail, sub_81AD350);
|
||||
else if (gBagPositionStruct.pocket != KEYITEMS_POCKET && !ItemId_GetImportance(gSpecialVar_ItemId))
|
||||
gTasks[taskId].func = unknown_ItemMenu_Confirm;
|
||||
gTasks[taskId].func = Task_FadeAndCloseBagMenu;
|
||||
else
|
||||
BagMenu_PrintItemCantBeHeld(taskId);
|
||||
}
|
||||
|
||||
#define tUsingRegisteredKeyItem data[3]
|
||||
|
||||
bool8 UseRegisteredKeyItemOnField(void)
|
||||
{
|
||||
u8 taskId;
|
||||
|
||||
if (InUnionRoom() == TRUE || InBattlePyramid() || InBattlePike() || InMultiBattleRoom() == TRUE)
|
||||
if (InUnionRoom() == TRUE || InBattlePyramid() || InBattlePike() || InMultiPartnerRoom() == TRUE)
|
||||
return FALSE;
|
||||
HideMapNamePopUpWindow();
|
||||
ChangeBgY_ScreenOff(0, 0, 0);
|
||||
@@ -1896,16 +1898,20 @@ bool8 UseRegisteredKeyItemOnField(void)
|
||||
sub_808BCF4();
|
||||
gSpecialVar_ItemId = gSaveBlock1Ptr->registeredItem;
|
||||
taskId = CreateTask(ItemId_GetFieldFunc(gSaveBlock1Ptr->registeredItem), 8);
|
||||
gTasks[taskId].data[3] = 1;
|
||||
gTasks[taskId].tUsingRegisteredKeyItem = TRUE;
|
||||
return TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
gSaveBlock1Ptr->registeredItem = ITEM_NONE;
|
||||
}
|
||||
}
|
||||
ScriptContext1_SetupScript(EventScript_SelectWithoutRegisteredItem);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
#undef tUsingRegisteredKeyItem
|
||||
|
||||
void DisplaySellItemAskString(u8 taskId)
|
||||
{
|
||||
s16* data = gTasks[taskId].data;
|
||||
@@ -2012,7 +2018,7 @@ void sub_81AD8C8(u8 taskId)
|
||||
RemoveBagItem(gSpecialVar_ItemId, data[8]);
|
||||
AddMoney(&gSaveBlock1Ptr->money, (ItemId_GetPrice(gSpecialVar_ItemId) / 2) * data[8]);
|
||||
DestroyListMenuTask(data[0], scrollPos, cursorPos);
|
||||
sub_81AB9A8(gBagPositionStruct.pocket);
|
||||
UpdatePocketItemList(gBagPositionStruct.pocket);
|
||||
SetInitialScrollAndCursorPositions(gBagPositionStruct.pocket);
|
||||
LoadBagItemListBuffers(gBagPositionStruct.pocket);
|
||||
data[0] = ListMenuInit(&gMultiuseListMenuTemplate, *scrollPos, *cursorPos);
|
||||
@@ -2186,7 +2192,7 @@ void Task_WallyTutorialBagMenu(u8 taskId)
|
||||
BagMenu_RemoveSomeWindow();
|
||||
DestroyListMenuTask(data[0], 0, 0);
|
||||
RestoreBagAfterWallyTutorial();
|
||||
unknown_ItemMenu_Confirm(taskId);
|
||||
Task_FadeAndCloseBagMenu(taskId);
|
||||
break;
|
||||
default:
|
||||
data[8]++;
|
||||
@@ -2200,7 +2206,7 @@ void unknown_ItemMenu_Show(u8 taskId)
|
||||
gSpecialVar_0x8005 = gSpecialVar_ItemId;
|
||||
gSpecialVar_Result = 1;
|
||||
BagMenu_RemoveSomeWindow();
|
||||
unknown_ItemMenu_Confirm(taskId);
|
||||
Task_FadeAndCloseBagMenu(taskId);
|
||||
}
|
||||
|
||||
void CB2_ApprenticeExitBagMenu(void)
|
||||
@@ -2214,7 +2220,7 @@ void unknown_ItemMenu_Give2(u8 taskId)
|
||||
RemoveBagItem(gSpecialVar_ItemId, 1);
|
||||
gSpecialVar_Result = 1;
|
||||
BagMenu_RemoveSomeWindow();
|
||||
unknown_ItemMenu_Confirm(taskId);
|
||||
Task_FadeAndCloseBagMenu(taskId);
|
||||
}
|
||||
|
||||
void CB2_FavorLadyExitBagMenu(void)
|
||||
@@ -2227,7 +2233,7 @@ void unknown_ItemMenu_Confirm2(u8 taskId)
|
||||
{
|
||||
gSpecialVar_Result = 1;
|
||||
BagMenu_RemoveSomeWindow();
|
||||
unknown_ItemMenu_Confirm(taskId);
|
||||
Task_FadeAndCloseBagMenu(taskId);
|
||||
}
|
||||
|
||||
void CB2_QuizLadyExitBagMenu(void)
|
||||
|
||||
+259
-233
File diff suppressed because it is too large
Load Diff
@@ -376,7 +376,7 @@ static void Task_WaitForFadeOut(u8 taskId)
|
||||
if (!gPaletteFade.active)
|
||||
{
|
||||
SetMainCallback2(CB2_InitLearnMove);
|
||||
gFieldCallback = FieldCallback_ReturnToEventScript2;
|
||||
gFieldCallback = FieldCB_ContinueScriptHandleMusic;
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
}
|
||||
|
||||
+14
-14
@@ -978,7 +978,7 @@ static u16 GetCenterScreenMetatileBehavior(void)
|
||||
|
||||
bool32 Overworld_IsBikingAllowed(void)
|
||||
{
|
||||
if (!(gMapHeader.flags & 1))
|
||||
if (!(gMapHeader.flags & MAP_ALLOW_BIKE))
|
||||
return FALSE;
|
||||
else
|
||||
return TRUE;
|
||||
@@ -1526,7 +1526,7 @@ static bool8 map_post_load_hook_exec(void)
|
||||
if (gFieldCallback)
|
||||
gFieldCallback();
|
||||
else
|
||||
mapldr_default();
|
||||
FieldCB_DefaultWarpExit();
|
||||
|
||||
gFieldCallback = NULL;
|
||||
}
|
||||
@@ -1565,7 +1565,7 @@ void CB2_WhiteOut(void)
|
||||
ResetInitialPlayerAvatarState();
|
||||
ScriptContext1_Init();
|
||||
ScriptContext2_Disable();
|
||||
gFieldCallback = sub_80AF3C8;
|
||||
gFieldCallback = FieldCB_WarpExitFadeFromBlack;
|
||||
val = 0;
|
||||
do_load_map_stuff_loop(&val);
|
||||
SetFieldVBlankCallback();
|
||||
@@ -1609,10 +1609,10 @@ void sub_8086024(void)
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8086074(void)
|
||||
void CB2_ReturnToFieldCableClub(void)
|
||||
{
|
||||
FieldClearVBlankHBlankCallbacks();
|
||||
gFieldCallback = sub_80AF314;
|
||||
gFieldCallback = FieldCB_ReturnToFieldWirelessLink;
|
||||
SetMainCallback2(c2_80567AC);
|
||||
}
|
||||
|
||||
@@ -1663,9 +1663,9 @@ void CB2_ReturnToFieldFromMultiplayer(void)
|
||||
ResetAllMultiplayerState();
|
||||
|
||||
if (gWirelessCommType != 0)
|
||||
gFieldCallback = sub_80AF314;
|
||||
gFieldCallback = FieldCB_ReturnToFieldWirelessLink;
|
||||
else
|
||||
gFieldCallback = sub_80AF214;
|
||||
gFieldCallback = FieldCB_ReturnToFieldCableLink;
|
||||
|
||||
ScriptContext1_Init();
|
||||
ScriptContext2_Disable();
|
||||
@@ -1675,36 +1675,36 @@ void CB2_ReturnToFieldFromMultiplayer(void)
|
||||
void CB2_ReturnToFieldWithOpenMenu(void)
|
||||
{
|
||||
FieldClearVBlankHBlankCallbacks();
|
||||
gFieldCallback2 = sub_80AF6A4;
|
||||
gFieldCallback2 = FieldCB_ReturnToFieldOpenStartMenu;
|
||||
CB2_ReturnToField();
|
||||
}
|
||||
|
||||
void CB2_ReturnToFieldContinueScript(void)
|
||||
{
|
||||
FieldClearVBlankHBlankCallbacks();
|
||||
gFieldCallback = sub_80AF188;
|
||||
gFieldCallback = FieldCB_ContinueScript;
|
||||
CB2_ReturnToField();
|
||||
}
|
||||
|
||||
void CB2_ReturnToFieldContinueScriptPlayMapMusic(void)
|
||||
{
|
||||
FieldClearVBlankHBlankCallbacks();
|
||||
gFieldCallback = FieldCallback_ReturnToEventScript2;
|
||||
gFieldCallback = FieldCB_ContinueScriptHandleMusic;
|
||||
CB2_ReturnToField();
|
||||
}
|
||||
|
||||
void sub_80861E8(void)
|
||||
{
|
||||
FieldClearVBlankHBlankCallbacks();
|
||||
gFieldCallback = sub_80AF3C8;
|
||||
gFieldCallback = FieldCB_WarpExitFadeFromBlack;
|
||||
CB2_ReturnToField();
|
||||
}
|
||||
|
||||
static void sub_8086204(void)
|
||||
{
|
||||
if ((gMapHeader.flags & 0xF8) == 8 && SecretBaseMapPopupEnabled() == TRUE)
|
||||
if (SHOW_MAP_NAME_ENABLED && SecretBaseMapPopupEnabled() == TRUE)
|
||||
ShowMapNamePopup();
|
||||
sub_80AF3C8();
|
||||
FieldCB_WarpExitFadeFromBlack();
|
||||
}
|
||||
|
||||
void CB2_ContinueSavedGame(void)
|
||||
@@ -1948,7 +1948,7 @@ static bool32 load_map_stuff(u8 *state, u32 a2)
|
||||
(*state)++;
|
||||
break;
|
||||
case 11:
|
||||
if ((gMapHeader.flags & 0xF8) == 8 && SecretBaseMapPopupEnabled() == TRUE)
|
||||
if (SHOW_MAP_NAME_ENABLED && SecretBaseMapPopupEnabled() == TRUE)
|
||||
ShowMapNamePopup();
|
||||
(*state)++;
|
||||
break;
|
||||
|
||||
+5
-5
@@ -2572,7 +2572,7 @@ static u8 GetPartyMenuActionsType(struct Pokemon *mon)
|
||||
switch (gPartyMenu.menuType)
|
||||
{
|
||||
case PARTY_MENU_TYPE_FIELD:
|
||||
if (InMultiBattleRoom() == TRUE || GetMonData(mon, MON_DATA_IS_EGG))
|
||||
if (InMultiPartnerRoom() == TRUE || GetMonData(mon, MON_DATA_IS_EGG))
|
||||
actionType = ACTIONS_SWITCH;
|
||||
else
|
||||
actionType = ACTIONS_NONE; // actions populated by SetPartyMonFieldSelectionActions
|
||||
@@ -3745,7 +3745,7 @@ static void Task_HandleFieldMoveExitAreaYesNoInput(u8 taskId)
|
||||
|
||||
bool8 FieldCallback_PrepareFadeInFromMenu(void)
|
||||
{
|
||||
pal_fill_black();
|
||||
FadeInFromBlack();
|
||||
CreateTask(Task_FieldMoveWaitForFade, 8);
|
||||
return TRUE;
|
||||
}
|
||||
@@ -5186,7 +5186,7 @@ u8 GetItemEffectType(u16 item)
|
||||
else
|
||||
itemEffect = gItemEffectTable[item - ITEM_POTION];
|
||||
|
||||
if ((itemEffect[0] & (ITEM0_HIGH_CRIT | ITEM0_X_ATTACK)) || itemEffect[1] || itemEffect[2] || (itemEffect[3] & ITEM3_MIST))
|
||||
if ((itemEffect[0] & (ITEM0_DIRE_HIT | ITEM0_X_ATTACK)) || itemEffect[1] || itemEffect[2] || (itemEffect[3] & ITEM3_GUARD_SPEC))
|
||||
return ITEM_EFFECT_X_ITEM;
|
||||
else if (itemEffect[0] & ITEM0_SACRED_ASH)
|
||||
return ITEM_EFFECT_SACRED_ASH;
|
||||
@@ -6143,7 +6143,7 @@ static void BufferMonSelection(void)
|
||||
|
||||
bool8 CB2_FadeFromPartyMenu(void)
|
||||
{
|
||||
pal_fill_black();
|
||||
FadeInFromBlack();
|
||||
CreateTask(Task_PartyMenuWaitForFade, 10);
|
||||
return TRUE;
|
||||
}
|
||||
@@ -6268,7 +6268,7 @@ static void Task_BattlePyramidChooseMonHeldItems(u8 taskId)
|
||||
void MoveDeleterChooseMoveToForget(void)
|
||||
{
|
||||
ShowPokemonSummaryScreen(PSS_MODE_SELECT_MOVE, gPlayerParty, gSpecialVar_0x8004, gPlayerPartyCount - 1, CB2_ReturnToField);
|
||||
gFieldCallback = FieldCallback_ReturnToEventScript2;
|
||||
gFieldCallback = FieldCB_ContinueScriptHandleMusic;
|
||||
}
|
||||
|
||||
void GetNumMovesSelectedMonHas(void)
|
||||
|
||||
+3
-3
@@ -508,7 +508,7 @@ void Mailbox_DoRedrawMailboxMenuAfterReturn(void)
|
||||
sub_81973A4();
|
||||
DrawDialogueFrame(0, 1);
|
||||
InitItemStorageMenu(CreateTask(ItemStorage_HandleReturnToProcessInput, 0), 1);
|
||||
pal_fill_black();
|
||||
FadeInFromBlack();
|
||||
}
|
||||
|
||||
static void ItemStorage_HandleReturnToProcessInput(u8 taskId)
|
||||
@@ -745,7 +745,7 @@ static void pal_fill_for_maplights_or_black(void)
|
||||
Mailbox_DrawMailboxMenu(taskId);
|
||||
else
|
||||
DestroyTask(taskId);
|
||||
pal_fill_black();
|
||||
FadeInFromBlack();
|
||||
}
|
||||
|
||||
static void Mailbox_HandleReturnToProcessInput(u8 taskId)
|
||||
@@ -852,7 +852,7 @@ static void Mailbox_UpdateMailListAfterDeposit(void)
|
||||
Mailbox_DrawMailboxMenu(taskId);
|
||||
else
|
||||
DestroyTask(taskId);
|
||||
pal_fill_black();
|
||||
FadeInFromBlack();
|
||||
}
|
||||
|
||||
static void Mailbox_NoPokemonForMail(u8 taskId)
|
||||
|
||||
+2
-2
@@ -451,7 +451,7 @@ void OpenPokeblockCase(u8 caseId, void (*callback)(void))
|
||||
sPokeblockMenu->pokeblockOptionsIds = sActionsWhenGivingToLady;
|
||||
sPokeblockMenu->optionsNo = ARRAY_COUNT(sActionsWhenGivingToLady);
|
||||
break;
|
||||
default:
|
||||
default: // PBLOCK_CASE_FIELD
|
||||
sPokeblockMenu->pokeblockOptionsIds = sActionsOnField;
|
||||
sPokeblockMenu->optionsNo = ARRAY_COUNT(sActionsOnField);
|
||||
break;
|
||||
@@ -960,7 +960,7 @@ static void Task_FreeDataAndExitPokeblockCase(u8 taskId)
|
||||
if (!gPaletteFade.active)
|
||||
{
|
||||
if (sPokeblockMenu->caseId == PBLOCK_CASE_FEEDER || sPokeblockMenu->caseId == PBLOCK_CASE_GIVE)
|
||||
gFieldCallback = FieldCallback_ReturnToEventScript2;
|
||||
gFieldCallback = FieldCB_ContinueScriptHandleMusic;
|
||||
|
||||
DestroyListMenuTask(data[0], &sSavedPokeblockData.lastItemPage, &sSavedPokeblockData.lastItemPos);
|
||||
sub_8136418();
|
||||
|
||||
+128
-103
@@ -52,7 +52,7 @@ struct UnknownStruct1
|
||||
const struct PokedexOption *pokedexList;
|
||||
u8 unk4;
|
||||
u8 unk5;
|
||||
u16 unk6;
|
||||
u16 numOptions;
|
||||
};
|
||||
|
||||
struct UnknownStruct3
|
||||
@@ -99,7 +99,7 @@ struct PokedexView
|
||||
u16 unk618;
|
||||
u16 seenCount;
|
||||
u16 ownCount;
|
||||
u16 unk61E[4];
|
||||
u16 monSpriteIds[4];
|
||||
u16 selectedMonSpriteId;
|
||||
u16 unk628;
|
||||
u16 unk62A;
|
||||
@@ -154,18 +154,18 @@ void sub_80BC3DC(u8);
|
||||
void sub_80BC47C(u8);
|
||||
bool8 sub_80BC514(u8);
|
||||
static void LoadPokedexBgPalette(u8);
|
||||
void sub_80BC890(void);
|
||||
void sub_80BC8D4(u8, u8);
|
||||
static void FreeWindowAndBgBuffers(void);
|
||||
static void CreatePokedexList(u8 dexMode, u8 sortMode);
|
||||
static void CreateMonDexNum(u16, u8, u8, u16);
|
||||
static void CreateCaughtBall(u16, u8, u8, u16);
|
||||
static u8 CreateMonName(u16, u8, u8);
|
||||
void sub_80BD28C(u8, u8, u16);
|
||||
static void ClearMonListEntry(u8 x, u8 y, u16 unused);
|
||||
static void CreateInitialPokemonSprites(u16, u16);
|
||||
bool8 sub_80BD404(u8, u8, u8);
|
||||
u16 sub_80BD69C(u16, u16);
|
||||
void sub_80BD8D0(void);
|
||||
static void UpdateSelectedMonSpriteId(void);
|
||||
static bool8 UpdateSelectedMon(void);
|
||||
u8 sub_80BDA40(void);
|
||||
static u8 ClearMonSprites(void);
|
||||
u16 GetPokemonSpriteToDisplay(u16);
|
||||
u32 sub_80BDACC(u16, s16, s16);
|
||||
static void CreateInterfaceSprites(u8);
|
||||
@@ -229,7 +229,7 @@ void sub_80C2064(u8, u8);
|
||||
void sub_80C20F8(u8);
|
||||
void sub_80C21D4(u8);
|
||||
void sub_80C2294(u8);
|
||||
u8 sub_80C2318(u8, u8);
|
||||
static u8 GetSearchModeSelection(u8 taskId, u8 option);
|
||||
void sub_80C23B8(u8);
|
||||
void sub_80C2594(u8);
|
||||
void sub_80C2618(const u8*);
|
||||
@@ -1136,9 +1136,34 @@ static const struct PokedexOption gDexSearchTypeOptions[] =
|
||||
{NULL, NULL},
|
||||
};
|
||||
|
||||
static const u8 gUnknown_0856EFAC[] = {0x00, 0x01};
|
||||
static const u8 gUnknown_0856EFAE[] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05};
|
||||
static const u8 gDexSearchTypeIds[] = {
|
||||
|
||||
#define SEARCH_NAME 0
|
||||
#define SEARCH_COLOR 1
|
||||
#define SEARCH_TYPE_1 2
|
||||
#define SEARCH_TYPE_2 3
|
||||
#define SEARCH_ORDER 4
|
||||
#define SEARCH_DEX_MODE 5
|
||||
|
||||
#define SORT_NUMERICAL 0
|
||||
#define SORT_ALPHABETICAL 1
|
||||
#define SORT_HEAVIEST 2
|
||||
#define SORT_LIGHTEST 3
|
||||
#define SORT_TALLEST 4
|
||||
#define SORT_SMALLEST 5
|
||||
|
||||
static const u8 sPokedexModes[] = {DEX_MODE_HOENN, DEX_MODE_NATIONAL};
|
||||
static const u8 sSortOptions[] =
|
||||
{
|
||||
SORT_NUMERICAL,
|
||||
SORT_ALPHABETICAL,
|
||||
SORT_HEAVIEST,
|
||||
SORT_LIGHTEST,
|
||||
SORT_TALLEST,
|
||||
SORT_SMALLEST,
|
||||
};
|
||||
|
||||
static const u8 gDexSearchTypeIds[] =
|
||||
{
|
||||
TYPE_NONE,
|
||||
TYPE_NORMAL,
|
||||
TYPE_FIGHTING,
|
||||
@@ -1159,7 +1184,7 @@ static const u8 gDexSearchTypeIds[] = {
|
||||
TYPE_DARK,
|
||||
};
|
||||
|
||||
static const struct UnknownStruct1 gUnknown_0856EFC8[] =
|
||||
static const struct UnknownStruct1 sSearchOptions[] =
|
||||
{
|
||||
{gDexSearchAlphaOptions, 6, 7, 10},
|
||||
{gDexSearchColorOptions, 8, 9, 11},
|
||||
@@ -1285,7 +1310,7 @@ static void ResetPokedexView(struct PokedexView *pokedexView)
|
||||
pokedexView->seenCount = 0;
|
||||
pokedexView->ownCount = 0;
|
||||
for (i = 0; i < 4; i++)
|
||||
pokedexView->unk61E[i] = 0xFFFF;
|
||||
pokedexView->monSpriteIds[i] = 0xFFFF;
|
||||
pokedexView->unk628 = 0;
|
||||
pokedexView->unk62A = 0;
|
||||
pokedexView->unk62C = 0;
|
||||
@@ -1367,7 +1392,7 @@ void CB2_Pokedex(void)
|
||||
EnableInterrupts(1);
|
||||
SetVBlankCallback(sub_80BB370);
|
||||
SetMainCallback2(sub_80BB774);
|
||||
sub_80BC8D4(sPokedexView->dexMode, sPokedexView->dexOrder);
|
||||
CreatePokedexList(sPokedexView->dexMode, sPokedexView->dexOrder);
|
||||
m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 0x80);
|
||||
break;
|
||||
}
|
||||
@@ -1400,12 +1425,12 @@ void sub_80BB7D4(u8 taskId)
|
||||
{
|
||||
if ((gMain.newKeys & A_BUTTON) && sPokedexView->pokedexList[sPokedexView->selectedPokemon].seen)
|
||||
{
|
||||
sub_80BD8D0();
|
||||
UpdateSelectedMonSpriteId();
|
||||
BeginNormalPaletteFade(~(1 << (gSprites[sPokedexView->selectedMonSpriteId].oam.paletteNum + 16)), 0, 0, 0x10, RGB_BLACK);
|
||||
gSprites[sPokedexView->selectedMonSpriteId].callback = MoveMonIntoPosition;
|
||||
gTasks[taskId].func = LoadPageOnceMonFinishedMoving;
|
||||
PlaySE(SE_PIN);
|
||||
sub_80BC890();
|
||||
FreeWindowAndBgBuffers();
|
||||
}
|
||||
else if (gMain.newKeys & START_BUTTON)
|
||||
{
|
||||
@@ -1428,7 +1453,7 @@ void sub_80BB7D4(u8 taskId)
|
||||
sPokedexView->unk618 = sPokedexView->dexOrder;
|
||||
gTasks[taskId].func = sub_80BBD1C;
|
||||
PlaySE(SE_PC_LOGIN);
|
||||
sub_80BC890();
|
||||
FreeWindowAndBgBuffers();
|
||||
}
|
||||
else if (gMain.newKeys & B_BUTTON)
|
||||
{
|
||||
@@ -1474,14 +1499,14 @@ void sub_80BBA78(u8 taskId)
|
||||
case 1: //LIST TOP
|
||||
sPokedexView->selectedPokemon = 0;
|
||||
sPokedexView->unk62C = 0x40;
|
||||
sub_80BDA40();
|
||||
ClearMonSprites();
|
||||
CreateInitialPokemonSprites(sPokedexView->selectedPokemon, 0xE);
|
||||
gMain.newKeys |= START_BUTTON; //Exit menu
|
||||
break;
|
||||
case 2: //LIST BOTTOM
|
||||
sPokedexView->selectedPokemon = sPokedexView->pokemonListCount - 1;
|
||||
sPokedexView->unk62C = sPokedexView->pokemonListCount * 16 + 0x30;
|
||||
sub_80BDA40();
|
||||
ClearMonSprites();
|
||||
CreateInitialPokemonSprites(sPokedexView->selectedPokemon, 0xE);
|
||||
gMain.newKeys |= START_BUTTON; //Exit menu
|
||||
break;
|
||||
@@ -1542,7 +1567,7 @@ void sub_80BBD1C(u8 taskId)
|
||||
{
|
||||
if (!gTasks[gTasks[taskId].data[0]].isActive)
|
||||
{
|
||||
sub_80BDA40();
|
||||
ClearMonSprites();
|
||||
if (sPokedexView->unk64E != 0)
|
||||
{
|
||||
sPokedexView->selectedPokemon = 0;
|
||||
@@ -1570,8 +1595,8 @@ void sub_80BBDE8(u8 taskId)
|
||||
if (!IsNationalPokedexEnabled())
|
||||
gSaveBlock2Ptr->pokedex.mode = DEX_MODE_HOENN;
|
||||
gSaveBlock2Ptr->pokedex.order = sPokedexView->dexOrder;
|
||||
sub_80BDA40();
|
||||
sub_80BC890();
|
||||
ClearMonSprites();
|
||||
FreeWindowAndBgBuffers();
|
||||
DestroyTask(taskId);
|
||||
SetMainCallback2(CB2_ReturnToFieldWithOpenMenu);
|
||||
m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 0x100);
|
||||
@@ -1600,13 +1625,13 @@ void sub_80BBEB8(u8 taskId)
|
||||
{
|
||||
u32 a;
|
||||
|
||||
sub_80BD8D0();
|
||||
UpdateSelectedMonSpriteId();
|
||||
a = (1 << (gSprites[sPokedexView->selectedMonSpriteId].oam.paletteNum + 16));
|
||||
gSprites[sPokedexView->selectedMonSpriteId].callback = MoveMonIntoPosition;
|
||||
BeginNormalPaletteFade(~a, 0, 0, 0x10, RGB_BLACK);
|
||||
gTasks[taskId].func = sub_80BC2D4;
|
||||
PlaySE(SE_PIN);
|
||||
sub_80BC890();
|
||||
FreeWindowAndBgBuffers();
|
||||
}
|
||||
else if (gMain.newKeys & START_BUTTON)
|
||||
{
|
||||
@@ -1623,7 +1648,7 @@ void sub_80BBEB8(u8 taskId)
|
||||
sPokedexView->unk64E = 0;
|
||||
gTasks[taskId].func = sub_80BBD1C;
|
||||
PlaySE(SE_PC_LOGIN);
|
||||
sub_80BC890();
|
||||
FreeWindowAndBgBuffers();
|
||||
}
|
||||
else if (gMain.newKeys & B_BUTTON)
|
||||
{
|
||||
@@ -1668,14 +1693,14 @@ static void HandleButtonPress_StartMenu(u8 taskId)
|
||||
case 1: //LIST TOP
|
||||
sPokedexView->selectedPokemon = 0;
|
||||
sPokedexView->unk62C = 0x40;
|
||||
sub_80BDA40();
|
||||
ClearMonSprites();
|
||||
CreateInitialPokemonSprites(sPokedexView->selectedPokemon, 0xE);
|
||||
gMain.newKeys |= START_BUTTON;
|
||||
break;
|
||||
case 2: //LIST BOTTOM
|
||||
sPokedexView->selectedPokemon = sPokedexView->pokemonListCount - 1;
|
||||
sPokedexView->unk62C = sPokedexView->pokemonListCount * 16 + 0x30;
|
||||
sub_80BDA40();
|
||||
ClearMonSprites();
|
||||
CreateInitialPokemonSprites(sPokedexView->selectedPokemon, 0xE);
|
||||
gMain.newKeys |= START_BUTTON;
|
||||
break;
|
||||
@@ -1747,8 +1772,8 @@ void sub_80BC3DC(u8 taskId)
|
||||
sPokedexView->dexMode = DEX_MODE_HOENN;
|
||||
sPokedexView->dexOrder = sPokedexView->unk618;
|
||||
gTasks[taskId].func = sub_80BB78C;
|
||||
sub_80BDA40();
|
||||
sub_80BC890();
|
||||
ClearMonSprites();
|
||||
FreeWindowAndBgBuffers();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1817,7 +1842,7 @@ bool8 sub_80BC514(u8 a)
|
||||
break;
|
||||
case 3:
|
||||
if (a == 0)
|
||||
sub_80BC8D4(sPokedexView->dexMode, sPokedexView->dexOrder);
|
||||
CreatePokedexList(sPokedexView->dexMode, sPokedexView->dexOrder);
|
||||
CreateInitialPokemonSprites(sPokedexView->selectedPokemon, 0xE);
|
||||
sPokedexView->menuIsOpen = 0;
|
||||
sPokedexView->menuY = 0;
|
||||
@@ -1871,7 +1896,7 @@ static void LoadPokedexBgPalette(u8 a)
|
||||
LoadPalette(GetOverworldTextboxPalettePtr(), 0xF0, 32);
|
||||
}
|
||||
|
||||
void sub_80BC890(void)
|
||||
static void FreeWindowAndBgBuffers(void)
|
||||
{
|
||||
void* tilemapBuffer;
|
||||
|
||||
@@ -1890,7 +1915,7 @@ void sub_80BC890(void)
|
||||
Free(tilemapBuffer);
|
||||
}
|
||||
|
||||
void sub_80BC8D4(u8 dexMode, u8 sortMode)
|
||||
static void CreatePokedexList(u8 dexMode, u8 sortMode)
|
||||
{
|
||||
u16 vars[3]; //I have no idea why three regular variables are stored in an array, but whatever.
|
||||
#define temp_dexCount vars[0]
|
||||
@@ -1923,7 +1948,7 @@ void sub_80BC8D4(u8 dexMode, u8 sortMode)
|
||||
|
||||
switch (sortMode)
|
||||
{
|
||||
case 0:
|
||||
case SORT_NUMERICAL:
|
||||
if (temp_isHoennDex)
|
||||
{
|
||||
for (i = 0; i < temp_dexCount; i++)
|
||||
@@ -1960,7 +1985,7 @@ void sub_80BC8D4(u8 dexMode, u8 sortMode)
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
case SORT_ALPHABETICAL:
|
||||
for (i = 0; i < POKEMON_SLOTS_NUMBER - 1; i++)
|
||||
{
|
||||
temp_dexNum = gPokedexOrder_Alphabetical[i];
|
||||
@@ -1974,7 +1999,7 @@ void sub_80BC8D4(u8 dexMode, u8 sortMode)
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
case SORT_HEAVIEST:
|
||||
for (i = NATIONAL_DEX_COUNT - 1; i >= 0; i--)
|
||||
{
|
||||
temp_dexNum = gPokedexOrder_Weight[i];
|
||||
@@ -1988,7 +2013,7 @@ void sub_80BC8D4(u8 dexMode, u8 sortMode)
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
case SORT_LIGHTEST:
|
||||
for (i = 0; i < NATIONAL_DEX_COUNT; i++)
|
||||
{
|
||||
temp_dexNum = gPokedexOrder_Weight[i];
|
||||
@@ -2002,7 +2027,7 @@ void sub_80BC8D4(u8 dexMode, u8 sortMode)
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
case SORT_TALLEST:
|
||||
for (i = NATIONAL_DEX_COUNT - 1; i >= 0; i--)
|
||||
{
|
||||
temp_dexNum = gPokedexOrder_Height[i];
|
||||
@@ -2016,7 +2041,7 @@ void sub_80BC8D4(u8 dexMode, u8 sortMode)
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
case SORT_SMALLEST:
|
||||
for (i = 0; i < NATIONAL_DEX_COUNT; i++)
|
||||
{
|
||||
temp_dexNum = gPokedexOrder_Height[i];
|
||||
@@ -2065,11 +2090,11 @@ static void CreateMonListEntry(u8 direction, u16 b, u16 c)
|
||||
{
|
||||
if (_b < 0 || _b >= NATIONAL_DEX_COUNT || sPokedexView->pokedexList[_b].dexNum == 0xFFFF)
|
||||
{
|
||||
sub_80BD28C(0x11, i * 2, c);
|
||||
ClearMonListEntry(0x11, i * 2, c);
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_80BD28C(0x11, i * 2, c);
|
||||
ClearMonListEntry(0x11, i * 2, c);
|
||||
if (sPokedexView->pokedexList[_b].seen)
|
||||
{
|
||||
CreateMonDexNum(_b, 0x12, i * 2, c);
|
||||
@@ -2090,11 +2115,11 @@ static void CreateMonListEntry(u8 direction, u16 b, u16 c)
|
||||
_b = b - 5;
|
||||
if (_b < 0 || _b >= NATIONAL_DEX_COUNT || sPokedexView->pokedexList[_b].dexNum == 0xFFFF)
|
||||
{
|
||||
sub_80BD28C(0x11, sPokedexView->unk630 * 2, c);
|
||||
ClearMonListEntry(0x11, sPokedexView->unk630 * 2, c);
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_80BD28C(0x11, sPokedexView->unk630 * 2, c);
|
||||
ClearMonListEntry(0x11, sPokedexView->unk630 * 2, c);
|
||||
if (sPokedexView->pokedexList[_b].seen)
|
||||
{
|
||||
CreateMonDexNum(_b, 0x12, sPokedexView->unk630 * 2, c);
|
||||
@@ -2115,10 +2140,10 @@ static void CreateMonListEntry(u8 direction, u16 b, u16 c)
|
||||
if (r2 > 15)
|
||||
r2 -= 16;
|
||||
if (_b < 0 || _b >= NATIONAL_DEX_COUNT || sPokedexView->pokedexList[_b].dexNum == 0xFFFF)
|
||||
sub_80BD28C(0x11, r2 * 2, c);
|
||||
ClearMonListEntry(0x11, r2 * 2, c);
|
||||
else
|
||||
{
|
||||
sub_80BD28C(0x11, r2 * 2, c);
|
||||
ClearMonListEntry(0x11, r2 * 2, c);
|
||||
if (sPokedexView->pokedexList[_b].seen)
|
||||
{
|
||||
CreateMonDexNum(_b, 0x12, r2 * 2, c);
|
||||
@@ -2173,7 +2198,7 @@ static u8 CreateMonName(u16 num, u8 left, u8 top)
|
||||
return StringLength(str);
|
||||
}
|
||||
|
||||
void sub_80BD28C(u8 x, u8 y, u16 unused)
|
||||
static void ClearMonListEntry(u8 x, u8 y, u16 unused)
|
||||
{
|
||||
FillWindowPixelRect(0, PIXEL_FILL(0), x * 8, y * 8, 0x60, 16);
|
||||
}
|
||||
@@ -2187,7 +2212,7 @@ static void CreateInitialPokemonSprites(u16 selectedMon, u16 b)
|
||||
gPaletteFade.bufferTransferDisabled = TRUE;
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
sPokedexView->unk61E[i] = 0xFFFF;
|
||||
sPokedexView->monSpriteIds[i] = 0xFFFF;
|
||||
sPokedexView->selectedMonSpriteId = 0xFFFF;
|
||||
|
||||
unk = GetPokemonSpriteToDisplay(selectedMon - 1);
|
||||
@@ -2236,8 +2261,8 @@ bool8 sub_80BD404(u8 a, u8 b, u8 c)
|
||||
case 1:
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
if (sPokedexView->unk61E[i] != 0xFFFF)
|
||||
gSprites[sPokedexView->unk61E[i]].data[5] += b;
|
||||
if (sPokedexView->monSpriteIds[i] != 0xFFFF)
|
||||
gSprites[sPokedexView->monSpriteIds[i]].data[5] += b;
|
||||
}
|
||||
foo = 16 * (c - sPokedexView->unk62E) / c;
|
||||
SetGpuReg(REG_OFFSET_BG2VOFS, sPokedexView->initialVOffset + sPokedexView->unk632 * 16 - foo);
|
||||
@@ -2246,8 +2271,8 @@ bool8 sub_80BD404(u8 a, u8 b, u8 c)
|
||||
case 2:
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
if (sPokedexView->unk61E[i] != 0xFFFF)
|
||||
gSprites[sPokedexView->unk61E[i]].data[5] -= b;
|
||||
if (sPokedexView->monSpriteIds[i] != 0xFFFF)
|
||||
gSprites[sPokedexView->monSpriteIds[i]].data[5] -= b;
|
||||
}
|
||||
foo = 16 * (c - sPokedexView->unk62E) / c;
|
||||
SetGpuReg(REG_OFFSET_BG2VOFS, sPokedexView->initialVOffset + sPokedexView->unk632 * 16 + foo);
|
||||
@@ -2331,7 +2356,7 @@ u16 sub_80BD69C(u16 selectedMon, u16 b)
|
||||
for (i = 0; i < 7; i++)
|
||||
selectedMon = sub_80C0E0C(1, selectedMon, 0, sPokedexView->pokemonListCount - 1);
|
||||
sPokedexView->unk62C += 16 * (selectedMon - r6);
|
||||
sub_80BDA40();
|
||||
ClearMonSprites();
|
||||
CreateInitialPokemonSprites(selectedMon, 0xE);
|
||||
PlaySE(SE_Z_PAGE);
|
||||
}
|
||||
@@ -2341,7 +2366,7 @@ u16 sub_80BD69C(u16 selectedMon, u16 b)
|
||||
for (i = 0; i < 7; i++)
|
||||
selectedMon = sub_80C0E0C(0, selectedMon, 0, sPokedexView->pokemonListCount - 1);
|
||||
sPokedexView->unk62C += (selectedMon - r6) * 16;
|
||||
sub_80BDA40();
|
||||
ClearMonSprites();
|
||||
CreateInitialPokemonSprites(selectedMon, 0xE);
|
||||
PlaySE(SE_Z_PAGE);
|
||||
}
|
||||
@@ -2365,13 +2390,13 @@ u16 sub_80BD69C(u16 selectedMon, u16 b)
|
||||
return selectedMon;
|
||||
}
|
||||
|
||||
void sub_80BD8D0(void)
|
||||
static void UpdateSelectedMonSpriteId(void)
|
||||
{
|
||||
u16 i;
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
u16 spriteId = sPokedexView->unk61E[i];
|
||||
u16 spriteId = sPokedexView->monSpriteIds[i];
|
||||
|
||||
if (gSprites[spriteId].pos2.x == 0 && gSprites[spriteId].pos2.y == 0 && spriteId != 0xFFFF)
|
||||
sPokedexView->selectedMonSpriteId = spriteId;
|
||||
@@ -2432,16 +2457,16 @@ static bool8 UpdateSelectedMon(void)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
u8 sub_80BDA40(void)
|
||||
static u8 ClearMonSprites(void)
|
||||
{
|
||||
u16 i;
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
if (sPokedexView->unk61E[i] != 0xFFFF)
|
||||
if (sPokedexView->monSpriteIds[i] != 0xFFFF)
|
||||
{
|
||||
FreeAndDestroyMonPicSprite(sPokedexView->unk61E[i]);
|
||||
sPokedexView->unk61E[i] = 0xFFFF;
|
||||
FreeAndDestroyMonPicSprite(sPokedexView->monSpriteIds[i]);
|
||||
sPokedexView->monSpriteIds[i] = 0xFFFF;
|
||||
}
|
||||
}
|
||||
return FALSE;
|
||||
@@ -2463,7 +2488,7 @@ u32 sub_80BDACC(u16 num, s16 x, s16 y)
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
if (sPokedexView->unk61E[i] == 0xFFFF)
|
||||
if (sPokedexView->monSpriteIds[i] == 0xFFFF)
|
||||
{
|
||||
u8 spriteId = CreateMonSpriteFromNationalDexNumber(num, x, y, i);
|
||||
|
||||
@@ -2472,7 +2497,7 @@ u32 sub_80BDACC(u16 num, s16 x, s16 y)
|
||||
gSprites[spriteId].data[0] = 0;
|
||||
gSprites[spriteId].data[1] = i;
|
||||
gSprites[spriteId].data[2] = NationalPokedexNumToSpecies(num);
|
||||
sPokedexView->unk61E[i] = spriteId;
|
||||
sPokedexView->monSpriteIds[i] = spriteId;
|
||||
return spriteId;
|
||||
}
|
||||
}
|
||||
@@ -2725,8 +2750,8 @@ void sub_80BE4E0(struct Sprite *sprite)
|
||||
|
||||
if (sPokedexView->unk64A != 0 && sPokedexView->unk64A != 3)
|
||||
{
|
||||
FreeAndDestroyMonPicSprite(sPokedexView->unk61E[data1]);
|
||||
sPokedexView->unk61E[data1] = 0xFFFF;
|
||||
FreeAndDestroyMonPicSprite(sPokedexView->monSpriteIds[data1]);
|
||||
sPokedexView->monSpriteIds[data1] = 0xFFFF;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -2751,8 +2776,8 @@ void sub_80BE4E0(struct Sprite *sprite)
|
||||
|
||||
if ((sprite->data[5] <= -64 || sprite->data[5] >= 64) && sprite->data[0] != 0)
|
||||
{
|
||||
FreeAndDestroyMonPicSprite(sPokedexView->unk61E[data1]);
|
||||
sPokedexView->unk61E[data1] = 0xFFFF;
|
||||
FreeAndDestroyMonPicSprite(sPokedexView->monSpriteIds[data1]);
|
||||
sPokedexView->monSpriteIds[data1] = 0xFFFF;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3022,7 +3047,7 @@ void LoadInfoScreen(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
static void FreeWindowAndBgBuffers(void)
|
||||
static void FreeWindowAndBgBuffers_(void)
|
||||
{
|
||||
void *r0;
|
||||
FreeAllWindowBuffers();
|
||||
@@ -3148,7 +3173,7 @@ void BeginReturnToPokedex(u8 taskId)
|
||||
if (!gPaletteFade.active)
|
||||
{
|
||||
FreeAndDestroyMonPicSprite(gTasks[taskId].tMonSpriteId);
|
||||
FreeWindowAndBgBuffers();
|
||||
FreeWindowAndBgBuffers_();
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
}
|
||||
@@ -4664,7 +4689,7 @@ int sub_80C0F30(u8 dexMode, u8 sortMode, u8 abcGroup, u8 bodyColor, u8 type1, u8
|
||||
u16 resultsCount;
|
||||
u8 types[2];
|
||||
|
||||
sub_80BC8D4(dexMode, sortMode);
|
||||
CreatePokedexList(dexMode, sortMode);
|
||||
|
||||
for (i = 0, resultsCount = 0; i < NATIONAL_DEX_COUNT; i++)
|
||||
{
|
||||
@@ -4983,11 +5008,11 @@ void sub_80C170C(u8 taskId)
|
||||
sPokedexView->unk62A = 0x40;
|
||||
gUnknown_02039B50 = 0;
|
||||
sPokedexView->unk610 = 0;
|
||||
gSaveBlock2Ptr->pokedex.mode = sub_80C2318(taskId, 5);
|
||||
gSaveBlock2Ptr->pokedex.mode = GetSearchModeSelection(taskId, SEARCH_DEX_MODE);
|
||||
if (!IsNationalPokedexEnabled())
|
||||
gSaveBlock2Ptr->pokedex.mode = DEX_MODE_HOENN;
|
||||
sPokedexView->unk614 = gSaveBlock2Ptr->pokedex.mode;
|
||||
gSaveBlock2Ptr->pokedex.order = sub_80C2318(taskId, 4);
|
||||
gSaveBlock2Ptr->pokedex.order = GetSearchModeSelection(taskId, SEARCH_ORDER);
|
||||
sPokedexView->unk618 = gSaveBlock2Ptr->pokedex.order;
|
||||
PlaySE(SE_PC_OFF);
|
||||
gTasks[taskId].func = sub_80C1D38;
|
||||
@@ -5044,14 +5069,14 @@ void sub_80C170C(u8 taskId)
|
||||
|
||||
void sub_80C19A4(u8 taskId)
|
||||
{
|
||||
u8 r10 = sub_80C2318(taskId, 5);
|
||||
u8 r9 = sub_80C2318(taskId, 4);
|
||||
u8 r8 = sub_80C2318(taskId, 0);
|
||||
u8 r6 = sub_80C2318(taskId, 1);
|
||||
u8 r4 = sub_80C2318(taskId, 2);
|
||||
u8 r0 = sub_80C2318(taskId, 3);
|
||||
u8 dexMode = GetSearchModeSelection(taskId, SEARCH_DEX_MODE);
|
||||
u8 sortMode = GetSearchModeSelection(taskId, SEARCH_ORDER);
|
||||
u8 abcGroup = GetSearchModeSelection(taskId, SEARCH_NAME);
|
||||
u8 bodyColor = GetSearchModeSelection(taskId, SEARCH_COLOR);
|
||||
u8 type1 = GetSearchModeSelection(taskId, SEARCH_TYPE_1);
|
||||
u8 type2 = GetSearchModeSelection(taskId, SEARCH_TYPE_2);
|
||||
|
||||
sub_80C0F30(r10, r9, r8, r6, r4, r0);
|
||||
sub_80C0F30(dexMode, sortMode, abcGroup, bodyColor, type1, type2);
|
||||
gTasks[taskId].func = sub_80C1A4C;
|
||||
}
|
||||
|
||||
@@ -5081,8 +5106,8 @@ void sub_80C1AB8(u8 taskId)
|
||||
if (sPokedexView->pokemonListCount != 0)
|
||||
{
|
||||
sPokedexView->unk64E = 1;
|
||||
sPokedexView->dexMode = sub_80C2318(taskId, 5);
|
||||
sPokedexView->dexOrder = sub_80C2318(taskId, 4);
|
||||
sPokedexView->dexMode = GetSearchModeSelection(taskId, SEARCH_DEX_MODE);
|
||||
sPokedexView->dexOrder = GetSearchModeSelection(taskId, SEARCH_ORDER);
|
||||
gTasks[taskId].func = sub_80C1D38;
|
||||
PlaySE(SE_PC_OFF);
|
||||
}
|
||||
@@ -5102,8 +5127,8 @@ void sub_80C1B64(u8 taskId)
|
||||
|
||||
sub_80C21D4(0);
|
||||
r0 = gTasks[taskId].data[1];
|
||||
p1 = &gTasks[taskId].data[gUnknown_0856EFC8[r0].unk4];
|
||||
p2 = &gTasks[taskId].data[gUnknown_0856EFC8[r0].unk5];
|
||||
p1 = &gTasks[taskId].data[sSearchOptions[r0].unk4];
|
||||
p2 = &gTasks[taskId].data[sSearchOptions[r0].unk5];
|
||||
gTasks[taskId].data[14] = *p1;
|
||||
gTasks[taskId].data[15] = *p2;
|
||||
sub_80C2294(taskId);
|
||||
@@ -5123,10 +5148,10 @@ void sub_80C1BCC(u8 taskId)
|
||||
bool8 r3;
|
||||
|
||||
r1 = gTasks[taskId].data[1];
|
||||
r8 = gUnknown_0856EFC8[r1].pokedexList;
|
||||
p1 = &gTasks[taskId].data[gUnknown_0856EFC8[r1].unk4];
|
||||
p2 = &gTasks[taskId].data[gUnknown_0856EFC8[r1].unk5];
|
||||
r2 = gUnknown_0856EFC8[r1].unk6 - 1;
|
||||
r8 = sSearchOptions[r1].pokedexList;
|
||||
p1 = &gTasks[taskId].data[sSearchOptions[r1].unk4];
|
||||
p2 = &gTasks[taskId].data[sSearchOptions[r1].unk5];
|
||||
r2 = sSearchOptions[r1].numOptions - 1;
|
||||
if (gMain.newKeys & A_BUTTON)
|
||||
{
|
||||
PlaySE(SE_PIN);
|
||||
@@ -5474,9 +5499,9 @@ void sub_80C21D4(u8 a)
|
||||
|
||||
void sub_80C2294(u8 taskId)
|
||||
{
|
||||
const struct PokedexOption *r6 = gUnknown_0856EFC8[gTasks[taskId].data[1]].pokedexList;
|
||||
const u16 *r8 = &gTasks[taskId].data[gUnknown_0856EFC8[gTasks[taskId].data[1]].unk4];
|
||||
const u16 *r7 = &gTasks[taskId].data[gUnknown_0856EFC8[gTasks[taskId].data[1]].unk5];
|
||||
const struct PokedexOption *r6 = sSearchOptions[gTasks[taskId].data[1]].pokedexList;
|
||||
const u16 *r8 = &gTasks[taskId].data[sSearchOptions[gTasks[taskId].data[1]].unk4];
|
||||
const u16 *r7 = &gTasks[taskId].data[sSearchOptions[gTasks[taskId].data[1]].unk5];
|
||||
u16 i;
|
||||
u16 j;
|
||||
|
||||
@@ -5486,32 +5511,32 @@ void sub_80C2294(u8 taskId)
|
||||
sub_80C2618(r6[*r8 + *r7].description);
|
||||
}
|
||||
|
||||
u8 sub_80C2318(u8 taskId, u8 b)
|
||||
static u8 GetSearchModeSelection(u8 taskId, u8 option)
|
||||
{
|
||||
const u16 *ptr1 = &gTasks[taskId].data[gUnknown_0856EFC8[b].unk4];
|
||||
const u16 *ptr2 = &gTasks[taskId].data[gUnknown_0856EFC8[b].unk5];
|
||||
const u16 *ptr1 = &gTasks[taskId].data[sSearchOptions[option].unk4];
|
||||
const u16 *ptr2 = &gTasks[taskId].data[sSearchOptions[option].unk5];
|
||||
u16 type = *ptr1 + *ptr2;
|
||||
|
||||
switch (b)
|
||||
switch (option)
|
||||
{
|
||||
default:
|
||||
return 0;
|
||||
case 5:
|
||||
return gUnknown_0856EFAC[type];
|
||||
case 4:
|
||||
return gUnknown_0856EFAE[type];
|
||||
case 0:
|
||||
case SEARCH_DEX_MODE:
|
||||
return sPokedexModes[type];
|
||||
case SEARCH_ORDER:
|
||||
return sSortOptions[type];
|
||||
case SEARCH_NAME:
|
||||
if (type == 0)
|
||||
return 0xFF;
|
||||
else
|
||||
return type;
|
||||
case 1:
|
||||
case SEARCH_COLOR:
|
||||
if (type == 0)
|
||||
return 0xFF;
|
||||
else
|
||||
return type - 1;
|
||||
case 2:
|
||||
case 3:
|
||||
case SEARCH_TYPE_1:
|
||||
case SEARCH_TYPE_2:
|
||||
return gDexSearchTypeIds[type];
|
||||
}
|
||||
}
|
||||
@@ -5560,8 +5585,8 @@ void sub_80C23B8(u8 taskId)
|
||||
bool8 sub_80C244C(u8 taskId)
|
||||
{
|
||||
u8 val1 = gTasks[taskId].data[1];
|
||||
const u16 *ptr = &gTasks[taskId].data[gUnknown_0856EFC8[val1].unk5];
|
||||
u16 val2 = gUnknown_0856EFC8[val1].unk6 - 1;
|
||||
const u16 *ptr = &gTasks[taskId].data[sSearchOptions[val1].unk5];
|
||||
u16 val2 = sSearchOptions[val1].numOptions - 1;
|
||||
|
||||
if (val2 > 5 && *ptr != 0)
|
||||
return FALSE;
|
||||
@@ -5572,8 +5597,8 @@ bool8 sub_80C244C(u8 taskId)
|
||||
bool8 sub_80C2494(u8 taskId)
|
||||
{
|
||||
u8 val1 = gTasks[taskId].data[1];
|
||||
const u16 *ptr = &gTasks[taskId].data[gUnknown_0856EFC8[val1].unk5];
|
||||
u16 val2 = gUnknown_0856EFC8[val1].unk6 - 1;
|
||||
const u16 *ptr = &gTasks[taskId].data[sSearchOptions[val1].unk5];
|
||||
u16 val2 = sSearchOptions[val1].numOptions - 1;
|
||||
|
||||
if (val2 > 5 && *ptr < val2 - 5)
|
||||
return FALSE;
|
||||
|
||||
+14
-12
@@ -2043,7 +2043,8 @@ static const u8 sGetMonDataEVConstants[] =
|
||||
MON_DATA_SPATK_EV
|
||||
};
|
||||
|
||||
static const u8 gUnknown_08329EC8[] =
|
||||
// For stat-raising items
|
||||
static const u8 sStatsToRaise[] =
|
||||
{
|
||||
STAT_ATK, STAT_ATK, STAT_SPEED, STAT_DEF, STAT_SPATK, STAT_ACC
|
||||
};
|
||||
@@ -4691,7 +4692,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
|
||||
gBattleMons[battlerId].status2 &= ~STATUS2_INFATUATION;
|
||||
retVal = FALSE;
|
||||
}
|
||||
if ((itemEffect[cmdIndex] & ITEM0_HIGH_CRIT)
|
||||
if ((itemEffect[cmdIndex] & ITEM0_DIRE_HIT)
|
||||
&& !(gBattleMons[gActiveBattler].status2 & STATUS2_FOCUS_ENERGY))
|
||||
{
|
||||
gBattleMons[gActiveBattler].status2 |= STATUS2_FOCUS_ENERGY;
|
||||
@@ -4745,7 +4746,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if ((itemEffect[cmdIndex] & ITEM3_MIST)
|
||||
if ((itemEffect[cmdIndex] & ITEM3_GUARD_SPEC)
|
||||
&& gSideTimers[GetBattlerSide(gActiveBattler)].mistTimer == 0)
|
||||
{
|
||||
gSideTimers[GetBattlerSide(gActiveBattler)].mistTimer = 5;
|
||||
@@ -5285,15 +5286,15 @@ u8 GetItemEffectParamOffset(u16 itemId, u8 effectByte, u8 effectBit)
|
||||
return offset;
|
||||
}
|
||||
|
||||
static void sub_806CF24(s32 arg0)
|
||||
static void BufferStatRoseMessage(s32 arg0)
|
||||
{
|
||||
gBattlerTarget = gBattlerInMenuId;
|
||||
StringCopy(gBattleTextBuff1, gStatNamesTable[gUnknown_08329EC8[arg0]]);
|
||||
StringCopy(gBattleTextBuff1, gStatNamesTable[sStatsToRaise[arg0]]);
|
||||
StringCopy(gBattleTextBuff2, gText_StatRose);
|
||||
BattleStringExpandPlaceholdersToDisplayedString(gText_PkmnsStatChanged2);
|
||||
}
|
||||
|
||||
u8 *sub_806CF78(u16 itemId)
|
||||
u8 *UseStatIncreaseItem(u16 itemId)
|
||||
{
|
||||
int i;
|
||||
const u8 *itemEffect;
|
||||
@@ -5314,13 +5315,14 @@ u8 *sub_806CF78(u16 itemId)
|
||||
|
||||
for (i = 0; i < 3; i++)
|
||||
{
|
||||
if (itemEffect[i] & 0xF)
|
||||
sub_806CF24(i * 2);
|
||||
if (itemEffect[i] & 0xF0)
|
||||
if (itemEffect[i] & (ITEM0_X_ATTACK | ITEM1_X_SPEED | ITEM2_X_SPATK))
|
||||
BufferStatRoseMessage(i * 2);
|
||||
|
||||
if (itemEffect[i] & (ITEM0_DIRE_HIT | ITEM1_X_DEFEND | ITEM2_X_ACCURACY))
|
||||
{
|
||||
if (i)
|
||||
if (i != 0) // Dire Hit is the only ITEM0 above
|
||||
{
|
||||
sub_806CF24(i * 2 + 1);
|
||||
BufferStatRoseMessage(i * 2 + 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -5330,7 +5332,7 @@ u8 *sub_806CF78(u16 itemId)
|
||||
}
|
||||
}
|
||||
|
||||
if (itemEffect[3] & ITEM3_MIST)
|
||||
if (itemEffect[3] & ITEM3_GUARD_SPEC)
|
||||
{
|
||||
gBattlerAttacker = gBattlerInMenuId;
|
||||
BattleStringExpandPlaceholdersToDisplayedString(gText_PkmnShroudedInMist);
|
||||
|
||||
@@ -1855,7 +1855,7 @@ static void FieldCb_ReturnToPcMenu(void)
|
||||
gTasks[taskId].data[1] = sPreviousBoxOption;
|
||||
Task_PokemonStorageSystemPC(taskId);
|
||||
SetVBlankCallback(vblankCb);
|
||||
pal_fill_black();
|
||||
FadeInFromBlack();
|
||||
}
|
||||
|
||||
static void CreatePCMenu(u8 whichMenu, s16 *windowIdPtr)
|
||||
|
||||
+1
-1
@@ -369,7 +369,7 @@ static void Task_RecordMixing_Main(u8 taskId)
|
||||
sub_808729C();
|
||||
if (gWirelessCommType != 0)
|
||||
{
|
||||
CreateTask(sub_80AF2B4, 10);
|
||||
CreateTask(Task_ReturnToFieldRecordMixing, 10);
|
||||
}
|
||||
ClearDialogWindowAndFrame(0, 1);
|
||||
DestroyTask(taskId);
|
||||
|
||||
+2
-2
@@ -997,7 +997,7 @@ static void RegionMap_InitializeStateBasedOnPlayerLocation(void)
|
||||
break;
|
||||
case MAP_TYPE_UNDERGROUND:
|
||||
case MAP_TYPE_UNUSED_2:
|
||||
if (gMapHeader.flags & 0x02)
|
||||
if (gMapHeader.flags & MAP_ALLOW_ESCAPE_ROPE)
|
||||
{
|
||||
mapHeader = Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->escapeWarp.mapGroup, gSaveBlock1Ptr->escapeWarp.mapNum);
|
||||
gRegionMap->mapSecId = mapHeader->regionMapSectionId;
|
||||
@@ -1158,7 +1158,7 @@ static void RegionMap_InitializeStateBasedOnSSTidalLocation(void)
|
||||
gRegionMap->mapSecId = MAPSEC_ROUTE_131;
|
||||
break;
|
||||
default:
|
||||
case SS_TIDAL_LOCATION_OTHER:
|
||||
case SS_TIDAL_LOCATION_CURRENTS:
|
||||
mapHeader = Overworld_GetMapHeaderByGroupAndId(mapGroup, mapNum);
|
||||
|
||||
gRegionMap->mapSecId = mapHeader->regionMapSectionId;
|
||||
|
||||
+1
-1
@@ -1727,7 +1727,7 @@ static void sub_8141E7C(u8 taskId) // end roulette ?
|
||||
ResetPaletteFade();
|
||||
ResetSpriteData();
|
||||
sub_8140418();
|
||||
gFieldCallback = FieldCallback_ReturnToEventScript2;
|
||||
gFieldCallback = FieldCB_ContinueScriptHandleMusic;
|
||||
SetMainCallback2(CB2_ReturnToField);
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
|
||||
+3
-3
@@ -810,7 +810,7 @@ bool8 ScrCmd_warpteleport(struct ScriptContext *ctx)
|
||||
u16 y = VarGet(ScriptReadHalfword(ctx));
|
||||
|
||||
SetWarpDestination(mapGroup, mapNum, warpId, x, y);
|
||||
sub_80AF848();
|
||||
DoTeleportWarp();
|
||||
ResetInitialPlayerAvatarState();
|
||||
return TRUE;
|
||||
}
|
||||
@@ -2286,7 +2286,7 @@ void SetMovingNpcId(u16 npcId)
|
||||
sMovingNpcId = npcId;
|
||||
}
|
||||
|
||||
bool8 ScrCmd_warpE0(struct ScriptContext *ctx)
|
||||
bool8 ScrCmd_warpsootopolislegend(struct ScriptContext *ctx)
|
||||
{
|
||||
u8 mapGroup = ScriptReadByte(ctx);
|
||||
u8 mapNum = ScriptReadByte(ctx);
|
||||
@@ -2295,7 +2295,7 @@ bool8 ScrCmd_warpE0(struct ScriptContext *ctx)
|
||||
u16 y = VarGet(ScriptReadHalfword(ctx));
|
||||
|
||||
SetWarpDestination(mapGroup, mapNum, warpId, x, y);
|
||||
sub_80AF79C();
|
||||
DoSootopolisLegendWarp();
|
||||
ResetInitialPlayerAvatarState();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
+4
-3
@@ -16,6 +16,7 @@
|
||||
#include "fldeff.h"
|
||||
#include "fldeff_misc.h"
|
||||
#include "international_string_util.h"
|
||||
#include "item_menu.h"
|
||||
#include "link.h"
|
||||
#include "list_menu.h"
|
||||
#include "main.h"
|
||||
@@ -413,7 +414,7 @@ static void Task_EnterSecretBase(u8 taskId)
|
||||
|
||||
SetSecretBaseWarpDestination();
|
||||
WarpIntoMap();
|
||||
gFieldCallback = FieldCallback_ReturnToEventScript2;
|
||||
gFieldCallback = FieldCB_ContinueScriptHandleMusic;
|
||||
SetMainCallback2(CB2_LoadMap);
|
||||
DestroyTask(taskId);
|
||||
break;
|
||||
@@ -456,7 +457,7 @@ static void EnterNewlyCreatedSecretBase_StartFadeIn(void)
|
||||
y += 7;
|
||||
MapGridSetMetatileIdAt(x, y, 0x220 | METATILE_COLLISION_MASK);
|
||||
CurrentMapDrawMetatileAt(x, y);
|
||||
pal_fill_black();
|
||||
FadeInFromBlack();
|
||||
CreateTask(EnterNewlyCreatedSecretBase_WaitFadeIn, 0);
|
||||
}
|
||||
|
||||
@@ -678,7 +679,7 @@ static void Task_WarpOutOfSecretBase(u8 taskId)
|
||||
case 2:
|
||||
SetWarpDestinationToDynamicWarp(0x7e);
|
||||
WarpIntoMap();
|
||||
gFieldCallback = mapldr_default;
|
||||
gFieldCallback = FieldCB_DefaultWarpExit;
|
||||
SetMainCallback2(CB2_LoadMap);
|
||||
ScriptContext2_Disable();
|
||||
DestroyTask(taskId);
|
||||
|
||||
+1
-1
@@ -390,7 +390,7 @@ static void Task_GoToBuyOrSellMenu(u8 taskId)
|
||||
|
||||
static void MapPostLoadHook_ReturnToShopMenu(void)
|
||||
{
|
||||
pal_fill_black();
|
||||
FadeInFromBlack();
|
||||
CreateTask(Task_ReturnToShopMenu, 8);
|
||||
}
|
||||
|
||||
|
||||
+25
-27
@@ -83,7 +83,7 @@ EWRAM_DATA static u8 sBattlePyramidFloorWindowId = 0;
|
||||
EWRAM_DATA static u8 sStartMenuCursorPos = 0;
|
||||
EWRAM_DATA static u8 sNumStartMenuActions = 0;
|
||||
EWRAM_DATA static u8 sCurrentStartMenuActions[9] = {0};
|
||||
EWRAM_DATA static u8 sUnknown_02037619[2] = {0};
|
||||
EWRAM_DATA static u8 sInitStartMenuData[2] = {0};
|
||||
|
||||
EWRAM_DATA static u8 (*sSaveDialogCallback)(void) = NULL;
|
||||
EWRAM_DATA static u8 sSaveDialogTimer = 0;
|
||||
@@ -135,9 +135,7 @@ static void StartMenuTask(u8 taskId);
|
||||
static void SaveGameTask(u8 taskId);
|
||||
static void sub_80A0550(u8 taskId);
|
||||
static void sub_80A08A4(u8 taskId);
|
||||
|
||||
// Some other callback
|
||||
static bool8 sub_809FA00(void);
|
||||
static bool8 FieldCB_ReturnToFieldStartMenu(void);
|
||||
|
||||
static const struct WindowTemplate sSafariBallsWindowTemplate = {0, 1, 1, 9, 4, 0xF, 8};
|
||||
|
||||
@@ -203,7 +201,7 @@ static void BuildLinkModeStartMenu(void);
|
||||
static void BuildUnionRoomStartMenu(void);
|
||||
static void BuildBattlePikeStartMenu(void);
|
||||
static void BuildBattlePyramidStartMenu(void);
|
||||
static void BuildMultiBattleRoomStartMenu(void);
|
||||
static void BuildMultiPartnerRoomStartMenu(void);
|
||||
static void ShowSafariBallsWindow(void);
|
||||
static void ShowPyramidFloorWindow(void);
|
||||
static void RemoveExtraStartMenuWindows(void);
|
||||
@@ -258,9 +256,9 @@ static void BuildStartMenuActions(void)
|
||||
{
|
||||
BuildBattlePyramidStartMenu();
|
||||
}
|
||||
else if (InMultiBattleRoom())
|
||||
else if (InMultiPartnerRoom())
|
||||
{
|
||||
BuildMultiBattleRoomStartMenu();
|
||||
BuildMultiPartnerRoomStartMenu();
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -358,7 +356,7 @@ static void BuildBattlePyramidStartMenu(void)
|
||||
AddStartMenuAction(MENU_ACTION_EXIT);
|
||||
}
|
||||
|
||||
static void BuildMultiBattleRoomStartMenu(void)
|
||||
static void BuildMultiPartnerRoomStartMenu(void)
|
||||
{
|
||||
AddStartMenuAction(MENU_ACTION_POKEMON);
|
||||
AddStartMenuAction(MENU_ACTION_PLAYER);
|
||||
@@ -440,33 +438,33 @@ static bool32 PrintStartMenuActions(s8 *pIndex, u32 count)
|
||||
|
||||
static bool32 InitStartMenuStep(void)
|
||||
{
|
||||
s8 value = sUnknown_02037619[0];
|
||||
s8 state = sInitStartMenuData[0];
|
||||
|
||||
switch (value)
|
||||
switch (state)
|
||||
{
|
||||
case 0:
|
||||
sUnknown_02037619[0]++;
|
||||
sInitStartMenuData[0]++;
|
||||
break;
|
||||
case 1:
|
||||
BuildStartMenuActions();
|
||||
sUnknown_02037619[0]++;
|
||||
sInitStartMenuData[0]++;
|
||||
break;
|
||||
case 2:
|
||||
sub_81973A4();
|
||||
DrawStdWindowFrame(sub_81979C4(sNumStartMenuActions), FALSE);
|
||||
sUnknown_02037619[1] = 0;
|
||||
sUnknown_02037619[0]++;
|
||||
sInitStartMenuData[1] = 0;
|
||||
sInitStartMenuData[0]++;
|
||||
break;
|
||||
case 3:
|
||||
if (GetSafariZoneFlag())
|
||||
ShowSafariBallsWindow();
|
||||
if (InBattlePyramid())
|
||||
ShowPyramidFloorWindow();
|
||||
sUnknown_02037619[0]++;
|
||||
sInitStartMenuData[0]++;
|
||||
break;
|
||||
case 4:
|
||||
if (PrintStartMenuActions(&sUnknown_02037619[1], 2))
|
||||
sUnknown_02037619[0]++;
|
||||
if (PrintStartMenuActions(&sInitStartMenuData[1], 2))
|
||||
sInitStartMenuData[0]++;
|
||||
break;
|
||||
case 5:
|
||||
sStartMenuCursorPos = sub_81983AC(GetStartMenuWindowId(), 1, 0, 9, 16, sNumStartMenuActions, sStartMenuCursorPos);
|
||||
@@ -479,8 +477,8 @@ static bool32 InitStartMenuStep(void)
|
||||
|
||||
static void InitStartMenu(void)
|
||||
{
|
||||
sUnknown_02037619[0] = 0;
|
||||
sUnknown_02037619[1] = 0;
|
||||
sInitStartMenuData[0] = 0;
|
||||
sInitStartMenuData[1] = 0;
|
||||
while (!InitStartMenuStep())
|
||||
;
|
||||
}
|
||||
@@ -495,28 +493,28 @@ static void CreateStartMenuTask(TaskFunc followupFunc)
|
||||
{
|
||||
u8 taskId;
|
||||
|
||||
sUnknown_02037619[0] = 0;
|
||||
sUnknown_02037619[1] = 0;
|
||||
sInitStartMenuData[0] = 0;
|
||||
sInitStartMenuData[1] = 0;
|
||||
taskId = CreateTask(StartMenuTask, 0x50);
|
||||
SetTaskFuncWithFollowupFunc(taskId, StartMenuTask, followupFunc);
|
||||
}
|
||||
|
||||
static bool8 sub_809FA00(void)
|
||||
static bool8 FieldCB_ReturnToFieldStartMenu(void)
|
||||
{
|
||||
if (InitStartMenuStep() == FALSE)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
sub_80AF688();
|
||||
ReturnToFieldOpenStartMenu();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void sub_809FA18(void)
|
||||
void ShowReturnToFieldStartMenu(void)
|
||||
{
|
||||
sUnknown_02037619[0] = 0;
|
||||
sUnknown_02037619[1] = 0;
|
||||
gFieldCallback2 = sub_809FA00;
|
||||
sInitStartMenuData[0] = 0;
|
||||
sInitStartMenuData[1] = 0;
|
||||
gFieldCallback2 = FieldCB_ReturnToFieldStartMenu;
|
||||
}
|
||||
|
||||
void Task_ShowStartMenu(u8 taskId)
|
||||
|
||||
+25
-217
@@ -1988,73 +1988,28 @@ static void DrawTradeMenuPartyMonInfo(u8 whichParty, u8 monIdx, u8 x, u8 y, u8 w
|
||||
sTradeMenuData->tilemapBuffer[(y - 1) * 32 + x + 1] = symbolTile;
|
||||
}
|
||||
|
||||
// Very close but loop preamble not working.
|
||||
#ifdef NONMATCHING
|
||||
static void DrawTradeMenuPartyInfo(u8 whichParty)
|
||||
{
|
||||
int i;
|
||||
|
||||
s32 i;
|
||||
for (i = 0; i < sTradeMenuData->partyCounts[whichParty]; i++)
|
||||
{
|
||||
DrawTradeMenuPartyMonInfo(whichParty, i,
|
||||
sTradeMonLevelCoords[whichParty][i][0],
|
||||
sTradeMonLevelCoords[whichParty][i][1],
|
||||
sTradeMonBoxCoords[whichParty][i][0],
|
||||
sTradeMonBoxCoords[whichParty][i][1]);
|
||||
const u8 (*r5)[2];
|
||||
const u8 (*r4)[2];
|
||||
u32 r0 = 3 * whichParty;
|
||||
const u8 (*r1)[2][2] = sTradeMonLevelCoords;
|
||||
|
||||
r5 = r1[r0];
|
||||
r4 = sTradeMonBoxCoords[r0];
|
||||
DrawTradeMenuPartyMonInfo(
|
||||
whichParty,
|
||||
i,
|
||||
r5[i][0],
|
||||
r5[i][1],
|
||||
r4[i][0],
|
||||
r4[i][1]
|
||||
);
|
||||
}
|
||||
}
|
||||
#else
|
||||
NAKED
|
||||
static void DrawTradeMenuPartyInfo(u8 whichParty)
|
||||
{
|
||||
asm_unified("push {r4-r7,lr}\n\
|
||||
sub sp, 0x8\n\
|
||||
lsls r0, 24\n\
|
||||
lsrs r6, r0, 24\n\
|
||||
movs r7, 0\n\
|
||||
ldr r0, =sTradeMenuData\n\
|
||||
ldr r0, [r0]\n\
|
||||
adds r0, 0x36\n\
|
||||
adds r0, r6\n\
|
||||
ldrb r0, [r0]\n\
|
||||
cmp r7, r0\n\
|
||||
bge _08079E94\n\
|
||||
lsls r0, r6, 1\n\
|
||||
adds r0, r6\n\
|
||||
ldr r1, =sTradeMonLevelCoords\n\
|
||||
lsls r0, 2\n\
|
||||
adds r5, r0, r1\n\
|
||||
ldr r1, =sTradeMonBoxCoords\n\
|
||||
adds r4, r0, r1\n\
|
||||
_08079E6A:\n\
|
||||
lsls r1, r7, 24\n\
|
||||
lsrs r1, 24\n\
|
||||
ldrb r2, [r5]\n\
|
||||
ldrb r3, [r5, 0x1]\n\
|
||||
ldrb r0, [r4]\n\
|
||||
str r0, [sp]\n\
|
||||
ldrb r0, [r4, 0x1]\n\
|
||||
str r0, [sp, 0x4]\n\
|
||||
adds r0, r6, 0\n\
|
||||
bl DrawTradeMenuPartyMonInfo\n\
|
||||
adds r5, 0x2\n\
|
||||
adds r4, 0x2\n\
|
||||
adds r7, 0x1\n\
|
||||
ldr r0, =sTradeMenuData\n\
|
||||
ldr r0, [r0]\n\
|
||||
adds r0, 0x36\n\
|
||||
adds r0, r6\n\
|
||||
ldrb r0, [r0]\n\
|
||||
cmp r7, r0\n\
|
||||
blt _08079E6A\n\
|
||||
_08079E94:\n\
|
||||
add sp, 0x8\n\
|
||||
pop {r4-r7}\n\
|
||||
pop {r0}\n\
|
||||
bx r0\n\
|
||||
.pool");
|
||||
}
|
||||
#endif // NONMATCHING
|
||||
|
||||
static void ResetTradeMenuPartyPositions(u8 whichParty)
|
||||
{
|
||||
@@ -2541,10 +2496,8 @@ int CanRegisterMonForTradingBoard(struct UnkLinkRfuStruct_02022B14Substruct rfuP
|
||||
return CANT_REGISTER_MON;
|
||||
}
|
||||
|
||||
// r6/r7 flip. Ugh.
|
||||
// Spin Trade wasnt fully implemented, but this checks if a mon would be valid to Spin Trade
|
||||
// Unlike later generations, this version of Spin Trade isnt only for Eggs
|
||||
#ifdef NONMATCHING
|
||||
int CanSpinTradeMon(struct Pokemon *mon, u16 monIdx)
|
||||
{
|
||||
int i, version, versions, canTradeAnyMon, numMonsLeft;
|
||||
@@ -2560,8 +2513,8 @@ int CanSpinTradeMon(struct Pokemon *mon, u16 monIdx)
|
||||
}
|
||||
}
|
||||
|
||||
canTradeAnyMon = TRUE;
|
||||
versions = 0;
|
||||
canTradeAnyMon = TRUE;
|
||||
for (i = 0; i < GetLinkPlayerCount(); i++)
|
||||
{
|
||||
version = gLinkPlayers[i].version & 0xFF;
|
||||
@@ -2581,11 +2534,14 @@ int CanSpinTradeMon(struct Pokemon *mon, u16 monIdx)
|
||||
struct LinkPlayer *player = &gLinkPlayers[i];
|
||||
|
||||
// Does player not have National Dex
|
||||
if (!(player->progressFlags & 0xF))
|
||||
canTradeAnyMon = FALSE;
|
||||
do
|
||||
{
|
||||
if (!(player->progressFlags & 0xF))
|
||||
canTradeAnyMon = FALSE;
|
||||
|
||||
if (versions && (player->progressFlags / 16))
|
||||
canTradeAnyMon = FALSE;
|
||||
if (versions && (player->progressFlags / 16))
|
||||
canTradeAnyMon = FALSE;
|
||||
} while (0);
|
||||
}
|
||||
|
||||
if (canTradeAnyMon == FALSE)
|
||||
@@ -2611,154 +2567,6 @@ int CanSpinTradeMon(struct Pokemon *mon, u16 monIdx)
|
||||
else
|
||||
return CAN_TRADE_MON;
|
||||
}
|
||||
#else
|
||||
NAKED
|
||||
int CanSpinTradeMon(struct Pokemon *mon, u16 a1)
|
||||
{
|
||||
asm_unified("push {r4-r7,lr}\n\
|
||||
mov r7, r8\n\
|
||||
push {r7}\n\
|
||||
sub sp, 0x18\n\
|
||||
adds r6, r0, 0\n\
|
||||
lsls r1, 16\n\
|
||||
lsrs r1, 16\n\
|
||||
mov r8, r1\n\
|
||||
movs r5, 0\n\
|
||||
ldr r0, =gPlayerPartyCount\n\
|
||||
ldrb r0, [r0]\n\
|
||||
cmp r5, r0\n\
|
||||
bge _0807A95A\n\
|
||||
mov r4, sp\n\
|
||||
_0807A934:\n\
|
||||
movs r0, 0x64\n\
|
||||
muls r0, r5\n\
|
||||
adds r0, r6, r0\n\
|
||||
movs r1, 0x41\n\
|
||||
bl GetMonData\n\
|
||||
str r0, [r4]\n\
|
||||
movs r1, 0xCE\n\
|
||||
lsls r1, 1\n\
|
||||
cmp r0, r1\n\
|
||||
bne _0807A94E\n\
|
||||
movs r0, 0\n\
|
||||
str r0, [r4]\n\
|
||||
_0807A94E:\n\
|
||||
adds r4, 0x4\n\
|
||||
adds r5, 0x1\n\
|
||||
ldr r0, =gPlayerPartyCount\n\
|
||||
ldrb r0, [r0]\n\
|
||||
cmp r5, r0\n\
|
||||
blt _0807A934\n\
|
||||
_0807A95A:\n\
|
||||
movs r7, 0\n\
|
||||
movs r6, 0x1\n\
|
||||
movs r5, 0\n\
|
||||
ldr r4, =gLinkPlayers\n\
|
||||
b _0807A980\n\
|
||||
.pool\n\
|
||||
_0807A96C:\n\
|
||||
ldrb r0, [r4]\n\
|
||||
subs r0, 0x4\n\
|
||||
cmp r0, 0x1\n\
|
||||
bhi _0807A978\n\
|
||||
movs r7, 0\n\
|
||||
b _0807A97C\n\
|
||||
_0807A978:\n\
|
||||
movs r0, 0x1\n\
|
||||
orrs r7, r0\n\
|
||||
_0807A97C:\n\
|
||||
adds r4, 0x1C\n\
|
||||
adds r5, 0x1\n\
|
||||
_0807A980:\n\
|
||||
bl GetLinkPlayerCount\n\
|
||||
lsls r0, 24\n\
|
||||
lsrs r0, 24\n\
|
||||
cmp r5, r0\n\
|
||||
blt _0807A96C\n\
|
||||
movs r5, 0\n\
|
||||
movs r4, 0\n\
|
||||
b _0807A9B4\n\
|
||||
_0807A992:\n\
|
||||
ldr r0, =gLinkPlayers\n\
|
||||
adds r2, r4, r0\n\
|
||||
ldrb r1, [r2, 0x10]\n\
|
||||
movs r0, 0xF\n\
|
||||
ands r0, r1\n\
|
||||
cmp r0, 0\n\
|
||||
bne _0807A9A2\n\
|
||||
movs r6, 0\n\
|
||||
_0807A9A2:\n\
|
||||
cmp r7, 0\n\
|
||||
beq _0807A9B0\n\
|
||||
ldrb r0, [r2, 0x10]\n\
|
||||
lsrs r0, 4\n\
|
||||
cmp r0, 0\n\
|
||||
beq _0807A9B0\n\
|
||||
movs r6, 0\n\
|
||||
_0807A9B0:\n\
|
||||
adds r4, 0x1C\n\
|
||||
adds r5, 0x1\n\
|
||||
_0807A9B4:\n\
|
||||
bl GetLinkPlayerCount\n\
|
||||
lsls r0, 24\n\
|
||||
lsrs r0, 24\n\
|
||||
cmp r5, r0\n\
|
||||
blt _0807A992\n\
|
||||
cmp r6, 0\n\
|
||||
bne _0807A9EA\n\
|
||||
mov r1, r8\n\
|
||||
lsls r0, r1, 2\n\
|
||||
mov r1, sp\n\
|
||||
adds r4, r1, r0\n\
|
||||
ldrh r0, [r4]\n\
|
||||
bl IsSpeciesInHoennDex\n\
|
||||
cmp r0, 0\n\
|
||||
bne _0807A9E0\n\
|
||||
movs r0, 0x2\n\
|
||||
b _0807AA1A\n\
|
||||
.pool\n\
|
||||
_0807A9E0:\n\
|
||||
ldr r0, [r4]\n\
|
||||
cmp r0, 0\n\
|
||||
bne _0807A9EA\n\
|
||||
movs r0, 0x3\n\
|
||||
b _0807AA1A\n\
|
||||
_0807A9EA:\n\
|
||||
movs r2, 0\n\
|
||||
movs r5, 0\n\
|
||||
ldr r0, =gPlayerPartyCount\n\
|
||||
ldrb r0, [r0]\n\
|
||||
cmp r2, r0\n\
|
||||
bge _0807AA0A\n\
|
||||
adds r3, r0, 0\n\
|
||||
mov r1, sp\n\
|
||||
_0807A9FA:\n\
|
||||
cmp r8, r5\n\
|
||||
beq _0807AA02\n\
|
||||
ldr r0, [r1]\n\
|
||||
adds r2, r0\n\
|
||||
_0807AA02:\n\
|
||||
adds r1, 0x4\n\
|
||||
adds r5, 0x1\n\
|
||||
cmp r5, r3\n\
|
||||
blt _0807A9FA\n\
|
||||
_0807AA0A:\n\
|
||||
cmp r2, 0\n\
|
||||
beq _0807AA18\n\
|
||||
movs r0, 0\n\
|
||||
b _0807AA1A\n\
|
||||
.pool\n\
|
||||
_0807AA18:\n\
|
||||
movs r0, 0x1\n\
|
||||
_0807AA1A:\n\
|
||||
add sp, 0x18\n\
|
||||
pop {r3}\n\
|
||||
mov r8, r3\n\
|
||||
pop {r4-r7}\n\
|
||||
pop {r1}\n\
|
||||
bx r1");
|
||||
}
|
||||
#endif // NONMATCHING
|
||||
|
||||
static void sub_807AA28(struct Sprite *sprite)
|
||||
{
|
||||
@@ -4942,7 +4750,7 @@ static void Task_InGameTrade(u8 taskId)
|
||||
if (!gPaletteFade.active)
|
||||
{
|
||||
SetMainCallback2(CB2_InGameTrade);
|
||||
gFieldCallback = FieldCallback_ReturnToEventScript2;
|
||||
gFieldCallback = FieldCB_ContinueScriptHandleMusic;
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
}
|
||||
|
||||
+3
-3
@@ -1424,7 +1424,7 @@ void sub_8014384(void)
|
||||
break;
|
||||
case 1:
|
||||
if (!FuncIsActiveTask(sub_80140E0))
|
||||
SetMainCallback2(sub_8086074);
|
||||
SetMainCallback2(CB2_ReturnToFieldCableClub);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -2880,7 +2880,7 @@ void sub_80156E0(u8 taskId)
|
||||
if (!gPaletteFade.active)
|
||||
{
|
||||
sUnionRoomTrade.field_0 = 1;
|
||||
gFieldCallback = sub_80AF128;
|
||||
gFieldCallback = FieldCB_ContinueScriptUnionRoom;
|
||||
ChooseMonForTradingBoard(PARTY_MENU_TYPE_UNION_ROOM_REGISTER, CB2_ReturnToField);
|
||||
}
|
||||
break;
|
||||
@@ -2992,7 +2992,7 @@ void sub_80156E0(u8 taskId)
|
||||
memcpy(&gUnknown_02022C38, &data->field_0->arr[taskData[1]].unk.field_0.unk_00, sizeof(gUnknown_02022C38));
|
||||
gUnionRoomRequestedMonType = data->field_0->arr[taskData[1]].unk.field_0.type;
|
||||
gUnionRoomOfferedSpecies = data->field_0->arr[taskData[1]].unk.field_0.species;
|
||||
gFieldCallback = sub_80AF128;
|
||||
gFieldCallback = FieldCB_ContinueScriptUnionRoom;
|
||||
ChooseMonForTradingBoard(PARTY_MENU_TYPE_UNION_ROOM_TRADE, CB2_ReturnToField);
|
||||
sub_80156B0(data);
|
||||
sUnionRoomTrade.field_8 = taskData[1];
|
||||
|
||||
+1
-1
@@ -70,7 +70,7 @@ static void CB2_HandleGivenWaldaPhrase(void)
|
||||
}
|
||||
|
||||
StringCopy(gStringVar1, GetWaldaPhrasePtr());
|
||||
gFieldCallback = FieldCallback_ReturnToEventScript2;
|
||||
gFieldCallback = FieldCB_ContinueScriptHandleMusic;
|
||||
SetMainCallback2(CB2_ReturnToField);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user