diff options
Diffstat (limited to 'src')
32 files changed, 647 insertions, 857 deletions
diff --git a/src/battle_ai_switch_items.c b/src/battle_ai_switch_items.c index 6ef359150..32f9620b7 100644 --- a/src/battle_ai_switch_items.c +++ b/src/battle_ai_switch_items.c @@ -787,9 +787,9 @@ static u8 GetAI_ItemType(u8 itemId, const u8 *itemEffect) // NOTE: should take u return AI_ITEM_HEAL_HP; else if (itemEffect[3] & ITEM3_STATUS_ALL) return AI_ITEM_CURE_CONDITION; - else if (itemEffect[0] & (ITEM0_HIGH_CRIT | ITEM0_X_ATTACK) || itemEffect[1] != 0 || itemEffect[2] != 0) + else if (itemEffect[0] & (ITEM0_DIRE_HIT | ITEM0_X_ATTACK) || itemEffect[1] != 0 || itemEffect[2] != 0) return AI_ITEM_X_STAT; - else if (itemEffect[3] & ITEM3_MIST) + else if (itemEffect[3] & ITEM3_GUARD_SPEC) return AI_ITEM_GUARD_SPECS; else return AI_ITEM_NOT_RECOGNIZABLE; @@ -907,7 +907,7 @@ static bool8 ShouldUseItem(void) *(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= 0x8; if (itemEffects[2] & ITEM2_X_ACCURACY) *(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= 0x20; - if (itemEffects[0] & ITEM0_HIGH_CRIT) + if (itemEffects[0] & ITEM0_DIRE_HIT) *(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= 0x80; shouldUse = TRUE; break; diff --git a/src/battle_arena.c b/src/battle_arena.c index 67f0cc90e..42a967fc6 100644 --- a/src/battle_arena.c +++ b/src/battle_arena.c @@ -791,7 +791,7 @@ static void InitArenaChallenge(void) gSaveBlock2Ptr->frontier.challengeStatus = 0; gSaveBlock2Ptr->frontier.curChallengeBattleNum = 0; gSaveBlock2Ptr->frontier.challengePaused = FALSE; - gSaveBlock2Ptr->frontier.field_CA9_b = 0; + gSaveBlock2Ptr->frontier.disableRecordBattle = FALSE; if (lvlMode != FRONTIER_LVL_50) isCurrent = gSaveBlock2Ptr->frontier.winStreakActiveFlags & STREAK_ARENA_OPEN; else diff --git a/src/battle_controller_link_opponent.c b/src/battle_controller_link_opponent.c index e888531cb..6604fa142 100644 --- a/src/battle_controller_link_opponent.c +++ b/src/battle_controller_link_opponent.c @@ -1846,7 +1846,7 @@ static void LinkOpponentHandleCmd55(void) else gBattleOutcome = gBattleBufferA[gActiveBattler][1] ^ B_OUTCOME_DREW; - gSaveBlock2Ptr->frontier.field_CA9_b = gBattleBufferA[gActiveBattler][2]; + gSaveBlock2Ptr->frontier.disableRecordBattle = gBattleBufferA[gActiveBattler][2]; FadeOutMapMusic(5); BeginFastPaletteFade(3); LinkOpponentBufferExecCompleted(); diff --git a/src/battle_controller_link_partner.c b/src/battle_controller_link_partner.c index 1382e3a8b..ece4c24bc 100644 --- a/src/battle_controller_link_partner.c +++ b/src/battle_controller_link_partner.c @@ -1676,7 +1676,7 @@ static void LinkPartnerHandleCmd55(void) { sub_81851A8(&gBattleBufferA[gActiveBattler][4]); gBattleOutcome = gBattleBufferA[gActiveBattler][1]; - gSaveBlock2Ptr->frontier.field_CA9_b = gBattleBufferA[gActiveBattler][2]; + gSaveBlock2Ptr->frontier.disableRecordBattle = gBattleBufferA[gActiveBattler][2]; FadeOutMapMusic(5); BeginFastPaletteFade(3); LinkPartnerBufferExecCompleted(); diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c index 0bd1ea363..161df3b82 100644 --- a/src/battle_controller_player.c +++ b/src/battle_controller_player.c @@ -3093,7 +3093,7 @@ static void PlayerHandleCmd55(void) { sub_81851A8(&gBattleBufferA[gActiveBattler][4]); gBattleOutcome = gBattleBufferA[gActiveBattler][1]; - gSaveBlock2Ptr->frontier.field_CA9_b = gBattleBufferA[gActiveBattler][2]; + gSaveBlock2Ptr->frontier.disableRecordBattle = gBattleBufferA[gActiveBattler][2]; FadeOutMapMusic(5); BeginFastPaletteFade(3); PlayerBufferExecCompleted(); diff --git a/src/battle_controllers.c b/src/battle_controllers.c index d0e76ab1b..b411c12f6 100644 --- a/src/battle_controllers.c +++ b/src/battle_controllers.c @@ -1509,8 +1509,8 @@ void BtlController_EmitCmd55(u8 bufferId, u8 battleOutcome) { sBattleBuffersTransferData[0] = CONTROLLER_55; sBattleBuffersTransferData[1] = battleOutcome; - sBattleBuffersTransferData[2] = gSaveBlock2Ptr->frontier.field_CA9_b; - sBattleBuffersTransferData[3] = gSaveBlock2Ptr->frontier.field_CA9_b; + sBattleBuffersTransferData[2] = gSaveBlock2Ptr->frontier.disableRecordBattle; + sBattleBuffersTransferData[3] = gSaveBlock2Ptr->frontier.disableRecordBattle; sBattleBuffersTransferData[5] = sBattleBuffersTransferData[4] = sub_81850DC(&sBattleBuffersTransferData[6]); PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, sBattleBuffersTransferData[4] + 6); } diff --git a/src/battle_dome.c b/src/battle_dome.c index 7ff83f328..897269a30 100644 --- a/src/battle_dome.c +++ b/src/battle_dome.c @@ -2259,7 +2259,7 @@ static void InitDomeChallenge(void) gSaveBlock2Ptr->frontier.challengeStatus = 0; gSaveBlock2Ptr->frontier.curChallengeBattleNum = 0; gSaveBlock2Ptr->frontier.challengePaused = FALSE; - gSaveBlock2Ptr->frontier.field_CA9_b = 0; + gSaveBlock2Ptr->frontier.disableRecordBattle = FALSE; if (!(gSaveBlock2Ptr->frontier.winStreakActiveFlags & sWinStreakFlags[battleMode][lvlMode])) gSaveBlock2Ptr->frontier.domeWinStreaks[battleMode][lvlMode] = 0; diff --git a/src/battle_factory.c b/src/battle_factory.c index b412af237..b7e43394e 100644 --- a/src/battle_factory.c +++ b/src/battle_factory.c @@ -193,7 +193,7 @@ static void InitFactoryChallenge(void) gSaveBlock2Ptr->frontier.challengeStatus = 0; gSaveBlock2Ptr->frontier.curChallengeBattleNum = 0; gSaveBlock2Ptr->frontier.challengePaused = FALSE; - gSaveBlock2Ptr->frontier.field_CA9_b = 0; + gSaveBlock2Ptr->frontier.disableRecordBattle = FALSE; if (!(gSaveBlock2Ptr->frontier.winStreakActiveFlags & sWinStreakFlags[battleMode][lvlMode])) { gSaveBlock2Ptr->frontier.factoryWinStreaks[battleMode][lvlMode] = 0; diff --git a/src/battle_main.c b/src/battle_main.c index 196053ad2..bcef3b286 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -715,7 +715,7 @@ static void CB2_InitBattleInternal(void) } gMain.inBattle = TRUE; - gSaveBlock2Ptr->frontier.field_CA9_b = 0; + gSaveBlock2Ptr->frontier.disableRecordBattle = FALSE; for (i = 0; i < PARTY_SIZE; i++) AdjustFriendship(&gPlayerParty[i], 3); @@ -2315,7 +2315,7 @@ static void sub_8038F34(void) for (i = 0; i < monsCount && (gLinkPlayers[i].version & 0xFF) == VERSION_EMERALD; i++); - if (!gSaveBlock2Ptr->frontier.field_CA9_b && i == monsCount) + if (!gSaveBlock2Ptr->frontier.disableRecordBattle && i == monsCount) { if (FlagGet(FLAG_SYS_FRONTIER_PASS)) { @@ -2594,7 +2594,7 @@ static void sub_803939C(void) } else { - BattleStringExpandPlaceholdersToDisplayedString(gText_BattleRecordCouldntBeSaved); + BattleStringExpandPlaceholdersToDisplayedString(BattleFrontier_BattleTowerBattleRoom_Text_RecordCouldntBeSaved); BattlePutTextOnWindow(gDisplayedStringBattle, 0); gBattleCommunication[1] = 0x80; gBattleCommunication[MULTIUSE_STATE]++; @@ -5070,7 +5070,7 @@ static void HandleEndTurn_BattleLost(void) { gBattlescriptCurrInstr = BattleScript_PrintPlayerForfeitedLinkBattle; gBattleOutcome &= ~(B_OUTCOME_LINK_BATTLE_RAN); - gSaveBlock2Ptr->frontier.field_CA9_b = 1; + gSaveBlock2Ptr->frontier.disableRecordBattle = TRUE; } else { @@ -5102,7 +5102,7 @@ static void HandleEndTurn_RanFromBattle(void) { gBattlescriptCurrInstr = BattleScript_PrintPlayerForfeited; gBattleOutcome = B_OUTCOME_FORFEITED; - gSaveBlock2Ptr->frontier.field_CA9_b = 1; + gSaveBlock2Ptr->frontier.disableRecordBattle = TRUE; } else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER_HILL) { @@ -5721,7 +5721,7 @@ static void HandleAction_Run(void) } gBattleOutcome |= B_OUTCOME_LINK_BATTLE_RAN; - gSaveBlock2Ptr->frontier.field_CA9_b = 1; + gSaveBlock2Ptr->frontier.disableRecordBattle = TRUE; } else { diff --git a/src/battle_palace.c b/src/battle_palace.c index b5da77e35..56fd04c68 100644 --- a/src/battle_palace.c +++ b/src/battle_palace.c @@ -89,7 +89,7 @@ static void InitPalaceChallenge(void) gSaveBlock2Ptr->frontier.challengeStatus = 0; gSaveBlock2Ptr->frontier.curChallengeBattleNum = 0; gSaveBlock2Ptr->frontier.challengePaused = FALSE; - gSaveBlock2Ptr->frontier.field_CA9_b = 0; + gSaveBlock2Ptr->frontier.disableRecordBattle = FALSE; if (!(gSaveBlock2Ptr->frontier.winStreakActiveFlags & sWinStreakFlags[battleMode][lvlMode])) gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][lvlMode] = 0; diff --git a/src/battle_pyramid_bag.c b/src/battle_pyramid_bag.c index bdd1b1462..7c650800b 100644 --- a/src/battle_pyramid_bag.c +++ b/src/battle_pyramid_bag.c @@ -67,7 +67,7 @@ static void sub_81C700C(void); static void sub_81C6E98(void); static void sub_81C6F20(void); static void sub_81C6404(void); -static void sub_81C6E1C(void); +static void CloseBattlePyramidBagTextWindow(void); static bool8 sub_81C5238(void); static bool8 sub_81C5078(void); static void ShowItemImage(u16 itemId, u8 itemSpriteArrayId); @@ -809,7 +809,7 @@ static void sub_81C5AB8(u8 y, u8 arg1) PrintOnWindow_Font1(0, gText_SelectorArrow2, 0, y, 0, 0, 0, arg1); } -void sub_81C5B14(u8 taskId) +void CloseBattlePyramidBagAndSetCallback(u8 taskId) { BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK); gTasks[taskId].func = sub_81C5B4C; @@ -862,7 +862,7 @@ static void Task_HandlePyramidBagInput(u8 taskId) case LIST_CANCEL: PlaySE(SE_SELECT); gSpecialVar_ItemId = 0; - sub_81C5B14(taskId); + CloseBattlePyramidBagAndSetCallback(taskId); break; default: PlaySE(SE_SELECT); @@ -1043,7 +1043,7 @@ static void BagAction_UseOnField(u8 taskId) || ItemIsMail(gSpecialVar_ItemId) == TRUE) { sub_81C61A8(); - DisplayItemMessageInBattlePyramid(taskId, gText_DadsAdvice, sub_81C6714); + DisplayItemMessageInBattlePyramid(taskId, gText_DadsAdvice, Task_CloseBattlePyramidBagMessage); } else if (ItemId_GetFieldFunc(gSpecialVar_ItemId) != NULL) { @@ -1203,7 +1203,7 @@ static void BagAction_Give(u8 taskId) else if (!ItemId_GetImportance(gSpecialVar_ItemId)) { gPyramidBagResources->callback2 = CB2_ChooseMonToGiveItem; - sub_81C5B14(taskId); + CloseBattlePyramidBagAndSetCallback(taskId); } else { @@ -1223,15 +1223,15 @@ static void sub_81C66EC(u8 taskId) if (gMain.newKeys & A_BUTTON) { PlaySE(SE_SELECT); - sub_81C6714(taskId); + Task_CloseBattlePyramidBagMessage(taskId); } } -void sub_81C6714(u8 taskId) +void Task_CloseBattlePyramidBagMessage(u8 taskId) { s16 *data = gTasks[taskId].data; - sub_81C6E1C(); + CloseBattlePyramidBagTextWindow(); PrintItemDescription(data[1]); sub_81C5A98(data[0], 0); SetTaskToMainPyramidBagInputHandler(taskId); @@ -1242,7 +1242,7 @@ static void sub_81C674C(u8 taskId) if (!itemid_80BF6D8_mail_related(gSpecialVar_ItemId)) DisplayItemMessageInBattlePyramid(taskId, gText_CantWriteMail, sub_81C66EC); else if (!ItemId_GetImportance(gSpecialVar_ItemId)) - sub_81C5B14(taskId); + CloseBattlePyramidBagAndSetCallback(taskId); else sub_81C66AC(taskId); } @@ -1462,7 +1462,7 @@ void DisplayItemMessageInBattlePyramid(u8 taskId, const u8 *str, void (*callback schedule_bg_copy_tilemap_to_vram(1); } -static void sub_81C6E1C(void) +static void CloseBattlePyramidBagTextWindow(void) { ClearDialogWindowAndFrameToTransparent(2, FALSE); // This ClearWindowTilemap call is redundant, since ClearDialogWindowAndFrameToTransparent already calls it. diff --git a/src/battle_tower.c b/src/battle_tower.c index 20c10bc15..8d0a32d16 100644 --- a/src/battle_tower.c +++ b/src/battle_tower.c @@ -23,6 +23,7 @@ #include "field_message_box.h" #include "tv.h" #include "battle_factory.h" +#include "constants/apprentice.h" #include "constants/battle_frontier.h" #include "constants/battle_tower.h" #include "constants/frontier_util.h" @@ -55,11 +56,11 @@ static void SaveTowerChallenge(void); static void GetOpponentIntroSpeech(void); static void nullsub_61(void); static void nullsub_116(void); -static void sub_81642A0(void); -static void sub_8164828(void); -static void sub_8164B74(void); +static void LoadMultiPartnerCandidatesData(void); +static void ShowPartnerCandidateMessage(void); +static void LoadLinkMultiOpponentsData(void); static void sub_8164DCC(void); -static void sub_8164DE4(void); +static void SetMultiPartnerGfx(void); static void SetTowerInterviewData(void); static void ValidateBattleTowerRecordChecksums(void); static void SaveCurrentWinStreak(void); @@ -344,676 +345,419 @@ static const u8 sRubyFacilityClassToEmerald[RS_FACILITY_CLASSES_COUNT - 2][2] = {RS_FACILITY_CLASS_SIS_AND_BRO, FACILITY_CLASS_SIS_AND_BRO}, }; -static const u8 *const gUnknown_085DCFD8[] = +#define PARTNER_TEXTS(name) \ + BattleFrontier_BattleTowerMultiPartnerRoom_Text_##name##Intro, \ + BattleFrontier_BattleTowerMultiPartnerRoom_Text_##name##Mon1, \ + BattleFrontier_BattleTowerMultiPartnerRoom_Text_##name##Mon2Ask, \ + BattleFrontier_BattleTowerMultiPartnerRoom_Text_##name##Accept, \ + BattleFrontier_BattleTowerMultiPartnerRoom_Text_##name##Reject + +static const u8 *const sPartnerApprenticeTexts1[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_244383, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2443E7, - BattleFrontier_BattleTowerMultiBattleRoom_Text_244413, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24444B, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2444D6 + PARTNER_TEXTS(Apprentice1) }; -static const u8 *const gUnknown_085DCFEC[] = +static const u8 *const sPartnerApprenticeTexts2[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_2444EF, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24451E, - BattleFrontier_BattleTowerMultiBattleRoom_Text_244549, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24459B, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2445C5 + PARTNER_TEXTS(Apprentice2) }; -static const u8 *const gUnknown_085DD000[] = +static const u8 *const sPartnerApprenticeTexts3[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_2445E8, - BattleFrontier_BattleTowerMultiBattleRoom_Text_244618, - BattleFrontier_BattleTowerMultiBattleRoom_Text_244643, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24468F, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2446B4 + PARTNER_TEXTS(Apprentice3) }; -static const u8 *const gUnknown_085DD014[] = +static const u8 *const sPartnerApprenticeTexts4[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_2446E5, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24474D, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24479E, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24480C, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2448A7 + PARTNER_TEXTS(Apprentice4) }; -static const u8 *const gUnknown_085DD028[] = +static const u8 *const sPartnerApprenticeTexts5[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_2448CD, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2448F5, - BattleFrontier_BattleTowerMultiBattleRoom_Text_244939, - BattleFrontier_BattleTowerMultiBattleRoom_Text_244989, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2449E6 + PARTNER_TEXTS(Apprentice5) }; -static const u8 *const gUnknown_085DD03C[] = +static const u8 *const sPartnerApprenticeTexts6[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_244A23, - BattleFrontier_BattleTowerMultiBattleRoom_Text_244AA9, - BattleFrontier_BattleTowerMultiBattleRoom_Text_244AD6, - BattleFrontier_BattleTowerMultiBattleRoom_Text_244B52, - BattleFrontier_BattleTowerMultiBattleRoom_Text_244B93 + PARTNER_TEXTS(Apprentice6) }; -static const u8 *const gUnknown_085DD050[] = +static const u8 *const sPartnerApprenticeTexts7[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_244BD2, - BattleFrontier_BattleTowerMultiBattleRoom_Text_244C18, - BattleFrontier_BattleTowerMultiBattleRoom_Text_244C6E, - BattleFrontier_BattleTowerMultiBattleRoom_Text_244CD6, - BattleFrontier_BattleTowerMultiBattleRoom_Text_244D07 + PARTNER_TEXTS(Apprentice7) }; -static const u8 *const gUnknown_085DD064[] = +static const u8 *const sPartnerApprenticeTexts8[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_244D36, - BattleFrontier_BattleTowerMultiBattleRoom_Text_244D82, - BattleFrontier_BattleTowerMultiBattleRoom_Text_244DC6, - BattleFrontier_BattleTowerMultiBattleRoom_Text_244DFE, - BattleFrontier_BattleTowerMultiBattleRoom_Text_244E5B + PARTNER_TEXTS(Apprentice8) }; -static const u8 *const gUnknown_085DD078[] = +static const u8 *const sPartnerApprenticeTexts9[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_244E7E, - BattleFrontier_BattleTowerMultiBattleRoom_Text_244ECA, - BattleFrontier_BattleTowerMultiBattleRoom_Text_244EF4, - BattleFrontier_BattleTowerMultiBattleRoom_Text_244F4F, - BattleFrontier_BattleTowerMultiBattleRoom_Text_244F98 + PARTNER_TEXTS(Apprentice9) }; -static const u8 *const gUnknown_085DD08C[] = +static const u8 *const sPartnerApprenticeTexts10[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_244FD3, - BattleFrontier_BattleTowerMultiBattleRoom_Text_245013, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24503D, - BattleFrontier_BattleTowerMultiBattleRoom_Text_245087, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2450C0 + PARTNER_TEXTS(Apprentice10) }; -static const u8 *const gUnknown_085DD0A0[] = +static const u8 *const sPartnerApprenticeTexts11[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_2450E6, - BattleFrontier_BattleTowerMultiBattleRoom_Text_245196, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2451BD, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24522F, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24529A + PARTNER_TEXTS(Apprentice11) }; -static const u8 *const gUnknown_085DD0B4[] = +static const u8 *const sPartnerApprenticeTexts12[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_2452EF, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2453B4, - BattleFrontier_BattleTowerMultiBattleRoom_Text_245406, - BattleFrontier_BattleTowerMultiBattleRoom_Text_245464, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2454A3 + PARTNER_TEXTS(Apprentice12) }; -static const u8 *const gUnknown_085DD0C8[] = +static const u8 *const sPartnerApprenticeTexts13[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_2454D6, - BattleFrontier_BattleTowerMultiBattleRoom_Text_245535, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24555F, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2455EC, - BattleFrontier_BattleTowerMultiBattleRoom_Text_245656 + PARTNER_TEXTS(Apprentice13) }; -static const u8 *const gUnknown_085DD0DC[] = +static const u8 *const sPartnerApprenticeTexts14[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_24568A, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2456F5, - BattleFrontier_BattleTowerMultiBattleRoom_Text_245740, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2457D9, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24581F + PARTNER_TEXTS(Apprentice14) }; -static const u8 *const gUnknown_085DD0F0[] = +static const u8 *const sPartnerApprenticeTexts15[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_245851, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24589C, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2458CE, - BattleFrontier_BattleTowerMultiBattleRoom_Text_245923, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24597F + PARTNER_TEXTS(Apprentice15) }; -static const u8 *const gUnknown_085DD104[] = +static const u8 *const sPartnerApprenticeTexts16[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_2459BE, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2459F7, - BattleFrontier_BattleTowerMultiBattleRoom_Text_245A5F, - BattleFrontier_BattleTowerMultiBattleRoom_Text_245AB4, - BattleFrontier_BattleTowerMultiBattleRoom_Text_245B3E + PARTNER_TEXTS(Apprentice16) }; -static const u8 *const gUnknown_085DD118[] = +static const u8 *const sPartnerTextsLass[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_245B79, - BattleFrontier_BattleTowerMultiBattleRoom_Text_245B91, - BattleFrontier_BattleTowerMultiBattleRoom_Text_245BBD, - BattleFrontier_BattleTowerMultiBattleRoom_Text_245C05, - BattleFrontier_BattleTowerMultiBattleRoom_Text_245C2D + PARTNER_TEXTS(Lass) }; -static const u8 *const gUnknown_085DD12C[] = +static const u8 *const sPartnerTextsYoungster[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_245C66, - BattleFrontier_BattleTowerMultiBattleRoom_Text_245C7F, - BattleFrontier_BattleTowerMultiBattleRoom_Text_245CAC, - BattleFrontier_BattleTowerMultiBattleRoom_Text_245CE6, - BattleFrontier_BattleTowerMultiBattleRoom_Text_245D07 + PARTNER_TEXTS(Youngster) }; -static const u8 *const gUnknown_085DD140[] = +static const u8 *const sPartnerTextsHiker[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_245D4B, - BattleFrontier_BattleTowerMultiBattleRoom_Text_245D60, - BattleFrontier_BattleTowerMultiBattleRoom_Text_245D8D, - BattleFrontier_BattleTowerMultiBattleRoom_Text_245DC7, - BattleFrontier_BattleTowerMultiBattleRoom_Text_245DF0 + PARTNER_TEXTS(Hiker) }; -static const u8 *const gUnknown_085DD154[] = +static const u8 *const sPartnerTextsBeauty[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_245E20, - BattleFrontier_BattleTowerMultiBattleRoom_Text_245E41, - BattleFrontier_BattleTowerMultiBattleRoom_Text_245E78, - BattleFrontier_BattleTowerMultiBattleRoom_Text_245EBD, - BattleFrontier_BattleTowerMultiBattleRoom_Text_245EEC + PARTNER_TEXTS(Beauty) }; -static const u8 *const gUnknown_085DD168[] = +static const u8 *const sPartnerTextsFisherman[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_245F2B, - BattleFrontier_BattleTowerMultiBattleRoom_Text_245F58, - BattleFrontier_BattleTowerMultiBattleRoom_Text_245F87, - BattleFrontier_BattleTowerMultiBattleRoom_Text_245FC6, - BattleFrontier_BattleTowerMultiBattleRoom_Text_246002 + PARTNER_TEXTS(Fisherman) }; -static const u8 *const gUnknown_085DD17C[] = +static const u8 *const sPartnerTextsLady[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_246020, - BattleFrontier_BattleTowerMultiBattleRoom_Text_246051, - BattleFrontier_BattleTowerMultiBattleRoom_Text_246082, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2460D5, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24610D + PARTNER_TEXTS(Lady) }; -static const u8 *const gUnknown_085DD190[] = +static const u8 *const sPartnerTextsCyclingTriathleteF[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_24614A, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24615D, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24617D, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2461C7, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2461F5 + PARTNER_TEXTS(CyclingTriathleteF) }; -static const u8 *const gUnknown_085DD1A4[] = +static const u8 *const sPartnerTextsBugCatcher[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_24622A, - BattleFrontier_BattleTowerMultiBattleRoom_Text_246244, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24626E, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2462AA, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2462E4 + PARTNER_TEXTS(BugCatcher) }; -static const u8 *const gUnknown_085DD1B8[] = +static const u8 *const sPartnerTextsSchoolKidM[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_24631F, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24633C, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24636B, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2463C5, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2463FF + PARTNER_TEXTS(SchoolKidM) }; -static const u8 *const gUnknown_085DD1CC[] = +static const u8 *const sPartnerTextsRichBoy[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_246449, - BattleFrontier_BattleTowerMultiBattleRoom_Text_246478, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24649D, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2464EE, - BattleFrontier_BattleTowerMultiBattleRoom_Text_246529 + PARTNER_TEXTS(RichBoy) }; -static const u8 *const gUnknown_085DD1E0[] = +static const u8 *const sPartnerTextsBlackBelt[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_246571, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24658C, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2465B5, - BattleFrontier_BattleTowerMultiBattleRoom_Text_246605, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24662A + PARTNER_TEXTS(BlackBelt) }; -static const u8 *const gUnknown_085DD1F4[] = +static const u8 *const sPartnerTextsTuberF[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_246662, - BattleFrontier_BattleTowerMultiBattleRoom_Text_246686, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2466B4, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2466E6, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24670A + PARTNER_TEXTS(TuberF) }; -static const u8 *const gUnknown_085DD208[] = +static const u8 *const sPartnerTextsHexManiac[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_246741, - BattleFrontier_BattleTowerMultiBattleRoom_Text_246760, - BattleFrontier_BattleTowerMultiBattleRoom_Text_246791, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2467C4, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2467E6 + PARTNER_TEXTS(HexManiac) }; -static const u8 *const gUnknown_085DD21C[] = +static const u8 *const sPartnerTextsPkmnBreederM[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_2467FF, - BattleFrontier_BattleTowerMultiBattleRoom_Text_246831, - BattleFrontier_BattleTowerMultiBattleRoom_Text_246864, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2468A7, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2468FE + PARTNER_TEXTS(PkmnBreederM) }; -static const u8 *const gUnknown_085DD230[] = +static const u8 *const sPartnerTextsRunningTriathleteF[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_24692B, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24694B, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24697C, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2469B4, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2469F1 + PARTNER_TEXTS(RunningTriathleteF) }; -static const u8 *const gUnknown_085DD244[] = +static const u8 *const sPartnerTextsRunningTriathleteM[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_246A22, - BattleFrontier_BattleTowerMultiBattleRoom_Text_246A4E, - BattleFrontier_BattleTowerMultiBattleRoom_Text_246A85, - BattleFrontier_BattleTowerMultiBattleRoom_Text_246ACF, - BattleFrontier_BattleTowerMultiBattleRoom_Text_246AF7 + PARTNER_TEXTS(RunningTriathleteM) }; -static const u8 *const gUnknown_085DD258[] = +static const u8 *const sPartnerTextsBattleGirl[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_246B2B, - BattleFrontier_BattleTowerMultiBattleRoom_Text_246B3F, - BattleFrontier_BattleTowerMultiBattleRoom_Text_246B6B, - BattleFrontier_BattleTowerMultiBattleRoom_Text_246BB2, - BattleFrontier_BattleTowerMultiBattleRoom_Text_246BE9 + PARTNER_TEXTS(BattleGirl) }; -static const u8 *const gUnknown_085DD26C[] = +static const u8 *const sPartnerTextsCyclingTriathleteM[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_246C22, - BattleFrontier_BattleTowerMultiBattleRoom_Text_246C35, - BattleFrontier_BattleTowerMultiBattleRoom_Text_246C6C, - BattleFrontier_BattleTowerMultiBattleRoom_Text_246CB3, - BattleFrontier_BattleTowerMultiBattleRoom_Text_246CE9 + PARTNER_TEXTS(CyclingTriathleteM) }; -static const u8 *const gUnknown_085DD280[] = +static const u8 *const sPartnerTextsTuberM[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_246D2D, - BattleFrontier_BattleTowerMultiBattleRoom_Text_246D3F, - BattleFrontier_BattleTowerMultiBattleRoom_Text_246D6A, - BattleFrontier_BattleTowerMultiBattleRoom_Text_246D9E, - BattleFrontier_BattleTowerMultiBattleRoom_Text_246DD3 + PARTNER_TEXTS(TuberM) }; -static const u8 *const gUnknown_085DD294[] = +static const u8 *const sPartnerTextsGuitarist[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_246E1A, - BattleFrontier_BattleTowerMultiBattleRoom_Text_246E39, - BattleFrontier_BattleTowerMultiBattleRoom_Text_246E64, - BattleFrontier_BattleTowerMultiBattleRoom_Text_246EB6, - BattleFrontier_BattleTowerMultiBattleRoom_Text_246EEE + PARTNER_TEXTS(Guitarist) }; -static const u8 *const gUnknown_085DD2A8[] = +static const u8 *const sPartnerTextsGentleman[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_246F21, - BattleFrontier_BattleTowerMultiBattleRoom_Text_246F4C, - BattleFrontier_BattleTowerMultiBattleRoom_Text_246F7B, - BattleFrontier_BattleTowerMultiBattleRoom_Text_246FCC, - BattleFrontier_BattleTowerMultiBattleRoom_Text_247013 + PARTNER_TEXTS(Gentleman) }; -static const u8 *const gUnknown_085DD2BC[] = +static const u8 *const sPartnerTextsPokefanM[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_24705B, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24707D, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2470B2, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2470FD, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24712A + PARTNER_TEXTS(PokefanM) }; -static const u8 *const gUnknown_085DD2D0[] = +static const u8 *const sPartnerTextsExpertM[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_24716C, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24718D, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2471C7, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2471FB, - BattleFrontier_BattleTowerMultiBattleRoom_Text_247238 + PARTNER_TEXTS(ExpertM) }; -static const u8 *const gUnknown_085DD2E4[] = +static const u8 *const sPartnerTextsExpertF[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_247268, - BattleFrontier_BattleTowerMultiBattleRoom_Text_247291, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2472C7, - BattleFrontier_BattleTowerMultiBattleRoom_Text_247313, - BattleFrontier_BattleTowerMultiBattleRoom_Text_247348 + PARTNER_TEXTS(ExpertF) }; -static const u8 *const gUnknown_085DD2F8[] = +static const u8 *const sPartnerTextsDragonTamer[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_24737A, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24738F, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2473C6, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2473FB, - BattleFrontier_BattleTowerMultiBattleRoom_Text_247438 + PARTNER_TEXTS(DragonTamer) }; -static const u8 *const gUnknown_085DD30C[] = +static const u8 *const sPartnerTextsBirdKeeper[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_247470, - BattleFrontier_BattleTowerMultiBattleRoom_Text_247484, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2474AF, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2474EC, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24751D + PARTNER_TEXTS(BirdKeeper) }; -static const u8 *const gUnknown_085DD320[] = +static const u8 *const sPartnerTextsNinjaBoy[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_24754A, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24755C, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24758B, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2475BC, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2475D5 + PARTNER_TEXTS(NinjaBoy) }; -static const u8 *const gUnknown_085DD334[] = +static const u8 *const sPartnerTextsParasolLady[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_24760D, - BattleFrontier_BattleTowerMultiBattleRoom_Text_247629, - BattleFrontier_BattleTowerMultiBattleRoom_Text_247655, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24769B, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2476ED + PARTNER_TEXTS(ParasolLady) }; -static const u8 *const gUnknown_085DD348[] = +static const u8 *const sPartnerTextsBugManiac[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_247724, - BattleFrontier_BattleTowerMultiBattleRoom_Text_247749, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24777A, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2477CE, - BattleFrontier_BattleTowerMultiBattleRoom_Text_247807 + PARTNER_TEXTS(BugManiac) }; -static const u8 *const gUnknown_085DD35C[] = +static const u8 *const sPartnerTextsSailor[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_247838, - BattleFrontier_BattleTowerMultiBattleRoom_Text_247854, - BattleFrontier_BattleTowerMultiBattleRoom_Text_247889, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2478DD, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24790D + PARTNER_TEXTS(Sailor) }; -static const u8 *const gUnknown_085DD370[] = +static const u8 *const sPartnerTextsCollector[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_247942, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24795F, - BattleFrontier_BattleTowerMultiBattleRoom_Text_247991, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2479CE, - BattleFrontier_BattleTowerMultiBattleRoom_Text_247A18 + PARTNER_TEXTS(Collector) }; -static const u8 *const gUnknown_085DD384[] = +static const u8 *const sPartnerTextsPkmnRangerM[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_247A51, - BattleFrontier_BattleTowerMultiBattleRoom_Text_247A76, - BattleFrontier_BattleTowerMultiBattleRoom_Text_247AA1, - BattleFrontier_BattleTowerMultiBattleRoom_Text_247AE3, - BattleFrontier_BattleTowerMultiBattleRoom_Text_247B16 + PARTNER_TEXTS(PkmnRangerM) }; -static const u8 *const gUnknown_085DD398[] = +static const u8 *const sPartnerTextsPkmnRangerF[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_247B3E, - BattleFrontier_BattleTowerMultiBattleRoom_Text_247B62, - BattleFrontier_BattleTowerMultiBattleRoom_Text_247B9B, - BattleFrontier_BattleTowerMultiBattleRoom_Text_247BE7, - BattleFrontier_BattleTowerMultiBattleRoom_Text_247C23 + PARTNER_TEXTS(PkmnRangerF) }; -static const u8 *const gUnknown_085DD3AC[] = +static const u8 *const sPartnerTextsAromaLady[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_247C4E, - BattleFrontier_BattleTowerMultiBattleRoom_Text_247C8C, - BattleFrontier_BattleTowerMultiBattleRoom_Text_247CB2, - BattleFrontier_BattleTowerMultiBattleRoom_Text_247D07, - BattleFrontier_BattleTowerMultiBattleRoom_Text_247D4E + PARTNER_TEXTS(AromaLady) }; -static const u8 *const gUnknown_085DD3C0[] = +static const u8 *const sPartnerTextsRuinManiac[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_247D97, - BattleFrontier_BattleTowerMultiBattleRoom_Text_247DC7, - BattleFrontier_BattleTowerMultiBattleRoom_Text_247DFE, - BattleFrontier_BattleTowerMultiBattleRoom_Text_247E3E, - BattleFrontier_BattleTowerMultiBattleRoom_Text_247E7E + PARTNER_TEXTS(RuinManiac) }; -static const u8 *const gUnknown_085DD3D4[] = +static const u8 *const sPartnerTextsCoolTrainerM[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_247EA1, - BattleFrontier_BattleTowerMultiBattleRoom_Text_247EB5, - BattleFrontier_BattleTowerMultiBattleRoom_Text_247EE9, - BattleFrontier_BattleTowerMultiBattleRoom_Text_247F3F, - BattleFrontier_BattleTowerMultiBattleRoom_Text_247F6D + PARTNER_TEXTS(CoolTrainerM) }; -static const u8 *const gUnknown_085DD3E8[] = +static const u8 *const sPartnerTextsCoolTrainerF[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_247FA3, - BattleFrontier_BattleTowerMultiBattleRoom_Text_247FB7, - BattleFrontier_BattleTowerMultiBattleRoom_Text_247FE9, - BattleFrontier_BattleTowerMultiBattleRoom_Text_248031, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24805E + PARTNER_TEXTS(CoolTrainerF) }; -static const u8 *const gUnknown_085DD3FC[] = +static const u8 *const sPartnerTextsPokemaniac[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_24808D, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2480AB, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2480DC, - BattleFrontier_BattleTowerMultiBattleRoom_Text_248128, - BattleFrontier_BattleTowerMultiBattleRoom_Text_248151 + PARTNER_TEXTS(Pokemaniac) }; -static const u8 *const gUnknown_085DD410[] = +static const u8 *const sPartnerTextsKindler[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_24818E, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2481A9, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2481E1, - BattleFrontier_BattleTowerMultiBattleRoom_Text_248221, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24824F + PARTNER_TEXTS(Kindler) }; -static const u8 *const gUnknown_085DD424[] = +static const u8 *const sPartnerTextsCamper[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_248297, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2482B1, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2482DC, - BattleFrontier_BattleTowerMultiBattleRoom_Text_248321, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24833D + PARTNER_TEXTS(Camper) }; -static const u8 *const gUnknown_085DD438[] = +static const u8 *const sPartnerTextsPicnicker[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_248369, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24838D, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2483C1, - BattleFrontier_BattleTowerMultiBattleRoom_Text_248401, - BattleFrontier_BattleTowerMultiBattleRoom_Text_248431 + PARTNER_TEXTS(Picnicker) }; -static const u8 *const gUnknown_085DD44C[] = +static const u8 *const sPartnerTextsPsychicM[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_248467, - BattleFrontier_BattleTowerMultiBattleRoom_Text_248477, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2484AC, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2484E7, - BattleFrontier_BattleTowerMultiBattleRoom_Text_248517 + PARTNER_TEXTS(PsychicM) }; -static const u8 *const gUnknown_085DD460[] = +static const u8 *const sPartnerTextsPsychicF[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_248553, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24856A, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24857D, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2485E5, - BattleFrontier_BattleTowerMultiBattleRoom_Text_248614 + PARTNER_TEXTS(PsychicF) }; -static const u8 *const gUnknown_085DD474[] = +static const u8 *const sPartnerTextsSchoolKidF[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_24864E, - BattleFrontier_BattleTowerMultiBattleRoom_Text_248661, - BattleFrontier_BattleTowerMultiBattleRoom_Text_248671, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2486C6, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2486FF + PARTNER_TEXTS(SchoolKidF) }; -static const u8 *const gUnknown_085DD488[] = +static const u8 *const sPartnerTextsPkmnBreederF[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_248725, - BattleFrontier_BattleTowerMultiBattleRoom_Text_248751, - BattleFrontier_BattleTowerMultiBattleRoom_Text_248781, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2487C9, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2487F7 + PARTNER_TEXTS(PkmnBreederF) }; -static const u8 *const gUnknown_085DD49C[] = +static const u8 *const sPartnerTextsPokefanF[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_248829, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24885B, - BattleFrontier_BattleTowerMultiBattleRoom_Text_248892, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2488D8, - BattleFrontier_BattleTowerMultiBattleRoom_Text_248908 + PARTNER_TEXTS(PokefanF) }; -static const u8 *const gUnknown_085DD4B0[] = +static const u8 *const sPartnerTextsSwimmerF[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_24894B, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24895F, - BattleFrontier_BattleTowerMultiBattleRoom_Text_24896F, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2489BD, - BattleFrontier_BattleTowerMultiBattleRoom_Text_2489E7 + PARTNER_TEXTS(SwimmerF) }; -static const u8 *const gUnknown_085DD4C4[] = +static const u8 *const sPartnerTextsSwimmingTriathleteM[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_248A10, - BattleFrontier_BattleTowerMultiBattleRoom_Text_248A40, - BattleFrontier_BattleTowerMultiBattleRoom_Text_248A72, - BattleFrontier_BattleTowerMultiBattleRoom_Text_248AC0, - BattleFrontier_BattleTowerMultiBattleRoom_Text_248AEB + PARTNER_TEXTS(SwimmingTriathleteM) }; -static const u8 *const gUnknown_085DD4D8[] = +static const u8 *const sPartnerTextsSwimmingTriathleteF[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_248B22, - BattleFrontier_BattleTowerMultiBattleRoom_Text_248B39, - BattleFrontier_BattleTowerMultiBattleRoom_Text_248B4C, - BattleFrontier_BattleTowerMultiBattleRoom_Text_248BB4, - BattleFrontier_BattleTowerMultiBattleRoom_Text_248BEE + PARTNER_TEXTS(SwimmingTriathleteF) }; -static const u8 *const gUnknown_085DD4EC[] = +static const u8 *const sPartnerTextsSwimmerM[] = { - BattleFrontier_BattleTowerMultiBattleRoom_Text_248C2E, - BattleFrontier_BattleTowerMultiBattleRoom_Text_248C5B, - BattleFrontier_BattleTowerMultiBattleRoom_Text_248C90, - BattleFrontier_BattleTowerMultiBattleRoom_Text_248CCF, - BattleFrontier_BattleTowerMultiBattleRoom_Text_248D04 + PARTNER_TEXTS(SwimmerM) }; struct { u32 facilityClass; const u8 *const *strings; -} const gUnknown_085DD500[] = -{ - {FACILITY_CLASS_LASS, gUnknown_085DD118}, - {FACILITY_CLASS_YOUNGSTER, gUnknown_085DD12C}, - {FACILITY_CLASS_HIKER, gUnknown_085DD140}, - {FACILITY_CLASS_BEAUTY, gUnknown_085DD154}, - {FACILITY_CLASS_FISHERMAN, gUnknown_085DD168}, - {FACILITY_CLASS_LADY, gUnknown_085DD17C}, - {FACILITY_CLASS_CYCLING_TRIATHLETE_F, gUnknown_085DD190}, - {FACILITY_CLASS_BUG_CATCHER, gUnknown_085DD1A4}, - {FACILITY_CLASS_SCHOOL_KID_M, gUnknown_085DD1B8}, - {FACILITY_CLASS_RICH_BOY, gUnknown_085DD1CC}, - {FACILITY_CLASS_BLACK_BELT, gUnknown_085DD1E0}, - {FACILITY_CLASS_TUBER_F, gUnknown_085DD1F4}, - {FACILITY_CLASS_HEX_MANIAC, gUnknown_085DD208}, - {FACILITY_CLASS_PKMN_BREEDER_M, gUnknown_085DD21C}, - {FACILITY_CLASS_RUNNING_TRIATHLETE_F, gUnknown_085DD230}, - {FACILITY_CLASS_RUNNING_TRIATHLETE_M, gUnknown_085DD244}, - {FACILITY_CLASS_BATTLE_GIRL, gUnknown_085DD258}, - {FACILITY_CLASS_CYCLING_TRIATHLETE_M, gUnknown_085DD26C}, - {FACILITY_CLASS_TUBER_M, gUnknown_085DD280}, - {FACILITY_CLASS_GUITARIST, gUnknown_085DD294}, - {FACILITY_CLASS_GENTLEMAN, gUnknown_085DD2A8}, - {FACILITY_CLASS_POKEFAN_M, gUnknown_085DD2BC}, - {FACILITY_CLASS_EXPERT_M, gUnknown_085DD2D0}, - {FACILITY_CLASS_EXPERT_F, gUnknown_085DD2E4}, - {FACILITY_CLASS_DRAGON_TAMER, gUnknown_085DD2F8}, - {FACILITY_CLASS_BIRD_KEEPER, gUnknown_085DD30C}, - {FACILITY_CLASS_NINJA_BOY, gUnknown_085DD320}, - {FACILITY_CLASS_PARASOL_LADY, gUnknown_085DD334}, - {FACILITY_CLASS_BUG_MANIAC, gUnknown_085DD348}, - {FACILITY_CLASS_SAILOR, gUnknown_085DD35C}, - {FACILITY_CLASS_COLLECTOR, gUnknown_085DD370}, - {FACILITY_CLASS_PKMN_RANGER_M, gUnknown_085DD384}, - {FACILITY_CLASS_PKMN_RANGER_F, gUnknown_085DD398}, - {FACILITY_CLASS_AROMA_LADY, gUnknown_085DD3AC}, - {FACILITY_CLASS_RUIN_MANIAC, gUnknown_085DD3C0}, - {FACILITY_CLASS_COOLTRAINER_M, gUnknown_085DD3D4}, - {FACILITY_CLASS_COOLTRAINER_F, gUnknown_085DD3E8}, - {FACILITY_CLASS_POKEMANIAC, gUnknown_085DD3FC}, - {FACILITY_CLASS_KINDLER, gUnknown_085DD410}, - {FACILITY_CLASS_CAMPER, gUnknown_085DD424}, - {FACILITY_CLASS_PICNICKER, gUnknown_085DD438}, - {FACILITY_CLASS_PSYCHIC_M, gUnknown_085DD44C}, - {FACILITY_CLASS_PSYCHIC_F, gUnknown_085DD460}, - {FACILITY_CLASS_SCHOOL_KID_F, gUnknown_085DD474}, - {FACILITY_CLASS_PKMN_BREEDER_F, gUnknown_085DD488}, - {FACILITY_CLASS_POKEFAN_F, gUnknown_085DD49C}, - {FACILITY_CLASS_SWIMMER_F, gUnknown_085DD4B0}, - {FACILITY_CLASS_SWIMMING_TRIATHLETE_M, gUnknown_085DD4C4}, - {FACILITY_CLASS_SWIMMING_TRIATHLETE_F, gUnknown_085DD4D8}, - {FACILITY_CLASS_SWIMMER_M, gUnknown_085DD4EC} -}; - -static const u8 *const *const gUnknown_085DD690[] = -{ - gUnknown_085DCFD8, - gUnknown_085DCFEC, - gUnknown_085DD000, - gUnknown_085DD014, - gUnknown_085DD028, - gUnknown_085DD03C, - gUnknown_085DD050, - gUnknown_085DD064, - gUnknown_085DD078, - gUnknown_085DD08C, - gUnknown_085DD0A0, - gUnknown_085DD0B4, - gUnknown_085DD0C8, - gUnknown_085DD0DC, - gUnknown_085DD0F0, - gUnknown_085DD104 +} const sPartnerTrainerTextTables[] = +{ + {FACILITY_CLASS_LASS, sPartnerTextsLass}, + {FACILITY_CLASS_YOUNGSTER, sPartnerTextsYoungster}, + {FACILITY_CLASS_HIKER, sPartnerTextsHiker}, + {FACILITY_CLASS_BEAUTY, sPartnerTextsBeauty}, + {FACILITY_CLASS_FISHERMAN, sPartnerTextsFisherman}, + {FACILITY_CLASS_LADY, sPartnerTextsLady}, + {FACILITY_CLASS_CYCLING_TRIATHLETE_F, sPartnerTextsCyclingTriathleteF}, + {FACILITY_CLASS_BUG_CATCHER, sPartnerTextsBugCatcher}, + {FACILITY_CLASS_SCHOOL_KID_M, sPartnerTextsSchoolKidM}, + {FACILITY_CLASS_RICH_BOY, sPartnerTextsRichBoy}, + {FACILITY_CLASS_BLACK_BELT, sPartnerTextsBlackBelt}, + {FACILITY_CLASS_TUBER_F, sPartnerTextsTuberF}, + {FACILITY_CLASS_HEX_MANIAC, sPartnerTextsHexManiac}, + {FACILITY_CLASS_PKMN_BREEDER_M, sPartnerTextsPkmnBreederM}, + {FACILITY_CLASS_RUNNING_TRIATHLETE_F, sPartnerTextsRunningTriathleteF}, + {FACILITY_CLASS_RUNNING_TRIATHLETE_M, sPartnerTextsRunningTriathleteM}, + {FACILITY_CLASS_BATTLE_GIRL, sPartnerTextsBattleGirl}, + {FACILITY_CLASS_CYCLING_TRIATHLETE_M, sPartnerTextsCyclingTriathleteM}, + {FACILITY_CLASS_TUBER_M, sPartnerTextsTuberM}, + {FACILITY_CLASS_GUITARIST, sPartnerTextsGuitarist}, + {FACILITY_CLASS_GENTLEMAN, sPartnerTextsGentleman}, + {FACILITY_CLASS_POKEFAN_M, sPartnerTextsPokefanM}, + {FACILITY_CLASS_EXPERT_M, sPartnerTextsExpertM}, + {FACILITY_CLASS_EXPERT_F, sPartnerTextsExpertF}, + {FACILITY_CLASS_DRAGON_TAMER, sPartnerTextsDragonTamer}, + {FACILITY_CLASS_BIRD_KEEPER, sPartnerTextsBirdKeeper}, + {FACILITY_CLASS_NINJA_BOY, sPartnerTextsNinjaBoy}, + {FACILITY_CLASS_PARASOL_LADY, sPartnerTextsParasolLady}, + {FACILITY_CLASS_BUG_MANIAC, sPartnerTextsBugManiac}, + {FACILITY_CLASS_SAILOR, sPartnerTextsSailor}, + {FACILITY_CLASS_COLLECTOR, sPartnerTextsCollector}, + {FACILITY_CLASS_PKMN_RANGER_M, sPartnerTextsPkmnRangerM}, + {FACILITY_CLASS_PKMN_RANGER_F, sPartnerTextsPkmnRangerF}, + {FACILITY_CLASS_AROMA_LADY, sPartnerTextsAromaLady}, + {FACILITY_CLASS_RUIN_MANIAC, sPartnerTextsRuinManiac}, + {FACILITY_CLASS_COOLTRAINER_M, sPartnerTextsCoolTrainerM}, + {FACILITY_CLASS_COOLTRAINER_F, sPartnerTextsCoolTrainerF}, + {FACILITY_CLASS_POKEMANIAC, sPartnerTextsPokemaniac}, + {FACILITY_CLASS_KINDLER, sPartnerTextsKindler}, + {FACILITY_CLASS_CAMPER, sPartnerTextsCamper}, + {FACILITY_CLASS_PICNICKER, sPartnerTextsPicnicker}, + {FACILITY_CLASS_PSYCHIC_M, sPartnerTextsPsychicM}, + {FACILITY_CLASS_PSYCHIC_F, sPartnerTextsPsychicF}, + {FACILITY_CLASS_SCHOOL_KID_F, sPartnerTextsSchoolKidF}, + {FACILITY_CLASS_PKMN_BREEDER_F, sPartnerTextsPkmnBreederF}, + {FACILITY_CLASS_POKEFAN_F, sPartnerTextsPokefanF}, + {FACILITY_CLASS_SWIMMER_F, sPartnerTextsSwimmerF}, + {FACILITY_CLASS_SWIMMING_TRIATHLETE_M, sPartnerTextsSwimmingTriathleteM}, + {FACILITY_CLASS_SWIMMING_TRIATHLETE_F, sPartnerTextsSwimmingTriathleteF}, + {FACILITY_CLASS_SWIMMER_M, sPartnerTextsSwimmerM} +}; + +static const u8 *const *const sPartnerApprenticeTextTables[NUM_APPRENTICES] = +{ + sPartnerApprenticeTexts1, + sPartnerApprenticeTexts2, + sPartnerApprenticeTexts3, + sPartnerApprenticeTexts4, + sPartnerApprenticeTexts5, + sPartnerApprenticeTexts6, + sPartnerApprenticeTexts7, + sPartnerApprenticeTexts8, + sPartnerApprenticeTexts9, + sPartnerApprenticeTexts10, + sPartnerApprenticeTexts11, + sPartnerApprenticeTexts12, + sPartnerApprenticeTexts13, + sPartnerApprenticeTexts14, + sPartnerApprenticeTexts15, + sPartnerApprenticeTexts16 }; struct @@ -1022,9 +766,9 @@ struct u8 fixedIV; u8 level; u8 nature; - u8 evs[6]; + u8 evs[NUM_STATS]; u16 moves[MAX_MON_MOVES]; -} const sStevenMons[3] = +} const sStevenMons[MULTI_PARTY_SIZE] = { { .species = SPECIES_METANG, @@ -1056,22 +800,22 @@ struct static void (* const sBattleTowerFuncs[])(void) = { - [BATTLE_TOWER_FUNC_INIT] = InitTowerChallenge, - [BATTLE_TOWER_FUNC_GET_DATA] = GetTowerData, - [BATTLE_TOWER_FUNC_SET_DATA] = SetTowerData, - [BATTLE_TOWER_FUNC_SET_OPPONENT] = SetNextFacilityOpponent, - [BATTLE_TOWER_FUNC_SET_BATTLE_WON] = SetTowerBattleWon, - [BATTLE_TOWER_FUNC_GIVE_RIBBONS] = AwardBattleTowerRibbons, - [BATTLE_TOWER_FUNC_SAVE] = SaveTowerChallenge, - [BATTLE_TOWER_FUNC_GET_OPPONENT_INTRO] = GetOpponentIntroSpeech, - [BATTLE_TOWER_FUNC_NOP] = nullsub_61, - [BATTLE_TOWER_FUNC_NOP2] = nullsub_116, - [BATTLE_TOWER_FUNC_10] = sub_81642A0, - [BATTLE_TOWER_FUNC_11] = sub_8164828, - [BATTLE_TOWER_FUNC_12] = sub_8164B74, - [BATTLE_TOWER_FUNC_13] = sub_8164DCC, - [BATTLE_TOWER_FUNC_14] = sub_8164DE4, - [BATTLE_TOWER_FUNC_SET_INTERVIEW_DATA] = SetTowerInterviewData, + [BATTLE_TOWER_FUNC_INIT] = InitTowerChallenge, + [BATTLE_TOWER_FUNC_GET_DATA] = GetTowerData, + [BATTLE_TOWER_FUNC_SET_DATA] = SetTowerData, + [BATTLE_TOWER_FUNC_SET_OPPONENT] = SetNextFacilityOpponent, + [BATTLE_TOWER_FUNC_SET_BATTLE_WON] = SetTowerBattleWon, + [BATTLE_TOWER_FUNC_GIVE_RIBBONS] = AwardBattleTowerRibbons, + [BATTLE_TOWER_FUNC_SAVE] = SaveTowerChallenge, + [BATTLE_TOWER_FUNC_GET_OPPONENT_INTRO] = GetOpponentIntroSpeech, + [BATTLE_TOWER_FUNC_NOP] = nullsub_61, + [BATTLE_TOWER_FUNC_NOP2] = nullsub_116, + [BATTLE_TOWER_FUNC_LOAD_PARTNERS] = LoadMultiPartnerCandidatesData, + [BATTLE_TOWER_FUNC_PARTNER_MSG] = ShowPartnerCandidateMessage, + [BATTLE_TOWER_FUNC_LOAD_LINK_OPPONENTS] = LoadLinkMultiOpponentsData, + [BATTLE_TOWER_FUNC_13] = sub_8164DCC, + [BATTLE_TOWER_FUNC_SET_PARTNER_GFX] = SetMultiPartnerGfx, + [BATTLE_TOWER_FUNC_SET_INTERVIEW_DATA] = SetTowerInterviewData, }; static const u32 sWinStreakFlags[][2] = @@ -1090,9 +834,10 @@ static const u32 sWinStreakMasks[][2] = {~(STREAK_TOWER_LINK_MULTIS_50), ~(STREAK_TOWER_LINK_MULTIS_OPEN)}, }; -static const u8 gUnknown_085DF9EC[] = +// The challenge number at which an Apprentice can appear, depending on how many of their questions were answered +static const u8 sApprenticeChallengeThreshold[MAX_APPRENTICE_QUESTIONS] = { - 0x01, 0x02, 0x03, 0x04, 0x05, 0x08, 0x09, 0x0a, 0x0b, 0x0c + 1, 2, 3, 4, 5, 8, 9, 10, 11, 12 }; // Unclear why this was duplicated @@ -1162,7 +907,7 @@ static void InitTowerChallenge(void) gSaveBlock2Ptr->frontier.challengeStatus = CHALLENGE_STATUS_SAVING; gSaveBlock2Ptr->frontier.curChallengeBattleNum = 0; gSaveBlock2Ptr->frontier.challengePaused = FALSE; - gSaveBlock2Ptr->frontier.field_CA9_b = 0; + gSaveBlock2Ptr->frontier.disableRecordBattle = FALSE; ResetFrontierTrainerIds(); if (!(gSaveBlock2Ptr->frontier.winStreakActiveFlags & sWinStreakFlags[battleMode][lvlMode])) gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode] = 0; @@ -1279,7 +1024,7 @@ static bool8 ChooseSpecialBattleTowerTrainer(void) for (i = 0; i < APPRENTICE_COUNT; i++) { if (gSaveBlock2Ptr->apprentices[i].lvlMode != 0 - && gUnknown_085DF9EC[gSaveBlock2Ptr->apprentices[i].numQuestions] == winStreak + && sApprenticeChallengeThreshold[gSaveBlock2Ptr->apprentices[i].numQuestions] == winStreak && gSaveBlock2Ptr->apprentices[i].lvlMode - 1 == lvlMode) { trainerIds[idsCount] = i + TRAINER_RECORD_MIXING_APPRENTICE; @@ -2448,7 +2193,7 @@ static void nullsub_116(void) } -static void sub_81640E0(u16 trainerId) +static void GetApprenticeMultiPartnerParty(u16 trainerId) { s32 i, count; u32 validSpecies[3]; @@ -2473,7 +2218,7 @@ static void sub_81640E0(u16 trainerId) } while (gUnknown_03006298[0] == gUnknown_03006298[1]); } -static void sub_8164188(u16 trainerId) +static void GetRecordMixFriendMultiPartnerParty(u16 trainerId) { s32 i, count; u32 validSpecies[3]; @@ -2501,7 +2246,7 @@ static void sub_8164188(u16 trainerId) } while (gUnknown_03006298[2] == gUnknown_03006298[3]); } -static void sub_81642A0(void) +static void LoadMultiPartnerCandidatesData(void) { s32 i, j, k; u32 spArray[5]; @@ -2576,7 +2321,7 @@ static void sub_81642A0(void) for (i = 0; i < APPRENTICE_COUNT; i++) { if (gSaveBlock2Ptr->apprentices[i].lvlMode != 0 - && gUnknown_085DF9EC[gSaveBlock2Ptr->apprentices[i].numQuestions] / 7 <= challengeNum + && sApprenticeChallengeThreshold[gSaveBlock2Ptr->apprentices[i].numQuestions] / 7 <= challengeNum && gSaveBlock2Ptr->apprentices[i].lvlMode - 1 == lvlMode) { k = 0; @@ -2600,7 +2345,7 @@ static void sub_81642A0(void) gSaveBlock2Ptr->frontier.trainerIds[6] = spArray[Random() % r10]; objEventTemplates[7].graphicsId = GetBattleFacilityTrainerGfxId(gSaveBlock2Ptr->frontier.trainerIds[6]); FlagClear(FLAG_HIDE_BATTLE_TOWER_MULTI_BATTLE_PARTNER_ALT_1); - sub_81640E0(gSaveBlock2Ptr->frontier.trainerIds[6]); + GetApprenticeMultiPartnerParty(gSaveBlock2Ptr->frontier.trainerIds[6]); } r10 = 0; @@ -2643,7 +2388,7 @@ static void sub_81642A0(void) gSaveBlock2Ptr->frontier.trainerIds[7] = spArray[Random() % r10]; objEventTemplates[8].graphicsId = GetBattleFacilityTrainerGfxId(gSaveBlock2Ptr->frontier.trainerIds[7]); FlagClear(FLAG_HIDE_BATTLE_TOWER_MULTI_BATTLE_PARTNER_ALT_2); - sub_8164188(gSaveBlock2Ptr->frontier.trainerIds[7]); + GetRecordMixFriendMultiPartnerParty(gSaveBlock2Ptr->frontier.trainerIds[7]); } } @@ -2682,9 +2427,9 @@ static void sub_81646BC(u16 trainerId, u16 monSetId) StringCopy(gStringVar2, gSpeciesNames[species]); } -static void sub_8164828(void) +static void ShowPartnerCandidateMessage(void) { - s32 i, j, arrId; + s32 i, j, partnerId; s32 monSetId; s32 level = SetFacilityPtrsGetLevel(); u16 winStreak = GetCurrentFacilityWinStreak(); @@ -2692,15 +2437,15 @@ static void sub_8164828(void) s32 k = gSpecialVar_LastTalked - 2; s32 trainerId = gSaveBlock2Ptr->frontier.trainerIds[k]; - for (arrId = 0; arrId < ARRAY_COUNT(gUnknown_085DD500); arrId++) + for (partnerId = 0; partnerId < ARRAY_COUNT(sPartnerTrainerTextTables); partnerId++) { - if (gUnknown_085DD500[arrId].facilityClass == GetFrontierTrainerFacilityClass(trainerId)) + if (sPartnerTrainerTextTables[partnerId].facilityClass == GetFrontierTrainerFacilityClass(trainerId)) break; } switch (gSpecialVar_0x8005) { - case 0: + case PARTNER_MSGID_INTRO: if (trainerId == TRAINER_EREADER) return; if (trainerId < TRAINER_RECORD_MIXING_FRIEND) @@ -2722,15 +2467,15 @@ static void sub_8164828(void) GetFrontierTrainerName(gStringVar3, trainerId); } break; - case 1: + case PARTNER_MSGID_MON1: monSetId = gSaveBlock2Ptr->frontier.trainerIds[8 + k * 2]; sub_81646BC(trainerId, monSetId); break; - case 2: + case PARTNER_MSGID_MON2_ASK: monSetId = gSaveBlock2Ptr->frontier.trainerIds[9 + k * 2]; sub_81646BC(trainerId, monSetId); break; - case 3: + case PARTNER_MSGID_ACCEPT: gPartnerTrainerId = trainerId; if (trainerId < TRAINER_RECORD_MIXING_FRIEND) { @@ -2767,29 +2512,31 @@ static void sub_8164828(void) } gSaveBlock2Ptr->frontier.trainerIds[17] = trainerId; break; - case 4: + case PARTNER_MSGID_REJECT: break; } if (trainerId == TRAINER_EREADER) return; + // First check is redundant, only needs to make sure it's not an Apprentice if (trainerId < TRAINER_RECORD_MIXING_FRIEND) { - ShowFieldMessage(gUnknown_085DD500[arrId].strings[gSpecialVar_0x8005]); + ShowFieldMessage(sPartnerTrainerTextTables[partnerId].strings[gSpecialVar_0x8005]); } else if (trainerId < TRAINER_RECORD_MIXING_APPRENTICE) { - ShowFieldMessage(gUnknown_085DD500[arrId].strings[gSpecialVar_0x8005]); + ShowFieldMessage(sPartnerTrainerTextTables[partnerId].strings[gSpecialVar_0x8005]); } + // Trainer is a former/record-mixed Apprentice, do Apprentice message else { - u8 id = gSaveBlock2Ptr->apprentices[trainerId - TRAINER_RECORD_MIXING_APPRENTICE].id; - ShowFieldMessage(gUnknown_085DD690[id][gSpecialVar_0x8005]); + u8 apprenticeId = gSaveBlock2Ptr->apprentices[trainerId - TRAINER_RECORD_MIXING_APPRENTICE].id; + ShowFieldMessage(sPartnerApprenticeTextTables[apprenticeId][gSpecialVar_0x8005]); } } -static void sub_8164B74(void) +static void LoadLinkMultiOpponentsData(void) { s32 challengeNum; s32 i, j; @@ -2884,9 +2631,10 @@ static void sub_8164DCC(void) sub_800AC34(); } -static void sub_8164DE4(void) +static void SetMultiPartnerGfx(void) { - SetBattleFacilityTrainerGfxId(gSaveBlock2Ptr->frontier.trainerIds[17], 0xF); + // 0xF below means use VAR_OBJ_GFX_ID_E + SetBattleFacilityTrainerGfxId(gSaveBlock2Ptr->frontier.trainerIds[17], 0xF); } static void SetTowerInterviewData(void) diff --git a/src/berry_tag_screen.c b/src/berry_tag_screen.c index 873d01dc7..89175c1bf 100644 --- a/src/berry_tag_screen.c +++ b/src/berry_tag_screen.c @@ -527,7 +527,7 @@ static void Task_CloseBerryTagScreen(u8 taskId) DestroyFlavorCircleSprites(); Free(sBerryTag); FreeAllWindowBuffers(); - SetMainCallback2(bag_menu_mail_related); + SetMainCallback2(CB2_ReturnToBagMenuPocket); DestroyTask(taskId); } } diff --git a/src/bike.c b/src/bike.c index b265a31bb..15857778c 100644 --- a/src/bike.c +++ b/src/bike.c @@ -1056,7 +1056,7 @@ void Bike_HandleBumpySlopeJump(void) bool32 IsRunningDisallowed(u8 metatile) { - if (!(gMapHeader.flags & 4) || IsRunningDisallowedByMetatile(metatile) == TRUE) + if (!(gMapHeader.flags & MAP_ALLOW_RUN) || IsRunningDisallowedByMetatile(metatile) == TRUE) return TRUE; else return FALSE; diff --git a/src/data/battle_frontier/apprentice.h b/src/data/battle_frontier/apprentice.h index 0fdb87f96..349dc9619 100644 --- a/src/data/battle_frontier/apprentice.h +++ b/src/data/battle_frontier/apprentice.h @@ -934,7 +934,7 @@ static const bool8 sValidApprenticeMoves[MOVES_COUNT] = // WHICH_MOVE has max 5 occurrences, defined as NUM_WHICH_MOVE_QUESTIONS // WHICH_FIRST has max 1 occurrence, lead mon should only be chosen once // WHICH_SPEECH has max 1 occurrence, as the apprentice leaves after its asked -static const u8 sQuestionPossibilities[] = +static const u8 sQuestionPossibilities[MAX_APPRENTICE_QUESTIONS] = { QUESTION_ID_WHAT_ITEM, QUESTION_ID_WHAT_ITEM, diff --git a/src/data/pokemon/item_effects.h b/src/data/pokemon/item_effects.h index 2c153b0ef..698d97a43 100644 --- a/src/data/pokemon/item_effects.h +++ b/src/data/pokemon/item_effects.h @@ -236,7 +236,7 @@ const u8 gItemEffect_PPMax[9] = { }; const u8 gItemEffect_GuardSpec[8] = { - [3] = ITEM3_MIST, + [3] = ITEM3_GUARD_SPEC, [5] = ITEM5_FRIENDSHIP_LOW | ITEM5_FRIENDSHIP_MID, [6] = 1, [7] = 1, diff --git a/src/decoration.c b/src/decoration.c index 8c14be8e1..da7e169cb 100644 --- a/src/decoration.c +++ b/src/decoration.c @@ -14,6 +14,7 @@ #include "graphics.h" #include "international_string_util.h" #include "item_icon.h" +#include "item_menu.h" #include "list_menu.h" #include "main.h" #include "menu.h" diff --git a/src/field_door.c b/src/field_door.c index c197aca14..8fb5cb948 100644 --- a/src/field_door.c +++ b/src/field_door.c @@ -9,7 +9,7 @@ #include "constants/maps.h" #include "constants/songs.h" -bool8 sub_808A964(void); +static bool8 ShouldUseMultiCorridorDoor(void); const u8 DoorAnimTiles_04[][0x100] = { @@ -698,14 +698,14 @@ static void DrawDoor(const struct DoorGraphics *gfx, const struct DoorAnimFrame if (frame->offset == 0xFFFF) { DrawClosedDoorTiles(gfx, x, y); - if (sub_808A964()) + if (ShouldUseMultiCorridorDoor()) DrawClosedDoorTiles(gfx, gSpecialVar_0x8004 + 7, gSpecialVar_0x8005 + 7); } else { CopyDoorTilesToVram(gfx, frame); DrawCurrentDoorAnimFrame(gfx, x, y, gfx->palette); - if (sub_808A964()) + if (ShouldUseMultiCorridorDoor()) DrawCurrentDoorAnimFrame(gfx, gSpecialVar_0x8004 + 7, gSpecialVar_0x8005 + 7, gfx->palette); } } @@ -885,11 +885,13 @@ u32 GetDoorSoundEffect(u32 x, u32 y) return SE_DOOR; } -bool8 sub_808A964(void) +// Opens the Battle Tower multi partner's door in sync with the player's door +static bool8 ShouldUseMultiCorridorDoor(void) { - if (FlagGet(FLAG_SPECIAL_FLAG_0x4002)) + if (FlagGet(FLAG_ENABLE_MULTI_CORRIDOR_DOOR)) { - if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(BATTLE_FRONTIER_BATTLE_TOWER_CORRIDOR2) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(BATTLE_FRONTIER_BATTLE_TOWER_CORRIDOR2)) + if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(BATTLE_FRONTIER_BATTLE_TOWER_MULTI_CORRIDOR) + && gSaveBlock1Ptr->location.mapNum == MAP_NUM(BATTLE_FRONTIER_BATTLE_TOWER_MULTI_CORRIDOR)) { return TRUE; } diff --git a/src/field_specials.c b/src/field_specials.c index 0e7637e6d..3101f0b2a 100644 --- a/src/field_specials.c +++ b/src/field_specials.c @@ -46,6 +46,7 @@ #include "wallclock.h" #include "window.h" #include "constants/battle_frontier.h" +#include "constants/battle_tower.h" #include "constants/decorations.h" #include "constants/event_objects.h" #include "constants/event_object_movement.h" @@ -83,7 +84,7 @@ static EWRAM_DATA u8 sScrollableMultichoice_ItemSpriteId = 0; static EWRAM_DATA u8 sBattlePointsWindowId = 0; static EWRAM_DATA u8 sFrontierExchangeCorner_ItemIconWindowId = 0; static EWRAM_DATA u8 sPCBoxToSendMon = 0; -static EWRAM_DATA u32 sUnknown_0203AB70 = 0; +static EWRAM_DATA u32 sBattleTowerMultiBattleTypeFlags = 0; struct ListMenuTemplate gScrollableMultichoice_ListMenuTemplate; @@ -128,7 +129,7 @@ static void ShowFrontierExchangeCornerItemIcon(u16 item); static void Task_DeoxysRockInteraction(u8 taskId); static void ChangeDeoxysRockLevel(u8 a0); static void WaitForDeoxysRockMovement(u8 taskId); -static void sub_813B57C(u8 taskId); +static void Task_LinkRetireStatusWithBattleTowerPartner(u8 taskId); static void Task_LoopWingFlapSE(u8 taskId); static void Task_CloseBattlePikeCurtain(u8 taskId); static u8 DidPlayerGetFirstFans(void); @@ -1701,10 +1702,10 @@ bool8 IsBadEggInParty(void) return FALSE; } -bool8 InMultiBattleRoom(void) +bool8 InMultiPartnerRoom(void) { - if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(BATTLE_FRONTIER_BATTLE_TOWER_MULTI_BATTLE_ROOM) - && gSaveBlock1Ptr->location.mapNum == MAP_NUM(BATTLE_FRONTIER_BATTLE_TOWER_MULTI_BATTLE_ROOM) && + if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(BATTLE_FRONTIER_BATTLE_TOWER_MULTI_PARTNER_ROOM) + && gSaveBlock1Ptr->location.mapNum == MAP_NUM(BATTLE_FRONTIER_BATTLE_TOWER_MULTI_PARTNER_ROOM) && VarGet(VAR_FRONTIER_BATTLE_MODE) == FRONTIER_MODE_MULTIS) return TRUE; return FALSE; @@ -3746,7 +3747,7 @@ bool32 ShouldDistributeEonTicket(void) void sub_813B534(void) { - sUnknown_0203AB70 = gBattleTypeFlags; + sBattleTowerMultiBattleTypeFlags = gBattleTypeFlags; gBattleTypeFlags = 0; if (!gReceivedRemoteLinkPlayers) { @@ -3754,12 +3755,12 @@ void sub_813B534(void) } } -void sub_813B568(void) +void LinkRetireStatusWithBattleTowerPartner(void) { - CreateTask(sub_813B57C, 5); + CreateTask(Task_LinkRetireStatusWithBattleTowerPartner, 5); } -static void sub_813B57C(u8 taskId) +static void Task_LinkRetireStatusWithBattleTowerPartner(u8 taskId) { switch (gTasks[taskId].data[0]) { @@ -3790,21 +3791,24 @@ static void sub_813B57C(u8 taskId) { gSpecialVar_0x8005 = gBlockRecvBuffer[1][0]; ResetBlockReceivedFlag(1); - if (gSpecialVar_0x8004 == 1 && gSpecialVar_0x8005 == 1) + if (gSpecialVar_0x8004 == BATTLE_TOWER_LINK_RETIRE + && gSpecialVar_0x8005 == BATTLE_TOWER_LINK_RETIRE) { - gSpecialVar_Result = 1; + gSpecialVar_Result = BATTLE_TOWER_LINKSTAT_BOTH_RETIRE; } - else if (gSpecialVar_0x8004 == 0 && gSpecialVar_0x8005 == 1) + else if (gSpecialVar_0x8004 == BATTLE_TOWER_LINK_CONTINUE + && gSpecialVar_0x8005 == BATTLE_TOWER_LINK_RETIRE) { - gSpecialVar_Result = 2; + gSpecialVar_Result = BATTLE_TOWER_LINKSTAT_PARTNER_RETIRE; } - else if (gSpecialVar_0x8004 == 1 && gSpecialVar_0x8005 == 0) + else if (gSpecialVar_0x8004 == BATTLE_TOWER_LINK_RETIRE + && gSpecialVar_0x8005 == BATTLE_TOWER_LINK_CONTINUE) { - gSpecialVar_Result = 3; + gSpecialVar_Result = BATTLE_TOWER_LINKSTAT_PLAYER_RETIRE; } else { - gSpecialVar_Result = 0; + gSpecialVar_Result = BATTLE_TOWER_LINKSTAT_CONTINUE; } } gTasks[taskId].data[0]++; @@ -3842,14 +3846,14 @@ static void sub_813B57C(u8 taskId) case 5: if (GetMultiplayerId() == 0) { - if (gSpecialVar_Result == 2) + if (gSpecialVar_Result == BATTLE_TOWER_LINKSTAT_PARTNER_RETIRE) { ShowFieldAutoScrollMessage(gText_YourPartnerHasRetired); } } else { - if (gSpecialVar_Result == 3) + if (gSpecialVar_Result == BATTLE_TOWER_LINKSTAT_PLAYER_RETIRE) { ShowFieldAutoScrollMessage(gText_YourPartnerHasRetired); } @@ -3880,7 +3884,7 @@ static void sub_813B57C(u8 taskId) { sub_800AC34(); } - gBattleTypeFlags = sUnknown_0203AB70; + gBattleTypeFlags = sBattleTowerMultiBattleTypeFlags; EnableBothScriptContexts(); DestroyTask(taskId); break; diff --git a/src/fieldmap.c b/src/fieldmap.c index f595803ff..21bbaa8f8 100644 --- a/src/fieldmap.c +++ b/src/fieldmap.c @@ -859,7 +859,7 @@ int sub_8088A4C(struct MapConnection *connection, int x, int y) return FALSE; } -struct MapConnection *sub_8088A8C(s16 x, s16 y) +struct MapConnection *GetConnectionAtCoords(s16 x, s16 y) { int count; struct MapConnection *connection; diff --git a/src/fldeff_dig.c b/src/fldeff_dig.c index b39d25182..7f10e126e 100644 --- a/src/fldeff_dig.c +++ b/src/fldeff_dig.c @@ -57,7 +57,7 @@ static void sub_8135780(void) } else { - taskId = CreateTask(task08_080A1C44, 8); + taskId = CreateTask(Task_UseDigEscapeRopeOnField, 8); gTasks[taskId].data[0] = 0; } } diff --git a/src/frontier_pass.c b/src/frontier_pass.c index 79c1ce6f4..42a518ed6 100644 --- a/src/frontier_pass.c +++ b/src/frontier_pass.c @@ -1531,7 +1531,7 @@ static void Task_HandleFrontierMap(u8 taskId) static u8 MapNumToFrontierFacilityId(u16 mapNum) // id + 1, zero means not a frontier map number { if ((mapNum >= MAP_NUM(BATTLE_FRONTIER_BATTLE_TOWER_LOBBY) && mapNum <= MAP_NUM(BATTLE_FRONTIER_BATTLE_TOWER_BATTLE_ROOM)) - || (mapNum >= MAP_NUM(BATTLE_FRONTIER_BATTLE_TOWER_MULTI_BATTLE_ROOM) && mapNum <= MAP_NUM(BATTLE_FRONTIER_BATTLE_TOWER_BATTLE_ROOM2))) + || (mapNum >= MAP_NUM(BATTLE_FRONTIER_BATTLE_TOWER_MULTI_PARTNER_ROOM) && mapNum <= MAP_NUM(BATTLE_FRONTIER_BATTLE_TOWER_MULTI_BATTLE_ROOM))) return FRONTIER_FACILITY_TOWER + 1; else if (mapNum == MAP_NUM(BATTLE_FRONTIER_BATTLE_DOME_LOBBY) || mapNum == MAP_NUM(BATTLE_FRONTIER_BATTLE_DOME_CORRIDOR) diff --git a/src/frontier_util.c b/src/frontier_util.c index 4f7ab1ba6..c77a2a838 100644 --- a/src/frontier_util.c +++ b/src/frontier_util.c @@ -840,8 +840,8 @@ static void GetFrontierData(void) gSpecialVar_Result = gBattleOutcome; gBattleOutcome = 0; break; - case FRONTIER_DATA_6: - gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_CA9_b; + case FRONTIER_DATA_RECORD_DISABLED: + gSpecialVar_Result = gSaveBlock2Ptr->frontier.disableRecordBattle; break; case FRONTIER_DATA_HEARD_BRAIN_SPEECH: gSpecialVar_Result = gSaveBlock2Ptr->frontier.battledBrainFlags & sBattledBrainBitFlags[facility][hasSymbol]; @@ -875,8 +875,8 @@ static void SetFrontierData(void) for (i = 0; i < MAX_FRONTIER_PARTY_SIZE; i++) gSaveBlock2Ptr->frontier.selectedPartyMons[i] = gSelectedOrderFromParty[i]; break; - case FRONTIER_DATA_6: - gSaveBlock2Ptr->frontier.field_CA9_b = gSpecialVar_0x8006; + case FRONTIER_DATA_RECORD_DISABLED: + gSaveBlock2Ptr->frontier.disableRecordBattle = gSpecialVar_0x8006; break; case FRONTIER_DATA_HEARD_BRAIN_SPEECH: gSaveBlock2Ptr->frontier.battledBrainFlags |= sBattledBrainBitFlags[facility][hasSymbol]; @@ -2173,7 +2173,7 @@ static void RestoreHeldItems(void) static void SaveRecordBattle(void) { gSpecialVar_Result = MoveRecordedBattleToSaveData(); - gSaveBlock2Ptr->frontier.field_CA9_b = 1; + gSaveBlock2Ptr->frontier.disableRecordBattle = TRUE; } static void BufferFrontierTrainerName(void) diff --git a/src/item_menu.c b/src/item_menu.c index 55222a206..6d86d67bd 100755 --- a/src/item_menu.c +++ b/src/item_menu.c @@ -136,7 +136,7 @@ void ItemMenu_Give(u8 taskId); void ItemMenu_Cancel(u8 taskId); void ItemMenu_UseInBattle(u8 taskId); void ItemMenu_CheckTag(u8 taskId); -void unknown_ItemMenu_Confirm(u8 taskId); +void Task_FadeAndCloseBagMenu(u8 taskId); void unknown_ItemMenu_Show(u8 taskId); void unknown_ItemMenu_Give2(u8 taskId); void unknown_ItemMenu_Confirm2(u8 taskId); @@ -216,7 +216,7 @@ const struct MenuAction sItemMenuActions[] = { {gMenuText_Walk, ItemMenu_UseOutOfBattle}, {gMenuText_Deselect, ItemMenu_Register}, {gMenuText_CheckTag, ItemMenu_CheckTag}, - {gMenuText_Confirm, unknown_ItemMenu_Confirm}, + {gMenuText_Confirm, Task_FadeAndCloseBagMenu}, {gMenuText_Show, unknown_ItemMenu_Show}, {gMenuText_Give2, unknown_ItemMenu_Give2}, {gMenuText_Confirm, unknown_ItemMenu_Confirm2}, @@ -241,7 +241,7 @@ const TaskFunc gUnknown_08614054[] = { unknown_item_menu_type, item_menu_type_2, DisplaySellItemAskString, - unknown_ItemMenu_Confirm, + Task_FadeAndCloseBagMenu, unknown_item_menu_type, DisplayDepositItemAskString, unknown_item_menu_type, @@ -942,7 +942,7 @@ void FreeBagItemListBuffers(void) Free(gBagMenu); } -void unknown_ItemMenu_Confirm(u8 taskId) +void Task_FadeAndCloseBagMenu(u8 taskId) { BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK); gTasks[taskId].func = TaskCloseBagMenu_2; @@ -966,7 +966,7 @@ void TaskCloseBagMenu_2(u8 taskId) } } -void sub_81AB9A8(u8 pocketId) +void UpdatePocketItemList(u8 pocketId) { u16 i; struct BagPocket *pocket = &gBagPockets[pocketId]; @@ -997,7 +997,7 @@ void sub_81ABA6C(void) { u8 i; for (i = 0; i < POCKETS_COUNT; i++) - sub_81AB9A8(i); + UpdatePocketItemList(i); } void SetInitialScrollAndCursorPositions(u8 pocketId) @@ -1041,7 +1041,7 @@ void BagMenu_InitListsMenu(u8 taskId) u16* cursorPos = &gBagPositionStruct.cursorPosition[gBagPositionStruct.pocket]; bag_menu_RemoveBagItem_message_window(4); DestroyListMenuTask(data[0], scrollPos, cursorPos); - sub_81AB9A8(gBagPositionStruct.pocket); + UpdatePocketItemList(gBagPositionStruct.pocket); SetInitialScrollAndCursorPositions(gBagPositionStruct.pocket); LoadBagItemListBuffers(gBagPositionStruct.pocket); data[0] = ListMenuInit(&gMultiuseListMenuTemplate, *scrollPos, *cursorPos); @@ -1117,7 +1117,7 @@ void Task_BagMenu(u8 taskId) } PlaySE(SE_SELECT); gSpecialVar_ItemId = select; - gTasks[taskId].func = unknown_ItemMenu_Confirm; + gTasks[taskId].func = Task_FadeAndCloseBagMenu; break; default: // A_BUTTON PlaySE(SE_SELECT); @@ -1744,7 +1744,7 @@ void Task_ActuallyToss(u8 taskId) PlaySE(SE_SELECT); RemoveBagItem(gSpecialVar_ItemId, data[8]); DestroyListMenuTask(data[0], scrollPos, cursorPos); - sub_81AB9A8(gBagPositionStruct.pocket); + UpdatePocketItemList(gBagPositionStruct.pocket); SetInitialScrollAndCursorPositions(gBagPositionStruct.pocket); LoadBagItemListBuffers(gBagPositionStruct.pocket); data[0] = ListMenuInit(&gMultiuseListMenuTemplate, *scrollPos, *cursorPos); @@ -1784,7 +1784,7 @@ void ItemMenu_Give(u8 taskId) else { gBagMenu->mainCallback2 = CB2_ChooseMonToGiveItem; - unknown_ItemMenu_Confirm(taskId); + Task_FadeAndCloseBagMenu(taskId); } } else @@ -1817,7 +1817,7 @@ void sub_81AD350(u8 taskId) void ItemMenu_CheckTag(u8 taskId) { gBagMenu->mainCallback2 = DoBerryTagScreen; - unknown_ItemMenu_Confirm(taskId); + Task_FadeAndCloseBagMenu(taskId); } void ItemMenu_Cancel(u8 taskId) @@ -1841,7 +1841,7 @@ void ItemMenu_UseInBattle(u8 taskId) } } -void bag_menu_mail_related(void) +void CB2_ReturnToBagMenuPocket(void) { GoToBagMenu(RETURN_LOCATION_UNCHANGED, POCKETS_COUNT, NULL); } @@ -1860,7 +1860,7 @@ void item_menu_type_2(u8 taskId) } else if (gBagPositionStruct.pocket != KEYITEMS_POCKET && !ItemId_GetImportance(gSpecialVar_ItemId)) { - unknown_ItemMenu_Confirm(taskId); + Task_FadeAndCloseBagMenu(taskId); } else { @@ -1873,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) diff --git a/src/item_use.c b/src/item_use.c index 82ffd7170..954d4b26f 100755 --- a/src/item_use.c +++ b/src/item_use.c @@ -11,6 +11,7 @@ #include "event_data.h" #include "event_object_lock.h" #include "event_object_movement.h" +#include "event_scripts.h" #include "fieldmap.h" #include "field_effect.h" #include "field_player_avatar.h" @@ -43,49 +44,40 @@ #include "constants/songs.h" #include "constants/vars.h" -extern u8 BerryTree_EventScript_ItemUsePlantBerry[]; -extern u8 BerryTree_EventScript_ItemUseWailmerPail[]; -extern u8 BattleFrontier_OutsideEast_EventScript_WaterSudowoodo[]; - -void SetUpItemUseCallback(u8 taskId); -void MapPostLoadHook_UseItem(void); -void sub_80AF6D4(void); -void Task_CallItemUseOnFieldCallback(u8 taskId); -void BagMenu_InitListsMenu(u8 taskId); -void ItemUseOnFieldCB_Bike(u8 taskId); -void ItemUseOnFieldCB_Rod(u8 taskId); -void ItemUseOnFieldCB_Itemfinder(u8 taskId); -void sub_80FD504(u8 taskId); -void sub_80FD5CC(u8 taskId); -void sub_80FDA94(u8 taskId); -void sub_80FDADC(u8 taskId); -void sub_80FD7C8(u8 taskId); -void sub_80FDC00(u8 taskId); -void ItemUseOnFieldCB_Berry(u8 taskId); -void ItemUseOnFieldCB_WailmerPailBerry(u8 taskId); -void ItemUseOnFieldCB_WailmerPailSudowoodo(u8 taskId); +static void SetUpItemUseCallback(u8 taskId); +static void FieldCB_UseItemOnField(void); +static void Task_CallItemUseOnFieldCallback(u8 taskId); +static void Task_UseItemfinder(u8 taskId); +static void Task_CloseItemfinderMessage(u8 taskId); +static void Task_HiddenItemNearby(u8 taskId); +static void Task_StandingOnHiddenItem(u8 taskId); +static bool8 ItemfinderCheckForHiddenItems(const struct MapEvents *, u8); +static u8 GetDirectionToHiddenItem(s16 distanceX, s16 distanceY); +static void PlayerFaceHiddenItem(u8 a); +static void CheckForHiddenItemsInMapConnection(u8 taskId); +static void sub_80FDC00(u8 taskId); +static void ItemUseOnFieldCB_Bike(u8 taskId); +static void ItemUseOnFieldCB_Rod(u8); +static void ItemUseOnFieldCB_Itemfinder(u8); +static void ItemUseOnFieldCB_Berry(u8 taskId); +static void ItemUseOnFieldCB_WailmerPailBerry(u8 taskId); +static void ItemUseOnFieldCB_WailmerPailSudowoodo(u8 taskId); +static bool8 TryToWaterSudowoodo(void); static void BootUpSoundTMHM(u8 taskId); static void Task_ShowTMHMContainedMessage(u8 taskId); static void UseTMHMYesNo(u8 taskId); static void UseTMHM(u8 taskId); -void sub_80FE124(u8 taskId); -void sub_80FE164(u8 taskId); - -void DisplayItemMessage(u8 taskId, u8 a, const u8* str, void(*callback)(u8 taskId)); -void DisplayItemMessageOnField(u8 taskId, const u8* str, void(*callback)(u8 taskId)); -void sub_81C6714(u8 taskId); -void CleanUpAfterFailingToUseRegisteredKeyItemOnField(u8 taskId); -void StartFishing(u8 a); -bool8 ItemfinderCheckForHiddenItems(const struct MapEvents *, u8); -u8 sub_80FD9B0(s16 a, s16 b); -void sub_80FDA24(u8 a); -void sub_80FD8E0(u8 taskId, s16 x, s16 y); -void sub_80FDBEC(void); -bool8 TryToWaterSudowoodo(void); -void ItemUseOutOfBattle_CannotUse(u8 taskId); +static void Task_StartUseRepel(u8 taskId); +static void Task_UseRepel(u8 taskId); +static void Task_CloseCantUseKeyItemMessage(u8 taskId); +static void SetDistanceOfClosestHiddenItem(u8 taskId, s16 x, s16 y); +static void CB2_OpenPokeblockCaseOnField(void); // EWRAM variables -EWRAM_DATA static void(*gUnknown_0203A0F4)(u8 taskId) = NULL; +EWRAM_DATA static void(*sItemUseOnFieldCB)(u8 taskId) = NULL; + +// Below is set TRUE by UseRegisteredKeyItemOnField +#define tUsingRegisteredKeyItem data[3] // .rodata @@ -96,7 +88,7 @@ static const MainCallback sItemUseCallbacks[] = NULL, }; -static const u8 gUnknown_085920E4[] = {DIR_NORTH, DIR_EAST, DIR_SOUTH, DIR_WEST}; +static const u8 sClockwiseDirections[] = {DIR_NORTH, DIR_EAST, DIR_SOUTH, DIR_WEST}; static const struct YesNoFuncTable sUseTMHMYesNoFuncTable = { @@ -106,7 +98,7 @@ static const struct YesNoFuncTable sUseTMHMYesNoFuncTable = // .text -void SetUpItemUseCallback(u8 taskId) +static void SetUpItemUseCallback(u8 taskId) { u8 type; if (gSpecialVar_ItemId == ITEM_ENIGMA_BERRY) @@ -116,39 +108,39 @@ void SetUpItemUseCallback(u8 taskId) if (!InBattlePyramid()) { gBagMenu->mainCallback2 = sItemUseCallbacks[type]; - unknown_ItemMenu_Confirm(taskId); + Task_FadeAndCloseBagMenu(taskId); } else { gPyramidBagResources->callback2 = sItemUseCallbacks[type]; - sub_81C5B14(taskId); + CloseBattlePyramidBagAndSetCallback(taskId); } } -void SetUpItemUseOnFieldCallback(u8 taskId) +static void SetUpItemUseOnFieldCallback(u8 taskId) { - if (gTasks[taskId].data[3] != 1) + if (gTasks[taskId].tUsingRegisteredKeyItem != TRUE) { - gFieldCallback = MapPostLoadHook_UseItem; + gFieldCallback = FieldCB_UseItemOnField; SetUpItemUseCallback(taskId); } else - gUnknown_0203A0F4(taskId); + sItemUseOnFieldCB(taskId); } -void MapPostLoadHook_UseItem(void) +static void FieldCB_UseItemOnField(void) { FadeInFromBlack(); CreateTask(Task_CallItemUseOnFieldCallback, 8); } -void Task_CallItemUseOnFieldCallback(u8 taskId) +static void Task_CallItemUseOnFieldCallback(u8 taskId) { if (IsWeatherNotFadingIn() == 1) - gUnknown_0203A0F4(taskId); + sItemUseOnFieldCB(taskId); } -void DisplayCannotUseItemMessage(u8 taskId, bool8 isUsingRegisteredKeyItemOnField, const u8 *str) +static void DisplayCannotUseItemMessage(u8 taskId, bool8 isUsingRegisteredKeyItemOnField, const u8 *str) { StringExpandPlaceholders(gStringVar4, str); if (!isUsingRegisteredKeyItemOnField) @@ -156,23 +148,23 @@ void DisplayCannotUseItemMessage(u8 taskId, bool8 isUsingRegisteredKeyItemOnFiel if (!InBattlePyramid()) DisplayItemMessage(taskId, 1, gStringVar4, BagMenu_InitListsMenu); else - DisplayItemMessageInBattlePyramid(taskId, gText_DadsAdvice, sub_81C6714); + DisplayItemMessageInBattlePyramid(taskId, gText_DadsAdvice, Task_CloseBattlePyramidBagMessage); } else - DisplayItemMessageOnField(taskId, gStringVar4, CleanUpAfterFailingToUseRegisteredKeyItemOnField); + DisplayItemMessageOnField(taskId, gStringVar4, Task_CloseCantUseKeyItemMessage); } -void DisplayDadsAdviceCannotUseItemMessage(u8 taskId, bool8 isUsingRegisteredKeyItemOnField) +static void DisplayDadsAdviceCannotUseItemMessage(u8 taskId, bool8 isUsingRegisteredKeyItemOnField) { DisplayCannotUseItemMessage(taskId, isUsingRegisteredKeyItemOnField, gText_DadsAdvice); } -void DisplayCannotDismountBikeMessage(u8 taskId, bool8 isUsingRegisteredKeyItemOnField) +static void DisplayCannotDismountBikeMessage(u8 taskId, bool8 isUsingRegisteredKeyItemOnField) { DisplayCannotUseItemMessage(taskId, isUsingRegisteredKeyItemOnField, gText_CantDismountBike); } -void CleanUpAfterFailingToUseRegisteredKeyItemOnField(u8 taskId) +static void Task_CloseCantUseKeyItemMessage(u8 taskId) { ClearDialogWindowAndFrame(0, 1); DestroyTask(taskId); @@ -190,17 +182,18 @@ u8 CheckIfItemIsTMHMOrEvolutionStone(u16 itemId) return 0; } -void sub_80FD254(void) +// Mail in the bag menu can't have a message but it can be checked (view the mail background, no message) +static void CB2_CheckMail(void) { struct MailStruct mail; mail.itemId = gSpecialVar_ItemId; - ReadMail(&mail, bag_menu_mail_related, 0); + ReadMail(&mail, CB2_ReturnToBagMenuPocket, 0); } void ItemUseOutOfBattle_Mail(u8 taskId) { - gBagMenu->mainCallback2 = sub_80FD254; - unknown_ItemMenu_Confirm(taskId); + gBagMenu->mainCallback2 = CB2_CheckMail; + Task_FadeAndCloseBagMenu(taskId); } void ItemUseOutOfBattle_Bike(u8 taskId) @@ -212,20 +205,20 @@ void ItemUseOutOfBattle_Bike(u8 taskId) PlayerGetDestCoords(&coordsX, &coordsY); behavior = MapGridGetMetatileBehaviorAt(coordsX, coordsY); if (FlagGet(FLAG_SYS_CYCLING_ROAD) == TRUE || MetatileBehavior_IsVerticalRail(behavior) == TRUE || MetatileBehavior_IsHorizontalRail(behavior) == TRUE || MetatileBehavior_IsIsolatedVerticalRail(behavior) == TRUE || MetatileBehavior_IsIsolatedHorizontalRail(behavior) == TRUE) - DisplayCannotDismountBikeMessage(taskId, data[3]); + DisplayCannotDismountBikeMessage(taskId, tUsingRegisteredKeyItem); else { if (Overworld_IsBikingAllowed() == TRUE && IsBikingDisallowedByPlayer() == 0) { - gUnknown_0203A0F4 = ItemUseOnFieldCB_Bike; + sItemUseOnFieldCB = ItemUseOnFieldCB_Bike; SetUpItemUseOnFieldCallback(taskId); } else - DisplayDadsAdviceCannotUseItemMessage(taskId, data[3]); + DisplayDadsAdviceCannotUseItemMessage(taskId, tUsingRegisteredKeyItem); } } -void ItemUseOnFieldCB_Bike(u8 taskId) +static void ItemUseOnFieldCB_Bike(u8 taskId) { if (!ItemId_GetSecondaryId(gSpecialVar_ItemId)) GetOnOffBike(2); @@ -236,7 +229,7 @@ void ItemUseOnFieldCB_Bike(u8 taskId) DestroyTask(taskId); } -bool32 CanFish(void) +static bool32 CanFish(void) { s16 x, y; u16 tileBehavior; @@ -270,14 +263,14 @@ void ItemUseOutOfBattle_Rod(u8 taskId) { if (CanFish() == TRUE) { - gUnknown_0203A0F4 = ItemUseOnFieldCB_Rod; + sItemUseOnFieldCB = ItemUseOnFieldCB_Rod; SetUpItemUseOnFieldCallback(taskId); } else - DisplayDadsAdviceCannotUseItemMessage(taskId, gTasks[taskId].data[3]); + DisplayDadsAdviceCannotUseItemMessage(taskId, gTasks[taskId].tUsingRegisteredKeyItem); } -void ItemUseOnFieldCB_Rod(u8 taskId) +static void ItemUseOnFieldCB_Rod(u8 taskId) { StartFishing(ItemId_GetSecondaryId(gSpecialVar_ItemId)); DestroyTask(taskId); @@ -285,56 +278,65 @@ void ItemUseOnFieldCB_Rod(u8 taskId) void ItemUseOutOfBattle_Itemfinder(u8 var) { - IncrementGameStat(0x27); - gUnknown_0203A0F4 = ItemUseOnFieldCB_Itemfinder; + IncrementGameStat(GAME_STAT_USED_ITEMFINDER); + sItemUseOnFieldCB = ItemUseOnFieldCB_Itemfinder; SetUpItemUseOnFieldCallback(var); } -void ItemUseOnFieldCB_Itemfinder(u8 taskId) +static void ItemUseOnFieldCB_Itemfinder(u8 taskId) { if (ItemfinderCheckForHiddenItems(gMapHeader.events, taskId) == TRUE) - gTasks[taskId].func = sub_80FD504; + gTasks[taskId].func = Task_UseItemfinder; else - DisplayItemMessageOnField(taskId, gText_ItemFinderNothing, sub_80FD5CC); + DisplayItemMessageOnField(taskId, gText_ItemFinderNothing, Task_CloseItemfinderMessage); } -void sub_80FD504(u8 taskId) +// Define itemfinder task data +#define tItemDistanceX data[0] +#define tItemDistanceY data[1] +#define tItemFound data[2] +#define tCounter data[3] // Used to count delay between beeps and rotations during player spin +#define tItemfinderBeeps data[4] +#define tFacingDir data[5] + +static void Task_UseItemfinder(u8 taskId) { u8 playerDir; u8 playerDirToItem; u8 i; s16* data = gTasks[taskId].data; - if (!data[3]) + if (tCounter == 0) { - if (data[4] == 4) + if (tItemfinderBeeps == 4) { - playerDirToItem = sub_80FD9B0(data[0], data[1]); - if (playerDirToItem) + playerDirToItem = GetDirectionToHiddenItem(tItemDistanceX, tItemDistanceY); + if (playerDirToItem != DIR_NONE) { - sub_80FDA24(gUnknown_085920E4[playerDirToItem - 1]); - gTasks[taskId].func = sub_80FDA94; + PlayerFaceHiddenItem(sClockwiseDirections[playerDirToItem - 1]); + gTasks[taskId].func = Task_HiddenItemNearby; } else { + // Player is standing on hidden item playerDir = GetPlayerFacingDirection(); - for (i = 0; i < 4; i++) + for (i = 0; i < ARRAY_COUNT(sClockwiseDirections); i++) { - if (playerDir == gUnknown_085920E4[i]) - data[5] = (i + 1) & 3; + if (playerDir == sClockwiseDirections[i]) + tFacingDir = (i + 1) & 3; } - gTasks[taskId].func = sub_80FDADC; - data[3] = 0; - data[2] = 0; + gTasks[taskId].func = Task_StandingOnHiddenItem; + tCounter = 0; + tItemFound = 0; } return; } PlaySE(SE_DAUGI); - data[4]++; + tItemfinderBeeps++; } - data[3] = (data[3] + 1) & 0x1F; + tCounter = (tCounter + 1) & 0x1F; } -void sub_80FD5CC(u8 taskId) +static void Task_CloseItemfinderMessage(u8 taskId) { ClearDialogWindowAndFrame(0, 1); ScriptUnfreezeObjectEvents(); @@ -342,34 +344,36 @@ void sub_80FD5CC(u8 taskId) DestroyTask(taskId); } -bool8 ItemfinderCheckForHiddenItems(const struct MapEvents *events, u8 taskId) +static bool8 ItemfinderCheckForHiddenItems(const struct MapEvents *events, u8 taskId) { - int distanceX, distanceY; - s16 x, y, i, newDistanceX, newDistanceY; - PlayerGetDestCoords(&x, &y); - gTasks[taskId].data[2] = FALSE; + int itemX, itemY; + s16 playerX, playerY, i, distanceX, distanceY; + PlayerGetDestCoords(&playerX, &playerY); + gTasks[taskId].tItemFound = FALSE; + for (i = 0; i < events->bgEventCount; i++) { + // Check if there are any hidden items on the current map that haven't been picked up if (events->bgEvents[i].kind == BG_EVENT_HIDDEN_ITEM && !FlagGet(events->bgEvents[i].bgUnion.hiddenItem.hiddenItemId + FLAG_HIDDEN_ITEMS_START)) { - distanceX = (u16)events->bgEvents[i].x + 7; - newDistanceX = distanceX - x; - distanceY = (u16)events->bgEvents[i].y + 7; - newDistanceY = distanceY - y; + itemX = (u16)events->bgEvents[i].x + 7; + distanceX = itemX - playerX; + itemY = (u16)events->bgEvents[i].y + 7; + distanceY = itemY - playerY; - if ((u16)(newDistanceX + 7) < 15 && (newDistanceY >= -5) && (newDistanceY < 6)) - sub_80FD8E0(taskId, newDistanceX, newDistanceY); + if ((u16)(distanceX + 7) < 15 && (distanceY >= -5) && (distanceY < 6)) + SetDistanceOfClosestHiddenItem(taskId, distanceX, distanceY); } } - sub_80FD7C8(taskId); - if (gTasks[taskId].data[2] == TRUE) + CheckForHiddenItemsInMapConnection(taskId); + if (gTasks[taskId].tItemFound == TRUE) return TRUE; else return FALSE; } -bool8 sub_80FD6D4(const struct MapEvents *events, s16 x, s16 y) +static bool8 IsHiddenItemPresentAtCoords(const struct MapEvents *events, s16 x, s16 y) { u8 bgEventCount = events->bgEventCount; struct BgEvent *bgEvent = events->bgEvents; @@ -388,7 +392,7 @@ bool8 sub_80FD6D4(const struct MapEvents *events, s16 x, s16 y) return FALSE; } -bool8 sub_80FD730(struct MapConnection *connection, int x, int y) +static bool8 IsHiddenItemPresentInConnection(struct MapConnection *connection, int x, int y) { u16 localX, localY; @@ -399,7 +403,7 @@ bool8 sub_80FD730(struct MapConnection *connection, int x, int y) switch (connection->direction) { - // same weird temp variable behavior seen in sub_80FD6D4 + // same weird temp variable behavior seen in IsHiddenItemPresentAtCoords case 2: localOffset = connection->offset + 7; localX = x - localOffset; @@ -427,136 +431,145 @@ bool8 sub_80FD730(struct MapConnection *connection, int x, int y) default: return FALSE; } - return sub_80FD6D4(mapHeader->events, localX, localY); + return IsHiddenItemPresentAtCoords(mapHeader->events, localX, localY); } -void sub_80FD7C8(u8 taskId) +static void CheckForHiddenItemsInMapConnection(u8 taskId) { + s16 playerX, playerY; s16 x, y; - s16 curX, curY; s16 width = gMapHeader.mapLayout->width + 7; s16 height = gMapHeader.mapLayout->height + 7; s16 var1 = 7; s16 var2 = 7; - PlayerGetDestCoords(&x, &y); + PlayerGetDestCoords(&playerX, &playerY); - for (curX = x - 7; curX <= x + 7; curX++) + for (x = playerX - 7; x <= playerX + 7; x++) { - for (curY = y - 5; curY <= y + 5; curY++) + for (y = playerY - 5; y <= playerY + 5; y++) { - if (var1 > curX - || curX >= width - || var2 > curY - || curY >= height) + if (var1 > x + || x >= width + || var2 > y + || y >= height) { - struct MapConnection *conn = sub_8088A8C(curX, curY); - if (conn && sub_80FD730(conn, curX, curY) == TRUE) - sub_80FD8E0(taskId, curX - x, curY - y); + struct MapConnection *conn = GetConnectionAtCoords(x, y); + if (conn && IsHiddenItemPresentInConnection(conn, x, y) == TRUE) + SetDistanceOfClosestHiddenItem(taskId, x - playerX, y - playerY); } } } } -void sub_80FD8E0(u8 taskId, s16 x, s16 y) +static void SetDistanceOfClosestHiddenItem(u8 taskId, s16 itemDistanceX, s16 itemDistanceY) { s16 *data = gTasks[taskId].data; - s16 var1, var2, var3, var4; + s16 oldItemAbsX, oldItemAbsY, newItemAbsX, newItemAbsY; - if (data[2] == FALSE) + if (tItemFound == FALSE) { - data[0] = x; - data[1] = y; - data[2] = TRUE; + // No other items found yet, set this one + tItemDistanceX = itemDistanceX; + tItemDistanceY = itemDistanceY; + tItemFound = TRUE; } else { - // data[0] and data[1] contain the player's coordinates. - // x and y contain the item's coordinates. - if (data[0] < 0) - var1 = data[0] * -1; // item is to the left + // Other items have been found, check if this one is closer + + // Get absolute x distance of the already-found item + if (tItemDistanceX < 0) + oldItemAbsX = tItemDistanceX * -1; // WEST else - var1 = data[0]; // item is to the right + oldItemAbsX = tItemDistanceX; // EAST - if (data[1] < 0) - var2 = data[1] * -1; // item is to the north + // Get absolute y distance of the already-found item + if (tItemDistanceY < 0) + oldItemAbsY = tItemDistanceY * -1; // NORTH else - var2 = data[1]; // item is to the south + oldItemAbsY = tItemDistanceY; // SOUTH - if (x < 0) - var3 = x * -1; + // Get absolute x distance of the newly-found item + if (itemDistanceX < 0) + newItemAbsX = itemDistanceX * -1; else - var3 = x; + newItemAbsX = itemDistanceX; - if (y < 0) - var4 = y * -1; + // Get absolute y distance of the newly-found item + if (itemDistanceY < 0) + newItemAbsY = itemDistanceY * -1; else - var4 = y; + newItemAbsY = itemDistanceY; - if (var1 + var2 > var3 + var4) + + if (oldItemAbsX + oldItemAbsY > newItemAbsX + newItemAbsY) { - data[0] = x; - data[1] = y; + // New item is closer + tItemDistanceX = itemDistanceX; + tItemDistanceY = itemDistanceY; } else { - if (var1 + var2 == var3 + var4 && (var2 > var4 || (var2 == var4 && data[1] < y))) + if (oldItemAbsX + oldItemAbsY == newItemAbsX + newItemAbsY + && (oldItemAbsY > newItemAbsY || (oldItemAbsY == newItemAbsY && tItemDistanceY < itemDistanceY))) { - data[0] = x; - data[1] = y; + // If items are equal distance, use whichever is closer on the Y axis or further south + tItemDistanceX = itemDistanceX; + tItemDistanceY = itemDistanceY; } } } } -u8 sub_80FD9B0(s16 itemX, s16 itemY) +static u8 GetDirectionToHiddenItem(s16 itemDistanceX, s16 itemDistanceY) { - s16 abX, abY; + s16 absX, absY; - if (itemX == 0 && itemY == 0) + if (itemDistanceX == 0 && itemDistanceY == 0) return DIR_NONE; // player is standing on the item. - // get absolute X distance. - if (itemX < 0) - abX = itemX * -1; + // Get absolute X distance. + if (itemDistanceX < 0) + absX = itemDistanceX * -1; else - abX = itemX; + absX = itemDistanceX; - // get absolute Y distance. - if (itemY < 0) - abY = itemY * -1; + // Get absolute Y distance. + if (itemDistanceY < 0) + absY = itemDistanceY * -1; else - abY = itemY; + absY = itemDistanceY; - if (abX > abY) + if (absX > absY) { - if (itemX < 0) + if (itemDistanceX < 0) return DIR_EAST; else return DIR_NORTH; } else { - if (abX < abY) + if (absX < absY) { - if (itemY < 0) + if (itemDistanceY < 0) return DIR_SOUTH; else return DIR_WEST; } - if (abX == abY) + if (absX == absY) { - if (itemY < 0) + if (itemDistanceY < 0) return DIR_SOUTH; else return DIR_WEST; } - return DIR_NONE; // should never get here. return something so it doesnt crash. + return DIR_NONE; // Unreachable } } -void sub_80FDA24(u8 direction) +static void PlayerFaceHiddenItem(u8 direction) { ObjectEventClearHeldMovementIfFinished(&gObjectEvents[GetObjectEventIdByLocalIdAndMap(OBJ_EVENT_ID_PLAYER, 0, 0)]); ObjectEventClearHeldMovement(&gObjectEvents[GetObjectEventIdByLocalIdAndMap(OBJ_EVENT_ID_PLAYER, 0, 0)]); @@ -564,39 +577,48 @@ void sub_80FDA24(u8 direction) PlayerTurnInPlace(direction); } -void sub_80FDA94(u8 taskId) +static void Task_HiddenItemNearby(u8 taskId) { if (ObjectEventCheckHeldMovementStatus(&gObjectEvents[GetObjectEventIdByLocalIdAndMap(OBJ_EVENT_ID_PLAYER, 0, 0)]) == TRUE) - DisplayItemMessageOnField(taskId, gText_ItemFinderNearby, sub_80FD5CC); + DisplayItemMessageOnField(taskId, gText_ItemFinderNearby, Task_CloseItemfinderMessage); } -void sub_80FDADC(u8 taskId) +static void Task_StandingOnHiddenItem(u8 taskId) { s16 *data = gTasks[taskId].data; if (ObjectEventCheckHeldMovementStatus(&gObjectEvents[GetObjectEventIdByLocalIdAndMap(OBJ_EVENT_ID_PLAYER, 0, 0)]) == TRUE - || data[2] == FALSE) + || tItemFound == FALSE) { - sub_80FDA24(gUnknown_085920E4[data[5]]); - data[2] = 1; - data[5] = (data[5] + 1) & 3; - data[3]++; - - if (data[3] == 4) - DisplayItemMessageOnField(taskId, gText_ItemFinderOnTop, sub_80FD5CC); + // Spin player around on item + PlayerFaceHiddenItem(sClockwiseDirections[tFacingDir]); + tItemFound = TRUE; + tFacingDir = (tFacingDir + 1) & 3; + tCounter++; + + if (tCounter == 4) + DisplayItemMessageOnField(taskId, gText_ItemFinderOnTop, Task_CloseItemfinderMessage); } } +// Undefine itemfinder task data +#undef tItemDistanceX +#undef tItemDistanceY +#undef tItemFound +#undef tCounter +#undef tItemfinderBeeps +#undef tFacingDir + void ItemUseOutOfBattle_PokeblockCase(u8 taskId) { - if (sub_81221AC() == TRUE) + if (sub_81221AC() == TRUE) // link func { - DisplayDadsAdviceCannotUseItemMessage(taskId, gTasks[taskId].data[3]); + DisplayDadsAdviceCannotUseItemMessage(taskId, gTasks[taskId].tUsingRegisteredKeyItem); } - else if (gTasks[taskId].data[3] != TRUE) + else if (gTasks[taskId].tUsingRegisteredKeyItem != TRUE) { - gBagMenu->mainCallback2 = sub_80FDBEC; - unknown_ItemMenu_Confirm(taskId); + gBagMenu->mainCallback2 = CB2_OpenPokeblockCaseOnField; + Task_FadeAndCloseBagMenu(taskId); } else { @@ -606,17 +628,17 @@ void ItemUseOutOfBattle_PokeblockCase(u8 taskId) } } -void sub_80FDBEC(void) +static void CB2_OpenPokeblockCaseOnField(void) { - OpenPokeblockCase(0, bag_menu_mail_related); + OpenPokeblockCase(PBLOCK_CASE_FIELD, CB2_ReturnToBagMenuPocket); } -void sub_80FDC00(u8 taskId) +static void sub_80FDC00(u8 taskId) { if (!gPaletteFade.active) { CleanupOverworldWindowsAndTilemaps(); - OpenPokeblockCase(0, CB2_ReturnToField); + OpenPokeblockCase(PBLOCK_CASE_FIELD, CB2_ReturnToField); DestroyTask(taskId); } } @@ -626,13 +648,13 @@ void ItemUseOutOfBattle_CoinCase(u8 taskId) ConvertIntToDecimalStringN(gStringVar1, GetCoins(), STR_CONV_MODE_LEFT_ALIGN, 4); StringExpandPlaceholders(gStringVar4, gText_CoinCase); - if (!gTasks[taskId].data[3]) + if (!gTasks[taskId].tUsingRegisteredKeyItem) { DisplayItemMessage(taskId, 1, gStringVar4, BagMenu_InitListsMenu); } else { - DisplayItemMessageOnField(taskId, gStringVar4, CleanUpAfterFailingToUseRegisteredKeyItemOnField); + DisplayItemMessageOnField(taskId, gStringVar4, Task_CloseCantUseKeyItemMessage); } } @@ -641,13 +663,13 @@ void ItemUseOutOfBattle_PowderJar(u8 taskId) ConvertIntToDecimalStringN(gStringVar1, GetBerryPowder(), STR_CONV_MODE_LEFT_ALIGN, 5); StringExpandPlaceholders(gStringVar4, gText_PowderQty); - if (!gTasks[taskId].data[3]) + if (!gTasks[taskId].tUsingRegisteredKeyItem) { DisplayItemMessage(taskId, 1, gStringVar4, BagMenu_InitListsMenu); } else { - DisplayItemMessageOnField(taskId, gStringVar4, CleanUpAfterFailingToUseRegisteredKeyItemOnField); + DisplayItemMessageOnField(taskId, gStringVar4, Task_CloseCantUseKeyItemMessage); } } @@ -655,10 +677,10 @@ void ItemUseOutOfBattle_Berry(u8 taskId) { if (IsPlayerFacingEmptyBerryTreePatch() == TRUE) { - gUnknown_0203A0F4 = ItemUseOnFieldCB_Berry; - gFieldCallback = MapPostLoadHook_UseItem; + sItemUseOnFieldCB = ItemUseOnFieldCB_Berry; + gFieldCallback = FieldCB_UseItemOnField; gBagMenu->mainCallback2 = CB2_ReturnToField; - unknown_ItemMenu_Confirm(taskId); + Task_FadeAndCloseBagMenu(taskId); } else { @@ -666,7 +688,7 @@ void ItemUseOutOfBattle_Berry(u8 taskId) } } -void ItemUseOnFieldCB_Berry(u8 taskId) +static void ItemUseOnFieldCB_Berry(u8 taskId) { RemoveBagItem(gSpecialVar_ItemId, 1); ScriptContext2_Enable(); @@ -678,28 +700,28 @@ void ItemUseOutOfBattle_WailmerPail(u8 taskId) { if (TryToWaterSudowoodo() == TRUE) { - gUnknown_0203A0F4 = ItemUseOnFieldCB_WailmerPailSudowoodo; + sItemUseOnFieldCB = ItemUseOnFieldCB_WailmerPailSudowoodo; SetUpItemUseOnFieldCallback(taskId); } else if (TryToWaterBerryTree() == TRUE) { - gUnknown_0203A0F4 = ItemUseOnFieldCB_WailmerPailBerry; + sItemUseOnFieldCB = ItemUseOnFieldCB_WailmerPailBerry; SetUpItemUseOnFieldCallback(taskId); } else { - DisplayDadsAdviceCannotUseItemMessage(taskId, gTasks[taskId].data[3]); + DisplayDadsAdviceCannotUseItemMessage(taskId, gTasks[taskId].tUsingRegisteredKeyItem); } } -void ItemUseOnFieldCB_WailmerPailBerry(u8 taskId) +static void ItemUseOnFieldCB_WailmerPailBerry(u8 taskId) { ScriptContext2_Enable(); ScriptContext1_SetupScript(BerryTree_EventScript_ItemUseWailmerPail); DestroyTask(taskId); } -bool8 TryToWaterSudowoodo(void) +static bool8 TryToWaterSudowoodo(void) { u16 x, y; u8 z; @@ -713,7 +735,7 @@ bool8 TryToWaterSudowoodo(void) return TRUE; } -void ItemUseOnFieldCB_WailmerPailSudowoodo(u8 taskId) +static void ItemUseOnFieldCB_WailmerPailSudowoodo(u8 taskId) { ScriptContext2_Enable(); ScriptContext1_SetupScript(BattleFrontier_OutsideEast_EventScript_WaterSudowoodo); @@ -791,14 +813,14 @@ static void UseTMHM(u8 taskId) SetUpItemUseCallback(taskId); } -void sub_80FE058(void) +static void RemoveUsedItem(void) { RemoveBagItem(gSpecialVar_ItemId, 1); CopyItemName(gSpecialVar_ItemId, gStringVar2); StringExpandPlaceholders(gStringVar4, gText_PlayerUsedVar2); if (!InBattlePyramid()) { - sub_81AB9A8(ItemId_GetPocket(gSpecialVar_ItemId)); + UpdatePocketItemList(ItemId_GetPocket(gSpecialVar_ItemId)); SetInitialScrollAndCursorPositions(ItemId_GetPocket(gSpecialVar_ItemId)); } else @@ -811,14 +833,14 @@ void sub_80FE058(void) void ItemUseOutOfBattle_Repel(u8 taskId) { if (VarGet(VAR_REPEL_STEP_COUNT) == 0) - gTasks[taskId].func = sub_80FE124; + gTasks[taskId].func = Task_StartUseRepel; else if (!InBattlePyramid()) DisplayItemMessage(taskId, 1, gText_RepelEffectsLingered, BagMenu_InitListsMenu); else - DisplayItemMessageInBattlePyramid(taskId, gText_RepelEffectsLingered, sub_81C6714); + DisplayItemMessageInBattlePyramid(taskId, gText_RepelEffectsLingered, Task_CloseBattlePyramidBagMessage); } -void sub_80FE124(u8 taskId) +static void Task_StartUseRepel(u8 taskId) { s16* data = gTasks[taskId].data; @@ -826,24 +848,24 @@ void sub_80FE124(u8 taskId) { data[8] = 0; PlaySE(SE_TU_SAA); - gTasks[taskId].func = sub_80FE164; + gTasks[taskId].func = Task_UseRepel; } } -void sub_80FE164(u8 taskId) +static void Task_UseRepel(u8 taskId) { if (!IsSEPlaying()) { VarSet(VAR_REPEL_STEP_COUNT, ItemId_GetHoldEffectParam(gSpecialVar_ItemId)); - sub_80FE058(); + RemoveUsedItem(); if (!InBattlePyramid()) DisplayItemMessage(taskId, 1, gStringVar4, BagMenu_InitListsMenu); else - DisplayItemMessageInBattlePyramid(taskId, gStringVar4, sub_81C6714); + DisplayItemMessageInBattlePyramid(taskId, gStringVar4, Task_CloseBattlePyramidBagMessage); } } -void sub_80FE1D0(u8 taskId) +static void Task_UsedBlackWhiteFlute(u8 taskId) { if(++gTasks[taskId].data[8] > 7) { @@ -851,7 +873,7 @@ void sub_80FE1D0(u8 taskId) if (!InBattlePyramid()) DisplayItemMessage(taskId, 1, gStringVar4, BagMenu_InitListsMenu); else - DisplayItemMessageInBattlePyramid(taskId, gStringVar4, sub_81C6714); + DisplayItemMessageInBattlePyramid(taskId, gStringVar4, Task_CloseBattlePyramidBagMessage); } } @@ -871,27 +893,27 @@ void ItemUseOutOfBattle_BlackWhiteFlute(u8 taskId) StringExpandPlaceholders(gStringVar4, gText_UsedVar2WildRepelled); } gTasks[taskId].data[8] = 0; - gTasks[taskId].func = sub_80FE1D0; + gTasks[taskId].func = Task_UsedBlackWhiteFlute; } -void task08_080A1C44(u8 taskId) +void Task_UseDigEscapeRopeOnField(u8 taskId) { ResetInitialPlayerAvatarState(); StartEscapeRopeFieldEffect(); DestroyTask(taskId); } -void re_escape_rope(u8 taskId) +static void ItemUseOnFieldCB_EscapeRope(u8 taskId) { Overworld_ResetStateAfterDigEscRope(); - sub_80FE058(); + RemoveUsedItem(); gTasks[taskId].data[0] = 0; - DisplayItemMessageOnField(taskId, gStringVar4, task08_080A1C44); + DisplayItemMessageOnField(taskId, gStringVar4, Task_UseDigEscapeRopeOnField); } bool8 CanUseEscapeRopeOnCurrMap(void) { - if (gMapHeader.flags & 2) + if (gMapHeader.flags & MAP_ALLOW_ESCAPE_ROPE) return TRUE; else return FALSE; @@ -901,12 +923,12 @@ void ItemUseOutOfBattle_EscapeRope(u8 taskId) { if (CanUseEscapeRopeOnCurrMap() == TRUE) { - gUnknown_0203A0F4 = re_escape_rope; + sItemUseOnFieldCB = ItemUseOnFieldCB_EscapeRope; SetUpItemUseOnFieldCallback(taskId); } else { - DisplayDadsAdviceCannotUseItemMessage(taskId, gTasks[taskId].data[3]); + DisplayDadsAdviceCannotUseItemMessage(taskId, gTasks[taskId].tUsingRegisteredKeyItem); } } @@ -922,42 +944,43 @@ void ItemUseInBattle_PokeBall(u8 taskId) { RemoveBagItem(gSpecialVar_ItemId, 1); if (!InBattlePyramid()) - unknown_ItemMenu_Confirm(taskId); + Task_FadeAndCloseBagMenu(taskId); else - sub_81C5B14(taskId); + CloseBattlePyramidBagAndSetCallback(taskId); } else if (!InBattlePyramid()) { DisplayItemMessage(taskId, 1, gText_BoxFull, BagMenu_InitListsMenu); } else - DisplayItemMessageInBattlePyramid(taskId, gText_BoxFull, sub_81C6714); + DisplayItemMessageInBattlePyramid(taskId, gText_BoxFull, Task_CloseBattlePyramidBagMessage); } -void sub_80FE408(u8 taskId) +static void Task_CloseStatIncreaseMessage(u8 taskId) { if (gMain.newKeys & (A_BUTTON | B_BUTTON)) { if (!InBattlePyramid()) - unknown_ItemMenu_Confirm(taskId); + Task_FadeAndCloseBagMenu(taskId); else - sub_81C5B14(taskId); + CloseBattlePyramidBagAndSetCallback(taskId); } } -void sub_80FE440(u8 taskId) +static void Task_UseStatIncreaseItem(u8 taskId) { if(++gTasks[taskId].data[8] > 7) { PlaySE(SE_KAIFUKU); RemoveBagItem(gSpecialVar_ItemId, 1); if (!InBattlePyramid()) - DisplayItemMessage(taskId, 1, sub_806CF78(gSpecialVar_ItemId), sub_80FE408); + DisplayItemMessage(taskId, 1, UseStatIncreaseItem(gSpecialVar_ItemId), Task_CloseStatIncreaseMessage); else - DisplayItemMessageInBattlePyramid(taskId, sub_806CF78(gSpecialVar_ItemId), sub_80FE408); + DisplayItemMessageInBattlePyramid(taskId, UseStatIncreaseItem(gSpecialVar_ItemId), Task_CloseStatIncreaseMessage); } } +// e.g. X Attack, Guard Spec void ItemUseInBattle_StatIncrease(u8 taskId) { u16 partyId = gBattlerPartyIndexes[gBattlerInMenuId]; @@ -967,11 +990,11 @@ void ItemUseInBattle_StatIncrease(u8 taskId) if (!InBattlePyramid()) DisplayItemMessage(taskId, 1, gText_WontHaveEffect, BagMenu_InitListsMenu); else - DisplayItemMessageInBattlePyramid(taskId, gText_WontHaveEffect, sub_81C6714); + DisplayItemMessageInBattlePyramid(taskId, gText_WontHaveEffect, Task_CloseBattlePyramidBagMessage); } else { - gTasks[taskId].func = sub_80FE440; + gTasks[taskId].func = Task_UseStatIncreaseItem; gTasks[taskId].data[8] = 0; } } @@ -981,12 +1004,12 @@ static void ItemUseInBattle_ShowPartyMenu(u8 taskId) if (!InBattlePyramid()) { gBagMenu->mainCallback2 = ChooseMonForInBattleItem; - unknown_ItemMenu_Confirm(taskId); + Task_FadeAndCloseBagMenu(taskId); } else { gPyramidBagResources->callback2 = ChooseMonForInBattleItem; - sub_81C5B14(taskId); + CloseBattlePyramidBagAndSetCallback(taskId); } } @@ -1009,20 +1032,21 @@ void ItemUseInBattle_PPRecovery(u8 taskId) ItemUseInBattle_ShowPartyMenu(taskId); } +// Fluffy Tail / Poke Doll void ItemUseInBattle_Escape(u8 taskId) { if((gBattleTypeFlags & BATTLE_TYPE_TRAINER) == FALSE) { - sub_80FE058(); + RemoveUsedItem(); if (!InBattlePyramid()) - DisplayItemMessage(taskId, 1, gStringVar4, unknown_ItemMenu_Confirm); + DisplayItemMessage(taskId, 1, gStringVar4, Task_FadeAndCloseBagMenu); else - DisplayItemMessageInBattlePyramid(taskId, gStringVar4, sub_81C5B14); + DisplayItemMessageInBattlePyramid(taskId, gStringVar4, CloseBattlePyramidBagAndSetCallback); } else { - DisplayDadsAdviceCannotUseItemMessage(taskId, gTasks[taskId].data[3]); + DisplayDadsAdviceCannotUseItemMessage(taskId, gTasks[taskId].tUsingRegisteredKeyItem); } } @@ -1099,5 +1123,7 @@ void ItemUseInBattle_EnigmaBerry(u8 taskId) void ItemUseOutOfBattle_CannotUse(u8 taskId) { - DisplayDadsAdviceCannotUseItemMessage(taskId, gTasks[taskId].data[3]); + DisplayDadsAdviceCannotUseItemMessage(taskId, gTasks[taskId].tUsingRegisteredKeyItem); } + +#undef tUsingRegisteredKeyItem diff --git a/src/overworld.c b/src/overworld.c index 47bb278bf..fdccc3521 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -978,7 +978,7 @@ static u16 GetCenterScreenMetatileBehavior(void) bool32 Overworld_IsBikingAllowed(void) { - if (!(gMapHeader.flags & 1)) + if (!(gMapHeader.flags & MAP_ALLOW_BIKE)) return FALSE; else return TRUE; @@ -1702,7 +1702,7 @@ void sub_80861E8(void) static void sub_8086204(void) { - if ((gMapHeader.flags & 0xF8) == 8 && SecretBaseMapPopupEnabled() == TRUE) + if (SHOW_MAP_NAME_ENABLED && SecretBaseMapPopupEnabled() == TRUE) ShowMapNamePopup(); FieldCB_WarpExitFadeFromBlack(); } @@ -1948,7 +1948,7 @@ static bool32 load_map_stuff(u8 *state, u32 a2) (*state)++; break; case 11: - if ((gMapHeader.flags & 0xF8) == 8 && SecretBaseMapPopupEnabled() == TRUE) + if (SHOW_MAP_NAME_ENABLED && SecretBaseMapPopupEnabled() == TRUE) ShowMapNamePopup(); (*state)++; break; diff --git a/src/party_menu.c b/src/party_menu.c index 367e84295..bc4cf8c0b 100755 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -2572,7 +2572,7 @@ static u8 GetPartyMenuActionsType(struct Pokemon *mon) switch (gPartyMenu.menuType) { case PARTY_MENU_TYPE_FIELD: - if (InMultiBattleRoom() == TRUE || GetMonData(mon, MON_DATA_IS_EGG)) + if (InMultiPartnerRoom() == TRUE || GetMonData(mon, MON_DATA_IS_EGG)) actionType = ACTIONS_SWITCH; else actionType = ACTIONS_NONE; // actions populated by SetPartyMonFieldSelectionActions @@ -5186,7 +5186,7 @@ u8 GetItemEffectType(u16 item) else itemEffect = gItemEffectTable[item - ITEM_POTION]; - if ((itemEffect[0] & (ITEM0_HIGH_CRIT | ITEM0_X_ATTACK)) || itemEffect[1] || itemEffect[2] || (itemEffect[3] & ITEM3_MIST)) + if ((itemEffect[0] & (ITEM0_DIRE_HIT | ITEM0_X_ATTACK)) || itemEffect[1] || itemEffect[2] || (itemEffect[3] & ITEM3_GUARD_SPEC)) return ITEM_EFFECT_X_ITEM; else if (itemEffect[0] & ITEM0_SACRED_ASH) return ITEM_EFFECT_SACRED_ASH; diff --git a/src/pokeblock.c b/src/pokeblock.c index 342221880..b9031e173 100644 --- a/src/pokeblock.c +++ b/src/pokeblock.c @@ -451,7 +451,7 @@ void OpenPokeblockCase(u8 caseId, void (*callback)(void)) sPokeblockMenu->pokeblockOptionsIds = sActionsWhenGivingToLady; sPokeblockMenu->optionsNo = ARRAY_COUNT(sActionsWhenGivingToLady); break; - default: + default: // PBLOCK_CASE_FIELD sPokeblockMenu->pokeblockOptionsIds = sActionsOnField; sPokeblockMenu->optionsNo = ARRAY_COUNT(sActionsOnField); break; diff --git a/src/pokemon.c b/src/pokemon.c index 12820aa76..15427e6ea 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -2043,7 +2043,8 @@ static const u8 sGetMonDataEVConstants[] = MON_DATA_SPATK_EV }; -static const u8 gUnknown_08329EC8[] = +// For stat-raising items +static const u8 sStatsToRaise[] = { STAT_ATK, STAT_ATK, STAT_SPEED, STAT_DEF, STAT_SPATK, STAT_ACC }; @@ -4691,7 +4692,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov gBattleMons[battlerId].status2 &= ~STATUS2_INFATUATION; retVal = FALSE; } - if ((itemEffect[cmdIndex] & ITEM0_HIGH_CRIT) + if ((itemEffect[cmdIndex] & ITEM0_DIRE_HIT) && !(gBattleMons[gActiveBattler].status2 & STATUS2_FOCUS_ENERGY)) { gBattleMons[gActiveBattler].status2 |= STATUS2_FOCUS_ENERGY; @@ -4745,7 +4746,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov } break; case 3: - if ((itemEffect[cmdIndex] & ITEM3_MIST) + if ((itemEffect[cmdIndex] & ITEM3_GUARD_SPEC) && gSideTimers[GetBattlerSide(gActiveBattler)].mistTimer == 0) { gSideTimers[GetBattlerSide(gActiveBattler)].mistTimer = 5; @@ -5285,15 +5286,15 @@ u8 GetItemEffectParamOffset(u16 itemId, u8 effectByte, u8 effectBit) return offset; } -static void sub_806CF24(s32 arg0) +static void BufferStatRoseMessage(s32 arg0) { gBattlerTarget = gBattlerInMenuId; - StringCopy(gBattleTextBuff1, gStatNamesTable[gUnknown_08329EC8[arg0]]); + StringCopy(gBattleTextBuff1, gStatNamesTable[sStatsToRaise[arg0]]); StringCopy(gBattleTextBuff2, gText_StatRose); BattleStringExpandPlaceholdersToDisplayedString(gText_PkmnsStatChanged2); } -u8 *sub_806CF78(u16 itemId) +u8 *UseStatIncreaseItem(u16 itemId) { int i; const u8 *itemEffect; @@ -5314,13 +5315,14 @@ u8 *sub_806CF78(u16 itemId) for (i = 0; i < 3; i++) { - if (itemEffect[i] & 0xF) - sub_806CF24(i * 2); - if (itemEffect[i] & 0xF0) + if (itemEffect[i] & (ITEM0_X_ATTACK | ITEM1_X_SPEED | ITEM2_X_SPATK)) + BufferStatRoseMessage(i * 2); + + if (itemEffect[i] & (ITEM0_DIRE_HIT | ITEM1_X_DEFEND | ITEM2_X_ACCURACY)) { - if (i) + if (i != 0) // Dire Hit is the only ITEM0 above { - sub_806CF24(i * 2 + 1); + BufferStatRoseMessage(i * 2 + 1); } else { @@ -5330,7 +5332,7 @@ u8 *sub_806CF78(u16 itemId) } } - if (itemEffect[3] & ITEM3_MIST) + if (itemEffect[3] & ITEM3_GUARD_SPEC) { gBattlerAttacker = gBattlerInMenuId; BattleStringExpandPlaceholdersToDisplayedString(gText_PkmnShroudedInMist); diff --git a/src/region_map.c b/src/region_map.c index 75ce60056..5694d4c7a 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -997,7 +997,7 @@ static void RegionMap_InitializeStateBasedOnPlayerLocation(void) break; case MAP_TYPE_UNDERGROUND: case MAP_TYPE_UNUSED_2: - if (gMapHeader.flags & 0x02) + if (gMapHeader.flags & MAP_ALLOW_ESCAPE_ROPE) { mapHeader = Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->escapeWarp.mapGroup, gSaveBlock1Ptr->escapeWarp.mapNum); gRegionMap->mapSecId = mapHeader->regionMapSectionId; diff --git a/src/secret_base.c b/src/secret_base.c index 0c67c9596..8f954c6e8 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -16,6 +16,7 @@ #include "fldeff.h" #include "fldeff_misc.h" #include "international_string_util.h" +#include "item_menu.h" #include "link.h" #include "list_menu.h" #include "main.h" diff --git a/src/start_menu.c b/src/start_menu.c index e13fc4b26..8aacd8065 100644 --- a/src/start_menu.c +++ b/src/start_menu.c @@ -201,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); @@ -256,9 +256,9 @@ static void BuildStartMenuActions(void) { BuildBattlePyramidStartMenu(); } - else if (InMultiBattleRoom()) + else if (InMultiPartnerRoom()) { - BuildMultiBattleRoomStartMenu(); + BuildMultiPartnerRoomStartMenu(); } else { @@ -356,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); |