Merge branch 'master' into fix-eventobj
This commit is contained in:
@@ -33,8 +33,8 @@ static void InitArenaChallenge(void);
|
||||
static void GetArenaData(void);
|
||||
static void SetArenaData(void);
|
||||
static void SaveArenaChallenge(void);
|
||||
static void SetArenaRewardItem(void);
|
||||
static void GiveArenaRewardItem(void);
|
||||
static void SetArenaPrize(void);
|
||||
static void GiveArenaPrize(void);
|
||||
static void BufferArenaOpponentName(void);
|
||||
static void SpriteCb_JudgmentIcon(struct Sprite *sprite);
|
||||
static void ShowJudgmentSprite(u8 x, u8 y, u8 category, u8 battler);
|
||||
@@ -473,12 +473,12 @@ static void (* const sArenaFunctions[])(void) =
|
||||
[BATTLE_ARENA_FUNC_GET_DATA] = GetArenaData,
|
||||
[BATTLE_ARENA_FUNC_SET_DATA] = SetArenaData,
|
||||
[BATTLE_ARENA_FUNC_SAVE] = SaveArenaChallenge,
|
||||
[BATTLE_ARENA_FUNC_SET_REWARD] = SetArenaRewardItem,
|
||||
[BATTLE_ARENA_FUNC_GIVE_REWARD] = GiveArenaRewardItem,
|
||||
[BATTLE_ARENA_FUNC_SET_PRIZE] = SetArenaPrize,
|
||||
[BATTLE_ARENA_FUNC_GIVE_PRIZE] = GiveArenaPrize,
|
||||
[BATTLE_ARENA_FUNC_GET_TRAINER_NAME] = BufferArenaOpponentName,
|
||||
};
|
||||
|
||||
static const u16 sShortStreakRewardItems[] =
|
||||
static const u16 sShortStreakPrizeItems[] =
|
||||
{
|
||||
ITEM_HP_UP,
|
||||
ITEM_PROTEIN,
|
||||
@@ -488,7 +488,7 @@ static const u16 sShortStreakRewardItems[] =
|
||||
ITEM_ZINC,
|
||||
};
|
||||
|
||||
static const u16 sLongStreakRewardItems[] =
|
||||
static const u16 sLongStreakPrizeItems[] =
|
||||
{
|
||||
ITEM_BRIGHT_POWDER,
|
||||
ITEM_WHITE_HERB,
|
||||
@@ -810,8 +810,8 @@ static void GetArenaData(void)
|
||||
|
||||
switch (gSpecialVar_0x8005)
|
||||
{
|
||||
case ARENA_DATA_REWARD:
|
||||
gSpecialVar_Result = gSaveBlock2Ptr->frontier.arenaRewardItem;
|
||||
case ARENA_DATA_PRIZE:
|
||||
gSpecialVar_Result = gSaveBlock2Ptr->frontier.arenaPrize;
|
||||
break;
|
||||
case ARENA_DATA_WIN_STREAK:
|
||||
gSpecialVar_Result = gSaveBlock2Ptr->frontier.arenaWinStreaks[lvlMode];
|
||||
@@ -831,8 +831,8 @@ static void SetArenaData(void)
|
||||
|
||||
switch (gSpecialVar_0x8005)
|
||||
{
|
||||
case ARENA_DATA_REWARD:
|
||||
gSaveBlock2Ptr->frontier.arenaRewardItem = gSpecialVar_0x8006;
|
||||
case ARENA_DATA_PRIZE:
|
||||
gSaveBlock2Ptr->frontier.arenaPrize = gSpecialVar_0x8006;
|
||||
break;
|
||||
case ARENA_DATA_WIN_STREAK:
|
||||
gSaveBlock2Ptr->frontier.arenaWinStreaks[lvlMode] = gSpecialVar_0x8006;
|
||||
@@ -864,22 +864,22 @@ static void SaveArenaChallenge(void)
|
||||
SaveGameFrontier();
|
||||
}
|
||||
|
||||
static void SetArenaRewardItem(void)
|
||||
static void SetArenaPrize(void)
|
||||
{
|
||||
u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
|
||||
|
||||
if (gSaveBlock2Ptr->frontier.arenaWinStreaks[lvlMode] > 41)
|
||||
gSaveBlock2Ptr->frontier.arenaRewardItem = sLongStreakRewardItems[Random() % ARRAY_COUNT(sLongStreakRewardItems)];
|
||||
gSaveBlock2Ptr->frontier.arenaPrize = sLongStreakPrizeItems[Random() % ARRAY_COUNT(sLongStreakPrizeItems)];
|
||||
else
|
||||
gSaveBlock2Ptr->frontier.arenaRewardItem = sShortStreakRewardItems[Random() % ARRAY_COUNT(sShortStreakRewardItems)];
|
||||
gSaveBlock2Ptr->frontier.arenaPrize = sShortStreakPrizeItems[Random() % ARRAY_COUNT(sShortStreakPrizeItems)];
|
||||
}
|
||||
|
||||
static void GiveArenaRewardItem(void)
|
||||
static void GiveArenaPrize(void)
|
||||
{
|
||||
if (AddBagItem(gSaveBlock2Ptr->frontier.arenaRewardItem, 1) == TRUE)
|
||||
if (AddBagItem(gSaveBlock2Ptr->frontier.arenaPrize, 1) == TRUE)
|
||||
{
|
||||
CopyItemName(gSaveBlock2Ptr->frontier.arenaRewardItem, gStringVar1);
|
||||
gSaveBlock2Ptr->frontier.arenaRewardItem = ITEM_NONE;
|
||||
CopyItemName(gSaveBlock2Ptr->frontier.arenaPrize, gStringVar1);
|
||||
gSaveBlock2Ptr->frontier.arenaPrize = ITEM_NONE;
|
||||
gSpecialVar_Result = TRUE;
|
||||
}
|
||||
else
|
||||
|
||||
@@ -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_WIN_STREAK:
|
||||
gSpecialVar_Result = gSaveBlock2Ptr->frontier.domeWinStreaks[battleMode][lvlMode];
|
||||
break;
|
||||
case 1:
|
||||
case DOME_DATA_WIN_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_WIN_STREAK:
|
||||
gSaveBlock2Ptr->frontier.domeWinStreaks[battleMode][lvlMode] = gSpecialVar_0x8006;
|
||||
break;
|
||||
case 1:
|
||||
case DOME_DATA_WIN_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,
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
#include "random.h"
|
||||
#include "constants/species.h"
|
||||
#include "constants/battle_ai.h"
|
||||
#include "constants/battle_factory.h"
|
||||
#include "constants/battle_frontier.h"
|
||||
#include "constants/frontier_util.h"
|
||||
#include "constants/layouts.h"
|
||||
@@ -23,7 +24,7 @@ static bool8 sPerformedRentalSwap;
|
||||
static void InitFactoryChallenge(void);
|
||||
static void GetBattleFactoryData(void);
|
||||
static void SetBattleFactoryData(void);
|
||||
static void sub_81A613C(void);
|
||||
static void SaveFactoryChallenge(void);
|
||||
static void nullsub_75(void);
|
||||
static void nullsub_123(void);
|
||||
static void SelectInitialRentalMons(void);
|
||||
@@ -49,14 +50,14 @@ static const u16 sMoves_TotalPreparation[] =
|
||||
MOVE_MINIMIZE, MOVE_WITHDRAW, MOVE_DEFENSE_CURL, MOVE_BARRIER, MOVE_FOCUS_ENERGY, MOVE_AMNESIA,
|
||||
MOVE_ACID_ARMOR, MOVE_SHARPEN, MOVE_CONVERSION, MOVE_CONVERSION_2, MOVE_BELLY_DRUM, MOVE_PSYCH_UP,
|
||||
MOVE_CHARGE, MOVE_SNATCH, MOVE_TAIL_GLOW, MOVE_COSMIC_POWER, MOVE_IRON_DEFENSE, MOVE_HOWL, MOVE_BULK_UP, MOVE_CALM_MIND, MOVE_DRAGON_DANCE,
|
||||
0
|
||||
MOVE_NONE
|
||||
};
|
||||
|
||||
static const u16 sMoves_ImpossibleToPredict[] =
|
||||
{
|
||||
MOVE_MIMIC, MOVE_METRONOME, MOVE_MIRROR_MOVE, MOVE_TRANSFORM, MOVE_SUBSTITUTE, MOVE_SKETCH, MOVE_CURSE,
|
||||
MOVE_PRESENT, MOVE_FOLLOW_ME, MOVE_TRICK, MOVE_ROLE_PLAY, MOVE_ASSIST, MOVE_SKILL_SWAP, MOVE_CAMOUFLAGE,
|
||||
0
|
||||
MOVE_NONE
|
||||
};
|
||||
|
||||
static const u16 sMoves_WeakeningTheFoe[] =
|
||||
@@ -64,7 +65,7 @@ static const u16 sMoves_WeakeningTheFoe[] =
|
||||
MOVE_SAND_ATTACK, MOVE_TAIL_WHIP, MOVE_LEER, MOVE_GROWL, MOVE_STRING_SHOT, MOVE_SCREECH, MOVE_SMOKESCREEN, MOVE_KINESIS,
|
||||
MOVE_FLASH, MOVE_COTTON_SPORE, MOVE_SPITE, MOVE_SCARY_FACE, MOVE_CHARM, MOVE_KNOCK_OFF, MOVE_SWEET_SCENT, MOVE_FEATHER_DANCE,
|
||||
MOVE_FAKE_TEARS, MOVE_METAL_SOUND, MOVE_TICKLE,
|
||||
0
|
||||
MOVE_NONE
|
||||
};
|
||||
|
||||
static const u16 sMoves_HighRiskHighReturn[] =
|
||||
@@ -73,7 +74,7 @@ static const u16 sMoves_HighRiskHighReturn[] =
|
||||
MOVE_BIDE, MOVE_SELF_DESTRUCT, MOVE_SKY_ATTACK, MOVE_EXPLOSION, MOVE_FLAIL, MOVE_REVERSAL, MOVE_DESTINY_BOND,
|
||||
MOVE_PERISH_SONG, MOVE_PAIN_SPLIT, MOVE_MIRROR_COAT, MOVE_MEMENTO, MOVE_GRUDGE, MOVE_FACADE, MOVE_FOCUS_PUNCH,
|
||||
MOVE_BLAST_BURN, MOVE_HYDRO_CANNON, MOVE_OVERHEAT, MOVE_FRENZY_PLANT, MOVE_PSYCHO_BOOST, MOVE_VOLT_TACKLE,
|
||||
0
|
||||
MOVE_NONE
|
||||
};
|
||||
|
||||
static const u16 sMoves_Endurance[] =
|
||||
@@ -82,7 +83,7 @@ static const u16 sMoves_Endurance[] =
|
||||
MOVE_DETECT, MOVE_ENDURE, MOVE_MILK_DRINK, MOVE_HEAL_BELL, MOVE_SAFEGUARD, MOVE_BATON_PASS, MOVE_MORNING_SUN,
|
||||
MOVE_SYNTHESIS, MOVE_MOONLIGHT, MOVE_SWALLOW, MOVE_WISH, MOVE_INGRAIN, MOVE_MAGIC_COAT, MOVE_RECYCLE, MOVE_REFRESH,
|
||||
MOVE_MUD_SPORT, MOVE_SLACK_OFF, MOVE_AROMATHERAPY, MOVE_WATER_SPORT,
|
||||
0
|
||||
MOVE_NONE
|
||||
};
|
||||
|
||||
static const u16 sMoves_SlowAndSteady[] =
|
||||
@@ -91,45 +92,46 @@ static const u16 sMoves_SlowAndSteady[] =
|
||||
MOVE_THUNDER_WAVE, MOVE_TOXIC, MOVE_HYPNOSIS, MOVE_CONFUSE_RAY, MOVE_GLARE, MOVE_POISON_GAS, MOVE_LOVELY_KISS, MOVE_SPORE,
|
||||
MOVE_SPIDER_WEB, MOVE_SWEET_KISS, MOVE_SPIKES, MOVE_SWAGGER, MOVE_MEAN_LOOK, MOVE_ATTRACT, MOVE_ENCORE, MOVE_TORMENT,
|
||||
MOVE_FLATTER, MOVE_WILL_O_WISP, MOVE_TAUNT, MOVE_YAWN, MOVE_IMPRISON, MOVE_SNATCH, MOVE_TEETER_DANCE, MOVE_GRASS_WHISTLE, MOVE_BLOCK,
|
||||
0
|
||||
MOVE_NONE
|
||||
};
|
||||
|
||||
static const u16 sMoves_DependsOnTheBattlesFlow[] =
|
||||
{
|
||||
MOVE_SANDSTORM, MOVE_RAIN_DANCE, MOVE_SUNNY_DAY, MOVE_HAIL, MOVE_WEATHER_BALL,
|
||||
0
|
||||
MOVE_NONE
|
||||
};
|
||||
|
||||
static const u16 *const sMoveStyles[] =
|
||||
// Excludes FACTORY_STYLE_NONE
|
||||
static const u16 *const sMoveStyles[FACTORY_NUM_STYLES - 1] =
|
||||
{
|
||||
sMoves_TotalPreparation,
|
||||
sMoves_SlowAndSteady,
|
||||
sMoves_Endurance,
|
||||
sMoves_HighRiskHighReturn,
|
||||
sMoves_WeakeningTheFoe,
|
||||
sMoves_ImpossibleToPredict,
|
||||
sMoves_DependsOnTheBattlesFlow,
|
||||
[FACTORY_STYLE_PREPARATION - 1] = sMoves_TotalPreparation,
|
||||
[FACTORY_STYLE_SLOW_STEADY - 1] = sMoves_SlowAndSteady,
|
||||
[FACTORY_STYLE_ENDURANCE - 1] = sMoves_Endurance,
|
||||
[FACTORY_STYLE_HIGH_RISK - 1] = sMoves_HighRiskHighReturn,
|
||||
[FACTORY_STYLE_WEAKENING - 1] = sMoves_WeakeningTheFoe,
|
||||
[FACTORY_STYLE_UNPREDICTABLE - 1] = sMoves_ImpossibleToPredict,
|
||||
[FACTORY_STYLE_WEATHER - 1] = sMoves_DependsOnTheBattlesFlow,
|
||||
};
|
||||
|
||||
static void (* const sBattleFactoryFunctions[])(void) =
|
||||
{
|
||||
InitFactoryChallenge,
|
||||
GetBattleFactoryData,
|
||||
SetBattleFactoryData,
|
||||
sub_81A613C,
|
||||
nullsub_75,
|
||||
nullsub_123,
|
||||
SelectInitialRentalMons,
|
||||
SwapRentalMons,
|
||||
SetPerformedRentalSwap,
|
||||
SetRentalsToOpponentParty,
|
||||
SetPlayerAndOpponentParties,
|
||||
SetOpponentGfxVar,
|
||||
GenerateOpponentMons,
|
||||
GenerateInitialRentalMons,
|
||||
GetOpponentMostCommonMonType,
|
||||
GetOpponentBattleStyle,
|
||||
RestorePlayerPartyHeldItems,
|
||||
[BATTLE_FACTORY_FUNC_INIT] = InitFactoryChallenge,
|
||||
[BATTLE_FACTORY_FUNC_GET_DATA] = GetBattleFactoryData,
|
||||
[BATTLE_FACTORY_FUNC_SET_DATA] = SetBattleFactoryData,
|
||||
[BATTLE_FACTORY_FUNC_SAVE] = SaveFactoryChallenge,
|
||||
[BATTLE_FACTORY_FUNC_NULL] = nullsub_75,
|
||||
[BATTLE_FACTORY_FUNC_NULL2] = nullsub_123,
|
||||
[BATTLE_FACTORY_FUNC_SELECT_RENT_MONS] = SelectInitialRentalMons,
|
||||
[BATTLE_FACTORY_FUNC_SWAP_RENT_MONS] = SwapRentalMons,
|
||||
[BATTLE_FACTORY_FUNC_SET_SWAPPED] = SetPerformedRentalSwap,
|
||||
[BATTLE_FACTORY_FUNC_SET_OPPONENT_MONS] = SetRentalsToOpponentParty,
|
||||
[BATTLE_FACTORY_FUNC_SET_PARTIES] = SetPlayerAndOpponentParties,
|
||||
[BATTLE_FACTORY_FUNC_SET_OPPONENT_GFX] = SetOpponentGfxVar,
|
||||
[BATTLE_FACTORY_FUNC_GENERATE_OPPONENT_MONS] = GenerateOpponentMons,
|
||||
[BATTLE_FACTORY_FUNC_GENERATE_RENTAL_MONS] = GenerateInitialRentalMons,
|
||||
[BATTLE_FACTORY_FUNC_GET_OPPONENT_MON_TYPE] = GetOpponentMostCommonMonType,
|
||||
[BATTLE_FACTORY_FUNC_GET_OPPONENT_STYLE] = GetOpponentBattleStyle,
|
||||
[BATTLE_FACTORY_FUNC_RESET_HELD_ITEMS] = RestorePlayerPartyHeldItems,
|
||||
};
|
||||
|
||||
static const u32 sWinStreakFlags[][2] =
|
||||
@@ -201,7 +203,7 @@ static void InitFactoryChallenge(void)
|
||||
sPerformedRentalSwap = FALSE;
|
||||
for (i = 0; i < 6; i++)
|
||||
gSaveBlock2Ptr->frontier.rentalMons[i].monId = 0xFFFF;
|
||||
for (i = 0; i < 3; i++)
|
||||
for (i = 0; i < FRONTIER_PARTY_SIZE; i++)
|
||||
gUnknown_03006298[i] = 0xFFFF;
|
||||
|
||||
SetDynamicWarp(0, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1);
|
||||
@@ -215,13 +217,13 @@ static void GetBattleFactoryData(void)
|
||||
|
||||
switch (gSpecialVar_0x8005)
|
||||
{
|
||||
case 1:
|
||||
case FACTORY_DATA_WIN_STREAK:
|
||||
gSpecialVar_Result = gSaveBlock2Ptr->frontier.factoryWinStreaks[battleMode][lvlMode];
|
||||
break;
|
||||
case 2:
|
||||
case FACTORY_DATA_WIN_STREAK_ACTIVE:
|
||||
gSpecialVar_Result = ((gSaveBlock2Ptr->frontier.winStreakActiveFlags & sWinStreakFlags[battleMode][lvlMode]) != 0);
|
||||
break;
|
||||
case 3:
|
||||
case FACTORY_DATA_WIN_STREAK_SWAPS:
|
||||
gSpecialVar_Result = gSaveBlock2Ptr->frontier.factoryRentsCount[battleMode][lvlMode];
|
||||
break;
|
||||
}
|
||||
@@ -234,16 +236,16 @@ static void SetBattleFactoryData(void)
|
||||
|
||||
switch (gSpecialVar_0x8005)
|
||||
{
|
||||
case 1:
|
||||
case FACTORY_DATA_WIN_STREAK:
|
||||
gSaveBlock2Ptr->frontier.factoryWinStreaks[battleMode][lvlMode] = gSpecialVar_0x8006;
|
||||
break;
|
||||
case 2:
|
||||
case FACTORY_DATA_WIN_STREAK_ACTIVE:
|
||||
if (gSpecialVar_0x8006)
|
||||
gSaveBlock2Ptr->frontier.winStreakActiveFlags |= sWinStreakFlags[battleMode][lvlMode];
|
||||
else
|
||||
gSaveBlock2Ptr->frontier.winStreakActiveFlags &= sWinStreakMasks[battleMode][lvlMode];
|
||||
break;
|
||||
case 3:
|
||||
case FACTORY_DATA_WIN_STREAK_SWAPS:
|
||||
if (sPerformedRentalSwap == TRUE)
|
||||
{
|
||||
gSaveBlock2Ptr->frontier.factoryRentsCount[battleMode][lvlMode] = gSpecialVar_0x8006;
|
||||
@@ -253,7 +255,7 @@ static void SetBattleFactoryData(void)
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_81A613C(void)
|
||||
static void SaveFactoryChallenge(void)
|
||||
{
|
||||
gSaveBlock2Ptr->frontier.challengeStatus = gSpecialVar_0x8005;
|
||||
VarSet(VAR_TEMP_0, 0);
|
||||
@@ -290,8 +292,8 @@ static void SetPerformedRentalSwap(void)
|
||||
static void GenerateOpponentMons(void)
|
||||
{
|
||||
int i, j, k;
|
||||
u16 species[3];
|
||||
u16 heldItems[3];
|
||||
u16 species[FRONTIER_PARTY_SIZE];
|
||||
u16 heldItems[FRONTIER_PARTY_SIZE];
|
||||
int firstMonId = 0;
|
||||
u16 trainerId = 0;
|
||||
u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
|
||||
@@ -315,7 +317,7 @@ static void GenerateOpponentMons(void)
|
||||
gSaveBlock2Ptr->frontier.trainerIds[gSaveBlock2Ptr->frontier.curChallengeBattleNum] = trainerId;
|
||||
|
||||
i = 0;
|
||||
while (i != 3)
|
||||
while (i != FRONTIER_PARTY_SIZE)
|
||||
{
|
||||
u16 monSetId = GetMonSetId(lvlMode, challengeNum, FALSE);
|
||||
if (gFacilityTrainerMons[monSetId].species == SPECIES_UNOWN)
|
||||
@@ -369,7 +371,7 @@ static void SetRentalsToOpponentParty(void)
|
||||
else
|
||||
gFacilityTrainerMons = gSlateportBattleTentMons;
|
||||
|
||||
for (i = 0; i < 3; i++)
|
||||
for (i = 0; i < FRONTIER_PARTY_SIZE; i++)
|
||||
{
|
||||
gSaveBlock2Ptr->frontier.rentalMons[i + 3].monId = gUnknown_03006298[i];
|
||||
gSaveBlock2Ptr->frontier.rentalMons[i + 3].ivs = GetBoxMonData(&gEnemyParty[i].box, MON_DATA_ATK_IV, NULL);
|
||||
@@ -407,7 +409,7 @@ static void SetPlayerAndOpponentParties(void)
|
||||
if (gSpecialVar_0x8005 < 2)
|
||||
{
|
||||
ZeroPlayerPartyMons();
|
||||
for (i = 0; i < 3; i++)
|
||||
for (i = 0; i < FRONTIER_PARTY_SIZE; i++)
|
||||
{
|
||||
monSetId = gSaveBlock2Ptr->frontier.rentalMons[i].monId;
|
||||
ivs = gSaveBlock2Ptr->frontier.rentalMons[i].ivs;
|
||||
@@ -448,7 +450,7 @@ static void SetPlayerAndOpponentParties(void)
|
||||
{
|
||||
case 0:
|
||||
case 2:
|
||||
for (i = 0; i < 3; i++)
|
||||
for (i = 0; i < FRONTIER_PARTY_SIZE; i++)
|
||||
{
|
||||
monSetId = gSaveBlock2Ptr->frontier.rentalMons[i + 3].monId;
|
||||
ivs = gSaveBlock2Ptr->frontier.rentalMons[i + 3].ivs;
|
||||
@@ -588,7 +590,7 @@ static void GetOpponentMostCommonMonType(void)
|
||||
gFacilityTrainerMons = gBattleFrontierMons;
|
||||
for (i = 0; i < NUMBER_OF_MON_TYPES; i++)
|
||||
typesCount[i] = 0;
|
||||
for (i = 0; i < 3; i++)
|
||||
for (i = 0; i < FRONTIER_PARTY_SIZE; i++)
|
||||
{
|
||||
u32 species = gFacilityTrainerMons[gUnknown_03006298[i]].species;
|
||||
|
||||
@@ -617,14 +619,14 @@ static void GetOpponentMostCommonMonType(void)
|
||||
static void GetOpponentBattleStyle(void)
|
||||
{
|
||||
u8 i, j, count;
|
||||
u8 stylePoints[8];
|
||||
u8 stylePoints[FACTORY_NUM_STYLES];
|
||||
|
||||
count = 0;
|
||||
gFacilityTrainerMons = gBattleFrontierMons;
|
||||
for (i = 0; i < 8; i++)
|
||||
for (i = 0; i < FACTORY_NUM_STYLES; i++)
|
||||
stylePoints[i] = 0;
|
||||
|
||||
for (i = 0; i < 3; i++)
|
||||
for (i = 0; i < FRONTIER_PARTY_SIZE; i++)
|
||||
{
|
||||
u16 monSetId = gUnknown_03006298[i];
|
||||
for (j = 0; j < MAX_MON_MOVES; j++)
|
||||
@@ -635,7 +637,7 @@ static void GetOpponentBattleStyle(void)
|
||||
}
|
||||
|
||||
gSpecialVar_Result = 0;
|
||||
for (i = 1; i < 8; i++)
|
||||
for (i = 1; i < FACTORY_NUM_STYLES; i++)
|
||||
{
|
||||
if (stylePoints[i] >= sRequiredMoveCounts[i - 1])
|
||||
{
|
||||
@@ -644,8 +646,9 @@ static void GetOpponentBattleStyle(void)
|
||||
}
|
||||
}
|
||||
|
||||
// Has no singular style
|
||||
if (count > 2)
|
||||
gSpecialVar_Result = 8;
|
||||
gSpecialVar_Result = FACTORY_NUM_STYLES;
|
||||
}
|
||||
|
||||
static u8 GetMoveBattleStyle(u16 move)
|
||||
@@ -655,13 +658,13 @@ static u8 GetMoveBattleStyle(u16 move)
|
||||
|
||||
for (i = 0; i < ARRAY_COUNT(sMoveStyles); i++)
|
||||
{
|
||||
for (j = 0, moves = sMoveStyles[i]; moves[j] != 0; j++)
|
||||
for (j = 0, moves = sMoveStyles[i]; moves[j] != MOVE_NONE; j++)
|
||||
{
|
||||
if (moves[j] == move)
|
||||
return i + 1;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
return FACTORY_STYLE_NONE;
|
||||
}
|
||||
|
||||
bool8 InBattleFactory(void)
|
||||
@@ -679,7 +682,7 @@ static void RestorePlayerPartyHeldItems(void)
|
||||
else
|
||||
gFacilityTrainerMons = gSlateportBattleTentMons;
|
||||
|
||||
for (i = 0; i < 3; i++)
|
||||
for (i = 0; i < FRONTIER_PARTY_SIZE; i++)
|
||||
{
|
||||
SetMonData(&gPlayerParty[i],
|
||||
MON_DATA_HELD_ITEM,
|
||||
@@ -703,8 +706,8 @@ u8 GetFactoryMonFixedIV(u8 arg0, u8 arg1)
|
||||
void FillFactoryBrainParty(void)
|
||||
{
|
||||
int i, j, k;
|
||||
u16 species[3];
|
||||
u16 heldItems[3];
|
||||
u16 species[FRONTIER_PARTY_SIZE];
|
||||
u16 heldItems[FRONTIER_PARTY_SIZE];
|
||||
u8 friendship;
|
||||
int monLevel;
|
||||
u8 fixedIV;
|
||||
@@ -718,7 +721,7 @@ void FillFactoryBrainParty(void)
|
||||
i = 0;
|
||||
otId = T1_READ_32(gSaveBlock2Ptr->playerTrainerId);
|
||||
|
||||
while (i != 3)
|
||||
while (i != FRONTIER_PARTY_SIZE)
|
||||
{
|
||||
u16 monSetId = GetMonSetId(lvlMode, challengeNum, FALSE);
|
||||
|
||||
|
||||
@@ -14,34 +14,54 @@
|
||||
#include "constants/trainers.h"
|
||||
|
||||
// This file's functions.
|
||||
static void sub_8195980(void);
|
||||
static void sub_8195A38(void);
|
||||
static void sub_8195AE4(void);
|
||||
static void sub_8195BB0(void);
|
||||
static void sub_8195C20(void);
|
||||
static void InitPalaceChallenge(void);
|
||||
static void GetPalaceData(void);
|
||||
static void SetPalaceData(void);
|
||||
static void GetPalaceCommentId(void);
|
||||
static void SetPalaceOpponent(void);
|
||||
static void BufferOpponentIntroSpeech(void);
|
||||
static void sub_8195C7C(void);
|
||||
static void sub_8195CE4(void);
|
||||
static void sub_8195D28(void);
|
||||
static void sub_8195DB8(void);
|
||||
static void IncrementPalaceStreak(void);
|
||||
static void SavePalaceChallenge(void);
|
||||
static void SetRandomPalacePrize(void);
|
||||
static void GivePalacePrize(void);
|
||||
|
||||
// Const rom data.
|
||||
static void (* const sBattlePalaceFunctions[])(void) =
|
||||
{
|
||||
[BATTLE_PALACE_FUNC_0] = sub_8195980,
|
||||
[BATTLE_PALACE_FUNC_1] = sub_8195A38,
|
||||
[BATTLE_PALACE_FUNC_2] = sub_8195AE4,
|
||||
[BATTLE_PALACE_FUNC_3] = sub_8195BB0,
|
||||
[BATTLE_PALACE_FUNC_4] = sub_8195C20,
|
||||
[BATTLE_PALACE_FUNC_INIT] = InitPalaceChallenge,
|
||||
[BATTLE_PALACE_FUNC_GET_DATA] = GetPalaceData,
|
||||
[BATTLE_PALACE_FUNC_SET_DATA] = SetPalaceData,
|
||||
[BATTLE_PALACE_FUNC_GET_COMMENT_ID] = GetPalaceCommentId,
|
||||
[BATTLE_PALACE_FUNC_SET_OPPONENT] = SetPalaceOpponent,
|
||||
[BATTLE_PALACE_FUNC_GET_OPPONENT_INTRO] = BufferOpponentIntroSpeech,
|
||||
[BATTLE_PALACE_FUNC_6] = sub_8195C7C,
|
||||
[BATTLE_PALACE_FUNC_7] = sub_8195CE4,
|
||||
[BATTLE_PALACE_FUNC_8] = sub_8195D28,
|
||||
[BATTLE_PALACE_FUNC_9] = sub_8195DB8,
|
||||
[BATTLE_PALACE_FUNC_INCREMENT_STREAK] = IncrementPalaceStreak,
|
||||
[BATTLE_PALACE_FUNC_SAVE] = SavePalaceChallenge,
|
||||
[BATTLE_PALACE_FUNC_SET_PRIZE] = SetRandomPalacePrize,
|
||||
[BATTLE_PALACE_FUNC_GIVE_PRIZE] = GivePalacePrize,
|
||||
};
|
||||
|
||||
static const u16 gUnknown_0860DE78[] = {ITEM_HP_UP, ITEM_PROTEIN, ITEM_IRON, ITEM_CALCIUM, ITEM_CARBOS, ITEM_ZINC};
|
||||
static const u16 gUnknown_0860DE84[] = {ITEM_BRIGHT_POWDER, ITEM_WHITE_HERB, ITEM_QUICK_CLAW, ITEM_LEFTOVERS, ITEM_MENTAL_HERB, ITEM_KINGS_ROCK, ITEM_FOCUS_BAND, ITEM_SCOPE_LENS, ITEM_CHOICE_BAND};
|
||||
static const u16 sBattlePalaceEarlyPrizes[] =
|
||||
{
|
||||
ITEM_HP_UP,
|
||||
ITEM_PROTEIN,
|
||||
ITEM_IRON,
|
||||
ITEM_CALCIUM,
|
||||
ITEM_CARBOS,
|
||||
ITEM_ZINC
|
||||
};
|
||||
|
||||
static const u16 sBattlePalaceLatePrizes[] =
|
||||
{
|
||||
ITEM_BRIGHT_POWDER,
|
||||
ITEM_WHITE_HERB,
|
||||
ITEM_QUICK_CLAW,
|
||||
ITEM_LEFTOVERS,
|
||||
ITEM_MENTAL_HERB,
|
||||
ITEM_KINGS_ROCK,
|
||||
ITEM_FOCUS_BAND,
|
||||
ITEM_SCOPE_LENS,
|
||||
ITEM_CHOICE_BAND
|
||||
};
|
||||
|
||||
static const u32 sWinStreakFlags[][2] =
|
||||
{
|
||||
@@ -61,7 +81,7 @@ void CallBattlePalaceFunction(void)
|
||||
sBattlePalaceFunctions[gSpecialVar_0x8004]();
|
||||
}
|
||||
|
||||
static void sub_8195980(void)
|
||||
static void InitPalaceChallenge(void)
|
||||
{
|
||||
u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
|
||||
u32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
|
||||
@@ -77,39 +97,39 @@ static void sub_8195980(void)
|
||||
gTrainerBattleOpponent_A = 0;
|
||||
}
|
||||
|
||||
static void sub_8195A38(void)
|
||||
static void GetPalaceData(void)
|
||||
{
|
||||
u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
|
||||
u32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
|
||||
|
||||
switch (gSpecialVar_0x8005)
|
||||
{
|
||||
case 0:
|
||||
gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_DC6;
|
||||
case PALACE_DATA_PRIZE:
|
||||
gSpecialVar_Result = gSaveBlock2Ptr->frontier.palacePrize;
|
||||
break;
|
||||
case 1:
|
||||
case PALACE_DATA_WIN_STREAK:
|
||||
gSpecialVar_Result = gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][lvlMode];
|
||||
break;
|
||||
case 2:
|
||||
case PALACE_DATA_WIN_STREAK_ACTIVE:
|
||||
gSpecialVar_Result = ((gSaveBlock2Ptr->frontier.winStreakActiveFlags & sWinStreakFlags[battleMode][lvlMode]) != 0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_8195AE4(void)
|
||||
static void SetPalaceData(void)
|
||||
{
|
||||
u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
|
||||
u32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
|
||||
|
||||
switch (gSpecialVar_0x8005)
|
||||
{
|
||||
case 0:
|
||||
gSaveBlock2Ptr->frontier.field_DC6 = gSpecialVar_0x8006;
|
||||
case PALACE_DATA_PRIZE:
|
||||
gSaveBlock2Ptr->frontier.palacePrize = gSpecialVar_0x8006;
|
||||
break;
|
||||
case 1:
|
||||
case PALACE_DATA_WIN_STREAK:
|
||||
gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][lvlMode] = gSpecialVar_0x8006;
|
||||
break;
|
||||
case 2:
|
||||
case PALACE_DATA_WIN_STREAK_ACTIVE:
|
||||
if (gSpecialVar_0x8006)
|
||||
gSaveBlock2Ptr->frontier.winStreakActiveFlags |= sWinStreakFlags[battleMode][lvlMode];
|
||||
else
|
||||
@@ -118,7 +138,7 @@ static void sub_8195AE4(void)
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_8195BB0(void)
|
||||
static void GetPalaceCommentId(void)
|
||||
{
|
||||
u32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
|
||||
u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
|
||||
@@ -131,7 +151,7 @@ static void sub_8195BB0(void)
|
||||
gSpecialVar_Result = 4;
|
||||
}
|
||||
|
||||
static void sub_8195C20(void)
|
||||
static void SetPalaceOpponent(void)
|
||||
{
|
||||
gTrainerBattleOpponent_A = 5 *(Random() % 255) / 64u;
|
||||
SetBattleFacilityTrainerGfxId(gTrainerBattleOpponent_A, 0);
|
||||
@@ -143,7 +163,7 @@ static void BufferOpponentIntroSpeech(void)
|
||||
FrontierSpeechToString(gFacilityTrainers[gTrainerBattleOpponent_A].speechBefore);
|
||||
}
|
||||
|
||||
static void sub_8195C7C(void)
|
||||
static void IncrementPalaceStreak(void)
|
||||
{
|
||||
u8 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
|
||||
u8 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
|
||||
@@ -158,7 +178,7 @@ static void sub_8195C7C(void)
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_8195CE4(void)
|
||||
static void SavePalaceChallenge(void)
|
||||
{
|
||||
gSaveBlock2Ptr->frontier.challengeStatus = gSpecialVar_0x8005;
|
||||
VarSet(VAR_TEMP_0, 0);
|
||||
@@ -166,23 +186,23 @@ static void sub_8195CE4(void)
|
||||
SaveGameFrontier();
|
||||
}
|
||||
|
||||
static void sub_8195D28(void)
|
||||
static void SetRandomPalacePrize(void)
|
||||
{
|
||||
u32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
|
||||
u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
|
||||
|
||||
if (gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][lvlMode] > 41)
|
||||
gSaveBlock2Ptr->frontier.field_DC6 = gUnknown_0860DE84[Random() % ARRAY_COUNT(gUnknown_0860DE84)];
|
||||
gSaveBlock2Ptr->frontier.palacePrize = sBattlePalaceLatePrizes[Random() % ARRAY_COUNT(sBattlePalaceLatePrizes)];
|
||||
else
|
||||
gSaveBlock2Ptr->frontier.field_DC6 = gUnknown_0860DE78[Random() % ARRAY_COUNT(gUnknown_0860DE78)];
|
||||
gSaveBlock2Ptr->frontier.palacePrize = sBattlePalaceEarlyPrizes[Random() % ARRAY_COUNT(sBattlePalaceEarlyPrizes)];
|
||||
}
|
||||
|
||||
static void sub_8195DB8(void)
|
||||
static void GivePalacePrize(void)
|
||||
{
|
||||
if (AddBagItem(gSaveBlock2Ptr->frontier.field_DC6, 1) == TRUE)
|
||||
if (AddBagItem(gSaveBlock2Ptr->frontier.palacePrize, 1) == TRUE)
|
||||
{
|
||||
CopyItemName(gSaveBlock2Ptr->frontier.field_DC6, gStringVar1);
|
||||
gSaveBlock2Ptr->frontier.field_DC6 = 0;
|
||||
CopyItemName(gSaveBlock2Ptr->frontier.palacePrize, gStringVar1);
|
||||
gSaveBlock2Ptr->frontier.palacePrize = 0;
|
||||
gSpecialVar_Result = TRUE;
|
||||
}
|
||||
else
|
||||
|
||||
@@ -44,7 +44,7 @@ struct PikeWildMon
|
||||
// IWRAM bss
|
||||
static u8 sRoomType;
|
||||
static u8 sStatusMon;
|
||||
static bool8 sUnknown_0300128E;
|
||||
static bool8 sInWildMonRoom;
|
||||
static u32 sStatusFlags;
|
||||
static u8 sNpcId;
|
||||
|
||||
@@ -55,9 +55,9 @@ static void SetBattlePikeData(void);
|
||||
static void IsNextRoomFinal(void);
|
||||
static void SetupRoomObjectEvents(void);
|
||||
static void GetRoomType(void);
|
||||
static void sub_81A7400(void);
|
||||
static void sub_81A740C(void);
|
||||
static void sub_81A7418(void);
|
||||
static void SetInWildMonRoom(void);
|
||||
static void ClearInWildMonRoom(void);
|
||||
static void SavePikeChallenge(void);
|
||||
static void nullsub_76(void);
|
||||
static void nullsub_124(void);
|
||||
static void GetRoomInflictedStatus(void);
|
||||
@@ -70,12 +70,12 @@ static void SetHintedRoom(void);
|
||||
static void GetHintedRoomIndex(void);
|
||||
static void GetRoomTypeHint(void);
|
||||
static void ClearPikeTrainerIds(void);
|
||||
static void BufferRecordMixingTrainerMessage(void);
|
||||
static void BufferTrainerIntro(void);
|
||||
static void GetCurrentRoomPikeQueenFightType(void);
|
||||
static void HealSomeMonsBeforePikeQueen(void);
|
||||
static void SetHealingroomTypesDisabled(void);
|
||||
static void IsPartyFullHealed(void);
|
||||
static void BackupMonHeldItems(void);
|
||||
static void SaveMonHeldItems(void);
|
||||
static void RestoreMonHeldItems(void);
|
||||
static void InitPikeChallenge(void);
|
||||
static u8 GetNextRoomType(void);
|
||||
@@ -480,35 +480,35 @@ static const u8 sFrontierBrainStreakAppearances[NUM_FRONTIER_FACILITIES][4] =
|
||||
|
||||
static void (* const sBattlePikeFunctions[])(void) =
|
||||
{
|
||||
[BATTLE_PIKE_FUNC_SET_ROOM_TYPE] = SetRoomType,
|
||||
[BATTLE_PIKE_FUNC_GET_DATA] = GetBattlePikeData,
|
||||
[BATTLE_PIKE_FUNC_SET_DATA] = SetBattlePikeData,
|
||||
[BATTLE_PIKE_FUNC_IS_FINAL_ROOM] = IsNextRoomFinal,
|
||||
[BATTLE_PIKE_FUNC_SET_ROOM_OBJECTS] = SetupRoomObjectEvents,
|
||||
[BATTLE_PIKE_FUNC_GET_ROOM_TYPE] = GetRoomType,
|
||||
[BATTLE_PIKE_FUNC_6] = sub_81A7400,
|
||||
[BATTLE_PIKE_FUNC_7] = sub_81A740C,
|
||||
[BATTLE_PIKE_FUNC_8] = sub_81A7418,
|
||||
[BATTLE_PIKE_FUNC_NULL_9] = nullsub_76,
|
||||
[BATTLE_PIKE_FUNC_NULL_10] = nullsub_124,
|
||||
[BATTLE_PIKE_FUNC_GET_ROOM_STATUS] = GetRoomInflictedStatus,
|
||||
[BATTLE_PIKE_FUNC_GET_ROOM_STATUS_MON] = GetRoomInflictedStatusMon,
|
||||
[BATTLE_PIKE_FUNC_HEAL_ONE_TWO_MONS] = HealOneOrTwoMons,
|
||||
[BATTLE_PIKE_FUNC_BUFFER_NPC_MSG] = BufferNPCMessage,
|
||||
[BATTLE_PIKE_FUNC_STATUS_SCREEN_FADE] = StatusInflictionScreenFade,
|
||||
[BATTLE_PIKE_FUNC_IS_IN] = GetInBattlePike,
|
||||
[BATTLE_PIKE_FUNC_SET_HINT_ROOM] = SetHintedRoom,
|
||||
[BATTLE_PIKE_FUNC_GET_HINT_ROOM_ID] = GetHintedRoomIndex,
|
||||
[BATTLE_PIKE_FUNC_GET_ROOM_TYPE_HINT] = GetRoomTypeHint,
|
||||
[BATTLE_PIKE_FUNC_CLEAR_TRAINER_IDS] = ClearPikeTrainerIds,
|
||||
[BATTLE_PIKE_FUNC_BUFFER_RECORD_MIX_MSG] = BufferRecordMixingTrainerMessage,
|
||||
[BATTLE_PIKE_FUNC_GET_QUEEN_FIGHT_TYPE] = GetCurrentRoomPikeQueenFightType,
|
||||
[BATTLE_PIKE_FUNC_HEAL_MONS_BEFORE_QUEEN] = HealSomeMonsBeforePikeQueen,
|
||||
[BATTLE_PIKE_FUNC_SET_HEALING_ROOMS_DISABLED] = SetHealingroomTypesDisabled,
|
||||
[BATTLE_PIKE_FUNC_IS_PARTY_FULL_HEALTH] = IsPartyFullHealed,
|
||||
[BATTLE_PIKE_FUNC_SAVE_MON_HELD_ITEMS] = BackupMonHeldItems,
|
||||
[BATTLE_PIKE_FUNC_LOAD_MON_HELD_ITEMS] = RestoreMonHeldItems,
|
||||
[BATTLE_PIKE_FUNC_INIT_CHALLENGE] = InitPikeChallenge
|
||||
[BATTLE_PIKE_FUNC_SET_ROOM_TYPE] = SetRoomType,
|
||||
[BATTLE_PIKE_FUNC_GET_DATA] = GetBattlePikeData,
|
||||
[BATTLE_PIKE_FUNC_SET_DATA] = SetBattlePikeData,
|
||||
[BATTLE_PIKE_FUNC_IS_FINAL_ROOM] = IsNextRoomFinal,
|
||||
[BATTLE_PIKE_FUNC_SET_ROOM_OBJECTS] = SetupRoomObjectEvents,
|
||||
[BATTLE_PIKE_FUNC_GET_ROOM_TYPE] = GetRoomType,
|
||||
[BATTLE_PIKE_FUNC_SET_IN_WILD_MON_ROOM] = SetInWildMonRoom,
|
||||
[BATTLE_PIKE_FUNC_CLEAR_IN_WILD_MON_ROOM] = ClearInWildMonRoom,
|
||||
[BATTLE_PIKE_FUNC_SAVE] = SavePikeChallenge,
|
||||
[BATTLE_PIKE_FUNC_NULL_9] = nullsub_76,
|
||||
[BATTLE_PIKE_FUNC_NULL_10] = nullsub_124,
|
||||
[BATTLE_PIKE_FUNC_GET_ROOM_STATUS] = GetRoomInflictedStatus,
|
||||
[BATTLE_PIKE_FUNC_GET_ROOM_STATUS_MON] = GetRoomInflictedStatusMon,
|
||||
[BATTLE_PIKE_FUNC_HEAL_ONE_TWO_MONS] = HealOneOrTwoMons,
|
||||
[BATTLE_PIKE_FUNC_BUFFER_NPC_MSG] = BufferNPCMessage,
|
||||
[BATTLE_PIKE_FUNC_STATUS_SCREEN_FADE] = StatusInflictionScreenFade,
|
||||
[BATTLE_PIKE_FUNC_IS_IN] = GetInBattlePike,
|
||||
[BATTLE_PIKE_FUNC_SET_HINT_ROOM] = SetHintedRoom,
|
||||
[BATTLE_PIKE_FUNC_GET_HINT_ROOM_ID] = GetHintedRoomIndex,
|
||||
[BATTLE_PIKE_FUNC_GET_ROOM_TYPE_HINT] = GetRoomTypeHint,
|
||||
[BATTLE_PIKE_FUNC_CLEAR_TRAINER_IDS] = ClearPikeTrainerIds,
|
||||
[BATTLE_PIKE_FUNC_GET_TRAINER_INTRO] = BufferTrainerIntro,
|
||||
[BATTLE_PIKE_FUNC_GET_QUEEN_FIGHT_TYPE] = GetCurrentRoomPikeQueenFightType,
|
||||
[BATTLE_PIKE_FUNC_HEAL_MONS_BEFORE_QUEEN] = HealSomeMonsBeforePikeQueen,
|
||||
[BATTLE_PIKE_FUNC_SET_HEAL_ROOMS_DISABLED] = SetHealingroomTypesDisabled,
|
||||
[BATTLE_PIKE_FUNC_IS_PARTY_FULL_HEALTH] = IsPartyFullHealed,
|
||||
[BATTLE_PIKE_FUNC_SAVE_HELD_ITEMS] = SaveMonHeldItems,
|
||||
[BATTLE_PIKE_FUNC_RESET_HELD_ITEMS] = RestoreMonHeldItems,
|
||||
[BATTLE_PIKE_FUNC_INIT] = InitPikeChallenge
|
||||
};
|
||||
|
||||
static const u8 sRoomTypeHints[] = {
|
||||
@@ -623,19 +623,19 @@ static void GetBattlePikeData(void)
|
||||
|
||||
switch (gSpecialVar_0x8005)
|
||||
{
|
||||
case 0:
|
||||
gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_E02;
|
||||
case PIKE_DATA_PRIZE:
|
||||
gSpecialVar_Result = gSaveBlock2Ptr->frontier.pikePrize;
|
||||
break;
|
||||
case 1:
|
||||
case PIKE_DATA_WIN_STREAK:
|
||||
gSpecialVar_Result = gSaveBlock2Ptr->frontier.pikeWinStreaks[gSaveBlock2Ptr->frontier.lvlMode];
|
||||
break;
|
||||
case 2:
|
||||
case PIKE_DATA_RECORD_STREAK:
|
||||
gSpecialVar_Result = gSaveBlock2Ptr->frontier.pikeRecordStreaks[gSaveBlock2Ptr->frontier.lvlMode];
|
||||
break;
|
||||
case 3:
|
||||
case PIKE_DATA_TOTAL_STREAKS:
|
||||
gSpecialVar_Result = gSaveBlock2Ptr->frontier.pikeTotalStreaks[gSaveBlock2Ptr->frontier.lvlMode];
|
||||
break;
|
||||
case 4:
|
||||
case PIKE_DATA_WIN_STREAK_ACTIVE:
|
||||
if (lvlMode != FRONTIER_LVL_50)
|
||||
gSpecialVar_Result = gSaveBlock2Ptr->frontier.winStreakActiveFlags & STREAK_PIKE_OPEN;
|
||||
else
|
||||
@@ -650,22 +650,22 @@ static void SetBattlePikeData(void)
|
||||
|
||||
switch (gSpecialVar_0x8005)
|
||||
{
|
||||
case 0:
|
||||
gSaveBlock2Ptr->frontier.field_E02 = gSpecialVar_0x8006;
|
||||
case PIKE_DATA_PRIZE:
|
||||
gSaveBlock2Ptr->frontier.pikePrize = gSpecialVar_0x8006;
|
||||
break;
|
||||
case 1:
|
||||
case PIKE_DATA_WIN_STREAK:
|
||||
if (gSpecialVar_0x8006 <= MAX_STREAK)
|
||||
gSaveBlock2Ptr->frontier.pikeWinStreaks[gSaveBlock2Ptr->frontier.lvlMode] = gSpecialVar_0x8006;
|
||||
break;
|
||||
case 2:
|
||||
case PIKE_DATA_RECORD_STREAK:
|
||||
if (gSpecialVar_0x8006 <= MAX_STREAK && gSaveBlock2Ptr->frontier.pikeRecordStreaks[gSaveBlock2Ptr->frontier.lvlMode] < gSpecialVar_0x8006)
|
||||
gSaveBlock2Ptr->frontier.pikeRecordStreaks[gSaveBlock2Ptr->frontier.lvlMode] = gSpecialVar_0x8006;
|
||||
break;
|
||||
case 3:
|
||||
case PIKE_DATA_TOTAL_STREAKS:
|
||||
if (gSpecialVar_0x8006 <= MAX_STREAK)
|
||||
gSaveBlock2Ptr->frontier.pikeTotalStreaks[gSaveBlock2Ptr->frontier.lvlMode] = gSpecialVar_0x8006;
|
||||
break;
|
||||
case 4:
|
||||
case PIKE_DATA_WIN_STREAK_ACTIVE:
|
||||
if (lvlMode != FRONTIER_LVL_50)
|
||||
{
|
||||
if (gSpecialVar_0x8006)
|
||||
@@ -697,17 +697,17 @@ static void GetRoomType(void)
|
||||
gSpecialVar_Result = sRoomType;
|
||||
}
|
||||
|
||||
static void sub_81A7400(void)
|
||||
static void SetInWildMonRoom(void)
|
||||
{
|
||||
sUnknown_0300128E = TRUE;
|
||||
sInWildMonRoom = TRUE;
|
||||
}
|
||||
|
||||
static void sub_81A740C(void)
|
||||
static void ClearInWildMonRoom(void)
|
||||
{
|
||||
sUnknown_0300128E = FALSE;
|
||||
sInWildMonRoom = FALSE;
|
||||
}
|
||||
|
||||
static void sub_81A7418(void)
|
||||
static void SavePikeChallenge(void)
|
||||
{
|
||||
gSaveBlock2Ptr->frontier.challengeStatus = gSpecialVar_0x8005;
|
||||
VarSet(VAR_TEMP_0, 0);
|
||||
@@ -731,19 +731,19 @@ static void GetRoomInflictedStatus(void)
|
||||
switch (sStatusFlags)
|
||||
{
|
||||
case STATUS1_FREEZE:
|
||||
gSpecialVar_Result = 0;
|
||||
gSpecialVar_Result = PIKE_STATUS_FREEZE;
|
||||
break;
|
||||
case STATUS1_BURN:
|
||||
gSpecialVar_Result = 1;
|
||||
gSpecialVar_Result = PIKE_STATUS_BURN;
|
||||
break;
|
||||
case STATUS1_TOXIC_POISON:
|
||||
gSpecialVar_Result = 2;
|
||||
gSpecialVar_Result = PIKE_STATUS_TOXIC;
|
||||
break;
|
||||
case STATUS1_PARALYSIS:
|
||||
gSpecialVar_Result = 3;
|
||||
gSpecialVar_Result = PIKE_STATUS_PARALYSIS;
|
||||
break;
|
||||
case STATUS1_SLEEP:
|
||||
gSpecialVar_Result = 4;
|
||||
gSpecialVar_Result = PIKE_STATUS_SLEEP;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -1100,9 +1100,9 @@ static u16 GetNPCRoomGraphicsId(void)
|
||||
}
|
||||
|
||||
// Unused
|
||||
static u8 sub_81A7B84(void)
|
||||
static u8 GetInWildMonRoom(void)
|
||||
{
|
||||
return sUnknown_0300128E;
|
||||
return sInWildMonRoom;
|
||||
}
|
||||
|
||||
bool32 TryGenerateBattlePikeWildMon(bool8 checkKeenEyeIntimidate)
|
||||
@@ -1335,10 +1335,10 @@ static void SetHintedRoom(void)
|
||||
u8 i, count, id;
|
||||
u8 *roomCandidates;
|
||||
|
||||
gSpecialVar_Result = 0;
|
||||
gSpecialVar_Result = FALSE;
|
||||
if (GetPikeQueenFightType(1))
|
||||
{
|
||||
gSpecialVar_Result = 1;
|
||||
gSpecialVar_Result = TRUE;
|
||||
gSaveBlock2Ptr->frontier.pikeHintedRoomIndex = Random() % 6;
|
||||
gSaveBlock2Ptr->frontier.pikeHintedRoomType = PIKE_ROOM_BRAIN;
|
||||
}
|
||||
@@ -1462,7 +1462,7 @@ static void ClearPikeTrainerIds(void)
|
||||
gSaveBlock2Ptr->frontier.trainerIds[i] = 0xFFFF;
|
||||
}
|
||||
|
||||
static void BufferRecordMixingTrainerMessage(void)
|
||||
static void BufferTrainerIntro(void)
|
||||
{
|
||||
if (gSpecialVar_0x8005 == 0)
|
||||
{
|
||||
@@ -1500,7 +1500,7 @@ static u8 GetPikeQueenFightType(u8 nextRoom)
|
||||
u8 numPikeSymbols;
|
||||
|
||||
u8 facility = FRONTIER_FACILITY_PIKE;
|
||||
u8 ret = 0;
|
||||
u8 ret = FRONTIER_BRAIN_NOT_READY;
|
||||
u8 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
|
||||
u16 winStreak = gSaveBlock2Ptr->frontier.pikeWinStreaks[lvlMode];
|
||||
winStreak += nextRoom;
|
||||
@@ -1511,16 +1511,16 @@ static u8 GetPikeQueenFightType(u8 nextRoom)
|
||||
case 0:
|
||||
case 1:
|
||||
if (winStreak == sFrontierBrainStreakAppearances[facility][numPikeSymbols] - sFrontierBrainStreakAppearances[facility][3])
|
||||
ret = numPikeSymbols + 1;
|
||||
ret = numPikeSymbols + 1; // FRONTIER_BRAIN_SILVER and FRONTIER_BRAIN_GOLD
|
||||
break;
|
||||
case 2:
|
||||
default:
|
||||
if (winStreak == sFrontierBrainStreakAppearances[facility][0] - sFrontierBrainStreakAppearances[facility][3])
|
||||
ret = 3;
|
||||
ret = FRONTIER_BRAIN_STREAK;
|
||||
else if (winStreak == sFrontierBrainStreakAppearances[facility][1] - sFrontierBrainStreakAppearances[facility][3]
|
||||
|| (winStreak > sFrontierBrainStreakAppearances[facility][1]
|
||||
&& (winStreak - sFrontierBrainStreakAppearances[facility][1] + sFrontierBrainStreakAppearances[facility][3]) % sFrontierBrainStreakAppearances[facility][2] == 0))
|
||||
ret = 4;
|
||||
ret = FRONTIER_BRAIN_STREAK_LONG;
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -1584,7 +1584,7 @@ static void IsPartyFullHealed(void)
|
||||
}
|
||||
}
|
||||
|
||||
static void BackupMonHeldItems(void)
|
||||
static void SaveMonHeldItems(void)
|
||||
{
|
||||
u8 i;
|
||||
|
||||
|
||||
@@ -71,9 +71,9 @@ struct PyramidTrainerEncounterMusic
|
||||
static void InitPyramidChallenge(void);
|
||||
static void GetBattlePyramidData(void);
|
||||
static void SetBattlePyramidData(void);
|
||||
static void sub_81A9134(void);
|
||||
static void SetBattlePyramidRewardItem(void);
|
||||
static void GiveBattlePyramidRewardItem(void);
|
||||
static void SavePyramidChallenge(void);
|
||||
static void SetBattlePyramidPrize(void);
|
||||
static void GiveBattlePyramidPrize(void);
|
||||
static void SeedPyramidFloor(void);
|
||||
static void SetPickupItem(void);
|
||||
static void HidePyramidItem(void);
|
||||
@@ -787,24 +787,24 @@ static const u8 sHintTextTypes[] =
|
||||
|
||||
static void (* const sBattlePyramidFunctions[])(void) =
|
||||
{
|
||||
InitPyramidChallenge,
|
||||
GetBattlePyramidData,
|
||||
SetBattlePyramidData,
|
||||
sub_81A9134,
|
||||
SetBattlePyramidRewardItem,
|
||||
GiveBattlePyramidRewardItem,
|
||||
SeedPyramidFloor,
|
||||
SetPickupItem,
|
||||
HidePyramidItem,
|
||||
InitPyramidFacilityTrainers,
|
||||
ShowPostBattleHintText,
|
||||
UpdatePyramidWinStreak,
|
||||
GetInBattlePyramid,
|
||||
UpdatePyramidLightRadius,
|
||||
ClearPyramidPartyHeldItems,
|
||||
SetPyramidFloorPalette,
|
||||
sub_81A9828,
|
||||
RestorePyramidPlayerParty,
|
||||
[BATTLE_PYRAMID_FUNC_INIT] = InitPyramidChallenge,
|
||||
[BATTLE_PYRAMID_FUNC_GET_DATA] = GetBattlePyramidData,
|
||||
[BATTLE_PYRAMID_FUNC_SET_DATA] = SetBattlePyramidData,
|
||||
[BATTLE_PYRAMID_FUNC_SAVE] = SavePyramidChallenge,
|
||||
[BATTLE_PYRAMID_FUNC_SET_PRIZE] = SetBattlePyramidPrize,
|
||||
[BATTLE_PYRAMID_FUNC_GIVE_PRIZE] = GiveBattlePyramidPrize,
|
||||
[BATTLE_PYRAMID_FUNC_SEED_FLOOR] = SeedPyramidFloor,
|
||||
[BATTLE_PYRAMID_FUNC_SET_ITEM] = SetPickupItem,
|
||||
[BATTLE_PYRAMID_FUNC_HIDE_ITEM] = HidePyramidItem,
|
||||
[BATTLE_PYRAMID_FUNC_INIT_TRAINERS] = InitPyramidFacilityTrainers,
|
||||
[BATTLE_PYRAMID_FUNC_SHOW_HINT_TEXT] = ShowPostBattleHintText,
|
||||
[BATTLE_PYRAMID_FUNC_UPDATE_STREAK] = UpdatePyramidWinStreak,
|
||||
[BATTLE_PYRAMID_FUNC_IS_IN] = GetInBattlePyramid,
|
||||
[BATTLE_PYRAMID_FUNC_UPDATE_LIGHT] = UpdatePyramidLightRadius,
|
||||
[BATTLE_PYRAMID_FUNC_CLEAR_HELD_ITEMS] = ClearPyramidPartyHeldItems,
|
||||
[BATTLE_PYRAMID_FUNC_SET_FLOOR_PALETTE] = SetPyramidFloorPalette,
|
||||
[BATTLE_PYRAMID_FUNC_16] = sub_81A9828,
|
||||
[BATTLE_PYRAMID_FUNC_RESTORE_PARTY] = RestorePyramidPlayerParty,
|
||||
};
|
||||
|
||||
static const u16 sShortStreakRewardItems[] = {ITEM_HP_UP, ITEM_PROTEIN, ITEM_IRON, ITEM_CALCIUM, ITEM_CARBOS, ITEM_ZINC};
|
||||
@@ -868,28 +868,28 @@ static void GetBattlePyramidData(void)
|
||||
|
||||
switch (gSpecialVar_0x8005)
|
||||
{
|
||||
case 0:
|
||||
gSpecialVar_Result = gSaveBlock2Ptr->frontier.pyramidRewardItem;
|
||||
case PYRAMID_DATA_PRIZE:
|
||||
gSpecialVar_Result = gSaveBlock2Ptr->frontier.pyramidPrize;
|
||||
break;
|
||||
case 1:
|
||||
case PYRAMID_DATA_WIN_STREAK:
|
||||
gSpecialVar_Result = gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvlMode];
|
||||
break;
|
||||
case 2:
|
||||
case PYRAMID_DATA_WIN_STREAK_ACTIVE:
|
||||
if (lvlMode != FRONTIER_LVL_50)
|
||||
gSpecialVar_Result = gSaveBlock2Ptr->frontier.winStreakActiveFlags & STREAK_PYRAMID_OPEN;
|
||||
else
|
||||
gSpecialVar_Result = gSaveBlock2Ptr->frontier.winStreakActiveFlags & STREAK_PYRAMID_50;
|
||||
break;
|
||||
case 3:
|
||||
case PYRAMID_DATA_WIN_STREAK_50:
|
||||
gSpecialVar_Result = gSaveBlock2Ptr->frontier.pyramidWinStreaks[FRONTIER_LVL_50];
|
||||
break;
|
||||
case 4:
|
||||
case PYRAMID_DATA_WIN_STREAK_OPEN:
|
||||
gSpecialVar_Result = gSaveBlock2Ptr->frontier.pyramidWinStreaks[FRONTIER_LVL_OPEN];
|
||||
break;
|
||||
case 5:
|
||||
case PYRAMID_DATA_WIN_STREAK_ACTIVE_50:
|
||||
gSpecialVar_Result = gSaveBlock2Ptr->frontier.winStreakActiveFlags & STREAK_PYRAMID_50;
|
||||
break;
|
||||
case 6:
|
||||
case PYRAMID_DATA_WIN_STREAK_ACTIVE_OPEN:
|
||||
gSpecialVar_Result = gSaveBlock2Ptr->frontier.winStreakActiveFlags & STREAK_PYRAMID_OPEN;
|
||||
break;
|
||||
}
|
||||
@@ -901,13 +901,13 @@ static void SetBattlePyramidData(void)
|
||||
|
||||
switch (gSpecialVar_0x8005)
|
||||
{
|
||||
case 0:
|
||||
gSaveBlock2Ptr->frontier.pyramidRewardItem = gSpecialVar_0x8006;
|
||||
case PYRAMID_DATA_PRIZE:
|
||||
gSaveBlock2Ptr->frontier.pyramidPrize = gSpecialVar_0x8006;
|
||||
break;
|
||||
case 1:
|
||||
case PYRAMID_DATA_WIN_STREAK:
|
||||
gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvlMode] = gSpecialVar_0x8006;
|
||||
break;
|
||||
case 2:
|
||||
case PYRAMID_DATA_WIN_STREAK_ACTIVE:
|
||||
if (lvlMode != FRONTIER_LVL_50)
|
||||
{
|
||||
if (gSpecialVar_0x8006)
|
||||
@@ -923,13 +923,13 @@ static void SetBattlePyramidData(void)
|
||||
gSaveBlock2Ptr->frontier.winStreakActiveFlags &= ~(STREAK_PYRAMID_50);
|
||||
}
|
||||
break;
|
||||
case 7:
|
||||
case PYRAMID_DATA_TRAINER_FLAGS:
|
||||
gSaveBlock2Ptr->frontier.pyramidTrainerFlags = gSpecialVar_0x8006;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_81A9134(void)
|
||||
static void SavePyramidChallenge(void)
|
||||
{
|
||||
gSaveBlock2Ptr->frontier.challengeStatus = gSpecialVar_0x8005;
|
||||
VarSet(VAR_TEMP_0, 0);
|
||||
@@ -938,22 +938,22 @@ static void sub_81A9134(void)
|
||||
TrySavingData(SAVE_LINK);
|
||||
}
|
||||
|
||||
static void SetBattlePyramidRewardItem(void)
|
||||
static void SetBattlePyramidPrize(void)
|
||||
{
|
||||
u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
|
||||
|
||||
if (gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvlMode] > 41)
|
||||
gSaveBlock2Ptr->frontier.pyramidRewardItem = sLongStreakRewardItems[Random() % ARRAY_COUNT(sLongStreakRewardItems)];
|
||||
gSaveBlock2Ptr->frontier.pyramidPrize = sLongStreakRewardItems[Random() % ARRAY_COUNT(sLongStreakRewardItems)];
|
||||
else
|
||||
gSaveBlock2Ptr->frontier.pyramidRewardItem = sShortStreakRewardItems[Random() % ARRAY_COUNT(sShortStreakRewardItems)];
|
||||
gSaveBlock2Ptr->frontier.pyramidPrize = sShortStreakRewardItems[Random() % ARRAY_COUNT(sShortStreakRewardItems)];
|
||||
}
|
||||
|
||||
static void GiveBattlePyramidRewardItem(void)
|
||||
static void GiveBattlePyramidPrize(void)
|
||||
{
|
||||
if (AddBagItem(gSaveBlock2Ptr->frontier.pyramidRewardItem, 1) == TRUE)
|
||||
if (AddBagItem(gSaveBlock2Ptr->frontier.pyramidPrize, 1) == TRUE)
|
||||
{
|
||||
CopyItemName(gSaveBlock2Ptr->frontier.pyramidRewardItem, gStringVar1);
|
||||
gSaveBlock2Ptr->frontier.pyramidRewardItem = 0;
|
||||
CopyItemName(gSaveBlock2Ptr->frontier.pyramidPrize, gStringVar1);
|
||||
gSaveBlock2Ptr->frontier.pyramidPrize = 0;
|
||||
gSpecialVar_Result = TRUE;
|
||||
}
|
||||
else
|
||||
@@ -1004,6 +1004,7 @@ static void SetPickupItem(void)
|
||||
else
|
||||
gSpecialVar_0x8000 = sPickupItemsLvl50[round][sPickupItemSlots[i][1]];
|
||||
|
||||
// Quantity of item to give
|
||||
gSpecialVar_0x8001 = 1;
|
||||
}
|
||||
|
||||
@@ -1122,10 +1123,10 @@ static void UpdatePyramidLightRadius(void)
|
||||
{
|
||||
switch (gSpecialVar_0x8006)
|
||||
{
|
||||
case 0:
|
||||
case PYRAMID_LIGHT_SET_RADIUS:
|
||||
gSaveBlock2Ptr->frontier.pyramidLightRadius = gSpecialVar_0x8005;
|
||||
break;
|
||||
case 1:
|
||||
case PYRAMID_LIGHT_INCR_RADIUS:
|
||||
switch (gSpecialVar_Result)
|
||||
{
|
||||
case 0:
|
||||
|
||||
@@ -11,37 +11,49 @@
|
||||
#include "battle_factory_screen.h"
|
||||
#include "frontier_util.h"
|
||||
#include "string_util.h"
|
||||
#include "constants/battle_tent.h"
|
||||
#include "constants/items.h"
|
||||
#include "constants/layouts.h"
|
||||
#include "constants/region_map_sections.h"
|
||||
#include "constants/species.h"
|
||||
#include "constants/trainers.h"
|
||||
|
||||
// This file's functions.
|
||||
static void sub_81B99D4(void);
|
||||
static void sub_81B9A28(void);
|
||||
static void sub_81B9A44(void);
|
||||
static void sub_81B9A60(void);
|
||||
static void sub_81B9A90(void);
|
||||
static void sub_81B9ABC(void);
|
||||
static void sub_81B9B00(void);
|
||||
static void sub_81B9B28(void);
|
||||
static void sub_81B9BA0(void);
|
||||
static void sub_81B9BF4(void);
|
||||
static void sub_81B9C10(void);
|
||||
static void sub_81B9C2C(void);
|
||||
static void sub_81B9C70(void);
|
||||
static void sub_81B9C98(void);
|
||||
static void sub_81B9CF0(void);
|
||||
static void sub_81B9D28(void);
|
||||
static void sub_81B9D7C(void);
|
||||
static void sub_81B9D98(void);
|
||||
static void sub_81B9DB4(void);
|
||||
static void sub_81B9DF8(void);
|
||||
static void sub_81B9E20(void);
|
||||
static void sub_81B9E78(void);
|
||||
static void sub_81B9E88(void);
|
||||
static void sub_81BA040(void);
|
||||
static void sub_81B9EC0(void);
|
||||
static void InitVerdanturfTentChallenge(void);
|
||||
static void GetVerdanturfTentPrize(void);
|
||||
static void SetVerdanturfTentPrize(void);
|
||||
static void SetVerdanturfTentTrainerGfx(void);
|
||||
static void BufferVerdanturfTentTrainerIntro(void);
|
||||
static void SaveVerdanturfTentChallenge(void);
|
||||
static void SetRandomVerdanturfTentPrize(void);
|
||||
static void GiveVerdanturfTentPrize(void);
|
||||
static void InitFallarborTentChallenge(void);
|
||||
static void GetFallarborTentPrize(void);
|
||||
static void SetFallarborTentPrize(void);
|
||||
static void SaveFallarborTentChallenge(void);
|
||||
static void SetRandomFallarborTentPrize(void);
|
||||
static void GiveFallarborTentPrize(void);
|
||||
static void BufferFallarborTentTrainerName(void);
|
||||
static void InitSlateportTentChallenge(void);
|
||||
static void GetSlateportTentPrize(void);
|
||||
static void SetSlateportTentPrize(void);
|
||||
static void SaveSlateportTentChallenge(void);
|
||||
static void SetRandomSlateportTentPrize(void);
|
||||
static void GiveSlateportTentPrize(void);
|
||||
static void SelectInitialRentalMons(void);
|
||||
static void SwapRentalMons(void);
|
||||
static void GenerateOpponentMons(void);
|
||||
static void GenerateInitialRentalMons(void);
|
||||
|
||||
/*
|
||||
* Battle Tents are mini versions of particular Battle Frontier facilities
|
||||
* As such they each share some scripts and functions with their counterpart
|
||||
*
|
||||
* Verdanturf Battle Tent: Battle Palace
|
||||
* Fallarbor Battle Tent: Battle Arena
|
||||
* Slateport Battle Tent: Battle Factory
|
||||
*
|
||||
*/
|
||||
|
||||
// IWRAM bss
|
||||
static u16 sRandMonSetId;
|
||||
@@ -49,43 +61,43 @@ static u16 sRandMonSetId;
|
||||
// const rom data
|
||||
void static (*const sVerdanturfTentFuncs[])(void) =
|
||||
{
|
||||
sub_81B99D4,
|
||||
sub_81B9A28,
|
||||
sub_81B9A44,
|
||||
sub_81B9A60,
|
||||
sub_81B9A90,
|
||||
sub_81B9ABC,
|
||||
sub_81B9B00,
|
||||
sub_81B9B28
|
||||
[VERDANTURF_TENT_FUNC_INIT] = InitVerdanturfTentChallenge,
|
||||
[VERDANTURF_TENT_FUNC_GET_PRIZE] = GetVerdanturfTentPrize,
|
||||
[VERDANTURF_TENT_FUNC_SET_PRIZE] = SetVerdanturfTentPrize,
|
||||
[VERDANTURF_TENT_FUNC_SET_OPPONENT_GFX] = SetVerdanturfTentTrainerGfx,
|
||||
[VERDANTURF_TENT_FUNC_GET_OPPONENT_INTRO] = BufferVerdanturfTentTrainerIntro,
|
||||
[VERDANTURF_TENT_FUNC_SAVE] = SaveVerdanturfTentChallenge,
|
||||
[VERDANTURF_TENT_FUNC_SET_RANDOM_PRIZE] = SetRandomVerdanturfTentPrize,
|
||||
[VERDANTURF_TENT_FUNC_GIVE_PRIZE] = GiveVerdanturfTentPrize
|
||||
};
|
||||
|
||||
static const u16 sVerdanturfTentRewards[] = {ITEM_NEST_BALL};
|
||||
|
||||
void static (*const sFallarborTentFuncs[])(void) =
|
||||
{
|
||||
sub_81B9BA0,
|
||||
sub_81B9BF4,
|
||||
sub_81B9C10,
|
||||
sub_81B9C2C,
|
||||
sub_81B9C70,
|
||||
sub_81B9C98,
|
||||
sub_81B9CF0
|
||||
[FALLARBOR_TENT_FUNC_INIT] = InitFallarborTentChallenge,
|
||||
[FALLARBOR_TENT_FUNC_GET_PRIZE] = GetFallarborTentPrize,
|
||||
[FALLARBOR_TENT_FUNC_SET_PRIZE] = SetFallarborTentPrize,
|
||||
[FALLARBOR_TENT_FUNC_SAVE] = SaveFallarborTentChallenge,
|
||||
[FALLARBOR_TENT_FUNC_SET_RANDOM_PRIZE] = SetRandomFallarborTentPrize,
|
||||
[FALLARBOR_TENT_FUNC_GIVE_PRIZE] = GiveFallarborTentPrize,
|
||||
[FALLARBOR_TENT_FUNC_GET_OPPONENT_NAME] = BufferFallarborTentTrainerName
|
||||
};
|
||||
|
||||
static const u16 sFallarborTentRewards[] = {ITEM_HYPER_POTION};
|
||||
|
||||
void static (*const sSlateportTentFuncs[])(void) =
|
||||
{
|
||||
sub_81B9D28,
|
||||
sub_81B9D7C,
|
||||
sub_81B9D98,
|
||||
sub_81B9DB4,
|
||||
sub_81B9DF8,
|
||||
sub_81B9E20,
|
||||
sub_81B9E78,
|
||||
sub_81B9E88,
|
||||
sub_81BA040,
|
||||
sub_81B9EC0
|
||||
[SLATEPORT_TENT_FUNC_INIT] = InitSlateportTentChallenge,
|
||||
[SLATEPORT_TENT_FUNC_GET_PRIZE] = GetSlateportTentPrize,
|
||||
[SLATEPORT_TENT_FUNC_SET_PRIZE] = SetSlateportTentPrize,
|
||||
[SLATEPORT_TENT_FUNC_SAVE] = SaveSlateportTentChallenge,
|
||||
[SLATEPORT_TENT_FUNC_SET_RANDOM_PRIZE] = SetRandomSlateportTentPrize,
|
||||
[SLATEPORT_TENT_FUNC_GIVE_PRIZE] = GiveSlateportTentPrize,
|
||||
[SLATEPORT_TENT_FUNC_SELECT_RENT_MONS] = SelectInitialRentalMons,
|
||||
[SLATEPORT_TENT_FUNC_SWAP_RENT_MONS] = SwapRentalMons,
|
||||
[SLATEPORT_TENT_FUNC_GENERATE_OPPONENT_MONS] = GenerateOpponentMons,
|
||||
[SLATEPORT_TENT_FUNC_GENERATE_RENTAL_MONS] = GenerateInitialRentalMons
|
||||
};
|
||||
|
||||
static const u16 sSlateportTentRewards[] = {ITEM_FULL_HEAL};
|
||||
@@ -96,7 +108,7 @@ void CallVerdanturfTentFunction(void)
|
||||
sVerdanturfTentFuncs[gSpecialVar_0x8004]();
|
||||
}
|
||||
|
||||
static void sub_81B99D4(void)
|
||||
static void InitVerdanturfTentChallenge(void)
|
||||
{
|
||||
gSaveBlock2Ptr->frontier.challengeStatus = 0;
|
||||
gSaveBlock2Ptr->frontier.curChallengeBattleNum = 0;
|
||||
@@ -104,29 +116,29 @@ static void sub_81B99D4(void)
|
||||
SetDynamicWarp(0, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1);
|
||||
}
|
||||
|
||||
static void sub_81B9A28(void)
|
||||
static void GetVerdanturfTentPrize(void)
|
||||
{
|
||||
gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_E6A;
|
||||
gSpecialVar_Result = gSaveBlock2Ptr->frontier.verdanturfTentPrize;
|
||||
}
|
||||
|
||||
static void sub_81B9A44(void)
|
||||
static void SetVerdanturfTentPrize(void)
|
||||
{
|
||||
gSaveBlock2Ptr->frontier.field_E6A = gSpecialVar_0x8006;
|
||||
gSaveBlock2Ptr->frontier.verdanturfTentPrize = gSpecialVar_0x8006;
|
||||
}
|
||||
|
||||
static void sub_81B9A60(void)
|
||||
static void SetVerdanturfTentTrainerGfx(void)
|
||||
{
|
||||
gTrainerBattleOpponent_A = (u32)((Random() % 255) * 5) / 64;
|
||||
SetBattleFacilityTrainerGfxId(gTrainerBattleOpponent_A, 0);
|
||||
}
|
||||
|
||||
static void sub_81B9A90(void)
|
||||
static void BufferVerdanturfTentTrainerIntro(void)
|
||||
{
|
||||
if (gTrainerBattleOpponent_A < 300)
|
||||
if (gTrainerBattleOpponent_A < TRAINER_RECORD_MIXING_FRIEND)
|
||||
FrontierSpeechToString(gFacilityTrainers[gTrainerBattleOpponent_A].speechBefore);
|
||||
}
|
||||
|
||||
static void sub_81B9ABC(void)
|
||||
static void SaveVerdanturfTentChallenge(void)
|
||||
{
|
||||
gSaveBlock2Ptr->frontier.challengeStatus = gSpecialVar_0x8005;
|
||||
VarSet(VAR_TEMP_0, 0);
|
||||
@@ -134,17 +146,17 @@ static void sub_81B9ABC(void)
|
||||
SaveGameFrontier();
|
||||
}
|
||||
|
||||
static void sub_81B9B00(void)
|
||||
static void SetRandomVerdanturfTentPrize(void)
|
||||
{
|
||||
gSaveBlock2Ptr->frontier.field_E6A = sVerdanturfTentRewards[Random() % ARRAY_COUNT(sVerdanturfTentRewards)];
|
||||
gSaveBlock2Ptr->frontier.verdanturfTentPrize = sVerdanturfTentRewards[Random() % ARRAY_COUNT(sVerdanturfTentRewards)];
|
||||
}
|
||||
|
||||
static void sub_81B9B28(void)
|
||||
static void GiveVerdanturfTentPrize(void)
|
||||
{
|
||||
if (AddBagItem(gSaveBlock2Ptr->frontier.field_E6A, 1) == TRUE)
|
||||
if (AddBagItem(gSaveBlock2Ptr->frontier.verdanturfTentPrize, 1) == TRUE)
|
||||
{
|
||||
CopyItemName(gSaveBlock2Ptr->frontier.field_E6A, gStringVar1);
|
||||
gSaveBlock2Ptr->frontier.field_E6A = ITEM_NONE;
|
||||
CopyItemName(gSaveBlock2Ptr->frontier.verdanturfTentPrize, gStringVar1);
|
||||
gSaveBlock2Ptr->frontier.verdanturfTentPrize = ITEM_NONE;
|
||||
gSpecialVar_Result = TRUE;
|
||||
}
|
||||
else
|
||||
@@ -158,7 +170,7 @@ void CallFallarborTentFunction(void)
|
||||
sFallarborTentFuncs[gSpecialVar_0x8004]();
|
||||
}
|
||||
|
||||
static void sub_81B9BA0(void)
|
||||
static void InitFallarborTentChallenge(void)
|
||||
{
|
||||
gSaveBlock2Ptr->frontier.challengeStatus = 0;
|
||||
gSaveBlock2Ptr->frontier.curChallengeBattleNum = 0;
|
||||
@@ -166,17 +178,17 @@ static void sub_81B9BA0(void)
|
||||
SetDynamicWarp(0, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1);
|
||||
}
|
||||
|
||||
static void sub_81B9BF4(void)
|
||||
static void GetFallarborTentPrize(void)
|
||||
{
|
||||
gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_E6C;
|
||||
gSpecialVar_Result = gSaveBlock2Ptr->frontier.fallarborTentPrize;
|
||||
}
|
||||
|
||||
static void sub_81B9C10(void)
|
||||
static void SetFallarborTentPrize(void)
|
||||
{
|
||||
gSaveBlock2Ptr->frontier.field_E6C = gSpecialVar_0x8006;
|
||||
gSaveBlock2Ptr->frontier.fallarborTentPrize = gSpecialVar_0x8006;
|
||||
}
|
||||
|
||||
static void sub_81B9C2C(void)
|
||||
static void SaveFallarborTentChallenge(void)
|
||||
{
|
||||
gSaveBlock2Ptr->frontier.challengeStatus = gSpecialVar_0x8005;
|
||||
VarSet(VAR_TEMP_0, 0);
|
||||
@@ -184,17 +196,17 @@ static void sub_81B9C2C(void)
|
||||
SaveGameFrontier();
|
||||
}
|
||||
|
||||
static void sub_81B9C70(void)
|
||||
static void SetRandomFallarborTentPrize(void)
|
||||
{
|
||||
gSaveBlock2Ptr->frontier.field_E6C = sFallarborTentRewards[Random() % ARRAY_COUNT(sFallarborTentRewards)];
|
||||
gSaveBlock2Ptr->frontier.fallarborTentPrize = sFallarborTentRewards[Random() % ARRAY_COUNT(sFallarborTentRewards)];
|
||||
}
|
||||
|
||||
static void sub_81B9C98(void)
|
||||
static void GiveFallarborTentPrize(void)
|
||||
{
|
||||
if (AddBagItem(gSaveBlock2Ptr->frontier.field_E6C, 1) == TRUE)
|
||||
if (AddBagItem(gSaveBlock2Ptr->frontier.fallarborTentPrize, 1) == TRUE)
|
||||
{
|
||||
CopyItemName(gSaveBlock2Ptr->frontier.field_E6C, gStringVar1);
|
||||
gSaveBlock2Ptr->frontier.field_E6C = ITEM_NONE;
|
||||
CopyItemName(gSaveBlock2Ptr->frontier.fallarborTentPrize, gStringVar1);
|
||||
gSaveBlock2Ptr->frontier.fallarborTentPrize = ITEM_NONE;
|
||||
gSpecialVar_Result = TRUE;
|
||||
}
|
||||
else
|
||||
@@ -203,7 +215,7 @@ static void sub_81B9C98(void)
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_81B9CF0(void)
|
||||
static void BufferFallarborTentTrainerName(void)
|
||||
{
|
||||
GetFrontierTrainerName(gStringVar1, gTrainerBattleOpponent_A);
|
||||
}
|
||||
@@ -213,7 +225,7 @@ void CallSlateportTentFunction(void)
|
||||
sSlateportTentFuncs[gSpecialVar_0x8004]();
|
||||
}
|
||||
|
||||
static void sub_81B9D28(void)
|
||||
static void InitSlateportTentChallenge(void)
|
||||
{
|
||||
gSaveBlock2Ptr->frontier.challengeStatus = 0;
|
||||
gSaveBlock2Ptr->frontier.curChallengeBattleNum = 0;
|
||||
@@ -221,17 +233,17 @@ static void sub_81B9D28(void)
|
||||
SetDynamicWarp(0, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1);
|
||||
}
|
||||
|
||||
static void sub_81B9D7C(void)
|
||||
static void GetSlateportTentPrize(void)
|
||||
{
|
||||
gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_E6E;
|
||||
gSpecialVar_Result = gSaveBlock2Ptr->frontier.slateportTentPrize;
|
||||
}
|
||||
|
||||
static void sub_81B9D98(void)
|
||||
static void SetSlateportTentPrize(void)
|
||||
{
|
||||
gSaveBlock2Ptr->frontier.field_E6E = gSpecialVar_0x8006;
|
||||
gSaveBlock2Ptr->frontier.slateportTentPrize = gSpecialVar_0x8006;
|
||||
}
|
||||
|
||||
static void sub_81B9DB4(void)
|
||||
static void SaveSlateportTentChallenge(void)
|
||||
{
|
||||
gSaveBlock2Ptr->frontier.challengeStatus = gSpecialVar_0x8005;
|
||||
VarSet(VAR_TEMP_0, 0);
|
||||
@@ -239,17 +251,17 @@ static void sub_81B9DB4(void)
|
||||
SaveGameFrontier();
|
||||
}
|
||||
|
||||
static void sub_81B9DF8(void)
|
||||
static void SetRandomSlateportTentPrize(void)
|
||||
{
|
||||
gSaveBlock2Ptr->frontier.field_E6E = sSlateportTentRewards[Random() % ARRAY_COUNT(sSlateportTentRewards)];
|
||||
gSaveBlock2Ptr->frontier.slateportTentPrize = sSlateportTentRewards[Random() % ARRAY_COUNT(sSlateportTentRewards)];
|
||||
}
|
||||
|
||||
static void sub_81B9E20(void)
|
||||
static void GiveSlateportTentPrize(void)
|
||||
{
|
||||
if (AddBagItem(gSaveBlock2Ptr->frontier.field_E6E, 1) == TRUE)
|
||||
if (AddBagItem(gSaveBlock2Ptr->frontier.slateportTentPrize, 1) == TRUE)
|
||||
{
|
||||
CopyItemName(gSaveBlock2Ptr->frontier.field_E6E, gStringVar1);
|
||||
gSaveBlock2Ptr->frontier.field_E6E = ITEM_NONE;
|
||||
CopyItemName(gSaveBlock2Ptr->frontier.slateportTentPrize, gStringVar1);
|
||||
gSaveBlock2Ptr->frontier.slateportTentPrize = ITEM_NONE;
|
||||
gSpecialVar_Result = TRUE;
|
||||
}
|
||||
else
|
||||
@@ -258,13 +270,13 @@ static void sub_81B9E20(void)
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_81B9E78(void)
|
||||
static void SelectInitialRentalMons(void)
|
||||
{
|
||||
ZeroPlayerPartyMons();
|
||||
DoBattleFactorySelectScreen();
|
||||
}
|
||||
|
||||
static void sub_81B9E88(void)
|
||||
static void SwapRentalMons(void)
|
||||
{
|
||||
DoBattleFactorySwapScreen();
|
||||
}
|
||||
@@ -275,7 +287,7 @@ bool8 InSlateportBattleTent(void)
|
||||
&& (gMapHeader.mapLayoutId == LAYOUT_BATTLE_TENT_CORRIDOR || gMapHeader.mapLayoutId == LAYOUT_BATTLE_TENT_BATTLE_ROOM);
|
||||
}
|
||||
|
||||
static void sub_81B9EC0(void)
|
||||
static void GenerateInitialRentalMons(void)
|
||||
{
|
||||
s32 i, j;
|
||||
u8 firstMonId;
|
||||
@@ -337,13 +349,13 @@ static void sub_81B9EC0(void)
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_81BA040(void)
|
||||
static void GenerateOpponentMons(void)
|
||||
{
|
||||
u16 trainerId;
|
||||
s32 i, j, k;
|
||||
register const u16 *monSets asm("r9"); // Fix me. Compiler insists on moving that variable into stack.
|
||||
u16 species[3];
|
||||
u16 heldItems[3];
|
||||
u16 species[FRONTIER_PARTY_SIZE];
|
||||
u16 heldItems[FRONTIER_PARTY_SIZE];
|
||||
s32 setsCount = 0;
|
||||
|
||||
gFacilityTrainers = gSlateportBattleTentTrainers;
|
||||
@@ -374,7 +386,7 @@ static void sub_81BA040(void)
|
||||
|
||||
monSets = gFacilityTrainers[gTrainerBattleOpponent_A].monSets;
|
||||
i = 0;
|
||||
while (i != 3)
|
||||
while (i != FRONTIER_PARTY_SIZE)
|
||||
{
|
||||
sRandMonSetId = monSets[Random() % setsCount];
|
||||
for (j = 0; j < 6; j++)
|
||||
|
||||
@@ -42,17 +42,17 @@ EWRAM_DATA const struct BattleFrontierTrainer *gFacilityTrainers = NULL;
|
||||
EWRAM_DATA const struct FacilityMon *gFacilityTrainerMons = NULL;
|
||||
|
||||
// IWRAM common
|
||||
u16 gUnknown_03006298[4];
|
||||
u16 gUnknown_03006298[MAX_FRONTIER_PARTY_SIZE];
|
||||
|
||||
// This file's functions.
|
||||
static void sub_8161F94(void);
|
||||
static void sub_8162054(void);
|
||||
static void sub_81620F4(void);
|
||||
static void ChooseNextBattleTowerTrainer(void);
|
||||
static void sub_81621C0(void);
|
||||
static void InitTowerChallenge(void);
|
||||
static void GetTowerData(void);
|
||||
static void SetTowerData(void);
|
||||
static void SetNextFacilityOpponent(void);
|
||||
static void SetTowerBattleWon(void);
|
||||
static void AwardBattleTowerRibbons(void);
|
||||
static void SaveBattleTowerProgress(void);
|
||||
static void sub_8163914(void);
|
||||
static void SaveTowerChallenge(void);
|
||||
static void GetOpponentIntroSpeech(void);
|
||||
static void nullsub_61(void);
|
||||
static void nullsub_116(void);
|
||||
static void sub_81642A0(void);
|
||||
@@ -60,11 +60,11 @@ static void sub_8164828(void);
|
||||
static void sub_8164B74(void);
|
||||
static void sub_8164DCC(void);
|
||||
static void sub_8164DE4(void);
|
||||
static void sub_8164E04(void);
|
||||
static void SetTowerInterviewData(void);
|
||||
static void ValidateBattleTowerRecordChecksums(void);
|
||||
static void SaveCurrentWinStreak(void);
|
||||
static void ValidateApprenticesChecksums(void);
|
||||
static void sub_8165E18(void);
|
||||
static void SetNextBattleTentOpponent(void);
|
||||
static void CopyEReaderTrainerFarewellMessage(void);
|
||||
static void ClearBattleTowerRecord(struct EmeraldBattleTowerRecord *record);
|
||||
static void FillTrainerParty(u16 trainerId, u8 firstMonId, u8 monCount);
|
||||
@@ -1056,14 +1056,14 @@ struct
|
||||
|
||||
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_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] = SaveBattleTowerProgress,
|
||||
[BATTLE_TOWER_FUNC_7] = sub_8163914,
|
||||
[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,
|
||||
@@ -1071,7 +1071,7 @@ static void (* const sBattleTowerFuncs[])(void) =
|
||||
[BATTLE_TOWER_FUNC_12] = sub_8164B74,
|
||||
[BATTLE_TOWER_FUNC_13] = sub_8164DCC,
|
||||
[BATTLE_TOWER_FUNC_14] = sub_8164DE4,
|
||||
[BATTLE_TOWER_FUNC_15] = sub_8164E04,
|
||||
[BATTLE_TOWER_FUNC_SET_INTERVIEW_DATA] = SetTowerInterviewData,
|
||||
};
|
||||
|
||||
static const u32 sWinStreakFlags[][2] =
|
||||
@@ -1154,7 +1154,7 @@ void CallBattleTowerFunc(void)
|
||||
sBattleTowerFuncs[gSpecialVar_0x8004]();
|
||||
}
|
||||
|
||||
static void sub_8161F94(void)
|
||||
static void InitTowerChallenge(void)
|
||||
{
|
||||
u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
|
||||
u32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
|
||||
@@ -1172,7 +1172,7 @@ static void sub_8161F94(void)
|
||||
gTrainerBattleOpponent_A = 0;
|
||||
}
|
||||
|
||||
static void sub_8162054(void)
|
||||
static void GetTowerData(void)
|
||||
{
|
||||
u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
|
||||
u32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
|
||||
@@ -1181,19 +1181,19 @@ static void sub_8162054(void)
|
||||
{
|
||||
case 0:
|
||||
break;
|
||||
case 1:
|
||||
case TOWER_DATA_WIN_STREAK:
|
||||
gSpecialVar_Result = GetCurrentBattleTowerWinStreak(lvlMode, battleMode);
|
||||
break;
|
||||
case 2:
|
||||
case TOWER_DATA_WIN_STREAK_ACTIVE:
|
||||
gSpecialVar_Result = ((gSaveBlock2Ptr->frontier.winStreakActiveFlags & sWinStreakFlags[battleMode][lvlMode]) != 0);
|
||||
break;
|
||||
case 3:
|
||||
case TOWER_DATA_LVL_MODE:
|
||||
gSaveBlock2Ptr->frontier.towerLvlMode = gSaveBlock2Ptr->frontier.lvlMode;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_81620F4(void)
|
||||
static void SetTowerData(void)
|
||||
{
|
||||
u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
|
||||
u32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
|
||||
@@ -1202,27 +1202,27 @@ static void sub_81620F4(void)
|
||||
{
|
||||
case 0:
|
||||
break;
|
||||
case 1:
|
||||
case TOWER_DATA_WIN_STREAK:
|
||||
gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode] = gSpecialVar_0x8006;
|
||||
break;
|
||||
case 2:
|
||||
case TOWER_DATA_WIN_STREAK_ACTIVE:
|
||||
if (gSpecialVar_0x8006)
|
||||
gSaveBlock2Ptr->frontier.winStreakActiveFlags |= sWinStreakFlags[battleMode][lvlMode];
|
||||
else
|
||||
gSaveBlock2Ptr->frontier.winStreakActiveFlags &= sWinStreakMasks[battleMode][lvlMode];
|
||||
break;
|
||||
case 3:
|
||||
case TOWER_DATA_LVL_MODE:
|
||||
gSaveBlock2Ptr->frontier.towerLvlMode = gSaveBlock2Ptr->frontier.lvlMode;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_81621C0(void)
|
||||
static void SetTowerBattleWon(void)
|
||||
{
|
||||
if (gTrainerBattleOpponent_A == TRAINER_EREADER)
|
||||
ClearEReaderTrainer(&gSaveBlock2Ptr->frontier.ereaderTrainer);
|
||||
|
||||
// below field is never read outside this conditional
|
||||
// towerNumWins is never read outside this conditional
|
||||
if (gSaveBlock2Ptr->frontier.towerNumWins < MAX_STREAK)
|
||||
gSaveBlock2Ptr->frontier.towerNumWins++;
|
||||
|
||||
@@ -1299,12 +1299,12 @@ static bool8 ChooseSpecialBattleTowerTrainer(void)
|
||||
}
|
||||
}
|
||||
|
||||
static void ChooseNextBattleTowerTrainer(void)
|
||||
static void SetNextFacilityOpponent(void)
|
||||
{
|
||||
u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
|
||||
if (lvlMode == FRONTIER_LVL_TENT)
|
||||
{
|
||||
sub_8165E18();
|
||||
SetNextBattleTentOpponent();
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -2096,7 +2096,7 @@ static void FillFactoryFrontierTrainerParty(u16 trainerId, u8 firstMonId)
|
||||
|
||||
level = SetFacilityPtrsGetLevel();
|
||||
otID = T1_READ_32(gSaveBlock2Ptr->playerTrainerId);
|
||||
for (i = 0; i < 3; i++)
|
||||
for (i = 0; i < FRONTIER_PARTY_SIZE; i++)
|
||||
{
|
||||
u16 monSetId = gUnknown_03006298[i];
|
||||
CreateMonWithEVSpreadNatureOTID(&gEnemyParty[firstMonId + i],
|
||||
@@ -2124,7 +2124,7 @@ static void FillFactoryTentTrainerParty(u16 trainerId, u8 firstMonId)
|
||||
u8 fixedIV = 0;
|
||||
u32 otID = T1_READ_32(gSaveBlock2Ptr->playerTrainerId);
|
||||
|
||||
for (i = 0; i < 3; i++)
|
||||
for (i = 0; i < FRONTIER_PARTY_SIZE; i++)
|
||||
{
|
||||
u16 monSetId = gUnknown_03006298[i];
|
||||
CreateMonWithEVSpreadNatureOTID(&gEnemyParty[firstMonId + i],
|
||||
@@ -2165,7 +2165,7 @@ void FrontierSpeechToString(const u16 *words)
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_8163914(void)
|
||||
static void GetOpponentIntroSpeech(void)
|
||||
{
|
||||
u16 trainerId;
|
||||
SetFacilityPtrsGetLevel();
|
||||
@@ -2423,7 +2423,7 @@ static void sub_8163EE4(void)
|
||||
SaveCurrentWinStreak();
|
||||
}
|
||||
|
||||
static void SaveBattleTowerProgress(void)
|
||||
static void SaveTowerChallenge(void)
|
||||
{
|
||||
u16 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
|
||||
u16 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
|
||||
@@ -2889,7 +2889,7 @@ static void sub_8164DE4(void)
|
||||
SetBattleFacilityTrainerGfxId(gSaveBlock2Ptr->frontier.trainerIds[17], 0xF);
|
||||
}
|
||||
|
||||
static void sub_8164E04(void)
|
||||
static void SetTowerInterviewData(void)
|
||||
{
|
||||
s32 i;
|
||||
u8 text[32];
|
||||
@@ -3562,7 +3562,7 @@ static u8 SetTentPtrsGetLevel(void)
|
||||
return level;
|
||||
}
|
||||
|
||||
static void sub_8165E18(void)
|
||||
static void SetNextBattleTentOpponent(void)
|
||||
{
|
||||
s32 i;
|
||||
u16 trainerId;
|
||||
|
||||
@@ -377,7 +377,7 @@ const u8 gItemEffect_QualotBerry[10] = {
|
||||
[9] = 2,
|
||||
};
|
||||
|
||||
const u8 gItemEffect_HondrewBerry[10] = {
|
||||
const u8 gItemEffect_HondewBerry[10] = {
|
||||
[5] = ITEM5_EV_SPATK | ITEM5_FRIENDSHIP_ALL,
|
||||
[6] = -10,
|
||||
[7] = 10,
|
||||
@@ -469,7 +469,7 @@ const u8 *const gItemEffectTable[] =
|
||||
[ITEM_POMEG_BERRY - ITEM_POTION] = gItemEffect_PomegBerry,
|
||||
[ITEM_KELPSY_BERRY - ITEM_POTION] = gItemEffect_KelpsyBerry,
|
||||
[ITEM_QUALOT_BERRY - ITEM_POTION] = gItemEffect_QualotBerry,
|
||||
[ITEM_HONDEW_BERRY - ITEM_POTION] = gItemEffect_HondrewBerry,
|
||||
[ITEM_HONDEW_BERRY - ITEM_POTION] = gItemEffect_HondewBerry,
|
||||
[ITEM_GREPA_BERRY - ITEM_POTION] = gItemEffect_GrepaBerry,
|
||||
[ITEM_TAMATO_BERRY - ITEM_POTION] = gItemEffect_TamatoBerry,
|
||||
[LAST_BERRY_INDEX - ITEM_POTION] = NULL
|
||||
|
||||
@@ -89,7 +89,7 @@ EWRAM_DATA static void(*gUnknown_0203A0F4)(u8 taskId) = NULL;
|
||||
|
||||
// .rodata
|
||||
|
||||
static const MainCallback gUnknown_085920D8[] =
|
||||
static const MainCallback sItemUseCallbacks[] =
|
||||
{
|
||||
CB2_ShowPartyMenuForItemUse,
|
||||
CB2_ReturnToField,
|
||||
@@ -115,12 +115,12 @@ void SetUpItemUseCallback(u8 taskId)
|
||||
type = ItemId_GetType(gSpecialVar_ItemId) - 1;
|
||||
if (!InBattlePyramid())
|
||||
{
|
||||
gBagMenu->mainCallback2 = gUnknown_085920D8[type];
|
||||
gBagMenu->mainCallback2 = sItemUseCallbacks[type];
|
||||
unknown_ItemMenu_Confirm(taskId);
|
||||
}
|
||||
else
|
||||
{
|
||||
gPyramidBagResources->callback2 = gUnknown_085920D8[type];
|
||||
gPyramidBagResources->callback2 = sItemUseCallbacks[type];
|
||||
sub_81C5B14(taskId);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user