mirror of
https://github.com/pret/pokeemerald.git
synced 2024-11-27 07:10:30 +00:00
Begin new contest documentation
This commit is contained in:
parent
617e411aca
commit
52a4428ba6
@ -48,7 +48,7 @@ gContestAIChecks:: @ 82DE350
|
||||
|
||||
@ Unreferenced AI routine to encourage moves that improve condition on the first
|
||||
@ turn. Additionally, it checks the appeal order of the user and the effect
|
||||
@ type, but the code is buggy and doesn't affect the score.
|
||||
@ type, but the code is buggy and doesnt affect the score.
|
||||
if_turn_not_eq 0, ContestUnreferenced_80
|
||||
if_effect_not_eq CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, ContestUnreferenced_80
|
||||
score +10
|
||||
@ -63,7 +63,7 @@ ContestUnreferenced_0D:
|
||||
ContestUnreferenced_end:
|
||||
end
|
||||
|
||||
@ Unreferenced AI routine that doesn't make much sense.
|
||||
@ Unreferenced AI routine that doesnt make much sense.
|
||||
if_turn_eq 0, ContestUnreferenced_0F_1
|
||||
if_turn_eq 1, ContestUnreferenced_0F_2
|
||||
if_turn_eq 2, ContestUnreferenced_0F_3
|
||||
@ -122,25 +122,26 @@ ContestUnreferenced_score2:
|
||||
end
|
||||
|
||||
AI_CheckBoring:
|
||||
if_effect_eq CONTEST_EFFECT_REPETITION_NOT_BORING, AI_end_081DC27F
|
||||
if_move_used_count_eq 1, AI_score1_081DC27F
|
||||
if_move_used_count_eq 2, AI_score2_081DC27F
|
||||
if_move_used_count_eq 3, AI_score3_081DC27F
|
||||
if_move_used_count_eq 4, AI_score4_081DC27F
|
||||
if_effect_eq CONTEST_EFFECT_REPETITION_NOT_BORING, AI_CheckBoring_NotBoring
|
||||
if_move_used_count_eq 1, AI_CheckBoring_FirstRepeat
|
||||
if_move_used_count_eq 2, AI_CheckBoring_SecondRepeat
|
||||
if_move_used_count_eq 3, AI_CheckBoring_ThirdRepeat
|
||||
if_move_used_count_eq 4, AI_CheckBoring_FourthRepeat
|
||||
@ No repeats
|
||||
end
|
||||
AI_score1_081DC27F:
|
||||
AI_CheckBoring_FirstRepeat:
|
||||
score -5
|
||||
end
|
||||
AI_score2_081DC27F:
|
||||
AI_CheckBoring_SecondRepeat:
|
||||
score -15
|
||||
end
|
||||
AI_score3_081DC27F:
|
||||
AI_CheckBoring_ThirdRepeat:
|
||||
score -20
|
||||
end
|
||||
AI_score4_081DC27F:
|
||||
AI_CheckBoring_FourthRepeat:
|
||||
score -25
|
||||
end
|
||||
AI_end_081DC27F:
|
||||
AI_CheckBoring_NotBoring:
|
||||
end
|
||||
|
||||
AI_CheckExcitement:
|
||||
|
Before Width: | Height: | Size: 873 B After Width: | Height: | Size: 873 B |
@ -1,7 +1,6 @@
|
||||
#ifndef GUARD_CONSTANTS_CONTEST_H
|
||||
#define GUARD_CONSTANTS_CONTEST_H
|
||||
|
||||
#define CONTESTANT_COUNT 4
|
||||
#define APPLAUSE_METER_SIZE 5
|
||||
#define CONTEST_TURN_COUNT 5
|
||||
|
||||
@ -22,13 +21,6 @@
|
||||
#define CONTEST_TYPE_NPC_MASTER (CONTEST_RANK_MASTER + 1)
|
||||
#define CONTEST_TYPE_LINK (CONTEST_RANK_LINK + 1)
|
||||
|
||||
#define CONTEST_CATEGORY_COOL 0
|
||||
#define CONTEST_CATEGORY_BEAUTY 1
|
||||
#define CONTEST_CATEGORY_CUTE 2
|
||||
#define CONTEST_CATEGORY_SMART 3
|
||||
#define CONTEST_CATEGORY_TOUGH 4
|
||||
#define CONTEST_CATEGORIES_COUNT 5
|
||||
|
||||
#define CONTEST_WINNER_ARTIST 0 // Winner shown by the artist, painting not necessarily saved
|
||||
#define CONTEST_WINNER_HALL_1 1
|
||||
#define CONTEST_WINNER_HALL_2 2
|
||||
|
@ -62,6 +62,14 @@
|
||||
#define MAX_MON_MOVES 4
|
||||
#define NUM_STATS 6
|
||||
|
||||
#define CONTESTANT_COUNT 4
|
||||
#define CONTEST_CATEGORY_COOL 0
|
||||
#define CONTEST_CATEGORY_BEAUTY 1
|
||||
#define CONTEST_CATEGORY_CUTE 2
|
||||
#define CONTEST_CATEGORY_SMART 3
|
||||
#define CONTEST_CATEGORY_TOUGH 4
|
||||
#define CONTEST_CATEGORIES_COUNT 5
|
||||
|
||||
// party sizes
|
||||
#define PARTY_SIZE 6
|
||||
#define MULTI_PARTY_SIZE PARTY_SIZE / 2
|
||||
|
@ -226,7 +226,9 @@ struct ContestPokemon
|
||||
/*0x29*/ u8 smart; // smart
|
||||
/*0x2A*/ u8 tough; // tough
|
||||
/*0x2B*/ u8 sheen; // sheen
|
||||
/*0x2C*/ u8 unk2C[12];
|
||||
u8 highestRank;
|
||||
bool8 gameCleared;
|
||||
/*0x2C*/ u8 unk2C[10];
|
||||
/*0x38*/ u32 personality; // personality
|
||||
/*0x3C*/ u32 otId; // otId
|
||||
};
|
||||
@ -252,85 +254,85 @@ struct ContestStruct_field_18
|
||||
|
||||
struct Contest
|
||||
{
|
||||
/*0x0*/ u8 playerMoveChoice;
|
||||
/*0x1*/ u8 turnNumber;
|
||||
/*0x2*/ u8 unused2[CONTESTANT_COUNT];
|
||||
/*0x6*/ u16 unk1920A_0:1; // Task active flags?
|
||||
u16 unk1920A_1:1;
|
||||
u16 unk1920A_2:1;
|
||||
u16 unk1920A_3:1;
|
||||
u16 unk1920A_4:1;
|
||||
u16 isShowingApplauseMeter:1;
|
||||
u16 applauseMeterIsMoving:1;
|
||||
u16 unk1920A_7:1;
|
||||
/*0x7*/ u16 unk1920B_0:1;
|
||||
u16 unk1920B_1:1;
|
||||
u16 unk1920B_2:1;
|
||||
/*0x8*/ u8 mainTaskId;
|
||||
/*0x9*/ u8 unk1920D[4];
|
||||
/*0xD*/ u8 unk19211;
|
||||
/*0xE*/ u8 unk19212;
|
||||
/*0xF*/ u8 filler19213;
|
||||
/*0x10*/ u8 unk19214;
|
||||
/*0x11*/ u8 unk19215;
|
||||
/*0x12*/ u8 unk19216; // sprite ID
|
||||
/*0x13*/ s8 applauseLevel;
|
||||
/*0x19218*/ u8 prevTurnOrder[CONTESTANT_COUNT];
|
||||
/*0x1921C*/ u32 unk1921C; // saved RNG value?
|
||||
u8 playerMoveChoice;
|
||||
u8 turnNumber;
|
||||
u8 unused2[CONTESTANT_COUNT];
|
||||
bool16 unk1920A_0:1; // Task active flags?
|
||||
bool16 unk1920A_1:1;
|
||||
bool16 unk1920A_2:1;
|
||||
bool16 unk1920A_3:1;
|
||||
bool16 unk1920A_4:1;
|
||||
bool16 isShowingApplauseMeter:1;
|
||||
bool16 applauseMeterIsMoving:1;
|
||||
bool16 unk1920A_7:1;
|
||||
bool16 unk1920B_0:1;
|
||||
bool16 sliderHeartsAnimating:1; // When the slider heart is appearing/disappearing
|
||||
bool16 unk1920B_2:1;
|
||||
u8 mainTaskId;
|
||||
u8 unk1920D[4];
|
||||
u8 unk19211;
|
||||
u8 unk19212;
|
||||
u8 filler19213;
|
||||
u8 unk19214;
|
||||
u8 unk19215;
|
||||
u8 unk19216; // sprite ID
|
||||
s8 applauseLevel;
|
||||
u8 prevTurnOrder[CONTESTANT_COUNT];
|
||||
u32 unk1921C; // saved RNG value?
|
||||
u16 moveHistory[CONTEST_TURN_COUNT][CONTESTANT_COUNT];
|
||||
u8 excitementHistory[CONTEST_TURN_COUNT][CONTESTANT_COUNT];
|
||||
u8 applauseMeterSpriteId;
|
||||
/*0x1925D*/ u8 contestSetupState;
|
||||
/*0x1925E*/ u8 unk1925E;
|
||||
u8 contestSetupState;
|
||||
u8 unk1925E;
|
||||
};
|
||||
|
||||
struct ContestantStatus
|
||||
{
|
||||
/*0x00*/ s16 appeal1; // move appeal?
|
||||
/*0x02*/ s16 appeal2; // final appeal after end of turn, maybe?
|
||||
/*0x04*/ s16 pointTotal;
|
||||
/*0x06*/ u16 currMove;
|
||||
/*0x08*/ u16 prevMove;
|
||||
/*0x0A*/ u8 moveCategory;
|
||||
/*0x0B*/ u8 ranking:2;
|
||||
s16 appeal1; // move appeal?
|
||||
s16 appeal2; // final appeal after end of turn, maybe?
|
||||
s16 pointTotal;
|
||||
u16 currMove;
|
||||
u16 prevMove;
|
||||
u8 moveCategory;
|
||||
u8 ranking:2;
|
||||
u8 unkB_2:2;
|
||||
u8 moveRepeatCount:3;
|
||||
u8 noMoreTurns:1; // used a one-time move?
|
||||
/*0x0C*/ u8 nervous:1;
|
||||
bool8 noMoreTurns:1; // used a one-time move?
|
||||
bool8 nervous:1;
|
||||
u8 numTurnsSkipped:2;
|
||||
/*0x0D*/ s8 condition;
|
||||
/*0x0E*/ u8 jam;
|
||||
/*0x0F*/ u8 jamReduction;
|
||||
s8 condition;
|
||||
u8 jam;
|
||||
u8 jamReduction;
|
||||
|
||||
// Flags set by move effect
|
||||
/*0x10*/ u8 resistant:1;
|
||||
u8 immune:1;
|
||||
u8 moreEasilyStartled:1;
|
||||
u8 usedRepeatableMove:1;
|
||||
bool8 resistant:1;
|
||||
bool8 immune:1;
|
||||
bool8 moreEasilyStartled:1;
|
||||
bool8 usedRepeatableMove:1;
|
||||
u8 conditionMod:2; // 1: just raised condition; 2: appeal greatly improved by condition
|
||||
u8 turnOrderMod:2; // 1: defined; 2: random
|
||||
/*0x11*/ u8 turnOrderModAction:2; // 1: made first; 2: made last; 3: made random
|
||||
u8 turnSkipped:1;
|
||||
u8 exploded:1;
|
||||
u8 overrideCategoryExcitementMod:1;
|
||||
u8 appealTripleCondition:1;
|
||||
u8 turnOrderModAction:2; // 1: made first; 2: made last; 3: made random
|
||||
bool8 turnSkipped:1;
|
||||
bool8 exploded:1;
|
||||
bool8 overrideCategoryExcitementMod:1;
|
||||
bool8 appealTripleCondition:1;
|
||||
|
||||
/*0x12*/ u8 jamSafetyCount;
|
||||
/*0x13*/ u8 effectStringId; // status action?
|
||||
/*0x14*/ u8 effectStringId2;
|
||||
/*0x15*/ u8 disappointedRepeat:1;
|
||||
u8 unk15_1:1;
|
||||
u8 unk15_2:1;
|
||||
u8 unk15_3:1;
|
||||
u8 hasJudgesAttention:1;
|
||||
u8 judgesAttentionWasRemoved:1;
|
||||
u8 unk15_6:1;
|
||||
/*0x16*/ u8 unk16;
|
||||
/*0x17*/ u8 unk17;
|
||||
/*0x18*/ u8 unk18;
|
||||
/*0x19*/ u8 nextTurnOrder; // turn position
|
||||
/*0x1A*/ u8 attentionLevel; // How much the Pokemon "stood out"
|
||||
/*0x1B*/ u8 unk1B;
|
||||
u8 jamSafetyCount;
|
||||
u8 effectStringId; // status action?
|
||||
u8 effectStringId2;
|
||||
bool8 repeatedMove:1;
|
||||
bool8 unused:1;
|
||||
bool8 repeatedPrevMove:1; // never read
|
||||
bool8 unk15_3:1;
|
||||
bool8 hasJudgesAttention:1;
|
||||
bool8 judgesAttentionWasRemoved:1;
|
||||
bool8 unk15_6:1;
|
||||
u8 unk16;
|
||||
u8 unk17;
|
||||
u8 unk18;
|
||||
u8 nextTurnOrder; // turn position
|
||||
u8 attentionLevel; // How much the Pokemon "stood out"
|
||||
u8 unk1B;
|
||||
};
|
||||
|
||||
struct UnknownContestStruct7
|
||||
@ -348,9 +350,9 @@ struct ContestAIInfo
|
||||
/*0x00*/ u8 aiState;
|
||||
/*0x02*/ u16 nextMove;
|
||||
/*0x04*/ u8 nextMoveIndex;
|
||||
/*0x05*/ u8 unk5[4];
|
||||
/*0x05*/ u8 moveScores[MAX_MON_MOVES];
|
||||
/*0x09*/ u8 aiAction;
|
||||
/*0x0A*/ u8 fillerA[0x6]; // TODO: don't know what's here
|
||||
/*0x0A*/ u8 filler[6];
|
||||
/*0x10*/ u8 currentAICheck;
|
||||
/*0x14*/ u32 aiChecks;
|
||||
/*0x18*/ s16 scriptResult;
|
||||
@ -370,9 +372,9 @@ struct UnknownContestStruct5
|
||||
|
||||
struct UnknownContestStruct4
|
||||
{
|
||||
u8 unk0; // sprite ID
|
||||
u8 unk1; // sprite ID
|
||||
u8 unk2_0:1;
|
||||
u8 sliderHeartSpriteId;
|
||||
u8 nextTurnSpriteId;
|
||||
u8 sliderUpdating:1;
|
||||
u8 unk2_1:1;
|
||||
u8 unk2_2:1;
|
||||
};
|
||||
@ -454,7 +456,7 @@ extern u32 gContestRngValue;
|
||||
void ResetLinkContestBoolean(void);
|
||||
void LoadContestBgAfterMoveAnim(void);
|
||||
void CB2_StartContest(void);
|
||||
void sub_80DA8C8(u8 partyIndex);
|
||||
void CreateContestMonFromParty(u8 partyIndex);
|
||||
void sub_80DAB8C(u8 contestType, u8 rank);
|
||||
void sub_80DACBC(u8 contestType, u8 rank, bool32 isPostgame);
|
||||
u8 GetContestEntryEligibility(struct Pokemon *pkmn);
|
||||
@ -474,18 +476,6 @@ void ResetContestLinkResults(void);
|
||||
bool8 sub_80DEDA8(u8 a);
|
||||
u8 sub_80DEFA8(u8 a, u8 b);
|
||||
void ClearContestWinnerPicsInContestHall(void);
|
||||
void sub_80DFA08(struct ContestPokemon *mon, s32 language);
|
||||
|
||||
// contest link
|
||||
void sub_81D9DE4(u8 taskId);
|
||||
void sub_80FCF40(u8);
|
||||
void sub_80FCFD0(u8);
|
||||
void sub_80F8714(u8);
|
||||
bool32 sub_80FC670(s16 *);
|
||||
bool32 sub_80FC4F4(void *, u16);
|
||||
bool8 sub_80FC55C(void);
|
||||
bool8 sub_80FC530(u8);
|
||||
u8 sub_80F86E0(u8 *);
|
||||
void sub_80FC9F8(u8 taskId);
|
||||
void StripPlayerAndMonNamesForLinkContest(struct ContestPokemon *mon, s32 language);
|
||||
|
||||
#endif //GUARD_CONTEST_H
|
||||
|
@ -9,5 +9,16 @@ void sub_80FC6BC(u8);
|
||||
void sub_80FC804(u8);
|
||||
void sub_80FCE48(u8);
|
||||
void sub_80FC894(u8);
|
||||
void Task_LinkContest_CommunicateMonIdxs(u8 taskId);
|
||||
void sub_81D9DE4(u8 taskId);
|
||||
void sub_80FCF40(u8);
|
||||
void sub_80FCFD0(u8);
|
||||
void sub_80F8714(u8);
|
||||
bool32 sub_80FC670(s16 *);
|
||||
bool32 LinkContest_SendBlock(void *, u16);
|
||||
bool8 LinkContest_GetBlockReceivedFromAllPlayers(void);
|
||||
bool8 LinkContest_GetBlockReceived(u8);
|
||||
u8 sub_80F86E0(u8 *);
|
||||
void Task_LinkContest_CommunicateMoveSelections(u8 taskId);
|
||||
|
||||
#endif //GUARD_CONTEST_LINK_H
|
||||
|
@ -7,6 +7,5 @@ void StartContest(void);
|
||||
void BufferContestantMonSpecies(void);
|
||||
void ShowContestResults(void);
|
||||
void ContestLinkTransfer(u8);
|
||||
void sub_80FC998(u8 taskId);
|
||||
|
||||
#endif // GUARD_CONTEST_UTIL_H
|
||||
|
@ -474,7 +474,7 @@ struct SaveBlock2
|
||||
/*0x20C*/ struct BerryPickingResults berryPick;
|
||||
/*0x21C*/ struct RankingHall1P hallRecords1P[HALL_FACILITIES_COUNT][2][3]; // From record mixing.
|
||||
/*0x57C*/ struct RankingHall2P hallRecords2P[2][3]; // From record mixing.
|
||||
/*0x624*/ u16 contestLinkResults[5][4]; // 4 positions for 5 categories.
|
||||
/*0x624*/ u16 contestLinkResults[CONTEST_CATEGORIES_COUNT][CONTESTANT_COUNT];
|
||||
/*0x64C*/ struct BattleFrontier frontier;
|
||||
}; // sizeof=0xF2C
|
||||
|
||||
@ -483,7 +483,7 @@ extern struct SaveBlock2 *gSaveBlock2Ptr;
|
||||
struct SecretBaseParty
|
||||
{
|
||||
u32 personality[PARTY_SIZE];
|
||||
u16 moves[PARTY_SIZE * 4];
|
||||
u16 moves[PARTY_SIZE * MAX_MON_MOVES];
|
||||
u16 species[PARTY_SIZE];
|
||||
u16 heldItems[PARTY_SIZE];
|
||||
u8 levels[PARTY_SIZE];
|
||||
|
@ -4786,10 +4786,10 @@ extern const u32 gOldContestGfx[];
|
||||
extern const u32 gOldContestPalette[];
|
||||
extern const u32 gUnknown_08C17170[];
|
||||
extern const u32 gUnknown_08C17980[];
|
||||
extern const u32 gTiles_8C19450[];
|
||||
extern const u32 gContestSliderHeart_Gfx[];
|
||||
extern const u32 gContestNextTurnGfx[];
|
||||
extern const u16 gContestPal[];
|
||||
extern const u32 gUnknown_08C19168[];
|
||||
extern const u32 gContestFaces_Gfx[];
|
||||
extern const u32 gContestApplauseGfx[];
|
||||
extern const u32 gContestJudgeGfx[];
|
||||
extern const u32 gContestJudgeSymbolsGfx[];
|
||||
|
622
src/contest.c
622
src/contest.c
File diff suppressed because it is too large
Load Diff
@ -4,6 +4,7 @@
|
||||
#include "random.h"
|
||||
#include "contest_ai.h"
|
||||
#include "contest_effect.h"
|
||||
#include "constants/moves.h"
|
||||
|
||||
extern const u8 *gAIScriptPtr;
|
||||
extern const u8 *gContestAIChecks[];
|
||||
@ -288,7 +289,7 @@ static const ContestAICmdFunc sContestAICmdTable[] =
|
||||
};
|
||||
|
||||
static void ContestAI_DoAIProcessing(void);
|
||||
static bool8 sub_81563B0(u8);
|
||||
static bool8 GetContestantIdByTurn(u8);
|
||||
static void AIStackPushVar(const u8 *);
|
||||
static u8 AIStackPop(void);
|
||||
|
||||
@ -297,8 +298,8 @@ void ContestAI_ResetAI(u8 contestantAI)
|
||||
int i;
|
||||
memset(&eContestAI, 0, sizeof(struct ContestAIInfo));
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
eContestAI.unk5[i] = 100;
|
||||
for (i = 0; i < MAX_MON_MOVES; i++)
|
||||
eContestAI.moveScores[i] = 100;
|
||||
|
||||
eContestAI.contestantId = contestantAI;
|
||||
eContestAI.stackSize = 0;
|
||||
@ -321,16 +322,18 @@ u8 ContestAI_GetActionToUse(void)
|
||||
|
||||
while (1)
|
||||
{
|
||||
u8 rval = Random() & 3;
|
||||
u8 r2 = eContestAI.unk5[rval];
|
||||
// Randomly choose a move index. If it's the move
|
||||
// with the highest (or tied highest) score, return
|
||||
u8 moveIdx = Random() & (MAX_MON_MOVES - 1); // % 4 doesn't match
|
||||
u8 score = eContestAI.moveScores[moveIdx];
|
||||
int i;
|
||||
for (i = 0; i < 4; i++)
|
||||
for (i = 0; i < MAX_MON_MOVES; i++)
|
||||
{
|
||||
if (r2 < eContestAI.unk5[i])
|
||||
if (score < eContestAI.moveScores[i])
|
||||
break;
|
||||
}
|
||||
if (i == 4)
|
||||
return rval;
|
||||
if (i == MAX_MON_MOVES)
|
||||
return moveIdx;
|
||||
}
|
||||
}
|
||||
|
||||
@ -345,26 +348,26 @@ static void ContestAI_DoAIProcessing(void)
|
||||
case CONTESTAI_SETTING_UP:
|
||||
gAIScriptPtr = gContestAIChecks[eContestAI.currentAICheck];
|
||||
|
||||
if (gContestMons[eContestAI.contestantId].moves[eContestAI.nextMoveIndex] == 0)
|
||||
eContestAI.nextMove = 0; // don't process a move that doesn't exist.
|
||||
if (gContestMons[eContestAI.contestantId].moves[eContestAI.nextMoveIndex] == MOVE_NONE)
|
||||
eContestAI.nextMove = MOVE_NONE; // don't process a move that doesn't exist.
|
||||
else
|
||||
eContestAI.nextMove = gContestMons[eContestAI.contestantId].moves[eContestAI.nextMoveIndex];
|
||||
eContestAI.aiState++;
|
||||
break;
|
||||
case CONTESTAI_PROCESSING:
|
||||
if (eContestAI.nextMove != 0)
|
||||
if (eContestAI.nextMove != MOVE_NONE)
|
||||
{
|
||||
sContestAICmdTable[*gAIScriptPtr](); // run the command.
|
||||
}
|
||||
else
|
||||
{
|
||||
eContestAI.unk5[eContestAI.nextMoveIndex] = 0; // don't consider a move that doesn't exist.
|
||||
eContestAI.moveScores[eContestAI.nextMoveIndex] = 0; // don't consider a move that doesn't exist.
|
||||
eContestAI.aiAction |= 1;
|
||||
}
|
||||
if (eContestAI.aiAction & 1)
|
||||
{
|
||||
eContestAI.nextMoveIndex++;
|
||||
if (eContestAI.nextMoveIndex < 4)
|
||||
if (eContestAI.nextMoveIndex < MAX_MON_MOVES)
|
||||
eContestAI.aiState = 0;
|
||||
else
|
||||
// aiState = CONTESTAI_FINISHED
|
||||
@ -376,12 +379,12 @@ static void ContestAI_DoAIProcessing(void)
|
||||
}
|
||||
}
|
||||
|
||||
static u8 sub_81563B0(u8 var)
|
||||
static u8 GetContestantIdByTurn(u8 turn)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
if (eContestResources8.turnOrder[i] == var)
|
||||
for (i = 0; i < CONTESTANT_COUNT; i++)
|
||||
if (eContestResources8.turnOrder[i] == turn)
|
||||
break;
|
||||
|
||||
return i;
|
||||
@ -389,14 +392,14 @@ static u8 sub_81563B0(u8 var)
|
||||
|
||||
static void ContestAICmd_score(void)
|
||||
{
|
||||
s16 score = eContestAI.unk5[eContestAI.nextMoveIndex] + (s8)gAIScriptPtr[1];
|
||||
s16 score = eContestAI.moveScores[eContestAI.nextMoveIndex] + (s8)gAIScriptPtr[1];
|
||||
|
||||
if (score > 255)
|
||||
score = 255;
|
||||
else if (score < 0)
|
||||
score = 0;
|
||||
|
||||
eContestAI.unk5[eContestAI.nextMoveIndex] = score;
|
||||
eContestAI.moveScores[eContestAI.nextMoveIndex] = score;
|
||||
|
||||
gAIScriptPtr += 2;
|
||||
}
|
||||
@ -1146,9 +1149,9 @@ static void ContestAICmd_if_would_not_finish_combo(void)
|
||||
|
||||
static void ContestAICmd_get_condition(void)
|
||||
{
|
||||
int var = sub_81563B0(gAIScriptPtr[1]);
|
||||
u8 contestant = GetContestantIdByTurn(gAIScriptPtr[1]);
|
||||
|
||||
eContestAI.scriptResult = eContestantStatus[var].condition / 10;
|
||||
eContestAI.scriptResult = eContestantStatus[contestant].condition / 10;
|
||||
gAIScriptPtr += 2;
|
||||
}
|
||||
|
||||
@ -1194,11 +1197,11 @@ static void ContestAICmd_if_condition_not_eq(void)
|
||||
|
||||
static void ContestAICmd_get_used_combo_starter(void)
|
||||
{
|
||||
u16 result = 0;
|
||||
u8 var = sub_81563B0(gAIScriptPtr[1]);
|
||||
u16 result = FALSE;
|
||||
u8 contestant = GetContestantIdByTurn(gAIScriptPtr[1]);
|
||||
|
||||
if (sub_80DE1E8(var))
|
||||
result = gContestMoves[eContestantStatus[var].prevMove].comboStarterId ? 1 : 0;
|
||||
if (sub_80DE1E8(contestant))
|
||||
result = gContestMoves[eContestantStatus[contestant].prevMove].comboStarterId ? TRUE : FALSE;
|
||||
|
||||
eContestAI.scriptResult = result;
|
||||
gAIScriptPtr += 2;
|
||||
@ -1246,7 +1249,7 @@ static void ContestAICmd_if_used_combo_starter_not_eq(void)
|
||||
|
||||
static void ContestAICmd_check_can_participate(void)
|
||||
{
|
||||
if (Contest_IsMonsTurnDisabled(sub_81563B0(gAIScriptPtr[1])))
|
||||
if (Contest_IsMonsTurnDisabled(GetContestantIdByTurn(gAIScriptPtr[1])))
|
||||
eContestAI.scriptResult = FALSE;
|
||||
else
|
||||
eContestAI.scriptResult = TRUE;
|
||||
@ -1276,9 +1279,9 @@ static void ContestAICmd_if_cannot_participate(void)
|
||||
|
||||
static void ContestAICmd_get_val_812A188(void)
|
||||
{
|
||||
u8 var = sub_81563B0(gAIScriptPtr[1]);
|
||||
u8 contestant = GetContestantIdByTurn(gAIScriptPtr[1]);
|
||||
|
||||
eContestAI.scriptResult = eContestantStatus[var].unk15_3;
|
||||
eContestAI.scriptResult = eContestantStatus[contestant].unk15_3;
|
||||
gAIScriptPtr += 2;
|
||||
}
|
||||
|
||||
@ -1304,9 +1307,9 @@ static void ContestAICmd_contest_58(void)
|
||||
|
||||
static void ContestAICmd_unk_59(void)
|
||||
{
|
||||
u8 var = sub_81563B0(gAIScriptPtr[1]);
|
||||
u8 contestant = GetContestantIdByTurn(gAIScriptPtr[1]);
|
||||
|
||||
eContestAI.scriptResult = eContestantStatus[var].pointTotal - eContestantStatus[eContestAI.contestantId].pointTotal;
|
||||
eContestAI.scriptResult = eContestantStatus[contestant].pointTotal - eContestantStatus[eContestAI.contestantId].pointTotal;
|
||||
gAIScriptPtr += 2;
|
||||
}
|
||||
|
||||
@ -1352,9 +1355,9 @@ static void ContestAICmd_unk_5D(void)
|
||||
|
||||
static void ContestAICmd_unk_5E(void)
|
||||
{
|
||||
u8 var = sub_81563B0(gAIScriptPtr[1]);
|
||||
u8 contestant = GetContestantIdByTurn(gAIScriptPtr[1]);
|
||||
|
||||
eContestAI.scriptResult = gContestMonConditions[var] - gContestMonConditions[eContestAI.contestantId];
|
||||
eContestAI.scriptResult = gContestMonConditions[contestant] - gContestMonConditions[eContestAI.contestantId];
|
||||
gAIScriptPtr += 2;
|
||||
}
|
||||
|
||||
@ -1400,9 +1403,9 @@ static void ContestAICmd_unk_62(void)
|
||||
|
||||
static void ContestAICmd_unk_63(void)
|
||||
{
|
||||
u8 var = sub_81563B0(gAIScriptPtr[1]);
|
||||
u8 var2 = gAIScriptPtr[2];
|
||||
u16 move = eContest.moveHistory[var2][var];
|
||||
u8 contestant = GetContestantIdByTurn(gAIScriptPtr[1]);
|
||||
u8 turn = gAIScriptPtr[2];
|
||||
u16 move = eContest.moveHistory[turn][contestant];
|
||||
|
||||
eContestAI.scriptResult = gContestMoves[move].effect;
|
||||
gAIScriptPtr += 3;
|
||||
@ -1450,9 +1453,9 @@ static void ContestAICmd_unk_67(void)
|
||||
|
||||
static void ContestAICmd_unk_68(void)
|
||||
{
|
||||
u8 var = sub_81563B0(gAIScriptPtr[1]);
|
||||
u8 var2 = gAIScriptPtr[2];
|
||||
s8 result = eContest.excitementHistory[var2][var];
|
||||
u8 contestant = GetContestantIdByTurn(gAIScriptPtr[1]);
|
||||
u8 turn = gAIScriptPtr[2];
|
||||
s8 result = eContest.excitementHistory[turn][contestant];
|
||||
|
||||
eContestAI.scriptResult = result;
|
||||
gAIScriptPtr += 3;
|
||||
@ -1500,9 +1503,9 @@ static void ContestAICmd_unk_6C(void)
|
||||
|
||||
static void ContestAICmd_unk_6D(void)
|
||||
{
|
||||
u8 var = sub_81563B0(gAIScriptPtr[1]);
|
||||
u8 var2 = gAIScriptPtr[2];
|
||||
u16 move = eContest.moveHistory[var2][var];
|
||||
u8 contestant = GetContestantIdByTurn(gAIScriptPtr[1]);
|
||||
u8 turn = gAIScriptPtr[2];
|
||||
u16 move = eContest.moveHistory[turn][contestant];
|
||||
|
||||
eContestAI.scriptResult = gContestEffects[gContestMoves[move].effect].effectType;
|
||||
gAIScriptPtr += 3;
|
||||
|
@ -97,7 +97,7 @@ static void ContestEffect_GreatAppealButNoMoreMoves(void)
|
||||
static void ContestEffect_RepetitionNotBoring(void)
|
||||
{
|
||||
eContestantStatus[eContestResources8.contestant].usedRepeatableMove = TRUE;
|
||||
eContestantStatus[eContestResources8.contestant].disappointedRepeat = FALSE;
|
||||
eContestantStatus[eContestResources8.contestant].repeatedMove = FALSE;
|
||||
eContestantStatus[eContestResources8.contestant].moveRepeatCount = 0;
|
||||
}
|
||||
|
||||
@ -138,7 +138,7 @@ static void ContestEffect_StartleFrontMon(void)
|
||||
if (eContestResources8.turnOrder[a] != 0) {
|
||||
int i;
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
for (i = 0; i < CONTESTANT_COUNT; i++)
|
||||
{
|
||||
if (eContestResources8.turnOrder[a] - 1 == eContestResources8.turnOrder[i])
|
||||
break;
|
||||
@ -156,15 +156,15 @@ static void ContestEffect_StartleFrontMon(void)
|
||||
static void ContestEffect_StartlePrevMons(void)
|
||||
{
|
||||
u8 idx = 0;
|
||||
u8 a = eContestResources8.contestant;
|
||||
u8 contestant = eContestResources8.contestant;
|
||||
|
||||
if (eContestResources8.turnOrder[a] != 0)
|
||||
if (eContestResources8.turnOrder[contestant] != 0)
|
||||
{
|
||||
int i, j;
|
||||
|
||||
for (i = 0, j = 0; i < 4; i++)
|
||||
for (i = 0, j = 0; i < CONTESTANT_COUNT; i++)
|
||||
{
|
||||
if (eContestResources8.turnOrder[a] > eContestResources8.turnOrder[i])
|
||||
if (eContestResources8.turnOrder[contestant] > eContestResources8.turnOrder[i])
|
||||
eContestResources8.jamQueue[j++] = i;
|
||||
}
|
||||
|
||||
@ -390,11 +390,11 @@ static void ContestEffect_MakeFollowingMonsNervous(void)
|
||||
u8 contestantIds[5];
|
||||
int i;
|
||||
int numAfter;
|
||||
s16 oddsMod[4];
|
||||
s16 odds[4];
|
||||
s16 oddsMod[CONTESTANT_COUNT];
|
||||
s16 odds[CONTESTANT_COUNT];
|
||||
|
||||
memset(contestantIds, 0xFF, ARRAY_COUNT(contestantIds));
|
||||
for (i = 0, numAfter = 0; i < 4; i++)
|
||||
for (i = 0, numAfter = 0; i < CONTESTANT_COUNT; i++)
|
||||
{
|
||||
if (eContestResources8.turnOrder[eContestResources8.contestant] < eContestResources8.turnOrder[i] &&
|
||||
!eContestantStatus[i].nervous && !Contest_IsMonsTurnDisabled(i))
|
||||
@ -418,10 +418,10 @@ static void ContestEffect_MakeFollowingMonsNervous(void)
|
||||
}
|
||||
else
|
||||
{
|
||||
for (i = 0; i < 4; i++)
|
||||
for (i = 0; i < CONTESTANT_COUNT; i++)
|
||||
odds[i] = 0;
|
||||
}
|
||||
for (i = 0; i < 4; i++)
|
||||
for (i = 0; i < CONTESTANT_COUNT; i++)
|
||||
{
|
||||
if (eContestantStatus[i].hasJudgesAttention && sub_80DE1E8(i))
|
||||
oddsMod[i] = gComboStarterLookupTable[gContestMoves[eContestantStatus[i].prevMove].comboStarterId] * 10;
|
||||
@ -471,7 +471,7 @@ static void ContestEffect_WorsenConditionOfPrevMons(void)
|
||||
u8 numHit = 0;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
for (i = 0; i < CONTESTANT_COUNT; i++)
|
||||
{
|
||||
if (eContestResources8.turnOrder[eContestResources8.contestant] > eContestResources8.turnOrder[i] &&
|
||||
eContestantStatus[i].condition > 0 &&
|
||||
@ -495,7 +495,7 @@ static void ContestEffect_BadlyStartlesMonsInGoodCondition(void)
|
||||
u8 numHit = 0;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
for (i = 0; i < CONTESTANT_COUNT; i++)
|
||||
{
|
||||
if (eContestResources8.turnOrder[eContestResources8.contestant] > eContestResources8.turnOrder[i])
|
||||
{
|
||||
@ -542,7 +542,7 @@ static void ContestEffect_AppealAsGoodAsPrevOnes(void)
|
||||
int i;
|
||||
int appealSum;
|
||||
|
||||
for (i = 0, appealSum = 0; i < 4; i++)
|
||||
for (i = 0, appealSum = 0; i < CONTESTANT_COUNT; i++)
|
||||
{
|
||||
if (eContestResources8.turnOrder[eContestResources8.contestant] > eContestResources8.turnOrder[i])
|
||||
appealSum += eContestantStatus[i].appeal2;
|
||||
@ -570,7 +570,7 @@ static void ContestEffect_AppealAsGoodAsPrevOne(void)
|
||||
if (eContestResources8.turnOrder[eContestResources8.contestant] != 0)
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < 4; i++)
|
||||
for (i = 0; i < CONTESTANT_COUNT; i++)
|
||||
{
|
||||
if (eContestResources8.turnOrder[eContestResources8.contestant] - 1 == eContestResources8.turnOrder[i])
|
||||
appeal = eContestantStatus[i].appeal2;
|
||||
@ -647,7 +647,7 @@ static void ContestEffect_BetterIfSameType(void)
|
||||
|
||||
while (1)
|
||||
{
|
||||
for (j = 0; j < 4; j++)
|
||||
for (j = 0; j < CONTESTANT_COUNT; j++)
|
||||
{
|
||||
if (eContestResources8.turnOrder[j] == i)
|
||||
break;
|
||||
@ -679,7 +679,7 @@ static void ContestEffect_BetterIfDiffType(void)
|
||||
u16 move = eContestantStatus[eContestResources8.contestant].currMove;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
for (i = 0; i < CONTESTANT_COUNT; i++)
|
||||
{
|
||||
if (eContestResources8.turnOrder[eContestResources8.contestant] - 1 == eContestResources8.turnOrder[i] &&
|
||||
gContestMoves[move].contestCategory != gContestMoves[eContestantStatus[i].currMove].contestCategory)
|
||||
@ -699,7 +699,7 @@ static void ContestEffect_AffectedByPrevAppeal(void)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
for (i = 0; i < CONTESTANT_COUNT; i++)
|
||||
{
|
||||
if (eContestResources8.turnOrder[eContestResources8.contestant] - 1 == eContestResources8.turnOrder[i])
|
||||
{
|
||||
@ -748,18 +748,18 @@ static void ContestEffect_NextAppealEarlier(void)
|
||||
{
|
||||
s8 i;
|
||||
s8 j;
|
||||
u8 turnOrder[4];
|
||||
u8 turnOrder[CONTESTANT_COUNT];
|
||||
|
||||
if (eContest.turnNumber != 4)
|
||||
{
|
||||
for (i = 0; i < 4; i++)
|
||||
for (i = 0; i < CONTESTANT_COUNT; i++)
|
||||
turnOrder[i] = eContestantStatus[i].nextTurnOrder;
|
||||
|
||||
turnOrder[eContestResources8.contestant] = 0xFF;
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
for (i = 0; i < CONTESTANT_COUNT; i++)
|
||||
{
|
||||
for (j = 0; j < 4; j++)
|
||||
for (j = 0; j < CONTESTANT_COUNT; j++)
|
||||
{
|
||||
if (j != eContestResources8.contestant &&
|
||||
i == turnOrder[j] &&
|
||||
@ -769,14 +769,14 @@ static void ContestEffect_NextAppealEarlier(void)
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (j == 4)
|
||||
if (j == CONTESTANT_COUNT)
|
||||
break;
|
||||
}
|
||||
|
||||
turnOrder[eContestResources8.contestant] = 0;
|
||||
eContestantStatus[eContestResources8.contestant].turnOrderMod = 1;
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
for (i = 0; i < CONTESTANT_COUNT; i++)
|
||||
{
|
||||
eContestantStatus[i].nextTurnOrder = turnOrder[i];
|
||||
}
|
||||
@ -790,18 +790,18 @@ static void ContestEffect_NextAppealLater(void)
|
||||
{
|
||||
s8 i;
|
||||
s8 j;
|
||||
u8 turnOrder[4];
|
||||
u8 turnOrder[CONTESTANT_COUNT];
|
||||
|
||||
if (eContest.turnNumber != 4)
|
||||
{
|
||||
for (i = 0; i < 4; i++)
|
||||
for (i = 0; i < CONTESTANT_COUNT; i++)
|
||||
turnOrder[i] = eContestantStatus[i].nextTurnOrder;
|
||||
|
||||
turnOrder[eContestResources8.contestant] = 0xFF;
|
||||
|
||||
for (i = 3; i > -1; i--)
|
||||
for (i = CONTESTANT_COUNT - 1; i > -1; i--)
|
||||
{
|
||||
for (j = 0; j < 4; j++)
|
||||
for (j = 0; j < CONTESTANT_COUNT; j++)
|
||||
{
|
||||
if (j != eContestResources8.contestant &&
|
||||
i == turnOrder[j] &&
|
||||
@ -811,14 +811,14 @@ static void ContestEffect_NextAppealLater(void)
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (j == 4)
|
||||
if (j == CONTESTANT_COUNT)
|
||||
break;
|
||||
}
|
||||
|
||||
turnOrder[eContestResources8.contestant] = 3;
|
||||
turnOrder[eContestResources8.contestant] = CONTESTANT_COUNT - 1;
|
||||
eContestantStatus[eContestResources8.contestant].turnOrderMod = 1;
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
for (i = 0; i < CONTESTANT_COUNT; i++)
|
||||
{
|
||||
eContestantStatus[i].nextTurnOrder = turnOrder[i];
|
||||
}
|
||||
@ -838,22 +838,22 @@ static void ContestEffect_ScrambleNextTurnOrder(void)
|
||||
{
|
||||
s8 i;
|
||||
s8 j;
|
||||
u8 turnOrder[4];
|
||||
u8 unselectedContestants[4];
|
||||
u8 turnOrder[CONTESTANT_COUNT];
|
||||
u8 unselectedContestants[CONTESTANT_COUNT];
|
||||
|
||||
if (eContest.turnNumber != 4)
|
||||
{
|
||||
for (i = 0; i < 4; i++)
|
||||
for (i = 0; i < CONTESTANT_COUNT; i++)
|
||||
{
|
||||
turnOrder[i] = eContestantStatus[i].nextTurnOrder;
|
||||
unselectedContestants[i] = i;
|
||||
}
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
for (i = 0; i < CONTESTANT_COUNT; i++)
|
||||
{
|
||||
u8 rval = Random() % (4 - i);
|
||||
u8 rval = Random() % (CONTESTANT_COUNT - i);
|
||||
|
||||
for (j = 0; j < 4; j++)
|
||||
for (j = 0; j < CONTESTANT_COUNT; j++)
|
||||
{
|
||||
if (unselectedContestants[j] != 0xFF)
|
||||
{
|
||||
@ -869,7 +869,7 @@ static void ContestEffect_ScrambleNextTurnOrder(void)
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
for (i = 0; i < CONTESTANT_COUNT; i++)
|
||||
{
|
||||
eContestantStatus[i].nextTurnOrder = turnOrder[i];
|
||||
eContestantStatus[i].turnOrderMod = 2;
|
||||
@ -894,7 +894,7 @@ static void ContestEffect_BadlyStartleMonsWithGoodAppeals(void)
|
||||
int i;
|
||||
u8 numJammed = 0;
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
for (i = 0; i < CONTESTANT_COUNT; i++)
|
||||
{
|
||||
if (eContestResources8.turnOrder[eContestResources8.contestant] > eContestResources8.turnOrder[i])
|
||||
{
|
||||
@ -965,7 +965,7 @@ static void JamByMoveCategory(u8 category)
|
||||
int i;
|
||||
int numJammed = 0;
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
for (i = 0; i < CONTESTANT_COUNT; i++)
|
||||
{
|
||||
if (eContestResources8.turnOrder[eContestResources8.contestant] > eContestResources8.turnOrder[i])
|
||||
{
|
||||
@ -1010,7 +1010,7 @@ static bool8 CanUnnerveContestant(u8 i)
|
||||
|
||||
static bool8 WasAtLeastOneOpponentJammed(void)
|
||||
{
|
||||
s16 jamBuffer[4] = {0};
|
||||
s16 jamBuffer[CONTESTANT_COUNT] = {0};
|
||||
int i;
|
||||
|
||||
for (i = 0; eContestResources8.jamQueue[i] != 0xFF; i++)
|
||||
@ -1044,7 +1044,7 @@ static bool8 WasAtLeastOneOpponentJammed(void)
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
for (i = 0; i < CONTESTANT_COUNT; i++)
|
||||
{
|
||||
if (jamBuffer[i] != 0)
|
||||
return TRUE;
|
||||
|
@ -12,7 +12,11 @@
|
||||
static void sub_80FC5C0(u8);
|
||||
static void sub_80FC5DC(u8);
|
||||
|
||||
bool32 sub_80FC4F4(void *src, u16 size)
|
||||
#define tState data[0]
|
||||
#define tCategory data[9]
|
||||
#define tTimer data[11]
|
||||
|
||||
bool32 LinkContest_SendBlock(void *src, u16 size)
|
||||
{
|
||||
memcpy(gDecompressionBuffer, src, size);
|
||||
if (SendBlock(bitmask_all_link_players_but_self(), gDecompressionBuffer, size))
|
||||
@ -21,21 +25,21 @@ bool32 sub_80FC4F4(void *src, u16 size)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 sub_80FC530(u8 arg0)
|
||||
bool8 LinkContest_GetBlockReceived(u8 flag)
|
||||
{
|
||||
u8 mask = (1 << arg0);
|
||||
u8 mask = (1 << flag);
|
||||
if (!(GetBlockReceivedStatus() & mask))
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
ResetBlockReceivedFlag(arg0);
|
||||
ResetBlockReceivedFlag(flag);
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
bool8 sub_80FC55C(void)
|
||||
bool8 LinkContest_GetBlockReceivedFromAllPlayers(void)
|
||||
{
|
||||
if (GetBlockReceivedStatus() == GetLinkPlayerCountAsBitFlags())
|
||||
{
|
||||
@ -52,10 +56,10 @@ void sub_80FC580(u8 taskId)
|
||||
{
|
||||
u8 i;
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
for (i = 0; i < CONTESTANT_COUNT; i++)
|
||||
gBlockRecvBuffer[i][0] = 0xFF;
|
||||
|
||||
gTasks[taskId].data[0] = 0;
|
||||
gTasks[taskId].tState = 0;
|
||||
gTasks[taskId].func = sub_80FC5C0;
|
||||
}
|
||||
|
||||
@ -77,6 +81,7 @@ static void sub_80FC5DC(u8 taskId)
|
||||
if (gWirelessCommType == 1)
|
||||
gLinkContestFlags = LINK_CONTEST_FLAG_IS_LINK | LINK_CONTEST_FLAG_IS_WIRELESS;
|
||||
|
||||
// Get number of players using Emerald/FRLG
|
||||
for (i = 0; i < gNumLinkContestPlayers && (u32)(gLinkPlayers[i].version & 0xFF) - 1 > VERSION_RUBY - 1; i++)
|
||||
;
|
||||
|
||||
@ -86,22 +91,22 @@ static void sub_80FC5DC(u8 taskId)
|
||||
SwitchTaskToFollowupFunc(taskId);
|
||||
}
|
||||
|
||||
bool32 sub_80FC670(s16 *arg0)
|
||||
bool32 sub_80FC670(s16 *state)
|
||||
{
|
||||
if (gLinkContestFlags & LINK_CONTEST_FLAG_HAS_RS_PLAYER)
|
||||
return TRUE;
|
||||
|
||||
switch (*arg0)
|
||||
switch (*state)
|
||||
{
|
||||
case 0:
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
sub_800ADF8();
|
||||
(*arg0)++;
|
||||
(*state)++;
|
||||
}
|
||||
return FALSE;
|
||||
case 1:
|
||||
(*arg0)++;
|
||||
(*state)++;
|
||||
return FALSE;
|
||||
default:
|
||||
if (IsLinkTaskFinished() != TRUE)
|
||||
@ -118,7 +123,7 @@ void sub_80FC6BC(u8 taskId)
|
||||
if (!sub_80FC670(&gTasks[taskId].data[12]))
|
||||
return;
|
||||
|
||||
switch (gTasks[taskId].data[0])
|
||||
switch (gTasks[taskId].tState)
|
||||
{
|
||||
case 0:
|
||||
if (GetMultiplayerId() == 0)
|
||||
@ -126,37 +131,37 @@ void sub_80FC6BC(u8 taskId)
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
memcpy(gBlockSendBuffer, &gContestMons[gContestPlayerMonIndex], sizeof(struct ContestPokemon));
|
||||
gTasks[taskId].data[0] = 10;
|
||||
gTasks[taskId].tState = 10;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
memcpy(gBlockSendBuffer, &gContestMons[gContestPlayerMonIndex], sizeof(struct ContestPokemon));
|
||||
gTasks[taskId].data[0] = 1;
|
||||
gTasks[taskId].tState = 1;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (sub_80FC55C())
|
||||
if (LinkContest_GetBlockReceivedFromAllPlayers())
|
||||
{
|
||||
for (i = 0; i < gNumLinkContestPlayers; i++)
|
||||
{
|
||||
memcpy(&gContestMons[i], gBlockRecvBuffer[i], sizeof(struct ContestPokemon));
|
||||
sub_80DFA08(&gContestMons[i], gLinkPlayers[i].language);
|
||||
StripPlayerAndMonNamesForLinkContest(&gContestMons[i], gLinkPlayers[i].language);
|
||||
}
|
||||
|
||||
gTasks[taskId].data[0]++;
|
||||
gTasks[taskId].tState++;
|
||||
}
|
||||
break;
|
||||
case 10:
|
||||
if (++gTasks[taskId].data[11] > 300)
|
||||
if (++gTasks[taskId].tTimer > 300)
|
||||
{
|
||||
sub_800A4D8(2);
|
||||
gTasks[taskId].data[0] = 1;
|
||||
gTasks[taskId].tState = 1;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
gTasks[taskId].data[0] = 0;
|
||||
gTasks[taskId].data[11] = 0;
|
||||
gTasks[taskId].tState = 0;
|
||||
gTasks[taskId].tTimer = 0;
|
||||
gTasks[taskId].data[12] = 0;
|
||||
SwitchTaskToFollowupFunc(taskId);
|
||||
break;
|
||||
@ -165,29 +170,29 @@ void sub_80FC6BC(u8 taskId)
|
||||
|
||||
void sub_80FC804(u8 taskId)
|
||||
{
|
||||
switch (gTasks[taskId].data[0])
|
||||
switch (gTasks[taskId].tState)
|
||||
{
|
||||
case 0:
|
||||
if (GetMultiplayerId() == 0)
|
||||
{
|
||||
if (IsLinkTaskFinished() && sub_80FC4F4(&gRngValue, sizeof(gRngValue)) == TRUE)
|
||||
gTasks[taskId].data[0]++;
|
||||
if (IsLinkTaskFinished() && LinkContest_SendBlock(&gRngValue, sizeof(gRngValue)) == TRUE)
|
||||
gTasks[taskId].tState++;
|
||||
}
|
||||
else
|
||||
{
|
||||
gTasks[taskId].data[0]++;
|
||||
gTasks[taskId].tState++;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (sub_80FC530(0))
|
||||
if (LinkContest_GetBlockReceived(0))
|
||||
{
|
||||
memcpy(&gRngValue, gBlockRecvBuffer[0], sizeof(gRngValue));
|
||||
memcpy(&gContestRngValue, gBlockRecvBuffer[0], sizeof(gContestRngValue));
|
||||
gTasks[taskId].data[0]++;
|
||||
gTasks[taskId].tState++;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
gTasks[taskId].data[0] = 0;
|
||||
gTasks[taskId].tState = 0;
|
||||
SwitchTaskToFollowupFunc(taskId);
|
||||
break;
|
||||
}
|
||||
@ -200,91 +205,93 @@ void sub_80FC894(u8 taskId)
|
||||
if (!sub_80FC670(&gTasks[taskId].data[12]))
|
||||
return;
|
||||
|
||||
switch (gTasks[taskId].data[0])
|
||||
switch (gTasks[taskId].tState)
|
||||
{
|
||||
case 0:
|
||||
gBlockSendBuffer[0] = gTasks[taskId].data[9];
|
||||
gBlockSendBuffer[0] = gTasks[taskId].tCategory;
|
||||
if (GetMultiplayerId() == 0)
|
||||
{
|
||||
if (IsLinkTaskFinished())
|
||||
gTasks[taskId].data[0] = 10;
|
||||
gTasks[taskId].tState = 10;
|
||||
}
|
||||
else
|
||||
{
|
||||
gTasks[taskId].data[0]++;
|
||||
gTasks[taskId].tState++;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (sub_80FC55C())
|
||||
if (LinkContest_GetBlockReceivedFromAllPlayers())
|
||||
{
|
||||
for (i = 0; i < gNumLinkContestPlayers; i++)
|
||||
gTasks[taskId].data[i + 1] = gBlockRecvBuffer[i][0];
|
||||
|
||||
gTasks[taskId].data[0]++;
|
||||
gTasks[taskId].tState++;
|
||||
}
|
||||
break;
|
||||
case 10:
|
||||
if (++gTasks[taskId].data[11] > 10)
|
||||
if (++gTasks[taskId].tTimer > 10)
|
||||
{
|
||||
sub_800A4D8(2);
|
||||
gTasks[taskId].data[0] = 1;
|
||||
gTasks[taskId].tState = 1;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
gTasks[taskId].data[0] = 0;
|
||||
gTasks[taskId].data[11] = 0;
|
||||
gTasks[taskId].tState = 0;
|
||||
gTasks[taskId].tTimer = 0;
|
||||
gTasks[taskId].data[12] = 0;
|
||||
SwitchTaskToFollowupFunc(taskId);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80FC998(u8 taskId)
|
||||
void Task_LinkContest_CommunicateMonIdxs(u8 taskId)
|
||||
{
|
||||
switch (gTasks[taskId].data[0])
|
||||
switch (gTasks[taskId].tState)
|
||||
{
|
||||
case 0:
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
if (sub_80FC4F4(&gContestPlayerMonIndex, sizeof(gContestPlayerMonIndex)) == TRUE)
|
||||
gTasks[taskId].data[0]++;
|
||||
if (LinkContest_SendBlock(&gContestPlayerMonIndex, sizeof(gContestPlayerMonIndex)) == TRUE)
|
||||
gTasks[taskId].tState++;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (sub_80FC55C())
|
||||
gTasks[taskId].data[0]++;
|
||||
if (LinkContest_GetBlockReceivedFromAllPlayers())
|
||||
gTasks[taskId].tState++;
|
||||
break;
|
||||
default:
|
||||
gTasks[taskId].data[0] = 0;
|
||||
gTasks[taskId].tState = 0;
|
||||
SwitchTaskToFollowupFunc(taskId);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80FC9F8(u8 taskId)
|
||||
void Task_LinkContest_CommunicateMoveSelections(u8 taskId)
|
||||
{
|
||||
int i;
|
||||
|
||||
switch (gTasks[taskId].data[0])
|
||||
switch (gTasks[taskId].tState)
|
||||
{
|
||||
case 0:
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
if (sub_80FC4F4(&eContestantStatus[gContestPlayerMonIndex].currMove, sizeof(eContestantStatus[gContestPlayerMonIndex].currMove)) == TRUE)
|
||||
gTasks[taskId].data[0]++;
|
||||
// Send player's move selection
|
||||
if (LinkContest_SendBlock(&eContestantStatus[gContestPlayerMonIndex].currMove, sizeof(eContestantStatus[gContestPlayerMonIndex].currMove)) == TRUE)
|
||||
gTasks[taskId].tState++;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (sub_80FC55C())
|
||||
if (LinkContest_GetBlockReceivedFromAllPlayers())
|
||||
{
|
||||
// Receive partners' move selections
|
||||
for (i = 0; i < gNumLinkContestPlayers; i++)
|
||||
eContestantStatus[i].currMove = gBlockRecvBuffer[i][0];
|
||||
|
||||
gTasks[taskId].data[0]++;
|
||||
gTasks[taskId].tState++;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
gTasks[taskId].data[0] = 0;
|
||||
gTasks[taskId].tState = 0;
|
||||
SwitchTaskToFollowupFunc(taskId);
|
||||
break;
|
||||
}
|
||||
@ -292,20 +299,20 @@ void sub_80FC9F8(u8 taskId)
|
||||
|
||||
void sub_80FCACC(u8 taskId)
|
||||
{
|
||||
switch (gTasks[taskId].data[0])
|
||||
switch (gTasks[taskId].tState)
|
||||
{
|
||||
case 0:
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
if (sub_80FC4F4(gContestMonTotalPoints, sizeof(gContestMonTotalPoints)) == 1)
|
||||
gTasks[taskId].data[0]++;
|
||||
if (LinkContest_SendBlock(gContestMonTotalPoints, sizeof(gContestMonTotalPoints)) == 1)
|
||||
gTasks[taskId].tState++;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (sub_80FC55C())
|
||||
if (LinkContest_GetBlockReceivedFromAllPlayers())
|
||||
{
|
||||
memcpy(gContestMonTotalPoints, gBlockRecvBuffer[gUnknown_02039F2B], sizeof(gContestMonTotalPoints));
|
||||
gTasks[taskId].data[0]++;
|
||||
gTasks[taskId].tState++;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
@ -315,53 +322,53 @@ void sub_80FCACC(u8 taskId)
|
||||
if (gTasks[taskId].data[1]++ > 10)
|
||||
{
|
||||
gTasks[taskId].data[1] = 0;
|
||||
gTasks[taskId].data[0]++;
|
||||
gTasks[taskId].tState++;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
if (sub_80FC4F4(gUnknown_02039F10, sizeof(gUnknown_02039F10)) == 1)
|
||||
gTasks[taskId].data[0]++;
|
||||
if (LinkContest_SendBlock(gUnknown_02039F10, sizeof(gUnknown_02039F10)) == 1)
|
||||
gTasks[taskId].tState++;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
if (sub_80FC55C())
|
||||
if (LinkContest_GetBlockReceivedFromAllPlayers())
|
||||
{
|
||||
memcpy(gUnknown_02039F10, gBlockRecvBuffer[gUnknown_02039F2B], sizeof(gUnknown_02039F10));
|
||||
gTasks[taskId].data[0]++;
|
||||
gTasks[taskId].tState++;
|
||||
}
|
||||
break;
|
||||
case 6:
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
if (sub_80FC4F4(gContestMonRound2Points, sizeof(gContestMonRound2Points)) == 1)
|
||||
gTasks[taskId].data[0]++;
|
||||
if (LinkContest_SendBlock(gContestMonRound2Points, sizeof(gContestMonRound2Points)) == 1)
|
||||
gTasks[taskId].tState++;
|
||||
}
|
||||
break;
|
||||
case 7:
|
||||
if (sub_80FC55C())
|
||||
if (LinkContest_GetBlockReceivedFromAllPlayers())
|
||||
{
|
||||
memcpy(gContestMonRound2Points, gBlockRecvBuffer[gUnknown_02039F2B], sizeof(gContestMonRound2Points));
|
||||
gTasks[taskId].data[0]++;
|
||||
gTasks[taskId].tState++;
|
||||
}
|
||||
break;
|
||||
case 9:
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
if (sub_80FC4F4(gContestFinalStandings, sizeof(gContestFinalStandings)) == 1)
|
||||
gTasks[taskId].data[0]++;
|
||||
if (LinkContest_SendBlock(gContestFinalStandings, sizeof(gContestFinalStandings)) == 1)
|
||||
gTasks[taskId].tState++;
|
||||
}
|
||||
break;
|
||||
case 10:
|
||||
if (sub_80FC55C())
|
||||
if (LinkContest_GetBlockReceivedFromAllPlayers())
|
||||
{
|
||||
memcpy(gContestFinalStandings, gBlockRecvBuffer[gUnknown_02039F2B], sizeof(gContestFinalStandings));
|
||||
gTasks[taskId].data[0]++;
|
||||
gTasks[taskId].tState++;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
gTasks[taskId].data[0] = 0;
|
||||
gTasks[taskId].tState = 0;
|
||||
SwitchTaskToFollowupFunc(taskId);
|
||||
break;
|
||||
}
|
||||
@ -369,20 +376,20 @@ void sub_80FCACC(u8 taskId)
|
||||
|
||||
void sub_80FCC88(u8 taskId)
|
||||
{
|
||||
switch (gTasks[taskId].data[0])
|
||||
switch (gTasks[taskId].tState)
|
||||
{
|
||||
case 0:
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
if (sub_80FC4F4(eContestantStatus, 4 * sizeof(struct ContestantStatus)) == 1)
|
||||
gTasks[taskId].data[0]++;
|
||||
if (LinkContest_SendBlock(eContestantStatus, 4 * sizeof(struct ContestantStatus)) == 1)
|
||||
gTasks[taskId].tState++;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (sub_80FC55C())
|
||||
if (LinkContest_GetBlockReceivedFromAllPlayers())
|
||||
{
|
||||
memcpy(eContestantStatus, gBlockRecvBuffer[gUnknown_02039F2B], 4 * sizeof(struct ContestantStatus));
|
||||
gTasks[taskId].data[0]++;
|
||||
gTasks[taskId].tState++;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
@ -392,53 +399,53 @@ void sub_80FCC88(u8 taskId)
|
||||
if (gTasks[taskId].data[1]++ > 10)
|
||||
{
|
||||
gTasks[taskId].data[1] = 0;
|
||||
gTasks[taskId].data[0]++;
|
||||
gTasks[taskId].tState++;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
if (sub_80FC4F4(gContestResources->field_8, sizeof(struct UnknownContestStruct7)) == 1)
|
||||
gTasks[taskId].data[0]++;
|
||||
if (LinkContest_SendBlock(gContestResources->field_8, sizeof(struct UnknownContestStruct7)) == 1)
|
||||
gTasks[taskId].tState++;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
if (sub_80FC55C())
|
||||
if (LinkContest_GetBlockReceivedFromAllPlayers())
|
||||
{
|
||||
memcpy(gContestResources->field_8, gBlockRecvBuffer[gUnknown_02039F2B], sizeof(struct UnknownContestStruct7));
|
||||
gTasks[taskId].data[0]++;
|
||||
gTasks[taskId].tState++;
|
||||
}
|
||||
break;
|
||||
case 6:
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
if (sub_80FC4F4(gContestResources->field_10, sizeof(struct UnknownContestStruct5)) == 1)
|
||||
gTasks[taskId].data[0]++;
|
||||
if (LinkContest_SendBlock(gContestResources->field_10, sizeof(struct UnknownContestStruct5)) == 1)
|
||||
gTasks[taskId].tState++;
|
||||
}
|
||||
break;
|
||||
case 7:
|
||||
if (sub_80FC55C())
|
||||
if (LinkContest_GetBlockReceivedFromAllPlayers())
|
||||
{
|
||||
memcpy(gContestResources->field_10, gBlockRecvBuffer[gUnknown_02039F2B], sizeof(struct UnknownContestStruct5));
|
||||
gTasks[taskId].data[0]++;
|
||||
gTasks[taskId].tState++;
|
||||
}
|
||||
break;
|
||||
case 9:
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
if (sub_80FC4F4(gContestantTurnOrder, sizeof(gContestantTurnOrder)) == 1)
|
||||
gTasks[taskId].data[0]++;
|
||||
if (LinkContest_SendBlock(gContestantTurnOrder, sizeof(gContestantTurnOrder)) == 1)
|
||||
gTasks[taskId].tState++;
|
||||
}
|
||||
break;
|
||||
case 10:
|
||||
if (sub_80FC55C())
|
||||
if (LinkContest_GetBlockReceivedFromAllPlayers())
|
||||
{
|
||||
memcpy(gContestantTurnOrder, gBlockRecvBuffer[gUnknown_02039F2B], sizeof(gContestantTurnOrder));
|
||||
gTasks[taskId].data[0]++;
|
||||
gTasks[taskId].tState++;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
gTasks[taskId].data[0] = 0;
|
||||
gTasks[taskId].tState = 0;
|
||||
SwitchTaskToFollowupFunc(taskId);
|
||||
break;
|
||||
}
|
||||
@ -451,39 +458,39 @@ void sub_80FCE48(u8 taskId)
|
||||
if (!sub_80FC670(&gTasks[taskId].data[12]))
|
||||
return;
|
||||
|
||||
switch (gTasks[taskId].data[0])
|
||||
switch (gTasks[taskId].tState)
|
||||
{
|
||||
case 0:
|
||||
gBlockSendBuffer[0] = 0x6E;
|
||||
if (GetMultiplayerId() == 0)
|
||||
{
|
||||
if (IsLinkTaskFinished())
|
||||
gTasks[taskId].data[0] = 10;
|
||||
gTasks[taskId].tState = 10;
|
||||
}
|
||||
else
|
||||
{
|
||||
gTasks[taskId].data[0]++;
|
||||
gTasks[taskId].tState++;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (sub_80FC55C())
|
||||
if (LinkContest_GetBlockReceivedFromAllPlayers())
|
||||
{
|
||||
for (i = 0; i < 4; i++)
|
||||
for (i = 0; i < CONTESTANT_COUNT; i++)
|
||||
gTasks[taskId].data[i + 5] = gBlockRecvBuffer[i][0];
|
||||
|
||||
gTasks[taskId].data[0]++;
|
||||
gTasks[taskId].tState++;
|
||||
}
|
||||
break;
|
||||
case 10:
|
||||
if (++gTasks[taskId].data[11] > 10)
|
||||
if (++gTasks[taskId].tTimer > 10)
|
||||
{
|
||||
sub_800A4D8(2);
|
||||
gTasks[taskId].data[0] = 1;
|
||||
gTasks[taskId].tState = 1;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
gTasks[taskId].data[0] = 0;
|
||||
gTasks[taskId].data[11] = 0;
|
||||
gTasks[taskId].tState = 0;
|
||||
gTasks[taskId].tTimer = 0;
|
||||
gTasks[taskId].data[12] = 0;
|
||||
SwitchTaskToFollowupFunc(taskId);
|
||||
break;
|
||||
@ -495,24 +502,24 @@ void sub_80FCF40(u8 taskId)
|
||||
if (!sub_80FC670(&gTasks[taskId].data[12]))
|
||||
return;
|
||||
|
||||
switch (gTasks[taskId].data[0])
|
||||
switch (gTasks[taskId].tState)
|
||||
{
|
||||
case 0:
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
if (sub_80FC4F4(gContestMonConditions, sizeof(gContestMonConditions)) == 1)
|
||||
gTasks[taskId].data[0]++;
|
||||
if (LinkContest_SendBlock(gContestMonConditions, sizeof(gContestMonConditions)) == 1)
|
||||
gTasks[taskId].tState++;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (sub_80FC55C())
|
||||
if (LinkContest_GetBlockReceivedFromAllPlayers())
|
||||
{
|
||||
memcpy(gContestMonConditions, gBlockRecvBuffer[gUnknown_02039F2B], sizeof(gContestMonConditions));
|
||||
gTasks[taskId].data[0]++;
|
||||
gTasks[taskId].tState++;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
gTasks[taskId].data[0] = 0;
|
||||
gTasks[taskId].tState = 0;
|
||||
gTasks[taskId].data[12] = 0;
|
||||
SwitchTaskToFollowupFunc(taskId);
|
||||
break;
|
||||
@ -524,24 +531,24 @@ void sub_80FCFD0(u8 taskId)
|
||||
if (!sub_80FC670(&gTasks[taskId].data[12]))
|
||||
return;
|
||||
|
||||
switch (gTasks[taskId].data[0])
|
||||
switch (gTasks[taskId].tState)
|
||||
{
|
||||
case 0:
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
if (sub_80FC4F4(gContestantTurnOrder, sizeof(gContestantTurnOrder)) == 1)
|
||||
gTasks[taskId].data[0]++;
|
||||
if (LinkContest_SendBlock(gContestantTurnOrder, sizeof(gContestantTurnOrder)) == 1)
|
||||
gTasks[taskId].tState++;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (sub_80FC55C())
|
||||
if (LinkContest_GetBlockReceivedFromAllPlayers())
|
||||
{
|
||||
memcpy(gContestantTurnOrder, gBlockRecvBuffer[gUnknown_02039F2B], sizeof(gContestantTurnOrder));
|
||||
gTasks[taskId].data[0]++;
|
||||
gTasks[taskId].tState++;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
gTasks[taskId].data[0] = 0;
|
||||
gTasks[taskId].tState = 0;
|
||||
gTasks[taskId].data[12] = 0;
|
||||
SwitchTaskToFollowupFunc(taskId);
|
||||
break;
|
||||
|
@ -1,5 +1,6 @@
|
||||
#include "global.h"
|
||||
#include "contest.h"
|
||||
#include "contest_link.h"
|
||||
#include "event_data.h"
|
||||
#include "link.h"
|
||||
#include "random.h"
|
||||
@ -17,33 +18,35 @@ static void sub_81DA2E8(u8);
|
||||
static void sub_81DA3B8(u8);
|
||||
static void sub_81DA488(u8);
|
||||
|
||||
#define tCategory data[9]
|
||||
|
||||
void sub_81D9DE4(u8 taskId)
|
||||
{
|
||||
int gameCleared;
|
||||
|
||||
switch (gTasks[taskId].data[9])
|
||||
switch (gTasks[taskId].tCategory)
|
||||
{
|
||||
case 0:
|
||||
case CONTEST_CATEGORY_COOL:
|
||||
gHighestRibbonRank = GetMonData(&gPlayerParty[gContestMonPartyIndex], MON_DATA_COOL_RIBBON);
|
||||
break;
|
||||
case 1:
|
||||
case CONTEST_CATEGORY_BEAUTY:
|
||||
gHighestRibbonRank = GetMonData(&gPlayerParty[gContestMonPartyIndex], MON_DATA_BEAUTY_RIBBON);
|
||||
break;
|
||||
case 2:
|
||||
case CONTEST_CATEGORY_CUTE:
|
||||
gHighestRibbonRank = GetMonData(&gPlayerParty[gContestMonPartyIndex], MON_DATA_CUTE_RIBBON);
|
||||
break;
|
||||
case 3:
|
||||
case CONTEST_CATEGORY_SMART:
|
||||
gHighestRibbonRank = GetMonData(&gPlayerParty[gContestMonPartyIndex], MON_DATA_SMART_RIBBON);
|
||||
break;
|
||||
case 4:
|
||||
case CONTEST_CATEGORY_TOUGH:
|
||||
default:
|
||||
gHighestRibbonRank = GetMonData(&gPlayerParty[gContestMonPartyIndex], MON_DATA_TOUGH_RIBBON);
|
||||
break;
|
||||
}
|
||||
|
||||
gContestMons[gContestPlayerMonIndex].unk2C[0] = gHighestRibbonRank;
|
||||
gContestMons[gContestPlayerMonIndex].highestRank = gHighestRibbonRank;
|
||||
gameCleared = FlagGet(FLAG_SYS_GAME_CLEAR) > 0;
|
||||
gContestMons[gContestPlayerMonIndex].unk2C[1] = gameCleared;
|
||||
gContestMons[gContestPlayerMonIndex].gameCleared = gameCleared;
|
||||
SetTaskFuncWithFollowupFunc(taskId, sub_81DA160, sub_81D9F14);
|
||||
}
|
||||
|
||||
@ -94,13 +97,13 @@ static void sub_81D9F68(u8 taskId)
|
||||
for (i = 0; i < gNumLinkContestPlayers; i++)
|
||||
data2[i] = gTasks[taskId].data[i + 5];
|
||||
|
||||
if (gNumLinkContestPlayers != 4 && GetMultiplayerId() == 0)
|
||||
if (gNumLinkContestPlayers != CONTESTANT_COUNT && GetMultiplayerId() == 0)
|
||||
{
|
||||
rank = gContestMons[0].unk2C[0];
|
||||
rank = gContestMons[0].highestRank;
|
||||
for (i = 1; i < gNumLinkContestPlayers; i++)
|
||||
{
|
||||
if (rank < gContestMons[i].unk2C[0])
|
||||
rank = gContestMons[i].unk2C[0];
|
||||
if (rank < gContestMons[i].highestRank)
|
||||
rank = gContestMons[i].highestRank;
|
||||
}
|
||||
|
||||
if (rank)
|
||||
@ -109,7 +112,7 @@ static void sub_81D9F68(u8 taskId)
|
||||
gameCleared = 1;
|
||||
for (i = 0; i < gNumLinkContestPlayers; i++)
|
||||
{
|
||||
if (!gContestMons[i].unk2C[1])
|
||||
if (!gContestMons[i].gameCleared)
|
||||
{
|
||||
gameCleared = 0;
|
||||
break;
|
||||
@ -120,7 +123,7 @@ static void sub_81D9F68(u8 taskId)
|
||||
}
|
||||
|
||||
gUnknown_02039F2B = sub_80F86E0(data2);
|
||||
if (gNumLinkContestPlayers < 4)
|
||||
if (gNumLinkContestPlayers < CONTESTANT_COUNT)
|
||||
SetTaskFuncWithFollowupFunc(taskId, sub_81DA488, sub_81DA10C);
|
||||
else
|
||||
gTasks[taskId].func = sub_81DA10C;
|
||||
@ -155,17 +158,17 @@ static void sub_81DA160(u8 taskId)
|
||||
case 0:
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
if (sub_80FC4F4(&gContestMons[gContestPlayerMonIndex], sizeof(struct ContestPokemon)) == 1)
|
||||
if (LinkContest_SendBlock(&gContestMons[gContestPlayerMonIndex], sizeof(struct ContestPokemon)) == 1)
|
||||
gTasks[taskId].data[0]++;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (sub_80FC55C())
|
||||
if (LinkContest_GetBlockReceivedFromAllPlayers())
|
||||
{
|
||||
for (i = 0; i < gNumLinkContestPlayers; i++)
|
||||
{
|
||||
memcpy(&gContestMons[i], gBlockRecvBuffer[i], sizeof(struct ContestPokemon));
|
||||
sub_80DFA08(&gContestMons[i], gLinkPlayers[i].language);
|
||||
StripPlayerAndMonNamesForLinkContest(&gContestMons[i], gLinkPlayers[i].language);
|
||||
}
|
||||
|
||||
gTasks[taskId].data[0]++;
|
||||
@ -192,7 +195,7 @@ static void sub_81DA244(u8 taskId)
|
||||
if (!IsLinkTaskFinished())
|
||||
return;
|
||||
|
||||
if (sub_80FC4F4(&gRngValue, sizeof(gRngValue)) == 1)
|
||||
if (LinkContest_SendBlock(&gRngValue, sizeof(gRngValue)) == 1)
|
||||
gTasks[taskId].data[0]++;
|
||||
}
|
||||
else
|
||||
@ -201,7 +204,7 @@ static void sub_81DA244(u8 taskId)
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (sub_80FC530(0))
|
||||
if (LinkContest_GetBlockReceived(0))
|
||||
{
|
||||
memcpy(&gRngValue, gBlockRecvBuffer[0], sizeof(gRngValue));
|
||||
memcpy(&gContestRngValue, gBlockRecvBuffer[0], sizeof(gContestRngValue));
|
||||
@ -231,12 +234,12 @@ static void sub_81DA2E8(u8 taskId)
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
var0 = 0x6E;
|
||||
if (sub_80FC4F4(&var0, sizeof(var0)) == 1)
|
||||
if (LinkContest_SendBlock(&var0, sizeof(var0)) == 1)
|
||||
gTasks[taskId].data[0]++;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (sub_80FC55C())
|
||||
if (LinkContest_GetBlockReceivedFromAllPlayers())
|
||||
{
|
||||
for (i = 0; i < gNumLinkContestPlayers; i++)
|
||||
{
|
||||
@ -253,8 +256,8 @@ static void sub_81DA2E8(u8 taskId)
|
||||
static void sub_81DA3B8(u8 taskId)
|
||||
{
|
||||
int i;
|
||||
u16 data[4];
|
||||
u16 var0;
|
||||
u16 data[CONTESTANT_COUNT];
|
||||
u16 category;
|
||||
|
||||
if (!sub_80FC670(&gTasks[taskId].data[12]))
|
||||
return;
|
||||
@ -269,13 +272,13 @@ static void sub_81DA3B8(u8 taskId)
|
||||
case 0:
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
var0 = gTasks[taskId].data[9];
|
||||
if (sub_80FC4F4(&var0, sizeof(var0)) == 1)
|
||||
category = gTasks[taskId].tCategory;
|
||||
if (LinkContest_SendBlock(&category, sizeof(category)) == 1)
|
||||
gTasks[taskId].data[0]++;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (sub_80FC55C())
|
||||
if (LinkContest_GetBlockReceivedFromAllPlayers())
|
||||
{
|
||||
for (i = 0; i < gNumLinkContestPlayers; i++)
|
||||
{
|
||||
@ -309,7 +312,7 @@ static void sub_81DA488(u8 taskId)
|
||||
if (!IsLinkTaskFinished())
|
||||
return;
|
||||
|
||||
if (sub_80FC4F4(&gContestMons[gNumLinkContestPlayers], (4 - gNumLinkContestPlayers) * sizeof(struct ContestPokemon)) == 1)
|
||||
if (LinkContest_SendBlock(&gContestMons[gNumLinkContestPlayers], (CONTESTANT_COUNT - gNumLinkContestPlayers) * sizeof(struct ContestPokemon)) == 1)
|
||||
gTasks[taskId].data[0]++;
|
||||
}
|
||||
else
|
||||
@ -318,11 +321,11 @@ static void sub_81DA488(u8 taskId)
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (sub_80FC530(0))
|
||||
if (LinkContest_GetBlockReceived(0))
|
||||
{
|
||||
memcpy(&gContestMons[gNumLinkContestPlayers], gBlockRecvBuffer[0], (4 - gNumLinkContestPlayers) * sizeof(struct ContestPokemon));
|
||||
for (i = gNumLinkContestPlayers; i < 4; i++)
|
||||
sub_80DFA08(&gContestMons[i], gLinkPlayers[0].language);
|
||||
memcpy(&gContestMons[gNumLinkContestPlayers], gBlockRecvBuffer[0], (CONTESTANT_COUNT - gNumLinkContestPlayers) * sizeof(struct ContestPokemon));
|
||||
for (i = gNumLinkContestPlayers; i < CONTESTANT_COUNT; i++)
|
||||
StripPlayerAndMonNamesForLinkContest(&gContestMons[i], gLinkPlayers[0].language);
|
||||
|
||||
gTasks[taskId].data[0]++;
|
||||
}
|
||||
|
@ -653,7 +653,7 @@ static void Task_WaitForLinkPartnersBeforeResults(u8 taskId)
|
||||
|
||||
static void sub_80F5F14(u8 taskId)
|
||||
{
|
||||
SetTaskFuncWithFollowupFunc(taskId, sub_80FC998, sub_80F5F30);
|
||||
SetTaskFuncWithFollowupFunc(taskId, Task_LinkContest_CommunicateMonIdxs, sub_80F5F30);
|
||||
}
|
||||
|
||||
static void sub_80F5F30(u8 taskId)
|
||||
@ -2405,25 +2405,25 @@ void GetContestPlayerId(void)
|
||||
gSpecialVar_0x8004 = gContestPlayerMonIndex;
|
||||
}
|
||||
|
||||
void ContestLinkTransfer(u8 taskId)
|
||||
void ContestLinkTransfer(u8 category)
|
||||
{
|
||||
u8 newTaskId;
|
||||
ScriptContext2_Enable();
|
||||
newTaskId = CreateTask(sub_80FC580, 0);
|
||||
SetTaskFuncWithFollowupFunc(newTaskId, sub_80FC580, sub_80F8508);
|
||||
gTasks[newTaskId].data[9] = taskId;
|
||||
gTasks[newTaskId].data[9] = category;
|
||||
}
|
||||
|
||||
static void sub_80F8508(u8 taskId)
|
||||
{
|
||||
if (gLinkContestFlags & LINK_CONTEST_FLAG_HAS_RS_PLAYER)
|
||||
{
|
||||
sub_80DA8C8(gContestMonPartyIndex);
|
||||
CreateContestMonFromParty(gContestMonPartyIndex);
|
||||
SetTaskFuncWithFollowupFunc(taskId, sub_80FC6BC, sub_80F8568);
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_80DA8C8(gContestMonPartyIndex);
|
||||
CreateContestMonFromParty(gContestMonPartyIndex);
|
||||
gTasks[taskId].func = sub_81D9DE4;
|
||||
}
|
||||
}
|
||||
|
@ -203,7 +203,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 3,
|
||||
.tough = 4,
|
||||
.sheen = 50,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -232,7 +231,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 1,
|
||||
.tough = 2,
|
||||
.sheen = 60,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -261,7 +259,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 12,
|
||||
.tough = 4,
|
||||
.sheen = 70,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -290,7 +287,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 2,
|
||||
.tough = 7,
|
||||
.sheen = 80,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -319,7 +315,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 5,
|
||||
.tough = 4,
|
||||
.sheen = 90,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -348,7 +343,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 7,
|
||||
.tough = 8,
|
||||
.sheen = 100,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -377,7 +371,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 2,
|
||||
.tough = 2,
|
||||
.sheen = 50,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -406,7 +399,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 10,
|
||||
.tough = 10,
|
||||
.sheen = 60,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -435,7 +427,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 5,
|
||||
.tough = 18,
|
||||
.sheen = 70,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -464,7 +455,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 2,
|
||||
.tough = 7,
|
||||
.sheen = 80,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -493,7 +483,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 8,
|
||||
.tough = 1,
|
||||
.sheen = 90,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -522,7 +511,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 10,
|
||||
.tough = 2,
|
||||
.sheen = 100,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -551,7 +539,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 2,
|
||||
.tough = 10,
|
||||
.sheen = 50,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -580,7 +567,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 10,
|
||||
.tough = 5,
|
||||
.sheen = 60,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -609,7 +595,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 1,
|
||||
.tough = 1,
|
||||
.sheen = 70,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -638,7 +623,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 10,
|
||||
.tough = 4,
|
||||
.sheen = 50,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -667,7 +651,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 10,
|
||||
.tough = 4,
|
||||
.sheen = 60,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -696,7 +679,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 2,
|
||||
.tough = 3,
|
||||
.sheen = 70,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -725,7 +707,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 5,
|
||||
.tough = 10,
|
||||
.sheen = 80,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -754,7 +735,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 3,
|
||||
.tough = 10,
|
||||
.sheen = 90,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -783,7 +763,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 1,
|
||||
.tough = 5,
|
||||
.sheen = 100,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -812,7 +791,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 6,
|
||||
.tough = 2,
|
||||
.sheen = 90,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -841,7 +819,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 5,
|
||||
.tough = 3,
|
||||
.sheen = 80,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -870,7 +847,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 8,
|
||||
.tough = 10,
|
||||
.sheen = 70,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -899,7 +875,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 10,
|
||||
.tough = 20,
|
||||
.sheen = 100,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -928,7 +903,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 85,
|
||||
.tough = 35,
|
||||
.sheen = 110,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -957,7 +931,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 10,
|
||||
.tough = 25,
|
||||
.sheen = 120,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -986,7 +959,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 65,
|
||||
.tough = 25,
|
||||
.sheen = 130,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -1015,7 +987,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 10,
|
||||
.tough = 100,
|
||||
.sheen = 140,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -1044,7 +1015,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 35,
|
||||
.tough = 35,
|
||||
.sheen = 150,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -1073,7 +1043,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 40,
|
||||
.tough = 40,
|
||||
.sheen = 100,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -1102,7 +1071,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 10,
|
||||
.tough = 25,
|
||||
.sheen = 110,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -1131,7 +1099,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 30,
|
||||
.tough = 25,
|
||||
.sheen = 120,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -1160,7 +1127,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 40,
|
||||
.tough = 30,
|
||||
.sheen = 130,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -1189,7 +1155,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 75,
|
||||
.tough = 35,
|
||||
.sheen = 140,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -1218,7 +1183,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 30,
|
||||
.tough = 25,
|
||||
.sheen = 150,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -1247,7 +1211,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 25,
|
||||
.tough = 15,
|
||||
.sheen = 100,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -1276,7 +1239,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 60,
|
||||
.tough = 20,
|
||||
.sheen = 110,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -1305,7 +1267,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 15,
|
||||
.tough = 75,
|
||||
.sheen = 120,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -1334,7 +1295,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 30,
|
||||
.tough = 20,
|
||||
.sheen = 100,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -1363,7 +1323,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 20,
|
||||
.tough = 20,
|
||||
.sheen = 110,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -1392,7 +1351,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 20,
|
||||
.tough = 20,
|
||||
.sheen = 120,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -1421,7 +1379,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 30,
|
||||
.tough = 45,
|
||||
.sheen = 130,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -1450,7 +1407,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 20,
|
||||
.tough = 45,
|
||||
.sheen = 140,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -1479,7 +1435,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 20,
|
||||
.tough = 20,
|
||||
.sheen = 150,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -1508,7 +1463,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 25,
|
||||
.tough = 25,
|
||||
.sheen = 140,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -1537,7 +1491,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 20,
|
||||
.tough = 20,
|
||||
.sheen = 130,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -1566,7 +1519,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 45,
|
||||
.tough = 20,
|
||||
.sheen = 120,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -1595,7 +1547,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 100,
|
||||
.tough = 90,
|
||||
.sheen = 200,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -1624,7 +1575,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 35,
|
||||
.tough = 70,
|
||||
.sheen = 210,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -1653,7 +1603,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 70,
|
||||
.tough = 70,
|
||||
.sheen = 220,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -1682,7 +1631,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 75,
|
||||
.tough = 40,
|
||||
.sheen = 230,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -1711,7 +1659,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 70,
|
||||
.tough = 70,
|
||||
.sheen = 240,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -1740,7 +1687,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 80,
|
||||
.tough = 100,
|
||||
.sheen = 250,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -1769,7 +1715,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 70,
|
||||
.tough = 90,
|
||||
.sheen = 200,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -1798,7 +1743,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 50,
|
||||
.tough = 65,
|
||||
.sheen = 210,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -1827,7 +1771,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 60,
|
||||
.tough = 50,
|
||||
.sheen = 220,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -1856,7 +1799,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 45,
|
||||
.tough = 70,
|
||||
.sheen = 230,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -1885,7 +1827,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 40,
|
||||
.tough = 100,
|
||||
.sheen = 240,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -1914,7 +1855,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 50,
|
||||
.tough = 30,
|
||||
.sheen = 250,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -1943,7 +1883,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 50,
|
||||
.tough = 160,
|
||||
.sheen = 255,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -1972,7 +1911,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 70,
|
||||
.tough = 50,
|
||||
.sheen = 210,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -2001,7 +1939,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 35,
|
||||
.tough = 35,
|
||||
.sheen = 220,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -2030,7 +1967,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 100,
|
||||
.tough = 80,
|
||||
.sheen = 200,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -2059,7 +1995,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 35,
|
||||
.tough = 100,
|
||||
.sheen = 210,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -2088,7 +2023,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 50,
|
||||
.tough = 100,
|
||||
.sheen = 220,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -2117,7 +2051,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 40,
|
||||
.tough = 95,
|
||||
.sheen = 230,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -2146,7 +2079,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 50,
|
||||
.tough = 100,
|
||||
.sheen = 240,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -2175,7 +2107,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 80,
|
||||
.tough = 80,
|
||||
.sheen = 250,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -2204,7 +2135,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 40,
|
||||
.tough = 110,
|
||||
.sheen = 240,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -2233,7 +2163,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 25,
|
||||
.tough = 80,
|
||||
.sheen = 230,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -2262,7 +2191,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 35,
|
||||
.tough = 40,
|
||||
.sheen = 220,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -2291,7 +2219,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 40,
|
||||
.tough = 160,
|
||||
.sheen = 255,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -2320,7 +2247,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 150,
|
||||
.tough = 160,
|
||||
.sheen = 255,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -2349,7 +2275,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 185,
|
||||
.tough = 60,
|
||||
.sheen = 255,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -2378,7 +2303,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 110,
|
||||
.tough = 150,
|
||||
.sheen = 255,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -2407,7 +2331,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 30,
|
||||
.tough = 90,
|
||||
.sheen = 255,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -2436,7 +2359,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 230,
|
||||
.tough = 80,
|
||||
.sheen = 255,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -2465,7 +2387,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 130,
|
||||
.tough = 40,
|
||||
.sheen = 255,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -2494,7 +2415,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 150,
|
||||
.tough = 160,
|
||||
.sheen = 255,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -2523,7 +2443,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 130,
|
||||
.tough = 170,
|
||||
.sheen = 255,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -2552,7 +2471,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 75,
|
||||
.tough = 100,
|
||||
.sheen = 255,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -2581,7 +2499,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 40,
|
||||
.tough = 190,
|
||||
.sheen = 255,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -2610,7 +2527,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 240,
|
||||
.tough = 140,
|
||||
.sheen = 255,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -2639,7 +2555,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 35,
|
||||
.tough = 50,
|
||||
.sheen = 255,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -2668,7 +2583,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 115,
|
||||
.tough = 120,
|
||||
.sheen = 255,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -2697,7 +2611,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 220,
|
||||
.tough = 210,
|
||||
.sheen = 255,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -2726,7 +2639,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 80,
|
||||
.tough = 180,
|
||||
.sheen = 255,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -2755,7 +2667,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 130,
|
||||
.tough = 130,
|
||||
.sheen = 255,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -2784,7 +2695,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 120,
|
||||
.tough = 150,
|
||||
.sheen = 255,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -2813,7 +2723,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 170,
|
||||
.tough = 80,
|
||||
.sheen = 255,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -2842,7 +2751,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 150,
|
||||
.tough = 120,
|
||||
.sheen = 255,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -2871,7 +2779,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 120,
|
||||
.tough = 80,
|
||||
.sheen = 255,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -2900,7 +2807,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 80,
|
||||
.tough = 150,
|
||||
.sheen = 255,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -2929,7 +2835,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 110,
|
||||
.tough = 170,
|
||||
.sheen = 255,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
},
|
||||
@ -2958,7 +2863,6 @@ const struct ContestPokemon gContestOpponents[] =
|
||||
.smart = 80,
|
||||
.tough = 190,
|
||||
.sheen = 255,
|
||||
.unk2C = {0},
|
||||
.personality = 0,
|
||||
.otId = 0xFFFF
|
||||
}
|
||||
|
@ -461,12 +461,12 @@ const u32 gContestMiscGfx[] = INCBIN_U32("graphics/contest/misc.4bpp.lz");
|
||||
|
||||
const u32 gContestAudienceGfx[] = INCBIN_U32("graphics/contest/audience.4bpp.lz");
|
||||
|
||||
const u32 gUnknown_08C19168[] = INCBIN_U32("graphics/contest/faces.4bpp.lz");
|
||||
const u32 gContestFaces_Gfx[] = INCBIN_U32("graphics/contest/faces.4bpp.lz");
|
||||
|
||||
const u32 gContestJudgeSymbolsGfx[] = INCBIN_U32("graphics/contest/judge_symbols.4bpp.lz");
|
||||
const u32 gContest3Pal[] = INCBIN_U32("graphics/contest/judge_symbols.gbapal.lz");
|
||||
|
||||
const u8 gTiles_8C19450[] = INCBIN_U8("graphics/contest/heart.4bpp");
|
||||
const u8 gContestSliderHeart_Gfx[] = INCBIN_U8("graphics/contest/slider_heart.4bpp");
|
||||
|
||||
const u32 gUnknownGfx_C19470[] = INCBIN_U32("graphics/unknown/unknown_C19470.4bpp.lz");
|
||||
const u32 gUnknownPal_C19470[] = INCBIN_U32("graphics/unknown/unknown_C19470.gbapal.lz");
|
||||
|
@ -4499,8 +4499,8 @@ void CreateSecretBaseEnemyParty(struct SecretBase *secretBaseRecord)
|
||||
|
||||
for (j = 0; j < MAX_MON_MOVES; j++)
|
||||
{
|
||||
SetMonData(&gEnemyParty[i], MON_DATA_MOVE1 + j, &gBattleResources->secretBase->party.moves[i * 4 + j]);
|
||||
SetMonData(&gEnemyParty[i], MON_DATA_PP1 + j, &gBattleMoves[gBattleResources->secretBase->party.moves[i * 4 + j]].pp);
|
||||
SetMonData(&gEnemyParty[i], MON_DATA_MOVE1 + j, &gBattleResources->secretBase->party.moves[i * MAX_MON_MOVES + j]);
|
||||
SetMonData(&gEnemyParty[i], MON_DATA_PP1 + j, &gBattleMoves[gBattleResources->secretBase->party.moves[i * MAX_MON_MOVES + j]].pp);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user