diff options
Diffstat (limited to 'src/battle_tower.c')
-rw-r--r-- | src/battle_tower.c | 74 |
1 files changed, 38 insertions, 36 deletions
diff --git a/src/battle_tower.c b/src/battle_tower.c index c55180965..aa4ca84e6 100644 --- a/src/battle_tower.c +++ b/src/battle_tower.c @@ -24,15 +24,17 @@ #include "tv.h" #include "battle_factory.h" #include "constants/battle_frontier.h" +#include "constants/battle_tower.h" #include "constants/items.h" #include "constants/trainers.h" #include "constants/event_objects.h" #include "constants/moves.h" #include "constants/species.h" #include "constants/easy_chat.h" +#include "constants/tv.h" -extern const u8 MossdeepCity_SpaceCenter_2F_EventScript_224157[]; -extern const u8 MossdeepCity_SpaceCenter_2F_EventScript_224166[]; +extern const u8 MossdeepCity_SpaceCenter_2F_EventScript_MaxieTrainer[]; +extern const u8 MossdeepCity_SpaceCenter_2F_EventScript_TabithaTrainer[]; // EWRAM vars. EWRAM_DATA const struct BattleFrontierTrainer *gFacilityTrainers = NULL; @@ -51,7 +53,7 @@ static void AwardBattleTowerRibbons(void); static void SaveBattleTowerProgress(void); static void sub_8163914(void); static void nullsub_61(void); -static void SpriteCB_Null6(void); +static void nullsub_116(void); static void sub_81642A0(void); static void sub_8164828(void); static void sub_8164B74(void); @@ -1050,24 +1052,24 @@ struct #include "data/battle_frontier/battle_tent.h" -static void (* const gUnknown_085DF96C[])(void) = -{ - sub_8161F94, - sub_8162054, - sub_81620F4, - ChooseNextBattleTowerTrainer, - sub_81621C0, - AwardBattleTowerRibbons, - SaveBattleTowerProgress, - sub_8163914, - nullsub_61, - SpriteCB_Null6, - sub_81642A0, - sub_8164828, - sub_8164B74, - sub_8164DCC, - sub_8164DE4, - sub_8164E04, +static void (* const sBattleTowerFuncs[])(void) = +{ + [BATTLE_TOWER_FUNC_0] = sub_8161F94, + [BATTLE_TOWER_FUNC_1] = sub_8162054, + [BATTLE_TOWER_FUNC_2] = sub_81620F4, + [BATTLE_TOWER_FUNC_CHOOSE_TRAINER] = ChooseNextBattleTowerTrainer, + [BATTLE_TOWER_FUNC_4] = sub_81621C0, + [BATTLE_TOWER_FUNC_GIVE_RIBBONS] = AwardBattleTowerRibbons, + [BATTLE_TOWER_FUNC_SAVE] = SaveBattleTowerProgress, + [BATTLE_TOWER_FUNC_7] = sub_8163914, + [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_15] = sub_8164E04, }; static const u32 gUnknown_085DF9AC[][2] = @@ -1144,9 +1146,9 @@ static const u16 gUnknown_085DFA52[] = }; // code -void sub_8161F74(void) +void CallBattleTowerFunc(void) { - gUnknown_085DF96C[gSpecialVar_0x8004](); + sBattleTowerFuncs[gSpecialVar_0x8004](); } static void sub_8161F94(void) @@ -1270,10 +1272,10 @@ static bool8 ChooseSpecialBattleTowerTrainer(void) if (battleMode == FRONTIER_MODE_SINGLES) { ValidateApprenticesChecksums(); - for (i = 0; i < 4; i++) + for (i = 0; i < APPRENTICE_COUNT; i++) { if (gSaveBlock2Ptr->apprentices[i].lvlMode != 0 - && gUnknown_085DF9EC[gSaveBlock2Ptr->apprentices[i].field_1] == winStreak + && gUnknown_085DF9EC[gSaveBlock2Ptr->apprentices[i].numQuestions] == winStreak && gSaveBlock2Ptr->apprentices[i].lvlMode - 1 == lvlMode) { trainerIds[idsCount] = i + TRAINER_RECORD_MIXING_APPRENTICE; @@ -1998,7 +2000,7 @@ static void Unused_CreateApprenticeMons(u16 trainerId, u8 firstMonId) u8 fixedIV = 0; struct Apprentice *apprentice = &gSaveBlock2Ptr->apprentices[0]; - if (apprentice->field_1 < 5) + if (apprentice->numQuestions < 5) fixedIV = 6; else fixedIV = 9; @@ -2176,7 +2178,7 @@ static void sub_8163914(void) else if (trainerId < TRAINER_RECORD_MIXING_APPRENTICE) FrontierSpeechToString(gSaveBlock2Ptr->frontier.towerRecords[trainerId - TRAINER_RECORD_MIXING_FRIEND].greeting); else - CopyFriendsApprenticeChallengeText(trainerId - TRAINER_RECORD_MIXING_APPRENTICE); + BufferApprenticeChallengeText(trainerId - TRAINER_RECORD_MIXING_APPRENTICE); } static void HandleSpecialTrainerBattleEnd(void) @@ -2349,9 +2351,9 @@ void DoSpecialTrainerBattle(void) gBattleTypeFlags = BATTLE_TYPE_TRAINER | BATTLE_TYPE_DOUBLE | BATTLE_TYPE_TWO_OPPONENTS | BATTLE_TYPE_MULTI | BATTLE_TYPE_INGAME_PARTNER; FillPartnerParty(TRAINER_STEVEN_PARTNER); gApproachingTrainerId = 0; - BattleSetup_ConfigureTrainerBattle(MossdeepCity_SpaceCenter_2F_EventScript_224157 + 1); + BattleSetup_ConfigureTrainerBattle(MossdeepCity_SpaceCenter_2F_EventScript_MaxieTrainer + 1); gApproachingTrainerId = 1; - BattleSetup_ConfigureTrainerBattle(MossdeepCity_SpaceCenter_2F_EventScript_224166 + 1); + BattleSetup_ConfigureTrainerBattle(MossdeepCity_SpaceCenter_2F_EventScript_TabithaTrainer + 1); gPartnerTrainerId = TRAINER_STEVEN_PARTNER; CreateTask(Task_StartBattleAfterTransition, 1); PlayMapChosenOrBattleBGM(0); @@ -2437,7 +2439,7 @@ static void nullsub_61(void) } -static void SpriteCB_Null6(void) +static void nullsub_116(void) { } @@ -2567,10 +2569,10 @@ static void sub_81642A0(void) r10 = 0; ValidateApprenticesChecksums(); - for (i = 0; i < 4; i++) + for (i = 0; i < APPRENTICE_COUNT; i++) { if (gSaveBlock2Ptr->apprentices[i].lvlMode != 0 - && gUnknown_085DF9EC[gSaveBlock2Ptr->apprentices[i].field_1] / 7 <= challengeNum + && gUnknown_085DF9EC[gSaveBlock2Ptr->apprentices[i].numQuestions] / 7 <= challengeNum && gSaveBlock2Ptr->apprentices[i].lvlMode - 1 == lvlMode) { k = 0; @@ -3026,9 +3028,9 @@ static void AwardBattleTowerRibbons(void) ribbons[i] = prevBest; } } - if (ribbons[0].count > 4) + if (ribbons[0].count > NUM_CUTIES_RIBBONS) { - sub_80EE4DC(&gSaveBlock1Ptr->playerParty[ribbons[0].partyIndex], ribbonType); + TryPutSpotTheCutiesOnAir(&gSaveBlock1Ptr->playerParty[ribbons[0].partyIndex], ribbonType); } } } @@ -3191,7 +3193,7 @@ static void FillPartnerParty(u16 trainerId) sStevenMons[i].fixedIV, TRUE, i, // BUG: personality was stored in the 'j' variable. As a result, Steven's pokemon do not have the intended natures. OT_ID_PRESET, STEVEN_OTID); - for (j = 0; j < 6; j++) + for (j = 0; j < PARTY_SIZE; j++) SetMonData(&gPlayerParty[3 + i], MON_DATA_HP_EV + j, &sStevenMons[i].evs[j]); for (j = 0; j < MAX_MON_MOVES; j++) SetMonMoveSlot(&gPlayerParty[3 + i], sStevenMons[i].moves[j], j); @@ -3391,7 +3393,7 @@ static void ValidateApprenticesChecksums(void) { s32 i, j; - for (i = 0; i < 4; i++) + for (i = 0; i < APPRENTICE_COUNT; i++) { u32 *data = (u32*) &gSaveBlock2Ptr->apprentices[i]; u32 checksum = 0; |