diff options
author | GriffinR <griffin.g.richards@gmail.com> | 2020-07-24 00:14:53 -0400 |
---|---|---|
committer | GriffinR <griffin.g.richards@gmail.com> | 2020-07-24 00:14:53 -0400 |
commit | aca50c87beaa88f66ca2a8602c23411fd20b0884 (patch) | |
tree | 7d6308e2012a2a0f13a18884e9d0301d11c84252 /src | |
parent | 52a4428ba624b19569418a9c72f60d3494fb71eb (diff) |
Continue new contest documentation
Diffstat (limited to 'src')
-rw-r--r-- | src/contest.c | 376 | ||||
-rw-r--r-- | src/contest_ai.c | 46 | ||||
-rw-r--r-- | src/contest_effect.c | 6 | ||||
-rw-r--r-- | src/contest_link.c | 18 | ||||
-rw-r--r-- | src/contest_link_util.c | 21 | ||||
-rw-r--r-- | src/contest_util.c | 14 | ||||
-rw-r--r-- | src/data/contest_opponents.h | 36 | ||||
-rwxr-xr-x | src/script_pokemon_util_80F87D8.c | 4 |
8 files changed, 266 insertions, 255 deletions
diff --git a/src/contest.c b/src/contest.c index 76650da18..b90f89498 100644 --- a/src/contest.c +++ b/src/contest.c @@ -64,13 +64,13 @@ static void Task_ShowMoveSelectScreen(u8 taskId); static void Task_HandleMoveSelectInput(u8 taskId); static void DrawMoveSelectArrow(s8); static void EraseMoveSelectArrow(s8); -static void Task_SelectMove(u8 taskId); +static void Task_SelectedMove(u8 taskId); static void Task_EndCommunicateMoveSelections(u8 taskId); static void Task_HideMoveSelectScreen(u8 taskId); static void Task_HideApplauseMeterForAppealStart(u8 taskId); static void Task_WaitHideApplauseMeterForAppealStart(u8 taskId); static void sub_80D8A88(u8 taskId); -static void sub_80D8B38(u8 taskId); +static void Task_DoAppeals(u8 taskId); static void sub_80DA110(u8); static void sub_80DA134(struct Sprite *); static void sub_80DA164(struct Sprite *); @@ -86,14 +86,14 @@ static void sub_80DA49C(u8); static void sub_80DA4CC(u8); static void sub_80DA51C(u8); static void sub_80DA5B4(u8); -static void sub_80DA5E8(u8); -static void sub_80DA6B4(u8); -static void sub_80DA700(u8); -static void sub_80DA740(u8); -static void sub_80DA7A0(u8); -static void sub_80DA7EC(u8); -static void sub_80DA830(u8); -static void sub_80DA874(void); +static void Task_EndAppeals(u8); +static void Task_WaitForOutOfTimeMsg(u8); +static void Task_CoverAppealPanelForEnd(u8); +static void Task_TryCommunicateFinalStandings(u8); +static void Task_CommunicateFinalStandings(u8); +static void Task_EndCommunicateFinalStandings(u8); +static void Task_ContestReturnToField(u8); +static void FieldCB_ContestReturnToField(void); static bool8 sub_80DA8A4(void); static void PrintContestantTrainerName(u8); static void PrintContestantTrainerNameWithColor(u8 a0, u8 a1); @@ -101,7 +101,7 @@ static void PrintContestantMonName(u8); static void PrintContestantMonNameWithColor(u8, u8); static u8 sub_80DB0C4(void); static u8 sub_80DB120(void); -static u8 sub_80DB174(u16, u32, u32, u32); +static u8 CreateContestantSprite(u16, u32, u32, u32); static void PrintContestMoveDescription(u16); static u16 SanitizeSpecies(u16); static void ContestClearGeneralTextWindow(void); @@ -153,7 +153,7 @@ static void ShowAndUpdateApplauseMeter(s8 unused); static void sub_80DDE0C(void); static void UpdateApplauseMeter(void); static void RankContestants(void); -static void sub_80DBA18(void); +static void SetAttentionLevels(void); static void UpdateHeartSliders(void); static bool8 SlidersDoneUpdating(void); static void ContestBG_FillBoxWithTile(u8, u16, u8, u8, u8, u8, u8); @@ -217,6 +217,9 @@ enum #define MOVE_WINDOWS_START CONTEST_WINDOW_MOVE0 +#define TAG_CONTEST_SYMBOLS_PAL 0xABE0 + +#define TAG_JUDGE_SYMBOLS_GFX 0xABE0 #define TAG_FACES_GFX 0xABE1 #define TAG_APPLAUSE_METER 0xABE2 @@ -236,10 +239,10 @@ enum { // EWRAM vars. EWRAM_DATA struct ContestPokemon gContestMons[CONTESTANT_COUNT] = {0}; -EWRAM_DATA s16 gContestMonConditions[CONTESTANT_COUNT] = {0}; -EWRAM_DATA s16 gContestMonTotalPoints[CONTESTANT_COUNT] = {0}; -EWRAM_DATA s16 gUnknown_02039F10[CONTESTANT_COUNT] = {0}; -EWRAM_DATA s16 gContestMonRound2Points[CONTESTANT_COUNT] = {0}; +EWRAM_DATA s16 gContestMonRound1Points[CONTESTANT_COUNT] = {0}; // "Round 1" points are based on condition +EWRAM_DATA s16 gContestMonTotalPoints[CONTESTANT_COUNT] = {0}; // Round 1 points + Round 2 points +EWRAM_DATA s16 gContestMonAppealPointTotals[CONTESTANT_COUNT] = {0}; +EWRAM_DATA s16 gContestMonRound2Points[CONTESTANT_COUNT] = {0}; // "Round 2" points are just appeal points * 2 EWRAM_DATA u8 gContestFinalStandings[CONTESTANT_COUNT] = {0}; EWRAM_DATA u8 gContestMonPartyIndex = 0; EWRAM_DATA u8 gContestPlayerMonIndex = 0; @@ -331,7 +334,7 @@ static const union AffineAnimCmd* const sAffineAnims_SliderHeart[] = static const struct SpriteTemplate sSpriteTemplate_SliderHeart = { .tileTag = TAG_SLIDER_HEART, - .paletteTag = 0xABE0, + .paletteTag = TAG_CONTEST_SYMBOLS_PAL, .oam = &sOam_SliderHeart, .anims = gDummySpriteAnimTable, .images = NULL, @@ -454,14 +457,15 @@ static const struct SubspriteTable sSubspriteTable_NextTurn[] = } }; -const struct CompressedSpriteSheet gUnknown_08587B88 = +// Unused +static const struct CompressedSpriteSheet sSpriteSheet_Faces = { .data = gContestFaces_Gfx, .size = 0x180, .tag = TAG_FACES_GFX }; -const struct OamData gOamData_8587B90 = +static const struct OamData sOam_Faces = { .y = 0, .affineMode = ST_OAM_AFFINE_OFF, @@ -475,11 +479,12 @@ const struct OamData gOamData_8587B90 = .paletteNum = 0, }; -const struct SpriteTemplate gSpriteTemplate_8587B98 = +// Unused +static const struct SpriteTemplate sSpriteTemplate_Faces = { .tileTag = TAG_FACES_GFX, - .paletteTag = 0xABE0, - .oam = &gOamData_8587B90, + .paletteTag = TAG_CONTEST_SYMBOLS_PAL, + .oam = &sOam_Faces, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, @@ -556,23 +561,23 @@ const struct CompressedSpriteSheet gUnknown_08587C00 = .tag = 0x4E21 }; -const struct CompressedSpriteSheet gUnknown_08587C08 = +static const struct CompressedSpriteSheet sSpriteSheet_JudgeSymbols = { .data = gContestJudgeSymbolsGfx, .size = 0x380, - .tag = 0xABE0 + .tag = TAG_JUDGE_SYMBOLS_GFX }; const struct CompressedSpritePalette gUnknown_08587C10 = { .data = gContest3Pal, - .tag = 0xABE0 + .tag = TAG_CONTEST_SYMBOLS_PAL }; const struct SpriteTemplate gSpriteTemplate_8587C18 = { - .tileTag = 0xABE0, - .paletteTag = 0xABE0, + .tileTag = TAG_JUDGE_SYMBOLS_GFX, + .paletteTag = TAG_CONTEST_SYMBOLS_PAL, .oam = &gOamData_AffineOff_ObjNormal_16x16, .anims = gDummySpriteAnimTable, .images = NULL, @@ -1340,7 +1345,7 @@ static void Task_DisplayAppealNumberText(u8 taskId) gBattle_BG2_Y = 0; ContestDebugDoPrint(); DmaCopy32Defvars(3, gPlttBufferUnfaded, eUnknownHeap1A004.unk18204, PLTT_BUFFER_SIZE * 2); - ConvertIntToDecimalStringN(gStringVar1, eContest.turnNumber + 1, STR_CONV_MODE_LEFT_ALIGN, 1); + ConvertIntToDecimalStringN(gStringVar1, eContest.appealNumber + 1, STR_CONV_MODE_LEFT_ALIGN, 1); if (!Contest_IsMonsTurnDisabled(gContestPlayerMonIndex)) StringCopy(gDisplayedStringBattle, gText_AppealNumWhichMoveWillBePlayed); else @@ -1374,7 +1379,7 @@ static void Task_TryShowMoveSelectScreen(u8 taskId) else { // Skip move selection (selected move will be MOVE_NONE) - gTasks[taskId].func = Task_SelectMove; + gTasks[taskId].func = Task_SelectedMove; } } } @@ -1431,7 +1436,7 @@ static void Task_HandleMoveSelectInput(u8 taskId) if (gMain.newKeys & A_BUTTON) { PlaySE(SE_SELECT); - gTasks[taskId].func = Task_SelectMove; + gTasks[taskId].func = Task_SelectedMove; } else { @@ -1441,7 +1446,7 @@ static void Task_HandleMoveSelectInput(u8 taskId) // Cancel move selection PlaySE(SE_SELECT); SetBottomSliderHeartsInvisibility(FALSE); - ConvertIntToDecimalStringN(gStringVar1, eContest.turnNumber + 1, STR_CONV_MODE_LEFT_ALIGN, 1); + ConvertIntToDecimalStringN(gStringVar1, eContest.appealNumber + 1, STR_CONV_MODE_LEFT_ALIGN, 1); if (!Contest_IsMonsTurnDisabled(gContestPlayerMonIndex)) StringCopy(gDisplayedStringBattle, gText_AppealNumWhichMoveWillBePlayed); else @@ -1493,7 +1498,7 @@ static void EraseMoveSelectArrow(s8 moveIndex) ContestBG_FillBoxWithIncrementingTile(2, 11, 0, 32 + moveIndex * 2, 2, 1, 17, 1); } -static void Task_SelectMove(u8 taskId) +static void Task_SelectedMove(u8 taskId) { if (gLinkContestFlags & LINK_CONTEST_FLAG_IS_LINK) { @@ -1568,7 +1573,7 @@ static void sub_80D8A88(u8 taskId) { if (++gTasks[taskId].data[0] > 19) { - eContest.unk19214 = 0; + eContest.turnNumber = 0; eContest.unk1921C = gRngValue; if ((gLinkContestFlags & LINK_CONTEST_FLAG_IS_LINK) && sub_80DA8A4()) { @@ -1580,46 +1585,48 @@ static void sub_80D8A88(u8 taskId) } } gTasks[taskId].data[0] = 0; - gTasks[taskId].func = sub_80D8B38; + gTasks[taskId].func = Task_DoAppeals; } } -static void sub_80D8B38(u8 taskId) +#define tState data[0] + +static void Task_DoAppeals(u8 taskId) { u8 spriteId; s32 i; - u8 r6 = eContest.unk19215; + u8 r6 = eContest.currentContestant; s8 r3; - switch (gTasks[taskId].data[0]) + switch (gTasks[taskId].tState) { case 0: ContestDebugDoPrint(); - for (i = 0; eContest.unk19214 != gContestResources->field_8->turnOrder[i]; i++) + for (i = 0; eContest.turnNumber != gContestResources->field_8->turnOrder[i]; i++) ; - eContest.unk19215 = i; - r6 = eContest.unk19215; + eContest.currentContestant = i; + r6 = eContest.currentContestant; if (gLinkContestFlags & LINK_CONTEST_FLAG_IS_LINK) { u8 taskId2; eContest.unk1920B_2 = 1; if (sub_80DA8A4()) - sub_80DD080(eContest.unk19215); + sub_80DD080(eContest.currentContestant); taskId2 = CreateTask(sub_80FCC88, 0); SetTaskFuncWithFollowupFunc(taskId2, sub_80FCC88, sub_80DA110); ContestPrintLinkStandby(); - gTasks[taskId].data[0] = 1; + gTasks[taskId].tState = 1; } else { - sub_80DD080(eContest.unk19215); - gTasks[taskId].data[0] = 2; + sub_80DD080(eContest.currentContestant); + gTasks[taskId].tState = 2; } return; case 1: if (!eContest.unk1920B_2) - gTasks[taskId].data[0] = 2; + gTasks[taskId].tState = 2; return; case 2: sub_80DF080(r6); @@ -1627,44 +1634,44 @@ static void sub_80D8B38(u8 taskId) if (eContestantStatus[r6].numTurnsSkipped != 0 || eContestantStatus[r6].noMoreTurns) { - gTasks[taskId].data[0] = 31; + gTasks[taskId].tState = 31; } else { ContestClearGeneralTextWindow(); gTasks[taskId].data[10] = 0; - gTasks[taskId].data[0] = 3; + gTasks[taskId].tState = 3; } return; case 3: - for (i = 0; i < 4; i++) + for (i = 0; i < CONTESTANT_COUNT; i++) gBattleMonForms[i] = 0; memset(gContestResources->field_18, 0, sizeof(*gContestResources->field_18)); - sub_80DE9DC(eContest.unk19215); - spriteId = sub_80DB174( - gContestMons[eContest.unk19215].species, - gContestMons[eContest.unk19215].otId, - gContestMons[eContest.unk19215].personality, - eContest.unk19215); + sub_80DE9DC(eContest.currentContestant); + spriteId = CreateContestantSprite( + gContestMons[eContest.currentContestant].species, + gContestMons[eContest.currentContestant].otId, + gContestMons[eContest.currentContestant].personality, + eContest.currentContestant); gSprites[spriteId].pos2.x = 120; gSprites[spriteId].callback = sub_80DA134; gTasks[taskId].data[2] = spriteId; gBattlerSpriteIds[gBattlerAttacker] = spriteId; - sub_80DCBE8(sub_80DC9EC(eContest.unk19215), FALSE); - gTasks[taskId].data[0] = 4; + sub_80DCBE8(sub_80DC9EC(eContest.currentContestant), FALSE); + gTasks[taskId].tState = 4; return; case 4: spriteId = gTasks[taskId].data[2]; if (gSprites[spriteId].callback == SpriteCallbackDummy) { if (!gContestResources->field_14[r6].unk2_1) - gTasks[taskId].data[0] = 5; + gTasks[taskId].tState = 5; } return; case 5: if (eContestantStatus[r6].nervous) { - gTasks[taskId].data[0] = 33; + gTasks[taskId].tState = 33; } else { @@ -1676,25 +1683,25 @@ static void sub_80D8B38(u8 taskId) StringCopy(gStringVar2, sInvalidContestMoveNames[eContestantStatus[r6].moveCategory]); StringExpandPlaceholders(gStringVar4, gText_MonAppealedWithMove); Contest_StartTextPrinter(gStringVar4, 1); - gTasks[taskId].data[0] = 6; + gTasks[taskId].tState = 6; } return; case 6: if (!Contest_RunTextPrinters()) { eContest.unk1925E = 0; - gTasks[taskId].data[0] = 7; + gTasks[taskId].tState = 7; } return; case 7: { - u16 move = SanitizeMove(eContestantStatus[eContest.unk19215].currMove); + u16 move = SanitizeMove(eContestantStatus[eContest.currentContestant].currMove); - sub_80DE864(eContest.unk19215); - sub_80DE9DC(eContest.unk19215); + sub_80DE864(eContest.currentContestant); + sub_80DE9DC(eContest.currentContestant); SelectContestMoveBankTarget(move); DoMoveAnim(move); - gTasks[taskId].data[0] = 8; + gTasks[taskId].tState = 8; } return; case 8: @@ -1705,14 +1712,14 @@ static void sub_80D8B38(u8 taskId) if (eContest.unk1925E != 0) { gTasks[taskId].data[10] = 0; - gTasks[taskId].data[0] = 9; + gTasks[taskId].tState = 9; } else { if (!eContestantStatus[r6].hasJudgesAttention) sub_80DC674(r6); sub_80DE12C(); - gTasks[taskId].data[0] = 23; + gTasks[taskId].tState = 23; } } return; @@ -1720,7 +1727,7 @@ static void sub_80D8B38(u8 taskId) if (gTasks[taskId].data[10]++ > 30) { gTasks[taskId].data[10] = 0; - gTasks[taskId].data[0] = 7; + gTasks[taskId].tState = 7; } return; case 23: @@ -1729,7 +1736,7 @@ static void sub_80D8B38(u8 taskId) { sub_80DD45C(r6, eContestantStatus[r6].effectStringId); eContestantStatus[r6].effectStringId = CONTEST_STRING_NONE; - gTasks[taskId].data[0] = 24; + gTasks[taskId].tState = 24; } else { @@ -1744,22 +1751,22 @@ static void sub_80D8B38(u8 taskId) { sub_80DD45C(r6, eContestantStatus[r6].effectStringId2); eContestantStatus[r6].effectStringId2 = CONTEST_STRING_NONE; - gTasks[taskId].data[0] = 24; + gTasks[taskId].tState = 24; } else { - gTasks[taskId].data[0] = 48; + gTasks[taskId].tState = 48; } } else { - gTasks[taskId].data[0] = 48; + gTasks[taskId].tState = 48; } } return; case 24: if (!Contest_RunTextPrinters()) - gTasks[taskId].data[0] = 23; + gTasks[taskId].tState = 23; return; case 48: if (eContestantStatus[r6].turnOrderModAction == 1) @@ -1776,62 +1783,62 @@ static void sub_80D8B38(u8 taskId) } else { - gTasks[taskId].data[0] = 47; + gTasks[taskId].tState = 47; return; } - gTasks[taskId].data[0] = 49; + gTasks[taskId].tState = 49; return; case 49: if (!eContest.unk1920A_4) - gTasks[taskId].data[0] = 47; + gTasks[taskId].tState = 47; return; case 47: sub_80DE008(TRUE); - gTasks[taskId].data[0] = 12; + gTasks[taskId].tState = 12; return; case 12: sub_80DC028(0, eContestantStatus[r6].appeal2, r6); - gTasks[taskId].data[0] = 13; + gTasks[taskId].tState = 13; return; case 13: - if (!gContestResources->field_14[eContest.unk19215].unk2_2) - gTasks[taskId].data[0] = 35; + if (!gContestResources->field_14[eContest.currentContestant].unk2_2) + gTasks[taskId].tState = 35; return; case 35: if (eContestantStatus[r6].conditionMod == 1) sub_80DD720(8); - gTasks[taskId].data[0] = 36; + gTasks[taskId].tState = 36; return; case 36: if (!eContest.unk1920A_4) - gTasks[taskId].data[0] = 37; + gTasks[taskId].tState = 37; return; case 37: if (sub_80DB5B8(r6, 1)) { gTasks[taskId].data[10] = 0; - gTasks[taskId].data[0] = 38; + gTasks[taskId].tState = 38; } else { - gTasks[taskId].data[0] = 50; + gTasks[taskId].tState = 50; } return; case 38: if (++gTasks[taskId].data[10] > 20) { gTasks[taskId].data[10] = 0; - gTasks[taskId].data[0] = 50; + gTasks[taskId].tState = 50; } return; case 50: if (sub_80DB798(r6)) PlaySE(SE_C_PASI); - gTasks[taskId].data[0] = 25; + gTasks[taskId].tState = 25; return; case 25: gTasks[taskId].data[1] = 0; - gTasks[taskId].data[0] = 26; + gTasks[taskId].tState = 26; return; case 26: { @@ -1858,32 +1865,32 @@ static void sub_80D8B38(u8 taskId) gTasks[taskId].data[1] = gContestantTurnOrder[r2]; sub_80DD45C(r2, eContestantStatus[r2].effectStringId); eContestantStatus[r2].effectStringId = CONTEST_STRING_NONE; - gTasks[taskId].data[0] = 27; + gTasks[taskId].tState = 27; } else { gTasks[taskId].data[1] = 0; gTasks[taskId].data[10] = 0; - gTasks[taskId].data[0] = 51; + gTasks[taskId].tState = 51; sub_80DB884(); } } return; case 27: if (!Contest_RunTextPrinters()) - gTasks[taskId].data[0] = 28; + gTasks[taskId].tState = 28; return; case 28: for (i = 0; gTasks[taskId].data[1] != gContestantTurnOrder[i]; i++) ; sub_80DC028(eContestantStatus[i].appeal2 + eContestantStatus[i].jam, -eContestantStatus[i].jam, i); - gTasks[taskId].data[0] = 29; + gTasks[taskId].tState = 29; return; case 29: for (i = 0; gTasks[taskId].data[1] != gContestantTurnOrder[i]; i++) ; if (!gContestResources->field_14[i].unk2_2) - gTasks[taskId].data[0] = 39; + gTasks[taskId].tState = 39; return; case 39: for (i = 0; gTasks[taskId].data[1] != gContestantTurnOrder[i]; i++) @@ -1891,18 +1898,18 @@ static void sub_80D8B38(u8 taskId) if (sub_80DB5B8(i, 1)) { gTasks[taskId].data[10] = 0; - gTasks[taskId].data[0] = 40; + gTasks[taskId].tState = 40; } else { - gTasks[taskId].data[0] = 30; + gTasks[taskId].tState = 30; } return; case 40: if (++gTasks[taskId].data[10] > 20) { gTasks[taskId].data[10] = 0; - gTasks[taskId].data[0] = 30; + gTasks[taskId].tState = 30; } return; case 30: @@ -1921,7 +1928,7 @@ static void sub_80D8B38(u8 taskId) eContestantStatus[i].judgesAttentionWasRemoved = 0; } gTasks[taskId].data[1]++; - gTasks[taskId].data[0] = 26; + gTasks[taskId].tState = 26; return; case 51: if (gTasks[taskId].data[10]++ > 9) @@ -1935,16 +1942,16 @@ static void sub_80D8B38(u8 taskId) StringExpandPlaceholders(gStringVar4, gText_MonCantAppealNextTurn); Contest_StartTextPrinter(gStringVar4, 1); } - gTasks[taskId].data[0] = 52; + gTasks[taskId].tState = 52; } return; case 52: if (!Contest_RunTextPrinters()) { if (!eContestantStatus[r6].unk15_6) - gTasks[taskId].data[0] = 17; + gTasks[taskId].tState = 17; else - gTasks[taskId].data[0] = 14; + gTasks[taskId].tState = 14; } return; case 14: @@ -1960,7 +1967,7 @@ static void sub_80D8B38(u8 taskId) Contest_StartTextPrinter(gText_AppealComboWentOverExcellently, TRUE); sub_80DD720(3); gTasks[taskId].data[10] = 0; - gTasks[taskId].data[0] = 45; + gTasks[taskId].tState = 45; } else { @@ -1970,14 +1977,14 @@ static void sub_80D8B38(u8 taskId) Contest_StartTextPrinter(gStringVar4, 1); sub_80DD720(2); gTasks[taskId].data[10] = 0; - gTasks[taskId].data[0] = 45; + gTasks[taskId].tState = 45; } return; case 45: if (!eContest.unk1920A_4) { - sub_80DC9B4(eContest.unk19215); - gTasks[taskId].data[0] = 15; + sub_80DC9B4(eContest.currentContestant); + gTasks[taskId].tState = 15; } return; case 15: @@ -1993,7 +2000,7 @@ static void sub_80D8B38(u8 taskId) r6); eContestantStatus[r6].appeal2 += eContestantStatus[r6].unk17; } - gTasks[taskId].data[0] = 16; + gTasks[taskId].tState = 16; } } return; @@ -2001,7 +2008,7 @@ static void sub_80D8B38(u8 taskId) if (!gContestResources->field_14[r6].unk2_2) { gTasks[taskId].data[10] = 0; - gTasks[taskId].data[0] = 17; + gTasks[taskId].tState = 17; } return; case 17: @@ -2013,23 +2020,23 @@ static void sub_80D8B38(u8 taskId) Contest_StartTextPrinter(gStringVar4, TRUE); gTasks[taskId].data[10] = 0; sub_80DD720(0); - gTasks[taskId].data[0] = 46; + gTasks[taskId].tState = 46; } else { - gTasks[taskId].data[0] = 41; + gTasks[taskId].tState = 41; } return; case 46: if (!eContest.unk1920A_4) - gTasks[taskId].data[0] = 19; + gTasks[taskId].tState = 19; return; case 19: if (!Contest_RunTextPrinters()) { sub_80DC028(eContestantStatus[r6].appeal2, -eContestantStatus[r6].unk18, r6); eContestantStatus[r6].appeal2 -= eContestantStatus[r6].unk18; - gTasks[taskId].data[0] = 18; + gTasks[taskId].tState = 18; } return; case 18: @@ -2038,13 +2045,13 @@ static void sub_80D8B38(u8 taskId) { gTasks[taskId].data[10] = 0; ContestClearGeneralTextWindow(); - gTasks[taskId].data[0] = 41; + gTasks[taskId].tState = 41; } return; case 41: if (gContestResources->field_10->excitementFrozen && r6 != gContestResources->field_10->excitementFreezer) { - gTasks[taskId].data[0] = 57; + gTasks[taskId].tState = 57; } else { @@ -2070,7 +2077,7 @@ static void sub_80D8B38(u8 taskId) eContest.applauseLevel = 0; if (r3 == 0) { - gTasks[taskId].data[0] = 55; + gTasks[taskId].tState = 55; } else { @@ -2084,9 +2091,9 @@ static void sub_80D8B38(u8 taskId) gTasks[taskId].data[10] = 0; gTasks[taskId].data[11] = 0; if (r3 < 0) - gTasks[taskId].data[0] = 53; + gTasks[taskId].tState = 53; else - gTasks[taskId].data[0] = 54; + gTasks[taskId].tState = 54; } } return; @@ -2121,7 +2128,7 @@ static void sub_80D8B38(u8 taskId) { gTasks[taskId].data[10] = 0; gTasks[taskId].data[11] = 0; - gTasks[taskId].data[0] = 43; + gTasks[taskId].tState = 43; } break; } @@ -2172,7 +2179,7 @@ static void sub_80D8B38(u8 taskId) { gTasks[taskId].data[10] = 0; gTasks[taskId].data[11] = 0; - gTasks[taskId].data[0] = 43; + gTasks[taskId].tState = 43; } break; } @@ -2181,7 +2188,7 @@ static void sub_80D8B38(u8 taskId) if (!gContestResources->field_14[r6].unk2_2) { ContestClearGeneralTextWindow(); - gTasks[taskId].data[0] = 55; + gTasks[taskId].tState = 55; } return; case 57: @@ -2191,7 +2198,7 @@ static void sub_80D8B38(u8 taskId) StringCopy(gStringVar2, gMoveNames[eContestantStatus[r6].currMove]); StringExpandPlaceholders(gStringVar4, gText_CrowdContinuesToWatchMon); Contest_StartTextPrinter(gStringVar4, TRUE); - gTasks[taskId].data[0] = 58; + gTasks[taskId].tState = 58; return; case 58: if (!Contest_RunTextPrinters()) @@ -2199,14 +2206,14 @@ static void sub_80D8B38(u8 taskId) ContestClearGeneralTextWindow(); StringExpandPlaceholders(gStringVar4, gText_MonsMoveIsIgnored); Contest_StartTextPrinter(gStringVar4, TRUE); - gTasks[taskId].data[0] = 59; + gTasks[taskId].tState = 59; } return; case 59: if (!Contest_RunTextPrinters()) { ContestClearGeneralTextWindow(); - gTasks[taskId].data[0] = 55; + gTasks[taskId].tState = 55; } return; case 33: @@ -2217,15 +2224,15 @@ static void sub_80D8B38(u8 taskId) StringCopy(gStringVar2, gMoveNames[eContestantStatus[r6].currMove]); StringExpandPlaceholders(gStringVar4, gText_MonWasTooNervousToMove); Contest_StartTextPrinter(gStringVar4, TRUE); - gTasks[taskId].data[0] = 34; + gTasks[taskId].tState = 34; return; case 34: if (!Contest_RunTextPrinters()) - gTasks[taskId].data[0] = 55; + gTasks[taskId].tState = 55; return; case 55: TryMoveApplauseMeterOffscreen(); - gTasks[taskId].data[0] = 56; + gTasks[taskId].tState = 56; return; case 56: if (!eContest.applauseMeterIsMoving) @@ -2235,13 +2242,13 @@ static void sub_80D8B38(u8 taskId) eContest.applauseLevel = 0; UpdateApplauseMeter(); } - gTasks[taskId].data[0] = 10; + gTasks[taskId].tState = 10; } return; case 10: spriteId = gTasks[taskId].data[2]; gSprites[spriteId].callback = sub_80DA164; - gTasks[taskId].data[0] = 11; + gTasks[taskId].tState = 11; return; case 11: spriteId = gTasks[taskId].data[2]; @@ -2249,42 +2256,42 @@ static void sub_80D8B38(u8 taskId) { FreeSpriteOamMatrix(&gSprites[spriteId]); DestroySprite(&gSprites[spriteId]); - gTasks[taskId].data[0] = 20; + gTasks[taskId].tState = 20; } return; case 20: gTasks[taskId].data[10] = 0; - gTasks[taskId].data[0] = 21; + gTasks[taskId].tState = 21; return; case 31: ContestClearGeneralTextWindow(); StringCopy(gStringVar1, gContestMons[r6].nickname); StringExpandPlaceholders(gStringVar4, gText_MonWasWatchingOthers); Contest_StartTextPrinter(gStringVar4, TRUE); - gTasks[taskId].data[0] = 32; + gTasks[taskId].tState = 32; return; case 32: if (!Contest_RunTextPrinters()) - gTasks[taskId].data[0] = 21; + gTasks[taskId].tState = 21; return; case 21: if (++gTasks[taskId].data[10] > 29) { gTasks[taskId].data[10] = 0; - gTasks[taskId].data[0] = 22; + gTasks[taskId].tState = 22; } return; case 22: - if (++eContest.unk19214 == 4) + if (++eContest.turnNumber == CONTESTANT_COUNT) { - gTasks[taskId].data[0] = 0; + gTasks[taskId].tState = 0; gTasks[taskId].data[1] = 0; gTasks[taskId].data[2] = 0; gTasks[taskId].func = sub_80DA198; } else { - gTasks[taskId].data[0] = 0; + gTasks[taskId].tState = 0; } return; } @@ -2335,7 +2342,7 @@ static void sub_80DA198(u8 taskId) if (sub_80DA8A4()) { RankContestants(); - sub_80DBA18(); + SetAttentionLevels(); } taskId2 = CreateTask(sub_80FCC88, 0); SetTaskFuncWithFollowupFunc(taskId2, sub_80FCC88, sub_80DA110); @@ -2345,7 +2352,7 @@ static void sub_80DA198(u8 taskId) else { RankContestants(); - sub_80DBA18(); + SetAttentionLevels(); gTasks[taskId].data[0] = 2; } break; @@ -2485,10 +2492,10 @@ static void sub_80DA51C(u8 taskId) ((vBgCnt *)&sp2)->priority = 0; SetGpuReg(REG_OFFSET_BG0CNT, sp0); SetGpuReg(REG_OFFSET_BG2CNT, sp2); - eContest.turnNumber++; - if (eContest.turnNumber == 5) + eContest.appealNumber++; + if (eContest.appealNumber == CONTEST_NUM_APPEALS) { - gTasks[taskId].func = sub_80DA5E8; + gTasks[taskId].func = Task_EndAppeals; } else { @@ -2503,14 +2510,14 @@ static void sub_80DA5B4(u8 taskId) gTasks[taskId].func = Task_DisplayAppealNumberText; } -static void sub_80DA5E8(u8 taskId) +static void Task_EndAppeals(u8 taskId) { s32 i; gBattle_BG0_Y = 0; gBattle_BG2_Y = 0; for (i = 0; i < CONTESTANT_COUNT; i++) - gUnknown_02039F10[i] = eContestantStatus[i].pointTotal; + gContestMonAppealPointTotals[i] = eContestantStatus[i].pointTotal; CalculateFinalScores(); ContestClearGeneralTextWindow(); if (!(gLinkContestFlags & LINK_CONTEST_FLAG_IS_LINK)) @@ -2525,10 +2532,10 @@ static void sub_80DA5E8(u8 taskId) StringExpandPlaceholders(gStringVar4, gText_AllOutOfAppealTime); Contest_StartTextPrinter(gStringVar4, TRUE); gTasks[taskId].data[2] = 0; - gTasks[taskId].func = sub_80DA6B4; + gTasks[taskId].func = Task_WaitForOutOfTimeMsg; } -static void sub_80DA6B4(u8 taskId) +static void Task_WaitForOutOfTimeMsg(u8 taskId) { if (!Contest_RunTextPrinters()) { @@ -2537,62 +2544,62 @@ static void sub_80DA6B4(u8 taskId) gBattle_BG1_Y = 160; PlaySE12WithPanning(SE_C_MAKU_D, 0); gTasks[taskId].data[0] = 0; - gTasks[taskId].func = sub_80DA700; + gTasks[taskId].func = Task_CoverAppealPanelForEnd; } } -static void sub_80DA700(u8 taskId) +static void Task_CoverAppealPanelForEnd(u8 taskId) { gBattle_BG1_Y -= 7; if ((s16)gBattle_BG1_Y < 0) gBattle_BG1_Y = 0; if (gBattle_BG1_Y == 0) { - gTasks[taskId].func = sub_80DA740; + gTasks[taskId].func = Task_TryCommunicateFinalStandings; gTasks[taskId].data[0] = 0; } } -static void sub_80DA740(u8 taskId) +static void Task_TryCommunicateFinalStandings(u8 taskId) { if (gTasks[taskId].data[0]++ >= 50) { gTasks[taskId].data[0] = 0; if (gLinkContestFlags & LINK_CONTEST_FLAG_IS_LINK) { - gTasks[taskId].func = sub_80DA7A0; + gTasks[taskId].func = Task_CommunicateFinalStandings; } else { BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK); - gTasks[taskId].func = sub_80DA830; + gTasks[taskId].func = Task_ContestReturnToField; } } } -static void sub_80DA7A0(u8 taskId) +static void Task_CommunicateFinalStandings(u8 taskId) { - u8 taskId2 = CreateTask(sub_80FCACC, 0); + u8 taskId2 = CreateTask(Task_LinkContest_CommunicateFinalStandings, 0); - SetTaskFuncWithFollowupFunc(taskId2, sub_80FCACC, sub_80DA7EC); + SetTaskFuncWithFollowupFunc(taskId2, Task_LinkContest_CommunicateFinalStandings, Task_EndCommunicateFinalStandings); gTasks[taskId].func = TaskDummy1; ContestPrintLinkStandby(); SetBottomSliderHeartsInvisibility(FALSE); } -static void sub_80DA7EC(u8 taskId) +static void Task_EndCommunicateFinalStandings(u8 taskId) { DestroyTask(taskId); BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK); - gTasks[eContest.mainTaskId].func = sub_80DA830; + gTasks[eContest.mainTaskId].func = Task_ContestReturnToField; } -static void sub_80DA830(u8 taskId) +static void Task_ContestReturnToField(u8 taskId) { if (!gPaletteFade.active) { DestroyTask(taskId); - gFieldCallback = sub_80DA874; + gFieldCallback = FieldCB_ContestReturnToField; FreeAllWindowBuffers(); FreeContestResources(); FreeMonSpritesGfx(); @@ -2600,7 +2607,7 @@ static void sub_80DA830(u8 taskId) } } -static void sub_80DA874(void) +static void FieldCB_ContestReturnToField(void) { ScriptContext2_Disable(); EnableBothScriptContexts(); @@ -2696,33 +2703,33 @@ void CreateContestMonFromParty(u8 partyIndex) gContestMons[gContestPlayerMonIndex].tough = tough; } -void sub_80DAB8C(u8 contestType, u8 rank) +void SetContestants(u8 contestType, u8 rank) { s32 i; u8 opponentsCount = 0; u8 opponents[100]; - bool8 r7 = FALSE; - const u8 * r3; + bool8 allowPostgameContestants = FALSE; + const u8 * filter; TryPutPlayerLast(); if (FlagGet(FLAG_SYS_GAME_CLEAR) && !(gLinkContestFlags & LINK_CONTEST_FLAG_IS_LINK)) - r7 = TRUE; + allowPostgameContestants = TRUE; // Find all suitable opponents - r3 = gPostgameContestOpponentFilter; + filter = gPostgameContestOpponentFilter; for (i = 0; i < ARRAY_COUNT(gContestOpponents); i++) { if (rank == gContestOpponents[i].whichRank) { - if (r7 == TRUE) + if (allowPostgameContestants == TRUE) { - if (r3[i] == 1) + if (filter[i] == CONTEST_FILTER_NO_POSTGAME) continue; } else { - if (r3[i] == 2) + if (filter[i] == CONTEST_FILTER_ONLY_POSTGAME) continue; } if (contestType == CONTEST_CATEGORY_COOL && gContestOpponents[i].aiPool_Cool) @@ -2740,7 +2747,7 @@ void sub_80DAB8C(u8 contestType, u8 rank) opponents[opponentsCount] = 0xFF; // Choose three random opponents from the list - for (i = 0; i < 3; i++) + for (i = 0; i < CONTESTANT_COUNT - 1; i++) { u16 rnd = Random() % opponentsCount; s32 j; @@ -2754,15 +2761,16 @@ void sub_80DAB8C(u8 contestType, u8 rank) CreateContestMonFromParty(gContestMonPartyIndex); } -void sub_80DACBC(u8 contestType, u8 rank, bool32 isPostgame) +void SetLinkAIContestants(u8 contestType, u8 rank, bool32 isPostgame) { s32 i, j; u8 opponentsCount = 0; u8 opponents[100]; - if (gNumLinkContestPlayers == 4) + if (gNumLinkContestPlayers == CONTESTANT_COUNT) return; + // Find all suitable AI opponents for (i = 0; i < ARRAY_COUNT(gContestOpponents); i++) { if (rank != gContestOpponents[i].whichRank) @@ -2786,6 +2794,8 @@ void sub_80DACBC(u8 contestType, u8 rank, bool32 isPostgame) opponents[opponentsCount++] = i; } opponents[opponentsCount] = 0xFF; + + // Fill remaining contestant slots with random AI opponents from the list for (i = 0; i < CONTESTANT_COUNT - gNumLinkContestPlayers; i++) { u16 rnd = GetContestRand() % opponentsCount; @@ -2935,7 +2945,7 @@ void sub_80DB09C(u8 contestCategory) s32 i; for (i = 0; i < CONTESTANT_COUNT; i++) - gContestMonConditions[i] = sub_80DAFE0(i, contestCategory); + gContestMonRound1Points[i] = sub_80DAFE0(i, contestCategory); } static u8 sub_80DB0C4(void) @@ -2954,7 +2964,7 @@ static u8 sub_80DB120(void) { u8 spriteId; - LoadCompressedSpriteSheet(&gUnknown_08587C08); + LoadCompressedSpriteSheet(&sSpriteSheet_JudgeSymbols); LoadCompressedSpritePalette(&gUnknown_08587C10); spriteId = CreateSprite(&gSpriteTemplate_8587C18, 96, 10, 29); gSprites[spriteId].invisible = TRUE; @@ -2962,7 +2972,7 @@ static u8 sub_80DB120(void) return spriteId; } -static u8 sub_80DB174(u16 species, u32 otId, u32 personality, u32 index) +static u8 CreateContestantSprite(u16 species, u32 otId, u32 personality, u32 index) { u8 spriteId; species = SanitizeSpecies(species); @@ -3300,7 +3310,7 @@ static void RankContestants(void) ApplyNextTurnOrder(); } -static void sub_80DBA18(void) +static void SetAttentionLevels(void) { s32 i; @@ -3373,16 +3383,16 @@ static void sub_80DBAA0(void) for (i = 0; i < CONTESTANT_COUNT; i++) { eContestantStatus[i].prevMove = eContestantStatus[i].currMove; - eContest.moveHistory[eContest.turnNumber][i] = eContestantStatus[i].currMove; - eContest.excitementHistory[eContest.turnNumber][i] = Contest_GetMoveExcitement(eContestantStatus[i].currMove); + eContest.moveHistory[eContest.appealNumber][i] = eContestantStatus[i].currMove; + eContest.excitementHistory[eContest.appealNumber][i] = Contest_GetMoveExcitement(eContestantStatus[i].currMove); eContestantStatus[i].currMove = MOVE_NONE; } eContestResources10.excitementFrozen = 0; } -bool8 Contest_IsMonsTurnDisabled(u8 a) +bool8 Contest_IsMonsTurnDisabled(u8 contestant) { - if (eContestantStatus[a].numTurnsSkipped != 0 || eContestantStatus[a].noMoreTurns) + if (eContestantStatus[contestant].numTurnsSkipped != 0 || eContestantStatus[contestant].noMoreTurns) return TRUE; else return FALSE; @@ -3391,7 +3401,7 @@ bool8 Contest_IsMonsTurnDisabled(u8 a) static void CalculateTotalPointsForContestant(u8 contestant) { gContestMonRound2Points[contestant] = GetContestantRound2Points(contestant); - gContestMonTotalPoints[contestant] = gContestMonConditions[contestant] + gContestMonRound2Points[contestant]; + gContestMonTotalPoints[contestant] = gContestMonRound1Points[contestant] + gContestMonRound2Points[contestant]; } static void CalculateFinalScores(void) @@ -3405,7 +3415,7 @@ static void CalculateFinalScores(void) static s16 GetContestantRound2Points(u8 contestant) { - return gUnknown_02039F10[contestant] * 2; + return gContestMonAppealPointTotals[contestant] * 2; } static void DetermineFinalStandings(void) @@ -3433,7 +3443,7 @@ static void DetermineFinalStandings(void) for (i = 0; i < CONTESTANT_COUNT; i++) { sp8[i].unk0 = gContestMonTotalPoints[i]; - sp8[i].unk4 = gContestMonConditions[i]; + sp8[i].unk4 = gContestMonRound1Points[i]; sp8[i].unk8 = randomOrdering[i]; sp8[i].unkC = i; } @@ -4147,8 +4157,8 @@ void SortContestants(bool8 useRanking) // Determine where the contestant should be ordered. for (v3 = 0; v3 < i; v3++) { - if (gContestMonConditions[gContestantTurnOrder[v3]] < gContestMonConditions[i] - || (gContestMonConditions[gContestantTurnOrder[v3]] == gContestMonConditions[i] && randomOrdering[gContestantTurnOrder[v3]] < randomOrdering[i])) + if (gContestMonRound1Points[gContestantTurnOrder[v3]] < gContestMonRound1Points[i] + || (gContestMonRound1Points[gContestantTurnOrder[v3]] == gContestMonRound1Points[i] && randomOrdering[gContestantTurnOrder[v3]] < randomOrdering[i])) { // Shift everything larger up to make room. s32 j; @@ -5463,7 +5473,7 @@ static void sub_80DF080(u8 contestant) { gContestResources->field_1c[contestant].unkC |= 0x80; gContestResources->field_1c[contestant].unkE_1 = 1; - gContestResources->field_1c[contestant].unk0[eContest.turnNumber] = eContestantStatus[contestant].currMove; + gContestResources->field_1c[contestant].unk0[eContest.appealNumber] = eContestantStatus[contestant].currMove; } if (eContestantStatus[contestant].repeatedMove) @@ -5511,7 +5521,7 @@ static void sub_80DF250(void) for (j = 0; j < CONTESTANT_COUNT; j++) { - if (gContestMonConditions[i] < gContestMonConditions[j]) + if (gContestMonRound1Points[i] < gContestMonRound1Points[j]) break; } if (j == 4 && gContestFinalStandings[i] != 0) @@ -5521,7 +5531,7 @@ static void sub_80DF250(void) r8 = FALSE; for (j = 0; j < CONTESTANT_COUNT; j++) { - if (gContestMonConditions[i] > gContestMonConditions[j]) + if (gContestMonRound1Points[i] > gContestMonRound1Points[j]) r12 = TRUE; if (gContestMonRound2Points[i] > gContestMonRound2Points[j]) r8 = TRUE; @@ -5612,7 +5622,7 @@ static void sub_80DF4F8(void) r10 = 0; for (i = 0; i < CONTESTANT_COUNT; i++) { - if (gContestMonConditions[r7] < gContestMonConditions[i]) + if (gContestMonRound1Points[r7] < gContestMonRound1Points[i]) r9++; if (gContestMonRound2Points[r7] < gContestMonRound2Points[i]) r10++; diff --git a/src/contest_ai.c b/src/contest_ai.c index e2afb2890..7585cac69 100644 --- a/src/contest_ai.c +++ b/src/contest_ai.c @@ -10,11 +10,11 @@ extern const u8 *gAIScriptPtr; extern const u8 *gContestAIChecks[]; static void ContestAICmd_score(void); -static void ContestAICmd_get_turn(void); -static void ContestAICmd_if_turn_less_than(void); -static void ContestAICmd_if_turn_more_than(void); -static void ContestAICmd_if_turn_eq(void); -static void ContestAICmd_if_turn_not_eq(void); +static void ContestAICmd_get_appeal_num(void); +static void ContestAICmd_if_appeal_num_less_than(void); +static void ContestAICmd_if_appeal_num_more_than(void); +static void ContestAICmd_if_appeal_num_eq(void); +static void ContestAICmd_if_appeal_num_not_eq(void); static void ContestAICmd_get_excitement(void); static void ContestAICmd_if_excitement_less_than(void); static void ContestAICmd_if_excitement_more_than(void); @@ -151,11 +151,11 @@ typedef void (* ContestAICmdFunc)(void); static const ContestAICmdFunc sContestAICmdTable[] = { ContestAICmd_score, // 0x00 - ContestAICmd_get_turn, // 0x01 - ContestAICmd_if_turn_less_than, // 0x02 - ContestAICmd_if_turn_more_than, // 0x03 - ContestAICmd_if_turn_eq, // 0x04 - ContestAICmd_if_turn_not_eq, // 0x05 + ContestAICmd_get_appeal_num, // 0x01 + ContestAICmd_if_appeal_num_less_than, // 0x02 + ContestAICmd_if_appeal_num_more_than, // 0x03 + ContestAICmd_if_appeal_num_eq, // 0x04 + ContestAICmd_if_appeal_num_not_eq, // 0x05 ContestAICmd_get_excitement, // 0x06 ContestAICmd_if_excitement_less_than, // 0x07 ContestAICmd_if_excitement_more_than, // 0x08 @@ -324,7 +324,7 @@ u8 ContestAI_GetActionToUse(void) { // 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 moveIdx = Random() & (MAX_MON_MOVES - 1); // % MAX_MON_MOVES doesn't match u8 score = eContestAI.moveScores[moveIdx]; int i; for (i = 0; i < MAX_MON_MOVES; i++) @@ -404,15 +404,15 @@ static void ContestAICmd_score(void) gAIScriptPtr += 2; } -static void ContestAICmd_get_turn(void) +static void ContestAICmd_get_appeal_num(void) { - eContestAI.scriptResult = eContest.turnNumber; + eContestAI.scriptResult = eContest.appealNumber; gAIScriptPtr += 1; } -static void ContestAICmd_if_turn_less_than(void) +static void ContestAICmd_if_appeal_num_less_than(void) { - ContestAICmd_get_turn(); + ContestAICmd_get_appeal_num(); if (eContestAI.scriptResult < gAIScriptPtr[0]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); @@ -420,9 +420,9 @@ static void ContestAICmd_if_turn_less_than(void) gAIScriptPtr += 5; } -static void ContestAICmd_if_turn_more_than(void) +static void ContestAICmd_if_appeal_num_more_than(void) { - ContestAICmd_get_turn(); + ContestAICmd_get_appeal_num(); if (eContestAI.scriptResult > gAIScriptPtr[0]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); @@ -430,9 +430,9 @@ static void ContestAICmd_if_turn_more_than(void) gAIScriptPtr += 5; } -static void ContestAICmd_if_turn_eq(void) +static void ContestAICmd_if_appeal_num_eq(void) { - ContestAICmd_get_turn(); + ContestAICmd_get_appeal_num(); if (eContestAI.scriptResult == gAIScriptPtr[0]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); @@ -440,9 +440,9 @@ static void ContestAICmd_if_turn_eq(void) gAIScriptPtr += 5; } -static void ContestAICmd_if_turn_not_eq(void) +static void ContestAICmd_if_appeal_num_not_eq(void) { - ContestAICmd_get_turn(); + ContestAICmd_get_appeal_num(); if (eContestAI.scriptResult != gAIScriptPtr[0]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); @@ -636,7 +636,7 @@ static void ContestAICmd_unk_19(void) static void ContestAICmd_unk_1A(void) { - eContestAI.scriptResult = gContestMonConditions[eContestAI.contestantId]; + eContestAI.scriptResult = gContestMonRound1Points[eContestAI.contestantId]; gAIScriptPtr += 1; } @@ -1357,7 +1357,7 @@ static void ContestAICmd_unk_5E(void) { u8 contestant = GetContestantIdByTurn(gAIScriptPtr[1]); - eContestAI.scriptResult = gContestMonConditions[contestant] - gContestMonConditions[eContestAI.contestantId]; + eContestAI.scriptResult = gContestMonRound1Points[contestant] - gContestMonRound1Points[eContestAI.contestantId]; gAIScriptPtr += 2; } diff --git a/src/contest_effect.c b/src/contest_effect.c index 1d3c81776..809aecbed 100644 --- a/src/contest_effect.c +++ b/src/contest_effect.c @@ -750,7 +750,7 @@ static void ContestEffect_NextAppealEarlier(void) s8 j; u8 turnOrder[CONTESTANT_COUNT]; - if (eContest.turnNumber != 4) + if (eContest.appealNumber != CONTEST_LAST_APPEAL) { for (i = 0; i < CONTESTANT_COUNT; i++) turnOrder[i] = eContestantStatus[i].nextTurnOrder; @@ -792,7 +792,7 @@ static void ContestEffect_NextAppealLater(void) s8 j; u8 turnOrder[CONTESTANT_COUNT]; - if (eContest.turnNumber != 4) + if (eContest.appealNumber != CONTEST_LAST_APPEAL) { for (i = 0; i < CONTESTANT_COUNT; i++) turnOrder[i] = eContestantStatus[i].nextTurnOrder; @@ -841,7 +841,7 @@ static void ContestEffect_ScrambleNextTurnOrder(void) u8 turnOrder[CONTESTANT_COUNT]; u8 unselectedContestants[CONTESTANT_COUNT]; - if (eContest.turnNumber != 4) + if (eContest.appealNumber != CONTEST_LAST_APPEAL) { for (i = 0; i < CONTESTANT_COUNT; i++) { diff --git a/src/contest_link.c b/src/contest_link.c index 9241102e7..172a2b2ba 100644 --- a/src/contest_link.c +++ b/src/contest_link.c @@ -297,7 +297,7 @@ void Task_LinkContest_CommunicateMoveSelections(u8 taskId) } } -void sub_80FCACC(u8 taskId) +void Task_LinkContest_CommunicateFinalStandings(u8 taskId) { switch (gTasks[taskId].tState) { @@ -328,14 +328,14 @@ void sub_80FCACC(u8 taskId) case 3: if (IsLinkTaskFinished()) { - if (LinkContest_SendBlock(gUnknown_02039F10, sizeof(gUnknown_02039F10)) == 1) + if (LinkContest_SendBlock(gContestMonAppealPointTotals, sizeof(gContestMonAppealPointTotals)) == 1) gTasks[taskId].tState++; } break; case 4: if (LinkContest_GetBlockReceivedFromAllPlayers()) { - memcpy(gUnknown_02039F10, gBlockRecvBuffer[gUnknown_02039F2B], sizeof(gUnknown_02039F10)); + memcpy(gContestMonAppealPointTotals, gBlockRecvBuffer[gUnknown_02039F2B], sizeof(gContestMonAppealPointTotals)); gTasks[taskId].tState++; } break; @@ -381,14 +381,14 @@ void sub_80FCC88(u8 taskId) case 0: if (IsLinkTaskFinished()) { - if (LinkContest_SendBlock(eContestantStatus, 4 * sizeof(struct ContestantStatus)) == 1) + if (LinkContest_SendBlock(eContestantStatus, CONTESTANT_COUNT * sizeof(struct ContestantStatus)) == 1) gTasks[taskId].tState++; } break; case 1: if (LinkContest_GetBlockReceivedFromAllPlayers()) { - memcpy(eContestantStatus, gBlockRecvBuffer[gUnknown_02039F2B], 4 * sizeof(struct ContestantStatus)); + memcpy(eContestantStatus, gBlockRecvBuffer[gUnknown_02039F2B], CONTESTANT_COUNT * sizeof(struct ContestantStatus)); gTasks[taskId].tState++; } break; @@ -497,7 +497,7 @@ void sub_80FCE48(u8 taskId) } } -void sub_80FCF40(u8 taskId) +void Task_LinkContest_CommunicateRound1Points(u8 taskId) { if (!sub_80FC670(&gTasks[taskId].data[12])) return; @@ -507,14 +507,14 @@ void sub_80FCF40(u8 taskId) case 0: if (IsLinkTaskFinished()) { - if (LinkContest_SendBlock(gContestMonConditions, sizeof(gContestMonConditions)) == 1) + if (LinkContest_SendBlock(gContestMonRound1Points, sizeof(gContestMonRound1Points)) == 1) gTasks[taskId].tState++; } break; case 1: if (LinkContest_GetBlockReceivedFromAllPlayers()) { - memcpy(gContestMonConditions, gBlockRecvBuffer[gUnknown_02039F2B], sizeof(gContestMonConditions)); + memcpy(gContestMonRound1Points, gBlockRecvBuffer[gUnknown_02039F2B], sizeof(gContestMonRound1Points)); gTasks[taskId].tState++; } break; @@ -526,7 +526,7 @@ void sub_80FCF40(u8 taskId) } } -void sub_80FCFD0(u8 taskId) +void Task_LinkContest_CommunicateTurnOrder(u8 taskId) { if (!sub_80FC670(&gTasks[taskId].data[12])) return; diff --git a/src/contest_link_util.c b/src/contest_link_util.c index 221374112..02c94f0ba 100644 --- a/src/contest_link_util.c +++ b/src/contest_link_util.c @@ -70,29 +70,30 @@ static void sub_81D9F68(u8 taskId) u8 i; u8 rank; int gameCleared; - u8 data1[4]; - u8 data2[4]; + u8 contestCategories[CONTESTANT_COUNT]; + u8 data2[CONTESTANT_COUNT]; - memset(data1, 0, sizeof(data1)); + memset(contestCategories, 0, sizeof(contestCategories)); memset(data2, 0, sizeof(data2)); for (i = 0; i < gNumLinkContestPlayers; i++) - data1[i] = gTasks[taskId].data[i + 1]; + contestCategories[i] = gTasks[taskId].data[i + 1]; + // Ensure all players are doing the same category i = 0; if (i < gNumLinkContestPlayers) { while (++i < gNumLinkContestPlayers) { - if (data1[0] != data1[i]) + if (contestCategories[0] != contestCategories[i]) break; } } if (i == gNumLinkContestPlayers) - gSpecialVar_0x8004 = 0; + gSpecialVar_0x8004 = FALSE; else - gSpecialVar_0x8004 = 1; + gSpecialVar_0x8004 = TRUE; for (i = 0; i < gNumLinkContestPlayers; i++) data2[i] = gTasks[taskId].data[i + 5]; @@ -119,7 +120,7 @@ static void sub_81D9F68(u8 taskId) } } - sub_80DACBC(data1[0], rank, gameCleared); + SetLinkAIContestants(contestCategories[0], rank, gameCleared); } gUnknown_02039F2B = sub_80F86E0(data2); @@ -132,13 +133,13 @@ static void sub_81D9F68(u8 taskId) static void sub_81DA10C(u8 taskId) { sub_80DB09C(gSpecialVar_ContestCategory); - SetTaskFuncWithFollowupFunc(taskId, sub_80FCF40, sub_81DA138); + SetTaskFuncWithFollowupFunc(taskId, Task_LinkContest_CommunicateRound1Points, sub_81DA138); } static void sub_81DA138(u8 taskId) { SortContestants(FALSE); - SetTaskFuncWithFollowupFunc(taskId, sub_80FCFD0, sub_80F8714); + SetTaskFuncWithFollowupFunc(taskId, Task_LinkContest_CommunicateTurnOrder, sub_80F8714); } static void sub_81DA160(u8 taskId) diff --git a/src/contest_util.c b/src/contest_util.c index 6ad67ee50..1fd3e0482 100644 --- a/src/contest_util.c +++ b/src/contest_util.c @@ -1718,7 +1718,7 @@ static void LoadContestResultsTilemaps(void) // Represented on results board as stars static u8 GetNumPreliminaryPoints(u8 monIndex, bool8 capPoints) { - u32 condition = gContestMonConditions[monIndex] << 16; + u32 condition = gContestMonRound1Points[monIndex] << 16; u32 numStars = condition / 0x3F; if (numStars & 0xFFFF) @@ -1966,7 +1966,7 @@ static void CalculateContestantsResultData(void) for (i = 0; i < CONTESTANT_COUNT; i++) { - relativePoints = (gContestMonConditions[i] * 1000) / abs(highestPoints); + relativePoints = (gContestMonRound1Points[i] * 1000) / abs(highestPoints); if (relativePoints % 10 > 4) relativePoints += 10; (*sContestResults->monResults)[i].relativePreliminaryPoints = relativePoints / 10; @@ -2206,7 +2206,7 @@ void TryEnterContestMon(void) // Nonzero eligibility can still be non-eligibile, if mon is fainted or egg if (eligibility) { - sub_80DAB8C(gSpecialVar_ContestCategory, gSpecialVar_ContestRank); + SetContestants(gSpecialVar_ContestCategory, gSpecialVar_ContestRank); sub_80DB09C(gSpecialVar_ContestCategory); } @@ -2324,7 +2324,7 @@ void GetContestMonConditionRanking(void) for (i = 0, rank = 0; i < CONTESTANT_COUNT; i++) { - if (gContestMonConditions[gSpecialVar_0x8006] < gContestMonConditions[i]) + if (gContestMonRound1Points[gSpecialVar_0x8006] < gContestMonRound1Points[i]) rank++; } @@ -2333,7 +2333,7 @@ void GetContestMonConditionRanking(void) void GetContestMonCondition(void) { - gSpecialVar_0x8004 = gContestMonConditions[gSpecialVar_0x8006]; + gSpecialVar_0x8004 = gContestMonRound1Points[gSpecialVar_0x8006]; } void GetContestWinnerId(void) @@ -2472,13 +2472,13 @@ static void sub_80F85BC(u8 taskId) gUnknown_02039F2B = sub_80F86E0(sp4); sub_80DB09C(gSpecialVar_ContestCategory); - SetTaskFuncWithFollowupFunc(taskId, sub_80FCF40, sub_80F86B8); + SetTaskFuncWithFollowupFunc(taskId, Task_LinkContest_CommunicateRound1Points, sub_80F86B8); } static void sub_80F86B8(u8 taskId) { SortContestants(FALSE); - SetTaskFuncWithFollowupFunc(taskId, sub_80FCFD0, sub_80F8714); + SetTaskFuncWithFollowupFunc(taskId, Task_LinkContest_CommunicateTurnOrder, sub_80F8714); } u8 sub_80F86E0(u8 *arg0) diff --git a/src/data/contest_opponents.h b/src/data/contest_opponents.h index 53868fc84..e77223d95 100644 --- a/src/data/contest_opponents.h +++ b/src/data/contest_opponents.h @@ -183,7 +183,7 @@ const struct ContestPokemon gContestOpponents[] = .nickname = _("POOCHY"), .trainerName = _("JIMMY"), .trainerGfxId = OBJ_EVENT_GFX_BOY_1, - .aiChecks = 0xC000FFF, + .aiChecks = CONTEST_AI_ALL | CONTEST_AI_DUMMIES_1 | CONTEST_AI_DUMMY_20 | CONTEST_AI_DUMMY_21, .whichRank = CONTEST_RANK_NORMAL, .aiPool_Cool = TRUE, .aiPool_Beauty = FALSE, @@ -211,7 +211,7 @@ const struct ContestPokemon gContestOpponents[] = .nickname = _("MUSILLE"), .trainerName = _("EDITH"), .trainerGfxId = OBJ_EVENT_GFX_GIRL_1, - .aiChecks = 0x82000FFF, + .aiChecks = CONTEST_AI_ALL | CONTEST_AI_DUMMIES_1 | CONTEST_AI_DUMMY_19 | CONTEST_AI_DUMMY_25, .whichRank = CONTEST_RANK_NORMAL, .aiPool_Cool = FALSE, .aiPool_Beauty = FALSE, @@ -239,7 +239,7 @@ const struct ContestPokemon gContestOpponents[] = .nickname = _("DUSTER"), .trainerName = _("EVAN"), .trainerGfxId = OBJ_EVENT_GFX_LITTLE_BOY, - .aiChecks = 0x21000FFF, + .aiChecks = CONTEST_AI_ALL | CONTEST_AI_DUMMIES_1 | CONTEST_AI_DUMMY_18 | CONTEST_AI_DUMMY_23, .whichRank = CONTEST_RANK_NORMAL, .aiPool_Cool = FALSE, .aiPool_Beauty = TRUE, @@ -603,7 +603,7 @@ const struct ContestPokemon gContestOpponents[] = .nickname = _("BULBY"), .trainerName = _("AGATHA"), .trainerGfxId = OBJ_EVENT_GFX_WOMAN_2, - .aiChecks = 0xC000FFF, + .aiChecks = CONTEST_AI_ALL | CONTEST_AI_DUMMY_1 | CONTEST_AI_DUMMY_2 | CONTEST_AI_DUMMY_3 | CONTEST_AI_DUMMY_4 | CONTEST_AI_DUMMY_5 | CONTEST_AI_DUMMY_20 | CONTEST_AI_DUMMY_21, .whichRank = CONTEST_RANK_NORMAL, .aiPool_Cool = FALSE, .aiPool_Beauty = FALSE, @@ -631,7 +631,7 @@ const struct ContestPokemon gContestOpponents[] = .nickname = _("FUTTERBE"), .trainerName = _("BEAU"), .trainerGfxId = OBJ_EVENT_GFX_HEX_MANIAC, - .aiChecks = 0x82000FFF, + .aiChecks = CONTEST_AI_ALL | CONTEST_AI_DUMMIES_1 | CONTEST_AI_DUMMY_19 | CONTEST_AI_DUMMY_25, .whichRank = CONTEST_RANK_NORMAL, .aiPool_Cool = FALSE, .aiPool_Beauty = TRUE, @@ -659,7 +659,7 @@ const struct ContestPokemon gContestOpponents[] = .nickname = _("PIDEOT"), .trainerName = _("KAY"), .trainerGfxId = OBJ_EVENT_GFX_WOMAN_5, - .aiChecks = 0x21000FFF, + .aiChecks = CONTEST_AI_ALL | CONTEST_AI_DUMMIES_1 | CONTEST_AI_DUMMY_18 | CONTEST_AI_DUMMY_23, .whichRank = CONTEST_RANK_NORMAL, .aiPool_Cool = TRUE, .aiPool_Beauty = TRUE, @@ -883,7 +883,7 @@ const struct ContestPokemon gContestOpponents[] = .nickname = _("DUODO"), .trainerName = _("BOBBY"), .trainerGfxId = OBJ_EVENT_GFX_RUNNING_TRIATHLETE_M, - .aiChecks = 0x82000FFF, + .aiChecks = CONTEST_AI_ALL | CONTEST_AI_DUMMIES_1 | CONTEST_AI_DUMMY_19 | CONTEST_AI_DUMMY_25, .whichRank = CONTEST_RANK_SUPER, .aiPool_Cool = TRUE, .aiPool_Beauty = TRUE, @@ -1275,7 +1275,7 @@ const struct ContestPokemon gContestOpponents[] = .nickname = _("BROWLO"), .trainerName = _("LUKE"), .trainerGfxId = OBJ_EVENT_GFX_FAT_MAN, - .aiChecks = 0xC000FFF, + .aiChecks = CONTEST_AI_ALL | CONTEST_AI_DUMMY_1 | CONTEST_AI_DUMMY_2 | CONTEST_AI_DUMMY_3 | CONTEST_AI_DUMMY_4 | CONTEST_AI_DUMMY_5 | CONTEST_AI_DUMMY_20 | CONTEST_AI_DUMMY_21, .whichRank = CONTEST_RANK_SUPER, .aiPool_Cool = FALSE, .aiPool_Beauty = FALSE, @@ -1303,7 +1303,7 @@ const struct ContestPokemon gContestOpponents[] = .nickname = _("FETCHIN"), .trainerName = _("RAUL"), .trainerGfxId = OBJ_EVENT_GFX_MAN_5, - .aiChecks = 0x82000FFF, + .aiChecks = CONTEST_AI_ALL | CONTEST_AI_DUMMIES_1 | CONTEST_AI_DUMMY_19 | CONTEST_AI_DUMMY_25, .whichRank = CONTEST_RANK_SUPER, .aiPool_Cool = TRUE, .aiPool_Beauty = FALSE, @@ -1331,7 +1331,7 @@ const struct ContestPokemon gContestOpponents[] = .nickname = _("SEELEY"), .trainerName = _("JADA"), .trainerGfxId = OBJ_EVENT_GFX_WOMAN_2, - .aiChecks = 0x21000FFF, + .aiChecks = CONTEST_AI_ALL | CONTEST_AI_DUMMIES_1 | CONTEST_AI_DUMMY_18 | CONTEST_AI_DUMMY_23, .whichRank = CONTEST_RANK_SUPER, .aiPool_Cool = FALSE, .aiPool_Beauty = TRUE, @@ -1555,7 +1555,7 @@ const struct ContestPokemon gContestOpponents[] = .nickname = _("SHIFTY"), .trainerName = _("CLAUDIA"), .trainerGfxId = OBJ_EVENT_GFX_GIRL_1, - .aiChecks = 0x82000FFF, + .aiChecks = CONTEST_AI_ALL | CONTEST_AI_DUMMIES_1 | CONTEST_AI_DUMMY_19 | CONTEST_AI_DUMMY_25, .whichRank = CONTEST_RANK_HYPER, .aiPool_Cool = TRUE, .aiPool_Beauty = TRUE, @@ -1947,7 +1947,7 @@ const struct ContestPokemon gContestOpponents[] = .nickname = _("EGGSOR"), .trainerName = _("GRACIE"), .trainerGfxId = OBJ_EVENT_GFX_PICNICKER, - .aiChecks = 0xC000FFF, + .aiChecks = CONTEST_AI_ALL | CONTEST_AI_DUMMY_1 | CONTEST_AI_DUMMY_2 | CONTEST_AI_DUMMY_3 | CONTEST_AI_DUMMY_4 | CONTEST_AI_DUMMY_5 | CONTEST_AI_DUMMY_20 | CONTEST_AI_DUMMY_21, .whichRank = CONTEST_RANK_HYPER, .aiPool_Cool = FALSE, .aiPool_Beauty = FALSE, @@ -1975,7 +1975,7 @@ const struct ContestPokemon gContestOpponents[] = .nickname = _("CUBIN"), .trainerName = _("COLTIN"), .trainerGfxId = OBJ_EVENT_GFX_MAN_4, - .aiChecks = 0x82000FFF, + .aiChecks = CONTEST_AI_ALL | CONTEST_AI_DUMMIES_1 | CONTEST_AI_DUMMY_19 | CONTEST_AI_DUMMY_25, .whichRank = CONTEST_RANK_HYPER, .aiPool_Cool = FALSE, .aiPool_Beauty = FALSE, @@ -2003,7 +2003,7 @@ const struct ContestPokemon gContestOpponents[] = .nickname = _("HITMON"), .trainerName = _("ELLIE"), .trainerGfxId = OBJ_EVENT_GFX_EXPERT_F, - .aiChecks = 0x21000FFF, + .aiChecks = CONTEST_AI_ALL | CONTEST_AI_DUMMIES_1 | CONTEST_AI_DUMMY_18 | CONTEST_AI_DUMMY_23, .whichRank = CONTEST_RANK_HYPER, .aiPool_Cool = TRUE, .aiPool_Beauty = FALSE, @@ -2227,7 +2227,7 @@ const struct ContestPokemon gContestOpponents[] = .nickname = _("LOUDERD"), .trainerName = _("RALPH"), .trainerGfxId = OBJ_EVENT_GFX_EXPERT_M, - .aiChecks = 0x82000FFF, + .aiChecks = CONTEST_AI_ALL | CONTEST_AI_DUMMIES_1 | CONTEST_AI_DUMMY_19 | CONTEST_AI_DUMMY_25, .whichRank = CONTEST_RANK_MASTER, .aiPool_Cool = TRUE, .aiPool_Beauty = FALSE, @@ -2619,7 +2619,7 @@ const struct ContestPokemon gContestOpponents[] = .nickname = _("GAREN"), .trainerName = _("CAMILE"), .trainerGfxId = OBJ_EVENT_GFX_HEX_MANIAC, - .aiChecks = 0xC000FFF, + .aiChecks = CONTEST_AI_ALL | CONTEST_AI_DUMMY_1 | CONTEST_AI_DUMMY_2 | CONTEST_AI_DUMMY_3 | CONTEST_AI_DUMMY_4 | CONTEST_AI_DUMMY_5 | CONTEST_AI_DUMMY_20 | CONTEST_AI_DUMMY_21, .whichRank = CONTEST_RANK_MASTER, .aiPool_Cool = TRUE, .aiPool_Beauty = FALSE, @@ -2647,7 +2647,7 @@ const struct ContestPokemon gContestOpponents[] = .nickname = _("GONPOR"), .trainerName = _("MARTIN"), .trainerGfxId = OBJ_EVENT_GFX_SCIENTIST_1, - .aiChecks = 0x82000FFF, + .aiChecks = CONTEST_AI_ALL | CONTEST_AI_DUMMIES_1 | CONTEST_AI_DUMMY_19 | CONTEST_AI_DUMMY_25, .whichRank = CONTEST_RANK_MASTER, .aiPool_Cool = TRUE, .aiPool_Beauty = TRUE, @@ -2675,7 +2675,7 @@ const struct ContestPokemon gContestOpponents[] = .nickname = _("DRITE"), .trainerName = _("SERGIO"), .trainerGfxId = OBJ_EVENT_GFX_BOY_1, - .aiChecks = 0x21000FFF, + .aiChecks = CONTEST_AI_ALL | CONTEST_AI_DUMMIES_1 | CONTEST_AI_DUMMY_18 | CONTEST_AI_DUMMY_23, .whichRank = CONTEST_RANK_MASTER, .aiPool_Cool = TRUE, .aiPool_Beauty = FALSE, diff --git a/src/script_pokemon_util_80F87D8.c b/src/script_pokemon_util_80F87D8.c index a6ab1693b..89029210b 100755 --- a/src/script_pokemon_util_80F87D8.c +++ b/src/script_pokemon_util_80F87D8.c @@ -158,7 +158,7 @@ void sub_80F8970(void) u8 r7; for (i = 0; i < CONTESTANT_COUNT; i++) - conditions[i] = gContestMonConditions[i]; + conditions[i] = gContestMonRound1Points[i]; for (i = 0; i < CONTESTANT_COUNT - 1; i++) { @@ -195,7 +195,7 @@ void sub_80F8970(void) var2 = r8; for (i = 0; i < CONTESTANT_COUNT; i++) { - if (condition == gContestMonConditions[i]) + if (condition == gContestMonRound1Points[i]) { if (var2 == 1) break; |