diff options
-rw-r--r-- | asm/macros/contest_ai_script.inc | 22 | ||||
-rw-r--r-- | constants/constants.inc | 2 | ||||
-rw-r--r-- | constants/contest_constants.inc | 68 | ||||
-rw-r--r-- | constants/contest_move_effects.inc | 49 | ||||
-rw-r--r-- | data/contest_ai_scripts.s | 70 | ||||
-rw-r--r-- | include/constants/contest.h | 150 | ||||
-rw-r--r-- | include/contest.h | 136 | ||||
-rw-r--r-- | include/contest_link.h | 6 | ||||
-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 |
16 files changed, 478 insertions, 546 deletions
diff --git a/asm/macros/contest_ai_script.inc b/asm/macros/contest_ai_script.inc index 05d70e351..763c3d1c4 100644 --- a/asm/macros/contest_ai_script.inc +++ b/asm/macros/contest_ai_script.inc @@ -5,36 +5,42 @@ .byte \score .endm -@ turn (AKA "Appeal No.") - - .macro get_turn + .macro get_appeal_num .byte 0x01 .endm - .macro if_turn_less_than param, addr + .macro if_appeal_num_less_than param, addr .byte 0x02 .byte \param .4byte \addr .endm - .macro if_turn_more_than param, addr + .macro if_appeal_num_more_than param, addr .byte 0x03 .byte \param .4byte \addr .endm - .macro if_turn_eq param, addr + .macro if_appeal_num_eq param, addr .byte 0x04 .byte \param .4byte \addr .endm - .macro if_turn_not_eq param, addr + .macro if_appeal_num_not_eq param, addr .byte 0x05 .byte \param .4byte \addr .endm + .macro if_last_appeal addr:req + if_appeal_num_eq CONTEST_LAST_APPEAL, \addr + .endm + + .macro if_not_last_appeal addr:req + if_appeal_num_not_eq CONTEST_LAST_APPEAL, \addr + .endm + @ audience excitement .macro get_excitement @@ -65,7 +71,7 @@ .4byte \addr .endm -@ the order that the user goes in the current turn +@ the order that the user goes in the current appeal .macro get_user_order .byte 0x0B diff --git a/constants/constants.inc b/constants/constants.inc index a58bf92a2..e7561f429 100644 --- a/constants/constants.inc +++ b/constants/constants.inc @@ -1,4 +1,2 @@ .include "constants/gba_constants.inc" .include "constants/global.inc" - .include "constants/contest_constants.inc" - .include "constants/contest_move_effects.inc" diff --git a/constants/contest_constants.inc b/constants/contest_constants.inc deleted file mode 100644 index e971764d6..000000000 --- a/constants/contest_constants.inc +++ /dev/null @@ -1,68 +0,0 @@ - .set CONTEST_COOL, 0x00 - .set CONTEST_BEAUTY, 0x01 - .set CONTEST_CUTE, 0x02 - .set CONTEST_SMART, 0x03 - .set CONTEST_TOUGH, 0x04 - - .set COMBO_STARTER_RAIN_DANCE, 0x01 - .set COMBO_STARTER_RAGE, 0x02 - .set COMBO_STARTER_FOCUS_ENERGY, 0x03 - .set COMBO_STARTER_HYPNOSIS, 0x04 - .set COMBO_STARTER_ENDURE, 0x05 - .set COMBO_STARTER_HORN_ATTACK, 0x06 - .set COMBO_STARTER_SWORDS_DANCE, 0x07 - .set COMBO_STARTER_STOCKPILE, 0x08 - .set COMBO_STARTER_SUNNY_DAY, 0x09 - .set COMBO_STARTER_REST, 0x0A - .set COMBO_STARTER_VICE_GRIP, 0x0B - .set COMBO_STARTER_DEFENSE_CURL, 0x0C - .set COMBO_STARTER_CHARGE, 0x0D - .set COMBO_STARTER_ROCK_THROW, 0x0E - .set COMBO_STARTER_YAWN, 0x0F - .set COMBO_STARTER_SCARY_FACE, 0x10 - .set COMBO_STARTER_POWDER_SNOW, 0x11 - .set COMBO_STARTER_LOCK_ON, 0x12 - .set COMBO_STARTER_SOFT_BOILED, 0x13 - .set COMBO_STARTER_MEAN_LOOK, 0x14 - .set COMBO_STARTER_SCRATCH, 0x15 - .set COMBO_STARTER_GROWTH, 0x16 - .set COMBO_STARTER_HAIL, 0x17 - .set COMBO_STARTER_SANDSTORM, 0x18 - .set COMBO_STARTER_BELLY_DRUM, 0x19 - .set COMBO_STARTER_MIND_READER, 0x1A - .set COMBO_STARTER_DRAGON_BREATH, 0x1B - .set COMBO_STARTER_DRAGON_RAGE, 0x1C - .set COMBO_STARTER_DRAGON_DANCE, 0x1D - .set COMBO_STARTER_SURF, 0x1E - .set COMBO_STARTER_DIVE, 0x1F - .set COMBO_STARTER_STRING_SHOT, 0x20 - .set COMBO_STARTER_LEER, 0x21 - .set COMBO_STARTER_TAUNT, 0x22 - .set COMBO_STARTER_CHARM, 0x23 - .set COMBO_STARTER_HARDEN, 0x24 - .set COMBO_STARTER_SING, 0x25 - .set COMBO_STARTER_EARTHQUAKE, 0x26 - .set COMBO_STARTER_DOUBLE_TEAM, 0x27 - .set COMBO_STARTER_CURSE, 0x28 - .set COMBO_STARTER_SWEET_SCENT, 0x29 - .set COMBO_STARTER_SLUDGE, 0x2A - .set COMBO_STARTER_SLUDGE_BOMB, 0x2B - .set COMBO_STARTER_THUNDER_PUNCH, 0x2C - .set COMBO_STARTER_FIRE_PUNCH, 0x2D - .set COMBO_STARTER_ICE_PUNCH, 0x2E - .set COMBO_STARTER_PECK, 0x2F - .set COMBO_STARTER_METAL_SOUND, 0x30 - .set COMBO_STARTER_MUD_SPORT, 0x31 - .set COMBO_STARTER_WATER_SPORT, 0x32 - .set COMBO_STARTER_BONE_CLUB, 0x33 - .set COMBO_STARTER_BONEMERANG, 0x34 - .set COMBO_STARTER_BONE_RUSH, 0x35 - .set COMBO_STARTER_SAND_ATTACK, 0x36 - .set COMBO_STARTER_MUD_SLAP, 0x37 - .set COMBO_STARTER_FAKE_OUT, 0x38 - .set COMBO_STARTER_PSYCHIC, 0x39 - .set COMBO_STARTER_KINESIS, 0x3A - .set COMBO_STARTER_CONFUSION, 0x3B - .set COMBO_STARTER_POUND, 0x3C - .set COMBO_STARTER_SMOG, 0x3D - .set COMBO_STARTER_CALM_MIND, 0x3E diff --git a/constants/contest_move_effects.inc b/constants/contest_move_effects.inc deleted file mode 100644 index b19e05004..000000000 --- a/constants/contest_move_effects.inc +++ /dev/null @@ -1,49 +0,0 @@ - enum_start - enum CONTEST_EFFECT_HIGHLY_APPEALING @ 0 - enum CONTEST_EFFECT_USER_MORE_EASILY_STARTLED @ 1 - enum CONTEST_EFFECT_GREAT_APPEAL_BUT_NO_MORE_MOVES @ 2 - enum CONTEST_EFFECT_REPETITION_NOT_BORING @ 3 - enum CONTEST_EFFECT_AVOID_STARTLE_ONCE @ 4 - enum CONTEST_EFFECT_AVOID_STARTLE @ 5 - enum CONTEST_EFFECT_AVOID_STARTLE_SLIGHTLY @ 6 - enum CONTEST_EFFECT_USER_LESS_EASILY_STARTLED @ 7 - enum CONTEST_EFFECT_STARTLE_FRONT_MON @ 8 - enum CONTEST_EFFECT_SLIGHTLY_STARTLE_PREV_MONS @ 9 - enum CONTEST_EFFECT_STARTLE_PREV_MON @ 10 - enum CONTEST_EFFECT_STARTLE_PREV_MONS @ 11 - enum CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON @ 12 - enum CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS @ 13 - enum CONTEST_EFFECT_STARTLE_PREV_MON_2 @ 14 - enum CONTEST_EFFECT_STARTLE_PREV_MONS_2 @ 15 - enum CONTEST_EFFECT_SHIFT_JUDGE_ATTENTION @ 16 - enum CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION @ 17 - enum CONTEST_EFFECT_JAMS_OTHERS_BUT_MISS_ONE_TURN @ 18 - enum CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL @ 19 - enum CONTEST_EFFECT_STARTLE_MONS_COOL_APPEAL @ 20 - enum CONTEST_EFFECT_STARTLE_MONS_BEAUTY_APPEAL @ 21 - enum CONTEST_EFFECT_STARTLE_MONS_CUTE_APPEAL @ 22 - enum CONTEST_EFFECT_STARTLE_MONS_SMART_APPEAL @ 23 - enum CONTEST_EFFECT_STARTLE_MONS_TOUGH_APPEAL @ 24 - enum CONTEST_EFFECT_MAKE_FOLLOWING_MON_NERVOUS @ 25 - enum CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS @ 26 - enum CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS @ 27 - enum CONTEST_EFFECT_BADLY_STARTLES_MONS_IN_GOOD_CONDITION @ 28 - enum CONTEST_EFFECT_BETTER_IF_FIRST @ 29 - enum CONTEST_EFFECT_BETTER_IF_LAST @ 30 - enum CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONES @ 31 - enum CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONE @ 32 - enum CONTEST_EFFECT_BETTER_WHEN_LATER @ 33 - enum CONTEST_EFFECT_QUALITY_DEPENDS_ON_TIMING @ 34 - enum CONTEST_EFFECT_BETTER_IF_SAME_TYPE @ 35 - enum CONTEST_EFFECT_BETTER_IF_DIFF_TYPE @ 36 - enum CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL @ 37 - enum CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS @ 38 - enum CONTEST_EFFECT_BETTER_WITH_GOOD_CONDITION @ 39 - enum CONTEST_EFFECT_NEXT_APPEAL_EARLIER @ 40 - enum CONTEST_EFFECT_NEXT_APPEAL_LATER @ 41 - enum CONTEST_EFFECT_MAKE_SCRAMBLING_TURN_ORDER_EASIER @ 42 - enum CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER @ 43 - enum CONTEST_EFFECT_EXCITE_AUDIENCE_IN_ANY_CONTEST @ 44 - enum CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS @ 45 - enum CONTEST_EFFECT_BETTER_WHEN_AUDIENCE_EXCITED @ 46 - enum CONTEST_EFFECT_DONT_EXCITE_AUDIENCE @ 47 diff --git a/data/contest_ai_scripts.s b/data/contest_ai_scripts.s index 252c39a3a..4938a8c93 100644 --- a/data/contest_ai_scripts.s +++ b/data/contest_ai_scripts.s @@ -1,9 +1,13 @@ +#include "constants/global.h" +#include "constants/contest.h" .include "asm/macros.inc" .include "asm/macros/contest_ai_script.inc" .include "constants/constants.inc" .section script_data, "aw", %progbits +@ TODO + enum_start enum MON_1 enum MON_2 @@ -12,13 +16,13 @@ .align 2 gContestAIChecks:: @ 82DE350 - .4byte AI_CheckForBadMove // 0x00000001 - .4byte AI_CheckForCombo // 0x00000002 - .4byte AI_CheckBoring // 0x00000004 - .4byte AI_CheckExcitement // 0x00000008 - .4byte AI_CheckOrder // 0x00000010 - .4byte AI_CheckForGoodMove // 0x00000020 - .4byte AI_Erratic // 0x00000040 + .4byte AI_CheckForBadMove @ CONTEST_AI_CHECK_BAD_MOVE + .4byte AI_CheckForCombo @ CONTEST_AI_CHECK_COMBO + .4byte AI_CheckBoring @ CONTEST_AI_CHECK_BORING + .4byte AI_CheckExcitement @ CONTEST_AI_CHECK_EXCITEMENT + .4byte AI_CheckOrder @ CONTEST_AI_CHECK_ORDER + .4byte AI_CheckForGoodMove @ CONTEST_AI_CHECK_GOOD_MOVE + .4byte AI_Erratic @ CONTEST_AI_ERRATIC .4byte AI_Nothing // 0x00000080 .4byte AI_Nothing // 0x00000100 .4byte AI_Nothing // 0x00000200 @@ -47,9 +51,9 @@ 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 +@ appeal. Additionally, it checks the turn order of the user and the effect @ type, but the code is buggy and doesnt affect the score. - if_turn_not_eq 0, ContestUnreferenced_80 + if_appeal_num_not_eq 0, ContestUnreferenced_80 if_effect_not_eq CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, ContestUnreferenced_80 score +10 ContestUnreferenced_80: @@ -64,11 +68,11 @@ ContestUnreferenced_end: end @ 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 - if_turn_eq 3, ContestUnreferenced_0F_4 - if_turn_eq 4, ContestUnreferenced_0F_5 + if_appeal_num_eq 0, ContestUnreferenced_0F_1 + if_appeal_num_eq 1, ContestUnreferenced_0F_2 + if_appeal_num_eq 2, ContestUnreferenced_0F_3 + if_appeal_num_eq 3, ContestUnreferenced_0F_4 + if_last_appeal ContestUnreferenced_0F_5 end ContestUnreferenced_0F_1: if_user_order_not_eq MON_1, ContestUnreferenced_2B_1 @@ -166,7 +170,7 @@ AI_contest7D_1_081DC2AB: end AI_contest0F_2_081DC2AB: if_user_order_not_eq MON_1, AI_contest7D_3_081DC2AB - if_turn_eq 4, AI_score_081DC2AB + if_last_appeal AI_score_081DC2AB AI_contest7D_2_081DC2AB: if_random 51, AI_end_081DC2AB score +10 @@ -222,22 +226,22 @@ AI_score_081DC348: score +25 end AI_contest04_1_081DC348: - if_turn_eq 4, AI_contest7D_081DC348 + if_last_appeal AI_contest7D_081DC348 if_random 150, AI_end_081DC348 score +10 end AI_contest04_2_081DC348: - if_turn_eq 4, AI_contest7D_081DC348 + if_last_appeal AI_contest7D_081DC348 if_random 125, AI_end_081DC348 score +10 end AI_contest04_3_081DC348: - if_turn_eq 4, AI_contest7D_081DC348 + if_last_appeal AI_contest7D_081DC348 if_random 50, AI_end_081DC348 score +10 end AI_contest04_4_081DC348: - if_turn_eq 4, AI_contest7D_081DC348 + if_last_appeal AI_contest7D_081DC348 score +10 end AI_contest7D_081DC348: @@ -302,7 +306,7 @@ ContestEffect3: if_random 50, ContestEffectEnd score +15 end - if_turn_eq 4, ContestEffect3_7D + if_last_appeal ContestEffect3_7D if_random 220, ContestEffect3_score score +10 end @@ -324,8 +328,8 @@ ContestEffect38_score1: score -10 end ContestEffect38_contest04: - if_turn_eq 4, ContestEffect38_score2 - if_turn_eq 0, ContestEffect38_random + if_last_appeal ContestEffect38_score2 + if_appeal_num_eq 0, ContestEffect38_random if_move_used_count_eq 1, ContestEffectEnd if_random 125, ContestEffectEnd score +10 @@ -342,7 +346,7 @@ ContestEffect47: if_move_used_count_eq 1, ContestEffectEnd if_user_order_eq MON_1, ContestEffect47_random if_user_order_eq MON_2, ContestEffect47_random - if_turn_not_eq 4, ContestEffectEnd + if_not_last_appeal ContestEffectEnd if_user_has_exciting_move ContestEffectEnd if_excitement_less_than 1, ContestEffectEnd score +10 @@ -409,7 +413,7 @@ ContestEffect46: if_user_order_more_than MON_1, ContestEffect46_score4 end ContestEffect46_05: - if_turn_not_eq 0, ContestEffect46_score1 + if_appeal_num_not_eq 0, ContestEffect46_score1 if_excitement_eq 4, ContestEffect46_score2 if_excitement_eq 3, ContestEffect46_score3 end @@ -566,7 +570,7 @@ ContestEffect_FollowingMonsNervous_CheckMon2: end ContestEffect18: - if_turn_eq 4, ContestEffect18_score1 + if_last_appeal ContestEffect18_score1 jump ContestEffect18_0E end ContestEffect18_score1: @@ -600,9 +604,9 @@ ContestEffectEnd: @ Randomly encourage moves in Cute, Smart, and Tough contests. AI_Erratic: - if_contest_type_eq CONTEST_CUTE, Erratic_CuteSmartTough - if_contest_type_eq CONTEST_SMART, Erratic_CuteSmartTough - if_contest_type_eq CONTEST_TOUGH, Erratic_CuteSmartTough + if_contest_type_eq CONTEST_CATEGORY_CUTE, Erratic_CuteSmartTough + if_contest_type_eq CONTEST_CATEGORY_SMART, Erratic_CuteSmartTough + if_contest_type_eq CONTEST_CATEGORY_TOUGH, Erratic_CuteSmartTough end Erratic_CuteSmartTough: if_random 125, Erratic_NoScoreIncrease @@ -763,11 +767,11 @@ ContestEffect2_4_score3: end ContestEffect2_2: - if_turn_eq 0, ContestEffect2_2_score1 - if_turn_eq 1, ContestEffect2_2_score2 - if_turn_eq 2, ContestEffect2_2_score3 - if_turn_eq 3, ContestEffect2_2_score4 - if_turn_eq 4, ContestEffect2_2_score5 + if_appeal_num_eq 0, ContestEffect2_2_score1 + if_appeal_num_eq 1, ContestEffect2_2_score2 + if_appeal_num_eq 2, ContestEffect2_2_score3 + if_appeal_num_eq 3, ContestEffect2_2_score4 + if_last_appeal ContestEffect2_2_score5 end ContestEffect2_2_score1: if_random 20, ContestEffectEnd2 diff --git a/include/constants/contest.h b/include/constants/contest.h index 5eabb5f46..a10354169 100644 --- a/include/constants/contest.h +++ b/include/constants/contest.h @@ -2,7 +2,8 @@ #define GUARD_CONSTANTS_CONTEST_H #define APPLAUSE_METER_SIZE 5 -#define CONTEST_TURN_COUNT 5 +#define CONTEST_NUM_APPEALS 5 +#define CONTEST_LAST_APPEAL (CONTEST_NUM_APPEALS - 1) #define LINK_CONTEST_FLAG_IS_LINK (1 << 0) #define LINK_CONTEST_FLAG_IS_WIRELESS (1 << 1) @@ -44,4 +45,151 @@ #define CANT_ENTER_CONTEST_EGG 3 #define CANT_ENTER_CONTEST_FAINTED 4 +#define CONTEST_AI_CHECK_BAD_MOVE (1 << 0) +#define CONTEST_AI_CHECK_COMBO (1 << 1) +#define CONTEST_AI_CHECK_BORING (1 << 2) +#define CONTEST_AI_CHECK_EXCITEMENT (1 << 3) +#define CONTEST_AI_CHECK_ORDER (1 << 4) +#define CONTEST_AI_CHECK_GOOD_MOVE (1 << 5) +#define CONTEST_AI_ERRATIC (1 << 6) +#define CONTEST_AI_DUMMY_1 (1 << 7) +#define CONTEST_AI_DUMMY_2 (1 << 8) +#define CONTEST_AI_DUMMY_3 (1 << 9) +#define CONTEST_AI_DUMMY_4 (1 << 10) +#define CONTEST_AI_DUMMY_5 (1 << 11) +#define CONTEST_AI_DUMMY_6 (1 << 12) +#define CONTEST_AI_DUMMY_7 (1 << 13) +#define CONTEST_AI_DUMMY_8 (1 << 14) +#define CONTEST_AI_DUMMY_9 (1 << 15) +#define CONTEST_AI_DUMMY_10 (1 << 16) +#define CONTEST_AI_DUMMY_11 (1 << 17) +#define CONTEST_AI_DUMMY_12 (1 << 18) +#define CONTEST_AI_DUMMY_13 (1 << 19) +#define CONTEST_AI_DUMMY_14 (1 << 20) +#define CONTEST_AI_DUMMY_15 (1 << 21) +#define CONTEST_AI_DUMMY_16 (1 << 22) +#define CONTEST_AI_DUMMY_17 (1 << 23) +#define CONTEST_AI_DUMMY_18 (1 << 24) +#define CONTEST_AI_DUMMY_19 (1 << 25) +#define CONTEST_AI_DUMMY_20 (1 << 26) +#define CONTEST_AI_DUMMY_21 (1 << 27) +#define CONTEST_AI_DUMMY_22 (1 << 28) +#define CONTEST_AI_DUMMY_23 (1 << 29) +#define CONTEST_AI_DUMMY_24 (1 << 30) +#define CONTEST_AI_DUMMY_25 (1 << 31) +#define CONTEST_AI_ALL (CONTEST_AI_CHECK_BAD_MOVE | CONTEST_AI_CHECK_COMBO | CONTEST_AI_CHECK_BORING | CONTEST_AI_CHECK_EXCITEMENT | CONTEST_AI_CHECK_ORDER | CONTEST_AI_CHECK_GOOD_MOVE | CONTEST_AI_ERRATIC) +#define CONTEST_AI_DUMMIES_1 (CONTEST_AI_DUMMY_1 | CONTEST_AI_DUMMY_2 | CONTEST_AI_DUMMY_3 | CONTEST_AI_DUMMY_4 | CONTEST_AI_DUMMY_5) + +#define CONTEST_EFFECT_HIGHLY_APPEALING 0 +#define CONTEST_EFFECT_USER_MORE_EASILY_STARTLED 1 +#define CONTEST_EFFECT_GREAT_APPEAL_BUT_NO_MORE_MOVES 2 +#define CONTEST_EFFECT_REPETITION_NOT_BORING 3 +#define CONTEST_EFFECT_AVOID_STARTLE_ONCE 4 +#define CONTEST_EFFECT_AVOID_STARTLE 5 +#define CONTEST_EFFECT_AVOID_STARTLE_SLIGHTLY 6 +#define CONTEST_EFFECT_USER_LESS_EASILY_STARTLED 7 +#define CONTEST_EFFECT_STARTLE_FRONT_MON 8 +#define CONTEST_EFFECT_SLIGHTLY_STARTLE_PREV_MONS 9 +#define CONTEST_EFFECT_STARTLE_PREV_MON 10 +#define CONTEST_EFFECT_STARTLE_PREV_MONS 11 +#define CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON 12 +#define CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS 13 +#define CONTEST_EFFECT_STARTLE_PREV_MON_2 14 +#define CONTEST_EFFECT_STARTLE_PREV_MONS_2 15 +#define CONTEST_EFFECT_SHIFT_JUDGE_ATTENTION 16 +#define CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION 17 +#define CONTEST_EFFECT_JAMS_OTHERS_BUT_MISS_ONE_TURN 18 +#define CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL 19 +#define CONTEST_EFFECT_STARTLE_MONS_COOL_APPEAL 20 +#define CONTEST_EFFECT_STARTLE_MONS_BEAUTY_APPEAL 21 +#define CONTEST_EFFECT_STARTLE_MONS_CUTE_APPEAL 22 +#define CONTEST_EFFECT_STARTLE_MONS_SMART_APPEAL 23 +#define CONTEST_EFFECT_STARTLE_MONS_TOUGH_APPEAL 24 +#define CONTEST_EFFECT_MAKE_FOLLOWING_MON_NERVOUS 25 +#define CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS 26 +#define CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS 27 +#define CONTEST_EFFECT_BADLY_STARTLES_MONS_IN_GOOD_CONDITION 28 +#define CONTEST_EFFECT_BETTER_IF_FIRST 29 +#define CONTEST_EFFECT_BETTER_IF_LAST 30 +#define CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONES 31 +#define CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONE 32 +#define CONTEST_EFFECT_BETTER_WHEN_LATER 33 +#define CONTEST_EFFECT_QUALITY_DEPENDS_ON_TIMING 34 +#define CONTEST_EFFECT_BETTER_IF_SAME_TYPE 35 +#define CONTEST_EFFECT_BETTER_IF_DIFF_TYPE 36 +#define CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL 37 +#define CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS 38 +#define CONTEST_EFFECT_BETTER_WITH_GOOD_CONDITION 39 +#define CONTEST_EFFECT_NEXT_APPEAL_EARLIER 40 +#define CONTEST_EFFECT_NEXT_APPEAL_LATER 41 +#define CONTEST_EFFECT_MAKE_SCRAMBLING_TURN_ORDER_EASIER 42 +#define CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER 43 +#define CONTEST_EFFECT_EXCITE_AUDIENCE_IN_ANY_CONTEST 44 +#define CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS 45 +#define CONTEST_EFFECT_BETTER_WHEN_AUDIENCE_EXCITED 46 +#define CONTEST_EFFECT_DONT_EXCITE_AUDIENCE 47 + +#define COMBO_STARTER_RAIN_DANCE 1 +#define COMBO_STARTER_RAGE 2 +#define COMBO_STARTER_FOCUS_ENERGY 3 +#define COMBO_STARTER_HYPNOSIS 4 +#define COMBO_STARTER_ENDURE 5 +#define COMBO_STARTER_HORN_ATTACK 6 +#define COMBO_STARTER_SWORDS_DANCE 7 +#define COMBO_STARTER_STOCKPILE 8 +#define COMBO_STARTER_SUNNY_DAY 9 +#define COMBO_STARTER_REST 10 +#define COMBO_STARTER_VICE_GRIP 11 +#define COMBO_STARTER_DEFENSE_CURL 12 +#define COMBO_STARTER_CHARGE 13 +#define COMBO_STARTER_ROCK_THROW 14 +#define COMBO_STARTER_YAWN 15 +#define COMBO_STARTER_SCARY_FACE 16 +#define COMBO_STARTER_POWDER_SNOW 17 +#define COMBO_STARTER_LOCK_ON 18 +#define COMBO_STARTER_SOFT_BOILED 19 +#define COMBO_STARTER_MEAN_LOOK 20 +#define COMBO_STARTER_SCRATCH 21 +#define COMBO_STARTER_GROWTH 22 +#define COMBO_STARTER_HAIL 23 +#define COMBO_STARTER_SANDSTORM 24 +#define COMBO_STARTER_BELLY_DRUM 25 +#define COMBO_STARTER_MIND_READER 26 +#define COMBO_STARTER_DRAGON_BREATH 27 +#define COMBO_STARTER_DRAGON_RAGE 28 +#define COMBO_STARTER_DRAGON_DANCE 29 +#define COMBO_STARTER_SURF 30 +#define COMBO_STARTER_DIVE 31 +#define COMBO_STARTER_STRING_SHOT 32 +#define COMBO_STARTER_LEER 33 +#define COMBO_STARTER_TAUNT 34 +#define COMBO_STARTER_CHARM 35 +#define COMBO_STARTER_HARDEN 36 +#define COMBO_STARTER_SING 37 +#define COMBO_STARTER_EARTHQUAKE 38 +#define COMBO_STARTER_DOUBLE_TEAM 39 +#define COMBO_STARTER_CURSE 40 +#define COMBO_STARTER_SWEET_SCENT 41 +#define COMBO_STARTER_SLUDGE 42 +#define COMBO_STARTER_SLUDGE_BOMB 43 +#define COMBO_STARTER_THUNDER_PUNCH 44 +#define COMBO_STARTER_FIRE_PUNCH 45 +#define COMBO_STARTER_ICE_PUNCH 46 +#define COMBO_STARTER_PECK 47 +#define COMBO_STARTER_METAL_SOUND 48 +#define COMBO_STARTER_MUD_SPORT 49 +#define COMBO_STARTER_WATER_SPORT 50 +#define COMBO_STARTER_BONE_CLUB 51 +#define COMBO_STARTER_BONEMERANG 52 +#define COMBO_STARTER_BONE_RUSH 53 +#define COMBO_STARTER_SAND_ATTACK 54 +#define COMBO_STARTER_MUD_SLAP 55 +#define COMBO_STARTER_FAKE_OUT 56 +#define COMBO_STARTER_PSYCHIC 57 +#define COMBO_STARTER_KINESIS 58 +#define COMBO_STARTER_CONFUSION 59 +#define COMBO_STARTER_POUND 60 +#define COMBO_STARTER_SMOG 61 +#define COMBO_STARTER_CALM_MIND 62 + #endif // GUARD_CONSTANTS_CONTEST_H diff --git a/include/contest.h b/include/contest.h index b6818f996..1cad71705 100644 --- a/include/contest.h +++ b/include/contest.h @@ -17,124 +17,6 @@ enum enum { - CONTEST_EFFECT_HIGHLY_APPEALING, - CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, - CONTEST_EFFECT_GREAT_APPEAL_BUT_NO_MORE_MOVES, - CONTEST_EFFECT_REPETITION_NOT_BORING, - CONTEST_EFFECT_AVOID_STARTLE_ONCE, - CONTEST_EFFECT_AVOID_STARTLE, - CONTEST_EFFECT_AVOID_STARTLE_SLIGHTLY, - CONTEST_EFFECT_USER_LESS_EASILY_STARTLED, - CONTEST_EFFECT_STARTLE_FRONT_MON, - CONTEST_EFFECT_SLIGHTLY_STARTLE_PREV_MONS, - CONTEST_EFFECT_STARTLE_PREV_MON, - CONTEST_EFFECT_STARTLE_PREV_MONS, - CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, - CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, - CONTEST_EFFECT_STARTLE_PREV_MON_2, - CONTEST_EFFECT_STARTLE_PREV_MONS_2, - CONTEST_EFFECT_SHIFT_JUDGE_ATTENTION, - CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, - CONTEST_EFFECT_JAMS_OTHERS_BUT_MISS_ONE_TURN, - CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, - CONTEST_EFFECT_STARTLE_MONS_COOL_APPEAL, - CONTEST_EFFECT_STARTLE_MONS_BEAUTY_APPEAL, - CONTEST_EFFECT_STARTLE_MONS_CUTE_APPEAL, - CONTEST_EFFECT_STARTLE_MONS_SMART_APPEAL, - CONTEST_EFFECT_STARTLE_MONS_TOUGH_APPEAL, - CONTEST_EFFECT_MAKE_FOLLOWING_MON_NERVOUS, - CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, - CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, - CONTEST_EFFECT_BADLY_STARTLES_MONS_IN_GOOD_CONDITION, - CONTEST_EFFECT_BETTER_IF_FIRST, - CONTEST_EFFECT_BETTER_IF_LAST, - CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONES, - CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONE, - CONTEST_EFFECT_BETTER_WHEN_LATER, - CONTEST_EFFECT_QUALITY_DEPENDS_ON_TIMING, - CONTEST_EFFECT_BETTER_IF_SAME_TYPE, - CONTEST_EFFECT_BETTER_IF_DIFF_TYPE, - CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, - CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, - CONTEST_EFFECT_BETTER_WITH_GOOD_CONDITION, - CONTEST_EFFECT_NEXT_APPEAL_EARLIER, - CONTEST_EFFECT_NEXT_APPEAL_LATER, - CONTEST_EFFECT_MAKE_SCRAMBLING_TURN_ORDER_EASIER, - CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, - CONTEST_EFFECT_EXCITE_AUDIENCE_IN_ANY_CONTEST, - CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, - CONTEST_EFFECT_BETTER_WHEN_AUDIENCE_EXCITED, - CONTEST_EFFECT_DONT_EXCITE_AUDIENCE -}; - -enum -{ - COMBO_STARTER_RAIN_DANCE = 1, - COMBO_STARTER_RAGE, - COMBO_STARTER_FOCUS_ENERGY, - COMBO_STARTER_HYPNOSIS, - COMBO_STARTER_ENDURE, - COMBO_STARTER_HORN_ATTACK, - COMBO_STARTER_SWORDS_DANCE, - COMBO_STARTER_STOCKPILE, - COMBO_STARTER_SUNNY_DAY, - COMBO_STARTER_REST, - COMBO_STARTER_VICE_GRIP, - COMBO_STARTER_DEFENSE_CURL, - COMBO_STARTER_CHARGE, - COMBO_STARTER_ROCK_THROW, - COMBO_STARTER_YAWN, - COMBO_STARTER_SCARY_FACE, - COMBO_STARTER_POWDER_SNOW, - COMBO_STARTER_LOCK_ON, - COMBO_STARTER_SOFT_BOILED, - COMBO_STARTER_MEAN_LOOK, - COMBO_STARTER_SCRATCH, - COMBO_STARTER_GROWTH, - COMBO_STARTER_HAIL, - COMBO_STARTER_SANDSTORM, - COMBO_STARTER_BELLY_DRUM, - COMBO_STARTER_MIND_READER, - COMBO_STARTER_DRAGON_BREATH, - COMBO_STARTER_DRAGON_RAGE, - COMBO_STARTER_DRAGON_DANCE, - COMBO_STARTER_SURF, - COMBO_STARTER_DIVE, - COMBO_STARTER_STRING_SHOT, - COMBO_STARTER_LEER, - COMBO_STARTER_TAUNT, - COMBO_STARTER_CHARM, - COMBO_STARTER_HARDEN, - COMBO_STARTER_SING, - COMBO_STARTER_EARTHQUAKE, - COMBO_STARTER_DOUBLE_TEAM, - COMBO_STARTER_CURSE, - COMBO_STARTER_SWEET_SCENT, - COMBO_STARTER_SLUDGE, - COMBO_STARTER_SLUDGE_BOMB, - COMBO_STARTER_THUNDER_PUNCH, - COMBO_STARTER_FIRE_PUNCH, - COMBO_STARTER_ICE_PUNCH, - COMBO_STARTER_PECK, - COMBO_STARTER_METAL_SOUND, - COMBO_STARTER_MUD_SPORT, - COMBO_STARTER_WATER_SPORT, - COMBO_STARTER_BONE_CLUB, - COMBO_STARTER_BONEMERANG, - COMBO_STARTER_BONE_RUSH, - COMBO_STARTER_SAND_ATTACK, - COMBO_STARTER_MUD_SLAP, - COMBO_STARTER_FAKE_OUT, - COMBO_STARTER_PSYCHIC, - COMBO_STARTER_KINESIS, - COMBO_STARTER_CONFUSION, - COMBO_STARTER_POUND, - COMBO_STARTER_SMOG, - COMBO_STARTER_CALM_MIND -}; - -enum -{ CONTEST_STRING_MORE_CONSCIOUS, CONTEST_STRING_NO_APPEAL, CONTEST_STRING_SETTLE_DOWN, @@ -255,7 +137,7 @@ struct ContestStruct_field_18 struct Contest { u8 playerMoveChoice; - u8 turnNumber; + u8 appealNumber; u8 unused2[CONTESTANT_COUNT]; bool16 unk1920A_0:1; // Task active flags? bool16 unk1920A_1:1; @@ -273,14 +155,14 @@ struct Contest u8 unk19211; u8 unk19212; u8 filler19213; - u8 unk19214; - u8 unk19215; + u8 turnNumber; + u8 currentContestant; 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]; + u16 moveHistory[CONTEST_NUM_APPEALS][CONTESTANT_COUNT]; + u8 excitementHistory[CONTEST_NUM_APPEALS][CONTESTANT_COUNT]; u8 applauseMeterSpriteId; u8 contestSetupState; u8 unk1925E; @@ -431,9 +313,9 @@ struct ContestResources #define eUnknownHeap1A004 (*(struct Shared1A004 *)(gHeap + 0x1a004)) extern struct ContestPokemon gContestMons[CONTESTANT_COUNT]; -extern s16 gContestMonConditions[CONTESTANT_COUNT]; +extern s16 gContestMonRound1Points[CONTESTANT_COUNT]; extern s16 gContestMonTotalPoints[CONTESTANT_COUNT]; -extern s16 gUnknown_02039F10[CONTESTANT_COUNT]; +extern s16 gContestMonAppealPointTotals[CONTESTANT_COUNT]; extern s16 gContestMonRound2Points[CONTESTANT_COUNT]; extern u8 gContestFinalStandings[CONTESTANT_COUNT]; extern u8 gContestMonPartyIndex; @@ -457,8 +339,8 @@ void ResetLinkContestBoolean(void); void LoadContestBgAfterMoveAnim(void); void CB2_StartContest(void); void CreateContestMonFromParty(u8 partyIndex); -void sub_80DAB8C(u8 contestType, u8 rank); -void sub_80DACBC(u8 contestType, u8 rank, bool32 isPostgame); +void SetContestants(u8 contestType, u8 rank); +void SetLinkAIContestants(u8 contestType, u8 rank, bool32 isPostgame); u8 GetContestEntryEligibility(struct Pokemon *pkmn); void sub_80DB09C(u8 contestCategory); bool8 IsSpeciesNotUnown(u16 species); diff --git a/include/contest_link.h b/include/contest_link.h index e52ebc426..52b7ee330 100644 --- a/include/contest_link.h +++ b/include/contest_link.h @@ -3,7 +3,7 @@ void sub_80FCC88(u8); void sub_80FCC88(u8); -void sub_80FCACC(u8); +void Task_LinkContest_CommunicateFinalStandings(u8); void sub_80FC580(u8); void sub_80FC6BC(u8); void sub_80FC804(u8); @@ -11,8 +11,8 @@ 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 Task_LinkContest_CommunicateRound1Points(u8); +void Task_LinkContest_CommunicateTurnOrder(u8); void sub_80F8714(u8); bool32 sub_80FC670(s16 *); bool32 LinkContest_SendBlock(void *, u16); 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; |