Set up remaining facility script doc, use Palace macros

This commit is contained in:
GriffinR
2019-11-28 21:09:35 -05:00
committed by huderlem
parent 809811e722
commit be17c1602d
29 changed files with 533 additions and 440 deletions
+63 -69
View File
@@ -30,6 +30,7 @@
#include "scanline_effect.h"
#include "script_pokemon_util_80F87D8.h"
#include "graphics.h"
#include "constants/battle_dome.h"
#include "constants/frontier_util.h"
#include "constants/species.h"
#include "constants/moves.h"
@@ -39,13 +40,6 @@
#include "constants/battle_frontier.h"
#include "constants/rgb.h"
#define DOME_ROUND1 0
#define DOME_ROUND2 1
#define DOME_QUARTERFINAL 1 // Different name for the same round.
#define DOME_SEMIFINAL 2
#define DOME_FINAL 3
#define DOME_ROUNDS_COUNT 4
struct BattleDomeStruct
{
u8 arr[DOME_TOURNAMENT_TRAINERS_COUNT];
@@ -107,9 +101,9 @@ static void SetDomeOpponentId(void);
static void SetDomeOpponentGraphicsId(void);
static void ShowNonInteractiveDomeTourneyTree(void);
static void ResolveDomeRoundWinners(void);
static void sub_81902F8(void);
static void UpdateDomeStreaks(void);
static void RestoreDomePlayerParty(void);
static void SaveDomeChallenge(void);
static void IncrementDomeStreaks(void);
static void ResetSketchedMoves(void);
static void RestoreDomePlayerPartyHeldItems(void);
static void ReduceDomePlayerPartyTo3Mons(void);
static void GetPlayerSeededBeforeOpponent(void);
@@ -1079,29 +1073,29 @@ static const u8 sTourneyTreeTrainerIds[] = {0, 8, 12, 4, 7, 15, 11, 3, 2, 10, 14
static void (* const sBattleDomeFunctions[])(void) =
{
InitDomeChallenge,
GetDomeData,
SetDomeData,
BufferDomeRoundText,
BufferDomeOpponentName,
InitDomeOpponentParty,
ShowDomeOpponentInfo,
ShowDomeTourneyTree,
ShowPreviousDomeResultsTourneyTree,
SetDomeOpponentId,
SetDomeOpponentGraphicsId,
ShowNonInteractiveDomeTourneyTree,
ResolveDomeRoundWinners,
sub_81902F8,
UpdateDomeStreaks,
InitDomeFacilityTrainersAndMons,
RestoreDomePlayerParty,
RestoreDomePlayerPartyHeldItems,
ReduceDomePlayerPartyTo3Mons,
GetPlayerSeededBeforeOpponent,
BufferLastDomeWinnerName,
sub_8194F58,
InitDomeTrainers,
[BATTLE_DOME_FUNC_INIT] = InitDomeChallenge,
[BATTLE_DOME_FUNC_GET_DATA] = GetDomeData,
[BATTLE_DOME_FUNC_SET_DATA] = SetDomeData,
[BATTLE_DOME_FUNC_GET_ROUND_TEXT] = BufferDomeRoundText,
[BATTLE_DOME_FUNC_GET_OPPONENT_NAME] = BufferDomeOpponentName,
[BATTLE_DOME_FUNC_INIT_OPPONENT_PARTY] = InitDomeOpponentParty,
[BATTLE_DOME_FUNC_SHOW_OPPONENT_INFO] = ShowDomeOpponentInfo,
[BATTLE_DOME_FUNC_SHOW_TOURNEY_TREE] = ShowDomeTourneyTree,
[BATTLE_DOME_FUNC_SHOW_PREV_RESULTS_TREE] = ShowPreviousDomeResultsTourneyTree,
[BATTLE_DOME_FUNC_SET_OPPONENT_ID] = SetDomeOpponentId,
[BATTLE_DOME_FUNC_SET_OPPONENT_GFX] = SetDomeOpponentGraphicsId,
[BATTLE_DOME_FUNC_SHOW_STATIC_TOURNEY_TREE] = ShowNonInteractiveDomeTourneyTree,
[BATTLE_DOME_FUNC_RESOLVE_WINNERS] = ResolveDomeRoundWinners,
[BATTLE_DOME_FUNC_SAVE] = SaveDomeChallenge,
[BATTLE_DOME_FUNC_INCREMENT_STREAK] = IncrementDomeStreaks,
[BATTLE_DOME_FUNC_SET_TRAINERS] = InitDomeFacilityTrainersAndMons,
[BATTLE_DOME_FUNC_RESET_SKETCH] = ResetSketchedMoves,
[BATTLE_DOME_FUNC_RESTORE_HELD_ITEMS] = RestoreDomePlayerPartyHeldItems,
[BATTLE_DOME_FUNC_REDUCE_PARTY] = ReduceDomePlayerPartyTo3Mons,
[BATTLE_DOME_FUNC_COMPARE_SEEDS] = GetPlayerSeededBeforeOpponent,
[BATTLE_DOME_FUNC_GET_WINNER_NAME] = BufferLastDomeWinnerName,
[BATTLE_DOME_FUNC_21] = sub_8194F58,
[BATTLE_DOME_FUNC_INIT_TRAINERS] = InitDomeTrainers,
};
static const u32 sWinStreakFlags[][2] =
@@ -2280,25 +2274,25 @@ static void GetDomeData(void)
switch (gSpecialVar_0x8005)
{
case 0:
case DOME_DATA_STREAK:
gSpecialVar_Result = gSaveBlock2Ptr->frontier.domeWinStreaks[battleMode][lvlMode];
break;
case 1:
case DOME_DATA_STREAK_ACTIVE:
gSpecialVar_Result = ((gSaveBlock2Ptr->frontier.winStreakActiveFlags & sWinStreakFlags[battleMode][lvlMode]) != 0);
break;
case 2:
case DOME_DATA_2:
gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_D08_0;
break;
case 3:
case DOME_DATA_3:
gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_D08_1;
break;
case 4:
case DOME_DATA_4:
gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_D08_2;
break;
case 5:
case DOME_DATA_5:
gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_D08_3;
break;
case 6:
case DOME_DATA_6:
if (VarGet(VAR_FRONTIER_BATTLE_MODE) == FRONTIER_MODE_DOUBLES)
{
if (lvlMode)
@@ -2314,7 +2308,7 @@ static void GetDomeData(void)
gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_D08_0;
}
break;
case 7:
case DOME_DATA_7:
if (VarGet(VAR_FRONTIER_BATTLE_MODE) == FRONTIER_MODE_DOUBLES)
{
if (lvlMode)
@@ -2330,12 +2324,12 @@ static void GetDomeData(void)
gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_D08_2;
}
break;
case 8:
case DOME_DATA_8:
ClearSelectedPartyOrder();
gSelectedOrderFromParty[0] = gSaveBlock2Ptr->frontier.selectedPartyMons[3];
gSelectedOrderFromParty[1] = gSaveBlock2Ptr->frontier.selectedPartyMons[3] >> 8;
break;
case 9:
case DOME_DATA_9:
gSpecialVar_Result = (gSaveBlock2Ptr->frontier.field_D0A * 2) - 3 + gSaveBlock2Ptr->frontier.field_D0B;
break;
}
@@ -2348,28 +2342,28 @@ static void SetDomeData(void)
switch (gSpecialVar_0x8005)
{
case 0:
case DOME_DATA_STREAK:
gSaveBlock2Ptr->frontier.domeWinStreaks[battleMode][lvlMode] = gSpecialVar_0x8006;
break;
case 1:
case DOME_DATA_STREAK_ACTIVE:
if (gSpecialVar_0x8006)
gSaveBlock2Ptr->frontier.winStreakActiveFlags |= sWinStreakFlags[battleMode][lvlMode];
else
gSaveBlock2Ptr->frontier.winStreakActiveFlags &= sWinStreakMasks[battleMode][lvlMode];
break;
case 2:
case DOME_DATA_2:
gSaveBlock2Ptr->frontier.field_D08_0 = gSpecialVar_0x8006;
break;
case 3:
case DOME_DATA_3:
gSaveBlock2Ptr->frontier.field_D08_1 = gSpecialVar_0x8006;
break;
case 4:
case DOME_DATA_4:
gSaveBlock2Ptr->frontier.field_D08_2 = gSpecialVar_0x8006;
break;
case 5:
case DOME_DATA_5:
gSaveBlock2Ptr->frontier.field_D08_3 = gSpecialVar_0x8006;
break;
case 6:
case DOME_DATA_6:
if (VarGet(VAR_FRONTIER_BATTLE_MODE) == FRONTIER_MODE_DOUBLES)
{
if (lvlMode)
@@ -2385,7 +2379,7 @@ static void SetDomeData(void)
gSaveBlock2Ptr->frontier.field_D08_0 = gSpecialVar_0x8006;
}
break;
case 7:
case DOME_DATA_7:
if (VarGet(VAR_FRONTIER_BATTLE_MODE) == FRONTIER_MODE_DOUBLES)
{
if (lvlMode)
@@ -2401,7 +2395,7 @@ static void SetDomeData(void)
gSaveBlock2Ptr->frontier.field_D08_2 = gSpecialVar_0x8006;
}
break;
case 8:
case DOME_DATA_8:
gSaveBlock2Ptr->frontier.selectedPartyMons[3] = T1_READ_16(gSelectedOrderFromParty);
break;
}
@@ -2411,7 +2405,7 @@ static void InitDomeTrainers(void)
{
int i, j, k;
int monLevel;
int species[3];
int species[FRONTIER_PARTY_SIZE];
int monTypesBits, monTypesCount;
int trainerId;
int monSetId;
@@ -2472,7 +2466,7 @@ static void InitDomeTrainers(void)
gSaveBlock2Ptr->frontier.domeTrainers[i].trainerId = trainerId;
}
for (j = 0; j < 3; j++)
for (j = 0; j < FRONTIER_PARTY_SIZE; j++)
{
// Make sure the mon is valid.
do
@@ -2528,7 +2522,7 @@ static void InitDomeTrainers(void)
monTypesBits = 0;
statSums[i] = 0;
ivs = GetDomeTrainerMonIvs(gSaveBlock2Ptr->frontier.domeTrainers[i].trainerId);
for (j = 0; j < 3; j++)
for (j = 0; j < FRONTIER_PARTY_SIZE; j++)
{
CalcDomeMonStats(gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[i][j]].species,
monLevel, ivs,
@@ -2595,7 +2589,7 @@ static void InitDomeTrainers(void)
gSaveBlock2Ptr->frontier.domeTrainers[j].trainerId = TRAINER_FRONTIER_BRAIN;
}
for (i = 0; i < 3; i++)
for (i = 0; i < FRONTIER_PARTY_SIZE; i++)
gSaveBlock2Ptr->frontier.domeMonIds[j][i] = GetFrontierBrainMonSpecies(i);
}
@@ -2765,14 +2759,14 @@ int GetDomeTrainerMonCountInBits(u16 tournamentTrainerId)
static int sub_818FCBC(u16 tournamentTrainerId, bool8 arg1)
{
int i, moveId, playerMonId;
int array[3];
int array[FRONTIER_PARTY_SIZE];
for (i = 0; i < 3; i++)
for (i = 0; i < FRONTIER_PARTY_SIZE; i++)
{
array[i] = 0;
for (moveId = 0; moveId < MAX_MON_MOVES; moveId++)
{
for (playerMonId = 0; playerMonId < 3; playerMonId++)
for (playerMonId = 0; playerMonId < FRONTIER_PARTY_SIZE; playerMonId++)
{
if (gSaveBlock2Ptr->frontier.domeTrainers[tournamentTrainerId].trainerId == TRAINER_FRONTIER_BRAIN)
{
@@ -2793,14 +2787,14 @@ static int sub_818FCBC(u16 tournamentTrainerId, bool8 arg1)
static int sub_818FDB8(u16 tournamentTrainerId, bool8 arg1)
{
int i, moveId, playerMonId;
int array[3];
int array[FRONTIER_PARTY_SIZE];
for (i = 0; i < 3; i++)
for (i = 0; i < FRONTIER_PARTY_SIZE; i++)
{
array[i] = 0;
for (moveId = 0; moveId < MAX_MON_MOVES; moveId++)
{
for (playerMonId = 0; playerMonId < 3; playerMonId++)
for (playerMonId = 0; playerMonId < FRONTIER_PARTY_SIZE; playerMonId++)
{
if (gSaveBlock2Ptr->frontier.domeTrainers[tournamentTrainerId].trainerId == TRAINER_FRONTIER_BRAIN)
{
@@ -3327,7 +3321,7 @@ static void SetDomeOpponentGraphicsId(void)
SetBattleFacilityTrainerGfxId(gTrainerBattleOpponent_A, 0);
}
static void sub_81902F8(void)
static void SaveDomeChallenge(void)
{
gSaveBlock2Ptr->frontier.challengeStatus = gSpecialVar_0x8005;
VarSet(VAR_TEMP_0, 0);
@@ -3335,7 +3329,7 @@ static void sub_81902F8(void)
SaveGameFrontier();
}
static void UpdateDomeStreaks(void)
static void IncrementDomeStreaks(void)
{
u8 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
u8 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
@@ -5937,7 +5931,7 @@ static void InitDomeFacilityTrainersAndMons(void)
gFacilityTrainers = gBattleFrontierTrainers;
}
static void RestoreDomePlayerParty(void)
static void ResetSketchedMoves(void)
{
int i, moveSlot;
@@ -6005,7 +5999,7 @@ static void sub_8194F58(void)
{
int i, j, k;
int monLevel;
int species[3];
int species[FRONTIER_PARTY_SIZE];
int monTypesBits;
int trainerId;
int monSetId;
@@ -6021,7 +6015,7 @@ static void sub_8194F58(void)
return;
statSums = AllocZeroed(sizeof(u16) * DOME_TOURNAMENT_TRAINERS_COUNT);
statValues = AllocZeroed(sizeof(int) * 6);
statValues = AllocZeroed(sizeof(int) * NUM_STATS);
lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
gSaveBlock2Ptr->frontier.lvlMode = 0;
// This one, I'd like to call a 'C fakematching'.
@@ -6050,7 +6044,7 @@ static void sub_8194F58(void)
} while (j != i);
gSaveBlock2Ptr->frontier.domeTrainers[i].trainerId = trainerId;
for (j = 0; j < 3; j++)
for (j = 0; j < FRONTIER_PARTY_SIZE; j++)
{
// Make sure the mon is valid.
do
@@ -6081,7 +6075,7 @@ static void sub_8194F58(void)
monTypesBits = 0;
statSums[i] = 0;
ivs = GetDomeTrainerMonIvs(gSaveBlock2Ptr->frontier.domeTrainers[i].trainerId);
for (j = 0; j < 3; j++)
for (j = 0; j < FRONTIER_PARTY_SIZE; j++)
{
CalcDomeMonStats(gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[i][j]].species,
monLevel, ivs,