summaryrefslogtreecommitdiff
path: root/src/battle_tower.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/battle_tower.c')
-rw-r--r--src/battle_tower.c75
1 files changed, 35 insertions, 40 deletions
diff --git a/src/battle_tower.c b/src/battle_tower.c
index 4b63c2875..e95eaf156 100644
--- a/src/battle_tower.c
+++ b/src/battle_tower.c
@@ -9,8 +9,7 @@
#include "main.h"
#include "international_string_util.h"
#include "battle.h"
-#include "battle_frontier_1.h"
-#include "battle_frontier_2.h"
+#include "frontier_util.h"
#include "recorded_battle.h"
#include "easy_chat.h"
#include "gym_leader_rematch.h"
@@ -30,15 +29,9 @@
extern u16 gUnknown_03006298[];
-extern void sub_81A3ACC(void);
-extern void CreateFrontierBrainPokemon(void);
extern void sub_81A6CD0(void);
-extern u16 sub_81A39C4(void);
-extern void SetFrontierBrainTrainerGfxId(void);
-extern u8 GetFrontierBrainTrainerPicIndex(void);
-extern u8 GetFrontierBrainTrainerClass(void);
-extern u8 IsFrontierBrainFemale(void);
-extern void CopyFrontierBrainTrainerName(u8 *dst);
+extern void sub_81A4C30(void);
+extern u8 sub_81A6CA8(u8, u8);
extern void SetMonMoveAvoidReturn(struct Pokemon *mon, u16 move, u8 moveSlot);
extern const u8 *const *const gUnknown_085DD690[];
@@ -220,7 +213,7 @@ static void sub_8161F94(void)
gSaveBlock2Ptr->frontier.field_CA9_b = 0;
sub_81A3ACC();
if (!(gSaveBlock2Ptr->frontier.field_CDC & gUnknown_085DF9AC[battleMode][lvlMode]))
- gSaveBlock2Ptr->frontier.winStreaks[battleMode][lvlMode] = 0;
+ gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode] = 0;
ValidateBattleTowerRecordChecksums();
saved_warp2_set(0, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1);
@@ -258,7 +251,7 @@ static void sub_81620F4(void)
case 0:
break;
case 1:
- gSaveBlock2Ptr->frontier.winStreaks[battleMode][lvlMode] = gSpecialVar_0x8006;
+ gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode] = gSpecialVar_0x8006;
break;
case 2:
if (gSpecialVar_0x8006)
@@ -364,7 +357,8 @@ static void ChooseNextBattleTowerTrainer(void)
{
u16 id;
u32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
- u32 r5 = sub_81A39C4() / 7;
+ u16 winStreak = GetCurrentFacilityWinStreak();
+ u32 challengeNum = winStreak / 7;
SetFacilityPtrsGetLevel();
if (battleMode == FRONTIER_MODE_MULTIS || battleMode == FRONTIER_MODE_LINK_MULTIS)
@@ -385,7 +379,7 @@ static void ChooseNextBattleTowerTrainer(void)
s32 i;
while (1)
{
- id = sub_8162548(r5, gSaveBlock2Ptr->frontier.curChallengeBattleNum);
+ id = sub_8162548(challengeNum, gSaveBlock2Ptr->frontier.curChallengeBattleNum);
// Ensure trainer wasn't previously fought in this challenge.
for (i = 0; i < gSaveBlock2Ptr->frontier.curChallengeBattleNum; i++)
@@ -525,7 +519,7 @@ void SetBattleFacilityTrainerGfxId(u16 trainerId, u8 tempVarId)
}
else if (trainerId == TRAINER_FRONTIER_BRAIN)
{
- SetFrontierBrainTrainerGfxId();
+ SetFrontierBrainEventObjGfx_2();
return;
}
else if (trainerId < TRAINER_RECORD_MIXING_FRIEND)
@@ -769,14 +763,14 @@ u8 GetFrontierTrainerFrontSpriteId(u16 trainerId)
else if (trainerId < TRAINER_RECORD_MIXING_APPRENTICE)
{
if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
- return gFacilityClassToPicIndex[sub_818649C()];
+ return gFacilityClassToPicIndex[GetRecordedBattleRecordMixFriendClass()];
else
return gFacilityClassToPicIndex[gSaveBlock2Ptr->frontier.towerRecords[trainerId - TRAINER_RECORD_MIXING_FRIEND].facilityClass];
}
else
{
if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
- return gFacilityClassToPicIndex[gApprentices[sub_81864A8()].facilityClass];
+ return gFacilityClassToPicIndex[gApprentices[GetRecordedBattleApprenticeId()].facilityClass];
else
return gFacilityClassToPicIndex[gApprentices[gSaveBlock2Ptr->apprentices[trainerId - TRAINER_RECORD_MIXING_APPRENTICE].id].facilityClass];
}
@@ -807,7 +801,7 @@ u8 GetFrontierOpponentClass(u16 trainerId)
{
if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
{
- trainerClass = gFacilityClassToTrainerClass[sub_818649C()];
+ trainerClass = gFacilityClassToTrainerClass[GetRecordedBattleRecordMixFriendClass()];
}
else
{
@@ -819,7 +813,7 @@ u8 GetFrontierOpponentClass(u16 trainerId)
{
if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
{
- trainerClass = gFacilityClassToTrainerClass[gApprentices[sub_81864A8()].facilityClass];
+ trainerClass = gFacilityClassToTrainerClass[gApprentices[GetRecordedBattleApprenticeId()].facilityClass];
}
else
{
@@ -847,14 +841,14 @@ static u8 GetFrontierTrainerFacilityClass(u16 trainerId)
else if (trainerId < TRAINER_RECORD_MIXING_APPRENTICE)
{
if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
- facilityClass = sub_818649C();
+ facilityClass = GetRecordedBattleRecordMixFriendClass();
else
facilityClass = gSaveBlock2Ptr->frontier.towerRecords[trainerId - TRAINER_RECORD_MIXING_FRIEND].facilityClass;
}
else
{
if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
- facilityClass = gApprentices[sub_81864A8()].facilityClass;
+ facilityClass = gApprentices[GetRecordedBattleApprenticeId()].facilityClass;
else
facilityClass = gApprentices[gSaveBlock2Ptr->apprentices[trainerId - TRAINER_RECORD_MIXING_APPRENTICE].id].facilityClass;
}
@@ -907,8 +901,8 @@ void GetFrontierTrainerName(u8 *dst, u16 trainerId)
if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
{
- id = sub_81864A8();
- language = sub_81864C0();
+ id = GetRecordedBattleApprenticeId();
+ language = GetRecordedBattleApprenticeLanguage();
}
else
{
@@ -1179,7 +1173,7 @@ static void FillFactoryFrontierTrainerParty(u16 trainerId, u8 firstMonId)
{
u8 lvlMode = gSaveBlock2Ptr->frontier.lvlMode; // Unused variable.
u8 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
- u8 challengeNum = gSaveBlock2Ptr->frontier.winStreaks[battleMode][0] / 7;
+ u8 challengeNum = gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][0] / 7;
if (gSaveBlock2Ptr->frontier.curChallengeBattleNum < 6)
fixedIV = sub_81A6CA8(challengeNum, 0);
else
@@ -1297,7 +1291,7 @@ static void HandleSpecialTrainerBattleEnd(void)
{
s32 i;
- sub_81864CC();
+ RecordedBattle_SaveBattleOutcome();
switch (gBattleScripting.specialTrainerBattleType)
{
case SPECIAL_BATTLE_TOWER:
@@ -1480,8 +1474,8 @@ static void SaveCurrentWinStreak(void)
u8 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
u16 winStreak = GetCurrentBattleTowerWinStreak(lvlMode, battleMode);
- if (gSaveBlock2Ptr->frontier.winStreaks[battleMode][lvlMode] < winStreak)
- gSaveBlock2Ptr->frontier.winStreaks[battleMode][lvlMode] = winStreak;
+ if (gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode] < winStreak)
+ gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode] = winStreak;
}
static void sub_8163EE4(void)
@@ -1509,15 +1503,15 @@ static void sub_8163EE4(void)
}
playerRecord->lvlMode = lvlMode;
playerRecord->facilityClass = class;
- CopyUnalignedWord(playerRecord->trainerId, gSaveBlock2Ptr->playerTrainerId);
+ CopyTrainerId(playerRecord->trainerId, gSaveBlock2Ptr->playerTrainerId);
StringCopy7(playerRecord->name, gSaveBlock2Ptr->playerName);
playerRecord->winStreak = GetCurrentBattleTowerWinStreak(lvlMode, battleMode);
for (i = 0; i < 6; i++)
{
playerRecord->greeting[i] = gSaveBlock1Ptr->unk2BBC[i];
- playerRecord->unk1C[i] = gSaveBlock1Ptr->unk2BC8[i];
- playerRecord->unk28[i] = gSaveBlock1Ptr->unk2BD4[i];
+ playerRecord->speechWon[i] = gSaveBlock1Ptr->unk2BC8[i];
+ playerRecord->speechLost[i] = gSaveBlock1Ptr->unk2BD4[i];
}
for (i = 0; i < 4; i++)
@@ -1535,7 +1529,7 @@ static void SaveBattleTowerProgress(void)
{
u16 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
u16 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
- s32 challengeNum = (signed)(gSaveBlock2Ptr->frontier.winStreaks[battleMode][lvlMode] / 7);
+ s32 challengeNum = (signed)(gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode] / 7);
if (gSpecialVar_0x8005 == 0 && (challengeNum > 1 || gSaveBlock2Ptr->frontier.curChallengeBattleNum != 0))
sub_8163EE4();
@@ -1625,7 +1619,7 @@ static void sub_81642A0(void)
eventObjTemplates = gSaveBlock1Ptr->eventObjectTemplates;
lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
- challengeNum = gSaveBlock2Ptr->frontier.winStreaks[battleMode][lvlMode] / 7;
+ challengeNum = gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode] / 7;
species1 = GetMonData(&gPlayerParty[0], MON_DATA_SPECIES, NULL);
species2 = GetMonData(&gPlayerParty[1], MON_DATA_SPECIES, NULL);
level = SetFacilityPtrsGetLevel();
@@ -1795,7 +1789,8 @@ static void sub_8164828(void)
s32 i, j, arrId;
s32 monPoolId;
s32 level = SetFacilityPtrsGetLevel();
- s32 challengeNum = sub_81A39C4() / 7;
+ u16 winStreak = GetCurrentFacilityWinStreak();
+ s32 challengeNum = winStreak / 7;
s32 k = gSpecialVar_LastTalked - 2;
s32 trainerId = gSaveBlock2Ptr->frontier.field_CB4[k];
@@ -1911,7 +1906,7 @@ static void sub_8164B74(void)
case 0:
if (battleMode == FRONTIER_MODE_LINK_MULTIS)
{
- challengeNum = gSaveBlock2Ptr->frontier.winStreaks[battleMode][lvlMode] / 7;
+ challengeNum = gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode] / 7;
if (sub_800A520())
{
SendBlock(bitmask_all_link_players_but_self(), &challengeNum, sizeof(challengeNum));
@@ -2069,7 +2064,7 @@ static void ClearBattleTowerRecord(struct EmeraldBattleTowerRecord *record)
u16 GetCurrentBattleTowerWinStreak(u8 lvlMode, u8 battleMode)
{
- u16 winStreak = gSaveBlock2Ptr->frontier.winStreaks[battleMode][lvlMode];
+ u16 winStreak = gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode];
if (winStreak > 9999)
return 9999;
@@ -2164,7 +2159,7 @@ static void FillEReaderTrainerWithPlayerData(void)
+ gSaveBlock2Ptr->playerTrainerId[2] + gSaveBlock2Ptr->playerTrainerId[3]) % ARRAY_COUNT(gTowerMaleFacilityClasses)];
}
- CopyUnalignedWord(ereaderTrainer->trainerId, gSaveBlock2Ptr->playerTrainerId);
+ CopyTrainerId(ereaderTrainer->trainerId, gSaveBlock2Ptr->playerTrainerId);
StringCopy7(ereaderTrainer->name, gSaveBlock2Ptr->playerName);
ereaderTrainer->winStreak = 1;
@@ -2425,9 +2420,9 @@ bool32 RubyBattleTowerRecordToEmerald(struct RSBattleTowerRecord *src, struct Em
for (i = 0; i < 6; i++)
dst->greeting[i] = src->greeting[i];
for (i = 0; i < 6; i++)
- dst->unk1C[i] = gUnknown_085DFA46[i];
+ dst->speechWon[i] = gUnknown_085DFA46[i];
for (i = 0; i < 6; i++)
- dst->unk28[i] = gUnknown_085DFA52[i];
+ dst->speechLost[i] = gUnknown_085DFA52[i];
for (i = 0; i < 3; i++)
dst->party[i] = src->party[i];
@@ -2526,14 +2521,14 @@ void GetBattleTowerTrainerLanguage(u8 *dst, u16 trainerId)
else if (trainerId < TRAINER_RECORD_MIXING_APPRENTICE)
{
if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
- *dst = sub_81864B4();
+ *dst = GetRecordedBattleRecordMixFriendLanguage();
else
*dst = gSaveBlock2Ptr->frontier.towerRecords[trainerId - TRAINER_RECORD_MIXING_FRIEND].language;
}
else
{
if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
- *dst = sub_81864C0();
+ *dst = GetRecordedBattleApprenticeLanguage();
else
*dst = gSaveBlock2Ptr->apprentices[trainerId - TRAINER_RECORD_MIXING_APPRENTICE].language;
}